Pull to refresh
88
40.8
FanatPHP @FanatPHP

User

Send message

Основы Docker: контейнеризация, Dockerfile и Docker Compose. Часть 2

Level of difficultyMedium
Reading time8 min
Views11K

Привет, Хабр! Меня зовут Толя, я лидер компетенции Java в Цифровом СИБУРе. Наш прошлый материал о Docker собрал классный фидбэк, поэтому мы решили развить тему и подготовить ещё несколько статей, двигаясь от простого к сложному.

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

Читать далее
Total votes 14: ↑11 and ↓3+15
Comments3

Отладка PHP сценариев в Docker-контейнере с помощью PhpStorm и Xdebug. Глубокое погружение

Level of difficultyEasy
Reading time11 min
Views6.1K

Одним из ключевых аспектов успешной разработки является эффективная отладка кода.

Статья посвящена настройке и использованию PhpStorm, Xdebug и Docker для отладки PHP-скриптов в Docker-контейнере. Статья предлагает актуальную информацию (на момент написания) и оформлена в виде подробнейшего пошагового туториала. Информация действительна для ОС Windows. В других ОС возможны варианты.

Цель статьи — не просто создать пошаговой конспект настроек, а объяснить, как всё это взаимодействует. Это поможет избежать затруднений при изменении интерфейса IDE в будущем. Возможно, статья выглядит слишком педантичной. Но гуру всегда смогут прочесть её по диагонали, зато новички в этой теме найдут для себя много полезного.

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

Как стать продакт-менеджером бесплатно? Программа обучения с нуля

Level of difficultyEasy
Reading time2 min
Views5.5K

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

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

Читать далее
Total votes 20: ↑16 and ↓4+13
Comments2

PHPStorm + XDebug + Docker

Reading time3 min
Views35K

Ещё одна статья на избитую тему? Да! Потому что за два часа поиска не нашёл ни одной, по которой можно было пройтись от и до и получить работающее окружение.

Шагов, на самом деле, немного, все очень простые, нужно лишь...

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

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

Reading time7 min
Views41K

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

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

Читать далее
Total votes 146: ↑142 and ↓4+165
Comments174

Профилирование PHP (Laravel) приложений с xhprof. Учимся искать ботлнеки

Level of difficultyEasy
Reading time9 min
Views8.9K

Привет, PHP-шники!

Вам знакомо то чувство, когда ваш PHP-код отрабатывает за дофига миллисекунд, а иногда и секунд, и вы не можете понять, в чём дело и где тот говнокод, который я (или не я, а мой коллега 😵‍💫) когда-то написал? В этой статье хочу немного рассказать на примере профайлинга PHP-кода, как перестать гадать и начать выявлять боттлнеки, которые всё тормозят. Короче, помочь поискать говнокод.

Читать далее
Total votes 15: ↑15 and ↓0+20
Comments15

Почти все, что вы хотели бы знать про Docker

Level of difficultyEasy
Reading time11 min
Views62K

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

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

Читать далее
Total votes 65: ↑60 and ↓5+65
Comments57

Вы пожалеете об использовании естественных ключей

Level of difficultyEasy
Reading time5 min
Views20K

Хотя я живу в Копенгагене и в основном перемещаюсь по городу на велосипеде, у меня есть и машина, чтобы добираться до других частей страны. В Дании автомобили через каждые два года проходят обязательный официальный осмотр; я проходил его за свою жизнь несколько раз. Несколько лет назад механик, выполнявший осмотр, сообщил мне о том, что у машины неправильный номер кузова.

Я немного занервничал, потому что покупал машину с рук, и внезапно задался вопросом, действительно ли всё так, как я думал. Неужели я непреднамеренно купил краденную машину?

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

Читать далее
Total votes 45: ↑42 and ↓3+55
Comments126

Древовидные структуры в SQL в одну таблицу

Level of difficultyMedium
Reading time11 min
Views14K

Как реализовать хранение и работу каталога папок в PostgreSQL? Есть большое количество вариантов. Но хочется, чтобы реализация выглядела лаконично, не нарушала прозрачность выполняемых операций, не вызывала блокировок, не требовала большого вовлечения клиента в специфику работы и т.д. Потому сегодня попробуем реализовать хранение древовидных структур и работу с ними без использования триггеров, блокировок, дополнительных таблиц (представлений) и внешних инструментов в SQL.

Читать далее
Total votes 46: ↑46 and ↓0+53
Comments29

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

Level of difficultyMedium
Reading time20 min
Views7.7K

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

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

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

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

Level of difficultyMedium
Reading time12 min
Views20K

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

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

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

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

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

Level of difficultyEasy
Reading time14 min
Views19K

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

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

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

Level of difficultyEasy
Reading time4 min
Views37K

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

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

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

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

Level of difficultyMedium
Reading time8 min
Views4.5K

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

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

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

Level of difficultyMedium
Reading time3 min
Views6K

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

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

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

Level of difficultyEasy
Reading time8 min
Views90K

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

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

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

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

Читать далее
Total votes 14: ↑12 and ↓2+11
Comments39

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

Level of difficultyMedium
Reading time12 min
Views23K

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

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

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

Level of difficultyEasy
Reading time2 min
Views2.1K

История началась чуть больше двух лет назад. В силу обстоятельств я на две недели остался заперт дома и проводил большую часть времения в компании ноутбука. Чтобы отвлечься рефрешил странички 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 38: ↑37 and ↓1+44
Comments8

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

Reading time10 min
Views13K

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

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

Information

Rating
162-nd
Registered
Activity

Specialization

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