Вы находитесь на странице: 1из 39
Выпуск № 20 - Декабрь 2008 full circle НЕЗАВИСИМЫЙЖУРНАЛДЛЯСООБЩЕСТВА

Выпуск20 - Декабрь 2008

Выпуск № 20 - Декабрь 2008 full circle НЕЗАВИСИМЫЙЖУРНАЛДЛЯСООБЩЕСТВА

full circle

НЕЗАВИСИМЫЙЖУРНАЛДЛЯСООБЩЕСТВА UBUNTU

UBUNTU ANDREA COLANGELO ПРОГРАММАНА C И - ЧАСТЬ
UBUNTU ANDREA COLANGELO ПРОГРАММАНА C И - ЧАСТЬ

ANDREA COLANGELO

UBUNTU ANDREA COLANGELO ПРОГРАММАНА C И - ЧАСТЬ 4
UBUNTU ANDREA COLANGELO ПРОГРАММАНА C И - ЧАСТЬ 4
UBUNTU ANDREA COLANGELO ПРОГРАММАНА C И - ЧАСТЬ 4

ПРОГРАММАНА CИ - ЧАСТЬ 4 ВЕБРАЗРАБОТКА - ЧАСТЬ 1 СИНХРОНИЗИРУЙСВОЮ МУЗЫКУ

1 СИНХРОНИЗИРУЙСВОЮ МУЗЫКУ УКРОЩЕНИЕТЕРМИНАЛА ВЕБ

УКРОЩЕНИЕТЕРМИНАЛА

ВЕБ РАЗРАБОТКА

НОВЫЕ СЕРИИ!

ВЕБ РАЗРАБОТКА НОВЫЕ СЕРИИ ! UBUNTU KUNG FU 1 Журнал Full Circle

UBUNTU KUNG FU

1

Журнал Full Circle неявляетсячастьюилипроектомкомпании Canonical Ltd.

full circle w w w . f u l l c i r c l
full circle w w w . f u l l c i r c l
full circle w w w . f u l l c i r c l

w

w

w

.

f

u

l

l

c

i

r

i

circle w w w . f u l l c i r c l e m
circle w w w . f u l l c i r c l e m
circle w w w . f u l l c i r c l e m

C.08

C.13

C.27

CC 2288

i r c l e m a g a z i n e . o r

C.19

l e m a g a z i n e . o r g C. 08

CC 2233

g a z i n e . o r g C. 08 C. 13 C. 27

C.32

n e . o r g C. 08 C. 13 C. 27 CC 2288 C. 19

CC 3377

с .04
с .04
с .04
с .04
с .04
с .04
с .04
с .04

с.04

с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4

Укрощениетерминала

с.06

с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4
с .04 Укрощениетерминала с .06 ПрограмманаСи - часть 4

ПрограмманаСи - часть 4 Вебразработка - часть 1

с.08

 

с.13

Синхронизируйсвоюмузыку с.19

с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23
с .13 Синхронизируйсвоюмузыку с .19 Зарабатываемс FOSS   с .23

Зарабатываемс FOSS

 

с.23

с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu
с .19 Зарабатываемс FOSS   с .23 Италияговорит OSS   с .26 Ubuntu

Италияговорит OSS

 

с.26

с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo
с .23 Италияговорит OSS   с .26 Ubuntu Кунг - фу   с .27 Andrea Colangelo

Ubuntu Кунг-фу

 

с.27

Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28
Andrea Colangelo с .28

Andrea Colangelo с.28

с .30
с .30
с .30
с .30
с .30
с .30

с.30

с .31
с .31
с .31
с .31
с .31
с .31
с .31
с .31
с .31
с .31
с .31

с.31

с .32
с .32
с .32
с .32
с .32
с .32
с .32
с .32
с .32
с .32

с.32

с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34
с .34

с.34

с .35
с .35
с .35
с .35
с .35
с .35
с .35

с.35

:
:
:
:
:
:
:

:

 

Резервирование

 

с.37

с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39
с .39

с.39

Значки: KDE4 Oxygen

  с .37 с .39 Значки : KDE4 Oxygen Все статьи , опубликованные в

Все статьи, опубликованные в данном журнале, распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported. Этоозначает, чтоВыможетеадаптировать, копировать, распространятьи передавать статьи только при соблюдении следующих условий: Вы обязаны ссылаться на оригинальную работуиавтора (например, указавимя, адрес email или URL), атакжеуказыватьназваниеэтогожурнала ('full circle magazine') и его адрес www.fullcirclemagazine.org. Если Вы изменяете, трансформируете или создаете что-то на основе данного материала, ВыобязаныраспространятьрезультатВашейработыподэтой, похожейилисовместимойлицензией.

2
2
Р Р Е Е Д Д А А К К Ц Ц И И О
Р Р Е Е Д Д А А К К Ц Ц И И О

РРЕЕДДААККЦЦИИООННННААЯЯ ССТТААТТЬЬЯЯ

О чередной месяц, очередные новые серии. В течение следующих
О чередной месяц, очередные новые серии. В течение
следующих нескольких месяцев Брет Альтон (Brett Alton)
будет учить нас веб разработке, начав в этом месяце с
введения в доступный инструментарий. К нам пришли несколько
просьб о публикации статей по веб разработке, поэтому я
уверен, этасериябудетпопулярной.
Яжелаювсемвамудачив 2009!
Снаилучшимипожеланиями
Ронни (Ronnie)
Редактор, журнал Full Circle Magazine
ronnie@fullcirclemagazine.org
3
Этотжурналсозданспомощью : Ubuntu — полностью свободная
Этотжурналсозданспомощью :
Ubuntu — полностью свободная
операционная система, которая
превосходно подходит для
ноутбуков, компьютеров и
серверов. Дома, в школе или на
работе Ubuntu содержит всё, что
вам может понадобиться, включая
текстовый редактор, почтовый
клиентивеббраузер.
Сразу после установки система
готова к использованию с полным
набором приложений для работы
синтернет, графикойииграми.
ННООВВООССТТИИ Ядро Linux 2.6.28 стало пятым релизом за 2008 год ,
ННООВВООССТТИИ Ядро Linux 2.6.28 стало пятым
ННООВВООССТТИИ
Ядро
Linux
2.6.28
стало
пятым

