Pull to refresh
0
Александр Пенкин@Sleepread⁠-⁠only

Back-end team lead

Send message

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

Level of difficultyEasy
Reading time5 min
Reach and readers2.6K

На ревью вашего юнита приходит мало людей? Вы получаете мало фидбэка о ваших продуктах? На ваших ревью не задают вопросы даже стейкхолдеры? А может быть вы вообще не знаете, как организовать ревью?

Привет! Меня зовут Маша, я — менеджер по коммуникациями и внедрениям в Dodo Engineering. Сегодня я расскажу, как сделать ревью вашего юнита интереснее, а его участников — более вовлечёнными. А еще поделюсь практическими советами и своими шаблонами.

Читать далее

Человекочитаемый код

Level of difficultyEasy
Reading time10 min
Reach and readers11K

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

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

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

Здесь собрано несколько советов, которые позволяют мне делать свой код человекочитаемым и простым для понимая коллегам. Ведь компилятор сможет прочитать любой синтаксически правильный код, а человек — нет.

Читать далее

Зачем нужен static при объявлении анонимных функций?

Reading time2 min
Reach and readers24K

Буквально на днях пришел вопрос от одного из подписчиков касательно одного из постов моего telegram канала. Его смутил вот такой кусок кода:

usort($firstArray, static function($first, $second) { return $first <=> $second;
});

Вопрос звучал так:

"Зачем делать callback’и в функции сортировки (usort), статическими?"

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

Читать далее

Найти подстроку в строке

Reading time6 min
Reach and readers38K

Алгоритм поиска строки Бойера — Мура — алгоритм общего назначения, предназначенный для поиска подстроки в строке.

Давайте попробуем найти вхождение подстроки в строку.

Подготовка к собеседованию

Тимлид — Таков путь

Reading time6 min
Reach and readers21K
В преддверии нового года хочется всем тимлидам пожелать расслабиться, отпустить все трудности на работе и готовиться ĸ празднованию с семьей, с друзьями.

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

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


Итак, немного о рабочих буднях тимлида:

  1. Берешь на работу джуна, учишь его, лелеешь. Вкладываешь в него силы и время, а через год он расправляет крылья и уходит искать лучшее место с зарплатой в три раза выше.
    Таков путь.
  2. Полгода отĸрыта ваĸансия на разработчиĸа без результата. На собеседования приходят мидлы, просят зарплату больше твоей и говорят, что уже есть офферы на эту сумму в других ĸомпаниях.
    Таков путь.

Читать дальше →

Пишем блог на микросервисах – часть 1 «Общее описание»

Reading time4 min
Reach and readers19K
В этой статье хочу поделится нашими c SergeyMaslov наработками решения типовых задач с использованием микросервисной архитектуры на примере задачи «создание блога» (в надежде, что читатель представляет как устроен блог и это не должно вызывать вопросов по функциональности:)
Читать дальше →

Мутационное тестирование в PHP: качественное измерение для code coverage

Reading time10 min
Reach and readers13K
Как оценивать качество тестов? Многие полагаются на самый популярный показатель, известный всем, — code coverage. Но это количественная, а не качественная метрика. Она показывает, какой объём вашего кода покрыт тестами, но не то, как хорошо эти тесты написаны. 

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

На Badoo PHP Meetup в марте я рассказывал, как организовать мутационное тестирование для PHP-кода и с какими проблемами можно столкнуться. Видео доступно по ссылке, а за текстовой версией добро пожаловать под кат.


Читать дальше →

Ищем баги в PHP коде без статических анализаторов

Reading time10 min
Reach and readers12K

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


Пример гипотезы:


Функции strpos легко передать аргументы в неправильном порядке. 

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


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



Под катом:


  • Поиск и разбор багов в open source проектах.
  • Quick start по phpgrep.
  • Принцип работы синтаксического поиска.



Читать дальше →

plink: скрыть IP-адрес и зашифровать трафик за 5 минут

Reading time3 min
Reach and readers6.9K
Каждый пользователь Интернета хотя бы раз задумывался об анонимности в Сети. В этой заметке я расскажу об одном из самых простых способов настройки собственного прокси-сервера, который надежно скроет ваш IP-адрес и зашифрует передаваемую информацию.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий