LINUX.ORG.RU

Сообщения ruzisufaka

 

Как часто вы создаете стандарты? Привлекаете ли вы внимание санитаров?

Форум — Talks

Все начиналось с того, что я однажды родилс^Wрешил засунуть реальный город в GTA: San Andreas. Нормальное такое желание школьника. А собственно, почему бы и нет, ведь когда-то его выполнять надо?

Задача представлялась как нечто достаточно простое: надо просто натырить данных с OpenStreetsMap, присыпать спутниковыми снимками GoogleMaps, добавить фоточек (любых, хоть из ВТентакля) как источник текстур и в принципе все необходимые данные есть. Полигончики домов выдавливаем на нужное количество этажей, дороги рисуем вдоль домиков, все что между дорогой и домиком - газоны и клумбы. В принципе, все просто, можно заморочиться и написать процедурный генератор городов. В принципе, ничего сложного. К тому же это уже не однократно было сделано:

Есть и другие авторы и изделия народного хозяйства на https://wiki.openstreetmap.org/wiki/Simple_3D_Buildings, как с большей, так и не меньшей степенью всратости, а то и степенью мертвости. OSM-3D не вырос дальше интерфейса для автомобильных навигаторов 2007-го года, OSM2World выглядит как игрушка под msdos, но умеет кушать гигабайты памяти, местами f4map показывает что-то веселое, но это скорее благодаря багам реализации, а не полноте данных. Я же хочу город уровня GTA! Хотя бы GTA San Andreas, которая вышла в 2004 году! Мне что, самому создавать город?

Городов я раньше не создавал. Была попытка стать ландшафтным дизайнером, причем не одна, но складывать байты получалось лучше. А города - вообще какая-то закрытая тема, вроде бы никто не учит их создавать. Хотя бы в рамках игры. Потому решил начать с поиска существующих стандартов: к примеру, как часто расставлять фонари вдоль дорог? Нашелся ГОСТ 32947-2014 "Опоры стационарного электрического освещения", правда быстро выяснилось, что большинство ГОСТов в этой стране носят рекомендательный характер, так как дядя Вася поставит опору освещения там, где захочет, или где ему укажет прораб, и сделать генератор столбов на одних только правилах из ГОСТа не получится. Потом были найдены ГОСТ 33475-2015, ГОСТ Р 51256-2018, ГОСТ Р 58653-2019 и другие матерные слова.

Но вернемся к столбам освещения. Столбы освещения очень важны: это источники света для игровой сцены (прелайта в случае San Andreas), это то, что указывает на наличие дороги с большого расстояния, это тот самый высокочастотный городской шум, так приятный глазу, к тому же в них весело врезаться, когда катаешься по городу. Какие у нас есть данные и какие данные нам могут понадобиться? В вики проекта OSM есть следующие статьи:

Отсюда мы можем, если нам сильно повезет, вытащить информацию не только о столбе, но даже о его моделе и изготовителе! Причем можно узнать модель как самого абажура, так и самой лампочки, все это есть в OSM! Хватит ли мне этих данных? Конечно же нет! Так как я собрался расставлять фонари вдоль дорог, то мне нужны какие-то взаимосвязи именно с дорогами, чтобы полу-автоматически расставить фонари. А этих связей не только нет, но они и запрещены, разрешены только точечные данные, без привязки к чему-либо.

Далее, у меня в городе стоят красивые железобетонные столбы, с круглым сечением, на них есть крепежи для всяких камер и флагштоков, а на самой вершине - фонарь, явно поставленный туда штатно. Ближе к сельской местности же можно заметить, как фонари прикручены проволкой к 2 железобетонным ногам, которые обычно используют электрики, а то и вообще к деревянной опоре. Есть ли эти данные в OSM? В принципе да, есть lamp_mount, но почти всегда это будет lamp_mount=bent_mast или lamp_mount=straight_mast. Мне опять нехватает данных. тык - тут вообще можно найти все виды столбов

Подумав, решил идти 2 возможными путями:

  1. Взять данные из OSM как некие legacy-наметки, поверх которых строить свой собственный нескучный мирок. К примеру, берем дорогу из OSM, используем ее только как референс, как некую сущность, которая существует только в редакторе, но которая нигде не видна и никак не рендерится. И уже опираясь на эту сущность начинаем богато набрасывать с лопаты свои нескучные слои и даже полигоны: типы столбов, фонарей, ширина обочины, есть на дороге поребрики или заборчики, наличие деревьев, люков и даже тротуаров. Есть заборчик вдоль тротуара? Задать его как отношение к невидимой абстрактной дороге, прописав начало-конец-смещение относительно референсной дороги. Для осуществления этой деятельности мне не помешали бы государственные гранты и пару-тройку научных или псевдонаучных институтов в подчинение. И главное, не привлекать внимание санитаров.

  2. Взять саму игру (GTA San Andreas), за последние 20 лет игра отревершена вдоль и поперек, все внутренние форматы документированы и для них написаны всевозможные тулы. Из самой игры или из ее ресурсов вытащить данные или сымитировать процессы, которые можно сделать в реальной жизни. К примеру, в реальной жизни мы можем снять панораму местности (как это делает Google StreetView), такую же панораму можно снять и в игре, я как раз являюсь автором https://github.com/LudmilaPetrovna/panorama-gtasa/ (работоспособность сейчас не гарантирована). Добавить к таким панорамам снимки с виртуального же спутника, нарисовать виртуальные генпланы и другие средства, которые есть в реальности. И потом начать мапить, т.е. «оцифровывать» виртуальный игровой город так, словно он реальный. Затем, попытаться то, что мы намапили, отрендерить в 3D, чтобы это было максимально аутентично. Желательно так, чтобы это было пиксель-в-пиксель идентично. Так как у нас изначально игровые данные, то нам не нужны дорогие лидары, сверхточные дальномеры и фотоаппараты за миллионы даляров, все данные у нас уже есть, причем с точностью «до миллиметра». Все кирпичи, деревца и грязь на дорогах у нас уже стандартные. Остается все это дело классифицировать и сделать нескучный язык разметки, в который потом размечать реальный город с такой же точностью. По идее, тут бы помогли эти ваши нейросети, но нынче для запуска хелловорлда нужно иметь пару датацентров, а у меня их нет. Вроде бы этот способ более безопасен и интересен, но санитары тоже могут материализоваться.

Так вот, Лор. Что мне делать?

 , , , ,

ruzisufaka
()

Что вы будете искать первым делом, оказавшись в другой стране?

Форум — Talks

Допустим, ты случайно оказался в незнакомой стране. Что тебе нужно будет первым делом?

Мой личный список:

  • Источники воды
  • Халявный вайфай
  • Медицинские учереждения, целители или хотя бы аптеки
  • Полиция и их заменители, возможно посольства стран
  • Церкви и благотворительные организации (покормят)

Для чего мне это? В OpenStreetMaps есть куча тегов, по которым можно было бы сформировать себе личный путеводитель по галакти^Wпланете земля, ну или хотя бы знать, куда пойти в той или иной стране, хотя бы в первое время.

Есть правда в этом нюанс: как и во всем попенсорсе, данные несколько хаотичны. К примеру, доступ к интернетам может выглядеть как-то так:

amenity=internet_cafe
amenity=wifi
amenity=wifihotspot
internet=yes
shop=internet_cafe

И это далеко не предел. Я лично для себя подготовил список медиков, полиции, пристаней (очень мало получилось), морские сооружения, названия городов и населенных пунктов. Само собой, мои списки далеко не идеальны, так как среди медиков оказались дантисты и целители, которых в средней Азии какое-то просто зашкаливающее количество, так и всякие пристани, которых ненормальное количество в США.

Употреблять планирую вместе с этим: https://rutracker.org/forum/viewtopic.php?t=6420592 - оффлайновые Google Maps всей планеты

Так как появилось желание сделать из этого приложение под Ведроид (или оффтопик), то подумалось, что можно добавить еще слоев. Чем бы еще это можно было пополнить?

 ,

ruzisufaka
()

Хакабельный фотоаппарат для линуксоида в 2024

Форум — Linux-hardware

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

Главные критерии:

  • Хакабельность прошивки (не обязательно Linux, можно какие-то слитые исходники и васянские прошивки, да хоть скрипты на lua)
  • Не дороже 10000р
  • Максимальный размер матрицы за такие деньги

Я было начал писать желания, типа «возможность подключить SATA-интерфейс или SSD-диски», но понятно, что за такой ценник такого желать из коробки нельзя. А если что-то допаять к аппарату?


Дополнение 1

Вообще, идеальным фотоаппаратом для меня является ESP32Cam с камерой OV2640, ну или лежащий рядом с ним в коробочке STM32H7B0VBT6 с камерой OV7725. Полная свобода действий, ограниченная только интерфейсами OV2640/OV7725. На худой конец можно взять Android-телефон и надеяться, что мне будет достаточно API.

Проблема в том, что я хочу нацепить на камеру длиннофокусный объектив (например, мто 10, весом в 3.6кг). Резьба у него 42мм, мне сказали что кроп-фактор на OV2640 будет порядка х10 и снимать такой матрицей - занятие странное. Потому было решено купить какой-то дерьмовый фотик исключительно для того, чтобы подружить его с объективом. По сути мне нужна просто большая матрица, разрешения мне хватит порядка 320х240.

Естественно, у меня все не как у людей и снимать фоточки я не хочу, вместо этого я хочу снимать панорамы с долгой выдержкой. Оказалось, что все эти ваши Сосони/Сапопы, мониторят время включения и через полчаса говорят «ой, я перегрелось» и выключаются. Даже если к камере приделать водяное охлаждение, все равно оно так считает. Альтернативные прошивки вроде МеджикЛантерна это подебить не смогли, они предлагают более удобную перезагрузку с продолжением записи. Можно ли поставить нестандартное разрешение фотографии порядка 320x240? Во многих камерах нету даже функции таймлапса. Погружаться в мир проприетарщины и маркетинговых ограничений, которые элементарно делаются софтом - это больно, потому вот и ищу максимально хакабельную камеру для своих утех.

Увы, у МаджикЛантерна https://builds.magiclantern.fm/ не такой уж и большой выбор железа куда оно ставится, к тому же оно работает только с процессорами Digic, а значит только с Canon. А что там у сосони, олимпусов и прочих никонов - совершенно непонятно.

 , , , ,

ruzisufaka
()

Как разобраться в формате файла? (было: Как заинструментировать код на Си)

Форум — Development

Пост обновлен, предыдущее название: «Как заинструментировать код на Си и понять что он делает? Реверсинг формата файла»


Вступление

Есть какой-то файл и я хочу понять его внутреннее устройство. В качестве примера, возмем файл формата PNG, так как он достаточно простой и хорошо документирован. Но далеко не все форматы хорошо документированы, поэтому полагаться только на документацию - нельзя.

Итак, у нас есть какой-то файл формата PNG - что с ним дальше можно сделать? Можно было бы взять готовую библиотеку для чтения данного формата (libpng), но она содержит более 100 000 строк кода, что крайне сложно для понимания.

Я предполагаю, что более наглядным для изучения будет разглядывать такие картинки:

Здесь сразу видны байтики и их значение. По крайней мере, лично мне, такое изучение было бы наиболее близким и понятным. В этом месте можно назвать меня гуманитарием и посоветовать биореактор^Wчтение исходников, но это не так наглядно.

К сожалению, не все форматы файлов так хорошо описаны, как описан формат PNG. Далеко не для всех форматов файлов есть такие картинки и тем более шаблоны для hex-редакторов. И я бы хотел делать такие картинки самостоятельно.


Идея

Я предполагаю, что если для этого формата есть открытая библиотека (libpng), то для него можно написать свою читалку (my_png_reader). В свою очередь, у нашей библиотеки (libpng) могут быть свои зависимости (zlib) и я предполагаю, что нужно будет разобраться и с устройством этой библиотеки тоже.

Само собой, для тестирования, нужно будет собрать некий тестовый датасет (набор png-файлов с разными разрешениями, режимами компрессии, битые файлы). Для этого было бы неплохо использовать утилиты из набора AFL для уменьшения датасета и уменьшения самих исходных данных: https://youtu.be/0dqL6vfPCek (фаззинг файла вместе с ffmpeg)

Вопрос: как бы заинструментировать имеющийся софт (программу, библиотеки), чтобы понять, что такое оно делает с файлом, что внутри и как его вообще читать? Да и вообще, что можно вытащить из подобной затеи?

Например, очень бы хотелось узнать:

  • Сигнатуру файла (\x89PNG в начале файла)
  • Структуру «чанков», что она представляет собой 4 поля: длинна, тип, данные, CRC32
  • Алгоритм расчета CRC32: какая часть данных считается, с заголовком или без, какой полином
  • Какая часть файла пожата zlib, какие части файла просто являются несжатыми массивами
  • Нарисовать какую-то диаграмму, где какой байт чему соответстует, вроде https://i.imgur.com/eLd44xQ.png или https://i.imgur.com/AwpmSxV.png

Я себе это представляю как-то так:

  1. Читаем кусочек файла и помечаем, что это наш файл (перехватываем read/fread, «отравляем» эти участки памяти)
  2. Ставим брейтпоинт на чтение памяти, логгируем, смотрим по map-файлу где мы это читали, желательно размотать стек
  3. По коду уже можно представить, читаем мы float или int16, находимся ли в структурке или еще где. Если мы внутри функции check_file_signature(), то это вообще очевидно. Можно пометить как ручками, так и чем-то вроде IDA.

Зачем? Это поможет в написании файлов-шаблонов для таких программ как https://ide.kaitai.io/ или 010 Editor. Конечно, в идеале запустить на входе PNG-файл, а на выходе получить KSY (формат описания файлов kaitai) или BT (формат для 010 Editor), но понятно, что идеальной документации не будет. Но я стремлюсь именно к этому.

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

Буду благодарен на статьи просто по инструментации сишного кода. Или не только сишного.


Референсы и идеи

  • https://github.com/AFLplusplus/AFLplusplus - отличное средство для фаззинга (пример фаззинга libpng: https://youtu.be/LsdDRat4S0U), но я не очень понимаю как это применить именно к описанию файла. А вот тулзы вроде afl-cmin - чистое золото
  • https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html - Intel PIN
  • Address Sanitizer or ASAN - можно попробовать поиграться с ним и залоггировать доступ к памяти
  • valgrind + lackey - очень многообещающе, но боюсь не осилить
  • Попробовать сделать доступ к страничке PROT_NONE, получить сегфолт, но непонятно как возвращать управление (сделал, но споткнулся на последнем пункте)

 , , , ,

ruzisufaka
()

Как расшифровать раздел ext4

Форум — Admin

