October 31, 2008

Получаем ширину скролла в браузере используя JavaScript.

Вечно создаю какие то непонятные вещи. Вот сегодня мне понадобилось определять ширину скроллбара в браузере. Причем не буду же я вручную их определять и задавать каким то массивом чтобы потом это срабатывало. Это не наш путь. Нужно чтобы динамически определялась эта ширина и выполнялись соответствующие действия.

Мне например нужен был этот функционал чтобы работал мой плагин к jQuery (который совершает хитрые манипуляции со скролами) как было задумано. Сам плагин расшарю немножко попозже, когда убежусь что он работает как надо и посчитаю что уже можно выложить :). Возможно кому то тоже такое пригодится. 

Код функции выглядит вот так:
function getScrollBarWidth () {
    var inner = document.createElement('p');
    inner.style.width = '100%';
    inner.style.height = '200px';

    var outer = document.createElement('div');
    outer.style.position = 'absolute';
    outer.style.top = '0px';
    outer.style.left = '0px';
    outer.style.visibility = 'hidden';
    outer.style.width = '200px';
    outer.style.height = '150px';
    outer.style.overflow = 'hidden';
    outer.appendChild (inner);

    document.body.appendChild (outer);
    var w1 = inner.offsetWidth;
    outer.style.overflow = 'scroll';
    var w2 = inner.offsetWidth;
    if (w1 == w2)
        w2 = outer.clientWidth;
    document.body.removeChild (outer);

    return (w1 - w2);
};

Пример можно посмотреть здесь и оценить размер своего .... кхмм... скролла. У кого какие размеры? :) у меня 15.

Stay tuned for more....

October 30, 2008

Google Developer Day в Праге.

Отметился Сегодня я расскажу о том как я посетил Google Developer Day который проходил в Праге 24 октября 2008 года. Поехали.

День начался очень рано и с приключениями. Как некоторые мои читатели уже знают я живу не в Праге, а на самом юге Чехии. Поэтому мне пришлось встать в 3 часа утра (надо же, более привычно ложиться спать в это время) чтобы быть в праге в 8 утра. Так вот так получилось что поезд, который по расписанию прибывает в 7:53 чудесным образом добрался до Праги примерно в 11:30. Незнаю на самом деле что произошло, но по пути поезд стал, и простоял на одном месте 2.5 часа, никаких автобусов все это время на подмену пригнать не могли – как говорили их небыло, но потом появились. Вообще с чешскими драгами (Ceske Drahy, аналог БЧ, РЖД) часто случается что поезд задерживается. Я всегда думал что это обусловлено глобальным ремонтом нашего направления дороги, но слышал много от кого что это не только в нашем направлении (впринципе даже поезд Москва - Прага, на котором мы сюда ездим обычно, тоже иногда с большими опозданиями приходит). Таким образом я приехал к обеду получается. Хотя успел попасть на 15 минут на сессию об Open Social так ничего интересного не услышав.

October 22, 2008

Быстрый сайт #1

Расположите контент на разных субдоменах для ускорения паралельной загрузки.


Идея в том что браузер может загружать только 2 файла (запроса) в один момент времени с одного домена. Это требование спецификации HTML 1.1 которой подчиняются браузеры. Таким образом если мы сможем загружать паралельно больше файлов, мы загрузим всю страницу быстрее. В этом случа используется лазейка в определении "с одного домена". Таким образом на практике можно распределить картинки, файлы таблиц стилей, JavaScript файлы, статические HTML страницы по разным субдоменам которые будут отличаться от основного домена.

Тем не менее вы должны учитывать что не рекомендуется использовать очень много субдоменов, т.к. каждый субдомен заставляет браузер делать поиск по DNS. Коллеги из Yahoo провели небольшое исследование на эту тему и пришли к выводу что вы должны использовать оптимально 2, но не больше 4 субдоменов. Я, например, в последнее время разделяю статику и динамику на 2 субдомена.

Источники: Circumventing browser connection limits for fun and profit; Optimizing Page Load Time;

October 10, 2008

Привет друзья

Привет всем... После долгого отсуствия и "дауна" блога я возвращаюсь к этому, неизвестно на сколько полезному, делу. Если кто-то не заметил, блог небыл доступен с начала августа и до сих пор, т.е. чуть больше 2 месяцев. Обусловлено это было моим "отпуском" и временным неимением сервера в распоряжении. Сложно себе представить отпуск у фрилансера, но я себе такой сделал – у нас в Чехии побывали родственники, и мы с женой побывали на родине.

За время отсутсвия я немного изменил отношение к своему блогу, и теперь попробую отнестись к нему более внимательно, писать более полезные вещи в надежде что они будут кому-либо полезны или просто интересны. Хотя я и решил по другому отнестись к своему блогу, понятие блогов в моем понимании не изменилось, т.е. я думаю что блоги не должны быть такими как они сейчас есть. О своем понимании блогов я думаю напишу в будещем.

Как некоторые могли заметить блог начинаю "снуля" в связи с тем, что, как я уже сказал, я переосмыслил свое отношение к ведению блога. А именно я решил вести его так, чтобы он был лицом моей профессиональной деятельности. То что было до этого сложно отнести к новому восприятию, хотя некоторые посты были нормальными, поэтому вероятно некоторые из них я перенесу сюда.

Так же произошли некоторые изменения в расположении блога. Раньше он был на домене blog.prudnikov.com, а теперь я перенес его на головной домен http://prudnikov.com/. Поэтому если кто-то оставался подписаным на RSS летну блога, прошу проверить адрес – для блога он должен быть таким http://feeds.feedburner.com/prudnikov. А мой микроблог (Powered by tumblr.com) сейчас находится на http://tumblr.prudnikov.com/ (RSS), перекочевав из домена prudnikov.com. Прошу извинить за такие миграции и обновить адреса в своих RSS ридерах.

А зачем вести и блог и микроблог? Отвечаю. Микроблог на tumblr удобен для постинга мелких вещей типа полезные линки, интересные видеоролики, фотки, цитаты – мне это удобно, особенно расшаривать линки. Я часто там расшариваю линки которые считаю полезными и интересными, поэтому рекомендую подписаться и на микроблог. В блоге же я решил писать полезные вещи по профессиональной теме. Так что подписываемся и на блог :)

Stay tuned.