Показаны сообщения с ярлыком howto. Показать все сообщения
Показаны сообщения с ярлыком howto. Показать все сообщения

воскресенье, 19 апреля 2009 г.

Ускоряем octave

Некоторые интерпретаторы держат в памяти таблицу имён всех функций, классов, переменных и т.д. для всех установленных модулей (плагинов). Это приводит к тому, что интерпретатор загружается и обрабатывает скрипты тем дольше, чем больше таких расширений установлено.
Для сравнения: в python нужно явно указывать какие нужны модули (import mudule_name), в php автоматически загружаются все модули, указанные в php.ini.
Octave во всех дистрибутивах, с которыми я имел дело, по умолчанию загружает все установленные модули, но имеется возможность это отключить. Достаточно вызывать octave таким образом:
octave --no-site-file
или даже таким
octave --no-site-file --norc --no-init-file
то есть без всяких настроек модули в таком случае, нужно загружать при помощи команды pkg:
pkg load нужный_модуль
Теперь octave запускается существенно быстрее
Пример файла-скрипта:
#!/usr/bin/env octave --silent --no-site-file --no-history
pkg load audio

Freq = 44*1000; % Частота несущей в герцах
Time = 5; % Продолжительность звучания

t = 0 : 1/Freq : Time;  % Вектор значений времени
w = sin(2000 * sin(t)); % Передаваемый сигнал

y = sin(f*t + w); % Фазовая модуляция сигнала

sound(y, Freq) % воспроизведение

суббота, 13 сентября 2008 г.

Как сделать альтернативыне короткие заголовки в Lyx

LyX уже очень удобен при создании разного рода статей и книжек, но проект всё ещё не покрывает повседневные нужды... Короче говоря, в нём очень много чего не хватает.

Например, попалась тут задачка — показывать текущие заголовки в верху каждой страницы книжки. Если текущий заголовок (название главы или раздела) слишком большой, то он не влезет в отведённое для него место. В latex решается просто — созданием альтернативных заголовков. Прочесал все меню Lyx и подобной функциональности не обнаружил.

Интереса ради, сделал простой latex-файл с нужной функциональностью и импортировал его в Lyx.

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

\begin_inset OptArg status collapsed \begin_layout Standard Короткий заголовок \end_layout \end_inset

В общем, вот инструкция:

  • Создаём файл *.lyx c таким содержимым:
    \lyxformat 276
    
    \begin_document
    
    \begin_header
    
    \textclass book
    \language russian
    \inputencoding auto
    
    \paperpagestyle fancy
    
    \end_header
    
    \begin_body
    
    \begin_layout Section
    \begin_inset OptArg
    status collapsed
    
    \begin_layout Standard
    Короткий заголовок
    \end_layout
    
    \end_inset
    
    Очень-очень-очень-очень-очень длинный, длиннющий заголовище
    \end_layout
    
    \end_body
    \end_document
    
    и открываем его в Lyx
  • выделяем серенькую штучку Opt и копируем её в свой документ, в свой длинный заголовок
  • заменяем содержимое штучки на нужный короткий заголовок

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

вторник, 1 июля 2008 г.

Как извлечь картинки из *.doc?

MS Word, как известно, предоставляет возможность сохранить все изображения, используемые в документе, непосредственно внутри файла *.doc. При этом изображение в документе может довольно значительно отличатся от исходной картинки, которая была вставлена в документ.

Что делать, если необходимо "достать" картинку из документа Word в таком виде, в каком она была при вставке? Можно вернуть для рисунка все параметры (такие как размер, обрезка...) к исходному состоянию. Процесс мучительный, но даст почти нужный результат... при нажатии PrintScreen. Если картинок вытащить нужно много, то убить можно очень много времени.

Ещё можно поискать различного рода макросы и попытаться написать свою программу на основе спецификации...

Рациональнее воспользоваться возможностями новых форматов. Формат документов в Office 2007, как и ODF, представляет собой zip архив со всеми вложениями внутри. Извлечение картинок будем делать на примере ODF (Open Document Format). Microsoft скоро научит свой Office работать с этим форматом... А пока этого не произошло, нам понадобится OpenOffice.org

  • Первым делом, открываем документ в OO Writter. Надо отметить, что большому документу потребуется много оперативной памяти и времени на преобразование, которое произойдёт на этом шаге.
  • Сохраняем документ в формате *.odt и закрываем OpenOffice. Как уже отмечено, файл *.odt представляет собой просто zip архив, содержащий все "внутренности" документа как отдельные файлы.
  • Переименовываем наш NewDocument.odt в NewDocument.zip и извлекаем из архива папку pictures... Там-то и будут находится нужные нам картинки.
При этом методе картинки в архиве находятся вовсе не обязательно в том порядке, в котором они расположены в документе.. Если последовательность нужна, то рисунки из ODF можно извлечь при помощи writer2latex. В моём дистрибутиве Linux (Mandriva 2008.1), после установки соответствующего пакета, нужный результат получается такой командой:
java -jar /usr/share/java/writer2latex.jar -latex  \
/путь/NewDocument.odf /путь/к/папке/для/рисунков/

Файл latex из документов с большим количеством картинок у меня так ни разу нормально и не сформировался, но картинки (как минимум растровые) вынимаются исправно и в нужном порядке.