Как стать автором
Обновить
14
6.1
Максим Епихин @mepihin

PHP-программист

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

Айтишницы, айда рожать

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

Совсем недавно мы призывали вернуться на родину всех, кто уехал от мобилизации, рассказывая о том, как родное государство печётся о работниках сферы ИТ. Однако нельзя забывать: по российским законам тотально военнообязанными являются мужчины, в то время как призвать могут только тех женщин, у которых есть военно-учетная специальность. Значит ли это, что целая половина населения и заметное число занятых в ИТ женщин останутся без отеческой заботы правительства?

Нет, нет и ещё раз нет!

Несмотря на мнения отдельных представителей власти о том, что рождение ребёнка — это билет в бедность, общий курс заботы правительства о женской части населения уже ясен: всем срочно и много рожать!

Читать далее
Всего голосов 163: ↑107 и ↓56+75
Комментарии965

Уходим в кэш в высоконагруженных системах

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

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

На конференции PHP Russia 2021 Павел Паршиков, backend engineer в Авито, представит доклад «Уходим в кэш в высоконагруженных системах». А в этом  интервью мы поговорили о том, хорош ли PHP для растущих в плане нагрузки проектов, и какие его инструменты лучше применять.

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

Логирование в распределенном php-приложении

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


В статье пойдет речь о том, какую пользу оказывает логирование. Расскажу о логах по PSR. Добавлю немного личных рекомендаций по работе с уровнем, сообщением и контекстом логируемого события. Будет приведен пример, как можно организовать логирование и мониторинг с помощью ELK в приложении, написанном на Laravel и запущенном через Docker на нескольких инстансах. Распишу важное правило системы оповещения. Приведу пример скрипта, который поднимает одной командой весь стек мониторинга.

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

Как и зачем тестировать код на бэкенде: рекомендации для новичков

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

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

Также разберём базу: виды тестов, их отличия друг от друга, плюсы и минусы. Если вы только начинаете разбираться в тестировании, вам это точно пригодится.

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

Теория цвета как основа для дизайна и иллюстрации

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

Цвета присутствуют во всем, выражаясь во множестве оттенков, градиентов и комбинаций. Если повнимательнее рассмотреть окружающий нас мир, то можно удивиться, насколько большим разнообразием цветов и оттенков он наполнен. В то время как некоторые из них непосредственно вызывают в нас приятные чувства, существуют также и уникальные цветовые смеси, оказывающее заметное влияние на человеческие эмоции. Для лучшего же понимания всех этих особенностей, необходимо знать теорию цвета.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+52
Комментарии8

Шаблоны проектирования с человеческим лицом

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

image


Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

Читать дальше →
Всего голосов 148: ↑134 и ↓14+120
Комментарии98

Form design patterns. Обзор книги

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

Введение от автора обзора


Книга раскрывает, порой не очевидные для дизайнеров и фронтендеров, темы оформления полей, концепции работы с типами данных и юзабилити. Книга будет полезна и новичкам и разбирающимся в теме проектировщикам интерфейсов, т. к. первым даст понимание основ, а вторым пищу для размышлений над, порой спорными, паттернами проектирования. Обзор будет представлен в виде коротких тезисов из книги и краткими комментариями обзорщика.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+22
Комментарии36

Микросервисные паттерны проектирования

Время на прочтение6 мин
Количество просмотров94K
Здравствуйте, Хабр!

В ближайшее время читайте пост о русском переводе долгожданной книги "Создание Микросервисов" Сэма Ньюмена, которая уже отправилась в магазины. Пока же мы предлагаем почитать перевод статьи Аруна Гупты, автор которой описывает самые интересные паттерны проектирования, применимые в микросервисной архитектуре
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии7

Coroutines в PHP и работа с неблокирующими функциями

Время на прочтение18 мин
Количество просмотров80K
Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

Генераторы