С потом и кровью был слит раздел userdata с Android 10 (LineageOS). Ожидался битый раздел, но debugfs говорит что он clean, видимо система успела его демонтировать при отключении:

Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode filetype extent encrypt sparse_super large_file uninit_bg quota
Filesystem flags: unsigned_directory_hash
Default mount options: (none)
Filesystem state: clean <<<<<<<<<<<<<<<<<<<<<
Errors behavior: Remount read-only
Filesystem OS type: Linux
Inode count: 3432448
Block count: 13704952
Reserved block count: 4096
Free blocks: 8182
Free inodes: 3394575
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1024
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512

fsck нашел одну ошибку, но тоже не криминальную:

# fsck -fv /dev/sdd
fsck from util-linux 2.36.1
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Padding at end of inode bitmap is not set. Fix<y>? yes
Error writing file system info: Input/output error

/dev/sdd: ***** FILE SYSTEM WAS MODIFIED *****

(не обращайте внимание на Error writing file, это защита образа от записи, равно как и на FILE SYSTEM WAS MODIFIED - это приворукость авторов fsck)

Все монтируется великолепно без каких-либо ошибок.

Проблема в том, что никуда зайти нельзя, единственное к чему у меня есть доступ, это:

./data/unencrypted
./data/unencrypted/key
./data/unencrypted/key/version
./data/unencrypted/key/secdiscardable
./data/unencrypted/key/stretching
./data/unencrypted/key/keymaster_key_blob
./data/unencrypted/key/encrypted_key
./data/unencrypted/ref
./data/unencrypted/per_boot_ref
Вот так я познаю мир, оказывается и такое вот бывает.

Здесь, как я полагаю, храняться ключи шифрования. Вопрос - как их скормить и кому скормить, чтобы получить полный доступ к тому, что было когда-то /data/data/? Другие разделы тоже сдамплены, ну или что-то похожее на дамп есть.

Есть идея прошить в рекавери TWRP и слить данные через него, но пока ссыкатно, хотелось бы не мучать телефон больше.

 , , , ,

ruzisufaka
()

Как передать файл 500mb-1Gb с linux на win32?

Форум — Admin

Надо передать ОДИН файл с одной машины (под ЖМУ/Linux) на виндовую машину. Передавать неинтерактивно, из скрипта, примерно раз в час, но быстро, на максимальной скорости, в локалке. Но как?

Самба - по идее отличная штука, но на виндовой стороне шары постоянно отваливаются и порой спасает только ребут виндовой машины. Не вариант вообще.

FileZilla на винде + curlftpfs на линукса = не осилил. curlftpfs говорит что смонтировался, но открыть директорию нельзя:

ls: reading directory 'ftp': Input/output error

При попытке что-то записать в директорию, на удаленной машине создается файл весом в 0 байт. В логах ничего подозрительного. Само собой, в mc я могу написать cd ftp://... и все работает. Скорость копирования в mc порядка 54mb/сек

В гугле все советуют поставить openssh в линуксе и коннектится к нему через putty/filezilla и тому подобное. НО МНЕ НАДО НАОБОРОТ, ДОСТУЧАТЬСЯ ДО ВИНДОВОЙ ШАРЫ.

В 5 минутах от того, чтобы под виндой опрашивать smb-шару с линукса и скриптом копировать файл. Если бы был на работе, то так бы и сделал. Но дома так делать мне претит представление о прекрасном.

 , , , ,

ruzisufaka
()

Покритикуйте генератор скринлистов

Форум — Talks

Более месяца прокрастинации и я родил: https://litter.catbox.moe/cj0wkr.jpg

Хотел добавить ссылки вида urn:tiger, но в диком виде таких ссылок не видел, а ed2k вроде как вполне живет и пахнет. Может чего добавить надо? Мне вот только сегодня подсказапи, чтобы я добавил рейтинг с IMDB и постер оттуда.

А может быть поменять шрифты?

UPD: Сделал красивые градиентные рамочки: https://litter.catbox.moe/tv0ddp.png и анимированные скринлисты: https://litter.catbox.moe/0g31gl.avif (пока как тест, даже без рамочек!)

 , ,

ruzisufaka
()

А что у нас является самым дешевым хранилищем информации на 2023-й год?

Форум — Talks

А что у нас является самым дешевым хранилищем информации? По прежнему пленка и стриммеры? Или можно сделать свой жесткий-SSD-диск на sd-картах? Или дешевле покупать флешки-брелки? Или жечь болванки? Облака…???

Скорость доступа не интересует, но за месяц надо прогнать хотя бы 5 терабайт данных. Хотелось бы еще и низкое энергопотребление, потому SSD, которые надо «подзаряжать» сразу идут лесом.

 , , , ,

ruzisufaka
()

Сделал правильный сайт с новостями

Форум — Talks

Как должен выглядеть хороший сайт новостей:

https://letni.club/news/2022-11-09_uni.txt

Или даже так:

https://letni.club/news/ (есть версии для винды, для нищих файлы упакованы в zip)

Реквестирую хороших источников новостей, равно как и отзывы о полезности/ненужности сервиса.

 , , , ,

ruzisufaka
()

Хочу цветной принтер, суть такова

Форум — Linux-hardware

Мне резко захотелось чего-то попечатать, требования к принтеру примерно такие:

  • Разрешение от 50 микрон на точку (это я так полагаю, примерно 508dpi?)
  • Многоразового использования, т.е. через месяц активного использования не надо менять голову, являющуюся основной частью принтера.
  • Хотелось бы иметь поддержку 5 цветовых пигментов (желтый, фиолетовый, ярко-фиолетовый, голубой, ярко-голубой) или сколько там сейчас модно? (не обязательно)
  • Очень бы хотелось поддержку печати именно пигментной, а не водорастворимой краской, т.е. наличие пьезы, а не нагревателей в дюзах (не обязательно)
  • Очень бы хотелось поддержку печати густой жижей, но не уверен, что такое вообще существует
  • Наличие хоть какого-то даташита на печатающую голову (предполагается сделать обрезание оригинальной электронике и заменить на esp32 + кучу сдвиговых регистров)
  • Стоимость в районе ничего (с авито), чтобы было не жалко разломать несколько штук и положить на полочку. Но не доисторическое, что еще можно купить не в единственном экземпляре.

Я слабо сейчас имею представление о рынке принтеров, но мне тут уши прожужжали, что дескать даже самые дешевые принтеры за 3000р с авито имеют разрешение от 600 dpi, все легко хакаются, по улицам летают трамваи и вообще наступило будущее, чему я не слишком верю. Само собой, нужные мне характеристики не пишут в рекламных проспектах.

Возможно это скорее в Talks, но модератору виднее.

 , ,

ruzisufaka
()

У кого установлена какая-нибудь версия GTA?

Форум — Talks

И не надо тут говорить, что игры зло и что дуалбутчиков/виртуальщиков тут нету. Мне нужно несколько скриншотов из GTA (любой), например, GTA San Andreas (или другая), где читами можно менять погоду. Если не влом, то:

  1. Найдите в игре какое-то красивое место, но без движения мобов/траспорта, к примеру лес, горы, пляж
  2. Вводя различные читкоды на погоду, сделайте скриншоты этого места, не двигая мышку, чтобы пиксели деревьев/домов и всего остального не поменяли своего места, а только перекрасились за счет нового окружения. Желательно все 20 вариантов погоды, или сколько там.
  3. Если еще не надоело, то найдите другую красивую локацию и повторите несколько раз.

Скриншоты лучше сохранять в png, залить потом куда-то в район https://0x0.st/ или аналогичную помойку. Разрешения хватит 640х480, всякие 4k не нужны (только не надо делать ресайз и лишние пережатия - это важно)

 , , , ,

ruzisufaka
()

Ищу консольные программы, которые умеют работать с jpeg (12 бит и/или арифметическое кодирование)

Форум — Multimedia

Собственно, сабж. Поддержка 12 бит не совсем официальна, но она есть в libjpeg. Поддержка африметического кодирования есть в GIMP. Вы можете проверить, поддерживается ли арифметическое кодирование в вашем браузере: https://files.catbox.moe/ilkxra.jpg - если видно радугу, значит поддерживается (картинка взята из статьи https://blog.benjojo.co.uk/post/not-all-jpegs-are-the-same)

Моя первая попытка, взять ImageMagick и задать ему разные опции -colorspace и -depth (опции кодирования я не нашел):

for dp in {8,12,16}; do for cs in `convert -list colorspace`; do convert test2.jpg -depth $dp -colorspace $cs -gravity center -auto-level -sharpen +2x3 -resize 256x256^ -crop 256x256+0+0 -auto-level -sharpen 1x0 jpeg-test-$cs-$dp.jpg;done;done

Как результат, 8 и 16-битные файлы идентичны до хешей, 12-битные отличаются, но identify все равно говорит, что оно 8-битное, видимо только пиксели немного иначе считались, а упаковалось оно в 8 бит. Из хорошего - удалось получить JPEG с CMYK внутри.

Вторая попытка была с ffmpeg:

for cc in `ffmpeg -pix_fmts 2>&1 | grep -E "^\S\S\S\S\S\s\S+\s+[0-9]+\s+[0-9]+" | cut -d" " -f2`; do ffmpeg -i test2.jpg -pix_fmt "$cc" -s 32x32 -y "ffmpeg-$cc.jpg";done

Сгенерилось очень много файлов вида:

ffmpeg-yuva420p.jpg
ffmpeg-gbrap16be.jpg
ffmpeg-bgr565be.jpg
ffmpeg-yuv444p.jpg
ffmpeg-pal8.jpg

По факту все они одинаковые, разница только в yuvj420p/yuvj422p/yuvj444p

Хочу много JPEG-файлов, очень разных и очень красивых. С арифметическим кодированием, с 12 битами, в CMYK, в каких-то RGBIQ (упоминается в стандарте, никогда такого не видел), и шобы фотошоп не надо было ставить и мышкой елозить.

Возможно треду место в Development, так как это нужно для тестирования моего собственного творчества (пишу редактор jpeg, обрастаю тестами)

 

ruzisufaka
()

Хочу поредактировать видео h264. Насколько возможно, чем, как?

Форум — Development

Хочу редактировать h264, может быть в перспективе h265. Поредактировать вектора движения между кадрами, макроблоки, низкочастотные коэфициенты, влияющие на цвет/яркость картинки. Если картинку можно будет отскейлить или сместить - вообще замечательно, если просто отломать (заблюрить) отдельный макроблок - тоже хорошо.

По аналогии с редактированием jpeg, который вполне себе можно редактировать по границам MCU (8х8 кубики), можно отдельно править AC/DC коэфициенты и для которого есть даже готовые редакторы или конверторы jpeg -> txt -> jpeg.

Речь здесь идет именно о редактировании h264/h265, а не полном пережатии (распаковка - редактирование - сжатие), так что ffmpeg или Adobe Premiere идут сразу лесом.

Возможно кто-то знает и подскажет тулзы, которые были бы очень полезны в процессе изучения/редактирования потока, навроде https://www.elecard.com/products/video-analysis/streameye, показывающие битстрим, чтобы было сразу видно, где и какие данные, как их достать и как править. Они же будут полезны, когда я буду тестировать уже «отредактированный» поток.

Где-то на Stackoverflow был тред, где РУЧКАМИ сделали валидный битстрим h264, картинка вроде 32х32 пикселя, причем автор уложился где-то в 50-100 байт. Увы, с ходу найти не смог. Вот мне нужны инструменты или учебник по такой магии.

 , , , ,

ruzisufaka
()

Как выбрать существующую библиотеку для проекта?

Форум — Development

Наша крупная корпорация получила крупный заказ на программу для перемножения 2 на 2, потому мы ищем библиотеку для этого.

Вася советует взять библиотеку XXX, мотивируя это тем, что это старая и известная либа, которую используют многие проекты. Петя считает, что XXX - это древнее говно мамонта, которое совершенно не поддерживается, монструозно и вообще не современно, особенно когда есть библиотека YYY - новая, быстрая, молодежная, с шаблонной магией C++. Да и не библиотека это, которая предназначена для перемножения двух чисел, а целый фреймверк, с поддержкой криптографии и квантовых вычислений. Коля же считает, что надо взять любую библиотеку, выдрать из нее те 15 строк, что требуются и запилить свою библиотеку ZZZ. Это не только позволит не раздувать проект, но даст полный контроль над библиотекой, что облегчит дальнейшее портирование проекта на BeOS, OS/2 и ZX-Spectrum (хотя это и не требуется на сегодняшний день).

Из спора выше можно выделить следующие особенности библиотек, которые можно использовать для выбора:

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

А какие аргументы для выбора библиотек знаете вы? Помогите Васе, Пете и Коле не поубивать друг друга. Хотя я больше болею я Колю.

 , ,

ruzisufaka
()

Я написал приложение-таймер для занятий на велотренажере

Форум — Talks

Некоторое время назад я создавал тред, где спрашивал: А что кричать спортсмену, когда он тренируется?

Сегодня хочу поблагодарить всех участников того треда и показать, что у меня получилось:

 , ,

ruzisufaka
()

Жизнь IT-шного сыча в деревне. Что для этого нужно?

Форум — Talks

Допустим, вам резко захотелось пожить в деревне. Свежий воздух, природа, сила земли. Деревня расположена в экологически чистом районе, рядом нет электричества, газа, водоснабжения, интернетов (спутник?), а главное - ехать до нее 500км по бездорожью.

Допустим, что прямо сейчас где-то с сибирской глуши (или карельской? Мы пока не определились) строиться деревня для домашних сычей-ойтишников. Большой дом на 3 этажа из говна и палок. С большой печкой, системой вентиляции и персональными кельями для 15 малознакомых людей, которые бы начали приобщаться к идеям кохаузинга и коливинга. Простите, эко-кохаузинга и эко-коливинга.

А теперь вопрос: что нужно для комфортной жизни IT-сыча в сибирско-карельской деревне, к которой ехать только 2 дня по бездорожью?

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

  • Мобильный телефон (свой)
  • Дырка в стене для зарядки телефона, ноута (12v, никаких 220v)
  • Вайфай с локальными интернетами и может быть спутниковым инетом
  • Локальные интернеты с википедией, аниме и порно
  • Кровать с постельными принадлежностями (возможно из соломы)
  • Дырка в стене над кроватью со светильником и вентиляцией
  • Возможно окно, возможно фикус в окне или какая-то герань на стене
  • Возможно унитаз, возможно даже с водой, но может и просто ведро
  • Стол, чтобы развернуть клавиатуру и что-то говнокодить (лежа неудобно)
  • Лампа на столе, может быть люстра с RGB-диодами
  • Предметы личного использования: тарелки, кружки, ложки
  • Дверь, которую можно открыть только по NFC с телефона сыча
  • В целях экономии, никаких выключателей, управление всем с телефона

