Введение в UNIX way. Установка (как бы) Linux.

Спецсеминар "Разработка свободного ПО": http://uucode.com/oss2004/. 2-я лекция.

Введение в UNIX way.

Кернинган, Пайк. "UNIX. Программное окружение". <http://www.books.ru/shop/books/82361?partner=xmlhack>. Есть практический пример компилятора с помощью yacc.

Графический интерфейс vs текстовый:

Текстовый:

Частично утянуто у Витуса Вагнера: "О вреде дружественных интерфейсов" http://www.45.free.net/~vitus/user-friendly.txt: "дружественный интерфейс". Но дружба - это отношение между равными. Хороший интерфейс должен быть не дружественным, а рабским.

Хорошие программы обычно молчат и выводят на экран только сообщения об ошибках. gzip vs zip.

Есть ключ "-h"/"--help". А также "man <command>" или "info <command>".

Вместо одной большой команды -- много маленьких, которые взаимодействуют.

Один из способов: pipes.

$ cat mbox | grep '^Subject:' | sort | uniq

stdin, stdout, stderr

Перенаправление ввода-вывода

$ ls >myfiles  (сравните с Perl)
$ ls >>myfiles
$ sort <myfiles
$ make 2>log-err >log
$ make >log 2>&1
$ make 2>&1 | tee log

"Если тебе лень читать вывод программы, заставь это делать другую программу". Команды "yes", "grep", "tee".

convert.sh (eps->png)

$ cat convert.sh
#!/bin/sh
for i in eps/*eps; do convert "$i" png/`basename "$i" .eps`.png; done
$ sh ./convert.sh``

Установка Linux

Популярные дистрибутивы:

Какой linux ставить? Такой же, как и у вашего гуру.

Рекомендуется: ALT Linux Master. Junior и Compact не подходят. Есть список рассылки пользователей.

vmware -- Linux/Windows/etc в окошечке

cooperative linux (http://www.colinux.org/) -- Linux поверх и совместно с Windows XP.

На зачёт: заставить ALT работать в cooperative node.

Совсем window: cygwin, mingw/msys

cygwin (http://www.cygwin.com/) -- почти полная эмуляция среды POSIX. Таскает за собой большую DLL. (offtopic: рассказать про smbclient.)

mingw/msys (www.mingw.org) -- позволяет компилировать многие POSIX- программы для win32.

Домашнее задание

Установить ALT Linux Master, поработать с Knoppix или любым другим Linux'ом.

Отступления от темы

Про семинары: реклама семинара по .NET.

Хвост с прошлой лекции: Lambda the Ultimate <http://lambda-the-ultimate.org/> The programming languages weblog.

Хвост с прошлой лекции: Общее: нельзя делать строгое сравнение в нецелочисленных вычислениях. А также считать деньги в плавающей запятой. Понимается только после реального попадания на проблему.

Про зачёты:

Про доклады. Доклад должен быть не более 20 минут (за редкими исключениями). Ещё темы:

FictionBook <http://www.gribuser.ru/xml/fictionbook/> -- открытый XML-стандарт, предназначенный для хранения и обработки художественных книг. Основная проблема в том, что существующие тексты не универсальны, FB её решает. Зачёт за исправление ошибок в существующих программах, написание reader'ов для разных платформ.

Забавная история про террариум: http://www.rol.ru/news/misc/news/02/09/18_092.htm.

Ant wars: http://ant-wars.com/. Зачёт за попадание в 10-ку лучших.