релизом за 2008 год, вслед за 2.6.27, котороевышловОктябре.

за 2.6.27, котороевышловОктябре . Хотя мы не можем дать каждому
за 2.6.27, котороевышловОктябре . Хотя мы не можем дать каждому
за 2.6.27, котороевышловОктябре . Хотя мы не можем дать каждому

Хотя мы не можем дать каждому читателю по пенни, мы все ещё хотимзнатьвашимысли.

Мы хотим знать, что вам нравится и не нравится, чтобы сделать журнал в 2009 годуещёлучше, чемв 2008.

Мы будем вам очень благодарны, если вы потратите несколько минут нанашопрос:

Опрос будет проходить до 24 января. Мы опубликуем результаты опроса в январскомвыпуске Full Cirlce.

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

Linux запустили на iPhone

. Linux зап у с т или на iPhone Порт Linux ядра 2.6 можно

Порт Linux ядра 2.6 можно запустить на

первом

и

втором

поколениях

iPhone

так же, как и на

первом

плееров iPod touch.

поколении

В

своем

блоге

PlanetBeing

подроб-

но описывает их порт, уточняя , что , уточняя, что

с

проект не имеет ничего общегоих порт , уточняя , что с проектом iPhone Dev Team. В настоящее

проектом iPhone Dev Team. iPhone Dev Team.

ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт
ничего общего проектом iPhone Dev Team. В настоящее время этот Linux порт

В настоящее время этот Linux порт Linux порт

довольно несовершенный. Успешно были . Успешно были
довольно несовершенный . Успешно были

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

буфером, Serial, Serial через USB, прерываниями и другими компонентами . , Serial, Serial через USB, прерываниями и другими компонентами. Реализована поддержка чтения NAND памяти. Но по-прежнему не работает множество вещей, включая поддержку записи для NAND памяти, чипа передачи частот, а также многих особенностей iPhone, таких как сенсорный экран, акселерометр, звукибеспроводнаясеть.

Пока этот порт работает только через подключение iPhone к компьютеру с USB клавиатурой, так что ещё это не полноценный порт Linux. Будем надеяться, что разработчикам удастся использовать сенсорную клавиатуру. Но даже в несовершенном состоянии очень многообещающе видеть запущенный Linux на iPhone. Это дает повод ожидать полностьюрабочийвариантвбудущем.

Файловая система ext4, которая прошла много стадий разработки в ядре Linux в течение 2008 года - одно изсамыхзначимыхвведенийвверсии 2.6.28. Эта версия отмечена как первый релиз, в котором новая файловая система была объявлена стабильной. Это эволюция файловой системы ext3 - основы во многих современных Linux дистрибутивах.

А пока ext4 представляет следующий шаг после ext3, разработчики Linux работают над файловой системой BTRFS, которая, возможно, будет иметь даже более значимые улучшенияв 2009 году.

значимые улучшенияв 2009 году . : http://www.internetnews.com
Мынедобилисьбыэтогобезвас! Поздравляем Jim Shunamn, который выиграл
Мынедобилисьбыэтогобезвас!
Поздравляем Jim Shunamn, который
выиграл книгу Beginning Ubuntu
Linux. Мы вышлем её вам, как
толькосможем.
Если
вы
не
победили,
не
отчаивайтесь, в этом месяце
проходит другой конкурс, в котором
вкачествепризакнига Ubuntu Kung-
Fu.
в котором вкачествепризакнига Ubuntu Kung- Fu. : http://www.washingtonpost.com 4

4

ННООВВООССТТИИ
ННООВВООССТТИИ

Вышла вторая бета версия KDE 4.2

Вышла вторая бета версия KDE 4.2 Сообщество KDE анонсировало

Сообщество KDE анонсировало выход "Canaria", (a.k.a KDE 4.2 Beta 2), второго тестового релиза новой версии KDE 4.2. Canaria в основном предназначена для обозревателей и тестеров. Она обеспечит площадку для сбора и исправления ошибок прежде, чем окончательная версия KDE 4.2.0 увидит свет. Обозреватели могут использовать Canaria, чтобы впервые взглянуть на KDE 4.2, который принесет значительные улучшения как в работе рабочего стола, такивсехприложений.

После первой бета версии, которая вышла менее 4 недель назад, было обнаружено 1665 ошибок, и 2243 ошибки были исправлены. С момента релиза KDE 4.1.0 было исправлено более 10000 ошибок, что говорит об огромном внимании к стабильности приближающейся KDE 4.2.0, которая выйдет в январе 2009. После KDE 4.2.0 последуют ежемесячные обновления, вплоть до лета 2009, когдапоявится KDE 4.3.0.

до лета 2009, когдапоявится KDE 4.3.0. : http://kde.org Linux получает Prey
когдапоявится KDE 4.3.0. : http://kde.org Linux получает Prey Программист игр

Linux получает Prey

KDE 4.3.0. : http://kde.org Linux получает Prey Программист игр для Linux Ryan

Программист

игр

для

Linux

Ryan

"Icculus"

Gordon выпустил

Linux

клиент для игры

родной

Prey,

2-х

годовалый

шутер от первого лица от компании

Клиент требует

для

платформы Windows.

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

Впервые Prey была анонсирована в 1998. Затем последовали длительные паузы в разработке, прежде чем игра была воскрешена. Онавышлатольков 2006.

Этот клиент может быть загружен с веб сайта Prey, в разделе download. Также пользователям нужно иметь саму игру Prey. Если есть интерес переноса Prey на другие платформы, используйте SDK, Этот пакет включает "полный код игры (для создания вашей собственной игровой DLL), а также примеры кода, объясняющие базовые вещи, которые вы обязанызнатьдопогружениявкод".

приобретения

Human

Head

Studios.

экземпляра

Human Head Studios. экземпляра : http://www.desktoplinux.com 5 Этот резил в

5

экземпляра : http://www.desktoplinux.com 5 Этот резил в кандидаты CrunchEee

Этот резил в кандидаты CrunchEee похож на "легкий" CrunchBang, но включает дополнительные интернет приложения. Дистрибутивсодержит:

Доступенрепозиторий Array.org с ядром 2.6.27-8-eeepc-lean. Измененнаятемасменьшими шрифтами. Терминал Terminator. Веббраузер Firefox. Файловыйменеджер PCMan с автоматическиммонтированием HAL. Тестовыйредактор Leafpad. Медиаплеер VLC. Почтовыйклиент Claws Mail.

