Махровый fullstack
16 subscribers
66 photos
27 links
Личный блог @nornik:
- Бэкенд, фронтенд и случайные мысли - в произвольных сочетаниях.
- Иногда литература, иногда всё, что взбредёт в голову.
Download Telegram
Маркетинг в XVIII веке или как одна лошадь тянула паровую машину

Как-то листаю я на днях ленту и вижу: «лошадь во время бега развивает мощность 12-15 лошадиных сил». И я такой: «Чо бля?!».

Садись, дружище! Нам надо с тобой серьёзно поговорить!

Термин «лошадиная сила» ввел шотландский инженер и изобретатель Джеймс Ватт, хорошо знакомый нам по школьной программе по физике и по тарифам на электроэнергию. На тот момент, в XVIII веке, Ватт занимался усовершенствованием, паровых машин и неплохо преуспел в этом деле.

Надо сказать, что на тот момент, основным движителем на предприятиях того времени были лошади. Они использовались на пивоварнях, шахтах, мельницах, фермах и т.д. В общем, повсеместно использовались.

А далее Ватту необходимо было своё изобретение монетизировать и, что бы сделать технологию более понятной и было проще объяснить потенциальным покупателями какие выгоды оно принесёт, он и придумал термин «лошадиная сила».

Изобретатель проводил время на угольной шахте и наблюдал за тем, как лошади поднимают грузы и людей из шахт. Основываясь на этих наблюдениях, Ватт установил, что среднестатистическая лошадь может поднять 250 кг груза на высоту в 30 см за 1 секунду, что и было принято за значение 1 лошадиной силы.

В итоге покупатели паровых машин могли легко оценить производительность двигателя, сравнив её с привычной мерой труда — количеством лошадей, необходимых для выполнения той же работы. Это было гораздо проще понять, чем абстрактные термины вроде давления пара или объема цилиндра.

Такой вот маркетинг XVIII века.

Но откуда же 12-15 лошадок при беге лошади?

– в реальности средняя лошадь может развивать мощность около 1 лошадиной силы при длительной равномерной работе - именно это Ватт и использовал в своём маркетинге;
– в тоже время скаковая лошадь на пике бега на несколько секунд может развивать мощность до 15 лошадиных сил;
– а пиковая, теоретическая мощность мускулатуры лошади, с учётом биомеханики, может доходить до 20 лошадиных сил;

А что там люди?

– среднестатистический человек развивает мощность 0.15-0.2 лошадиные силы;
– среднестатистический спортсмен развивает мощность 0.4-0.5 лошадиные силы;
– среднестатистический спортсмен-рекордсмен может развивать мощность до 2 лошадиных сил, а Усэйн Болт развивал пиковую мощность около 3 лошадиных сил в начале бега;

—
И вот уже прошли три столетия, а человечество продолжает измерять мощность двигателей в лошадиных силах. Термин, придуманный однажды в целях маркетинга, прошёл через века и стал настолько привычным, что кажется вечным.

Источники: про паровые машины, про лошадиные силы

#внезапно #позновательно #изюм #лошадиная #сила
👍1
Водка, дружба и стыковка Союз-Аполлон

Сегодня, 17 июля, отмечается знаменательное событие в истории мировой космонавтики, а именно произошла стыковка двух космических кораблей в космосе: советского «Союз-19» и американского «Apollo».

Подготовка к этому событию началась загодя и в течение нескольких лет решались как технические, так организационные вопросы: начиная от разработки универсального стыковочного механизма и заканчивая согласованием стандартов безопасности.

И вот 15 июля 1975 года с космодрома Байконур стартовал советский корабль «Союз-19» с экипажем, состоявшем из Алексея Леонова и Валерия Кубасова. Следом, спустя несколько часов, с мыса Канаверал отправился американский «Apollo» корабль с товарищами Томасом Стаффордом, Вэнсом Брандом и Дональдом Слейтоном.

А уже 17 июля 1975 года произошла первая в истории стыковка космических кораблей.

Но, разумеется, это не всё.

Существует легенда, согласно которой, Алексей Леонов разыграл своих американских коллег, предложив «бахнуть» за встречу.

Во время одного из совместных обедов Леонов вручил членам экипажа «Apollo» несколько тюбиков с едой, на которых были приклеены этикетки с названием популярных марок советской водки («Столичная», «Русская», «Пшеничная»). При этом Леонов заявлял, что согласно русским традициям необходимо обязательно выпить за встречу, подчеркнув важность соблюдения традиций гостеприимства.

Кто-то утверждает, что водка таки была.
Другие, уверены, что это был коньяк.
А Алексей Леонов позже рассказывал, что на самом деле это был борщ в тюбиках. ;)

Что бы ни находилось в этих тюбиках, легенда хороша сама по себе и прекрасно символизирует дружелюбие и чувство юмора советских космонавтов даже в непростых космических условиях.

#внезапно #позновательно #изюм #союз_аполлон #космос
😁2
Псевдокласс, который слишком много знал

Никогда бы не подумал, что CSS может стать источником беспокойства. Однако, как оказалось, css-псевдокласс :visited скрывал в себе уязвимость, которая позволяла отслеживать историю посещённых страниц пользователя.

Эта история началась ещё в конце прошлого века, когда веб был молод и зелен, а разработчики хотели сделать жизнь простого пользователя проще и ярче. И придумали они выделять посещённые ссылки другим цветом, чтобы было легче ориентироваться среди бесконечных просторов интернета.

Всё бы ничего, но этот простой трюк открыл простор для злоумышленников. Оказалось, что достаточно немного пошаманить с кодом, и можно легко вычислить историю просмотров ресурсов посетителя сайта на основе визуальных изменений.

Впервые, ещё 28 мая 2002 года, проблему зафиксировал Дэвид Барон, работавший в то время в Mozilla. Это произошло через несколько месяцев после того, как исследователь безопасности Эндрю Кловер опубликовал концепцию атаки, ссылаясь на статью «Атаки по времени на веб-приватность» исследователей из Принстона Эдварда Фелтена и Майкла Шнайдера, вышедшую в 2000 году.

Проблема по итогу оказалась довольно серьёзной. Исследователи безопасности продемонстрировали множество атак, связанных с этой уязвимостью: тайминговые атаки, анализ изменения пикселей, взаимодействий с пользователем и даже атаки на уровне процессов. Всё это позволяло злодеям незаметно извлекать сведения о поведении пользователя в браузере.

Но не только кулхацкеры пользовались этой брешью в приватности. Один из ярких примеров использования данной уязвимости произошёл в начале 2020-х годов, когда крупные корпорации начали активно внедрять инструменты мониторинга сотрудников. Используя технику определения посещённых ссылок, работодатели пытались выяснить, посещают ли работники запрещённые ресурсы или проводят слишком много времени на развлекательных платформах.

Одним из первых шагов решения проблемы было введение ограничений на применение CSS-свойств, применяемых для псевдокласса :visited, разрешив использовать лишь ограниченный набор свойств: цвет текста, цвет фона и цвет границ. Также были введены ограничения на стороне JavaScript и функция getComputedStyle() теперь возвращает одинаковый стиль как для псевдоклассов :link и :visited.

