Как стать автором
Обновить
0
0
Валентин Назаров @kozlice

Пользователь

Отправить сообщение

Разбираемся с Notifications API

Время на прочтение2 мин
Количество просмотров7.3K
Продолжаю серию переводов статей сайта html5rocks. Мы уже говорили про то, как внедрять шрифты, как работать с видео, сегодня мы поговорим про то как делать всплывающие сообщения в браузере с помощью Notifications API. Работает оно к сожалению пока только в Хроме, но есть уже начальная версия спецификации. Под катом подробности.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии9

Разбираемся с разработкой Windows 8 приложений на XAML/С#, реализуя простой RSS Reader. Ч.3

Время на прочтение8 мин
Количество просмотров13K

Вот и прошли новогодние каникулы и пришло время порадовать хабрачитателей продолжением истории про написания WinRT приложения на XAML/C# на примере простой RSS читалки.

Начало истории Ч.1 (создание приложения из шаблона, привязка и получение данных RSS, плитки разных размеров на начальной странице) и продолжение Ч.2 (разные плитки в разных группах, разные шаблоны для плиток, живые тайлы, контракт Share).
Форматированный HTML, адаптированное отображение, контракт поиска и настроек, ссылка на код проекта
Всего голосов 36: ↑24 и ↓12+12
Комментарии12

Насколько плохим код должен быть?

Время на прочтение6 мин
Количество просмотров74K
Эрик Липперт — ветеран Microsoft, проработавший в компании 16 лет и стоящий за разработкой VBScript, JScript и C#.

На прошлой неделе в комментариях к одной из статей разгорелся спор о роли низкоуровневой оптимизации в программировании, и я вспомнил относящуюся к этому статью Эрика. Она была написана в конце 2003, и хотя реалии с тех пор несколько изменились — принципы остались теми же самыми. Можете мысленно заменить ASP и VBScript на PHP, JavaScript, или на другой скриптовый язык по вашему вкусу.

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


Я уже много писал о быстродействии скриптов, но до сих пор я не высказывался по поводу того, что многие советы об их оптимизации я считаю как минимум бестолковыми, а то и откровенно вредными.

Например, за семь лет в Microsoft я получил десятки вопросов, аналогичных по своей сути этому, заданному в конце 1990-х:
У нас есть код на VBScript, и в одной часто вызываемой функции мы определяем оператором Dim несколько переменных, которые нигде в функции не используются. Не замедляется ли каждый вызов функции из-за объявления этих переменных?
Какой интересный вопрос! В компилируемом языке, таком как Си, объявление локальных переменных общим размером n байт всего лишь вычитает n из указателя стека при входе в функцию. Если n будет чуть больше или чуть меньше, затраты времени на вычитание никак не изменятся. Наверное, в VBScript точно так же? Оказалось, что нет! Вот что я написал автору вопроса:
Читать дальше →
Всего голосов 171: ↑146 и ↓25+121
Комментарии246

Исключительная красота исходного кода Doom 3

Время на прочтение14 мин
Количество просмотров220K
image

Сегодня вас ждет рассказ об исходном коде Doom 3 и о том, насколько он красив.
Да, красив. Позвольте мне объясниться.
Читать дальше →
Всего голосов 281: ↑256 и ↓25+231
Комментарии245

jsiedit: идея и создание удобного подключаемого WYSIWYM редактора с примером для Хабрахабра

Время на прочтение16 мин
Количество просмотров10K

Введение


В статье описываю подход к созданию удобного инструмента на Javascript для онлайн-редактирования текстов. В качестве примера создал прототип для редактирования статей на Хабре (описан ниже). С его помощью сейчас и вношу изменения в данную статью.

Передо мной встала задача выбора онлайн-редактора для текстов на сайте. Самым очевидным решением оказался бы один из WYSIWYG редакторов. Но этот вариант мне не понравился по нескольким причинам. Во-первых, многие уязвимости популярных CMS систем связаны именно с WYSIWYG редакторами. Во-вторых, после публикации текст часто будет отличаться от того, что было в редакторе. В-третьих, подобные редакторы сложно расширить для поддержки новых тэгов и элементов. Поэтому остановился на WYSIWYM редакторе.

Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии19

Полезные факты о языке программирования Objective-C

