Pull to refresh
-4
0
Александр @AlexGx

User

Send message

Статистика и мониторинг PHP скриптов в реальном времени. ClickHouse и Grafana идут на помощь к Pinba

Reading time6 min
Views17K
В этой статье я расскажу, как использовать pinba совместно с clickhouse и grafana вместо pinba_engine и pinboard.

На php-проекте pinba — пожалуй единственный надёжный способ понять, что происходит с производительностью. Правда обычно pinba внедряется только тогда, когда уже наблюдаются проблемы и не понятно «где копать».

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

Кто-то анализирует логи nginx, а кто-то медленные запросы в бд.

Конечно pinba не была бы лишней, но есть несколько причин, почему она есть далеко не на каждом проекте.


Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments4

Звоним бесплатно, используя блокчейн-сервис ENUMER

Reading time14 min
Views26K
В статье рассказывается о децентрализованной реализации протокола IP-телефонии ENUM на базе блокчейна криптовалюты Emercoin. Дано описание системы ENUMER, её отличие от других реализаций ENUM. Также приведены инструкции по разворачиванию узла ENUMER и дан пример конфигурации VOIP АТС FreeSWITCH для работы с ENUMER.



Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments23

Устройства SIP оповещения CyberData

Reading time2 min
Views7.2K


Оборудование CyberData является новым на российском рынке. Категория товаров данного производителя является немного специфической.

Компания выпускает IP устройства оповещения: динамики громкой связи, домофоны, усилители, индикаторы звонка, адаптеры, ассессуары и прочее. И все это работает по протоколу SIP.

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

Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

По следам highloadcup: php vs node.js vs go, swoole vs workerman, splfixedarray vs array и многое другое

Reading time8 min
Views27K
Рассказ о том как я участвовал в highloadcup (чемпионат для backend-разработчиков) от Mail.Ru, написал на php сервер обслуживающий 10000 RPS, но всё равно не получил победную футболку.


Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments43

Как определить мобильного оператора и домашний регион по номеру телефона

Reading time5 min
Views54K
Когда мы пытаемся определить какому оператору принадлежит номер телефона, то обычно смотрим на его DEF код. Например, если номер начинается на 916, то это МТС, на 968 – Билайн, 926 – Мегафон (все зависит от вашего региона). Но этот метод очень условный и совершенно не подходит когда нужны точные данные. В реальности все сложнее: DEF коды часто делят между собой несколько операторов, и совсем необязательно, что искомый номер относится к операторам большой четверки. Ну и наконец, номер можно просто портировать.

В статье я расскажу о том, как по номеру телефона достоверно определить мобильного оператора который его обслуживает, а также получить дополнительную, «бесплатную» информацию – домашний регион абонента. Использовать эти данные можно как угодно, начиная от предзаполнения адреса в анкете пользователя и перенаправления на региональную версию вашего сервиса, до использования этих данных в процессинге и статистике. В конце статьи будет ссылка на github с исходниками.

Сразу оговорюсь, что домашний регион абонента, по большому счету, никак не связан с текущим месторасположением пользователя, т.е. определяемый регион отвечает на вопрос «Откуда номер?», а не «Где пользователь?».
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments21

Наш опыт с Kubernetes в небольших проектах (обзор и видео доклада)

Reading time6 min
Views52K
Дмитрий Столяров (Флант) с докладом про Kubernetes на RootConf, РИТ++ 2017

6 июня на конференции RootConf 2017, проходившей в рамках фестиваля «Российские интернет-технологии» (РИТ++ 2017), в секции «Непрерывное развертывание и деплой» прозвучал доклад «Наш опыт с Kubernetes в небольших проектах». В нём рассказывалось об устройстве, принципах работы и основных возможностях Kubernetes, а также о нашей практике использования этой системы в небольших проектах.

По традиции мы рады представить видео с докладом (около часа, гораздо информативнее статьи) и основную выжимку в текстовом виде.
Total votes 32: ↑32 and ↓0+32
Comments28

Web PUSH Notifications быстро и просто

Reading time17 min
Views339K

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


Информации по этой теме в интернете полно, но она фрагментирована, разбросана по разным ресурсам и перемешена с уведомлениями для мобильных устройств с примерами на Java, C++ и Python. Нас же, как веб-разработчиков, интересует JavaScript. В этой статье я постараюсь саккумулировать всю необходимую и полезную информацию.


Web PUSH Notifications


Я думаю, вы уже знаете что такое push-уведомления, но я всё же напишу коротко о главном.


Пользователь, заходя на сайт, вытягивает (pull) с него данные. Это удобно и безопасно, но с развитием интернет ресурсов, появилась необходимость оперативно доставлять информацию пользователям не дожидаясь пока те сами сделают запрос. Так и появилась технология принудительной доставки (push) данных с сервера клиенту.

Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments66

