пятница, ноября 24, 2006

Обновил ion3.

Обновился до 3ds-20061029. Tuomo переделал к чертовой бабушке весь API, так что пол-конфига пришлось переписывать заново. Но ничего, переписал ;)

Заметные изменения:
1) Исчезли mod_ionws и mod_floatws, зато появился mod_tiling;
2) Соответственно, WIonWS переименовано в WTiling;
3) Функциональность скрипта detach.lua теперь включена в ioncore.

Часть скриптов с офсайта не работают, т.к. еще не переделаны под новый API.

Заодно обновил статью о настройке ion3.

Перешел было с файрфокса на конкверор.

Сабж.Во-первых в konqueror по умолчанию работают vim-овские клавиши hjkl. А во-вторых он жрет намного меньше памяти.

Но зато blogger в нем работает как-то через раз. И сессии konqueror сохранять не умеет. Так что придется, видимо, пользоваться двумя браузерами параллельно.

среда, ноября 15, 2006

ion3: Организация рабочего места

Ну что ж, продолжаю серию про сей замечательный WM. Будем считать, что научились его настраивать, теперь вопрос - в каком направлении настраивать? Я хочу описать общую организацию моего рабочего места.

Во-первых, конечно же, виртуальные десктопы. У меня их десять. Первый из них разбит по вертикали на две неравные части. Они предназначены для того, чтобы открыть два терминала - получается что-то наподобие двухпанельного файлменеджера, только вместо списков файлов - командные строки zsh. Иногда действительно удобно "находиться в двух директориях сразу". Второй десктоп предназначен для работы с текстами, на нем запускаются gvim, nedit, gedit. Третий десктоп предназначен для работы с графикой, на нем открываются gqview, gimageview, inkscape, xara.

Четвертый десктоп выделен специально для gimp. Он разбит на две неравных части по горизонтали - верхняя часть занимает где-то 10% высоты, в ней показывается гимповский toolbox. В нижней половине добавлен второй слой рабочего пространства, разбитый на две половины по вертикали. Таким образом, открытое в gimp изображение по умолчанию занимает почти весь экран, но когда нужно работать с двумя изображениями, каждое из них переносится в свою половину второго слоя. Окно gimp со списком слоев и прочими диалогами открывается в named scratchpad, который показывается/прячется по нажатию клавиши PauseBreak. Это, собственно, проще показать: см.скриншот.



На пятом десктопе по имени misc тоже два слоя, и один из них разбит по вертикали на две половины. На этом десктопе по умолчанию запускается rox-filer, а с помощью второго слоя я иногда превращаю rox в двухпанельник.

Шестой десктоп выделен для мониторинга системы. Он разбит на две половины по горизонтали, в верхней автоматически при старте иксов запускается xterm -e "tail -f /var/log/messages", в нижней - xterm -e htop.

Седьмой рабочий стол предназначен для работы в интернете - на нем запускаются firefox, sylpheed-claws, liferea и pan. Восьмой разбит по вертикали на две неравные части. На нем запускается dia - панель инструментов в меньшей правой части, документ в основной.

Девятый разбит на пять частей по вертикали и горизонтали, в них открываются различные окна cinepaint. Десятый разделен на четыре части, в одной из них запускается xterm -e maxima, а в остальных открываются окна gnuplot.

Для xchat и gaim выделен named scratchpad, который показывается/прячется по Win-~. Также отдельный скратчпад (растянутый почти на весь экран) выделен для чтения документов - в нем запускаются xpdf, gv, djview.

Переключаются рабочие столы по Win-цифра. Для навигации между фреймами использую клавиши в стиле vim: Win-W,s - разбить фрейм по горизонтали, Win-W,v - по вертикали, Win-W,j - перейти на фрейм ниже, Win-W,k - на фрейм выше, и т.д.

По правой клавише Win запускается uterm - это маленький скрипт, запускающий xterm с цветом фона, случайным образом выбранным из определенного набора. Запуск наиболее часто используемых программ - Win-F3..F12 (Win-F3 - gqview, Win-F7 - gimp, и т.д). Реже используемые программы запускаются по Alt-~,буква (Alt-~,B - blender, Alt-~,D - inkscape, и пр.). Остальные программы запускаются из командной строки, которая открывается по Win-R, или, реже, из главного меню, которое открывается по кнопке Menu.

В строке статуса выводятся: имя текущего десктопа, загрузка системы, сведения о памяти в формате (занято+кэш+буферы)=занято_всего+свободно=всего_памяти, информация об использовании свопа (правда, он обычно не используется вовсе ;)), статус vpn-соединения с входящим трафиком, температуры винчестера, процессора и мат. платы.

Last updated 15-Nov-2006 20:04:14 YEKST

четверг, октября 19, 2006

ion3: продвинутая настройка

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

Плавающие окна

ion3 поддерживает не только традиционную для него модель фреймов, но и плавающие окна. Если версия вашего ion3 меньше чем 20061015, то для того, чтобы было удобно пользоваться этой возможностью, пишем в cfg_ion.lua:

dopath("detatch.lua")

и в cfg_bindings.lua:

   kpress("Mod4+F","detach.topmost_transient_to_float(_sub, nil, true)"),
kpress("Mod4+S","detach.toggle_floatws(_,true)"),

Для 20061015 и более поздних версий - detach.lua прописывать не нужно, его функциональность уже включена в ioncore, а в cfg_bindings нужно прописать

   defbindings("WFrame.tiled", {
kpress("Mod4+F","mod_tiling.detach(_sub)"),
})

Теперь по Win-F можно сделать активное окно плавающим.

Кроме того, при использовании detatch.lua или новой версии ion3 в cfg_kludges среди свойств окна можно указать float=true - такие окна будут создаваться сразу как плавающие.


Удобное изменение размеров и перемещение окон

Прописываем в cfg_bindings.lua:

    bdoc("Resize the frame."),
mdrag("Button1@border", "WFrame.p_resize(_)"),
mdrag(MOD4.."Button3", "WFrame.p_resize(_)"),

bdoc("Move the frame."),
mdrag(MOD4.."Button1", "WFrame.p_move(_)"),

Это позволит перетаскивать окна левой кнопкой мыши при нажатом модификаторе Win, и изменять размеры окон правым перетаскиванием при нажатой Win.


Возвращение к предыдущему окну

Нередко мы работаем с двумя окнами параллельно, причем хотелось бы, чтобы каждое из них занимало весь десктоп. Типичный пример - окна браузера и текстового редактора при разработке сайта. Следующий код в cfg_bindings.lua позволит быстро переключаться к предыдущему активному окну (по Win-B):

    kpress("Mod4+B", "ioncore.goto_previous()"),

Второй слой рабочих пространств

Это одна из наиболее мощных и в то же время наименее известных особенностей ion-a. Прописываем в cfg_ion.lua:

dopath("nest_ws")

и добавляем вызов меню под именем menuattach в какое-нибудь меню:

submenu("Attach", "menuattach"),

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

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

  1. Создаю пустой десктоп.

  2. Выбираю Attach->WIonWS. Теперь на одном десктопе ютятся, как два окна, два рабочих места.

  3. Вновь созданное рабочее место разбиваю на два по вертикали.

  4. Сохраняю сессию.

Теперь у меня одна и та же экранная площадь может легко использоваться либо как единое целое, либо разделенное на две части, либо (sic!) двумя способами вместе: на одном рабочем месте (занимающем весь экран) открыто одно окно, а на другом рабочем месте (на том же десктопе) открыто два окна в двух половинках экрана. Это особенно удобно, когда многие привязки окон к рабочим местам определены в cfg_kludges.lua, когда хочется, чтобы одни приложения занимали, скажем, пол-экрана, а другие - весь экран, запускаясь при этом на одном и том же десктопе. Так, я много работаю с gimp, и под него у меня "расчерчен" отдельный десктоп. Изображение по умолчанию открывается в фрейме, занимающем почти весь экран. Но часто приходится работать с двумя изображениями паралельно - и на этом же фрейме у меня есть рабочее место, разделенное надвое по вертикали. При этом в "умолчальном" рабочем пространстве (на почти весь экран) может быть открыто третье изображение.


Обещанные ссылки

http://www.opennet.ru/docs/RUS/ion3/ - "Обзор оконного менеджера Ion3" от warl0ck

http://posix.ru/desktop/ion/ - "Ion3: положительный wm" от Dark_Savant


