Первое знакомство с Linux, или Linux - друг человека

Статья для людей, никогда прежде не имевших дела с Linux.

Для чего вам Linux?

Причина первая. Представьте, что вы храните важные файлы на своем жестком диске, и в один прекрасный день Ваш Windows XP или 7 по какой-то причине откажется работать. Вы не сможете загрузить компьютер до такого состояния, когда Вы могли бы получить доступ к своим файлам, и, если Вы со своим компьютером "не близки", то, возможно, Вам даже придется вызывать сотрудника сервиса, чтобы он помог Вам вернуть важные данные.
Имея по крайней мере загрузочную флешку с системой Linux, Вы сможете получить доступ к файловой системе намного быстрее.
Причина вторая. Если во время досмотра в аэропорту перед Вашим отлетом на курорт обнаружится, что Вы пользуетесь пиратской (неоплаченной и нелицензированной) версией Windows, как делает множество наших соотечественников, это обернется как минимум тем, что самолет улетит без Вас, а Вам, скорее всего, придется вдобавок заплатить штраф. На время отдыха и пребывания в цивилизованных странах, где лицензированию ПО уделяют гораздо больше внимания, чем в странах СНГ, Вы можете временно заменить свою операционную систему на Linux, который в большинстве своем бесплатен.
Причина третья. Более 90% существующих вирусов рассчитаны на заражение ОС Windows, в Linux они практически беспомощны. Вставляя флешку, карту памяти или просто во время серфинга в Интернет Вы можете не опасаться "подхватить" какую-нибудь дрянь. Многие вирусы, заражающие флеш-накопители, элементарно удаляются из-под Linux, как обычные файлы, поскольку их методы защиты, не позволяющие "разобраться" с ними вручную, или даже средствами некоторых бесплатных антивирусов, рассчитаны также на среду Windows.
Причина четвертая. Разве Вам не хочется узнать что-то новое? ;)

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

Немного общей теории.

Дистрибутив (операционной системы) - законченная и готовая к установке версия операционной системы, призванная облегчить процесс установки и использования. Например: Windows XP SP3 - дистрибутив операционной системы Windows XP с интегрированным пакетом обновления Service Pack 3.
Различные дистрибутивы операционной системы могут различаться: версией ОС (Windows 98, Windows XP, Windows 7) и набором интегрированных (содержащихся в дистрибутиве) программ, драйверов, настроек.
Например, дистрибутив "Kubuntu 11.04" содержит в себе операционную систему Ubuntu версии 11.04 с предустановленной средой рабочего стола KDE.

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


Например, рабочее окружение KDE, популярное в системах Linux. Обеспечивает мощные визуальные эффекты, в том числе и 3D.












Окружение KDE обеспечивает широкий набор графических эффектов, придавая операционной системе красивый и "блестящий" внешний вид, однако более требовательно к ресурсам ПК, чем многие другие среды. Если у Вас маломощный ПК, то от KDE стоит отказаться.

Другое популярное окружение в системах Linux называется Gnome. В последнее время эта среда претерпела значительные изменения (в версии Gnome 3), многие из которых были не к лучшему (по крайней мере, с точки зрения многих пользователей). Это заставило linux-сообщество создать ответвление от прежней, традиционной версии Gnome2, которое получило название Mate и используется в Linux Mint и других дистрибутивах.
Это окружение намного менее требовательно к ресурсам и, соответственно, работает быстрее, в особенности на маломощных компьютерах.

Окружение Gnome напоминает внешний вид операционной системы Mac OS X - две параллельные панели вверху и внизу экрана, главное меню вверху слева. Gnome менее привычен для пользователей, имевших ранее дело только с Windows, однако он интуитивно понятен и не несет в освоении особых сложностей.







Среди других популярных сред можно отметить:



1) Xfce. Эта среда также более легка и менее требовательна к ресурсам, чем KDE.
-------------------------------------------------->













2) Unity. По своей природе это не среда, а оболочка, довольно требовательная к ПК и весьма своеобразная по сути. Не рекомендуется для освоения Linux.
<--------------------------------------------------











3) LXDE. Одна из самых минималистичных графических сред Linux, наименее требовательных к ресурсам и быстрых в работе.
-------------------------------------------------->










Сделаем выводы.
Среда рабочего стола (рабочее окружение) - графический интерфейс пользователя, обеспечивающая привычный почти любому пользователю рабочий стол, на котором появляются окна, пиктограммы, панели и т.д. Рабочие окружения различаются набором программ, механизмов работы и внешним видом.
Для пользователя, имеющего цель познакомиться с ОС Linux, имеет смысл выбрать, например, KDE (для достаточно мощных компьютеров) или Gnome/LXDE (для менее мощных компьютеров).


Различные дистрибутивы.

Дистрибутивы Linux могут быть платными (коммерческими), но в большинстве своём они бесплатны, как и подавляющее количество ПО для этой системы.
Поскольку дистрибутивы делятся на семейства, содержащие каждый множество поддистрибутивов - для простоты рассмотрим только основные семейства.

Основные семейства дистрибутивов Linux - это:
1) Debian
2) Ubuntu
3) Fedora
4) Red Hat
5) Mandriva
6) Slackware
7) Gentoo
8) Arch
9) Linux Mint

Поскольку цель статьи - познакомить читателя с Linux, я зачеркнул те семейства, которые вряд ли годятся для первого знакомства. Для этого лучше всего подходят: Ubuntu, Debian, Linux Mint.
Debian - исток многих дистрибутивов и даже семейств, так, например, семейство Ubuntu основано на Debian, а Linux Mint имеет две ветви развития: базирующуюся на Ubuntu и недавно появившуюся ветвь, основанную на Debian.

Так как последние версии Ubuntu содержат предустановленную среду рабочего стола Unity, которая достаточно специфична и глубоко отличается от интерфейса Windows, рассмотрим в качестве примера дистрибутив Linux Mint Debian Edition (LMDE).


Процесс установки LMDE на флеш-накопитель (создание загрузочного "Live-USB").

Linux Mint Debian Edition, дистрибутив, появившийся сравнительно недавно и основанный на Debian, содержит в себе по умолчанию сразу две среды рабочего стола: Cinnamon и Mate. При загрузке системы пользователь может выбрать любую из этих сред, сделав одну из них стандартной (загружаемой по умолчанию).

Cinnamon. Это - ответвление среды Gnome 3 с четкой ориентацией на дистрибутивы Linux Mint. Это окружение дает возможность использования множества "приглядных для глаза" элементов, в том числе и 3D-оформление. Оно чуть более требовательно к ресурсам, чем...
Mate. Это - современное ответвление очень популярного в свое время окружения Gnome 2. Это более быстрое и легкое окружение, обеспечивающее в то же время симпатичный интерфейс.





Пример окружения Cinnamon.
-------------------------------------------------->











Пример окружения Mate.
-------------------------------------------------->








Cinnamon и Mate не отличаются друг от друга принципиально внешне, однако первый основан на Gnome 3, а второй - современная версия Gnome 2. Лучше всего здесь подойдет фраза - дело вкуса...

Создание загрузочной флешки

1) Берем пустой флеш-накопитель объемом не менее, чем 2Гб.
3) Качаем образ (файл с операционной системой):
linuxmint-201204-mate-cinnamon-dvd-32bit.iso, если у вас старый компьютер (32-битная архитектура).
linuxmint-201204-mate-cinnamon-dvd-64bit.iso, если у вас современный компьютер (64-битная архитектура).
Если Вы не знаете, какую архитектуру поддерживает Ваш процессор, то лучше используйте первый образ из указанных выше. Ссылки позволят скачать образ через торрент; если у Вас нет торрент-клиента, скачать его можно здесь.
Когда закачка образа закончится, вставьте приготовленный флеш-накопитель и перейдите к следующему шагу.
4) Запустите скачанную ранее программу "Universal USB Installer". Придется немного полицемерить, сказав, что Вы согласны с лицензией, которую Вы в 99% случаев не станете читать, и нажав соответствующую кнопку (I agree).
Затем откроется окно подобного вида:








5) Выберите в первом списке следующий пункт (кликните для увеличения):







6) Нажмите кнопку Browse, найдите и выберите скачанный в пункте 3 образ системы.
7) Выберите в третьем списке букву, соответствующую приготовленному флеш-накопителю.
8) Нажмите кнопку Create.
9) Подождите окончания установки.
10) Готово. Live-версия Linux Mint установлена на Вашу флешку.

Загрузка с USB.

Чтобы загрузиться с флешки, есть два пути. Вам могут быть доступны либо оба, либо только один.
Способ первый, доступный наверняка.
Во время запуска компьютера, сразу после включения, на его экране отображается картинка BIOS или выводится текстовая информация, сообщающая текущую конфигурацию компьютера.
В самом низу экрана в это время можно заметить надписи вроде этой: "Press F2 to enter Setup". Название клавиши, выделенное курсивом и подчеркиванием, может различаться - это может быть F12, DEL и т.д.
Пока горит эта надпись - нажмите указанную на ней клавишу. Если на мониторе не появляется подобная подсказка, попробуйте нажать F2, или F12, или DEL и т.д.


Если Вы нажали клавишу вызова меню BIOS - на экране появится меню, подобное тому, что изображено на картинке.










Если общий вид Вашего и изображенного меню совпадает, то, пользуясь курсорными клавишами, перейдите во вкладку "Boot". Там найдите пункт USB HDD, пользуясь курсорными клавишами, перейдите на него и нажимайте F5 до тех пор, пока этот пункт не окажется в верху списка.
Вставьте флеш-накопитель с установленным Linux в порт.
После этого нажмите F10 и Enter в ответ на вопрос, следует ли сохранить изменения и выйти.
Вставить флешку можно и после выхода из BIOS, но Вы можете не успеть это сделать до того, как ПК начнет загружать Вашу основную систему (Windows).

Если все сделано правильно, то вместо загрузочного экрана Вашей основной системы на экране появится загрузочное меню Live-версии Linux. Выберите пункт Start Linux Mint и подождите. Имейте в виду, что загрузка с флешки может занять чуть больше времени, чем загрузка с жесткого диска.
В окне входа в систему введите имя пользователя mint (маленькими буквами) и нажмите Enter.

OFP mapping

Собираюсь запилить для тренировки и развлечения карту в OFP: Resistance. Нужно где-то записать все, что хотелось бы сделать.

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

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

Террористы.
Отряд состоит из боевиков и подрывников. (Приблизительно 75% простых боевиков и 25% подрывников.) В случае, если подрывник заметит одного из бойцов спецотряда, он в течение нескольких секунд подорвет бомбы; в случае, если бойцов заметит боевик, пока остаются варианты, среди которых: 1) время на выполнение уменьшится на 5 минут 2) боевик побежит к командиру, находящемуся рядом с автобусом и бомбами, и тот подорвет бомбы 3) комбинация первых двух вариантов: например, если времени осталось меньше 5 минут, то они не отнимаются, а заметивший врага боевик бежит к автобусу, чтобы спровоцировать взрыв.
Два подрывника постоянно дежурят рядом с заминированным автобусом; террористы контролируют примерно половину города. Все дороги на подъездах к городу блокированы войсками, но в город они не входят по требованию бандитов.
Подрывники и боевики должны различаться по внешнему виду, например, боевики могут быть вооружены пистолетами, а подрывники держать в руках телефоны. Численность террористов должна быть невелика, но достаточна для того, чтобы держать в обзоре прилегающие улицы и горизонт.
Бомбы могут быть обезврежены при подходе на близкое расстояние за 5 секунд каждая (всего 4).

Условия победы\поражения:
Победа: все бомбы обезврежены и попытки террористов взорвать их вручную пресечены.
Поражение 1: время истекло.
Поражение 2: противник поднял тревогу и взорвал заряд.
Дополнительные условия: в случае, если бомбы обезврежены, могут (и должны) быть вызваны армейские подкрепления с трех направлений для обеспечения безопасности и эвакуации заложников (некоторые террористы могут оставаться в живых).

bash-скрипт для сортировки и переноса большого количества разнотипных файлов по категориям

Сохраняя каждую понравившуюся в Сети картинку, документ и mp3-трек, некоторое время столкнулся с такой ситуацией: папка Downloads (да и Pictures с Documents тоже) была забита разнотипными файлами, количество которых превышало 1000. Сортировались они при этом в реальном времени: открываешь папку, тыкаешь курсором в файл, а он, как подушка у Чуковского, уже куда-то ускакал. Другие операции в папке тоже слегка затормаживались, ясное дело. Отключать сортировку не хотелось, или, тем паче, вручную разгребать эти Авгиевы конюшни, поэтому на скорую руку сварганил bash-скрипт, который помог бы справиться.

Итог: скрипт, в командную строку которого передаются нужные категории файлов, которые нужно рассортировать, лимит файлов, которые могут остаться в папке, и путь к папке. Скрипт создает папку с текущей датой (если такая папка уже существует, то скрипт, во избежание ее захламления все новыми и новыми файлами, создает папку с префиксом "more_") и субдиректории в ней, названные по категориям файлов: рисунки, видео, музыка, документы, образы, архивы и другие. Создаются (точнее, остаются) только папки для тех категорий, которые были обработаны и перемещены, то есть пустых папок категорий папка не содержит.








Синтаксис запуска:









Пример результата работы:






Текст скрипта (жми "дальше"):

KJumpingCubes

Некоторое время назад, начав играть в эту с виду простенькую игру, взятую из стандартных репозиториев Ubuntu, обнаружил, что она довольно редко упоминается в Сети. Я попытался проанализировать игровой процесс, не имея описания правил, просто делая случайные ходы, но, к стыду своему, мне показалось более простым все-таки "загуглить". (Как всегда, все представлялось сложным именно потому, что было донельзя простым.)

В Сети я нашел действительно мало упоминаний этой логической игры, и over 9000 их было на английском. Это не послужило препятствием мне, но - хотя бы в качестве творческого эксперимента - я бы хотел, чтобы в Сети было на одно описание КJumpingCube больше. Это действительно увлекательная, хоть и простая, игра.

Вот что говорится в проектном документе одной из первых текстовых версий игры (в переводе с английского):
KJumpingCube - простая настольная игра для двоих игроков. Это исключительно стратегическая игра, без каких-либо случайных факторов.

Игровая доска - квадратное поле размером N x N ячеек. Ячейки могут быть трех разных цветов, изображающих различные состояния ячейки: нейтральное (никому не принадлежит) и занятое одним из игроков (ячейка закрашивается цветом игрока). На каждой ячейке имеется некоторое количество точек, таких, как на игральных костях. Количество точек на каждой ячейке, в обычном случае, соответствует граням шестигранной игральной кости: от 1 до 6.

Каждая ячейка имеет соседей: ячейки, примыкающие к ней по вертикали или горизонтали. В случае, если количество точек в ячейке превышает количество примыкающих к ней соседей, эта ячейка отдает по одной своей точке каждой соседней ячейке. То есть - в каждой соседней ячейке прибавляется по одной точке, в исходной ячейке остается одна точка. Ячейку, в которой точек больше, чем у нее соседей, называют переполненной.

Собственно игровой процесс заключается в занятии нейтральных ячеек и наращиванию мощности своих. Каждый щелчок по ячейке, будь то нейтральная ячейка или ячейка игрока - но не ячейка противника! - прибавляет к имеющимся в ней точкам еще одну. Если игрок нажмет на нейтральную ячейку, то она закрасится его цветом и в ней появится еще одна точка.

В случае, если переполненная ячейка граничит с нейтральной - она отдаст одну свою точку нейтральной, после чего та закрасится цветом игрока. Если такая ячейка граничит с ячейкой противника - произойдет то же самое (в этом, собственно, и заключается суть игрового процесса).

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


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

Немного простой тактики.
Количество соседей у клетки на краю доски - 3, в отличие от клетки, находящейся в середине (и имеющей 4 соседей). Переполнить ее поэтому легче.
Количество соседей у угловой ячейки еще меньше - 2, так что именно угловые и крайние ячейки стоит занимать в первую очередь. Кроме того, из угловой ячейки бывает удобно запускать "цепную реакцию" - накопив множество точек в ячейках вокруг нее.

Теперь о том, что, собственно, побудило меня написать эту "статью". Вообще, игра имеет настраиваемый размер доски: от 5х5 до 10х10.

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

Вот такой:

Само собой, можно взять исходники игры и, не мудрствуя лукаво, модифицировать их так, чтобы играть можно было на доске размером 3х3 или 20х20, ввести третью сторону на доску и т.п. Однако для этого, разумеется, нужно быть хоть немножечко программистом (чем больше, тем лучше!). Между тем, игра предоставляет недокументированную возможность слегка изменить правила даже для рядового пользователя. Разумеется, гораздо более ограниченные, но все же интерес они могут представлять.

Например:
1) Можно изменить размер доски на, фактически, любой - хоть 1х1, если это будет представлять для кого-то интерес
2) Можно ввести своеобразную "третью сторону" в игру - это могут быть нейтральные ячейки, которые нельзя будет занять прямым образом, а только захватив их
3) Можно добавить на поле своеобразные "бонусные ресурсы", то есть нейтральные ячейки с большим количеством точек, которые нельзя будет занять, а только захватить. Количество точек в ячейке, вообще говоря, может быть сколь угодно большим (ограниченным лишь длиной переменной), но игра поддерживает корректное отображение только максимум восьми точек на ячейке - хоть при обычной игре пользователь этого, скорее всего, не увидит. Таким образом, при захвате такой ячейки игрок получит ячейку с 9 точками, которые будут распределены на ближайшие 4-5 ячеек, сделав их достаточно "развитыми" при этом. (Однако, игра не будет корректно отображать 9 точек на ячейке, заменяя их цифрой "9", к тому же не всегда отображаемой в центре ячейки.)


КJumpingCube хранит данные о сохраненных играх в, по сути, текстовых файлах. Они имеют расширение .kjc и заполнены строками, описывающими:
1) Состояние всех ячеек игровой доски
2) Размерность матрицы игровой доски
3) Текущий ход (т.е., кто из игроков будет делать ход первым после загрузки сохраненной игры)

Все это описывается банальными строками, вот в таком виде:
0,0=1,2
0,1=1,3
0,2=2,4
...
9,9=0,1
Dim = 10
Turn = 1
Здесь строка вида "n,m=p,s" - строка, хранящая данные о принадлежности nm-ой ячейки и количестве точек в ней (p = {0,1,2}, 0 - нейтральная, 1 - игрок 1, 2 - игрок 2; s = {1,2,3,4,5,6,7,8,...}).
Dim - размерность матрицы, здесь - 10 на 10 ячеек. Turn - чей ход, здесь - ход игрока 1.

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

Разумеется, кто-то может справедливо назвать это ересью и шаманством со своей, несомненно, весомой точки зрения матерого программиста (овладевшего, действительно, в совершенстве языком Mata). Несомненно, проще взять именно исходники и подстраивать игру в режиме "свободного полета", а может быть, даже сделать свою версию, ведь игра, насколько я помню, подчиняется свободной лицензии GNU. Но пока - можно взять, например, файл сохранения, содержащий только чистую доску с нестандартным размером и играть.
Кроме того, анализ системы игры "снаружи" тоже достаточно интересен. Например, из ее поведения ясно, что функция, распределяющая точки из переполненных ячеек, запускается не в конце каждого хода, а только тогда, когда во время хода была "вручную" (т.е. щелчком курсора) переполнена ячейка игрока. То есть, если в файле сохранения, например, описать ячейку, содержащую в себе 8 точек и принадлежащую игроку 1, при этом указав, что право первого хода после загрузки принадлежит игроку 1 - после того, как игра загрузится, и даже если игрок сделает первый ход, просто заняв нейтральную ячейку, "экспансия" имеющейся переполненной ячейки не произойдет.



В общем и целом, эта статья призвана популяризировать игру KJumpingCube, а также...
Невзирая на многих "снобов из снобов", сиречь арчефагов и иже с ними, пользуюсь моментом, чтобы популяризировать заодно систему Linux, к семейству которой относится и Ubuntu, которой я пользуюсь и репозиториям которой я благодарен за знакомство, в том числе, и с вышеописанной игрой.:)