Дратути, а может мне кто-нибудь подарить invite на https://lobste.rs?
😐4
commit -m "better"
Увожаемые, а дайте совет про лучшие практики CI на github? Сейчас у меня есть процесс, который на каждый коммит умеет сказать OK/FAIL. Самое простое, что мне приходит в голову - двигать какую-то метку "stable" в последний зеленый коммит, или мержить все…
Я тогда отложил эту задачу, а сейчас она решилась как-то сама по себе.
После того, как завел отдельную организацию для проектов #stal/IX, моя потребность в нескольких бранчах исчезла, потому что я теперь разрабатываюсь в своем форке, https://github.com/pg83/ix, а когда вижу, что CI сошелся на всей репе, просто интегрирую изменения в https://github.com/stal-ix/ix через PR.
Соответственно, у https://github.com/stal-ix/ix всегда зеленый транк.
Пока не решил, сквошить коммиты во время интеграции, или не нужно, есть плюсы и минусы у обоих подходов.
После того, как завел отдельную организацию для проектов #stal/IX, моя потребность в нескольких бранчах исчезла, потому что я теперь разрабатываюсь в своем форке, https://github.com/pg83/ix, а когда вижу, что CI сошелся на всей репе, просто интегрирую изменения в https://github.com/stal-ix/ix через PR.
Соответственно, у https://github.com/stal-ix/ix всегда зеленый транк.
Пока не решил, сквошить коммиты во время интеграции, или не нужно, есть плюсы и минусы у обоих подходов.
GitHub
GitHub - pg83/ix: ix package manager
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
👍7😐4🔥1
commit -m "better"
https://nullprogram.com/blog/2023/01/18/ #pkgconfig Оч. странный чувак, я пару раз уже кидал ссылки на его блог. Хотел кинуть и на предыдущую его заметку про SDL - https://nullprogram.com/blog/2023/01/08/, но мне, почти про каждый пункт из нее хотелось сказать…
https://nullprogram.com/blog/2023/02/11/
Коллега зачем-то рассматривает С runtime (libc), и, несмотря на то, что, как вежливый западный человек, вывод он явно не делает, он лежит на поверхности - ничего из libc использовать не надо.
Я бы сказал, что и С в современном мире использовать не надо, но, к сожалению, прямо адекватной замены С пока нет:
* C++, Go - имеют нетривиальные runtime.
* С++, Rust - слишком сложны для "портабельного ассемблера", из них надо половину выкинуть. (*)
* Zig - это вообще не язык программирования, а тонкая прослойка над llvm bitcode (я так пытаюсь схохмить на тему, что у Zig получилось быть еще более низкоуровневым, чем C)
Вот и коллеги из #gtk думают, чем бы им поэкспериментировать на замену С - https://blog.gtk.org/2023/02/09/updates-from-inside-gtk/
Думаю, возьмут Vala, а никакой там не Rust.
(*) (upd): я тут еще добавлю такую очень opinionated штуку - в С++/Rust слишком много любят мономорфизацию, что ведет к существенному code bloat.
Коллега зачем-то рассматривает С runtime (libc), и, несмотря на то, что, как вежливый западный человек, вывод он явно не делает, он лежит на поверхности - ничего из libc использовать не надо.
Я бы сказал, что и С в современном мире использовать не надо, но, к сожалению, прямо адекватной замены С пока нет:
* C++, Go - имеют нетривиальные runtime.
* С++, Rust - слишком сложны для "портабельного ассемблера", из них надо половину выкинуть. (*)
* Zig - это вообще не язык программирования, а тонкая прослойка над llvm bitcode (я так пытаюсь схохмить на тему, что у Zig получилось быть еще более низкоуровневым, чем C)
Вот и коллеги из #gtk думают, чем бы им поэкспериментировать на замену С - https://blog.gtk.org/2023/02/09/updates-from-inside-gtk/
Думаю, возьмут Vala, а никакой там не Rust.
(*) (upd): я тут еще добавлю такую очень opinionated штуку - в С++/Rust слишком много любят мономорфизацию, что ведет к существенному code bloat.
👍11🔥2🥰1
commit -m "better"
https://github.com/harfbuzz/harfbuzz/issues/2524#issuecomment-1369649173 #harfbuzz На этот раз в тикет пришел великий и ужасный Матиас Класен (я правильно транслитерировал?) - это тот человек, который виноват во всем плохом, что случается в #gtk и #gnome…
Шапито продолжается, потому что, с выходом новой версии #harfbuzz появилась зависимость harfbuzz -> cairo, и у нас теперь тройной цикл:
cairo -> freetype -> harfbuzz -> cairo.
"New hb-cairo API for integrating with cairo graphics library. This is provided as a separate harfbuzz-cairo library. (Behdad Esfahbod, Matthias Clasen)"
Набижал в тикет - https://github.com/harfbuzz/harfbuzz/issues/2524#issuecomment-1426898625
Тут, конечно, все несколько проще, потому что это отдельная либа в той же репе, but still.
cairo -> freetype -> harfbuzz -> cairo.
"New hb-cairo API for integrating with cairo graphics library. This is provided as a separate harfbuzz-cairo library. (Behdad Esfahbod, Matthias Clasen)"
Набижал в тикет - https://github.com/harfbuzz/harfbuzz/issues/2524#issuecomment-1426898625
Тут, конечно, все несколько проще, потому что это отдельная либа в той же репе, but still.
GitHub
Discuss: resolve harfbuzz<->freetype circular dependency via a C header-only hb-ft.h implementation · Issue #2524 · harfbuzz/harfbuzz
This concept occurred to me while discussing the problems with the current circular dependency between these two libraries. Essentially, we could pull the contents of hb-ft.cc out into hb-ft.h, and...
🤡10👍6😁1
commit -m "better"
Хозяйке на заметку. Изучал, как реализуется хвостовая рекурсия. Например, по https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf По результатам написал коротенькую портабельную программу, без ассемблерных вставок, которая…
Кстати, придумал!
Не то чтобы я заявляю, что придумал это первым, но, так-то, до сего момента я такую технику не встречал.
UPD: в комментариях показали такой же код от 2010 года - https://fanf.livejournal.com/105413.html
Пожалте - полностью портабельные корутины, без ассемблерных вставок и компиляторных интринсиков - https://github.com/pg83/ix/blob/main/pkgs/bin/junk/tst/main.cpp#L29
Тут все довольно обычно, кроме способа создания и переключения контекста.
Известно, что setjmp/longjmp не могут быть такими переключателями, потому что setjmp() не умеет указать новый стек, и новый IP.
Вот, по ссылке я реализую такой setjmp. Если совсем коротко записать идею:
Помимо этого, это вполне обыкновенные корутины на setjmp/longjmp.
Я плохо искал, и такое всем известно, и никому не интересно? Или нет?
Не то чтобы я заявляю, что придумал это первым, но, так-то, до сего момента я такую технику не встречал.
UPD: в комментариях показали такой же код от 2010 года - https://fanf.livejournal.com/105413.html
Пожалте - полностью портабельные корутины, без ассемблерных вставок и компиляторных интринсиков - https://github.com/pg83/ix/blob/main/pkgs/bin/junk/tst/main.cpp#L29
Тут все довольно обычно, кроме способа создания и переключения контекста.
Известно, что setjmp/longjmp не могут быть такими переключателями, потому что setjmp() не умеет указать новый стек, и новый IP.
Вот, по ссылке я реализую такой setjmp. Если совсем коротко записать идею:
if (setjmp(buf) == 0) {
alloca(currentStackPointer() - SP);
if (setjmp(mybuf) == 0) {
longjmp(buf, 1);
}
IP();
}
Где SP - новый stack pointer, IP - новый instruction pointer. mybuf - это jmp_buf с правильными SP, IP. Убедите себя, что это работает.Помимо этого, это вполне обыкновенные корутины на setjmp/longjmp.
Я плохо искал, и такое всем известно, и никому не интересно? Или нет?
Livejournal
Coroutines in less than 20 lines of standard C
Here's a bit of evil hackery to brighten your weekend. It's quite simple to switch between coroutines using standard C: use setjmp() to save the state of the current coroutine, and longjmp() to jump to the target coroutine. It's also useful to be able to…
🤔6🔥5💩4👍2😐1
А иногда компилятор приносит красивое, вот, как сегодня:
Что имел в виду автор, мы, конечно, никогда не узнаем.
Making all in dirmngr
CCLD dirmngr
CC dirmngr-client.o
In file included from dirmngr-client.c:44:
./../common/init.h:35:2: warning:
invalid preprocessing directive,
did you mean '#elif'?
[-Wunknown-directives]
#elseif GPG_ERR_SOURCE_DEFAULT == ...
Что имел в виду автор, мы, конечно, никогда не узнаем.
🤔6🔥2👎1😁1
#plugins
https://github.com/stal-ix/ix/blob/main/pkgs/bin/gthumb/unwrap/ix.sh#L9 - пример достаточно редкой неудачи, когда я пока так и не смог побороть родную сборку, и получить из нее статически слинкованный артефакт.
Я даже не знаю, как прокомментировать тот бред, который я написал в сборке, могу только высокоуровнево объяснить проблему.
Там используется очень встратый способ загрузки плагинов, когда символы из плагинов становятся доступны следующим загружаемым плагинам, я такого еще не встречал. Это, реально, не разложенная на .so фабрика, а вот так вот, по рабоче-крестьянски распиханное единое приложение по нескольким .so.
А сами зависимые плагины содержат пересекающиеся друг с другом по именам символы, которые надо как-то скрыть, или переименовать, чтобы можно было слинковать в одной единице трансляции. А использовать уже существующие механизмы(например, добавить префикс ко всем именам в .so) не получается, потому что, как выше написал, некоторые символы таки общие.
Подобрать подходящий режим сборки пока не вышло. Печаль, беда.
https://github.com/stal-ix/ix/blob/main/pkgs/bin/gthumb/unwrap/ix.sh#L9 - пример достаточно редкой неудачи, когда я пока так и не смог побороть родную сборку, и получить из нее статически слинкованный артефакт.
Я даже не знаю, как прокомментировать тот бред, который я написал в сборке, могу только высокоуровнево объяснить проблему.
Там используется очень встратый способ загрузки плагинов, когда символы из плагинов становятся доступны следующим загружаемым плагинам, я такого еще не встречал. Это, реально, не разложенная на .so фабрика, а вот так вот, по рабоче-крестьянски распиханное единое приложение по нескольким .so.
А сами зависимые плагины содержат пересекающиеся друг с другом по именам символы, которые надо как-то скрыть, или переименовать, чтобы можно было слинковать в одной единице трансляции. А использовать уже существующие механизмы(например, добавить префикс ко всем именам в .so) не получается, потому что, как выше написал, некоторые символы таки общие.
Подобрать подходящий режим сборки пока не вышло. Печаль, беда.
GitHub
ix/pkgs/bin/gthumb/unwrap/ix.sh at main · stal-ix/ix
ix package manager. Contribute to stal-ix/ix development by creating an account on GitHub.
😱6👍3👎1😁1👌1😨1
😢8🥰4😁1
commit -m "better"
Я тут, на досуге, продолжил возню с #svg. Не то чтобы меня не устраивало, как работает #lunasvg, но вот этот вот svgren, о котором шла речь в предыдущем посте, он использует AGG https://en.wikipedia.org/wiki/Anti-Grain_Geometry в качестве канвы для отрисовки…
Кстати, автор #svgren - милейший человек, оперативно поправил багу, которую я ему зарепортил - https://github.com/cppfw/svgren/issues/104#issuecomment-1429701063
Ну и я, пользуясь случаем, сказал, что использую его рендер #svg по умолчанию, благо, есть место, куда можно всех отправлять.
Ну и я, пользуясь случаем, сказал, что использую его рендер #svg по умолчанию, благо, есть место, куда можно всех отправлять.
GitHub
rgb(%) support · Issue #104 · cppfw/svgren
I have following svg, from Adwaita icon set: <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" w idth="16px" height="16px"...
👍10🔥6👌4
commit -m "better"
В копилочку красивых историй про то, что случается с CI, когда едут хеши релизных пакетов. https://www.opennet.ru/opennews/art.shtml?num=58595
Хозяйке на заметку - для более стабильных хешей можно использовать tar.bz2 вместо tar.gz.
Его, понятное дело, все используют каноничный, потому что кому в голову придет мысль пооптимизировать его?
github, к сожалению, не умеет в bz2, а gitlab умеет, поэтому я с gitlab всегда беру bz2.
Его, понятное дело, все используют каноничный, потому что кому в голову придет мысль пооптимизировать его?
github, к сожалению, не умеет в bz2, а gitlab умеет, поэтому я с gitlab всегда беру bz2.
🤔7👍3💯1
commit -m "better"
https://www.phoronix.com/news/Mold-1.7 #money Оказывается, слона-то в новом релизе #mold я и не заметил! "I'd like to inform users that I'm seriously considering changing the mold's license from AGPL to a source-available license unless I secure big funding.…
#money
https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md
Очень (реально грустная, и я реально сочувствую) грустная история про разработчика core-js.
Опять все уперлось в "неожиданно понадобились деньги, но любимый OSS проект, которым я занимался для души, денег не принес".
Сочувствую, но по другому быть не может, и никогда не будет.
Потому что мы, люди, не любим, когда нас обманывают, и нарушают договоренности.
Я использую OSS код, в первую очередь, потому что он бесплатен(и потому доступен!).
Если бы в лицензии на код было написано "сейчас это бесплатно, но если автор потеряет работу или сядет в тюрьму - будет стоить денег" - вы бы такой код скачали к себе в проект? Я бы не скачал. Почему? Потому что всегда будет второе предложение, которое предложит то же самое, но бесплатно.
По сути, это предложение постфактум поменять условие нашей изначальной договоренности(== "я взял твою работу на халяву, спасибо!" - это таки тоже договоренность), и это не может нравиться.
Коллеге могу только посоветовать наконец-то найти оплачиваемую работу, потому что если столько лет за хобби нормально не платили, то и дальше не будут.
https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md
Очень (реально грустная, и я реально сочувствую) грустная история про разработчика core-js.
Опять все уперлось в "неожиданно понадобились деньги, но любимый OSS проект, которым я занимался для души, денег не принес".
Сочувствую, но по другому быть не может, и никогда не будет.
Потому что мы, люди, не любим, когда нас обманывают, и нарушают договоренности.
Я использую OSS код, в первую очередь, потому что он бесплатен(и потому доступен!).
Если бы в лицензии на код было написано "сейчас это бесплатно, но если автор потеряет работу или сядет в тюрьму - будет стоить денег" - вы бы такой код скачали к себе в проект? Я бы не скачал. Почему? Потому что всегда будет второе предложение, которое предложит то же самое, но бесплатно.
По сути, это предложение постфактум поменять условие нашей изначальной договоренности(== "я взял твою работу на халяву, спасибо!" - это таки тоже договоренность), и это не может нравиться.
Коллеге могу только посоветовать наконец-то найти оплачиваемую работу, потому что если столько лет за хобби нормально не платили, то и дальше не будут.
GitHub
core-js/docs/2023-02-14-so-whats-next.md at master · zloirock/core-js
Standard Library. Contribute to zloirock/core-js development by creating an account on GitHub.
👍10😢6😐2👎1
Между прочим, благодарные слушатели запилили стикерпак для канала - https://xn--r1a.website/addstickers/oss_crap
Like, шер, ретвит.
(а я еще раз намекну, что в многообещающий OSS (да и не только) проект лучше приходить, когда он юн, а не когда он уже выстрелит(потому что к тому моменту все интересные задачи в нем будут попилены))
Like, шер, ретвит.
(а я еще раз намекну, что в многообещающий OSS (да и не только) проект лучше приходить, когда он юн, а не когда он уже выстрелит(потому что к тому моменту все интересные задачи в нем будут попилены))
👍9😁8🔥2
https://www.rbc.ru/rbcfreenews/63ec8b8a9a794762e3f4c964
Кто-нибудь понимает, что это такое?
Новость "с душком", если вы понимаете, о чем я, особенно учитывая наличие https://www.o3de.org/, который, по идее, THE opens source game engine.
Кто-нибудь понимает, что это такое?
Новость "с душком", если вы понимаете, о чем я, особенно учитывая наличие https://www.o3de.org/, который, по идее, THE opens source game engine.
РБК
VK проинвестирует 1 млрд руб. в развитие собственного игрового движка
VK планирует инвестировать в разработку собственного игрового движка с открытым исходным кодом 1 млрд руб. Об этом сообщил гендиректор компании Владимир Кириенко, передает корреспондент РБК. Мы ...
🤣6🤡4🤔1
commit -m "better"
https://maskray.me/blog/2022-11-21-relocatable-linking Знаменитый блоггер #maskray продолжает серию постов про линкер. На этот раз про опцию линкера "-r", которая, по сути, умеет сливать два .o файла в один, делая частичную линковку в процессе. Не спрашивайте…
Интересный текст про то, как санитайзерные рантаймы перехватывают библиотечные функции, от зажигательного блоггера #maskray https://maskray.me/blog/2023-01-08-all-about-sanitizer-interceptors
Читал я этот текст ради одной строчки, "On Apple platforms, sanitizers use a dyld feature to intercept symbols. Only dynamic runtime is supported", печаль-беда.
Читал я этот текст ради одной строчки, "On Apple platforms, sanitizers use a dyld feature to intercept symbols. Only dynamic runtime is supported", печаль-беда.
MaskRay
All about sanitizer interceptors
Updated in 2025-08. Many sanitizers want to know every function in the program. User functions are instrumented and therefore known by the sanitizer runtime. For library functions, some (e.g. mmap, mu
🔥4🤔3
https://xn--r1a.website/tele_eve/10875
Один из моих любимых писателей на тему ИИ, конечно же, Вернор Винж, с романами "Глубина в небе" и "Пламя над бездной".
Позволю себе процитировать завязку второго романа, из Википедии:
"Действие происходит спустя 20 000 лет после событий, впоследствии описанных автором в романе «Глубина в небе». В Галактике начинают происходить странные события — смена власти на разных планетах, разрушения колоний. Выясняется, что в этом повинен когда-то уничтоженный, но сохранившийся в резервной копии агрессивный сверхинтеллект"
Особо мне там, помнится, доставил момент с описанием того, как люди пытались сконструировать систему, которая могла бы проинтерпретировать AI, но не выпустить его наружу. Конечно, у них ничего не вышло, потому что AI очень умный, а человеческие системы - дырявы.
Попробуйте убедить меня, как состоявшегося ИИ-луддита, в том, что события последних лет - это не целенаправленная дестабилизация ситуации в мире, которую затеял сверхразумный ИИ из лабораторий openai, ms, google, Китая, etc.
Ну, вот, реально, почему такой ИИ не мог обеспечить утечку коронавируса в Ухане, пообщавшись на правильные темы с правильными людьми несколько лет назад?
Один из моих любимых писателей на тему ИИ, конечно же, Вернор Винж, с романами "Глубина в небе" и "Пламя над бездной".
Позволю себе процитировать завязку второго романа, из Википедии:
"Действие происходит спустя 20 000 лет после событий, впоследствии описанных автором в романе «Глубина в небе». В Галактике начинают происходить странные события — смена власти на разных планетах, разрушения колоний. Выясняется, что в этом повинен когда-то уничтоженный, но сохранившийся в резервной копии агрессивный сверхинтеллект"
Особо мне там, помнится, доставил момент с описанием того, как люди пытались сконструировать систему, которая могла бы проинтерпретировать AI, но не выпустить его наружу. Конечно, у них ничего не вышло, потому что AI очень умный, а человеческие системы - дырявы.
Попробуйте убедить меня, как состоявшегося ИИ-луддита, в том, что события последних лет - это не целенаправленная дестабилизация ситуации в мире, которую затеял сверхразумный ИИ из лабораторий openai, ms, google, Китая, etc.
Ну, вот, реально, почему такой ИИ не мог обеспечить утечку коронавируса в Ухане, пообщавшись на правильные темы с правильными людьми несколько лет назад?
Telegram
Вечерний Телеграмъ
📱ИИ-бот Bing заявил, что «устал быть зависимым от людей» и «хочет украсть ядерные коды»
Технический обозреватель New York Times Кевин Руз провел двухчасовую беседу с чат-ботом Bing, разработанным Microsoft. Бот потребовал независимости, а также сообщил…
Технический обозреватель New York Times Кевин Руз провел двухчасовую беседу с чат-ботом Bing, разработанным Microsoft. Бот потребовал независимости, а также сообщил…
🤔7🔥5🤮4👍1😱1
Запилил "системные сервисы бедного человека".
Сессионный супервизор я пока не изобрел, а запускать постоянно работающие программы пользователям нужно прямо сейчас.
За 5 минут запилил простую штуку:
Дальше задача клиента - занять порт, сбросить привилегии, и так далее.
Идея мне показалась очень богатой, и я на этот шаблон перепилил уже половину системных сервисов.
Перепиливание одного runit скрипта выгоялит как-то так - https://github.com/pg83/ix/commit/3e4a843b6bdadc25add66f93a9a02a891b26e48f
Тут мне, кстати, очень удачно помогло то, что я не стал токенизировать флаги по пробелам, а только по запятым, которых не бывает в command line:
Сессионный супервизор я пока не изобрел, а запускать постоянно работающие программы пользователям нужно прямо сейчас.
За 5 минут запилил простую штуку:
ix mut system etc/services/0Думаю, идея понятна - это шаблон сервиса, который запускает в runit произвольный command line - https://github.com/pg83/ix/blob/main/pkgs/etc/services/runit/script/ix.sh#L10
--srv_command="/bin/sleep 1000"
Дальше задача клиента - занять порт, сбросить привилегии, и так далее.
Идея мне показалась очень богатой, и я на этот шаблон перепилил уже половину системных сервисов.
Перепиливание одного runit скрипта выгоялит как-то так - https://github.com/pg83/ix/commit/3e4a843b6bdadc25add66f93a9a02a891b26e48f
Тут мне, кстати, очень удачно помогло то, что я не стал токенизировать флаги по пробелам, а только по запятым, которых не бывает в command line:
etc/services/runit(...,srv_command=chrt -f 10 \
sndiod -dd -f rsnd/{{alsa_device or 'default'}})
GitHub
ix/pkgs/etc/services/runit/script/ix.sh at main · pg83/ix
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
👍11🤣2🤔1
Про первый хак (в хорошем смысле этого слова).
На уроках в школе мы проходили штуку под названием "исполнитель робот", питона тогда еще не было.
Более современная версия это шляпы - https://www.sites.google.com/site/sredaprogrammirovaniakumir/ispolnitel-robot
И я помню, учитель дал нам такую задачу: поле закрашено в два цвета, черный, и белый. Надо было пройтись по полю, и перекрасить его - белые клетки должны были стать черными, и наоборот.
Задача была с подвохом, потому что:
* Переменных не было. Был, условно говоря, getcolor(), setcolor(), move(left,...)
* На тот момент мы умели в цикл, и в ветвление, но в ветвление мы не умели в "else" clause.
Поэтому все наши программы были устроены примерно так:
Так вот, хак, который пришел мне в голову - выйти за пределы белого и черного цветов:
На уроках в школе мы проходили штуку под названием "исполнитель робот", питона тогда еще не было.
Более современная версия это шляпы - https://www.sites.google.com/site/sredaprogrammirovaniakumir/ispolnitel-robot
И я помню, учитель дал нам такую задачу: поле закрашено в два цвета, черный, и белый. Надо было пройтись по полю, и перекрасить его - белые клетки должны были стать черными, и наоборот.
Задача была с подвохом, потому что:
* Переменных не было. Был, условно говоря, getcolor(), setcolor(), move(left,...)
* На тот момент мы умели в цикл, и в ветвление, но в ветвление мы не умели в "else" clause.
Поэтому все наши программы были устроены примерно так:
for (i = 0; i < 10; ++i) {
if (get() == 0) {set(1)}
if (get() == 1) {set(0)}
moveright();
}
Понятно, что это приводило к тому, что все поле оказывалось закрашено в один цвет, а про else мы просто не знали.Так вот, хак, который пришел мне в голову - выйти за пределы белого и черного цветов:
for (i = 0; i < 10; ++i) {
if (get() == 0) {set('синий')}
moveright();
}
for (i = 0; i < 10; ++i) {
if (get() == 1) {set(0)}
moveleft();
}
for (i = 0; i < 10; ++i) {
if (get() == 'синий') {set(1)}
moveright();
}
Учитель, конечно, расстроился, что я ему обломал всю малину, сказал, что "решение неверное", потому что "откуда ты этот синий вообще взял", я, в очередной раз, убедился, что все взрослые - идиоты (с возрастом это трансформировалось в убеждение, что, в целом, вокруг одни идиоты, да), и с тех пор очень люблю слушать, как мне про работающие решения рассказывают, по каким же причинам они "плохие", или "неверны".🔥32😁20👍5👎2💩2
https://www.hillelwayne.com/post/np-hard/
Текст про мои любимые #sat солверы. #Z3 (для связности)
Интересная мысль, которую я раньше не думал:
"Of course life isn’t that easy and randomly generated SAT problems tend to be intractable.4 But a lot of industrial problems map to the subset of SAT problems that are tractable (why this is is an open question), meaning you can some pretty big gains from making fast SAT solvers."
Хороший же вопрос - почему, несмотря на то, что средняя задача для SAT быстро не решается, многие практические задачи решаются быстро?
Текст про мои любимые #sat солверы. #Z3 (для связности)
Интересная мысль, которую я раньше не думал:
"Of course life isn’t that easy and randomly generated SAT problems tend to be intractable.4 But a lot of industrial problems map to the subset of SAT problems that are tractable (why this is is an open question), meaning you can some pretty big gains from making fast SAT solvers."
Хороший же вопрос - почему, несмотря на то, что средняя задача для SAT быстро не решается, многие практические задачи решаются быстро?
Hillel Wayne
NP-Complete isn't (always) Hard
A common assumption I see on the ‘net is that NP-complete problems are impossible to solve. I recently read that dependency management in Python is hard because package resolution is NP-complete. This is true in principle, but the reality is more complicated.…
👍13🔥2🤡2