Как стать автором
Обновить
11
0
Макс @maxvodo

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

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

Масштабирование карты, наложение меток и отображение маршрута без использования javascript

Время на прочтение3 мин
Количество просмотров14K
imageОднажды, загорелся я идеей создания инструмента просмотра маршрута на карте своего города без использования javascript. Даже были аргументы в пользу этого. Например, использование своих изображений карт.
UPD: Есть аналоги у популярных сервисов c их картами (на момент создания о них еще не знал):

Спасибо за ссылки комментирующим
Но мы делаем свою.
Что из этого вышло
Всего голосов 29: ↑24 и ↓5+19
Комментарии20

Push + ActiveMQ — ZendFramework =… или история одного драйвового проекта

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

Одним прекрасным утром к нам в офис забежал молодой парень, с амбициозной идеей и “средствами для реализации” в кармане. “Заходишь на сайт, а там — телевизор. К нему можно подключиться через свою web-камеру. Одновременно может вещать только один человек, остальные — ждут своей очереди (но можно посмотреть скриншоты с их вебкамер). Задача каждого — удержаться в эфире, как можно дольше. Если выступающий нравится публике — все жмут “Cool!”, если подкачал — “Go away!”. И человек заменяется на следующего в очереди. Ну и можно в чат писать”.

Хорошая идея — драйвовый проект. Рисуем прототип, решаем реализовать обновление чата, списка пользователей, рейтинга и т.д. с помощью push-технологии. Это когда после загрузки страницы соединение между клиентом и сервером не закрывается, а продолжает использоваться для отправки сервером каких-либо событий на клиента.

Осторожно! Эта шняга может убить ваш сервер! Кстати, если вы вдруг решите написать высконагруженный скандинавский аукцион – истина и веселые картинки где-то рядом, под катом.

Читать дальше →
Всего голосов 132: ↑125 и ↓7+118
Комментарии87

Обращение зависимостей и порождающие шаблоны проектирования

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

Аннотация


Это третья статья, просвещенная порождающим шаблонам проектирования и связанным с ними вопросами. Здесь мы рассмотрим излюбленные приемы при создании объектов: фабрики, заводы, абстрактные фабрики, строители, прототипы, мультитоны, отложенные инициализации, а также немного коснемся pimpl идиомы или шаблона “мост”. Использование синглтонов было подробно рассмотрено в первой [1] и второй [2] статьях, однако, как вы увидите в дальнейшем, синглтоны часто используются совместно с другими шаблонами проектирования.
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии42

Возможности для студентов, о которых вы, возможно, не знали

Время на прочтение3 мин
Количество просмотров18K
Есть много причин недолюбливать нынешнюю образовательную систему — учат плохо, технологии устаревшие, много ненужной информации и т.д. Я так тоже считал и в той или иной степени считаю. Но, несмотря на это, у студентов есть много возможностей, о которых они даже не догадываются. В этой статье я решил собрать советы, которые должны пригодиться студентам во время учебы. К сожалению, о многом я узнал на последнем курсе, а то и вовсе после окончания университета.

Итак, поехали…
Читать дальше →
Всего голосов 133: ↑120 и ↓13+107
Комментарии71

Мини-фреймворк своими руками

Время на прочтение11 мин
Количество просмотров13K
Недавно, прочитав про мини-фреймворк Silex, я подумал: а что в нем сложного? Попробовал написать нечто подобное и получилось довольно легко.
How-to по написанию своего мини-фреймворка - под катом.
Всего голосов 114: ↑80 и ↓34+46
Комментарии67

Простое сравнение изображений с помощью php

Время на прочтение3 мин
Количество просмотров27K
Алгоритм возможно не новый, и не является идеалом, но, на удивление, работает. Никаких графов и корелляции.

Для начала, стоит отметить, что сравнение очень приблизительно (по крайней мере, на данном этапе), временами две совершенно разные фотографии оказываются похожими процентов на 60%, так же не учитываются жесткие модификации (повороты, инверсия, обрезка) – для этого нужно доводить и доводить. Лично для меня самым главным оказались два параметра: скорость, независимость от разрешения изображения и возможность сравнивать «изображения» прямо в базе данных.
Читать дальше →
Всего голосов 161: ↑153 и ↓8+145
Комментарии64

WPF Series: Intro aka Введение

Время на прочтение5 мин
Количество просмотров12K
        Года 3 назад, обсуждая Windows Forms с другом, я жаловался на то что неудобно использовать Windows Forms для вывода видео и музыки, а друг о том, что ему неудобно создавать свои контролы, а также формировать тулбары.

Читать Далее
Всего голосов 27: ↑24 и ↓3+21
Комментарии46

Кроссбраузерный inline-block

Время на прочтение4 мин
Количество просмотров121K
Разрешите представить вам перевод статьи «Cross-Browser Inline-Block», написанной Райном Доэрти холодным февралем 2009 года. В статье рассказывается о верстке элементов списка с установкой для свойства display значения inline-block. Статья об этом, а также о трудностях, возникающих в процессе достижения результата и о методах их «лечения».

Узнать метод Райна Доэрти
Всего голосов 143: ↑119 и ↓24+95
Комментарии65

Что почитать на выходных? Рекомендуем, выпуск №6

Время на прочтение3 мин
Количество просмотров871
Это подборка статей на тему веб-разработки на платформе .NET (и не только). За день перед выходными я предлагаю набор интересных ссылок, которые стоит посетить в свободные минуты на выходных, чтобы узнать что-то новое и интересное.

Вы можете следить за циклом этих советов по следующей ссылке.

Тема номера:
  • Подборка обучающего контента по WebMatrix [link];
  • Открыта регистрация на [бесплатный] сертификационный экзамен Windows Phone 7 Pro Beta [link];
WebForms:
  • Выпущена новая версия ASP.NET AJAX Control Toolkit [link];
  • Интеграция OpenID в ASP.NET Web Forms с помощью DotNetOpenAuth [link];
  • Проверка безопасности страницы в ASP.NET [link];
  • Почему я продолжаю любить ASP.NET WebForms [link];
Читать дальше →
Всего голосов 115: ↑62 и ↓53+9
Комментарии14

RoboGuice или «Андроид подсел на инъекции»

Время на прочтение8 мин
Количество просмотров12K
imageRoboGuice — это библиотека, которая позволяет пользоваться всеми преимуществами Contexts and Dependency Injection при разработке приложений на Андроиде.
Как несложно догадаться, RoboGuice основан на Google Guice.
Сразу оговорюсь, что в качестве перевода слова «injection» я буду использовать слово «инъекция».

Зачем колоться?


Думаю, что у многих читателей сразу возникнет вопрос: «Зачем эти сложности с CDI на мобильной платформе? Наверняка это всё занимает много места и медленно работает.»
Попробую убедить таких читателей в обратном, а именно в том, что CDI на мобильной платформе очень даже жизнеспособен и существенно облегчает жизнь разработчикам.
Читать дальше →
Всего голосов 39: ↑35 и ↓4+31
Комментарии23

PHPUnit && ordered tests

Время на прочтение6 мин
Количество просмотров5.8K
Все программисты ленивые. И каждый хочет не писать дополнительный код, а воспользоваться уже готовым. Тем более, что это хорошая практика.

Вот и у меня появилась задачка, при которой хотелось не делать copy-paste, а запустить на выполнение несколько тестов. Но, каждый следующий тест зависел от данных предыдущего, и так далее, и так далее… В итоге, мне требовалась строгая последовательность выполнения тестов и умение реагировать на зависимости. Какое решение получилось, смотрите под катом…
Читать дальше →
Всего голосов 27: ↑19 и ↓8+11
Комментарии30

Поиграем в CacheGraph?

Время на прочтение3 мин
Количество просмотров689
imageПредположим у Вас есть сайт. Предположим вы его оптимизировали по самое «немогу», но всеравно хочеться больше.
Лично мне хотелось, но долгое время не получалось.
Когда я победил тормознутость базы кэшированием запросов, тормознутость блоков — кэшированием блоков, а целые страницы кэшировать я не мог…
Cайт конечно стал работать много быстрее, но начал тормозить уже… мемкэшед?
Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии24

«Spirit»: Node.js MVC Framework

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

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

Предупреждаю сразу, что статья — огромна, с кучей текста и большими блоками кода.

Читать дальше →
Всего голосов 77: ↑65 и ↓12+53
Комментарии87

Что почитать на выходных? Рекомендуем, выпуск №4

Время на прочтение2 мин
Количество просмотров1.2K
Это подборка статей на тему веб-разработки на платформе .NET (и не только). За день перед выходными я предлагаю набор интересных ссылок, которые стоит посетить в свободные минуты на выходных, чтобы узнать что-то новое и интересное.

Вы можете следить за циклом этих советов по следующей ссылке.

Темы  номера:
  • видео-курс обучения разработке для Windows Azure из 12 видео [link];
  • Конкурс: зарегистрируй сайты — получи шанс выиграть Xbox360+Kinect [link].
WebForms:
  • ASP.NET AppDomain – что это такое и почему важно понимать как это работает? [link];
  • ASP.NET WF4 / WCF и асинхронные вызовы [link];
  • Tailspin Spyworks Tutorial — тестовый демонстрационный проект на ASP.NET [link];
  • Пример производительного решения на Windows Azure и Windows Server 2008 R2: StockTrader 5 [link];
Читать дальше →
Всего голосов 78: ↑42 и ↓36+6
Комментарии16

Самые быстрые настройки для PHP-скриптов

Время на прочтение7 мин
Количество просмотров35K
Наверное, все, кто сталкивался с разработкой более или менее серьезных приложений, знают, что выбор формата хранения настроек скрипта или приложения — достаточно ответственное дело. Конфиги должны быть легко читаемыми, легко модифицируемыми, легко переносимыми, и так далее — список можно продолжать и продолжать.

Так как серверные PHP-скрипты выполняются, бывает, много раз в секунду, скорость загрузки конфигов — достаточно важный параметр. Хотя ему, порой, уделяется не очень много внимания. Давайте сравним различные варианты хранения настроек для PHP-скриптов с точки зрения скорости их работы. Ну и коснемся вкратце их удобства.
Читать дальше →
Всего голосов 112: ↑93 и ↓19+74
Комментарии192

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

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

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

Посмотрел я существующий код, желания в себе не почувствовал для переделки, — и решил подыскать готовое решение. Сразу скажу, — я большой противник «велосипедов», прежде чем что-то написать я всегда стараюсь найти готовое и подходящее решение. Так было и на этот раз, но достаточно безуспешно. Несколько решений есть, например, в коллекции PEAR, но подходящего я не выбрал. Много кода устарело (мы используем версию PHP 5.3), поэтому было принято решение писать ACL самостоятельно.

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

AtomJS — миниатюрный JavaScript фреймворк

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

Всем привет! Вторая часть про миниатюрный javascript фреймворк Atom (бывший Nano).
Теперь из Core убрано всё лишнее, вес — 1 кб.
Как и прежде — полный отказ от устаревших браузеров.
Dom, Class, Ajax и т.п. — подключаются как плагины.
Поменялся адрес репозитария: github.com/theshock/atomjs
Под катом — расскажу, что нового и опишу, как создавать плагины
Читать дальше →
Всего голосов 62: ↑57 и ↓5+52
Комментарии75

Nano — миниатюрный JavaScript фреймворк

Время на прочтение3 мин
Количество просмотров6.2K
Привет, читатель. Есть много прекрасных и мощных JavaScript-фреймворков. JQuery, MooTools, ExtJS, и множество других. Они кроссбраузерны и громадны. И пользоваться ими — одно удовольствие.

Но иногда, бывает, хочется написать какой-нибудь небольшой скриптик на 5 килобайт и как-то совесть мучает подключать JQuery, который весит в сжатом виде 75 килобайт. И каждый раз начинаешь писать свой мини-фреймворк:
var dom = {
	id  : function (id)  { return document.getElementById(id); },
	tag : function (tag) { return document.getElementsByTagName(tag); },
};


Вроде бы, больше для начала и не надо. А потом вспоминаешь про createElement, легкий способ присвоить CSS, наследование, расширение прототип. И в общем каждый раз пишешь свой велосипед.
В этот раз я решил написать миниатюрный фреймворк, который можно было бы без зазрений совести подключать даже к самым маленьким проектам. В сжатом виде он весит всего 4 килобайта (в 20 раз меньше JQuery).
И в нём есть еще одно преимущество по сравнению со всеми современными фреймворками — полный отказ от устаревших браузеров, за счёт чего в эти 4 килобайта вместилася половина JQuery.

Итак, приветствуйте, JavaScript-фреймворк Nano

Читайте актуальную вторую часть!



Читать дальше →
Всего голосов 82: ↑72 и ↓10+62
Комментарии158

Почему пользователи ненавидят СЭД?

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

На 111ом вебинаре UX Russia мы с Андреем Сикорским обсуждаем тихий ужас, который творится в Системах Электронного Документооборота. Программисты создают абстрактные системы для абстрактного пользователя. А реальные пользователи отвечают ненавистью, которую легко понять, если посмотреть на эти системы.
Всего голосов 63: ↑56 и ↓7+49
Комментарии33

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Время на прочтение20 мин
Количество просмотров315K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

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

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Всего голосов 335: ↑318 и ↓17+301
Комментарии244

Информация

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