Как стать автором
Обновить
-1
0

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

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

Elastic APM для PHP-разработчиков: Используем APM c Laravel и Lumen

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

APM расшифровывается как Application Performance Monitoring (мониторинг производительности приложений). Если на вашем пути встречается эта аббревиатура, то речь скорее всего идет о измерении производительность вашего приложения и ваших серверов. Как они справляются, сколько памяти они потребляют, где узкие места? И это далеко не все. С помощью APM можно настроить специальные уведомления, которые будут оповещать вас, например, о том, что потребление памяти достигло очень высоких показателей или удаленный вызов занимает слишком много времени. Триггеры для подобных уведомлений могут опираться на довольно широкий набор показателей и событий. Но давайте не будем забегать вперед.

Читать далее
Всего голосов 11: ↑9 и ↓2+8
Комментарии2

Основы линейной алгебры для 3D-приложений. Урок 3

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

Завершающий урок из цикла про линейную алгебру для 3D-приложений от Александра Паничева — ведущего разработчика логики в UNIGINE. В прошлом уроке мы разобрали углы Эйлера и кватернионы, а в этот раз говорим о матрицах и подводим итоги.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Статический анализ и уже выросший проект: внедрять нельзя откладывать

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

Зачем нужен статический анализ кода, кажется, никому объяснять сегодня уже не нужно. Но одно дело — поддерживать код «чистым» с первого коммита, и совсем другое — встраивать новый инструмент в проект, который за несколько лет успел разрастись и пережить несколько итераций глобального рефакторинга. Мы работаем с большим количеством плохо документированных источников данных, а статический анализ кода помогает учитывать самые разные граничные случаи.

И ещё один момент: Rusprofile почти целиком написан на PHP, языке со слабой динамической типизацией. Статический анализ кода на PHP уже несколько лет набирает популярность, сказывается здесь и движение самого языка в сторону более строгой типизации. Но мы опасались, что без предварительной подготовки кода пользы от него мало. Аннотировать типами весь код в реальных бизнес-условиях тоже нереально. Сильно медлить с внедрением в рабочий процесс тоже нельзя: чем дальше, тем сложнее что-то кардинально улучшать. Поэтому нужно было оперативно запускаться, чем-то пожертвовав.

Что нам пришлось преодолеть?
Всего голосов 32: ↑32 и ↓0+32
Комментарии9

Микросервисы, Apache Kafka и Domain-Driven Design

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

Почему Apache Kafka стала стандартом и основой архитектуры микросервисов. Как Kafka не только заменяет другое промежуточное ПО, но и позволяет создавать сами микросервисы с помощью DDD и нативных API Kafka: Kafka Streams, ksqlDB и Kafka Connect.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии5

PHP Дайджест № 216 (15 – 30 ноября 2021)

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


Подборка свежих новостей и материалов из мира PHP.
В выпуске: вышел PHP 8.1, создана организация PHP Foundation с целью развития и поддержки PHP, критическая уязвимость в doctrine/dbal, в PHP 8.2 будут объявлены устаревшими динамические свойства, вышли Symfony 6 и Symfony 5.4.
Также в выпуске полезные статьи, видео и другие новости сообщества.

Приятного чтения!
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии12

Архитектурное тестирование

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

О том зачем тестировать архитектуру приложения. Что можно "покрыть" такими тестами. Какие инструменты для этого существуют. А так же о перспективах данного направления.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Пишем сервис на GO. Runtime контроллер и Graceful Shutdown

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


Напишем вместе HTTP-сервис на golang с нуля? Я уверен, что это довольно несложно. Для тех, кто каждую неделю этим занимается, моя статья не будет особенно интересна, но я все равно рекомендую взглянуть и оценить, возможно, ваши комментарии спасут кому-то жизнь. А может кое-какие из моих рассуждений спасут вашу.


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


Это первая часть. Первые шаги в нашем нелегком пути. И в этой статье мы попробуем достичь следующих целей:


  • Выработаем понимание структуры и жизненного цикла приложения.
  • Формализуем наше представление жизненного цикла на языке go.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+13
Комментарии19

Практические рекомендации по работе с Docker для Python-разработчиков

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

Прим. Wunder Fund: в этой длииинной статье вы найдете ряд полезных советов по работе с Docker, как общего характера, так и Python-специфичных. Хоть мы и давно используем Docker в работе, про некоторые советы мы подумали "а что, так можно было?". Советуем вначале пролистать статью, и отметить штуки, которые покажутся актуальными для вашей текущей ситуации.

Читать далее
Всего голосов 53: ↑52 и ↓1+65
Комментарии8

Go и MySQL: настраиваем пул соединений

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

Каждый день мы пишем код в условиях высоких нагрузок, и нередко в таких случаях сталкиваемся с проблемами, связанными с базой данных. Мы в компании используем MySQL, поэтому я расскажу про конфигурирование соединений с этой базой данных. Пройдемся по основным моментам, на которые нужно обращать внимание при работе с MySQL средствами языка Go: 

немного затронем основы клиент-серверного протокола MySQL, его базовое устройство и принципы работы;

дальше перейдем к Go части и разберем реализацию пула соединений;

будем двигаться от конфигурирования соединений к выполнению запросов, параллельно заглядывая в код драйвера.

Надеюсь каждый для себя найдет что-то полезное.

Поехали
Всего голосов 37: ↑36 и ↓1+42
Комментарии13

Крутые GitHub репозитории в области машинного обучения

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

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

Читать далее
Всего голосов 7: ↑2 и ↓5-3
Комментарии5

Работа с COM портом в web-проекте

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

Пролог


Один из клиентов нашего web-проекта захотел использовать для поиска заказов в системе сканер штрихкодов. Но, к сожалению, полностью отказался от идеи работы с ними в режиме имитации клавиатуры — только эмуляция COM-порта.
Вариантов решения было не особенно много:
  • отдельное нативное приложение, которое бы отправляло запрос на наш сервер, а сервер бы отдавал команду в браузер
  • работа с COM портом непосредственно из браузера

К счастью, есть способ решения проблемы вторым путём.

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

SQL HowTo: три WHERE в одном запросе

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

При реализации некоторых прикладных задач в рамках экосистемы СБИС случается сталкиваться с неочевидными возможностями PostgreSQL, которые позволяют вместо сложной логики создать решение "в один ход".

Сегодня на примере вполне реальной задачи рассмотрим такие возможности оператора INSERT ... ON CONFLICT.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Что нужно знать программисту про интеграцию сайта и 1С

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

Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.

Цель написания поста  – изложить всю информацию по теме человеческим языком.

Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».

Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов. 

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

В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии27

Мониторинг WebRTC стримов с помощью Prometheus и Grafana

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

Системы мониторинга — очень нужная для админа вещь, ведь они позволяют получать от сервисов метрики, которые:

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Строим систему доменных событий в модульном монолите

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

Всем привет! В этой статье хочу поделиться опытом построения системы доменных событий (domain events) в нашем модульном монолите и микросервисах, рассказать о том, как мы гарантируем их доставку, следим за консистентностью в рамках транзакций, используя transactional outbox, чем доменные события отличаются от интеграционных и всё это в рамках multi tenant приложения. Подробнее под катом.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии37

DI из ада

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

Все мы любим Spring. Или не любим. Но по крайней мере знаем. Если вы Java-программист, то вероятно используете этот фреймворк каждый день в своей работе. Spring — это огромная платформа, которая предоставляет большой функционал. Тем не менее во главе угла стоят две вещи — это DI (Dependency Injection) и IoC (Inversion of Control). Концепции, которые были призваны, чтобы сделать наш код более читаемым и поддерживаемым. Но к несчастью, все оказалось не так радужно. Именно это мы сегодня и обсудим.


Читать дальше →
Всего голосов 14: ↑9 и ↓5+8
Комментарии42

Envoy для самых маленьких

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


Всем привет!


Я работаю бэкенд-разработчиком в компании Tinkoff, где участвую в разработке платформы CRM-системы для обслуживания физических и юридических лиц.


Использование edge proxy и балансировщика в частности — это почти мастхэв при построении современных систем. Сегодня на рынке представлено большое количество разнообразных решений, у каждого из которых есть преимущества и недостатки. Мы остановимся на одном из самых свежих — Envoy.


Envoy — это высокопроизводительный балансировщик, реализованный на C++. Его разработала компания Lyft — сервис заказа такси в Штатах, прямой конкурент Uber — для использования как с отдельными сервисами, так и в качестве связующего звена в сложных микросервисных системах. В том числе для реализации относительно свежего архитектурного явления — service mesh.


Формируя основной фундамент нашей платформы, он реализует cors, access-control, rate limiting, outlier detection, проверку jwt и многое другое.


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

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

Как оставаться отказоустойчивым, переходя на микросервисы на PHP (и как правильно падать)

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

Когда-то вы кодили на одном большом и могучем серваке, с кучей памяти и кучей процов. Сервер был безграничен, все ваши сервисы были здесь, все ваши Redis’ы и даже зачастую MySQL-и были тут. Все ваши приложения были здесь же: какая-то аналитика, какой-то бэкенд для админки, еще десяток сервисов — все было рядом. 

Но вот вы заехали в Swarm. Все приложения — это набор контейнеров. А контейнеры это, по сути, набор микросерверов со своей файловой системой, своей памятью, своими процами. И они уже не всегда рядом. Соответственно, это тянет за собой некоторые изменения. 

Читать далее
Всего голосов 16: ↑15 и ↓1+17
Комментарии2

Как я сократил код для нагрузочного тестирования в три раза

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


Главная концепция нагрузочного тестирования — автоматизировать все, что можно. Берёте инструмент, пишете конфиг и сценарий, запускаете имитацию реальной нагрузки. Чем меньше кода, тем лучше.

Автоматизировать нагрузочное тестирование не так сложно, как может показаться на первый взгляд. Для этого нужен правильный инструмент.

Я расскажу, почему мне не подошел Яндекс.Танк в связке с Pandora и как я в три раза сжал код своей утилиты тестирования без потери производительности.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+27
Комментарии6

Из Vue 2 на Vue 3 – Migration Helper

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

Решил я написать помощник миграции из Vue 2 (options-api) в Vue 3 (composition-api) с авторазделением на композиции с помощью алгоритма Косарайю по поиску областей сильной связности

Дело было так...
Всего голосов 5: ↑5 и ↓0+5
Комментарии4
1
23 ...

Информация

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