Pull to refresh
96
0
Mithgol the Webmaster @Mithgol

вебмастер, фидошник

Send message

JSZip спустя полгода: распаковка архивов, работа на Node.js

Reading time1 min
Views5.7K
22 ноября 2011 года JiLiZART всем нам сообщил, что есть на свете полезная библиотека JSZip с открытым исходным кодом, написанная на джаваскрипте и умеющая создавать zip-архивы (и даже, если это необходимо — с подкаталогами) из скормленных ей текстовых и двоичных данных.

Первым же комментарием к его сообщению стали мои слова:

 — Прекрасно.

 — Теперь ему бы ещё распаковывать уметь.

Прошло полгода с тех пор, и можно видеть, что это естественное пожелание сбылось: очевидно, оно пришло на ум не одному мне, так что программисты принялись за дело — и в открытый на Гитхабе исходный код JSZip добавили методы, способные служить ещё и распаковке zip-архивов, а не только составлению их. (Подробности употребления новинок API смотрите в документации.)

В открытом коде всегда приятно видеть, как другие люди действуют в направлении твоих мыслей.

Поклонникам же джаваскриптового движка Node.js будет наверняка не менее приятно узнать о появлении модуля node-zip, содержащего весь код JSZip, оформленный в качестве модуля Node. Стало быть, теперь JSZip можно запускать не только во браузере, но и на сервере, а равно и у себя на компьютере.

Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments5

Node.js на узле Фидонета: читаем джаваскриптом заголовки эхопочты, хранимой в формате JAM

Reading time7 min
Views2.4K
Сегодня у меня две причины пробежаться по клавишам.

Во-первых, после того, как на прошлой неделе я перевёл документацию по jParser (после ознакомления с RReverserовским примером применения jParser при анализе BMP-файлов), мне представляется уместным перейти к напрашивающемуся последующему шагу: развить тему, поделиться с читателями моим собственным примером применения jParser для анализа несколько более сложной структуры данных. (Отчасти это станет ответом на вопрос, который alekciy задал, интересуясь дальнейшими примерами практического использования jParser.)

Во-вторых, ≈полгода назад (26 ноября 2011 года) ertaquo поинтересовался, зачем мне хочется использовать Node.js в Фидонете. Тогда я сообщил, что мне просто нравится название (помню те времена, когда термин «node» или «нóда», если употреблялся без уточнения, в российском околокомпьютерном мире по умолчанию означал узел Фидонета), но не мог привести никакого наглядного примера работающего кода, а сейчас приведу.

Итак, пример будет двойным. Предлагаю вашему вниманию анализ заголовков писем фидонетовской эхопочты, хранимой в формате JAM. Этот формат популярен в Фидонете со времён далёких и незапамятных (в Википедии говорится, что появление JAM относится к 1993 году). Сразу скажу, что давно предпочитаю JAM другому популярному формату (Squish), потому что этот последний хранит в заголовке у письма идентификаторы не более чем девяти откликов на него, тогда как JAM вместо массива ограниченной длины использует более гибкую структуру данных (связный список), так что позволяет выстроить полное дерево ответов даже в самых оживлённых и разветвлённых обсуждениях.

Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments15

jParser: анализ двоичных файлов работает просто

Reading time4 min
Views8.4K
jParser делает простым чтение структур данных из двоичных файлов джаваскриптом.

  • Вы один раз описываете структуру, анализ её происходит автоматически.
     
  • Процесс анализа данных может быть расширен самописными функциями. Чем упрощается разбор нетривиальных файлов.
     
  • jParser действует и во браузере, и в NodeJS, потому что работает на основе jDataView.

API

Элементарные структуры:

  • Целые числа без знака: uint8, uint16, uint32
     
  • Со знаком: int8, int16, int32
     
  • Дробные с плавающей точкой: float32, float64
     
  • Строковые: char, string(len)
     
  • Массив: array(type, len)
     
  • Положение: tell, skip(len), seek(pos), seek(pos, func)

Методы jParser:

Читать дальше →
Total votes 43: ↑33 and ↓10+23
Comments29

Близок конец Tele2 в России?

Reading time1 min
Views4.9K
РБК daily сообщает (а Лента.Ru перепечатывает), что шведские акционеры Tele2 продадут свой бизнес в России, если не получат лицензии для 4G. Потенциальным же покупателем назван «Ростелеком».