Время на прочтение3 мин
Количество просмотров23K
Я уже 2 года занимаюсь разработкой приложений под iOS и в этой статье мне захотелось представить те факты, которые показались мне интересными и полезными. Буду рад, если вы так же поделитесь своими знаниями в комментариях. В следующей статье хотелось бы собрать подобные факты о Foundation Kit.

.m


Расширение .m (message) ввели для того чтобы выделить ключевую особенность Objective-С. По сути, мы не вызываем методы у класса, мы отправляем сообщение объекту, после чего происходит диспетчеризация в ходе которой диспетчер методов Objective-C ищет нужный класс и вызывает у него необходимый метод.

NS


Префикс NS обозначает Next Step. Он возник еще в те времена, когда не было Cocoa, а фрейворк назывался NextSTEP и был продуктом NeXT Software. Apple купила эту компанию в 1996 году и чтобы не нарушать обратную совместимость кода продолжила использовать этот префикс.

Читать дальше →
Всего голосов 45: ↑30 и ↓15+15
Комментарии37

Рейтинг фантастических романов, или Я сделаю свой «IMDB для книг», с преферансом и библиотекаршами

Время на прочтение8 мин
Количество просмотров7.6K
Долго выбирал между «Алгоритмами», «Читальным залом» и «Я пиарюсь», в итоге остановился на Data Mining.

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

И вот, терзаясь муками выбора, я забил в поиск «IMDB for books» и… не нашел ничего пристойного. Весь интернет забит рекомендательными сервисами для книг, и все они выдают полную чушь. Вот, например, топ имхонета для раздела «Самая лучшая фантастика и фэнтези»:

1. Мастер и Маргарита. Михаил Булгаков, 1940 год
2. Цветы для Элджернона (рассказ). Дэниел Киз, 1959 год
3. Цветы для Элджернона. Дэниел Киз, 1966 год
4. Битва Королей. Джордж Мартин, 1998 год
5. Рыцарь Ордена: Клинки у трона. Сергей Садов, 2000 год
6. Голубятня в Орехове. Владислав Крапивин, 1983 год


Эээ… Это совсем не то, что я ожидал увидеть на первых местах в рейтинге фантастики. «Мы пойдём другим путём», — подумал я. Отказавшись от идеи найти нормальный читательский рейтинг, я просто пошёл в Вики, нашёл список лауреатов премий Хьюго и Небьюла и выбрал пару-тройку книг — как, собственно, я всегда раньше и делал.

«А не замутить ли мне свой рейтинг книг, взяв за основу престижные премии?» — внезапно подумал я. И замутил. Знакомьтесь: top-books.info

Путь к успеху
Всего голосов 97: ↑82 и ↓15+67
Комментарии130

Избавляемся от дублирования сквозного кода в PHP: рефакторинг кода с АОП

Время на прочтение12 мин
Количество просмотров44K
Думаю, каждому программисту знаком принцип единственной ответственности, ведь не зря он существует: соблюдая его, можно написать код лучше, он будет более понятным, его будет легче дорабатывать.

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

Эта статья о том, как можно избавиться от дублирования сквозного кода, и как сделать его чуточку лучше с помощью АОП.

Читать дальше
Всего голосов 93: ↑89 и ↓4+85
Комментарии48

PHP класс для удобной и безопасной работы с MySQL

Время на прочтение9 мин
Количество просмотров116K
После написания статьи про защиту от инъекций я взялся за написание класса, реализующего изложенные в ней идеи.
А точнее, поскольку ключевой функционал уже использовался в рамках рабочего фремворка, я занялся выделением его в самостоятельный класс. Пользуясь случаем, хочу поблагодарить участников PHPClub-а за помощь в исправлении нескольких критических ошибок и полезные замечания. Ниже я постараюсь описать основные особенности, но сначала небольшой
дисклеймер
Есть несколько способов работы с SQL — можно использовать квери-билдер, можно ORM, можно работать с чистым SQL. Я избрал последний вариант, потому что мне он ближе. Я совсем не считаю первые два плохими. Просто лично мне всегда было тесно в их рамках. Но я ни в коем случае не утверждаю, что мой вариант лучше. Это просто ещё один вариант. Который можно использовать, в том числе, и при написании ORM-а. В любом случае, я считаю, что наличие безопасного способа работать с чистым SQL не может принести какой-либо вред. Но при этом, возможно, поможет последним оставшимся приверженцам использования mysql_* в коде приложения, отказаться, наконец, от этой порочной практики.

