commit -m "better"
3.77K subscribers
1.29K photos
176 videos
3 files
2.75K links
just random thoughts
Download Telegram
https://ladybird.org/newsletter/2024-09-30/

https://www.opennet.ru/opennews/art.shtml?num=61970

#ladybird

Гля чо пишут,

"Networking with curl

We’ve replaced our in-house HTTPS implementation with the curl library. This change has dramatically improved both compatibility and performance (it’s often more than 5x faster), allowing us to load more websites faster than ever before!" - проект не велосипедит, это хорошо. Знали бы вы, как бесит в webkitgtk сраный glib-networking.

И

"Web Platform Tests

We’ve made significant progress in Web Platform Test (WPT) coverage this month. The number of test timeouts has been reduced from 5,798 to 2,970, and switching to curl for networking has cut down the full test run time from 7 hours to under 5 hours.

In addition, we’ve fixed a long-standing issue with reftest image capture, improving our test accuracy. We’re now passing 588,982 more subtests compared to last month, bringing the total to 1,510,615 . You can track our progress via our new WPT dashboard or check out the results on wpt.fyi"

Однажды я сказал, что Rust совершенно не подходит для разработки браузера, вот, в копилку доказательств, как маленькая команда энтузиастов может обойти большой и сложный проект.
🔥12🤡4💩31
Forwarded from на хуторе please Dick Аньки (Zoibana)
😁48😢8🤔3🤝3
#rant

Многие инструменты, которые мы используем - они как swiss army knife.

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

Надо знать и понимать используемые инструменты!
👍271
commit -m "better"
Перешел с unbound на dnsmasq, по советам коллег.
Будни #bootstrap

Поменял #dnsmasq на https://github.com/AdguardTeam/dnsproxy #dnsproxy

Потому что:

* На нормальном go, а не на богомерзкой сишке. Вообще, по мере того, как я заменяю дырявые программы на C, на что-то более безопасное, начинаю спать спокойнее.

* Почти полностью повторяет #dnsmasq, если почитать их readme, то там прямо так и написано, что они целятся в его ЦА. Функциональность, аргументы cli - прямо все цельнопижжено с dnsmasq.

* Рекомендуется лучшими собаководами openwrt, для всяких там DoH - https://openwrt.org/docs/guide-user/services/dns/dot_dnsmasq_dnsproxy Я жопа ленивая, думать мне самому обычно лень, а тут все готовое.

* Нормально поддерживает DoH, TLS, и прочие новомодные dns штуки. Мне это, внезапно, стало важно, в контексте борьбы с #РКН.

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

Всячески рекомендую, короче.
👍22
https://blog.cloudflare.com/patent-troll-sable-pays-up/

Сказ о том, как Cloudflare победил патентного тролля:

"In the end, Sable agreed to pay Cloudflare $225,000, grant Cloudflare a royalty-free license to its entire patent portfolio, and to dedicate its patents to the public, ensuring that Sable can never again assert them against another company"
🥰19🔥61
Forwarded from Programmer memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁207🔥5💩2👍1
Будни #bootstrap

https://www.phoronix.com/news/WebKitGTK-2.46-Skia

WebKit перешел на #skia (https://t.me/itpgchannel/2047), для рендеринга.

Перешел и перешел, дело хорошее.

Но он сделал это криво!

Дело в том, что они переписывают сборку внешних компонент на cmake, и вендорят их к себе.

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

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

Мне настолько надоело чинить это "красиво", что я соорудил очередную #herobora прибегнул к ковровым бомбардировкам - сказал, что недостающие символы надо разрезолвить в вызов abort() - https://github.com/pg83/ix/blob/main/pkgs/bin/epiphany/4/ix.sh#L28-L41 (там какие-то запчасти для отладки).

Это работает в предположении, что эти символы действительно недостижимы, а если достижимы, то получим падение в runtime (которое так и не случилось).

Мораль? Лучше не вендорить зависимости, особенно если у тебя нет команды из 5 человек, которые бы это вылизывали для твоей монорепки.
👍12💯4😱3🐳1🆒1
commit -m "better"
You guys are freaked out because I'm moving quickly and you don't have visibility into my own internal process, that's all
https://www.phoronix.com/news/Bcachefs-Fixes-Two-Choices

Вечер перестает быть томным, Linux ставит вопрос ребром - или #Kent подчинится общим правилам, или с вещами на выход:

"You're a smart person. I feel like I've given you enough hints. Why don't you sit back and think about it, and let's make it clear: you have exactly two choices here:

(a) play better with others

(b) take your toy and go home

Those are the choices"
👍11🤡10😁53🐳3🤔1
https://www.opennet.ru/opennews/art.shtml?num=61988

Сама по себе новость не очень интересная, но вот глаз зацепился за

"Фоновый процесс переведён с использования GObject-обвязки GUsb на прямое обращение к libusb и sysfs, что дало возможность вынести эмуляцию устройств в библиотеку libfwupdplugin и реализовать эмуляцию обновления прошивок на фиктивных устройствах hidraw и nvme по аналогии с эмуляцией с использованием фиктивных USB-устройств. Подобная возможность позволила реализовать дополнительные тесты, выявляющие проблемы с обновлением прошивок, возникающие после внесения в fwupd тех или иных изменений"

и

"Из зависимостей исключена библиотека GUdev, предоставляющая GObject-обвязки над libudev. Вместо GUdev процессом fwupd теперь создаётся netlink-сокет для разбора событий udev, передаваемых через netlink. Изменение привело к значительному сокращению потребления памяти и снижению нагрузки на CPU при запуске и в процессе работы, а также упростило добавление поддержки ueventd, которая в будущем позволит реализовать в fwupd поддержку платформы Android"

Ну вы поняли, да?

Проект выкинул зависимости на всякое glib/gnome/gobject gовно, и получил измеримый профит. Как по памяти, так и по перфу.

Библиотеки от проекта GNOME, которые написаны в парадигме gobject - это говно лютое, там на каждый чих по 10 аллокаций памяти, и линейный перебор по куче связанных списков.

А все потому, что в С еще не изобрели хеш-таблицу.
👍17😁9🐳3🤡2
Forwarded from The After Times
😁61👍2
Forwarded from на хуторе please Dick Аньки (Zoibana)
27😁11🔥6💯5👍1
Forwarded from The After Times
😁37👍6💯5🐳3🔥1😱1
Forwarded from I’m CTO, bitch
Я бы не стал спорить с Чаком.
#база
💯14😱7💩3👍1🔥1🐳1
commit -m "better"
А у меня ее нет, зато есть /var/tmp, с разделением по сессиям.
Будни #bootstrap

Я как-то писал про то, что стараюсь делать так, чтобы все программы уважали ${#TMPDIR} - https://t.me/itpgchannel/757

Сейчас я пошел еще дальше, и удалил системную /var/tmp - https://github.com/pg83/ix/commit/ff64cbcb480c9f0557fccce7de3dd9a51ae3aed3#diff-3814a46e233f2ebc67e3992e03a9eaf741405849ee94ff7de2506582e02e1f1bL110.

Да, у меня теперь нет этой помойки под названием "/tmp".

Каждый процесс в моей системе - он либо принадлежит какому-то сервису, или сессии. Каждая сессия тоже принадлежит какому-то сервису, поэтому, можно сказать, что любой процесс в моей системе принадлежит какому-то сервису. Есть, конечно, исключение - это ранние моменты инициализации, до запуска супервизора, но они и не гадят в /tmp.

Сервис у меня - это вполне формализованное понятие, он хранит все свои файлы в /var/run/{{service_name}}/, и нигде больше. В том числе, все сокеты, нужные для взаимодействия с ним.

Поэтому теперь временные папки создаются для каждого сервиса/сессии, и очищаются, когда они заканчиваются - https://github.com/pg83/ix/blob/main/pkgs/bin/vt/runit/scripts/ix.sh#L9-L13.

Это позволило очищать всякие остатки за завершившимися сессиями, ну и вообще, стало приятнее!
👍29🔥15😁2🆒2
А вы говорите, что атаки Томпсона (https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf) IRL не бывает!

https://rodarmor.com/blog/whence-newline/
👍3
offtop: интересное про bootstrap

https://twitter.com/mitsuhiko/status/1843221230209597666
😁13👍5🤔5🤯3😱3🆒2
Табель учёта рабочего времени возрастом ~ 3500 лет.

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

Например, 2-го месяца лета, 14-го дня, рабочий по имени Пеннуб отсутствовал на работе, потому что бальзамировал усопшую сестру.

Некоторые из причин:

1. Выпивка с Хонсу
2. Кровотечение у дочери.
3. Варка пива
4. Строит свой дом
5. Приготовление лекарства для жены писца
6. Страдание глазом (?)
7. Бальзамирует родственника
8. Жена истекает кровью.
9. Укус скорпиона
10. У него пир
11. Подношение богу
😁21👍12🎉32🔥1