Last updated 20-Oct-2006 01:11:29 YEKST

понедельник, октября 09, 2006

Письма с документами M$ Word

Нашел такой вот шаблон письма в ответ на письмо с вордовским документом. Придумал это, кажется, сам Richard Stallman. Буду теперь такое слать ;)

Вы прислали документ в формате Microsoft Word. Это закрытый фирменный
формат и у меня есть сложности с его прочтением. Прежде чем послать
кому-либо файл в формате MS Word, пожалуйста, примите во внимание
следующие обстоятельства:

1. Поскольку формат документов MS Word является закрытым и постоянно
меняется, у людей, не пользующихся этой программой, возникают сложности
с его прочтением. MS Word является коммерческой программой и
приобретение его стоит денег. 2. MS Word работает только под MS
Windows. Присылая документы в формате MS Word, вы вынуждаете людей
устанавливать и запускать MS Windows, тем самым поддерживая монопольное
положение Microsoft на рынке операционных систем. 3. Файлы в формате MS
Word имеют гораздо больший объем, чем требуется для передачи текста с
необходимым оформлением в любом открытом формате: текстовом, HTML или
TeX. Траффик в сети Internet стоит денег. 4. Файлы в формате MS Word
содержат информацию о Вашей личной копии MS Windows, а также могут
содержать фрагменты из других документов, которые Вы набирали в MS Word
ранее. Рассылая документы в формате MS Word, Вы рассылаете свою личную
информацию, о наличии которой в файле Вы можете даже не подозревать. 5.
Документы в формате MS Word могут содержать вирусы. Открытие таких
файлов, даже присланных Вашими хорошими знакомыми, может оказаться
опасным. 6. Множество людей пользуются операционными системами,
отличными от MS Windows (например, GNU/Linux) и текстовыми
процессорами, отличными от MS Word (например, Open Writer, AbiWord, TeX
или KWord). Эти программы дешевле, удобнее и надежнее, чем продукция
Microsoft. Присылая этим людям документы в формате MS Word, Вы лишаете
их права выбора. 7. Вы можете легко избежать всех вышеперечисленных
проблем, даже если привыкли набирать свои тексты в MS Word. Для этого
достаточно перед отсылкой документа по электронной почте сохранить его
в каком-либо из открытых форматов, например, простом текстовом или
HTML.



--
WBR, Portnov

воскресенье, сентября 24, 2006

Грр-гхм...
http://img.photobucket.com/albums/v309/volha/basa-1.jpg
от так оно...

среда, сентября 13, 2006

FreeArtwork

Сделал красивый такой DVD под названием FreeArtwork. Это всякого рода мультимедиа-контент, созданный с помощью только свободного софта. Лицензии на сам контент всякие разные, но все позволяют использование и распространение в некоммерческих целях. Краткое содержание:
Elephants Dream - сам мультик и его "исходники";
Blender Texture Disc - коллекция public domain текстур от создателей Blender;
Мои текстуры высокого разрешения - public domain;
Модели, материалы и демки для Blender;
Inkscape Clipart;
OpenClipart (public domain);
"Просто картинки", созданные с помощью свободного софта;
А также мои 2D и 3D работы.

вторник, сентября 12, 2006

Ссылки по Ubuntu, Linux, Unix, POSIX.

Вот, собрал список ссылок по Ubuntu, Linux, Unix, POSIX.

Прежде всего

http://google.ru и http://google.ru/linux - любая документация по
Linux ;)
http://www.linux.opennet.ru/docs/RUS/smart_question/ - "Как
правильно задавать вопросы", в частности, на форумах по Linux. Сюда
постоянно посылают в ответ на вопросы типа "а у меня линух не грузится,
чо мне делать?".

Статьи/книги для начинающих

http://citforum.ru/operating_systems/linux/kandminimum/ - "Кандидатский
минимум начинающего линуксоида"
http://citforum.ru/operating_systems/linux/kandminimum2/ -
"Кандминимум-2, или где искать информацию по Linux и Unix"
http://linuxcenter.ru/lib/books/posixbook/ - "Введение в POSIX'ивизм" -
очень хорошая книжка для начинающих линуксоидов. У меня есть в виде
готового к печати PDF (сжатый - 2.9Мб), и в виде html (сжатое - 700Кб),
могу выслать.

Информация по Ubuntu

Во-первых, в Ubuntu очень хороший (русский!) хелп: Система-> Справка->
Системная документация.
http://ubuntulinux.org - главный сайт Ubuntu
http://shipit.ubuntu.com - заказ дисков Ubuntu
http://ubuntu.ru/Wiki - wiki русскоязычного сообщества Ubuntu
http://forum.ubuntu.ru - русский форум Ubuntu
http://ubuntuguide.org/wiki/Ubuntu_dapper_ru - Неофициальное
руководство начинающего пользователя Ubuntu 6.06
http://libc6.blogspot.com/ - Блог посвящен самым основным вопросам
новичка в Ubuntu Linux http://posix.ru/distro/ubuntu_links/ - аж
каталог ссылок по Ubuntu

Форумы

http://lug.mgn.ru - Магнитогорская Группа Пользователей Linux (LUG)
http://linuxforum.ru - большой форум по Linux

Документация, статьи

http://posix.ru - статьи по различным Linux и unix
http://opennet.ru - очень много документации и статей по Linux и другим
Unix
http://www.linuxrsp.ru/ - еще один сайт со статьями по Linux

Новостные ленты

http://nixp.ru
http://linux.org.ru - тут хорошая новостная лента и совершенно
отвратительное сообщество. Комменты к новостям и тем более форум читать
только для смеху (юмор на любителя).

Всякое

http://linuxcenter.ru/ - магазин, рассылающий диски с Linux, а также
статьи и документация
http://linuxrsp.ru/win-lin-soft/table-rus.html -
таблица соответствия программ windows и linux; изрядно устарела.

среда, сентября 06, 2006

Про варез

Преамбула:
недалеко от меня всегда был один магазин, торгующий дисками, с большим выбором. Всегда можно было зайти и назвать любую программу - вот, пожалуйста, на прилавке за 70р. Я услугами этого магазина пользовался где-то до весны прошлого года - до того, как перешел на свободный софт. Так что больше года я там не был.
Амбула:
сегодня проходил мимо этого магазина и решил по старой памяти зайти. Почти весь прилавок занимают лицензионные игры по 100-300р. Небольшой раздел "Прикладное ПО" состоит из:
8 дисков с дешевым лицензионным софтом - по 100-300руб;
4 диска с обучающими программами типа "изучаем CorelDraw" - по 100р;
6 дисков с тематическими подборками софта под Linux - по 100р;
1 красивая коробка "FreeBSD 5.4 x86_64 Linuxcenter edition 2DVD" - за 500р.
И все. На вопрос, давно ли были винды, продавщица ответила, что где-то в марте последний диск продали.

Вот такая вот информация к размышлению.

суббота, сентября 02, 2006

Мой софт

Ну раз уж пошла такая пьянка.

browser - firefox
rss - liferea
плеер - по жизни вообще редко, но если уж - то xmms
ftp - ftp или gftp (реже)
downloads - wget
video - mplayer, реже totem-xine
офис - openoffice и abiword
графика - inkscape (реже xara), gimp, blender
просмотр графики - qiv, gqview, реже gimageview
cd/dvd - cdrecord
архивы - tar/gzip
pdf - xpdf (ps - gv)
редактор - vim 7
файлменеджер - zsh и rox
WM/DE - ion3
irc - xchat
фото - ufraw, dcraw, gimp, cinepaint, f-spot

воскресенье, августа 27, 2006

Рабочие столы и rox

Я это делал под icewm, но здесь wm может быть совершенно любой, хоть kwin.
Ставим rox-filer. Запускаем:
$ rox -p 0
Появляется рабочий стол (по дефолту один значок - домашней директории). Добавляем на него нужные значки, только по одной теме, например, все связанное с интернетом - браузер, почтовик. Потом добавляем еще четыре значка, вызывающие команды:
rox -p 0
rox -p 1
rox -p 2
rox -p 3
С подписями типа "десктоп 1", "десктоп 2",...
Кликаем на втором из них - значки на десктопе пропадают, кроме домашней директории. Добавляем другие значки - например, связанные с графикой: гимп, блендер. И добавляем те же четыре значка. Повторяем операцию для третьего и четвертого десктопов. Чтобы каждый раз не настраивать значки переключения десктопов, можно поправить файлы ~/Choices/ROX-Filer/pb_# по образцу pb_0.
Т.о., имеем четыре (а можно хоть десять) рабочих стола (не связанных с виртуальными десктопами оконного менеджера) с разными наборами иконок и, если надо, с разными обоинами. Команды переключения (rox -p #) можно повесить на хоткеи.

Темы диссертаций :)

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

Переехал

Глюки LJ меня окончательно задолбали и решил я переехать сюда. Задолбают здешние глюки - еще куда-нить перееду ;)

суббота, июля 22, 2006

Blender Quickstart

На первый взгляд Blender может показаться устрашающим. Так много кнопочек, слишком много чтобы вы могли разобраться с ними методом тыка, поверьте мне, я-то знаю... Я пробовал. Так что я бы хотел персонально пригласить вас на страницу Blender Quickstart. Эта страница разработана чтобы обратить внимание на некоторые наши туториалы для начинающих, чтобы помочь вам начать моделировать и даже анимировать в Blender. Мы описываем почти каждую тему, о которой вы можете подумать, в нашей базе данных туториалов, и мы постоянно добовляем все новые. Одна вещь, которую вы должны знать - вы никогда не сможете прочесть ВСЕ туториалы отсюда, потому что как только вы подумаете, что прочли все, окажедся, что разработчики добавили новые возможности в эту и так замечательную программу. Итак, чего вы ждете? Читаем дальше...

== Туториалы

На http://blender3d.org мы храним громадную коллекцию туториалов и линки на еще большее количество туториалов, находящихся не на нашем сервере. Если вы только что начали разбираться с Blender, вы можете начать читать User Interface Tutorial (http://blender.org/cms/Blender_User_Interface.224.0.html), The Blender Windows (http://blender.org/cms/The_Blender_Windows.235.0.html), и Navigating in 3D Space (http://blender.org/cms/Navigating_in_3D_Space.241.0.html). Однако, если вы не хотите обращаться к ним очень часто, то хороший вариант - это мануалы.

== Мануалы

Blender Foundation публикует книгу, которая объясняет множество возможностей Blender, на великолепной бумаге. Это хороший вариант для людей, которые имеют плохое соединение и не хотят ждать, пока будут скачиваться web-страницы. Последняя версия - это Blender 2.3 Guide (http://www.blender3d.org/e-shop/product_info.php?products_id=79, в электронном виде по-русски: http://www.is.svitonline.com/sailor/doc/man/begin.htm). Оно описывает все основы, и большинство возможностей, доступных в версии 2.3x. В Blender E-Shop (http://www.blender3d.org/e-shop/default.php) можно заказать и более старые книги для тех, кому это нужно.

== Больше, чем мы

У вас есть целый Интернет! У нас есть не все туториалы по Blender из когда-либо написанных, хотя у нас их и много. Если вы не можете найти чего-то здесь (http://blender3d.org), поищите это в Google (http://google.ru). Это всегда хорошее место, чтобы начать искать решение вашей проблемы.

суббота, июля 15, 2006

Смеху ради прикрутил к своему Debian тему gtk2 от Ubuntu Dapper. Понадобилась папочка темы из /usr/share/themes и либа libubuntulooks.so из недр /usr/lib/gtk2/.
Ничо, прикольно выглядит ;)

пятница, июля 07, 2006

Ubuntu 6.06 Dapper Drake - Краткий репортаж из LiveCD


Итак, наконец-то ко мне пришла партия свежих Ubuntu и я могу на это посмотреть ;) Сейчас вот пишу непосредственно загрузившись с LiveCD. Должен сказать, изменения в текущей версии по сравнению с предыдущей значительные.




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



Процедура запуска LiveCD стала значительно менее "устрашающей" для простого юзера. Именно, имеем вместо текстового интерфейса, сильно смахивающего на установщик Debian, графический. При запуске появляется графическая менюшка типа "Обычный запуск", "безопасный режим" и прочее. Нажав F2, можно выбрать язык. После выбора пункта "Обычный запуск" появляется очень насмешившее меня окошко, выглядещее совсем как в Windows XP, с прогрессбаром "Загружается ядро Linux". После этого начнается (опять-таки в графическом режиме с прогрессбаром) собственно загрузка системы. Грузится LiveCD долго, зато работает потом весьма шустро.



После запуска перед нами предстает GNOME во всей красе. На рабочем столе оказывается папка Examples, содержащая, как ни странно ;), примеры - графических, музыкальных, видео- и просто текстовых файлов, которые можно посмотреть имеющимся на LiveCD софтом. Рядом с ней - значок Install, запускающий, соответственно, процесс установки системы на винчестер.



Еще из изменений рабочего стола бросилось то, что из контекстного меню десктопа исчез пункт "Создать терминал", ранее традиционный в GNOME. Видимо, таким образом разработчики Ubuntu хотят подчеркнуть, что теперь для работы с Linux командная строка не обязательна.



При первом запуске терминала в нем теперь появляется сообщение, информирующее, как запускать административные команды с помощью sudo.



Странно, что мои разделы на винтах автоматически определились (их видно в окне "Компьютер"), но не примонтировались (при двойном клике на значке система жалуется, что /dev/hdx# не является съемным устройством). GParted почему-то не увидел таблицу разделов на /dev/hda, хотя на /dev/hdb и /dev/hdd - увидел. Вручную все разделы примонтировались без проблем. В общем, над этим разработчикам еще работать и работать.




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



Локализация системы теперь гораздо более полная, переведена даже справка. Диалог выхода из системы теперь не стандартный гномовский, а свой, с большими красивыми кнопками.



В целом, я думаю, Ubuntu 6.06 вполне подходит для целей первоначального ознакомления с Linux. Более продвинутому пользователю такая дружелюбность обычно ни к чему.






Last updated 07-Jul-2006 17:01:23 YEKST

вторник, июля 04, 2006

"Вам действительно так нужен программист?" -- спросил я. "Нам позарез
нужен программист". -- "Я поговорю с ребятами, -- пообещал я. -- Я знаю
недовольных". -- "Нам нужен не всякий программист, -- сказал горбоносый.
-- Программисты -- народ дефицитный, избаловались, а нам нужен
небалованный". -- "Да, это сложнее", -- сказал я. Горбоносый стал
загибать пальцы: "Нам нужен программист: а -- небалованный, бэ --
доброволец, цэ -- чтобы согласился жить в общежитии..." -- "Дэ, --
подхватил бородатый, -- на сто двадцать рублей". -- "А как насчет
крылышек? -- спросил я. -- Или, скажем, сияния вокруг головы? Один на
тысячу!" -- "А нам всего-то один и нужен", -- сказал горбоносый. "А если
их всего девятьсот?" -- "Согласны на девять десятых".


(C) А.и Б. Стругацкие. Понедельник начинается в субботу.

Как раз про меня.

суббота, июля 01, 2006

Об уникальных возможностях свободного софта

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


Древовидная отмена в Vim 7

Про это я уже писал в статье "новые возможности Vim 7". Позволю себе процитировать себя любимого ;) :

Мы уже привыкли представлять себе последовательность действий в редакторе как обычный линейный список. Движение назад по нему возможно только с помощью отмены последнего действия. А если мы сделали действия 1, 2, 3, 4, 5, потом отменили действия 4 и 5 и сделали 6 и 7, то действия 4 и 5 безнадежно забыты.

Vim 7 изменяет это представление. Теперь действия в редакторе образуют не список, а дерево. И в упомянутой только что ситуации мы можем вернуться к состоянию, когда сделаны действия 1, 2, 3 и 4, одной командой :undo 4. А потом можем передумать и сказать :undo 7.

Разберем более наглядный примерчик. Пусть в файле у нас есть слово one. Мы добавляем к нему слово too. Потом исправляем слово too на two. Потом отменяем последнее действие, снова получаем one too. Теперь меняем слово one на me и получаем me too. Добавляем восклицательный знак. Эту последовательность действий можно представить такой диаграммой:

          'one'
|
change 1
|
'one too'
/ \
change 2 change 3
| |
'one two' 'me too'
|
change 4
|
'me too!'

Хотите теперь вернуться к ситуации, когда у вас было one two? Пожалуйста - наберите :undo 2. Передумали и хотите получить me too - наберите :undo 3.

Команда :undo с числовым аргументом полезна, когда вы помните номер изменения, к которому вы хотите вернуться. Посмотреть список последних операций с их номерами можно по команде :undolist. А можно двигаться вперед-назад по дереву отмен, нажимая g+ и g-.

Vim 7 запоминает время, когда было произведено каждое действие. И благодаря этому появляется еще одна инновационная возможность - отмена и отмена отмены по времени. Скажем, вы редактируете большой файл. Например, пишете статью. И вдруг решаете, что все, что вы изменили в ней за последние 30 минут, было сделано неправильно. Наберите :earlier 30m - и получите текст, который был у вас полчаса назад. Решили, что все-таки первые несколько правок за эти 30 минут были правильными - наберите :later 5m.


Пообъектная отмена в Scribus

Для тех, кто еще не в курсе - Scribus - это свободная Desktop Publishing System (настольная издательская система), которая в Европе сейчас соревнуется на равных с монстрами типа QuarkXPress, InDesign, PageMaker. Так вот, в новой версии Scribus - 1.3.x - появилась возможность, которой нет в его коммерческих (и недешевых) конкурентах. Именно, история отмен теперь своя у каждого объекта! Пусть, например, на листе у нас - круг и квадрат, оба синие. Меняем кругу заливку на красную. Теперь меняем квадрату заливку на зеленую. Теперь выделяем круг и жмем "отмена" - и получаем синий круг с зеленым квадратом.


Встроенный трассировщик в Inkscape

Трассировщик - это программа, преобразующая растровое изображение к векторному виду. У Corel, например, есть Corel Trace. А в Inkscape интегрирован portrace - свободный трассировщик. Единственный, кроме Inkscape, векторный редактор со своим трассировщиком - Xara X. Но, во-первых, там он менее эффективен, а во-вторых, Xara LX теперь свободная софтина. Я работал с несколькими коммерческими трассировщиками - Corel Trace, Adobe Streamline и еще двумя-тремя подешевле ;) - ни один из них не может сравниться по скорости и эффективности с встроенным в Inkscape portrace. Кроме того, интегрированный трассировщик Inkscape содержит уникальную возможность - SIOX, то есть выделение нужных объектов. Импортируем растровую картинку с изображенной на ней ящерицей, поверх картинки обводим ящерицу замкнутым закрашенным контуром, выделяем картинку и контур, в трассировщике ставим галочку SIOX и жмем Ок. В результате векторизованная картинка содержтит одну ящерицу, без окружающего фона.


Inkboard в Inkscape

Другая уникальная возможность Inkscape - Inkboard. Это протокол, работающий поверх Jabber и позволяющий многим людям одновременно работать над одним документом Inkscape (параллельно обсуждая работу в другой комнате Jabber). Документ располагается на Jabber-сервере, каждый правит локальную копию, при сохранении копии синхронизируются. Единственный реально альтернативный способ организовать такую работу - работать с чем-нибудь типа CorelDraw, а документ сохранять на сервере Subversion (коммерческие системы контроля версий, умеющие работать с бинарными файлами, стоят столько, что Corel-у и не снилось). При этом автоматически теряем интегрированность решения.


Лепка узлов в Inkscape

И еще одна уникальная возможность Inkscape - лепка узлов. Если вы знаете, что такое "Мягкое выделение" в 3DSMax или "пропорциональное редактирование" в Blender, то вы знаете что такое лепка узлов в Inkscape. Остальным поясню. Берем кривую со множеством узлов. Выделяем десяток узлов и тащим один из них с нажатым Alt. Сам этот узел тащится куда скажут, те, которые рядом с ним, перемещаются, но чуть на меньшее расстояние, а те, которые дальше, перемещаются только чуть-чуть. Таким образом, если изначально все узлы были выстроены по прямой, после перетаскивания получим колоколообразную кривую. Эта возможность позволяет гибко изменять форму сложных кривых, не занимаясь при этом перетаскиванием каждого из сотен узлов.


Физический движок Blender

Blender - это система трехмерной анимации, свободный аналог 3DSMax и Maya. Может быть, чего-то ему по сравнению с конкурентами пока что и не хватает, но есть у него особенность, выгодно отличающая от коммерческих аналогов. Это - физический движок. Изначально физический движок в Blender предназначен для создания игр, однако сейчас он развивается в направлении все большей интеграции с режимом моделирования и анимации. Например, делаем шарик, висящий в воздухе, и плоскость пола. Назначаем шарик Actor-ом и запускаем режим игры. Шарик под действием силы тяжести падает на пол и несколько раз отскакивает. Другая возможность физического движка Blender-а - имитация мягких тел. Делаем вертикальную плоскость со многими узлами, некоторые из узлов на верхнем краю помечаем как закрепленные, добавляем "ветер", настраиваем параметры, запускаем анимацию - и наблюдаем тряпочку, колышащуюся на ветру. Наконец, Blender может имитировать жидкость, которая льется, плещется и брызгается. Все эти возможности - расчет механических взаимодействий, мягких тел, жидкостей - есть в виде плагинов (каждый не дешевле $1000) к 3DSMax и Maya, но в самих этих пакетах таких возможностей нет.


Цвет высокой разрядности в Cinepaint, Krita, [Gimp]

Adobe Photoshop CS2 поддерживает в качестве родного режима 8 бит на канал, почти родного - 16 бит на канал и немножко поддерживает 32 бита на канал. У других коммерческих растровых редакторов общего назначения с этим еще хуже. Cinepaint и Krita (используя библиотеку OpenEXR) (а в скорости и Gimp с помощью библиотеки GEGL) поддерживают в качестве родных форматов 8, 16, 32 бита на канал, включая режим floating point, дающий гораздо большую точность при сложных манипуляциях с цветом. Из коммерческих редакторов такой режим поддерживает только узкоспециализированный, обычно заказной софт стоимостью во многие тысячи долларов. Мало того, в новой версии Cinepaint аннонсирована поддержка режима 64 бита на канал!


Заключение

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


Last updated 01-Jul-2006 21:06:58 YEKST

четверг, июня 22, 2006

винды маст дай!

вчера пытался винды поставить...
ох и извращенная операционка.
у меня два винта, на одном линуха, другой запасной.
На основном таблица разделов исторически сложилась в беспорядке: hda1, hda9, hda10, hda5,....
Стал ставить винды на второй винт. Она говорит - чтоб я нормальна грузилась, надо пометить тот раздел, который сейчас активный, как неактивный.
Ну я говорю хрен с тобой, груб с любого загрузит.
и что она сделала - перенумеровала (!) разделы на основном (! не том куда ставлю !) винте, и стерла из его МБР груб!
после чего после перезагрузки выяснилось, что винда не умеет грузиться со слейва.
каким бы словом БГ назвать...

понедельник, июня 19, 2006

Наконец-то я приделал к ion3 то, что давно хотел: теперь, во-первых, в строке состояния показывается имя текущего десктопа, а во-вторых, по Win-B можно быстро переключиться на десктоп, на котором только что были.
Есть, оказывается, такой писатель - Василий Звягинцев. Фантаст. Пишет вполне ничего, тока сюжет придумать мог бы и поинтереснее...

вторник, июня 13, 2006

Новые возможности Vim 7

Тут попросили написать обзор новых возможностей в Vim 7. Ну что ж, получите… :)

Вкладки

Теперь Vim умеет работать со вкладками, как многие GUI текстовые редакторы. Конечно, и раньше можно было открыть два xterm с экземпляром vim в каждом. Но теперь можно нажать yy в одной вкладке, а p - в другой! Вместе с уже традиционной для vim возможностью разбивать каждое окно на два по вертикали или горизонтали вкладки дают потрясающую гибкость интерфейса.

Все команды, предназначенные для работы со вкладками, начинаются с :tab. Перечислю основные из них:

Команда Что делает
:tabnew Новая вкладка
:tabclose Закрыть вкладку
:tabn Перейти к вкладке
:tabnext Следующая вкладка
:tabprevious Предыдущая вкладка

Конечно, набирать такие длинные последовательности символов каждый раз не очень-то удобно. Спасает возможность vim определять для любых действий комбинации клавиш командой map. Например, в большом количестве программ создание новой вкладки назначено на комбинацию Ctrl-T. В vim эта комбинация традиционно используется для возврата по ссылке (а переход по ссылке - Ctrl-]). На мой взгляд, это не самый удачный выбор клавиатурной комбинации. Поэтому можно написать в ~/.vimrc следующее:

map g  :pop      " Вернуться по ссылке

map g " Перейти по ссылке

map :tabnew " Новая вкладка

map :tabclose " Закрыть вкладку

Теперь переход по ссылкам вперед-назад повешен на сочетания g, g, новая вкладка создается по Ctrl-T, а закрывается по Ctrl-A (традиционное во многих программах сочетание Ctrl-W в vim занято - это префикс для операций с окнами).

А я, например, предпочел для операций с вкладками выделить отдельный префикс Ctrl-T, подобно тому как для операций с окнами выделен префикс Ctrl-W:

map n :tabnew      " Новая вкладка

map c :tabclose " Закрыть вкладку

map h :tabprevious " Предыдущая вкладка

map l :tabnext " Следующая вкладка

Кроме перечисленных команд, есть еще целый ряд команд, образованных дописыванием к обычным командам vim префикса :tab. Они делают то же, что и обычные, но - в новой вкладке. Так, например, по команде :tabe filename файл filename откроется для редактирования в новой вкладке.

Еще одна важная команда, работающая со вкладками - :tabdo <команда>. Она выполняет указанную команду сразу во всех открытых вкладках. Это можно использовать, например, для замены текста сразу в нескольких открытых файлах.

Проверка орфографии

Теперь проверка орфографии встроена в vim. Чтобы она заработала, нужно взять с ftp://ftp.vim.org/pub/vim/runtime/spell/ файлы ru.koi8-r.sug и ru.koi8-r.spl (или другие, соответствующие вашей локали) и положить их в ~/.vim/spell. Теперь, чтобы включить проверку орфографии в текущем буфере, нужно дать команду :setlocal spell spelllang=ru (или en, или en,ru, в зависимости от языков вашего текста). Для выключения - :setlocal spell spelllang=. Ошибочные слова в консольном vim подсвечиваются красным фоном, а в gvim - подчеркиваются волнистой красной линией.

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

Команда Что делает
]s Перейти к следующей ошбке
[s К предыдущей ошибке
z= Выдать список возможных замен
zG Добавить слово в словарь
zW Пометить слово как ошибочное

Умное автодополнение

Vim теперь умеет автодополнение в стиле MS Visual Studio - с выпадающими списками. При редактировании исходного текста, скажем, на C++, находясь в режиме вставки, наберите первые буквы идентификатора, нажмите Ctrl-X,Ctrl-P - и получите выпадающий список с возможными вариантами продолжения (или идентификатор будет дополнен сразу, если продолжение единственно)! Самое удивительное, что выпадающие списки работают даже в консоли.

Умные отмены

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

Мы уже привыкли представлять себе последовательность действий в редакторе как обычный линейный список. Движение назад по нему возможно только с помощью отмены последнего действия. А если мы сделали действия 1, 2, 3, 4, 5, потом отменили действия 4 и 5 и сделали 6 и 7, то действия 4 и 5 безнадежно забыты.

Vim 7 изменяет это представление. Теперь действия в редакторе образуют не список, а дерево. И в упомянутой только что ситуации мы можем вернуться к состоянию, когда сделаны действия 1, 2, 3 и 4, одной командой :undo 4. А потом можем передумать и сказать :undo 7.

Разберем более наглядный примерчик. Пусть в файле у нас есть слово one. Мы добавляем к нему слово too. Потом исправляем слово too на two. Потом отменяем последнее действие, снова получаем one too. Теперь меняем слово one на me и получаем me too. Добавляем восклицательный знак. Эту последовательность действий можно представить такой диаграммой:

          'one'

|

change 1

|

'one too'

/ \

change 2 change 3

| |

'one two' 'me too'

|

change 4

|

'me too!'

Хотите теперь вернуться к ситуации, когда у вас было one two? Пожалуйста - наберите :undo 2. Передумали и хотите получить me too - наберите :undo 3.

Команда :undo с числовым аргументом полезна, когда вы помните номер изменения, к которому вы хотите вернуться. Посмотреть список последних операций с их номерами можно по команде :undolist. А можно двигаться вперед-назад по дереву отмен, нажимая g+ и g-.

Vim 7 запоминает время, когда было произведено каждое действие. И благодаря этому появляется еще одна инновационная возможность - отмена и отмена отмены по времени. Скажем, вы редактируете большой файл. Например, пишете статью. И вдруг решаете, что все, что вы изменили в ней за последние 30 минут, было сделано неправильно. Наберите :earlier 30m - и получите текст, который был у вас полчаса назад. Решили, что все-таки первые несколько правок за эти 30 минут были правильными - наберите :later 5m.

Ну что я могу сказать?

Воистину, у Vim 7 есть только один конкурент - Emacs с его ELisp-ом (правда, дерева отмен нет и там). И создатели Vim в очередной раз показали, что самый классический редактор в *nix является самым современным.


Last updated 13-Jun-2006 20:32:15 YEKST

Набор латентного виндузятника

Набор латентного виндузятника

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

Предположим, "большой" софт выбрали (OpenOffice и пр.), систему установили. Иксы поставили, а вот над DE/WM не грех задуматься. Конечно, если машины мощные и памяти до…пояса, можно поставить KDE или GNOME (не зря же этой памяти пропадать ;)). Однако такая ситуация встречается не часто. Чаще имеем (в офисе, скажем) что-то вроде Celeron 1.7G и 256Mb RAM на материнке знаменитой фирмы NoName (или, что еще лучше, SiS). KDE на такой машине, конечно, работает, но как-то свиста (как летает) не слышно. Хотелось бы чего-то полегче. При этом это "что-то" должно по возможности сильнее походить на Windows. И есть такая партия…тьфу, программа, товарищи! Называется она IceWM. Это очень легкий оконный менеджер, при этом, во-первых, в умолчальном виде сильно похожий на Windows, а во-вторых, довольно хорошо настраиваемый. Т.к. пользователь у нас предположительно никогда не работал ни с Linux, ни с X Window System, ни с виртуальными рабочими столами, предлагаю первым делом виртуальные рабочие столы в IceWM отключить. Иначе постоянно придется бегать на мольбы "а у меня все куда-то делось!" (правильно, на другой десктоп переключилась одним кликом мышки). Далее, устанавливаем по умолчанию тему "xp", и вуаля!

Я предлагаю по возможности использовать софт из GNOME или просто gtk2-based. Это, конечно, влечет за собой немало геморроя с зависиостями и прочим, но ведь устанавливаем-то один раз, а работать пользователю придется постоянно! Почему GNOME? Дело в том, что большая часть софта, написанного для GNOME, следует заветам HIG (Human Interface Guides). Которые составлялись профессиональными юзабилистами. В KDE, правда, тоже недавно появились собственные HIG, но только недавно, и софта, написанного с их учетом, пока мало.

Для Gtk2 есть замечательная тема SmoothXP. В сочетании с темой "xp" в IceWM выглядит, во-первых, довольно юзабельно, а во-вторых - весьма похоже на WindowsXP.

Ну, чего еще не хватает до полного windows-подобия? Во-первых, иконок на рабочем столе, во-вторых, explorer-подобного файл-менеджера. И оба эти качества сочетает в себе замечательная софтина по имени rox-filer (очень рекомендую прочитать документацию, там много полезного). Будучи запущен без параметров, rox-filer показывает в explorer-подобном виде содержимое текущей директории. Чтобы заставить его работать с иконками на рабочем столе, нужно запустить его с опцией "-p", например, так:

$ rox -p 0

Что замечательно, rox-овский десктоп работает почти как в Windows, т.е. на него можно вытаскивать документы и прочее. Отличие состоит в том, что в Windows десктоп - это просто папка с файлами, а у rox - это папка со _ссылками_ на файлы. Поэтому в Windows перетаскивание файла из окна "мои документы" на рабочий стол переместит этот файл, а в rox - оставит документ на месте, создав на рабочем столе ссылку на него. Поэтому-то и называется в оригинальной документации rox рабочий стол не "desktop", а "pinboard", на который можно "приколоть" нужные файлы.

Еще бы побороть вечный вопрос начинающего линуксоида - "а где тут мой компьютер?". Делается это, на самом деле, очень просто. Создаем где-нибудь директорию (например, ~/.mycomp), в которую кладем симлинки на нужные нам директории (/, /mnt/floppy, /mnt/cdrom, /mnt/flash и пр.). Вытаскиваем эту директорию на рабочий стол и присваиваем ей подходящую иконку и подпись "мой компьютер". Открываем ее rox-ом и меняем иконки нашим симлинкам, заодно переименовывая их по образу и подобию Windows.

Да, упомянули "мой компьютер" - сразу вспоминается другая вечная проблема начинающего линуксоида - монтирование сменных носителей - флэшек и прочих там дискет. Ну, fstab-то правильно написать мы не забудем, но заставлять секретаршу делать mount/umount… И тут нас выручает rox! Директории, прописанные в fstab как точки монтирования, он помечает серым кружком, если устройство не примонтировано, и зеленым - если примонтировано. При входе в "непримонтированную" точку монтирования rox делает mount. При выходе из нее (по кнопке "вверх" или при закрытии окна) rox спрашивает: желаете ли вы отмонтировать носитель? Достаточно нажать "Отмонтировать", и rox сделает umount. Таким образом, работа со сменными носителями в rox еще более прозрачна, чем в Windows.

При всем при этом rox не является просто копией explorer-а. Я еще не упоминал, что

  • иконки можно легко менять как для отдельных файлов/папок, так и для всего типа файлов сразу,

  • по одной кнопке можно увеличить/уменшить размер иконок,

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

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

  • типы файлов устанавливаются общесистемным способом MIME-type, но при этом есть возможность для конкретных файлов жестко задать тип файла вручную, для этого надо только, чтобы ФС поддерживала User Extended Attributes (XFS поддерживает их по умолчанию, для Ext3 и ReiserFS нужно включить поддержку в ядре и указать опцию user_xattr в fstab),

  • поддерживается меню закладок и меню последних просмотренных директорий,

  • rox умеет показывать превьюшки вместо иконок для картинок (с кешированием),

  • rox поддерживает не только drag-to (это когда перетаскивание файла из окна rox в окно OO Writer влечет открытие этого файла), но и drag-from, т.е. можно из Gimp-a перетащить изображение в окно rox, и оно будет сохранено в соответствующей папке… ?

Неплохой списочек получился, не правда ли? Более того, в rox есть подручные средства, сильно упрощающие работу с explorer-подобным интерфейсом. Например, по нажатию клавиши "`" (на которой "~" и буква "Ё" в русской раскладке) открывается терминал в текущей директории. По нажатию "/" внизу окна появляется панелька, предлагающая ввести текущий путь вручную (причем работает автодополнение). По нажатию "." появляется панель для выбора файлов по маске. По нажатию "?" - панель для выбора по условию - например, можно ввести "size > 30 kb", или "mtime after 1 day ago and size > 10 Mb". В меню "Показать (Show)" есть опция "Filter Files…", позволяющая отобразить только файлы, подходящие под шаблон.

И все бы хорошо… Но есть у rox-а пара недостатков. Первый - при клике правой кнопкой на файле появляется почти то же меню, что и при клике на пустом месте, и чтобы что-то сделать с этим файлом, нужно зайти в подменю. Лечится это легко - нужно в настройках, в разделе "Меню" поставить галочку "File menu on right-click". Второй недостаток более серьезный. Состоит он в том, что rox не дружит с не-unicode локалями. В итоге (при локали, скажем, ru_RU.KOI8-R) русские имена файлов показываются красным цветом с всплывающей подсказкой, сообщающей, что лучше бы файл переименовать. Хотя работать с такими файлами можно. А при создании файлов/директорий с русскими именами он пишет эти имена в кодировке utf-8, что (при локали, отличной от ru_RU.UTF-8) делает их нечитабельными в других программах. Слава богу, для версии rox 2.2.0 есть патч, практически полностью решающий эту проблему. Вот линк на патч: http://dissolution.nm.ru/nix/files/patch-locale-2.2.0 . К сожалению, я не знаю, где надыбать аналогичный патч для более поздних версий rox-filer-a. (при локали ru_RU.UTF-8, насколько мне известно, все нормально).

Ну, будем считать, с файл-менеджером разобрались. Могу еще подсказать аналог ACDSee. Точнее, два аналога. Первый - GQView. Это смотрелка картинок со всеми необходимыми функциями - просмотр сразу по директориям и выбранного изображения отдельно, запуск внешних инструментов и пр. Есть минимальные средства для каталогизации изображений. Отличается от ACDSee тем, что отводит бОльшую часть окна под показ выбранного изображения, а под показ списка файлов в директории (который легко можно заменить на превьюшки) - напротив, меньшую. Во многих случаях так действительно удобнее. Второй аналог - gimageview. Эта программа по умолчанию больше напоминает ACDSee (т.е. большая часть окна отведена под тумбнэйлы). Замечательна она тем, что можно открыть сразу несколько вкладок с превьюшками (из разных директорий). Все необходимые функции, в т.ч. вызов внешних инструментов, здесь также есть.


Last updated 23-Apr-2006 12:49:10 YEKST

Linux для математика

Сегодня DropC спросил меня о математическом софте в Linux. Это тема настолько объемна, что я решил ответить небольшой обзорной статьей. Тем более, что математический софт бывает нужен далеко не только математикам. Более того, большинство пользователей того же MatLAB-a - вовсе не математики, а физики и инженеры. Да и программисту такой софт бывает необходим…

Итак, вопрос: есть ли для Linux (*nix) аналоги известных коммерческих математических пакетов? Ответ: есть, более чем.

Небольшая табличка аналогов:

Коммерческий пакет для Windows Аналог для Linux Лицензия Homepage Комментарии
MathCAD Symaxx/2 GPL symaxx.sf.net К сожалению, не очень интуитивный интерфейс. Является графическим front-end-ом к Maxima. Написан на Perl/Tk.
MuPAD Коммерческий www.mupad.de Не видел ;)
Mathematica, Maple maxima GPL maxima.sf.net Прародитель Mathematica и Maple.
axiom GPL axiom-developer.or g До 2001г. - самая дорогая система компьютерной алгебры (по слухам, порядка $200k).
Mathematica Linux Коммерческая wolfram.com Практически полный аналог своей сестры для Windows, только бывают проблемы со шрифтами
Maple Linux Коммерческая maplesoft.com
MatLAB SciLAB Своя, типа GPL scilab.com Почти совместим с MatLAB 5/6 на уровне исходников.
Octave GPL octave.org Нет своего аналога Simulink. Почти совместима с MatLAB.
MatLAB Linux Коммерческая mathworks.com Дороже своей Windows-версии
Statistica R GPL r-project.org Мощный язык для статистических вычислений + куча модулей.
OpenDX GPL opendx.org Одна из мощнейших в мире систем визуализации данных.

И здесь еще не все перечислено… Математического софта под *nix просто море.

Причем интересна его история.

В 50-60-х годах в США на волне интереса к компьютерам начали создавать системы компьютерной алгебры. (в смысле, программы, способные сообразить, что (a+b)2 = a2+2ab+b^2, не зная, что такое a и b). И, конечно, такая софтина нужна была одному мирному американскому ведомству. И это ведомство объявило конкурс на лучшую CAS (Computer Algebra System) для своих нужд, пообещав всяческую поддержку. Конкурс этот выиграл мало кому известный тогда проект Macsyma (CAS, написанная на Lisp). И, получив поддержку, очень неплохо развивался как коммерческий проект года так до 1984. А в 1984 году небезызвестный Richard Stollman объявил о создании FSF и опубликовал первую версию GPL. Услыхав про это, один из отцов-основателей проекта Macsyma заявил руководству (и Пентагону) ультиматум: "либо а) мне передают все наработки проекта, и я паралельно развиваю GPL-версию Macsyma, либо б) я ухожу из проекта". Так как второй вариант означал быстрый распад проекта, Пентагон вынужден был согласиться на первый. Так появилась свободная CAS под названием Maxima. Она развивалась паралельно с Macsyma до начала 1990-х. А в 1991 СССР распался, холодная война кончилась, и Пентагон прекратил финансирование проекта. В 1994 Macsyma прекратила свое развитие. Исходники были частично распроданы, и на их основе вскоре появились Mathematica и Maple. А Maxima продолжает развиваться до сих пор.

С axiom вышла тоже интересная история. Этот проект развивался самостоятельно, и развился в очень мощную и очень дорогую CAS. Однако, организаций, способных заплатить несколько сот тысяч баксов за копию программы, не так уж много. Так что к началу XXI века продажи резко упали (рынок был насыщен), и проект стал коммерчески нерентабельным. Тогда авторы axiom выпустили ее под лицензией GPL.

Maxima и Axiom замечательны уровнем абстракции, который они предоставляют пользователю. Они поддерживают так называемые Rule-based преобразования. Например, можно задать, что "f(A and B)" переходит в "f(A) or f(B)", и CAS сделает преобразование, не задумываясь ни о том, что такое A и B, ни о смысле операций and или or. Это позволяет производить преобразования не только над математическими выражениями, но над чем угодно, что может быть записано в виде формулы.

Изюминка Maxima состоит в большой гибкости синтаксиса. Например, объявив "f(x,y):= x2-y2", можно объявть f инфиксным оператором и писать далее вместо "f(x,y)" - "x f y".

У Axiom тоже есть свои изюминки. Во-первых, это язык с очень мощной и простой системой типов. Например, можно объявить "A: List Matrix Rational Polynomial Complex" - "пусть А - это список матриц из дробей, числителями и знаменателями которых являются многочлены над комплексными числами". Во-вторых, поддерживаются весьма абстрактные операции из области абстрактной алгебры и теории чисел. "Приведение многочленов над полем Галуа" - слышали про такое? Криптоаналитики слышат каждый день. А в Axiom для этого есть встроенная функция. В-третьих, Axiom имеет очень интересный алгоритм вычисления интегралов. Большинство CAS, встретив слишком сложный для них интеграл, просто оставляют его как есть. Это у них означает "Либо интеграл не берется в элементарных функциях вообще, либо я просто не знаю, как его брать". Axiom выдаст интеграл как был только в том случае, когда может математически доказать, что взять его в элементарных функциях невозможно.

Из CAS под Linux можно упомянуть еще yacas, yorick и GAP. Все это свободный софт.

GAP - совершенно замечательная система. Ее название - аббревиатура, расшифровывается как "Groups, Alghorithms and Programming". Это изначально свободный (GPL) проект создания модульной системы для абстрактной алгебры. На сегодняшний день это мощнейшая из систем такого рода (в том числе и коммерческих). Здесь "поле", "кольцо", "группа" - это типы данных, а "вычисление идеала банаховой алгебры" - стандартная функция.

Ну ладно, CAS обсудили, поехали к "числодробилкам" (системам численных вычислений). Из коммерческих продуктов здесь на ум сразу приходит MatLAB. Это очень дорогая система. В том составе, в котором мы привыкли видеть ее на пиратских дисках, она стоит что-то от $40k "студенческая лицензия" (т.е. с правом установки на один компьютер один раз, без тех.поддержки) до $60k Enterprise Edition.

Проект SciLAB появился как коммерческий, но более дешевый конкурент MatLAB-a. Коммерчески проект себя не оправдал, и исходники открыли. Лицензия - "почти GPL", но с изменениями, направленными на то, чтобы затруднить появление многочисленных мало совместимых версий. Эта программа почти полностью совмекстима с MatLAB на уровне исходных текстов (m-файлов). Здесь есть даже аналог Simulink - средства визуального проектирования математических моделей.

Octave появился как "чисто GNU GPL" конкурент SciLAB-a. На сегодняшний день во многом совместима с MatLAB-ом, но нет аналога Simulink.

Из этой же серии можно отметить Tela - "interactive tensor language". Замечателен pascal-подобным синтаксисом.

Остались только программы для статистиков.

В качестве функциональной замены системы Statistica можно посоветовать язык статистических вычислений R. Это очень мощный язык, плюс к нему написаны десятки модулей для конкретных задач (кластерный анализ, финансовый инженеринг, распределенные вычисления…).

Для визуализации численных данных ученые всего мира используют OpenDX. Изначально это недешевый продукт IBM (dx - data explorer), однако исходники открыли, сейчас это GPL-проект. Считается мощнейшей системой в своем классе.

Материалы собраны по всему Интернету, плюс личный опыт общения с CAS и числодробилками.


Last updated 02-May-2006 21:51:13 YEKST

пятница, мая 19, 2006

From Windows to Linux

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

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

Главный источник документации - команда man. Если вы работаете в консоли, достаточно набрать

man имя-топика,

чтобы получить справку по нужной теме. В случае, если вы работаете в графическом окружении, нужно из меню вызвать эмулятор терминала (например, xterm), и в нем набрать указанную выше команду. Прежде всего предлагаю изучить руководство по самой команде man, набрав "man man".

Кроме того, по Linux и связанным вопросам существует много бумажных и электронных книг. Например, после прочтения этой заметки я посоветовал бы начинающему пользователю начать читать книгу Алексея Федорчука, доступную на http://linuxcenter.ru под названием "Введение в POSIX ивизм", или ее бумажную версию, вышедшую недавно под названием "Доступный UNIX: Linux, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD".

Далее я постоянно буду ссылаться в скобках на страницы man, например: (man hier).

Следующее отличие - устройство файловой системы. В Windows у вас есть несколько носителей информации, перечисленных в окне "Мой компьютер", и на каждом из них есть своя файловая система - система вложенных папок (директорий) и файлов в них. В Linux существует единая файловая система, здесь нет такого понятия как "Диск C:". Графически файловую систему удобно представлять как дерево. Корень этого дерева - это корневая директория файловой системы, она содержит в себе директории bin, usr, etc и прочие, те, в свою очередь - еще директории и файлы…

Разделителем директорий в пути в Linux служит слэш (/), а не бэкслэш (\), как в Windows. Корень файловой системы сам по себе обозначается как "/". Такким образом, если в Windows типичный путь выглядит как "C:\Windows\System", то в Linux - "/usr/local/bin". Нужно заметить, что файловая система Linux чуствительна к регистру символов, так что "file" и "FiLE" - это имена разных файлов.

Еще одна особенность файловой системы Linux - то, что устройства, подключаемые к компьютеру, предстают файлами, расположенными в директории /dev.

Каждый носитель информации (жесткий диск или usb-флэш) содержит собственную файловую систему (ФС) со своей структурой директорий. Чтобы к этой ФС можно было получить доступ, она должна быть подключена к единой файловой системе Linux, при этом нужно указать, к какой из ветвей дерева нужно осуществлять подсоединение. Например, если на флэшке есть файлы "file1.doc", "file2.doc" и директория "dir" с файлом "indir" внутри, то после подсоединения ФС флэшки к директории /mnt/flash мы будем иметь файлы /mnt/flash/file1.doc, /mnt/flash/file2.doc, /mnt/flash/dir/indir. Операция подсоединения называется монтированием, и выполняется с помощью команды mount (man mount). Перед тем, как физически отсоединить носитель (выдернуть флэшку, например), необходимо произвести действие, обратное монтированию - размонтирование, иначе можно потерять данные на нем. Размонтирование производится с помощью команды umount.

Если у вас есть несколько разделов диска, или несколько дисков, с которыми вам нужно работать постоянно, то, чтобы эти диски монтировались при старте системы автоматически, нужно прописать их в файле /etc/fstab (man fstab).

Следующее отличие касается установки программ. В Windows программа, как правило, при установке кладет все свои файлы в c:\program files\имя-программы, и, возможно, еще в c:\windows или куда-нибудь еще. В Linux файлы программ раскладываются по директориям не по принадлежности программам, а по их предназначению. Так, все исполнимые файлы самых необходимых программ лежат в /bin, все конфигурационные файлы - в /etc, библиотеки - в /lib и т.д. При этом программы, входящие в состав дистрибутива Linux, но не являющиеся необходимыми для запуска системы, кладут свои файлы в иерархию /usr (/usr/bin - исполнимые файлы, /usr/lib - библиотеки, и т.д). Программы, не входящие в состав дистрибутива и установленные пользователем, располагаются в /usr/local (/usr/local/bin и т.д). На расположение и назначение всех этих директорий существует стандарт - Filesystem Hierarchy Standart (FHS). Он описан в man hier.

Четвертое различие относится к системе безопасности. В Windows имеются лишь минимальные средства разграничения прав доступа, и по ряду причин чаще всего они не используются вовсе. В Linux это весьма мощные средства, и используются они постоянно. В системе есть некоторое количество пользователей, различающихся по имени (login) и паролю (password). Каждый пользователь может входить в одну или несколько групп. Обычный пользователь может изменять файлы только в своей домашней директории (home), в частности, он не может устанавливать и удалять программы. Благодаря этому обычный пользователь ни случайно, ни специально не может повредить всю систему в целом или данные других пользователей. Но один из пользователей отличается от остальных. Это root - системный администратор. Ему по определению разрешено все. Именно поэтому категорически не рекомендуется работать в системе под именем root. Представляться системе root-ом нужно только для проведения административных мероприятий: установки и удаления программ, форматирования дисков и тому подобных задач.

Далее, в Linux графический интерфейс не является неотъемлемой частью операционной системы, как в Windows. Графический интерфейс - все эти окна, иконки и курсоры - обеспечивается отдельным приложением, работающим наравне с остальными. Поэтому сбой в работе графической системы не влечет за собой сбой в работе ОС в целом. (за подробностями о работе графики в Linux см. man X, man Xserver).

Исторически в Linux основным режимом работы был режим работы с командной строкой. При этом у вас нету никаких окошек и иконок, а есть приглашение командной оболочки и мигающий курсор. Вы набираете на клавиатуре команды, подтверждая их нажатием Enter, а компьютер выполняет их и вновь выдает приглашение набрать команду. При этом доступны автодоплнение команд и их аргументов, а также полная справка о том, как работает каждая команда - по команде "man <имя-команды>". Программа, которая с вами непосредственно общается, называется командной оболочкой (shell). Командной оболочкой по умолчанию является bash, поэтому за подробностями о работе с командной строкой обращайтесь к man bash.

Каждая команда имеет вид:

$ <имя-команды> <опции> <параметры>.

Здесь "$" - это приглашение командной строки, его печатает оболочка. Имя команды - это одно слово, то есть последовательность английских букв и цифр. Оно указывает, что нужно сделать, то есть это глагол в языке общения с командной оболочкой. Имена команд обычно являются сокращениями от соответствующих английских глаголов, например "cp" - от "copy", копировать.

Опции бывают "короткие" и "длинные". Короткие опции выглядят как одна английская буква (или цифра) с дефисом впереди, например, "-f". Длинные опции выглядят как английское слово, предваренное двумя дефисами, например, "—force". Обычно каждая короткая опция имеет длинный аналог (то есть существует "длинная" опция, делающая то же самое), но не наоборот. Длинные опции проще запоминать, зато короткие опции быстрее набирать. Опции задают режимы работы команды - например, опция "-f" (или "—force", что то же самое) команды cp указывает команде переписывать файлы при совпадении имен. Нектоторые опции имеют аргументы - те пишутся через пробел или через знак равенства от опции, например "—backup=numbered". Таким образом, опции - это дополнения в языке командной строки. Короткие опции можно комбинировать, например, "cp -b -d" можно сократить до "cp -bd".

Параметры задают объекты, с которыми должна работать команда - например, файлы, которые нужно копировать. Таким образом, параметры - это существительные.

Опции и параметры у каждой команды свои, среди них могут быть как обязательные, так и необязательные. Все они описаны в man <имя-команды>.

Если вы работаете в режиме командной строки, то графическую оболочку обычно можно запустить командой startx. Существуют программы графического режима, позволяющие работать с командной строкой в отдельном окне. Такие программы называются эмуляторами терминала. Самой популярной из них является xterm.

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

DOS Linux Примечание
ATTRIB (+-)attr file chmod file полностью отличаются
BACKUP tar -Mcvf device dir/ то же самое
CD dirname\\ cd dirname/ почти тот же самый синтаксис
COPY file1 file2 cp file1 file2 то же самое
DEL file rm file будьте осторожны, нет восстановления файлов
DELTREE dirname rm -R dirname/ то же самое
DIR ls не полностью похожий синтаксис
DIR file /S find . -name file полностью отличаются
EDIT file vi file я думаю, вы не полюбите его (а зря!)

jstar file выглядит как редактор в dos
EDLIN file ed file забудьте его
FORMAT fdformat,

mount, umount достаточно отличный синтаксис
HELP command man command, та же философия

info command
MD dirname mkdir dirname/ почти тот же самый синтаксис
MORE file less file намного лучше
MOVE file1 file2 mv file1 file2 то же самое
NUL /dev/null то же самое
PRINT file lpr file то же самое
PRN /dev/lp0,

/dev/lp1 то же самое
RD dirname rmdir dirname/ почти тот же самый синтаксис
REN file1 file2 mv file1 file2 не для множества файлов
RESTORE tar -Mxpvf device другой синтаксис
TYPE file less file намного лучше
WIN startx на разных полюсах!

Last updated 19-May-2006 00:56:04 YEKST

цитаты о программировании

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


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


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


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


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


Собрать кучку людей для работы над одной проблемой -- не значит сделать их коллективом.


Конструктор системы страдает от того, что чем лучше его система делает свое дело, тем меньше пользователи знают о ее существова
нии.


Каждая программа имеет соответствующий уровень продуманности и запутанности в зависимости от цели, для которой она применяется.


Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, ца
рят красота и совершенство.


Для локализации ошибки, однако, желателен человек, обладающий упорством тещи и стадными инстинктами крысы.


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


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


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


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


Очень важно не прерывать вопросов. Любопытство имеет свое право на существование.
(Альберт Эйнштейн)

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


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


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


Когда программист испытывает затруднения при поиске ошибки, это значит, что он ищет не там, где следует.


Документация -- касторовое масло в программировании: Руководители полагают, что это хорошее средство, ибо программисты так ее н
енавидят.


Мозг человека обычно загружен лишь на 10
своей мощности; остальное резерв для оперaционной системы.


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


Проект (OS/360) был закончен с опозданием, система потребовала большего объема памяти, чем планировалось, затраты значительно п
ревысили предварительные оценки, вся система начала работать как следует только после создания нескольких вариантов, последовав
ших за первым.


Корабль на мели -- моряку маяк.
(Голландская пословица.)


Неподатливость проблемы (срыва планов разработки систем) вызывает всеобщее изумление, и разобраться в ее природе непросто.


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


Программист, как поэт, работает почти непосредственно с идеями.


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


Во всех областях творческой деятельности формальный объем прав никогда не согласуется с ответственностью.

Выдавать глобальные идеи то удовольствие; искать сволочные маленькие ошибки от настоящая работа.


Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.


Хорошая кухня требует времени. Если вы готовы подождать, мы обслужим вас гораздо лучше, и вы получите большее удовольствие.
( меню ресторана Антуан, Новый Орлеан )


Все программисты -- оптимисты: "На этот раз программа обязательно пройдет!", "Я только что нашел последнюю ошибку!".


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


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


Чтобы выносить ребенка, нужно девять месяцев, независимо от того, сколько женщин будет к этому привлечено.


Когда кажется, что все уже работает, все объединено в систему -- вам еще осталось работы на четыре месяца.


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


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


Закон Брукса: если программистский проект не укладывается в сроки, то добавление рабочей силы только задержит его окончание.


Концептуальное единство является самым важным соображением при проектировании системы.


Система программирования предназначена для того, чтобы облегчать пользование вычислительной машиной.


Ни функциональность, ни простота сами по себе не гарантируют высокого качества проекта.


Добавляя малое к малому, получишь большую кучу.
( Овидий )


Он сядет здесь и будет распоряжаться: сделайте то!, сделайте это! о абсолютно ничто не сдвинется с места.
( Г.Трумэн, "О президентской власти" )


Никогда не выходи в море с двумя хронометрами: бери один или три.


Я в этом разбираюсь. Я знаю, что нужно делать о каждый раз, когда я пытаюсь заняться технической проблемой, какой-нибудь идиот
требует, чтобы я принял решение насчет грузовика, или телефонов, или другой такой же чертовщины.
( Роберт Хайнлайн, MAN WHO SOLD THE MOON
Проблема том, что все, кто здесь работал, и я в том числе, хотели сделать действительно чистую работу, только они не хотели чи
стой работы, они хотели много быстро.


Генерация случайных чисел лишком важный вопрос, чтобы оставлять его на волю случая.


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


шибка? Это не ошибка, это системная функция.


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


У компьютера всегда есть оправдание; у программиста -- никогда.


Пользователь не знает, чего он хочет, пока не увидит то, что он получил.


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


Работа не может быть выполнена должным образом, если нет необходимых инструментов.
( PROCEEDINGS OF THE IEEE, 2/78, р.174 )


Я слышу и забываю.
Я вижу и запоминаю.
Я делаю и понимаю.
( Конфуций )


На пустом диске можно искать вечно.


Я пишу все свои критические программы на ассемблере, а комедийные а фортране.

Бесполезно придумывать защиту от дурака -- ведь дураки так гениальны.


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


Если отладка процесс удаления ошибок, то программирование должно быть процессом их внесения.
(Э. Дейкстра)


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