#лытдыбр #common_lisp
Тихо и незаметно вышел новый минорный релиз моего ECS-микрофреймворка на Common Lisp, cl-fast-ecs 0.6.1. В нём из изменений только более подробная документация, а вообще он должен послужить трамплином для грядущих фиксов, связанных с переопределением компонентов на лету — эта кроличья нора оказалась размером с марианскую впадину и в ней нашёлся ещё ряд багов, но конец уже виден 😁
Тихо и незаметно вышел новый минорный релиз моего ECS-микрофреймворка на Common Lisp, cl-fast-ecs 0.6.1. В нём из изменений только более подробная документация, а вообще он должен послужить трамплином для грядущих фиксов, связанных с переопределением компонентов на лету — эта кроличья нора оказалась размером с марианскую впадину и в ней нашёлся ещё ряд багов, но конец уже виден 😁
itch.io
0.6.1 release
This minor release contains a bunch of documentation improvements, check it out ! See changelog for a full list of changes...
👍11❤1
#лытдыбр
Тут с утра в понедельник включаю колонки, чтобы с утреца под музычку перед работой поковырять свою ECS-библиотеку, щёлкаю выключателем своих Microlab Solo 1, а колонки внезапно громко гудят. Покрутил в компе звук, потом вооюбще джек из него выдернул — один хрен гудят. Решил открутить заднюю крышку, посмотреть, что там, — я ж в детстве занимался электротехникой, перед тем как понять, что руки у меня растут из жопы и надо становиться программистом) Удивился оттого, насколько внутри моих легендарных дорохо-бохато Solo 1 всё дёшево — вся плата усилителя неряшливо заляпана компаундом, на самой плате не распаяны какие-то элементы, в цепи питания никакой стабилизации, тупо диодный мост и два жирных электролитических конденсатора, один из которых, как я и ожидал исходя из симптомов, от старости сверху треснул и потёк, заляпав всё уже подсохшими грязно-жёлтыми каплями электролита. Второй, скорее всего, в таком же состоянии, но на нём сверху гордая наклейка QC pass 😁
Ну и я прикинул, что могу, конечно, пойти в магазин радиодеталей, купить паяльник, припой, флюс, найти там такие же конденсаторы, аккуратно отковырять компаунд, отпаять кондёры, аккуратно впаять новые, но аккуратно — это точно не про меня. Поэтому нашёл местную контору по починке электроники за пару кварталов от своего дома и отнёс её туда, где мне сказали, что во вторник позвонят, но произошёл polako momentpolako — сербск. "не спеши", "помедленнее" , поэтому во вторник не позвонили, и в среду тоже. Сегодня выдалась хорошая солнечная погода (а вчера был и завтра будет адовый дождь с ветром 20 м/с), решил пройтись до конторы и узнать, чокак. Прихожу — а там закрыто и на двери листочек с надписью по-сербски "сегодня, 21.11, не работаем, спасибо за понимание". Видать, не одному мне погода понравилась 😂
Тут с утра в понедельник включаю колонки, чтобы с утреца под музычку перед работой поковырять свою ECS-библиотеку, щёлкаю выключателем своих Microlab Solo 1, а колонки внезапно громко гудят. Покрутил в компе звук, потом вооюбще джек из него выдернул — один хрен гудят. Решил открутить заднюю крышку, посмотреть, что там, — я ж в детстве занимался электротехникой, перед тем как понять, что руки у меня растут из жопы и надо становиться программистом) Удивился оттого, насколько внутри моих легендарных дорохо-бохато Solo 1 всё дёшево — вся плата усилителя неряшливо заляпана компаундом, на самой плате не распаяны какие-то элементы, в цепи питания никакой стабилизации, тупо диодный мост и два жирных электролитических конденсатора, один из которых, как я и ожидал исходя из симптомов, от старости сверху треснул и потёк, заляпав всё уже подсохшими грязно-жёлтыми каплями электролита. Второй, скорее всего, в таком же состоянии, но на нём сверху гордая наклейка QC pass 😁
Ну и я прикинул, что могу, конечно, пойти в магазин радиодеталей, купить паяльник, припой, флюс, найти там такие же конденсаторы, аккуратно отковырять компаунд, отпаять кондёры, аккуратно впаять новые, но аккуратно — это точно не про меня. Поэтому нашёл местную контору по починке электроники за пару кварталов от своего дома и отнёс её туда, где мне сказали, что во вторник позвонят, но произошёл polako moment
😁4🫡1
#лытдыбр #common_lisp
На той неделе ковырялся с переопределением компонентов на лету в своём ECS-фреймворке, приделал-таки либу для многопотока
Попробую при этом сохранить уже существующий интерфейс у фреймворка, и ещё и предусмотреть, чтобы не было больших проблем с производительностью, чтобы в названии
На данный момент в MOP я разбираюсь примерно никак, поэтому, собсно, скачал и начал читать фундаментальный труд по MOP — "The Art of Metaobject Protocol" Кизалиса. Надеюсь, успею за разумное время осуществить задуманное)
На той неделе ковырялся с переопределением компонентов на лету в своём ECS-фреймворке, приделал-таки либу для многопотока
bordeaux-threads
, так что с помощью глобального мьютекса, костылей и веточек оно таки заработало, но я обнаружил целую россыпь багов поменбше. Закоммитил новый код в локальную веточку и начал чинить баги помельче, но от этого начали фейлиться старые тесты. Кароч я посмотрел на свой, откровенного говоря, уже довольно фаршевый код фреймворка, психанул и решил переписать его с использованием лисповского MetaObject Protocol, потому что по сути всё вот это вот переопределение на лету там поддерживается изкоробки — благо, умные люди из лиспового коммьюнити мне уже говорили, мол, а чего MOP не используешь. Попробую при этом сохранить уже существующий интерфейс у фреймворка, и ещё и предусмотреть, чтобы не было больших проблем с производительностью, чтобы в названии
cl-fast-ecs
можно было оставить слово fast 😅На данный момент в MOP я разбираюсь примерно никак, поэтому, собсно, скачал и начал читать фундаментальный труд по MOP — "The Art of Metaobject Protocol" Кизалиса. Надеюсь, успею за разумное время осуществить задуманное)
GitLab
Fixed error on component with index redefinition (31e4ee39) · Commits · Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
🔥14
#лытдыбр
Кто по скидке себе купил четвёртую дьяблу и Last Epoch длячилла в канун нового года слежения за состоянием индустрии дьяблоклонов, тот я 😅
Кто по скидке себе купил четвёртую дьяблу и Last Epoch для
🤩4
#common_lisp
Меж тем в воскресенье в Тбилиси прошёл митап по функциональщине, на котором был крутой доклад про оптимизацию кода на Common Lisp от Димы Игнатьева, широко известного в узких кругах как— благодаря его троллингу в начале 10-х я заинтересовался лиспом)) Из доклада даже я вынес для себя что-то новое 😊
Ссылка с таймкодом вот
Меж тем в воскресенье в Тбилиси прошёл митап по функциональщине, на котором был крутой доклад про оптимизацию кода на Common Lisp от Димы Игнатьева, широко известного в узких кругах как
love5an
Ссылка с таймкодом вот
YouTube
Fprog Tbilisi Meetup (01.12.2024)
Fprog Tbilisi Meetup
* Программа мероприятия:
*** Воркшоп: формальная верификация программ с состоянием на Lean4 (@GabrielFallen)
(sic!) Воркшоп стартует в 12:00, хронометраж ~3 часа. Это практическое занятие, берите с собой компьютеры. После воркшопа…
* Программа мероприятия:
*** Воркшоп: формальная верификация программ с состоянием на Lean4 (@GabrielFallen)
(sic!) Воркшоп стартует в 12:00, хронометраж ~3 часа. Это практическое занятие, берите с собой компьютеры. После воркшопа…
👀8🔥2
#лытдыбр #common_lisp
Ну штош, сегодня дочитал The Art of MetaObject Protocol (точнее, дошёл до того места, где эта книга перетекает в нудный справочник по MOP), а вчера на практическом опыте (см. рис. 1) убедился, что скорость доступа к слотам CLOS-объектов такая же (если не выше), как и скорость доступа к слотам
> The cost is roughly 1.6 times that of an open coded structure slot accessor.
Причём, что интересно, этот вывод верен как минимум для трёх компиляторов — SBCL, CCL и Franz Allegro ©®™ CL, я проверял)
Получается, что затеянный рефакторинг моего ECS-фреймворка не только упростит его код и решит проблемы с переопределением компонентов при работающих системах, но и с точки зрения производительности не сделает хуже — по крайней мере, если отталкиваться от нарисованного у меня в голове плана этого рефакторинга; а как известно, в бою первым гибнет план боя 😅
В общем, осталось найти время и силы на то, чтобы перелопатить свой код 😁
Ну штош, сегодня дочитал The Art of MetaObject Protocol (точнее, дошёл до того места, где эта книга перетекает в нудный справочник по MOP), а вчера на практическом опыте (см. рис. 1) убедился, что скорость доступа к слотам CLOS-объектов такая же (если не выше), как и скорость доступа к слотам
defstruct
-структур, хотя я всю жизнь думал, что слоты объектов медленнее 🤯 Да даже документация к SBCL утверждает, что> The cost is roughly 1.6 times that of an open coded structure slot accessor.
Причём, что интересно, этот вывод верен как минимум для трёх компиляторов — SBCL, CCL и Franz Allegro ©®™ CL, я проверял)
Получается, что затеянный рефакторинг моего ECS-фреймворка не только упростит его код и решит проблемы с переопределением компонентов при работающих системах, но и с точки зрения производительности не сделает хуже — по крайней мере, если отталкиваться от нарисованного у меня в голове плана этого рефакторинга
В общем, осталось найти время и силы на то, чтобы перелопатить свой код 😁
🔥11👍1👌1
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #common_lisp
Итак, после полутора недель возни переделал внутрянку своей ECS-библиотеки на использование CLOS-классов вместо структур для добавления возможности переопределения компонентов на лету, во время работы систем, но мёрджить пока рано — есть целый ряд мелочей, которые хотелось бы улучшить, да и тесты проходят только на двух компиляторах, SBCL и CCL, с другими нет-нет, да что-то отвалится 😅 Надеюсь, хотя бы до НГ успею зкончить эту уже поднадоевшую задачу)
Итак, после полутора недель возни переделал внутрянку своей ECS-библиотеки на использование CLOS-классов вместо структур для добавления возможности переопределения компонентов на лету, во время работы систем, но мёрджить пока рано — есть целый ряд мелочей, которые хотелось бы улучшить, да и тесты проходят только на двух компиляторах, SBCL и CCL, с другими нет-нет, да что-то отвалится 😅 Надеюсь, хотя бы до НГ успею зкончить эту уже поднадоевшую задачу)
🔥13👀1
#лытдыбр
Судя по всему, я скорее всего таки успею до НГ сделать рефакторинг своей ECS-библиотеки на CLOS-классы, тесты для всех компиляторов уже проходят 😊
Ну и по причине неизбежно надвигающихся каникул на моём мини-канале Шепелявый Щитпост 30 и 31 декабря запланирована двухдневка новогодних мемасиков, после которой канал тоже уйдёт на недельку на каникулы. Подписывайтесь, если ещё не, чтобы кекать каждый час, поедая мандаринки и шурша мишурой 😁🎄
Судя по всему, я скорее всего таки успею до НГ сделать рефакторинг своей ECS-библиотеки на CLOS-классы, тесты для всех компиляторов уже проходят 😊
Ну и по причине неизбежно надвигающихся каникул на моём мини-канале Шепелявый Щитпост 30 и 31 декабря запланирована двухдневка новогодних мемасиков, после которой канал тоже уйдёт на недельку на каникулы. Подписывайтесь, если ещё не, чтобы кекать каждый час, поедая мандаринки и шурша мишурой 😁🎄
🔥10
#common_lisp #лытдыбр
На новый год мейнтейнеры SBCL решили в качестве подарка пользователям не уступать традиции выпускать по новой версии каждый месяц и выпустить новую юбилейную версию 2.5.0, а у меня, как обычно, обновились соответствующие docker-образа для геймдева. Правда, фикс проблемы, из-за которой на особенно сложных окнах в моей GUI-либе cl-liballegro-nuklear SBCL крэшится с внутренней ошибкой, попадёт только в следующую версию (его закоммитили буквально через несколько часов после релиза), а это, считай, в феврале. Ну да ничего, есть много других вещей, над которыми нужно поработать в следующем году 😊
На новый год мейнтейнеры SBCL решили в качестве подарка пользователям не уступать традиции выпускать по новой версии каждый месяц и выпустить новую юбилейную версию 2.5.0, а у меня, как обычно, обновились соответствующие docker-образа для геймдева. Правда, фикс проблемы, из-за которой на особенно сложных окнах в моей GUI-либе cl-liballegro-nuklear SBCL крэшится с внутренней ошибкой, попадёт только в следующую версию (его закоммитили буквально через несколько часов после релиза), а это, считай, в феврале. Ну да ничего, есть много других вещей, над которыми нужно поработать в следующем году 😊
Telegram
Лисп в изгнании
#лытдыбр #common_lisp
Лол, чёт я обмакросился, аж компилятор поломал 😅
Лол, чёт я обмакросился, аж компилятор поломал 😅
🔥7❤5
This media is not supported in your browser
VIEW IN TELEGRAM
А на этот НГ присоединяюсь к пожеланиям вот такого же душного как и я спикера:
🥰13❤4💊2👍1😢1
#лытдыбр #common_lisp
Ну штош, праздники плавно подходят к концу, и я наконец доделал фичу в своём ECS-фреймворке на CL, которую начал ещё в прошлом году 🌚 А именно, определение внутренних Struct-of-Arrays хранилищ данных компонентов через
Сначала я вообще хотел навертеть там мьютексов, и даже выяснил, что захват мьютекса в SBCL занимает всего 2 тысячных миллисекунды, но потом я узнал о таком великолепном механизме CLOS, как UPDATE-INSTANCE-FOR-REDEFINED-CLASS, который позволяет кастомизировать процесс обновления существующих инстансов классов в соответствии с новым определением класса, причём этот механизм работает лениво, т.е. обновление происходит только при первом обращении к инстансу, получается, мьютекс не нужен 😊 Самым тяжким, наверное, было заставить этот механизм работать одинаково под всеми шестью поддерживаемыми мной реализациями Common Lisp, потому что стандарт стандартом, но в мелочах они часто отличаются.
Ещё у меня в коментах спрашивали, что там с производительностью, так вот, буквально сегодня утром закончил замеры — в бенчмарке создаётся 10к объектов с тремя компонентами, и затем 10к раз вызывается (через run-systems) система, обращающаяся ко всем трём компонентам и делающая с ними нехитрую арифметику с тригонометрией. Выяснилось, что замена хранилищ данных на классы замедляет скорость работы буквально в рамках погрешности, на пару процентов 🎉 Более того, я закодил так, что в релизном варианте (при добавлении кейворда
В общем, наконец с этой задачей окончено, можно двигаться дальше, есть много планов на этот год, включая попытку в коммерческий релиз игры на Common Lisp 🤩
Ну штош, праздники плавно подходят к концу, и я наконец доделал фичу в своём ECS-фреймворке на CL, которую начал ещё в прошлом году 🌚 А именно, определение внутренних Struct-of-Arrays хранилищ данных компонентов через
defclass
, а не defstuct
, что позволяет гораздо проще и без багов переопределять компоненты "на лету", прямо во время работы систем, а именно — добавлять/удалять новые поля в компонентах и менять их типы. Как сообщает git
, 533 additions и 307 deletions, заняло гораздо больше времени, чем я рассчитывал, но результатом доволен.Сначала я вообще хотел навертеть там мьютексов, и даже выяснил, что захват мьютекса в SBCL занимает всего 2 тысячных миллисекунды, но потом я узнал о таком великолепном механизме CLOS, как UPDATE-INSTANCE-FOR-REDEFINED-CLASS, который позволяет кастомизировать процесс обновления существующих инстансов классов в соответствии с новым определением класса, причём этот механизм работает лениво, т.е. обновление происходит только при первом обращении к инстансу, получается, мьютекс не нужен 😊 Самым тяжким, наверное, было заставить этот механизм работать одинаково под всеми шестью поддерживаемыми мной реализациями Common Lisp, потому что стандарт стандартом, но в мелочах они часто отличаются.
Ещё у меня в коментах спрашивали, что там с производительностью, так вот, буквально сегодня утром закончил замеры — в бенчмарке создаётся 10к объектов с тремя компонентами, и затем 10к раз вызывается (через run-systems) система, обращающаяся ко всем трём компонентам и делающая с ними нехитрую арифметику с тригонометрией. Выяснилось, что замена хранилищ данных на классы замедляет скорость работы буквально в рамках погрешности, на пару процентов 🎉 Более того, я закодил так, что в релизном варианте (при добавлении кейворда
:ecs-unsafe
в *features*) данные хранятся по-старому, в структурах. По ходу дела я также выяснил, что этот релизный вариант всего процентов на 5-6 быстрее не-релизного варианта, который по умолчанию.В общем, наконец с этой задачей окончено, можно двигаться дальше, есть много планов на этот год, включая попытку в коммерческий релиз игры на Common Lisp 🤩
GitLab
Use classes instead of structs for storage SoA (58f39a5f) · Commits · Andrew Kravchuk / cl-fast-ecs · GitLab
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
🔥19
#лытдыбр #common_lisp
Между делом тут запилил в ECS-фреймворке давно напрашивавшийся рефакторинг — позаменял все глобальные переменные на те, которые предоставляет библиотека global-vars — они почти как настоящие лисповские переменные с динамической областью видимости, только быстрее, потому что шарятся между тредами, как в какой-нибудь прямолинейной C-шке и всегда являются bound, т.е. у них всегда есть значение. В итоге небольшая система move, для которой я хвастался дизассемблерным листингом в туториале по ECS, занимавшим 210 байт, теперь ужалась до 169 байт стройного и прямолинейного ассемблерного кода! 🎉Хотя тут, судя по всему, и разработчики компилятора SBCL постарались, он как будто более уверенно обращается с переменными с плавающей запятой.
В общем, пытаюсь отвлечься от традиционного ежегодного бюроктатического ада с ВНЖ, как могу 😅
Между делом тут запилил в ECS-фреймворке давно напрашивавшийся рефакторинг — позаменял все глобальные переменные на те, которые предоставляет библиотека global-vars — они почти как настоящие лисповские переменные с динамической областью видимости, только быстрее, потому что шарятся между тредами, как в какой-нибудь прямолинейной C-шке и всегда являются bound, т.е. у них всегда есть значение. В итоге небольшая система move, для которой я хвастался дизассемблерным листингом в туториале по ECS, занимавшим 210 байт, теперь ужалась до 169 байт стройного и прямолинейного ассемблерного кода! 🎉
В общем, пытаюсь отвлечься от традиционного ежегодного бюроктатического ада с ВНЖ, как могу 😅
GitLab
Added use of global-vars; dropped BIND-STORAGE in favor of MAKE-STORAGE (b4a578e1) · Commits · Andrew Kravchuk / cl-fast-ecs ·…
Blazingly fast Entity-Component-System microframework ⚡📦 https://awkravchuk.itch.io/cl-fast-ecs
❤11⚡1
#лытдыбр #common_lisp
Не далее, чем сегодня утром, в лисповый биндинг
Автор библиотеки мне ещё по ходу дела накидал фидбека, так что в итоге совместными усилиями получилась вообще красота, теперь вместо чудовищного
можно просто и красиво написать
😊
Не далее, чем сегодня утром, в лисповый биндинг
cl-liballegro
замёрджили мой пулл-реквест с макросами, упрощающими доступ к полям структур из liballegro
— ещё один пунктик из TODO-списка в постмортеме к моему первому рогалику выполнен 😌Автор библиотеки мне ещё по ходу дела накидал фидбека, так что в итоге совместными усилиями получилась вообще красота, теперь вместо чудовищного
(print (cffi:foreign-slot-value mouse-state '(:struct al:mouse-state) 'al::buttons))
можно просто и красиво написать
(al:with-mouse-state-slots () mouse-state
(print buttons))
😊
GitHub
Make use of CFFI:WITH-FOREIGH-SLOTS to simplify accessing Allegro structs by lockie · Pull Request #57 · resttime/cl-liballegro
Here are the changes I propose as a followup to #21.
First of all, the ALLEGRO_MOUSE_STATE struct: I've added the call to cffi:with-foreign-slots macro inside of pre-existing WITH-MOUSE-STA...
First of all, the ALLEGRO_MOUSE_STATE struct: I've added the call to cffi:with-foreign-slots macro inside of pre-existing WITH-MOUSE-STA...
🔥14👏2
This media is not supported in your browser
VIEW IN TELEGRAM
Maxima скомпилировали для запуска в браузере!
Maxima это программа для работы с математическими выражениями. Примечательно то, что эта система написана на Common Lisp.
И вот недавно на Reddit появилось сообщение, что Maxima удалось скомпилировать в WebAssembley так что теперь её можно запустить прямо в браузере.
Я записал для вас небольшую гифку с демкой, а кому интересно, тот может сам потыкать в пример развернутый на сайте:
http://maxima-on-wasm.pages.dev/
Что в этой истории примечательного? То что компиляция в WebAssembly расширяет возможности использования Common Lisp. Я пока не погружался в детали того как это работает, но судя по тому, что в данном проекте использовался ECL (Embeddable Common Lisp), могу предположить, что Maxima транслировали в C, а затем уже собрали в WebAssembly.
#commonlisp #news
Maxima это программа для работы с математическими выражениями. Примечательно то, что эта система написана на Common Lisp.
И вот недавно на Reddit появилось сообщение, что Maxima удалось скомпилировать в WebAssembley так что теперь её можно запустить прямо в браузере.
Я записал для вас небольшую гифку с демкой, а кому интересно, тот может сам потыкать в пример развернутый на сайте:
http://maxima-on-wasm.pages.dev/
Что в этой истории примечательного? То что компиляция в WebAssembly расширяет возможности использования Common Lisp. Я пока не погружался в детали того как это работает, но судя по тому, что в данном проекте использовался ECL (Embeddable Common Lisp), могу предположить, что Maxima транслировали в C, а затем уже собрали в WebAssembly.
#commonlisp #news
🔥11
#лытдыбр
Ну штош, сегодня с утра успешно продлил ещё на год своймультипаспорт черногорский ВНЖ. Пока пешочком шёл от местного МВД до дома, любуясь заснеженными верхушками гор, осознал, что я в самоизгнании, получается, уже третий год. Как там поёт Шеннон Кёртис, And then sometimes you blink and it's been years 😔
Теперь можно немношк выдохнуть и фигачить дальше, игра саму себя в стиме не выпустит 😅
Ну штош, сегодня с утра успешно продлил ещё на год свой
Теперь можно немношк выдохнуть и фигачить дальше, игра саму себя в стиме не выпустит 😅
YouTube
Shannon Curtis - Slowly Break
Shannon Curtis performing Slowly Break. (c) 2014 Saint Cloud Records
From the new album METAFORMA.
Order:
CD - http://shannoncurtis.net/store
iTunes - http://geni.us/metaforma
Google Play - http://geni.us/metaforma
Amazon - http://geni.us/mfamazon…
From the new album METAFORMA.
Order:
CD - http://shannoncurtis.net/store
iTunes - http://geni.us/metaforma
Google Play - http://geni.us/metaforma
Amazon - http://geni.us/mfamazon…
❤12
❤7
Forwarded from leaky relu
смотрите, я сделал стикеры лисп(взято отсюда https://github.com/commonlispbr/stickers/blob/master/README.md)
https://telegram.me/addstickers/lispalienstickers
https://telegram.me/addstickers/lispalienstickers
GitHub
stickers/README.md at master · commonlispbr/stickers
Collection of stickers about Lisp in general and as well Common Lisp - commonlispbr/stickers
🔥15
#лытдыбр
Нет в мире IT вещи, которая бесит сильнее, чем Discord под Linux с его самой беспомощной в мире системой обновлений. Почуяв на своих серверах хоть дуновение запашка новой версии, он наглухо отказывается запускаться (см. рис. 1), любезно открывая тебе в браузере веб-страничку, где ты должен сам скачать (!) дистрибутив, аж в целых 2 (прописью: двух) вариантах: пакет для Debian-подобных линуксов и тарбол с бинарниками. И что же Discord делает после того, как ты вручную (!!) устанавливаешь его обновление? Качает, блядь, обновления (см. рис. 2).
Мне кажется, за такой способ обновления софта нужно всю команду разработки ссылать на урановые рудники, чтобы другим неповадно было 🤬
Нет в мире IT вещи, которая бесит сильнее, чем Discord под Linux с его самой беспомощной в мире системой обновлений. Почуяв на своих серверах хоть дуновение запашка новой версии, он наглухо отказывается запускаться (см. рис. 1), любезно открывая тебе в браузере веб-страничку, где ты должен сам скачать (!) дистрибутив, аж в целых 2 (прописью: двух) вариантах: пакет для Debian-подобных линуксов и тарбол с бинарниками. И что же Discord делает после того, как ты вручную (!!) устанавливаешь его обновление? Качает, блядь, обновления (см. рис. 2).
Мне кажется, за такой способ обновления софта нужно всю команду разработки ссылать на урановые рудники, чтобы другим неповадно было 🤬
🔥10😁4🥴1