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

Sun ODF plugin for Microsoft Office

Open Office шагает по стране, теперь шаблоны некоторых документов в интернете размещаются в формате .odt. Иногда с дубликатами в .pdf или .doc. А иногда и без них.

Что делать рядовому юзверю, который привык к своему MS Office и ни про какой OO знать не хочет? Поставить плагин фирмы Sun. Открывает и .odf и .odt.

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

Ну ничего, в сети еще есть бесплатная ПРЕДпоследняя версия. Качаем отсюда: http://narod.ru/disk/22749935000/odp-3.1-bin-windows-en-US.rar.html

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

Компиляция gcc программ с OpenMP

Нужно прилинковать библиотеку GOMP(ключ -lgomp при линковке). При компиляции, по идее, нужен ключ gcc -openmp (или -fopenmp), но у меня проект и без них откомпилировался и собрался.

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

Три потока, три пути, выбирай куда идти... Это я про stdin, stdout, stderr.

Допустим, у нас есть проект, который мы собираем из командной строки командой gmake. Генерируется многостраничная выдача и гораздо удобнее читать ее из файла, а не в окне терминала. Пишем gmake > файл и... в файле оказывается лишь несколько строчек. Засада.

А все потому, что при компиляции/сборке генерируются два типа выражений - просто output и ошибки. Первые идут в stdout, вторые - в stderr. Поскольку оба потока по умолчанию связаны с экраном, юзер их не всегда и различает. А когда начинаем перенаправлять - тут отличия и всплывают. Значок > перенаправляет только stdout. А вот комбинация >& перенаправит в файл и stdout, и stderr.

Узелок на память - список операторов перенаправления:
операция > файл - перенаправляет все сообщения stdout в файл;
операция >& файл - перенаправляет все сообщения stdout и stderr в файл;
операция < файл - перенаправление stdin, операция возьмет на вход содержимое файла;
операция >> файл - сообщения из stdout будут дописываться в конец файла (append).

Все это работает и в Windows и в Unix.

четверг, 22 июля 2010 г.

Простая программа на Python

# -*- coding: cp1251 -*-
w = 10
h = 10


fh = open('simple.txt', 'w')

for i in range(h):
s = ''
for j in range(w-1):
elem = 'a_{' + str(i) + ',' + str(j) + '}'
s = s + elem + ' '
elem = 'a_{' + str(i) + ',' + str(w) + '}'
s = s + elem + ' \n'
# простой вывод на экран - print s
fh.write(s)

fh.close()

Комменты. # - комментарии. Строчка с coding - на всякий случай, чтоб не ругался IDLE. Блоки не ограничиваются ни begin/end, ни {} - внутри блока нужно сделать отступ либо Tab, либо 4 пробела. Регулярные выражения реализованы не так как в Perl, здесь используются функции.

среда, 21 июля 2010 г.

Latex - матрицы из пакета amsmath

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

Если подключен amsmath (\usepackage{amsmath,amssymb}), можно использовать окружения pmatrix, bmatrix, matrix и др. Отличаются они лишь формой скобок.

Одно маленькое замечание. Если написать просто \begin{pmatrix} \end{pmatrix} - ничего работать не будет - latex выдаст ошибку "Missing $ inserted". А все потому, что все окружения типа XXmatrix работают только в math mode. Поэтому нужно сделать так:
\begin{equation}
\begin{pmatrix}
\end{pmatrix}
\end{equation}

четверг, 15 июля 2010 г.

Графопостроитель

Обнаружил весьма продвинутую программу для рисования графиков и анализа данных - SciDAVis.
Умеет строить всякие графики, экспортировать их в некоторые векторные и растровые форматы (выбор, правда, совсем небольшой). Есть функции для расчета корреляции, автокорреляции, свертки и деконволюции. И даже возможность взятия прямого и обратного быстрого преобразования Фурье (БПФ, оно же FFT), а также функции для работы со спектрами и сигналами.

Пакет лежит здесь: http://scidavis.sourceforge.net/. Почитать о нем на русском можно в блог-посте.

Немного про Batch

Не перестаю удивляться синтаксису BAT-файлов.

Вот так не работает
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (echo Cannot switch on extensions)
ELSE (echo Extensions are switched on)

- не знает cmd.exe команды ELSE.

А надо вот так:
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (echo Cannot switch on extensions
)ELSE (echo Extensions are switched on)

так как ПРЕДЛОЖЕНИЕ (такой элемент языка) ELSE должно быть на той же строчке, что и команда, следующая за оператором IF.

Теперь про setlocal. Эта директива включает некоторую опцию только для данного bat-файла.
Далее цитата из хелпа:
"Команда SETLOCAL принимает необязательные аргументы: ENABLEEXTENSIONS или
DISABLEEXTENSIONS. Это позволяет включить или отключить расширенную обработку
команд до выполнения команды. Аргумент ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION включает или отключает отложенное расширение переменной среды."

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