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

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

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

Реализация отправки sms-уведомлений

Время на прочтение3 мин
Количество просмотров16K
В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии44

Тюнинг nginx

Время на прочтение8 мин
Количество просмотров96K
Статья написана по материалам моего доклада на CodeCamp 2009.

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

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии69

SoapClient: параллельные асинхронные запросы, реконнект, обработка тайм-аутов

Время на прочтение3 мин
Количество просмотров8.1K
Dklab_SoapClient — это расширенная версия стандартного PHP-класса SoapClient, предназначенная для параллельного (асинхронного) удаленного вызова процедур в высоконагруженных проектах.

При помощи этой библиотеки вы можете, например, строить страницу вашего сайта из блоков, как из конструктора. Каждый блок запрашивается через SOAP отдельно и независимо от других, при этом все запросы происходят параллельно. Если один из блогов не уложился в отведенное ему время (тайм-аут), то его можно не отображать на странице.

По сравнению со встроенным в PHP SoapClient, поддерживаются дополнительные возможности:
  • Одновременное, параллельное выполнение запросов к нескольким удаленным процедурам — ключевая особенность библиотеки. Если страница на вашем сайте собирается из 5 удаленных блоков, каждый из которых генерируется по 100ms, их можно запустить параллельно и получить всю страницу целиком не за 500ms, а за те же самые 100ms.
  • Реконнект при невозможности установления связи. К сожалению, мир несовершенен, и из-за случайной потери пакетов первая попытка соединения с SOAP-сервером может закончиться тайм-аутом. Это особенно часто происходит, когда проект располагается в нескольких датацентрах. Dklab_SoapClient позволяет задать тайм-аут на время открытия соединения (например, 1 секунду) и, в случае неудачи, повторить попытку указанное число раз. На практике это снижает вероятность итогового сбоя в тысячи раз, т.к. реконнект почти всегда помогает при утере пакета.
  • Поддержка тайм-аута на получение данных. Если страница собирается из удаленных блоков, то в случае «подвисания» одного из них «зависает» и вся страница. В то же время, отсутствие одного из блоков при наличии остальных — не такая большая беда. Вы можете указать, сколько времени Dklab_SoapClient должен ждать ответа от удаленной процедуры; если время превышено, возникает исключение PHP, которое вы можете обработать по своему усмотрению, не прерывая загрузку остальных блоков.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии29

Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

Время на прочтение5 мин
Количество просмотров15K
candybar2Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции — запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум — система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии31

NetBeans и MySQL могут не пережить переезда под крышу IBM

Время на прочтение2 мин
Количество просмотров1.1K
Как известно, несколько дней назад компания IBM объявила о своём желании приобрести Sun Microsystems за весьма хорошую сумму, от которой продавцам будет тяжело отказаться. «Голубой гигант» надеется улучшить своё положение на рынке профессионального оборудования, а также готовится к противостоянию с Cisco на рынке серверов.

Но у многих независимых разработчиков планы двух IT-гигантов вызывают вполне обоснованные опасения: а не забудут ли про них, про Open Source и про их родные проекты в горячке рыночной борьбы? Ясно ведь, что никто из топ-менеджеров IBM и Sun сейчас вообще не думает, что будет с этими проектами, которые не приносят практически никакой прибыли, но при этом чрезвычайно важны для сообщества Open Source.

Сейчас на форумах разработчиков обсуждается, что компания IBM вполне может спустить на тормозах развитие среды Sun NetBeans, ведь у неё есть родной Eclipse. И действительно, зачем вообще одной компании продвигать две IDE? Особенно в нынешние тяжёлые времена. Есть мнение, что уже на второй день после официальной покупки Sun представители IBM объявят о закрытии Sun NetBeans, так же как и остальных «конкурентных» проектов. Вот пара других проектов Sun, которым грозит закрытие в случае завершения сделки:
  • GlassFish, сервер приложений (конкурент IBM WebSphere)
  • MySQL, базы данных (конкурент IBM DB/2)
Читать дальше →
Всего голосов 57: ↑48 и ↓9+39
Комментарии148

Объединение пропускной способности двух интернет каналов и простая отказоустойчивость

Время на прочтение5 мин
Количество просмотров84K
Есть у меня своя домашняя сеть, с linux сервером, и подключена она к интернет с помощью беспроводного соединения — на крыше антена и роутер, к серверу подключено витой парой. Все вобщем то неплохо, канал с гарантированой полосой в обоих направлениях, постоянный IP адрес, довольно надежный — падает редко. Но вот есть у него один минус — цена кусается.
Ценовая политика провайдера построена так, что для того, чтоб увеличить скорость в два раза — платить тоже надо в два раза больше. А скорости хочется больше! И надежности тоже — как то во время сильных заморозков роутеру стало «холодно» и интернета вечером и ночью небыло.
Поэтому задумал я провести домой второй интернет-канал, выбар пал на одного известного на Украине провайдера, предоставляющего доступ по ADSL. У него и тарифы недорогие и модем ADSL стоит недорого. Так я и сделал, подключился, воткнул ADLS модем в свич — все работает. Но от старого доброго беспроводного канала отказываться мне нехотелось, поэтому задумал я сделать так, чтоб интернет трафик шел сразу по обеим каналам, так, чтоб я мог воспользоваться суммарной пропускной способностью. Да еще и чтоб при падении одного канала всю нагрузку на себя брал другой.

Читать дальше →
Всего голосов 105: ↑100 и ↓5+95
Комментарии106

Zend Framework: подключаем OpenID

Время на прочтение8 мин
Количество просмотров2.1K
В своем проекте (Вопросы и ответы для программистов) на Zend Framework мне стало необходимо подключить OpenID и после часа работы я успешно подключил стандартный зендовский сервис. Думаю класс, как легко и удобно(как и все в зенде), но как оказалось этот сервис не работает с OpenId 2.0, да — он просто не дописан.

Немного порывшись в исходниках я это подтвердил — Consumer.php * todo OpenID 2.0 (7.3) XRI and Yadis discovery
Потом посмотрел по багтрекеру и оказалось что это весит уже давно(очень) и никто не спешит доделывать. Тогда я и начал искать альтернативу. Выбор попал на openidenabled.com/php-openid.

Далее приведу пример, который позволит тем кто еще только собирается подключать сделать это минут за 15.
Читать дальше →
Всего голосов 29: ↑24 и ↓5+19
Комментарии28

Debug Toolbar

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

Kohana Debug Toolbar

Debug Toolbar — это модуль для Коханы, который упрощает отладку приложений, написанных на этом PHP-фреймворке. Благодаря различной статистической и отладочной информации, процесс разработки становится проще и приятней для программиста.

Под катом краткая инструкция по установке, описание возможностей и ссылки на дополнительную информацию.
Читать дальше →
Всего голосов 33: ↑25 и ↓8+17
Комментарии35

Munin — мониторинг сети это просто!

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

В жизни каждого системного администратора рано или поздно наступает момент, когда глаз и рук уже не хватает уследить за всеми серверами, то там, то там возникают какие-то проблемы, а для решения их очень хочется узнать что же было «до этого». И именно здесь на выручку приходят они — вел
икие и ужасные системы мониторинга. Долгое время я пользовался Nagios, и до сих пор, при всём удобстве, иначе как монстрообразным назвать не могу. В итоге реально использовались лишь 10% возможностей этой прекрасной системы. Всё изменилось, когда я наткнулся на Munin — прекрасное решение для мониторинга небольших сетей.
Обзор системы
Всего голосов 37: ↑33 и ↓4+29
Комментарии42

Аренда сервера для стартапа

Время на прочтение2 мин
Количество просмотров26K
Недавно озадачился вопросом поиска выделенного сервера для своего стартапа. После просмотра российского рынка пришел в ужас и перевел взгляд на зарубежный, парой интересных предложений которого и хочу поделиться.

К примеру аренда четырехядерного AMD Opteron 2344 HE (1.7 GHz), 4Gb RAM, 2x250GB HDD обойдется в $100, что сравнимо с арендой порта и места в стойке под сервер у нас в стране.
Читать дальше →
Всего голосов 86: ↑80 и ↓6+74
Комментарии166

Безопасный код в Друпале: Подделка межсайтовых запросов

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


(ч2. Работа с базой данных; ч3. Работа с пользовательским вводом)

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

Итак, подделка межсайтовых запросов (анг. Сross Site Request Forgery, или, сокращенно, CSRF): что это такое и с чем его едят.

CSRF — это вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника). Для осуществления данной атаки, жертва должна быть авторизована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя.

Данный тип атак, вопреки распространённому заблуждению, появился достаточно давно: первые теоретические рассуждения появились в 1988 году, а первые уязвимости были обнаружены в 2000 году.

Одно из применений СSRF — эксплуатация пассивных XSS, обнаруженных на другом сервере. Так же возможны отправка спама от лица жертвы и изменение каких-либо настроек учётных записей на других сайтах(например, секретного вопроса для восстановления пароля).
Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии37

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

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


Сразу оговорюсь, что я не буду использовать opacity и абсолютное позиционирование, чтобы разместить контент поверх полупрозрачного блока.
Читать дальше →
Всего голосов 192: ↑186 и ↓6+180
Комментарии80

Восстановление базы MySQL из бинарных логов

Время на прочтение2 мин
Количество просмотров43K
Базы данных иногда пропадают. Человеческий фактор и всё-такое… Если вы не делали бекапов (а надо бы) или они уже устарели, не отчаивайтесь, — есть ещё возможность восстановить утерянную информацию.

Подробнее
Всего голосов 65: ↑60 и ↓5+55
Комментарии28

