Махровый fullstack
Редиректы для тех, кто не верит своей памяти - Короткая шпаргалка по .htaccess, которую вы всё равно забудете — но сохраните - Поговорим о вечном. Солнце встаёт на востоке, кофе постоянно заканчивается, E=mc2, а я каждый раз гуглю как записать редиректы…
Да! И что бы 2 раза не вставать - полезный редирект, который я использую при разработке.
Иногда, что бы на локальном окружении сайт был красив, свеж и опрятен, необходимо иметь копии пользовательских данных (изображения, видио и т.п.), но что делать, если этих изображений гигабайты? Нас и тут спасут редиректы:
#rewrite #htaccess #web #разработка
Иногда, что бы на локальном окружении сайт был красив, свеж и опрятен, необходимо иметь копии пользовательских данных (изображения, видио и т.п.), но что делать, если этих изображений гигабайты? Нас и тут спасут редиректы:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/upload
RewriteRule ^upload/(.+) https://site.ru/upload/$1 [L]#rewrite #htaccess #web #разработка
Лёгкая аугментация Yii2
- Когда окружение имеет значение -
Многим хорош
Частично проблему решают
Но радужно это выглядит только на первый взгляд.😫
Что имеем на практике:
— неудобно переключать окружение (
— приходится плодить локальные правки в конфигурационных файлах;
— конфиги постепенно расползаются по проекту.
В итоге для поддержки разных окружений приходится делать лишние телодвижения.
Не-хо-ро-шо!😭
Исправляем ситуацию:
— подключаем
— загружаем
Для
И всё начинает работать как надо!👍
В чём цимес:
— быстрое переключение окружений,
— чистая конфигурация без лишних правок,
— единая точка правды конфигов,
— нормальная изоляция секретов,
— Docker/CI friendly подход.
Yii2 - зрелый фреймворк. Но немного
Псст... шпаргалка прилагается.
#php #backend #yii2 #env #web #разработка
- Когда окружение имеет значение -
Многим хорош
Yii2, но есть одно неудобство — из коробки он не умеет работать с .env.Частично проблему решают
*-local.php и тот факт, что index.php обычно в игноре.Но радужно это выглядит только на первый взгляд.
Что имеем на практике:
— неудобно переключать окружение (
YII_ENV) и режим дебага (YII_DEBUG);— приходится плодить локальные правки в конфигурационных файлах;
— конфиги постепенно расползаются по проекту.
В итоге для поддержки разных окружений приходится делать лишние телодвижения.
Не-хо-ро-шо!
Исправляем ситуацию:
— подключаем
vlucas/phpdotenv,— загружаем
.env до определения констант и подключения конфигов.Для
basic template всё делается прямо в index.php:require __DIR__ . '/../../vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
$dotenv->load();
defined('YII_DEBUG') or define('YII_DEBUG', $_ENV['YII_DEBUG'] ?? false);
defined('YII_ENV') or define('YII_ENV', $_ENV['YII_ENV'] ?? 'prod');
И всё начинает работать как надо!
В чём цимес:
— быстрое переключение окружений,
— чистая конфигурация без лишних правок,
— единая точка правды конфигов,
— нормальная изоляция секретов,
— Docker/CI friendly подход.
Yii2 - зрелый фреймворк. Но немного
dotenv - и проект чувствует себя куда увереннее в современном мире.Псст... шпаргалка прилагается.
#php #backend #yii2 #env #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Кладбище миграций в Yii2
- Миграции...миграции никогда не меняются -
tl;dr
В начале проекта всё аккуратно, красиво, лакончно:
Через пару месяцев проблема нарастает:
А через год папка☠️
Но в Yii2 предусмотрели способ навести порядок - можно разнести миграции по папкам.
Создаём миграцию сразу в нужной директории:
И немного подсказываем фреймворку, где теперь их искать:
После этого yii migrate спокойно пройдётся по всем папкам и применит всё как обычно.
А структура проекта станет намного приятнее:
Yii2 всё поймёт - даже на кладбище файлов.
А вот человек через полгода хотя бы будет понимать, где искать
#php #backend #yii2 #migration #миграции #web #разработка
- Миграции...миграции никогда не меняются -
tl;dr
Если папка migrations разрослась до размеров энциклопедии -
разнесите миграции по подпапкам и добавьте их в migrationPath.
В начале проекта всё аккуратно, красиво, лакончно:
m240101_create_user_table.php
m240102_add_index_to_user.php
Через пару месяцев проблема нарастает:
m240101_create_user_table.php
m240102_add_index_to_user.php
m240203_fix_index.php
m240205_fix_index_again.php
m240206_final_fix_index_really.php
m240207_why_it_does_not_work.php
А через год папка
migrations выглядит как кладбище древней цивилизации. Но в Yii2 предусмотрели способ навести порядок - можно разнести миграции по папкам.
Создаём миграцию сразу в нужной директории:
php yii migrate/create \
--migrationPath=@app/migrations/campaign create_campaign_table
И немного подсказываем фреймворку, где теперь их искать:
'controllerMap' => [
'migrate' => [
'class' => MigrateController::class,
'migrationPath' => [
'@app/migrations',
'@app/migrations/attachment',
'@app/migrations/campaign',
'@app/migrations/company',
'@app/migrations/contacts',
'@app/migrations/geobase',
'@app/migrations/invoice',
]
],
],
После этого yii migrate спокойно пройдётся по всем папкам и применит всё как обычно.
А структура проекта станет намного приятнее:
migrations/
├ attachments/
├ campaign/
├ company/
├ contacts/
└ invoice/
Yii2 всё поймёт - даже на кладбище файлов.
А вот человек через полгода хотя бы будет понимать, где искать
fix_final_really_final_column.php.#php #backend #yii2 #migration #миграции #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Читальня. Вадим Панов - День чёрной собаки.
— Кто защитит Москву от Кровососа? —
Намедни была прочитана книга Вадима Панова «День чёрной собаки» – мистический триллер, было написано на обложке.
Ииии - не однозначно.🤔
С одной стороны, В. Панов – один из моих любимых авторов и ожидания от книги, возможно, были завышены на старте. А с другой стороны, я не могу сказать, что чтиво не было увлекательным. От прочтения удовольствие было получено, читал каждую свободную минуту, а это ли не показатель хорошей истории? Сюжет захватывает, история развивается постепенно, равномерно, и сюжетные линии, даже, казалось бы, не очевидные, начинают сходиться в одну точку. Через какое-то время начинаешь догадываться кто тут злодей, но мотивация поступков героев книги остается непонятной до конца истории. А потом БАЦ! И паззл сложился! В общем, хороший детектив (для меня, как для не искушённого в детективах).
Но вот чего я не понял, так это зачем в историю приплели мистику. Мистика тут не то что бы играла какую-то роль, она тут смотрится чужеродной и ненужной, а некоторые мистические события книги выглядят совсем необъяснимыми. То есть если убрать мистику из книги, то ничего не изменится. Совсем! Возможно, это ружьё на стене, которое должно выстрелить в следующих книгах, но пока выглядит эта теория сомнительно. В общем, мистическая составляющая, лично у меня, вызвала вопросы.
Итого: я бы рекомендовал книгу, как неплохой детектив, но не посоветовал бы любителям мистики. А почитателям творчества В. Панова рекомендовал бы для ознакомления с новой гранью любимого писателя.
7 летучих мышей из 10.
#книги #почитать #ВадимПанов #Панов #ДеньЧёрнойСобаки #ФеликсВербин #детектив #триллер #мистика
— Кто защитит Москву от Кровососа? —
Намедни была прочитана книга Вадима Панова «День чёрной собаки» – мистический триллер, было написано на обложке.
Ииии - не однозначно.
С одной стороны, В. Панов – один из моих любимых авторов и ожидания от книги, возможно, были завышены на старте. А с другой стороны, я не могу сказать, что чтиво не было увлекательным. От прочтения удовольствие было получено, читал каждую свободную минуту, а это ли не показатель хорошей истории? Сюжет захватывает, история развивается постепенно, равномерно, и сюжетные линии, даже, казалось бы, не очевидные, начинают сходиться в одну точку. Через какое-то время начинаешь догадываться кто тут злодей, но мотивация поступков героев книги остается непонятной до конца истории. А потом БАЦ! И паззл сложился! В общем, хороший детектив (для меня, как для не искушённого в детективах).
Но вот чего я не понял, так это зачем в историю приплели мистику. Мистика тут не то что бы играла какую-то роль, она тут смотрится чужеродной и ненужной, а некоторые мистические события книги выглядят совсем необъяснимыми. То есть если убрать мистику из книги, то ничего не изменится. Совсем! Возможно, это ружьё на стене, которое должно выстрелить в следующих книгах, но пока выглядит эта теория сомнительно. В общем, мистическая составляющая, лично у меня, вызвала вопросы.
Итого: я бы рекомендовал книгу, как неплохой детектив, но не посоветовал бы любителям мистики. А почитателям творчества В. Панова рекомендовал бы для ознакомления с новой гранью любимого писателя.
7 летучих мышей из 10.
#книги #почитать #ВадимПанов #Панов #ДеньЧёрнойСобаки #ФеликсВербин #детектив #триллер #мистика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🌚1🤓1
День, которого нет.
Четвёртое апреля — особенный день для любого веб-разработчика. В этот день отмечается неофициальный и очень символичный профессиональный праздник — День 404. Своим названием, как и датой, этот праздник обязан ошибке, которая знакома любому пользователю интернета:
Существует забавная легенда, связанная с происхождением этой ошибки. Согласно ей, в штаб-квартире CERN, где работал Тим Бернерс-Ли, создатель протокола HTTP, документы и файлы якобы хранились в комнате № 404. Там сидели несколько человек, которые вручную обрабатывали приходившие запросы. И если информация была недоступна, то на запрос следовал ответ: «Room 404: file not found». И, хотя, Тим Бернерс-Ли опровергает эту легенду:
, она уже прочно вошла в интернет-фольклор.
Первоначально, страницы 404 были предельно скучными и унылыми, но со временем веб-дизайнеры стали из них делать маленькие произведения искусства, добавляя различные креативные элементы и интерактивность.
#web, #разработка, #с_праздником
—
Источники: habr, ruwiki, lookatme
Картинка: shedevrum
Четвёртое апреля — особенный день для любого веб-разработчика. В этот день отмечается неофициальный и очень символичный профессиональный праздник — День 404. Своим названием, как и датой, этот праздник обязан ошибке, которая знакома любому пользователю интернета:
Ошибка 404 или Not Found («не найдено») — стандартный код ответа HTTP о том, что клиент был в состоянии общаться с сервером, но сервер не может найти данные согласно запросу.
Существует забавная легенда, связанная с происхождением этой ошибки. Согласно ей, в штаб-квартире CERN, где работал Тим Бернерс-Ли, создатель протокола HTTP, документы и файлы якобы хранились в комнате № 404. Там сидели несколько человек, которые вручную обрабатывали приходившие запросы. И если информация была недоступна, то на запрос следовал ответ: «Room 404: file not found». И, хотя, Тим Бернерс-Ли опровергает эту легенду:
Как человек, который работал в CERN, говорю вам, что комнаты 404 на четвёртом этаже офиса не было. В CERN комнаты нумеруют по-другому: первая цифра обозначает номер здания, а две других — номер комнаты. Но в здании номер 4 нет комнаты номер 04, отсчёт там начинается с 410 и идёт по нарастанию — не спрашивайте меня, почему
, она уже прочно вошла в интернет-фольклор.
Первоначально, страницы 404 были предельно скучными и унылыми, но со временем веб-дизайнеры стали из них делать маленькие произведения искусства, добавляя различные креативные элементы и интерактивность.
#web, #разработка, #с_праздником
—
Источники: habr, ruwiki, lookatme
Картинка: shedevrum
🤓2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
12 апреля 1961 года — легендарный день!
В этот день советский космонавт Юрий Гагарин совершил первый пилотируемый полёт в космическое пространство и облетел Землю за 108 минут.
А кодовая фраза «Вижу горизонт», подтверждающая успешный выход в космос, стала символом успешного старта космической эры.
И пара интересных моментов:
— Существует история, что Юрия Гагарина на борт космического корабля "Восток-1" поднимали с помощью подъёмного крана. Это было связано с конструктивными особенностями корабля и скафандра. Скафандр был достаточно громоздким, и подниматься по лестнице в таком облачении было сложно;
— Так же есть история, из разряда неподтверждённых, что когда Юрий Гагарин приземлился в районе села Смеловка Саратовской области и повстречался с аборигенами, они его испугались, так как он был в скафандре. И тогда Гагарин сказал: "Свой, ребята, свой. Из космоса прилетел!";🇷🇺
С праздником!🚀
#с_праздником
В этот день советский космонавт Юрий Гагарин совершил первый пилотируемый полёт в космическое пространство и облетел Землю за 108 минут.
А кодовая фраза «Вижу горизонт», подтверждающая успешный выход в космос, стала символом успешного старта космической эры.
И пара интересных моментов:
— Существует история, что Юрия Гагарина на борт космического корабля "Восток-1" поднимали с помощью подъёмного крана. Это было связано с конструктивными особенностями корабля и скафандра. Скафандр был достаточно громоздким, и подниматься по лестнице в таком облачении было сложно;
— Так же есть история, из разряда неподтверждённых, что когда Юрий Гагарин приземлился в районе села Смеловка Саратовской области и повстречался с аборигенами, они его испугались, так как он был в скафандре. И тогда Гагарин сказал: "Свой, ребята, свой. Из космоса прилетел!";
С праздником!
#с_праздником
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2💯1
Мамкин DevOps или CI/CD на коленке
Для всех, кто знает боль ручного деплоя.
Тем, кто делал git pull на проде в пятницу вечером.
Всем кто помнит адреса серверов наизусть.
Всем беспризорным душам посвящается.
tl;dr
Да, сегодня на повестке дня рутина - ручная накатка обновлений на сервер. Но и эту скучную рутину можно и нужно автоматизировать.
Речь пойдёт о максимально простом варианте CI/CD. Без GitLab Runner, Kubernetes, Jenkins и прочих инструментов взрослых и серьёзных дядек. Сегодня нам понадобятся только GitLab, webhook и небольшой серверный обработчик.
Что такое webhook
Если отбросить умные определения, webhook — это обычный HTTP-запрос по событию. Произошёл push в репозиторий — GitLab отправил запрос на указанный URL. Для наших целей webhook будет выполнять одну простую задачу — запускать обновление проекта.
Как это работает
— На сервере создаём endpoint для webhook.
— В GitLab настраиваем webhook на этот URL.
— GitLab получает push.
— GitLab отправляет POST-запрос.
— Сервер проверяет токен.
— Сервер выполняет деплой.
Всё - один сервер вежливо сообщает другому, что пора обновляться.
Настраиваем GitLab
В проекте открываем:
Далее указываем:
— URL обработчика;
— Secret Token;
— событие Push Events;
— при необходимости ограничиваем веткой main.
После сохранения GitLab начнёт отправлять запросы при каждом пуше в целевую ветку.
Настраиваем сервер
На сервере потребуется обработчик, который:
— принимает только POST-запросы;
— проверяет токен;
— убеждается, что прилетел нужный branch;
— запускает обновление проекта;
— пишет лог.
В результате у нас не проект, а автономный зверь, который обновляется сам.
Для небольших проектов, внутренних стендов и пет-проектов этого часто хватает с головой. А главное — больше не придётся вспоминать, обновил ли ты этот сервер вчера или только собирался.
А главное — больше не придётся вспоминать, обновил ли ты этот сервер вчера или только собирался.
#cicd #devops #gitlab #webhook #deploy #разработка #backend #automation
Для всех, кто знает боль ручного деплоя.
Тем, кто делал git pull на проде в пятницу вечером.
Всем кто помнит адреса серверов наизусть.
Всем беспризорным душам посвящается.
tl;dr
GitLab webhook + простой серверный обработчик = автоматизированный git pull. Дёшево, сердито и без регистраций и смс.
Да, сегодня на повестке дня рутина - ручная накатка обновлений на сервер. Но и эту скучную рутину можно и нужно автоматизировать.
Речь пойдёт о максимально простом варианте CI/CD. Без GitLab Runner, Kubernetes, Jenkins и прочих инструментов взрослых и серьёзных дядек. Сегодня нам понадобятся только GitLab, webhook и небольшой серверный обработчик.
Что такое webhook
Если отбросить умные определения, webhook — это обычный HTTP-запрос по событию. Произошёл push в репозиторий — GitLab отправил запрос на указанный URL. Для наших целей webhook будет выполнять одну простую задачу — запускать обновление проекта.
Как это работает
— На сервере создаём endpoint для webhook.
— В GitLab настраиваем webhook на этот URL.
— GitLab получает push.
— GitLab отправляет POST-запрос.
— Сервер проверяет токен.
— Сервер выполняет деплой.
Всё - один сервер вежливо сообщает другому, что пора обновляться.
Настраиваем GitLab
В проекте открываем:
Settings → WebhooksДалее указываем:
— URL обработчика;
— Secret Token;
— событие Push Events;
— при необходимости ограничиваем веткой main.
После сохранения GitLab начнёт отправлять запросы при каждом пуше в целевую ветку.
Настраиваем сервер
На сервере потребуется обработчик, который:
— принимает только POST-запросы;
— проверяет токен;
— убеждается, что прилетел нужный branch;
— запускает обновление проекта;
— пишет лог.
В результате у нас не проект, а автономный зверь, который обновляется сам.
Для небольших проектов, внутренних стендов и пет-проектов этого часто хватает с головой. А главное — больше не придётся вспоминать, обновил ли ты этот сервер вчера или только собирался.
А главное — больше не придётся вспоминать, обновил ли ты этот сервер вчера или только собирался.
#cicd #devops #gitlab #webhook #deploy #разработка #backend #automation
👍3
Когда сайт опережает мысли: искусство префетчинга.
Сегодня поговорим о том как ускорить работу сайта не потратив ни копейки. Для этого внимательно почитаем документацию на тему ресурсных подсказок (resource hints).
Дёшево, сердито и эффективно. Особенно, когда поднимаем гугл-попугаев в зелёную область.🦜
#html, #prefetch, #resource_links, #оптимизация, #frontend, #web, #разработка
Сегодня поговорим о том как ускорить работу сайта не потратив ни копейки. Для этого внимательно почитаем документацию на тему ресурсных подсказок (resource hints).
Дёшево, сердито и эффективно. Особенно, когда поднимаем гугл-попугаев в зелёную область.
#html, #prefetch, #resource_links, #оптимизация, #frontend, #web, #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Читальня. Айзек Азимов – Я, Робот.
— О трёх законах робототехники замолвите слово —
В 2004 году вышел фильм «Я, робот» с Уиллом Смитом и фильм мне прям зашёл. После этого я решил, что такую историю я обязан прочитать. Для меня это нормально – сначала посмотреть кино, а потом почитать.
На тот момент о книге я знал несколько вещей:
– Книга написана одним из столпов фантастики;
– Автор сформулировал знаменитые три закона робототехники;
– Книга входит в золотой фонд научной фантастики;
И с этими знаниями я открыл книжку, в ожидании крутого экшона. Как же я ошибался...
Во-первых, оказалось, что это не одна история, а антология рассказов. И тут нет крутого парня - тут крутые робототехники, которые настраивают роботов. Но не крутые, как Уилл Смит, а крутые как, скажем, инженер Зелёный из мультфильма Тайна третьей планеты. Это не плохо, но несколько неожиданно.
Во-вторых, представление автора о роботах и будущем в 2025 году кажутся наивными, местами странными. И читая книгу, то всё время приходилось себе напоминать, что автор, на минуточку, жил 100 лет назад. Это в целом, тоже не очень хорошо сказывалось на погружение в книгу.
В итоге, я читал совсем не ту историю, которую планировал почитать.
———
А что с книгой-то?
А книга это прям твёрдая научная фантастика. Прям твёрже гранита!
Каждая история – это шаг в развитии робототехники, это решение какой-то инженерной задачи. Или психологической – тут даже робопсихологи есть. И, наверное, это должно быть интересно, но нет. Не в 2025 году. Не цепляет – читаешь, как какой-то архаичный научный доклад, а хотелось бы чего-то динамичного. И в процессе чтения у меня сложилось впечатление, будто каждая история была создана исключительно ради того, чтобы так или иначе опровергнуть или подтвердить один из фундаментальных законов робототехники. Сами же законы робототехники, описанные Азимовым – глыба, фундамент, основа-основ.
Искренне надеюсь, что цикл Основание, который лежит у меня на полке будет не столь сухим.
Итого: при всём уважении к фантастам-основателям - современному человеку, на мой взгляд, книга может показаться скучной. Но если очень хочется узнать «как это было» или есть академический интерес к старой фантастике, то однозначно да! Читать!
И да - фильм 2004 года имеет к книге примерно такое же отношение, как терминатор к учебнику по кибернетике.
6 жестянок из 10.
#книги #почитать #АйзекАзимов #Азимов #ЯРобот #классика #научная #фантастика #роботы
— О трёх законах робототехники замолвите слово —
В 2004 году вышел фильм «Я, робот» с Уиллом Смитом и фильм мне прям зашёл. После этого я решил, что такую историю я обязан прочитать. Для меня это нормально – сначала посмотреть кино, а потом почитать.
На тот момент о книге я знал несколько вещей:
– Книга написана одним из столпов фантастики;
– Автор сформулировал знаменитые три закона робототехники;
– Книга входит в золотой фонд научной фантастики;
И с этими знаниями я открыл книжку, в ожидании крутого экшона. Как же я ошибался...
Во-первых, оказалось, что это не одна история, а антология рассказов. И тут нет крутого парня - тут крутые робототехники, которые настраивают роботов. Но не крутые, как Уилл Смит, а крутые как, скажем, инженер Зелёный из мультфильма Тайна третьей планеты. Это не плохо, но несколько неожиданно.
Во-вторых, представление автора о роботах и будущем в 2025 году кажутся наивными, местами странными. И читая книгу, то всё время приходилось себе напоминать, что автор, на минуточку, жил 100 лет назад. Это в целом, тоже не очень хорошо сказывалось на погружение в книгу.
В итоге, я читал совсем не ту историю, которую планировал почитать.
———
А что с книгой-то?
А книга это прям твёрдая научная фантастика. Прям твёрже гранита!
Каждая история – это шаг в развитии робототехники, это решение какой-то инженерной задачи. Или психологической – тут даже робопсихологи есть. И, наверное, это должно быть интересно, но нет. Не в 2025 году. Не цепляет – читаешь, как какой-то архаичный научный доклад, а хотелось бы чего-то динамичного. И в процессе чтения у меня сложилось впечатление, будто каждая история была создана исключительно ради того, чтобы так или иначе опровергнуть или подтвердить один из фундаментальных законов робототехники. Сами же законы робототехники, описанные Азимовым – глыба, фундамент, основа-основ.
Искренне надеюсь, что цикл Основание, который лежит у меня на полке будет не столь сухим.
Итого: при всём уважении к фантастам-основателям - современному человеку, на мой взгляд, книга может показаться скучной. Но если очень хочется узнать «как это было» или есть академический интерес к старой фантастике, то однозначно да! Читать!
И да - фильм 2004 года имеет к книге примерно такое же отношение, как терминатор к учебнику по кибернетике.
6 жестянок из 10.
#книги #почитать #АйзекАзимов #Азимов #ЯРобот #классика #научная #фантастика #роботы
👍2
Не самый полезный фидбэк
Просматривая сериал Зло (4-й сезон, 3-я серия), узнал о существовании такого термина как фидбэк в контексте аграрного сектора. Так как в миру фидбэк ассоциируется с получением обратной связи, то использование привычного термина да не в привычном месте задело струнки любопытства. Ну, полюбопытствуем...
Так вот, фидбэк в аграрном производстве – это практика скармливания животным останков других животных. На английском это называется meat-and-bone meal (MBM), а на русском – мясокостная мука (МКМ).
MKM – это форма переработанного корма, сделанного из останков животных (кости, внутренности, кровь и т.п.). Эти субпродукты обрабатываются, высушиваются и измельчаются в порошок, который добавляют в корм для скота, птицы, рыб и т.д.
Сторонники этой практики акцентируют внимание на экономической выгоде от такого подхода, так как утилизируются отходы мясной промышленности. Но есть и обратная сторона медали. Так, в 1990-х годах была вспышка эпидемий коровьего бешенства (BSE), причинами которой мог быть корм, содержащий материалы от других заражённых коров. После этого во многих странах ввели строгие ограничения и запреты на скармливание жвачным животным останков их же вида — во избежание "каннибалистического" круга передачи прионных заболеваний.
Практика использования мясокостной муки (МКМ) в разных странах регулируется по разному. После вспышки BSE в 1990-х запрет на использования MKM введён, например, в Евросоюзе, Японии, Канаде и других странах. Евросоюз, правда, в 2021 частично снял ограничения и разрешил использование MKM от свиней в кормах для птицы и наоборот, при условии отсутствия перекрестного загрязнения. А в таких странах как США и Австралия MKM разрешены для использования частично, а Вьетнам активно импортирует МКМ для использования в кормах для животных.
А что у нас на Родине?
В России использование мясокостной муки (МКМ) в кормлении животных регулируется законодательством и санитарными нормами, с акцентом на безопасность и предотвращение распространения заболеваний.
– запрещено использование МКМ, содержащей белки жвачных животных, в кормах для жвачных животных (коров, овец, коз);
– использование МКМ в кормах для нежвачных животных, таких как свиньи и птицы, разрешено при термической обработке при температуре не ниже 130°C в течение не менее 30 минут для инактивации потенциальных патогенов;
– а при производстве кормов для домашних животных, таких как кошки и собаки МКМ используется довольно широко.
Такие дела, брат.
Согласитесь, что фраза «получить фидбэк» заиграла новыми красками?🐷
Источники: ruwiki, ФГБНУ «ФЦОБКП АПК», Своё фермерство, АгроЭксперт, wiki
#внезапно, #позновательно, #изюм, #feedback
Просматривая сериал Зло (4-й сезон, 3-я серия), узнал о существовании такого термина как фидбэк в контексте аграрного сектора. Так как в миру фидбэк ассоциируется с получением обратной связи, то использование привычного термина да не в привычном месте задело струнки любопытства. Ну, полюбопытствуем...
Так вот, фидбэк в аграрном производстве – это практика скармливания животным останков других животных. На английском это называется meat-and-bone meal (MBM), а на русском – мясокостная мука (МКМ).
MKM – это форма переработанного корма, сделанного из останков животных (кости, внутренности, кровь и т.п.). Эти субпродукты обрабатываются, высушиваются и измельчаются в порошок, который добавляют в корм для скота, птицы, рыб и т.д.
Сторонники этой практики акцентируют внимание на экономической выгоде от такого подхода, так как утилизируются отходы мясной промышленности. Но есть и обратная сторона медали. Так, в 1990-х годах была вспышка эпидемий коровьего бешенства (BSE), причинами которой мог быть корм, содержащий материалы от других заражённых коров. После этого во многих странах ввели строгие ограничения и запреты на скармливание жвачным животным останков их же вида — во избежание "каннибалистического" круга передачи прионных заболеваний.
Практика использования мясокостной муки (МКМ) в разных странах регулируется по разному. После вспышки BSE в 1990-х запрет на использования MKM введён, например, в Евросоюзе, Японии, Канаде и других странах. Евросоюз, правда, в 2021 частично снял ограничения и разрешил использование MKM от свиней в кормах для птицы и наоборот, при условии отсутствия перекрестного загрязнения. А в таких странах как США и Австралия MKM разрешены для использования частично, а Вьетнам активно импортирует МКМ для использования в кормах для животных.
А что у нас на Родине?
В России использование мясокостной муки (МКМ) в кормлении животных регулируется законодательством и санитарными нормами, с акцентом на безопасность и предотвращение распространения заболеваний.
– запрещено использование МКМ, содержащей белки жвачных животных, в кормах для жвачных животных (коров, овец, коз);
– использование МКМ в кормах для нежвачных животных, таких как свиньи и птицы, разрешено при термической обработке при температуре не ниже 130°C в течение не менее 30 минут для инактивации потенциальных патогенов;
– а при производстве кормов для домашних животных, таких как кошки и собаки МКМ используется довольно широко.
Такие дела, брат.
Согласитесь, что фраза «получить фидбэк» заиграла новыми красками?
Источники: ruwiki, ФГБНУ «ФЦОБКП АПК», Своё фермерство, АгроЭксперт, wiki
#внезапно, #позновательно, #изюм, #feedback
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤓1
Спекуляции по правилам
Продолжаем тему ускорения загрузки страниц сайта, поднятую в прошлой теме.
И сегодня на повестке Speculation Rules API - эволюционное развитие prefetch и prerender.
Честно говоря, информации получилось много, а опытных результатов - мало. Пока полноценно сей вундервафель никуда применить не удалось, но, налабораторных крысах тестовом стенде результат получился впечатляющим - субъективно скорость рендера страницы (категория товаров с фильтром) изменилась с 3-х секунд до каких-то мгновений.⚡️
Впечатляет!
#html, #prefetch, #speculation, #speculation_rules_api, #оптимизация, #frontend, #web, #разработка
Продолжаем тему ускорения загрузки страниц сайта, поднятую в прошлой теме.
И сегодня на повестке Speculation Rules API - эволюционное развитие prefetch и prerender.
Честно говоря, информации получилось много, а опытных результатов - мало. Пока полноценно сей вундервафель никуда применить не удалось, но, на
Впечатляет!
#html, #prefetch, #speculation, #speculation_rules_api, #оптимизация, #frontend, #web, #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Google Page Speed или как Google оценивает сайты
Так уж получилось, что сначала я затронул тему ресурсных подсказок, затем разобрал как предсказывать поведение пользователя, а теперь вот разберём, из-за чего все эти телодвижения были.
А было всё это для того, что бы улучшить показатели в Google Page Speed, которые называются Core Web Vitals.
Итак, Core Web Vitals от Google - это набор характеристик, которые показывают, насколько удобен для пользователя сайт. Эти показатели основываются на времени загрузки сайта, визуальной стабильности и удобстве взаимодействия с сайтом.
На текущий момент используются следующие показатели:
- FCP-метрика
- INP-метрика
- LCP-метрика
- CLS-метрика
- TTFB-метрика
Эти характеристики участвуют в качестве одного из факторов ранжирования сайта в поисковой выдаче Google и именно поэтому нужно стремиться их повысить.
Зачастую бытует мнение, что Google Page Speed показывает скорость загрузки сайта, но это не совсем так. Важно понимать, что показатели Google Page Speed отображают, насколько сайт соответствует рекомендациям Google в плане удобства пользования. Поэтому ориентироваться на показатели Google Page Speed, как на метрику скорости загрузки сайта, не корректно. Вполне может быть ситуация, что сайт может грузиться мгновенно, а количество баллов при тесте будет неудовлетворительным. Например, можно посмотреть на показатели таких сайтов как: ozon.ru, youtube.com, wb.ru и т.п.
🚨 Показатели Google Page Speed действительно играют важную роль, однако их следует воспринимать скорее как полезные рекомендации, которые помогают выявлять возможности для дальнейшего улучшения, а не как абсолютные критерии оценки производительности сайта.
Предлагаю на всё это дело посмотреть подробнее...
#google, #page, #speed, #core, #web, #vitals, #оптимизация, #frontend, #web, #разработка
Так уж получилось, что сначала я затронул тему ресурсных подсказок, затем разобрал как предсказывать поведение пользователя, а теперь вот разберём, из-за чего все эти телодвижения были.
А было всё это для того, что бы улучшить показатели в Google Page Speed, которые называются Core Web Vitals.
Итак, Core Web Vitals от Google - это набор характеристик, которые показывают, насколько удобен для пользователя сайт. Эти показатели основываются на времени загрузки сайта, визуальной стабильности и удобстве взаимодействия с сайтом.
На текущий момент используются следующие показатели:
- FCP-метрика
- INP-метрика
- LCP-метрика
- CLS-метрика
- TTFB-метрика
Эти характеристики участвуют в качестве одного из факторов ранжирования сайта в поисковой выдаче Google и именно поэтому нужно стремиться их повысить.
Зачастую бытует мнение, что Google Page Speed показывает скорость загрузки сайта, но это не совсем так. Важно понимать, что показатели Google Page Speed отображают, насколько сайт соответствует рекомендациям Google в плане удобства пользования. Поэтому ориентироваться на показатели Google Page Speed, как на метрику скорости загрузки сайта, не корректно. Вполне может быть ситуация, что сайт может грузиться мгновенно, а количество баллов при тесте будет неудовлетворительным. Например, можно посмотреть на показатели таких сайтов как: ozon.ru, youtube.com, wb.ru и т.п.
Предлагаю на всё это дело посмотреть подробнее...
#google, #page, #speed, #core, #web, #vitals, #оптимизация, #frontend, #web, #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯1
Читальня. Александра Голубева – Катастеризм.
— Вы же знаете для чего нужны водители в такси? —
Надо сказать, что купился на обложку: чел с вросшей головой в стену, и камеры, следящие во все стороны – сразу представил киберпанк, власть корпораций и вот это всё. На подкорке сознания всплывают Нил Стивенсон, Ричард Морган и «Джонни Мнемоник».
Но всё мимо кассы оказалось...
Это не классическая фантастика с геперпространством, нейромантами и световыми мечами.
Это фантастика ближайшего будущего, которое частично уже наступило: беспилотные автомобили, аренда сознания для вычислений и мошенники, разводящие престарелых родителей.
Это фантастика про «завтра», и в этом «завтра» правят балом: нейросети, видеонаблюдение, социальные сети и прочая знакомая нам атрибутика.
Эта книга про среднестатистического молчела, с вполне обычными проблемами. И про то, как благими намерениями можно устроить себе персональную катастрофу.
И про технологии, которые могут быть как крайне губительными, так и единственным шансом на спасение.
—
Итого: несмотря на, в целом, депрессивный лад и эмоциональную тяжесть происходящего, книгу к прочтению я рекомендую!
7 нейронок из 10
#книги #почитать #альфина #голубева #катастеризм #социальная #фантастика #будущее
— Вы же знаете для чего нужны водители в такси? —
Надо сказать, что купился на обложку: чел с вросшей головой в стену, и камеры, следящие во все стороны – сразу представил киберпанк, власть корпораций и вот это всё. На подкорке сознания всплывают Нил Стивенсон, Ричард Морган и «Джонни Мнемоник».
Но всё мимо кассы оказалось...
Это не классическая фантастика с геперпространством, нейромантами и световыми мечами.
Это фантастика ближайшего будущего, которое частично уже наступило: беспилотные автомобили, аренда сознания для вычислений и мошенники, разводящие престарелых родителей.
Кстати, отдельно отмечу момент с беспилотными автомобилями, мне он показался весьма забавным: в беспилотных автомобилях есть водители, которые делают вид, что ведут машину (или занимаются чем-то другим), что бы пассажиру было спокойнее – за рулём человек, а не эта ваша иишечка.
Это фантастика про «завтра», и в этом «завтра» правят балом: нейросети, видеонаблюдение, социальные сети и прочая знакомая нам атрибутика.
Эта книга про среднестатистического молчела, с вполне обычными проблемами. И про то, как благими намерениями можно устроить себе персональную катастрофу.
И про технологии, которые могут быть как крайне губительными, так и единственным шансом на спасение.
—
Итого: несмотря на, в целом, депрессивный лад и эмоциональную тяжесть происходящего, книгу к прочтению я рекомендую!
7 нейронок из 10
#книги #почитать #альфина #голубева #катастеризм #социальная #фантастика #будущее
🔥2👍1
Когда foreach встречает дзен
Сегодня хочу рассказать о генераторах, которые такие же как итераторы, но только лучше.
Почему я про них вспомнил - на днях встала задачка перебрать несколько миллионов записей статистики и обработать их на лету. Подходя к решению вопроса стандартно, то сделал бы что-нибудь такое:
И при обработке записей словил бы логичное сообщение о превышением памяти:
Но хорошо, что есть они – генераторы!
С использованием генераторов код немного видоизменится и перестанет есть память как не в себя:
Генераторы позволяют перебрать набор данных не загружая их в полном объёме в память, а обрабатывать их по одному элементу.
В PHP это достигается через использования ключевого слова
Таким образом,используя генераторы, получаем недурственный выигрыш в использовании памяти.
По некоторым данным, использование генераторов дают выигрыш в скорости работы: примерно в 4 раза быстрее чем итераторы и на 40% быстрее обычного перебора.
И, как итог, тезисно о генераторах:
- Это не новая функциональность, а развитие существующей;
- Увеличенная скорость обработки большого кол-ва данных;
- Генераторы однонаправленны и работают только «вперёд»;
– Позволяют строить более понятные кодовые конструкции;
Что ж, придётся поправить кое-какие скрипты, обрабатывающие статистику.📊
А для более любопытствующих есть и развёрнутая версия.
#php, #yield, #генераторы, #web, #разработка
Сегодня хочу рассказать о генераторах, которые такие же как итераторы, но только лучше.
Почему я про них вспомнил - на днях встала задачка перебрать несколько миллионов записей статистики и обработать их на лету. Подходя к решению вопроса стандартно, то сделал бы что-нибудь такое:
$statistics = [];
foreach ($items as $item) {
$statistics[] = setPaymentId($item);
}
И при обработке записей словил бы логичное сообщение о превышением памяти:
Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate xxxxx bytes) in BalanceController.php on line xx
Но хорошо, что есть они – генераторы!
С использованием генераторов код немного видоизменится и перестанет есть память как не в себя:
$generator = function (): Generator {
foreach ($items as $item) {
yield $item;
}
};
foreach ($generator() as $item) {
setPaymentId($item);
}Генераторы позволяют перебрать набор данных не загружая их в полном объёме в память, а обрабатывать их по одному элементу.
В PHP это достигается через использования ключевого слова
yield.Таким образом,используя генераторы, получаем недурственный выигрыш в использовании памяти.
По некоторым данным, использование генераторов дают выигрыш в скорости работы: примерно в 4 раза быстрее чем итераторы и на 40% быстрее обычного перебора.
И, как итог, тезисно о генераторах:
- Это не новая функциональность, а развитие существующей;
- Увеличенная скорость обработки большого кол-ва данных;
- Генераторы однонаправленны и работают только «вперёд»;
– Позволяют строить более понятные кодовые конструкции;
Что ж, придётся поправить кое-какие скрипты, обрабатывающие статистику.
А для более любопытствующих есть и развёрнутая версия.
#php, #yield, #генераторы, #web, #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Наводим порядок в миграциях в Laravel
Ранее, я рассказывал про структурирование миграций в Yii2, а теперь пришла очередь поговорить и о Laravel.
В отличие от Yii2, Laravel требует чуть больше телодвижений для того, что бы сгруппировать миграции по папкам. И хотя, «из коробки» есть возможность распределять миграции, реализация этого кажется не очень удобной.
Итак, что делаем:
– Подготавливаем имеющиеся стабы;
– Создаём новую консольную команду, на основе основной, которая удобнее;
– Создаём провайдер, который будет автоматически считывать пути с миграциями, при выполнении стандартной команды;
Звучит как план!
А реализация этого плана с деталями и кодом на расстоянии одного клика.
#php, #laravel, #миграции, #web, #разработка
Ранее, я рассказывал про структурирование миграций в Yii2, а теперь пришла очередь поговорить и о Laravel.
В отличие от Yii2, Laravel требует чуть больше телодвижений для того, что бы сгруппировать миграции по папкам. И хотя, «из коробки» есть возможность распределять миграции, реализация этого кажется не очень удобной.
Итак, что делаем:
– Подготавливаем имеющиеся стабы;
– Создаём новую консольную команду, на основе основной, которая удобнее;
– Создаём провайдер, который будет автоматически считывать пути с миграциями, при выполнении стандартной команды;
Звучит как план!
А реализация этого плана с деталями и кодом на расстоянии одного клика.
#php, #laravel, #миграции, #web, #разработка
CONST умер! Да здравствует ENUM!
Исторически так сложилось, что в PHP, до недавнего времени, для списочных значений использовались константы. И это казалось вершиной удобства.
Но время шло, трава становилась всё менее зелёной, а требования к коду – всё выше. Да и ошибки могли нет-нет, да и проскочить при использовании констант:
- Ошибки в значениях: легко случайно присвоить неправильный числовой идентификатор или строку;
- Отсутствие встроенного контроля типов: компилятор или интерпретатор не могли гарантировать правильность передаваемых значений;
И удобного механизма сравнения при работе с константами тоже не имелось: приходилось постоянно сравнивать строки или числа вручную.
Всё это и привело к появлению стандартизированного способа объявления перечислений, который был добавлен в PHP8.1.
Что умеет ENUM
- Перечисления могут быть обычные:
- А могут быть типизированными:
Причём перечисления могут быть или только чистыми, или только типизированными, а их пересечение не допускается. Так же есть ограничения и по типу скалярных значений для типизированных перечислений – это integer и string.
- Благодаря встроенному методу cases, enum удобно перебирать:
Например для построения выпадающих списков.
- Так же enum можно использовать для подсказки типов в функциях:
Благодаря этому аргумент метода ожидает опцию только из перечисления.
----------------
Таким образом применение перечислений облегчает разработку, снижает вероятность ошибок и делает приложение стабильнее и надежнее. Поэтому использование перечислений можно считать лучшей практикой в современном PHP.
И традиционно, для любопытствующих, чуть больше информации😉
#php #enum #перечисления #web #разработка
Исторически так сложилось, что в PHP, до недавнего времени, для списочных значений использовались константы. И это казалось вершиной удобства.
Но время шло, трава становилась всё менее зелёной, а требования к коду – всё выше. Да и ошибки могли нет-нет, да и проскочить при использовании констант:
- Ошибки в значениях: легко случайно присвоить неправильный числовой идентификатор или строку;
- Отсутствие встроенного контроля типов: компилятор или интерпретатор не могли гарантировать правильность передаваемых значений;
И удобного механизма сравнения при работе с константами тоже не имелось: приходилось постоянно сравнивать строки или числа вручную.
Всё это и привело к появлению стандартизированного способа объявления перечислений, который был добавлен в PHP8.1.
Что умеет ENUM
- Перечисления могут быть обычные:
enum Status {
case Active;
case Inactive;
}- А могут быть типизированными:
enum Status: string {
case Active = ‘active’;
case Inactive = ‘inactive’;
}Причём перечисления могут быть или только чистыми, или только типизированными, а их пересечение не допускается. Так же есть ограничения и по типу скалярных значений для типизированных перечислений – это integer и string.
- Благодаря встроенному методу cases, enum удобно перебирать:
foreach (Status::cases() as $status) {
echo $status->value;
}Например для построения выпадающих списков.
- Так же enum можно использовать для подсказки типов в функциях:
function setStatus(Status $status) {
// сохранение статуса в базу данных
}Благодаря этому аргумент метода ожидает опцию только из перечисления.
----------------
Таким образом применение перечислений облегчает разработку, снижает вероятность ошибок и делает приложение стабильнее и надежнее. Поэтому использование перечислений можно считать лучшей практикой в современном PHP.
И традиционно, для любопытствующих, чуть больше информации
#php #enum #перечисления #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Читальня. Дерек Кюнскен – Квантовый волшебник
— Слушай, ты, espece de con! —
Пожалуй, начну с главного, malparidos!
Книга обогатит ваш словарный запас испанскими и французскими ругательствами. Особенно хорош в этом деле один из персонажей, потому что он считает, что у него самые стальные huevos.
Итак, нас забрасывает в далёкое будущее. Здесь межпланетные перелёты - это норма, кротовые норы – обыденность, а генная модификация породила новые виды человечества.
Одним из таких ГМО-людей и будет главный герой. По происхождению homo quantus – человек, смотрящий на мир сквозь призму квантового бытия, Создан он был для научных исследований и созерцательной деятельности, но что-то в квантовых мозгах коротнуло и жизнь ему такая обрыдла. И стал герой, ни много ни мало, а лучшим вором и аферистом по эту сторонумлечного пути галактики.
Имея такую замечательную репутацию, добровольно вляпывается товарищ, в военно-политический заказ, с далеко идущими последствиями.
А для выполнения заказа, герою необходима команда, надо сказать, весьма колоритная. Тут у нас и неоднозначные homo pupa, они же люди-куклы, и homo iridanus – люди-акулы, и холеричная баба-подрывник, и больной наставник, и, конечно же, искин, считающий себя Спасителем.
Дрим-тим, одним словом.
По ходу пьесы, пока Белизариус собирает команду мы знакомимся с миром, его политической составляющей и его обитателями.
Интересно описаны пост-люди:
– homo quantus – эдакие учёные до мозга костей, которые живут в собственном мире, буквально и фигурально;
– homo pupa – выведенные для служения, с довольно таки противоричивой, а местами и отвратительной, философией и взглядом на мир;
– homo eridanus – лучшие пилотыимпериума галактики, панки по натуре, да и по жизни;
Оглядываясь назад - в книге много интересных и необычных деталей, много различного экшона, нетипичных ситуаций и испытаний для героев. И сюжет, вроде, бодрый, но главный герой настолько гениален, что временами становится скучно: на любое merde у него уже есть заранее просчитанное решение.
Итого: необычный мир, яркие персонажи и вполне бодрый сюжет. Так что книгу можно смело читать ради мира и команды. Но если в какой-то момент Белизариус снова начнёт объяснять устройство двадцатидвухмерного пространства - не пугайтесь. Это просто квантовая механика пытается вас усыпить.
7 homo pupa из 10
#книги #почитать #ДерекКюнскен #Кюнскен #КвантоваяЭволюция #КвантовыйВолшебник #приключенческая #фантастика #космос
— Обзор второй книги - Квантовый сад
— Слушай, ты, espece de con! —
Пожалуй, начну с главного, malparidos!
Книга обогатит ваш словарный запас испанскими и французскими ругательствами. Особенно хорош в этом деле один из персонажей, потому что он считает, что у него самые стальные huevos.
Итак, нас забрасывает в далёкое будущее. Здесь межпланетные перелёты - это норма, кротовые норы – обыденность, а генная модификация породила новые виды человечества.
Одним из таких ГМО-людей и будет главный герой. По происхождению homo quantus – человек, смотрящий на мир сквозь призму квантового бытия, Создан он был для научных исследований и созерцательной деятельности, но что-то в квантовых мозгах коротнуло и жизнь ему такая обрыдла. И стал герой, ни много ни мало, а лучшим вором и аферистом по эту сторону
Имея такую замечательную репутацию, добровольно вляпывается товарищ, в военно-политический заказ, с далеко идущими последствиями.
А для выполнения заказа, герою необходима команда, надо сказать, весьма колоритная. Тут у нас и неоднозначные homo pupa, они же люди-куклы, и homo iridanus – люди-акулы, и холеричная баба-подрывник, и больной наставник, и, конечно же, искин, считающий себя Спасителем.
Дрим-тим, одним словом.
По ходу пьесы, пока Белизариус собирает команду мы знакомимся с миром, его политической составляющей и его обитателями.
Интересно описаны пост-люди:
– homo quantus – эдакие учёные до мозга костей, которые живут в собственном мире, буквально и фигурально;
– homo pupa – выведенные для служения, с довольно таки противоричивой, а местами и отвратительной, философией и взглядом на мир;
– homo eridanus – лучшие пилоты
Оглядываясь назад - в книге много интересных и необычных деталей, много различного экшона, нетипичных ситуаций и испытаний для героев. И сюжет, вроде, бодрый, но главный герой настолько гениален, что временами становится скучно: на любое merde у него уже есть заранее просчитанное решение.
Итого: необычный мир, яркие персонажи и вполне бодрый сюжет. Так что книгу можно смело читать ради мира и команды. Но если в какой-то момент Белизариус снова начнёт объяснять устройство двадцатидвухмерного пространства - не пугайтесь. Это просто квантовая механика пытается вас усыпить.
7 homo pupa из 10
#книги #почитать #ДерекКюнскен #Кюнскен #КвантоваяЭволюция #КвантовыйВолшебник #приключенческая #фантастика #космос
🔥2