LINUX.ORG.RU

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

Новости FPDoom: загрузка с SD карты, эмулятор NES и порт Wolfenstein 3D

Новости — Игры
Новости FPDoom: загрузка с SD карты, эмулятор NES и порт Wolfenstein 3D
Группа Игры

Продолжается развитие проекта FPDoom, что позволяет запустить классический Doom, его дополнения и другие портированные игры на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Чипсету уже около десяти лет, и телефоны выпускаются до сих пор.

  • Протестировано на 42 моделях телефонов.
  • Теперь можно запускать игры с SD-карты, для этого нужно при включении/перезагрузке телефона зажать определённую клавишу (разные для разных моделей). Для загрузки с SD-карты требуется добавление небольшой секции размером 4КБ в прошивку телефона. ОС телефона остаётся работоспособной.
  • Сделано меню для выбора игр при загрузке с SD карты.
  • Добавлен порт эмулятора InfoNES (далеко не лучший эмулятор, но простой для портирования, работает ~50% игр).
  • Добавлен порт игры Wolfenstein 3D.

Предыдущая новость

>>> Исходный код

 , , , ,

jpegqs
()

YT-DLP, очевидное-невероятное

Статьи — Desktop

В последнее время ютуб затеял какую-то реорганизацию и стал убирать из некоторых своих видео формат 22 (720p, единый файл, не dash). Может я наговариваю, конечно, на ютуб, но формат best (720p) всегда был, имхо.


Оказывается есть возможность получать другую таблицу форматов, отличную от дефолтной. У yt-dlp есть параметр --extractor-arg "youtube:player_client=mediaconnect" ([youtube] Format 22 is only sometimes extracted for some videos #10206).
Дефолтная таблица форматов:

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' 
Extracting cookies from firefox
Extracted 1328 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading ios player API JSON
[youtube] eUyr9MJnj4w: Downloading player 5b22937f
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb2 mhtml 80x45        1    │                  mhtml │ images                                  storyboard
sb1 mhtml 160x90       1    │                  mhtml │ images                                  storyboard
sb0 mhtml 320x180      1    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
139 m4a   audio only      2 │    1.32MiB   49k https │ audio only          mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 │    1.30MiB   48k https │ audio only          opus        48k 48k low, webm_dash
250 webm  audio only      2 │    1.70MiB   63k https │ audio only          opus        63k 48k low, webm_dash
140 m4a   audio only      2 │    3.51MiB  129k https │ audio only          mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │    3.51MiB  130k https │ audio only          opus       130k 48k medium, webm_dash
602 mp4   256x144     15    │ ~  2.33MiB   86k m3u8  │ vp09.00.10.08   86k video only
394 mp4   256x144     30    │    1.68MiB   62k https │ av01.0.00M.08   62k video only          144p, mp4_dash
269 mp4   256x144     30    │ ~  4.16MiB  154k m3u8  │ avc1.4D400C    154k video only
160 mp4   256x144     30    │    1.55MiB   57k https │ avc1.4D400C     57k video only          144p, mp4_dash
603 mp4   256x144     30    │ ~  4.18MiB  154k m3u8  │ vp09.00.11.08  154k video only
278 webm  256x144     30    │    2.35MiB   87k https │ vp9             87k video only          144p, webm_dash
395 mp4   426x240     30    │    2.70MiB  100k https │ av01.0.00M.08  100k video only          240p, mp4_dash
229 mp4   426x240     30    │ ~  5.70MiB  211k m3u8  │ avc1.4D4015    211k video only
133 mp4   426x240     30    │    2.35MiB   87k https │ avc1.4D4015     87k video only          240p, mp4_dash
604 mp4   426x240     30    │ ~  7.76MiB  287k m3u8  │ vp09.00.20.08  287k video only
242 webm  426x240     30    │    3.59MiB  133k https │ vp9            133k video only          240p, webm_dash
396 mp4   640x360     30    │    5.02MiB  186k https │ av01.0.01M.08  186k video only          360p, mp4_dash
230 mp4   640x360     30    │ ~ 11.41MiB  421k m3u8  │ avc1.4D401E    421k video only
134 mp4   640x360     30    │    4.13MiB  153k https │ avc1.4D401E    153k video only          360p, mp4_dash
18  mp4   640x360     30  2 │ ≈  7.64MiB  282k https │ avc1.42001E         mp4a.40.2       44k 360p
605 mp4   640x360     30    │ ~ 15.03MiB  555k m3u8  │ vp09.00.21.08  555k video only
243 webm  640x360     30    │    6.06MiB  224k https │ vp9            224k video only          360p, webm_dash
397 mp4   854x480     30    │    8.40MiB  310k https │ av01.0.04M.08  310k video only          480p, mp4_dash
231 mp4   854x480     30    │ ~ 15.17MiB  561k m3u8  │ avc1.4D401F    561k video only
135 mp4   854x480     30    │    6.09MiB  225k https │ avc1.4D401F    225k video only          480p, mp4_dash
606 mp4   854x480     30    │ ~ 20.80MiB  769k m3u8  │ vp09.00.30.08  769k video only
244 webm  854x480     30    │    8.50MiB  314k https │ vp9            314k video only          480p, webm_dash
398 mp4   1280x720    30    │   14.51MiB  536k https │ av01.0.05M.08  536k video only          720p, mp4_dash
232 mp4   1280x720    30    │ ~ 24.57MiB  908k m3u8  │ avc1.4D401F    908k video only
136 mp4   1280x720    30    │   11.09MiB  410k https │ avc1.4D401F    410k video only          720p, mp4_dash
609 mp4   1280x720    30    │ ~ 31.59MiB 1167k m3u8  │ vp09.00.31.08 1167k video only
247 webm  1280x720    30    │   13.61MiB  503k https │ vp9            503k video only          720p, webm_dash
399 mp4   1920x1080   30    │   24.33MiB  899k https │ av01.0.08M.08  899k video only          1080p, mp4_dash
270 mp4   1920x1080   30    │ ~ 73.64MiB 2721k m3u8  │ avc1.640028   2721k video only
137 mp4   1920x1080   30    │   39.45MiB 1458k https │ avc1.640028   1458k video only          1080p, mp4_dash
614 mp4   1920x1080   30    │ ~ 53.22MiB 1967k m3u8  │ vp09.00.40.08 1967k video only
248 webm  1920x1080   30    │   26.78MiB  990k https │ vp9            990k video only          1080p, webm_dash
616 mp4   1920x1080   30    │ ~131.47MiB 4858k m3u8  │ vp09.00.40.08 4858k video only          Premium
400 mp4   2048x1152   30    │   60.94MiB 2252k https │ av01.0.08M.08 2252k video only          1080p, mp4_dash
620 mp4   2048x1152   30    │ ~151.23MiB 5589k m3u8  │ vp09.00.50.08 5589k video only
271 webm  2048x1152   30    │   82.90MiB 3063k https │ vp9           3063k video only          1080p, webm_dash

Новая таблица форматов с единым файлом/потоком для 720p (и 1080p):

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect"
Extracting cookies from firefox
Extracted 1329 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading mediaconnect player API JSON
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │  FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                 mhtml │ images                                storyboard
sb2 mhtml 80x45        1    │                 mhtml │ images                                storyboard
sb1 mhtml 160x90       1    │                 mhtml │ images                                storyboard
sb0 mhtml 320x180      1    │                 mhtml │ images                                storyboard
140 m4a   audio only      2 │   3.51MiB  129k https │ audio only        mp4a.40.2  129k 44k medium, m4a_dash
160 mp4   256x144     30    │   1.55MiB   57k https │ avc1.4d400c   57k video only          144p, mp4_dash
91  mp4   256x144     30    │ ~ 4.16MiB  154k m3u8  │ avc1.4d400c       mp4a.40.5
133 mp4   426x240     30    │   2.35MiB   87k https │ avc1.4d4015   87k video only          240p, mp4_dash
92  mp4   426x240     30    │ ~ 5.70MiB  211k m3u8  │ avc1.4d4015       mp4a.40.5
134 mp4   640x360     30    │   4.13MiB  153k https │ avc1.4d401e  153k video only          360p, mp4_dash
93  mp4   640x360     30    │ ~11.41MiB  421k m3u8  │ avc1.4d401e       mp4a.40.2
18  mp4   640x360     30  2 │ ≈ 7.64MiB  282k https │ avc1.42001E       mp4a.40.2       44k 360p
135 mp4   854x480     30    │   6.09MiB  225k https │ avc1.4d401f  225k video only          480p, mp4_dash
94  mp4   854x480     30    │ ~15.17MiB  561k m3u8  │ avc1.4d401f       mp4a.40.2
136 mp4   1280x720    30    │  11.09MiB  410k https │ avc1.4d401f  410k video only          720p, mp4_dash
95  mp4   1280x720    30    │ ~24.57MiB  908k m3u8  │ avc1.4d401f       mp4a.40.2
137 mp4   1920x1080   30    │  39.45MiB 1458k https │ avc1.640028 1458k video only          1080p, mp4_dash
96  mp4   1920x1080   30    │ ~73.64MiB 2721k m3u8  │ avc1.640028       mp4a.40.2

Как скачивать 720p (формат единым файлом/потоком):

$ yt-dlp -f 95 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect" 

Как воспроизводить 720p (формат единым файлом/потоком):

$ mpv --ytdl-format=95 'https://youtu.be/eUyr9MJnj4w' --ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" 


Кроме того:

  • Для 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 и не зависит от таблицы форматов)

 ,

krasnh
()

Древнее зло, излом API/ABI в glibc связанный с errno

Форум — Development

Есть очень древняя программа без исходников, скомпилированная под 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:

https://0x0.st/Xy00.png

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

prism: Symbol `srand' has different size in shared object, consider re-linking

Как сделать по красоте и избавиться от этого предупреждения?

Сам файл программы: https://0x0.st/Xy0d.zip/prism.zip

 , , ,

EXL
()

Где взять заграничный VPS с оплатой российскими картами?

Форум — Talks

Собственно сабж. VPS нужен за пределами России. Хочу поднять себе VPN.

Например вижу предложение от RU VDS в Казахстане. Но не знаю что там с местной цензурой. А то из огня да в полымя.

Вопрос в догонку: какой протокол VPN выбрать и какое железо нужно, чтобы 50 мбит/с тянуло?

Перемещено hobbit из general

 ,

ox55ff
()

Исчезают раскладки клавиатуры

Форум — Desktop

Добрый день. Система 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 все нормально

XKBMODEL="pc105"
XKBLAYOUT="br,us,ru"
XKBVARIANT=",,"
XKBOPTIONS="grp:alt_shift_toggle,lv3:ralt_switch,grp_led:scroll"
BACKSPACE="guess"

Ума не приложу, где корень зла? Конфликт с клавиатурой?

 

rustamych
()

intel pentium n3530 - firefox не хочет в аппаратное ускорение

Форум — Linux-hardware

firefox 102esr из реп дивана. Установлены все нужные драйверы: i965 и mesa. vaapi в mpv работает прекрасно - не грузит проц вообще. firefox же чего-то кочеврыжится. Переменные выставлены нужные:

export MOZ_DISABLE_RDD_SANDBOX=1
export LIBVA_DRIVER_NAME=i965

Перепробовал много настроек самых разных, в консоли ничего не было видно про 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 Оказывается, нужна новейшая версия месы.

////////////////////////////////////
    // FEATURE_X11_EGL
    APPEND_TO_DRIVER_BLOCKLIST_EXT(
        OperatingSystem::Linux, ScreenSizeStatus::All, BatteryStatus::All,
        WindowProtocol::All, DriverVendor::MesaAll, DeviceFamily::All,
        nsIGfxInfo::FEATURE_X11_EGL, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
        DRIVER_LESS_THAN, V(21, 0, 0, 0), "FEATURE_ROLLOUT_X11_EGL_MESA",
        "Mesa 21.0.0.0");

Нихрена! У меня диван стэйбл, и на роллинг нет возможности перейти, спасибо разрабам файорфокса. Неужели все пользователи этого слабенького проца должны юзать всё новое? Я думаю, причина того, что vaapi-egl фокса не пашет, не только в этом. У кого такая встройка - отпишитесь пожалуйста что используете)) Сейчас запускаю фокс в консоли - а он сразу после запуска, передает управление терминалу, будто бы с & запущено.

 , ,

gtk222
()

Свой почтовый сервер. Некоторые спамфильтры нас не пропускают.

Форум — Admin

После того, как яндекс изъявил желание стать платным для корп клиентов, с нашей стороны было изъявлено желание развернуть свой почтовый сервер. Что сопсна на новогодних и было сделано. ПО - 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).
Все письма доставляются всем, за исключением:

  1. gmail, туда они попадают в спам, но доходят
  2. Почтовый сервер, где «прикручен» antispam.lotte.net, который возвращает 554 refused to talk to me.
  3. И почтовый сервер, у которого антиспам 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 вдруг пригодится
Я не совсем понимаю куда ещё посмотреть. Где и что не так работает.

 ,

Shprot
()

Исходники порта Doom для кнопочных телефонов на чипе SC6531

Новости — Игры
Группа Игры

Опубликованы исходники порта Doom для кнопочных телефонов на чипе Spreadtrum SC6531. Модификации чипа Spreadtrum SC6531 занимают около половины рынка дешевых кнопочных телефонов российских брендов (остальное за MediaTek MT6261, другие чипы редкость).

В чём состояла сложность портирования:

  1. Сторонние приложения на этих телефонах не предусмотрены.
  2. Малый объём ОЗУ - всего 4 мегабайта (бренды/продавцы часто указывают это как 32МБ - но это введение в заблуждение, так как мегабиты, а не мегабайты).
  3. Закрытая документация (можно найти только утечку ранней и неполноценной версии), поэтому многое добывалось методом реверс-инжиниринга.

В основе чипа процессор 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.

Также были опубликованы два видео: с демонстрацией игры на телефоне и запуском на еще 4-х телефонах.

P.S.: Похожее было опубликовано на OpenNet, новость от меня, только отредактированная админом сайта.

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

Игра Doom была использована для привлечения внимания, в качестве примера, я бы хотел свободную прошивку для кнопочных телефонов. Их чипы гораздо мощнее, чем они используются в прошивке. Причём железо дешевое и массовое, в отличие от редких телефонов с «открытых» ОС или позволяющих выполнять свой код. Пока никого не нашел, чтобы скооперироваться, а реверс-инжиниринг тяжелое развлечение. Для начала было бы хорошо найти управление SD картой и управление энергопотреблением, чтобы можно было использовать эти телефоны как игровую приставку. Дополнительно к Doom можно портировать NES/SNES эмулятор.

>>> Исходный код

 , , , ,

jpegqs
()

Ext4 shared_blocks как создают такие образа?

Форум — General

Наткнулся в андройде на образы ext4 с дедупликацией на блочном уровне.

В фичах стоит shared_blocks.

Такой образ монтируется только при явном указании ro

mount -o ro systaem_a.img test

В режиме rw ругается на неподдерживаемые фичи.

EXT4-fs (loop0): couldn't mount RDWR because of unsupported optional features (4000)

Если добавить ему места и раздедуплицировать, то фича shared_blocks исчезает

resize2fs -f system_a.img 6G
e2fsck -y -E unshare_blocks system_a.img

было:
Filesystem features:      ext_attr dir_index filetype extent sparse_super large_file huge_file uninit_bg dir_nlink extra_isize shared_blocks

стало:
Filesystem features:      ext_attr dir_index filetype extent sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

и теперь можно монтировать образ в rw.

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

 , shared blocks

AVL2
()

Интерфейс цифрового осциллографа

Форум — General

Фырочки всем.

Какие есть опенсорсные морды для вывода осциллограмм и управления девайсами? Начал расковыривать протокол Hantek 2d72 - вроде всё довольно просто, теперь встал вопрос, к какой софтине это приделать, не писать же с нуля.

Пока посматриваю на Sigrok/PulseView ради декодиров, но по интерфейсу он очень уныл.

 , ,

izzholtik
()

Выгрузить видеодрайвер ядра на лету

Форум — Linux-hardware

Для того, чтобы проверять результат вносимых изменений в код видеодрайвера (radeon, amdgpu), хотелось бы его загружать и выгружать на лету. Загрузка через insmod работает, а выгрузка rmmod нет. lsmod пишет что он кем то одним используется и не указано кем. Слишком муторно перезагружать после каждого теста.

Видеодрайвер не используется для десктопа, для десктопа используется встроенная графика Intel с другим драйвером.

 , , , ,

X512
()

Что быстрее (XGetImage+XPutImage) VS XCopyArea VS (XShmGetImage + XShmPutImage) VS GTK+?

Форум — Development

Доброго времени суток.

Написал программу, которая содержимое одного окна отображает в другом. Допустим у меня есть 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? Он ведь отображает содержимое окон в реальном времени, ну или во всяком случае оперативно реагирует на изменения окон которые он отрисовывает, и при этом не напрягает процессор.

 , , , ,

awpe
()

Объявлено о выходе одноплатного компьютера Raspberry Pi Zero 2 W

Новости — Hardware and Drivers
Объявлено о выходе одноплатного компьютера Raspberry Pi Zero 2 W
Группа Hardware and Drivers

Спустя 6 лет после появления Raspberry Pi Zero анонсировано начало продаж следующего поколения одноплатника в этом формате — Raspberry Pi Zero 2 W. По сравнению с предыдущей моделью, сходной по характеристикам с Raspberry Pi B, но с модулями Bluetooth и Wi-Fi, эта модель основана на чипе Broadcom BCM2710A1, таком же как и на Raspberry Pi 3. По формфактору новая плата может быть прямой заменой Pi Zero, в то время как её заявленное быстродействие в 5 раз выше.

На данный момент продажи начались только в некоторых магазинах, а так же бесплатно плата придет подписчикам (в том числе и новым) журнала MagPi.

( Технические характеристики )

>>> Подробности

 , ,

tis
()

Задачка на самый быстрый подсчет встречаемости слов

Форум — Development

Привет,

По мотивам темы: Различия между macOS и GNU/Linux

Есть файлик. Вот он: https://disk.yandex.ru/d/XaavsEkOvCT4HQ

Нужно пройтись по файлику и посчитать встречаемость каждого слова в тексте. Словом считается любая последовательность букв от 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.

 

hibou
()

Посоветуйте одноплатник для работы в качестве десктопа

Форум — Desktop

Subj. Чтобы искаропки заработало 3D-ускорение, чтобы декодирование было hardware’ное, чтобы ddr4 от 4gb, чтобы какой дистро не взял (aarch64) - оно просто работало. Интересует только одноплатник на arm. С малиной напердолился уже вдоволь - ускорение 3D/декодирование видео если и работает то только в RaspiOS 32bit, в aarch64 только 3D только и смог завести, потому и ищу замену.

 ,

shashilx
()

О вреде ООП надо говорить! Это - слишком важная тема, чтобы отмалчиваться.

Форум — Talks

Здравия всем!

Я редко пишу на этом форуме, никого здесь не знаю… Но всё-таки решил попробовать. Удалят - и ладно.

Хочу лишь обратиться к молодому поколению программистов: в университете вам будут впаривать ООП - не ведитесь. Я много лет жизни потерял пытаясь понять что это за зверь. Это настоящая религия. Тебя убеждают что это хорошо, а когда ты понимаешь что это плохо - тебе говорят: ну ты просто ещё не знаешь паттернов, 5 принципов дяди Боба и т.д.

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

Есть много статей, разбирающих по косточкам различные аспекты ООП. Это тяжелое чтиво и мало кто из студентов сможет понять о чём речь. Тут сессии, курсовые, языки, вечеринки. Не до философии. Но всё сводится именно к философии:

информация ничего не значит без контекста.

В классическом примере ООП используется для пользовательского интерфейса. ООП объект хочет быть самостоятельным, «знать» как себя отобразить. Но это зависит от размера экрана, а если вывод в документ PDF, то предпочтительнее вектор, а не растр и так далее. Рано или поздно работа с ООП постоянно натыкается на конфликт: как передать контекст объекту.

Об этом много сказано, есть много примеров и разборов. Я уверен что студентам некогда читать длинные статьи где много буков. Они легко гуглятся и вот одна из наиболее кратких со ссылками на более подробные https://habr.com/ru/post/451982/

В идеале, хочу создать новую статью, ещё короче но с конкретными примерами. Просто реально трудно общаться с ООП-зомбированными людьми. Их так учили 5 лет и они даже не допускают мысли что их разводили все эти годы…

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

 

svyatozar
()

Потянет ли старый одноядерный ноутбук 1080p с ютуба?

Форум — Linux-hardware

Вот мне тоже стало интересно, и вот в один прекрасный день на авито нашел объявление что целых 4 ноутбука продавались за 1100 рублей (275 каждый). Я не мог удержатся и купил их…

Я запустил archlinux32 с флешки (ide-винты были полностью мертвы) и заработало оно шустрее чем я изначально ожидал.

Просто много раз читал (и здесь тоже) что даже core 2 duo «разве что на помойку» и т.д. Вот я решил развеить мифы:

https://youtu.be/om1Y5VNZ5pM

~14:00 я запускаю fullhd, причём онлайн. Без загрузки. И в интернет прекрасно выхожу.

Характеристики пациента:

  • Pentium m 1.7 Ghz
  • 2 GB DDR2 ram
  • intel gma915 graphics

P.s. Специально для @eco_dd mpv hardware acceleration на вяленом (комментарий) я на этом же ноутбуке сравнил одно и тоже видео в mpv (как gpu, так и xv) и в mplayer. Mpv однозначно сливается.

 , , , ,

gtk3
()

Какой VPN сервис юзает ЛОРовец в конце 2020 года?

Форум — Security

Сабж. Где нормально работает WireGuard под линуксом, где меньше проблем с капчами и т. д.

 , ,

Pacmu3ka
()

Медленно масштабируются X11 окна

Форум — Desktop

Программы на голом протоколе X11 или Motif (xclock, acme, nedit) медленно меняют размер окна и содержимое дёргается. С программами на Qt/GTK такого не наблюдается. Кто нибудь знает, чем это вызвано? X.Org сломали?

openSUSE, KDE

 ,

X512
()

В питон завозят паттерн-матчинг

Форум — Development

Кто бы мог подумать, ещё лет 5 назад, что питон получит типизацию и функциональщину. Но нет:

def is_tuple(node: Node) -> bool:
    match node:
        case Node(children=[LParen(), RParen()]):
            return True
        case Node(children=[Leaf(value="("), Node(), Leaf(value=")")]):
            return True
        case _:
            return False

История показывает, что участь любого популярного ЯП - С++ ужас.

https://www.python.org/dev/peps/pep-0622/

 

RazrFalcon
()