Демон конвертации видео в FLV

Время на прочтение3 мин
Количество просмотров3.7K
Решил поделиться недавно написанным кодом демона для видеохостинга.
Принцип демона прост. Демон смотрит в папку, куда загружаются видеофалы, и при появлении там новых, копирует в другую папку, запускает в фоне процесс конвертации, создает превьюшку, и копирует полученное видео в папку пользователя.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии31

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 1

Время на прочтение4 мин
Количество просмотров95K
Параллельно к основной работе, я в «фоне» обдумываю и прикидываю реализации архитектуры для игровых проектов (напомню, что основная область моих интересов и работ — создание онлайновых браузерных игр). Последнее время я все чаще и чаще возвращаюсь к мысли, что интересно было бы реализовать основной игровой сервер на основе очередей сообщений (MQ или Messages queue). То есть, движок такой игры будет представлять собой набор компонентов, которые будут общаться между собой посредством асинхронных сообщений, а каждый компонент может быть как генератором сообщений, так и подписчиком, то есть исполнять другие сообщения.

Такой подход, насколько я понимаю, широко применяется в мире Java, там для этого есть стандарт Java Message Service (JMS) и применяются брокеры сообщений и на этом базируется архитектура Enterprise service bus (ESB), например, Apache ServiceMix. Но для нас это пока высокая сфера крупных проектов, а в специфике веба и веб-ориентированных приложений я бы хотел рассмотреть, можно ли что-то сделать подобное, но с меньшими затратами и обеспечить приложению отказоустойчивость, распределение нагрузки и асинхронную обработку. И конечно, очень желательно, чтобы это было реализовано на РНР как основном языке реализации всех компонентов сервера.
Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии32

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 2

Время на прочтение4 мин
Количество просмотров7.2K
Мы продолжаем исследовать тему такого класса ПО как очереди сообщений применительно к РНР веб-системам. В прошлой статье мы рассмотрели некоторое ПО, в частности представителей как самой верхней области (Apache Active MQ, возможности которого находятся на уровне уже корпоративного ПО), так и достаточно простые варианты, например, MQS. Но не рассмотренными остались еще несколько достаточно интересных проектов, так что наше исследование продолжается.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии6

JavaScript Cross Site (XSS) POST

Время на прочтение4 мин
Количество просмотров13K
Недавно, в Dojo появилась возможность производить cross site POST запросы, т.е. отправка POST запросов на другие сайты, с другими доменными именами. Это событие осталось незамеченным в нашем сообществе JavaScript разработчиков. По крайней мере, никто и слова про это не сказал. А зря…

В один прекрасный момент
Читать дальше →
Всего голосов 62: ↑57 и ↓5+52
Комментарии73

Cakephp Sphinx behavior

Время на прочтение8 мин
Количество просмотров1.8K
По долгу службы мне приходится работать с Cake и Sphinx. Однажды мне надоело делать поиск к сфинксу ручками, и я решил написать небольшой behavior.
Код и примеры
Всего голосов 36: ↑27 и ↓9+18
Комментарии8

MemcacheDB и MemcacheQ — ключевые компоненты высокопроизводительной инфраструктуры

Время на прочтение5 мин
Количество просмотров7.5K
Cегодня мы поговорим о компонентах для высокопроизводительной и масштабируемой архитектуре на основе сервера memcached, а именно — распределённой базе для хранения данных MemcacheDB и системы очередей сообщений MemcacheQ.



Сначала рассмотрим, а что у нас есть в распоряжении для создания распределённой инфраструктуры хранения данных для веб-приложения. Ну, первое, что приходит в голову — кластеризация базы данных, это теперь поддерживается во всех распространённых системах, а также различные технологии репликации. Например, самая популярная СУБД для веб-проектов, MySQL поддерживает как репликации так и кластеризацию. Ещё можно обратится к традиционным файловым система и хранить данные в файловой системе, к примеру, Apache Hadoop. Но часто это слишком высокоуровневое решение, обычно же требуется гораздо проще варианты — когда нужно хранить и оперировать просто парами ключ-значение. Если серьёзно посмотреть, такая функциональность позволит покрыть потребности 90% веб-приложений. А если мы прибавим к этому возможность очень и очень быстро оперировать данными, хранить их в виде распределённой многосерверной системе и возможность постоянного хранения, устойчивого к сбоям — получим очень привлекательную платформу.

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

php|architect снижает цены на подписку

Время на прочтение1 мин
Количество просмотров899
php|architect снизили цены годовой подписки на одноимённые журналы на 70%. Теперь можно получать журналы целый год за 40$ (и печатный вариант в том числе).

Уже подписавшихся тоже не обделили: их ждут подарки в виде бесплатных номеров из архива.

Подписаться можно тут

Очень надеюсь, что это поможет поднять общий уровень php программистов…
Всего голосов 40: ↑29 и ↓11+18
Комментарии28

Информация

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