Аналогично с предметами личного пользования, предполагаются объекты общественного использования:

  • Печка, строительный блендер, тестомес и прочая кухонная утварь
  • Система подогрева/охлаждения/кварцевания/ароматизации воздуха
  • Система открывания дверей по NFC, контроля воздуха, включения света
  • 3D-принтер, россыпь шуроповертов, болгарок и бормашинок с алмазными фрезами
  • Ящик с ардуинами, двигателями и прочими амулетами, из которых можно строить дом общественной мечты дальше. Например, систему наведения на спутники или крутить направленные антенны с сотней директоров, чтобы ловить интернеты за 200км. Так как антенны нам точно понадобятся, надо заранее положить в этот ящик всякие SDR-трансиверы и КСВ-метры, прямо к россыпе микросхем от RDA.

Так как в такой деревне из 1 гигахруща надо что-то жрать, а магазинов рядом не наблюдается, равно как и всей остальной инфраструктуры, то планируется постройка силами участников следующих алтарей:

  • курятник (ардуины будут контролировать температуру и выводить циплят)
  • электростанция (солнечные и ветрогенераторы, актуаторы рефлекторов на пердуинах, самодельные зарядные устройства на них же)
  • насосная станция для перекачки и очистки воды, шобы само планировало расход и подогрев воды.
  • аптеко-больница с различным медицинским оборудованием с Алиэкспресса и запасом таблеток на год вперед
  • Отдельное помещение с ламинарным шкафом, уф-лампами, электрофорезом, ДНК-принтером и генетической пушкой для работ по генетике и селекции новых интересных видов растений.
  • Небольшая киностудия для производства художественных кинолент, предназначенных для аплоада через интернеты
  • Хакер-спейс для токарных и фрезерных работ, различной металлооботки Конечно, работа данных алтарей, равно как и само их существование, будет зависеть от наличия или отсутствия участников, которые смогли бы развивать данные направления деревни.

На данный момент я пытаюсь составить список вещей, который необходим для повседневной, но комфортной жизни. Но с минимумом затрат, поэтому секс-куклы за 5к зелени - мимо. Но вполне можно сделать секс-куклы из соломы. А откуда солома? Для производства соломы нужна продвинутая газонокосилка, что позволит обеспечить народонаселение не только секс-куклами, но и утеплить крышу и стены, что обеспечит всех теплом долгими зимами. Так что японским секс-куклам - нет, японским газонокосилкам - да.

Так вот, что нужно было бы ИМЕННО ТЕБЕ, включая уже описанное выше? Самый необходимый минимум для комфортной жизни?

 , ,

ruzisufaka
()

Соломенный ватник

Форум — Talks

Нам всем известна такая одежда как ватник. Относительно проста в изготовлении, хорошо защищает от морозов, имеет низкую стоимость. При желании можно взять готовое ватное одеяло и сшить из него себе «футболочку». Или даже штаны.

Отправляемся в 10-15-й века, а там:

Св. Бенедикт считал, что достаточно циновки, которая служила подстилкой, одеяла, пледа для ног и подушки. Монахи ордена фельянов спали на досках; премонстранты – тоже на досках, но слегка прикрытых соломой; братья-минориты строгого устава спали на голой земле или на досках, циновки же разрешались тем, «кто был менее крепкого склада». Оливетанцы спали на дощатом настиле без одеяла. Наиболее избалованные имели тюфяк (набитый соломой или сеном, иногда сухими листьями), который редко менялся, а также подушку (с соломой, волосом или перьями), шерстяное одеяло, иногда баранью шкуру (как у картезианцев), но никаких простынь, по крайней мере в самом начале.

Визитаторы выказывали недовольство: в таком-то монастыре они обнаружили шерстяные или льняные полотна; в другом – шкуры диких животных; еще в одном – разноцветное постельное белье (что в те времена было свойственно людям низшего сословия). Монахи Фонтевро имели право на саржевые простыни. Кроме того, визитаторы отмечали, что монахи прячут в постельных принадлежностях отдельные предметы. Аббат монастыря был обязан совершать частые «инспекции» (что, впрочем, предусматривалось и Уставом св. Бенедикта: LV, 33—34) и сурово карать виновных.

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

Про соломенные подушки я слышал, а про соломенные одеяла - не очень, но почему бы и нет? А если можно сделать одеяло из соломы, то почему бы и не сшить «ватник» из такого одеяла? Возможно с добвлением перьев и листьев, чтобы было помягче.

Вопрос: как загуглить технологии и прочие ДИАЙВАЙ соломенных ватников, как одежды для погоды в -40? Не мог же я первым это изобрести? Но вот как такое гуглить - совершенно непонятно.

 

ruzisufaka
()

А что кричать спортсмену, когда он тренируется?

Форум — Talks

Как подбодрить тренирующегося человека?

  • Ты молодец!
  • У тебя отлично получается!
  • Ты лучший!
  • Ты личность!
  • Ты победишь!

Больше ничего не придумал, но это максимальная банальность

 , ,

ruzisufaka
()

Как оформить веб-приложение без веба? Принципиально ново и модно?

Форум — Development

Допустим, у меня есть какое-то веб-приложение. Допустим, я осознал тленность бытия, ненужность веб-технологий и решил удалить из него все похожее на HTML/CSS/JS(ON), равно как и web-специфику, вроде как Куков и Спамов. Что останется в итоге?

Мысли:

Если от веб-приложения отодрать HTML, то отображать UI уже нечем. Значит надо изобрести свое, скорее cli-based, чтобы сохранить принцип «один запуск - один запрос». Если делать полноценный GUI (или TUI), то надо изобретать уже сессии, этим можно закрыть вопрос с Cookie. В принципе, можно было бы сделать некий бинарник, который как-то запускать локально.

Так как большинство «контента» в веб-сайтах и веб-приложениях должно быть проиндексировано поисковиками, то веб-приложения оптимизируют «для чтения». Как минимум, это ваше REST API напрямую декларирует возможность чтения тех или иных URI, половина модных фреймверков начинается с описания роутинга для чтения тех или иных разделов. А нельзя ли как-то так сделать, чтобы не писать это? Тогда может быть и не нужен бинарник, который запускать локально? Каждый URI разложить по каталогам на файловой системе, внутри просто положить txt/pdf-файлы с контентом «для чтения». Но как постить новый контент?

А может быть можно порезать наше приложение как-то иначе? К примеру, в Android приложения порезаны на кучу компонетов, которые в свою очередь, порезаны на 4 класса: Активити (что видит пользователь), Сервисы (что работает в фоне), Бродкаст-Ресиверы (что принимает какие-то события и быстро завершается) и Контент-Провайдеры (то, что предоставляет свой контент и не занимается его отрисовкой). Последние - отличные претенденты на то, чтобы заменить вьюшки и при этом не писать код для отрисовки. Сервисы - для постинга нового контента. Активити - если сильно надо нарисовать вьюшку или страницу настроек.

А может быть какие-то интересные подходы из области VR или блокчейна?

В общем, как бы выглядело веб-приложение без веба?

Дисклеймер:

Тред предназначен для мозгового онанизма с целью создания принципиально нового языка программирования, принципиально нового нескучного дистрибутива и принциально нового нескучного политического строя. Готовые решения на общеизвестных языках или библиотеках не интересны в принципе, зато очень интересны принципы в крутых библиотеках или языках. Особенно интересны те, которые вызывают вопрос «что курили авторы».

 , ,

ruzisufaka
()

Многопользовательский режим в десктопных приложениях

Форум — Talks

Хотел было написать в /dev/, но по большей части это размышления и витания в облаках.

Онлайн-редакторы с редактированием текста или рисованием - давно не новость. Я про всякие гуглодоксы или блокноты https://pad.riseup.net/ - создаете сессию, раздаете ссылочки друзьям и можно писать один документ большим количеством рыл.

Но последнее время в большом количестве десктопного софта появляются фичи типа «коллаборейшен», начиная от софта для видеомонтажа, заканчивая программами для заметок (конечно, все это корпоративное, потому к Лайнаксу обычно никакого отношения не имеет). https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/MultiUserEditing/Overview/ - пример такого софта с поддержкой ЖМУ/Лайнакс. Еще веселее, когда появляется кривой и корявый софт, можно сказать в зачаточном состоянии, главная фича которого - этот самый «коллаборейшен», а уж что там оно должно было делать вообще - второй вопрос. Само собой, все это работает через облако вендора, стоит денег, причем по подписке (купить в сперморепозитории или мак-разделе сперморепозитория нельзя, Лайнакс-версий обычно нету вообще).

А теперь вопрос: почему в самой лучшей ОС (Лайнаксе) нету фичи, которая бы позволяла такое в каждой программе? На самом деле конечно такая фича есть, можно раздать доступ по ssh к своей розовой попке, внутри запустить tmux, после чего пердолиться во все тяжкие, если они не выходят за пределы консольки. А что с гуем? В самой лучшей ОС есть подыхающий протокол Х, в нем https://www.x.org/wiki/Development/Documentation/MPX/ - возможность заюзать несколько устройств ввода. Кто сказал, что устройства должны быть реальными и не быть удаленными друзяшками? Еще в самой лучшей ОС ЖМУ/Лайнакс есть такая штука как ARCAN: https://youtu.be/FgHMU7m9-I8 - это в том числе оконный менеджер с возможностью «расшаривать окошко по сети». Вопрос: почему никто не склеил эти две штуки?

Вопрос 2: в Ведроиде (основана на ЖМУ/Лайнакс) есть подсистема IME, проще говоря каштомные клавиатурки. Клавиатурки могут получить доступ к контексту приложения, стырить уже введенный текст в поле ввода, узнать его label/id и какую-то метаинформацию. Обычно используется это для того, чтобы тырить пароли, исправлять неправильно введенные слова и прочие радости жизни (о чем система Ведроид предупреждает при установке новой клавиатурки). Почему бы не сделать свою клавиатурку, с поддержкой облаков и многопользовательности, чтобы множество удаленных пользователей «работали» с единственным приложением? Приложение не обязано быть текстовым, в «клавиатурку» можно прописать хоткеи, чтобы вызывать те или иные фичи программы.

Вопрос 3: где и как выучиться на профессию «программист многопользовательских приложений»? Или самое время создавать свои собственные инфопродукты и инфокурсы по столь новому и востребованному направлению?

 

ruzisufaka
()

RSS подписка на новые темы