TGViewer
Channel Public Channel
dev notes

dev notes

@junsenior

Пишу про Go, Vim, и про то, как я медленно ползу в сторону FAANG.

С предложениями: @junsenpub
Subscribers
1.39K
Photos
33
Videos
6
Links
189

Showing posts older than #129 · Back to latest

Older Posts 20 shown
Post #128 570

Forwarded from PHP Digest

Открытое собеседование № 1
Cтрим в четверг, 16 июля, в 17:00 по Москве/Киеву/Минску

https://www.youtube.com/watch?v=FQNd9W3nb3A

Валентин @phpyh и я @phpdigest совместно проведём открытое собеседование с Патриком Фельдешем.

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

Трансляция будет на новом YouTube канале PHP Point — подписывайтесь, чтоб не пропустить следующие проекты.
YouTube Открытое собеседование PHP Point #1 / Валентин Удальцов vs Патрик Фельдеш О Патрике: https://career.habr.com/sspat Код для ревью: https://gist.github.com/vudaltsov/e6f7dd83a88b349cd5ee0e0d1795e5aa Задача на SQL: https://gist.github.com/vudaltsov/e3d06ef2158a248337aa262a9fb60b5f Большое спасибо Антону Мореву за помощь с трансляцией.…
Post #127 1.63K
Интересный формат, будем посмотреть :)
Post #125 2.14K
Когда-то все мы упали сюда по этой же причине)
Post #124 2.26K
Почти день потратил на настройку xdebug в docker'е. Проблема была в том, что конфиги докера - очень нетипичные, контейнеров очень много и чёрт ногу сломит, что там где.
Большинство статей показывают docker-compose из nginx + php, причём оба Dockerfile'a в 10 строк - конь в вакууме, которого нет на реальных проектах.
В итоге из кучи мануалов по настройке самым верным и простым в реализации оказался этот - https://blog.denisbondar.com/post/phpstorm_docker_xdebug
Кажется, вписать его можно в любую docker-конфигурацию, где есть nginx и php.
Пользуйтесь на здоровье)
Post #123 2.06K
Post #122 1.84K
​От компании к компании узнаёшь всё больше компонентов хорошей разработки. На последнем месте работы я увидел очень интересную вещь - отдел тестирования с грамотным руководителем вполне может нивелировать плохое руководство как в менеджерских решениях, так и в отделах разработки.

Я работал в команде, где был старый легаси-проект. Из-за неверной архитектуры и плохих решений ("ща быстро сделаю, а на следующей неделе -перепишу" - типичный комментарий под 5-ти летним коммитом) каждое изменение могло уронить сайт. Тесная связь модулей, где каждый метод может быть дублирован в другом месте, а контекст вокруг метода не всегда позволяет разобраться что это именно он - основной критерий ошибок. И, как это обычно бывает, бизнесу нужны задачи, времени на рефакторинг или распутывание старого кода тебе никто не даёт.

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

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

Закончив тестирование либо будут описаны моменты, которые вызвали вопросы и задача уйдёт на доработку, либо задача будет переведена на выкладку в dev. dev - это среда, почти дублирующая боевую, за исключением пользовательской нагрузки. После выкладки задача тестируется на dev-среде, и после релизится на боевой сервер.

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

Свой стек приёмочных выполнялся на dev-среде, где нестрашно что-то уронить или затереть пользователя в базе, и свой стек приёмочных был на бою - где тестировались только те элементы, которые не влияют на пользователей. На моём проекте было порядка 5-10 тысяч тестов, которые алертили и били во все колокола в случае, если что-то пошло не так, что позволяло быстро решать проблемы. Вкупе с Unit и интеграционными тестами, что писали мы, это позволяло держать прод в стабильном рабочем состоянии.

При этом как бы не требовал бизнес - выкладка массива задач с dev на prod никогда не производилась без окончания тестирования, и к отделу тестировщиков бизнес вопросов не имел - как дотестируем, так и выложим.

