LINUX.ORG.RU

Избранные сообщения x86-

Как прекрасен юникс-вей в 2020-х...

Форум — Talks

…не зря Майкрософт еще в 80-х хотела с ДОСа мигрировать на Юникс. Но не вышло у пацанов, не фартануло.

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

Большая часть действий делается через тупой GUI, в котором надо лазить по меню и натыкивать галки. Если нужно изменить конфиг, проверить и в случае чего вернуть как было, или протестировать разные варианты, то сидишь и надрачиваешь мышь. Система была рассчитана на людей, которые не могут выразить команду высшим достижением эволюции: человеческим языком.

Некоторые вещи вообще только через реестр. Ну сам реестр это отдельная история. Никакого вам аналога diff, meld, невозможно без дебильных приседаний с экспортом-импортом в текстовый файлик положить конфигурацию в git. Спасибо, хоть экспорт-импорт приделать не забыли. (В этом месте я вернулся сюда из абзаца, в котором писал про кодировки, и еще раз напишу: спасибо! От этих … специалистов можно было бы вполне ожидать, что и этого не будет.)

Система всё время ставит палки в колеса, если нужно часть действий выполнить от имени администратора. Типа, запускаю ФМ с полными правами админа. Создаю в нём файл. Открываю его в Notepad++ — а всё, Notepad++ уже работает не с полными правами админа. Может это, конечно, баг самого NPP, я хз.

Интерфейсы для работы с правами доступа находятся глубоко в категории «рисовал программист» и не обновлялись со времён NT. Там под виндой даже не столько сама система прав доступа сложная, сколько GUI к ней убогий.

И в целом многие интерфейсы сделаны так, что худшим образчикам из Linux и не снилось. Типа прокрутки гигантских списков в окошке фиксированного размера, в который влазит штук пять строк.

Чтобы сделать аналог линуксового «запуск фиксированной команды через sudo без пароля», нужно добавлять задание в тамошний аналог крон!. А чтобы сделать аналог «запуск фиксированной команды через sudo без пароля, но только для конкретной группы пользователей», я вообще не знаю, что делать. Тут моих навыков гуглёжки не хватило.

Описания системных сервисов переведены на русский, такое впечатление, что машинным надмозгом. А описания сторонних сервисов часто вообще не заполнены. Документации на это тоже, понятно, часто нет.

Если ты хочешь взять обычный Блокнот и написать в нём cmd-скрипт, то хрен там ночевал - Блокнот сохраняет файлы в кодировке 1251, а запускается скрипт в кодировке 866!!!! КАКОГО ХРЕНА?!

А если ты берешь весь из себя такой знаменитый Notepad++ с поддержкой кодировок и хочешь перекодировать уже написанный файл, то он не умеет конвертировать между этими кодировками!

Если в системе что-то сломалось, то хрен ты откатишь пакет для теста, нет в ней ни пакетов, ни внятной модели использования файловой системы. Всё навалено кучами легаси-хлама. Внутри папки system32 (которая теперь в целях совместимости теперь навечно будет system32, будь там под капотом хоть 128 бит в регистрах) вперемешку валяются драйвера, пользовательские библиотеки, конфиги, куски интерфейса и чёрт знает что. При этом есть еще такой смешной момент, что несмотря на кучи легаси-винегрета, стабильных расположений путей в ней тоже нет. Например, расположение папки с содержимым меню Пуск переезжало с места на место в каждой (!) крупной версии винды.

Когда что-то гуглишь по вопросам системной конфигурации, обычно попадаешь или на ВИО, где отвечающий тупее вопрощающего, или на официальные места поддержки, где ответ чаще всего «такая штука в Windows не поддерживается, но вы можете попробовать самостоятельно станцевать в гамаке на лыжах», или на поисковый спам.

Эта шляпа еще и на HDD стояла, а я уже забыл, что такое 64-битная винда на HDD. Это ад и израиль, сраный лагодром с загрузками по 5 минут, во время которых пытаются просраться несколько десятков системных сервисов и еще куча говнокода в пользовательском сеансе. И пока они не просрутся, Проводник висит, и весь гуй вместе с ним. Да по сравнению с этим что systemd, что до-systemd-шная баше-лапша - просто вершины архитектуры и топ производительности.

