07 декабря 2017

Монтирование файловой системы qemu в Linux

Взято отсюда

1) Выключаем выртуалку
2) загружаем драйвер
sudo modprobe nbd max_part=16
3) создаем блочное устройство

sudo qemu-nbd -c /dev/nbd0 <path to your VBox hdimage.vdi>
4)  Монтируем раздел
sudo mount /dev/nbd0p1 /mnt  

После всех операций
sudo qemu-nbd -d /dev/nbd0

04 декабря 2015

Сравнение производительности языков программирования

Очень хороший труд, по которому можно приблизительно сопоставить производительность языков программирования при алгоритмических операциях: http://benchmarksgame.alioth.debian.org/

15 сентября 2015

Дебаг PHP скрипта

При необходимости проследить обратный след (backtrace) к какому-либо системному вызову (например, gettimeofday) в PHP скрипте, необходимо воспользоваться рекомендациями, описанными в статье http://habrahabr.ru/post/129982/
Техника основана на использовании gdb:
1) запускаем PHP скрипт, делая в нем вывод PID getmypid() + паузу "Press any key" с помощью fgets(STDIN)
2) параллельно запускаем "gdb php"
3) в консоли gdb вводим "attach {PID}"
4) регистрируем точку остановки с помощью команды: "rbreak gettimeofday"
5) даем команду продолжить выполнение скрипта: "continue"
6) жмем Enter в терминале скрипта
7) далее по статье (bt + f N + print)

17 марта 2013

Закончил онлайн-курс "Image and video processing: From Mars to Hollywood with a stop at the hospital"

Последние 9 недель проходил курс "Image and video processing: From Mars to Hollywood with a stop at the hospital" на coursera.org.

За эти несколько недель мы, студенты, узнали про разнообразные алгоритмы работы с изображениями: что собой представляет компрессия JPEG, что есть гистограмма и какие существуют методы для улучшения контрастности изображений, что такое шумы и как от них избавляться, что такое сегментирование и какие существуют методы для определения границ объектов, прошлись по методам умной "закраски" части изображения, ознакомились с современными перспективными методами по реставрации изображений. Это вкратце.

Осталось только поблагодарить Guillermo Sapiro и его команду за интереснейший материал и за предоставленную возможность расширить кругозор и вспомнить некоторые разделы высшей математики :)

Как пропустить позицию в бинарном логе при репликации в MySQL

Для того, чтобы пропустить текущую позицию обработки релей-лога на слейве в MySQL, необходимо остановить слейв (STOP SLAVE), задать, сколько позиций (команд) необходимо пропустить (например, одну: SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;) и запустить слейв заново (START SLAVE).

После этого репликация продолжится, но с новой (следующей) позиции. Полезно, когда слейв упирается в ошибку при попытке выполнить следующую команду из релей-лога и репликация останавливается.

06 января 2013

Ошибка при запуске mergemaster во время обновления FreeBSD

В процессе обновления FreeBSD с версии 7.0 до версии 7.4 методом компиляции ядра и "мира" столкнулся с возникновением ошибки на одном из последних шагов - запуске утилиты mergemaster без параметров.

# mergemaster
*** Creating the temporary root environment in /var/tmp/temproot
 *** /var/tmp/temproot ready for use
 *** Creating and populating directory structure in /var/tmp/temproot

+ ln -s ../var/named/etc/namedb /var/tmp/temproot/etc/namedb
install: wrong number or types of arguments
usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 file2
       install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 ... fileN directory
       install -d [-v] [-g group] [-m mode] [-o owner] directory ...

  *** FATAL ERROR: Cannot 'cd' to /usr/src and install files to
      the temproot environment

Смотрим, что такое /var/tmp/temproot/etc/namedb:
# ls -l  /var/tmp/temproot/etc/namedb
lrwxr-xr-x  1 root  wheel  - 23  6 янв 11:53 /var/tmp/temproot/etc/namedb@ -> ../var/named/etc/namedb

Стало быть - символическая ссылка.

Но перейти по ней не получается, несмотря на то, что исходная директория существует:
# cd /var/tmp/temproot/etc/namedb
 cd: permission denied: /var/tmp/temproot/etc/namedb

Собственно, из-за этого утилите instal и не получается скопировать файлы в эту директорию. 
Все потому, что на сервере директория /var/tmp примонтирована без права перехода по символическим ссылкам:

# mount  | grep tmp
/dev/ar0s1d on /var/tmp (ufs, local, noexec, nosuid, nosymfollow)

Данный флаг был выставлен для того, чтобы предотвратить часть хакерских атак, возможных при эксплуатации дыр в стороннем ПО при загрузке файлов на сервер (которые первоначально попадают как раз в /var/tmp).

Выхода два:

  1. Убрать в файле /etc/fstab флаг nosymfollow и примонтировать заново /var/tmp
  2. Указывать утилите mergemaster другой раздел для развертывания каталога temproot с помощью параметра -t