Резюмируя, интеграции с отделом тестирования, и написание тестов как таковых играет очень большую роль в больших и сложно-масштабируемых проектах, порой являясь крайним рубежом, определяющим стабильность работы всей системы. Для себя я делаю вывод, что пренебрегать командой тестирования в будущем - никогда не буду, без неё работать тяжело и не весело.
Post #121 1.8K
​У нас тут в чатике скинули релиз альфы PHP 8.0! Альфа выложена для тестирования, использовать её на боевых проектах категорически не рекомендуется. Тем не менее, если ты, так же как и я, уже хочешь посмотреть на JIT, на комбинированные типы методов, новый синтаксис атрибутов и другие прелести - скачать можно тут.
Post #120 418
Post #119 2.38K
​Перевёл статью - Redux в 30 строчек на PHP

Если хочешь узнать, как работает Redux под капотом, поработать с callable-функциями и написать своё хранилище состояния приложения - го под кат!
Post #118 2.22K
Сегодня будет жарко - ребята из Skyeng будут обсуждать с ребятами из подкаста "Цинковый прод" текущее состояние, перспективы и будущее языка PHP. Будет ли с нами PHP через несколько лет? Что нас ждёт после выхода 8-ой версии?

Ответы на все вопросы будут здесь - https://www.youtube.com/watch?v=QrlWrFILjMk
YouTube Зачем писать на PHP в 2020: обсуждаем нишу и перспективы языка с подкастом "Цинковый прод" Основное обсуждение (Максим Шамаев из Skyeng, Александр Майоров из Geekjob, постоянные ведущие - Олег Грицак, Никита Васильченко, Антон Околелов) 3:47 - “Мы свой хайлоад держим на PHP” 8:02 - “Легко ли найти разработчика на сложный проект?” 10:18 - “Стоит…
Post #106 2.83K
Перевёл небольшую статью о том, зачем нужны стандарты PSR-2/PSR-12, и почему форматирование кода может замедлить работу команды. Под катом - несколько советов, инструменты для форматирования и полезные кейсы - https://www.notion.so/PSR-2-PSR-12-d18c7cd726b745a484f4474641360f0d
Влад on Notion PSR-2 и PSR-12: почему нам нужны стандарты и как их внедрить | Notion Табы или пробелы? Окей, пробелы. Но 2 или 4? Некоторые из вас, вероятно, ответят:
Post #104 3.01K
Нашёл отличную статью о том, что такое JIT, как он ускорит PHP и какие направления разработки открываются для этого языка с выходом 8-ой версии, в которую JIT будет интегрирован: https://habr.com/ru/company/badoo/blog/448622/
Хабр PHP GR8: повысит ли JIT производительность PHP 8 PHP — один из основных языков разработки в Badoo. В наших дата-центрах тысячи процессорных ядер заняты выполнением миллионов строк кода на PHP. Мы внимательно...
Post #103 3.18K
Post #101 279
Post #99 2.6K
Решил поддержать интерактивный онлайн-холивар про тестовые задания в разработке, который продет 16 мая на ютубе.

Роман Ивлиев (Mos ru, TeamleadConf), Александр Макаров (Yii), Иван Матвеев (Skyeng), Дмитрий Симонов ("Техдирское сообщество") поспорят, нужны ли тестовые и как их готовить. А ты сможешь не только смотреть трансляцию, но и подключиться к дискуссии голосом. Не пропусти)

А пока ребята готовятся - как относишься к тестовым?
Post #98 310

Forwarded from PHP Digest

#RFC Именованные аргументы функций

https://wiki.php.net/rfc/named_params

Никита идет по списку, предложенному Ларри Гарфильдом, и выдвигает на обсуждение обновленный и проработанный документ.

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

Пропуск дефолтных значений:

htmlspecialchars($string, ENT_COMPAT | ENT_HTML401 , ini_get("default_charset"), false);
станет:
htmlspecialchars($string, double_encode: false);

Еще это важно для атрибутов, так как сейчас с ними вот такой PHPDoc:
/**
* @Route("/api/posts/{id}", methods={"GET","HEAD"})
*/

выглядел бы вот так:
<<Route("/api/posts/{id}", ["methods" => ["GET", "HEAD"]])>>

А с этим RFC будет красиво:
<<Route("/api/posts/{id}", methods: ["GET", "HEAD"])>>

Сообщество разделилось: некоторые считают, что это может создать проблемы для мейнтейнеров пакетов, потому что просто так поменять имя параметра без поломки обратной совместимости нельзя.
Post #97 2.79K
Начал по-маленьку смотреть на go - набросал небольшого бота, который подтягивает инфу о вакансиях с hh.ru для PHP-разработчиков на удалёнку.
В фильтрах: Laravel, Symfony, Yii
Дампит вилку зарплаты, описание и ссылку для подробного ознакомления

Код можно закидать какашками тут - https://github.com/itxor/junsenior_vacancies_bot

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

Ближайшие доработки - перевод запросов на многопоточку, интеграция монги, ибо смотря на дубли по вакансиям json-формат хранения напрашивается сам по себе, и интеграция системы фильтрации, чтобы ты мог настроить бота под свои параметры и он будет сыпать новыми вакансиями тебе в личку по мере их публикации

P.S. Рабочий инстанс дампит вакансии сюда - @junsenior_vacancies
GitHub GitHub - vpoltora/junsenior_vacancies_bot: telegram-bot для парсинга вакансий по пользовательским настройкам telegram-bot для парсинга вакансий по пользовательским настройкам - vpoltora/junsenior_vacancies_bot
Post #96 2.51K
Post #94 2.71K
Начнём понедельник с интересного за прошедшую неделю, а интересного там было предостаточно!

Релизнули PHP 7.4.5, где исправили внушительный список багов - https://www.php.net/ChangeLog-7.php. Не забудь обновиться, будь молодцом.

На прошедшей неделе ребята из JetBrains порадовали обновлением PHPStorm под версией 2020.1 - изменений много, многое касается типизации, многое - улучшает работу в IDE, многое - анализ кода. Не забыли про тесты, на забыли про зависимости. В тематических каналах уже пролетал обзор фич в гифках - https://telegra.ph/PhpStorm-20201-podderzhka-composerjson-instrumenty-dlya-PHPUnit-pokrytie-koda-s-PCOV-i-PHPDBG-Grazie-i-drugoe-04-15, но мало ли, вдруг ты не видел ^^.

Чего-то особенного в RFC я не увидел, разве что:
1. throw скоро могут разрешить использовать как выражение - https://wiki.php.net/rfc/throw_expression (об этом я уже писал в прошлый раз, RFC перешёл на следующую стадию);
2. В скором времени, возможно, у нас будут более строгие проверки типов для арифметических и побитовых операций - https://wiki.php.net/rfc/arithmetic_operator_type_checks. Мало кто знает, но мы можем в непонятные вещи не хуже, чем JS: var_dump([] % [42]) выведет int(0). WTF, подумали авторы RFC, и реализовали кучу ошибок для подобных операций.

Спустя 8 лет обновили мажорную версию composer. Прежде всего - загрузка пакетов стала в пару раз быстрее, потому что теперь запросы выполняются параллельно. Все изменения можно посмотреть тут - https://php.watch/articles/composer-2

Ну и не забудь:
25 апреля будет онлайн-митап от Skyeng. Ссылочка на трансляцию - https://www.youtube.com/watch?v=se3F83O0ZiY, схороняй в закладки и жди, Skyeng обычно делает хорошо.

И в заключение самое значимое событие из мира Vue - релизнули бету 3-ей версии!
https://github.com/vuejs/vue-next/releases/tag/v3.0.0-beta.1
Можно поиграться с основными фишками, например Composition API и улучшенной поддержкой TypeScript.
Telegraph PhpStorm 2020.1: поддержка composer.json, инструменты для PHPUnit, покрытие кода с PCOV и PHPDBG, Grazie и другое Рады представить первый мажорный релиз PhpStorm в этом году! Под катом подробный разбор всех заметных изменений и новых возможностей. Осторожно — много картинок.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →