Обновить
0
0
Igor Ermakov@iexx

Программист

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

JSON API – работаем по спецификации

Время на прочтение23 мин
Охват и читатели195K
В последнее время веб-разработка разделилась. Теперь мы все не full-stack программисты — мы фронтендеры и бэкендеры. А самое сложное в этом, как и везде, это проблема взаимодействия и интеграции.

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

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


Всё, о чём должен знать разработчик Телеграм-ботов

Время на прочтение15 мин
Охват и читатели797K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Читать далее

MySQL: казнить нельзя помиловать

Время на прочтение9 мин
Охват и читатели18K


Сайт и интернет-магазин «Эльдорадо» — это около 40 тысяч покупок ежедневно. Объяснять, что это значит для бизнеса компании, наверное, не надо.

Исторически магазин работает на движке Bitrix с огромным количеством кастомного кода и дополнений. В качестве хранилища выступает кластер MySQL с четырьмя мастер-серверами.

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

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

Время на прочтение8 мин
Охват и читатели114K


Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
Читать дальше →

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

Время на прочтение6 мин
Охват и читатели19K
В этой статье я расскажу, как использовать pinba совместно с clickhouse и grafana вместо pinba_engine и pinboard.

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

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

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

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


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

5 способов деплоя PHP-кода в условиях хайлоада

Время на прочтение14 мин
Охват и читатели23K
Если бы хайлоад преподавали в школе, в учебнике по этому предмету была бы такая задача. «У соцсети N есть 2 000 серверов, на которых 150 000 файлов объемом по 900 Мб PHP-кода и стейджинг-кластер на 50 машин. На серверы код деплоится 2 раза в день, на стейджинг-кластере код обновляется раз в несколько минут, а еще дополнительно есть „хотфиксы“ — небольшие наборы файлов, которые выкладываются вне очереди на все или на выделенную часть серверов, не дожидаясь полной выкладки. Вопрос: считаются ли такие условия хайлоадом и как в них деплоить? Напишите не менее 5 вариантов деплоя». Про задачник по хайлоаду можем только мечтать, но уже сейчас мы знаем, что Юрий Насретдинов (youROCK) точно бы решил эту задачу и получил «пятерку».


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

PHP 8 и развитие языка в 30 вопросах и ответах

Время на прочтение14 мин
Охват и читатели15K
В конце ноября мы провели стрим с Никитой Поповым и Дмитрием Стоговым, ключевыми контрибьюторами ядра PHP. За полчаса мы получили 100+ вопросов и ребята не успели ответить на все. Поэтому я сгруппировал оставшиеся сообщения по темам, отсеял совсем специфические и собрал ответы в текстовом виде. Все острые и холиварные вопросы оставил.



Готовя ответы, по многим пунктам я консультировался с Никитой и другими активными участниками сообщества. Кстати, в эту субботу, 27 февраля, мы проводим новый стрим! Будет пара докладов, несколько дискуссий, интересные гости и возможность задать новые вопросы. Читайте те, что под катом и подключайтесь, чтобы задать новые.

На фондовом рынке США сформировался пузырь небывалых размеров

Время на прочтение13 мин
Охват и читатели165K

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

Читать далее

Почему Microsoft перестала бороться с пиратством своего ПО

Время на прочтение5 мин
Охват и читатели136K


Microsoft — одна из немногих корпораций, основанных десятки лет назад и по-прежнему остающихся одними из крупнейших технологических гигантов. Даже несмотря на множество технологических войн, она выдержала проверку временем, отсеявшую многих её конкурентов.

Однако одна из первых войн, с которой компания до сих пор сталкивается каждый день — это война против пиратов. Пираты программ продавали миллионы фальшивых копий продуктов Microsoft или загружали их на торрент-сайты.

Во сколько обходится Microsoft пиратство?


Официальных цифр нет, но можно уверенно сказать, что потери выражаются миллиардами долларов.

Вместо навязывания собственных цифр (что было бы губительно для PR), Microsoft приспособилась информировать о возможных потерях от спираченного ПО для бизнесов и потребителей. На основании исследований, проведённых в 2014 году, Microsoft выпустила публикацию, выполненную вместе с исследовательской фирмой IDC и Национальным университетом Сингапура.

В этом отчёте говорится, что в 2014 году потребители по всему миру потратили 25 миллиардов долларов и примерно 1,2 миллиарда часов (устранение неполадок) на пиратское ПО.

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

Политика Microsoft против пиратства


В прошлом Microsoft вела активную войну против пиратства. Она даже проводила налёты в Мексике для ареста картелей, продающих её ПО.
Читать дальше →

Мы компания в айти — нам всё равно, куда идти

Время на прочтение8 мин
Охват и читатели46K

«Забудь дедукцию, давай продукцию», —  эту формулу я усвоил сразу после окончания института. Тогда я ещё был финансистом и мир науки и образования меня буквально выкинул в мир бизнеса. Я ждал матриц, проектных структур, менеджмента строго по Мескону и Хедоури, а получил «твою мать, какого х** бюджет не сводится, давай, подрисуй цифирь и отправим это уже главнюкам». Вооот, а это была компания на 120 человек с чистой прибылью в пару сотен миллионов. Это было начало 2008 года, который компания пережила, сократив 23 человека. А вот декабрь 2014-го стал последним месяцем существования всего холдинга. Я, уже большой чувак, понимал, что это всё — результат череды управленческих ошибок. К тому времени я работал сисадмином в ИТ-компании и был уверен, что здесь всё будет круто. Сменив три ИТ-компании, я понял, что айтишники при всей инженерной стройности управляют и развиваются без вектора. И знаете, сейчас меня это тревожит.

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

Читать далее

Как составить резюме на английском для иностранной компании

Время на прочтение6 мин
Охват и читатели44K
Привет! Меня зовут Лео Скляр, я методист направления английского языка в Яндекс.Практикуме. Сейчас занимаюсь подготовкой курса английского для работы. Он может быть полезен как программистам, так и другим специалистам из digital-сферы. Я решил обобщить актуальную и самую ценную информацию из этого курса в гайд по грамотному составлению резюме на английском.

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



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

1. Специфика англоязычного резюме


В отличие от принятого в России резюме, которое больше похоже на CV (Curriculum vitae — описание профессионального пути на две–три страницы в хронологическом порядке) — резюме для американских и европейских компаний — это одностраничный документ, составленный по чёткой структуре. Такая лаконичность может казаться удивительной, но одна страница — это общепринятый стандарт резюме за рубежом. Даже если опыт большой, в резюме стоит сохранить упоминание только трёх–пяти последних мест работы, вашу позицию и ключевые достижения. Как правило, работодателя интересует актуальный опыт. Если ему потребуется узнать о вас больше, он может запросить расширенную версию резюме.
Читать дальше →

Архитектурный шаблон “Macro Shared Transactions for Microservices”

Время на прочтение11 мин
Охват и читатели7.1K


Автор: Денис Цыплаков, Solution Architect, DataArt

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


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

Comet — PHP-фреймворк для быстрых REST API

Время на прочтение2 мин
Охват и читатели17K
Два года я писал микросервисы на Go, используя генераторы кода на базе Swagger. Получались довольно компактные и очень быстрые решения.

Сейчас использую PHP, поэтому решил найти средства для решения тех же самых задач в экосистеме языка. Знаю и люблю Laravel и Symfony, но тащить их в проекты не хотелось — слишком много батареек, за которые приходится расплачиваться крутой кривой входа в проект и производительностью.
PHP фреймворк для создания REST API

В итоге появился Comet — современный фреймворк на базе PHP для разработки быстрых API, использующий наработки команд SlimPHP и Workerman. Десятки тысяч RPS на обычной виртуальной машине и латенси менее миллисекунды!
Читать дальше →

Использование Slack для отслеживания очереди недоставленных сообщений SQS

Время на прочтение8 мин
Охват и читатели2.8K
AWS SQS играет значительную роль в современной архитектуре приложений, особенно в бессерверной среде. При работе с SQS часто можно увидеть, что сообщения не были прочитаны; причиной могут быть ошибка в вашем коде, временное ограничение ресурсов, превышение бюджета API или зависимости в сообщениях, которые должны быть обработаны. В большинстве случаев вы хотели бы знать, что это за сообщения, если они много раз терпят неудачу, а затем узнать, почему, и устранить проблемы. Именно здесь в игру вступает очередь недоставленных сообщений SQS.


Приятного чтения!

Разрабатываем чат на React с использованием Socket.IO

Время на прочтение18 мин
Охват и читатели77K


Доброго времени суток, друзья!

Хочу поделиться с вами опытом разработки простого чата на React с помощью библиотеки «Socket.IO».

