понедельник, 15 февраля 2010 г.

Странности JavaScript. Или это всё-таки JS особенности?

Сегодня набрёл на отличную подборку не сразу объяснимых странностей JavaScript. Например:

//1.
Number.MIN_VALUE > 0; // true or false?
//2.
typeof null; // what type?
null === Object; // true or false?
//3.
NaN === NaN; // true or false?
//4.
typeof NaN; // what type?


Как думаете, что каждая из строчек вернёт, хорошенько подумайте. А потом проверьте себя:

  1. true 
  2. object и false
  3. false
  4. number

На самом деле если подумать над этим, то есть вполне логическое объяснение на каждый из пунктов, но не все так сразу очевидно. Например, необычное поведение NaN — требование IEEE 754, общее для всех языков программирования. Необходимо чтобы типу Number можно было присвоить NaN, но при этом не был равен ничему другому. Так же, с логической точки зрения можно объяснить все вышеприведенные пункты, все были при здравом уме и памяти, когда разработчики закладывали такое поведение JS.

Кому интересно продолжение, есть целый сайт, посвящённый "странностям" JS - wtfjs.com

понедельник, 1 февраля 2010 г.

Google Reader научился отслеживать изменения на сайте без RSS-потоков

Как стало известно, Google Reader, веб-сервис от гугла, для управления RSS-потоками, научился отслеживать изменения даже на тех сайтах, которые лишены RSS-каналов.

Для добавления в агрегатор нужных веб-ресурсов без RSS-канала,  достаточно ввести их адрес в поле подписки. Все происходящие на сайте изменения начинают отслеживаться, а пользователям приходят соответствующие уведомления, включая модифицированные фрагменты веб-страниц. Думаю, что это происходит путём сравнения проиндексированных google-bot-ом страниц, и выдаче разницы на сайте.

Сейчас поддерживается только англоязычный контент в HTML-формате, обновление содержимого фреймов не распознается, понятное дело.

Если вы не хотите, чтобы агрегатор Google Reader мог "сканировать" вашу страницу таким образом, а только через существующие RSS-каналы, то вы можете поставить в заголовке страницы следующий текст:

<meta name="googlebot" content="noarchive">

Гугл рулит, всё лучше и лучше их сервисы, скоро станут монополистами во всех отраслях web-сервисов.

пятница, 22 января 2010 г.

Новый jQuery 1.4 + обновлённый jQuery CheatSheet

Не так давно вышла оновлённая библиотека jQuery 1.4, краткий список новшеств приведу ниже.

  • метод live полностью переделали, теперь он поддерживает во всех браузерах такие события, как: submit, change, mouseenter, mouseleave, focus, blur.
  • подкорректировано поведение метода add.
  • сильно увеличена производительность функций для работы с Document object model (в частности append, prepend).
  • стали быстрее работать функции find, empty, remove, addClass, removeClass, hasClass, attr и css.
  • добавлена jQuery.noop() - функция, которая ничего не делает.
  • новая вспомогательная функция jQuery.contains(container, contained), позволяющая проверить существование элемента DOM внутри другого элемента DOM.
  • добавлен весьма полезный метод .delay(duration, [queueName]), которые позволяет установить таймер задержки выполнения следующего пункта очереди.
  • и много других приятных дополнений, о которых можно почитать на официальном сайте jQuery.

Кстати, если нужно, вот ссылка на обновлённую шпаргалку по API jQuery 1.4 (cheetsheet)

пятница, 8 января 2010 г.

Интересные факты про термин "чаевые" ("tips")

Никогда раньше не задумывался о происхождении термина "давать на чай". Я знал, что он происходит именно от английского слова tips, но почему чай?! - Оказывается, сам термин "чаевые" появился в Англии ещё в первой половине XVIII века, а точнее в 30-х годах, связан он, как ни странно, именно с чаем. В этот период в Соединенном королевстве было модно пить чай на специально оборудованных верандах в парках и скверах. Видимо, расторопность официантов и тогда была не на высоте, поэтому на столах появились особые коробочки с аббревиатурой T.I.P.S. (To Insure Prompt Service) – "Для оплаты быстрого обслуживания". В общем, – хочешь быстро получить горячий чай – добавь небольшую сумму сверх счета. Постепенно английский термин tips и русский "чаевые" распространился и на все остальные сферы обслуживания.

воскресенье, 15 ноября 2009 г.

Akinator - отличная web-реализация старой идеи

Многие подумают, что пост не по теме, вообще никак не связан с программированием, но это не так.

Давно, когда я ещё начинал писать на Pascal, во многих модных журналах и книгах по программированию предлагали реализовать простой алгоритм хранения бинарных деревьев, и чтобы закрепить эти знания предлагали написать простую игру. Чем, собственно, и занялся от скуки. Заключалась она в том, что компьютер задавал вопросы, последовательно, и вам предлагалось выбрать один из вдух предложенных вариантов ответа, и так рано или поздно он угадает. Игра была самообучающейся, если вы загадали что-то, что не было ранее в её базе знаний, то программа спрашивала у вас правильный ответ и сразу запрашивала наводящий вопрос, который бы позволил узнать этот ответ. Таким образом, после нескольких часов игры у вас уже могла быть приличная база знаний...

Так вот, к чему это я. Мне только что, друг прислал ссылку на сайт akinator.com, это как раз та отличная web-реализация старой идеи. Вы заходите на сайт, загадываете любого известного человека (живого, мертвого, персонажа из кино, мультика, игры) и после нескольких десятков наводящих вопросов тихо офигеваете. У этой игры настолько богатая база знаний, что программа смогла угадать даже гидралиска из старкрафта.

В общем советую зайти и посмотреть, игра очень популярна и интересна, каждый день на неё заходит более 30000 человек.

Интересно, а что загадали вы, у вас игра угадала?

воскресенье, 1 ноября 2009 г.

Суровые реалии рынка труда

А вам не страшно отправлять резюме в компанию, где в графике работы пишут с 9.00 до 17.00, а сама вакансия на должность выложена на сайте в воскресенье в 3 часа ночи?..

вторник, 20 октября 2009 г.

SQL, задача. Найти минимальное натуральное число, которого нет в таблице

Один друг мне скинул сегодня интересную и странную задачку на знание SQL, вполне годится на собеседования выставлять. Условие следующее:

CREATE TABLE t (i int);
INSERT INTO t VALUES (1), (2), (3), (5), (8), (10), (13), (19);
Вывести минимальное натуральное число, которого нет в таблице t, т.е. 4.

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

Чем менее экзотические средства будут применены - тем лучше.
Варианты решения постим в комменты.

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting