Консольные заметки

Закодировать файл в base64

base64 -w 0 block__image.svg

mimetype —output-format “%m” block__image.svg

Убрать переносы в выводе команды

cat file.txt | sed ‘:a;N;$!ba;s/\n//g’

Java launcher на NSIS

Представьте, вы написали прекрасное приложение на Java, теперь перед вами встал вопрос: как сделать так, чтобы приложение работало на всех Windows машинах, даже там, где нет установленной JRE?

На помощь приходит NSIS.

(GitHub gist)

 1 ; Java Launcher
 2 ;--------------
 3 
 4 Name "Batch playlist"
 5 Caption "Batch playlist"
 6 Icon "playlist-icon.ico"
 7 OutFile "BatchPlaylist.exe"
 8 
 9 SilentInstall silent
10 AutoCloseWindow true
11 ShowInstDetails nevershow
12 RequestExecutionLevel user ; This is not an installer, there is no need in administrator privilege(thats true by default)
13 
14 !define JNA_LIBRARY_PATH ".\modules\lib"
15 
16 Section ""
17   Call GetJRE
18   Pop $R0
19 
20   ; change for your purpose (-jar etc.)
21   StrCpy $0 '"$R0" -jar -Djna.library.path="${JNA_LIBRARY_PATH}" "dist\batch-playlist.jar"'
22 
23   SetOutPath $EXEDIR
24   Exec $0
25 SectionEnd
26 
27 Function GetJRE
28   ;
29   ; returns the full path of a valid java.exe
30   ; looks in:
31   ; 1 - .\jre directory (JRE Installed with application)
32   ; 2 - JAVA_HOME environment variable
33   ; 3 - the registry
34   ; 4 - hopes it is in current dir or PATH
35 
36   Push $R0
37   Push $R1
38 
39   ; use javaw.exe to avoid dosbox.
40   ; use java.exe to keep stdout/stderr
41   !define JAVAEXE "javaw.exe"
42 
43   ClearErrors
44   StrCpy $R0 "$EXEDIR\jre\bin\${JAVAEXE}"
45   IfFileExists $R0 JreFound ;; 1) found it locally
46   StrCpy $R0 ""
47 
48   ClearErrors
49   ReadEnvStr $R0 "JAVA_HOME"
50   StrCpy $R0 "$R0\bin\${JAVAEXE}"
51   IfErrors 0 JreFound ;; 2) found it in JAVA_HOME
52 
53   ClearErrors
54   ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
55   ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome"
56   StrCpy $R0 "$R0\bin\${JAVAEXE}"
57 
58   IfErrors 0 JreFound ;; 3) found it in the registry
59 
60   StrCpy $R0 "${JAVAEXE}" ;; 4) wishing you good luck
61 
62  JreFound:
63   Pop $R1
64   Exch $R0
65 FunctionEnd

XStream StaxDriver. Disable/Omit xml declaration

Useful tip for the beginners like me. I needed this in my first Java project.

So, code is pretty simple:

Asterisk + Huawei e1550 на Fedora 16.

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

Read More

Настройка OpenVPN на Fedora 16 для службы мне любимому.

У меня на работе есть очень злой прокси-сервер в лице squid, довольно сильно усложняющий использование интернета. Кроме того - если моя машина не является членом домена, то большинство файлов к скачиванию попросту недоступны.

Read More

Копирование файлов по SSH. Консоль.

Часто возникает ситуация, когда нужно передать файл между двумя Linux серверами, где есть только SSH. Чтож, это просто.

Read More

Western Digital Load Cycle Count

Я являюсь обладателем диска WDC WD1600BEAS-00RRT0. Всё было хорошо, пока я не стал замечать странные, еле слышимые щелчки при отсутствии активности на диске. Первое, что пришло в голову - парковка головок. К сожалению количество к этому времени уже перевалило за 600 тысяч.

Read More

Настройка OwnCloud. Fedora 16, nginx, php-fpm

На днях я наткнулся на замечательный проект http://owncloud.org/. Мне сразу же захотелось поставить это на свой домашний сервер, поскольку, используемый мною Sparkleshare не совсем подходит для хранения больших и бинарных файлов(backed by git).

Read More

Почему я выбрал rpm-based(Fedora) дистрибутив?

Я пользовался Ubuntu Linux 5 лет. Это были как домашние системы, так и сервера. Всё это время меня не устраивали некоторые шероховатости, например:

  • Почему менеджер пакетов называется apt-get, а не apt, что былобы намного удобнее, например?
  • Зачем для поиска пакетов нужен некий apt-cache? Гораздо проще было бы apt search.
  • Обновления. Почему apt-get update && apt-get upgrade, а не простой apt update?
  • Нет возможности сделать rollback обновлений(кроме костыльных способов мною найдено ничего небыло).
  • Неинформативность. Во время установки вываливается много информации, но она плохо структурирована и трудна для восприятия.
  • Отсутствие централизованного инструмента для управления сервисами.

Главным препятствием для спокойного использования на дектопе являются Compiz и Unity. Может быть когда-нибудь они будут готовы к повседневному использованию, но сейчас - нет.

Плюсы Fedora.

Начну с yum:

  • Просто великолепная штука yum whatprovides filename. Забудьте о гуглеже имени файла чтобы узнать имя пакета.
  • Очень информативен. Видно архитектуру, для которой предназначен пакет, при обновлении версию обновляемого пакета и его обновления.
  • История обновлений с возможностью отката(yum history, yum rollback).
  • Не нужно знать заклинаний чёрной магии, чтобы эффективно работать с ним.

Systemctl.

Централизованное средство для управления сервисами, и многими другими вещами в системе.

Первое, что мне очень понравилось:

Если сервис включен, значит его нужно запускать автоматически.

Блестяще! Именно то, что нужно. А вместе с пакетом bash-completion это вообще сказка.

Второе - статус сервиса. Здесь я, пожалуй, обойдусь без слов.

systemctl status

Третье - Systemctl знает о том, что он был запущен человеком! При большом количестве выходных данных он не замусорит ваш терминал.

Этот список - лишь сотая доля от возможностей systemctl! Всё остальное можно прочесть в хелпе, мане и вот здесь.

Теперь о плюсах на десктопе.

Gnome-shell по умолчанию. Красиво, с эффектами, без Compiz, стабильно, очень удобно.

Вот мой Ubuntu-подобный рабочий стол, например.

mount: unknown filesystem type ‘LVM2_member’

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

До этого, я не сталкивался с Logical Volume Manager.

Решение.

Первое, что приходит на помощь:

lvscan

Выдаст информацию о разделах на диске.

inactive ‘/dev/vg_pinky/vg_root’ [30.05 GB] inherit

inactive ‘/dev/vg_pinky/vg_home’ [100.75 GB] inherit

Обратите внимание на `inactive`. Сделаем активными все разделы:

vgchange -ay

Теперь можно монитровать раздел, например так:

mount /dev/vg_pinky/vg_root /mnt

Objective-J\C remove subviews oneliner

[[mainView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

add-apt-repository: command not found

# sudo add-apt-repository ppa:nginx/stable

bash: add-apt-repository: command not found

# sudo apt-get install python-software-properties

Не логичные имена пакетов и инструментов, вот что меня бесит в Убунту.

Тем, кто также как и я захотел изменить подcветку в vim

Описание синтаксиса регулярных выражений в VIM

p.s. Ещё довольно много информации есть в :help pattern-overview

`Git diff` gvimdiff

git config --global diff.tool gvimdiff
git config --global difftool.prompt false
git config --global alias.d difftool

Via stackoverflow

P.S. точно также можно использовать и другие утилиты, например meld