суббота, 31 июля 2010 г.

Заметки о python в народном хозяйстве linuxoида: вызываем утилиты командной строки

Язык python разработанный Гвидо ван Россум  при всей своей простате синтаксиса обладает мощными возможностями. Поэтому находит активное применение как в науке, так и в повседневной работе с системой. Сегодня я хотел бы показать как вызывать приложения командной строки из python, для примера рассмотрим общеизвестную консольную утилиту wget.  Эта утилита имеет следующий синтаксис вызова: wget [параметры ] [адрес]. Пример вызова:
 wget  http://www.google.ru , а если хотим сохранить закаченный материал в каком то другом месте то: wget -P /path/to/save  http://www.google.ru Просто? А как это запрограммировать в python? Для определенности поставим задачу так: написать функцию, которая бы обеспечивала загрузку заданного файла либо в домашний, каталог, либо в заданный каталог. Фактически нам надо чтобы функция генерировала и передавала на исполнение командной оболочке в первом случае: wget url, а во втором: wget -P /path/to/save url. И здесь нам на помощь приходит модуль subprocess и его функция call(*popenargs, **kwargs) . Она позволяет вызвать приложение и передать ему набор аргументов в виде кортежа:
 retcode=subprocess.call(["wget","www.site.com"]). в retcode идет код возврата от вызванной программы. В первом параметры передаем имя программы для вызова, а во втором параметр, при чем каждый из них идет как член списка. А вот собственно и код самой функции полностью:
import subprocess #импортируем модуль subprocess
def basic_download(key,url):  # определяем функцию с двумя параметрами(первый содержит #ключи,а второй адрес)   
 if url=='':  #если адрес пуст вернем ошибку                   
     return -1
 if key=='':  # если параметр key не задан, вызываем wget с параметрами по умолчанию... 
    retcode=subprocess.call(["wget",url])
    return retcode
 else: #иначе
    key='-P'+key #конкатенация ключа и пути сохранения  
    retcode=subprocess.call(["wget",key,url])
    return retcode     
 Это базовый пример, но  этот модуль предоставляет куда большие возможности, в чем можно убедится заглянув сюда
Смело указывайте на ошибки и неточности, ведь я только начинаю свой путь в python. 
P.S. надеюсь хватит сил довести до полноценной GUI оболочки для wget           
     

Установка Linux, заметки по горячим следам(записки Windows эмигранта)

Возможно что вы захотите установить Linux на свою машину. Для того чтобы это сделать нам нужно разобраться с файловой системой Linux. Итак начнем...
Любая операционная система без файловой системы это как картина на стене без гвоздя. Файловых систем в мире операционных систем очень много главное не запутаться. Если вы Windows пользователь, то привыкли пользоваться файловой системой NTFS,FAT16,FAT32. При чем конечно FAT16 здесь приведен лишь для полноты картины. Спешу обрадовать, что Linux Ubuntu да и не она одна с успехом понимает и все выше перечисленные типы файловых систем, так что доступ к своим данным Windows вы не потеряете. Какие же файловые системы встречают нас в Linux?
Из всего многообразия выделим Ext3/4 и NFS. Ext3/4(Third Extended File System/Fourth Extended File System). Это самые распространенные файловые системы Linux. Они обладают важным свойством: они ведут журнал изменений, которые происходят в них, что может помочь более быстро реанимировать файловую систему. Так же еще одной важной чертой файловых систем Linux является применение экстентов. Размещение по методу экстентов это выделение непрерывных блоков, а не отдельных малых блоков как это например делается в FAT.Таким образом достигается меньшая фрагментация файловой системы. Чуть позже мы, когда закончим базовый разговор о Linux поговорим и о журналировании данных.
Важно так же отметить что структура записи о файле в UNIX-системах не совместима c NTFS,что требует специальных инструментов в Windows для работы c Ext3/4. Теперь рассмотрим структуру каталогов и пути, а так же монтирование и демонтирование файловых систем. В Linux нет привычного для Windows понятия локального диска, вместо него есть точки монтирования. Процесс монтирования файловой системы это подключение ее к системе в режиме, когда система может с ней взаимодействовать, а точка монтирования это в виде чего Linux увидит данную файловую систему. Дело в том, что одна точка монтирования для Linux будет например местом куда сбрасывать логи (каталог var),а другой может хранить в себе данные  пользователей(каталог home). Но самым важным для Linux является странный каталог /. Каталог / это сердце всей системы, корневой каталог, который является самым начальным во всей файловой системе. Там хранится ядро, системные утилиты идущие с ядром. Это как C:/Windows. Вот его внутренности:
Папка bin хранит системные утилиты, которые можно вызвать из командной строки. Usr   сами исполняемые и дополнительные компоненты программ установленых пользователем. Об остальных каталогах поговорим чуть позже и не в этой заметке кроме двух: root и home.
  Пользователь root может делать на система все , что ему заблагорассудится. Вообще система UNIX всегда отличалась жестким подходом к вопросам безопасности, а потому там действовала система учетных записей, которая изолировала пользователя от критических мест системы и данных др. пользователей.  Исключение составляет только пользователь root, который может воздействовать  на любой элемент системы. Поэтому стандартной и совершенно правильной рекомендацией для пользователей любой *nix системы(так сокращают системы семейства UNIX)  является использование учетной записи root только в случаях, когда такие полномочия действительно нужны безальтернативно. И технологией воплотившую данную идею стало sudo. Sudo это приложение командной строки, которое позволяет динамически повышать привилегии пользователя до уровня root и снижать их после выполнения привилегированных операций. Вам это ничего не напоминает? Правильно система UAC Vista/7. Вот как sudo выглядит при работе в командной строке:
  команда find ищет файлы по заданной маске, однако без команды sudo ей будут недоступны системные каталоги и домашний каталог root. А вот в графическом режиме работы та же sudo:
   А теперь из серии зацените разницу:
Microsoft добавила аналог sudo лишь в Windows Vista/7 и все windows сообщество это всколыхнуло, а для Linux это стандарт, начиная с первых версий. Так что когда MS заявляет о меньшей защищенности Linux, усомнимся в ее словах. Root особый но все же пользователь ОС Linux, а у него могут быть какие либо материалы, которые других пользователей вообще не касаются. И потому   у него есть свой каталог. И у любого другого пользователя для своих материалов будет свой каталог в каталоге home. Имя пользователя и будет являться именем домашнего каталога.Внутри домашнего каталога можно создавать произвольные подкаталоги.
  Linux позволяет прозрачно работать с файловыми системами на удаленных машинах, устанавливаться и загружаться по сети и все это дает нам Cетевая Файловая Система(NFS).
Большинство современных файловых систем используют технологию отложенной записи на диск(кеширование ввода/ввывода). Преимущества данного решения: за счет накопления ряда изменений ФС снижается фрагментация, достигается более эффективная организация с использованием экстраситетов. Снижается нагрузка на дисковую систему. Из недостатков этого решения: в случае отключения питания данные будут потеряны, кеш файловой системы можно быть атакован, а данные в нем изменены.     
Итак суммируем все то что мы узнали о линукс перед непосредственной установкой:
1) Linux использует различные типы файловых систем, наиболее распространенные это журналируемые   ФС типа Ext3/4 несовместимые с NTFS и FAT
2) Linux умеет работать с NTFS
3)   Журналируемая  ФС это файловая система, поддерживающая запись происходящих с ней изменений в журнал с возможностью отката состояния по журналу.
4) файловая система Ext3/4 является кеширующей
5) В Linux главным каталогом  является /
6) У каждого пользователя есть домашний каталог, где он хранит свою информацию
7) Linux использует принцип монтирования ФС и точек монтирования, то есть различных представлений данной файловой системы
8) Различные компоненты системы могут быть разнесены по различным файловым системам
9) В Linux предусмотрена система учетных записей, где большинство пользователей имеют весьма ограниченные права. Но root может все и немножечко больше:) Для предотвращения проблем в Linux встроена система sudo, которая может динамически менять права.
10) Для сложных манипуляций с данными по сети и их прозрачного представления в системе используется NFS
  Теперь поговорим собственно об установке. Стандартный домашний компьютер довольно таки легко потянет Linux, проблемы могут возникнуть лишь с нестандартным оборудованием. Пройдемся по этапам установки Linux Ubuntu:
1) Сначала вам надо скачать образ cd/dvd с ubuntu.com Там жмите кнопку download и вы попадете на страницу выбора варианта Desktop дистрибутива Можете сразу нажимать download, хотя как вы можете убедится есть серверный вариант и для нетбуков. После нажатия на кнопку у вас начнется скачивание образа Ubuntu. Он весит 699 мб.
Вот он сайт системы Ubuntu,заходите сюда: здесь бывают интересные вещи:D
  Страница загрузки Ubuntu и та самая заветная большая красная,бр... оранжевая кнопка загрузки
Что ж вы загрузили диск, запишите iso образ на CD/DVD диск, либо Nero, либо штатными средствами Windows.Вставьте полученный загрузочный CD в дисковод.   После чего перезагрузите компьютер и зайдите в BIOS настроив порядок загрузки так, чтобы дисковод был первым источником загрузки.  Сохраните изменения и выходите из BIOS. Через некоторое время вы увидите такой экран, что говорит о подготовке системы к запуску инсталятора:
       Через некоторое время вы увидите ни что иное как экран приветствия:

     Здесь первое что вы можете это выбрать язык инсталлятора в колонке слева, вполне понятно что мы выберем арабский:) Выбор русского языка в качестве языка инсталляции поможет инсталятору сразу же определить раскладку клавиатуру и какой язык инсталлировать в систему
Первая кнопка запустит Ubuntu в режиме LiveCD, когда вы не устанавливая ее на жесткий можете поработать с ней. Вторая запустит классическую установку.В первом экране установщика после приветствия вас спросят о часовом поясе:

О раскладке клавиатуры(вы можете проверить правильность автовыбора):

Дальше вы попадете на этап разметки диска, здесь есть несколько вариантов:
 1) использовать весь диск. Все будет стерто и установлена Ubuntu
2) Совместно использовать установленные операционные системы и установить загрузчик для выбора какую запускать. Если у вас всего один логический диск и нет свободного, то могут быть проблемы.
3) Ручная разметка.Здесь вы сможете сами наметить разделы для новой системы.
Самым важным для  нее является раздел / и вам необходимо выбрать соответствующий раздел из списка, для  него определить файловую систему, разумно оставить Ext4, а в качестве точки монтирования /. Затем необязательно но очень желательно дать системе раздел swap(выбираете раздел из списка для этой цели, файловую систему устанавливаете как swap,а тип монтирования: раздел подкачки    ). Swap раздел необходим для эффективной работы виртуальной памяти. Эта технология позволяет использовать памяти больше чем  есть физической. Она разбивается на страницы, создается таблица этих страниц, а уже они транслируются в физические адреса памяти. Все вирт страницы не могут уместится в ОЗУ и часть из них вытесняется как раз на диск в раздел swap. Для swap можно выделить 200 мб и это будет вполне приемлемо.
Важно отметить что для установки Ubuntu требуется свободное пространство, поэтому озаботесь этим заранее. И еще: сначала устанавливаем Windows, а только потом Linux это связано с тем, что Windows безцеременно перезаписывает главную загрузочную запись, исходя что она одна на машине  
Дальше можно переходить к созданию учетной записи. Выберете какой либо пароль, это очень желательно, лучше лишний раз ввести пароль, чем допустить ошибку или дать возможность вредоносному ПО навредить.

Потом вас спросят в последний раз обо всех изменениях и начнется установка:

В конце вас попросят перезагрузиться, система так же вас попросит извлечь диск и нажать ENTER   и если все прошло гладко, то перед вами появится загрузчик GRUB, который спросит какую ОС запускать, а потом и экран входа в систему графической оболочки GNOME

Вы вводите свой пароль и увидите примерно это:

Все вы установили Linux Ubuntu 10.04 LTS Lucid!    
Из дополнительных шагов после установки:
зарегистрироваться на форуме русскоязычного коммьюнити Ubuntu.ru
И стать постоянным читателем моего блога:)              
В следующий раз обсудим более подробно подготовку жесткого диска к установке
  


                    

пятница, 30 июля 2010 г.

Windows прощай!(Записки Windows эмигранта)

Несколько дней назад я перешел в мир Linux Ubuntu. При чем знакомится  с системами Linux ваш покорный слуга еще начал год назад, но тогда все больше под эмуляторами. Первые мои эксперименты в реальности жесткого диска и его данных были весьма неудачны для Linux, но не затронули win. При чем хочу заметить что виной тому были исключительно мой подход в стиле MS: щелкнем по кнопкам и ок. Первые неудачи заставили к Linux отнестись серьезней.Что ж естественно обратился к таким источникам как ubuntu.ru   и книгам. Однако все ж главный источник просветления явилась тестовая система на Virtual Box. Теперь хотел бы кратко охарактеризовать Linux Ubuntu
Вокруг Linux сложился миф что Linux=командная строка. Ну что ж посмотрите вот моя ubuntu в штатном состоянии:
 Да жуткая командная строка и ничего больше:) А если серьезно, то к вашим услугам  и аналог меню Пуск(панель сверху) При чем мне она нравится больше чем меню Пуск, Программы это один пункт на панели, навигация по файловой системе другой, а инструменты администрирования третье. Коснемся более подробней вопроса о рабочем столе.
Все мы привыкли что он один и жестко интегрирован с ОС.  Но Linux приподнесет нам здесь первый сюрприз: для Linux интерфейс в стиле GUI так приятное дополнение и не более. Она может прекрасно работать и без него. Но все же если вы не фанат текстовых браузеров и аскетичного мерцающего курсора, то на помощь Вам приходит X-window, которая обеспечивает базовые возможности графики. Вобще сама эта система появилась тогда когда были терминалы за ними сидели юзВери, а один системный блок  обслуживал их запросы. X-window разрабатывалась с тем, чтобы обеспечить для таких систем графические возможности. Так как она обслуживала сразу много рабочих станций, то сама X-window имела клиент-серверную технологию организации. В дружелюбных Linux системах с иксами, так в народе зовут X-window, Вам сталкиваться придется редко, то пока просто помните что базовые графические возможности предоставляет именно эта система. Однако сами иксы никакого интерфейса какой вы увидили на скрине не дадут, за это отвечает так называемое рабочее окружение. А вот злдесь мы подошли к вопросу о дистрибутивах.
     Сам финский парень Линус в 1991 году написал лишь ядро и именно это и есть, строго говоря, Linux. Однако простым пользователям в ядре пользы мало.  Документы при помощи него напишешь, кино не посмотришь, взять бы его и выкинуть! Ан нет! Оно хоть и с пользователем неособо разговорчиво за то обеспечивает доступ к железу и распределение  ресурсов для иных программ. В первых системах UNIX от которых и произошла Linux единственным средством общения с ОС была командная строка. Однако дни юности UNIX прошли, система мужала и начали появляться первые разработки типа X-window, которые и проложили путь к GUI. К 1991 году наработки по этому вопросу имелись.  К этому времени уже во всю работал Ричард Столмен, развивалось GNU сообщество. Не хватало открытой ОС. И Линус Торвальдс дал ее основу.К 1998 году начались работы над одной из первых графических сред для Linux GNOME  Позже появится KDE  Но нельзя забывать и про более ранние графические среды которые предоставляли GUI обертку для командной строки. Итак что же такое дистрибутив Linux? Это ядро линукс и некоторый набор программ, которые могут содержать и графическое окружение. Сам состав  дистрибутива различен у каждого производителя. Однако все же говорить об анархии нельзя, обычно дистрибутив включает в себя: графическую среду (обычно GNOME или KDE ), естественно стандартное ядро, дополнительные приложения. Дистрибутивы делаются для различных целей, начиная от user-friendly Linux Ubuntu или Linux Mint и заканчивая специфическими Linux типа DEFT для криминалистов.
Скажем пару слов о окружении. И KDE, и GNOME это больше чем рабочий стол: они предоставляют  Вам офисные приложения аналогичные MS Office, графические инструменты настройки системы, средства работы в Интернет от браузера и программы общения до torrent клиента и средства работы с удаленными системами, видео и аудио проигрыватели и даже инструменты разработки . То есть в принципе тот же GNOME или KDE способны удовлетворить все ваши повседневные потребности.
Заключая наш обзор Linux  заметим, что в Linux все может быть перестроено под ваши нужды. Основной массив ПО под Linux распостраняется как  GNU/GPL, что дает Вам право:
1) Бесплатно их использовать. При чем как в коммерческих целях так и для себя. По условиям GPL (General Public Lience ) Универсальная общественная лицензия GNU  Деньги могут браться лишь за доставку носителя с ПО, хотя человек обязательно должен иметь способы бесплатного получения продукта
2) Вы как пользователь обязаны от производителя получить исходники его продукта при чем в таком виде, чтобы вы могли собрать рабочий образец программы
3) Вы  можете свободно модифицировать и распространять код и бинарные файлы продукта.
Но есть одно ограничение:
вы не имеете права изменять условия лицензирования и теряете авторские права на программу, так называемый принцип copyleft
На этом философское введение в Linux завершим, а завтра опишу опыт установки Linux на машину.Комментируйте,критикуйте, предлагайте новые темы, спрашивайте!