Глупый пингвин робко прячет, умный - смело достает...


romy4 аватар

Переместить приложение на нужный рабочий стол в x=0:y=0 и нажать кнопку

Автоматизируя рабочий стол наткнулся на то, что FF с установленным session manager не хочет нормально запускаться. Точнее, он запускается и ждёт нажатия кнопки выбора сессии. Даже если каким-то образом удастся его запустить, оно всё равно открывается на правом мониторе, а нужно на левом. Как решить?

Есть два варианта: переключиться на другой workspace и там запустить или запустить на текущем, а потом переместить окна на другой workspace.

Под катом решение.

0
Ваша оценка: Ничего

Socks proxy через ssh

чтобы организовать не кэширующий прокси сервер оказывается достаточно работающего ssh.
в линукс достаточно запустить комманду:

ssh -D<proxy_port> <имя_пользователя>@<удаленый_ssh_сервер>

в Windows с помощью PuTTY добавить в разделе Connection/SSH/Tunnels

  • в Source port номер proxy порта
  • выбрать Dynamic и нажать на Add

<proxy_port> заменить на число >1000 <65536

после того, как соединение с ssh сервером установлено на Вашей локальной машине Вы можете использовать proxy: localhost:<proxy_port>

для примера как я организую прокси:

localhost $ ssh -D8888 
Password: *******
 $ _

после этого прописываю прокси localhost:8888 в настройках, указывая, что это Socks V5 проски.

0
Ваша оценка: Ничего
ramok аватар
romy4 аватар

Нумерация скачанной музыки

Идея в том, что вы скачиваете плейлист в правильном порядке, а потом эта неорганизованная куча файлов после команды опять стаёт в порядке плейлиста. Суть в том, что каждый файл сохраняет своё время изменения на секунду больше предыдущего. Этим надо воспользоваться.
Допустим, скачали кучу файлов из плейлиста в папку Music/new, там они сейчас в перемешку, так как имена разные. Делаем их в нужном порядке и нумеруем следующей командой (предварительно зайдя через консоль в Music/new):

ls -1rat | awk '/^[^.]/ {print $0}' | awk  '{name=sprintf("%03i - %s",NR,$0);system("mv \""$0"\" \""name"\"")}'

не сработает, если в названии есть (`) обратный апостроф

%03i - нумерация от 000 до 999, если надо 0000-9999, то ставим %04i

Ссылки в тему:

0
Ваша оценка: Ничего
i-sat аватар

Собираем Asterisk для OS X Yosemite

Уже давно в голове вынашивалась идея запустить Asterisk под работающим почти круглосуточно Mac-mini с OS X Yosemite, однако готовой сборки на просторах интернет не попадалось под руку.

Если кому интересен это краткий совет, тогда читайте далее...

0
Ваша оценка: Ничего
romy4 аватар

Системная информация в читаемом виде

$ sudo inxi -Fx

0
Ваша оценка: Ничего
romy4 аватар

Little about Find

  1. Find large files
    find /home -type f -size +5000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
  2. Find files / directories with 777 permissions
    #find 777 files
    find / -type f -perm 0777
    #find 777 dirs
    find / -type d -perm 0777

    You can also combine find to skip some folders when copying using this article. Prune tells it to also skip subfolders and subfiles.

    find . ! \( -name images -prune \) -print | cpio -o | ttcp -t yourserver.com -p 10000
  3. Find empty files
    find /home -type f -size -1b -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
  4. Find empty files and delete
    find /tmp -type f -empty -delete
  5. Find smallest files and delete them
    ls . -S | tail -250 | xargs rm
  6. Find largest files
    ls . -Srl | tail -250
0
Ваша оценка: Ничего
romy4 аватар

Copy millions of tiny files through a network

I had to copy millions and millions of tiny small image files, about 5KB each, total size more than a terabyte, over a network fast.

SCP, NFS, FTPFS and SSHFS where all too slow to work with. All these methods copy every single file piece by piece, causing lots of overhead, I never reached more than 1MB/s over a gigabit line.

The fastest solution I came up with after lots and lots of testing was this:

Receiving server:

ttcp -r -p 10112 | cpio -i -d -m

Sending server:

find /home/files -print | cpio -o | ttcp -t receivinghost.com -p 10112

CPIO is slightly faster than TAR, and does not have any problems with long filenames.

  1. Other solution 1 - A little compression
    This solution saves a little bandwidth by gzipping the files. This will only save you bandwidth if you transfer text/html/sql files, images, mp3 and other already compressed formats will only cost more time and overhead.

    Receiving server:
     

0
Ваша оценка: Ничего
ramok аватар

Терминал для бедных

Если под рукой нет ckermit или minicom то можно воспользоваться простым терминалом из пакета python-serial

$ python -m serial.tools.miniterm

По -h можно получить список параметров

0
Ваша оценка: Ничего
ramok аватар

Сприсок COM портов

$ python -m serial.tools.list_ports
/dev/ttyACM0        
/dev/ttyS0          
/dev/ttyS1          
/dev/ttyS2          
/dev/ttyS3          
/dev/ttyUSB0        
/dev/ttyUSB1        
/dev/ttyUSB2        
/dev/ttyUSB3        
/dev/ttyUSB4        
/dev/ttyUSB5        
11 ports found
$ python -m serial.tools.list_ports -v
/dev/ttyACM0        
    desc: ttyACM0
    hwid: USB VID:PID=04e2:1411 SNR=A4635053631
/dev/ttyS0          
    desc: ttyS0
    hwid: n/a
/dev/ttyS1          
    desc: ttyS1
    hwid: n/a
/dev/ttyS2          
    desc: ttyS2
    hwid: n/a
/dev/ttyS3          
    desc: ttyS3
    hwid: n/a
/dev/ttyUSB0        
    desc: FTDI USB HS SERIAL CONVERTER FTF1FZNV
    hwid: USB VID:PID=0403:6001 SNR=FTF1FZNV
/dev/ttyUSB1        
    desc: FTDI USB HS SERIAL CONVERTER FTF1FZO2
    hwid: USB VID:PID=0403:6001 SNR=FTF1FZO2
/dev/ttyUSB2        
    desc: FTDI USB HS SERIAL CONVERTER FTF1FZOA

0
Ваша оценка: Ничего
FrBrGeorge аватар

Копипаст многих строк в одну

Многострочный текст можно добавить в командную строку, поставив вместо него `cat`.

0
Ваша оценка: Ничего
FrBrGeorge аватар

Снова про перекодирование MP3-тегов

Утилита mid3v2 преобразует старые ID3v1-теги (ака MP3-теги) в новые ID3v2, а утилита mid3iconv поможет сменить их кодировку. Обе входят в пакет mutagen.

0
Ваша оценка: Ничего
ramok аватар

Быстрое создание lxc контейнера в libvirt с root в отдельной директории

Мой темплейт для создания очередной vm под lxc в libvirt.
Обычно меняется только MAC. Его прописываю в dhcpd перед этим.

0
Ваша оценка: Ничего
FrBrGeorge аватар

Обратный hexdump -C

Утилита xxd не только выполняет шестнадцатеричный дамп, но и может сделать из дампа снова бинарник (с помощью xxd -r). Привычный формат hexdump -C для обратного преобразования надо слегка поправить.

0
Ваша оценка: Ничего
ramok аватар

Особенности не жадных (non-greedy) регеспов в tcl/expect

В tcl/expect проблемы между переключениями между жадными и не жадными регеспами.
Например, попробуем распарсить первую строку, из двух заданных:

$ printf '123 first string\nsecond string\n' |
   expect -c 'log_user 0; expect -re {(\d+) (.+?)\n} {send_user "$expect_out(1,string) ~~~ $expect_out(2,string)\n"}'
123 ~~~ first string
second string

Как видно вторая группа (.+?) работает как жадная, хотя и указан ?.

Почему?

0
Ваша оценка: Ничего

ssh авторизация по ключам и проброс настроек переменных окружения на другие хосты

Собственно, возникла проблема:
Есть n+1 серверов, между которыми надо ходить друг на друга.
При запуске в screen ssh на другие сервера почему-то надо и, как минимум вводить пароль
Почему - проблема кроется в отсоединении screen сессии и "reattach" сессии screen после переподключения.

Дано:
Имеем пару открытый + закрытый ключ.

На первой машине, с которой ходим:

0a) Windows - запускаем Pageant такой командой из bat/cmd скрипта:
# запустить pageant, чтобы после запуска программы окно cmd само закрылось

 
c:\ start полный\путь\к\pageant.exe путь\к\приватному\ключу.ppk

0b) Linux Дописать в Ваш ~/.bashrc|.zshrc нечто вроде

if [ -f ~/.agent ]; then
    . ~/.agent
    if ps -p $SSH_AGENT_PID > /dev/null && [ -S $SSH_AUTH_SOCK ]; then
        echo "ssh agent ok"
    else
        unset SSH_AUTH_SOCK SSH_AGENT_PID
        eval $(ssh-agent -s)
        echo -e "SSH_AUTH_SOCK=$SSH_AUTH_SOCK\nSSH_AGENT_PID=$SSH_AGENT_PID" > ~/.agent
0
Ваша оценка: Ничего
romy4 аватар

Skype delete selected messages

To delete selected Skype messages from the skype chat history follew few next steps:

0. Close Skype before processing these manipulations.

1. Open Skype db file from ~/.Skype//main.db within your favourite SQL manager or using sqlite3

run next sqls:

Check messages:

SELECT * FROM Messages WHERE chatname like '%:username:%';

This SQL shows all your conversations with selected :username:

Or

SELECT * FROM Messages WHERE author like '%:username:%';

to select messages from the subscriber.

Just call

DELETE FROM Messages WHERE chatname like '%:username:%';

to clear history with the subscriber

SELECT * FROM Messages WHERE body_xml like '%:message:%';

To find specific message.

Use `timestamp` field to range the messages on the specific date.

PS.

$ sqlite3 ~/.Skype/<accname>/main.db "DELETE FROM Messages WHERE chatname like '%username%';"

0
Ваша оценка: Ничего
ramok аватар

Случайная fork бомба

Делал простенький скрипт для преобразования ссылок с ютуба к нормальному виду. Команды замены взял из своих настроек urxvt в ~/.Xresources (в нём есть встроенный perl интерпретатор), сделав простенькую обвязку на perl

#/usr/bin/perl -CS 
 
$_ = $ARGV[0];
 
goto END if s,^(https?://(?:www\.)?youtube\.com/)[^ \n]*v[=\\/]([A-Za-z0-9_-]{11}).+?(t=\d+)[^ \n]*,$1watch?v=$2#$3$4,;
goto END if s,^(https?://(?:www\.)?youtube\.com/)[^ \n]*v[=\\/]([A-Za-z0-9_-]{11}).*,$1watch?v=$2,;
goto END if s,^https?://(?:www\.)?(?:youtu\.be/)([A-Za-z0-9_-]{11})$,http://www.youtube.com/watch?v=$1,;
goto END if s,^(https?://(?:www\.)?youtube\.com/)embed/([A-Za-z0-9_-]{11})[^ \n]*,$1watch?v=$2,;
 
exit;
 
END:
    print;

Внезапно всё начало тормозить. htop показал что скрипт воспроизводит себя с бешеной скоростью. Предлагаю сначала самостоятельно догадаться в чем дело :)

P.S.
Будьте осторожны с запуском. Предохраняйтесь :)

UPDATE:

0
Ваша оценка: Ничего
ramok аватар

Делаем mirror на lvm

Дано: два одинаковых hdd (sdb и sdc), нужно зазеркалить их.

Решение:
1. Создаём primary раздел на обоих hdd
2. Добавляем в уже существующий lvm с именем dgmil,
зеркалим и форматируем

$ sudo pvcreate /dev/sd[bc]1
$ sudo vgextend dgmil /dev/sd[bc]1
$ sudo lvcreate -m 1 -l 100%VG -n dump dgmil
# проверяем что всё на месте
$ sudo lvs -a -o +devices
$ sudo mkfs.ext4 /dev/dgmil/dump
0
Ваша оценка: Ничего
ramok аватар

Skype и alsa

В skype убрали поддержку alsa в угоду pulseaudio.
Мне не хотелось ломать полностью устраивающий меня сепат alsa для двух наушников с микрофоном.

Задача: отучить pulseaudio блокировать alsa.

Решение:

$ sudo mkdir /usr/share/alsa/alsa.conf.pulse/
$ sudo dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/pulse.conf --rename  /usr/share/alsa/alsa.conf.d/pulse.conf
$ sudo dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/99-pulseaudio-default.conf.example  --rename  /usr/share/alsa/alsa.conf.d/99-pulseaudio-default.conf.example
$ sudo dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/50-pulseaudio.conf --rename  /usr/share/alsa/alsa.conf.d/50-pulseaudio.conf

# закоментировать в /etc/pulse/default.pa load-module module-udev-detect и load-module module-detect
# добавить

load-module module-alsa-sink device=multi
load-module module-alsa-source device=hw:3,0
0
Ваша оценка: Ничего