Мемуары фреймбуферщика
Игра под Linux DefCon
В 2006 году Introversion Software выпустила кроссплатформенную сетевую стратегию DefCon (Угроза войны), о трех часах ядерной войны. Игра без сюжета, без уровней, почти без графики, почти без музыки. Создатели игры выбросили все, что говорило, что это просто компьютерная игра. Поэтому игрок полностью погружается в эти три часа, трясется, когда его народ погибает под ядерными взрывами, и не злорадствует, когда у соперника погибают люди.
Графика специально упрощена. Кажется, что вся карта — это большой радар. Города отображаются ромбиками, ракеты — пятиугольники типа «карандаш», траектория — ломаная линия, корабли всегда отображаются горизонтально, самолеты всегда с видом сверху, пусковые установки треугольниками. Тем не менее современная графика тоже присутствует, но она взяла на себя второстепенные задачи: контуры материков, контуры обозримых радароми областей, плотность населения. Очень схематичное представдение поля боя сильно бъет по воображению. То, что недопаказывает монитор, дорисовывает мозг.
Три воздушных юнита: истребитель (атакует крейсеры, авианосцы, самолеты), бомбордировщики (атакует здания, подводные лодки, запускает ядерныме ракеты малой дальности в города), запущенная ядерная ракета.
Три наземных юнита: радар (расчищает туман войны), ПРО/пусковая_установка (сбивает ракеты, самолеты, стреляет по кораблям/запускает ядерные ракеты большой дальности), авиабаза_истребителей/бомбордировщиков (хранит и заправляет несколько истребителей/бомбордировщиков).
Три морских юнита: крейсер (стреляет по крейсерам, авианосцам, самолетам), авианосец (как небольшая подвижная авиабаза/ищет подводные лодки), подводная_лодка (стреляет торпедами по кораблям, при активном сонаре видит другие корабли/запускает ядерные ракеты средней дальности).
Почти все юниты обладают несколькими функциями, но не в одно и тоже время. Это одна их основных отличительных особенностей игры. Чтобы сменить функцию юнита нужно время. Поэтому игрок постоянно принимает решение: сбивать ракеты и самолеты или бомбордировать, со взлетной полосы взлетают бомбордировщики или истребители, подводные лодки незаметно плывут или всплывают на поверхность для бомбежки или активно сканируют территорию.
В игре пять степеней угрох войны последовательно сменяют друг друга. Пятая — мобилизация, надо расставлять юниты на исходные позиции. Четвертая — включаются радары. Третья — атакуют корабли и самолеты. Вторая — не знаю, но кажется самолетам можно атаковать наземные юниты. Первая — можно запускать ядерные ракеты.
В игре нельзя победить, можно лишь проиграть с наименьшими потерями. Цель — население, сосредоточенное в городах. Свое надо защитить, вражеское — уменьшить. В демо-версии, которую можно скачать с сайтаразработчиков, колличество игроков ограничено двумя. Искусственный интелект сильный, но не сравниться с человеком.
В Игромании DefCon получил 8,5 баллов из десяти. Игра просто гениальная. Под линуксом запускается без проблем. Системные требования низкие. Мне очень понравилась.
Девушки присоединяются к POSIX
Так ли страшна консоль Linux, как о ней думают?
Хотел написать об этом. Но нашел готовую статью. Взято отсюда: .
< <
Так ли страшна консоль Linux, как о ней думают?
Один из распространенных стереотипов о Linux среди новичков говорит о том, что здесь почти ничего нельзя сделать без знания консольных команд. Ну, в действительности это конечно не так, то есть уже далеко не так. Однако несмотря на развитие таких графических сред как Gnome и KDE, и огромное количество графических конфигураторов, все же большое количество пользователей Linux рано или поздно приходит к мнению, что с консолью стоит познакомиться. В данной статье я попробую описать основы работы с консолью и показать как она может помочь в ряде случаев сэкономить время и увеличить производительность труда. В Windows кстати также существует консоль, однако там ее редко используют, не в последнюю очередь через ее некоторую ограниченность. Консоль Linux имеет на порядок больше возможностей но много мигрантов из платформы Windows о них и не догадываются. К сожалению.
Начнем с теории. Под консолью обычно понимают текстовый интерфейс которому пользователь указывает, что делать с помощью набора на клавиатуре специальных команд, а результат их выполнения может видеть на экране. Данная функциональность в Linux обеспечивается специальной программой — командным процессором. В мире существует много типов командных процессоров (sh, csh, ksh, bash и др.) однако в современных дистрибутивах Linux обычно используется bash. В других системах *nix могут использоваться и другие процессоры, например sh, поэтому, чтобы не было проблем с кросплатформенным софтом в Linux также можно найти файл sh но обычно он является просто символической ссылкой на тот же bash. Все мы знаем, что графический интерфейс Linux не является настолько жестко интегрированным в систему, как например это сделано в Windows или BeOS, то есть в действительности вы можете использовать свою систему и без установленной X Windows System (в просторечии “иксы”), тогда при загрузке системы вас спросят логин и пароль после чего загрузится командный процессор и вы попадете в текстовую консоль. В графическом же режиме в вашем распоряжении всегда есть так называемые эмуляторы терминала которые позволяют открывать консольную сессию в вашем графическом менеджере.Первое, что нужно знать, это то, что в вашей системе уже предусмотрено шесть независимых текстовых консолей. Между ними можно переключаться нажимая клавиши Ctrl+Alt+F1..F6. Нажав какую-то из этих комбинаций клавиш вы попадете в чистую консоль с полноэкранным текстовым режимом. Каждую из консолей можно использовать независимо от других, то есть можно запустить на одной из них одну программу, а на другой еще какую-то и переключаться между ними в произвольном порядке. Если вы перешли в текстовый режим из графического, то вернуться назад в свой привычный графический режим вы можете нажав Ctrl+Alt+F7. Это не сложно.
Обычно попасть в консоль можно и не покидая графический режим. Для этого как уже говорилось служат эмуляторы терминала. Эти программы можно считать своеобразным аналогом командной строки DOS в Windows. Существует много разных эмуляторов терминала, однако не это сейчас важно. Если вы используете Ubuntu со стандартной графической средой Gnome, то в вашем распоряжении уже есть как минимум два таких эмулятора. Первый — это X Terminal (xterm), является стандартным эмулятором терминала для X Windows и присутствует в каждой системе где есть “иксы”. Нажмите Alt+F2, это стандартная комбинация которая вызывает диалог откуда можно запускать программы используя команды (в Windows есть аналогичная комбинация — Win+R), наберите xterm и нажмите Enter. В результате вы увидите черное окно с приглашением для ввода команд.
Этот эмулятор обеспечивает лишь базовые возможности, никаких наворотов здесь нет, но в защищенном режиме X Windows обычно является доступным лишь он, потому знать о его существовании нужно. Теперь выберем Программы- >Стандартные- >Терминал, так мы запустим программу Gnome Terminal. Этот эмулятор уже намного более удобный и функциональный (можно использовать вкладки, буфер обмена, выбирать цвета и др.), а главное и более быстрый в работе.
Теперь когда мы знаем как попасть в консоль займемся ее изучением. Посмотрим на окно терминала, слева от мигающего текстового курсора можно увидеть строку которую называют приглашениям. Она содержит информацию об активном пользователе, имени данного компьютера и текущем каталоге. Символ ~ (тильда) в данном случае указывает на то, что активным является домашний каталог пользователя.
Команды являют собой набор букв латинского алфавита. Если вы хотя бы немного владеете английским языком, то запомнить большинство из них не тяжело, знание команд DOS также лишним не будет, некоторые из них являются общими для обеих систем. Ряд команд могут требовать параметры, тогда их указывают после имени команды, отделяя пробелом. К параметрам относят и опции, они используются для того, чтобы модифицировать роботу команды, опции типично задаются в виде параметров первым символом которых является дефис (-). Теперь давайте перейдем к практике.
Первое, что нужно знать, это то, что практически каждая команда Linux имеет свою страницу с документацией. Такие страницы можно читать с помощью команды man (от MANual) или же через меню Система- >Помощь и поддержка- >Advanced Topics- >Terminal Command References. Например, если набрать команду
man ls
на экране появится информация о команде ls.
Текст можно листать стандартным способом, используя клавиши со стрелками, PgUp, PgDn. Для выхода из режима просмотра документации нужно нажать q (от Quit). В действительности для просмотра страниц man используется стандартный консольный просмотрщик less, поэтому нажав h (Help) вы сможете увидеть перечень всех его функций. Например набрав ?слово вы сможете осуществить поиск текста на странице, а затем с помощью клавиши n (Next) переходить на те места в тексте где данное слово было найдено. Кстати, с помощью man можно искать команды по ключевым словам, для этого используется опция —k. Ну, например вам захотелось узнать какие команды помогают управлять процессами:
bum@impress:~$ man —k processes
aa-unconfined (8) - output a list of processes with tcp or udp ports that do not have AppArmor profiles loaded
fuser (1) - identify processes using files or sockets
gnome-system-monitor (1) - view and control processes
killall (1) - kill processes by name
killall5 (8) - send a signal to all processes.
peekfd (1) - peek at file descriptors of running processes
pgrep (1) - look up or signal processes based on name and other attributes
pkill (1) - look up or signal processes based on name and other attributes
ps (1) - report a snapshot of the current processes.
pstree (1) - display a tree of processes
pstree.x11 (1) - display a tree of processes
renice (1) - alter priority of running processes
smbcontrol (1) - send messages to smbd, nmbd or winbindd processes
unconfined (8) - output a list of processes with tcp or udp ports that do not have AppArmor profiles loaded
Как видите все просто, и даже без интернета и без наличия графического интерфейса можно узнать много нового. Нужно сказать, что рядом с man присутствует еще одна система помощи — info. То есть набрав info ls вы также получите помощь по команде ls. В большинстве случаев страницы info и man дублируют друг друга, однако иногда и нет.
Следовательно знаниями как получить подсказку в случае чего мы запаслись, теперь перейдем к изучению основных команд. Я буду приводить конкретные примеры команд, если кого-то заинтересует углубиться в их изучение глубже, то к вашим услугам всегда есть man. Начнем с получения системной информации о компьютере:
cat /proc/cpuinfo — выводит информацию о центральном процессоре
cat /proc/meminfo — выводит отчет об использовании памяти
cat /proc/swaps — показывает использование раздела подкачки
cat /proc/version — показывает версию ядра Linux
cat /proc/net/dev — показывает имеющиеся сетевые адаптеры и статистику передачи пакетов
cat /proc/mounts — выводит информацию про смонтированные файловые системы
lspci-tv — выводит информацию о PCI устройствах
lsusb-tv — выводит информацию о подключенных USB устройствах
date — выводит текущую дату
cal 2008 — выводит календарь на 2008 год
uptime — время, минувшее с момента последней загрузки
Вышеприведенные команды очень полезны, особенно если у вас не сохранилось ни одной инструкции со времени покупки компьютера. И как видите, чтобы получить информацию о том, что же там у него внутри в действительности никакие сторонние программы не нужны, все можно сделать стандартными командами.
В следующую группу команд можно выделить команды которые позволяют выключать перезагружать компьютер и др. Большая часть подобных команд не будет работать если их запускать от имени простого пользователя, потому чтобы получить права суперпользователя нужно не забывать использовать перед ними префикс sudo (для Ubuntu и Debian).
shutdown —h now — выключить компьютер немедленно
shutdown —h hours:minutes — автоматически выключить компьютер в определенное время
shutdown —c- отменить запланированное выключение компьютера
reboot- перезагрузить систему
logout- завершить сеанс текущего пользователя
Теперь вспомним команды для работы с файловой системой:
cd /home — перейти в каталог /home
cd .. — перейти на один уровень вверх
cd — перейти в домашний каталог
cd ~user — перейти в домашний каталог пользователя user
cd — вернуться в предыдущий каталог
pwd — показать полный путь к текущему каталогу
ls — показать список файлов и каталогов
ls —l — показать список файлов и каталогов в развернутой форме
ls —a — показать список файлов текущего каталога включая скрытые файлы
mkdir doc — создать каталог doc
mkdir doc1 doc2- создать два каталога, doc1 и doc2
mkdir —p /tmp/dir1/dir2- создать дерево каталогов
rm —f file1 — удалить файл file1
rm —rf dir1 — удалить каталог dir1 вместе с его содержанием
mv dir1 new_dir- переместить или переименовать файл или каталог
cp file1 file2- копирование файла
ln —s file1 lnk1 — создать символическую ссылку на файл
ln file1 lnk1 — создать физическую ссылку на файл или каталог
Можно вспомнить и еще ряд важных команд:
df — показать сколько места используется на дисках
passwd — сменить пароль пользователя
chmod a+rw file1 — разрешить всем пользователям читать и редактировать файл file1
chmod +x file1 — разрешить исполнение файла file1 как программы
chown user1 file1 — сменить владельца файла file1 назначив user1
tar —xzvf archive.tar.gz — распаковать запакованный архив в текущий каталог
dpkg —i package.deb — установить пакет
apt-get install package_name — установить пакет с репозитория
apt-get update — обновить информацию о репозиториях
apt-get clean — очистить кеш менеджера пакетов
Ну и пожалуй на этом закончим, более подробный перечень популярных команд можно найти здесь:
Теперь уже зная определенный набор команд попробуем углубиться немного дальше. Терминал в Linux поддерживает определенный набор горячих клавиш. Мы уже вспоминали о комбинациях переключение между разными терминалами, а теперь виучим комбинации которые позволят использовать консоль более продуктивно.
Tab — автодополнение команд. Например вам нужно набрать команду ifconfig, не обязательно набирать ее полностью, достаточно набрать лишь первые буквы ifc, а затем нажать Tab — система сама дополнит команду к ее полному варианту ifconfig, останется лишь нажать
Enter. Эта функция кстати работает не только с именами команд но и с именами файлов если они используются в качестве параметров команды. Собственно это одна из самых полезных и самых популярных функций которая есть в консоли Linux.
Стрелка вверх — просмотр истории команд.
Shift+PgUp/Shift+PgDn — прокрутка текста выведенного на консоль. Некоторые команды выводят на экран много текста и он не помещается на экране, с помощью этих клавиш как раз и можно увидеть ту часть текста которая не поместилась.
Ctrl+Alt+Del — перезагрузить компьютер.
Ctrl+C — завершить выполнение активной программы.
Ctrl+D — выход из активного терминала.
Ctrl+Z — перевести активную программу (процесс) в фоновый режим. Ну например вы запустили файловый менеджер mc, а затем захотели запустить еще и текстовый редактор emacs, таким образом с помощью этой комбинации клавиш вы можете перевести mc в фоновый режим после чего стандартным способом запустить emacs.
Ну и если мы уже заговорили о процессах, то желательно знать и команды как вывести процесс из фонового режима, да и вообще как ими управлять. Ну например я запустил mc, потом с помощью Ctrl+Z перевел его в фоновый режим после чего запустил редактор vi. Теперь если я с помощью той же комбинации Ctrl+Z пошлю vi в фоновый режим я смогу с помощью команды ps (ProceSses) увидеть какие же процессы у меня работают:
bum@impress:~$ ps
PID TTY TIME CMD
9974 pts/0 00:00:00 bash
9993 pts/0 00:00:00 mc
10022 pts/0 00:00:00 vi
10024 pts/0 00:00:00 ps
Например теперь если я захочу вернуться к работе из mc я могу набрать fg mc, то есть команда fg (ForeGround) используется для того, чтобы вывести процесс из фонового режима. Еще нужно обратить внимание на первый столбик в выводе команды ps, а именно PID. Это идентификатор который присваивается системой каждому процессу, он уникален. Зная PID можно принудительно завершить выполнение любого процесса. Например если мы наберем в данном случае kill 10022, то редактор vi будет закрыт. Могут быть и другие случаи, например ваша графическая подсистема зависла из-за какой-то программы, тогда перейдя с помощью Ctrl+Alt+F1 в текстовую консоль вы можете просмотреть перечень всех запущенных процессов с помощью команды ps —a, и найдя таким образом PID нужной вам программы можете легко завершить ее выполнение с помощью команды kill, после чего комбинацией Ctrl+Alt+F7 вернуться назад в графический режим. Что касается терминала в графическом режиме, то в нем доступна еще одна очень полезная команда — xkill. После набора этой команды курсор мышки принимает форму крестика, теперь вы можете кликнуть им например по окну зависшей программы и она будет немедленно закрыта. Но будьте осторожны, не щелкните по рабочему столу, а то прибьете заодно и свою рабочую среду.
Следующее, что нужно знать, это специальные символы:
~ - домашний каталог пользователя
. — ссылка на текущий каталог
.. — родительский каталог (на уровень выше)
? - замещает любую одну букву в имени файла
* - замещает произвольное количество букв
Все это напоминает DOS. Да, вы можете например набрать ls a* и система покажет вам перечень файлов, которые начинаются с буквы а. Если напишете dpkg —i *.deb, то система найдет в текущем каталоге все имеются файлы пакетов и установит их в систему.
Также нужно вспомнить еще о некоторых вещах. Очень важной является возможность
перенаправления ввода/вывода. Для этого служит символ >. Например если вы напишете ls /dev > doc.txt то команда ls выведет содержание каталога не на экран, а запишет его в файл doc.txt. Еще одной полезной штукой является возможность объединять группу команд в так называемый конвейер, в таком случае вывод одной команды будет автоматически направлен на ввод другой и т.д. до конца конвейера. Команды в конвейере разделяются символом |. Пример практического использования таких можно найти в Интернете. Конечно bash поддерживает и скрипты, то есть вы можете автоматизировать определенные свои операции. Причем скриптовый язык здесь достаточно мощен, сравнивать его с bat-файлами в DOS или Windows даже неприлично. Это очень удобно на самом деле, но достойно отдельного долгого разговора, поэтому на скриптах мы останавливаться не будем.
И напоследок хотелось бы привести набор программ которые могут быть очень полезными при работе в консоли.
Midnight Commander
Команда для запуска: mc
Это классический двухпанельний файловый менеджер, своего рода тот же Norton Commander но для *nix систем. Кроме работы с файлами может использоваться также и как ftp-клиент.
Nano
Команда для запуска: nano [имя файла]
Простой текстовый редактор. Он не так известен как vi однако является намного более удобным для обычного пользователя, хотя конечно же и не имеет такого монстроподобного набора функций. Очень удобен для редактирования системных конфигурационных файлов. Сохраняется файл комбинацией Ctrl+O, а выход из программы — Ctrl+X. Собственно все комбинации приведены внизу окна программы.
VIM
Команда для запуска: vi [имя файла]
Текстовый редактор с давней историей и с гигантскими возможностями. Однако понимание всех его плюсов дано не каждому, сначала придется повоевать с его далеко не интуитивным интерфейсом, а вернее даже полным отсутствием последнего. Его изучению можно посвятить целую книжку, сейчас же скажу лишь как из него выйти — нужно нажать : (двоеточие), это переведет редактор в командный режим после чего выполнить команду q (от Quit).
Less
Команда для запуска: less [имя файла]
Стандартный просмотровщик текстовых файлов. Для завершения пересмотра нужно набрать команду q.
Links
Команда для запуска: links [адрес]
Текстовый веб-браузер. Достаточно полезная штука если нужно найти какую-то информацию в Интернете при отсутствии рабочего графического режима. Скорость обычно просто феноменальная, а кириллические буквы заменяются транслитом, поэтому наличие кириллических шрифтов также не обязательно. F10 вызывает меню.
Aptitude
Команда для запуска: aptitude
Это ни, что иное как консольный вариант Synaptic. То есть менеджер пакетов.
MOC (Music on Concole)
Команда для запуска: mocp
Консольный медиаплеер. Да, чтобы слушать музыку графический режим не обязателен.
Ну собственно, на этом видимо и закончим. Главное, что скажу — не нужно бояться консоли, в ней нет ничего страшного. Конечно в современных дистрибутивах Linux практически все можно сделать через графический интерфейс, но практическое умение пользоваться консолью с одной стороны поможет вернуть систему в рабочее состояние если вдруг графическая подсистема перестанет запускаться, а во-вторых поможет в ряде случаев повысить производительности труда. Ведь такие консольные программы как ImageMagick, gnuplot, dcraw например помогут за одно мероприятие обработать огромный набор графических данных, latex поможет сверстать публикацию полиграфического качества, а с помощью sed можно обрабатывать в пакетном режиме текстовые файлы. Консоль действительно в умелых руках является очень мощной вещью и дело здесь совсем не в желании выпендриться. Поэтому удачных вам экспериментов.
> >
Клавиатура против мыши.
Преимущество работы в консоли (cmd или POSIX) без мыши:
1) Не надо отрывать руку от клавы и обратно;
2) На одно критичного для пользователя устройства меньше;
3) Возможность автоматизировать работу скриптами;
4) Общее ускорение работы + ускорение печати на клаве;
5) Мышь вредит здоровью руки;
6) Клава просто удобна.
Преимущества мышиной работы в Иксах или Винде (Маке):
1) Легко редактировать изображения;
2) Большинство современных игр ориентированно на мышь;
3) Все оффисные приложения до этого времени ориентированы на мышь;
4) Не надо иметь под рукой справочних по консольным командам и не надо заучивать аж целых семь команд: ls (dir), cd, cp, mv, md, rd, chmod.