Фото |
Метки: my photos |
FriendFeed всё |
Сегодня ночью, чуть позже полуночи, был выключен Френдфид. Выключен он был коварным Фейсбуком, который его (Френдфид) купил лет пять назад, потому что во Френдфиде были лайки, а в Фейсбуке, представьте себе, тогда их не было.
Френдфид изначально создавался как агрегатор расширенной френдленты. Вот есть у вас френд, и он есть в ЖЖ, в Твиттере, в Инстаграме, во Фликре, ещё в ста местах. Он заводит аккаунт во френдфиде, и импортирует туда все эти ленты. А ты там на него подписывашься, и всё это видишь. Так себе концепция, прямо скажем, в духе начала нулевых. Помните, тогда каждый сайт хотел быть «порталом» и собирать в себя всё на свете?
Но с момента покупки Фейсбуком Френдфид (как сайт) развиваться перестал, и в нём началась собственная жизнь, потому что помимо всей этой агрегации во Френдфиде можно было писать свои коротенькие посты, оставлять комментарии и лайкать.
Русское коммьюнити Френдфида мне напоминало одновременно сериал «Теория большого взрыва» и птичий рынок доперестроечных времён. ТБВ там была практически в чистом виде — такое общежитие, где у каждого IQ заметно выше 200, аналогичного уровня чувство юмора, речь, пересыпанная отсылками чуть ли не всю мировую культуру разом… и при этом совершенно непосредственные, детские реакции, обиды, радости и прочие эмоции.
Птичий рынок — это я там был посетителем птичьего рынка, со своим IQ << 200:) В старших классах школы я любил ездить на Таганку и бродить по рядам между рыбками, попугаями, какими-то хомячками и что там ещё было. Это был такой зоопарк, только без клеток и всякой несерьёзности типа мороженого — всё было гораздо ближе, интереснее и непонятнее. Вот я примерно с тем же чувством заходил во Френдфид и читал там всё это.
Хорошее, в общем, было место. Когда объявили о его закрытии (месяц назад), сразу же собралась инициативная группа и начала пилить запасной аэродром — http://freefeed.net/. Он пока не открылся, но я уверен, что откроется. Френдфид, конечно, прежним уже не будет, но прежним вообще ничего не бывает.
Прощай, фидик.
Этот пост в блоге POST /blog (16:05 11.04.2015)
|
Видео на сайте: две маленькие хитрости |
Хитрость номер раз: пусть у нас на странице есть красивое, но необязательное видео. Заставка, например. Нам хочется её показывать клиентам с десктопными браузерами и хорошими каналами, но не хочется показывать мобильным клиентам. Что делать?
Делать можно, например, следующее:
var video = document.createElement("video");
var t = setTimeout(function() {
alert("No, we can't!);
t = null;
}, 2000);
video.addEventListener("canplay", function() {
if (t === null) return;
clearTimeout(t); t = null;
if (video.buffered.length > 0 && video.buffered.end(0) > 0) {
alert("Yes, we can!);
} else {
alert("No, we can't!);
}
});
video.preload = "auto";
video.src = VIDEO_URL;
Происходит тут вот что. Мы создаём видеоэлемент с атрибутом preload равным "auto". Это значит, что браузер сам будет решать, предзагружать видео или нет. Десктопные браузеры всегда подгружают начальные секунды видео, а мобильные — нет (подробнее). На это мы и будем полагаться при принятии решения.
Событие canplay срабатывает, когда браузер считает, что готов воспроизвести видео. Десктопные браузеры вызывают его после предзагрузки, мобильные — либо сразу (Android) либо вообще не вызывают (iOS). На второй случай мы взводим таймер — если через две секунды событие не пришло, то считаем, что браузер не хочет загружать видео или канал слишком медленный. В этом случае видео показывать не нужно.
Если же событие canplay произошло, то мы смотрим на свойство video.buffered. Оно представляет собой набор отрезков времени, которые предзагрузил браузер. Если этих отрезков больше нуля и конец первого ненулевой, то браузер что-то предзагрузил, и мы можем играть видео. Если же браузер ничего не загрузил, то и играть не стоит.
Хитрость номер два: предположим, мы решили играть видео. Но беда в том, что браузеры сами решают, сколько им кэшировать видеоданных, и часто бывает так, что браузер отрапортовал, что готов, запускаешь видео, а оно затыкается и начинает что-то докачивать. Форсированно предзагрузить видео можно так:
var x = new XMLHttpRequest();
x.onload = function () {
var newVideoUrl = URL.createObjectURL(x.response);
// …
};
x.open("GET", VIDEO_URL);
x.responseType = "blob";
x.send();
Мы насильно грузим весь видеофайл через XMLHttpRequest. Когда файл загрузился, из полученных данных формируем локальный URL через URL.createObjectURL. И этот URL уже можем передать в проигрыватель видео — он указывает на наши локальные данные, и дозагрузки уже не будет.
Конечно, такой приём стоит применять только для коротких роликов.
Этот пост в блоге POST /blog (20:21 25.03.2015)
Метки: preloading html5 video video |