Pull to refresh
0
0
Олег Резников @Inquirer

User

Send message

HTML5 как победа научного материализма

Reading time15 min
Views6.2K
Стандарт HTML5 уже почти готов к использованию. Где-то все еще идут жаркие споры по конкретным секциям DOM, видеокодекам, анимации и прочим 3D, но основа HTML5 — его синтаксис, атрибуты и теги — уже устаканились. Эти разделы стандарта не меняются уже многие месяцы; окончательно и по факту их зафиксируют релизы IE9 и FF4, после чего какие-либо их изменения в рамках пятой версии станут невозможны.
Так как костыли для старых версий IE уже созданы и обкатаны, то уже совсем-совсем скоро, начиная новый проект, можно будет открыть свой любимый редактор и, не скрывая наслаждения, написать

<!doctype html>

Сначала, конечно, html5 появится скорее в бложиках энтузиастов, чем на серьезных сайтах, но — вот увидите — через несколько лет в каждой региональной газете появятся объявления типа «ремонт и настройка ПК, заправка принтеров, 1С, сайты на HTML5».

В IT, как и в других областях техники, спецификации бывают хорошие, как у Страуструпа, а бывают плохие и даже отвратительные, как спецификация ECMAScript. По моему скромному мнению, спецификация HTML5 обещает стать воистину великой, просто-таки образцовой вершиной этого бюрократического жанра.
Пролистывая на выходных свежую версию черновика стандарта (от 5-ого марта), я в очередной раз не мог не восхититься изящностью принятых решений и филигранной точностью формулировок родившейся в тяжелых муках спецификации.

Эта статья о том, почему стандарт html5 получился именно такой, и что на самом деле скрывается за его внешне обтекаемыми формулировками.
Читать дальше →
Total votes 240: ↑212 and ↓28+184
Comments194

Цветовые палитры фильмов

Reading time3 min
Views57K
Наверняка, многие помнят пост Стильный фон за 5 минут, где говорилось, что из любой фотографии можно сделать фон, путём нескольких простых преобразований. Картинки, которые сделали участники проекта MovieBarCode немного похожи на стильные фоны, но отличаются по назначению.

image

Всё дело в том, что наличие различных цветов в жизни необходимо для поддержания нервной системы человека в тонусе. Известны случаи т.н. «цветового голодания», когда при цветовой бедности окружающего пейзажа и обстановки развивались симптомы астенизации — (греч. astheneia бессилие, слабость) — снижение функциональных возможностей центральной нервной системы, проявляющееся ухудшением работоспособности, психической утомляемостью, ухудшением внимания, памяти, повышенной реактивностью с раздражительной слабостью).

При просмотре фильма вы питаетесь цветовой энергией полтора часа, а то и больше. Поэтому не стоит удивляться, что то или иное произведение искусства нравится вам, и не нравится вашему другу, быть может всё дело не в отсутствии вкуса, а в индивидуальной энергетической потребности или цветовом голодании. Прежде чем смотреть какой-либо фильм, борясь с цветовым голоданием, поищите его цветовую палитру. К примеру, на картинке выше вы видите фильм «Матрица».
Читать дальше →
Total votes 133: ↑97 and ↓36+61
Comments92

Грабли при верстке HTML писем

Reading time3 min
Views103K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →
Total votes 282: ↑273 and ↓9+264
Comments77

Интернет + Firefox => офлайн словари больше не нужны

Reading time2 min
Views3.5K
Сегодня существует такое разнообразие онлайн-словарей, что ограничивать себя офлайновым просто непрактично (если, конечно, у вас есть интернет). Однако один вопрос остаётся не решённым — как сделать так, чтобы пользоваться онлайн-словарями было удобно? Закрадывается мысль, что существует где-то волшебный «Fantastic Online Dictionary Client», да, может и есть, но сегодня расскажу о другом способе «их готовить», к которому пришёл не сразу, но пользуюсь уже давно и это действительно удобно.

Небольшое уточнение: говоря об офлайн словарях я имею ввиду не бумажные, а программные словари, которые не связаны с интернет.

Читать дальше →
Total votes 20: ↑11 and ↓9+2
Comments20

2 заброшенных проекта

Reading time2 min
Views722
image
Крыс — персонаж для музыкальной энциклопедии.
В этом посте я расскажу о двух проектах, которые так и не были запущены мной в прошлом году, а вы можете позаимствовать идеи или просто вновь вспомнить об одних популярных граблях.
Читать дальше →
Total votes 130: ↑85 and ↓45+40
Comments106

Динамическое программирование. Классические задачи

Reading time8 min
Views325K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

Однако среди переборных и некоторых других задач можно выделить класс задач, обладающих одним хорошим свойством: имея решения некоторых подзадач (например, для меньшего числа n), можно практически без перебора найти решение исходной задачи.

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →
Total votes 105: ↑97 and ↓8+89
Comments72

Просмотри видео на сканере штрихкодов

Reading time3 min
Views7.7K

«Из всех искусств для нас важнейшими являются кино и цирк»
— В.И. Ленин


Просмотр видео — одно из любимых развлечений в современном мире, фильмы сейчас смотрят практически на всех устройствах, даже на холодильниках. К сожалению, рядом не оказалось подходящего холодильника, и я решил просмотреть фильм на сканере штрихкодов. Под рукой оказался сканер Cipher Lab 8001. Технические характеристики плеера сканера:
  • 16-битный CMOS процессор
  • 1 Мб памяти для программ
  • 1 Мб SRAM для данных
  • FSTN дисплей с LED подсветкой разрешением 100×64

Читать дальше →
Total votes 252: ↑248 and ↓4+244
Comments71

Современные веб-формы: еще несколько тонкостей

Reading time11 min
Views31K
Большинство людей воспринимают мир с помощью глаз, поэтому визуальный дизайн имеет огромное значение при создании фронтендов веб-приложений. Но так ли полезны все эти рюшечки и «карамельки», которыми любят насытить интерфейс современные веб-дизайнеры? В данной статье я хотел бы рассказать о типичных ошибках при дизайне веб-форм, а также поделиться некоторыми секретами создания правильного интерфейса.



Потратить время на чтение
Total votes 177: ↑167 and ↓10+157
Comments126

HTML5 — взгляд через призму безопасности

Reading time10 min
Views26K
HTML5 — будущий стандарт языка разметки Интернет. Пока он находится в стадии черновика, но все больше и больше его возможностей реализуются в популярных веб-браузерах. Но как это обычно бывает, новые технологии несут в себе и новые опасности, которые могут быть успешно проэксплоитованы.
Читать дальше →
Total votes 157: ↑149 and ↓8+141
Comments18

Новые уязвимости доступа к файлам в PHP

Reading time8 min
Views30K
Какой-нибудь год назад все просто с ума сходили от Error-based MySQL, а unserialize казался чем-то сложным и не встречающимся в реальной жизни. Теперь это уже классические техники. Что уж говорить о таких динозаврах как нуль-байт в инклудах, на смену которому пришел file name truncated. Исследователи постоянно что-то раскапывают, придумывают, а тем временем уже выходят новые версии интерпретаторов, движков, а с ними – новые баги разработчиков.
По сути, есть три метода найти уязвимость: смекалка (когда исследователь придумывает какой-нибудь трюк и проверяет, работает ли он на практике), анализ исходного кода и фаззинг. Об одном интересном китайском фаззинге и его развитии с моей стороны я и хочу рассказать.

Список функций и результаты проверки
Читать дальше →
Total votes 138: ↑122 and ↓16+106
Comments52

Разоблачение алгоритмов растеризации шрифтов (1/2)

Reading time15 min
Views14K
Попытка улучшить алгоритмы растеризации шрифтов, пользуясь исключительно общедоступной информацией.

От переводчика


В первый раз я столкнулся с этой статьей в 2008 году. С тех пор я неоднократно задумывался о переводе (так как лучшего материала по теме не найти), и вдруг ссылка на оригинал всплыла на Хабре в обсуждении топика «Сглаживание шрифтов, анти-алиасинг, и субпиксельный рендеринг». Это стало решающим фактором (раз на материал ссылаются, значит, он кому-то нужен), и работа была, наконец, закончена.
Читать дальше →
Total votes 132: ↑130 and ↓2+128
Comments60

«Чашка чая» на разных языках

Reading time5 min
Views2.8K
Какой язык программирования Вы предпочитаете? C++? Или чистый C? Или Вы поклонник скриптовых языков — Python или PHP?
Конечно, Вы ответите, что это зависит от задач, которые перед Вами стоят.
Хорошо. Давайте попробуем реализовать простой алгоритм — приготовить чашку чая — на разных языках программирования.
Можете посмотреть, что получилось у меня. Реализации не претендуют на право быть идеальными, да и результаты отличаются. Но ведь дело не в чае — дело в языке! Итак...
Читать дальше →
Total votes 48: ↑26 and ↓22+4
Comments34

ОГО! Светодиодный кубический дисплей 8×8×8 [видео]

Reading time1 min
Views30K
[фото]

Поглядите на этот гиктастический¹ трёхмерный куб светодиодов 8×8×8, созданный пользователем chr на сайте «Instructables»:



Хотите сделать себе такой? Тогда просто последуйте этому *гм* простому DIY-пособию,² и вскорости вы ошеломите своих друзей собственным 3D-LED-кубом!

___________________
¹ В первоисточнике — «geektastic» (от слов «geek» — гик и «fantastic» — фантастический).
² В комментариях опубликован перевод этого пособия, который изготовил sir06Will.
Total votes 205: ↑163 and ↓42+121
Comments151

Войны в песочнице — Часть 1

Reading time5 min
Views13K

Предупреждение


В статье описаны приключения одного моего знакомого.

Предыстория


События проходят во времена далекого третьего курса.

Жил со мной в студенческом общежитии в одной комнате сосед-первокурсник, который, также как и я, учился на ВМК и интересовался информационными технологиями. Для определённости в дальнейшем буду называть его N.

Что же дальше?
Total votes 224: ↑185 and ↓39+146
Comments93

История одной красивости или псевдотрёхмерное изВращение

Reading time2 min
Views1K
Давным-давно, когда компьютеры были уже не такими большими, но тактовые частоты всё ещё измерялись единицами мегагерц, мой пытливый ум случайно
изобрёл некий весьма любопытный эффект. Взгляните на картинку и представьте, что вся эта совокупность точек вертится самым невероятным образом.

Застывшее изВращение

Конечно, для современных видеокарт такая задача является примитивной, однако в те времена на 3.5 мегагерцовом «Cпектруме» о подобных мощностях можно было лишь помечтать. Так что забудьте о графических процессорах, матрицах вращения и нереально ресурсоёмких вычислениях и попробуйте хотя бы примерно прикинуть, каким образом можно реализовать вот такую красивость.

Любопытно? Тогда добро пожаловать под кат!

Читать дальше →
Total votes 75: ↑66 and ↓9+57
Comments62

По следам ошибок распознавания

Reading time4 min
Views11K
Перекличка в армии
— Иванов!
— Я!
— Петров!
— Я!
— тридцать-тридцать!
— ???
— тридцать-тридцать, есть такой???
— Товарищ лейтенант! Моя фамилия Зозо.

Анекдот.


Все мы знаем, что программы распознавания документов иногда ошибаются. Действительно, если бы они не ошибались, не нужен им бы был развесистый пользовательский интерфейс с текстовым редактором. Наш FineReader, увы, всё ещё не исключение, но не в этом суть. Программы распознавания существуют уже довольно давно, столько же существуют и их ошибки… Кто из нас не сталкивался с фразой вроде «иду но дороге» в оцифрованной книжке? Давайте сегодня поищем эти милые шалости распознавалок, посмотрим, как они в конечном счёте повлияли на наш язык, как наблюдаемый объект – попробуем заметить статистически уловимые аномалии. Да, разумеется, при серьёзном языковом исследовании лингвист наверняка сумеет отделить зёрна от плевел, но, вот увидите, плевелы тоже весьма интересные попадаются.

Сразу оговорюсь. Не все найденные аномалии ведут происхождения от FineReader’а, хотя ко многим он приложил руку. Итак, начнём.
Читать дальше →
Total votes 56: ↑48 and ↓8+40
Comments29

Ускоряем раздачу фоток

Reading time8 min
Views14K

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

Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

На самом деле проблема в несовершенстве современного винчестера, который до сих пор не расстался с механическими подсистемами вращения шпинделя и позиционирования головок.

В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
Читать дальше →
Total votes 128: ↑126 and ↓2+124
Comments69

PHPLego: Ненавязчивый AJAX

Reading time9 min
Views21K


Здравствуйте дорогие хаброчитатели!

Думали ли Вы когда-нибудь о том, чтобы Ваш сайт одинаково хорошо работал с включенным JavaScript-ом и без JavaScript-а? Чтобы, если JavaScript включен, блоки сайта перегружались AJAX-сом, а если JavaScript-а нет, то происходил просто переход на новую страницу?

Хмм… Я думаю, что это интересная задачка, и вот какое простое решение мне удалось придумать. В этой статье я попытаюсь в общих чертах описать суть этого решения, не вдаваясь особо в неинтересные детали.

Для себя я сформулировал задачу, по следующим критериям:
  • Переход по разделам сайта внутри и вне блоков должен осуществляться обычными ссылками, без каких бы то ни было onclick=”…”.
  • При включенном JavaScript-е блоки сайта перегружают только свою область страницы (свой div). При выключенном JavaScript-е должен происходить обычный переход по ссылке.
  • Должен существовать только один глобальный обработчик нажатия на ссылки $(“a”).click(…), который и делает всю работу по перегрузке нужных элементов страницы. Если же JavаScript отключен, то этот обработчик просто не срабатывает, и сайт продолжает работать в обычном режиме.
  • Постинг форм при включенном JavaScript-е также обновляет только ту область, в которой находится эта форма. При отключенном – все работает как обычно.
  • Должна быть возможность запретить AJAX-презагрузку некоторым областям страницы, например, поставив им какой-нибудь класс «noajax». Это если после перехода по ссылке меняется слишком много данных на странице, и они все в разных блоках. Тогда разумней перегрузить всю страницу целиком, чем обновлять каждый блочёк по отдельности. Оно и быстрее будет.
  • Должна быть возможность указать ссылке блок, который она должна перегрузить. Допустим, если нам нужно перегрузить не только текущий блок, но и блок родитель.
  • Если блок был загружен ранее, то он должен браться из кеша, дабы не гонять лишний трафик и не напрягать лишним запросом сервер.
  • В случае, если блок загружен из КЭШа, пользователь должен как-то понимать что эта не самая актуальная информация, и иметь возможность обновить блок.
  • Никакого JavaScript-a. Это конечно мое личное мнение, но я ненавижу писать на JavaScript-е. Поэтому я добавил еще один пункт. Смысл его в том, чтобы разрабатывая модули к сайту я не писал ни строчки JavaScript-а (ну максимум одну-две на модуль, и то для каких-нибудь чекбосов в форме). Не знаю, как ты, дорогой хаброчтец, но я, твою мать, лучше продам свою душу дьяволу, чем буду дебажить свой JavaScript во всех многообразиях браузеров!


Ну, вот собственно и все пожелания. Итак, приступим к реализации…
Читать дальше →
Total votes 79: ↑66 and ↓13+53
Comments83

Конфетки для Валерки

Reading time3 min
Views3.5K
конфеткаВы никогда не сталкивались с проблемой как объяснить человеку, неиспорченному общением с железным другом, азы программирования?

Так уж получилось, что мы, работая в компании ГдеЭтотДом (я и anei), относительно часто ходим обедать в МуМу. Остаток от обеда обычно представляет собой фирменную конфетку. Которую мы не едим — вот такое несоответствие типов.

Но мы нашли выход, скармливая их Валерке.
Я, честно говоря, не знаю, причем тут программирование, Валерка и конфетки, но, в общем, однажды…
Подходит Александреску к Валерке и говорит:
Читать дальше →
Total votes 245: ↑201 and ↓44+157
Comments208

Повышение производительности за счет блочного кеширования

Reading time5 min
Views5.6K
Тема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.
схема кеширования блоками
Читать дальше →
Total votes 56: ↑49 and ↓7+42
Comments60

Information

Rating
Does not participate
Location
Южно-Сахалинск, Сахалин, Россия
Date of birth
Registered
Activity