Telegram Web Link
Forwarded from igrishaev
Читатель Дмитрий снял с языка одну мысль, которую я приберег для отдельной заметки. Если коротко, все удачные аббревиатуры вроде SOLID, как правило, высосаны из пальца. Вероятность, что первые буквы пяти слов образуют другое емкое слово, равна нулю. Поэтому слова подгоняют под аббревиатуру.

Другими словами, сначала придумывают емкий термин, затем под каждую букву ищется слово. Разумеется, за уши притягивают лишние слова, как например принцип Liskov, который никому не сдался. Но без Liskov не получилось бы слова, поэтому пришлось взять.

В своем комментарии Дмитрий приводит пример. Берем выразительную аббревиатуру, например ANALSEX и просим чат-ГПТ придумать расшифровку. Чат справился прекрасно:

A: Abstraction
Focus on hiding complex implementation details and exposing only essential features.

N: Normalization
Ensure that data structures and databases are designed efficiently, avoiding redundancy.

A: Automation
Prioritize automating repetitive tasks and workflows to increase efficiency and reduce errors.

L: Loose Coupling
Design components to have minimal dependencies, making systems more modular and easier to maintain.

S: Scalability
Build systems capable of handling growth in users, data, and operations effectively.

E: Encapsulation
Keep implementation details private within modules or classes, exposing only necessary interfaces.

X: eXpandability
Design with future growth and adaptability in mind, ensuring that new features can be added without major rewrites.

Особенно хорош последний пункт. Слов на X мало, поэтому чат выделил вторую букву в eXpandability.

И главное, все по делу: абстракции — нужны, автоматизация — нужна, масштабирование — нужно, расширяемость — тоже. Не прикопаешься. Так что всем внедрять ANALSEX! Обсудите с коллегами и расскажите начальству.
Я тут подумал, что если у вас, дорогие подписчики и не только, есть какой-то проект (+/- релевантный с тематикой канала: железо, код, журналы, инфраструктура, игры и т.д. и т.п.), то пишите мне в личку @rusdacent, я буду рассказывать о них. Мне оно не сложно, а вдруг кому-то полезно и интересно будет.

Днём проектов объявляю четверг!

Так что если чего будет публиковать, то по четвергам буду выкладывать посты о вас и ваших проектах ❤️

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

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

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

Вот например, на скрине видно, как я опять учу нейронку кодить:
Please open Telegram to view this post
VIEW IN TELEGRAM
Общался с знакомыми в чатике по поводу пет-проектов, небольшая рефлексия.

С 2020 года по сегодняшний день я попробовал сделать очень много петов.
Проекты, которые дошли до релиза и живут до сих пор можно рассчитать по пальцам - некоторые из них описаны в закрепе (надо его кстати обновить лол). Из них большая часть сдохла так и не увидев ни одного пользователя, в состоянии зародыша.
Я очень часто бросаю проекты. Но почему так?

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

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

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

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

Что-то делать для 0 пользователей мне не нравится. Совсем.
Признайтесь, и вам тоже.
А го тред того, чего вы в детстве не любили из еды, но полюбили повзрослев.

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

И вот, цена одного похожего сервера превышает цену текущего сервера примерно в 2-3 раза.
Вы там ебанулись совсем? За что я должен платить такие деньги?
Объясните мне пожалуйста, господа хостеры/ресселеры и прочие им сочувствующие. Оборудования не хватает, квалифицированного персонала, ЦОДов? Я реально не понимаю.

И это, СО СКИДКОЙ, блядь.
Про лучшие версии игр

Делать вечером было нечего, захотел снова поиграть в Киберпанк 2077. Зашел, поиграл пол часа и до сих пор не могу подобрать челюсть с пола - с момента релиза в некоторых моментах это совершенно другая игра!
Тут тебе и возможность стрелять с транспортного средства, и пофикшенная полиция, и сотня других крутых мелочей, которые должны были быть на релизе. И самое главное - пофиксили баги с движением, союзниками в квестах, невозможность разобрать оружие и так далее.

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

Я, например, из-за багов так и не смог допройти Сталкер 2. Баг с невозможностью поговорить с Профессором Лодочкой, невозможность спасти Залесье - это все настолько вымораживало и руинило в моих глазах прохождение игры, что я твёрдо решил - пройду потом.
В ремастере Подливиона похожая проблема, благо фиксится проще. Невозможно зачистить Кватч, скрипт с подсчётом мобов просто не срабатывает. Ну и множество визуальных артефактов немного выбивает из погружения.

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

Боялся я по одной причине - решение программистских задачек, запуски фичей/проектов - все это меня радует точно так же, как в первый раз. И это может исчезнуть. Я до сих пор получаю нереальный кайф, когда вижу, что оно работает.
А когда ИИ за тебя код пишет... Это такое не натуральное, штоли...

К счастью, пока что случилось обратное. Благодаря ИИшкам я бустанул решение задачек раза в 2 минимум.
Любой гуглеж практически всегда можно заменить запросом в ИИ - он выдаст контент как есть, без СЕО-мусора и переписанных 200 раз статей. Накидать проект и поресерчить подходы теперь занимает очень мало времени (а мне иногда приходится много ресерчить, такая специфика команды).
Единственная проблема, пока что зачастую ИИшки не знают про текущее состояние мира. Вот просишь его на новый React или Python поправить - а он либо не умеет, либо всё сломает к херам.
Forwarded from javawatch
ChatGPT достигла уровня человека! Я попросил ее написать пример использования модулей в C++23 через cmake, и у нее не получилось. У меня тоже не получилось. Каких высот мы достигли!
Обновился.

Большая часть подписчиков знает, что я являюсь администратором чата @ruhomelab и как-то давно люблю всю эту хоумлаберскую тематику.

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

В итоге апгрейднулся с Ryzen 5 2600 до Ryzen 7 5700X и с 32 ОЗУ до 64.
Сижу теперь довольный, думаю че ещё хостануть.

А ведь когда-то я начинал с сервера на каком-то ультрадревнем амуде и с 8 ГБ ОЗУ... Мне на нем удавалось и Minecraft-сборочки с модами запускать для поигрулек с друзьями и кучу контейнеров крутить...
Записки kiriharu
Купил себе палубу. Паровую. Пока о впечатлениях: - От покупки вау эффекта не случилось. Но вот когда я начал запускать игори, а они работают в 40 FPS на высоких - случился просто какой-то ахуй, оно, блин, действительно классно работает! - Разрабы из Вольво…
Кажется я понял, какой у стимдека главный минус - Гейб плотно подсаживает тебя на свой магазин и экосистему.

Вот смотрите.
Есть православный и вездесущий Филя со своим GamePass. Купил подписку по цене 1-2 ААА игр, и сидишь себе годик играешь во все возможные эксклюзивы в день выхода, не забывая про огромнейшую библиотеку игр.
А на стимдеке, без лютого пердолинга у тебя есть... Steam. И всё. Либо ставь винду и борись с её приколами. Поддержки никакой нативной нет и не будет (пока что).

В итоге ситуация - я хочу поиграть в Fallout 4 на Стимдеке. И тут я либо качаю пиратку, либо играю на пекарне через GamePass, либо покупаю её в Стиме (или ключ на каком-то ggsel.net). На пекарне я пока что играть не могу (опять по здоровью, лол). Пиратку я качать не хочу - мне очень нравится экосистема Стима. Тут тебе и установка модов в 1 клик, и синхронизация сохранений и форумы с гайдами, и ещё куча всего!

Как же хочется Геимпасс на палубе, вы себе не представляете...
Наконец расово-верный арчлинукс появился.

https://nyarchlinux.moe
Anime catgirls included.
Современные подходы к программированию которые мы не ждали, но заслужили.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну чо аплоюзеры, как вам презентация аппле? Как редизайн?

Если таковые есть среди подписоты моего канала
Forwarded from Матвей Кукуй, бложик (Matvey)
This media is not supported in your browser
VIEW IN TELEGRAM
Копаюсь в MCP, и некоторые находки — это просто невероятно.

Например:

1) Cursor представили «MCP Deeplinks» — функцию, позволяющую делиться конфигурациями MCP с помощью ссылки.
2) Когда пользователь нажимает на такую ссылку, Cursor предлагает ему «Установить MCP».
3) И что же делает кнопка «Установить MCP»? По сути, она просто выполняет любой shell-скрипт, встроенный в ссылку в формате Base64.

Я набросал скрипт, который забирает мой публичный SSH-ключ и отправляет его на мой сервер. Я запаковал его в диплинк, нажал «Установить», и, конечно же, мой ключ тут же оказался на сервере. По сути, "хакнул" себя за 2 клика.

Другими словами, это печально известный метод установки в стиле curl | sh, но поданный под видом дружелюбной функции. И все это в экосистеме с тысячами непроверенных поставщиков MCP и пользователей новичков-вайбкодеров.

(На гифке я включаю "MCP" в курсоре и получаю свой ключ на сервере)
Лол, Хайтеил ВСЁ.

8 лет разработки в никуда 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
зачем эта капча где надо передвинуть паззл всё время пишет типо вы справились лучше 99.9% пользователей зачем такую функцию добавили пусть тогда лидерборд сделают кто лучше всего ползунок на экране передвигает
Forwarded from igrishaev
Есть в Джаве одна вещь, которая сделана очень, очень плохо — минус бесконечность по любой шкале. Это логирование, причем как встроенное, так и сторонее. Справедливости ради, оно плохо сделано везде, но это слабое оправдание.

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

Хорошим примером служит история с Log4j. Когда я читал, что было под капотом, вставали волосы во всех местах. Ощущение, что разработчики объехали все сумасшедшие дома, записали пожелания пациентов и выполнили их дословно. Добавьте в шаблоны Тьюринг-полный язык? Хорошая идея. Хочу подгрузку классов по урлам? Считайте, уже сделано. Напишите фасад над фасадом над фасадом? Уже в этом релизе.

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

Вторая причина объясняется одним словом — состояние. В Джаве и других языках логирование устроено одинаково. В памяти сидит глобальный маршрутизатор, который определяет, куда какие логи складывать. У этого подхода много бед. Первая — инициация происходит неявно, например при чтении файла logback.xml из ресурсов. Вторая — программная настройка довольно сложна: нужно два экрана кода, чтобы связать фабрики логгеров с фабриками аппендеров.

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

Долгое время я думал, что logback (вроде бы самая адекватная библиотека логирования) — самостоятельное решение. Оказалось, это всего лишь фасад над уродским slf4j. Представьте себе объем работы и глубину стека вызовов! Один вагон классов для базовой функциональности, второй — чтобы приделать ему человеческое лицо.

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

Глобальное логирование простительно языкам эпохи Си. В последнем есть подсистема syslog (системный журнал), которую однажды открыл и пишешь из любого места программы. По современным меркам такой подход устарел.

На мой взгляд, проблема решается тем, чтобы убрать из логирования состояние. Система предлагает интерфейс Logger с методами debug, info, error и другими. Есть реализации этого интерфейса для записи в консоль, файл, системный журнал. Конкретная реализация нас не волнует: мы просто передаем объект logger, трактуя его как экземпляр интерфейса.

Этот логгер можно (и нужно) передавать в конструктор класса. Например, в каждое подключение к базе можно передать свой логгер. То же самое относится к парсерам, серверам и так далее.

Это решает проблемы, упомянутые выше. Базовые логгеры для консоли и файла у нас есть. Можно сделать классы-комбо, которые принимают несколько логгеров и пишут сообщения в каждый. Можно сделать асинхронный логгер, можно прикрутить Кафку, CloudWatch, словом — что угодно. Достаточно унаследовать класс от интерфейса Logger и инициировать ресурсы в конструкторе.

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

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

Увы, сегодня мы бесконечно далеки от такого подхода. Во-первых, Джависты поднимут лай, во-вторых, уже написаны десятки тысяч библиотек на базе log4shit, log4crap и прочих поделок. Мы обречены поддерживать этот цирк.
2025/10/21 11:31:01
Back to Top
HTML Embed Code: