OneCode
前往频道在 Telegram
Full Stack на PHP, Laravel и всё, что с этим связано. YouTube: https://www.youtube.com/@onecode_blog
显示更多1 329
订阅者
无数据24 小时
无数据7 天
-830 天
帖子存档
1 328
Переполнение месяцев
При работе с датами есть нюанс, о котором знают не все. Вернее знать могут не только лишь все, не каждый может это делать 😁
Короче, фишка в том, что в разных месяцах разное количество дней. Поэтому когда мы берём последний день масяца, затем прибавляем еще месяц, то можем перескачить на третий месяц.
Пример на скрине ☝️
Именно так по-умолчанию работает пакет Carbon для работы с датой и временем, который мы часто используем.
Но в зависимости от задачи, мы можем изменить это поведение, используя специальную настройку на объекте даты.
Реальный пример: человек платит кредит каждое 31 число. Вопрос - в какой день он должен платить, если в месяце 28 дней? 🤔
Когда в вашем проекте встанет подобный вопрос - вспомните этот пост 😃
Подпишись: @onecode_blog
1 328
Возможно, вы думали, что первоочередная задача профессионального разработчика – «сделать так, чтобы программа заработала». Надеюсь, к этому моменту книга уже заставила вас отказаться от этих представлений.
Функциональность, созданная сегодня, вполне может измениться в следующей версии, но удобочитаемость вашего кода окажет сильное воздействие на все изменения, которые когда-либо будут внесены.
Поэтому я твердо заявляю: форматирование кода очень важно. Форматирование кода направлено на передачу информации, а передача информации является первоочередной задачей профессионального разработчика.
Роберт Мартин, Чистый код #clean_code
1 328
Продолжаем курс по Laravel (PHP)
- Как получать одну запись из базы?
- Рассмотрим несколько способов
- Обсудим какой и когда лучше?
- Затронем тему кэширования
- Ньюансы работы с чанками
- Полезные советы
https://youtu.be/Q4iFPt7QPPQ
Подпишись: @onecode_blog
1 328
Не используйте комментарии там, где можно использовать функцию или переменную.
Возьмем следующий фрагмент кода:
// Зависит ли модуль из глобального списка от подсистемы,
// частью которой является наш код?
if ($smodule.getDependSubsystems().contains($subSysMod.getSubSystem())) {
// ...
}
Его можно было бы перефразировать без комментария в следующем виде:
$moduleDependees = $smodule.getDependSubsystems();
$ourSubSystem = $subSysMod.getSubSystem();
if ($moduleDependees.contains($ourSubSystem)) {
// ...
}
Возможно (хотя и маловероятно), автор исходного кода сначала написал комментарий, а затем — соответствующий ему код. Но после этого автор должен был переработать свой код, как это сделал я, чтобы комментарий можно было удалить.
Роберт Мартин, Чистый код #clean_code1 328
Если вы подали заявку на участие в VIP канале и ждёте, то проверьте сообщения - вам должен написать бот Donate для оформления подписки 🤖
1 328
Правила, говорящие, что каждая функция должна иметь комментарий phpdoc или что каждая переменная должна быть помечена комментарием — обычная глупость.
Такие комментарии только загромождают код, распространяют недостоверную информацию и вызывают общую путаницу и дезориентацию. При этом программисты часто забывают актуализировать комментарии при изменении кода.
Например, требование обязательного комментария phpdoc для каждой функции приводит к появлению монстров вроде следующего примера. Бессмысленные комментарии не приносят никакой пользы. Они только запутывают код, повышая риск недоразумений.
/**
* @param string $title Название диска
* @param string $author Автор диска
* @param int $tracks Количество дорожек на диске
* @param int $durationInMinutes Продолжительность воспроизведения в минутах
*/
public addCD(string $title, string $author, int $tracks, int $durationInMinutes): void {
// ...
}
Также в программах нередко встречаются комментарии, не содержащие ничего,
кроме «шума». Они лишь утверждают очевидное, не предоставляя никакой новой
информации:
/**
* Конструктор по-умолчанию.
*/
public function __construct() {
// ...
}
Да неужели? А как насчет этого:
/** День месяца. */ private int $dayOfMonth;И наконец, апофеоз избыточности:
/**
* Возвращает день месяца.
*
* @return int день месяца.
*/
public getDayOfMonth(): int {
return $this->dayOfMonth;
}
Эти комментарии настолько бесполезны, что мы учимся не обращать на них внимания. В процессе чтения кода наш взгляд просто скользит мимо них. Рано или поздно код вокруг таких комментариев изменяется, и они начинают лгать.
Роберт Мартин, Чистый код #clean_code1 328
На прошлой неделе в нашем чате подняли вопрос – как правильно подключать несколько файлов с маршрутами?
Использовать для этого выражение
require_onceили
require- я думал, что любой способ подойдёт. Оказалось нужно использовать
require, потому что иначе кеширование маршрутов командой
artisan route:cacheработает НЕ корректно. Так что мотаем на ус ☝️ Подпишись
1 328
Грамотное применение комментариев должно компенсировать нашу неудачу в выражении своих мыслей в коде.
Обратите внимание на слово «неудачу». Я абсолютно серьезно. Комментарий — признак неудачи. Мы вынуждены использовать комментарии, потому что нам не всегда удаётся выразить свои мысли без них, однако гордиться здесь нечем.
Не тратьте время на написание комментариев, объясняющих созданную вами путаницу, — лучше потратьте его на исправление. По-настоящему хороший комментарий — тот, без которого вам удастся обойтись.
Роберт Мартин, Чистый код #clean_code
ПС: думаю для нас, русскоговорящих это не очень актуально, тк мы пишем код на-английском, а это НЕ наш нативный язык, поэтому комменты для нас часто несут больше смысла.
Хорошей недели, братья и сестры! 😁
1 328
Какая сумма для тебя комфортна за полезный практический контент по Laravel из моего опыта?
1 328
Приватный канал в телеграм
Завёл закрытый телеграм-канал, где буду выкладывать практические видео, в которых показываю свой личный опыт - как я решил ту или иную задачу c Laravel. Задачи могут быть НЕ обязательно большие и сложные - иногда какие-то полезные мелочи (советы, функции, ошибки).
На текущий момент выложил два видео:
- Как запускать код каждые 5 секунд - решение, которое я использовал при разработке торгового робота.
- Где писать код? Толстые модели и контроллеры - простой подход к написанию функций (бизнес-логики) наших приложений + как работать с данными.
В плане есть около 40 видео, например:
- Двухфакторная аутентификация (2FA) через Google Authenticator.
- Вебсокет-клиент на Laravel для получения данных в реальном времени.
- Генерация PDF документов с динамическими данными.
- Работа с деньгами в коде приложения и базе данных.
- Серия видео про локализацию мультиязычного сайта.
- Приём платежей на сайте, включая криптовалюты.
- Аутентификация (вход и регистрация) через соц. сети.
- Реализация многоуровневой партнёрской программы.
- Управление ролями и полномочиями администратора.
- Полезные функции и ньюансы работы фреймворка.
- Возможно вы предложите свои идеи для видео.
Планирую выкладывать в этот канал по 2-4 видео в месяц. Если будет движуха, то возможно придумаем ещё какую-то активность.
Доступ в канал за ежемесячную абонентскую плату. По стоимости проведём голосование в следующем посте.
Сразу скажу, что видео из канала буду выкладывать
1 328
Забронировал на сегодня комнату звукозаписи. С 5 до 6 часов буду записывать следующий урок по моделям.
Кстати, такая комната - хорошая штука, но какой-то чувак за стеной всё время кашляет. Только запишешь кусок, а он - BARK! Приходится заново записывать. Думаю предложить ему лекарства, а то совсем не бережет себя 😃
Час пользования комнатой стоит 100 лир (350 рублей). Не всегда получается укладываться за час, поэтому 2-3 видео в неделю выходит 1000+ рублей или 5000+ в месяц.
Скоро открою доступ в VIP канал, где все желающие смогут учавствовать в оплате новых видео 😃
Продуктивной пятницы, дамы и господа!
1 328
За вчерашний не полный день робот наторговал около 85 центов 😃 Посмотрим что будет сегодня 🤖
Ошибок в логах нет. Есть идея добавить уведомления в телеграм о завершении сделки (или о нехватке денег) 🤔
Подпишись: @onecode_blog
1 328
Как научиться писать короткие и хорошо организованные функции?
Написание программы сродни любому другому виду письменной работы. Когда вы
пишете статью или доклад, вы сначала излагаете свои мысли, а затем «причесываете» их до тех пор, пока они не будут хорошо читаться.
Первый вариант кода может быть неуклюжим и нелогичным. Вы переделываете, дополняете и уточняете его, пока он не будет читаться так, как вам хочется.
Когда я пишу свои функции, они получаются длинными и сложными. В них встречаются многоуровневые отступы и вложенные циклы. Они имеют длинные списки аргументов. Имена выбираются хаотично, а в коде присутствуют дубликаты.
Но у меня также есть модульные тесты для всех этих неуклюжих строк. Итак, я начинаю «причесывать» и уточнять свой код, выделять новые функции, изменять имена и устранять дубликаты. Я сокращаю методы и упорядочиваю их. Иногда приходится ломать целые классы, но при этом я слежу за тем, чтобы все тесты выполнялись успешно.
В конечном итоге у меня остаются функции, построенные по правилам чистого кода. Я не пишу их так с самого начала. И вообще не думаю, что кому-нибудь это под силу.
Мартин Фаулер, Чистый код #clean_code
1 328
Попросил ИИ (искуственный интеллект) создать контроллер для регистрации пользователей по API Laravel 🤖
Подпишись: @indigoram89_blog
1 328
Недавно разрабатывал на Laravel робота для торговли на криптовалютной бирже.
Сейчас запустил 2 роботов по 50$ для тестирования - посмотрим что получится.
Функционал еще нужно дорабатывать, но пока пусть колбасит как есть.
Подпишись: @onecode_blog
1 328
Картина, нарисованная через тени в CSS
https://codepen.io/jaysalvat/pen/kazzOj?editors=1100
Подпишись: @onecode_blog
1 328
Если функция должна получать более двух или трёх аргументов, то весьма вероятно, что некоторые из этих аргументов стоит упаковать в отдельном классе.
Исходная функция:
makeCircle(float $x, float $y, float $radius): Circle;Доработанная функция:
makeCircle(Point $center, float $radius): Circle;Если переменные передаются вместе как единое целое (как переменные
$xи
$yв этом примере), то, скорее всего, вместе они образуют концепцию, заслуживающую собственного имени.
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