И вот в апреле 2025 года Google представила технологию «разделённой истории посещений» (Partitioned Visited Links History). Суть метода заключается в том, что каждый сайт получает отдельную область хранения истории посещений, что исключает возможность просмотра общей истории всеми сайтами одновременно. Благодаря этому нововведению, даже если один сайт попытается использовать уязвимость, он сможет увидеть только те ссылки, которые относятся непосредственно к нему.

В итоге псевдокласс :visited больше не работает глобально — он зависит от контекста. Что делает браузеры более приватными по умолчанию, а защита теперь встроена в механизм работы с веб-страницами.

Источники: хабр, securitylab

#css #security #frontend #web #разработка
Читальня. Вадим Панов – Zандр

— в Зандре опасны все, а особенно тот, кто выглядит подчеркнуто миролюбиво —

И пока два берсерка - оранжевый Донни и всадник апокалипсиса ДАМ - мерятся размерами атомных подводных лодок в твитторах, предлагаю взглянуть на один из возможных сценариев постапокалипсиса, созданный Вадимом Пановым на страницах книги «Zандр». ☢️

—————

Зандр – Земля после Времени Света – конфликта планетарного масштаба, после которого планета сильно видоизменилась. Города превратились в руины, горы утонули во вновь образовавшихся океанах, цветущие поля превратились в пустыни, а люди – выжили.

Мир стал другим: каменистым, жёстким, колючим, диким, покрытый ядовитыми пустошами и плотоядными лесами. Но изменился не только ландшафт, но и люди претерпели изменения. Появились комби, садовники, падлы, папаши, гильдёры, соборники и прочие представители нового мира. Каждый — продукт новой эволюции, порождённой страхом, радиацией, ядом и техногенной мутацией.

В книгу, вошли три повести:
– «Аттракцион «Безнадёга» – история одного бандитского притона,
– «Нянька Сатана» - история про ветерана со стальным характером и младенцем в рюкзаке,
– «Седьмой круг Зандра» – история об изголодавшейся флоре и её садовниках.

Каждая повесть отличается уникальной атмосферой, философией, действующими лицами и географией, но все их объединяет: жестокий мир, ураганный экшон и герои – крутые, ироничные, с принципами, за которые они готовы умирать, но не прогибаться.

Периодически попадаются отрывки писем от некоего Скучного Очевидца, архивиста, который будто всё ещё ведёт хронику гибнущего мира. Его записи — это смесь философских ремарок и фрагментированной хронологии катастрофы. К слову, интернет в этом мире всё ещё жив, но, правда, местами, временами, но и это не точно.

И, знаете, меня по-настоящему завораживает этот мир. Хочется узнать больше — не о катастрофе, а о тех, кто в ней выжил. Кто научился жить среди обломков, вдыхая радиоактивную пыль и сражаться за право увидеть ещё один рассвет. В очередной раз восхититься, но не разрухой и жестокостью, а человеком, способным выжить в самом враждебном из возможных миров.

Итого: получилась добротная боевая фантастики с философским привкусом. Если вам по душе скрип песка на зубах, свист ядерных пуль над головой и вечная тоска по человеку, — читать обязательно.

8 комби из 10.

#книги #почитать #ВадимПанов #Панов #Зандр #боевая #фантастика #постапокалипсис
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Быстрый и неутомимый fastcgi_finish_request!

Ооооо! Чо расскажу! Чо нашёл! Чо узнал!

Итак, ситуация:
В веб-приложение прилетает вебхук с внешней системы. Мы его обрабатываем, отдаём 200 OK — вроде бы всё хорошо. Но нет!

Обработка занимает слишком много времени. За это время внешняя система решает, что что-то пошло не так, и дёргает вебхук снова, и снова, и снова...

В результате:
- куча лишних запросов;
- сервер впустую тратит ресурсы;
- некрасивые побочные эффекты.

Побаловшись с оптимизацией некоторое время, и не добившись каких-либо значительных результатов – выполнение обработчика в тайминги не укладывается – приуныл.

На тот момент единственным рабочим решением виделось использование очередей и выполнение отложенных задач – это решение было отложено как план Б из-за длительности реализации.

И отправился искать советы в эти наши интернеты. Искал медь, но нашёл золото. 🤌

Без лишних предисловий – спас ситуацию fastcgi_finish_request.

Эта функция позволяет завершить отправку ответа клиенту, но продолжить выполнение скрипта на сервере.

public function onStatusChanged(Request $request)
{
echo "OK";
fastcgi_finish_request();

// делаем основную логику
}

Теперь вебхук получает ответ моментально, а вся тяжёлая обработка продолжается уже после того, как соединение закрыто.

Когда применяем: когда нам не важно дожидаться результатов выполнения скрипта и можно освободить соединение:
– обработка webhook;
– выполнение отложенных задач;
– ускорение API
– и т.д.

Особенности и ограничения:
– работает только в окружениях FastCGI;
– после вызова нельзя отправлять данные клиенту так как соединение уже закрыто;
– всё, что идёт после, всё ещё выполняется в том же PHP-процессе;
– если скрипт будет выполняться долго, на него всё ещё влияют max_execution_time и memory_limit;

В общем, вещь волшебная.
И пусть ваши вебхуки будут быстрыми и неутомимыми!

#php #fastcgi #оптимизация #web #разработка
🔥2
Локальный HTTPS без гипсу, без пыли, без шуму...

Все современные веб-приложения используют SSL для работы, в то время как для локальной разработки это не обязательно. Но бывают случаи, когда без SSL локальная разработка невозможна или крайне затруднительна (например, при работе с WebSocket, push-уведомлениями и т.д.).

Классическое решение задачи сводится к созданию самоподписанного сертификата через OpenSSL, но у такого решения есть проблема: созданный сертификат не является доверенным и поэтому браузеры будут об этом навязчиво напоминать. Да и чего греха таить – команды каждый раз приходится гуглить 😱

И на днях я нашёл настоящую серебряную пулю для этой задачи – mkcert:

- создаёт локальный корневой сертификат;
- автоматически добавляет его в доверенные хранилища;
- генерирует «валидные» серты для любых доменов: localhost, *.test, myapp.local;
- доступная для Windows, MacOS и Linux.

Установка проста и не требует танцев с бубном:

brew install mkcert
brew install nss


При первом запуске mkcert, необходимо запустить с флагом -install:

mkcert -install


Если увидели следующее сообщение, то всё прошло как надо.

Created a new local CA
The local CA is now installed in the system trust store! ️
The local CA is now installed in the Firefox trust store (requires restart)!


А теперь создаём сертификат под конкретный проект:

mkcert app.local


Всего лишь одна команда, а колоссальная экономия времени и нервов.

Must-have для любого дев-окружения. 🔥

#ssl #https #mkcert #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Читальня. Чайна Мьёвиль – Город и город.

— Андрюха, у нас труп, возможно пролом —

Знакомство с этим произведением у меня началось с сериала BBC с одноимённым названием, после просмотра которого осталось ощущение недосказаности и неполноты картины.

Решив, что сценарист бездарность, а режиссёр халтурщик – я обратился к первоисточнику и взял в руки книгу. Это была вторая попытка понять произведение. Результат тот же - «Боже! Какая же муть!». 😑

Уж не знаю что на меня нашло, но я перечитал это дело ещё раз...
——

Книга нас встречает трупом девушки в среднестатистическом дворе в городе Бешель.

Это преступление начинает расследовать среднестатистический полицейский, совершая обычную полицейскую рутину. И в целом, это была бы весьма унылая детективная история, выполненная по лекалам провинциального нуара, если бы не место действия.

А оно прекрасно своей шизой.

Действие происходит в восточноевропейском городе Бешель, который гросс-топически делит территорию с другим городом – Уль-Комой. Если быть более точными, то это даже не города, а страны – с таможней, границами и прочей атрибутикой. И всё бы ничего, но границы городов обусловлены только способностью не-замечать жителей другого города.

А чтобы не-видеть было удобнее, жители одного города отличаются от жителей другого одеждами, походкой, какими-то прочими микро-признаками, которые за столетия жители научились анализировать не задумываясь. Отличаются дома, машины, улочки, киоски фастфуда и т.д. и т.п. Как там было у классика: "когда у общества нет цветовой дифференциации штанов, то у общества нет цели". Так вот тут - это доведено до абсолюта.

Впрочем, не-замечать - это не только норма, но и необходимость. Зазевался, задержал взгляд на табуированном предмете и совершил самое страшное преступление, равносильное государственной измене - так называемый пролом. И по душу такого зазевавшегося приходит Пролом, грозный и всемогущий, который следит за соблюдением жителями всех этих условностей.

На этом сложность градоустройства не ограничивается – так как логически города два, а физически один, то есть места пересечения. Расположение городов может быть крайне неудобным: это могут быть чередующиеся дома, пересечения улиц и даже (!) этажи в одном здании могут принадлежать разным городам.

В итоге цепляет не детективная история сама по себе - она где-то плетётся на заднем фоне, а эта максимально наркоманская история двух городов выходит на первый план. Что же такое произошло с людьми, что они добровольно согласились соблюдать свод этих табу? По какой такой причине у них дичайший страх перед Проломом и откуда такая безоговорочная вера в их правоту? Кто и с какой целью замутил этот жестокий социальный эксперимент.

К сожалению, автор не отвечает на эти вопросы, а ставит многоточие. Бесячее многоточие, как, практически во всех диалогах, обрывая фразы на полуслове.

Итого: как детектив книга скучная, как фантастика - забористо-наркоманская. Читать ли? Конечно! Почему только прочитавшие это произведение должны страдать? 😈
А если серьёзно - книга интересна своей задумкой разделенных городов и людей, но вот раскрыть эту задумку, на мой взгляд, автору не удалось.

⚠️ Читать на свой страх и риск.

5 проломов из 10

#книги #почитать #ЧайнаМьёвиль #Мьёвиль #ГородИГород #детектив #нуар
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓2👍1
Один cron, чтобы править всеми задачами

Итак, продолжаем улучшать yii2.

На проекте случилось несколько проблем разом:
- кол-во cron-задач стало разрастаться: тут и обновление телепрограммы, и сбор статистики, и синхронизация рекламных компаний и ещё десяток других задач;
- переносить задачи по цепочке local => stage => prod стало проблематично - легко что-нибудь потерять;
- и так как задач много, то не плохо бы их и записать в git;

‼️ Согласно рекомендациям лучших собаководов был выбран пакет omnilight/yii2-scheduling, который добавляет удобный планировщик задач в духе Laravel Scheduler.

Основная красота в двух моментах:
- в cron оставляем только одну строку:
* * * * * php yii schedule/run --scheduleFile=@app/config/schedule.php >> /dev/null 2>&1


- все остальные задачи добавляем в специальный конфиг-файл config/schedule.php с человекопонятным написанием:
$schedule->exec("php yii lime/load-program")
->withoutOverlapping()
->cron("30 1 * * *");


На что ещё стоит обратить внимание:
- предусмотрен механизм защиты от параллельного запуска задач;
- можно записывать вывод cron-команды в файл или email;

Всё! Пара Па Па Пам! 👍

#php #backend #yii2 #cron #scheduling #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Хеллоуин со славянским колоритом

🎃 Сегодня 31 октября, а значит многими отмечается Хеллоуин, Самайн, День всех святых, Тыквенный спас, Велесова ночь!

Благодаря глобализации и голливуду, мы узнали, что 31 октября мир традиционно отмечает Хэллоуин. Нам уже известна вся атрибутика этого праздника: тыквы-фонари, ряженые в страшных костюмах, Майкл Мейерс с тесаком и прочие прелести. Всё это впитывалось нами десятилетиями с каждым новым глотком кока-колы.

Чуть позже, поскребя хеллоуин, оказалось, что он имеет кельтские корни и в девичестве назывался Самайном/Самхейном. А фонарь из тыквы, совсем даже фонарь из репы и зовут его фонарём Джека. Ну и как бы ладно не об этом сегодня речь.

Но сегодня, я узнал, что у древних славян тоже был праздник 31 октября - Велесова ночь!

Велесова ночь – это древнеславянский праздник, посвященный смене времен года, а именно переходу осени в зиму. Кроме того, согласно поверьям, в ночь на 1 ноября граница между тремя мирами - Явь (нашим миром), Навь (загробным миром) и Правь (миром богов) - стирается, и у живых людей, душ умерших и духов (причем как добрых, так и злых) появляется возможность перемещаться между ними.

Властелином всех трех миров в древнеславянской мифологии считался Велес - бог плодородия, животноводства, мудрости и богатства. Он также покровительствовал колдунам, мастерам, купцам и путешественникам, был проводником умерших в Навь, а душ младенцев в Явь. Славяне верили, что в ночь на 1 ноября Велес вместе с другими духами спускается на Землю, чтобы преподнести людям урок, либо даровать свое благословение. Именно поэтому это время называли Велесовой ночью.

interfax


‼️ Однако, говорят, царь праздник не настоящий!

Прямых письменных свидетельств о Велесовой ночи в древнерусских источниках не обнаружено.

А упоминание Велисовой ночи, по некоторым источникам, впервые встречается у некоего волхва Велеслава в 2000-м году в одноименном рассказе.

Вот что говорит заведующий кафедрой всеобщей истории и международных отношений АлтГУ Сергей Усольцев.
А Велесова ночь – праздник, который кто-то выдумал позавчера. Нет никаких письменных свидетельств, дошедших до нас, о том, что был такой праздник. Мы толком ничего не знаем про Велеса. Никакая культура, связанная с Велесом (кроме кратких упоминаний в летописи) не сохранилась


Тем не менее праздники, знаменующие переход от лета к зиме, есть у многих народов. Вполне возможно, что и Велесова ночь тоже была, не смотря на мнение скептиков.

А отмечать этот день или нет - каждый решает сам, благо, выбор праздников огромен.

А можно просто пойти спать. 💤

Про хэлоуин и репу Джека
Про Велисову ночь
Немного скепсиса

#внезапно #позновательно #изюм #хэллоуин #велесова_ночь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🌚1
По следам осеннего IT Link 2025 🐾

❗Пост не рекламный и не заказной, но с ссылками.

В Чебоксарах 8 ноября 2025 года состоялась осенняя IT-конференция IT Link 2025.

Поскольку в нашем городе мероприятий такого масштаба не так что бы случается много, то было принято решение сходить и послушать о чем говорит бизнес в 2025 году.

Основная канва конференции - это использование ИИ в различных сферах деятельности, разумеется, IT. Было несколько основных треков: product & design, highload, аналитика, разработка и инфобез.

Для себя выделил, несколько докладов, которые зацепили.

1️⃣. Егор Пустовит, "Почему не нужно внедрять ИИ в ваш продукт"

Честно, очень хотелось послушать что-то трезвое на данную тематику на фоне дичайшего хайпа по нейронкам.

К сожалению не сложилось.

В итоге Егор выступил с докладом "Будущее без занудства" - доклад получился довольно интересным, особенно на фоне прогнозов, раздающихся из каждого утюга, о чудо-нейронках, которые уже завтра заменят всех программистов / художников / дизайнеров / копирайтеров / юристов / бухгалтеров. Насколько это не так говорят сообщения, которые посыпались последние недели как из рога изобилия, о том, что компании набирают обратно сотрудников в штат 🫠. Или о том, что роботами, которые должны управляться ИИ и помогать по дому, будут управлять индусы 🫠.

В докладе были разобраны исторические примеры, когда промышленные революции обещали исчезновение каких-то профессий, но в итоге не получилось, не фортануло. Так и с ИИ, пена хайпа осядет, и останется ИИ как полезный и утилитарный инструмент, которым в своём ремесле будут пользоваться все те специалисты, которых ИИ должен был заменить.

В общем, нужно немного притормозить и не вестись на хайп понапрасну.

Канал Егора: Разговоры в Пустоте

2️⃣. Игорь Кожелин, "Применение космических данных и ИИ в интересах бизнеса"

Игорь сооснователь частной космической компании SR DATA. Компания занимается предоставлением космических снимков с последующим их анализом, системами на основе математического моделирования и искусственного интеллекта. Были рассмотрены варианты использования снимков со спутников ДЗЗ в разных сферах, поговорили, о том что космосом в России может заниматься не только государство, но и частный бизнес, а лицензию можно получить через госуслуги за 2-3 клика, но это не точно 😏.

Из интересных цифр:
- 80% космической индустрии - это частный бизнес;
- объём рынка космических услуг к 2030 году ожидается 💵1430 млрд;
- а в России самый простой путь войти в SpaceTech 🚀

3️⃣. Антон Жбанков, "Настоящий ИТ хайлоад по хардкору"

Тема, которую поднял Антон в докладе не часто встречается в наших интернетах, но ИИ это не только LLM, алисы и прочие gpt, но это ещё и энергетика. Даже так - ЭНЕРГЕТИКА.

Шутка ли, но стандартный 48-юнитовый шкаф с ИИ-шным железом съедает десятки ⚡️мегават⚡️ электроенергии. Была рассмотрена тема как эту энергию рассеивать: сложные системы жидкостного охлаждения, градирни, кондиционеры, по отдельности и вместе взятые. Рассмотрели предел развития ИИ, но не с точки зрения софта, а с точки зрения железа. А по железу всё довольно печально - на текущий момент всё уже упирается в физические свойства материалов.

Было очень познавательно и необычно рассматривать ИИ с этой точки зрения.

И да, самый важный-то момент - будущее ИИ без электриков и сантехников с соответствующими доступами кажется туманным. Возможно, в будущем выпускники ПТУ будут ценнее, программистов 😉

Канал Антона: BeerPanda. Органично недоразвитый DevOps

4️⃣. Андрей Дорожный, "Как убеждать заказчика, начальника и коллег с помощью визуализации данных"

Тема была не про ИИ, но полезная, о том как надо и не надо визуализировать данные так, что бы они помогали, а не запутывали. Пожалуй тут больше ничего не скажу, это надо видеть )

Канал Андрея: Дата-сторителлинг

Что ж, возможно и я когда-нибудь доберусь до сцены, а пока выражаю искреннюю благодарность организатору меропрития компании Лайм Эч Ди !

Было позновательно!

#ITLink2025 #ITЧебоксары #ITконференция
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4
Читальня. Питер В. Бретт – Меченый

— Обзор второй книги - Копьё пустыни
— Обзор третьей книги - Дневная битва
— Обзор четвёртой книги - Трон Черепов


— Хочешь, чтобы демоны умерли - убивай их своими руками —

Настало очередное будущее на страницах истории.

Когда-то очень давно, люди владели секретами магии во всех деталях. Под предводительством Избавителя - великого воина, объединившего мир под знамёнами борьбы с демонами, люди смогли загнать нечисть в Недра на долгие тысячелетия. И настал Золотой Век человечества.

Люди стали развивать технологии и науку, стали забывать магию и уроки прошлого, стали стремиться к светлому будущему. Демоны в Недрах смиренно ждали своего часа и дождались - так наступила Эпоха Разрушения.

Мир скатился в тёмное средневековье. Некогда единое королевство Тес распалось на отдельные герцогства и свободные города: Форт Милн, Форт Энджирс, Форт Райзон, Лактон и, немного особняком - Форт Красия.

Здесь днём люди занимаются обычными делами: пашут поля, ловят рыбу, охотятся, и занимаются прочим ремеслом. А по ночам из под земли на охоту выходят кровожадные монстры - подземники. Единственное спасение от напасти - остатки магических знаний - защитные метки. Их наносят на здания, на защитные столбы, для защиты открытых территорий, а так же на переносные круги для защиты во время путешествий.

По городам и весям путешествуют вестники, почтальоны по нашему, и сшивают разбросанные города по всему миру. Профессия, в те времена, опасная, высокооплачиваемая и престижная. Компанию вестникам составляют жонглёры, почему-то, и развлекают публику - профессия тоже не менее престижная. Ну а самый почёт и уважение метчикам - единственные защитники остатков человечества.

Чуть не забыл о местных праведниках - Рачителях, которые несут слово и рассказывают легенды об Избавителе, который должен явиться снова и положить конец бедствию с подземниками.

В этом жестоком мире, появляются три интересные судьбы, которые должны сыграть не последнюю роль в этой истории - боевой маг Арлен Тюк, хилер Лиша Свиток и бард Рожер Восьмипалый. У каждого из них непростая судьба, разные мотивы к развитию и становлению, но в итоге судьба их сводит вместе.

Читать ли?

О да! Конечно! Это, пожалуй, одна из самых увлекательных книг, которую я читал за последнее время.

Тройной сёнэн про героев развивается на каждой странице: Арлен из мальчишки медленно, но верно в боевого мага. Лиша Свиток попадает под крыло к своенравной, но харизматичной знахарке Бруне, которая взращивает из георини первоклассную травницу, ну а Рожер раскрывается как жонглёр и скрипач. Все приключения, злоключения, мытарства и прочие активности героев захватывают и не отпускают до последней страницы!

А ещё это первая книга в серии "Война с демонами", которая лишь приоткрывает завесу тайн этого мира.

Итого: Всё ооооофигенно!

9 алагай из 10.

#книги #почитать #ПитерВБретт #Бретт #ВселеннаяМеченого #Меченый #тёмное #фентези #магия #монстры
👍3🔥1
Секреты, которые лучше не трогать… но это не точно

Нет ничего лучше (и более стимулируещего), что бы познакомиться с чем-то новым, как неработающий прод...ведь, да?

------------

Тележка пикнула бодрым: "Привет, у нас сайт недоступен из-за сертификата".

Быстренько глянул на проблемный сертификат. Убедился, что это let's encrypt и, лихо отрапортовав: "Давай рута, там делов на 5 минут", приступил к задачке на 5 минут.

Там делов на 5 минут
Там делов на 5 минут
Там делов на 5 минут
ТАМ ДЕЛОВ НА 5 МИНУТ

Все же знают эту магическую фразу, да?
Да, ожидаемо, там оказалось делов не на 5 минут.

------------

На сервере, не особо задумываясь, делаю привычное движение руками - certbot --nginx renew и получаю первый отлуп. Не могу, говорит certbot, обновить сертификат - 80 порт занят каким-то супостатом.

Выяснив, что супостат этот docker, да ещё и в режиме swarm, что для меня совсем новьё, откладываю мысль о том, что бы полазить в докере на потом. Не то что бы не могу, но это прод, а черного пояса по devops у меня нет, да он ещё и в режиме роя. Ну его нахер. 😰

Решаю, что сначала надо получить сертификат.

Пробую certbot с различными флагами - херушки-воробушки. Нужен 80 порт.

Тут меня посещает отличная мысль - надо сгенерировать сертификат на другой машине - изи-пизи!
Но и тут ждало разочаровнаие. А что бы убедиться, что ситуация усугубляется, я спросил у гугола, я спросил у яндекса, я спросил у знающих человеков - а можно ли сгенерировать сертификат на чужой машине? И, надо сказать, что гуголы/яндексы сказали правду - сгенерировать сертификат на чужой машине, без прямого доступа к DNS - нельзя, а вот человек, который меня уверял, что "да это фигня, я так тыщу раз делал", оказался не прав. 🤌

Тут стоит отметить, что раньше не задумывался как работает утилита, но оказалось, что для обновления сертификатов ей нужен 80 порт или доступ к зоне DNS. 🫠


И тут приходит осознание, что назревает вызов.
В голове вырисовывается план, которого, разумеется, будем придерживаться:
- положить веб-сервер и высвободить 80 порт;
- сгенерировать новый сертификат;
- заменить сертификат;
- запустить веб-сервер с новыми сертификатами;

Всё бы хорошо, но пугающие docker swarm и прод заставляют много думать, потеть и грызть ногти.

Хотя, с другой стороны, что я прод ни разу не клал что ли...
И на этой оптимистичной ноте я полез в docker с немытими руками...

В итоге всё оказалось не так страшно, как думалось. А думалось сначала в сторону killall -9 docker 🤪

И шаг за шагом к цели:
- снял с публикации порты 80/443
docker service update --publish-rm 80:80 service_name

docker service update --publish-rm 443:443 service_name


- сгенерировал новый сертификат
certbot certonly -d example.ru -d example.ru


- вернул порты на место
docker service update --publish-add published=80,target=80 service_name

docker service update --publish-add published=443,target=443 service_name


- сгенерировал новые секреты для docker
docker secret create fullchain-2025-12 fullchain.pem

docker secret create privkey-2025-12 privkey.pem


- заменил секреты
docker service update \
  --secret-rm fullchain \
  --secret-rm privkey \
  --secret-add source=fullchain-2025-12,target=fullchain \
  --secret-add source=privkey-2025-12,target=privkey \
  service_name


Ииии...чуда не произошло. Таргеты для секретов, брал из конфига docker-compose, который лежал рядышком, но оказалось, что конфиг не актуальный 😮, а для деплоя используется ansible, к которым доступа нет.

Пришлось копнуть глубже и поизучать секреты:
docker service inspect service_name --format '
{{range .Spec.TaskTemplate.ContainerSpec.Secrets}}
secret: {{.SecretName}}
target: {{.File.Name}}
---
{{end}}'


И уже, наконец, сделал правильные апдейты новых секретов.

К чему я это всё - а что б не забыть! 💪

#backend #devops #docker #docker_swarm #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Подруга подкинула проблем...

И да, спасибо группе "2ва Самолёта", за максимально релевантное название, неожиданно случившегося опыта.🤔

Кто работает с laravel знает, или по крайней мере, догадывается, что в ней (или в нём?) есть всё, собственно как и в Греции. Сегодня хочу рассмотреть один такой момент, который, как мне кажется, довольно интересный, а именно использование трейта softDeletes и не самая очевидная его особенность.

Нацепив на модель трейт softDeletes, мы её награждаем полем deleted_at, в результате чего запись из БД не удаляется физически, а помечается на удаление - deleted_at становится не null. Это полезно, если мы хотим сохранить данные для какого-то аудита или защитить данные от случайных приступов криворукости.

Стоит отметить, что сам по себе трейт не создаёт поле deleted_at и не добавляет соответствующих полей в БД. Поля для БД необходимо предусмотреть на этапе проектировния таблицы и указать явно в миграции $table->softDeletes() и, лучше добавить по полю индекс.

Пупупупупу-у-у-у! А у меня ж индексы везде стоят? Ведь да же?..😰


Итак, всё, вроде бы, круто - данные сохранили, индексы, для +10 к скорости выборки, добавили. При использовании ORM удалённые записи не возвращаются в запросах, model-route-binding тоже сыпит 404 ошибкой при обращении к удалённым записям. Всё хорошо!

Хорошо-хорошо, да не очень-то...


Для меня стало неожиданным сюрпризом, что в правилах валидации, таких как exists и unique, эта магия не работает 😭. Да, блин! В правилах валидации требуется явное указание, что нужно исключать записи, помеченные на удаление, например так:

Rule::exists(PromoCode::class, 'code')->withoutTrashed();


Laravel весь такой магический, что волей-неволей приучает нас, что везде ожидается одинаковое поведение, но суровая жопа реальности сказала, что магии не существует! Самое обидное, что в основной документации об этом ни слова, но, справедливости ради, есть в API документации.

Почему такая несправедливость?

Потому что softDeletes является частью мира ORM и представляет собой глобальный скоуп. В то время как валидаторы - это прямые запросы к БД и ни про какие ORM и scope слыхом не слыхивали.

Что жжжж, ожидание-реальность как оно есть. 😮

Учите матчасть!

——

🎶 А пока писал пост заслушал до дыр:
- Дарья Безбородова, Дмитрий Гусаров - Винил
- Дарья Безбородова, Дмитрий Гусаров - Блюз о крыльях, ногах и хвостах.

Просто восторг!

#laravel #softDeletes #php #backend #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Что ж, 2025‑й честно старался, но не справился и мы выстояли.
Значит, всё было не зря.

С Новым годом и с новыми силами! 🎅
Please open Telegram to view this post
VIEW IN TELEGRAM
2025: 1813 часов за клавиатурой и другие итоги года

Пока идут длинные выходные, можно устроить небольшое ретро на прошедшие 365 дней. Раньше я такого не делал, так что не судите строго, братцы!

👩‍💻 Fullstack

Начнём с основной деятельности - благо, её проще отследить благодаря сервису WakaTime.

За год я накодил 1 813 часов - в среднем это 7 часов 20 минут в день. И это только чистое время кодинга: без учёта созвонов, писем, чатов и философских размышлений о смысле жизни.

При этом самый длинный день кодинга длился 12 часов и 51 минуту - видимо, поймал волну 🧑‍💻.

А самым продуктивным днём недели была среда (потому что в среду мало созвонов? 😏 )

В этом году самым востребованными языками у меня были PHP и TypeScript, которые использовались в проектах на Laravel, Yii2, Vue/Nuxt и React/Next. Так же было много:
- SQL,
- Sass/SCSS
- CoffeeScript
- Docker
- Bash
- немного Go и ряд других языков.

По задачам всё довольно буднично: много рутины, но нашлось и несколько интересных кейсов, которые заставили возвращаться к ним по нескольку раз.

📖 Книги

Не осталась обделённой и моя слабость - книги.

За год было прочитано почти 6 кг (5.89 кг, если точнее), что составляет 5 696 страниц или 12 книг.
По жанрам разбивка получилась такая:
- 58% - фантастика,
- 25% - фентези,
- 17% - детектив.

Конечно, хотелось бы читать больше, но кто тогда будет работать? Зато книги действительно читались, а не просто украшали полку.

Ещё я опробовал аудиокниги - формат, честно говоря, не мой. Мне бы страничками пошуршать, ощутить приятную тяжесть в руках да вдохнуть запах типографской краски. Но, возможно, для каких-то случаев, аудиоформат и пригодится. Посмотрим...

💪 Спорт

Дабы окончательно не превратиться в офисный кактус, спорт был со мной на протяжении всего года:

- 114 часов кардио - 684 км, сожжено примерно 45 600 ккал
- 156 часов силовых - 93 600 ккал в минус

До Аполлона, конечно, как до Китая на корячках...

☺️ A ещё...

- 80 285 очков заработал в "зелёной сове", провёл 3 935 минут занятий в 6 языках в течение 397 дней без перерыва;
- посетил IT-конфу за последние много лет и напомнил себе, что айти существует не только в чатах и таск-трекерах;
- накидал простенькую сцену платформера в Unity, дабы запустить немного свежего воздуха в трудовые будни;
- и начал вести этот канал - покоряем новые горизонты.

——

Всё ещё не выгорел и всё ещё интересно.
Значит, можно смело двигаться дальше - в 2026‑й!

#итоги #год_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Лангр. Сыр, который не прочь побаловать себя игристым

Сегодня хочется рассказать об одной своей слабости - мягком сыре лангр. Захомячив очередную небольшую головку этого сыра, душа просит рассказать о нём миру. Погнали знакомиться...

Что же ты такое

Лангр (фр. Langres) - французский мягкий сыр из коровьего молока со сморщенной корочкой оранжевого цвета. Корочка обычно клейкая и немного влажная. Свой цвет корочка получает за счёт того, что во время созревания сыр протирают рассолом с добавлением оранжевого красителя из семян аннато. А ещё, у головки сыра имеется ямка в верхней части - кто-то называет её короной, а турофилы называют его "фонтаном" (уж не знаю почему 🤷‍♀️).

Головки сыра, как правило, делают небольшими - диаметром 7,5 - 9 см, высотой 4 - 6 см и весом около 150 г. На ранней стадии созревания тело сыра может быть упругим (мне такие не попадались ни разу), а с течением времени становится более сливочным и текучим (самый самолёт как по мне 😋).

Сыр обладает довольно резким запахом (о, да, в холодильнике лучше его не хранить вне закрытых ёмкостей 😫) и острым, терпким вкусом, который часто сравнивают с копчёным беконом. Говорят, что на ранних стадиях созревания ещё может присутствовать запах луговых цветов.

История и происхождение

Как и многие ремесленные сыры, сыр лангр появился на сельскохозяйственных угодьях на лангрском плато, в честь которого сыр и назван. Изначально его изготавливали фермеры, используя терракотовые ёмкости и свежее тёплое молоко коров. Согласно легенде, фермеры сушили сыр на листьях липы и раскладывали его для созревания на соломе. По некоторым данным, его происхождение восходит к династии Меровингов, правившей в 700 году нашей эры.

Первоначальную популярность сыр снискал у местных монахов, доминиканского аббатства, находящегося в городе Лангр. Один из монахов даже выдумал похвальную песню в честь этого сыра.

В начале ХХ века, популярность сыра резко упала, потому что ремесленные сыры стали вытеснять сыры, производимые на мануфактурах, да и характерный запах считался "деревенским" и грубым, что не придавало ему популярности.

Однако, в мае 1991 года сыр лангр получил сертификат AOC (Appellation d’Origine Contrôlée), который подтверждает его происхождение и стандарты производства. С 2009 года сыр имеет статус Appellation d’Origine Protégée (защищённое обозначение происхождения).

Традиции и особенности 🍷

Характерная особенность лангра - это выемка в центре головки, которое образуется из-за того, что во время созревания сыр никогда не переворачивают в результате чего верх головки оседает. Эта особенность породила особый гастрономический обычай: перед употреблением в выемку наливают немного алкоголя: граппы или шампанского и дают сыру пропитаться. Алкоголь делает структуру сыра ещё более сливочной и подчёркивает его вкус.

Ранее в "фонтан" наливали коньяк, чтобы избавиться от мелких жучков, которые могли забиваться в морщинки корочки. Хотя сейчас сыр производится в санитарных условиях и наличие жуков исключено, традиция сохранилась. 

А ещё лангр не принято резать на кусочки, его едят ложкой.

Источники: novostioede.ru, tastingtable.com, ruwiki.ru

#внезапно #позновательно #изюм #сыр #лангр
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤩2
Читальня. Ричард Морган – Видоизменённый углерод

— Возвращение из мёртвых может быть очень мучительным —

Заметили как в последнее время посыпались новости то про лекарства от рака, то про искусственную кровь, то про увеличение средней продолжительности жизни человека, - вот и мировые лидеры в кулуарах обсуждают средний срок жизни в 150 - 170 лет. Некоторые учёные просят не помирать ближайшие 10 лет, потому что скоро наука сможет возвращать тело человека в состояние, как у 20-ти летнего. Глядишь такими темпами и на нашем веку бессмертие заработает.