Liferea длячтенияновостей.

FTP клиент gFTP.

Торрентклиент Transmission.

Skype дляголосовогообщения.

IRC клиент XChat.

Работасподкастамив gPodder. Клиентмгновенныхсообщений Pidgin. Микроблогингклиент Gwibber. Различныеутилиты, включая File Roller, просмотрщик Evince PDF идр.

Скачать:

ППООККООРРЯЯЙЙ ИИ ВВЛЛААССТТВВУУЙЙ АвторстатьиФилипРойер (Philip
ППООККООРРЯЯЙЙ ИИ ВВЛЛААССТТВВУУЙЙ
АвторстатьиФилипРойер (Philip Royer)

Т ы сидишь в кабинете докто-

ра почти час. Каждая секун-

да кажется бесконечностью.

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

прямо тебе в глаза. Простите, но результаты показывают, что ваша болезнь неизлечима. Твоё сердце останавливается, осознавая, что только смерть вылечит тебя. Всё,

всё

для чего ты работал пропало.

Мой первый опыт работы с терминалом компьютера был

похожим. Я очень боялся вводить команды вручную. При появлении

любойстрокинаэкранеябеспоко-

ился, что что-то не так. Что, если я ошибся при вводе команды, и это сломает компьютер? Впрочем, со временем это беспокойство смени- лось уверенностью, что я мог бы с этогоначать.

Знаете, что я думаю, когда слышу слово терминал? Я думаю, что это неприятное слово. И я не удивляюсь этому, когда вижу некоторые способы установок чего-либо в Linux. Ядрожуотстраха, когдамнеговорят запустить Терминал. Но есть ли причина бояться ввода набора символов и могущественных технических слов? Это разумный страх? Почему многие испытывают страх перед переходом на Linux из-за возможности использования командной строки? Позвольте развеять ваши страхи и помочь вам узнатьтерминалнемноголучше.

узнатьтерминалнемноголучше . Терминал - это приложение ,

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

6

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

sudo apt-get update

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

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

пользоватьсятерминалом ? Терминал может стать вашим

Терминал может стать вашим лучшим другом. Он поговорит с вами, когда у вас возникнет проблема. Он расскажет вам, в

чемошибка. Можетнетак, какэто делают люди, но в очень схожей манере.

Позвольте немного прояснить. Когда вы щелкаете по значку на рабочем столе или кнопке, компьютер получает команды. Вы не видите этого, потому что это происходит в фоне. Например, если я нажму кнопку "обновить", чтобыобновитьсистему, всё, чтоя увижу, - это строку текущего состояния, показывающую время, оставшееся до конца обновления. Но, если я введу sudo apt-get update(эквивалент в командной строке), я увижу очень длинный и подробный список веб адресов, на которых мой компьютер ищет обновления.

Вы возможно думаете: Зачем мне нужно это видеть?Ответ прост: это показывает происходящие за кулисами действия. Всё-таки, зачем это нужно знать? Если возникнет проблема с установкой, и это помешает завершить её, в терминале появятся сообщения об ошибках, которые я не увижу в случае графического интерфейса. Если всё, что я увижу, будет Простите, установка Gobbledy Plus не может быть завершена, я

Plus не может быть завершена ” , я не пойму , что пошло не так .

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

терминала - это не длявсех . Хотя Терминал очень полезен во

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

еслипрокололиколесо.

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

следует бояться неизвестности. Если мы будем бояться, мы никогда не познаем ничего нового.

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

ем у на : mrmonday@fullcirclemagazine.org Не нужно постоянно использовать

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

7

HHOOWW--TTOO ППРРООГГРРААММММАА ННАА CCИИ -- ЧЧААССТТЬЬ 44 Автор: Elie De Brauwer
HHOOWW--TTOO
ППРРООГГРРААММММАА ННАА CCИИ -- ЧЧААССТТЬЬ 44
Автор: Elie De Brauwer
FCM#17-19 - ПрограмманаСи (1-3) Dev Graphics Internet Multimedia System CD/DVD HardDrive USB Drive
FCM#17-19 - ПрограмманаСи (1-3)
Dev
Graphics
Internet
Multimedia System
CD/DVD HardDrive
USB Drive
Laptop
Wireless

В четвертойстатьея

расскажуоважнойтеме,

длякаждогоСипрограм-

миста, потомучтоонаможет

причинитьмножествонеприят-

ностей: динамическоевыделе- ниепамяти (dynamic memory allocation). Непониманиеэтого механизма (иуказателей)

можетпривестикутечкам

памятииошибкамвприложе-

нии (например, кошибке Segmantation Fault).

Сейчаспораканикул, ипоэтому примеромбудетприложение,

котороесоздаёт ASCII-снег. Чтобы создатьэтотэффект, ябудуис-

пользоватьнебольшуючастьбиб-

лиотеки, называемой "ncurses". За дополнительнойинформациейо библиотекеясоветуюпосетить

Programming-HOWTO, потомучтоя будуговоритьтолькоофункциях, которыеиспользуютсяв приложении.

приложении . Дляиспользованиябиблиотеки

Дляиспользованиябиблиотеки сначаланеобходимоустановить пакеты ncurses:

apt-get install libncurses5

libncurses5-dev

Затемвначалоисходного файланужнодобавить заголовок ncurses, дописав #include <ncurses.h>. Новым являетсято, что ncurses предоставляетсяввиде динамическойбиблиотеки, что означаетдвевещи: во-первых, компоновщикдолженсвязать нашисходныйкодс библиотекой ncurses. Это делаетсятакойкомандой:

gcc -Wall -lncurses snow.c -o snow

Параметр -l инструктирует компоновщикдобавить разделяемуюбиблиотеку ncurses. Иврезультатеэтого мыувидимтакойвывод:

edb@lapedb:~/fullcircle/c-4$ ldd snow linux-gate.so.1 => (0xb805c000) libncurses.so.5 => /lib/libncurses.so.5 (0xb7ff7000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e99000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e94000) /lib/ld-linux.so.2 (0xb8042000)

8

Запуск ldd показывает , что приложениютребуетсяналичие

Запуск ldd показывает, что приложениютребуетсяналичие внашейсистемебиблиотеки libncurses.so.5. Ещёэтозначит, чтонеудастсязапуститьэтот бинарныйфайлвсистеме, где нетэтойбиблиотеки.

Чтоможет ncurses? Насамом

getmaxyx() возвраща- етразмерытерминала

clear() отчищает экран

mvaddch() отобража- етсимволвзаданном месте

refresh() делает

принудительныйвывод

втерминал

endwin() правильно завершаетработу терминалапривыходе

initscr() инициализи-

1.int main()

2.{

3.

char * field=NULL;

4.

int row=0;

5.

int col=0;

6.

initscr(); //nc

7.

atexit(exitfun);

8.

9.

/* Вечный снегопад ! */

10.

while(1)

11.

{

12.

updateFlakes(&field,&row,&col);

13.

if(field==NULL)

14.

{

15.

break;

16.

}

17.

drawScreen(field,row,col);

18.

sleep(1);

19.

}

20.

return 0;

21.}

1: main()

деле, текстовыйтерминал - это страннаявещь. Используя printf(), можновывеститекст, ноонвсегдапоявляетсяв концестроки. Нельзяперема- тыватьназад, использовать цвета, печататьжирныесимво- лыит.д. Такжесуществуют

"управляющиепоследователь- руетбиблиотеку ncurses

ности" (escape sequences), которыевлияютнаповедение курсораивыводтекставтаких терминалах (онисуществуютс

самогоначалаисториикомпью-

теров). Нотакиепоследователь- ностинеудобныдлячеловека. Итак, ncurses - этосвоегорода оболочка, котораяоблегчает использованиеуправляющих последовательностей. Вкоде примераядобавил //nc после вызовафункций, которыеотно- сятсяк ncurses. Вотфункции, которыеяиспользовал:

, которыеяиспользовал : Функция main делает немного ( см .
, которыеяиспользовал : Функция main делает немного ( см .

Функция main делает немного (см. Листинг 1). Онаинициализирует экран (строка 6) икаждуюсекунду обновляетмассивснежинок (строка 12). Здесьтолькоодна особенность - функция atexit(). Онаиспользуется, чтобыинструк- тироватьприложение, чтоперед выходомнужновызватьэту функцию. ЕёкодданвЛистинге 2. Онапростовызывает endwin(). Заметьте, чтоздесьиспользуется

Листинг

1. /* При выходе правильно */

закрыть

терминал

2.

void exitfun()

3.

{

4.

endwin(); //nc

5.}

 

2: exitfun()

9

приём, называемый "указательнафункцию" (function pointer). Мыможем использоватьуказателина фукциитакже, какина данные, иэтопростоимя функциибезскобок.

функциибезскобок . В main() унасестьхранилище

В main() унасестьхранилище длячисластрок, столбцови массивснежинок. Мыпередаём этитрипараметравфункцию updateFlakes() (Листинг 3). Если размертерминалаизменён, она выделяетпамять. Этафункция считываетразмерытерминала прикаждомвызове. Еслиони несоответствуютхранимымв main, товыделяетсяновыймас- сив, ивсёначинаетсясначала. Встрокахс 6 по 19 считывают-

сяразмерыивыделяетсяпа-

мять (иосвобождаетсязанятая, еслионаесть). Здеськакрази

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

окнанефиксированвовремя компиляции , поэтому

компиляции, поэтому необходимоэтоузнатьи выделитьнужное количествопамяти. Тоже самоепроисходитпри измененииразмеровокна, когданужнообновить количествонеобходимой памяти. Дляэтогоисполь- зуютсяфункции malloc() (строка 15) и free() (строка 13). Функции malloc() (что означает memory allocate - выделитьпамять) нужно передатьколичествобайт, которыенужновыделить, и онавозвращаетуказатель наэтоколичествобайт (или NULL, еслипамять закончилась). Функция free() информируетсисте- му, чтопамятьбольшене нужна. Неправильноесоче- тание malloc() и free() приве- дёткутечкампамятии, в концеконцов, ккрахупри- ложения. Ну, иэтовсё. Просто, нетакли? Теперь становитсяпонятно, сколькоможносоздать себепроблем, используя динамическоевыделение памяти?

10

1./*

Обновим

стурктуру

*/

2.void updateFlakes(char ** fieldIn, int *rowIn, int *colIn)

3.{

4.

int numnew=0; int row=0; int

col=0; int i=0;

5.

char *field=*fieldIn;

6.

getmaxyx(stdscr,row,col); //nc

7.

8.

/* Создадим новый field */

9.

if(field==NULL || *rowIn!=row

|| *colIn!=col)

10. {

11.

if(field!=NULL)

12.

{

13.

free(field);

14.

}

15.

*fieldIn=malloc(row*col);

16.

field=*fieldIn;

17.

memset(field,0,row*col);

18.

*rowIn=row; *colIn=col;

19.

}

20.

21.

/* Применим гравитацию ! */

22.

memmove(&field[col],&field[0],(row-

1)*col);

23.

memset(field,0,col);

24.

numnew=random()%(col/2);

25.

for(i=0;i<numnew;i++)

26.

{

27.

field[random()%col]=1;

28.

}

29.}

 

3: updateFlakes

По-настоящемусложная частьэтойфункции - этоуправ- лениепамятью. Мыиспользуем

одномерныймассив (char* field)

дляхранениядвумерныхдан-

ных (двестороныэкрана). Прощеговоря, этоозначает, field[0] соответствуетстроке 0, столбцу 0; field[1] - сроке 0, столбцу 1; field[row] - сроке 1,

столбцу 0, а field[row+1] - строке 1, столбцу 1. Легче работатьсоднимбольшим массивом, чемсмассивом массивов. НаРисунке 1 показанаэтасхемадляэкрана размеромв 5 строки 3 столбца. Мыиспользуем memset() (строка 17), чтобызаполнить выделенныймассивнулями (это всегдахорошаяидея, потому чтовыделеннаяпамятьобычно занятамусором).

занятамусором ). Рисунок 1 - memmove() вдействии

Рисунок 1 - memmove() вдействии

). Рисунок 1 - memmove() вдействии Однакомагияпроисхо - дитвстроке

Однакомагияпроисхо-

дитвстроке 22 вфунк- ции memmove(), которая передвигаетпервые row-1 строкна col байт. На

Рисунке 1 этотсдвигизоб-

раженпунктирнойстрел-

кой. Когдаэтосделано, мыприсваиваемнули новой "первой" строкеи

меняемслучайныеячейки на 1 (этобудетснег).

на 1 ( этобудетснег ). Наконец , нужнопросто

Наконец, нужнопросто

перебратьмассививывес-

тиснегнаэкран. Этопо- казановЛистинге 4. Это лишьдва for-цикла: один - длястрок, другой - для столбцов; затемпринять решениевыводить снежинкуилинет.

1./*

Да

будет

снег

*/

2.void drawScreen(char * field, int row, int col)

3.{

4.

clear(); //nc

5.

int x=0;

6.

int y=0;

7.

for(y=0;y<row;y++)

8.

{

9.

for(x=0;x<col;x++)

10.

{

11.

if(field[y*col+x]==1)

12.

{

13.

mvaddch(y,x,'*'); //nc

14.

}

15.

}

16.

}

17.

refresh(); //nc

18.}

 

4: drawScreen()

17. refresh(); //nc 18.}   4: drawScreen() Ужебылоосвещеномного "

Ужебылоосвещеномного

"сложногоматериала", хотяпред- ставленовсегочетырестатьи. Можноувидеть, чтовэтойстатье мыужеотходимотобщего

программированиянаСисмеща-

емсякприложениямболееспеци-

фичнымдля Linux/Ubuntu. Цельюэтихстатейявляется продолжениеэтогоивсё

большееобращениекхарак-

тернымдля Linux приёмам программирования, инаэтом яжелаювсемвам, энту- зиастам, счастливогоНового

Года, полногооткрытий.

11

освободитепамятьпривыходе . • Заставьтеприложение
освободитепамятьпривыходе . • Заставьтеприложение

освободитепамятьпривыходе.

Заставьтеприложение работатьнавашей системе (необ- ходимовыяснить нужныезаголовки, подсказка: обра- титеськ man- страницамвызовов, которые выдаютясныеошибки).

Вместопередачи exitfun() в atexit() можносразупередать endwin(); проверьте, чтоэто работает. Прочитайте man-стра- ницу. Прототипыкакихфунк- цийонапринимает. Почемунет смыслапередаватьфункции, не возвращающиезначения.

Отключитеповторное выделениепамятидля field. Попробуйтетеперьизменить размерокна. Естьлиплюсы?

Заметьте, чтоиспользуемый массив field неосвобождается функцией free() привыходе. Это несоздастпроблем, неприве- дёткутечкепамяти, иядро освободитпамять. Сделайте field глобальнойпеременной (поместиввне main()) и

Напишитеприложениескодом

while(1){malloc(1);},

чтобыподтвердить,

чтопамятьвконце

концовзакончится.

Заставьте прило- жение работать на вашей системе
Заставьте прило-
жение работать на
вашей системе

Изучите man- страницы random и srand, чтобы узнать, какинициировать генераторслучайныхчисел.

генераторслучайныхчисел . Elie De Brauwer - фанатик Linux из
Elie De Brauwer - фанатик Linux из Бельгии, сейчасрабо-
Elie De Brauwer -
фанатик Linux из
Бельгии, сейчасрабо-
таетразработчикомвстроен-
ногопрограммногообеспече-
нияводнойизведущихкомпа-
нийпоспутниковойпередаче
данных. Когдаоннесосвоей
семьёй, онлюбитигратьс
технологиямиипроводитдни
ожидая, когда Blizzard наконец
выпустит Diablo III.

12

КАКОВО ВАШЕ МНЕНИЕ Мыхотимзнать, чтовам нравитсяиненравится,
КАКОВО ВАШЕ МНЕНИЕ
Мыхотимзнать, чтовам
нравитсяиненравится,
чтобыв 2009 году
сделатьжурнал Full Circle
лучше, чемонбылв 2008.
Мыбудембезмерно
благодарны, есливы
уделитенесколькоминут
нанашнебольшойопрос:
http://url.fullcirclemagazine.
org/e78bdf
Мыбудемпроводить
опросдо 24 января, а
результатыпоявятсяв
январскомвыпуске
журнала.
Отлицавсехсотрудников
журнала Full Circle мы
желаемвамудачив 2009
годуиблагодарим, что
каждыймесяцнаш
серверразрываетсяот
20.000 скачиваний.
HHOOWW--TTOO ВВЕЕББ РРААЗЗРРААББООТТККАА -- ЧЧААССТТЬЬ 11 Автор: Brett Alton
HHOOWW--TTOO
ВВЕЕББ РРААЗЗРРААББООТТККАА -- ЧЧААССТТЬЬ 11
Автор: Brett Alton
N/A Dev Graphics Internet Multimedia System CD/DVD HardDrive USB Drive Laptop Wireless
N/A
Dev
Graphics
Internet
Multimedia System
CD/DVD HardDrive
USB Drive
Laptop
Wireless

В еб-разработкой (процесс

созданиясайтов),

котораявключаетвсебя

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

поддерживаласьоперационной

системой.

Ксчастьюдляэтихцелейв

Ubuntu естьмногопервоклассного свободногоПОсоткрытымкодом. В Kubuntu и Xubuntu такжеесть подобныепрограммы, новэтой статьебудетобсуждатьсятолько ПО, ориентированноена GNOME.

Позвольтемнепознакомитьвас спрограммами, используемыми дляВеб-разработки, включаяте, которыеневходятв Ubuntu и могутбытьлегкоустановлены .

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

созданиииразмещениисайтов . Bluefish - этотекстовый редактор ,

Bluefish - этотекстовый редактор, схожийс WYSIWYG- редакторами. Онсделандля пользователей Adobe Dreamweaver, которыепривыклик вставкекода, нонепользуются

13

кнопкой "предпросмотр". Кего основнымвозможностям относятсявставкакодадля конфигурационныхфайлов Apache, C, CSS, Javascript, PHP, HTML (идругих), создание таблиц, гибкаяподсветка синтаксиса, обозреватель файловимногоедругое, что должнобытьвсовременном текстовомредакторе.

текстовомредакторе . Самянеиспользуюэту программу ,

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

sudo aptitude install bluefish

gEdit - этостандартный текстовыйредактордля Gnome, и в Ubuntu
gEdit - этостандартный текстовыйредактордля Gnome, и в Ubuntu

gEdit - этостандартный текстовыйредактордля Gnome, и в Ubuntu ондоступенв "Приложения > Стандартные > Текстовыйредактор". Хотя gEdit нестольмощный, какостальные редакторы, онобладает отличнымивозможностямии необыкновеннымиплагинами:

а гин а ми : http://live.gnome.org/Gedit/Plugins . gEdit написана Gnome Software Foundation,

gEdit написана Gnome Software Foundation, поэтомуполностью поддерживает gio/gvfs иработает слюбымифайлами, скоторыми можетработать Nautilus. Это файлы, доступныепо FTP, SMB, SSH/SFTP и DAV, чтооченьполезно приработесудалённымсервером.

Вособенности gEdit входят отличнаяподдержкапечати,

14

Geany - этогибрид текстовогоредактораи IDE для GNOME, которыйподдерживает нетолькоВеб-разработку, нои многиестороныразработкиПО. Онподдерживаетсворачивание кода, менюпеременныхи функцийдлябыстрогопоиска нужныхфункций, компилятор

(неиспользуетсядляВеб-

разработки), встроенный терминаливсё, чтодолжно бытьвсовременномредакторе.

бытьвсовременномредакторе . Geany активно разрабатывается .

Geany активно разрабатывается. Иеслисейчас онаненужна, запомнитееёдля будущего.

sudo aptitude install geany

модульнаяподсветка синтаксиса (сиспользованием gtksourceview2), которая подсвечивает CSS/HTML/PHP внутриодногофайла, плагины: файловыйбраузер, проверкаорфографии, фрагментыкода (полезнодля вставкилицензийичастого текста) идругие; интеграцияс SCIM, чтопозволяетвводв такихязыках, какяпонский.

gEdit прост, нополезен, ия

используюегодлявсейВеб-

разработки.

sudo aptitude install gedit

- разработки . sudo aptitude install gedit Eclipse - это IDE, сделанная на Java,
- разработки . sudo aptitude install gedit Eclipse - это IDE, сделанная на Java,

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

Eclipse являетсяочень мощнымприложением, нодля

большинствапользователей еговозможностипокажутся слишкомсложными. Программисты, работающиес проектами, анеобычными файлами, вкомандеивсерьёз, полюбятв Eclipse организацию иподдержкураспределённого контроляверсий CVS, SVN, git и др. Однакоесливамнужно сделатьмелкиеисправления, толучшеподойдёттекстовый редакторвроде gEdit.

редакторвроде gEdit. Хотяверсия Eclipse 3.4

Хотяверсия Eclipse 3.4 выпущенавиюнеэтогогода, к сожалению, в Ubuntu совремён 6.10 (Edgy Eft) используется версия 3.2. Есливамнужна последняяверсия (сотличной поддержкой PHP), еёнужно скачатьиустановитьвручную.

sudo aptitude install eclipse

. sudo aptitude install eclipse KompoZer - этокросс - платформенный

KompoZer - этокросс- платформенный WYSIWYG- редактор, схожийс Adode Dreamweaver. Этофорк спонсируемого Linspire редактора Nvu, которыйявляетсяфорком Composer от Mozilla, который сейчасявляетсячастьюпакета SeaMonkey. Обзор SeaMonkey будетданвскоромвремени.

Особенностямиприложения

являютсяменеджерсайтов,

являютсяменеджерсайтов , позволяющийсоединитьсяпо FTP,

позволяющийсоединитьсяпо FTP, иредактор CSS.

KompoZer являетсяредактором дляначинающих. Профессиона-

лам, вродеменя, непонравится,

чтонетконтролянадсоздавае-

мым HTML, drag & drop интеграции

с GNOME, игромоздкий GTK-

15

интерфейс. Онможетподойти длятех, ктохочетсоздать простойсайтдляфотосемьи илюбимцевилихобби. Однако, учитываякачество Системуправленияконтентом (CMS), вроде Wordpress (окото- ройярасскажувследующей статье), янастоятельнореко- мендуювоспользоватьсяими, анеразрабатыватьсвойсайт.

Последнийрелизпрограммы состоялсявавгусте 2007 года, нофорумвсёещёактивен:

http://wysifauthoring.informe.co m/forum/; иведущий разработчикпубликует сообщенияипомогаетс поддержкой. Янеудивлюсь, еслискоробудетноваяверсия.

sudo aptitude install kompozer

. sudo aptitude install kompozer SCREEM оченьпохожана BlueFish,

SCREEM оченьпохожана BlueFish, нопрограмма, не обновляемаяс 2005 года, опередиласвоёвремяивсё ещёполезна.

Простаявставкакода, взаимодействиес GNOME, помощникидля CSS, таблиц,

формидр .; иинтеграцияс CSV. SCREEM длятех , ктонелюбит набирать HTML

формидр.; иинтеграцияс CSV. SCREEM длятех, ктонелюбит набирать HTML вручную.

набирать HTML вручную . SCREEM большене разрабатывается ,

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

sudo aptitude install screem

. sudo aptitude install screem eBox - этосолиднаявеб -

eBox - этосолиднаявеб- панельуправления, которая можетконтролировать Apache, OpenVPN, OpenLDAP, Samba, CUPS, Spamassassin, Postfix, ClamAV, Jabber, Squid иещё множествопрограмм, которые

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

Личнояопять-такине пользуюсь eBox, потомучто администрируюмои Linux-сервера исключительноизкомандной строки. Ноэтарекомендуемая программадлятех, комунужно администрировать Linux-сервер самимилиихподчинённым.

Хотя eBox включёнав Ubuntu, онасломанавнесколькихверсиях, инекоторыепакетынемогли бытьвключеныиз-запроблемс лицензией. Поэтомудляустановки воспользуйтесь https://launchpad. net/~ebox/+archiv. Будем

надеяться, eBox 1.0 будетвключен в Ubuntu 9.04 (Jaunty Jackalope).
надеяться, eBox 1.0 будетвключен
в Ubuntu 9.04 (Jaunty Jackalope).

sudo aptitude install ebox-ca ebox-dhcp ebox-dns ebox-firewall ebox-network ebox-ntp ebox- objects ebox-openvpn ebox- printers ebox-samba ebox-services ebox-squid ebox-usersandgroups libebox

или:

16

echo 'deb http://ppa.launchpad.net/ebox/ ubuntu intrepid main' | sudo tee -a /etc/apt/sources.list && sudo aptitude update && sudo aptitude install ebox-ca ebox-dhcp ebox-dns ebox- firewall ebox-jabber ebox- mail ebox-mailfilter ebox- network ebox-ntp ebox-objects ebox-openvpn ebox-printers ebox-samba ebox-services ebox- software ebox-squid ebox- trafficshaping ebox- usersandgroups libebox

Замечанияпоустановке:

Пользователи 8.04 (Hardy) должнызаменить "interpid" на "hardy" встрокахвыше.

Уберитевсемодулииз строкиустановки, которыене нужны (например, ebox-mail, еслипочтовыйсервервамне нужен).

Послеустановки eBox доступенподадресу:

https://localhost/ebox

доступенподадресу : https://localhost/ebox Nautilus - этостандартный
доступенподадресу : https://localhost/ebox Nautilus - этостандартный

Nautilus - этостандартный файловыйменеджер GNOME/Ubuntu. Заслуживает

вниманиякакприложениедля

Веб-разработчиковонпоодной

причине:

причине : " Соединитьсяссервером ".

"Соединитьсяссервером".

Nautilus оченьполезенпри работесбольшимчислом FTP,

SFTP, NFS, WebDAV серверов. Длясоединениявыберите "Переход > Соединитьсяс "

сервером

Есливысоединяетесьсэтим серверомчасто, выберите "Добавитьвизбранное", ион появитсявменю "Переход".

ивведитеадрес.

" Переход ". ивведитеадрес . Munin - этооченьполезное
" Переход ". ивведитеадрес . Munin - этооченьполезное

Munin - этооченьполезное

приложениедляадминистриро-

ваниясерверов. Оностроит (припомощи rrdtool) графики использования CPU, памяти, свопингаижесткогодиска;

количествапотоков MySQL,

; количествапотоков MySQL, ввод / вывод Exim, ошибкисети ,

ввод/вывод Exim, ошибкисети, трафикит.д. - всёподням, неде- лям, месяцамигодам. Начальству онапонравится, потомучто обычноимнравятсякрасивые программы. Дажепростые пользователисмогутприменить еёдляконтроляиспользования жёсткихдисковитрафика.

жёсткихдисковитрафика . Munin устанавливаетсяв /var/ www/munin,

Munin устанавливаетсяв /var/ www/munin, поэтому, еслинужно поместитьеёвдругоеместо, передустановкойсоздайте ссылку (a.k.a. ярлык). Программа доступнав http://localhost/munin, или, еслинетвеб-сервераи ярлыка, /var/www/munin.

sudo aptitude install munin

ярлыка , /var/www/munin. sudo aptitude install munin MySQL Administrator - этокросс -
ярлыка , /var/www/munin. sudo aptitude install munin MySQL Administrator - этокросс -
ярлыка , /var/www/munin. sudo aptitude install munin MySQL Administrator - этокросс -

MySQL Administrator - этокросс- платформенныйинструмент, созданный MySQL AB (теперь Sun

17

Microsystems) дляуправления локальнымииудалёнными базамиданных. Егоможно использоватьдляконтроляих "здоровья" (кол-возапросови соединений, использование памятиидр.), управлять пользователямиирезервными копиями, изменять переменные MySQL сервера.

Этапрограммадлятех, кто предпочитаетуправлениепри помощи GUI-приложений, и

помощи GUI- приложений , и тех , ктолюбитграфикидля

тех, ктолюбитграфикидля отображениясоединенийи статистикииспользования.

Помните, чтосейчас программаназывается "MySQL GUI-tools", ивбудущих версиях Ubuntu название можетизмениться.

sudo aptitude install mysql- admin

http://localhost/phpmyadmin phpMyAdmin - этоуниверсаль - ноесредствоуправления

http://localhost/phpmyadmin

http://localhost/phpmyadmin phpMyAdmin - этоуниверсаль - ноесредствоуправления
http://localhost/phpmyadmin phpMyAdmin - этоуниверсаль - ноесредствоуправления
http://localhost/phpmyadmin phpMyAdmin - этоуниверсаль - ноесредствоуправления

phpMyAdmin - этоуниверсаль- ноесредствоуправления базамиданных MySQL свеб- интерфейсом. Оноподдержива-

етполноеуправлениепользова-

телями (длякаждойотдельной базы), тестовыезапросы (и формируеткод PHP дляних), резервноекопированиебаз, экспортивосстановлениеи множестводругих возможностей, присущих MySQL.

возможностей , присущих MySQL. Яиспользуюэтупрограммуи

Яиспользуюэтупрограммуи

рекомендуюеёвсем.

phpMyAdmin версии 3.1 (или выше) будетвключёнв Ubuntu 9.04 (Jaunty Jackalope).

sudo aptitude install phpmyadmin

Послеустановки phpMyAdmin доступенпо:

Webmin - этопанельдля

администрированиясерверасвеб-

интерфейсом. Онаневключенав Ubuntu из-затого, как взаимодействуетссервером (не отвечаетполитике Debian). Новсё жеэтооченьполезнаяпрограмма.

жеэтооченьполезнаяпрограмма . Webmin управляетсамыми

Webmin управляетсамыми распространённымидемонами Linux сервера. Нотакжеподдержи- ваетплагинынаслучай, есливам понадобитсяуправлятьдругой программой (например, Awstats).

wget http://prdownloads.sourceforge.net /webadmin/webmin_1.441_all.deb && sudo aptitude install libauthen- pam-perl libio-pty-perl libmd5- perl && sudo dpkg -i

webmin_1.441_all.deb

18

Заметьте, чтоэтопоследняя версиянатекущиймомент. Дляустановкисамой последнейверсииеёномер можноузнатьнасайте.

Послеустановки Webmin доступенпоадресу:

https://localhost:10000/ . Для входавведитепароль пользователя root. Скажу прямо, есливынезнаете, как егоустановить, товамлучше неиспользовать Webmin (с точкизрениябезопасности). Рассуждайтетак: если бутылкунеоткрыть, топиво нельзябудетвыпить!

Янадеюсь, выбудетеждать следующихмоистатей, в которыхречьпойдёто созданиисайтов, включая введениев HTML/CSS и программированиев PHP/MySQL, установкуи использованиесистем управленияконтентом, сравнениепрограммных каркасов javascript и информациюоразмещениии управлениисайтом.

HHOOWW--TTOO ССИИННХХРРООННИИЗЗИИРРУУЙЙ ССВВООЮЮ ММУУЗЗЫЫККУУ
HHOOWW--TTOO
ССИИННХХРРООННИИЗЗИИРРУУЙЙ ССВВООЮЮ ММУУЗЗЫЫККУУ
АвторДжоБерри (Joe Berry)
N/A Dev Graphics Internet Multimedia System CD/DVD HardDrive USB Drive Laptop Wireless
N/A
Dev
Graphics
Internet
Multimedia System
CD/DVD HardDrive
USB Drive
Laptop
Wireless

К ак и у многих из вас, у меня

есть цифровая музыкальная

коллекция в mp3 файлах.

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

по сохранению и управлению моей музыкальнойколлекцией.

храню свою музыку на

компьютере с Linux, с запущенной

Samba и

прослушивать её как на компьютере с Windows, так и с Linux и Unix, которые имеются у меня дома. В основном я работаю за ноутбуком с установленной Ubuntu 8.04. Когда я дома, я получаю доступ к

и

слушаю

Rhythmbox. Но иногда мне приходится путешествовать, и мне очень важно иметь доступ к моей

музыке. Поэтому,

недорогой, переносной жёсткий USB

который

обеспечил меня

копированием моей коллекции, так и возможностью слушать музыку, когда

янахожусьвнедома.

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

как резервным

приобрёл

через

музыкальному серверу по

NFS, что позволяет

Я

NFS

мою

коллекцию

я

диск 160Гб ($99 US),

19

можетбыть, угодитивашим.

Как я уже говорил, я часто пополняю свою коллекцию, а

иногда и удаляю из неё некоторые композиции. И мне не нужна такая схема резервного копирования, которая просто копирует новые файлы в

некоторую

Если я удаляю композицию, я

хочу, чтобы она исчезла и из резервной папки. Мне нужен

простой

будет чётко управлять и

копию

моей коллекции (удаляя некоторые композиции и добавляя новые). Мне также не хочется, чтобы это занимало длительное время (помните, у меня 25Гб музыки). Решением, которое выбрал я, стала

Само

который

папку.

резервную

механизм,

поддерживать точную

программа rdiff-backup.

приложение и документация на него расположены на домашней странице:

www.nongnu.org/rdiff-backup/.

пакетов Synaptic

Менеджер

делает установку rdiff-backup

очень простой. Просто сделайте

rdiff-backup и

поиск

по

установите его (заметка: также требуетсяустановка Python). Чтобы
установите его (заметка: также
требуетсяустановка Python).
Чтобы автоматизировать запуск
rdiff-backup, ясоздалскрипт (Рис.1).
Наилучшее описание программы
rdiff-backup даётсамавтор:
Строка №2 определяет выходной
файл для хранения истории
ежедневного запуска этого скрипта.
Без этого будет трудно разобраться,
если возникнут проблемы.
Следующие несколько строк просто
отмечаютвременнуюотметку.
В строках 5-10 скрипт
подтверждает, что переносной
USB диск присоединен. Если же
он не присоединен, то нет
причин продолжать выполнение
скрипта дальше. В зависимости
от специфики вашего жёсткого
диска, в строке №6, возможно,
необходимы изменения. Чтобы
определить, какую строку вам
1.
#!/bin/bash
2.
LOG=/home/jberry/rdiff-backup-output.txt
3.
echo "Starting rdiff-backup" >> $LOG
4.
date >> $LOG 2>&1
5.
# make sure the portable drive is mounted
6.
df /media/* | grep PASSPORT
7.
if [ $? -eq 1 ] ; then
8.
echo "No portable drive -- can't continue" >> $LOG
9.
exit 1
10.
fi
11.
# make sure fedora's music is mounted
12.
df /music | grep fedora
13.
if [ $? -eq 1 ] ; then
14.
#
try to mount
15.
echo "mounting the fedora music dir" >> $LOG
16.
/home/jberry/util/mount-music
17.
# now make sure the mount was successful
18.
if [ ! -e /music/README.txt ] ; then
19.
echo "Unsuccessful mount of music from fedora" >> $LOG
20.
exit 1
21.
fi
22.
fi
23.
/usr/bin/rdiff-backup --print-statistics /music /media/WD\
PASSPORT/music >> $LOG 2>&1
24.
echo "rdiff-backup is finished at " >> $LOG
date >> $LOG 2>&1
25.

20

использовать для вашего диска , подсоедините диск и запустите

использовать для вашего диска, подсоедините диск и запустите окно терминала (Приложения Системные Терминал). Введите команду df, и вы должны

увидетьчто-топохожеенаРис.2.

Заметка о последней строке. Она касается моего переносного диска. У вас, возможно, будет стоять другие значения после строки /media/. Строка 6 ищет в выводе команды dfзначение параметра PASSPORT. Если такое значение не найдено, скрипт завершается. Измените эту строку подсвоипараметры.

Следующая

часть

скрипта

определяет

доступность

источника

музыкальный

с

музыкой.

Мой

является

сервер

fedora/music не присоединена, скрипт присоединит её, запустив другой скрипт mount-music (строка 16). В этом скрипте всего лишь одна строчка:

mount -o ro fedora:/joe0/music /music

/music

Директория

где

хранится

музыка.

/media/WD\ PASSPORT/music

Эта директория определяет, где будет храниться резервная копияколлекции.

других

параметров rdiff-backup. Введите:

Если ваша музыкальная коллекция находится на вашей локальной системе Ubuntu, то вы просто можете удалитьстроки 11-22.

Вам потребуется изменить строку 23, строку, запускающую rdiff-backup, для определения местонахождения вашей музыкальной коллекции. Параметры, которые я указал (в порядкеихпоявления):

--print-statistics

Есть

множество

man rdiff-backup

чтобы

команды доступны. Также вы

ещё

узнать,

какие

можете

посетить

сайт

с

подробнойдокументацией.

Существуют две вещи,

о

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

Linux

системой

и называется директория

 

'fedora'.

Если

Это означает, что будет показана различнаястатистика.

 

$ df

$ df