Как стать автором
Поиск
Написать публикацию
Обновить
117
0
Владимир Синельников @onthefly

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

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

SASS PHP extension

Время на прочтение1 мин
Количество просмотров6.4K
Недавно я наткнулся на интересную статью о Python-биндинге для libsass, в которой я узнал о существовании такой замечательной библиотеки, как libsass (реализация рубивского sass на C++). Имея опыт в написании PHP расширений, я решил сделать SASS/SCSS обработчик, используя libsass. Исходный код полученного расширения Вы можете найти тут — sass-php.
Читать дальше →

Активная защита FreeBSD на основе логов, sh и cron

Время на прочтение6 мин
Количество просмотров10K
Приветствую всех администраторов FreeBSD!

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

Задача возникла сама собой, при просмотре логов:
/var/log/exim/rejectlog
/var/log/auth.log
/var/log/apache22/httpd-error.log


в них постоянно попадала информация о неудачных попытках подобрать пароль к exim, к серверу и к веб-почте соответственно. Рано или поздно злоумышленники могут пароль подобрать, поэтому их нужно как-то остановить, например, добавив их IP-адрес в правила ipfw. А на веб-сервере еще и пытались найти несуществующие каталоги и файлы, относящиеся к администрированию, типа phpmyadmin, очевидно, чтобы проверить их на существующие уязвимости.
Читать дальше →

Node.js демон для FreeBSD: forever + rc.d

Время на прочтение3 мин
Количество просмотров10K
В процессе работы над проектом с использованием Node.js в качестве серверсайда, возникла задача запуска JS скрипта в качестве сервиса, со всем плюшками типа start, stop, restart. По этой теме в принципе уже достаточно информации, но она в основном сводится к использованию Monit + Init под линуксом, либо кратких советов типа «use nodemon, Luke».

В моём случае в качестве продакшн-сервера была машина на FreeBSD. В качестве утилиты запускающей JS файл как процесс мне приглянулся forever. Эта штука, в отличии от nodemon, умеет следить за запущенными под ней процессами и поднимать их при падении без ожидания изменения в исходниках скрипта, что очень удобно именно на продакшене. К тому же forever умеет показывать текущий список запущеных процессов, с отображением их аптайма, ну и позволяет останавливать/перезапускать процессы по имени или индексу.

Недолго думая, был написан rc.d скрипт:
Читать дальше →

Использование API Яндекс.Карт для работы с произвольными подложками

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


Что общего у трех картинок сверху? На левой — часть Санкт-Петербурга из OpenStreetMap. На центральной — карта из Lineage 2. На правой — автомобильные пробки Москвы на подложке от Google. А объединяет эти изображения новое API Яндекс.Карт, вышедшее совсем недавно.

Одной из особенностей API 2.0 является очень простая в использовании поддержка произвольных подложек. Вам не обязательно использовать карты Яндекса для своего ресурса. Никто не мешает скрестить подложку от OpenStreetMap и мощное API от Яндекса для реализации функционала карты.

Хотите показать на OpenStreetMap область доставки вашей пиццерии? Расположить на карте монстров очередной MMORPG? Отобразить Яндекс.Пробки на карте от Google? Нет ничего проще!

Заинтересовало?

PostGIS + Mapnik + TileCache во FreeBSD

Время на прочтение6 мин
Количество просмотров19K
Привет! Появилась необходимость на одном из серверов в нашей сети сделать «что-то вроде openstreetmap.org», но так, чтобы все это продолжало работать и без подключения к Интернету.
К сожалению я не нашел хорошего мануала на «Великом и Могучем» о том, как это реализовать, потому, потратив на это два дня, решил рассказать о том как мне это удалось.
Читать дальше →

HTML5 History API уже сегодня и без ограничений

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

Библиотека для работы HTML5 History API


Изначально этот проект был задуман добавить поддержку HTML5 History API в старые HTML4 браузеры. Первые версии библиотеки были нацелены именно на эти потребности, но с учетом прошедшего времени и пожеланий многоуважаемых разработчиков использующих эту библиотеку, она выросла до уровня того, что выполняет некие промежуточные действия по добавлению/исправлению того функционала что описаны в спецификациях по интерфейсу History.

На сегодняшний день библиотеку я могу смело назвать, на мой взгляд, полноценно законченной. Конечно же, ошибкам в работе библиотеки думаю, место будет, тестировалась библиотека мною в разных условиях и браузерах, но как вы понимаете, все не уловишь, да что-то упустишь. И так давайте приступим к описанию возможностей и тонкостей библиотеки.
Читать дальше →

PHP модуль для Tarantool

Время на прочтение6 мин
Количество просмотров6.9K
imageTarantool это разработка компании Mail.ru. Представляет высокопроизводительное key/value no-Sql решение.Отсутствие портов для популярных языков программирования сдерживает популярность данной БД. Попытался восполнить данный пробел.
Ветка экспериментальная. Исходники
Далее примеры.
Читать дальше →

Знакомство с Parallax Scrolling

Время на прочтение4 мин
Количество просмотров292K
Любой, кто играл или наблюдал за игрой друзей, либо в принципе видел игры, которые были выпущены в 80-90-х годах, должны быть знакомы с техникой параллакс-скроллинга.

Вспомните такие игры, как Mario Bros, Streets of Rage, Mortal Kombat, Turtles in Time или оригинальную игру Moon Patrol. В этих играх техника параллакса наблюдается в тот момент, когда несколько фоновых слоев с различными текстурами двигаются с разной скоростью, что создает эффект трехмерного пространства.

Почему я начал говорить о ретро-играх в статье о веб-разработке? Самым простым ответом мог бы быть «потому что они клевые», но нет. Параллакс-скроллинг является классным дизайнерским концептом, который прокладывает свой путь в мир веб-дизайна. Nike были одними из первых, кто использовал эту технику с большим успехом, когда они наняли маркетинговых гигантов Weiden and Kennedy для разработки их оригинального сайта Nike Better World. Сайт Nike Better World с того времени был обновлен и заменен на новый, однако есть другой сайт, довольно похожий на то, как выглядел первый параллакс-дизайн от Nike — сайт о спортивных напитках Activate.


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

HTML-атрибуты data-* для хранения параметров и получения их в js

Время на прочтение3 мин
Количество просмотров305K
В HTML 5 были введены такие атрибуты тегов, как data-*.
Про них вы наверняка слышали или видели в разных проектах.
Например, их используют такие модные товарищи, как Twitter Bootstrap и jQuery Mobile.

Раньше использовали классы, ради сохранения информации в HTML, с целью последующего использования в js.

Например, для сохранения уникального номера блока часто пишут так:

<div class="items">
  <div class="item1">...</div>
  <div class="item3">...</div>
  <div class="item6">...</div>
  <div class="item1">...</div>
  ...
</div>


А если нам нужно добавить еще один класс для каждого элемента? Или модификатор для отдельных? Да, конечно, можно обрезать регуляркой или другим костыликом на ваш вкус.

Как может показаться, тут можно задействовать id, но у нас могут быть блоки с одинаковым номером.

Иногда используют атрибут ‘rel’, но его можно использовать только для ссылок, хотя я видел и у других элементов. И опять же недостаток — мы можем записать в него только одно значение.

И вот нам на помощь спешат Чип и Дейл атрибуты data-*.
Читать дальше →

JavaScript. Оптимизация: опыт, проверенный временем

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

Предисловие


Давно хотел написать. Мысли есть, желание есть, времени нету… Но вот нашлось, так что привет, Хабра.
Здесь я собрал все идеи, которые помогали и помогают в разработке веб-приложений. Для удобства я разбил их на группы:
  1. Память
  2. Оптимизация операций
  3. Выделение критических участков
  4. Циклы и объектные свойства
  5. Немножко о DOM
  6. DocumentFragment как промежуточный буфер
  7. О преобразованиях в объекты
  8. Разбитие кода
  9. События перетаскивания
  10. Другие советы

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

Память

Хоть это и не должно волновать клиентского программиста, но не забываем, что память всё-таки не бесконечна и когда-нибудь может закончиться, например, когда запущено несколько массивных программ: офис, графический редактор, компиляция большой программы и др. Несмотря на то, что приведенный пример тривиален, у меня действительно такое случилось, хоть и не из-за браузера, но он тоже сыграл свою роль: 1,3 Гб оперативы (отладчик, около 30 вкладок), начались тормоза по перегрузке страниц ОП в файл подкачки.
Чтобы уменьшить расход памяти, я предлагаю несколько способов:
Читать дальше →

Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?