В двух словах, класс строится вокруг набора функций-хелперов, позволяющих выполнять большинство операций с БД в одну строку, обеспечивая при этом (в отличие от стандартных API) полную защиту от SQL инъекций, реализованную с помощью расширенного набора плейсхолдеров, защищающих любые типы данных, которые могут попадать запрос.
В основу класса положены три базовых принципа:
  1. 100% защита от SQL инъекций
  2. При этом защита очень удобная в применении, делающая код короче, а не длиннее
  3. Универсальность, портабельность и простота освоения

Остановлюсь чуть подробнее на каждом из пунктов.
Читать дальше →
Всего голосов 92: ↑51 и ↓41+10
Комментарии103

jQuery изнутри — атрибуты, свойства, данные

Время на прочтение7 мин
Количество просмотров50K
Последняя за новогодние каникулы, но не последняя в этой серии статья, посвященная внутренностям jQuery. получилась очень быстрой и маленькой, но интерес хабражителей к теме, судя по опросу «стоит ли продолжать?», который висят в каждом посте некоторое время после его создания, не пропадает.

Тема для сегодняшнего поста достаточно большая и я постараюсь рассказать о ней поинтереснее и не слишком поверхностно. Рассмотрим мы сегодня методы attr, prop и data.
Читать дальше →
Всего голосов 74: ↑69 и ↓5+64
Комментарии15

jQuery изнутри — парсинг html

Время на прочтение6 мин
Количество просмотров66K
Продолжаем дело первой статьи и пытаемся разобраться с тем, что же делает за нас jQuery, когда мы с помощью этой библиотеки создаем DOM-элементы.

В прошлом выпуске мы упомянули, что при передаче в jQuery вместо селектора html-строки, на основе нее функция parseHTML создаст соответствующие элементы и вернет их в привычном jQuery-объекте. Сейчас мы рассмотрим все это более тщательно и затронем кроме core.js еще manipulation.js и attributes.js (мельком).
Я клевый, мне интересно!
Всего голосов 84: ↑82 и ↓2+80
Комментарии30

jQuery изнутри — введение

Время на прочтение6 мин
Количество просмотров103K
По работе мне несколько раз приходилось участвовать в собеседовании кандидатов на должность клиент-сайдера у нас в компании, смотреть на их познания в Javascript. Удивительно что никто из них не знал толком как же работает jQuery изнутри, даже те, кто отметил свои знания jQuery уровнем «отлично», увы.

У jQuery очень низкий порог вхождения, о нем часто пишут и используют всюду, где только можно (и даже там, где, в общем-то, не нужно), поэтому некоторые даже не смотрят на чистый Javascript. Зачем, мол, его знать, когда есть jQuery, а по нему — тонны примеров и готовых плагинов? Даже на Хабре видел статью про рисование на Canvas, где автор подключил jQuery и использовал его только один раз — для того, чтобы получить доступ к Canvas по его идентификатору. И не считал это чем-то ненормальным.

Извините, отвлекся. Суть поста и следующих частей серии в том, чтобы рассказать о том, как же работает библиотека изнутри и что же в ней происходит по мере выполнения каких-то методов.
Готов и хочу читать дальше
Всего голосов 149: ↑139 и ↓10+129
Комментарии80

jQuery изнутри — манипуляции с DOM

Время на прочтение4 мин
Количество просмотров34K
Каникулы продолжаются и мы воспользуемся этим для получения новых знаний, укрепления и расширения старых.

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

Итак, сегодня мы продолжим серию копаний в исходниках jQuery под номером 1.8.3 (стабильная версия на момент написания статьи). Общее представление о jQuery мы уже получили, парсить html — . Пора то, что мы распарсили куда-нибудь вставить.
Вставь, вставь!
Всего голосов 45: ↑44 и ↓1+43
Комментарии12

Слежение за изменениями в директории: как это делается в разных ОС

