Недавно разрабатывал на Laravel робота для торговли на криптовалютной бирже.
Сейчас запустил 2 роботов по 50$ для тестирования - посмотрим что получится.
Функционал еще нужно дорабатывать, но пока пусть колбасит как есть.
Подпишись: @onecode_blog
Сейчас запустил 2 роботов по 50$ для тестирования - посмотрим что получится.
Функционал еще нужно дорабатывать, но пока пусть колбасит как есть.
Подпишись: @onecode_blog
👍9
Media is too big
VIEW IN TELEGRAM
Попросил ИИ (искуственный интеллект) создать контроллер для регистрации пользователей по API в Laravel 🤖
Подпишись: @onecode_blog
Подпишись: @onecode_blog
🤯8🔥1
Как научиться писать короткие и хорошо организованные функции?
Написание программы сродни любому другому виду письменной работы. Когда вы
пишете статью или доклад, вы сначала излагаете свои мысли, а затем «причесываете» их до тех пор, пока они не будут хорошо читаться.
Первый вариант кода может быть неуклюжим и нелогичным. Вы переделываете, дополняете и уточняете его, пока он не будет читаться так, как вам хочется.
Когда я пишу свои функции, они получаются длинными и сложными. В них встречаются многоуровневые отступы и вложенные циклы. Они имеют длинные списки аргументов. Имена выбираются хаотично, а в коде присутствуют дубликаты.
Но у меня также есть модульные тесты для всех этих неуклюжих строк. Итак, я начинаю «причесывать» и уточнять свой код, выделять новые функции, изменять имена и устранять дубликаты. Я сокращаю методы и упорядочиваю их. Иногда приходится ломать целые классы, но при этом я слежу за тем, чтобы все тесты выполнялись успешно.
В конечном итоге у меня остаются функции, построенные по правилам чистого кода. Я не пишу их так с самого начала. И вообще не думаю, что кому-нибудь это под силу.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
Написание программы сродни любому другому виду письменной работы. Когда вы
пишете статью или доклад, вы сначала излагаете свои мысли, а затем «причесываете» их до тех пор, пока они не будут хорошо читаться.
Первый вариант кода может быть неуклюжим и нелогичным. Вы переделываете, дополняете и уточняете его, пока он не будет читаться так, как вам хочется.
Когда я пишу свои функции, они получаются длинными и сложными. В них встречаются многоуровневые отступы и вложенные циклы. Они имеют длинные списки аргументов. Имена выбираются хаотично, а в коде присутствуют дубликаты.
Но у меня также есть модульные тесты для всех этих неуклюжих строк. Итак, я начинаю «причесывать» и уточнять свой код, выделять новые функции, изменять имена и устранять дубликаты. Я сокращаю методы и упорядочиваю их. Иногда приходится ломать целые классы, но при этом я слежу за тем, чтобы все тесты выполнялись успешно.
В конечном итоге у меня остаются функции, построенные по правилам чистого кода. Я не пишу их так с самого начала. И вообще не думаю, что кому-нибудь это под силу.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
👍9🔥3
За вчерашний не полный день робот наторговал около 85 центов 😃 Посмотрим что будет сегодня 🤖
Ошибок в логах нет. Есть идея добавить уведомления в телеграм о завершении сделки (или о нехватке денег) 🤔
Подпишись: @onecode_blog
Ошибок в логах нет. Есть идея добавить уведомления в телеграм о завершении сделки (или о нехватке денег) 🤔
Подпишись: @onecode_blog
🔥6👍4
Забронировал на сегодня комнату звукозаписи. С 5 до 6 часов буду записывать следующий урок по моделям.
Кстати, такая комната - хорошая штука, но какой-то чувак за стеной всё время кашляет. Только запишешь кусок, а он - BARK! Приходится заново записывать. Думаю предложить ему лекарства, а то совсем не бережет себя 😃
Час пользования комнатой стоит 100 лир (350 рублей). Не всегда получается укладываться за час, поэтому 2-3 видео в неделю выходит 1000+ рублей или 5000+ в месяц.
Скоро открою доступ в VIP канал, где все желающие смогут учавствовать в оплате новых видео 😃
Продуктивной пятницы, дамы и господа!
Кстати, такая комната - хорошая штука, но какой-то чувак за стеной всё время кашляет. Только запишешь кусок, а он - BARK! Приходится заново записывать. Думаю предложить ему лекарства, а то совсем не бережет себя 😃
Час пользования комнатой стоит 100 лир (350 рублей). Не всегда получается укладываться за час, поэтому 2-3 видео в неделю выходит 1000+ рублей или 5000+ в месяц.
Скоро открою доступ в VIP канал, где все желающие смогут учавствовать в оплате новых видео 😃
Продуктивной пятницы, дамы и господа!
👍12
Приватный канал в телеграм
Завёл закрытый телеграм-канал, где буду выкладывать практические видео, в которых показываю свой личный опыт - как я решил ту или иную задачу c Laravel. Задачи могут быть НЕ обязательно большие и сложные - иногда какие-то полезные мелочи (советы, функции, ошибки).
На текущий момент выложил два видео:
- Как запускать код каждые 5 секунд - решение, которое я использовал при разработке торгового робота.
- Где писать код? Толстые модели и контроллеры - простой подход к написанию функций (бизнес-логики) наших приложений + как работать с данными.
В плане есть около 40 видео, например:
- Двухфакторная аутентификация (2FA) через Google Authenticator.
- Вебсокет-клиент на Laravel для получения данных в реальном времени.
- Генерация PDF документов с динамическими данными.
- Работа с деньгами в коде приложения и базе данных.
- Серия видео про локализацию мультиязычного сайта.
- Приём платежей на сайте, включая криптовалюты.
- Аутентификация (вход и регистрация) через соц. сети.
- Реализация многоуровневой партнёрской программы.
- Управление ролями и полномочиями администратора.
- Полезные функции и ньюансы работы фреймворка.
- Возможно вы предложите свои идеи для видео.
Планирую выкладывать в этот канал по 2-4 видео в месяц. Если будет движуха, то возможно придумаем ещё какую-то активность.
Доступ в канал за ежемесячную абонентскую плату. По стоимости проведём голосование в следующем посте.
Завёл закрытый телеграм-канал, где буду выкладывать практические видео, в которых показываю свой личный опыт - как я решил ту или иную задачу c Laravel. Задачи могут быть НЕ обязательно большие и сложные - иногда какие-то полезные мелочи (советы, функции, ошибки).
На текущий момент выложил два видео:
- Как запускать код каждые 5 секунд - решение, которое я использовал при разработке торгового робота.
- Где писать код? Толстые модели и контроллеры - простой подход к написанию функций (бизнес-логики) наших приложений + как работать с данными.
В плане есть около 40 видео, например:
- Двухфакторная аутентификация (2FA) через Google Authenticator.
- Вебсокет-клиент на Laravel для получения данных в реальном времени.
- Генерация PDF документов с динамическими данными.
- Работа с деньгами в коде приложения и базе данных.
- Серия видео про локализацию мультиязычного сайта.
- Приём платежей на сайте, включая криптовалюты.
- Аутентификация (вход и регистрация) через соц. сети.
- Реализация многоуровневой партнёрской программы.
- Управление ролями и полномочиями администратора.
- Полезные функции и ньюансы работы фреймворка.
- Возможно вы предложите свои идеи для видео.
Планирую выкладывать в этот канал по 2-4 видео в месяц. Если будет движуха, то возможно придумаем ещё какую-то активность.
Доступ в канал за ежемесячную абонентскую плату. По стоимости проведём голосование в следующем посте.
🔥13
Какая сумма для тебя комфортна за полезный практический контент по Laravel из моего опыта?
Anonymous Poll
52%
990 ₽
7%
1450 ₽
0%
1990 ₽
1%
2450 ₽
2%
2990 ₽
0%
3450 ₽
1%
3990 ₽
0%
4550 ₽
2%
4990 ₽
36%
Ни копейки
Грамотное применение комментариев должно компенсировать нашу неудачу в выражении своих мыслей в коде.
Обратите внимание на слово «неудачу». Я абсолютно серьезно. Комментарий — признак неудачи. Мы вынуждены использовать комментарии, потому что нам не всегда удаётся выразить свои мысли без них, однако гордиться здесь нечем.
Не тратьте время на написание комментариев, объясняющих созданную вами путаницу, — лучше потратьте его на исправление. По-настоящему хороший комментарий — тот, без которого вам удастся обойтись.
Роберт Мартин, Чистый код #clean_code
ПС: думаю для нас, русскоговорящих это не очень актуально, тк мы пишем код на английском, а это НЕ наш нативный язык, поэтому комменты для нас часто несут больше смысла.
Хорошей недели, братья и сестры! 😁
Обратите внимание на слово «неудачу». Я абсолютно серьезно. Комментарий — признак неудачи. Мы вынуждены использовать комментарии, потому что нам не всегда удаётся выразить свои мысли без них, однако гордиться здесь нечем.
Не тратьте время на написание комментариев, объясняющих созданную вами путаницу, — лучше потратьте его на исправление. По-настоящему хороший комментарий — тот, без которого вам удастся обойтись.
Роберт Мартин, Чистый код #clean_code
ПС: думаю для нас, русскоговорящих это не очень актуально, тк мы пишем код на английском, а это НЕ наш нативный язык, поэтому комменты для нас часто несут больше смысла.
Хорошей недели, братья и сестры! 😁
👍15⚡2🐳1
На прошлой неделе в нашем чате подняли вопрос – как правильно подключать несколько файлов с маршрутами?
Использовать для этого выражение
Оказалось нужно использовать
Так что мотаем на ус ☝️
Подпишись
Использовать для этого выражение
require_onceили
require- я думал, что любой способ подойдёт.
Оказалось нужно использовать
require, потому что иначе кеширование маршрутов командой
artisan route:cacheработает НЕ корректно.
Так что мотаем на ус ☝️
Подпишись
👍15🤔1
Правила, говорящие, что каждая функция должна иметь комментарий phpdoc или что каждая переменная должна быть помечена комментарием — обычная глупость.
Такие комментарии только загромождают код, распространяют недостоверную информацию и вызывают общую путаницу и дезориентацию. При этом программисты часто забывают актуализировать комментарии при изменении кода.
Например, требование обязательного комментария phpdoc для каждой функции приводит к появлению монстров вроде следующего примера. Бессмысленные комментарии не приносят никакой пользы. Они только запутывают код, повышая риск недоразумений.
Также в программах нередко встречаются комментарии, не содержащие ничего,
кроме «шума». Они лишь утверждают очевидное, не предоставляя никакой новой
информации:
Да неужели? А как насчет этого:
И наконец, апофеоз избыточности:
Эти комментарии настолько бесполезны, что мы учимся не обращать на них внимания. В процессе чтения кода наш взгляд просто скользит мимо них. Рано или поздно код вокруг таких комментариев изменяется, и они начинают лгать.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
Такие комментарии только загромождают код, распространяют недостоверную информацию и вызывают общую путаницу и дезориентацию. При этом программисты часто забывают актуализировать комментарии при изменении кода.
Например, требование обязательного комментария phpdoc для каждой функции приводит к появлению монстров вроде следующего примера. Бессмысленные комментарии не приносят никакой пользы. Они только запутывают код, повышая риск недоразумений.
/**
* @param string $title Название диска
* @param string $author Автор диска
* @param int $tracks Количество дорожек на диске
* @param int $durationInMinutes Продолжительность воспроизведения в минутах
*/
public function addCD(string $title, string $author, int $tracks, int $durationInMinutes): void {
// ...
}
Также в программах нередко встречаются комментарии, не содержащие ничего,
кроме «шума». Они лишь утверждают очевидное, не предоставляя никакой новой
информации:
/**
* Конструктор по-умолчанию.
*/
public function __construct() {
// ...
}
Да неужели? А как насчет этого:
/** День месяца. */
private int $dayOfMonth;
И наконец, апофеоз избыточности:
/**
* Возвращает день месяца.
*
* @return int день месяца.
*/
public function getDayOfMonth(): int {
return $this->dayOfMonth;
}
Эти комментарии настолько бесполезны, что мы учимся не обращать на них внимания. В процессе чтения кода наш взгляд просто скользит мимо них. Рано или поздно код вокруг таких комментариев изменяется, и они начинают лгать.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
👍11🔥2👎1
Открываем доступ в закрытый канал
Если тебе нравятся мои видео на YouTube, то ты можешь поддержать канал, присоединившись в закрытую группу.
В VIP канал публикуются отдельные практические видео по разработке на Laravel.
Сейчас там два видео:
- Как запускать код каждые 5 секунд на примере торгового робота.
- Где писать мой код? Толстые модели и контроллеры.
Выбираю тему для следующего видео. Есть идея рассказать про то, как я использую транзакции и блокировки базы данных - важная, интересная и нужная тема, без которой НЕ обходится ни один проект.
Доступ в VIP канал стоит 990 рублей в месяц. Присоединяйся к профессионалам!
После перехода по ссылке нужно подать заявку и оформить подписку через специального телеграм-бота, который тебе напишет.
👉 Присоединиться
До встречи!
Если тебе нравятся мои видео на YouTube, то ты можешь поддержать канал, присоединившись в закрытую группу.
В VIP канал публикуются отдельные практические видео по разработке на Laravel.
Сейчас там два видео:
- Как запускать код каждые 5 секунд на примере торгового робота.
- Где писать мой код? Толстые модели и контроллеры.
Выбираю тему для следующего видео. Есть идея рассказать про то, как я использую транзакции и блокировки базы данных - важная, интересная и нужная тема, без которой НЕ обходится ни один проект.
Доступ в VIP канал стоит 990 рублей в месяц. Присоединяйся к профессионалам!
После перехода по ссылке нужно подать заявку и оформить подписку через специального телеграм-бота, который тебе напишет.
👉 Присоединиться
До встречи!
🔥4🤔2⚡1🤝1
Если вы подали заявку на участие в VIP канале и ждёте, то проверьте сообщения - вам должен написать бот Donate для оформления подписки 🤖
👍7
Не используйте комментарии там, где можно использовать функцию или переменную.
Возьмем следующий фрагмент кода:
Его можно было бы перефразировать без комментария в следующем виде:
Возможно (хотя и маловероятно), автор исходного кода сначала написал комментарий, а затем — соответствующий ему код. Но после этого автор должен был переработать свой код, как это сделал я, чтобы комментарий можно было удалить.
Роберт Мартин, Чистый код #clean_code
Возьмем следующий фрагмент кода:
// Зависит ли модуль из глобального списка от подсистемы,
// частью которой является наш код?
if ($smodule.getDependSubsystems().contains($subSysMod.getSubSystem())) {
// ...
}
Его можно было бы перефразировать без комментария в следующем виде:
$moduleDependees = $smodule.getDependSubsystems();
$ourSubSystem = $subSysMod.getSubSystem();
if ($moduleDependees.contains($ourSubSystem)) {
// ...
}
Возможно (хотя и маловероятно), автор исходного кода сначала написал комментарий, а затем — соответствующий ему код. Но после этого автор должен был переработать свой код, как это сделал я, чтобы комментарий можно было удалить.
Роберт Мартин, Чистый код #clean_code
👍9🔥1
Продолжаем курс по Laravel (PHP)
- Как получать одну запись из базы?
- Рассмотрим несколько способов
- Обсудим какой и когда лучше?
- Затронем тему кэширования
- Нюансы работы с чанками
- Полезные советы
https://youtu.be/Q4iFPt7QPPQ
Подпишись: @onecode_blog
- Как получать одну запись из базы?
- Рассмотрим несколько способов
- Обсудим какой и когда лучше?
- Затронем тему кэширования
- Нюансы работы с чанками
- Полезные советы
https://youtu.be/Q4iFPt7QPPQ
Подпишись: @onecode_blog
🔥14👍4
Возможно, вы думали, что первоочередная задача профессионального разработчика – «сделать так, чтобы программа заработала». Надеюсь, к этому моменту книга уже заставила вас отказаться от этих представлений.
Функциональность, созданная сегодня, вполне может измениться в следующей версии, но удобочитаемость вашего кода окажет сильное воздействие на все изменения, которые когда-либо будут внесены.
Поэтому я твердо заявляю: форматирование кода очень важно. Форматирование кода направлено на передачу информации, а передача информации является первоочередной задачей профессионального разработчика.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
Функциональность, созданная сегодня, вполне может измениться в следующей версии, но удобочитаемость вашего кода окажет сильное воздействие на все изменения, которые когда-либо будут внесены.
Поэтому я твердо заявляю: форматирование кода очень важно. Форматирование кода направлено на передачу информации, а передача информации является первоочередной задачей профессионального разработчика.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
🔥11👍1🤔1
Переполнение месяцев
При работе с датами есть нюанс, о котором знают не все. Вернее знать могут не только лишь все, не каждый может это делать 😁
Короче, фишка в том, что в разных месяцах разное количество дней. Поэтому когда мы берём последний день масяца, затем прибавляем еще месяц, то можем перескачить на третий месяц.
Пример на скрине ☝️
Именно так по-умолчанию действует пакет Carbon для работы с датой и временем, который мы часто используем.
Но в зависимости от задачи, мы можем изменить это поведение, используя специальную настройку на объекте даты.
Реальный пример: человек платит кредит каждое 31 число. Вопрос - в какой день он должен платить, если в месяце 28 дней? 🤔
Когда в вашем проекте встанет подобный вопрос - вспомните этот пост 😃
Подпишись: @onecode_blog
При работе с датами есть нюанс, о котором знают не все. Вернее знать могут не только лишь все, не каждый может это делать 😁
Короче, фишка в том, что в разных месяцах разное количество дней. Поэтому когда мы берём последний день масяца, затем прибавляем еще месяц, то можем перескачить на третий месяц.
Пример на скрине ☝️
Именно так по-умолчанию действует пакет Carbon для работы с датой и временем, который мы часто используем.
Но в зависимости от задачи, мы можем изменить это поведение, используя специальную настройку на объекте даты.
Реальный пример: человек платит кредит каждое 31 число. Вопрос - в какой день он должен платить, если в месяце 28 дней? 🤔
Когда в вашем проекте встанет подобный вопрос - вспомните этот пост 😃
Подпишись: @onecode_blog
🔥14
Отвечая на вопрос из предыдущего поста. Когда передо мной встала такая задача, то я спросил в чате Тинькофф банка. Ответ на скрине.
Подпишись: @onecode_blog
Подпишись: @onecode_blog
👍2🔥1
Добавлю еще один момент
После того как мы добавили месяц
Подобные штуки мы разбираем в видео закрытого VIP канала.
Подпишись: @onecode_blog
После того как мы добавили месяц
$date->addMonth()и получили, например 28 февраля. То когда мы прибавим еще месяц
$date->addMonth(), то получим 28 марта. Таким образом пользователь платил кредит 31 числа, а теперь будет платить 28 числа - всегда. Это по сути баг. Чтобы его пофиксить мы должны брать день, например 31 число, и устанавливать его в каждый месяц графика, если такой день есть в этом месяце. А иначе использовать последний день этого месяца.
Подобные штуки мы разбираем в видео закрытого VIP канала.
Подпишись: @onecode_blog
👍3
Практически весь код читается слева направо и сверху вниз. Каждая строка представляет выражение или условие, а каждая группа строк представляет законченную мысль.
Эти мысли следует отделять друг от друга пустыми строками . Это чрезвычайно простое правило оказывает глубокое воздействие на визуальную структуру кода.
Каждая пустая строка становится зрительной подсказкой, указывающей на начало новой самостоятельной концепции. В ходе просмотра листинга ваш взгляд привлекает первая строка, следующая за пустой строкой.
👉 Короче, не боимся вставлять пустые строки, чтобы визуально отделять логические блоки кода.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
Эти мысли следует отделять друг от друга пустыми строками . Это чрезвычайно простое правило оказывает глубокое воздействие на визуальную структуру кода.
Каждая пустая строка становится зрительной подсказкой, указывающей на начало новой самостоятельной концепции. В ходе просмотра листинга ваш взгляд привлекает первая строка, следующая за пустой строкой.
👉 Короче, не боимся вставлять пустые строки, чтобы визуально отделять логические блоки кода.
Роберт Мартин, Чистый код #clean_code
Подпишись: @onecode_blog
🔥12👍2