А вот в мире, созданном Ричардом Морганом, бессмертие уже изобретено и доступно не только лишь всем. При наличии достаточного количества кредитов можно позволить себе прожить не одну сотню лет.

Бессмертие не тела, но разума.

Человечество научилось оцифровывать своё сознание и стало размещать его на дискетах в стеках, которые помещаются в любое подготовленное тело, на которое хватит средств. А тело можно подобрать на любой вкус, и цвет, и кошелёк: на маркетплейсе купить, забрать у другого человека, вырастить, клонировать или надеть синтетическую поделку. В общем, есть варианты.

А средства, как полагается, есть только у богатейших мира сего, а остальным достаётся что осталось, по ОМС.

На этой идее - перемещения сознания в разные тела - и построен роман.

По своей сути Видоизменённый углерод - это нуарный детектив, в антураже жестокого мира будущего, где всем правят технологии и корпорации. Главный герой, Такеши Ковач, пролежав несколько сотен лет в виде стека на полке, был расконсервирован по запросу одного земного олигарха мафа, по той причине, что тот сам себе пустил пулю в стек (так гласит официальная версия полиции), уничтожив своё сознание. Но маф, считает, что он не такой и решает привлечь к расследованию Такеши Ковача - человека с особым складом ума, способного увидеть невероятное, но очевидное.

События в книге развиваются с бешеным темпом: перестрелки сменяют друг друга, кровь льётся литрами, а тела разлетаются на части - здесь потеря руки или головы не всегда означает смерть, а иногда лишь временное неудобство. В минуты затишья - допросы, разговоры, виртуальная реальность, наркотики, секс и Эдгар Аллан По. Всё это описано жёстко, откровенно, красочно, брутально, но при этом удивительно увлекательно.

Но «Видоизменённый углерод» - это не только детектив и нескончаемые перестрелки. Это книга о цене бессмертия и о мире, где богатые могут позволить себе всё, а бедные - лишь обслуживают хотелки богатеев. Здесь технологии напрямую влияют на религию, политику и социальное неравенство, а вопрос «что такое человек» становится куда сложнее, чем просто наличие тела и сознания.

Итого: отличный бодрый, местами жестокий, детектив о будущем, в котором технологии шагнули далеко вперёд, а вот человечность - совсем не факт.

А какое отношение имеет к этой истории Эдгар Алан По я предлагаю выяснить самостоятельно.

8 "жеребцов" из 10

#книги #почитать #РичардМорган #Морган #ТакесиКовач #ВидоизменённыйУглерод #детектив #киберпанк #нуар #фантастика
👍2🔥1
Каждому проекту - домен. Каждому разработчику - покой
- Как забыть про порты в локальной разработке с Traefik -

Docker в нашу разработческую жизнь вошёл всерьёз и надолго. Составление конфигураций, биндинг томов, маппинг портов - стандартная рутина.

И вот о последнем я бы поговорил отдельно... Согласитесь, все эти бесконечные localhost:8081, localhost:4200, localhost:8082 наводят тоску. Наверное, я их даже несколько ненавижу. И дело не только в том, что порты в адресной строке выглядят не гармонично, так они ещё и запоминаются не очень хорошо. А если ещё приходится переключаться между проектами, или проект требует нескольких открытых приложений, то в адресной строке начинается хаос.

Посему у меня локально каждый проект имеет своё имя в зоне .local - ведь, проще запомнить доменное имя, чем порты, особенно, если постоянно переключаешься между проектами.

Но выход есть - и он называется Traefik 🤘

Traefik - мой новый лучший друг в мире Docker. Это обратный прокси-сервер, который отлично понимает docker и берёт на себя всю грязную работу по маршрутизации приложений. Он может многое: балансировку, контроль доступа, HTTPS. Но в контексте локальной разработки мне от него нужна маршрутизация. А приятным бонусом при работе с ним - это возможность установить SSL-сертификат - большего для локальной разработки и не надо.

Принципиальная схема работы выглядит так:
Browser (service.local)
│
▼
Traefik
│
▼
Docker network
│
▼
App / API / SPA


Вся магия в том, что наружу смотрит только Traefik, а сами сервисы живут внутри общей docker-сети.

Как это работает локально:
- поднимаем Traefik в отдельном docker-compose и подключаем его к общей внешней сети;
- все сервисы, работающие по HTTP, размещаем в той же сети;
- вместо проброса портов используем метки (labels) в Docker - Traefik сам найдёт сервисы и настроит маршрутизацию.

Конфиг для сервиса выглядит примерно так:
services:
app:
image: my-cool-app
networks:
- web
- default
labels:
- traefik.enable=true
- traefik.http.routers.project1.rule=Host(`project1.local`)
- traefik.http.services.project1.loadbalancer.server.port=80

networks:
web:
external: true

Ву-а-ля!

Открываем в браузере project1.local без всяких бесячих портов.

Каеф! 😎

#docker #traefik #devops #backend #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Дорогой дневник, в меня вставили параметры. JsonResource
- Как сломать JsonResource, не ломая JsonResource -

Сегодня хочется поговорить или о немного вредном, или о немного неправильном. О чём-то не по феншую. Не исключаю, что это вообще не lara-way и в приличном чате меня аккуратно, но уверенно запинают ногами! 👊

НО, почему бы и нет...

Разрабатывая API на Laravel, мы постоянно имеем дело с JsonResource.

Чем же он хорош, наверняка, не спросите вы, но я напомню:
— скрывает истинную структуру модели,
— определяет контракт ответа,
— позволяет добавлять вычисляемые поля,
— форматирует данные.

И вот про модификацию ответа в зависимости от непреодолимых внешних факторов, я и хочу поговорить.

Сам JsonResource не должен быть перегружен сложной логикой - и это правильно! Но в моём случае потребовалось извне передать в коллекцию параметры для модификации вывода.

И тут из зала: "Йо! Мэн! Создай отдельный ресурс и не делай нам мозги!".

Что ж. Справедливо.
Но плодить новые сущности из-за пары флагов - право, не хотелось.

Другие знатоки скажут: "Чел! Добавь атрибутов к реквесту!".

Да, почему бы и не атрибуты:
$request->attributes->add([
'param1' => 'foo',
'param2' => 'bar',
]);


Тоже решение, но выглядит громоздко, и плохо документируется.

Мы пойдём другим путём!

Сначала попробовал расширить конструктор:
public function __construct($resource, bool $param = false)
{
parent::__construct($resource);

$this->param = $param;
}

Но это работает только для единичного ресурса, а вот для коллекции - облом. А ещё ресурс нужно создавать вручную, а не через фабрику — не наш метод — я фабрику люблю.

В итоге после нескольких экспериментов получился универсальный JsonResource, в который можно передать несколько параметров и затем их использовать для модификации данных.

class JsonResourceWithParams extends JsonResource
{
public static function collectionWithData($resources, $params)
{
return self::collection($resources)->each(function(self $r) use ($params) {
foreach ($params as $param => $value) {
if (property_exists($r, $param)) {
$r->{$param} = $value;
}
}
});
}
}

А ещё, добавляя свойства ресурса, и документируется неплохо.

Да. Не по учебнику. ☝️

Но и, вроде бы, не совсем криминал, и даже может быть полезным.
В общем, на будущее, в чердачок, решение это отложил.

#эксперименты #laravel #backend #web #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤔1
Читальня. Питер В. Бретт – Копьё пустыни

— Обзор первой книги - Меченый
— Обзор третьей книги - Дневная битва
— Обзор четвёртой книги - Трон Черепов


— В Красии ты никчёмен, если никто не пытается тебя убить —

Во втором томе «демонической серии» Питера В. Бретта акцент событий заметно смещается. Если в первой книге главной угрозой были подземники, то здесь на первый план выходит противостояние человека юга и человека севера. Демоны по-прежнему рядом и рыщут в ночи, но теперь эта битва уходит на второй план.

У демонов появляются новые юниты - князья и хамелеоны - лишь они теперь представляют реальную опасность человеку. Остальные представители подземной фауны уже не внушают прежнего ужаса: люди вооружились мечеными копьями, щитами и стрелами, научились создавать плащи невидимки, а города защищают «великие метки», к которым демоны не подходят.

Но главная эскалация происходит не в ночи - а среди людей.

Мы подробно знакомимся с внутренним укладом Красии - общества глубоко религиозного и воинственного, построенного на жёсткой кастовой системе. Через историю становления Ахмана Джардира - Избавителя всея Красии - мы постепенно погружаемся в культуру народа пустыни. Быт описан детально, а мир Красии ощущается цельным и продуманным. В повествование добавляется много новых терминов: шарум, дама'тинг, алагай, шарадж, андрах и т.д. Они сначала сбивают с толку, но со временем начинаешь улавливать логику языка и ориентироваться становится значительно проще.

Убедив себя и свой народ в собственной мессианской роли, Джардир отправляется на север объединять человечество и готовить его к последней битве с демонами. И его не остановит тот факт, что объединение придётся проводить огнём и мечом. Через кровь, насилие и террор - к высшей цели.

И здесь сталкиваются не только народы, но и Избавители. Каждый со своей правдой и собственными убеждениями в то, как именно нужно спасать мир от подземной напасти.

На фоне религиозной экспансии, политических амбиций и военных походов появляются и любовные линии - некоторые весьма неожиданные. Они не размывают основной конфликт, а наоборот, добавляют истории живости и эмоционального напряжения.

Так же не забыты и второстепенные персонажи: очень интересен хаффит Аббан, который как то самое ружьё, которое обязательно выстрелит. Мать Лиши, Элона, - очень противоречивая дама, но весьма прямолинейна и точна в своих суждениях; отпрыски Джардира, которым тоже, судя по всему, отведено не последнее место в будущих книгах, а ещё Гаред, Кендалл, королевские особы...список довольно внушительный и у каждого своя история.

Итог: отличный сиквел, который продолжает первую книгу и расширяет мир. Однозначно читать!

9 шарумов из 10

#книги #почитать #ПитерВБретт #Бретт #ВселеннаяМеченого #КопьёПустыни #тёмное #фентези #магия #монстры
🔥1
Cмотря какой fabric, смотря сколько details, очень очень affordable
- Очищающее пламя языкового пуризма -

Итак, с 1 марта 2026 года в России действует закон №168-ФЗ, ограничивающий использование иностранных слов в публичной информации.

Посему в Лету должнымогут кануть различные sale, кавер, стартап, коучинг и прочие all in.

🇷🇺 Россия

Так-то это не первое подобное законотворчество: в XVIII веке после реформ Петра I появилось много заимствований, в том числе голландских и немецких. Позже, с модой на всё французское в XVIII–XIX веках, в речь массово вошли галлицизмы. 

Поэтому Екатерина II При составлении Словаря Академии Российской указывала академикам:
В сочиняемом академией словаре избегать всевозможным образом слов чужеземных, а наипаче речений, заменяя оные слова или древними или вновь составленными.

Однако полностью остановить заимствования не удалось. 

М. В. Ломоносов придерживался более прагматичной позиции: научные и технические термины следует переводить на русский язык, но если иностранное слово уже получило широкое распространение - бороться с ним бессмысленно.

—

Был как-то на одном проекте коллега, который очень любил "свитчиться между тасками" и слушать это было примерно так же органично, как и знаменитое задорновское "вам чизоф отслайсить?" 🤦‍♂️

—

И, в целом, идея здравая, наверное... но звучать это будет несколько непривычно:
- Константин, яви же порядок деяний, коий изгонит ошибку из серверной обители?

Ну ладно, интернет придумает что-нибудь креативнее ✍️

Но вообще языковой пуризм - явление довольно распространённое.

Вот пара особо ярких примеров для ознакомления:

🇮🇸 Исландия

В XIX веке в Исландии началось движение за максимальное избавление языка от иностранных слов, особенно датских, которые использовались в период датского господства. Эта работа продолжалась и в XX веке и активно ведётся до сих пор.

В 1964 году была создана Исландская языковая комиссия, которая вырабатывает рекомендации по сохранению единства и целостности исландского языка. Новые слова создаются на основе древненорвежских или античных корней. Например, слово rafmagn («электричество») буквально переводится как «сила янтаря». Также практикуется придание старому слову нового значения: sími (раньше -  «длинная нить») стало означать «телефон».


🇫🇷 Франция

Во Франции пуризм начал формироваться ещё в XVII веке. Основанная в 1635 году Французская академия ставила целью «очистку» языка и продвижение le bon usage — правильного употребления французского. В XX веке борьба за чистоту языка усилилась из-за роста влияния английского языка.

В 1975 году был принят закон Ба-Лорьоля (loi Bas-Lauriol), который обязывал использовать французский язык в рекламе, технических описаниях товаров, трудовых договорах, а радио обязано транслировать минимум 35% песен на французском.

В 1994 году был принят закон Турбона, который ужесточал положения закона 1975 года и регулировал использование иностранных слов.

В настоящее время во Франции действует Комиссия по обогащению французского языка, которая создаёт новые слова для замены англицизмов. Например, вместо английского computer во французском используется ordinateur, вместо fax - télécopie, а вместо e-mail - courriel.


Так же элементы языкового пуризма были в Турции, Германии, Хорватии, Венгрии, Великобритании, США и других странах. Явление это не самое редкое, надо сказать.

Обычно оно появляется в ответ на интенсивное проникновение заимствований, которое воспринимается как угроза самобытности и целостности родного языка.

Пуризм особенно активизируется в эпохи формирования национального самосознания или после крупных исторических событий (революций, войн, периодов активной глобализации), когда язык становится символом культурной идентичности.

Ну а пока...

Мёржим, пушим, билдим, фиксим,
Если не упало, – да и фиг с ним!
Фиксим, билдим, мёржим, пушим,
Эй! Кьюэй! Не плюй мне в душу!

©️ Арчет

#внезапно #позновательно #изюм #пуризм
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2