Выбор MQ для высоконагруженного проекта

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

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

Если микросервис перестает отвечать на запросы в результате аварии, его клиенты должны быть мгновенно перенаправлены на резервный. Для управления потоком запросов часто используют так называемые очереди сообщений (message queues).

Недавно используемая нами очередь перестала нас устраивать по параметрам отказоустойчивости и мы заменили ее. Ниже мы делимся нашим опытом выбора.
Читать дальше →
Total votes 46: ↑38 and ↓8+30
Comments57

YiiConf 2017, Москва 16 июня

Reading time2 min
Views4.9K

Этим летом, 16 Июня 2017, в Москве пройдёт конференция веб-разработчиков, посвящённая PHP фреймворку Yii.



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

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments5

RTCP как инструмент администратора телефонии

Reading time3 min
Views18K
Каждый, кто занимался организацией телефонии, сталкивался с фразой «Плохая связь!». А что такое «плохая связь»? С одной стороны это субъективный параметр, с другой стороны это вполне конкретные цифры. Полагаться на субъективные оценки пользователя мы не будем, потому что это не «тру». Попробуем оценить качество связи вполне конкретной цифрой.

image
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments11

Тут-тук, откройте

Reading time6 min
Views10K


Всем снова привет! На этих выходных я выступал на DevFest Siberia 2016 с проектом IoT домофона. Это была невероятно атмосферная конференция. Но разговор не о ней. Во время доклада я пообещал, что отдельно расскажу на Хабре, как организовать аналог технологии Knock Knock из Google DUO в домофоне.

Небольшая справка от Google:
«Когда вы звоните контакту в Duo, абонент может увидеть ваше видео, если вы входите в число его контактов. Вы увидите абонента только после того, как он ответит на вызов».
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments0

Интерфейс статистики Asterisk. Новая версия, новый функционал

Reading time4 min
Views10K
Как я и предполагал, завершая предыдущую публикацию, мое путешествие только начиналось и впереди еще масса свершений.

На протяжении этой, почти двухмесячной, одиссеи произошло много интересного и значимого для проекта статистики звонков IP-АТС Asterisk.

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

О чем и спешу вам сообщить. Вот некоторые из них:

  • Добавлена возможность загрузки и отображения логотипа
  • Создание групп, добавление в них пользователей и просмотр отчетов в разрезе этих групп
  • Добавлены супервизоры. Теперь вы можете назначить каждому супервизору группы/очереди, отчеты которых он может просматривать
  • Просмотр статистики входящих звонков в разрезе каждого «внешнего» номера, т.е. сколько входящих за период было по каждому номеру
  • Общий журнал звонков (как локальных так и внешних)
  • Исправлен баг с неверным подсчетом входящих в Asterisk 12+ для всех отчетов
  • Добавлен экспорт отчетов в Excel

Для начала один скриншот:



А под катом я опишу, а так же продемонстрирую, основные нововведения подробно. Ну и конечно, там же вас ждет небольшой презент.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments32

Генерируем красивые картинки для социальных сетей

Reading time7 min
Views16K


Код для генерирования именно этого изображения
$generator = new imgGenerator();
$textGenerator=new imgTextGenerator();
$textGeneratorTop=new imgTextGenerator();

$label=$textGeneratorTop
	->seTextShadow("#000000", 75, 1, 2, 2)
	->setText("Test Site","#ffffff",imgGenerator::position_center_top,"1/12",0 )
	->setBackground("#000000",'3%')
	->setFont($_SERVER["DOCUMENT_ROOT"]."/upload/fonts/fonts2_7/hinted-PTF55F.ttf");

$text=$textGenerator
	->seTextShadow("#000000", 75, 1, 2, 2)
	->setText("Морковь как двигатель прогресса человечества","#ffffff",imgGenerator::position_center_center,"1/7",array(0,'5%',0,'5%'))
	->setFont($_SERVER["DOCUMENT_ROOT"]."/upload/fonts/fonts2_7/hinted-PTF55F.ttf");

$generator
	->addText($text)
	->addText($label)
	->fromImg($_SERVER["DOCUMENT_ROOT"] . "/upload/dynamic/2016-08/15/carrot-big.jpg")
	->resizeFor("autodetect")
	->addOverlay(0.5,"#000000")
	->show();

Глядя на красивые картинки для соц. сетей, которые в последнее генерируют многие новостные (и не только) сайты — захотелось написать свой генератор.

Примеры картинок

Скрипт работает на PHP, с использованием модуля Imagick. Писать это на GD2 что-то я не решился.

Алгоритм работы предполагался такой:

  • Берем за основу картинку или цвет
  • Уменьшаем до нужного размера
  • Накладываем сверху полупрозрачный фон
  • Устанавливаем логотип
  • Добавляем надпись
  • Кешируем результат