Эта новость (опровергнутая Tele2) — провокация, способная превратить «если» в «когда»: лицензии уж точно не дадут, когда в этом будет заинтересована не только «большая тройка», но также и «Ростелеком».
Total votes 59: ↑44 and ↓15+29
Comments95

Указание на мобильник или планшет в заголовке «User-Agent» Файерфокса

Reading time1 min
Views8.7K
Начиная от версии Firefox 13, в платформенно-зависимой части заголовка «User-Agent» HTTP-запроса есть указание на то, запущен ли Firefox на устройстве размером с телефон или на планшете.

Когда Firefox действует на устройстве с форм-фактором мобильника, там указывается подстрока «Mobile;»; когда Firefox действует на планшетном устройстве, там указывается подстрока «Tablet;».

Вот примеры:

Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
Mozilla/5.0 (Android; Tablet; rv:13.0) Gecko/13.0 Firefox/13.0

Для выяснения форм-фактора устройства более удобен механизм CSS Media Queries. Однако же, если вы вместо него используете «обнюхивание» заголовка «User-Agent», то тогда, пожалуйста, ищите «Mobile» для мобильников и «Tablet» для планшетов, не подразумевая никакой взаимосвязи между строкою «Android» и форм-фактором устройства. В этом случае ваш код будет работать даже тогда, когда (если) Firefox будет действовать на других мобильных и (или) планшетных операционных системах или когда Android станет употребляться на ноутбуках, а не только на мобильниках и на планшетах.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments1

Yota — LTE в Сочи

Reading time1 min
Views1.2K
Алексей Бойко (редактор MForum.ru) сообщил, что сегодня (11 мая 2012 г.) сеть LTE Yota начала работать в Сочи.

Четвёртый их LTE-город после Новосибирска, Краснодара и Москвы.

Первый из прибрежных.
Total votes 9: ↑6 and ↓3+3
Comments9

Отображаем карты OpenStreetMap на iPhone 4 с учётом сетчаточного дисплея при помощи Leaflet

Reading time2 min
Views3.3K
Всякий, кому до сегодняшнего дня доводилось запускать полноэкранный пример работы движка Leaflet на новейших мобильниках iPhone 4, неизменно получал перед собою вот какую карту OpenStreetMap в новоайфоновском разрешении 640×960:

[скриншот]

Как видите, векторный гипертекст (подпись под картою) выглядит существенно лучше по качеству, чем растровый текст (надписи на карте) и чем контуры дорог на карте. Это потому, что растровые картинки на сетчаточном дисплее по умолчанию состоят из квадратов 2×2 реальных (физических) пикселов — стало быть, растровый текст получается угловатым, контуры дорог получаются ступенчатыми, и так далее.

Сегодня это положение дел изменилось к лучшему.

Читать дальше →
Total votes 34: ↑17 and ↓170
Comments17

Внутри HTTP-сервера, встроенного в Node, обнаружена уязвимость

Reading time2 min
Views1.4K
Мэтью Дэйли (Matthew Daley) выяснил, что в коде HTTP-сервера, встроенного в движок Node, есть такая ошибка (или даже просто опечатка: используется «size» вместо «size_»), из-за которой специально сформированным запросом к серверу можно добиться того, что сервер существенно переоценит реальный размер запроса и включит в него содержимое соседних чужих HTTP-запросов (например, частью переданной на сервер переменной станут чьи-нибудь чужие cookies; и если это будет переменная из числа тех, которые тотчас же выводятся на экран, то крякерская атака легко может оказаться успешною).

Всем пользователям Node версий 0.5.x и 0.6.x следует без промедления обновить Node до версии 0.6.17, а обладателям экспериментальных версий из ветки 0.7 следует обновить их до 0.7.8. (Версии 0.4.x не содержат этой ошибки, однако на вашем месте я бы их всё равно обновил, ибо они старьё.)

Об этом опубликовано оповещение во блоге Node.

Читать дальше →
Total votes 47: ↑38 and ↓9+29
Comments30

Йаззь и Джава

Reading time1 min
Views23K
2 февраля 2012 года микроблоггерка, действующая под псевдонимом «Лоличка», попросила:

— Если уж вы произносите «Java» как «Ява», то будьте любезны говорить не «jazz», а «йаззь».

(Конец цитаты.)

Судя по более чем полусотне ретвитов, этот пример про джаз и язя (опирающийся на известный видеомем) получился наглядным.

