LINUX.ORG.RU

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

Игры в терминале

Форум — Games

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

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

Теги для поисковых ботов (жрите мои любимые ботики): ascii games, terminal games, ncurses games, tty games, console games, cli games, tui games, text-based games, command line games, игры в терминале, игры в консоле, игры для командной строки.

Критерии отбора:

  1. Язык программирования: Си(в приоритете), си++. Остальные пока не рассматриваются. Потенциальные в будущем - ада, фортран, бейсик, паскаль. Жирный пайтон идет лесом, хипстерские гоу, раст и иже с ними туда же.
  2. Открытые исходники с лицензиями, позволяющими модификацию, не препятствующие распространению. Свободные и одобренные дядюшкой Столлманом в приоритете.
  3. Зависимости. Без sdl и других графических либ. Опционально пускай будет, например, для музыки. Но не навязывается. NCurses и подобные библиотеки для работы с терминалом всяко одобряются и котируются. Не приветствуются в зависимостях всякие гугловские юнит тесты и другие чёрт ногу сломит либы. Для маленьких терминальных игр эта мишура не нужна.

Источники игорей:

  1. https://ttygames.wordpress.com/
  2. https://github.com/ligurio/awesome-ttygames
  3. https://inconsolation.wordpress.com/
  4. https://kmandla.wordpress.com/
  5. https://ibiblio.org/pub/linux/games/ Артефакты прошлого. Игры для терминала надо искать. Не всё собирается с современным компилятором.
  6. gopher://sdf.org/9/users/saahriktu/bttf/gamez_p0.tar.lzma (использовать lynx) - сборник ascii игр, собранный камрадом @saahriktu
  7. https://www.youtube.com/user/livibetter/videos
  8. https://zenway.ru/tag/ASCII
  9. https://blends.debian.org/games/tasks/console
  10. ASCII игры по Linux
  11. Поиск на github.com, gitlab.com по соответствующим запросам
  12. Поиск рогаликов на http://www.roguebasin.com/index.php?title=Category:Roguelike_games
  13. Все поисковики, даже малоизвестные иногда выдают страницы, на которые не попадешь с гугла или яндекса.

Сами игори:

!!!NEW!!! 1. 8f - Терминальный вариант карточной игры Сумасшедшие восьмёрки (Crazy Eights).

  1. Alienwave - Сложная Galaga-подобная игра с хорошим ascii-артом.
  2. Bricktick - Красивый клон арканоида с бонусами.
  3. CLines - Качественная реализация всеми известной офисной игры Color Lines.
  4. Dominoes - Реализация одного из вариантов игры Домино.
  5. Lwrace - Бегаем символом «O», собираем «$», избегаем «#», уворачиваемся от «o».
  6. Morpion solitaire - Отличная реализация отличной же тетрадной игры Join Five.
  7. MyMan - Пакман для терминала с множеством настроек.
  8. Peg-solitaire.c - Добротная реализация одноименной настольной игры с 5-ю раскладками.
  9. XT gyoretsu - Воссозданная с любовью и с ncurses старая тетрадная игра.
  10. Ztrack - Псевдо-тридешные гоночки с красивым бэкграундом.
  11. to be continued

 , , ,

nab_linux
()

Способы переименования сетевого интерфейса через udev

Форум — Admin

Приветствую.

Встречал я 3 основных варианта как можно через udev переименовать сетевой интерфейс. К примеру:

KERNEL=="eth0", ACTION=="add", ATTR{address}=="40:6b:1b:20:42:35", NAME="inet"
и
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="40:6b:1b:20:42:35", NAME="inet"
и
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="40:6b:1b:20:42:35", KERNEL=="eth*", NAME="inet"

Все работают, но есть ли какая-то разница между ними и какой лучше?

 ,

mag-gendalf
()

Intel выпилил S3 (suspend-to-ram) в 11 поколении

Форум — Desktop

Привет, ЛОР!
Решил рассказать о своей истории узбека сношения с ноутбками на Intel 11 поколения.

Конкретнее — сегодня поговорим о засыпании (suspend, suspend-to-ram, S3).
Если вкратце — засыпания в ноутбуках больше не будет. Вообще. Совсем.

Ссылка: https://www.reddit.com/r/System76/comments/k7xrtz/ill_have_whatever_intel_was...

Вместо Ъ-засыпания S3 (с обесточиванием всей периферии, кроме оперативной памяти) — теперь некий S0iX.
Это значит, что процессор теперь не будет обесточиваться и будет работать всегда.
Кроме очевидных минусов вроде уменьшения времени автономной работы в режиме засыпания, есть ещё и неочевидные — вроде тех, что из-за того, что CPU (и, вроде как, некоторая периферия) будет включена всегда — за нами будут следить ещё лучше и тщательнее.

Ну и, конечно же, в Linux ближайшее время это будет поддерживаться через жопу.
Например, на последнем лаптопе от Fujitsu (Lifebook U7311) засыпание не работает вовсе, потому что BIOS лаптопа бодро рапортует о поддержке S3, которое CPU, естественно, не поддерживает, с предсказуемым результатом.

А ещё сегодня мы поговорим о том, чем заменить S3 (точнее, об альтернативе б-мерзкому S0iX, накостыленной шаловливыми ручонками линуксоида).
fakesleep.sh — скрипт, который делает примерно то же самое — «усыпляет» пользовательские процессы (kill -STOP), усыпляет USB-девайсы, отключает указанные ядра процессора и выключает дисплей (и, конечно же, «вертает всё взад» при «пробуждении»).
Использовать его очень просто: нам понадобится acpid и пара нехитрых скриптов:

/etc/acpi/events/laptop-lid

event=button/lid.*
action=/etc/acpi/laptop-lid.sh

/etc/acpi/laptop-lid.sh
#!/bin/sh

FAKESLEEP=/home/ann/.bin/fakesleep
ACTION=$(grep -q closed /proc/acpi/button/lid/LID/state && echo sleep || echo resume)

$FAKESLEEP $ACTION

Естественно, нужно подправить несколько переменных в скрипте и путь до этого скрипта в laptop-lid.sh.

Как результат — ноутбук при закрытой крышке не засыпает полностью (как и в S0iX), но при этом мы можем контролировать процессы, которые мы останавливаем/не останавливаем, при этом время автономной работы в режиме «спячки» такое же (фиговое, но терпимое):
ann.: ~ ➤  acpi                                                                                                                                                                                                                                      
Battery 0: Discharging, 86%, 25:17:22 remaining

(проверено по SSH, которое остаётся доступным как раз благодаря тому, что мы контролируем, какие процессы мы усыпляем, а какие нет)

Просьба всем использующим 11 поколение Intel и сочувствующим протестировать это поделие и дать советы по улучшению/ухудшению этого всего хозяйства.
Естественно, это всё юзабельно не только на 11 поколении, а на любом ноутбуке.

sudo cast i-rinat (на всякий случай)

 , ,

annerleen
()

Linux гейминг на диване. ChimeraOS.

Форум — Talks

https://chimeraos.org/

Особенности:

  • ChimeraOS - дистрибутив, который предоставляет диванный гейминг экспириенс из коробки. После установки вы загружаетесь сразу в Steam Big Picture и можете приступать к игре!

  • Легкая установка

  • Минимализм. Диструбутив содержит только то, что необходимо для игр

  • Нет необходимости в конфигурации игр из списка поддерживаемых. Можно приступать сразу к игре. ==> Список

  • Регулярные обновления драйверов и ПО

  • Дистрибутив основан на Arch Linux

  • Полностью автоматические обновления в фоновом режиме. Ваш гейминг не будет прерван.

  • Поддержка Xbox, PlayStation, Steam контроллеров и других

  • Поддержка Steam, Epic Games Store, GOG и других платформ.

Демонстрация:

https://youtu.be/E2NIGPpz_vY

 ,

Zadoff386
()

Управление файлами конфигурации при помощи GNU Stow

Статьи — Администрирование

GNU Stow — это менеджер символьных ссылок. Он позволяет управлять файлами конфигурации и установкой программ из исходников. При помощи Stow можно устанавливать программы из исходных кодов в обход менеджера пакетов, не боясь сломать систему. Также им удобно управлять файлами конфигурации (далее дот-файлами) в домашнем каталоге пользователя.

( читать дальше... )

 ,

den-jc
()

Восхитительная вещь: Linux Live Kit, но как настроить первоначальный экран, zRam, persistence (чистый аналог MX Linux с полноценной средой)?

Форум — General

Всем доброго утра!

Tomas Matejicek (автор Slax Linux) решил провести мастер-класс по альтруизму и создал инструмент, позволяющий буквально в пару кликов создать Live-версию любой операционной системы (ну, почти любой).

https://www.linux-live.org/

https://github.com/Tomas-M

Порядок действий: очищаем установленную и настроенную систему от мусора, проверяем наличие пакетов squashfs-tools, genisoimage, zstd, если нет - ставим, чистим кэш, скачиваем и распаковываем https://github.com/Tomas-M/linux-live/tarball/master

Идем в .../Tomas-M-linux-live-7d4ad09/bootfiles/

открываем syslinux.cfg добавляем пункты меню:

LABEL default
MENU LABEL Toram on
KERNEL /boot/vmlinuz
APPEND vga=769 initrd=/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 apparmor=0 toram
LABEL default
MENU LABEL Persistence on
KERNEL /boot/vmlinuz
APPEND vga=769 initrd=/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 apparmor=0 perch

Возможно, еще также должна работать и комбинация:

LABEL default
MENU LABEL Persistence on, Toram on
KERNEL /boot/vmlinuz
APPEND vga=769 initrd=/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 apparmor=0 perch toram

Не проверял, если честно.

Сохраняем, закрываем.

Также заменяем скучные обои bootlogo.png на наш несравненный .png размером 640х480.

Идем в /Tomas-M-linux-live-7d4ad09/build находим строки:

if [ "$SKIPCOREMOD" = "" ]; then
mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp xz -b 1024K -Xbcj x86 -always-use-fragments -keep-as-directory || exit
fi

и заменяем на:

if [ "$SKIPCOREMOD" = "" ]; then
#   mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp xz -b 1024K -Xbcj x86 -always-use-fragments -keep-as-directory || exit
#   mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp lz4 -always-use-fragments -keep-as-directory || exit
   mksquashfs $COREFS $LIVEKITDATA/$LIVEKITNAME/01-core.$BEXT -comp zstd -always-use-fragments -keep-as-directory || exit
fi

Можно попробовать через lz4, но xz - точно не стоит, никакого кофе не хватит.

Сохраняем, закрываем.

Идем в /Tomas-M-linux-live-7d4ad09/config находим строку:

LIVEKITNAME="linux"

Заменяем linux на название нашего дистрибутива (латиница, без пробелов), или любое название, которое считаем эстетически привлекательным.

Сохраняем, закрываем.

Запускаем через sudo или от root: ./build

Ждем, если все отработало как нужно - идем в /tmp/ и забираем наш каталог linux-live. Перебрасываем его на флешку (я форматировал ее в ext4) и запускаем уже с флешки «наше название системы»/bootfiles/bootinst.sh

Всё. Если вдруг «не всё» - то читаем файлы readme, там всё предельно ясно расписано. Ну почти всё.

Также в /tmp/ будет лежать скрипт для создания iso образа, если вдруг он нам нужен.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

Теперь вопросы к пользователям Slax (но и не только):

- как по аналогии с 01-core.sb сделать, ну например, 02-vb.sb и сохранить в нем слой с установленным VirtualBox? При этом, чтобы была возможность подключать и отключать его (равно как и другие слои/образы) на лету.

- как отредактировать оформление этого чудного начального меню с таблицей из 90-х и цветами, которые вышли из моды еще во времена молодости моей бабушки?

- как сделать чтобы при включении perch изменения шли не в каталог /changes/ на нашей флешке, с дублированием корневой системы, а как-то по уму, например, единоразово при выключении в единый файл со сжатием?

- как работает zRam? Всегда ли происходит сжатие всего, что идет в память, или только тогда, когда свободная память подходит к концу? Если всегда, то как отключить эту опцию? Интуитивно - zram=off или zram=0 в начальном меню, но не уверен.