Читать дальше →
Total votes 33: ↑23 and ↓10+13
Comments11

Tarantool как сервер приложений

Reading time8 min
Views29K
Привет, %хабраюзер%. Команда Тарантула продолжает делиться инсайтами и экспертизой для эффективной работы с данными в высоконагруженных проектах. Сегодня мы попытаемся разобраться, почему же Tarantool — это «два в одном»: не только база данных, но и сервер приложений. Наверное, некоторые слышали о Тарантуле как о сверхбыстром персистентном in-memory хранилище с поддержкой репликации и хранимок на Lua. Представьте, что мы берём кусочки Redis, добавляем замороженный Node.js, сверху заправляем Go, после чего варим, медленно перемешивая, в течение пяти минут после закипания. Казалось бы, при чём здесь Application Server?


Читать дальше →
Total votes 61: ↑59 and ↓2+57
Comments59

5 UI фишек для современного Андроид приложения. Код, идеи и живой пример

Reading time5 min
Views22K
image

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

Статья не ставит своей целью научить проектировать пользовательский интерфейс или объяснить сокровенный смысл Material дизайна, но надеюсь, приведенные примеры смогут вдохновить Ввас на эксперименты с дизайном ваших приложений.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments15

Системы безопасности должны предохранять, а не записывать, как вас убивают

Reading time9 min
Views13K
Планшетный видеодомофон – комплексная безопасность для квартиры и дома, на которую еще и приятно посмотреть (ну, с первого взгляда точно). Тестируем новый охранный девайс, что попал к нам в руки, вернее сказать, который так и хочется взять в руки: такой он легкий, тонкий, в гладеньком корпусе! И уже это настораживает – ну, не может быть безопасность приятной! Или это очередная гаджет-игрушка?..

Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments75

«12 часов, 10 интервьюеров»: Как получить работу в сфере финансов на примере собеседования в Goldman Sachs

Reading time6 min
Views31K


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

Сегодня же речь пойдет о том, насколько вообще сложно получить работу в области финансов — на примере процесса прохождения собеседования в инвестбанке Goldman Sachs, который поможет составить мнение о том, чего ждать при трудоустройстве в компании финансового сектора.
Читать дальше →
Total votes 17: ↑10 and ↓7+3
Comments60

ProxySQL — еще один mysql-proxy

Reading time9 min
Views42K
На хабре не раз упоминался данный инструмент для проксирования SQL-запросов, но, к сожалению, я не нашел ни одной статьи описывающей его работы, кроме того, документации на русском языке тоже не было найдено. Ну чтож, попробуем заполнить этот пробел. В статье мы рассмотрим структуру ProxySQL, конфигурирование и пример использования.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments10

Az.js: JavaScript-библиотека для обработки текстов на русском языке

Reading time8 min
Views28K
Как чуден и глубок русский курлык
Генератор постов

Обработка естественного языка (natural language processing, NLP) — тема, на мой взгляд, очень интересная. Во-первых, задачи тут чисто алгоритмические: на вход принимаем совершенно примитивный объект, строчку, а извлечь пытаемся вложенный в него смысл (ну или хотя бы частичку смысла). Во-вторых, необязательно быть профессиональным лингвистом, чтобы решать эти задачи: достаточно знать родной язык на более-менее приличном уровне и любить его.

А ещё с небольшими затратами можно сделать какого-нибудь бестолкового чат-бота — или, как вот я, генератор постов на основе того, что вы писали на своей страничке в соцсети. Возможно, кто-то из вас уже видел это приложение — оно довольно глупое, чаще всего выдает бессмысленный и бессвязный текст, но изредка всё же дает повод улыбнуться.

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

Конечно, хочется сделать что-нибудь поинтереснее. Беда в том, что модные сейчас нейросети не очень-то применимы здесь: им нужно много ресурсов, большую обучающую выборку, а в браузере у пользователя соцсети всего этого нет. Поэтому я решил изучить вопрос работы с текстами с помощью алгоритмов. К сожалению, готовых инструментов для работы с русским языком на JavaScript найти не удалось, и я решил сделать свой маленький велосипед.
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments30

Базовые различия при работе с базами данными MySQL и PostgreSQL Дилетантский обзор

Reading time3 min
Views18K
Продолжая свое знакомство с БД PostgreSQL, с уже имеющимися навыками работы в БД MySQL, обнаружил ряд интересных полезных особенностей которые на практике часто не хватало в MySQL. Цель этого обзора не в создании бесконечного спора, что лучше, а дать легкое сравнение, которое обычно обсуждается программистами на обеденном перерыве в ближайшей кафешке. В сравнении обретаются новые знания и опыт, поэтому оно того стоит.
Читать дальше →
Total votes 26: ↑18 and ↓8+10
Comments8
1
23 ...

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Registered
Activity