Пятиминутка PHP
2.87K subscribers
334 photos
27 videos
827 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
Новая бизнес-ниша: нейронка по модели SaaS заточенная под генерацию кода Laravel проектов https://smousss.com

На самом деле у них нет никакой своей нейронки, они перенаправляют запросы в OpenAI API с заранее отточенными настройками prompt, результат пишется сразу в PHP файлы на локальной машине пользователя. Удобная обёртка, чтобы не копипастить код туда-сюда вручную в/из ChatGPT.

Пока заготовлены такие сценарии:
- Convert all your tests from PHPUnit to Pest 2
- Create Laravel Nova admin panels at light speed
- Enjoy the convenience of migrations again
- Magically add missing Model Factories
- Make entire Laravel projects translatable

Пример: создание Fillament админки по классу модели
php artisan smousss:filamentize App\\Models\\Post
🤔7🔥2🥴21🤡1
Пятиминутка PHP
Новая бизнес-ниша: нейронка по модели SaaS заточенная под генерацию кода Laravel проектов https://smousss.com На самом деле у них нет никакой своей нейронки, они перенаправляют запросы в OpenAI API с заранее отточенными настройками prompt, результат пишется…
Продолжая эту идею, что по сути сделал автор smousss:
1) Подготовил набор artisan команд, которые читают локальный код (например, модели), отправляют его в облако (в сервис smousss), ответ пишут в php файлы на локальном диске
2) Где-то внутри облака smousss происходит подготовка API вызовов к OpenAI с заранее настроенными и проверенными prompts.

Это можно было бы реализовать и виде open-source пакета, который будет включать в себя:
1) Набор artisan команд (или одна команда на всё), которые читают локальный код, отправляют его напрямую в OpenAI, дополняя нужными prompts, ответ пишут в php файлы на локальном диске
2) Набор подготовленных prompts с настройками, где я мог бы локально переопределить или донастроить запросы к OpenAI (например, у меня самописный фреймворк или какие-то особенности проекта)
3) Конфиг для подстановки моего OpenAI токена

Либо всё это встроить в Laravel Idea!
Пример: нахожусь внутри класса модели, запускаю Laravel -> Code Generation -> Create Fillament / Nova resource (AI) -> код генерируется не строгим алгоритмом плагина, а через вызов к OpenAI.

Можно и более общий плагин к PhpStorm придумать: нахожусь в некоем классе, нажимаю "Refactor with AI" - получаю SOLIDный код! Правда, не факт что рабочий 😆

Кстати, рефакторинга через AI уже встроена в VS Code. Но там одна проблема - это сам VS Code 🤢
😁9💩3👍2
Небольшой пример, как Copilot помогает в ежедневной работе в мелочах. В MySQL таблице есть колонка именем и фамилией (в одной колонке, не разделено). Потребовалось вывести в обратном порядке: фамилия и имя.

Решение вроде понятное: нужно найти позицию пробела, взять строку до этой позиции, после этой позиции, склеить в обратном порядке.

Хочу сделать одним SQL запросом, но я не помню названия конкретных функций для нужных мне манипуляций со строками в MySQL, редко этим пользуюсь.

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

🔎 Google + StackOverflow подход: написать запрос в Google, скорее всего первая ссылка будет на StackOverflow - для простых задачек типа этой решение обычно видно сразу и оно верное. Проверил прямо сейчас: действительно, первая ссылка на решение моей задачи, но для SQL Server. Чуть ниже для PostgreSQL. Возможно сработает, возможно нет, надо проверять. Либо вернуться на вкладку Google и попробовать вторую ссылку из результатов поиска.

🤖 Copilot подход: написать задачу в комментариях непосредсвенно в PHP коде (иногда я создаю для этого scratch файл).

Пример на скриншоте 👆

Я получил готовый ответ гораздо быстрее, чем если бы открывал барузер и копался в документации или Google/StackOverflow. Почти 10x программист 😝

p.s. оказывается в MySQL есть функция SUBSTRING_INDEX, которая совмещает в себе и поиск позиции и извлечение подстроки.
12👍6
Второй день пробую ортолинейную клавиатуру: пока тяжело идёт, много промахов (что такое ортолинейная: https://habr.com/ru/companies/dododev/articles/511664/).

💡 А пока вот что придумалось: переменные в PHP начинаются с символа $ - выходит это один из самых популярных символов при наборе PHP-кода. Почему бы не наcтроить цифровой ряд на символы по умолчанию? А если нужны цифры, то их набирать с зажатым shift. По крайней мере символ $ набираем чаще, чем цифру 4.
👍10🥰1
На Windows я использовал Total Commander для массового переименования файлов. Давно перешел на macOS и, честно говоря, не сталкивался с этой задачей до недавнего времени. И вот понадобилось переименовать много файлов по определенному алгоритму - написал PHP-скрипт 😎 (спасибо, что не bash!)

Только что обнаружил, что в macOS можно выделить несколько файлов и через контекстное меню переименовать их все! Возможности самые базовые, но стоит иметь ввиду эту функцию.
👍12😁4
Адель пишет грустную историю о трёх комитах оставшихся на сломанном устройстве, которые он не успел отправить (сделать push) (см forward сообщения ниже 👇)

Поделюсь своим опытом: все рабочие проекты находятся в папке Dropbox!

Каждая строчка кода сразу после сохранения сохранена и в облаке!

Дальше больше: не доделал какую-то работу на одном компьютере, убежал, сел за другой - все правки на месте!

Обратите внимание, я даже в git не комитил, не пушил. Потом, конечно, сделаю commit.

Переключился на одном компе на на другую ветку в git - на другом компьютере тоже переключилось.

Установил новые composer/npm зависимости - на другом автоматически появились все новые файлы в node_modules/vendor.

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

p.s. пробовал Яндекс Диск - задумывается на бесконечное время в попытке синхронизировать папку с исходниками.
👍15🤔5💩5🤮4
Forwarded from adelf on programming
Где-то в ноябре я решил побыть настоящим свободным художником и поработать в шезлонге у бассейна. Но судьба быстро дала понять, что всю жизнь мне суждено быть офисным или максимум домашним работником. Пацану лет 3 было скучно и он окатил мой ноут с водяного пистолета. Я успел посидеть там минуты две) Тогда с ноутом ничего не произошло, но на днях моник просто погас и все.
Отнес на ремонт - поменяют материнку, займет две недели. Там остались незапушенными 3 коммита. И я 2 дня вспоминал что в них было. Вспомнил. Восстанавливаю.
Мораль - пушьте свою работу в гит. Он в том числе и для этого создан.
😢7🐳5
Решил попробовать так называемую универсальную раскладку от Никиты Прокопова (он же nikitonsky или tonsky, не путать с Никитой Поповым): https://github.com/tonsky/Universal-Layout

В целом мотивация всех изменений сделанных в этой раскладке хорошо описана (https://tonsky.livejournal.com/318571.html), понятна. Но знак $ на букве Ж? Как теперь PHP-код писать-то?

Прямо хоть садись и делай свою раскладку здорового PHP-программиста.
😁11💩1
Пока я привыкаю к ортолинейной клавиатуре, моя скорость печати драматически мала - клавогонки показывают 50 знаков в минуту на PHP-коде, в то время как на обычной клавиатуре мой средний показатель около 300 знаков в минуту.

И теперь я начал особо ценить функцию Live Templates в PhpStorm! Раньше пользовался буквально 5 шаблонами, лень было запоминать другие, т.к. "вручную" мог напечатать очень быстро все типовые конструкции и ключевые слова. Но спустившись на отметку 50 зн/мин почувствовал на своей шкуре сильнейший профит от подстановки через Live Templates и уже накидал несколько своих шаблончиков.

Совет дня: если вы раньше пренебрегали Live Templates с мыслью "надо разбираться, запоминать, я лучше напечатаю сам" (как это делал и я), дайте им второй шанс! Это как наточить пилу перед работой.
👍24🤡4🔥3
May the 4th be with you!
11❤‍🔥3😁3
Наткнулся на полезную статью с рекомендациями по неймингу (одна из самых сложных проблем в программировании!): https://habr.com/ru/companies/dododev/articles/714512/

🧐 Из необычного для меня, выделю этот совет:

Одна переменная — одна цель. Например, вы хотите записать дату и время окончания смены и одновременно по этой же переменной понимать, закончилась ли смена. Никогда так не делайте! Только явное обозначение в другой булевой переменной. ShiftEndedAt, IsShiftEnded.

🆚 Подхожу к этому вопросу полностью противоположно: по наличию или отсутствию временнОй метки можно определить факт начала или окончания процесса.

Даже больше: бывали на практике случаи, когда изначально в системе использовался только флаг, типа IsShiftEnded, а потом мы понимали, что нужна ещё и отметка времени - в результате рефакторинга булево значение убиралось из кода и из базы в пользу метки времени.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎42
Чтение входного дня: перевод неплохой статьи про модульные монолиты на Хабре: https://habr.com/ru/companies/dododev/articles/650721/

tldr, скопирую последний абзац:

Итог
1 Монолит — это программная система, состоящая из ровно одной единицы развёртывания.
2 Монолитная система не подразумевает некачественного дизайна и отсутствия модульности. То, что система монолитная, ничего не говорит о её качестве.
3 Модульный монолит — это способ проектирования монолитной системы с учётом модульности.
4 «Настоящий» модуль должен быть независимым, самостоятельным и иметь чётко определённый интерфейс.
👍6🤔2
🔥27😁15🤔2
😁53👍3👎2🤔2
Как проходят релизы по пятницам 😂
🤣32👍1
Дженга для разработчиков!
😁32👍3
Читаю что нового планируется в PHP 8.3 (который выйдет в конце 2023): «Stack overflow detection» - первая мысль «интерпретатор научат определять, что код вставлен с сайта StackOverflow? 🧐» https://github.com/php/php-src/pull/9104
😁29
Roadmap навыков, которые часто требуются backend разработчику web-приложений.

Не заточен на PHP или какой-либо ещё язык программирования.

https://github.com/bzick/oh-my-backend
👍33👎4😢43🤔2
Свежая инициатива от Ryan Chandler (весьма активного разработчика из Laravel сообщества) - надстройка над PHP под названием PXP: https://pxplang.org

💡Идея стара как мир: берём язык программирования, добавляем немного сахара, немного типизации, и делаем траспилятор/компилятор в оригинальный язык. Наиболее успешный и похожий пример: TypeScript -> JavaScript.

📄Прочитал всю документацию на https://pxplang.org буквально за 10 минут - предложенных изменений пока кот наплакал, т.е. никакого координального сдвига парадигмы, лишь немного более приятный синтаксис. На таком языке я бы с удовольствием писал код, но если бы это всё было в в достаточной степени популярно и обложено инструментами разработчика, чтобы DX был не хуже чем у PHP.

🙅‍♂️Использовать как отдельный транспилятор в оригинальный PHP я не хочу, потому что:
- не хочу build step
- этот build step также усложнит отладку (ждём souce maps?)
- поддержки в PhpStorm нет. Поддержка может появиться, если PXP станет популярным. Но чтобы он стал популярным, нужны живые люди и проекты на этом языке - а кто будет на нём писать без поддержки в PhpStorm?) Проблема курицы и яйца как обычно.

🧪Можно было рассматривать PXP как полигон для пробы разных фич языка, перед тем как вносить предложения и RFC для PHP. Но для того, чтобы это был полигон, кто-то на этом полигоне должен проводить испытания. Нужна какая-то масса проектов и разработчиков готовых инвестировать своё время в PXP.

Короче, я скептичен 🧐

p.s. зацените игру символов в названии: PXP выглядит почти как ПХП! Прочитав впервые, я подумал, что это какой-то проект от русскоговорящего человека, который захотел сделать свой ПэХаПэ 😂
👍14🤣31💩1