Search
Write a publication
Pull to refresh
124
0
Михаил Стадник @Mikhus

Software Engineer

Send message

Rejector.ru — русский OpenDNS

Reading time3 min
Views4.6K
Статья размещена по просьбе LMik. Если у вас возникнут какие-либо вопросы, он на них с радостью ответит.

image
В свете последних событий, а именно запуске Google DNS, вспомнился заброшенный «до лучших времен» проект, задуманный примерно год назад. Вдохновлен он был идеей зарубежного сервиса OpenDNS.

Представляю вашему вниманию «Реджектор» — http://rejector.ru.

Это умный DNS сервис, имеющий ряд расширенных, настраиваемых возможностей. Цель его — помочь вам без особых усилий настроить фильтрацию и защиту вашего трафика, ускорить время отклика сайтов и облегчить доступ в интернет для не опытных пользователей.
Мы, конечно, не Google, и возможностей получить IP, запоминаемые с первого взгляда, не можем, но в наших силах предоставить своим пользователям определенные сервисы:

— фильтры по категориям;
— личные списки доступа (черный и белый);
— закладки или короткие имена;
— коррекция неправильного ввода адресов;
— фильтрация фишинговых доменов;
— статистика всех сделанных запросов;
— а также сервисы на основе DNS, которые вы сможете придумать и сообщить нам.

Опишу каждый в отдельности

Делаем красивый список с GroupingStore/View и ExtJS

Reading time11 min
Views6.2K
Сегодня мы поговорим, как сделать на базе ExtJS красивый (и функциональный) список каких-либо данных, например, список пользователей или групп. Я применяю такой список в одном из текущих проектов (правда, там уже не настолько красивый и удобный) Такой виджет можно использовать при выводе любых данных, которые характеризуются не только тестовой строкой, но и расширенными данными, а также необходимо сопоставить какие-то действия каждому набору. Допускается динамическое обновление данных (через Store), а также сортировка и группирование — в общем, все возможности, предоставляемые компонентом Grid из ExtJS. Сразу скажу, что я буду использовать версию ExtJS 3.0, но и в предыдущем релизе, 2.3.х пример также должен быть работоспособным. Приведенный компонент является примером и никак не готовым для использование кодом, а лишь демонстрацией возможностей, вы в своих проектах можете как угодно менять и дорабатывать под свои возможности. По этой же причине к статье намеренно нет исходного кода.
читать дальше

XSS глазами злоумышленника

Reading time4 min
Views266K
Что такое XSS и как от него защитится все уже давно знают, поэтому буду краток. XSS это возможность злоумышленника определенным образом (ссылку на возможные варианты смотрите в конце статьи) интегрировать в страницу сайта-жертвы скрипт, который будет выполнен при ее посещении.

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

http://www.site.com/page.php?var=<script>alert('xss');</script>


Как-то не очень страшно :) Чем же действительно может быть опасной данная уязвимость?
Читать дальше →

Fly AJAX — пишите меньше, имейте больше. Нестандартный AJAX и индексация поисковиками.

Reading time4 min
Views5.2K

Обсуждение предыдущей статьи было бурным. Самые ярые любители jQuery, Mootools кричали зачем мол нужен другой велосипед.
В данной статье мы рассмотрим использование техники Fly AJAX. Это одна из нескольких функциональных возможностей, которые не реализованы в ранее указанных больших (и мною уважаемых) фреймворках. Также, в данной статье, мы рассмотрим принципы правильного проектирования и построения сайтов для хорошей индексации с применением AJAX технологии.
Читать дальше →

Идеальный шторм. Постмортем неанонсированного проекта.

Reading time8 min
Views2.7K
Сегодня мы шли с Вовчегом, нашим гуру гейм-дизайнером, брать ему кредит на покупку квартиры и обсуждали наш текущий проект.

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



Проект длится 8-ой месяц, будет длиться со всеми многочисленными платформами еще 2-3 месяца. При этом мы сейчас четко видим, какие именно ошибки стоили компании 2-3 месяца разработки и десятки тысяч долларов (надеюсь, что счет на сотни тысяч не пойдет).

КОМАНДА

Главная ошибка в управлении моя — это ошибка выбора команды:
— Ставка на молодую команду, которая так и не смогла, по сути, «развернуться» на этом очень сложном во всех аспектах проекте.
— Связка молодой PM + опытный PMA, которая провалилась сразу. Мне показалось, что я смогу реализовать то, что, мне тогда казалось, работало в Нивале.
— Мы фатально ошиблись с оценкой сложности задачи по гейм-дизайну, что привело к тому, что связка дизайнер-программист оказалась удаленной, что почти катастрофа для проекта нашей сложности.

Мне потребовалось целых 2 месяца, чтобы осознать, насколько плоха ситуация, меня только совсем чуть-чуть оправдывает, что из этих 2 месяцев 2 недели я был в отпуске в тёплом месте. То, что я увидел после отпуска, было катастрофой. Я понял, _насколько_ категорически и масштабно я облажался. Кажется, еще никогда раньше я не ошибался ТАК круто.

Читать дальше →

JS Charts — генератор графиков и схем.

Reading time1 min
Views16K
image
JS Charts является бесплатным JavaScript-генератором графиков и схем, который требует минимум знаний программирования. С JS Charts рисование диаграмм становится простой и легкой задачей. Он не требует никаких дополнительных плагинов и серверных модулей. Просто подключите скрипты, подготовьте данные для схемы в XML или массиве JavaScript и ваша таблица готова.
Читать дальше →

Декоративные и значимые элементы в дизайне интерфейсов

Reading time3 min
Views1.3K
Перевод статьи "Distinguishing decorative from meaningful elements in UI design".

Как дизайнеры интерфейсов мы хотим, чтобы наши работы хорошо выглядели и были понятными. Каждый элемент на экране должен ласкать взор, и в то же время, интерфейсы — это не просто объекты. Они должны работать. Интерфейсы должны представлять информацию и ясно указывать возможные направления действий. Эти две стороны — сексапильность и функциональность, привлекательность и простота, оформление и значимость — они часто сосуществуют у опытного дизайнера. Но по-прежнему существует опасность конфликта между тем, как это по нашему мнению должно выглядеть и тем, как это будет воспринято пользователем (им бы только о клиентах (customers), нет чтобы о людях подумать… — мысль вслух пер.). Недавно я обратил внимание на такого рода противоречие между оформлением и значением на сервисе GitHub.

Читать дальше →

Обновление ExtJS и другие… приятности

Reading time3 min
Views1.9K
logoСлучайно заглянув на сайт ExtJS, с удивлением увидел, что версия этой замечательной библиотеки обновилась, более того, появился столь ожидаемый анонс следующей, 3 версии. Но обо всем по порядку. Текущий релиз ExtJS обновился до версии 2.2.1. Это, с одной стороны, достаточно незначительное изменение, даже не под-версии, но если внимательнее присмотреться, обнаружится достаточно интересные вещи. Полный список изменений здесь.

Читать дальше →

Классы типов, монады

Reading time15 min
Views14K
Темой сегодняшней статьи будут классы типов, некоторые стандартные из них, синтаксический сахар с их использованием и класс монад.
Классы привносят динамический полиморфизм, как и интерфейсы в традиционных императивных языках, а также могут быть использованы как замены отсутствующей в Хаскеле перегрузки функций.
Я расскажу, как определить класс типов, его экземпляры (instance) и как это всё устроено внутри.

Предыдущие статьи:
Типы данных, паттернг матчинг и функции
Основы
Читать дальше →

Кроссбраузерная одноцветная полупрозрачность

Reading time3 min
Views13K
В этой статье я рассмотрю метод создания блоков с одноцветным полупрозрачным фоном.
Например, таких:


Сразу оговорюсь, что я не буду использовать opacity и абсолютное позиционирование, чтобы разместить контент поверх полупрозрачного блока.
Читать дальше →

C++ MythBusters. Миф о подставляемых функциях

Reading time5 min
Views37K
Здравствуйте.

Благодаря вот этому голосованию выяснилось, что на Хабре не хватает статей по такому мощному, но всё менее используемому языку C++. Профессионалам высокого уровня, гуру, магам и волшебникам языка C++, а также тем, кто уже успел оставить этот язык «позади» можно дальше не читать. Сегодня я хочу начать цикл статей, призванных помочь именно новичкам, относительно недавно начавшим изучать этот язык, либо же тем, кто (упаси Боже) читает мало книг, а пытается познавать всё исключительно на практике.

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

Читать дальше

Пример доски объявлений на Kohana

Reading time22 min
Views16K

Kohana — довольно молодой PHP фреймворк, форк CI, всецело завязанный на ООП. К достоинствам Kohana можно отнести использование всех возможностей PHP5 на 100%, высокую скорость работы, «легковесность» и простоту как использования, так и изучения. Из минусов отчетливо выделяется небольшое комьюнити, как следствие, не шибко качественная документация и небольшое количество модулей и библиотек.

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

Под катом пример доски объявлений, написанный с помощью Kohana, возможно местами он не претендует на рациональность и здравый смысл, но всё-же я надеюсь услышать конструктивную критику.

Статья рассчитана на людей, имеющих понятие об MVC и ООП, но не имевших, либо мало имевших, дело с фреймворками.

Итак, приступим...

Организуем релевантный поиск по разнородным данным с помощью Sphinx

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

Постановка задачи


В проекте есть на данный момент 2 зоны:
  1. географическая зона, реализованная на базе Google Maps, которая отображает нанесенные пользователями на карту географические объекты (маркеры, маршруты и области);
  2. информационная зона, которая представляет собой большой иерархически организованный каталог, содержащий информационные материалы.
Необходимо было решить задачу одновременного текстового поиска по 3-м типам объектов: географическим объектам, категориям информационной зоны и материалам информационной зоны — c возможностью фильтрации по дате публикации объектов и категориям, к которым они относятся.
Решаем задачу

Поиграем в CacheGraph?

Reading time3 min
Views698
imageПредположим у Вас есть сайт. Предположим вы его оптимизировали по самое «немогу», но всеравно хочеться больше.
Лично мне хотелось, но долгое время не получалось.
Когда я победил тормознутость базы кэшированием запросов, тормознутость блоков — кэшированием блоков, а целые страницы кэшировать я не мог…
Cайт конечно стал работать много быстрее, но начал тормозить уже… мемкэшед?
Читать дальше →

Про правильную посадку в кресле

Reading time5 min
Views76K
Навеяно постами про подлокотники. Это сборник разных советов, которые я потихонечку собирал в записную книжку, когда впервые столкнулся с проблемами, которые может вызвать неправильная посадка в компьютерном/водительском кресле и дополнял собственным опытом и знаниями.

Что есть правильная посадка в кресле?

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

Пара слов о физиологии: главная задача вашего организма — это обеспечение подвижности и работоспособности «здесь и сейчас». Почти всегда — с жертвами в будущем. Что же происходит, когда мы сидим в кресле? Современный офисный человек физически плохо развит (это правда), поэтому долгая напряженная поза (голова вытянута вперед, глаза вглядываются в монитор, спина скруглена и перекошена вбок, потому что одна рука лежит безвольно, а вторая активно шевелит мышкой) приводит к тому, что его спинные мышцы не могут удерживать правильное положение позвоночника больше чем полтора-два часа — они просто расслабляются и отпускают связочно-суставный аппарат. Чтобы не произошло травмы — организм включает экстренный режим сохранения подвижности и перераспределяет вертикальную нагрузку так, чтобы компенсировать ее изгибом самого позвоночника и натяжение связок и мелких мышц.

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

Решение — правильная поза. Как ее достичь? Причем совершенно штатными средствами, без адских подлокотников или кресел за полторы тысячи евро?

Читать дальше →

Плагин для работы с SVG на Jquery

Reading time1 min
Views5.3K
Читал про недавно вышедшею библиотеку для работы с SVG — Raphaël (хабратопики habrahabr.ru/blogs/webdev/41647 и habrahabr.ru/blogs/svg/42949). Где было указано, цитирую: «Так что связка Raphaël + jQuery будет давать огромные возможности для разработки».

Однако в библиотеке плагинов на Jquery я недавно нашел готовую разработку для работы с SVG (страница плагина).

Данный плагин не только позволяет строить графику, но и анимировать ее средствами самого плагина.
Примеров работы очень много, так что советую посетить сам сайт плагина.

Автор плагина Keith Wood. На его сайте, есть еще много чего интересного.

Оригинальный способ хранения изображений флагов

Reading time1 min
Views3.6K
Поставил сегодня я новую бета версию Skype и заодно решил посмотреть старым добрым Restorator'ом какие ресурсы (картинки в частности) содержит 25 мегабайтный файл. И наткнулся на очень интересный способ хранения флагов стран:


Upd: Рисунок оригинальный, ничего не менял, только прозрачные области белым цветом залил.

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity