- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF123:Project
Материал из Linuxformat.
Версия 07:48, 13 октября 2010
Содержание |
Семь крутых Linux-проектов
- Под мерный шум дождя Грэм Моррисон вздумал отдохнуть за Linux-машиной. И вот что получилось, дорогие читатели.
При повседневном пользовании Linux-компьютером легко забыть, что позади менеджеров пакетов прячется целый мир развлечений, творчества и веселья. По нашему пристрастному мнению, Linux — лучшая операционная система для любителей поиграть с новыми программами. Многообразия там море, и, в отличие от других ОС, все это бесплатно.
Единственная проблема – если считать это проблемой – состоит в том, что выбор слишком велик, и иногда сложно отделить зерна от плевел в ошеломляющем количестве доступных приложений. Поэтому мы хотим дать вам отправную точку для забавного хакерства, передышки в работе и повышения отдачи от Linux, представив семь небольших проектов, выполняемых за час или два, на каком бы дистрибутиве вы ни работали. Это и использование Linux как сервера, где красуются ваши фотографии, и создание и запись подкастов и музыки, и покадровая анимация в GIMP, и даже написание собственной текстовой приключенческой игры. Проекты хорошо иллюстрируют ширину охвата и качество программ, доступных в Linux, и, быть может, явятся идеальной стартовой площадкой для больших и лучших начинаний.
Хостинг фотоальбома
- Управляйте своей онлайн-фотоколлекцией через личный сервер
- Время на проект 60 минут
Существует масса онлайн-сервисов, предлагающих разместить фотографии бесплатно, и сайты типа Flickr и Picasa замечательно расширяют ваше социальное присутствие в сети. Но для большинства из нас это не идеальный способ хранения личных снимков для показа семье и друзьям. Даже когда вам предлагают коллекции, защищенные паролем, все-таки хочется держать личные фотографии поближе к своему жесткому диску. Так почему бы не завести свою фотоколлекцию?
Подходящее приложение называется Zoph. Оно основано на PHP и базе данных MySQL, и позволяет импортировать коллекцию ваших фотографий через файлы Zip или Tar, организовывать их в альбомы, указывать имя автора и географическое положение снимков, а также делиться ими с друзьями и семьей.
Установка приложения
Если в качестве базового дистрибутива взять Ubuntu 9.04, вам следует установить Zoph из менеджера пакетов, который, в свою очередь, добавит несколько зависимостей Apache 2, нужных для работы web-сервера. Вам также следует поискать и установить пакет mysql-server, чтобы получить в свое распоряжение базу данных, и установщик попросит вас создать пароль, для защиты root-овской учетной записи MySQL. Запомните его: он потребуется вам при вводе нижеследующих команд. Первая создает базу данных, которую Zoph будет использовать для хранения информации о фотографиях, а вторая импортирует таблицы, необходимые для работы Zoph, на ваш сервер MySQL:
mysqladmin -u root -p create zoph mysql -u root -p zoph < /usr/share/doc/zoph/zoph.sql
Если ваш дистрибутив – не Ubuntu, путь до файла zoph.sql может оказаться другим. Менеджер пакетов вашего дистрибутива подскажет вам его, если вы посмотрите, что и куда устанавливается в пакете Zoph.
Настройка
Следующим шагом будет задание прав доступа для только что созданной базы данных. Зайдите на ваш сервер MySQL, введя mysql -u root -p, и введите следующие две строки, заменив password вашим собственным паролем:
grant select, insert, update, delete on zoph.* to zoph_rw@localhost identified by ‘password’; grant all on zoph.* to zoph_admin identified by ‘password’;
Здесь мы создали учетную запись MySQL под названием zoph_rw и дали ей право на чтение и запись в базу данных. Zoph ожидает, что такая учетная запись существует, и вам нужно сообщить ему, какой пароль назначен пользователю zoph_rw. Это можно сделать, отредактировав в файле /etc/zoph/config.inc.php строку:
define('DB_PASS', 'password');
Подставьте свой пароль вместо ‘password’.
Выложим фотки
С настройкой покончено. Теперь откройте в браузере, работающем на той же машине, адрес http://localhost/zoph, откуда вас перенаправят на страницу входа. Введите admin как имя пользователя и admin как пароль, и вы окажетесь внутри Zoph, запущенном на вашем web-сервере. Первое, что следует сделать – это импортировать свои фотографии; нажмите кнопку Import [Импорт] вверху экрана. Далее можно выбрать отдельные снимки или архивы Zip/Tar, для загрузки папки или коллекции. К каждой загрузке можно добавить описание, а также создать географические местоположения и учетные записи фотографов – их можно потом приписывать очередному импорту. Это необязательная информация, но она облегчает поиск в больших коллекциях.
Добавленные фотографии можно увидеть, перейдя на страницу Photos [Фотографии] или, если они сгруппированы в альбомы, на страницу Albums [Альбомы]. Теперь можно делиться своими снимками со всеми, кто имеет доступ к вашей локальной сети, просто сообщив им IP-адрес вашей машины (или имя хоста, если у вас работает DHCP-маршрутизатор). Если вы хотите, чтобы на ваш сайт можно было заходить из Интернета, вам следует убедиться, что порт 80 перенаправляется с вашего шлюза на машину, где запущен Zoph. IP-адрес вашего интернет-соединения можно использовать из любой точки Интернета, однако на вашей машине следует постоянно обновлять Apache. При желании можно ограничить число людей, которые могут просматривать ваши фотографии, создав пользовательские учетные записи и приписав каждой из них разрешенную группу фотографий.
Собираем медиа-сервер
- Превратим завалящую машину в домашний накопитель мультимедиа.
- Время на проект 120 минут
Из Linux получается прекрасный файловый сервер. Именно по этой причине корпоративный рынок обращается к нему за выполнением своих тяжеловесных задач, а весь мир гуглит в любое время суток. Но Linux не хуже и в работе с файлами на вашем компьютере, засунутом в кладовку или на антресоли; и сервер теперь становится непременным домашним аксессуаром. Мобильные телефоны, игровые консоли, а то и телевизоры быстро развивают способность считывать, отображать и даже проигрывать файлы, расположенные на компьютерном медиа- центре, и Linux для этого просто идеальное бесплатное решение. Нужны всего лишь сравнительно маломощный ПК с достаточным дисковым пространством и безопасное место, куда его запрятать.
Установка программ
Мы выбрали Ubuntu Server Edition по двум причинам. Во-первых, это тот же дистрибутив, что знают и любят многие, только оптимизированный для серверного применения. Во-вторых, вы имеете доступ к тем же пакетам и репозиториям, что и в версии для настольных систем, что упрощает установку и использование ПО.
Вставьте диск в машину, отдаваемую под сервер, укажите язык, а затем выберите пункт Install Ubuntu Server. В отличие от версии для настольных систем, здесь нет графического установщика. Вместо этого вам придется выбирать параметры в текстовых окнах, появляющихся во время инсталляции. Но не пугайтесь; там нет вопросов, на которые нельзя дать простого ответа, и установка не отличается от стандартной настольной версии. Сперва вас попросят заново выбрать язык, потом ваше местоположение, потом раскладку клавиатуры. После небольшой паузы у вас запросят имя хоста. Наверно, лучше поменять его с «ubuntu» на что-нибудь типа «mediaserver», чтобы избежать возможной путаницы с с другими установками Ubuntu, расположенными в вашей сети.
Разбивка диска
Следующий шаг – разбивка диска. Для медиа-сервера это куда более важная задача, чем для настольной системы, из-за большого объема файлов, которые там планируется хранить. Наиболее удобным решением будет использование старого диска объемом около 10 ГБ (или меньше) для Linux-системы, а более емкого накопителя – для контента. На странице установки можете выбрать Guided – Use Entire Disk [Использовать весь диск], затем выбрать диск для установки и дать Ubuntu полный контроль над созданием разделов. Диск для хранения мультимедиа можно настроить после.
Альтернативный вариант – создать два раздела на одном диске, употребив меньший для корневой файловой системы, а больший – для данных. В таком случае при необходимости будет легко обновить корневой раздел или резервировать раздел с данными, не засоряя его системными файлами.
После того, как вы разделаетесь с дисками, у вас спросят ваше настоящее имя, имя пользователя и пароль. Над ними следует поразмыслить чуть больше, чем для настольной системы: скорее всего ваш сервер будет работать постоянно и иметь доступ из Интернета, так что безопасное сочетание имени пользователя/пароля жизненно важно. Нажмите Continue [Продолжить], чтобы пропустить добавление HTTP-прокси, и выберите автоматическую установку обновлений безопасности. Наконец, не выбирайте никаких серверных пакетов по умолчанию, если только не хотите использовать SSH для удаленного администрирования. Теперь нажмите Continue [Продолжить], чтобы начать процесс инсталляции.
Настройка MediaTomb
Мы всего в двух шагах от завершения. Когда машина установит все нужные пакеты и перезагрузится, вам нужно будет зайти и ввести в терминале sudo apt-get install mediatomb. Это установит программы потокового мультимедиа на вашу систему. Осталось только ввести mediatomb, чтобы запустить его. Обратите внимание на вывод – он должен выглядеть примерно так:
2009-07-16 15:20:52 INFO: MediaTomb Web UI can be reached by following this link: 2009-07-16 15:20:52 INFO: http://192.168.1.89:49152/
Это порт и IP-адрес сервера, и теперь вам следует указать тот же адрес вашему web-браузеру, а затем с помощью простого пользовательского интерфейса добавлять файлы и папки, содержащие разнообразный медиа-контент. Через несколько секунд он должен появиться на любом потоковом клиенте UPnP, например в Playstation 3 и XBox 360.
Творим нежную музыку
- Прокладывайте свой путь к звуковой Нирване мышью.
- Время на проект 30 минут
Для создания какой-никакой музыки не нужно ни специального образования, ни таланта – достаточно различать, что вам нравится, а что нет. И мы это докажем – изготовим музыкальный фрагмент, пользуясь только курсором мыши и всего одной программой для Linux – Rosegarden. В ней можно создать треки ударных, мелодию и аккорды, воспроизвести их встроенными инструментами и записать результат в файл.
Для начала
Для связи с вашими звуковыми приложениями и оборудованием Rosegarden использует Jack, так что, устанавливая пакеты, включите QjackCtl. Мы еще поставили столько синтезаторов DSSI, сколько накопал наш менеджер пакетов. QjackCtl – это клиентский GUI к Jack, и его нужно запустить перед обращением к Rosegarden. Наши лучшие показатели были достигнуты, когда мы перезагружали машину, открывали QjackCtl, нажимали на кнопку Setup [Настройка], снимали «галочку» реального времени, задав частоту дискретизации как 48 000, а потом нажимали OK и Start [Запуск]. Это годится для широкого диапазона звукового оборудования, и при работающем Jack вы увидите Started [Запущено] в окне QjackCtl. Теперь открываем Rosegarden.
Сделаем что-нибудь
Начнем с басов. Выберите в Rosegarden дорожку номер один и в левой панели Track Parameters [Параметры дорожки] используйте выпадающее меню Device [Устройство], где найдите Synth Plugin [Синт. модули] (это настроит дорожку на использование одного из предустановленных синтезаторов DSSI). В панели Instrument Parameters [Параметры инструмента], расположенной ниже, нажмите на кнопку No Synth [Нет синтезатора]. Открывшееся окно предложит загрузить синтезатор DSSI в слот номер один. Список синтезаторов отобразит имеющиеся у вас; а мы выбрали модуль XSynth. Если в вашем дистрибутиве его нет, попробуйте что-нибудь другое. Тут откроется окно параметров синтезатора – но покамест его лучше закрыть.
Вернувшись к главному окну Rosegarden, убедитесь, что в панели инструментов активна иконка карандаша, и нарисуйте пару новых тактов на первой дорожке. Должен появиться длинный желтый блок. Щелкнув по нему правой кнопкой, выберите Open With The Matrix Editor [Открыть в матричном редакторе]. Появится окно, где можно добавлять ноты для проигрывания в синтезаторе. Щелкните по клавишам пианино слева от матрицы, чтобы получить предпросмотр, затем в матрицу, чтобы добавить ноты. Их длительность регулируется перетаскиванием правой границы; а громкость можно поменять, включив Show Velocity Property Ruler [Показать линейку силы нажатия] из меню View [Вид], перетаскиванием появившихся оранжевых кирпичиков.
Соединим все вместе
Теперь закройте матричный редактор и включите иконку цикла в окне транспорта; затем с помощью стрелки рядом с ней расширьте белую область вокруг блока нот, предназначенного для проигрывания в цикле, и нажмите Play [Воспроизвести]. Ноты заиграют, и вы сможете вернуться в панель свойств дорожки, щелкнуть по Editor [Редактор] и подправить звук, приписанный к ней.
Повторяйте процесс для новых дорожек, используя другие звуки и щелкая по другим наборам нот. Оставив фоновое циклическое воспроизведение, вы сможете постепенно повышать сложность дорожки. Потом копируйте и вставляйте блоки нот на каждую дорожку, сдвигая их по горизонтали, чтобы сформировать всю композицию.
Шаг за шагом: Экспортируем звук
- Audacity
- Запустите Audacity, откройте окно Edit > Preferences [Правка > Настройки] и поменяйте записывающее устройство на Rosegarden, затем нажмите Record [Запись].
- Rosegarden
- Переключитесь обратно в Rosegarden, убедитесь, что курсор стоит на начале дорожки, и нажмите на Play [Воспроизвести].
- Запись
- Вернитесь в Audacity. Можете посмотреть, как записывается проект, а когда воспроизведение закончится, сохраните файл.
Пишем интерактивную прозу
- Забудьте про графику. Текстовые приключения рулят!
- Время на проект 60 минут.
Текстовые приключенческие игры были очень популярны во времена, когда компьютеры только и умели, что отображать текст, и снова пошли в бурный рост благодаря мобильным устройствам: они потребляют очень мало ресурсов и не требуют суперпроворства, а для их написания не нужно быть гуру от программирования, поскольку используется форма естественного языка. Например, компилятор игры понимает названия и относительное расположение двух мест, описанных строкой «Библиотека слева от лестничной площадки.» [Увы, это относится только к английскому языку. Нельзя даже скомпилировать проект, сохраненный в папке с кириллическим именем, – прим. пер.] И сочинение игры столь же забавно, как и сам игровой процесс. Кроме того, существует блестящая среда разработки, которая разложит по полочкам идеи и местоположения для вашей игры, а также поможет ввести и понять исходный код. Чтобы показать, как это просто, создадим зачин интерактивного шедевра.
Установка IDE
IDE называется Gnome Inform, и пакеты для него придется скачивать, поскольку они редко входят в типичный репозиторий. Страница проекта на SourceForge включает бинарники для наиболее популярных дистрибутивов, не предполагающие никаких невнятных зависимостей. Установка программы в менеджере пакетов – процесс простой, в несколько щелчков мыши, а ее запуск осуществляется либо вводом gnome-inform7 в командной строке, либо через меню приложений.
За перо!
Главное окно Gnome Inform разделено на две панели; каждая из них может отображать любой из семи экранов. Левая панель обычно используется для исходного кода игры, а правая – для тестирования текущего состояния, документации и отладки, однако можно пользоваться ими как угодно. Чтобы создать игру, выберите на одной из сторон «Source» и введите:
“Wretched Exchange” by “Anonymous Penguin” When play begins: say “[italic type]It’s one of the hottest days of the year. You’re stuck in the office trying to get OpenExchange installed on to one of the crusty old Linux servers, and you can’t leave until the CEO’s Blackberry starts whirring with new email.” The Office is a room. “Why do all offices look alike? There’s the low-slung polystyrene ceiling, complete with ambient lighting, and various desks and chairs littered across the lino floor tiles. The server room is to the north and an emergency exit to the south.”
Это все, что требуется для создания исходной заготовки. Gnome Inform знает, как обработать эти данные автоматически, взяв заголовок и автора из первой строки, а текст вступления – после слов «When play begins:». Однако основная часть кода – это описание комнаты, ведь местоположения – главная часть текстового приключения. Inform автоматически извлекает описание комнаты и способен понять из естественного языка описания, что серверная комната – на севере, а аварийный выход – на юге.
Пустые комнаты неинтересны – добавим элемент офисной атмосферы следующими строками:
A coffee cup is here. The description is “On the inside, the cup is stained black by years of caffeine addiction. The outside sports the image of a penguin.” After taking the cup: say “Taken. You sure wish you could find some fresh coffee.” After dropping the cup: say “Dropped. So much for getting a caffeine hit.”
В этом куске текста мы говорим, что в комнате находится чашка кофе, а также определяем пару действий – взять и уронить. Компилятор понимает все это автоматически, но иногда не справляется, и вам приходится создавать собственные действия вручную. В серверной комнате на севере мы намерены разместить кондиционер и создать новое действие, при котором он включается и игра заканчивается.
The Server Room is a room. It is north of the office. “It’s difficult to hear yourself think in here. Racks of servers are humming away, filling the air with an acrid damp humidity.” An air conditioning unit is here. The description is “Attached to the wall, this yellowing unit seems to have been bought on the cheap from the local Pub after the smoking ban made it redundant. Water is dropping from the unit on to the floor.” Activating is an action applying to one thing. Understand “activate [something]” as activating. Before activating the air conditioning unit: say “Wow! You turn on the unit and the servers gradually stop complaining.”; end the game in victory.
Теперь можно запустить игру и завершить ее, отправившись на север и включив кондиционер. Это до смешного просто, однако вам должен быть ясен огромный потенциал естественности языка, на котором написана игра. Он разработан, чтобы придать ощущение чтения книги, и результаты могут быть просто фантастическими.
Обезопасим удаленный рабочий стол
- Удаленная работа сродни волшебству. Смотрите, что у меня в рукаве...
- Время на проект 60 минут
Удаленный рабочий стол не только позволяет получить доступ к нужной вам машине из любой точки Интернета: он поможет создать многопользовательское окружение со множеством рабочих столов из одной машины, даже без дисплея. Это прекрасное решение для нетбуков, где были бы не лишними лошадиные силы полномерного ПК. Просто подключитесь к серверу с рабочего стола вашего нетбука, и они у вас будут.
VNC
Есть несколько способов запустить удаленный рабочий стол в Linux. X-сервер сам по себе был задуман для этих целей, и можно сравнительно просто направить окна с локального сервера на удаленный, особенно если используется SSH. Но протокол X неэффективен: быстродействие у него сносное, только если вы находитесь в той же сети, что и сервер. Гораздо лучшая альтернатива – FreeNX. Он разбивает движения курсора и окна на серию команд, передаваемых более эффективно, чем в X. Но с FreeNX есть одна проблема: его установка может обернуться сущей пыткой, и, похоже, для разных дистрибутивов способы тоже разные. Когда инсталляция FreeNX станет попроще, мы обязательно напишем, как заставить его работать.
Остается только VNC. VNC не распознает процедуры отрисовки, а посылает куски сжатых изображений, и эффективность результата находится где-то посередине между X-сервером и FreeNX. Но у него есть большое преимущество: клиенты VNC вездесущи. VNC доступен со многих мобильных телефонов, КПК и нетбуков; в Windows и OS X имеются бесплатные и платные клиентские приложения, способные подключаться к VNC, запущенному на вашей Linux-машине. По части Linux, и в KDE, и в Gnome есть встроенная поддержка для подключения к серверу VNC.
Запуск сервера
Вариантов VNC есть несколько, но наш любимый – TightVNC, где по сравнению с исходным протоколом VNC несколько улучшена производительность. На вашем сервере вам надо установить пакет tightvncserver через менеджер пакетов. Чтобы начать сеанс VNC, откройте командную строку и напишите там vncserver:1. Запустится новый сервер, который будет приписан ко второй (:1) графической консоли машины. Первая – это :0, но она является текущим дисплеем для данного компьютера, если только вы не работаете в чисто консольном режиме. Любая другая машина из локальной сети теперь сможет подключиться к серверу VNC, используя IP-адрес сервера, за которым следует :5901.
Так как VNC задействует только один порт (5901), вы можете легко туннелировать его на удаленное соединение через SSH. Это прекрасное решение, если нужно получить доступ к Linux-машине через дебри Интернета: можно оставить открытым лишь сравнительно защищенный порт SSH (порт 22), и с Интернетом будет общаться только SSH-сервер. Сервер VNC спрятан в безопасности, за брандмауэром. Туннель SSH похож на короедскую нору. Например, он берет данные из порта 5901 сервера, туннелирует их через стандартное SSH-соединение на порте 22 и переназначает данные клиенту на локальный порт 5901. Нужно только подключить клиента VNC к localhost:5901, а не к удаленному IP-адресу.
Шаг за шагом: VNC через SSH
- На сервере
- Введите vncserver :1, а затем пароль, чтобы запустить сервер VNC.
- На клиенте
- Введите ssh -l 5901:localhost:5901 ip_сервера, для подключения к серверу через SSH.
- На клиенте
- Используйте клиент VNC (например, KRDC), чтобы подключиться к localhost:5901.