Понравилось краткое описание СУБД под названием Dolt: «что если бы у MySQL и git был ребёнок» 👨👩👦 https://youtu.be/jb2AvF8XzII
YouTube
15 futuristic databases you’ve never heard of
Let's take a look at the top 15 new databases that could disrupt software development in the future. Many new serverless databases leverage tools like Postgres and MySQL, while others attempt build entirely new systems from scratch.
This video is NOT sponsored.…
This video is NOT sponsored.…
👍2
Новая бизнес-ниша: нейронка по модели 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 админки по классу модели
На самом деле у них нет никакой своей нейронки, они перенаправляют запросы в 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🥴2❤1🤡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 🤢
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 есть функция
Решение вроде понятное: нужно найти позицию пробела, взять строку до этой позиции, после этой позиции, склеить в обратном порядке.
Хочу сделать одним 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.
💡 А пока вот что придумалось: переменные в PHP начинаются с символа $ - выходит это один из самых популярных символов при наборе PHP-кода. Почему бы не наcтроить цифровой ряд на символы по умолчанию? А если нужны цифры, то их набирать с зажатым shift. По крайней мере символ $ набираем чаще, чем цифру 4.
Хабр
Ортолинейная сплит клавиатура — это что такое? Обзор Iris Keyboard
За сто с лишним лет клавиатуры сильно изменились внешне: стали лёгкими, тонкими, есть даже проекционные со сканером. Но рынок ничего не меняет в их раскладке («QWERTY» появилась в 1890 году),...
👍10🥰1
На Windows я использовал Total Commander для массового переименования файлов. Давно перешел на macOS и, честно говоря, не сталкивался с этой задачей до недавнего времени. И вот понадобилось переименовать много файлов по определенному алгоритму - написал PHP-скрипт 😎 (спасибо, что не bash!)
Только что обнаружил, что в macOS можно выделить несколько файлов и через контекстное меню переименовать их все! Возможности самые базовые, но стоит иметь ввиду эту функцию.
Только что обнаружил, что в macOS можно выделить несколько файлов и через контекстное меню переименовать их все! Возможности самые базовые, но стоит иметь ввиду эту функцию.
👍12😁4
Адель пишет грустную историю о трёх комитах оставшихся на сломанном устройстве, которые он не успел отправить (сделать push) (см forward сообщения ниже 👇)
Поделюсь своим опытом: все рабочие проекты находятся в папке Dropbox!
Каждая строчка кода сразу после сохранения сохранена и в облаке!
Дальше больше: не доделал какую-то работу на одном компьютере, убежал, сел за другой - все правки на месте!
Обратите внимание, я даже в git не комитил, не пушил. Потом, конечно, сделаю commit.
Переключился на одном компе на на другую ветку в git - на другом компьютере тоже переключилось.
Установил новые composer/npm зависимости - на другом автоматически появились все новые файлы в node_modules/vendor.
Dropbox - просто идеальная среда для синхронизации двух рабочих мест. Если же рабочее место всего одно, тоже может пригодиться, чтобы не попасть в ситуацию как у автора.
p.s. пробовал Яндекс Диск - задумывается на бесконечное время в попытке синхронизировать папку с исходниками.
Поделюсь своим опытом: все рабочие проекты находятся в папке Dropbox!
Каждая строчка кода сразу после сохранения сохранена и в облаке!
Дальше больше: не доделал какую-то работу на одном компьютере, убежал, сел за другой - все правки на месте!
Обратите внимание, я даже в git не комитил, не пушил. Потом, конечно, сделаю commit.
Переключился на одном компе на на другую ветку в git - на другом компьютере тоже переключилось.
Установил новые composer/npm зависимости - на другом автоматически появились все новые файлы в node_modules/vendor.
Dropbox - просто идеальная среда для синхронизации двух рабочих мест. Если же рабочее место всего одно, тоже может пригодиться, чтобы не попасть в ситуацию как у автора.
p.s. пробовал Яндекс Диск - задумывается на бесконечное время в попытке синхронизировать папку с исходниками.
👍15🤔5💩5🤮4
Forwarded from adelf on programming
Где-то в ноябре я решил побыть настоящим свободным художником и поработать в шезлонге у бассейна. Но судьба быстро дала понять, что всю жизнь мне суждено быть офисным или максимум домашним работником. Пацану лет 3 было скучно и он окатил мой ноут с водяного пистолета. Я успел посидеть там минуты две) Тогда с ноутом ничего не произошло, но на днях моник просто погас и все.
Отнес на ремонт - поменяют материнку, займет две недели. Там остались незапушенными 3 коммита. И я 2 дня вспоминал что в них было. Вспомнил. Восстанавливаю.
Мораль - пушьте свою работу в гит. Он в том числе и для этого создан.
Отнес на ремонт - поменяют материнку, займет две недели. Там остались незапушенными 3 коммита. И я 2 дня вспоминал что в них было. Вспомнил. Восстанавливаю.
Мораль - пушьте свою работу в гит. Он в том числе и для этого создан.
😢7🐳5
Решил попробовать так называемую универсальную раскладку от Никиты Прокопова (он же nikitonsky или tonsky, не путать с Никитой Поповым): https://github.com/tonsky/Universal-Layout
В целом мотивация всех изменений сделанных в этой раскладке хорошо описана (https://tonsky.livejournal.com/318571.html), понятна. Но знак $ на букве Ж? Как теперь PHP-код писать-то?
Прямо хоть садись и делай свою раскладку здорового PHP-программиста.
В целом мотивация всех изменений сделанных в этой раскладке хорошо описана (https://tonsky.livejournal.com/318571.html), понятна. Но знак $ на букве Ж? Как теперь PHP-код писать-то?
Прямо хоть садись и делай свою раскладку здорового PHP-программиста.
😁11💩1
Пока я привыкаю к ортолинейной клавиатуре, моя скорость печати драматически мала - клавогонки показывают 50 знаков в минуту на PHP-коде, в то время как на обычной клавиатуре мой средний показатель около 300 знаков в минуту.
И теперь я начал особо ценить функцию Live Templates в PhpStorm! Раньше пользовался буквально 5 шаблонами, лень было запоминать другие, т.к. "вручную" мог напечатать очень быстро все типовые конструкции и ключевые слова. Но спустившись на отметку 50 зн/мин почувствовал на своей шкуре сильнейший профит от подстановки через Live Templates и уже накидал несколько своих шаблончиков.
Совет дня: если вы раньше пренебрегали Live Templates с мыслью "надо разбираться, запоминать, я лучше напечатаю сам" (как это делал и я), дайте им второй шанс! Это как наточить пилу перед работой.
И теперь я начал особо ценить функцию Live Templates в PhpStorm! Раньше пользовался буквально 5 шаблонами, лень было запоминать другие, т.к. "вручную" мог напечатать очень быстро все типовые конструкции и ключевые слова. Но спустившись на отметку 50 зн/мин почувствовал на своей шкуре сильнейший профит от подстановки через Live Templates и уже накидал несколько своих шаблончиков.
Совет дня: если вы раньше пренебрегали Live Templates с мыслью "надо разбираться, запоминать, я лучше напечатаю сам" (как это делал и я), дайте им второй шанс! Это как наточить пилу перед работой.
👍24🤡4🔥3
Наткнулся на полезную статью с рекомендациями по неймингу (одна из самых сложных проблем в программировании!): https://habr.com/ru/companies/dododev/articles/714512/
🧐 Из необычного для меня, выделю этот совет:
Одна переменная — одна цель. Например, вы хотите записать дату и время окончания смены и одновременно по этой же переменной понимать, закончилась ли смена. Никогда так не делайте! Только явное обозначение в другой булевой переменной.
🆚 Подхожу к этому вопросу полностью противоположно: по наличию или отсутствию временнОй метки можно определить факт начала или окончания процесса.
Даже больше: бывали на практике случаи, когда изначально в системе использовался только флаг, типа
Одна переменная — одна цель. Например, вы хотите записать дату и время окончания смены и одновременно по этой же переменной понимать, закончилась ли смена. Никогда так не делайте! Только явное обозначение в другой булевой переменной.
ShiftEndedAt, IsShiftEnded.🆚 Подхожу к этому вопросу полностью противоположно: по наличию или отсутствию временнОй метки можно определить факт начала или окончания процесса.
Даже больше: бывали на практике случаи, когда изначально в системе использовался только флаг, типа
IsShiftEnded, а потом мы понимали, что нужна ещё и отметка времени - в результате рефакторинга булево значение убиралось из кода и из базы в пользу метки времени.Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Делай нейминг как сеньор
В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код...
👍12👎4❤2
Чтение входного дня: перевод неплохой статьи про модульные монолиты на Хабре: https://habr.com/ru/companies/dododev/articles/650721/
tldr, скопирую последний абзац:
Итог
1 Монолит — это программная система, состоящая из ровно одной единицы развёртывания.
2 Монолитная система не подразумевает некачественного дизайна и отсутствия модульности. То, что система монолитная, ничего не говорит о её качестве.
3 Модульный монолит — это способ проектирования монолитной системы с учётом модульности.
4 «Настоящий» модуль должен быть независимым, самостоятельным и иметь чётко определённый интерфейс.
tldr, скопирую последний абзац:
Итог
1 Монолит — это программная система, состоящая из ровно одной единицы развёртывания.
2 Монолитная система не подразумевает некачественного дизайна и отсутствия модульности. То, что система монолитная, ничего не говорит о её качестве.
3 Модульный монолит — это способ проектирования монолитной системы с учётом модульности.
4 «Настоящий» модуль должен быть независимым, самостоятельным и иметь чётко определённый интерфейс.
Хабр
Модульный монолит. Начало
Слово переводчика Привет, меня зовут Андрей и я разработчик. Наша команда работает над мобильным приложением для стартапа Dodo Brands — сети кофеен Дринкит. Несмотря на популярность микросервисов, при...
👍6🤔2
Читаю что нового планируется в 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
Не заточен на PHP или какой-либо ещё язык программирования.
https://github.com/bzick/oh-my-backend
👍33👎4😢4❤3🤔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 выглядит почти как ПХП! Прочитав впервые, я подумал, что это какой-то проект от русскоговорящего человека, который захотел сделать свой ПэХаПэ 😂
💡Идея стара как мир: берём язык программирования, добавляем немного сахара, немного типизации, и делаем траспилятор/компилятор в оригинальный язык. Наиболее успешный и похожий пример: 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 выглядит почти как ПХП! Прочитав впервые, я подумал, что это какой-то проект от русскоговорящего человека, который захотел сделать свой ПэХаПэ 😂
Sinaga79
Sinaga79: Situs Toto 4D Terbaik dengan Hadiah x3000
Main Toto 4D di Sinaga79 dengan deposit Rp 10.000 saja! Dapatkan hadiah hingga x3000, prediksi gratis, dan withdraw 3 menit. Daftar sekarang!
👍14🤣3❤1💩1