Как стать автором
Обновить
58
0
dirtyHabrBobr @dirtyHabrBobr

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

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

Исследуем JavaScript Generators

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


Когда я начинал писать на node.js, я ненавидел две вещи: все популярные шаблонизаторы и огромное количество callbacks. Я добровольно использовал callbacks, потому что понимал всю силу событийно-ориентированных серверов, но с тех пор в JavaScript появились генераторы, и я с нетерпением жду день, когда они будут имплементированы.

И вот этот день наступает. На сегодня генераторы доступны в V8 и SpiderMonkey, имплементация следует за обновлениями спецификации — это заря новой эры!
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии17

Записи докладов с конференций по высоким нагрузкам HPC

Время на прочтение1 мин
Количество просмотров17K
Записи с последней конференции HPC — High Performance Conference, состоявшейся 6 декабря 2012, никак не анонсировались, хотя заслуживают внимания.

Под катом видеозаписи следующих докладов:

  1. Практические вопросы использования NOSQL в высоконагруженном проекте
    Дмитрий Ананьев, Руководитель группы разработки новых сервисов, Мамба
  2. Как работает «умная живая миграция» в Jelastic
  3. Дмитрий Лазаренко, Директор R&D, Jelastic Russia
  4. Parallels Cloud Server как платформа для высокопроизводительных систем
    Дмитрий Мишин, Team-lead отдела серверной виртуализации, Parallels
  5. Облачная платформа Windows Azure для высоконагруженных проектов
    Владимир Юнев, Technical evangelist, DPE, Microsoft Russia


и одно видео с фестиваля профессионального развития BitByte:

  1. Badoo Desktop: оптимизация приложения на миллион юзеров
    Руководитель проекта десктопных приложений компании Badoo.



Читать дальше →
Всего голосов 53: ↑46 и ↓7+39
Комментарии10

Анализ логов в реальном времени

Время на прочтение8 мин
Количество просмотров72K
Современные системы мониторинга “из коробки” позволяют отслеживать практически все показатели отдельного узла системы, но обладают рядом существенных недостатков
  • зная все об одном узле, о работе системы в целом они не имеют никакого представления — попробуйте из коробки выдать руководству “в данный момент у нас 1200RPS на фронте, 90% страниц отдается за 300мс, 95% за 650мc, системных ошибок и таймаутов происходит меньше 10 в секунду” (см картинку под катом)
  • выход за рамки одного из системных показателей одного из узлов системы еще не значит, что стоит бить тревогу — возможно узел попал под повышенную нагрузку, или разработчики сменили алгоритм
  • в рамках мониторинга отдельных узлов практически невозможно уследить постепенную деградацию сервиса — как правило он срабатывает только когда уже “ничего не работает”
  • деградация производительности внешних сервисов не отслеживается в принципе (вас никогда не банил CDN?)


На исходной у нашей площадки более 1.000.000 уников, ~100.000.000 http запросов на фронтенд в сутки и развесистый, в плане сопровождения, зоопарк проектов. Набор ключевых слов — nginx, apache, php (двух вариаций), oracle. С заядлой периодичностью возникают ситуации “у нас все работает” по отдельно взятым зонам ответственности либо, что тоже не редкость, “у вас ничего не работает”. На границах ответственности идет сплошная передача тикетов.
Мы не стали изобретать велосипед и решили сделать мониторинг по времени и корректности отклика пользователю с отслеживанием отклика бекендов, а также какие из них были задействованы при обработке конкретного запроса. Ну и плюс наши объемы — не сильно большие, но несколько граблей по ходу изложения можно продемонстрировать.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии17

Мониторинг производительности PHP-кода с помощью Pinba

Время на прочтение15 мин
Количество просмотров41K
Давайте представим себе типичный, набирающий популярность стартап, использующий, например, PHP или Python. Сначала все находится на одном сервере — PHP (или Python), Apache, MySQL. Затем вы выносите MySQL на отдельный сервер, устанавливаете nginx для раздачи контента, возможно, добавляете memcached для кеширования и еще несколько серверов приложений…

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