Очевидно, он в той же мере касается и джаваскриптов.
Total votes 162: ↑71 and ↓91-20
Comments99

Lake.js: плагин к jQuery для отражения иллюстраций как бы в воде озера

Reading time1 min
Views2.6K
[скриншот]Стал известен скрипт lake.js плагин jQuery, который берёт иллюстрацию (элемент <img>) и помещает её на холст (вставляет элемент <canvas>), располагая сразу под нею зеркальное отражение, идущее волнами — будто в воде озера.

Речь идёт не о застывших волнах, а об идущих по воде волнах — их фаза динамически изменяется джаваскриптом. (Понятно, что на Хабрахабре этот эффект не воспроизводим, так что я вставляю статический скриншот.)

Холст имеет ту же ширину, что и обрабатываемая иллюстрация, и вдвое бóльшую высоту.

Вызов плагина выглядит сравнительно просто и самоочевидно:

<script src="jquery.js"></script>
<script src="lake.js"></script>
<script>
$(function() {
   $('#lake-img').lake({
      'speed': 1,
      'scale': 0.5,
      'waves': 10
   });
});
</script>
...
<img id="lake-img" src="lake.png" style="display: none;"/>

Читать дальше →
Total votes 24: ↑13 and ↓11+2
Comments13

Краснодар стал первым из тех городов России, в которых сеть LTE сменила прежнюю сеть WiMAX

Reading time1 min
Views2.6K
В сообществе yota_russia в LiveJournal вчера было опубликовано (из-под официальной учётной записи «Йоты») объявление о том, что в Краснодаре состоялось внедрение LTE вместо WiMAX; таким образом, именно этот город (а не Москва, например) оказался первым таким городом в России, в котором переход от WiMAX к LTE завершился.

Это нетрудно объяснить тем, что базовых станций меньше — и оттого переоснастить их получилось быстрее, нежели в Москве.

Читать дальше →
Total votes 15: ↑6 and ↓9-3
Comments12

Избавляйтеся от трёх устаревших префиксов «-moz-»

Reading time1 min
Views1.7K
Четыре дня назад (23 апреля 2012 года) Фонд Мозиллы официально объявил об окончании жизни устаревшего браузера Firefox 3.6, всякая поддержка которого прекращается с 24 апреля.

Для авторов CSS-кода это повод страстно возликовать: наконец-то можно совершенно отказаться от поддержки свойства «-moz-border-radius» (в пользу простого «border-radius»), отказаться от поддержки свойства «-moz-box-shadow» (в пользу простого «box-shadow»), отказаться от поддержки свойства «-moz-background-size» (в пользу простого «background-size»).

Читать дальше →
Total votes 53: ↑35 and ↓18+17
Comments64

Лента Хабрахабра теперь снабжена вкладкою «Всё», и вкладка эта содержит не только блогозаписи, но и вопросы

Reading time1 min
Views396
Сегодня на Хабрахабре сверху появилося вот какое уведомление:

[скриншот]

Я тотчас же перенастроил мой жест мышóю, ранее http://habrahabr.ru/new/?fl=hl вызывавший, чтобы теперь он вызывал эту новую вкладку (точнее, её подвкладку «Новые»).

А как поступили вы?

Давайте обсудим нововведение.
Total votes 52: ↑9 and ↓43-34
Comments14

node-get

Reading time1 min
Views864
В движке Node встроенным средством отсылки запросов к отдалённым web-серверам (и обработки полученных откликов) является метод http.request(), однако он оказывается чрезмерно низкоуровневым: если на дальнем конце настроено серверное перенаправление, то этот метод выдаст вам страницу с кодом HTTP 301 (или HTTP 302, или HTTP 303…), а не ту страницу или тот файл, на который перенаправление указывает.

Преодолеть этот недостаток помогает модуль node-get, разработанный организацией «Development Seed»: он автоматически обрабатывает перенаправления и получает окончательный отклик на отосланный запрос.

Читать дальше →
Total votes 11: ↑5 and ↓6-1
Comments6

#BADA55-цвета для веб-дизайна

