Немного про Instagram

Вчера случилось то о чём так долго говорили большевики… ну в смысле чего все так долго ждали. Вышел Instagram под Android. Я, если честно, тоже весьма ждал этого момента но не потому, что он мне так уж нужен, а просто было интересно узнать, что же это за фотосервис такой с 27 миллионами пользователей.

Поставил, зарегистрировался (maksim77) и понял один очень забавный момент. Если относится к Instagram как к приложению то оно весьма посредственно и откровенно проигрывает многим аналогам которые давно доступны в Play Market ( например Pixlr-o-matic, PicPlz), но вот если смотерть на него как на социальную сеть то тогда может быть он и становится интересным. Другой вопрос, что лично мне ещё одна социалка вокруг фоточек по большому счёту не нужна.

Отдельное удовольствие доставило чтение комментариев вот к этой записи. Они разделились на три категории. 1)Спасибо! Спасибо! Спасибо! (восторженные отклики от тех кто давно ждал) 2) Спасибо/WTF но у меня не работает (баг репорты). И третий самый доставляющий :) «Андроид пользователи идите нахрен!!! Вам тут не рады!». Третий вариант для меня немного диковат так как для любого пользователя социальной сети большее количество участников в ней должно только радовать. Выглядело это как будто люди жаловались на потерю своей «элитарности».

Теперь коротко плюсы минусы:

Плюсы:

  1. Фильтров немного но все, что есть хороши и так или иначе применимы. Это в отличие от того же  Pixlr-o-matic.
  2. Программа красиво сделана и просто хорошо смотрится.
  3. Количество шагов от запуска до выложенной уже обработанной фотки минимально. Всё очень просто и быстро.
  4. Если смотреть на популярное то можно действительно найти много хороших, красивых фотографий.

Минусы:

  1. Обработать фотку и не выложить её к себе в ленту нельзя! Иными словами все фильтры обязательно должны использоваться публично :)
  2. Интерфейс программы красив но местами странен. По сути полностью копирует iOS версию. Согласитесь диковато, что в приложении под Android нигде(!) не используется кнопка меню. Функция «назад» продублирована как в левом верхнем углу (iOS-style) так и аппаратно (Android-style). Многие элементы навигации спрятаны в тексте и никак не выделены или подсвечены. Попробуйте скажем развернуть список комментариев.
  3. Настроек самый минимум. И нет даже казалось бы очевидных. Например если вы используете встроенный в программу интерфейс камеры (вместо системного) то отключить звук затвора невозможно.
  4. Квадратность изображения. Instagram жёстко регламентирует соотношение сторон снимка. У них может и есть какие-то мотивы для такого решения но ИМХО это глупо.
  5. Невозможность работать штатными средствами с контентом сети иначе как из программы клиента. Вы даже список своих фотографий на сайте просмотреть не сможете :)

Подводя итог. Буду ли пользоваться? Не знаю. Постоянно точно нет, но поиграться время от времени может быть забавно.

Надо кому? :-)

Назрела пара вопросов к читающим меня (а такие собственно есть?).
Это был первый :-) .

Я сейчас достаточно плтно разбираюсь с системой мониторинга zabbix. Нужна серия статей/заметок? Она кому-либо интересна? :-)

Мониторинг RAID в Zabbix

Давайте я просто оставлю это тут. Решение довольно тривиальное но почему-то в интернетах попадаются куда как более сложные выверты со скриптами и прочими UserParameter.

Задача стоит простая необходимо получить уведомление о нарушение целостности RAID’а (давайте для простоты будем считать, что он у нас RAID-1).

Как я уже писал выше решение достаточно тривиально. Всё, что нам нужно так это item вот такого вида:

vfs.file.regexp[/proc/mdstat,"(\[__\])|(\[U_\])|(\[_U\])»]

или то же самое но через vfs.file.regmatch.

Дальше всё это обвешивается триггерами и необходимыми действиями. В первом случае значение элемента «EOF» сообщает нам, что всё нормально и RAID цел, а любое иное бьёт тревогу. Ну, а во втором варианте «0» — всё нормально, а «1» — RAID распался.

Многопоточная обработка файлов в Bash

Не знал писать или нет но всё таки решил поделиться. Потребовалось тут по работе запускать параллельную обработку файлов с определяемым количеством потоков. Сначала в интернете нашёл статью Dr.AKULAvich где рассказывалось про ppss (http://drakulavich.blogspot.com/2009/01/ppss.html) но по целому ряду причин эта программа нам не подошла и тогда я просто сам написал простой и во многом примитивный скрипт. Но главное что он работает! Вот делюсь:
Несколько пояснений: никакой универсальностью здесь и не пахнет. Под каждую задачу его надо править ручками. Данный вариант обработает все файлы с расширением dmp в папке /home/user/dir. Обработка сводится к их шифрованию с жатием и последующем удаление исходных файлов. Переменная TH определяет количество потоков.

#!/bin/bash
enc () {
for FILES in `cat $1`
do
gpg -z 9 -e -r my@email.com $FILES && shred -z -u -n 1 -s 1M $FILES
done
}
TH=8
cd /home/user/dir
for i in *.dmp
do
echo $i >> list.txt
done
N=`cat list.txt | wc -l`
let "L = N / TH"
let "RES = N % TH"
if [ $RES != 0 ]; then
     let "L +=1"
else
     echo ""
fi
split -l $L -d list.txt

for NUM in x*
do
enc $NUM &
done

rm list.txt
rm -f x*

Пакетная конвертация видео под Android в консоли.

Думаю, что многие знаю прекрасную программу для конвертации видео од названием HandBrake. Простая, удобная и главное, что без всяких настроек и тюнинга конвертировать видео-файлы в более комфортный для просмотра на Android устройствах. В ней, конечно, есть неточности например дефолтный пресет для Android’а почему то называет “iPhone & iPod Touch” ну да оставим это на совести автора :-D. Главное, что работает.

Вряд ли сама програма потребует каких либо инструкций. Но что делать если захотелось странного? Например не использовать GUI. На самом деле, применений этой странности может быть много. Скажем у вас есть жирный такой сервер который можно и загрузить на пару минут конвертацией свежей серией Хауса в свободное от расчёта траекторий баллистических ракет работы время. Или наоборот у вас старенькая и слабая машина и Gnome с прочими иксами забирают достаточно много ресурсов. Так всё это сделать достаточно легко! В общем виде это будет выглядеть так:

maksim@server:~$ HandBrakeCLI -i input.avi -o output.mp4 --preset "iPhone & iPod Touch"

Параметр «—preset» можно сократить до «-Z».

maksim@server:~$ HandBrakeCLI -i input.avi -o output.mp4 -Z "iPhone & iPod Touch"

Всё хорошо в этих командах кроме одного. А как быть если хочется обработать целую папку? Проблема в том, что в данный момент в программе HandBrakeCLI не существует никакой групповой обработки. на официальном форуме пока, что предлагают использовать скрипты, что мы и сделаем:

#!/bin/bash
if [ -d "$1/mobile" ]
        then
                echo "Folder exists"
        else
                mkdir "$1/mobile"
                echo "DIR CREATE"
fi
cd "$1"
for FILENAME in *.avi
do
        /usr/bin/HandBrakeCLI -i "$1/$FILENAME" -o "$1/mobile/${FILENAME%.*}.mp4" --preset="iPhone & iPod Touch"
done

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

Создание RAID-массива поверх multipath устройств (RHEL5)

Потребовалось тут по работе настроить RAID-1 на основе двух multipath устройств. Задача не совсем тривиальная и памятуя о том сколько времени я провёл в поиске для нахождения проблемы решил вот поделиться. Говорю сразу если какие-то слова из первого предложения вам не понятны дальше лучше не читать :). Толку будет мало. Статья пишется в расчёте на таких же как я сам страдальцев. Вдруг вам повезёт на неё наткнуться :).

Итак у нас есть четыре диска вида /dev/sd[abcd] которые представляют из себя четыре пути до двух реальных устройств. Сервис multipathd соберёт их в два виртуальных устройства (настройка multipathd неплохо документирована в сети и на ней я останавливаться не буду):

[root@server ~]# /sbin/multipath -ll
mpath5 (3600508b400307eb80000b001036f0000) dm-1 HP,HSV200
[size=4.0G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=50][active]
\_ 6:0:3:2 sdm 8:192 [active][ready]
\_ round-robin 0 [prio=10][enabled]
\_ 6:0:0:2 sdd 8:48 [active][ready]
mpath4 (3600508b400107eb80000a00003740000) dm-0 HP,HSV200
[size=32G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=50][active]
\_ 6:0:0:1 sdc 8:32 [active][ready]
\_ round-robin 0 [prio=10][enabled]
\_ 6:0:3:1 sdl 8:176 [active][ready]

Для начала нам надо на дисках /dev/sd[abcd] создать разделы. Понятно, что можно создать лишь на sda и sdc. Вот тут есть небольшая тонкость несмотря на то что разделы будут использоваться фактически для RAID-1 ставить им тип 0xfd нельзя! Дело в том, что как только системе будут презентованы эти диск md соберёт из них RAID, и вы получите устройство из /dev/sda1 и /dev/sdc1. А нам то нужны multipath элементы. Можно вообще ничего не указывать, можете указать 0×83 в качестве типа. В любом случае это не принципиально. Лишь бы не 0xfd.

Поехали дальше. После того как разделы созданы необходимо для каждого dm устройства выполнить команду:

kpartx -a /dev/dm-n

она создаст устройства вида /dev/dm-n+1, которые и будут являться нашими только что созданными разделами. Их уже можно объединять в RAID. Если по этому процессу есть какие либо вопросы то вот тут есть неплохая статья. Обязательно создаём mdadm.conf. Про него можно так же прочесть по прошлой ссылке.

А вот дальше есть очень и очень интересный момент! Дело в том, что в RHEL 5 (шестой версии под рукой нет и проверить не смогу) есть досадный баг. В файле /etc/rc.sysinit процедура инициализации RAID-разделов с помощью mdadm.conf вызывается до создания всех /dev/mapper/ устройств. А наши /dev/dm-* на самом деле лишь их отражение. В итоге RAID собран не будет. Есть два решения этой проблемы:

  1. Создать в /etc/init.d/ скрипт по сути из одной строчки
    /sbin/mdadm --assemble /dev/md0

    и обеспечить ему загрузку на нужном runlevel. Он может быть любым по порядку загрузки. Главное чтобы после sysinit’а.

  2. Переместить в файле /etc/rc.sysinit блок
    # RAID setup
    update_boot_stage RCraid
    [ -x /sbin/nash ] && echo "raidautorun /dev/md0" | nash --quiet
    if [ -f /etc/mdadm.conf ]; then
        /sbin/mdadm -A -s
    fi

    ниже блока инициализации # Device mapper & related initialization. Он достаточно длинный и поэтому приводить я его тут не буду.

Первый бонус от Foursquare

Если честно никогда не мог ответить даже самому себе, а зачем я использую Foursquare. В России бонусов мэрам мягко скажем немного, там где они есть я сам обычно не появляюсь. В общем, это было ближе к банальной игре в царя горы и какой-то уже привычки что-ли. Но вот сегодня случилось странное. Внезапно получил бонус мэру. Дело было так :)…

В банке ВТБ 24 у меня достаточно давно заведено две карточки ну и достаточно активно пользуюсь их Телебанком. За всё время использования каких либо нареканий к банку придумать не могу но вот недавно надобность в одной из карточек отпала. Надо её закрыть. А так как вспомнил я об этом аккурат посреди праздников то и полез к ним на сайт узнать как же ближайшее отделение работает. Быстро узнал, что нужно но при этом зацепился взглядом за новость о вручении мэрам их дополнительных офисов призов/сувениров. А в том офисе, что буквально под окнами дома я мэр уже больше чем полгода. Ну и особо ни на что не надеясь я сообщил об этом в банк.

Сегодня же утром мне упало письмо с вопросом куда высылать курьера. Как итог брэндированная флэшка на 1 Гб и блокнот :)

OpenOffice Document Reader

Никто не сомневается, наверное, что через каких нибудь жалких лет пять или десять мы почти целиком переползём в веб. Оставляя на десктопах только что-то по настоящему тяжёлое и ресурсоёмкое. Но до этого дня ещё далеко и пока что, как не крути, мы живём в мире файлов и документов, а не share-ссылок. И форматов хранения этих документов великое множество. Достаточно популярным является Open Office. Кто-то использует его в силу привычки, кто-то просто не хочет воровать, у кого-то это корпоративный стандарт. У меня, например почти вся написанная мной документация лежит как в вебе (само собой) так и на рабочем компьютере. Как раз таки в том самом odt формате.

К чему я это всё? Просто, мне лично хочется иметь возможность хотя бы просматривать все необходимые мне форматы на телефоне. И вот сегодня утром я наткунлся на OpenOffice Documet Reader. Насколько я знаю, первую программу под Andoird, что может открывать на просмотр odt-документы. Насколько я понял функцию редактирования автор добавлять не собирается но я лично рад и возможности читать нужные мне файлы пусть и без правки в дороге.

Белоруссия

Вот уж чего точно никогда не делал так это не писал о политике. Но примерно час наблюдения за твиттером по хэш-тэгу #electby меня окончательно поставил в тупик. Ну масса шуток и приколов на тему Лукашенко, площади этой и ещё чёрт знает чего это понятно. Крики с просьбами поддержать митингующих как бы то же вопросов не вызывают. Но вот сожаление где то в час ночи на тему “ах же ж блин у нас ничего не получилось” меня озадачило. Очень хочется спросить у белорусов, а чего вы хотели добиться на этой площади? Если сбросить “диктатора” то митинг штука глупая изначально. Ну давайте просто вспомним хотя бы одного диктатора из истории кто в ответ на вопли толпы посыпал голову пеплом, вышел к народу и покаялся. Таких не бывает. Вывод? Если он диктатор то вам нужен не митинг, а бунт или революция. Тут очень хорошо процитировать один твитт из того потока, что заливал весь интернет на протяжение нескольких часов.

почему нынче необязательно брать с собой оружие, собираясь на бунт? ответьте #electby !!!

Ну правда как то странно. Или была надежда, что ОМОН и армия в раз расчувствуются и скандируя “ELECTBY!” перейдут на сторону митингующих? Так это бред же.

Ну а если он президент, а не диктатор то тем более чего же вы хотели? На площади собралась огромная толпа, что-то там выкрикивает, лезет в здания гос.учреждений и вообще ведёт себя опасно (пусть даже это и была провокация, хотя ИМХО она и не нужен. При таком скопление народа кто нибудь да полезет на амбразуры на парах алкоголя) . Конечно её надо разогнать. И вообще — хотели высказать? Высказались? Всем спасибо, все свободны, а завтра ещё и на работу вставать так, что срочно домой и спать.

Я не за “Батьку”, я вообще гражданин другой страны и не мне судить этих людей, я просто пытаюсь понять, а чего же они пытались добиться? И не понимаю.

З.Ы. Отдельного упоминания стоит некая “твиттер-революция” которая по мнение многих митингующих внезапно(!) случилась на площади в Минске. Ребята вы о чём? По разным данным там собралось от трёх до ста(!!) тысяч человек. Из них про твиттер то слышало дай бог процентов пять. Единственное, что показали эти события (равно как и Манежка) так это то что твиттер неплохой, быть может даже единственный реальный источник информации при подобных событиях.

 

Сохранение $PATH в окружении sudo -s

Изо дня в день я сталкивался на работе с одной и той же проблемой. Если вы зашли через ssh на некий сервера под своим пользователем, а потом дали команду sudo -s (то, что это единственно нормальный способ логинится рутом на удаленную машину пояснять не надо? :) то скорее всего вы оказались в консоли без вашей привычной переменной PATH. И следовательно даже простой ifconfig превращается в /sbin/ifconfig, ну или в начале каждой сессии набирать:

export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Меня лично это в конец достало и я, немного погуглив, нашёл решение. Да, оно очень простое и лежит на поверхности но как показывает практика именно простые вещи чаще всего дольше всех остаются загадками.

Итак всё, что нам нужно это слегка настроить sudo. Набираем visudo и ищем там строчку подобную этой:

Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
                        LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
                        _XKB_CHARSET XAUTHORITY"

Собственно говоря это список тех переменных которые проходят через sudo. Как можно сразу заметить PATH среди них нет. Добавляем её и… а собственно всё :). Наслаждаемся консолью с привычным окружением.

З.Ы. Ещё раз подчёркиваю, я понимаю, что это всё очень просто. Если вы знали про это раньше или просто не сталкивались с подобной проблемой, то я могу только порадоваться за вас. Заметка посвящается страдальцам типа меня :).