Время на прочтение24 мин
Количество просмотров33K
Доклад «Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?» — очередной в серии расшифровок с Форума Технологий Mail.Ru 2011. Подробности о том, как работает система расшифровки докладов — см. в статье «Изнанка» Форума технологий Mail.Ru: Хай-тек в event-management. Там же, а также на сайте Форума (http://techforum.mail.ru) — ссылки на расшифровки других докладов.


(Скачать видеоверсию для мобильных устройств — iOS/Android H.264 480×368, размер 170 Mb, видеобитрейт 500 кбит/с, аудио — 64 кбит/с )


(Скачать видеоверсию большего разрешения H.264 624×480, размер 610 Mb, видеобитрейт 1500 кбит/с, аудио — 128 кбит)


(Скачать слайды презентации, 520К)



Представлять данного докладчика тяжело, потому что его все знают. Каждый из вас, я уверен, пользуется продуктами, к которым Костя приложил руку. Это, в первую очередь, MySQL. Костя на протяжении многих лет занимался разработкой этой популярной базы данных, которую используют если не 100%, то 90% российских сайтов точно. Сегодня Костя работает в компании Mail.Ru Group. Костя нам сегодня расскажет о том, что мы сделали, как это работает и главное — какую производительность это позволит получить на ваших сервисах.





Добрый день. Вас сегодня очень много. Cпасибо, что пришли! Меня уже представили, поэтому я бы только хотел добавить, что я в душе и по делу все-таки инженер. Я, скорее, не руковожу, а активно участвую в разработке Tarantool, поэтому, если вам это интересно, у вас сегодня есть возможность узнать про него абсолютно всё. Так или иначе, этот доклад, помимо философствования на тему будущего СУБД, о Tarantool.

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

Полиция Германии разослала 440 тыс. скрытых SMS для слежки за гражданами

Время на прочтение1 мин
Количество просмотров10K
На недавней конференции Chaos Communication Congress (27-30 декабря) известный криптолог и специалист по безопасности GSM-сетей Карстен Нол (Karsten Nohl) из компании Security Research Labs представил любопытную презентацию "Defending mobile phones", посвящённую методам перехвата данных в сетях GSM, а также способам обнаружения и защиты от подобных действий со стороны пользователя.

Напомним, что именно Карстен Нол в 2009 году публично продемонстрировал способ взлома 64-битного алгоритма A5/1, который используется во всех системах мобильной связи GSM, а также опубликовал полную информацию по этому делу. В 2010 году он показал готовое end-to-end решение для GSM-прослушки с помощью телефона за $15 и open source программы Osmocom.

Сейчас Карстен Нол не удивил нас ничем революционным, а просто подробно рассказал о том, какие конкретно методы для мошенничества и слежки сейчас применяют представители криминального мира и правоохранительные органы. Например, власти Германии с 2006 года используют фальшивые базовые станции GSM для «пинга» телефонов, чьи владельцы находятся под наблюдением. Только в 2010 году три правоохранительные структуры Германии разослали 440783 «скрытых» SMS-сообщения. За неполный 2011 год (федеральный отчёт содержит цифры до 31 октября 2011 г.) — немногим меньше.
Читать дальше →

Оптимизация скорости мобильных сайтов

Время на прочтение8 мин
Количество просмотров10K
Вместе с ростом мобильного интернета растёт и необходимость оптимизации скорости работы мобильных сайтов. Даже самые современные смартфоны на Android, iOS, WebOS, BlackBerry OS и др. обладают процессорами с частотой не более 1Ghz, а скорости 3G можно считать достаточно медленными (скорость загрузки в 3 раза меньше DSL).

Мобильные устройства унаследовали проблемы “больших” машин: от количества http-запросов до эффективности работы JavaScript.

Особенности мобильных устройств


Кроме того, что они часто помещаются в карман и их легче потерять, существует несколько ключевых отличий мобильных устройств по отношению к десктопам:
  • маленькое разрешение экрана;
  • медленные соединения;
  • ограниченный размер кэша;
  • много различных устройств и форм-факторов;
  • низкая мощность процессоров;
  • широкая поддержка HTML5;
  • относительно новые браузеры (в этом мире не знают о IE6).

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

Делаем простенький web-сервис с помощью API Яндекс.Метрики

Время на прочтение9 мин
Количество просмотров41K
Всем привет!

Не так давно Яндекс открыл для использования API Яндекс.Метрики. В этой статье я расскажу для чего оно нужно, как им пользоваться и кратко опишу отличия от API Google Analytics.

Кроме того, я покажу, как с помощью этого API сделать web-сервис, в котором можно сравнить текущие показатели сайта с прошлым и посмотреть, как со временем менялась популярность страниц:


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

Кто такой «организатор концерта»?

Время на прочтение10 мин
Количество просмотров20K
Время от времени блогосферу сотрясают однотипные мини-скандалы с участием Российского авторского общества. Вызываются они тем, что в очередной раз это «общество» требует на организаторов какого-нибудь концерта «авторские отчисления». Нарицательной стала история с группой «Deep Purple», которая одной из первых фигурировала в такого рода делах. Были еще самарские ветераны, исполнявшие военные песни, а также многие другие. Последним случаем стало сообщение о претензиях к группам «Любэ» и «Scorpions».

РАО, которое в последнее время пристально следит за тем, что о нем пишут в Интернете, оперативно публикует на своем сайте пресс-релизы для «представителей различных СМИ и блогосферы», посвященные таким инцидентам. Например, про «Любэ» и «Scorpions» там есть аж три сообщения: общий пресс-релиз, позиции немецкого общества GEMA и продюсерского центра Игоря Матвиенко. Сайт этот непопулярен и сообщения эти мало кто читал. Но этого можно и не делать: позиция РАО по таким конфиликтам всегда одна и та же. Сводится она к тому, что запрещать артисту петь свои (или чьи-либо еще) песни никто и не думал: платить авторские отчисления, якобы, должен организатор концерта, к которому и направлены претензии РАО…

Готовьтесь, под катом длинная, но достаточно интересная статья
Читать дальше →

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Время на прочтение16 мин
Количество просмотров40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...

Apache 2 под наблюдением. Мониторинг загрузки системы веб-сервером

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

Apache 2 под наблюдением



Вступление


Уже написано немало постов на просторах интернета, о мониторинге веб-сервера Apache. При вводе такой фразы, как «мониторинг нагрузки apache» в строке поиска Google, результаты поиска указывают на полезнейший модуль mod_status. А также о еще большей полезности этого модуля в сочетании с perl-расширениями. А если еще и немного пропатчить эти perl-расширения — то вообще супер система получается. Но настроив такую систему — системный администратор на этом, как правило, не останавливается, ему уже необходимо история нагрузки по серверу в целом, потом по каждому хосту, а далее и с точностью до скрипта. И чтоб потом сравнить можно было, а как раньше было, а как теперь нагрузка распределяется.
И вот здесь на помощь может прийти модуль для веб-сервера Apache — mod_performance.
Читать дальше →

Пишем одностраничный клиент на javascript

Время на прочтение5 мин
Количество просмотров48K
Данная статья является вольным переводом. Оригинал тут.

Введение


Думаю, ни для кого не секрет, что клиентские приложения в современных веб-сервисах становится все сложнее и количество JS кода в них растет. До недавнего времени архитектура клиентской части, как правило, разрабатывалась с нуля и была специфична для каждого проекта. Не удивительно что приходилось снова и снова сталкиваться с типичными задачами.
К MVC-фреймворкам на серверной стороне все уже привыкли, но JS код на клиенте часто бывает плохо структурирован.

Предлагаю ознакомиться с решением на базе backbone.js, underscore.js и jQuery, которое поможет решить эту проблему.

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


Каким бы мы хотели видеть наше приложение? Вот основные моменты, которые мне кажутся важными:
  1. Должен быть удобный способ описать модели нашей предметной области.
  2. Любые изменения в модели должны немедленно отражаться в пользовательском интерфейсе, если модель в нем представлена каким-либо образом.
  3. Понятная и легко-поддерживаемая структуризация кода в стиле MVC.


Попробуем решить эти задачи на примере простого приложения «Каталог фильмов».
Поехали!

Google начинает учитывать в выдаче мета-теги rel="author" и rel="me"

Время на прочтение2 мин
Количество просмотров9.9K
С 7 июня Google начал учитывать в поисковой выдаче авторский мета-тег HTML5 (rel="author") со ссылкой на личный профиль автора.

Written by <a rel="author" href="../authors/mattcutts">Matt Cutts</a>

По правилам использования авторских мета-тегов личная страница автора обязательно должна располагаться на том же домене, что и авторский текст. Для связывания страниц на разных доменах с одним автором используются взаимные ссылки с пометкой XFN (rel="me"). Если на Хабре стоит ссылка на личную страницу автора,

<a rel="me" href="http://mattcutts.com">Read more about Matt</a>

то на домене mattcutts.com должна быть обратная ссылка на Хабр:

Matt has also written <a rel="me" href="http://mattcutts.habrahabr.ru/blog/">lots of articles for the Habrahabr</a>.
Читать дальше →

Появилась «Leaflet» — новая open source JavaScript-библиотека для любых карт

Время на прочтение1 мин
Количество просмотров5.8K
13 мая компания CloudMade (со-основатель компании — основатель OpenStreetMap Стив Кост) объявила о новой open source JavaScript-библиотеке для любых карт под названием Leaflet.

Как написал Mourner (он же на Хабре — Mourner), автор этой библиотеки, живущий в Киеве (кстати, он будет рад услышать отзывы и ответить на ваши вопросы на форуме OpenStreetMap и здесь на Хабрахабре):

«Leaflet задумана как библиотека, одинаково хорошо работающая и на десктопных браузерах, и на мобильных устройствах (iPhone/iPad, Android) — очень быстрая, легковесная, с простым API, красивым и понятным ООП-кодом. В отличии от OpenLayers (самого популярного выбора на сегодняшний день) мы не пытаемся впихнуть в нее все фичи, о которых только можно помыслить, раздувая код до немыслимых размеров — только самое основное, минимальный набор, который удовлетворяет нужды 99% применений карт в онлайне (тайлы, маркеры, векторы, попапы), но реализовывая их максимально лучшим образом.»
Читать дальше →

Информация

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