Reading time5 min
Views18K
Я потратил несколько лет на изучение архитектуры компьютеров, и уж если одну вещь я выучил крепко, так это любовь компьютерных проектировщиков к изящным именам, используемым при инициализации или другой работе с памятью. Долгие часы своей жизни я истратил на придумывание забавно выглядящих адресов памяти для употребления в домашней работе или тестировании. Из подобных названий лучше других известен 0xDEADBEEF, а список некоторых других вы можете видеть вон там и там. Можно даже предположить, что этакие названия (особенно с подстановкою символов: например, «1» вместо «i» или «5» вместо «s») стали предтечами псевдо-крутого интернетовского жаргона, известного как leetspeak.

Всё это напомнила мне недавно попавшаяся мне статья о веб-дизайне (извините, я не помню её в точности). Автор статьи приводил пример CSS-кода, и выбранный им для примера цвет был #BADA55. Оказалось, что это даёт несколько безобразный зелёный цвет, но всё равно он побудил меня призадуматься о том, какие ещё английские слова можно сделать шестнадцатеричными кодами цвета.

Набросав краткий PHP-скрипт, получаем довольно обширный список для подбора таких цветов. Разумеется, годятся все коды, полностью состоящие из букв, но я также дозволил подстановку «1» вместо «i», «5» вместо «s» и «0» вместо «o». Та статья Википедии, на которую я выше сослался, также предлагала использовать «7» вместо «t» и «9» вместо «g», но мне кажется, что при этом не получаются сколько-нибудь легко читаемые «шестнадцатеричные слова» (да к тому же тогда список слов, и без того длинный, оказался бы гораздо длиннее).

Итак, когда вам в следующий раз понадобится цветовая гамма для веб-страницы, вы сможете воспользоваться следующей таблицею и достигнуть субкультурного звучания выбранных вами цветов:

████████████████ #ABACA5 → abacas
████████████████ #ABA5ED → abased
████████████████ #ABA5E5 → abases
████████████████ #ABA51A → abasia
████████████████ #ABBE55 → abbess
████████████████ #AB1DED → abided
████████████████ #AB1DE5 → abides
████████████████ #AB0DED → aboded
████████████████ #AB0DE5 → abodes
████████████████ #ACAC1A → acacia
████████████████ #ACCEDE → accede
████████████████ #ACCE55 → access
████████████████ #ACED1A → acedia
████████████████ #AC1D1C → acidic
████████████████ #AD0BE5 → adobes
████████████████ #AD0B05 → adobos
████████████████ #A5D1C5 → asdics
Читать дальше →
Total votes 110: ↑83 and ↓27+56
Comments42

Оглашены итоги целого года читательских пожертвований, поступавших журналисту через Интернет

Reading time1 min
Views2.4K
Заместитель главного редактора журнала «Русский репортёр» — заметно популярный журналист Соколов-Митрич поставил эксперимент под названием «Thanks Journalism»: в течение целого года он указывал у каждой своей статьи (а если и не у каждой, то у подавляющего большинства их) гиперссылку на страницу (точнее, на блогозапись) с указанием платёжных реквизитов (Яндекс.Денег, Webmoney, PayPal и Moneybookers) для благодарных читателей, желающих напрямую поблагодарить автора деньгами.

А сегодня Соколов-Митрич обнародовал итоги: с 15 марта 2011 года по 15 марта 2012 года сумма гонорара, выплаченного журналисту его читателями, составила 42723 рубля 33 копейки.

Читать дальше →
Total votes 29: ↑21 and ↓8+13
Comments25

SVG-штабеля

Reading time1 min
Views1.9K
Картинки со спрайтами безудержно используются для скачивания массы значков и элементов интерфейса всех сразу, единственным HTTP-запросом. Однако они несколько обременительны в употреблении, так как приходится рассчитывать сдвиги и задавать их в background-position. Не получится добавить, убрать или переставить спрайты без такого пересчитывания. Или изменить размер спрайта без того, чтобы наткнуться на его соседа сбоку.

Как можно устранить эту проблему? Ну, положить все спрайты друг на друга, отключить их видимость, затем показать только тот, который нужен. Хотел бы я, чтобы это было возможно… и давно хотел… а затем случилось вот что (читайте снизу вверх):

[цитаты из микроблогов]

Ах, хорошо! И ужé работает в Файерфоксе. Такая же возможность запланирована к добавлению в Оперу: баг «CORE-37596» (я не мог найти общедоступной гиперссылки, к нему ведущей). Есть и альтернативы SVG-штабелям, лучше поддерживаемые браузерами: элементы embed, iframe, object или img — но я всё же предпочитаю фоновые картинки из-за того, что проще изменять их размеры и положение. Так что давайте надеяться, что поддержку SVG-штабелей добавят и другие браузеры.

Итак, как же работает SVG-штабель? На самом деле, весьма несложно. Поглядите в исходный код SVG-файла Эрика.

[вид SVG-файла]

Читать дальше →
Total votes 56: ↑50 and ↓6+44
Comments15

Верховный суд США объявил: Конгресс может принимать законы о приватизации работ, находящихся в общественном достоянии

Reading time2 min
Views7.4K
Надеюсь, не многие позабыли ещё, что 17 января в заметке «Иисус Христос и этика свободного копирования» я объявил о возможности копирайтового апокалипсиса, предтечею которому станет тот момент, когда правоторговцы, не удовлетворённые последовательным продлением сроков действия копирайта в будущее (а сейчас эти строки в ряде стран достигли или готовы достигнуть целой сотни лет!), начнут продлевать их и в прошлое — то есть приватизировать те творческие работы, которые давно (многие десятилетия назад!) перешли в общественное достояние.

И что же? Буквально на следующий день (18 января) в «Wired» вышла заметка «Supreme Court Says Congress May Re-Copyright Public Domain Works» о том, что в США принято на высшем уровне такое судебное решение, которое признаёт право Конгресса на издание законов и принятие международных договоров, удлиняющих в прошлое сроки копирайта, вновь переводящих некоторые творческие работы из общественного достояния (куда они попали в США по той или иной причине) в разряд частной собственности правоторговцев.

Читать дальше →
Total votes 66: ↑58 and ↓8+50
Comments33

180 000

Reading time1 min
Views478
Число учётных записей, зарегистрированных на сайте «Хабрахабр», сегодня превысило 180 000 по данным страницы http://habrahabr.ru/people/.

Эта новость заслуживает внимания внешнего мира, поэтому я выношу её в хаб «Социальные сети и сообщества», а не в хаб «Хабрахабр», который оффтопик.
Total votes 81: ↑28 and ↓53-25
Comments19

Корпорация Microsoft 28 июня 2011 года выпустила обновлённые версии шрифтов Arial, Tahoma и Verdana

Reading time3 min
Views6.2K
Всякий, кому доводилось читать две прекрасные статьи Тима Брауна «Type rendering: operating systems» и затем «Type rendering: web browsers» (в октябре 2010 года) или самостоятельно исследовать тот же вопрос, тот уж знает, что в Windows, в зависимости от версии Windows, браузеры могут пользоваться одной или двумя различными системами антиалиасинга (сглаживания контуров) отрисовываемого шрифта.

Наилучшею из двух является система ClearType в DirectWrite (которою современные версии IE и Файерфокса пользуются в Windows 7 и в Windows Server 2008 R2 — а также в Windows Vista и в Windows Server 2008, если там установлен Platform Update): в ней контуры сглаживаются как в горизонтальном направлении (с использованием субпиксельной отрисовки ClearType), так и в вертикальном.

Менее хорошею является прежняя система ClearType в GDI+ (которою буквально все браузеры пользуются в Windows XP): она использует только субпиксельную отрисовку контуров шрифта в горизонтальном направлении — но ничуть не мешает проявляться «ступенькам» всякий раз, когда линия символа перескакивает в вертикальном направлении с одной строчки пикселов на другую. Эта особенность делает особенно тягостным отображение почти горизонтальных линий — имеющихся, например, во вчерашнем шрифте Russo.

Но оказывается, что случается и противоположная проблема: те шрифты, видом которых дизайнер-шрифтовик был долгие годы всецело удовлетворён в Windows XP, в некоторых размерах могут стать пренеприятно тонкими после их отображения в DirectWrite в более современных операционных системах. Этакими оказались, в частности, шрифты Arial, Tahoma и Verdana, распространявшиеся Корпорацией Microsoft в составе операционных систем семейства Windows. На сайте DebugTheWeb вы без труда отыщете ту тестовую страницу, на которой для вашего свéдения (и для сведéния на холсте <canvas>) приводятся скриншоты, демонстрирующие эту проблему; вы можете там сравнить своё отображение шрифтов с эталонным.

Читать дальше →
Total votes 63: ↑48 and ↓15+33
Comments24

Information

Rating
Does not participate
Location
Геленджик, Краснодарский край, Россия
Date of birth
Registered
Activity