Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-05-31

Jedi warrior

Jedi warrior — это так себя называли бойцы «Новой Армии Земли» в фильме «The Men Who Stare at Goats» (2009). Только что отсмотрел. Смешной фильм, но я не понял, в чем смысл, идея.

Зато я понял, что мне запомнится сильнее всего — эпизод, где вся военная база переваривает дозу LSD и плохиш пытается остановить хороших, спасающих пленных людей и коз. Плохиш наставляет на беглецов пистолет, ему говорят - «Ларри, убери пистолет», после чего Ларри пихает ствол себе в рот, типа стреляться собрался. И вдруг лицо его светлеет и он со словами «боже, как я проголодался» забывает про пистолет и бежит в столовку. Смешно.

А еще я сегодня доделал одну фишку, где к месту пришлась NoSQL СУБД Redis в комплекте с HTTP фронтэндом Webdis. Фишка представляет собой сервер сейвов, если в двух словах. А если подробнее, то есть некий вьювер для веб-карт, некий код внутре вьювера позволяет записать текущую конфигурацию показываемой картинки (набор слоев, зум, координаты центра, пометки) в виде текста. Так я этот текст пихаю HTTP запросом в СУБД, используя в качестве ключа дайджест этого текста. Ключ добавляется в URL к карте — получается букмарка. При открытии такой букмарки код внутре вьювера берет ключ из урла, если он есть, конечно, и по ключу берет и базы текст конфига, после чего тривиально восстанавливает конфиг карты. Пользователь видит ту же картинку, что и чел сохранивший конфиг. Внешне очень похоже на «мои карты» у Яндекса вкупе с сокращателем урлов, когда можно кому угодно отправить короткий урл на кастомную карту.

Что порадовало, так это легкость использования Redis. Поставил из пакетов, подправил конфиг, перезапустил — сервер на ходу. С Webdis не намного сложнее. На все про все — минут 15, причем большая часть времени ушла на чтение комментариев в конфиге Редис и уговоры Git работать через HTTP-прокси.

2012-05-29

Чоза

Вот что за день такой сегодня?

На работу шел омываемый дождем, хотя планировал приятный променад.

На выходе из подземного перехода мой зонтик улетел в лужу, грязную. Прикольно — зонтик автомат, кнопку нажимаешь, он раскрывается. Пружина сильная, из руки вырвался и прямо в лужу. Хорошо, не задело никого :)

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

Другой час потратил на перелицовку заготовки кода. Потом легким движением руки переместил файлы в папку, которая автоматически чистится. И она таки почистилась. Прощай час труда.

Как бы вся неделя такой не оказалась.

2012-05-28

OK Corral

Сегодня отсмотрел еще одну вариацию на тему перестрелки в OK Corral. Вариация называется

Скушновато и черно-бело, зато с Генри Фонда. Старый добрый вестерн. Ничего легендарного фильма не показала. Правильного пацана огорчили, пацан разобрался как следует и наказал кого надо. Все убиты, остальные ранены. Все это действие происходит в паузах между разговорами, прогулками по деревянным тротуарам и посиделками в салуне. Все высокоморально.

Как-то так.

2012-05-27

Gnome 3 shell default apps

Намедни разобрался с очередной глюкофишкой в Gnome 3 shell. Называется System Settings — System Info — Default Applications — Web.

У меня там прописался Chrome browser, а я хочу Firefox. Но в списке Firefox не предлагают, предлагают Iceweasel и Chrome. Как быть?

Оказывается, простого способа зацепить нужную аппликуху обработчиком для Web нет. Придется делать руками, по рецепту из dontsurfinthenude.blogspot.com/2012/04/firefox-current-release-on-debian

Делай раз. Скопировать файл
/home/v/.local/share/applications/iceweasel.desktop
в
/home/v/.local/share/applications/firefox.desktop
и поправить полученный firefox.desktop
У меня вышло так
[Desktop Entry]
Encoding=UTF-8
Name=firefox
Comment=Browse the World Wide Web
GenericName=Web Browser
X-GNOME-FullName=Mozilla Firefox Web Browser
Exec=/opt/firefox/firefox %U
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=firefox
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=Firefox-bin
StartupNotify=true

Делай два. Поправить файл
/home/v/.local/share/applications/mimeapps.list
[Added Associations]
audio/x-vorbis+ogg=smplayer.desktop;vlc.desktop;
inode/directory=nautilus.desktop;
video/x-msvideo=mkvmergeGUI.desktop;
video/x-ogm+ogg=smplayer.desktop;
x-scheme-handler/http=iceweasel.desktop;google-chrome.desktop;firefox.desktop;
x-scheme-handler/https=iceweasel.desktop;google-chrome.desktop;firefox.desktop;

[Default Applications]
audio/x-vorbis+ogg=vlc.desktop
video/x-ogm+ogg=smplayer.desktop
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
Я поправленное жЫрным выделил.

После чего в списке выбора умолчальных программ появится Firefox. Вот так как-то.
А упомянутый «Main Menu» он же Alakarte тут никак не помог.

2012-05-26

Сервер TCP/IP ... много серверов хороших

В статье приведены примеры (с исходными кодами) реализации TCP/IP сервера, с тестами производительности

Простой последовательный сервер
Классический параллельный сервер
Сервер с предварительным созданием копий процесса
Сервер активируемый суперсервером (xinetd)
Параллельный сервер, создающий потоки по запросам
Сервер с предварительным созданием потоков
Оптимальное управление потоками (пул)
Последовательный сервер с очередью обслуживания

Что само по себе поучительно и полезно. Лет пятнадцать назад за такую статью я бы душу продал. А автор, к тому, не поленился разьяснить читателю невозможность дать однозначную оценку — плохой сервер/хороший сервер:

было показано семь видов различных альтернативных технологий построения сервера TCP/IP, а с учётом обсуждаемых вариаций и высказанных соображений — и того больше. Приведены сравнительные характеристики по задержке времени получения ответа (время реакции). Но вот вопрос: могут ли эти или подобные им результаты служить критерием разграничения: вот эта техника сервера хороша, а вот та — плоха? Ни в коем случае!
Всё определяется теми задачами, которые решает сервер, и тем окружением, в котором он функционирует. Могут оказаться области, где наилучшим решением окажется простейший последовательный сервер. И тем более, что для описываемых вариантов мы никак не затрагивали рассмотрением такие стороны, как: трудоёмкость реализации, потребление ресурсов (в частности RAM), простота отладки, сопровождения и другие аспекты.


Очень полезная статья.

2012-05-25

25 за 500

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

Сижу, никого не трогаю, починяю примус работаю. Вдруг телефонный звонок с короткого номера. Посомневавшись, беру трубку.

(мне) — алло, добрый день, это компания Билайн Вас беспокоит, Вам удобно говорить?
(я) — удобно, чем обязан? (И далее по очереди)
  • Это вы Имярек Имярекович?
  • Ага, я.
  • Мы благодарим Вас за то, что вы выбрали нашу компанию, пользуетесь нашими услугами (у меня мобилка и интернет от них, есичё) и хотим предложить нечто эксклюзивное.
  • Вот как, и что?
  • Не хотите ли перейти на новый тариф доступа в Интернет, 25 мегабит за 500 рублей?
  • Хочу (я давно ждал, когда же они закроют разрыв между тарифами за 450 рублей и за 650 рублей, а пока сидел на том, что за 450), могу ли я это сделать через «кабинет»?
  • Нет, в кабинете этого тарифа нет, это специальное предложение лично для Вас. Вам надо только дать согласие и я его зафиксирую/подключу.
  • Странно как, ну ладно, да, я согласен, подключайте.
Взаимно рассыпались в прощальных любезностях и отключились. (Прошу прощения за буллиты, я хотел сделать тире, а текстпроцессор решил иначе. Исправлять влом, простите.)

Через полчаса переподключил коннект — есть контакт. Честные 25 мегабит. В «кабинете» написано что да, за 500 рублей имею симметричную скорость 25 Мб.

Вот у меня теперь два вопроса. Один — насколько это вообще законно, по телефонному звонку проводить манипуляции с финансами на счете у прова? Ведь они списали недостающую сумму заручившись только разговором по телефону, пусть даже и записанному (о чем никто меня не предупредил, что можно расценивать как юридическую гарантию отсутствия записи).

Второй — что это было? В смысле, кто и зачем придумал «награждать» отдельных клиентов эксклюзивными тарифами? Я проверил, в Москве такого тарифа как мне включили — нету. Избавляются от нижних тарифов? Типа плана по повышению доходности? Или PR акция, по повышению авторитета/престижа/веса бренда? Или социальное исследование какое?

Вот и мучаюсь целый день, ломаю моск.

Есть, правда, еще и третий вопрос — что мне с этой скоростью делать, если меня и 5 мегабит вполне устраивали? Сервак какой поднять, общедоступный? А нафига?

2012-05-24

gkrellm + lm-sensors

Вот интересно, что бы про меня мог рассказать толковый мозговед, если бы я ему сказал:

Док, обьясните мне, почему я ощущаю дискомфорт, если при работе на компе я не вижу показателей мониторинга системы — загрузки процессора, диска, сети и прочей чепухи? Почему мне обязательно надо иметь под рукой индикаторы состояния моего компа? Хотя бы загрузку процессора?

Возможно он сказал бы, что мне надо относиться к жизни легче и не стремиться все взять под контроль. А я бы ему ответил, док, вы когда на автомобиле едете, на приборы посматриваете?

Короче, на виндовых компах для мониторинга я пользуюсь тулзами от SysInternals (привет Марку Руссиновичу). Практически всегда в трее сидит Process Explorer. А на линуксе запускаю gkrellm (aptitude install gkrellm). И доволен.

А теперь я научился подключать к gkrellm датчики из lm-sensors и ваще тащусь. Оказалось, датчики эти подключить проще пареной свеклы (по инструкции):

aptitude install lm-sensors
sensors-detect

#детектор показал мне такие требуемые модули
#----cut here----
# Chip drivers
coretemp
it87
#----cut here----
#и я их загрузил

modprobe coretemp
modprobe it87
sensors -s
sensors
# вывел такую простыню (значит работает):
acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +106.0°C)
temp2:        +29.8°C  (crit = +106.0°C)

nouveau-pci-0700
Adapter: PCI adapter
temp1:        +41.0°C  (high = +100.0°C, crit = +110.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +44.0°C  (high = +85.0°C, crit = +105.0°C)
Core 0:         +40.0°C  (high = +85.0°C, crit = +105.0°C)
Core 1:         +44.0°C  (high = +85.0°C, crit = +105.0°C)
Core 2:         +43.0°C  (high = +85.0°C, crit = +105.0°C)
Core 3:         +40.0°C  (high = +85.0°C, crit = +105.0°C)

it8728-isa-0a30
Adapter: ISA adapter
in0:          +1.06 V  (min =  +0.00 V, max =  +3.06 V)
in1:          +2.02 V  (min =  +0.00 V, max =  +3.06 V)
in2:          +2.00 V  (min =  +0.00 V, max =  +3.06 V)
in3:          +2.03 V  (min =  +0.00 V, max =  +3.06 V)
in4:          +1.00 V  (min =  +0.00 V, max =  +3.06 V)
in5:          +0.88 V  (min =  +0.00 V, max =  +3.06 V)
in6:          +1.50 V  (min =  +0.00 V, max =  +3.06 V)
3VSB:         +3.38 V  (min =  +0.00 V, max =  +6.12 V)
Vbat:         +3.26 V
fan1:        1046 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:        1271 RPM  (min =    0 RPM)
fan4:        1243 RPM  (min =    0 RPM)
fan5:           0 RPM  (min =    0 RPM)
temp1:        +42.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:        +44.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp3:        +35.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = disabled
После чего, перезапустив gkrellm, в его настройках (builtins — sensors) все найденные показатели можно включить в мониторинг.
В итоге у меня панелька gkrellm выглядит так:

Мне в кайф.

2012-05-23

Лимбическая система

В общем-то не новость, что если зацикливаться на дурных мыслях, то станет еще хуже. Что интересно, так это знать механику этого «станет хуже». Оказывается, мозговеды давно все знают, только доступно изложить не могут. Но некоторые — могут:

Что такое лимбическая система? Это самый древний отдел головного мозга, который находится в самой его глубине, точнее в центре к низу. За что она отвечает:

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

Когда лимбика спокойна ( малоактивные режим) мы испытываем позитивные эмоции, питаем надежды, чувствуем себя включенными в общество и любимыми. У нас хороший сон и нормальный аппетит. Когда она перевозбуждена – то эмоции в целом негативные ( было отмечено что гиперактивация лимбики может быть также при других эмоциях, сила которых достаточно выражена).
...
Негативные мысли – это звено порочного круга. Лимбика подает сигнал – вызывает плохие мысли - плохие мысли вызывают активацию миндалины ( главный страж мозга) – миндалина частично спускает возбуждение в лимбику- лимбмка еще больше активируется. Довольно забавно, что во многих книгах такие мысли называют муравьями (ANT –automatic negative thoughts) . И звучит призыв «убей своих муравьев)


Журнал в целом очень познавательный.

2012-05-22

Стоимость рубля / стоимость нефти

В наше время трудно найти человека, сомневающегося в том, что экономика России сильно зависит от состояния нефтегазовой отрасли. Единственно что может вызывать споры, это насколько сильна эта зависимость.

На днях я увидел замечательную картинку


oilru.com/dynamic

Два графика расположены рядом. Верхний — цена на нефть по месяцам с 2007 года, нижний — курс доллара, устанавливаемый ЦБ РФ, по той же временной шкале.

Замечательная симметрия, не правда ли? Падает цена нефти и почти сразу падает цена рубля. Я прямо любуюсь на эту картину, она, как квадрат Малевича, будит массу мыслей.

Короче, из графиков видно, что когда цена нефти поднимается вдвое, рубль падает в цене на 10%. Я не могу похвастаться экономическим образованием, к сожалению. Но это позволяет мне предположить, с известным огрублением, что экспорт нефти составляет 10% от нашего совокупного продукта. А еще есть газ и продукты переработки нефти, составляющие вместе никак не меньше нефтяной доли. Не слишком радостная картина.

С федеральным бюджетом все еще печальнее — половину и более всего бюджета составляет нефтегаз:
Согласно данным Минфина, рост нефтегазовых доходов в федеральном бюджете за год составил 47.3%. Их доля в общем объеме доходов федерального бюджета выросла в 2011 году до 49.7% по сравнению с 46.1% в 2010 году и 40.7% в 2009 году.

Жестокая статистика говорит нам — каждый второй рубль у бюджетников и тех кто у них на подсосе, это нефтегазовый рубль (кстати, любопытно, какова доля населения кормящегося из бюджета РФ?). Кто девушку кормит, тот ее и танцует. В смысле, что до тех пор, пока сохраняется подобная пропорция в бюджете, правительство будет танцевать с нефтегазом. Все остальные подбирают, что упало.

Отсюда, кстати, можно вывести рекомендации для оппозиционеров. Открывайте и развивайте собственные бизнесы — в России и вне нефтегаза. Чем больше будет в стране таких бизнесов, тем меньше будет доля нефтегаза в экономике России. Тем почтительнее к вам будет относиться правящая верхушка.

Фактически марксизм (без ленинизма).

2012-05-20

О времена, о нравы

Когда не знаешь, с чего начать, начни с начала.

А сначала я отсмотрел фильму «Тумстоун, Легенда дикого запада» / «Tombstone» 1993 года. С Куртом Расселом. Фильма мне очень понравилась, душевное кино про легендарные события и необычных людей.

Заинтересовавшись легендой, я стал отсматривать другие фильмы по теме. Посмотрел «Wyatt Earp» 1994 года с Кевином Костнером. Плевался, ибо кино вышло отвратительно слабое для такой сильной легенды и, я бы сказал, разнюненное. От легенды там остался ровно один фрагмент в самом конце фильма, где в ж0сткой перестрелке Уайат не получает ни царапины (исторический факт). Вот этот фрагмент посмотреть стоит.

Нынче посмотрел «Док» / «Doc» 1971 года. Ничего так, средненько. От легенды не оставили вообще ничего, но несмотря на это, фильма имеет определенную ценность. Если в «Tombstone» показана история о том, как подлые ублюдки и бандиты «ковбои» в ходе своих безобразий оттоптали мозоли благородных шерифов, то в «Doc» история показана с обратной стороны. Как жестокие шерифы не гнушаются попирать права простых но гордых парней с запада. Ну подумаешь, побузили парни немного, это ведь не повод перестрелять их в загоне для скота?

Одно событие, две реконструкции предпосылок. Очень интересно и дает поводы для задумчивости о человеческой натуре. Если будете смотреть, смотрите сначала «Тумбстоун» и только потом «Док».

Любопытно, что покажут в других фильмах? Буду смотреть.

Чуть не забыл — шотган рулит!

2012-05-19

Корневой сертификат ФНС

На днях видел чУдное, хочу, чтобы и вы повеселились. Нас предупреждают о смене корневого сертификата ФНС России и предлагают установить новый вручную:
Некоторые могут спросить — и что же здесь чУдного? Отвечу — часто ли вы видите подобные предупреждения на сайтах типа Микрософт, Гугль, Яндекс, да хоть «кабинета» вашего сотового оператора? Нет, практически никогда. А знаете почему? Потому как эти организации не поленились произвести свои корневые сертификаты от так называемых «известных CA». Или прямо договорились с производителями браузеров, чтобы те включили нужные сертификаты в инсталлятор.

Я понимаю, когда самоподписанными сертификатами пользуются мелкие компании, вроде той, где я работаю. Нам так проще и дешевле. Наше реноме от этого не пострадает. Но когда так поступает налоговая служба крупного и богатого государства — это сильный удар по престижу данного гос-ва. Лично я щетаю, западло нашей ФНС пользоваться самоподписанными сертификатами.

Глаз саурона еще не дотянулся?


И про программы. Если вы хотите посмотреть на код (Silverlight) оформленный в духе MVVM паттерна и поучиться на примере, скачайте и разберите код этого проекта:
Идеально подходит на роль обучающего материала — проект сбалансированно сложный и небольшой, с хорошим охватом GUI элементов, аккуратно и грамотно написан. Каментов маловато, но и без них код читается неплохо.

Просто канонический MVVM. Лично я потратил целый день, чтобы связать концы с концами в попытках понять кто на ком стоит и что из чего берется, и это (сложность анализа), собственно, самый крупный недостаток дистиллированно событийных архитектур.

2012-05-18

Первый репер

На днях зацепился ухом за песенку «Subterranean Homesick Blues» спетую Бобом Диланом (Bob Dylan). И так она мне понравилась, что я нашел слова, видеоролик и слепил их вместе. Чтобы легче разбирать, что за чепуху он там несет. Теперь вот пытаюсь опубликовать, что вышло



Мерзкие копирасты не дают опубликовать эдакую красоту, несмотря на убогое качество звука и видео — низзя в 229 странах, можно в 19. Кому низзя, можно попробовать скачать ролик с моих гуглодоков (https://docs.google.com/open), туда копирасты пока не добрались.



2012-05-17

Краткость — сестра

Когда я прочел этот пост, я восхитился уровнем сжатия информации. Сколько всего понаписано про REST, на форумах кипят страсти, книги пишут. А достаточно знать всего-то:

  1. (Самое главное) При проектировании структуры URL’ов вложить в нее максимальное количество смысла, представляя это как некий язык запросов к вашим данным, читаемый и понимаемый человеком. Например, вместо http://domain/engine.php?func=123&id=test для получения данных о пользователе, должно быть http://domain/users/test.
  2. Максимально полно использовать стандартные команды и коды ответов HTTP. Не только GET и POST, но и, например, PUT, DELETE, OPTION, HEAD, и не только коды ответа 200 и 500, а множество других.
  3. При проектировании HTTP-ответов следует добавлять в ответ информацию о возможных переходах из текущего состояния сессии в другие состояния.


И эта информация покрывает суть темы процентов на 80, если не на все 90% (не упомянут stateless). Ч0тко.
Приблизительно как и со Scrum, где тоже достаточно знать не слишком много всякого, чтобы начать применять методологию. Почитали про Sprint, Backlog, ProductOwner и вперед, покорять вершины.


А вот еще пример резкого сокращения. Сокращаем трудозатраты на написание TCP/IP серверов

А именно – мы поговорим об некоторых способах создания прикладных TCP/IP серверов, крайне редко, к сожалению, используемых в прикладном программировании, которые почти не требуют написания программного кода. С чего начинает программист, когда перед ним ставится задача написания TCP/IP сервера, особенно если это клиент-серверное TCP/IP приложение для него – хронологически первое в его биографии? C судорожной проработки техники написания IP коммуникаций, сравнения механизмов BSD socket с механизмами TLI SRV4 и т. д. Далее: многие часы бдения над инициализацией socket, установлением соединения … и отладка, отладка, отладка. С учётом того обстоятельства, что отладка сетевых приложений на порядок сложнее локальных, даже при самом смелом использовании таких механизмов как BPF (Berkley Packet Filter) и сетевых сниферов, таких как tcpdump или wireshark. Не случайно, один из самых известных программистских анекдотов объясняет фразу «программировать TCP/IP» как , в более понятной форма, «писать музыку для борделя».
...
Давайте напишем такую простую (проще уже не бывает) программу (исходный файл mycopy.cc, исполнимый - mycopy):
#include "common.cc.h" 
#include "common.c.h" 

int main( void ) { 
   char buf[ 80 ]; 
   // установить построчный режим ввода, но и это не обязательно… 
   setvbuf( stdout, NULL, _IOLBF, 0 ); // или setlinebuf( stdout ); 
   while( true ) { 
      cin >> buf; 
      cout << buf << endl; 
   }
   return EXIT_SUCCESS; 
}
Что это? Это - полнофункциональный TCP/IP сетевой эхо-сервер! Не верите?


Как говорится, не верите — проверьте.

2012-05-16

Реальный hiload

До чего ж у людей интересная работа (писать MySQL Cluster). Правда трудная маманегорюй, но интересная же!

Такой хайлоад, что значимым становится даже время обновления процессорного кеша

Next we noted using oprofile that there was a few functions that for some reason 50% of the CPU time was spent. This was quite surprising and given that the exactness of those measurements is not always 100%, I was very suspicious about those numbers. Eventually however the reason dawned on me.

The reason was that I had some cache lines that was too often updated. This lead to that some instructions took several microseconds to execute since all threads were serialised on updating this cacheline.
... bitmap is obviously global and this was updated every time we made a remote send to another node. This was obviously quite unnecessary to update it every time, it's enough to update when the state changes, so a simple if-statement resolved that problem.
With all these changes implemented we managed to scale update and read performance linearly up to 30 nodes.

Подозрительно, да. Профайлер показывает, что проц загружен не на 100%! Прохлаждается, сцука. Работать, я сказал! Правда ведь, интересно и прикольно — какая кухня в таком проекте?


Исторический экскурс

The MySQL Cluster architecture is based on a design that is used in the world's most sold telecom switch, the AXE switch. This switch is used in all mobile networks delivered by Ericsson. MySQL Cluster also originates from Ericsson. ... The architecture was inspired by how HW was designed. In HW design each module can only communicate with other HW modules using signals (mostly electrical). The idea of the AXE architecture was to use this architecture also for software. The basic concept of this architecture is blocks and signals.


Странно, что про Erlang не упомянул. В конце поста автор проводит интересную параллель — в 1990-х частота х86 процессоров выросла с 25 мегагерц до 1 гигагерца; нынче же, в 2010-х автор уже сделал СУБД выполняющую запросы с частотой 17.6 мегагерц и готов покорять следующие вершины. Так вот, к концу 2010-х кто сделает СУБД побивающую планку в 1 гигагерц?


Если кто еще не в курсе, лучшая книга администратора Debian таки вышла на свободу

2012-05-13

processing MPC lib

Дарю годный сниппет использования библиотеки processing в Python под MS Windows.

Для реализации моей очередной идеи, связанной с сокращением ручного труда, какабычно, понадобился мне инструмент контроля нескольких одновременно работающих процессов в MS Windows. Суть в том, что мне надо стартовать некоторое количество процессов, дождаться пока все завершат работу, после этого запустить следующий этап обработки данных. После целых пяти минут работы соображалкой «что у нас есть в винде под такую задачу» я понял, что делать «супервизор» буду на Python. Ибо для него есть прекрасная библиотека processing.

Библиотека замечательная, популярная, хорошо документированная. Но (куда же без «но») опять же, какабычно, имеющиеся в документации примеры не захотели работать в моих условиях. Условия просты — ждать завершения всех процессов (значит берем Pool), аккуратно выводить принтуемые сообщения из подпрограммы (значит берем Lock).

Вроде должно работать, но не работает. Не буду приводить свои промежуточные попытки добиться желаемого, приведу хороший, годный вариант:
def mpcWorker(tup):
    lock, params = tup
    lock.acquire()
    print 'mpcWorker, params = "%s"' % params
    lock.release()

    cmdl = ['cmd.exe', '/c', params]
    import subprocess
    subprocess.call(cmdl)
    res = 'done mpcWorker, params = "%s"' % params

    lock.acquire()
    print res
    lock.release()
    return res

def mprocessing():
    ''' Don't mix prints, get results back '''
    from processing import Process, Pool, Manager
    man = Manager()
    lock = man.Lock()
    pool = Pool(processes=2)
    tasks = [(lock, 'ping -n 5 localhost'), (lock, 'ping -n 3 ya.ru')]
    print 'Pool.map result = "%s"' % pool.map(mpcWorker, tasks)
    pool.close()
    pool.join()
Справедливости ради замечу, что никакой рокетсаенс тут нет. Рецепт смикширован из нескольких легко нагугливаемых форумных постов. В качестве бонуса применения именно map() имеем список возвращаемых воркерами значений, удобно.

Секретов, не отраженных в примерах документации, тут два. Один — Lock надо брать из Manager-а. Другой — пул надо close() и потом join(). Обязательно.

Если выкинуть ненужное, весь супервизор умещается в 10 строк. Обожаю питон.

2012-05-12

Wolfenstein

Как время летит, 20 лет назад вышел Wolfenstein. Я тогда только начинал погружаться в пучину IT, компы у нас связывали через COM-порты (или LPT), никаких интернетов. И вот, прошло двадцать лет и теперь в Вольфа (настоящего) можно поиграть прямо в браузере


По чесноку, меня геймплей Вольфа некогда не увлекал, да и особой трехмерности в нем видно не было, а по трехмерке компьютерной я тащился тогда. В те годы я подсел на другую игруху, Civilization Сида нашего Мейера. Играл запоем, когда был доступ к компу. Потом мне рассказали как хакать сейвы Цивилизации и после серии моих разгромных побед интерес к игре пропал.

А потом появился Doom, и вот на него я подсел. Doom II с его невероятной двустволкой — нет слов, одни эпитеты превосходной степени. А потом появился Quake.

Что ни говори, Кармак — гений, ID Software — записана в анналы.

2012-05-11

cryptsetup plain

Как обещал, расскажу о фишке cryptsetup.

Всем известно, что с помощью cryptsetup (dm-crypt) зашифроваться можно двумя способами: так называемым plain и LUKS. Метод LUKS удобен, но более хрупок. Метод plain более безопасен, но не предлагает ничего сверх базовых функций. Так вот, на новом компе я решил закрыть раздел /home методом plain. После прочтения инструкции стало ясно, что если не указать параметры криптования явным образом, можно нарваться на ситуацию, когда умолчальные параметры при «открытии» устройства не совпадут с таковыми, использованными при создании этого устройства. Например, после обновления софта. Не вопрос, записал всё в параметры команды

cryptsetup --verbose --verify-passphrase -c aes-cbc-essiv -s 256 -h ripemd160 create home /dev/sda11

Ясен пончик, не работает! Если б работало, не было бы этого поста. Почему не работает? Понятия не имею. Имею предположение, что название метода криптования не совпадает с таковым в списе имеющихся (/proc/crypto). Так или иначе, если выбор параметров оставить на умолчание, то все прекрасно работает. Несмотря на то, что по умолчанию используются ровно те параметры, что я пытался задать явным образом:

cryptsetup --help
Default compiled-in device cipher parameters:
 loop-AES: aes, Key 256 bits
 plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
 LUKS1: aes-cbc-essiv:sha256, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

Вот и вся фишка.

А вот рецепт (телеграфно) криптования раздела диска
umount /dev/sda11
cryptsetup --verbose --verify-passphrase create home /dev/sda11
cryptsetup --verbose status home
mke2fs -t ext4 /dev/mapper/home
mount /dev/mapper/home /home

и не забыть убрать монтирование home из /etc/fstab поскольку теперь монтирование надо делать ручкаме, вводя секретную фразу.

2012-05-10

Новый комп

Ура-ура! 5-го мая привезли заказанную комплектуху для моего нового домашнего компа. Магазин первый тест прошел успешно — оплату по кредитке принял, товар доставил в срок (плюс-минус час для Москвы — это не опоздание, пробки это наша повседневная реальность). Товар в полном порядке. Надеюсь второй тест (на возврат/обмен/гарантию) проводить не придется :)

Тогда же и собрал. Как-то неинтересно нынче стало компы собирать, соединил 6 деталей — получи комп. С первой попытки. Даже лампочки и кнопки ресета с питанием перетыкать не пришлось. То ли дело было в прошлом веке, не сборка а песня. Пока соберешь да заведешь, все руки обобьешь.

Прогнал мемтест, полный цикл. Приятно — никаких сбоев. Что неприятно — память вроде как на 1600 мегагерц (http://www.ulmart.ru/goods/290326/), в отличие от предыдущих вариантов сборок, где память работает на 1333 мегагерца, а разницы по быстродействию не заметно никакой (в мемтесте). Как было около 19 гигабайт в секунду, так и осталось. Хотя, собственно, это только подтверждает теорию о застое в микроэлектронной промышленности. Нынче получается наращивать только количество транзисторов на единицу площади. С частотами — тупик. Зато дохренища памяти и недорого.

Теперь вот сижу, заливаю софт. Винда с игрушками, Дебианчик со всем остальным. Это надолго.
Кстати, очень пригодился мегадевайс от Залман с имитатором СД-привода (Zalman ZM-VE300). Очень удобная коробочка — исошников накидал, к испытуемому подключил — и делай что хошь. Операционку ставь, тесты проводи, биос прошивай — никакой возни с дискетами, компактами и прочими флешками. И работает быстро, не в пример реальному приводу компактов.

Вот только внимательнее надо быть. Я по невнимательности полчаса потратил на раздумья, что не так с установщиком винды. Запускается, доходит до шага «сбор информации» и требует драйвера. Без драйвера далее не идет.
Потом доперло - в новой мамке все порты — USB3. Кроме одного, на морде компьютерного лица. Конечно же, я коробочку подключил к порту USB3, и стал устанавливать венду. Конечно же, безуспешно — ведь в дистр венды не входит драйвер третьей версии USB. Только после перетыкивания коробочки в порт USB2, MS Windows завелась и полетела.
Вообще, глупость какая-то. Если уж установщик заработал на каком-то дженерик драйвере, чего бы ему и дальше не продолжать, на том же драйвере?

А вот еще интересное наблюдение, относительно Gnome 3.
Дебианчик я решил себе поставить из ветки testing, это ныне Wheezy. А в нем по умолчанию на десктоп ставят Gnome3. Могу сказать, что поначалу очень непривычно. Разработчики явно держали прицел на планшеты и всякие блокноты (и вот нахера мне на десктопе с фулл ХД дисплеем заточка шелла на убогий планшет?). Но, как выяснилось, можно так докрутить настройки десктопа, чтобы и старые привычные функции поиметь, и новые приятные не потерять. У меня на текущий момент все работает как мне хочется. За исключением погодного виджета, который в Gnome 2 шел в комплекте с виджетом часов и календаря. в Гноме 3 пока неясно, где он, погодный виджет. А, еще скринсейвер начисто убрали. Тоже пока не решил, как быть.

Пара бесплатных советов по обустройству Gnome 3.
Поставьте и пользуйте твикалку
aptitude install gnome-tweak-tool

Поставьте и настройте под себя экстеншн
я сделал по типу маковского дока, хотя не уверен, что это навсегда.

Вообще, поглядите на сборище расширений, есть хорошие

Почитайте про гномовский шелл и его расширения
оно того стоит.

Чуть не забыл, очень важно. У третьего гнома есть крайне удобная фишка — панель Dash, она же Favorites. С ней ровно одна проблема, хотя и решаемая. В этой панели нельзя закрепить, как в винде, любую программу. Закрепить можно только те программы, что есть в списке меню программ. Поэтому, чтобы внести в фавориты, скажем, крусадер или фаерфокс, надо запустить программку alakarte (в меню программ она идет как MainMenu) и подредактировать список программ, добавив в него нужное. После чего можно это нужное добавить в фавориты.

И будет вам щасте.

Обратно чуть не забыл. Для 64-битного Дебианчика нужен 64-битный фаерфокс. Традиционный и легко доступный 32-битный огнелис работает, конечно, на костыльках ia32-libs*, но вид отвратный, ибо gtk+ 32-битный ну очень коряво выглядит в 64 битах.
По этой же причине надо и SciTE либо ставить из пакетов, либо компилять самому. Кстати, пока это единственная из программ, поставленная мною не из пакетов а скомпиленная из сырцов.


Для справки, список пакетов, что я ставил ручкаме
debian-multimedia-keyring
ntp ntpdate
gedit
cryptsetup
rsync
ecryptfs-utils
kde-standard
sysv-rc-conf
krusader
kdiff3 krename
unrar
ia32-libs
ia32-libs-gtk
ia32-libs-libtxc-dxtn0 ia32-libs-static ia32-libs-xulrunner
linux-kbuild-3.2
make
linux-kbuild-3.2 make gcc pkg-config
keepassx keepass2
pidgin-libnotify pidgin-guifications pidgin
xscreensaver
stardict
gtk-smooth-themes
apt-file
fonts-inconsolata ttf-inconsolata
libcanberra-gtk-module
libstdc++5
ttf-mscorefonts-installer
dkms
virtualbox-4.1
smplayer
gnome-tweak-tool
libgtk2.0-dev
checkinstall
deluge
rdiff-backup
samba-client
cifs-utils
gkrellm
afuse fuse-utils
Пока негусто, только то, что нужно на каждый день :)

Содержимое /etc/apt/sources.list
deb http://mirror.yandex.ru/debian/ testing main non-free contrib
deb-src http://mirror.yandex.ru/debian/ testing main non-free contrib
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
deb http://mirror.yandex.ru/debian/ testing-proposed-updates main non-free contrib
deb-src http://mirror.yandex.ru/debian/ testing-proposed-updates main non-free contrib
deb http://www.debian-multimedia.org testing main non-free
deb http://debian.nsu.ru/debian-marillat testing main non-free
deb http://download.virtualbox.org/virtualbox/debian wheezy contrib non-free

Есть еще микрозаметка про cryptsetup, но это потом.

2012-05-04

Про доходы и расходы

Буквально пара цитат:

Откуда стало так много людей с лишним весом,- это вопрос скорее к экономистам, нежели биохимикам. Еда дешевеет. Американец тратит на еду 7,2% от доходов, западная Европа 9-10%, восточная Европа 20-25%, Россия 30-35%. Люди чаще едят вне дома, люди чаше покупают полуфабрикаты. Вернее сказать, дешевеет не еда вообще, дешевеют калории. Вкусное стало дешевым, невкусное дорогим. Чем вреден фаст-фуд? Ничем не вреден. МакДональд не врет, когда рассказывает про натуральную котлету огурцы салат и сыр. Проблема не в том, что он плохой и вредный. Проблема в том, что он слишком хорош для нас. Жирное, сладкое и соленое,- сама сущность вкусности.


Могу подтвердить со своей колокольни, мы, россияне, в среднем по больнице, тратим треть доходов и более только на еду. Причем далеко не лучшего качества. Удвоению ВВП и поющим мантры «наша экономика отлично развивается» посвящается.


Другая цитата удачно укладывается во время — преддверие Дня Победы.

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


Гитлер успел ударить первым. И люфтваффе зарулило наших в минуса.

FUBAR

Досмотрел сегодня «Tango & Cash» (1989), снятый Андреем Кончаловским, между прочим. Теперь у меня новая игрушка, два акронима

FUBAR - fucked up beyond all recognition
SNAFU - situation normal: all fucked up


Снять комедийный боевик, где два приличных актера играют напарников не переносящих друг друга — это практически беспроигрышный вариант. Хотя Курт Рассел на фоне Сильвестра Сталлоне смотрится не очень хорошим актером.

2012-05-03

Ivy Bridge

Некоторые наши магазины сообщают, что десктопные процессоры Intel Core третьего поколения (Ivy Bridge) уже можно купить. Это для меня хороший повод закупить себе домой десктоп на следующие лет пять (нынешний где-то столько и проработал). Заодно протестирую новый (для меня) магазин.

Пройдя очередные муки выбора, собрал себе конфиг выше среднего. Как обычно, получилось недешево. На этот раз уложился приблизительно в 1000 евро без периферии (раньше укладывался в 1000 долларов — то ли доллар подешевел, то ли аппетиты выросли). Зато есть шанс, что такой конфиг проживет без апгрейда долго.



Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)