В рамках этой статьи я поделюсь опытом использования Elastic Search во внутренних продуктах 2ГИС, в частности, в собственной системе для организации Call-центра. А также расскажу, какие проблемы мы смогли решить, используя этот поисковый движок.
Александр @AlexGx
User
1000 и 1 репост: гайд по кнопке «поделиться» в русских соц сетях
6 min
29KTutorial
Недавно передо мной встала задача — провести на нашем сайте «народное голосование» за номинантов на премию в нашей отрасли (франчайзинг). В рамках народного голосования человек размещал на своей странице в социальной сети пост, рассказывающий о том, за кого именно он проголосовал. Чтобы реализовать эту задачу, мне пришлось перелопатить массу информацию о том, как именно устроен шаринг в различных соцсетях, и как лучше размещать эти самые посты. Кроме того, была создана система подсчета количества размещенных репостов.
К сожалению, большая часть информации на эту тему, которую можно найти на хабре или stackoverflow — уже устарела, поэтому я постарался превратить этот в пост в актуальный мега-гайд по шерингу страниц в соц сетях. Я рассмотрел 5 наиболее популярных в России социальных сетей: контакт, facebook, твиттер, одноклассники и мой мир. Для каждой социальной сети приведен актуальный URL для шаринга, небольшие советы и рекомендации по использованию, а также JS код, позволяющий узнать количество шеров конкретного URL в каждой из соц. сетей.
В конце статьи есть сводная таблица со всеми ссылками и кратким описанием возможностей каждой из сетей.
+17
DUMP-2016: видео всех докладов в одном посте. Бесплатно. Без СМС
9 min
22K8 апреля в Екатеринбурге прошла конференция DUMP. Под катом — видео 60-и докладов про frontend, serverside, devops, mobile, дизайн, управление разработкой и тестирование, плюс все презентации и фотографии с прошедшей конференции. А вот короткий отчетный ролик про DUMP-2016.
+28
Redis: лёгкие яблоки
3 min
10KNoSQL обычно воспринимается как альтернатива реляционным БД, однако, многие из них, особенно, те, что попроще, могут не только заменять, но и отлично дополнять их. На самом деле, чтобы использовать какое-то NoSQL-решение вместо привычной БД, нужен либо новый проект, либо возможность переписать старый практически полностью. Редкие случаи, в повседневной разработке. В то же время можно легко сорвать множество низко висящих плодов.
+54
Redis — главное хранилище? Что за хрень?!
8 min
295KTranslation
Redis это размещаемое в памяти хранилище ключ-значение, обычно используемое для кэшей и подобных механизмов ускорения сетевых приложений. Мы, тем не менее, храним все наши данные в Redis — в нашей главной базе данных.
Сеть полна предупреждений и предостерегающих повествований об использовании подобного подхода. Есть ужасающие истории о потере данных, исчерпании памяти или людях неспособных эффективно управлять данными в Redis, вы, возможно, интересуетесь «О чём вы вообще думаете?». Так вот, наш рассказ, почему мы всё же решили использовать Redis и как мы преодолели все эти проблемы.
Сеть полна предупреждений и предостерегающих повествований об использовании подобного подхода. Есть ужасающие истории о потере данных, исчерпании памяти или людях неспособных эффективно управлять данными в Redis, вы, возможно, интересуетесь «О чём вы вообще думаете?». Так вот, наш рассказ, почему мы всё же решили использовать Redis и как мы преодолели все эти проблемы.
+54
Pillow-SIMD
5 min
14KУскорение операций в 2.5 раза по сравнению с Pillow и в 10 по сравнению с ImageMagick
Pillow-SIMD — это «форк-последователь» библиотеки работы с изображениями Pillow (которая сама является форком библиотеки PIL, ныне покойной). «Последователь» означает, что проект не становится самостоятельным, а будет обновляться вместе с Pillow и иметь ту же нумерацию версий, только с суффиксом. Я надеюсь более-менее оперативно выпускать версии Pillow-SIMD сразу после выхода версий Pillow.
Почему SIMD
Есть несколько способов улучшения производительности обработки изображений (да и всех остальных вещей, наверное, тоже).
- Можно использовать более хорошие алгоритмы, которые дают такой же результат.
- Можно сделать более быструю реализацию существующего алгоритма.
- Можно подключить больше вычислительных ресурсов для решения той же задачи: дополнительные ядра CPU, GPU.
+23
Заметки о Percona Live 2016 CA
4 min
3.5K Недавно я побывал на замечательной конференции Percona Live 2016 в Санта-Кларе. Хочется написать множество хвалебных слов организаторам и за отлично работающий Wi-Fi, и питание, и точное следование расписанию, и подготовку залов. Но все же статью я пишу не для туристического сайта, а для технического, потому просто расскажу о самых интересных докладах из тех, которые я посетил.
На удивление для столь узкоориентированной конференции, спектр докладов не ограничился одним только MySQL, как это могло бы показаться, но охватывал в целом инструменты работы с данными. Место нашлось и Hadoop с экосистемой и колоночными базам данных, и облакам (куда сейчас без них).
На удивление для столь узкоориентированной конференции, спектр докладов не ограничился одним только MySQL, как это могло бы показаться, но охватывал в целом инструменты работы с данными. Место нашлось и Hadoop с экосистемой и колоночными базам данных, и облакам (куда сейчас без них).
+7
Двойной обман. Как ФБР использовало украинского хакера Максима Попова
20 min
112KTranslation
Холодным днём 18 января 2001 года Максим Игоревич Попов, 20-летний украинский парень, нервно толкнул двери американского посольства в Лондоне. Его можно было принять за участника программы по студенческому обмену, который пришёл получать визу, но самом деле Максим был хакером, участником восточноевропейской хакерской группы, которая атаковала американские коммерческие компании, зарабатывая на вымогательстве и фроде. Прокатившаяся волна таких атак выглядела словно предвестник нового этапа Холодной войны между США и организованными хакерскими группировками в странах бывшего советского блока. Максим Попов с детским лицом, в очках и с короткой стрижкой, собирался стать первым перебежчиком в этой войне.
+117
Зачем нужен HTTP/2 для сайтов
5 min
16KВ ближайшее время интернет ожидает переход на новый протокол HTTP/2, ускоряющий загрузку сайтов. Разбираемся, как это повлияет на веб-разработку, поисковое продвижение, безопасность сайтов и другие аспекты, а также что нужно знать для подключения HTTP/2 и как проверить его поддержку.
+8
Первые шаги в мир веба в реальном времени
5 min
23KTutorial
Доброго времени суток. Давно хотелось написать про что-то больше, нежели чем WP. Заметил, что чем больше пытаешься прогрессировать, как разработчик, тем тривиальней кажется то, о чем хочешь написать. Но да ладно, возможно кому-то будет довольно полезен мой опыт. Цикл заметок будет ориентирован в первую очередь на тех, кто только начинает собирать свои первые реалтайм веб-приложения.
Итак, стоит задача синхронизации того, что видит пользователь и того, что есть в бд. Ранее для подобных задач использовал сервис Pusher, но, в последнее время, предпочитаю использовать Centrifuge. Предвосхищу вопрос о том, чем лучше это обычной связки redis/socket.io/node.js. Из коробки приватные каналы, простая интеграция, масштабирование, api, история сообщения в канале, события отписки и подписки пользователей на канал и много другое, что позволяет крайне быстро построить нужный прототип приложения, без раздувания стека технологий. Это работает для меня, у каждого свой путь. Кстати, язык на бекенде — php, и, соответственно, на фронтенде — js.
Что из этого получилось, некоторые нюансы — можете посмотреть ниже.
+12
Обеспечение качества предоставления бизнес сервисов
9 min
7.9KСовременные бизнес-услуги — то, за что клиенты готовы платить реальные деньги, — представляют собой комплексные программные решения, объединяющие подчас множество различных компонентов, в том числе разработанных не только вашими сотрудниками. Хотите ли вы предоставлять услуги, поддерживая эффективный контакт с клиентом по любому, наиболее удобному для него каналу, стремитесь ли наладить эффективную продажу своей продукции через Интернет или быстро вывести на рынок инновационный сервис, задействующий мобильные средства доступа, вам придется ввести в действие и поддерживать в работоспособном состоянии приложение, которое должно органично вписаться в уже существующий информационный ландшафт и беспроблемно взаимодействовать с другими системами.
+8
Прячем фактическое место, где стоит сервер компании: практические методы и вопрос
3 min
47KПривет! Я руковожу небольшим ИТ-аутсорсингом, и к нам в прошлом году обратилось сразу несколько клиентов с похожими задачами — сделать так, чтобы никто не узнал, где именно стоят сервера компании.
В первом случае это был строительный бизнес, у них одна из особенностей сферы в том, что на машинах не должно быть даже следов переписки, особенно перед тендерами. Поэтому у них RDP-ферма, а в офисе терминалы. Прятать надо было ядро. Во втором случае — сервисная компания, работающая с известными личностями (у них это просто слой безопасности, который они не считают лишним). В третьем — производство для нефтяной сферы, у которых по сфере нереальная недобросовестная конкуренция с забросом инсайдеров в чужие офисы.
Мы придумали вот такую схему:
В центре — ядро, вокруг ядра — релей-серверы периметра (дешёвые машины-прокси, на каждой — свой сервис), дальше — терминалы конечных пользователей. Покритикуйте, пожалуйста, ну или попробуйте вычислить IP сервера ядра на примере в конце.
В первом случае это был строительный бизнес, у них одна из особенностей сферы в том, что на машинах не должно быть даже следов переписки, особенно перед тендерами. Поэтому у них RDP-ферма, а в офисе терминалы. Прятать надо было ядро. Во втором случае — сервисная компания, работающая с известными личностями (у них это просто слой безопасности, который они не считают лишним). В третьем — производство для нефтяной сферы, у которых по сфере нереальная недобросовестная конкуренция с забросом инсайдеров в чужие офисы.
Мы придумали вот такую схему:
В центре — ядро, вокруг ядра — релей-серверы периметра (дешёвые машины-прокси, на каждой — свой сервис), дальше — терминалы конечных пользователей. Покритикуйте, пожалуйста, ну или попробуйте вычислить IP сервера ядра на примере в конце.
+17
Книга «Создание микросервисов»
6 min
35KПривет, Хаброжители! У нас вышла новая книга Сэма Ньюмена.
Книга посвящена программированию микросервисов — небольших автономных компонентов, позволяющих добиться модульности и отказоустойчивости любой программы. Теория микро-сервисов тесно связана с философией Unix, способствует улучшению архитектуры любых приложений, дает возможность избегать громоздкого и запутанного кода. Эта книга поможет читателю заново взглянуть на многие, казалось бы, трудноразрешимые проблемы, масшта-бировать любые проекты, ювелирно разрабатывать даже самые сложные системы.
Эта книга полна конкретных примеров использования микросервисов, собранных по всему миру, включая их применение в таких организациях, как Netflix, Amazon, Gilt и REA group, пришедших к мысли, что возросшая автономность этой архитектуры дает их командам огромные преимущества.
Книга посвящена программированию микросервисов — небольших автономных компонентов, позволяющих добиться модульности и отказоустойчивости любой программы. Теория микро-сервисов тесно связана с философией Unix, способствует улучшению архитектуры любых приложений, дает возможность избегать громоздкого и запутанного кода. Эта книга поможет читателю заново взглянуть на многие, казалось бы, трудноразрешимые проблемы, масшта-бировать любые проекты, ювелирно разрабатывать даже самые сложные системы.
Эта книга полна конкретных примеров использования микросервисов, собранных по всему миру, включая их применение в таких организациях, как Netflix, Amazon, Gilt и REA group, пришедших к мысли, что возросшая автономность этой архитектуры дает их командам огромные преимущества.
+13
Email-рассылка со своего сервера: подводные камни
3 min
43KНедавно мы по ряду причин решили отказаться от стороннего сервиса для email-рассылок и осуществлять рассылки со своего сервера. Я бы хотел указать на ряд трудностей, с которыми мы столкнулись в процессе, и пути их решения. Непосредственно тему верстки эта статья практически не затрагивает, но более подходящего хаба я не нашел.
Конечно, если вы давно в теме, подобные советы могут показаться банальными и очевидными, но некий свод хитростей и подсказок будет полезен начинающим рассыльщикам.
Конечно, если вы давно в теме, подобные советы могут показаться банальными и очевидными, но некий свод хитростей и подсказок будет полезен начинающим рассыльщикам.
+13
Как сделать JSON Vulnerability Protection в ответе сервера под Yii2
2 min
5.7KTutorial
В AngularJS реализована поддержка JSON Vulnerability Protection, направленная на то, чтобы противодействовать ситуациям, когда злоумышленник может, при определённых условиях, превратить JSON в JSONP и выполнить какой-то код. В качестве меры противодействия на серверной стороне предлагается добавлять к JSON-данным такой префикс:
Под катом — моя короткая история генерации JSON-данных с префиксом. Но, я думаю, эта история так же хорошо иллюстрирует и более общий вопрос — как можно добавлять свои собственные форматы ответов сервера. В Yii Framework это делается довольно-таки просто — для этого достаточно описать в конфигурации, какой класс будет отвечать за генерацию ответа определённого формата.
)]}',
Под катом — моя короткая история генерации JSON-данных с префиксом. Но, я думаю, эта история так же хорошо иллюстрирует и более общий вопрос — как можно добавлять свои собственные форматы ответов сервера. В Yii Framework это делается довольно-таки просто — для этого достаточно описать в конфигурации, какой класс будет отвечать за генерацию ответа определённого формата.
+10
Кейс NGINX: Как противостоять DDoS-атакам
2 min
26KОсновная цель нашей работы состоит в том, чтобы сделать IaaS простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Поэтому мы проводим постоянную оптимизацию всех систем и рассказываем о том, что нам удалось сделать, в нашем блоге на Хабре.
Пара примеров:
Сегодня мы решили взглянуть на западный опыт и кратко проанализировать тему балансировки нагрузки. Нас привлекла заметка на тему работы с DDoS-атаками.
Пара примеров:
Сегодня мы решили взглянуть на западный опыт и кратко проанализировать тему балансировки нагрузки. Нас привлекла заметка на тему работы с DDoS-атаками.
+14
Yii2 bad behaviors
2 min
8.9KМинимальная версия PHP для Yii2 — 5.4. Минимальная версия PHP для Traits — 5.4. Совпадение? Не думаю!
Yii2 уже давно пора избавиться от этих плохих поведений. И вот почему.
Yii2 уже давно пора избавиться от этих плохих поведений. И вот почему.
+2
Реализация обмена сообщениями между вкладками браузера
6 min
17KЭто первая статья в нашем корпоративном блоге. На этот раз я расскажу о нашем решении задачи обмена сообщениями между вкладками браузера.
К примеру, мне потребовалось решить эту задачу при реализации JavaScript API к Comet сервису. Эта задача встречается достаточно часто и её уже рассматривали на хабре раньше здесь и здесь, но я решил написать своё решение задачи исходя из следующих требований к коду:
К примеру, мне потребовалось решить эту задачу при реализации JavaScript API к Comet сервису. Эта задача встречается достаточно часто и её уже рассматривали на хабре раньше здесь и здесь, но я решил написать своё решение задачи исходя из следующих требований к коду:
- Кросбраузерность
- Отсутствие зависимостей
- Минимальный размер кода
- Простота и удобство
+14
Новые возможности получение отчетов истории вызовов (CDR)
3 min
4.7KКак вы уже знаете в новом сервис паке (SP2) для 3CX Phone System 14 были добавлены новые возможности для вывода отчетов по истории вызовов. Отчеты стали более гибкими, а также добавились некоторые новые возможности (к сожалению, на текущий момент локализация новых возможностей не завершена, но мы работает над этим).
+6
Делаем звонок в один клик
3 min
21KВ статье описана фича Push2Dial, которая в данный момент не поддерживается. Временно. Наверняка, в будущих версиях она вернётся, так что ознакомиться с устройством можно уже сегодня.
«Звонок в один клик» или Push2Dial (P2D) — ещё одна функция, которая была анонсирована с новым 2ГИС. Суть проста — выбираете организацию, кликаете на номер телефона — и он готов к набору на вашем смартфоне.
Фича избавляет от необходимости самостоятельно набирать номер телефона, а значит шансы ошибиться и попасть не туда стремятся к нулю.
«Звонок в один клик» или Push2Dial (P2D) — ещё одна функция, которая была анонсирована с новым 2ГИС. Суть проста — выбираете организацию, кликаете на номер телефона — и он готов к набору на вашем смартфоне.
Фича избавляет от необходимости самостоятельно набирать номер телефона, а значит шансы ошибиться и попасть не туда стремятся к нулю.
+22
Information
- Rating
- Does not participate
- Location
- Харьков, Харьковская обл., Украина
- Registered
- Activity