Всё чаще в твиттер
одной строкой пост целый
пишу на память.
Не растекаясь мыслею по древу и без лишних аннотаций, предлагаю вам список коротких советов и ссылок, настоящих жемчужин, накопившихся в моём твиттере, записанных мной самим, тщательно упорядоченных ныне по темам и ранжированных с точки зрения общечеловеческих ценностей.
Приёмы работы
LaTeX и вёрстка
Программирование
Находки (всякие программки)
1. Приёмы работы:
- Чтобы не закрывать Firefox, когда закрывается последняя вкладка по Ctrl-W: идём в
about:config
, находимbrowser.tabs.closeWindowWithLastTab
, ставимfalse
. Проверено на FF 3.5. - OpenOffice: чтобы запретить разрыв слова (т.е. запретить перенос), вставляем нечитаемый символ U+2060 (Zero-width WORD JOINER). Символ можно найти, запустив
gucharmap
. Надо в .XCompose добавить... - Чтобы использовать новый, сжимающий раза в два лучше, видео-кодировщик Theora 1.1, нужно взять саму новую библиотечку (уже есть в Debian unstable), и, главное,
ffmpeg2theora
версии не ниже 0.25. На сайте разработчиков есть и бинарные сборки. - Принудительное отключение подсветки ЖК-дисплея:
xset dpms force off
. Отсюда. - Банальность. Удаление пустых строк
sed
-ом:sed '/^\s*$/d'
. - Редактируя диаграммы Graphviz в Vim, быстрый просмотр по
:make
можно сделать так::set makeprg=dot\ -Tpng\ %\ \\\|display\ png:- errorformat='' autowrite
. Подставить название используемой программы (dot
,neato
,fdp
, ...). - Создание паролей (если нет KeePassX):
cat /dev/urandom | tr -d -c 'a-zA-Z0-9' | fold -w 8 | head -1
- Поиск и удаление дубликатов файлов:
fdupes
в командной строке,fslint
— утилита с графическим интерфейсом. - В Debian можно заменить файл пакета, не пересобирая пакет. Поможет
dpkg-divert
. sudo -i
имитирует логин под рутом (даёт#
). Бывает полезно (раньшеsudo su -
иногда пользовался).- Как создавать картинки предварительного просмотра видеофайлов:
ffmpeg -itsoffset -1 -i видеофайл.avi -vcodec mjpeg -vframes 1 -an -y -f rawvideo -s 320x240 картинка.jpg ; done
Как создавать картинки из PDF:convert -thumbnail 300x300 документ.pdf[0] -gravity center -extent 300x300 картинка.png
2. LaTeX и вёрстка:
- Рекомендуемая минимальная ширина полей, чтобы документ можно было печатать и на A4, и на Letter — А4, слева и справа 20 мм, сверху и снизу 33 мм. RFC 2346.
- Чтобы избежать разрыва страницы в LaTeX, можно поместить фрагмент текста в окружение
samepage
. Это частый вопрос. - Отступы элементов списка в LaTeX можно настроить, если использовать окружение
list
вместоitemize
. Пример. - Чтобы добавить межабзацный пробел,
\setlength{\parskip}{10pt plus 1pt minus 1pt}
. Особенно полезно в наборе без абзацного отступа. Отсюда. - Чтобы выравнять картинку и текст справа от неё по вертикали, по середине, повозившись, сделал себе макрос
\sidebyside{}{}
:\newsavebox{\leftbox}\newlength{\leftboxheight}\newcommand{\sidebyside}[2]{\sbox{\leftbox}{#1}\settoheight{\leftboxheight}{\usebox{\leftbox}}\usebox{\leftbox}\raisebox{0.5\leftboxheight}{#2}}
Смотрите пример использования. - Чтобы автоматически закрывать окружения LaTeX, пользователи Vim могут поставить плагин tex_autoclose. Использование: в режиме вставки Ctrl+\, затем c.
- Разрезать на страницы и «склеивать» PDF-документы можно с помощью pdftk. Объединить два файла в один:
pdftk первый.pdf второй.pdf cat output новый.pdf
3. Программирование:
- В Python, примитивное транспонирование списка пар в пару списков:
unzip = lambda pairs: zip(*pairs)
@vlasovskikh подсказал, что для больших списковizip
будет быстрее (проверили, так). - Занятное и доходчивое объяснение «что такое продолжения» на 11-й минуте видеопрезентации Swarm-dpl.
- Быстро создавать графический интерфейс для научных программок позволяет библиотечка TraitsUI (Python). Пока не пробовал, но прочитал урок по TraitsUI.
- Говорят, Intel готовит Concurrent Collections и для Хаскеля.
- Я же пока проснулся и прочитал про со-процедуры на Си и устройство Даффа. Впечатлился.
- Хотите полюбоваться, как можно добавлять побочные вычисления «наследованием» типов? Вот, пожалуйста, в этом примере (на Хаскеле). Хотя это, конечно не Java.
- Учился использвать монадные трансформеры (бррр!) — оказалось несложно. В результате получился такой пример использования StateT поверх IO. Может кому пригодится.
- Мелкое копирование словарей в Python — грабли.
4. Находки (всякие программки):
- Atrack — анонимный открытый битторент трекер для Google App Engine. Всего 246 строк кода.
- Sweet Home 3D — программа для планирования интерьера. Можно рисовать планы комнат, расставлять мебель, крутить по всякому. Сделана красиво.
- fuse-zip — файловая система FUSE для монтирования zip-архивов. Быстрая, легко собирается по
make
, умеет писать в архив. Использование:fuse-zip архив.zip /точка/монтирования
Есть также avfs, которая монтирует любые архивы, но не пишет и не такая удобная. Её использовать так:mountavfs ; ls ~/.avfs/полный/путь/к/архиву.zip#/файл/в/архиве
В Debian нужно предварительно добавить пользователя в группу fuse. - Python(x,y) — дистрибутив Python для научных работников, для Windows и Ubuntu. Все инструменты и библиотечки «из коробки».
- В дополнение к своему однострочнику antiodt нашёл ещё хороший конвертер ODT в Markdown odt2txt.py.
- Дружественный к Гному вариант Xmonad — Bluetile. Раз попробовал, и две недели им пользовался.
- Попробовал
gitit
. Самая простая вики для совместной работы над математическими текстами (вместе сjsMath
из коробки). Хранилище — git или darcs. - TxtSushi — утилитки, позволяющие выполнять SQL-запросы по простому текстовому (CSV, TSV) файлу.
Ух-ты, а немало получилось.