Ну и наконец - зачем городить весь этот огород, если можно взять готовую MX Linux? Во-первых, Вы можете попробовать проделать это с любой системой, а не только с модификацией Debian без Systemd (понимаю, что для гуру - не критично, но для новичков - это ад, когда «все делаешь по инструкции», но ничего не работает, ибо у тебя «особенная» система), во-вторых, Вам не нужно вычищать весь мусор, который сочли нужным положить в систему разработчики дистрибутива - Вы просто берете и настраиваете все сами (на самом деле нет - придется 100500 раз задать вопросы на ЛОРе), с нуля, с консоли, устанавливая только то, что нужно, ну и в третьих, (продолжая тему доверия к AppImage - Какие репозитории AppImage можно считать «безопасными»?) к репозиториям основного семейства дистрибутивов всё-таки больше доверия. Но это уже дело вкуса.

 , , , ,

Starover
()

Ubuntu на m1 через Multipass

Статьи — Администрирование

Всем привет! Понадобилось сейчас запустить один очень специфичный софт(корпоративный), который работает только на бубунте. А так как у меня есть только macbook pro 2020 года, который на m1. То пришлось поднять бубунту на нем.

( читать дальше... )

 , , ,

romanlinux
()

Переводилка для вашего ПекА

Форум — Talks

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

Обновлено.

Зависимости apt install lua xclip xsel xdotool aosd_cat translate-shell

Вопщем таксь.
Порой, нужно не просто выделить текст где угодно и увидеть его по перевод по горячей клавише,
но и получить его перевод в виде текста. К счастью в x11 есть аж три буфера обмена.
Поэтому добавил опцию copy_translated=true/false.

Суть проста:

  • вешаете скрипт, например на F7
  • выделяете произвольный текст без его копирования через контекстное меню(как и было)
  • нажимаете F7 и
  • всплывает текст перевода (как и было)
  • нажимаете среднюю кнопку мышки и в любом поле ввода вставляется оригинальный текст
  • нажимаете правую кнопку мышки и через контекстное меню делаете вставить и вставляется переведённый вариант
  • повторное нажатие F7 ещё раз покажет перевод, без повторного выделения
#! /bin/env lua
local poptrans =
{
    -- select language from lang to lang
    lang_from = "auto", --auto,en,fr,de or other
    lang_to   = "ru",
    -- copy translated text to clipboard
    -- if you select text (no use context menu textcopy)
    --   - middle mouse button paste translated text
    --   - right mouse button context menu paste original text
    --   - script used 2 levels X11 clipboard buffest of 3 levels :)
    copy_translated = true,
    -- how more seconds show you translated text
    show_timer = 3,
    -- popup translated text under mouse position
    follow_mouse = true,
    -- if follow_moise is false, set translated
    -- text position static coords
    popup_pose_x = 0,
    popup_pose_y = 0,
    -- max width message in screen, zero is auto
    popup_width  = 0,
    -- get text from system clipboard
    app_clipboard = "xclip -o 2> /dev/null",
    -- set text to system clipboard
    app_set_clipb = "xsel -b -i ",
    -- get mouse systemd coords
    app_mousepose = "xdotool getmouselocation 2> /dev/null",
    -- show text popup with translated text
    app_popup_msg = "aosd_cat -x %d -y %d -B white -R white -t 0 -p 0 -u %d -w %d"
}