Чтобы получить ответы на эти вопросы, в Badoo был разработан сервиc мониторинга и статистики в реальном времени — Pinba. В данной статье мы расскажем о нашем опыте использования его для мониторинга и профайлинга нашей системы.
Читать дальше →
Всего голосов 92: ↑88 и ↓4+84
Комментарии63

Шаблоны проектирования: нарушать правила иногда бывает полезно

Время на прочтение11 мин
Количество просмотров7.5K
Это перевод оригинальной статьи Design Patterns: When Breaking The Rules Is OK

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

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

Это наводит на размышления об истории и предназначении шаблонов проектирования, а также о том, когда их следует применять, а когда — нет. А что если в каких-то случаях изменение шаблона ради достижения иного или лучшего результата может оказаться правильным решением? Разумеется, мы сразу замечаем, когда какой-либо шаблон используется неправильно. Но, возможно, в некоторых ситуациях это действительно уместно? Чтобы найти ответ на этот вопрос, давайте начнем с самого начала.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии9

HTML5 Canvas Map — реализация картографического движка

Время на прочтение3 мин
Количество просмотров19K
В рамках большого интерактивного веб-ориентированного проекта (подробнее о котором возможно в другом посте) я занимаюсь разработкой картографического движка, реализованного на HTML5 CANVAS. Его разработка дошла до стадии беты и, с одобрения моего руководства, появилось желание продемонстрировать данные карты широкой публике.

image
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии54

Новый инструмент перевода документации PHP: edit.php.net

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

Инструмент: edit.php.net


В этом году Yannick Torrès (yannick) создал удобный web-инструмент для перевода документации PHP. edit.php.net позволяет каждому легко и быстро переводить любую страницу.
Читать дальше →
Всего голосов 51: ↑47 и ↓4+43
Комментарии23

Flash в открытую объявил о своей дружбе с обычной телефонией!

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

Анонсировано первое свободное RTMP решение для VoIP с открытым исходным кодом!


http://ru.wikipedia.org/wiki/RTMP

Команда разработчиков FreeSWITCH сообщает о выходе официального релиза mod_rtmp – первого свободного решения для VoIP с открытым исходным кодом, и выражает благодарность компании Barracuda Networks, которая позволила выпустить модуль под лицензией MPL, т. е. под той же лицензией что и FreeSWITCH.

RTMP (Real Time Messaging Protocol ) – протокол обмена мгновенными сообщениями в режиме реального времени, изначально был разработан компанией Macromedia, что позволило передавать потоковое аудио и видео в вездесущем Flash-плеере. После того, как компания Adobe приобрела Macromedia, первая анонсировала релиз спецификации RTMP, что позволило сторонним разработчикам заняться программированием серверной части приложений, поддерживающих протокол RTMP, а также работать с Flash-плеером и другими RTMP-клиентами.

Программный модуль реализации протокола RTMP позволяет серверу FreeSWITCH выступать в качестве RTMP-сервера, что в результате позволяет бриджевать клиентские RTMP-потоки с SIP каналами и телефонными линиями с канальной коммутацией (TDM), ровно как и осуществлять конференц-связь между ними.

В данный момент модуль mod_rtmp поддерживает speex голосовой кодек.

Одним из прикладных применений этой технологии является осуществление web-клиентом вызова непосредственно из браузера! Web-страница компании может обнаружить, установлен ли Flash у клиента, и предложить посетителю нажать специальную кнопку для связи с представителем компании.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии14

Как не надо разрабатывать на Zend Framework

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

