WbICHA, Как раз первым признаком новичка является желание везде совать недавно изученные reduce вместо давно изученного for. Это ведь не модно, и плевать, что reduce хуже читается, зато можно перед одноклассниками попонтоваться.
А вот понимание того, что надо всегда по мере возможности упрощать свой код, чтобы все в команде мгновенно могли его прочесть, чтобы баг был виден сразу, вот это есть признак наличия опыта.
Я в жизни не поверю, что простой цикл for сложнее читается, чем reduce. Это-ж надо выдумать такое )))
WbICHA, Я вам больше скажу. В данном конкретном случае reduce не только сильно ухудшает читаемость кода по отношению к обычному for, но и работать будет медленнее, потому что вызов функции на каждой итерации - не бесплатная операция.
Усложнять код ради мнимой элегантности - это вредительство
Кирилл Горелов, Ну, в принципе, да. Хотя я даже и не знал о существовании специального термина для описания такой структуры. Подобный принцип организации данных является, строго говоря, говнокодом, потому что, если у вас данные будут разных типов, то поле value не может полностью соответствовать типу данных вашей характеристики, и вам придётся как-то сериализовать эти данные в строку, чтобы хранить в базе. Однако, т.к. задача у вас - не создавать новых таблиц, то это чуть ли не единственное решение в традиционном SQL
ValdikSS, Вы совершенно правы... Ровно до тех пор, пока соседний пользователь этого хостинга, который, скорей всего, судя по тому, что я здесь читал, обычный shared хостинг, не начнёт рассылать нечто похожее на спам.
ValdikSS, Потому что все ваши письма полетят прямиком в Спам. Почти все современные почтовые сервисы типа того же Gmail и Яндекса по умолчанию крайне подозрительно относятся к новым IP адресам, с которых к ним приходит почта. Я бы сказал даже, что они скорей по умолчанию заблокируют новый источник писем. Ведь спам - это чудовищная проблема современности.
Поэтому, рассылать письма нужно из доверенного источника (сервиса), который можно использовать как раз через SMTP.
JastaFly,
Каждый опытный веб-программист знает два непреложных закона:
1. Если вы используете регулярные выражения для решения проблемы, то у вас теперь две проблемы. ) Это правило шуточное, но в каждой программистской шутке есть громадный кусок горькой правды...
2. НИКОГДА! не используйте регулярные выражения для парсинга HTML, а используйте специальный парсер. И вот это правило серьёзное, и нарушать его выйдет себе дороже.
2024 год.
- Не стоит использовать http:// на публичных ресурсах, а только https://
- Не стоит коммитить пароли и токены доступа в Git
- Не стоит использовать везде один и тот же простой пароль
- Не стоит публично критиковать начальство и волшебную спецоперацию
- Не стоит использовать функцию mail() в PHP, а использовать вместо этого SMTP в PHPMailer
Don Puh, Скругления даст вам clip-path. Почему-то мне кажется, что в примере форма заранее подогнана вручную под определенный фиксированный текст, который уже потом просто появляется при помощи анимации. Т.е. сначала анимируется закругленная форма объекта, подгоняется под заранее выбранный текст, а потом этот текст просто появляется.
Александр Коновалов, Я не рекомендую вам в шаблонах, которые выводят html, придумывать какие-то хитрые конструкции и что-то "упрощать". В файлах, где выводится html всё должно быть максимально читаемо, и тут должно быть как можно меньше запутанного кода.
Кстати, советую вам использовать альтернативный синтаксис PHP для html-кода без фигурных скобок. Например:
Всегда описывайте полный вариант. Для тех полей, которые могут не прийти, прописываете дефолтные значения. Прописать дефолты можете как в PHP, так и в атрибутах маппинга полей самой базы.
Про связи между таблицами в базе и их отражение в классах рекомендую смотреть туториалы, потому что там этих связей несколько типов.
Кстати, обязательно объявляйте сами поля в в классах. Это не JavaScript, так как вы делаете делать в PHP не рекомендуется. Если хотите сократить код, лучше используете constructor property promotion
Вам совет: всегда считайте клиент врагом сервера, который постоянно хочет сервер обмануть, прислать вредоносные инъекции, навредить и украсть данные. Ведь это весьма близко к реальности.
Такой образ мыслей сам будет наталкивать вас на верные решения. Например, что все проверки, проводимые на клиенте, всегда нужно дублировать на сервере, и все значения по умолчанию нужно устанавливать именно на сервере.
off, Спасибо! Так и делаем по мере возможности. Правда, не всегда возможно сильно урезать не в ущерб работе.
Конечно, можно что-то тут и там урезать, затянуть пояс потуже, не обращать внимания на swap, и выживать с этим всем.
Однако мы - программисты - такие же мастера, как и все остальные мастера. Ноутбук - это наш инструмент, он нам помогает деньги зарабатывать. На инструменте экономить - делать себе же хуже. И вместо того, чтобы следить за состоянием памяти, наскребая по сусекам капли ресурсов, я бы хотел заниматься делом и иметь хоть какой-то запас ресурсов на всякий случай.
Именно поэтому я рекомендую 16гб минимум. 32 - это тот размер, когда обычному программисту практически вообще не надо думать про память.
Конечно, если бюджет совсем не позволяет, то можно подумать и об Air 8гб, ведь его потом можно хорошо продать и купить себе что-то мощнее. Но если бюджет позволяет, то экономить тут вредно
Алексей Дубровин, Думал вас похвалить, как того самого сына маминой подруги, которому все всегда хватает. А потом посмотрел на жёлтый цвет графика памяти, 7гб swap, и передумал хвалить.
Если график памяти жёлтый, вам уже её сильно не хватает, это вам подсказка на будущее.
Алексей Дубровин, Вопрос далеко не в понтах, а в банальном размере памяти. И Apple специально вставляет эти идиотские 8Гб, которых без swap хватать не будет 100%. И делают они это именно для того, чтобы покупали Pro. Ведь если к Air докинуть по их конским ценам ещё 8Гб, то выгоднее уже будет взять Pro
exxxt4zy, Swap работает везде одинаково, если скорость SSD позволяет. Проблема swap на Маке - это то, что SSD распаян на плате, и если у вас всегда будет работать Swap, то это может очень плохо сказаться на ресурсе SSD. Менять же такой SSD - это страшный геморрой, если вообще получится...
videxerion, Это папка, в которой лежит проект, но самое главное, чтобы в файле go.mod было указано название модуля "module test".
Я добавил в ответ.
Все запуски go run и go build надо делать из корневой директории, где лежит файл go.mod
А вот понимание того, что надо всегда по мере возможности упрощать свой код, чтобы все в команде мгновенно могли его прочесть, чтобы баг был виден сразу, вот это есть признак наличия опыта.
Я в жизни не поверю, что простой цикл for сложнее читается, чем reduce. Это-ж надо выдумать такое )))