Продолжается развитие проекта FPDoom, что позволяет запустить классический Doom, его дополнения и другие портированные игры на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Чипсету уже около десяти лет, и телефоны выпускаются до сих пор.
Протестировано на 42 моделях телефонов.
Теперь можно запускать игры с SD-карты, для этого нужно при включении/перезагрузке телефона зажать определённую клавишу (разные для разных моделей). Для загрузки с SD-карты требуется добавление небольшой секции размером 4КБ в прошивку телефона. ОС телефона остаётся работоспособной.
Сделано меню для выбора игр при загрузке с SD карты.
Добавлен порт эмулятора InfoNES (далеко не лучший эмулятор, но простой для портирования, работает ~50% игр).
В последнее время ютуб затеял какую-то реорганизацию и стал убирать из некоторых своих видео формат 22 (720p, единый файл, не dash). Может я наговариваю, конечно, на ютуб, но формат best (720p) всегда был, имхо.
Для mpv можно создать профиль [youtube] в mpv.conf, где прописать условие срабатывания на ютубных ссылках, типа profile-cond=path:match('youtu%.?be') ~= nil или profile-cond=path:find('youtu%.?be') (1).
И добавив в профиль параметр ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" и ytdl-format=95/best.
Для yt-dlp, чтобы при наборе команды в терминале мучительно долго не вспоминать указанную в начале заметки длиннющую опцию, можно создать алиас. В конфиге yt-dlp прописываем, как пример, --alias 95f '-f 95 --extractor-arg="youtube:player_client=mediaconnect"'. Теперь, чтобы скачать, пишем yt-dlp --95f 'https://youtu.be/eUyr9MJnj4w'.
Для чего все это надо?
минус издержки на склеивание dash-потоков видео и аудио средствами ffmpeg;
возможность отправлять ссылку на стандартный вывод (stdout) какого-либо плеера, например vlc;
плюс, оказывается, и для 1080p существует подобный формат единого файла.
лучшая отзывчивость при перемотке во внешнем плеере (возможно верно для всех hls и не зависит от таблицы форматов)
Есть очень древняя программа без исходников, скомпилированная под Linux ориентировочно в 2000-2003 годах. Вероятно компилировалась на RHL 7.3 Valhalla (не путать с RHEL 7, тогда ещё вообще RHEL’ов не было), возможно даже каким-то GCC 2.95:
prism.original: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped, too many notes (256)
Нужно запустить её на современной Ubuntu LTS.
При запуске ругается так:
prism: symbol lookup error: prism: undefined symbol: errno, version GLIBC_2.0
Погуглил, и нашёл что GNU’тые когда-то там на рубеже веков сломали API/ABI и этот errno похоже что завернули в какие-то убермакросы и выкинули.
Извернулся, взял HEX-редактор и заменил несуществующий символ errno на существующий srand:
Добрый день. Система Linux Mint 20 + FVWM. Вначале есть раскладка трех языков, Alt+Shift функционирует, клик по иконке языка в трее тоже переключает нормально раскладки. Назначенные мною функциональные клавиши работают нормально
Key F9 A A Exec exec setxkbmap -layout us
Key F10 A A Exec exec setxkbmap -layout ru
Key F11 A A Exec exec setxkbmap -layout br
При нажатии на любую из них остается одна раскладка, клик по иконке не работает, Alt-Shift не фурычит. Пробовал сменить на Ctrl+Shift та же история. Клавиатура беспроводная. Если отключить клавиатуру выдергиванием флешки, а потом включить, то все снова работает, но после setxkbmap -layout us или других языков, снова остается один язык.
В файле /etc/default/keyboard все нормально
firefox 102esr из реп дивана.
Установлены все нужные драйверы: i965 и mesa. vaapi в mpv работает прекрасно - не грузит проц вообще. firefox же чего-то кочеврыжится. Переменные выставлены нужные:
Перепробовал много настроек самых разных, в консоли ничего не было видно про vaapi при запуске фокса.
Вот что выводит about:support
HW_COMPOSITING
available by default
OPENGL_COMPOSITING
available by default
Заблокировано; код ошибки BLOCKLIST_FEATURE_FAILURE_SOFTWARE_GL
WEBRENDER
available by default
force_enabled by user: Force enabled by pref
WEBRENDER_QUALIFIED
available by default
WEBRENDER_COMPOSITOR
disabled by default: Disabled by default
blocklisted by env: Blocklisted by gfxInfo
blocked by runtime: Cannot be enabled in release or beta
WEBRENDER_PARTIAL
available by default
WEBRENDER_SHADER_CACHE
disabled by default: Disabled by default
WEBRENDER_OPTIMIZED_SHADERS
available by default
WEBRENDER_ANGLE
available by default
unavailable by env: OS not supported
WEBRENDER_DCOMP_PRESENT
available by default
disabled by user: User disabled via pref
unavailable by env: Requires Windows 10 or later
unavailable by runtime: Requires ANGLE
WEBRENDER_SOFTWARE
available by default
WEBGPU
disabled by default: Disabled by default
blocked by runtime: WebGPU cannot be enabled in release or beta
X11_EGL
available by default
force_enabled by user: Force enabled by pref
blocklisted by env: Blocklisted by gfxInfo
DMABUF
available by default
VAAPI
disabled by default: VAAPI is disabled by default
force_enabled by user: Force enabled by pref
VP8_HW_DECODE
available by default
VP9_HW_DECODE
available by default
Ничего не выводилось пока не включил glx.x11-egl.force-enabled.
В терминале vaapi хорошо загрузилось, но проц всё-равно также грузится 80% на 480p видео. Вот установил пакет intel-microcode, не помогло. Что ему этому файрфоксу надо? Куча настроек для апп. ускорения от разных версий - разные, и ничего не работает. Значит, видно, что x11_egl заблочен в фоксе. Почему? Значит, пошел смотреть https://searchfox.org/mozilla-release/source/widget/gtk/GfxInfo.cpp
Оказывается, нужна новейшая версия месы.
Нихрена! У меня диван стэйбл, и на роллинг нет возможности перейти, спасибо разрабам файорфокса. Неужели все пользователи этого слабенького проца должны юзать всё новое? Я думаю, причина того, что vaapi-egl фокса не пашет, не только в этом. У кого такая встройка - отпишитесь пожалуйста что используете)) Сейчас запускаю фокс в консоли - а он сразу после запуска, передает управление терминалу, будто бы с & запущено.
После того, как яндекс изъявил желание стать платным для корп клиентов, с нашей стороны было изъявлено желание развернуть свой почтовый сервер. Что сопсна на новогодних и было сделано. ПО - postfix+dovecot. Из web-интерфейса старый-добрый кубик (RoundCube) на nginx v.1.18, php v.7.4.33.
Результат проверки mail-tester показывает 10/10. Helocheck говорит что host mail.abuseat.org[54.93.50.35] said: 550 *** The HELO for IP address (IP нашего почтовика) was ‘mail.наш.домен’ (valid syntax) *** (in reply to RCPT TO command).
Все письма доставляются всем, за исключением:
gmail, туда они попадают в спам, но доходят
Почтовый сервер, где «прикручен» antispam.lotte.net, который возвращает 554 refused to talk to me.
И почтовый сервер, у которого антиспам spamhaus. Там ребята выкладывают лог, что значение HELO нифига не наше, а вообще какие-то левые, буржуйские домены. Либо предлагают закрыть 25 порт, но тогда входящая почта встаёт колом.
В логах почта ходит нормально и ничего подозрительного нет. Единственное что основной наш домен, на котором крутится сайт example.com на IP 11.11.11.11, а почтовый сервер mail.example.com на IP 22.22.22.22, но соответствующая запись example.com MX на mail.example.com сделана. Конфиг postfix’a Конфиг Dovecot’a iptables вдруг пригодится
Я не совсем понимаю куда ещё посмотреть. Где и что не так работает.
Опубликованы исходники порта Doom для кнопочных телефонов на чипе Spreadtrum SC6531. Модификации чипа Spreadtrum SC6531 занимают около половины рынка дешевых кнопочных телефонов российских брендов (остальное за MediaTek MT6261, другие чипы редкость).
В чём состояла сложность портирования:
Сторонние приложения на этих телефонах не предусмотрены.
Малый объём ОЗУ - всего 4 мегабайта (бренды/продавцы часто указывают это как 32МБ - но это введение в заблуждение, так как мегабиты, а не мегабайты).
Закрытая документация (можно найти только утечку ранней и неполноценной версии), поэтому многое добывалось методом реверс-инжиниринга.
В основе чипа процессор ARM926EJ-S с частотой 208 МГц (SC6531E) или 312 МГц (SC6531DA), может понижать частоту до 26 МГц, архитектура процессора ARMv5TEJ (нет деления и операций с плавающей точкой).
Пока что исследована работа лишь малой части чипа, это USB, экран и клавиши. Поэтому поиграть можно только при телефоне подключенном к компьютеру USB кабелем (ресурсы для игры передаются с компьютера), также в игре нет звука.
На данный момент запускается на 6-и из 9-и протестированных телефонов на чипе SC6531. Для перевода этого чипа в загрузочный режим, нужно знать какую клавишу удерживать при загрузке, клавиши для протестированных моделей: F+ F256: *, Digma LINX B241: центр, F+ Ezzy 4: 1, Joy’s S21: 0, Vertex M115: вверх, Vertex C323: 0.
P.S.: Похожее было опубликовано на OpenNet, новость от меня, только отредактированная админом сайта.
Без лицензии, сложно сказать какая лицензия должна быть для кода полученного реверс-инжинирингом, считайте как копилефт - копируйте и изменяйте, давайте изменять другим.
Игра Doom была использована для привлечения внимания, в качестве примера, я бы хотел свободную прошивку для кнопочных телефонов. Их чипы гораздо мощнее, чем они используются в прошивке. Причём железо дешевое и массовое, в отличие от редких телефонов с «открытых» ОС или позволяющих выполнять свой код. Пока никого не нашел, чтобы скооперироваться, а реверс-инжиниринг тяжелое развлечение. Для начала было бы хорошо найти управление SD картой и управление энергопотреблением, чтобы можно было использовать эти телефоны как игровую приставку. Дополнительно к Doom можно портировать NES/SNES эмулятор.
Но вопросы. Какого хрена нигде не описана эта фича? Как вообще создают такие образы? Можно ли обратно сжать раздедуплицированный образ? Три часа гугления - ноль результатов…
Какие есть опенсорсные морды для вывода осциллограмм и управления девайсами? Начал расковыривать протокол Hantek 2d72 - вроде всё довольно просто, теперь встал вопрос, к какой софтине это приделать, не писать же с нуля.
Пока посматриваю на Sigrok/PulseView ради декодиров, но по интерфейсу он очень уныл.
Для того, чтобы проверять результат вносимых изменений в код видеодрайвера (radeon, amdgpu), хотелось бы его загружать и выгружать на лету. Загрузка через insmod работает, а выгрузка rmmod нет. lsmod пишет что он кем то одним используется и не указано кем. Слишком муторно перезагружать после каждого теста.
Видеодрайвер не используется для десктопа, для десктопа используется встроенная графика Intel с другим драйвером.
Написал программу, которая содержимое одного окна отображает в другом. Допустим у меня есть Xlib'ный тип Window, есть переменные этого типа, SrcWin и TrgWin, для удобства у обоих один и тот же размер (683*752), который никогда не изменится, одна глубина изображения. SrcWin это окно какого то реального приложения.
Программа раз в 40мс копирует изображение из SrcWin в TrgWin, с помощью XGetImage и XPutImage, на i5-3337U программа берёт почти 20% процессорного времени, процесс Xorg загружает проц примерно на столько же.
Программа работает как ожидалось, однако меня сильно напрягает высокая нагрузка на процессор.
Три вопроса:
1) Альтернативы, указанные в названии темы, могут значительно снизить нагрузку на процессор? Просто было бы здорово, не копировать данные, а отображать буфер пикселей одного окна в соответствующий буфер другого (скопировать значение указателя на область памяти с изображением которое надо отобразить).
2) Читал, что в некоторых тулкитах типа QT, есть такая штука как window-damage event, которую я понимаю как событие, которое появляется, если хотя бы один пиксель был в окне изменён, правильно ли я понимаю суть этого события, и есть ли аналог в Xlib? А то подход, когда надо гонять данные туда сюда каждые 40мс, даже если ничего не поменялось, не выглядит как лучшее решение данной задачи.
3) Может кто в курсе, как работает window-switcher(alt+tab) в KDE? Он ведь отображает содержимое окон в реальном времени, ну или во всяком случае оперативно реагирует на изменения окон которые он отрисовывает, и при этом не напрягает процессор.
Спустя 6 лет после появления Raspberry Pi Zero анонсировано начало продаж следующего поколения одноплатника в этом формате — Raspberry Pi Zero 2 W. По сравнению с предыдущей моделью, сходной по характеристикам с Raspberry Pi B, но с модулями Bluetooth и Wi-Fi, эта модель основана на чипе Broadcom BCM2710A1, таком же как и на Raspberry Pi 3. По формфактору новая плата может быть прямой заменой Pi Zero, в то время как её заявленное быстродействие в 5 раз выше.
На данный момент продажи начались только в некоторых магазинах, а так же бесплатно плата придет подписчикам (в том числе и новым) журнала MagPi.
Нужно пройтись по файлику и посчитать встречаемость каждого слова в тексте. Словом считается любая последовательность букв от a до z. Регистр нужно привести к одному. Любой другой символ прерывает слово.
Результат записать в другой файл в формате: <количество> <слово>. Например, текст: «cat, cat, cat». Ответ будет такой: «3 cat». Также, слова при выводе нужно отсортировать по их встречаемости.
Например первые несколько строк вывода из приведенного выше файла будут такими:
3343241 the
1852717 and
1715705 of
1560152 to
1324244 a
Дополнительное условие, нужно, чтобы ваша программа отрабатывала быстрее, чем за 7 секунд на Core i5-4690 @ 3.7 GHz.
Понятно, что железяки у всех разные, поэтому если участвуете, пишите на каком оборудовании вы запускали свою программку.
Вроде как BceM_IIpuBeT хотел поучаствовать. Может еще кто-то присоединится.
Я свою штуку написал. Отрабатывает примерно за 5 секунд на Мак-мини 2012-го года, core i7 @ 2,3 GHz.
Subj. Чтобы искаропки заработало 3D-ускорение, чтобы декодирование было hardware’ное, чтобы ddr4 от 4gb, чтобы какой дистро не взял (aarch64) - оно просто работало. Интересует только одноплатник на arm.
С малиной напердолился уже вдоволь - ускорение 3D/декодирование видео если и работает то только в RaspiOS 32bit, в aarch64 только 3D только и смог завести, потому и ищу замену.
Я редко пишу на этом форуме, никого здесь не знаю… Но всё-таки решил попробовать. Удалят - и ладно.
Хочу лишь обратиться к молодому поколению программистов: в университете вам будут впаривать ООП - не ведитесь. Я много лет жизни потерял пытаясь понять что это за зверь. Это настоящая религия. Тебя убеждают что это хорошо, а когда ты понимаешь что это плохо - тебе говорят: ну ты просто ещё не знаешь паттернов, 5 принципов дяди Боба и т.д.
Много лет спустя, я поизучал эти паттерны, принципы и пришёл к выводу. Всё это демагогия. Это реально секта. Создана парадигма, которая не работает из-за противоречия в самой своей сути. И чтобы оправдать её существование была создана куча теорий, которые добавляют сложность в систему.
Есть много статей, разбирающих по косточкам различные аспекты ООП. Это тяжелое чтиво и мало кто из студентов сможет понять о чём речь. Тут сессии, курсовые, языки, вечеринки. Не до философии. Но всё сводится именно к философии:
информация ничего не значит без контекста.
В классическом примере ООП используется для пользовательского интерфейса. ООП объект хочет быть самостоятельным, «знать» как себя отобразить. Но это зависит от размера экрана, а если вывод в документ PDF, то предпочтительнее вектор, а не растр и так далее.
Рано или поздно работа с ООП постоянно натыкается на конфликт: как передать контекст объекту.
Об этом много сказано, есть много примеров и разборов. Я уверен что студентам некогда читать длинные статьи где много буков. Они легко гуглятся и вот одна из наиболее кратких со ссылками на более подробные https://habr.com/ru/post/451982/
В идеале, хочу создать новую статью, ещё короче но с конкретными примерами. Просто реально трудно общаться с ООП-зомбированными людьми. Их так учили 5 лет и они даже не допускают мысли что их разводили все эти годы…
Вот мне тоже стало интересно, и вот в один прекрасный день на авито нашел объявление что целых 4 ноутбука продавались за 1100 рублей (275 каждый). Я не мог удержатся и купил их…
Я запустил archlinux32 с флешки (ide-винты были полностью мертвы) и заработало оно шустрее чем я изначально ожидал.
Просто много раз читал (и здесь тоже) что даже core 2 duo «разве что на помойку» и т.д. Вот я решил развеить мифы:
Программы на голом протоколе X11 или Motif (xclock, acme, nedit) медленно меняют размер окна и содержимое дёргается. С программами на Qt/GTK такого не наблюдается. Кто нибудь знает, чем это вызвано? X.Org сломали?