Здравствуйте! На днях подвернулась работа — дописать сайт на zend framework. Программист, который начал разрабатывать этот проект не успевал в сроки, не выполнял требования заказчика и в итоге его заменили. Открыв первый раз исходный код я ужаснулся от того количества ошибок, которые допускал разработчик и ведь он утверждал заказчику что является опытным специалистом. Далее я попытаюсь рассказать про некоторые ошибки, которые были им допущены. Данный материал будет полезен начинающим ZF-программистам, в качестве инструкции того как делать нельзя
Читать дальше →
Всего голосов 98: ↑76 и ↓22+54
Комментарии75

100-500-ый Хостинг Картинок. Зачем? Для души

Время на прочтение1 мин
Количество просмотров1.2K
Доброго времени суток, Хабравчане. Хочу представить Вашему вниманию Хостинг Картинок.

Предыстория

Началось всё полтора года назад с симпатичного домена HostingKartinok.com приобретённого для личного использования (дабы мои скриншоты жили ровно столько, сколько мне они нужны и не были окружены «блекджеком и шл…ами» назойливой рекламой).



Если двое делают одно и то же, это не одно и то же

Дальше появился спортивный интерес, и мысль – «чем я хуже конкурентов?». Ведь уникальность стартапа часто заключается не в уникальности идей, а в уникальном подходе к ее реализации.
Пробежавшись по десятку других хранилищ для картинок – я понял, что уже сейчас смело, могу с ними конкурировать, благо технические ресурсы позволяют.
Читать дальше →
Всего голосов 128: ↑88 и ↓40+48
Комментарии151

«Переезжаем» в офлайн: Web Storage, Application Cache и WebSQL

Время на прочтение11 мин
Количество просмотров28K
Чтобы делать приложения, которые могут работать в полностью автономном режиме, нам нужно познакомиться со следующими технологиями: HTML5 Application Cache, Web Storage и WebSQL.
Мной уже были опубликованы вводные статьи, касающиеся Web Storage и HTML5 Application Cache. Рекомендую их к прочтению если вы еще не знакомы с основными понятиями. В данной статье будут пересмотрены эти технологии, в том числе и WebSQL, и описаны варианты их совместного эффективного использования. Все эти технологии поддерживаются настольной версией браузера Opera 11.10, Opera Mobile 11, браузерами на движке WebKit (в iOS и Google Android).
Читать дальше →
Всего голосов 78: ↑75 и ↓3+72
Комментарии27

sasl:overload. Или — «не кладите в тарелку больше, чем она может вместить»

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

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

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

Как это делается?
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии20

Приложение Symfony2 в разрезе

Время на прочтение6 мин
Количество просмотров24K
Наблюдая открыв рот за виртуозным фокусником и его красивыми помощницами, многие, однако, сосредоточенны совсем на другом: как он это делает? как там все устроенно внутри?


Тоже самое происходит и при работе с фреймворками, которые все делают за нас, но хочется знать, как они это делают, и в случае необходимости иметь возможность изменить поведение. К сожалению, документация, какой бы хорошей она не была (а у Symfony 2 она уже неплоха), рассказывает, как использовать всю эту «магию», но не раскрывает всей сути.

Эта статья — попытка разобраться, как происходит инициализация приложения и что же такое «Ядро Symfony2».
Посмотреть что внутри
Всего голосов 88: ↑80 и ↓8+72
Комментарии21

Автоматизированная проверка PHP кода при комитах

Время на прочтение6 мин
Количество просмотров34K
В свое время работая в узком кругу программистов, отдельными задачами и даже проектам, мы не задумывались о проблемах связанными с текучкой кадров. Точнее думать — думали, но ни каких мер не применяли, да и в целом коллектив был сплоченный никто не уходил и никого «не уходили». С ростом внутренних проектов и корпоративных клиентов, штат начал разрастаться и казалось, что все отлично — нас больше, значит будем больше успевать и делать, но не тут то было. Мы начали тратить кучу времени на “бесполезные” обсуждения, проверки, излишние проектирование и т.д, больше всего раздражает — это проверка кода. И тут я начал думать, что “мудрые и древние” наверняка решали эти проблемы с сотнями, тысячами программистов, неужели мы не справимся? Я решил провести эксперимент, под названием “автоматизированная проверка стиля кода при комитах”. Для большинства из Вас это не новость и наверняка вы этим пользуетесь, но поделиться опытом внедрения думаю, не будет лишним.
Читать дальше →
Всего голосов 84: ↑74 и ↓10+64
Комментарии48

