Show Forecast Google Chrome extension
Приветствую. Сегодня я хочу представить свое первое расширение (самый дебильный перевод слова extension) для браузера Google Chrome. Я когда-то эту поделку гугла облил с ног до головы дерьмом, но времена изменились и теперь хром мой основной браузер дома, на работе и даже на iMac-е, где он заменил тормозной фаерфокс с уродливым рендерином и родной Safari.
Но, ближе к делу. День назад мне почему-то стукнуло написать какой-то extension. Идея пришла сама собой, когда сидящий за спиной товарищ (не ахтунг) спросил, а когда же выйдет новая серия Хауса, которую можно было бы посмотреть под пивко. Погуглил - для хрома такой штуки небыло и вот за пару дней выкатил уже готовую версию. Прошу любить и жаловать, Show Forecast. Простой дизайн, настройка за 10 секунд и у вас уже есть своя личная программка любимых сериалов. Скриншоты, ссылку на загрузку и более подробное описание пожно найти на странице дополнений гугла.
Теперь пара слов о технической части. Я, as always, попытался выучить что-то новое. Как известно, все дополнения для Chrome пишутся банально на javascript + html. В подробности процесса я углубляться не буду, все и так отлично расписано в официальном мануале, просто пара слов об интересных вещах. В драфтах html5 появились много нового и инновационного, а в том числе и storage, который призван заменить кукисы для хранения данных client-side. В хроме реализованы 2 подсистемы хранения: web storage (и то только localStorage в виде переменной-массива) и web database. В детали первого углубляться не буду, это обычное key-value хранилище для integer и string (bool,float,double,array etc - все это по typeof в сторедже отдавало string), а вот второй механизм намного интереснее, так как представляет собой полноценный sqlite внутри браузера. Да-да, теперь в js можно писать запросы на языке sql. Все это реализовано на текущем этапе достаточно сыро, транзакции в БД являются ассинхронными без вариантов. Результат просто отдается в callback функцию. Причина этого понятна - нам не нужны зависания браузера, но вот написания кода с несколькими последовательными запросами это усложняет и замедляет. Код extension-а я отдельно выкладывать не буду, кому интересно - качайте crx файл, меняйте расширение на zip и смотрите сами. Код пока очень грязный, если мне будет и дальше это интересно, либо же на на этот плагин будет спрос, то непременно отрефакторю. В любом случае без этого на текущей версии планируемую i18n интернационализацию будет очень неудобно вводить. Будут вопросы, задавайте без зазрения совести на странице модуля.