Время на прочтение3 мин
Количество просмотров73K
Я бы хотел посвятить статью обзору API, предоставляемых разными ОС для слежения за изменениями в директории. Статья появилась как результат моей работы над демонами слежения за изменениями для утилиты dklab_realsync (статья на хабре, github репозиторий) и своей собственной, которую я пока что не хочу анонсировать.
Читать дальше →
Всего голосов 93: ↑88 и ↓5+83
Комментарии76

High resolution patches — новая жизнь старых игр

Время на прочтение4 мин
Количество просмотров140K
Доброй пятницы, уважаемый хабр!

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

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

Предположим, что ваша любимая игра все же запустилась. Сначала радости нет предела. Но только до тех пор, пока вы не обнаружите, что максимальное доступное разрешение — 1024х768, а то и вовсе 800х600. На современном мониторе это означает огромные элементы GUI игры, смазанную картинку, а если монитор широкоформатный — еще и сильно искаженные, «пузатые» пропорции. Некоторых фанатов такие мелочи, конечно же, не смущают. Но зачем отказывать себе в максимальном удовольствии от игры, если решить проблему не так уж и сложно?

Под катом — способ запустить с современным разрешением некоторые популярные игры начала 2000х.

Читать дальше →
Всего голосов 131: ↑125 и ↓6+119
Комментарии94

Виджет ВКонтакте «Мне нравится» кэширует параметры

Время на прочтение2 мин
Количество просмотров35K
Думаю, все знают что делает виджет «Мне нравится». Для числа несведущих поясню – виджет добавляет на HTML страницу одноименную кнопку, при нажатии на которую увеличивается счетчик. Пользователь также может рассказать о странице на своей стене ВКонтакте. Многие используют этот виджет, но нет ни одного упоминания в свободном интернете о серьезном подводном валуне. Дело в том, что после первого использования, параметры виджета навсегда кэшируются на серверах ВКонтакте и нет возможности их поменять не сбрасывая счетчика.
Подробнее
Всего голосов 31: ↑24 и ↓7+17
Комментарии23

Книги для тимлидов и руководителей проектов. Часть 2

Время на прочтение3 мин
Количество просмотров81K
Предыдущая статья очень хорошо была воспринята читателями, поэтому, как и обещал, сегодня подготовил статью-бонус.

Итак, я просил ответить на вопрос какие книги из статьи вы читали?

Результаты опроса:
Название книги
Количество голосов
Процент
Том ДеМарко. Deadline. Роман
об управлении проектами
247
54%
Фредерик Брукс. Мифический человеко-месяц, или Как создаются
программные системы
174
38%
Джоэл Спольски. Джоэл о программировании
165
36%
Том Демарко и Тимоти Листер. Человеческий фактор. Успешные
проекты и команды
148
32%
Джейсон Фрайд, Дэвид Хайнемайер Хенссон. Rework.
Бизнес без предрассудков
108
24%
Джеффри Янг и Уильям Саймон. iКона. Стив
Джобс
94
21%
Том ДеМарко, Тимоти Листер. Вальсируя с Медведями: управление
рисками в проектах по разработке программного обеспечения
70
15%
Том Демарко, Тимоти Листер. Балдеющие от адреналина и зомбированные
шаблонами. Паттерны поведения проектных команд
51
11%
Кармин Галло. iПрезентация. Уроки
убеждения от лидера Apple Стива Джобса
48
11%
Патрик Ленсиони. Смерть от совещаний
21
5%
Патрик Ленсиони. Пять пороков команды. Притчи о
лидерстве
19
4%
Патрик Ленсиони. Пять искушений руководителя: притчи о лидерстве
16
4%
Патрик Ленсиони. Три признака унылой работы. История со смыслом
для менеджеров (и их подчиненных)
11
2%

А теперь еще один бонус — список книг по заданной тематике, которые прислали нам читатели:
Читать дальше →
Всего голосов 89: ↑81 и ↓8+73
Комментарии12

Своя игра с JavaScript и Canvas

Время на прочтение9 мин
Количество просмотров106K
imageНе так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего
способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе развлечения кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.
Читать дальше →
Всего голосов 124: ↑120 и ↓4+116
Комментарии102

Дайджест интересных новостей и материалов из мира PHP за последние две недели №6 (01.12.2012 — 14.12.2012)

Время на прочтение6 мин
Количество просмотров21K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 67: ↑52 и ↓15+37
Комментарии7

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность