Pull to refresh
54
1.2
FanatPHP @FanatPHP

User

Send message

Анемичная модель предметной области и логика в сервисах

Level of difficultyMedium
Reading time20 min
Views4.1K

Анемичная модель предметной области (Anemic domain model) это такая модель, где сущности содержат только свойства, а бизнес-логика находится в сервисах. Ее противоположность это богатая модель предметной области (Rich domain model), где логика находится в сущностях, а cервиcы рекомендуют писать только в редких случаях.

В этой статье я хочу показать, почему логика в сервисах является более правильным подходом. Мы рассмотрим пример бизнес-требований и их реализацию с Anemic domain model.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments133

Как я обработал один миллиард строк в PHP

Level of difficultyMedium
Reading time12 min
Views19K

Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга.

Моё участие в проекте было мотивировано присутствием в нём двух моих коллег, которые достигли лидирующих позиций.

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

Читать далее
Total votes 76: ↑74 and ↓2+72
Comments33

Мы пилили монолит — много нас, а он один. Полезные советы от команды Яндекс Еды

Level of difficultyEasy
Reading time14 min
Views17K

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

Распилить
Total votes 42: ↑39 and ↓3+36
Comments36

Фишинг «фичи» Телеграма

Level of difficultyEasy
Reading time4 min
Views29K

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

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

Читать далее
Total votes 120: ↑118 and ↓2+116
Comments61

Как ошибки проектирования при разработке на Symfony могут привести к перерасходу ресурсов и замедлению работы системы

Level of difficultyMedium
Reading time8 min
Views3.9K

Сегодня хочу рассказать о том, какие ошибки можно допустить на начальном этапе создания e-commerce проекта в проектировании модели данных и в разработке веб-приложения. И, самое главное, как эти ошибки исправить: снизить потребление памяти в 1000 раз и кратно уменьшить нагрузку на дисковую систему. Кейс основан на реальных событиях, однако без упоминания компаний в связи с политикой конфиденциальности и профессиональной этикой.

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments5

Профайлинг Laravel приложений с XDebug и PHPStorm

Level of difficultyMedium
Reading time3 min
Views4.4K

Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи. Везде трубят про удобную отладку PHP-приложений при помощи XDebug и PHPStorm, однако напрочь забывают про замеры времени операций, которые, порой, превышают те самые 3 секунды, которые пользователь будет ждать на странице. Если у Вас есть метод API, который долго работает, самое время его проверить профайлером XDebug, а PHPStorm поможет красиво визуализировать и изучить файл профиля.

Начнём профайлинг
Total votes 8: ↑8 and ↓0+8
Comments9

Flask для начинающих

Level of difficultyEasy
Reading time8 min
Views38K

Как начать работать с Flask

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

Вы новичок в программировании и мечтаете о создании собственных веб-приложений? Эта статья — ваш ключ к пониманию Flask, одного из самых доступных и гибких веб-фреймворков на Python. От установки и простых примеров до работы с данными и базами данных — мы покрываем все, что вам нужно для старта.

За 15-20 минут чтения вы получите не только теоретические знания, но и практические советы от опытного разработчика. Присоединяйтесь к миру веб-разработки и откройте для себя, как просто и увлекательно может быть создание ваших первых веб-приложений с Flask!

Читать далее
Total votes 15: ↑13 and ↓2+11
Comments38

Как мы внедряли Sentry. Часть 1 — установка и настройка

Level of difficultyMedium
Reading time12 min
Views12K

Привет! Я Виталий, DevOps в LEADS.SU, в этой статье хочу рассказать как мы внедряли Sentry self-hosted и приводили к продакшен состоянию, которое должно отвечать требованиям высокодоступности - нельзя терять события ошибок. При этом не хотелось заморачиваться с кластеризацией для разных инструментов (вроде redis, postgresql, clickhouse, kafka и прочее). И тут мы вспомнили про распределенную сеть доставки логов из нескольких узлов td-agent и решили попробовать.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments2

PHPize.online: ещё одна онлайн площадка для работы с PHP с шахматами и библиотекаршами. (SQL и ChatGPT)

Level of difficultyEasy
Reading time2 min
Views2K

История началась чуть больше двух лет назад. В силу обстоятельств я на две недели остался заперт дома и проводил большую часть времения в компании ноутбука. Чтобы отвлечься рефрешил странички StackOverflow и Тостера в поиске интересных вопросов где бы пригодились мои знания. Ккак знают завсегдатаи этих сайтов у вопрошающих требуют "покажи свой код" да и при ответе считается хорошим тоном публикация работающего ответа. В случае PHP или SQL все просто вот https://dbfiddle.uk вот https://onlinephp.io все просто и понятно - написал код лил запрос опубликовал ссылку и готово.

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

Следующий день - все по написанному:
- Отрицание - не может быть что никто такого еще не сделал
- Гнев, Торг, Депрессия - пропущу
- Принятие - похоже придется делать самому

Планирование:
- фронт: тяп ляп HTML/CSS пару строк Javascript, даже JQuery не понадобился :)

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments12

Каково это — быть операционной системой?

Level of difficultyEasy
Reading time4 min
Views16K

Pier-Luc Brault придумал забавную игру, которая превращает вас в... операционную систему. Некий пользователь загружает нас процессами, которые нужно распределять по свободным CPU. Если мы будем плохо справляться с задачей, пользователь выйдет из себя и перезагрузит нас. Game over.  

Читать далее
Total votes 46: ↑45 and ↓1+44
Comments8

Разбираемся с асинхронным PHP

Reading time10 min
Views9.8K

Как перенести обработку электронных писем в отдельный процесс, чтобы он не блокировал исходный веб-запрос? Именно это мы и рассмотрим в данной статье, в частности, всевозможные способы решения данной проблемы на PHP, используя новую инфраструктуру (или без нее).

Читать далее
Total votes 23: ↑19 and ↓4+15
Comments30

ClickHouse: полезные лайфхаки

Level of difficultyMedium
Reading time12 min
Views24K

Я начала пользоваться ClickHouse до того, как это стало мэйнстримом: первый раз я столкнулась c этой базой данных лет 8 назад. C тех пор я уверена, что это лучшая DB для аналитики. Большинство аналитиков, которых я знаю, в восторге от ClickHouse (иногда чтобы проникнуться, требуется немного времени: разобраться и привыкнуть к синтаксису).

В этой статье я расскажу что такое ClickHouse и почему я считаю его идеально подходящим мощным инструментом для аналитики. А также поделюсь tips & tricks из моего опыта. Поехали.

Поехали
Total votes 48: ↑47 and ↓1+46
Comments4

Как использовать Midjourney: подробный гайд, лайфхаки, промты

Level of difficultyEasy
Reading time7 min
Views81K

Ранее мы рассказывали о своих впечатлениях и результатах тестирования приложений на основе нейросети. В своей работе на платформе «РСХБ в цифре» мы активно используем Midjourney и искусственный интеллект. В новой статье хотим поделиться советами, которые позволят с нуля разобраться в основных функциях и командах, чтобы приступить к созданию интересных изображений с помощью этого приложения.

Читать далее
Total votes 54: ↑53 and ↓1+52
Comments10

Делюсь опытом участия в хакатоне от Совкомбанка

Reading time12 min
Views3.7K

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

Читать далее
Total votes 20: ↑15 and ↓5+10
Comments9

Двухуровневый CI-процесс PHP-проекта

Reading time5 min
Views4K

Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. Целей у непрерывной интеграции две:

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments9

[Личный опыт] Неожиданная страна для релокейта: как Киргизия очаровывает гостеприимством, комфортом и климатом

Reading time9 min
Views27K

Сейчас в поисках простого релокейта многие отправляются в Сербию, Грузию или Казахстан. Но есть страна, куда переехать еще проще — причем по уровню комфорта она не слишком уступает многим другим. Речь о Киргизии, или, как его называют местные, Кыргызстане.

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

Читать далее
Total votes 62: ↑53 and ↓9+44
Comments191

Как и зачем компании накручивают голоса на хабре

Reading time9 min
Views20K


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

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

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

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

Чем это плохо для нас, читателей: мы не получаем адекватную оценку статей на хабре, средние статьи занимают первые места, а по-настоящему качественный материал теряется за накрутками.

Сократ мне друг, но истина дороже

Поэтому расскажу вам, механизм рейтинга, и как компании его накручивают. И предложить методы борьбы с накрутками у компаний, для администрации Хабра.
Читать дальше →
Total votes 255: ↑242 and ↓13+229
Comments227

CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Reading time6 min
Views49K

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привык полагаться. Если тут нет вашего любимого - дайте мне знать в комментариях :)

Читать далее
Total votes 114: ↑107 and ↓7+100
Comments83

Как за неделю превратить Open redirect в RCE

Level of difficultyMedium
Reading time17 min
Views8.7K

В этой статье я расскажу вам о том, как ровно год назад я связал в цепочку несколько проблем безопасности для достижения Удаленного выполнения кода (RCE) на нескольких серверах компании VK. Я постарался описать свои шаги в подробностях, так как мне самому, как постоянному читателю отчетов по баг-баунти, всегда хочется понять, как исследователь мыслит во время обнаружения необычных уязвимостей. Надеюсь, для вас эта статья будет интересна.

Читать далее
Total votes 33: ↑33 and ↓0+33
Comments17

Работа с Веб-сокетами на PHP

Reading time3 min
Views13K

PHP - едва ли первое, что придет в голову, когда стоит задача поднять сервер веб-сокетов. Практически каждая статья в интернете будет пестрить предложениями использовать для этого NodeJS, Python или Go. Но поскольку PHP - это однозначно первое, что приходит в голову, когда речь идет о веб-приложениях, почему бы не попробовать?

На самом деле, запуск сервера веб-сокетов на PHP довольно прост. Существует превосходная библиотека Ratchet, позволяющая работать на любом фреймворке (или вовсе без него) полноценно и легко.

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

Читать далее
Total votes 17: ↑10 and ↓7+3
Comments20

Information

Rating
1,213-th
Registered
Activity

Specialization

Backend Developer, Web Developer
Middle
From 140,000 ₽
PHP
OOP
MySQL
Linux
Git
SQL
Database
Nginx
Bash
Laravel