Новичкам

Способы объединения pdf-файлов

Tags: •  •  • 

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

1. Использование GhostScript напрямую. Ghostscript - пакет, позволяющий вам просматривать или печатать PostScript и PDF файлы, а также конвертировать их в другие форматы. Данный пакет достаточно часто используется, но вместе с тем, немногие пользуются его возможностями для объединения файлов PDF.

$ gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=single.pdf part1.pdf part2.pdf

  1. gs -- собственно вызов Ghostscript
  2. -dBATCH -- завершить работу Ghostscript после завершения объединения
  3. -dNOPAUSE -- производить операции без запросов пользователю
  4. -q -- не выводить сообщений (тихий режим)
  5. -sDEVICE=pdfwrite -- использовать встроенную утилиту для работы с PDF файлами
  6. -sOutputFile=single.pdf -- имя результирующего файла

Если вам часто приходится производить операцию объединения, то можно добавить в настройки вашей оболочки следующую строку, убыстряющую вызов:
$ alias pdflink='gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=./result.pdf'

Аналогично gs работает и с PS файлами.

2. joinPDF - консольная утилита для объединения, написанная на Java и требующая JRE для своей работы. Использование достаточно тривиальное:

$ joinpdf result.pdf part1.pdf part2.pdf

3. Способ для пользователей KDE: kprinter, служащий GUI для работы с Ghostscript. Нужно выбрать вывод в файл соответствующего типа (PDF,PS) и добавить объединяемые части в порядке их следования в результирующем файле.

Сохранение истории команд в bash

Tags: •  •  •  • 

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

shopt -s histappend
PROMPT_COMMAND='history -a; history -n'

Изображение пользователя ak47punk.

Thunderbird и трей

Tags: •  •  •  •  •  •  • 

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

$ alltray thunderbird -s -stask -i /usr/share/pixmaps/thunderbird.png

В результате, получаем почтарь, проживающий в трее, разворачивающийся при запуске и с красивой иконкой.

Восстановление загрузчика Windows после установки Linux

Tags: •  •  •  •  •  • 

1.Загружаемся в Linux
Считываем первые 512 байт диска командой

$ dd if=/dev/hda of=~/bootsect.bin bs=512 count=1

2.Нужно передать этот файл в Windows, через USB-Диск или через запись на примонтированые разделы

3.Загружаемся c Установочного диска Windows в режиме консоли - нужно при загрузки с диска нажать кнопку R
Выбираем нужную копию Windows
Выполняем команду fixmbr для восстановления главной загрузочной записи.

4.Перезагружаемся - загружается Windows
Копируем с флешки файл bootsect.bin в корень диска С:\
Включаем отображение невидемых файлов
В файл boot.ini дописываем строчку

C:\bootsect.bin="Linux"

Перезагружаемся, и проверяем. Теперь загрузчик позволяет нам выбирать Linux и Windows.

Советы в тему:

  1. добавляем Linux в NT boot loader
  2. Установка Linux из под Windows с жесткого диска без дискет и DVD- CD-ROM'a

Изображение пользователя bliznezz.

смотрим за работой dd

Tags: •  •  •  • 

часто бывает нужно сделать копию/дамп с помощью команды dd какого нить большого объекта, выполняем dd if=/input of=/output bs=1M ... и работает оно себе. когда работает долго - хочется узнать сколько осталось. сколько осталось - не ясно, а статистику I/O можно получить.
нужно подать сигнал -USR1 (-10) этому процессу, и он выкинет эту информацию в stderr

$ dd if=/dev/zero of=/dev/null bs=1M &
$ killall -10 dd 
566067+0 records in
566066+0 records out
593563222016 bytes (594 GB) copied, 16.1759 s, 36.7 GB/s

Изображение пользователя ramok.

Маска для дот-файлов

Tags: •  •  • 

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

 cp -r .* backup-dir

То есть .* говорит "любое имя файла или директории начинающиеся с точки". Но тут есть подвох. Дело в том что в каждой директории есть две директории с именами . и .., что обозначает "текущая директория" и "родительская директория" соответсвенно.
 cp -r .??* backup-dir

То есть .??* говорит "любое имя файла или директории начинающиеся с точки и содержащая не меньше двух символов". Хотя конечно эта маска не охватывает файлы короче трех символов. Лично я часто пользуюсь этой маской, потому что она применима для большинства случаев и короткая Ж:-)

Спасибо darkk-у, подсказал правильную sh маску .[^.]*

Самая правильная маска для этого выглядит в zsh так:

cp -r .*~(.|..)(^@) backup-dir

.* "все файлы начинающиеся с точки"
~ "отрицание,все маски что идут после ~ не влючены в результат"
(.|..) "имя файлов . или .."
(^@) "не символические ссылки"

ну или еще более правильная для копирования дот-файлов из домашней директории

cp -r ${HOME}/.*~${HOME}/(.|..)(^@) backup-dir

PS
как это выглядит в bash?

Ищем следы вторжений ... и собственные ошибки

Tags: •  •  •  •  •  • 

Давно установил и настроил несколько утилит для проверки системы и обнаружении вторжений, но сегодня узнал ещё об одной и был слегка шокирован своей криворукостью. :-\

Надо бы упорядочить эту тему

Старая, но ещё актуальная статья.

Сведения об уязвимостях в установленном ПО. Специфично для Debian

  1. debsecan - информация о проблемах в установленных пакетах.
  2. apt-listbugs - при установке пакета сообщает о возможных проблемах

Оценка состояния:

  1. logcheck - поиск подозрительного в логах, отчёт на почту
  2. chkrootkit, ИМХО, стоит заменить на более новый rkhunter
  3. tiger - сканирует систему и сообщает о всём подозрительном. Хотя бы один раз запустить нужно. На новом Debian узнаёшь много интересного...

Обнаружение подозрительной деятельности

  1. portsentry - обнаружение сканирования портов
  2. tripwire - обнаружение изменений в важных файлах

Лучшая защита - нападение. Удалённый поиск уязвимостей

  1. nessus

Это в порядке увеличения паранойи ;) Первая группа необходима всегда и везде. Вторая самая удобная: добавил в cron и только отчёты просматривай; не будет лишним даже на домашней машине. Ну а где остановиться - определяется только здравым смыслом.

Решение временных проблем с DNS провайдера

Tags: •  •  •  • 

Иногда DNS сервер провайдера говорит, что искомый сайт не найден. Закончился срок регистрации, администраторы ошиблись в настройке DNS или просто необъяснимые флуктуации :) Тогда можно получить адрес напрямую у мастера DNS домена.

$ whois rusmafia.org | grep -i "name server"
Name Server:NS1.007NAMES.NET
Name Server:NS2.007NAMES.NET
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
$ dig @NS1.007NAMES.NET rusmafia.org | grep "IN.*A>"
;rusmafia.org.                  IN      A
rusmafia.org.           10800   IN      A       193.1.132.93
NS1.007NAMES.NET.       3600    IN      A       209.250.64.14
NS2.007NAMES.NET.       3600    IN      A       209.250.64.15

Полученный адрес добавляем в /etc/hosts. Как решение _временных_ проблем сойдёт. К счастью, большинство таких ошибок как раз временные. Как у меня сегодня. :)

Знакомство "чайника" с процессом загрузки ядра linux

Tags: •  •  •  • 

Редко может быть нужно :) Обычно программистам и любознательным

Можно взять и сходники и начать читать. Но неплохо бы составить представление сначала о всём рассматриваемом процессе, а уже затем выделить наиболее интересные части кода и разбираться в них.

Что такое загрузка ядра? Объективная реальность, данная нам в выводе dmesg :D

Можно взять вывод dmesg и найти, какой функции/файлу кода соответствует та или иная строка. С помощью cscope(kscope) это не так уж трудно.

daemon vs. inetd

Tags: •  •  • 

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

ИМХО, сетевую службу стоит запускать через inetd, если планируется редко её использовать и время доступа к этой службе не критично. Зачем забивать память неиспользуемыми демонами? ;) Редко используемая файлопомойка на ftp - хороший пример.

И ещё. Вместо стандартного inetd (например, openbsd-inetd) можно выбрать xinetd. Он позволяет разбивать конфиг на отдельные файлы (поправьте меня, такая система называется '.d' ) и ограничивать число запущенных процессов.

изменение кодировки в id3 тэгах у mp3 фалов

Tags: •  •  •  •  •  • 

чтобы перекодировать mp3 тэги в другую кодировку можно использовать удобную cli утилиту mp3unicode. например для перекодировки из win в уникод я использую такую комманду:

$ mp3unicode -s win1251 -1 none -2 unicode -p file.mp3 

-s указывает на кодировку в которой представлены id3 тэги

-1 id3tag версии 1 отсутствует

-2 кодировка id3tag версии 2

-p защищает id3tagи от перекодировки если они уже перекодированные в unicode

рекомендую сперва попробовать на копии файлов, а не на оригинале.

Сканирование рукописей и книг в djvu

Tags: •  •  • 

Djvu -- компактный формат хранения рукописей и книг в электронном виде. Мой способ кодирования в djvu на Linux Debian описан здесь:
http://theorie5.physik.unibas.ch/shalaev/my.linux/djvu.html

wmv в avi

Tags: •  •  •  •  • 

Скачал видео в формате wmv и хочу перевести его в avi:

$ mencoder infile.wmv -ofps 23.976 -ovc lavc -oac copy -o outfile.avi

Изображение пользователя ramok.

Как узнать информацию о тексте в vim

Tags: •  • 

Случается что нужно узнать полное имя текущего редактируемого файла в vim (что бы скопировать его мышкой и вставить куда нибуть). Жмем ctrl-g в командном режиме.

g<ctrl-g> - Узнать сколько букв/слов/линий выделено в визуальном режиме. Или сколько букв/слов/линий вообще в файле,
если нажать это в командном режиме.

Изображение пользователя ramok.

Вызов помощи в zsh по F1

Tags: •  •  • 

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

Вносим в ~/.zshrc

autoload zsh/terminfo
bindkey $terminfo[kf1] run-help

запускаем zsh заново, набираем например
find . -<F1>

и автоматически будет вызвано run-help find. Приятно что после выходи из мана вы можете продолжать
редактировать туже строку.

PS.
По мотивам справедливого замечания anonymous-a.

Для людей использующих vi режим в zsh может быть интересно это.

Конвертация flv to swf

Tags: •  •  •  • 

Перед нами иногда возникают казалось бы тривиальные задачи с которыми справиться оказывается довольно проблематично. Всего то надо было переконвертить .flv в .swf. Мы как люди умные конечно лезем в искать в гугл. Там я и провел час времени :) А потом еще час на читку мана по mencoder (я знаю он может справится с этой задачей, но постоянно выдавал мне левые ерроры...хм). В итоге решение оказалось до безобразия простым - пакет ffmpeg.
Итак что именно надо сделать :)

$ ffmpeg -i inputfile.flv outputfile.swf

Удобное и быстрое комментирование в vim

Tags: •  •  • 

Недавно мне захотелось в vim комментировать код быстрее, чем я это делал раньше, то бишь не вручную :) Потратив некоторое время на vim.org в поиске необходимого плагина, я остановился на том, который, по моему мнение, наиболее вписывается в концепцию vim - NERD Commenter! Стиль комментариев зависит от типа файла, который вы открыли. Поддерживаемых типов достаточное количество :)

Комбинации клавиш по-умолчанию:

,cc - комментирование текущей строки или выделенного текста
,cn - закомментировать/раскомментировать
,ci - то, что было закомментировано раскомментировать и наоборот
,cs - сексуальное комментирование ;-)
,cy - перед комментированием выполнить yank
,c$ - закомментировать от текущей позици курсора до конца строки
,cI и ,cA - добавить комментарии в начало и в конец строки соответственно
,cl, cr, cb - комментировать, выравнивая символы комментария по левому, по правому краю или растягивая соответственно
,cu - раскомментировать

Отсылка сообщений с помощью mutt из командной строки

Tags: •  • 

просто сообщение

cat message | mutt -s "Subject" user@domain

сообщение и вложение
$ mutt -s "See Attachment" -a file.doc  < message.txt

просто вложение
$ echo | mutt -a sample.tar.gz 

подробнее - man mutt

Изображение пользователя ramok.

Кто занял звук?

Tags: •  •  •  •  • 

Некоторые программы все еще работают со звуком через OSS блокируя доступ к /dev/dsp, не давая другим программам работать со звуком. Глобальное решение проблемы сводится к использованию правильно настроенному ALSA и/или аудио серверов.

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

У меня иногда из-за такого в firefox пропадает звук. Проблему можно
решить так же как и в примере ниже проверив кто занял файлы в /dev/snd/*

В приведенном примере делается попытка проиграть .mp3 в mplayer, но xmms занял все.
xmms я не пользуюсь обычно, но он незаметно вызвался из firefox когда случайно
клацнул на линке звукового файла. Что и было выяснено Ж:-)

Резервное копирование при помощи rdup (жесткие ссылки)

Tags: •  •  •  • 

Многим знакома проблема восстановления случайно удаленных файлов. И если некоторые файловые системы еще предоставляют возможность хоть как-то найти утерянное, то иногда это невозможно даже теоретически. Конечно, исходные коды и многое другое разумно хранить в какой-нибудь VCS (системе контроля версий файлов), но для больших бинарных файлов, которые к тому же редко изменяются, это представляется не очень целесообразным. Более того, любая система контроля версий требует значительного объема дискового пространства, специальной настройки и обучения идеологии. В нашем случае это не нужно, достаточно просто защититься от непреднамеренного удаления. Иными словами, некий аналог "корзины" в Windows.

Задача может быть решена разными способами - от перехвата системных вызовов и патчей к файловой системе до дополнительных функций к файловым менеджерам типа Midnight Commander. Описываемое здесь решение базируется на жестких ссылках (hard links). Утилита rdup (http://miek.nl/projects/rdup/) позволяет это сделать без долгого и мучительного программирования на shell-скриптах и не расходуя драгоценное дисковое пространство. Для выполнения процедуры резервного копирования нужно запустить утилиту rdup-simple например так:

$ nice -n 19 rdup-simple ~ /backup/$USER

Этот код можно поставить в crontab или выполнять его при каждой перезагрузке. rdup не требует прав суперпользователя. Для восстановления удаленного файла все, что вам потребуется, это зайти в директорию с сохраненной копией (структура каталогов воссоздается один-в-один) и скопировать файл обратно на место. Длительность хранения резервных копий регулируется параметром +DAYS и по умолчанию равна 8 дням (это разумно, т.к. позволяет сохранять файлы, которые нужны раз в неделю).

RSS-материал