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

2011-04-30

Вейн

В общем, аглицкий язык не слишком сложный. Но есть моменты убойные. Вот, полюбуйтесь:
vain, vein, vane — произносится как «вейн», но это три разных слова.
Понять, что тебе говорят, можно только из контекста. Если контекст хилый — можно и не понять.


В одной из серий «Том и Джерри» есть момент, когда Том загоняет мыша в угол и, в поисках совета, читает в учебнике: «мышь загнанная в угол — не сопротивляется». Том бросается на мыша, из угла раздаются страшные звуки... высовывается порванный Том и говорит: «не всякому слову верь!».

Это я вспомнил, когда читал тут armed-defence.livejournal.com/73143
Не стоит загонять в угол животных с высоким развитием социальной мышцы, это вам любой натуралист скажет, не говоря уж о этологе.

2011-04-29

frontend

Намедни понадобилось мне смастерить связку Apache HTTPD — Plone. На морду — Apache, а внутре — Plone (backend). Вернее не Plone, это я наврал. На самом деле Zope. Хотя какая в жопу разница. Наверное час потратил, чтобы отладить правило перенаправления. Чтобы не зря, сохраню на память (кусок httpd.conf):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
RewriteLog "logs/rewrite.log"
RewriteLogLevel 3
RewriteMap esc int:escape
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/ploneUploader
RewriteRule ^/ploneUploader(.*)$ http://localhost:8080/VirtualHostBase/http/localhost:80/uploader/VirtualHostRoot/_vh_ploneUploader$1 [P,L]
ProxyPassReverse / http://localhost:8080/
# Ресурс Zope http://localhost:8080/uploader
# Виден пользователям он будет как http://localhost/ploneUploader

Внимательный читатель найдет несколько отличий от канонической версии, доступной в руководствах :) Можно использовать как иллюстрацию к главе 19 зопобука.

И еще кусок конфига Apache, аутентификация и авторизация через виндовые группы пользователей:
LoadModule sspi_auth_module modules/mod_auth_sspi.so
# доступ будет разрешен только ролям (cmsadmin, cmsauthor)
<LocationMatch "/ploneUploader.*">
 AuthName "Uploader svc"
 AuthType SSPI
 SSPIAuth On
 SSPIAuthoritative On
 SSPIPackage NTLM
 SSPIOfferBasic On
 SSPIBasicPreferred Off
 require group VDESK\cmsadmin
 require group VDESK\cmsauthor
</LocationMatch>

Горячку сняли, теперь мне надо будет UserFolder найти (написать?), чтобы Plone интегрировать с группами пользователей из MS Active Directory. И не просто интегрировать а «удобным образом»! А это гораздо сложнее. Будет интересно.

2011-04-28

XML edit

Нашел обещающий редактор файлов XML. Называется «Серна» (Serna Free Open Source XML Editor). Скачал rpm (не было deb-пакета на сайте), поставил через тулзу alien. Серна работать отказалась. Снес.

Скачал архив tgz, там внутре скрипт установки. Установил. Серна работать отказалась. Снес.

Завтра попробую виндовую версию, но что-то мне подсказывает, что тоже восторгов не будет.

Зацените пассаж про хмл: lib.rus.ec/node/157529

2011-04-27

shapefile.py

Было дело, отметил я библиотеку pyshp. Весьма полезная штука оказалась. Правда обнаружился один глючок, связанный, как указал один из разработчиков, с нарушениями стандарта в хидере DBF-файла. Ну, стандарт не я придумал, как и файлы корявые — не я создал. Мое дело маленькое, дали файлы — обработай. И самый простой способ сделать это заключается в поправке одной строки кода. Поскольку мою поправку отклонили, сохраню ее здесь. Пригодится еще:

--- c:/d/code/shape/pyshp-read-only/Python2/shapefile.py Wed Apr 27 03:19:26 2011
+++ C:/d/code/shape/shapefile.py Wed Apr 27 03:23:43 2011
@@ -244,11 +244,11 @@
   headerLength = self.__dbfHeaderLength()
   numFields = (headerLength - 33) // 32
   for field in range(numFields):
    fieldDesc = list(unpack("<11sc4xBB14x", f.read(32)))
    name = 0
-   fieldDesc[name] = fieldDesc[name][:fieldDesc[name].index("\x00")]
+   fieldDesc[name] = fieldDesc[name].replace('\0', '')
    fieldDesc[name] = fieldDesc[name].lstrip()
    self.fields.append(fieldDesc)
   terminator = f.read(1)
   assert terminator == "\r"
   self.fields.insert(0, ('DeletionFlag', 'C', 1, 0))

На мой взгляд, старая строка кода стремная полюбому. Как ни крути, а определять строку исходя из 100% уверенности, что в ней есть нолик несколько опрометчиво. Особенно считав эту строку из файла неизвестного происхождения.
Может мой вариант (да и не мой он вовсе, это изначальная версия кода) и не отвечает стандарту DBF на 100%, зато работает. А это главное.

2011-04-26

Чарльз Йеркс

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

lib.rus.ec/s/1188
Прототип главгероя wikipedia.org/wiki/Charles_Yerkes, wikipedia.org/wiki

2011-04-25

HBase в Facebook

У меня проскакивало про Hadoop. Вот еще на глаза попалось как бы описание применения Хадупа (HBase is the Hadoop database) в громадном проекте. Казалось бы, зачем оно мне надо? Я такими проектами не занимаюсь и вряд ли буду. А зачем люди интересуются космопроектами? Может потому, что приятно видеть мощь разума?

В Facebook ввели новый функционал «социального почтового ящика», агрегирующий входящие сообщения из электронной почты, мессенджеров, SMS и сообщений на сайте Facebook. Изначально они разрабатывали Cassandra именно для использования в этом проекте, но в итоге этот пост заняла достаточно противоречивая технология: HBase.
...
HBase представляет собой горизонтально масштабируемую систему хранения таблиц, поддерживающую высокую частоту обновления строк в массивных наборах данных. ...
В основе модели данных HBase лежит концепция BigTable от Google, которая хорошо подходит для поиска строк по идентификаторам, фильтрации и сканированию наборов строк. Из слабых сторон можно назвать отсутствию поддержки сложных запросов, но этот факт компенсируется широким спектром инструментов по аналитике, в том числе и Hive, разработанном в самом Facebook для работы с их многопетабайтным хранилищем данных. Помимо прочего HBase основана наApache Hadoop и HDFS, с которыми Facebook и так активно работает для анализа данных.

insight-it.ru/masshtabiruemost/hbase-v-facebook-135-milliardov-soobshhenijj-v-mesyac

Ненавижу слово «функционал» в значении слова «функциональность». А что делать?

2011-04-24

KVM

Virtualization With KVM On A Debian Squeeze Server
Прекрасная статья (howto) для быстрого старта по теме.
Предполагается, что у вас есть железка-сервер с аппаратной поддержкой виртуализации (для проверки выполните: # egrep '(vmx|svm)' --color=always /proc/cpuinfo) и еще одна железка в качестве раб.станции, чтобы общаться с консолями гостевых машин.

This guide explains how you can install and use KVM for creating and running virtual machines on a Debian Squeeze server. I will show how to create image-based virtual machines and also virtual machines that use a logical volume (LVM). KVM is short forKernel-based Virtual Machine and makes use of hardware virtualization, i.e., you need a CPU that supports hardware virtualization, e.g. Intel VT or AMD-V.

First check if your CPU supports hardware virtualization - if this is the case, the command
egrep '(vmx|svm)' --color=always /proc/cpuinfo
should display something, e.g. like this:
root@server1:~# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
If nothing is displayed, then your processor doesn't support hardware virtualization, and you must stop here.

howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server

А, не знаю... мне пока виртуалбокса хватает.

2011-04-23

Мракобесы

Когда мне в долетающих из-за окияна обрывках культурповидла попадаются примеры вроде притеснения мужиков бабами, как в случае с феминизмом, я никак не возьму в толк, почему им не дают обратку? Тем же коромыслом. Типа, одела обтягивающую блузку — харрасмент, и все такое.
А тем временем мультикультурное и политкорректное повидло уже и на наш вентилятор попало:

Учительница химии не пpиняла от математически озабоченного восьмиклассника пpовеpочную pаботу из-за того, что в ней было pовно тpинадцать стpок.
Суевеpие, — сказала она, — это тоже веpа. Моя веpа не pазpешает пpовеpять такую pаботу.

Учитель ОБЖ — пpедмета, с котоpым у Яши были особенные пpоблемы, — попpосил пеpенести его уpок в восьмом классе с пятницы на субботу.
Аллах акбаp! — мотивиpовал он свою пpосьбу. — Коpан запpещает мне учить в пятницу. Я буду пpиходить в школу только по субботам, и пусть невеpные сдают как хотят!

Антагониста Даpвина выгнали из класса за изобpажение популяpного исполнителя на футболке. Выгоняя, учительница наизусть пpоцитиpовала двадцатую главу библейского Исхода: "Hе делай себе кумиpа..."

А в девятый класс, где учились убийцы кошек, однажды на уроке зашел завуч.
Поздравляю вас, дети, — сказал он. — Сегодня Комоедицы — большой славянский языческий праздник. Будем волхвовать, прыгать через костры и приносить жертвы на капище. Приносить жертвы будем, — повторил он, пристально посмотрев на героев ислама. — А физрук с военруком подержат, чтобы не вырывались

riidekast.livejournal.com/543639

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


Никто не знает, случаем, как на линуксовом хосте запустить в virtualbox-е образ Win 2008 R2 SP1, утянутый с сайта MS? А то у меня он высыпается в BSOD при поиске файла реестра. При любых настройках виртбокса.

2011-04-22

Фаерволл

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

Мы живем в мире информации. Для меня это означает следующее:

- в мозг постоянно поступает море новой информации;
- за право получить доступ к моим мозгам и запихать туда нужную информацию в мире существует весьма нешуточная конкуренция: Рибок - лучший! Нет, Найк - лучший! Только с Дюрексом Вы получите полное удовольствие! Ну и так далее.

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

Автоматическая фильтрация:

- Обложка журнала "Спид-инфо" на лотке. Глаза соскальзывают, как только мозг осознал название.
- Звонок в дверь: "Что Вы думаете о Боге?" Речевой центр выдает фразу: "я предпочитаю коньяк и женщин".
- Телефонный звонок: "Здравствуйте, мы хотим предложить Вам..." - молча вешается трубка.
- Бумажное письмо с рекламным стикером или журнал в ящик. Не читая - в мусор сразу.

Интеллектуальная фильтрация:

- кто-то из хороших друзей или из людей, которых я считаю экспертами по определенным вопросам, что-то сказал. Прослушать, понять, отреагировать.
- Бумажное письмо из налоговой. Прочитать, осознать, отреагировать.
- "Я не брала конфету". Посмотреть в честные глаза, дождаться, пока покраснеет и отведет глаза первой.

И так далее, т.е. принцип более или менее ясен.

amironov.com/blogs/node/468

Суть в чем? Даже наличие Великой Китайской Стены (или как там называется китайский проект национального фаерволла?) не освобождает от необходимости иметь в своем мозгу фильтры. Так было, так есть и так будет (дай Бог).
А те кто уповают на защитника извне своей головы, получают хозяина. Даже странно, что некоторые этого не понимают.

2011-04-20

MS Kinect

Не прошло и года, как укупили мы таки приставку с датчиком движения. Для активных игр не одними только пальцами. Покупая к Новому Году телик, мы так и планировали — такая панель прям просит приставку.

Микрософт продает за $400:
The new Special Edition Xbox 360 250GB console with Kinect
xbox.com/en-US/Xbox360/Consoles/Bundles/Xbox360250GBwKinect

Мы купили за 16000 руб. включая доп.игруху, чего-то про животных, акромя комплектной Адвентуры, с доставкой и «чаем»:
Microsoft Xbox 360 Slim 250 Gb + KINECT + Kinect Adventures 5 игр + HDMI-кабель
xbox-360.electrorai.ru
Привезли в тот же день, что и заказ приняли. Молодцы.

Кинект на Я.маркете
market.yandex.ru

Вчера, когда привезли, мы ее опробовали. Ребята, это такой восторг! Захватывает в первые секунды вхождения в поле зрения сенсора. Он реально строит скелетик и отслеживает узлы этого скелетика. Или двоих. В комплекте идет диск с маленькими аркадами, мы сразу эпизод прогнали на двоих — чуть не уписались от восторга. Двигай руками-ногами и управляй персонажем в игре. Это на слух — фигня, не попробуешь сам — не поймешь, какой это азарт.

Вот я, умом я все знаю: и как он работает, этот кинект, и как эти игрухи выглядят. И в магазине я видел как детки прыгают. Но это все не вызывает особых эмоций. Но стоило три секунды пошевелить грабками на экране — и все, пропал.

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

Традиционно — что не понравилось.
Движения аватара запаздывают, ощутимо. Надо приспосабливаться, но не всегда это приспосабливание помогает: пропущенный из-за отставания резкий мяч — раздражает. Поскольку в сенсоре используются фотокамеры, помогает подсветка игрока лампой. Я включил люстру, стало получше, но не сильно.
Сенсору надо много места, от двух метров перед экраном и более. Не в каждой квартире найдется такое место. В азарте, при особо амплитудных движениях есть риск вынести обстановку или конечность :) Зависит от прочности обстановки. Пришлось двигать мебель и пока не ясно, как теперь реорганизовать помещение, чтобы не двигать мебель постоянно.

Полагаю, следующее поколение приставок с кинетиком будет улетное без оговорок.

О, чуть не забыл, к приставке прилагается HDMI шнудок. Так этот шнудок с моим теликом не подружился. Нет картинки на экране и баста. Хорошо, у меня уже был правильный кабель, а то я уж нервничать начал — битая приставка, ойойой. Не, обошлось, кабель убогий.

2011-04-19

Бюрократы

Вот этот бюрократ мне нравится больше всего:

Скромно и со вкусом.

Там еще есть фотки. Из Йемена, Индии, Китая, Либерии и проч.
Занятно.

2011-04-18

Библиотека

Поскольку новая электрокнига (Onyx A61S Гамлет) не показывает названия книг и имена авторов а показывает только имена файлов :( , мне пришлось реорганизовать рабкрин свалку, гордо именуемую библиотекой. Собрал я в одну кучу все, что наскреб по сусекам, раззиповал архивы. Получилось более 500 мегов в более чем 900 файлов FB2. Как потом оказалось, было немало дублей. Чтобы этим можно было пользоваться после заливки в ебуксу, надо было придумать способ разложить все по каталогам и дать файлам вменяемые имена. Файлы желательно зазиповать, ибо ебукса понимает fb2.zip а место сэкономить всегда приятно.
Каталоги решил назвать по именам авторов, а зипы по названиям книг.

Полдня возни и — voilà. Файло залито в ебуксу и даже читается.

Выкладываю скрипты, может кому еще пригодится. Фактически парсинг FB2 и просто примеры кода на Python.

fb2workshop - Python-скрипты, с помощью которых я организовал собранную за 4 года кучу-малу книг (в формате FB2) в нечто приемлемое - каталоги авторы, книги по названиям, пожаты в ZIP. Благодарности Con Radchenko.
sites.google.com/site/vasnake


один из трех скриптов, остальные два в архиве

2011-04-16

micro SD cards adapter

Предостережение потребителю.

В комплекте с ибуксом купил карту памяти, ибо в комплект книги карта не входит (а к лбуку давали карту!). Карта на 8 гигов, микроСД и к ней адаптер на формат SD. 700 рублей.
И все бы хорошо, но на карту не получается ничего записать. Readonly. Хорошо, у меня есть известный опыт общения с носителями типа дискет, у которых есть блокиратор записи. Уже давно рефлекс выработался — носитель ридонли? Сдвинь язычок.

Смотрим фотки:

Сверху кингстоновский адаптер. Тот, что мне продали и в котором карта ридонли. Снизу хороший, годный адаптер, пришедший ко мне в комплекте лбука хрен знает когда. Разницу видите? У кингстона нет язычка защиты от записи. Вообще нет. Любая карта в этом адаптере всегда будет только на чтение. Прикольно, да? Кстати, в магазе есть фотка, на ней проглядывается наличие язычка. Обман, да.

Еще фотка, участники те же, только перевернуты:

Смотрим на качество исполнения контактов. Сверху — паяный на коленке пьяным дядюшкой Лю кингстоновый адаптер.

Кстати, есть еще одна проблема с этим злосчастным адаптером — его габариты не позволяют ему без проблем заехать-выехать из гнезда в книге. Я его ножиком выковыривал.
Вы все еще любите продукцию Кингстон? Будьте бдительны.

Кингстоновый адаптер на выброс, в дело пошел старый сандисковый.

microsdadapter.net/micro-sd-adapter

2011-04-15

Onyx BOOX A61S HAMLET

На днях приобрел читалку, Onyx A61S Гамлет. На замену старого Lbook V3 (vasnake.blogspot.com/ lbook). Экран побелее, текст почернее, процессор побыстрее. На этом преимущества как-то заканчиваются. Ну, еще цена поменьше.

Помацал, потыркал кнопочки, проверил на совпадение своим ожиданиям. Что понравилось — реально быстрее чем старая книжка. Листает мгновенно, открывает книги очень быстро, 3-5 секунд или около. Понравилось, что размер шрифта можно менять одним движением — щелк джойстиком вверх или вниз и шрифт увеличился или уменьшился. Приятно, что белый чуть белее а черный чуть чернее. Но, на мое имху, разница (размер этого чуть) не принципиальная.
Еще понравилось качество исполнения, сборки. Все аккуратно, симпатично. В руках держать приятно, не то что старый лбук. Тот весь угластый и небрежно сляпанный.

А теперь десерт. Что не понравилось.

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

Мне хотелось, чтобы книжка читала epub-ы (я их Калибой получаю), и она их читает. Но, по чесноку, лучше бы разработчики прямо заявили, что епубы читаются хреново, я бы не посылал им лучи поноса. Пыщ-пыщь. В читалке есть две программы для епубов, FBReader (древней версии, что-ли?) и Адобовская поделка. Одну из этих опций можно выбрать в головных настройках (про настройки — песня отдельная). Либо — либо. Так вот, фбридер открывает епубную книгу, но показывает кракозябры невзирая на то, что я перебрал все опции кодировок и шрифтов. Ну не шмогла я, не шмогла :( Адобовская поделка справляется с отображением текста епубной книги, но настроить на приятное глазу отображение ее невозможно. Текст бледный, размер шрифта в процентах, жирность шрифта не выставляется. Короче, я пролетел мимо epub-ных книг как фанера. Может быть, когда нибудь появится новая прошивка... не знаю. На моем булыжнике FBReader хавает епубы в любом виде не задумываясь.

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

Многовато выходит минусов, да? Не грузитесь, в целом — все в ажуре, а идеал недостижим.

Вердикт — неплохая читалка для FB2, хороший потенциал для появления новых прошивок, свои деньги стоит, но на грани. Не могу назвать безусловно хорошим приобритением.
Если Lbook V3+ победил проблемы со стабильностью (зависонами), то он, пожалуй, получше будет чем Опух А61С Гамлет. Получше для меня, ясенпончик.

Да, покупал в Palmstore, который МакЦентр, оказывается. Ночью заказал, пошел спать. Разбудил меня курьер, не считая двух телефонных звонков на тему «вы уверены, что заказ ваш? Куда везти?». Быстро, удобно.

В целом — доволен. Надеюсь, новая читалка матери понравится не меньше старой.

UPD
Еще одна немаловажная промашка Опуха — файловый менеджер не показывает названия книг и имен авторов из заголовков самих книг. Показывает, как обычный тупой файлменеджер - имена файлов. Хорошо хоть русские буквы переваривает.
Теперь мне придется во всей библиотеке переименовывать файлы, чтобы хоть как-то можно было ориентироваться. Поскольку лбук умел вытаскивать имена из заголовков книг, я не озадачивался именованием файлов, оказалось напрасно.

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

2011-04-14

nginx

Ко дню советской космонавтики Игорь Сысоев выкатил nginx версии 1!
Поскольку я не занимался еще такими проектами, где надо было бы жестко оптимизировать веб-сервер и выискивать отдельные проценты производительности (ну котик, ну еще капельку), то и внимания нгинксу особо не уделял. Так, по краю сознания пробегал он где-то. А тут повод — день рождения первой версии. Ну и ознакомился я с деталями, почитал разное.

В общем, всё как всегда — если вы хотите, чтобы ваш сервер обслуживал максимально возможное количество запросов на секунду времени, вам надо изучить — на что уходит это время при обработке запросов. Составить профиль выполнения типичного запроса. И только после этого принимать решение — как и чем эффективнее обслуживать этот запрос. Поэтому придется разобраться в устройстве и заточенности инструмента — понять силу и слабость доступных веб-серверов. Разные средства для разных задач — ничего нового.

Кому непонятно, приведу аналогию с грузоперевозками: груз из точки А в точку Б можно доставить разными средствами, вертолет, самолет, грузовик, даже баржа. Что выбрать? Зависит от условий. Если надо максимально дешево и вес большой — баржа, при условии, что времени у вас много. Если надо максимально быстро — самолет, при условии, что денег вы не считаете. Дальше сами продолжите.

На память: Apache хорош для задач тяжело считаемых и с малым количеством коннектов; nginx хорош для большого количества коннектов и малым временем обсчитывания запроса. Или по другому, nginx прекрасен как фронтэнд ко всем остальным серверам приложений и просто нагруженным веб-серверам. А Apache прекрасен конфигурабельностью, но не блещет под наплывом посетителей.

sysoev.ru/nginx/getting_started
Хотите сделать всё правильно? Начните отсюда: ospf-ripe.livejournal.com/754

Сколько вы знаете способов организации обработки? fido7.ru.unix.prog/ /e8f8edf4f2f2447b

2011-04-13

Пиастры же!

Странно, почему-то я думал, что уже отмечал у себя модуль xlrd — набор средств для чтения файлов XLS Python-ом. Оказывается — нет, не отметил. Ну и ладно, вот, пожалуйста: чтение и запись файлов ёкселя (XLS) на Python.

Что поделать, если офисные работники обожают пустографки? Ничего с этим не поделаешь, приходится оперировать тем, что дают. И вот, в процессе переработки выданного ёксельного файла выяснилось, что Python-ский скрипт выдает строку вида «12345.0» там, где должна была быть строка вида «12345».

Ну понятно, на каком-то этапе кто-то решает, что это число, причем с плавающей точкой, хотя колонка ёксельная вполне себе текстовая (да и таких как бы чисел там не более 10% среди строк, которые при всем желании за число не примешь). Разборки, отладки, то да сё... Короче — при считывании ячейки с таким числоподобным содержимым ёксель выставляет ей тип — число. Принудительно. Несмотря на то, что я вручную поменял формат ячейки на текстовый. Вот это, дети, и называется ИИ (искуственный интеллект) штоп он сдох. Добиться от ёкселя, чтобы он не превращал мне значения в число я смог только одним способом: добавил пробелов в ячейку (вроде как перед строкой, уже точно не помню).

Можно было бы фильтр в код скрипта добавить, да только это нельзя назвать универсальным решением, ибо заранее не скажешь, откуда берется точка с нулем — то ли из форматирования числа, то ли так и в самом деле в ячейке записано. На мой взгляд средство одно — только причесать исходный файл. И ладно бы, но мешает ИИ, штоп он сдох. А вы спрашиваете — почему я не люблю Микрософт. Да потому, что у них за правило заведено — считать пользователей дебилами а программы — умными. А получается как всегда.

Откуда пиастры? Да я ёкселю как тот попугй - «текст это, текст! Текст же!...».

2011-04-12

Apache mod_expires

В наш век CMS и всеобщего динамизма, простые решения по кешированию не могут закрыть тему. Но как часть общего решения — весьма. Модуль Apache, генерирующий нужные заголовки HTTP, которые заставляют браузер подольше держать в своем кеше разные файлы:

how you can configure Apache2 to set the Expires HTTP header and the max-age directive of the Cache-Control HTTP header

<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"
</FilesMatch>
</IfModule>

или так:

ExpiresActive on
ExpiresByType image/jpg "access plus 60 days"
Или по разному.

howtoforge.com/make-browsers-cache-static-files-with-mod_expires-on-apache2-debian-squeeze


С днем советской космонавтики!

2011-04-10

Не так страшен черт

Наташка мне рассказывала, как ее, любительницу поплескаться в волнах, стало утаскивать в море. Было очень страшно, хотелось только одного — ЖИТЬ! Каким-то чудом сообразила она, что плыть надо под углом к берегу и мало-помалу выбралась.
Меня так не утаскивало, но могу представить этот ужас, когда необоримая сила уносит тебя от берега. Страсть какая.

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

Так вот: 95 процентов всех утоплений в серьёзных морях-океанах случается из-за... rip currents, то есть встречных течений! Вы когда-нибудь о таких слышали?...
Никому никогда в голову не приходило просветить меня на предмет "рипов", а уж мне изучить это самому - и подавно. В лучшем случае я видел таблички: "Купаться запрещено!"
Между тем "рипы" встречаются на всех без исключениях океанических пляжах в мире. Хорошо, когда ходят спасатели, которые постоянно переставляют с места на место красные флаги. До последнего времени я не понимал, зачем они это делают, по какому принципу определяют опасные для плавания места. Вроде вокруг камней, но иногда и в 100-150 метрах от них...
О физике возникновения "рипов" вы можете почитать самостоятельно в любимой Википедии. Технически же неодарённым товарищам достаточно знать, что постоянно то в одном, то в другом месте прямо у самого берега возникают коридоры с обратным (в сторону моря) течением. Бывают "рипы" устойчивые, и они не так опасны, потому что, как правило, про них знают все местные и подсказывают, куда не нужно ходить купаться. Но бывают так называемые flash rip currents, которые приходят и уходят; как раз они и представляют смертельную опасность.
В большинстве случаев коридор "рипа" узкий, 2-3 метра, и из него несложно выскочить вправо или влево. Также в большинстве случаев скорость течения в "рипе" 4-5 км/ч, что тоже неопасно.
Однако по несколько раз на дню на одном и том же пляже могут возникать "рипы" шириной до 50 метров и длиной до 200-400! Если к нему добавится скорость в 15 км/ч, то, попав в такой "рип", если ты не знаешь, как с ним бороться, можно читать молитву.

computerra.ru/sgolub/602692
wikipedia.org/wiki/Rip_current

В вики картинка есть, фотка с высоты. Посмотрите и все поймете. В общем — НЕ паниковать и либо плыть поперек, либо по течению, пока не вынесет в спокойную воду. А если плавать не умеете — не заходите в воду глубже чем по пояс.



Еще про воду

Человечество такое крутое, да? А что мы знаем про мировой океан? Про его дно? Да ничего практически.
Посмотрите ролик blogs.computerra.ru/10473 про Virgin Oceanic
Еще одна глобальная затея сэра Ричарда Бренсона. Великий человек, чего уж.



И еще про чертей

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

Но все равно, это событие напоминает, что не следует использовать в двух местах один и тот же пароль. И что менять их надо почаще. И выглядеть они должны как длинная абракадабра.
И тут не обойтись без программ вида Keepass. Рекомендую.
(уходит менять пароли)

2011-04-09

gov.ru

Предполагается, что теперь уйдет в прошлое ситуация, когда терпила бегает из госконторы в госконтору нося им справки про себя. По сути работая курьером в ситуации, когда ему, терпиле, требуется услуга от государства, существующего как бы на налоги терпилы.
Мне вот интересно, как будет расшиваться проблема типа «...эта справка есть в БД, посмотрите...» - «...а я вам говорю, гражданин, что этой справки в БД нет! Идите и принесите!».

Распоряжение Правительства утвердило перечень из 264 документов, которые при обращении гражданина за государственной услугой ведомства будут запрашивать друг у друга самостоятельно
minsvyaz.ru/ru/news

И.Массух напомнил, передает ИТАР-ТАСС, что с 1 июля по закону ведомства не будут иметь права требовать с граждан документы, которые уже есть в базах других ведомств. Вместо этого они будут обмениваться документами в электронном виде между собой.
bit.prime-tass.ru/news

Треть российских госорганов подключились к системе межведомственного электронного взаимодействия, которая должна избавить россиян от лишнего хождения по инстанциям, поиска справок и документов.
Подробнее: ng.ru/economics/2011-04-07/4_gosuslugi


А вот еще хорошая поляна, богатая:

Министерство регионального развития РФ предлагает свой вариант решения квартирного вопроса россиян: в регионах появятся доходные дома, пишет газета «Коммерсантъ» со ссылкой на заместителя главы Минрегиона Константина Королевского.
expert.ru/2011/04/7/vtoraya-zhizn-dohodnyih-domov

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

2011-04-08

USB-HDD-CD/DVD

Полезняшка первоклассная, корпусок для HDD, умеющий прикидываться приводом CD/DVD используя образы iso. Поклал исошников на все случаи айтишной жизни на такой коробок и не надо мудохаться с болванками и приводами.

Zalman ZM-VE200
zalman.ru/product/product_read.php?id=171
habrahabr.ru/tag/zalman VE200

При случае надо прикупить.

2011-04-07

Линувсякое

Выполнив все, что разьяснено в этом howto, сказать «и это было еще легко» - шутка юмора, не иначе.

Installing Oracle11 on Debian Lenny
debian-administration.org/article/656/Installing_Oracle11_on_Debian
You should now have a fresh Oracle11 installation. This was the easy part.

Хотя, в целом, действительно не очень сложно. Даже перекомпилировать ничего не надо :)
Кстати, хотя и расписана установка на Lenny, утверждают, что и на Squeeze точно также надо ставить. С добавкой конфигурации «огромных страниц» и правкой скрипта перезапуска служб под требования LSB.


Небольшой обзор «что нового/интересного в Debian Squeeze».
KDE Plasma; Sun/Oracle's ZFS через ядро от FreeBSD; pure free Linux kernel (нет non-free firmware); KMS and Plymouth; Ubuntu's Software Center; EGlibC вместо GlibC; и т.д.

2011-04-06

SWIG

Архиполезная генерилка интерфейсов. Жаль, что она не попалась мне раньше, когда я раздумывал, чем бы мне заменить микрософтовый COM в некоторых моих проектах. С использованием этой штукенции можно не напрягаясь (проблемами сопряжения) перенести затратный код в С/С++ из скриптов. Или сбацать ядро (движок) на С-ях а остальной обвес сделать скриптами. Удобнооооо! Ояебой.

Simplified Wrapper and Interface Generator — свободный инструмент для связывания программ и библиотек написанных на C/C++ со скриптовыми языками, такими как Tcl, Perl, Python, Ruby, PHP ... Основная цель — достигнуть связи с минимальными усилиями: в файлы заголовка программы добавляется небольшое количество указаний, по которым SWIG генерирует исходный код для склеивания C/C++ и нужного языка. В зависимости от языка, результат склеивания может быть представлен в трех формах:
исполняемый файл исходной программы со встроенным интерпретатором скриптового языка
разделяемая библиотека, к которой существующий интерпретатор может подключаться в виде расширения
разделяемая библиотека, которая может подключаться к другим программам, написанным на нужном языке (например, с помощью JNI для Java)

wikipedia.org/wiki/SWIG

2011-04-05

Огнелис4

В браузере появилось много кавайных няшек. Вот, к примеру:
  • В состав браузера интегрирован инструмент Web Console (Web Inspector)
  • Блок "App Tab" предназначен для закрепления и автоматической загрузки вкладок с сайтами, которые пользователь просматривает несколько раз в день
  • интегрировано дополнение Firefox Panorama (Tab Candy), которое представляет возможность сгруппировать вкладки по характеру выполняемой работы, а затем легко переключаться между группами вкладок
  • Поддержка технологии написания дополнений JetPack, установка которых производится без перезапуска web-браузера
  • Интегрирована поддержка API IndexedDB, позволяющая использовать в JavaScript локальные индексируемые БД
  • Поддержка технологии web-сокетов (Web Sockets)
  • Значительно ускорено восстановление сессии за счет открытия вкладок из кэша
  • url about:memory показывающий потребление ресурсов браузером

И масса других, не менее полезных и интересных новшеств. Читайте статью
citforum.ru/news/25920

2011-04-04

Shapefile.py

Еще одна находка для питонистов. Модуль для работы с ESRI Shapefile. Чистый Python, никаких внешних модулей. И ведь работает, проверено.
Подглючивает, правда, местами. Но ничего такого, с чем нельзя было бы справиться.
Я с помощью этого модуля упихиваю в Ораклевую БД присланные заказчиком материалы. Пока неплохо получается.

code.google.com/p/pyshp/wiki/HowToInstallPyshp
pypi.python.org/pypi/Python Shapefile Library
geospatialpython.com/2010/11/introducing-python-shapefile-library
packages.python.org/Python Shapefile Library

А вот еще материалы на эту тему:
invisibleroads.com/tutorials/gdal-shapefile-points-save
geodacenter.asu.edu/pysal
scipy.org/Cookbook/Matplotlib/Maps

2011-04-02

Глобус

Сфера, сфероид, эллипсоид, геоид. Да вы посмотрите на этот ассимметричный, неровный помятый кусок материи! Удивительно захватывающая штука.
Глобус — жалкое подобие.

http://www.esa.int/images/16_9_L,400.swf



И вот как мерять расстояние (площадь) по поверхности такого кукенделя? Только моделированием, не иначе.

ученые использовали данные, полученные аппаратом GOCE (Gravity field and steady-state Ocean Circulation Explorer...). На борту этого аппарата были установлены высокочувствительные акселерометры, которые и позволили аппарату получить данные о гравитационном поле Земли. На сбор данных у GOCE ушло около двух лет.
На основании полученных данных исследователи составили трехмерную модель геоида

lenta.ru/news/2011/04/01/goce
esa.int/esaCP

2011-04-01

Король умер! Да здравствует король!

Еще в 90-х я остановил свой выбор на HDD от IBM. Уже и не помню почему, может потому, что IBM тогда как локомотив волокла за собой всю индустрию жестких; может потому, что диски ее были самые быстрые по сумме показателей. А может потому, что я неровно дышу к самое IBM.
До сих пор помню диск, который мы отправили заказчику за полярный круг под Новый Год. И там на разгрузке его хорошенько ебнули (я видел корпуса компов, переживших ту разгрузку — слезы из глаз). Местный умелец диск вскрыл, помацал — починить не вышло, диск заикался и страшно щелкал. Отправили его нам. Я уж и не вспомню, что мы с ним сделали, почистили от мусора да аккуратно собрали, что-ли. Короче, диск этот проработал еще больше пяти лет и ушел в составе компа к кому-то из неимущих, по благотворительности. Может и щаз еще работает, IBM, не хрен собачий.

С 2003 пришлось переключиться на диски Хитачи (HGST), в глубине души считая их по прежнему айбиэмовскими.
И вот теперь надо переключаться на диски WD. И от IBM в них уже не будет ничего. Но это не страшно, ибо диски от WD есть на все вкусы. Есть быстрые, есть тихие и можно найти надежные. Хорошие диски, но эмоций не вызывают.

Western Digital объявила о грядущей сделке по приобретению Hitachi Global Storage Technologies — подразделения корпорации Hitachi, специализирующегося на производстве жёстких дисков. Сумма сделки составила порядка $4,3 млрд

megabyte-web.ru/hardnews
wdc.com/en/company/pressroom
hitachigst.com/press-room/2011

Архив блога

Ярлыки

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)