Кен Томпсон, Деннис Ритчи, Ричард Столлман, Линус Торвальдс, и вся Red Hat целиком, и все остальные причастные к Линуксу, и еще разработчики всех BSD, и даже почившая Sun Microsystems с Солярой, СПАСИБО вам всем! Что мы имеем технологичную, конфигурируемую, понятную ОС, и даже целое множество разных ОС. И не привязаны к этой жалкой пародии на OpenVMS, мутировавшей на отравленных землях MS-DOS-а, и по какой-то злой шутке судьбы дожившей до 2020-х!

…уф. Выдохнул.

 , ,

wandrien
()

TGA + RLE + Gimp = не понимаю

Форум — Development

Суть вот две картинки из 4х пикселей RGB порядок с лева на право с верху вниз

  • б белый
  • ч чёрный
[б][ч]
[ч][б]
xxd -g 1 norle.tga;#картинка без RLE
00000000: 00 00 02 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 ff ff ff 00 00 00 00 00 00 ff ff ff 00 00  . ..............
00000020: 00 00 00 00 00 00 54 52 55 45 56 49 53 49 4f 4e  ......TRUEVISION
00000030: 2d 58 46 49 4c 45 2e 00                          -XFILE..

xxd -g 1 rle.tga#картинка с RLE
00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff  . ..............
00000020: 00 00 00 00 00 00 00 00 54 52 55 45 56 49 53 49  ........TRUEVISI
00000030: 4f 4e 2d 58 46 49 4c 45 2e 00                    ON-XFILE..

Тут

00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20

Это TGA заголовок где третий байт 02 указывает что это TRUE COLOR NO RLE. А 0a что это TRUE COLOR + RLE Далее 11+12 это размеры по икс, а 13-14 размеры по y 2x2 пикселя итого 4 я великий математик

18 это битность цвета равная (R=8+G=8+B=8) = 24 бита или 3 байта на блок данных которые будет кодировать RLE.

Далее 20 это солянка из бит в байте, тут указывается что данные идут с лева на право с верху в низ. Всё понятно?

Далее следующий байт в без RLE картинке это собсна и есть данные цвета вот они

00000010: 18 20 ff ff ff  00 00 00   00 00 00  ff ff ff
          *  * [R  G  B] [R  G  B ] [R  G  B ][ R  G  B]

Всё что дальше не важно.

А вот теже данные но типа с RLE

00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff
          *  * RLE [ DATA ] ?????????????????????????????
                           [ DATA? ][RLE][DATA ] [ DATA ]

Тут сразу за 0x20 идёт 01 что как бы значит что ага у нас один блок данных из 24 бит или 3ёх байт

01 ff ff ff
RLE BLOCK [RLE_LEN=01 RLE_DATA= ff ff ff

Так как данные чередуются то они кодируются от 1 до 127, если есть нечередующийся блок то он кодируется от -1 до -127, при декодировании достаточно убрать знаковый бит и получить число. Но тут этого не надо это так для справки если я сам правильно понял.

Ну так вот ребята а дельше идёт 00 00 00 эммм ну ОК если у нас следующий блок за 01 ff ff ff равен нулю то эмм значит он и есть часть блока и надо его тоже добить нулями до 3 байт, ладно, прыгаем вперёд уже не на 4 байта (RLE=1+COLOR_BITS=3) а на просто 3. И читаем 01 00 00 00 ага у нас один блок данных из трёх нулевых байт. Сразу вопрос какого хрена это и предыдущее просто не 02 00 00 00 тоесть не 2 блока по 3 нулевых байта тоесть 6 нулевых? А вместо этого чехорда. Ок идём дальше, а там ff ff ff 00 мы знаем размер картинки уже это 2x2 и это последний 24 битный блок, но мы в месте первого ff ожидаем RLE значение последовательности. Короче я чего то не понимаю ни хе ра. Картинка тривиальная из 4х пикселей там где RLE по сути избыточен, но если он задан данные должены обрабатываться именно как RLE последовательность. Только вот хрень какато…. И да на просто чёрной или белой картинке такие же приколы хотя там то всё должно быть вообще по красоте, но нет там тоже есть места где 00 00 00 вылазят на който хер отдельно вместо кодирования вместе с другими данными.

Да я в курсе что xxd показывает мне например 0x86 как длину последовательности 134 блока по 3 байта (3=R8G8B8), но на деле это выше 127 значит надо убрать знаковый бит и получить длину последовательности 6 блоков по 3 байта (3=R8G8B8) Но в примере этого нет так как и так разбор как я всё это понимаю растянулся.

Ну так вот друзья, чё за жопка? Что я не так понимаю? Можете сами взять картинку побольше 8на8 например, нарисовать на одной половине просто цветом одим, а на второй попеременным там или как удобно сохранить как c RLE так и без. Посмотреть на обе через xxd и увидеть приколы, как оно закодировано. Тут так, а тут сяк.

Бррррррррр, https://www.youtube.com/watch?v=vlUe8ciyh4w

P.S. Я хрен знает какие теги ставить вычистили всё блин rle, tga поставить не даёт. Кто там все теги вычистил и нахрена?

ЧЯДНТ?

UDP: Результат работ тут https://github.com/orangeduck/Corange/pull/73 кому надо

 , , , ,

LINUX-ORG-RU
()

Технодеградация.

Форум — Talks

Пытаясь понять в очередной раз глубинный смысл дизайна инстаграмм, я обратил внимание на один из его атрибутов - бесконечную ленту прокрутки.

И меня вдруг осенило, ведь как и тогда, в 90-х во времена web 1.0 так и здесь на уютном лоре, пользователю предоставляется непререкаемое базовое право, листать страницы и выбирать нужную дату (https://www.linux.org.ru/forum/talks/archive), смотреть одним кликом самую последнюю страницу или самую первую. Абсолютная прозрачность информации.

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

Ещё один кусочек антиутопии, отдалённое эхо цифрового рабства, где люди в том или ином виде, будут обречены на скитание по этим лабиринтам и туннелям бесконечных лент и непрекращающегося автопроигрывания, молясь на великого технобога.

 , ,

cheetah111v
()

Embedded C: вопросы на собеседованиях

Форум — Development

Я знаю, на лоре много сишников и ембедщиков. А проводящих собеседования на работу еще больше.

Так вот, уважаемые отбиральщики мужей у жен специалистов на должность embedded C developer, что вы обычно на собесах спрашиваете?

Особенно интересны вопросы по Сишке с намеком на завалить кандидата — неочевидные или на хорошее знание стандарта.

Знаю, в гугле такого много, но хочется от живых людей примеры, а не от индусов, пиарящих себя и свой сайт.

 , ,

untitl3d
()

Эталонный hello world проект на Расте

Форум — Talks

не могу не поделиться с глубокоуважаемым лоровским коммюнити

https://github.com/mTvare6/hello-world.rs

Перемещено xaizek из development

 ,

Harald
()

посоветуйте IDE для kernel

Форум — Development

 ,

nanosecond
()

Сериализация данных в plain C

Форум — Development

Как нынче модно в plain C выполнять сериализацию/десериализацию данных?

Ну то есть у меня какая-то структура, я хочу её записать в файл/отправить по сети. Значит мне нужно:

- Убрать выравнивание

- Переставить байтики под endiness (если не совпадает с endiness сериализации)

- Сделать то же самое для вложенных структур

- Вытащить динамические массивы (в самой структуре представлены двумя полями - длина и первый элемент) из кучи и положить их линейно с остальными полями

То есть прожиточный минимум - это либа, которая работает с байтовым буфером и имеет функции вида buffer_write_int8/buffer_write_int16/buffer_write_float32/buffer_read_int32/etc. Но если бы было можно пропарсить заголовочник с используемыми структурами (для меня ок, если будет требование все сериализуемые структуры держать в отдельных заголовочниках) и сгенерировать сериализаторы, либо наоборот сгенерировать структуры и сериазаторы из описания в каком-то другом формате, то было бы вообще шикарно.

Что я не хочу? Не хочу никакого оверхеда и метаинформации в сериализованных данных. Если я сериализую структуру из 3 int32_t, значит выходной буфер должен иметь размер строго 12 байт. Максимум можно опциональную фичу, отдельно включаемую для определённых структур, чтобы перед структурой писался её размер (типа чтобы при попытке десериализации старой версии структуры, новые поля проинициализировались нулями - подразумевается, что поля могут быть добавлены только в конец). Но я и без неё отлично проживу. И обязательно опциональная фича (потому что некоторые структуры точно не изменятся).

Так что всякие Protobuf не подходят, потому что помимо самих данных пишут всякую метаинформацию.

Удачный пример такой либы из плюсов - bitsery, но в plain C нет шаблонов и поэтому нужен другой подход к либе (кодогенерация).

 ,

KivApple
()

Радио. Linux. XXI век

Галерея — Скриншоты

Посвящается Дню Радио!

Вот так я использую RTL-SDR для прослушивания радиоэфира. На скрине мы видим замечательную программу GQRX, реализующую программный радиоприемник.

Немного технических деталей. RTL-SDR - это устаревший TV-тюнер, который радиолюбители используют в качестве ЦАП с параметрами 8 бит/14.4 Мгц. Такой ЦАП при желании может захватить сразу все низкочастотные диапазоны - ДВ, СВ, и КВ! Остается только цифровым фильтром выделить из оцифрованного сигнала нужную радиостанцию, что и делают программы типа GQRX или SDRSharp.

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

Итак, что сейчас можно услышать в эфире? В XXI веке можно не только услышать, но и увидеть! SDR программы покажут нам «водопад» - визуализацию радиосигналов в выбранном диапазоне.

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

Вещательный диапазон 31 метр, лес станций, в основном это радио Китая:

https://imgur.com/wLwkfJe

Вещательный диапазон 25 метров:

https://imgur.com/ILRDunL

Любительский 40 метров, телеграфный и «цифровой» участки:

https://imgur.com/nsY6RYL

Тоненькие прерывистые линии - это станции, работающие морзянкой. Справа гремит FT8 - цифровая связь, которая никогда не затихает. А в середине - знаменитая танцпольная частота 7.055 Мгц, где днем и ночью идут с… поры на политические темы. Ну вы поняли.

Для того чтобы декодировать FT8 сигналы, я использую другую программу - WSJTX, вот как это выглядит:

https://imgur.com/txYPxYh

Справа - декодированные позывные станций, которые связываются друг с другом. В этом виде связи можно только передать свой позывной и уровень сигнала «собеседника». Но связь дико пробивная, на минимальной мощности можно связаться на огромные расстояния.

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

https://disk.yandex.by/d/AjqPqCA2LDe8UQ

«Скрепноватая» тема передачи вначале - это радио Китая, русская служба, во всей красе. В конце - любительский эфир, SSB модуляция, диапазон 40 метров.

Вот такое оно, радио 21 века! С Днем Радио всех! 73!

>>> Просмотр (1366x768, 935 Kb)

 ,

James_Holden
()

удалёнка, подработка - Разработчик опенсорсных прошивок на Си для IoT, от $12 до $25 в час

Форум — Job

Польская компания LPN Plant (братья 3mdeb) ищет талантливых разработчиков опенсорсных прошивок на Си для IoT !

Всем известно, что значительная часть современного IoT - то ещё решето, причём зачастую проприетарное. Поэтому LPN Plant хочет вместе с вами создавать по-настоящему свободный, опенсорсный и защищённый IoT которым вам не стыдно было бы пользоваться и самому! Кроме умения прогать на Си, вам потребуются базовые знания работы с микроконтроллерами и железом, чтобы эффективно использовать их возможности при работе со следующими технологиями:

Zephyr Project, Mbed OS, Xen, Linux, Yocto, OpenWrt, WiFi, Bluetooth, OpenThread, LoRa

Доступные вакансии на странице LPN Plant - Careers - по своей сути похожи на эту 3mdeb'овскую которую я уже размещал в Job, но с дополнительным уклоном к IoT и сетевой составляющей. И если вы хотите удалённо поработать над опенсорсным IoT, то:

  • Составьте няшное резюме на английском: с примерным количеством свободных часов в неделю и зарплатой от $12 до $25 соответствующую вашим умениям,
  • Отправьте его моему другу Mike Banon на - mikebdp2 [at] gmail [dot] com - оно попадёт прямиком на стол руководству и обязательно будет рассмотрено

 , , , ,

SakuraKun
()