Хэндлим тему | Дерепко
281 subscribers
63 photos
3 videos
1 file
68 links
Discussion group @handle_topic_chat
Contact with me @xepozz
Download Telegram
Полезности сегодняшнего дня.

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

Задача:
- Написать валидатор минут, часов, дней, месяцев, дней недель для крон выражений

Решение №1
- Получает выражение
- Берем первый элемент
- Понимаем что в нем содержится
- Отправляем в валидатор

Минусы в том, что в выражении конкретной позиции может быть несколько типов:
- Перечисление: 1,2,3
- Диапазон: 1-5
- Шаг: 2/3
- Комбинация: 1-5,10-15/2,3,4,5

Как в таком коде достать "число"? Можно регулярками, подстроками, можно забить, поддержать примитивные паттерны.
А можно создать визитор, который будет проходить проходить через нашу функцию когда заходит в "конечное число".

Таким образом, решение №2 очень элегантным:
- Создаем визитор на весь файл, чтобы пройти по всем выражениями
- При заходе в минутный паттерн, создаем новый визитор для минут, описываем нужную логику: разрешены цифры 0-59
- При заходе в часовой паттерт, создаем новый визитор для часов. Разрешены 0-23 числа
- При заходе в месяц можно дополнительно проверить еще и строковое представление
- И так далее

Таким образом, если мы будем парсить минутный диапазон 1-10/2, то наш минутный визитор пройдет через: 1, 10 и 2.
Любое из этих чисел ни при каком условии не должно быть вне диапазона 0-59.

Если мы захотим написать валидатор для диапазона, вы знаете как это можно будет сделать :))))

Пост был в PHPeople еще месяц назад, подписывайтесь через @phpeople_bot
1👍94🔥2
Codex Is Now Integrated Into JetBrains IDEs

Jetbrains изначально провтыкали ИИ-бум, когда каждый второй чайник кричал, что это IDE нового поколения (на самом деле это всё кусок VS кода).

Позже вышел Junie, который умел кое-что, но работало оно довольно слабо.
Параллельно существовал AI Assistant, который умел что-то где-то: где-то рядом с ошибкой была кнопка “Explain with AI”, где-то не было и всё в этом духе.

Не так давно Junie внедрили с AI Assistant плагин. Теперь чат и агент в одном окно, это удобно!
Помимо этого, можно выбрать вместо Джуна Клода. А теперь еще и Кодекса.

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

——

Пост: https://blog.jetbrains.com/ai/2026/01/codex-in-jetbrains-ides/

——

@handle_topic
1🔥91👍1
Прочел сейчас статью https://josezarazua.com/im-a-former-cto-here-is-the-15-sec-coding-test-i-used-to-instantly-filter-out-50-of-unqualified-applicants/

Занятная штука. Логика в том, что в тексте скрыт знак равно = в условии. Если скопировать и вставить текст как без форматирования, то получишь if x >= 3: в условии, а это ведет к совершенно иному результату.
Хороший трюк, так и ИИ, и онлайн выполнение, и друг-программист выдадут один и тот же результат. Ведь вы пришлёте им >= в условии, а глазом можно будет и не разглядеть.

Как бы вы отреагировали на отказ после такого задания? Как вообще реагируете на отказы при поисках работы?
Я обычно начинаю допрашивать тех, с кем общался – дай фидбек; ну дай; скажи че сказали; а если по-чесноку? я же нормально задание прошел, почему теперь вдруг я зафейлил его? И тому подобное

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

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

Является ли это тем, что тебя попросили сделать? Да
Работает ли это правильно по всем тест-кейсам? Да
Подходит ли это под правильный ответ на текущем собесе? Нет
Тогда что мы здесь проверяем, мою смекалку и возможности чтения мыслей?



Пост был доступен в 🐘 PHP People.
Для получения доступа можно подписаться в @phpeople_bot



@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7🔥31👎1
Temporal Minimal Setup

Temporal — инструмент для управления бизнес-процессами.

Temporal состоит из нескольких компонентов:

- Server
- Worker
- Client

Server

Сервер Temporal реализует протокол взаимодействия между Client и Worker. Также Temporal выполняет оркестрацию процессов: следит за таймаутами, ретраями, предоставляет Web UI и другие возможности.

Worker

Worker подписывается на очередь событий, в которую пишет Server. Server размещает в очереди задачи, которые могут быть разных типов. Задачи Workflow обрабатываются одним воркером в один момент времени. Задачи Activity обрабатываются пулом процессов.

Client

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

Workflow

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

Workflow может вызывать другой Workflow или Activity. При выполнении Workflow сохраняет чекпоинты в истории на Server. При перезапуске процесса пройденные шаги не выполняются заново, а восстанавливаются из истории. Перезапуск может произойти из-за ошибки, таймаута или внешнего сигнала. История доступна в Web UI.

Activity

Здесь может быть любой код: сетевые запросы, работа с файлами, внешние API.

Activity вызывается только из Workflow. Когда Workflow вызывает Activity, результат сохраняется в истории и при Replay не выполняется повторно.

---

Быстрый старт

Я подготовил минимальный шаблон для работы с Temporal на PHP.

Шаги:

1. Клонировать репозиторий
2. Убедиться, что установлены PHP 8.1+ и расширение grpc
3. composer install — установит PHP-зависимости
4. ./vendor/bin/dload — скачает RoadRunner (`rr`) и Temporal CLI (`temporal`)
5. ./temporal server start-dev — запустит Temporal Server
6. ./rr serve — запустит RoadRunner с воркерами

Теперь Temporal Server готов к работе, а RoadRunner запустил воркеры для обработки Workflow и Activity.

Выполнение задачи:

Не выключая предыдущие команды, запустите:

php client.php


Путь данных:

1. Client отправляет задачу в Temporal Server
2. Server размещает задачу в очереди
3. RoadRunner получает задачу и передаёт в Workflow
4. Workflow выполняет логику и запрашивает Activity
5. Server размещает задачу для Activity
6. Activity выполняется, результат сохраняется
7. Workflow получает результат, завершается
8. Client получает итоговый результат



GitHub: https://github.com/xepozz/temporal-minimal-example




Пост был доступен в 🐘 PHP People.
Для получения доступа можно подписаться в @phpeople_bot



@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥93👍3
Оптимизация кода

Возможно, многие знают Brent Roose – дев адвокат в Jetbrains, отец Tempest PHP Framework, автор блога stitcher.io и много еще чего.

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

Изначальный код был написан как типичным ларавельщиком – колбек в колбеке в цикле цикла. Ну вы поняли.
Перформил этот механизм так себе – ~30 ивентов в секунду. С миллионом записей пришлось бы ждать … долго.

Начал он оптимизировать и вот к чему пришел: 1.6M events / second

Видос небольшой и покрывает только первую часть, когда он пришел к 110K events / second.
Всё равно выглядит очень мощно. Многим могут показаться полезным способы оптимизаций, поэтому запоминайте.

А если знаете еще – пишите ему в коментах или в твиттере. Он так и прокачался с 15к до 1.6M – через комменты в твиттере и под статьёй.


Видос: https://www.youtube.com/watch?v=GY4RIj_zn1M
Статья: https://stitcher.io/blog/processing-11-million-rows

——

@handle_topic
1👍75🔥5
Forwarded from agoalofalife
Серия видеоуроков по Temporal

Если вы когда-нибудь писали долгоживущие бизнес-процессы на очередях, должны знать весь "геморрой": повторные попытки, потеря состояния, координация шагов и т.д.
Многие уже слышали про temporal, но не все успели его попробовать и разобраться.

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

Концепция мне быстра стала понятна, так как я пытался такое делать еще сам (была аналогичная идея в голове), на очередях, сериализации php и т.д.
Сначала думал записать все разом и выпустить, но потом решил, что будет полезна обратная связь, и пока выпускаю видео по мере готовности.


Уже вышли первые 3 видео на youtube:

План курса
Тут рассказал что собираюсь показать в этой серии видеоуроков, какие темы затронем и какой бизнес flow.

Для чего нужен temporal
Объясняю какие есть плюсы и минусы temporal, для чего он был в целом придуман и как эти же проблемы решаются очередями.

Настройка и установка проекта PHP+Laravel+RoadRunner
Рассказываю про настройку проекта на Laravel. Установка docker, настройка road runner (RR), сериализации данных в temporal из php.
Пишем первый Hello World.

Видео выходят раз в неделю или реже(зависит от свободного времени).
В конце собираюсь подвести итоги и показать сколько времени надо на подготовку и запись такого материала.

Что можно сделать сейчас?
• Посмотреть что-нибудь из текущего и оставить обратную(конструктивную) связь
• Поставить лайк и подписаться на youtube канал
• Подписаться на boosty

Исходники на Github кода который пишется на видео.
🔥19👍86
Jetbrains Qure

Не так давно вышел в публичную бету Air.dev, инструмент на Fleet движке для вайб-кодеров.
Не знаю как вам, но мне всё еще нужна мощь IDE, а не отображение текста при работе с кодом.

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

Записался, посмотрю.

Помню раньше был JB Aqua:
• сначала как отдельная IDE для тестировщиков
• потом в виде плагина в другие IDE (если не путаю)
• а в прошлом году и вовсе закрыли

Придет ли Кура к успеху?

Ссылка: https://quretests.com/

——

@handle_topic
1🔥5👍32
Playwright

Отличный движок (EBAD CHO ZA ENGINE) для работы с чем угодно через браузер для ИИ.
Умеет:
• ходить по страницам
• гуглить в гугле как обычный ламер
• делать скриншоты
• жмать батоны, сабмитить формы
• проверять анимацию
• смотреть за консоль.логами и нетворком

Жаль не открыл для себя этот инструмент раньше. Хоть и не открыл полностью сейчас.


——

@handle_topic
13👍2🔥1
В IDEA появились шорткаты для запуска агентов!

По правой сторону у терминала дропдаун и кнопка для запуска агента в новой сессии терминала (в новом табе)

Интересно, а как добавить другие? 🤨

——

@handle_topic
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍1
Если у вас есть Junie CLI, то можно его запускать быстрым способом.

Прикольно нарисовали Junie и иконку слэшами.

Но эти слэши стали кликабельными и нажатие на один из них открывает Finder (проводник).

Баг или фича?

——

@handle_topic
1👍1🔥1
Forwarded from PHP Fart Time (Алексей roxblnfk)
Новая статья, фартаны.

#Article про Мутационное тестирование.

Кто, кстати, гоняет мутантов в проде?
👍9🔥5
https://phel-lang.org/

Phel is a functional, Lisp-inspired language that compiles to PHP
🤣6
ИИ переписал Bun с Zig на Rust

PR: https://github.com/oven-sh/bun/pull/30412 (он настолько большой, что гитхаб его не открывает у меня)

Последние несколько дней в чате очень плотно обсуждали последнюю ИИ новость.

Один из альтернативных JS рантаймов bun полность переписали с zig на #rust.
Переписывали, конечно же, используя исключительно агентов и ИИ (от компании Anthropic) .
На все про все ушло 10 дней, тесты прошли, перформанс остался такой же.

Звучит красиво? Красиво.

Таймлайн истории

1. 2 декабря 2025 года Anthropic покупает bun и всю команду: https://bun.com/blog/bun-joins-anthropic
2. Команда Zig известна своим "No AI Slop" policy (прямо как django-modern-rest), некоторые люди сразу предсказывали конфликт интересов между Bun + Anthropic и Zig
3. 26 апреля 2026 года, команда bun форкает zig и добавляет туда поддержку параллельного семантического анализа https://x.com/bunjavascript/status/2048427636414923250
4. 9 мая открывается тот самый PR
5. 14 мая он успешно смерджен

Важные детали

А вот тут начинается интересное.

- Для начала авторы Zig объяснили, что подход форка с семаналом некорректный, и что они сами работают над данной фичей, скоро она будет доступна: https://ziggit.dev/t/bun-s-zig-fork-got-4x-faster-compilation-times/15183/19
- Билды получились недетерминированные, о чем им и рассказала кор-команда. Тогда форк пришлось закопать, видимо

Теперь посмотрим на качество PR.

- Качество кода там примерно вот такое: https://github.com/oven-sh/bun/commit/d144fa6e20ab65d55add82ef3241609dcbb04cdc (то есть - никакое)
- Файлы в нем даже были неотформатированы встроенным cargo fmt, что делается буквально в каждом Rust проекте: https://github.com/oven-sh/bun/pull/30695
- Ревью не было, потому что внутри PRа +1 009 257, -4 024 и 6000+ коммитов
- unsafe в коде встречает 10487 раз (да, там много ffi, но все равно). Для сравнения в uv (кода правда меньше в 2 раза) - всего 73 раза
- "Скорость работы осталось такой же" - довольно странный тезис, учитывая что zig и rust оба генерят код через LLVM, часто практически идентичный, заслуги ИИ здесь нет

Выводы

- Прикольно, что такое вообще можно сделать (с неограниченными токенами)
- Как теперь bun будет владеть своей базой кода, кто сможет в ней разобраться и что-то пофиксить - вопрос открытый
- Какой смысл во всем действии (кроме очевидного маркетинга) - вопрос открытый
- Брать ли теперь bun в прод? Конечно нет

Обсуждение: что вы думаете по данному вопросу? Стали бы использовать bun у себя в проекте в новом виде?

| Поддержать | YouTube | GitHub | Чат |
👍51
PHP-стрим: generics, RFC и AI

Собираем ламповый стрим с ребятами из PHP-сообщества.

Главная тема — RFC по generics в PHP: зачем они нужны, что могут решить, где усложнят язык и как повлияют на Laravel/Symfony, библиотеки и статический анализ.

Плюс обсудим, что сейчас происходит в разработке с AI!

Предварительно участвуют: Кирилл Несмеянов, Алексей Гагарин, Эдмон Дантес, Дмитрий Дерепко. Возможно подключатся Андрей Helldar и Сергей Пантелеев.

21 мая в 19:00 мск на YouTube

Приходите, если пишете на PHP и хотите обсудить, куда движется язык и профессия.
👍43🔥2
Вот теперь-то я смогу запустить шторм и докер вместе!
Надеюсь и на ноду хватит.

А какие у вас девайсы?
1🔥13🤯9👍32
JetBrains PHPverse 2026 – Bringing the PHP community together

Через 20 минут, в 14:00 по МСК или в 11:00 по UTC начинается конфа по PHP!

Программа:

14:00 – 14:15 Открытие: Enter the PHPverse
Brent Roose, Nuno Maduro

14:15 – 14:45 PHP Foundation Keynote
Elizabeth Barron

14:50 – 15:20 My AI Writes Perfect* PHP
Ashley Hindle

15:25 – 15:55 WordPress is dead, long live WordPress!
Jonathan Bossenger

16:00 – 16:30 Packagist Internals
Nils Adermann

16:30 – 16:50 Special Segment: Community and Surprises
Brent Roose, Nuno Maduro

16:50 – 17:20 Running a large open-source project like Symfony
Fabien Potencier

17:25 – 17:55 PHP RFCs
Larry Garfield

18:00 – 18:30 How AI Is Changing the Programmer World
Jeffrey Way

18:30 – 18:50 Wrap-Up
Brent Roose, Nuno Maduro

——

Ссылка: https://www.youtube.com/live/NR9L0zwXJq4

——

@handle_topic
53👍2🔥2