Суть генератора в том, что это функция, которая возвращает не просто одно значение, а последовательность значений, где каждое значение выброшено одно за другим. Или, другими словами, генераторы позволяют вам реализовать итератор, без лишнего кода.
Читать дальше →
Всего голосов 111: ↑103 и ↓8+95
Комментарии57

Удобная и долгожданная: поддержка enum в PHP 8.1

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

В PHP 8.1 наконец-то добавили встроенную поддержку перечислений — enum. Под катом — перевод статьи блогера и PHP разработчика ​​Брента с обзором новых возможностей, дополнениям и комментариями разработчиков о том, что они думают о поддержке перечислений в PHP 8.1.

Как реализованы перечисления →
Всего голосов 14: ↑10 и ↓4+9
Комментарии8

Пришло время избавиться от Angular и сэкономить миллиарды долларов

Время на прочтение6 мин
Количество просмотров59K
Я знаю, что эта статья вызовет поток гневных комментариев, но… так тому и быть. Кто-то должен наконец озвучить то, о чём уже некоторое время размышляют программисты, обладающие некоторым опытом.

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



Количество случаев практического применения фреймворков, выдающих подобный код, наподобие Angular, растёт как снежный ком. В результате разработчиков подхватила лавина, ввергнувшая их в настоящий «ад программного кода». При этом события развиваются по нарастающей. Сейчас нельзя заметить даже признаков того, что всё это безумие хотя бы выходит на какой-то постоянный уровень.

Каждый день мне на почту приходят вакансии. Компании всех размеров и мастей рыщут в поисках ОПЫТНЫХ Angular 4, 5, 6, 7, 8, 10, 12-разработчиков, которые как минимум 5 лет занимались разработкой и поддержкой того дурдома, который все называют «современнейшими пользовательскими интерфейсами».

Это — не нечто «современнейшее». Это — дурдом.

Несколько лет назад я был на собеседовании в EA (Electronic Arts). Там мне сказали, что компания избавляется от всех своих UI-фреймворков и возвращается к написанию кода на чистом JavaScript (речь идёт о модулях, или о том, что тот, кто работает с jQuery, назвал бы JS-плагинами). Я был удивлён и заинтригован.

Теперь о причинах подобного хода знают не только в EA, но и во всех остальных компаниях.
Читать дальше →
Всего голосов 125: ↑90 и ↓35+80
Комментарии196

PSR Стандарты

Время на прочтение15 мин
Количество просмотров142K
PHP-FIG

PSR — Чуть больше, чем стиль оформления кода.

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

Ребята из PHP-FIG (PHP Framework Interop Group), группа концепций совместимости PHP, которые занимаются развитием PSR (PHP Standards Recommendations) шагнули далеко вперед. Поэтому давайте разберемся, что из себя представляет PSR…

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

5 подходов к облачной автоматизации

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

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

Читать дальше: 5 подходов к облачной...
Рейтинг0
Комментарии0

Perfomance-менеджмент через оценки — от идеи до бета тестирования

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

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

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

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

60+ чатов и ютуб-каналов для PHP-разработчика, которые советуют ребята из сообщества

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


В середине лета мы начали крутить идею создания сайта со всеми PHP-активностями России, Украины и Беларуси. Зачем? Их стало так много в разных форматах, что пора бы уже агрегировать для удобства в одном месте. Сайт запилили, а еще расспросили организаторов городских комьюнити по PHP, какими ресурсами они пользуются каждый день. Собрали в подробный список, чтобы всегда был под рукой.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+21
Комментарии4

9 репозиториев, о которых должен знать каждый веб-разработчик

Время на прочтение4 мин
Количество просмотров21K
В наши дни GitHub — это универсальное хранилище всего, что связано с веб-разработкой. Фреймворки, демоверсии, всевозможные коллекции — вероятно, нет ничего такого, что вы не могли бы найти на GitHub. Однако в этом огромном количестве и заключается проблема. Есть классные вещи, о которых вы, вероятно, никогда не услышите просто потому, что репозиториев много. Сегодня, специально к старту нового потока курса по веб-разработке мы делимся подбокой некоторых из самых популярных репозиториев GitHub, о которых вы должны знать, каждый из которых имеет по крайней мере ~30 000 звёзд.

Приятного чтения
Всего голосов 45: ↑23 и ↓22+6
Комментарии5

Не лайтхаусом единым: как проверить свой сайт со всех сторон

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


Когда мы говорим о веб-валидаторах и оптимизации сайта под них, мы чаще всего имеем ввиду Lighthouse/Pagespeed Insights от Google, который давно стал де-факто стандартом для оценки производительности сайта. Кто-то стремится к заветным 100 баллам даже на прототипах и шаблонных приложениях в две кнопки, кто-то в шутку создает абсолютно недоступный сайт с идеальным рейтингом, но для всех фронтендеров лайтхаус предоставляет вменяемую, хоть и довольно поверхностную, аналитику производительности сайта и поиск бутылочных горлышек. Однако скорость загрузки — лишь один из множества параметров, которые стоит проверять на своём сайте, и для большинства других есть свои валидаторы и скоринговые алгоритмы. Мы рассмотрим инструменты для каждого из значимых направлений и составим список, по которому стоит прогонять свой сайт, чтобы в дальнейшем не отлавливать проблемы вручную.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+31
Комментарии4

Определяем пульс по вебкамере в 50 строчек кода

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

Привет Хабр.

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

Для тех кому интересно что получилось, продолжение под катом.

Читать далее
Всего голосов 67: ↑66 и ↓1+86
Комментарии72

Не стоит пользоваться OFFSET и LIMIT в запросах с разбиением на страницы

Время на прочтение5 мин
Количество просмотров50K
Прошли те дни, когда не надо было беспокоиться об оптимизации производительности баз данных. Время не стоит на месте. Каждый новый бизнесмен из сферы высоких технологий хочет создать очередной Facebook, стремясь при этом собирать все данные, до которых может дотянуться. Эти данные нужны бизнесу для более качественного обучения моделей, которые помогают зарабатывать. В таких условиях программистам необходимо создавать такие API, которые позволяют быстро и надёжно работать с огромными объёмами информации.


Читать дальше →
Всего голосов 47: ↑29 и ↓18+23
Комментарии70

Самый простой алгоритм для создания Филворда (Часть 1)

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

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


Под «Филвордом» я буду иметь ввиду эту многим знакомую игру.



В игре есть поле размером обычно NxN заполненное словами. Наша цель — найти все слова.
В нашей версии не будет букв в поле, которые не принадлежат ни одному слову и служат для сбивания игрока, а также не будет букв, которые принадлежат сразу нескольким словам. Обычный классический Филворд. И так, задача поставлена. Нужно решать.


Первым делом я всегда разбиваю задачу на подзадачи. Для решения этой задачи мне понадобится:


  1. БД со словами.
  2. Алгоритм, который вставляет слова в поле.
  3. Алгоритм, который проверяет выбранное пользователем слово на корректность. К примеру мы в поле поместили слово «программирование», а пользователь увидел там «мир» и выделяет это слово. Пользователь прав – такое слово есть, но мы его не загадывали. Нам нужен алгоритм, который будет проверять догадки пользователя и говорить ему прав он или нет.

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


1) БД со словами.


Для решение данной задачи я сделал простую БД с несколькими таблицами, каждая из которых хранит в себе слова определенной длинны. Таблица words_2 хранит в себе слова длинной в две буквы. Таблица words_3 хранит в себе слова длинной в три буквы и так далее. Выглядеть это будет примерно так:


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

Информация

В рейтинге
848-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

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

Backend Developer, Web Developer
Middle
От 200 000 ₽
JavaScript
PHP
Yii framework