Google Chrome and Firefox Flash audio/sound on Linux x86_64 bug workaround
nepal
[info]k001
I have recently switched from Mozilla Firefox 5 to Google Chrome 14 (beta). Same Flash bug as in Firefox -- Flash audio is somewhat crippled (see the link for more details).

OK, enough of that, I am sick and tired of that crap. But let's be productive! I went ahead and automated the process of working around that stupid bug.

Now all I need to do is go to http://kir.sacred.ru/flash-fix/ and follow the instructions. And this is one-time-only, now I don't need to repeat it after updating Firefox (or Google Chrome).

Hint: you can do that, too, if you are affected.
  • 4
  • Leave a comment
  • Add to Memories

OpenVZ: всё, о чём вы хотите знать
nepal
[info]k001
Я работаю в компании Parallels менеджером проекта OpenVZ. В комментариях к этому посту я отвечаю на любые вопросы про OpenVZ, кроме флеймообразующих. Спрашивать можно по-русски или по-английски. Если не смогу ответить сам (я не kernel hacker) -- попрошу коллег.

Для начала несколько ссылок (я не требую всё это прочитать перед тем, как задавать вопрос, но могу и послать на RTFM). Вся информация на английском.

http://wiki.openvz.org/Introduction_to_virtualization
http://wiki.openvz.org/WP/What_are_containers
http://wiki.openvz.org/FAQ
http://wiki.openvz.org/Performance
http://wiki.openvz.org/UBC
http://wiki.openvz.org/Man
http://download.openvz.org/doc/OpenVZ-Users-Guide.pdf

Кроме того, вопросы можно задавать на http://forum.openvz.org/ и http://wiki.openvz.org/Mailing_list.

Ни в коем случае не пишите сюда о найденных ошибках. Баги следует заводить сразу в http://bugzilla.openvz.org/
Tags: ,

Эффективная живая миграция с ploop write tracker
openvz
[info]k001
(Обычно я пишу по-английски, а потом, если есть время и желание, на русский перевожу. Тут решил в качестве смелого эксперимента сделать наоборот. В тексте встречаются английские слова, извините, как смог. Этот текст должен скоро появиться в [info]ru_openvz)

Я тут недавно отдыхал на солнечном побережье гостеприимной Турции, и по ночам, вместо того, чтобы дегустировать спиртные напитки или отдыхать после утомительного дня на пляже, в холле отеля, где работал вайфай, доделывал (и доделал) миграцию контейнеров на пилупе. Для любознательных, это почти все коммиты в ploop вот отсюда и ещё верхние 14 коммитов в vzctl вот отсюда. Хочу рассказать про весь этот функционал.

Начну издалека, а именно с того, как вообще реализована миграция, то есть перенос контейнера с одного OpenVZ сервера на другой. Команда vzmigrate -- это скрипт на шелле, он обычно делает следующее (упрощённо):
1. Проверяет, что можно попасть на другой сервер по ssh без пароля, и что там нет контейнера с таким CTID, и что-то ещё в том же духе.
2. Делает rsync /vz/private/$CTID на другой сервер
3. Останавливает контейнер
4. Делает второй rsync /vz/private/$CTID на другой сервер
5. Запускает контейнер на другом сервере
6. Удаляет его локально.

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

Теперь, если нам нужна живая миграция (это опция --online для vzmigrate), то (опять слегка упрощённо) вместо стопа делается vzctl chkpnt, а вместо старта -- vzctl restore. Результат -- ваш контейнер переехал, а пользователи ничего не заметили (процессы не останавливаются, а всего лишь "замирают" на несколько секунд, TCP-соединения тоже переезжают, IP не меняется и т.п., в общем, немножко магии и никакого мошенничества).

Таким примерно образом всё это работало, и все были довольны. А потом появился ploop, и выяснилось, что миграция с ploop не работает. Нашлось даже несколько причин, почему (например, для копирования образов ploop нельзя использовать --sparse, потому что ploop не умеет работать с файлами, в которых есть "дырки"). Но главное, что в процессе разбора выяснилось, как правильно мигрировать ploop: не через rsync, а с помощью ploop copy.

ploop copy -- это механизм эффективного копирования образа ploop с использованием встроенного в ploop механизма слежения за записью (write tracker). Один процесс ploop copy вычитывает с диска блоки данных образа и пишет их в stdout (предваряя каждый блок маленьким заголовочком из метки, позиции блока на диске и его размером), то есть в "трубу", а второй процесс читает их из stdin и скидывает на диск. Добавляем между ними ssh $DEST, и вуаля.

Скажете, что почти то же самое и cat умеет делать. Разница в том, что перед тем, как начать передавать данные, ploop copy просит у ядра включить write tracker, и ядро начинает запоминать блоки данных, в которые пишут. После того, как все блоки переданы, ploop copy вежливо интересуется у ядра списком модифицированных блоков, и передаёт их снова, а ядро в это время составляет новый список. Процесс повторяется несколько раз, и список блоков становится всё меньше и меньше. Через какое-то количество итераций (или этот список становится пустым, или перестаёт уменьшаться, или просто мы решаем, что уже случилось слишком много итераций) ploop copy запускает некую внешнюю команду, которая должна вызвать прекращение всякой дисковой активности контейнера. Команда эта vzctl stop для миграции обычной, или vzctl chkpnt для "живой"; действительно, остановленный или замороженный контейнер на диск писать уже ничего не может. После этого мы ещё раз спрашиваем у ядра список модифицированных блоков и передаём их в трубу, потом ещё раз спрашиваем и убеждаемся, что список пуст (а иначе "прекращающая" команда не сработала и всё пропало), и посылаем в трубу признак конца передачи. Вот так устроен передающий процесс.

Принимающий процесс ploop copy устроен просто -- он вычитывает блоки из трубы и пишет их в заданное место файла. Желающие посмотреть на код и той, и другой стороны могут пройти вот сюда.

Так вот, в вышеприведённой схеме миграции ploop copy используется вместо второго rsync (пункты 3 и 4). Замечу, что это гораздо эффективнее, потому как rsync пытается понять, какие файлы изменились и в чём, а ploop copy просто спрашивает про это у ядра, причём поскольку процесс "спросили-скопировали" итеративный, контейнер останавливается или замораживается как можно позже и, даже если контейнер активно пишет на диск, период времени, когда он остановлен, минимален.

Я ради интереса сделал простой и ненаучный тест, запустив od -x /dev/urandom > file в контейнере и помигрировав его туда-сюда. Получил время ploop copy после запуска стоп-команды чуть больше секунды, а общее время, пока контейнер был заморожен -- чуть меньше трёх секунд. Примерно такие же цифры получается для simfs с rsync, но только если контейнер ничего не делает. А если такой же мигрировать, с "писателем" внутри, то время сразу увеличивается до 13-16 секунд. Не претендую на точность измерений, мерял как попало, OpenVZ стояла внутри параллельских VMок, на ноде что-то ещё делали...

И последнее. Всё это доступно сейчас только из гита (клонируйте, собирайте, пробуйте) и будет включено в релиз ploop-1.3 и vzctl-3.3.
  • 13
  • Leave a comment
  • Add to Memories

ctags bash completion for vim -t
nepal
[info]k001
This is what I was missing a lot and wanted to write myself. Fortunately someone already created it. Get it at http://vim.wikia.com/wiki/Using_bash_completion_with_ctags_and_Vim
Tags: , ,

Человек, который увидел ангела и его город Юрьевец.
nepal
[info]k001
А вот про Юрьевец. Я там всё детство провёл летнее, воспоминаний через край.

Originally posted by [info]olster28 at Человек, который увидел ангела и его город Юрьевец.

К 80-летию со дня рождения Андрея Арсеньевича Тарковского

Утренний удобный импортный автобус увозит нас с кинешемского автовокзала в сторону Юрьевца. Шестьдесят с небольшим километров автобус преодолевает не то, чтобы совсем долго - небыстро, но и заскучать не успеваешь. Заезжаем в разные поселки. Русские люди с характерным здешним говором. Вот весь синий парнишка, по наколкам ему бы уже лет пятьдесят должно быть, выходит на полпути, знакомиться не придётся. За окном равнина и редкие леса. Волга где-то рядом. Всю поездку она где-то слева, но не видать. Въезжаем в Юрьевец, спускаясь с крутой горы, на вершине которой мемориал ВОВ. После Юрьевца, почти стотысячная Кинешма кажется большим шумным городом. У Юрьевца, который немногим младше Москвы, по документам одиннадцать, а по ощущениям - несколько сотен.

Наша цель - местный музейно-культурный центр Андрея Тарковского. Не так важно, что в Юрьевце Андрей Тарковский жил у бабушки и дедушки в 1936 - 1939 и в 1941 - 1943 годах в эвакуации. Родился он и вовсе на противоположном берегу Волги, в Завражье, которое сейчас относится к Костромской области (в год рождения Тарковского - Юрьевецкий район Ивановской Промышленной области ). Если копнуть чуть дальше, все равно возвращаемся к Костромской области, ведь Ивановская образовалась сравнительно недавно. Но, повторюсь, особого значения это не имеет. Не менее родная Андрею Арсеньевичу Москва дань памяти Гению отдала пепелищем деревянного домика замоскворецкой улицы Щипок... Расположение такого музея на самом деле и не важно. Тарковский уроженец здешних мест, но по сути человек мира, Земли. Хотя юрьевецкая земля это абсолютно кадры из Зеркала. Именно здесь он собирался снимать свою знаменитую работу, но приехав, обнаружил, что его город детства уже не такой - половина затоплена, половина срыта... В результате задуманная часть была снята в Подмосковье.


Читать далее... )
  • Leave a comment
  • Add to Memories

Про упражнения на пресс
nepal
[info]k001
Не претендуя на звание тренера или там консультанта по велнессу, расскажу всё же про упражнения на пресс.

Как известно (мне известно, а известно ли вам, мне неизвестно, но я думаю, что тоже известно), каждая тренировка заканчивается упражнениями на пресс. Мышцы пресса — самые трудно поддающиеся тренировке. Я раньше думал, что подъем туловища или ног из положения лежа на спине — это и есть упражнения на пресс. Фигушки!
Read more... )
Tags:

no anon comments
nepal
[info]k001
Due to excessive amounts of spam (a few messages every day), anonymous comments are now disabled. Please register if you want to comment; sorry for the inconvenience.
Tags: ,

распродажа андроидов
nepal
[info]k001
Update: всё продал.Read more... )
Tags: ,

Про вредоносные программы в Маркете
nepal
[info]k001
Обнаружил тут в Андроид Маркете кучу малвари! Далее копипаста из моего поста в G+.

Мой сын учится в пятом классе, и он решил немного похалявить, поставив себе из Маркета программы для определения НОД и НОК (наибольший общий делитель, наименьшее общее кратное). Да, это разные программки, одна из них называется DivisorX, автор Georg Kiefer. У этого автора в маркете на данный момент 247 приложений, все примерно такие же (площадь трапеции, перемножение матриц, кидание костей и т.п. -- типичные одноразовые задачки для студентов или школьников).

Так вот. Во-первых, эти "калькуляторы" при установке запрашивают следующие разрешения:
Phone calls: read phone state and identity
Network communication: full internet access
Your personal information: read/write Browser's history and bookmarks
Your location: coarse (network-based)/fine (GPS) location

Спрашивается, нахрена козе баян, а калькулятору доступ в интернет, информация о вашем точном местоположении и возможность не только читать, но и писать закладки в вашем браузере? Понятно, что ничего хорошего от такого "калькулятора" ожидать не приходится. Однако, это ещё не всё.

Установленное приложение висит в памяти (в терминах Андроида -- "сервис") и время от времени выводит в строку статуса всякие уведомления. Например, о том, что вышло обновление для системы, или что вот тут можно скачать бесплатное кино. При нажатии на уведомлении открывается браузер, откуда или что-то сразу скачивается (ещё какое-то андроид-приложение), или предлагается куда-то нажать и т.п.
Read more... )
Tags: ,

Severtelecom logo story / История логотипа Севертелекома
nepal
[info]k001
(Перепост из Google+, оригинальный пост тут)

At 1997, when I was just going to graduate from my university, our dean asked me if I would like to work for him to create one of the first ISPs in our city of Ukhta. I said yes, that would be cool, because at that time there were no to little Internet presence in the city (well, I myself had no Internet access in neither office nor home).

Long story short, I was working as a main tech guy, setting up Ciscos and the web/mail/whatever server. I also created a company web site, just for fun, and then another, better one. Company name (Severtelecom, "sever" in Russian is "north", half of the local companies were named Sever-something) was chosen before, but I was free to create a logo and a slogan.
Read more... )
В 1997 году, когда я вот-вот собирался защитить диплом и попрощаться с родным университетом, наш зав. кафедрой спросил, не хочу ли я поработать на него, помочь создать одного из первых интернет-провайдеров в нашем городе Ухта. Я ответил, что да, было бы круто, потому что в то время в нашем городе интернета практически не было (у меня лично доступа в Интернет не было ни дома, ни на работе).

Если очень кратко, то я работал там типа техническим директором, Циски и веб/мейл/всякие сервера настраивал. Заодно нарисовал и веб-сайт компании, а потом ещё один, получше. Название конторы ("Севертелеком", в Ухте половина фирм называлась "Север-что-то-там") уже было придумано до меня, а я зато смог придумать логотип и слоган (лозунг? девиз?).
Read more... )
Here's a link to webarchive version of sever.ru web site:
А вот ссылка на сайт sever.ru в веб архиве:
http://web.archive.org/web/20030623033456/http://www.sever.ru/

Ну а вот сам логотип:
  • 2
  • Leave a comment
  • Add to Memories