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

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

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

Разборка в Шторме

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров16K

PhpStorm — лучшая IDE. Но не все дефолтные настройки могут подходить. Особенно в новом UI. Что и почему можно поменять? Сейчас расскажу.

Давай
Всего голосов 14: ↑13 и ↓1+16
Комментарии41

Кейс: как мы корпус контроллера делали

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

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

Читать далее
Всего голосов 33: ↑32 и ↓1+38
Комментарии118

Автоматическая документация по коду для API в Laravel

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

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

Ждать долго не пришлось, при обновлении на сервере PHP c 7.2 до 7.4 - мы получили страницу с описанием ошибки, вместо документации. Ошибка найдена в библиотеке, которую мы использовали для рендеринга UI документации. ПР на гитхабе был создан быстро, но провисел в статусе open почти неделю. После этого, тикет насчет документации пошел в работу.

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

Конечные автоматы на практике: Symfony Workflow

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

В университетские времена я столкнулся с такой математической абстракцией, как конечный автомат (КА). Эта модель была полезна для понимания и создания комбинированной логики. Спустя 15 лет КА вернулся в мою жизнь в виде компонента Symfony Workflow. В этой статье я расскажу, как наша команда при помощи Symfony Workflow улучшила код продукта Links.Sape, переводя его с legacy.

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

Как мы провели второй русскоязычный Laravel-митап

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

Привет, за клавиатурой Миша Радионов, и я снова расскажу вам про Laravel. Нет, не про тонкости этого фреймворка, а про Laravel-митап, который мы провели в Студии Флаг уже во второй раз.

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

WebSocket ориентированое Api на Nest.js

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

В этой статье я расскажу как создал модуль под Nest.js позволяющий писать классическое RESTFull API со swagger'ом но клиент будет полностью на WebSocket'ах, звучит странно не так ли? Но зато очень быстро и удобно по итогу)

Идея состоит в том, что вы пишите классическое документированное апи, со всеми типами и плюшками.

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

PHP & Kafka — production sadness

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

Это короткая история наивного любителя популярных технологий.

Ранее я уже писал почему на моем текущем проекте мы решили использовать — Apache Kafka, если вкратце, то цель — унификация используемых технологий в компании.

Сфера деятельности компании это ставки на спорт, зона ответственности моей команды состоит в том, чтобы принять и оцифровать происходящее на игровом поле, будь то реальное поле з зеленой травкой или серый бетон виртуального CS:GO.

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

Итак, вернемся к нашим баранам.

Думаю никому не секрет, что в больших компаниях используется практика использования нескольких типов языков программирования.

Там где можно сэкономить — экономят.

Наша компания не исключение. Для обеспечения организационной части бизнеса — СРМ и интерфейсов первичного ввода данных(интерфейс судьи/статиста) мы используем PHP, для того чтобы производить сложные вычисления, используются иные технологии.

Для обмена данными между системами, наиболее принятым способом, является применение очередей.

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

Учимся жить с Kafka без Zookeeper

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

При всех достоинствах Kafka как распределенного хранилища потока сообщений, боль вызывало раздельное хранение метаданных (топологии разделов, конфигурации кластера и прочего) и необходимость запуска в кластере рядом с Kafka еще и Apache Zookeeper. Побочным эффектом такого соседства (кроме дополнительных забот об администрировании и мониторинге) является долгое время восстановления после сбоя при больших размерах кластера, значительном количестве разделов или сложной топологии групп. Но ситуация улучшается и отличная новость появилась полторы недели назад в KIP-833, что в ближайшей версии Kafka 3.3 новый протокол согласования метаданных (KRaft), работающий внутри Kafka без Zookeeper, будет признан Production-Ready и далее постепенно зависимость от Zookeeper будет помечена как deprecated и удалена. В этой статье мы поговорим об особенностях протокола KRaft и разберемся как настроить новый кластер Kafka без необходимости установки Zookeeper.

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

Настройка Xdebug 3 на внешнем сервере в Docker-контейнере через SSH-туннель

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

В нашей организации используется такой подход к разработке - на локальной машине (Windows 11) установлен PhpStorm и находится репозиторий с кодом. В PhpStorm настроена автоматическая выгрузка изменений на dev-стенд (внешний сервер), где и исполняется код. На dev-стенде: Ubuntu 20 и Docker (swarm mode).

Общий принцип настройки Xdebug таков:

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

Душевный Mikrotik против бездушного РКН и такого же провайдера

Время на прочтение3 мин
Количество просмотров84K
Статья описывает способ получения доступа к ресурсам ошибочно попавшим под раздачу плюшек Роскомнадзором (далее РКН). Именно ошибочно попавшим. Мы законопослушные граждане и не ходим туда куда нам запрещают наши госорганы. Так что если вдруг вы решите воспользоваться способом для того что бы пойти на какие то “законно” заблокированные ресурсы, суровый меч правосудия возможно взметнется над вашей головой и я в этом не виноват, поскольку вот прямо сейчас я вас предупредил!
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Комментарии91

Что смотрели и читали по PHP в 2021

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

В декабре прошел второй ежегодный опрос русскоязычного PHP-сообщества. Ответов удалось собрать в два раза больше, чем годом ранее — больше трех тысяч. Конечно, снова спросили у ребят про статьи и видео, которые запомнились за год.

Как собирались мнения

Ссылку на опрос помогли распространить городские чаты и админы крупных PHP-каналов, деврелы компаний, где в стеке есть PHP, конференция PHP Russia, сайт phpcommunity.ru. Вот полный список классных ребят и компаний, которые помогли исследованию сбыться.

Еще пара полезных ссылок на старте.

- Подробнее про результаты опроса за 2021 и сравнение с 2020.

- А здесь 80+ видео и статей за 2020 — в подборке, подготовленной @spasibo_kep

Поехали.

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

Как подружить ltree и Laravel

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

Вообще Postgres очень известен и о расширении ltree написано, если немного, то достаточное кол-во публикаций, в том числе и на Хабре тоже, да и сообщество Laravel довольно обширное.

Но как ни странно, я обнаружил полное отсутствие каких-либо библиотек для работы с расширением ltree (от PostgreSQL) под Laravel на GitHub.

Есть некоторые попытки для Yii2, также есть наработки для Symfony (по моему bundle для 2-й, из коробки не работает), и на этом, пожалуй, все.

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

На мой взгляд, это очень удобная библиотека, о которой я вам сегодня хочу рассказать. И буду очень рад, если вам она будет полезна.

Погнали!
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Когда использовать неструктурированные типы данных в PostgreSQL? Сравнение Hstore vs. JSON vs. JSONB

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

С тех пор как PostgreSQL начал поддерживать NoSQL (посредством HStore, JSON и JSONB), вопрос о том, когда использовать PostgreSQL в реляционном режиме, а в каких в режиме NoSQL, стал подниматься достаточно часто. Получится ли у вас полностью отказаться от традиционных структур таблиц и работать с представлениями документов в будущем? Смешивать ли оба подхода? Ответ на этот вопрос не удивителен — все зависит от многих факторов. Каждая новая модель хранения данных включая Hstore, JSON и JSONB имеет свои идеальные варианты применения. Тут мы копнём глубже и узнаем об особенностях каждой из них и посмотрим когда что использовать


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

Honeypot на RouterOS

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

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

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

Формирование документов на основе ODT шаблонов. ODT to PDF

Время на прочтение4 мин
Количество просмотров11K
Здравствуйте, уважаемы хабровчане!

Не так давно мне пришлось столкнуться с типичной задачей – формировать документы с пользовательскими данными на основе шаблонов ODT средствами PHP. Звучит весьма тривиально, но намучиться пришлось сильно. Дело в том, что ни одно из доступных средств, так или иначе, не подошло. Одни библиотеки формировали документ криво, другие не поддерживали русские шрифты, третьи – двигали картинки в стиле Harlem Shake. Вот и пришлось «велосипедить».

Итак, задача вкратце:

  1. Обработать ODT шаблон. Заменить placeholder’ы на пользовательские значения
  2. Конвертировать в pdf. Показать пользователю

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

Как мы делали универсальный сервис подписания для инфраструктуры Госуслуг на C и GO. Часть 2

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

Это вторая часть статьи, посвященной универсальному сервису подписания для инфраструктуры Госуслуг. Первая часть статьи была посвящена GO-части нового сервиса, в которую входит конфигурирование, тестирование, ресты, файловый менеджер и планировщик. Всему тому, что происходит до того, как данные будут переданы в С-часть для подписания и верификации. Также там кратко описаны основные предпосылки к создания нового сервиса. 

Приступать к чтению этой статьи рекомендуется строго после ознакомления с первой частью.

Во второй части будет рассмотрена CGO-прослойка и C-часть, в которой происходит подписание и верификация данных. Тут же будут описаны самые важные оптимизации, ради которых этот сервис и создавался.

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

Решение проблемы N+1 запроса без увеличения потребления памяти в Laravel

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

Одна из основных проблем разработчиков, когда они создают приложение с ORM — это N+1 запрос в их приложениях. Проблема N+1 запроса — это не эффективный способ обращения к базе данных, когда приложение генерирует запрос на каждый вызов объекта. Эта проблема обычно возникает, когда мы получаем список данных из базы данных без использования ленивой или жадной загрузки (lazy load, eager load). К счастью, Laravel с его ORM Eloquent предоставляет инструменты, для удобной работы, но они имеют некоторые недостатки.
В этой статье рассмотрим проблему N+1, способы ее решения и оптимизации потребления памяти.

Читать дальше →
Всего голосов 18: ↑17 и ↓1+24
Комментарии26

Как у меня увели домен

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

Хочу поделиться радостной новостью, если у вас есть домен на reg.ru или его партнерах 2domains.ru или других, то возможно это не надолго, в смысле есть он у вас не надолго.

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

Читать далее
Всего голосов 57: ↑53 и ↓4+76
Комментарии210

Что означает RISC и CISC?

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

Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?

Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.

Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Читать дальше →
Всего голосов 61: ↑57 и ↓4+68
Комментарии89

Информация

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