Искусство программирования под Unix (и не только). Часть седьмая, «правило прозрачности»

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

Правило прозрачности: проектируйте ПО сразу с учетом отладочных инструментов
Читать дальше →
Всего голосов 32: ↑26 и ↓6+20
Комментарии16

Как мы использовали SVN в сложном проекте

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


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

В качестве основы разработки была выбрана библиотека Qt, Так как до этого все проекты на предприятии велись в Delphi, мы стали первооткрывателями этого мощнейшего инструмента. До этого никто из нас не занимался разработкой коммерческих продуктов с использованием библиотеки Qt.
Читать дальше →
Всего голосов 74: ↑42 и ↓32+10
Комментарии74

Организация работы с репозиториями

Время на прочтение2 мин
Количество просмотров3K
цели:
— организация непрерывного внедрение нового функционала проекта
— связанная система исправления багов в процессе поддержки проекта
— повышение качества проекта в целом
— атомарность разработки отдельных частей проекта (модули / функции)

Для достижения описанных выше целей необходимо организовать следующую структуру веток:
release
hotfixes (необязательна)
testing
fixes (необязательна)
default
developers branches (условное название)
Читать дальше →
Всего голосов 56: ↑47 и ↓9+38
Комментарии20

Создание приложений на GTK+ с использованием среды Glade

Время на прочтение10 мин
Количество просмотров46K
Данный пост посвящен созданию приложений с использованием кроссплатформенной библиотеки GTK+. Ориентирован он в основном на новичков? поэтому какие-то вещи возможно для многих покажутся очень простыми и банальными, но я постарался максимально подробнее всё описать, чтобы было понятно для всех.

Немалым достоинством этой библиотеки является то, что она бесплатна для коммерческого использования. В интернете не так много документации и действительно качественных статей по работе с GTK+. В очень многих примерах интерфейс программы пишется «ручками», что порой очень неудобно. Я сам с этим столкнулся и довольно часто больше времени тратил на то, чтобы правильно расположить виджеты (объекты) на форме, в контейнеры, а не сосредоточиться на решении поставленной задачи.

Я продемонстрирую как можно очень быстро создать интерфейс для GTK+ с помощью приложения для визуального создания графических интерфейсов Glade и интегрировать его в вашу программу. Glade не является ни компилятором, ни отладчиком. Он позволяет лишь описать интерфейс и представить его в файлах XML-формата GladeXML.

Базовым интерфейсом для библиотеки GTK+ является язык C. Но я в данном примере буду ипользовать C++. Соответственно появятся небольшие особенности, о которых я обязательно расскажу. Дистрибутив Linux я использую Ubuntu 10.04.

Задача будет такая: написать небольшое приложение состоящее из холста, бокового меню (выбора того, что нарисовать на холсте), главного меню и строки состояния. При этом боковое меню и холст при изменении размера всего окна приложения должны оставаться постоянного размера. Но тот контейнер, в котором находится холст может изменять свой размер в зависмости от увеличения/уменьшения размеров главного окна. И при необходимости должны появляться полосы прокрутки.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии34

PHP Extension: тонкости

Время на прочтение4 мин
Количество просмотров6.4K
Публикую топик, за который получил инвайт на Хабр =)

Давно подумывал поделиться опытом разработки расширений для PHP, но все время забывал =)
Сейчас, увидев хабратопик об основах создания расширений для PHP в VS2008, решил наконец это сделать.
Поскольку основы были изложены в этом топике, я сразу перейду к более тонким моментам.

Читать дальше →
Всего голосов 46: ↑37 и ↓9+28
Комментарии16

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность