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

2011-12-30

snapshot

На днях случилось расстройство. Поломалась виртмашина у меня.

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

В Virtualbox это простая и дешевая операция. Скомандовал, типа
VBoxManage snapshot ags.small take snapone
и у тебя уже есть снапшот.
Чтобы откатиться взад, командуй
VBoxManage snapshot ags.small restore snapone
Чтобы убить снапшот (логичнее было бы не «убить» а «внедрить» - содержимое снапа накатывается на состояние машины)
VBoxManage snapshot ags.small delete snapone
Если его не убить, все изменения так и будут записываться в боковую ветку.

Но есть и ограничения. Например, не всякую операцию можно сделать на включенной машине. Иногда не слишком удобно останавливать-запускать виртмашину только потому, что надо создать или убить снапшот. А еще глючит, зараза, периодически. Причем есть корреляция — только я начну радоваться — вот как ловко у меня эксперимент проходит, раз — и на тебе exception.

Вот и в этот раз. Стал я удалять сделанный ранее снап, и не смог. Было это приблизительно так:
VBoxManage snapshot ags.small restore snapone
fail с не-помню-каким сообщением. Плюс сдохла вторая вирмашина (ядреный модуль упал?)
reboot
VBoxManage snapshot ags.small restore snapone
ok
VBoxManage snapshot ags.small delete snapone
VBoxManage: error: Snapshot operation failed. Error message: Hard disk  has more than one child hard disk
Насколько я понял логику механизма, при восстановлении снапшота виртбокс прислюняет к машине новый пустой дисковый контейнер и удаляет старый. Новый он прислюнил а вот старый убить не смог по неизвестной причине. Глюк, да. После чего к машине оказались присоединены два дополнительных диска снапшотной направленности. Надо как-то лишний удалить.
ls -la /extht1/virtsnap/
-rw------- 1 v v      413696 Dec 29 02:11 {62621749-a694-4a15-ae87-c5751ec85e5f}.vdi
-rw------- 1 v v   827740160 Dec 28 17:20 {f3b9f664-24ce-4ea0-b997-c151cd07cbf3}.vdi

Кто из них лишний, понять невозможно. Но можно предположить, что тот, который больше — старый, который должен был быть убит на этапе restore snapone. После принятия такой гипотезы остается малость:
cp /extst1/virt/ags.small/ags.small.vbox ~/ags.small.vbox.old
nano /extst1/virt/ags.small/ags.small.vbox
^K (cut) line with text <HardDisk uuid="{f3b9f664-24ce-4ea0-b997-c151cd07cbf3}" location="/extht1/virtsnap/{f3b9f664-24ce-4ea0-b997-c151cd07cbf3}.vdi"  ...

VBoxManage snapshot ags.small delete snapone

ok

Типа, получилось. Если бы не получилось, пришлось бы восстановить файл конфига (*.vbox) и попробовать удалить другой лишний файл.

Вот так и живем. Вот тут (nerdbynature.de/s9y/?212) автор добился успеха в аналогичной ситуации без грубой (настоятельно не рекомендуемой) ручной правки конфига. Одними командами управлятору. Да, чуть не забыл, мой рецепт сработал для версии Virtualbox 4.1.8. Вообще, судя по ихним форумам, история типичная. Хотя лично у меня вроде как только второй раз за несколько лет.

Вот так и живем. Что приятно, когда имеешь дело с открытыми решениями, проблему побороть можно так или иначе. А вот что делать, когда, к примеру, браузер MS IE не может пройти аутентификацию на MS IIS с использованием схемы NTLM Auth? Судя по логам, не хватает ему трех попыток, чтобы подобрать правильную версию формата ответа. Вот что делать?
Вопрос актуальный. В одной немалой компании из-за этой проблемы потрачено уже немало нервных клеток.

С наступающим!

2011-12-28

Лимерик

Попалось на просторах забавное:

There was a young fellow named Perkin
Who was always jerkin' his gherkin
Said his girlfriend, "Hey Perkin,
Stop jerkin' yer gherkin.
Yer gherkin's for ferkin', not jerkin'!

еще и с вариациями

There once was a young fellow named Perkin
Who always was jerkin his gherkin
Says the wife to young Perkin
"Quit jerkin' yer gherkin,
Yer shirkin' yer ferkin' ya bastard!"

A hairless young harlot named Perkin
When asked why she favoured a merkin,
Replied in a trice
It’s nice for the lice,
Who else would have nowhere to lurk in”


Ли́мерик — форма короткого юмористического стихотворения, появившегося в Великобритании, основанного на обыгрывании бессмыслицы.
...
Традиционно лимерик имеет пять строчек, построенных по схеме AABBA, причём в каноническом виде конец последней строки повторяет конец первой.

Получается, не такой уж и лимерик :)

2011-12-27

Новогоднее

Не знаю как у вас, а у меня новогодние каникулы это время годового бекапа. Спокойно, без спешки, разобрать завалы, скопившиеся за год, рассортировать, упаковать, сложить в несколько разных мест (для надежности) и забыть. Редко когда возникает нужда вынуть что-то из архива. Раз 5 за год бывает ситуевина, когда нужен прошлогодний архив. А позапрошлогодний — практически никогда (никогда не говори «никогда»!). Это про мои данные, документы, проекты и проч. А вот системные файлы я уж давно не бекапил. Беспечный.

На винде вроде как смысла особого не было. Не настолько часто ее переустанавливал, чтобы затеваться с восстановлением. Проще с нуля все накатить. Заодно и от хлама избавиться. На Linux еще проще. Список пакетов сохранил и вроде как достаточно.

Это потому как я уже давно фактически не сисадмин. А вот сисадмин заценит:
толковое обьяснение проблем и сложностей сохранения/восстановления файлов под юниксами. Метаданные, линки и прочее. К сожалению, без готовых рецептов.
rus-linux.net/MyLDP/admin/backing-up-unix_ru
halfgaar.net/backing-up-unix

2011-12-26

Превосходная степень


Сто лет назад, в эпоху мышей с шариками и во времена выхода в свет игрухи Quake III Arena у меня был компьютер так себе, средний. И в нем был акселератор Voodoo, для поиграть. И я помню до сих пор, как я выжимал из железяк всё возможное, только бы поднять частоту кадров в Кваке еще хоть на пару свыше тех 20, что удалось добится отключением в игре всего, что только можно было отключить. Тогда мне это было интересно. В итоге, в лучшем случае я видел кинематографичные 24-25 кадров в секунду. Без разгона и особых оптимизаций я получал кадров 18. И могу уверенно сказать, что играбельность не сильно отличалась в этих двух случаях. Что реально сделало игру комфортной, так это полная смена платоформы, что дало фреймрейт более 30 кадров/сек.

Это я к чему, спросите вы. А к тому, что именно тогда я осознал одну важную штуку — лишние два кадра в секунду — это не достижение. 10 и даже местами 20% разгона не стОят того, чтобы платить за это своим временем и возможной нестабильностью компа. Если и затеваться с апгрейдом, то он должен поднимать общую производительность системы не менее чем на треть. Не менее.

Кстати, про нестабильность. Приблизительно в то же время я на опыте убедился, что разгон (overclocking) компа — занятие для тех, кому надо ставить рекорды а не работать. Если надо работать, разгон лучше убрать. В Наташкиной машине был установлен легендарный Целерон-А, если правильно помню название. Этот камень (он и щаз где-то в коробке с комплектухой валяется) гнался по определению у всех и всегда. Понятное дело, я его разогнал. Машинка проходила абсолютно все тесты, работала безупречно. Никаких проблем вообще. Но разгон я через некоторое время снял. Потому как в Фотошопе, в одном из инструментов (кисть что-ли?), при его, инструмента, применении возникали артефакты. Кисть артефачила по изображению «звездочками», яркими пикселами в произвольных местах картинки. Причем иногда могла и не артефачить. Долго мы искали причину, пока я не снял разгон с камня. Нет разгона — нет артефактов. Такие дела. Я тогда долго не мог поверить, что такой безупречно разгоняемый камень, проходящий все тесты, вынужден работать у меня вполсилы. Но — факт, Фотошоп, как лакмусовая бумажка, показывал вредность разгона.

И вот весь вышеприведенный текст я написал только потому, что в журнале прочел такую заметку:

К тому моменту как я дочитал до слов «Радость, которую я испытал...» меня уже было не остановить. Я ржал и матерился одновременно. Громко и неудержимо.
Я, блять, не понимаю, я отказываюсь понимать, как можно радоваться, купив четыре гига оперативки вдвое дороже обычного (двумя, едреныть, планками!), даже если это дает целых десять fucking процентов к скорости чтения/записи.
Я недавно покупал оперативку по 700 рублей за 4 гига (4 одной планкой, взял бы 8-ми гиговые, но не было). И эта память у меня показывает не меньше 18 гиг/секунду. В штатном режиме. А тут автор радуется получив 20 в разгоне. За вдвое большие деньги.
Ну не пиздец?
Ребятки, дорогие мои, за эти деньги лучше возьмите 8 гиг оперативы. Толку будет больше. Гораздо.

Желаю, чтобы все!

2011-12-24

БЭМ

В каждой избушке свои погремушки. Поговорка.

Если у вас потогонка и конвеер, если у вас поточное производство, если у вас очень много однотипных проектов по HTML верстке... если вы работаете в Яндексе, наконец, то (что?). Если все это, то вам надо как-то свести все многообразие и богатство возможностей HTML, CSS, яваскрипт (в контексте верстки) к минимально необходимому набору. Набору примитивов и возможностей их обработки, такому, чтобы как раз хватало на создание ваших типичных проектов. Набор должен быть прост, однозначен, универсален, доступен пониманию армии работников конвеера и, что немаловажно, автоматически обрабатываем.

Встречайте, Яндекс БЭМ:

методология БЭМ – способ описания действительности в коде, набор паттернов и способ думать о сущностях вне зависимости от того, на каком языке программирования это реализуется.
На основе этой методологии разработаны подходы к вёрстке и технические решения, которые позволяют нам быстро создавать новые страницы и легко поддерживать уже существующие.
БЭМ расшифровывается как Блок-Элемент-Модификатор, смысл этих терминов раскрыт ниже.

bem.github.com/bem-method/pages/beginning/beginning.ru

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

2011-12-23

Notorious markets

Замечательная новость, Савеловский рынок исключили из списка пиратских.

Examples of positive action at markets that USTR identified in the February 2011 list include the Chinese website, Baidu, identified in the Notorious Markets List for several years, which entered into a landmark licensing agreement with U.S. and other rights holders from the recording industry. At the Ladies Market in Hong Kong, local customs officials took action to remove allegedly infringing goods from the premises, and authorities reported a commitment to continue to undertake enforcement actions at the market. Finally, at the Savelovskiy Market in Russia, management has implemented an action plan to stop the distribution of infringing goods.
These markets are no longer included in the Notorious Markets List. The positive efforts undertaken at those markets will benefit U.S. and other IP right holders.

ustr.gov/about-us/press-office/press-releases/2011/december/ustr-announces-results-special-301-review-notorio
lenta.ru/news/2011/12/21

Надо будет заглянуть, поглядеть, как там, на Савеле...

А вот рутрекер по прежнему в топе нарушителей прав собственности.

2011-12-21

CryptDB

Не слишком давно я видел инфу от IBM, у них вроде как разработали методы гомоморфного шифрования данных. Тогда дискутировали неслабо, обсуждая применимость технологии. А нынче мы имеем рабочее решение, позволяющее хостить свои SQL-БД на вражеском железе. Ибо врагу достанется только зашифрованное нечто. Раскрываться инфа будет только на стороне клиента, обладающего ключами.

Исследователи из Массачусетского технологического института представили проект CryptDB, в рамках которого предпринята попытка решения проблемы безопасного хранения данных в БД, обслуживаемых в облачных сервисах и других неподконтрольных системах.
...
При использовании CryptDB, в процессе выполнения SQL-запросов все действия производятся только с зашифрованными данными, т.е. пользователь может отправить SQL-запрос к СУБД и получить результат без расшифровки информации на стороне сервера (данные будут расшифрованы на оборудовании клиента).
...
Для обеспечения сохранения конфиденциальности информации используется многоуровневая система шифрования, ... Для скрытия данных на каждом уровне используются свои методы гомоморфного шифрования, при которых данные необратимо искажаются, но сохраняется возможность совершения определённых математических операций, которые дадут аналогичные результаты, что и операции над исходными данными....

Манипуляции над зашифрованными данными накладывают ограничения на возможность выполнения вычислений внутри запроса (невозможны операции сравнения для вычисляемых значений, например, нельзя использовать "salary > age*2+10", но можно "salary > age" или "salary > 10"), тем не менее поддерживаются большинство агрегатных функций и стандартных типов данных, таких как integer и varchar/text. CryptDB реализован в виде прокси, не требующего модификации кода СУБД. Для выполнения криптографических операций на стороне СУБД используется набор дополнительных функций (UDF, user-defined functions).
...
CryptDB выполнен в роли надстройки, способной работать с любыми СУБД MySQL 5.1 и PostgreSQL 9, не требуя модификации кода СУБД. Код CryptDB доступен через Git-репозиторий проекта (git clone -b public git://g.csail.mit.edu/cryptdb).

opennet.ru/opennews/art 32610
forbes.com/sites/andygreenberg/2011/12/19/an-mit-magic-trick-computing-on-encrypted-databases-without-ever-decrypting-them
forbes.com/forbes/2009/0713/breakthroughs-privacy-super-secret-encryption
researcher.ibm.com/researcher/view_page 2661



Супер. Остается только узнать, какому классу защиты отвечает такая метода и выяснить точный список «чего нельзя делать» на такой защищенной СУБД.

2011-12-20

Websockets на Python

Автор пишет, что результаты тестирования его удивили. Оно и верно, показать результат втрое уделывающий соратников, такое не всем по плечу. Участники состязаний:

Если вкратце, то получается следующая картина:
sockjs-node может отправлять до 45,000 сообщений в секунду при среднем времени отклика в 200 мс.
sockjs-tornado на cpython 2.6.6 может выдавать до 55,000 сообщений в секунду при времени отклика в 200 мс
sockjs-tornado на pypy 1.7 просто «разрывает» со своими 150,000+ сообщениями в секунду.

Конечно, сервера могут отправлять и большее количество сообщений в секунду, но время отклика растет и приложение перестает быть realtime :-)

habrahabr.ru/blogs/python/134822
mrjoes.github.com/2011/12/15/sockjs-bench#comparison

Представляем команду победителей, команду, убедительно порвавшую соперников:

PyPy is a fast, compliant alternative implementation of the Python language (2.7.1). It has several advantages and distinct features...

Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed. ... it is non-blocking and reasonably fast. Because it is non-blocking and uses epoll or kqueue, it can handle thousands of simultaneous standing connections, which means it is ideal for real-time web services.

SockJS-tornado is a Python server side counterpart of SockJS-client browser library running on top of Tornado framework.

SockJS is a browser JavaScript library that provides a WebSocket-like object. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server.

Выводы? Да вроде все и так ясно.

2011-12-18

Прометей

Потрясающая по простоте и эффективности конструкция:

И финка из начинающего режиссера мгновенно превратилась в сказочную маленькую разбойницу. Лихо вырезала из сосны большое полено, сантиметров тридцать в диаметре и поставила на торец, оно оказалось ей по пояс. Мы наблюдали за ней как дети за фокусником, было видно, что бензопила для нее такая же привычная вещь, как для наших девушек фен.
Дальше она начала резать полено вдоль как тортик, но не до самого низа - чтобы оно не распалось на дольки. Всего четыре прореза.
Потом финка открутила какую то крышечку и в центр деревянного тортика налила из бензопилы несколько капель масла, чуть плеснула бензина из бачка, отдала хозяину агрегат, вынула из варежки зажигалку и чиркнула…
От начала ее работы, до появления у нас самой настоящей газовой плиты прошла ровно минута. Еще через десять, мы все пили мятный чай, а на деревянной конфорке уже шкворчала картошка с салом. Огонь никак не нужно было поддерживать, он горел сам по себе - красиво и ровно выжигая полено изнутри, как будто в середине бревна была спрятана хитроумная газобаллонная конструкция. И продолжалось это не пять и не десять минут, а почти час…
Ах какие живописные лица были у бывалых лесорубов. Жаль, что камера замерзла, а то бы заснял для истории. Поначалу они недоверчиво шептались ожидая подвоха, но когда поняли, что подвоха не будет и что их жизнь поделилась на «до» и «после», тут уж излили душу радостными междометиями:
- Хуе…
- О нихх…
- Твою жеж мать… ну пп…
- С хера…б…
Если бы Илма вдруг крикнула – «На колени!»
Я не сомневаюсь, что лесорубы попадали бы.
Больше в тот день уже никто не работал, они рвали друг у друга пилы и строили деревянные буржуйки, все еще не веря своему счастью.
И когда мы в кузове трактора уезжали из леса, нас провожала снежная поляна украшенная десятками волшебных огней и радостные бегущие люди которым с этого дня уже на фиг не нужны были ни дрова, ни мангал, ни проволочка на сковородке…

storyofgrubas.livejournal.com/91742
survivalbook.ru/taezhnaya-svecha-2
entus.narod.ru/primus/primus_st
youtube.com/watch?v=ILcagOV_ojo

2011-12-17

The Joel test

Во вчерашнем посте я дал сцыль на тест для сисадминов. Программерам там тоже есть что почерпнуть. Что бы не думали себе некоторые, хороший программер должен понимать, как оно все работает. Да ладно, я не об этом. Я о том, что в тесте том была сцыль на тест Джоела, для программеров. Он очень коротокий, этот тест:

Do you use source control?
Can you make a build in one step?
Do you make daily builds?
Do you have a bug database?
Do you fix bugs before writing new code?
Do you have an up-to-date schedule?
Do you have a spec?
Do programmers have quiet working conditions?
Do you use the best tools money can buy?
Do you have testers?
Do new candidates write code during their interview?
Do you do hallway usability testing?

joelonsoftware.com/articles/fog0000000043

Если на 11 вопросов ответ — да, то жить можно. Если меньше, у вас проблемы. Пояснения читайте в статье.

2011-12-16

Sysadmin

Вышел Silverlight 5 - citforum.ru/news/27530
Есть слухи, что это последний сильверлайт. Индустрия переходит на HTML5.


33 коровы 32 вопроса сисадмину, тест Лимончелли. Прекрасный текст и замечательный тест

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

everythingsysadmin.com/the-test
n-ix.com/ipesin/translations/other/32LimoncelliTest
opennet.ru/opennews/art 32531

Сисадминам учить наизусть.


Кстати, а знаете ли вы, что если у вас RAID5 из 7-ми двухтерабайтников, и, не приведи Аллах, отказал один диск, шансы потерять весь массив составляют 62%?
Нет, не знаете?

The problem with RAID 5 is that disk drives have read errors. SATA drives are commonly specified with an unrecoverable read error rate (URE) of 10^14. Which means that once every 200,000,000 sectors, the disk will not be able to read a sector.

zdnet.com/blog/storage/why-raid-6-stops-working-in-2019/805

А я-то думал, зачем им RAID6? Теперь понятно зачем. А зеркало (RAID1) еще надежней.

2011-12-15

If

Уже который день не идет из головы, засело как заноза, выражение
... had it not been for you.
Это из фильмы Finding Forrester.
Перевести можно «... не было бы если бы не ты». Не знаю как носителям языка, а для меня это сложное выражение. Чтобы понять его смысл, надо либо знать его как устойчивое выражение, либо провести разбор (морфологический, если не путаю). А вот в разборах я ни бельмеса. В школе я эту тему прошел мимо. Отдельно доставляет «for» имеющее значение, по мюллеру, «4) указывает на причину, повод от, ради; tocry (to shout) ~ joy плакать (кричать) отрадости;».

Два применения такого оборота:
english-test.net/forum/ftopic51082
indianexpress.com/news/i-might-not-be-standing-before-you-today-had-it-not-been-for-gandhi-his-message


До кучи, еще из аглицкого
...
If you can fill the unforgiving minute
With sixty seconds' worth of distance run,
Yours is the Earth and everything that's in it,
And--which is more--you'll be a Man, my son!

Богоподобный Киплинг, последняя строфа из поэмы «If».
Еще мне вот это нравится - R.Kipling. The White Man's Burden.


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

2011-12-14

Redis-ка

Redis is an open source, advanced key-value store.
Часто упоминается как сервер структурированных данных, поскольку запись по ключу может содержать строки, хеши, списки, наборы и сортированные наборы.

redis.io/topics/introduction

Она же No-SQL БД, держащая эту БД в оперативке, что дает офигительную скорость.

Попробуйте пообщаться с Редиской через консоль прямо в браузере:
try.redis-db.com



Интересная новость

два исследователя из Дартмутского университета выступили с идеей создания расширенных вариантов утилит diff и grep для обработки сложных типов данных
...
В качестве примеров ... можно привести параметры сетевых интерфейсов в Cisco IOS или настройки виртуальных хостов Apache....
Например, в настройки может быть внесено всего два изменения, но за счет перемещения окружающих изменение данных, diff (традиционный) может отобразить десяток изменений
...

opennet.ru/opennews/art 32513
nixp.ru/news

Давно пора что-то эдакое сделать. А то, к примеру, дадут тебе два одинаковых XML-я и давай, ищи между ними разницу, когда они отформатированы как придется.
Любопытно, как будут выглядеть конфиги этих E-grep и Е-diff?

2011-12-13

Google велик

Google могучЪ. Но не слишком эффективен?
В день гугелем пользуется мильярд человек. Серверов у гугеля мильён. Получаем тыщу человек на сервер в день. Это не есть много. Но, правда, и не мало.
На мильен серверов Google имеет тридцать тыщ персонала. Получаем тридцать серверов на сотрудника. Это не есть много. Хотя, учтя, что с непосредственно с серверами работает не более 10% народу, получаем много.

Вот такая занимательная арифметика. Хотите больше? Пжалте:

insight-it.ru/masshtabiruemost/arkhitektura-google-2011

а заодно и это, в тему:
insight-it.ru/masshtabiruemost/10-izvestnykh-masshtabiruemykh-arkhitekturnykh-shablonov

2011-12-11

Профи

Нынче один из самых модных языков, для серверных задач, это Эрланг. Штука мощная, если не пугает лиспо-подобная стилистика. Пожалте, иллюстрация: фиддлер-лайт на эрланге
easy-coding.blogspot.com/2011/11/tcpip-proxy-erlange
писано С++ профессионалом, в целях изучения нового языка.


О, кстати, а вот еще один С++ про:
cdriper-rss.livejournal.com/30830
Прошелся тяжким катком по Джону Кармаку.

Формально — все правда. Чего уж. Код написанный Кармаком нельзя назвать образцовым. Вот только, сдается мне, если бы Джон задумывался о стройности и изящности кода, не было бы ни Doom, ни Quake. Поскольку движки написаны в срок (более того, есть сведения, что Кармак выдает свой код сильно заранее) и работают, нет причин для беспокойства. Игры продаются, деньги прут. Более того, код логичен и вполне человекочитаем. Кому надо, тот сам его отрефакторит.
Короче, сдается мне, Джон из тех людей, которым проще переписать изрядный кусок кода, нежели задумываться о всяких там принципах типа DRY. Я знаю таких. Они пишут быстро. Наверное, потому как не задумаются о чепухе и не гнушаются черной работы (переписывать). Правда, использовать потом, то, что они понаписали, практически невозможно. В этом отношении код Джона просто идеален.

Как же мне нравится, когда профессионалы рассуждают о своем, профессиональном. Просто пестня!

2011-12-10

ORB PyRo

PyRo, точнее Pyro, это Python Remote Objects. Библиотека берет на себя функции ORB. Фишка в том, что программеру очень легко добавить сетевое взаимодействие. Необходимо добавить всего несколько строк к уже имеющейся логике. Смотрите сами
# saved as greeting.py
import Pyro4
class GreetingMaker(object):
    def get_fortune(self, name):
        return "Hello, {0}. Here is your fortune message:\n" \
               "Behold the warranty -- the bold print giveth and the fine print taketh away.".format(name)

greeting_maker=GreetingMaker()
daemon=Pyro4.Daemon()                 # make a Pyro daemon
uri=daemon.register(greeting_maker)   # register the greeting object as a Pyro object
print "Ready. Object uri =", uri      # print the uri so we can use it in the client later
daemon.requestLoop()                  # start the event loop of the server to wait for calls


# saved as client.py
import Pyro4
uri=raw_input("What is the Pyro uri of the greeting object? ").strip()
name=raw_input("What is your name? ").strip()
greeting_maker=Pyro4.Proxy(uri)          # get a Pyro proxy to the greeting object
print greeting_maker.get_fortune(name)   # call method normally
Модуль greeting.py стартуем на одной машине, модуль client.py — на другой. После чего, клиент получает от сервера результат отработки функции GreetingMaker.get_fortune.

packages.python.org/Pyro4/intro.html#simple-example
irmen.home.xs4all.nl/pyro

Я не видал еще более простого способа вызвать функцию с сетевого узла. Прэлэстно, однозначно.

2011-12-09

игра

Вчера я не пошел в контору, работал дома. Сумел обработать 11 помидоров. Сегодня я отправился в контору, где наработал целый 1 (один) помидор. Ужасно :)

Конечно, если упомянуть, что в середине второго помидора все здание обесточили, то картина меняется. Вот что значит — не всю правду сказать :)
Поскольку второй помидор закончить я не успел, он не считается. А потом включился свет, я поднимал сервера, было не до помидоров. А потом начальник сказал «а не пойти ли нам по домам» и мы пошли. Вот так и вышло. Вчера, дома — 11. Сегодня, в конторе — 1.

Что такое помидоры? Это, знаете ли, такие овощи-фрукты. На грядках растут. А еще это такая игра себя с собой при помощи снаряжения — таймера. Правила игры очень простые: один помидор = 25 минут непрерывной работы над определенной задачей и потом 5 минут перерыв. Через четыре помидора длинный перерыв — 25 минут. Помидор неделим, если вы отвлеклись от задачи, помидор удаляется и не считается. В целом — это главное, остальное уже мелочи. Конечно, никто никого не гонит, начинать следующий помидор прям сразу за предыдущим нет нужды, как и по первому писку таймера вскакивать и бежать на перерыв/к верстаку. Но вы же чуете (психология, мать ее), время-то тикает! Если помидор от помидора класть далеко, к концу рабочего дня их выйдет немного. Поэтому перерывы между помидорами выходят небольшие.

Я считаю, за офисную вахту — 8 часов, сделать 12 помидоров можно не напрягаясь особо.

В чем тут фишка? Фишка в том, что обрабатывая помидоры, вы соревнуетесь сами с собой, что ниибицки повышает концентрацию и, как итог, производительность. Главное, не обманывать себя, типа «ну я малеха отвлекся, можно не считать, сойдет». То есть надо реально хотеть, чтобы помидоры вам помогли. А иначе затея не выгорит. Но попробовать стоит по любому.

Психологический эффект базируется, видимо, на грамотно выбранных интервалах. Любой нормальный человек с легкостью сам с собой согласится, что 25 минут это немного, можно закончить начатое и прерваться уже после, в перерыве. Тем более, что провокация на отвлечься приходит уже ближе к середине 25 минут, когда до перерыва остается порядка 10 минут, ваще смешное число. Это дает основание грызть задачу, не отвлекаясь на попить, пописать, покурить, поговорить, позырить тырнет, ...

Таймер подойдет любой. Я себе на андроидный комм поставил почти первую попавшуюся программулину, найденную в маркете по слову «pomodoro».

Спасибо Фрицу за наводку. Рекомендую.

en.wikipedia.org/wiki/Pomodoro_Technique
pomodorotechnique.com

2011-12-08

night hoss

Фильма True Grit, предпоследняя сцена, реплика:

...Reuben had a complaint what he referred to as "night hoss"...

Вот тут
imdb.com/title/tt1403865/board/flat/186895588
есть версия, как понимать сказанное. На мой взгляд, хорошая, годная версия. Рубен жаловался на то, что ему снятся кошмары.

Прикольно, игра слов — nightmare (кошмар, дурной сон), night-mare (ночь-кобыла) и night-hoss (ночь-лошадь).

Кстати, вот нафига вот такое делать:
compliant
complaint
И произносится почти одинаково. У меня в таких случаях стабильно провалы в памяти и путаница. Трудности перевода, да.

2011-12-07

HMC

Hybrid Memory Cube (HMC) — это прорыв! 128 гигабайт в секунду (да ладно, я согласный на 100, нынче мы имеем в лучшем случае 10 ГБ/с с одного канала) нам обещают Micron вместе с IBM. В том смысле, что вот-вот они начнут производить оперативную память для компов, обладающую такой шаблоноразрывающей скоростью.

cnews.ru/news/2011/12/02/466942
micron.com/innovations/hmc

Это нечто.
Думаю, не пройдет и пяти лет, как у нас будет возможность посчитать вообще всё. К примеру, заштатная телестудия сможет не снимать новости а генерировать их :)
Прощай, реальность.

2011-12-05

Не Tor-ом единым

Смешное название - «айтупи». Типа «ай! тупи!». А на самом деле Invisible Internet Project, что можно перевести как Проект Интернета-невидимки.

Designed and optimized for hidden services, which are much faster than in Tor. Fully distributed and self organizing.

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

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

Чтобы осознать такой тренд, мне хватило прочесть три абзаца из FAQ:

Misconception
i2p2.de/faq

i2p2.de/how_networkcomparisons
ru.wikipedia.org/wiki/I2P
en.wikipedia.org/wiki/I2P

Вещь полезная однозначно.

2011-12-04

vim

Как перестать бояться и начать использовать vim:
jenyay.net/Programming/Vim

Разжевано достаточно для того, чтобы нубы могли начать.

У этого же автора есть интересный проект: реализация алгоритма роя частиц:
jenyay.net/Programming/ParticleSwarm
а также много других интересностей.

Вообще, вычисления методом PSO натурально параллелизуются, что нынче большой плюс к карме.

2011-12-02

Как оно работает

VirtualBox.Technical background

Почему для виртуализации надо брать Core i7; чем поддержка виртуализации от AMD лучше таковой от Intel; как и когда переписывается исполняемый код; как выдать еще несколько процентов производительности ... и много всякого другого, интересного тем человекам, кто хочет знать как работает виртуализация

virtualbox.org/manual/ch10

Написано вполне доступно для айтишника среднего уровня.


И практическая полезняшка на закуску.

На днях заметил неладное — в адресной строке Firefox пропадают префиксы. Надо мне скопировать сцыль из адресной строки, ожидаю на выходе нечто вроде http://www.blabla... а получаю www.blabla...
Непорядок.
Как это исправить. Идем на страницу about:config и выставляем параметр browser.urlbar.trimURLs в false

Attachment

Какому веб-разработчику не приходилось грузить апельсины бочками отгружать файлы? В этом деле важно не забыть про правильные заголовки ответа, в частности «Content-Disposition».

Что любопытно, есть страница, на которой собраны результаты тестов разных браузеров на разные варианты этого поля. Что еще интереснее, оказывается, достаточно имя файла закодировать в UTF-8 и заключить его в кавычки, отбив лишние кавычки слешами:
Content-Disposition: attachment; filename="\"quoting\" tested.html"

greenbytes.de/tech/tc2231/#attwithasciifnescapedquote

Это ничего, что отбитые кавычки браузерами пока не воспринимаются толком, в MS Windows в именах файлов кавычки запрещены великим Биллом. А юниксоиды сами разберутся :)


Полезняшки в тему

Пощелкав кнопками подобрать оформление таблички. HTML and CSS Table Border Style Wizard
somacon.com/p141
quackit.com/html/html_table_tutorial

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

Архив блога

Ярлыки

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) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) 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) Klaipeda (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) купи/продай (9) Photo (8) 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) 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) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)