![]() | You are viewing Log in Create a LiveJournal Account Learn more |
| Случайные заметки 19 most recent entries |
Звиняйте братцы, надоели мне глюки LJ. Залогиниться не дает уже совсем. Переезжаю. Посты все счас перенесу.
LJ чо-то глючит по-страшному. При попытке зайти на ilya-portnov.livejournal.com делает редирект на тот же адрес, и так до бесконечности. Frefox замечает цикл и отказывается загружать. С ilya_portnov.livejournal.com этой траблы нет, но туда мне не дают залогинниться.
Написал Питоновский скрипт для Blender-a, реализующий базовую функциональность proxy-объектов.
О применимости дифференциальных операторов бесконечного порядка
На первый взгляд Blender может показаться устрашающим. Так много кнопочек, слишком много чтобы вы могли разобраться с ними методом тыка, поверьте мне, я-то знаю... Я пробовал. Так что я бы хотел персонально пригласить вас на страницу Blender Quickstart. Эта страница разработана чтобы обратить внимание на некоторые наши туториалы для начинающих, чтобы помочь вам начать моделировать и даже анимировать в Blender. Мы описываем почти каждую тему, о которой вы можете подумать, в нашей базе данных туториалов, и мы постоянно добовляем все новые. Одна вещь, которую вы должны знать - вы никогда не сможете прочесть ВСЕ туториалы отсюда, потому что как только вы подумаете, что прочли все, окажедся, что разработчики добавили новые возможности в эту и так замечательную программу. Итак, чего вы ждете? Читаем дальше...
Смеху ради прикрутил к своему Debian тему gtk2 от Ubuntu Dapper. Понадобилась папочка темы из /usr/share/themes и либа libubuntulooks.so из недр /usr/lib/gtk2/.
"Вам действительно так нужен программист?" -- спросил я. "Нам позарез
Об уникальных возможностях свободного софта
Решил я написать обзор возможностей свободного софта, которые не встречаются в коммерческом софте. Кое-что из этого я уже упоминал. Древовидная отмена в 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 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. Сам этот узел тащится куда скажут, те, которые рядом с ним, перемещаются, но чуть на меньшее расстояние, а те, которые дальше, перемещаются только чуть-чуть. Таким образом, если изначально все узлы были выстроены по прямой, после перетаскивания получим колоколообразную кривую. Эта возможность позволяет гибко изменять форму сложных кривых, не занимаясь при этом перетаскиванием каждого из сотен узлов. Физический движок BlenderBlender - это система трехмерной анимации, свободный аналог 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 5 comments | post a comment
вчера пытался винды поставить...
Наконец-то я приделал к ion3 то, что давно хотел: теперь, во-первых, в строке состояния показывается имя текущего десктопа, а во-вторых, по Win-B можно быстро переключиться на десктоп, на котором только что были. post a comment
Есть, оказывается, такой писатель - Василий Звягинцев. Фантаст. Пишет вполне ничего, тока сюжет придумать мог бы и поинтереснее... post a comment
Новые возможности Vim 7
Тут попросили написать обзор новых возможностей в Vim 7. Ну что ж, получите… :) ВкладкиТеперь Vim умеет работать со вкладками, как многие GUI текстовые редакторы. Конечно, и раньше можно было открыть два xterm с экземпляром vim в каждом. Но теперь можно нажать yy в одной вкладке, а p - в другой! Вместе с уже традиционной для vim возможностью разбивать каждое окно на два по вертикали или горизонтали вкладки дают потрясающую гибкость интерфейса. Все команды, предназначенные для работы со вкладками, начинаются с :tab. Перечислю основные из них:
Конечно, набирать такие длинные последовательности символов каждый раз не очень-то удобно. Спасает возможность vim определять для любых действий комбинации клавиш командой map. Например, в большом количестве программ создание новой вкладки назначено на комбинацию Ctrl-T. В vim эта комбинация традиционно используется для возврата по ссылке (а переход по ссылке - Ctrl-]). На мой взгляд, это не самый удачный выбор клавиатурной комбинации. Поэтому можно написать в ~/.vimrc следующее:
Теперь переход по ссылкам вперед-назад повешен на сочетания g<Right>, g<Left>, новая вкладка создается по Ctrl-T, а закрывается по Ctrl-A (традиционное во многих программах сочетание Ctrl-W в vim занято - это префикс для операций с окнами). А я, например, предпочел для операций с вкладками выделить отдельный префикс Ctrl-T, подобно тому как для операций с окнами выделен префикс Ctrl-W:
Кроме перечисленных команд, есть еще целый ряд команд, образованных дописыванием к обычным командам vim префикса :tab. Они делают то же, что и обычные, но - в новой вкладке. Так, например, по команде :tabe filename файл filename откроется для редактирования в новой вкладке. Еще одна важная команда, работающая со вкладками - :tabdo <команда>. Она выполняет указанную команду сразу во всех открытых вкладках. Это можно использовать, например, для замены текста сразу в нескольких открытых файлах. Проверка орфографии
Теперь проверка орфографии встроена в vim. Чтобы она заработала, нужно взять с ftp://ftp.vim.org/pub/vim/runtime/spell/ Приведу основные клавиатурные команды, относящиеся к проверке орфографии:
Умное автодополнение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 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 post a comment
Набор латентного виндузятника
В этой заметке я хочу рассказать о нескольких небольших программах, которые в совокупности могут сильно облегчить начинающему линуксоиду переход с 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-овский десктоп работает почти как в 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-а. Я еще не упоминал, что
Неплохой списочек получился, не правда ли? Более того, в 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-l Ну, будем считать, с файл-менеджером разобрались. Могу еще подсказать аналог ACDSee. Точнее, два аналога. Первый - GQView. Это смотрелка картинок со всеми необходимыми функциями - просмотр сразу по директориям и выбранного изображения отдельно, запуск внешних инструментов и пр. Есть минимальные средства для каталогизации изображений. Отличается от ACDSee тем, что отводит бОльшую часть окна под показ выбранного изображения, а под показ списка файлов в директории (который легко можно заменить на превьюшки) - напротив, меньшую. Во многих случаях так действительно удобнее. Второй аналог - gimageview. Эта программа по умолчанию больше напоминает ACDSee (т.е. большая часть окна отведена под тумбнэйлы). Замечательна она тем, что можно открыть сразу несколько вкладок с превьюшками (из разных директорий). Все необходимые функции, в т.ч. вызов внешних инструментов, здесь также есть. Last updated 23-Apr-2006 12:49:10 YEKST post a comment
Linux для математика
Сегодня DropC спросил меня о математическом софте в Linux. Это тема настолько объемна, что я решил ответить небольшой обзорной статьей. Тем более, что математический софт бывает нужен далеко не только математикам. Более того, большинство пользователей того же MatLAB-a - вовсе не математики, а физики и инженеры. Да и программисту такой софт бывает необходим… Итак, вопрос: есть ли для Linux (*nix) аналоги известных коммерческих математических пакетов? Ответ: есть, более чем. Небольшая табличка аналогов:
И здесь еще не все перечислено… Математического софта под *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 post a comment
pwd Вывести текущую директорию.
From Windows to Linux
Эти записки предназначаются для людей, которые привыкли пользоваться Windows, но хотят перейти на Linux. Это не учебник по Linux, но я постараюсь дать краткое описание основных отличий, без понимания которых практически невозможно работать в Linux. Первое отличие, которое я хотел бы отметить - документированность. В отличие от Windows, где справка своей краткостью предлагает вам купить толстенную книгу, а книга обилием воды призывает пройти платные курсы, Linux поставляется с полной документацией. К сожалению, большая часть этой документации - на английском языке. Русская документация зачастую входит в Linux, кроме того, ее почти всегда можно найти в Интернете, но, опять же к сожалению, зачастую она устарела по сравнению с англоязычным оригиналом. Главный источник документации - команда man. Если вы работаете в консоли, достаточно набрать man имя-топика<Enter>, чтобы получить справку по нужной теме. В случае, если вы работаете в графическом окружении, нужно из меню вызвать эмулятор терминала (например, 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. Осталось, пожалуй, только привести краткий список наиболее часто используемых команд.
Last updated 19-May-2006 00:56:04 YEKST post a comment
Если программист признан незаменимым, то лучшее, что можно сделать -- избавиться от него как можно скорее.
Хело ворлд ;) post a comment |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||