Предполагается, что вы знакомы с названной библиотекой. Если не знакомы, то вот соответствующее руководство с примерами создания «тудушки» и чата на ванильном JavaScript.

Также предполагается, что вы хотя бы поверхностно знакомы с Node.js.

В данной статье я сосредоточусь на практической составляющей совместного использования Socket.IO, React и Node.js.

Наш чат будет иметь следующие основные возможности:

  • Выбор комнаты
  • Отправка сообщений
  • Удаление сообщений отправителем
  • Хранение сообщений в локальной базе данных в формате JSON
  • Хранение имени и идентификатора пользователя в локальном хранилище браузера (local storage)
  • Отображение количества активных пользователей
  • Отображение списка пользователей с онлайн-индикатором

Также мы реализуем возможность отправки эмодзи.

Если вам это интересно, то прошу следовать за мной.

Для тех, кого интересует только код: вот ссылка на репозиторий.

Песочница:

Введение в Redux & React-redux

Время на прочтение11 мин
Охват и читатели323K
image

Оглавление


Введение
1. Установка и начало работы
2. Redux
....2.1 createStore
....2.2 reducer()
....2.3 dispatch()
....2.4 actionCreator()
....2.5 Actions
....2.6 getState()
....2.7 subscribe()
....2.8 combineReducers()
....2.9 initialState
3. React-redux
....3.1 Provider
....3.2 mapStateToProps()
....3.3 mapDispatchToProps()
....3.4 connect()

Введение


Вот вы прочитали мою статью про React (если нет, то настоятельно рекомендую вам сделать это) и начали разрабатывать приложения на нём. Но что это? Вы замечаете, как с расширением вашего приложения становится всё сложнее следить за текущим состоянием, сложно следить за тем, когда и какие компоненты рендарятся, когда они не рендарятся и почему они не рендарятся, сложно следить за потоком изменяющихся данных. Для этого и есть библиотека Redux. Сам React хоть и лёгкий, но для комфортной разработки на нем нужно много чего изучить.
Читать дальше →

Mobx — управление состоянием вашего приложения

Время на прочтение8 мин
Охват и читатели135K

MobX это простое, опробованное в бою решение для управления состоянием вашего приложения. Этот туториал научит вас основным концептам MobX. MobX это автономная библиотека, но большинство используют ее в связке с React и этот туториал будет сфокусирован на этой комбинации.


Основная идея


Состояние (state ориг.) это сердце каждого приложения и нет более быстрого способа создания забагованого, неуправляемого приложения, как отсутствие консистентности состояния. Или состояние, которое несогласованно с локальными переменными вокруг. Поэтому множество решений по управлению состоянием пытаются ограничить способы, которыми можно его изменять, например сделать состояние неизменяемым. Но это порождает новые проблемы, данные нуждаются в нормализации, нет гарантии ссылочной целостности и становится почти невозможно использовать такие мощные концепты как прототипы(prototypes ориг.).


MobX позволяет сделать управление состоянием вновь простым, вернувшись к корню проблемы: он делает невозможным инконсистентность состояния. Стратегия достижения этого довольно проста: убедится что, все что может быть вынуто из состояния, будет вынуто. Автоматически.

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

React + Mobx: в чём смысл?

Время на прочтение16 мин
Охват и читатели161K
Сегодня я хочу рассказать вам о том, как на нашем проекте состоялся переход на Mobx, какие преимущества это даёт. Также будет показан типовой проект и даны пояснения по основным вопросам. Но сначала вводные.

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

React-разработка: 6 путей к профессиональному росту

Время на прочтение7 мин
Охват и читатели22K
Последние полгода я наблюдал за развитием начинающих React-программистов. За это время они прошли просто невероятный путь. Скорость их обучения, их жажда знаний, их стремление к совершенству — всё это произвело на меня сильнейшее впечатление.

Как им это удалось? Как они превратились из тех, кто не может без посторонней помощи открыть PR, в тех, к кому обращаются за помощью другие? Что сделало людей, просящих советов, людьми, охотно дающих советы другим? Как ученики превратились в учителей?



Я задал им эти вопросы. Вот что они на них ответили.
Читать дальше →

Информация

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

Специализация

Бэкенд разработчик, Фронтенд разработчик
Старший
От 6 000 $
Git
SQL
Docker
Linux
MySQL
Английский язык
Базы данных
PHP
Laravel
JavaScript