function poptrans:run()
    local translated = '';
    self.previos_text = '';
    -- read clipboard
    local exec = io.popen(self.app_clipboard);
    local text = exec:read('*all');exec:close();
    -- get cursor position
    exec = io.popen(self.app_mousepose);
    if self.follow_mouse then
        self.popup_pose_x,self.popup_pose_y = exec:read("*all"):match("x:(%d+) y:(%d+)");
        self.popup_pose_x = self.popup_pose_x+3; exec:close();
    end
    -- do not translate previos text or empty or translated text
    if text ~= previos_text and text ~= '' and text ~= translated then
      local from = ''
      if self.lang_from ~= "auto" then
        from = self.lang_from;
      end
      exec = io.popen('trans   '..from..':'..self.lang_to.." -b '"..text.."'");
      translated = exec:read("*all"); exec:close();
      if self.copy_translated then
         exec = io.popen(self.app_set_clipb,'w')
         exec:write(translated:sub(1,#translated-1));
         exec:flush();
         exec:close();
      end
      previos_text = text;
      exec = io.popen(
      self.app_popup_msg:format(
      self.popup_pose_x,self.popup_pose_y,self.show_timer*1000,self.popup_width),"w");
      exec:write(translated);exec:close();
    end
end

poptrans:run()

Не используйте версию из истории правок!. Там опасный баг с кавычками, (спасибо @maxcom исправить дал)
Единственное что там полезно это пример как делать перевод через гугл API по токену.
Но раз появилась возможность правки то ::)

- ИСПОЛЬЗОВАТЬ НА СВОЙ СТРАХ И РИСК, Я НЕ НЕСУ НИКАКОЙ ОТВЕТСТВЕННОСТИ
- ВСЁ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ, ЛЮБЫЕ СОМНЕНИЯ ДОЛЖНЫ ВЕСТИ
- К ОТКАЗУ ОТ ИСПОЛЬЗОВАНИЯ

 , , , ,

LINUX-ORG-RU
()

Multiboot USB Creator (YUMI, Ventoy, Easy2Boot,..)

Форум — Linux-install

На фоне всеобщей истерии по поводу Ventoy (любят его и хейтят поголовно) мне хочется спросить про https://www.pendrivelinux.com/yumi-multiboot-usb-creator/ и иные аналоги Вентоя.

Чего хочется: в случае с Юми, под Виндой, а в случае аналогов на вроде https://easy2boot.xyz/ – из любой системы, создавать мульти-загрузочные USB Flash, притом обязательно с возможностью бутаться этой флешкой и в режиме BIOS, и в UEFI-режиме. Потому как иначе, если это первейшее правило не соблюдается, то необходимо 2 флеш-карты иметь с собой на ключах: для Биос и для Юифай, чего очень не хочется.

Статья в тему: https://en.wikipedia.org/wiki/List_of_tools_to_create_bootable_USB (эта статья про синг-бут утилиты, что не совсем в тему нашей беседы, ибо с синг-бут утилитами всё очень даже ясно и понятно. Единственное, я хочу предостеречь вас от юзанья Руфуса: эта всеми любимая утилита не умеет делать флешки загружаемые и в Биос и в Uefi, в отличие от обожаемого мною WoeUSB-ng).

 , ,

SerW
()

samba и каталоги с точкой в конце.

Форум — Admin

Подскажите откуда мог вылезти косяк и можно ли его обойти?
Есть древний Debian Stretch x64
Есть samba 2:4.5.16+dfsg-1+deb9u4
Зайдя в очередной раз на шару с ноута с Windows 7 - обнаружил каталоги кракозябры... Начал разбираться и выяснил что нечитаемыми становятся каталоги оканчивающиеся на '.' ну или содержащие '«'
Я понимаю что это спецсимволы, но они же присутствуют в именах файлов/каталогов и их надо отдать по сети.
Проблема проявилась на кривом Яндекс Диске, клиент которого отсутствует в Линуксе, и приходится заливать раздав через самбу Винде. Через WebDAV всё тормозно, а зеркальный демон не удобен... Я просто решил вынести в облако - часть содержимого сетевого раздела.

Есть ли какое то решение этой проблемы?

 , ,

n0mad
()

FireJail — краткое и ознакомительное практическое руководство

Статьи — Desktop
FireJail — краткое и ознакомительное практическое руководство

Сейчас существует прорва механизмов изоляции приложений — от песочниц до виртуальных машин. Целей их применения тоже множество, но так или иначе всё сводится к тому что нужно ограничить доступ приложений к тем или иным ресурсам вычислительного устройства.

Ниже я хочу описать почти золотую середину в лице утилиты firejail в виде практических советов по использованию в первую очередь для обычных пользователей и (возможно) разработчиков.

( читать дальше... )

 , , , ,

LINUX-ORG-RU
()

vim для самых маленьких

Статьи — Desktop
vim для самых маленьких

Основные команды текстового редактора vim

( читать дальше... )

 , ,

LINUX-ORG-RU
()

О зоологии и программировании

Форум — Talks

https://habr.com/ru/post/254473/

Вы неправильно пишете животных

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

Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сохранением контрольной суммы, чего вполне достаточно для повышения прав в гнезде.

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.

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

Теперь муравьи. Муравьёв довольно легко зациклить. Навигационный блок у них совмещён с системой приоритетов ОС, поэтому при построении циклического маршрута образуется «спираль смерти», затягивающая всё больше и больше ресурсов муравейника – и всё это зависает на 3-4 дня, пока муравьи не погибнут от истощения или что-то снаружи не поменяет навигацию.

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

А вот страус – вершина оптимизации. То, как именно в него впихнули пищеварение, вообще достойно войти в «Жемчужины программирования». Чтобы эта птичка нормально переваривала пищу, разработчик придумал заставить его натурально жрать камни. При беге камни трясутся и перемалывают зёрна. Теперь самое весёлое. Чтобы не писать отдельный код для поедания камней, страусу просто взяли и отключили центральный сектор зрения (как зайцу, но там это известный минорный баг). Поэтому когда страус целится в зерно, он попадает только в 30-50% случаев. Что легко позволяет набирать нужное количество камней, да ещё и с запасом. Именно поэтому страусы, запущенные на чистой виртуальной машине в зоопарке, испытывали проблемы с пищеварением до появления поддержки камней на уровне гипервизора. Кстати, коровы тоже жрут гвозди и иногда гравий, но это не в архитектуре, а просто техническая ошибка обратной совместимости.

Да, и ещё. Очень хорошая вещь – повторное использование кода. Часть функционала с камнями потом накатили на крокодила – чтобы ему нырялось лучше. Ныряется действительно лучше.

Проблемы энергопотребления решаются не менее гениально. С рептильной платформой всё ещё более-менее нормально (там просто нет долгих высокоуровневых процессов), и крокодил может сидеть сутки без движения до поимки мяса. А вот с теми же крупными хищниками всё пожёстче мобильных ОС. На 20 часов в сутки лев снимает все активные процессы и уходит в спящий режим. Примерно 4 часа он находится в активном режиме – рычит, размножается, сёрфит по саванне и находит новую зарядку в антилопе или зебре.

Дельфину вообще не всегда удаётся включать оба ядра мозга – только тогда, когда нужно делать что-то важное. Если вам встретился тормозящий дельфин – проверяйте, оба ли глаза открыты. Только один? Значит, он в спящем режиме и работает на одном ядре с пониженной тактовой частотой.

Медведь не всегда корректно выходит из hibernate-режима. Это же, кстати, касается некоторых растений, но там баг не так опасен. Растения легко перезапустить. И да, учитесь у тех, кто писал альбатроса. Альбатрос вообще спит в воздухе.

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

Белый медведь – отличный пример работы с солнечной энергией. Медведь прозрачный в УФ по меху и чёрный на коже. Это уже торжество инженера.

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

Морской свинке и ряду рыб косо прописали задержки на прерываниях. Если обычное животное по очереди опрашивает прерывания вроде «нет ли опасности», «не надо ли попить», «не надо ли поесть», «не надо ли начать размножаться», «не надо ли лечь спать» и «не надо ли выполнять нестандартную процедуру» — и всё это без видимого переключения — то морские свинки делают sleep(1000); после каждой операции. Видимо, осталось с отладки и вошло в релиз.

Хорошей идеей было накатить код сборщика мусора в ОЗУ от золотой рыбки на белку – garbage collector с высокой вероятностью очищает и неиспользуемые указатели на места размеченных орехов и семечек. В результате благодаря белке вырастает много новых деревьев.

Вот индийскую кобру точно писал фанат Starcraft. Потому что, задумайтесь, где ещё можно встретить юнита, плюющегося ядом на два с половиной метра точно в глаз террану.

Ну и раз начали о нерациональности – вспомним того же осьминога. Километры нервной ткани просто потому, что кому-то было интересно написать его на brainfuck. Да если использовать эти отдельные модули управления присосками, ту же ткань – может получиться вообще ЦОД на колёсиках.

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

Тлей и других насекомых, а также ряд животных точно писал бешеный фанат рекурсии. Светлая мысль рождать некоторых уже беременными – просто вынос мозга для тестеров. Зато слонёнок деплоится 22 месяца — вот что значит не влезть в кэш процессора.

Кстати, пасхалка с бегемотом получилась смешная. Люди боятся львов, носорогов, змей – но только этот обаятельный толстяк целенаправленно бегает за человеком. И, внезапно, со скоростью до 30 км/ч. То есть догоняет даже велосипедистов.

У некоторых кошек не убрали аппаратный байпасс в районе шкирки. Стоит взять взрослую систему за это место, так сразу отключается двигательная активность. Что породило опасный баг с прищепкой, которым часто пользуются скрипткидди.

У курицы расслабленная лапа «защёлкнута», поэтому если поставить курицу на ветку, дождаться, пока она уснёт, а потом легко и быстро перевернуть, сработает рефлекс – и у вас будет курица, спящая вниз головой на дереве. Главное – подготовить почву и рассказать всей деревне про вампиров за день до зрелища такого курятника.

У собак и ряда других хищников и падальщиков косо прописано распознавание добычи. В одном из условий AND случайно заменили на OR, и вот результат — известный баг с запуском приоритетного процесса с атакой на пятно лазерной указки.

В общем, вы наверняка и сами можете продолжить.

P.S. Обратите внимание, что большая часть описанных уязвимостей до сих пор не исправлена.

 

question4
()

Говорилка через спикер.

Форум — Multimedia

Есть ли что-то лайтовое под топик?

Помнится, под ДОС было много подобных, а вот под топик не встречал. Нужно для озвучивания системных статусов и ошибок именно через спикер. Ну и маленькое, а не современный мегамонстр.

 

Bearded_Dantes
()

Использование tmpfs для ускорения работы игр

Статьи — Desktop

Разберем ускорение работы с помощью tmpfs на примере Daggerfall Unity.

( читать дальше... )

 ,

vbcnthfkmnth123
()

bash проверка на число

Форум — Development

Подскажите как в bash проверить является ли параметр числом. В интернете нашел такой пример:

#!/usr/bin/env bash
if ! [[ $1 =~ '^[0-9]+$' ]]; then
    echo "$1 не является числом." >&2
    exit 1
fi   
echo "$1 - число."
но у меня он не работает.
mike@mikepc:~/src/test$ ./test.sh 5
5 не является числом.
Подскажите что я делаю не правильно?

 

Miker
()

uniscreen: делаем снимок всех рабочих столов для unixporn

Статьи — Desktop

Для быстрого создания снимка вашей композиции — для галереи ЛОР’a и не только — воспользуйтесь утилитой uniscreen, автоматизирующей многократные попытки сделать идеальный скриншот.

( читать дальше... )

 unixporn, ,

LINUX-ORG-RU
()

Funtoo from Scratch

Статьи — Разработка

Руководство по сборке Funtoo в окружении, не основанном на Funtoo Linux. Цель — показать процесс создания stage3 Funtoo в «произвольном» linux-окружении на примере GNU сборки.

( читать дальше... )

 , ,

vvn_black
()

AMD E1-2100

Форум — Desktop

Нашел на помойке этот раритет.

Процессор - продукт сумрачного гения амуде, 2×1ГГц, одноканальный. Турбо режим не предусмотрен.

Ноут был в нерабочем состоянии, слетел биос. После реанимации встал вопрос - что на него установить.

Памяти сейчас 4Гб, хард на 500Гб. Память, в принципе, можно докинуть, хард сменить на ссд.

Собирать на этом генту - так себе идея, кмк. Хотя можно кинуть его на полку на неделю, пусть компиляет.

Можно попробовать бинарный дистр + самосборное ядро.

Хотелось бы послушать мнения лоровцев на этот счет.

 , ,

utanho
()

Как узнать какое приложение использует buff/cache? Очень большое потребление buff/cache и мало free памяти. При этом растет своп.

Форум — General

Как узнать какое приложение использует buff/cache? Как узнать какое приложение использует buff/cache? Очень большое потребление buff/cache и мало free памяти. При этом растет своп. Как диагнастировать и выяснить виновное приложение?

Какие настройки подкрутить что бы заставлять чаще флушить буффер и кэш и приоритет на очистку кэша а не использование свопа.

  • и да я исполью vm.swappiness =1

 , , ,

glorsh66
()