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

2011-09-30

Япона мать


Срывая покровы:

«Если после недели ежедневного сна по 5–6 часов и работы по 12–14 часов вы чувствуете непонятный упадок сил, выпейте наш новейший энергетик, включающий экстракты тибетских растений, набор жизненно необходимых микроэлементов, имеющий чудесный вкус свежих яблок, и вы немедленно ощутите бодрость и сможете порадовать свое начальство беспримерным качеством своей работы!» — доносится реклама из телевизора, из радиоприемника в машине.
...
При этом японцы не первый год входят в десятку мировых лидеров по продолжительности жизни. Правда, при этом, похоже, совершенно не учитывается, что дольше всего живут крестьяне, которые всю жизнь работали методично, но без надрыва, ели то, что сами выращивали, и никогда не употребляли никаких «энергетиков», кроме саке местного разлива.

abc-gid.ru/articles/show/2208

Чегой-то не тянет завидовать японцам.

2011-09-29

Central Authentication Service


На днях в фокус моего внимания попал CAS. Central Authentication Service — опенсорцный сервер на Java, реализующий достаточно простой и надежный протокол аутентификации на токенах. Фишка в том, что он централизован как LDAP сервер аутентификации и при этом прост как Basic Authentication.

CAS is an Enterprise Java solution to web application authentication that also provides the benefit of Single Sign On (SSO). Technically, SSO can be achieved because the authentication can be removed from the web application and handled centrally. And, when this authentication is handled by a single service, access to many services can be granted once and "remembered" for the life of the web session or even longer though not recommended. Remember too that the SSO feature does not have to be employed and yet CAS authentication still provides a quality authentication mechanism.
CAS is a collaborative effort that has produced a very solid central authentication service using the Java development platform. CAS also provides a broad selection of clients for use with all of the Enterprise and scripted web technologies.

wiki.jasig.org/display/CASUM/Technical+Overview
wiki.jasig.org/display/CASC/Home
wiki.jasig.org/display/CASC/Zope+client
owasp.org/index.php/Category:OWASP_Project

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

kwords: authentication, authorization, SSO, security, login, java, server

2011-09-28

Money


К вопросу об полезности разных валют. Что полезней для кошелька — рубли, доллары или евро?
Две картинки, цена доллара и евро в рублях за последний год:




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

Динамику за другие периоды времени можете посмотреть сами.

Вообще. много разного в голову лезет при рассматривании этих картинок и накладывании их на сообщения новостных лент за соответствующие периоды времени.

2011-09-26

UserName


Пара полезняшек на тему Zope:

wiki.zope.org/zope2/FAQ
это единственное место, где я нашел исчерпывающую информацию о username:
how can I get username?
Script (Python)
from AccessControl import getSecurityManager
user = getSecurityManager().getUser().getUserName()
DTML
<dtml-var "_.SecurityGetUser().getUserName()">
ZPT
<x tal:replace="user/getUserName"/>


old.zope.org/Members/mrlex/ACUF — один из CAS UserFolder, отличающийся от других тем, что хорошо описан и документирован.

2011-09-25

True Grit


Намедни отсмотрел :) фильму True Grit (2010), братьев наших Коганов (Coen brothers). Без сомнений, хорошая фильма, годная. Хотя и грустная. Общие впечатления от фильмы, как будто засмотрел смесь из Dead Man и No Country for Old Man. Но я думаю, оба этих фильма заметно лучше Тру Грит.

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

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

А знаете ли вы, что Jeff Bridges, наряду с ролью шерифа в Тру Грит отыграл в TRON: Legacy того же, 2010 года? Очень разные роли.

Теперь хочу засмотреть True Grit (1969). С Джоном Уэйном.

2011-09-24

resumable HTTP upload


Дело движется помаленьку. Краткое содержание предыдущих серий.

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

VCU v.2 - Vasnake web Chunked Upload - к прототипу (версия 1, см.чуть выше) добавил веб-клиента на базе плагина Silverlight. Теперь файлы можно грузить прям из браузера. Что ждет реализации: веб-клиент на Java; возможность увидеть, что именно ты грузил на сервер и скачать это с сервера; протокол версии 3 с ликвидацией кодирования чанков base64, что должно привести к солидному ускорению.
sites.google.com/site/vasnake

Как и следовало ожидать, плагин Silverlight наилучшим образом работает с браузером MS Internet Explorer. И памяти ему надо меньше чем другим, и плагин по таймауту не вышибает, и браузер не виснет.

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

В MS IE протестировал на файлах весом до 3.5 гигабайт включительно. Работает.

kwords: web http chunked resumable upload, Zope, python, silverlight, javascript

2011-09-23

Жить хорошо?


Поделюсь наблюдением, на мой взгляд, достаточно занятным.

В последнее время (полгода? год?) наблюдаю, как народ en masse тянется с рабочих мест (из контор и безнес-центров) по домам, начиная с четырех дня и даже раньше. Я иду в контору а они мне навстречу.
Я это понимаю так — рабочий день начался с девяти утра и закончился в 15 — 15:30. Шестичасовой рабочий день, включая обед и перекуры. А как еще?
Коммунизм не за горами? Подихуево.

Теперь меня еще труднее будет убедить в том, что людям здесь трудно, холодно и голодно. И так жалобщиков не жалую а теперь ваще.

Депрессия?
Какая, на хер, депрессия?! И это ты так лежишь, потому что депрессия?
Да ты с ума сошел! Какая на асфальте может быть депрессия?

Я на катер бежал. Это был последний катер. Он уходил в двенадцать ночи. Меня отпустили со службы так, чтоб я не успел, а я добрался.
Восемь километров бегом, на повороте сел в автобус, сорок минут на нем езды и, как из него вылез, до бухты еще два километра бегом.
А катер – вот он. А перед ним идет погрузка ракет. Дорогу перекрыли. Я подбегаю, весь мокрый, а меня не пускают, и катер уходит на моих глазах.

Вот это был удар! У меня тогда просто руки повисли, сил никаких, все отдал этому броску.

Я потом постоял-постоял, и пошел назад, а поземка, в лицо летит ледяная крошка, сечет его в кровь, автобусов нет, попуток нет, ночь, свет только от снега и тридцать километров до поворота, в гору пешком, с горы бегом, чтоб пот, который по спине струится не остыл, а ты говоришь депрессия.

Какая, на хер, депрессия?!

Швартовщиков смыло – никто даже не остановился, никто никого не искал, потому что вода минус два градуса – жидкий лед. Плюхнулся в нее – остановка сердца и плавай потом оранжевым поплавком.

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

От лома спина дрожит и ноги. В тепло попал – уснул на подоконнике.

Мы света белого не видели. У нас идешь по кораблю и думаешь: "Ну вот, ничего не случилось, пока ничего не случилось, хорошо, что ничего не случилось!".
А когда случалось?

Иногда, так случается, что если сразу начинаешь говорить, заикаешься. И тогда выдохнуть надо, сказать себе пятнадцать раз скороговоркой: "Все будет хорошо!" – и потом уже можно разговаривать.

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

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

Какая на асфальте может быть депрессия?
(С) А.М.Покровский, 2001

rasstrel.ru

2011-09-22

configure && make && sudo checkinstall -D


Как-то я компилял Geany, годный текстовый редактор. Понравилось. Нынче решил компильнуть Pidgin, сподвигнутый неслабым списком изменений в новой версии. Когда эти изменения еще доберутся до Squeeze.

Скачал исходники, распаковал, вооружился инструкцией и ... оп-па. Готово. Правда установка пакета на шаге checkinstall подвисла, пришлось рвать и ставить через gdebi.

Заклинания такие:
su -l
aptitude update; aptitude safe-upgrade; aptitude full-upgrade
aptitude install intltool
apt-get build-dep pidgin
aptitude purge pidgin
aptitude purge libpurple-bin
aptitude purge libpurple0
^d
pushd /home/v/downloads/pidgin-2.10.0
./configure 
make
sudo checkinstall -D
sudo gdebi pidgin_2.10.0-1_i386.deb
Проще пареной свёклы :)


Нарыл полезное:
перенос виртуальной машины на физический жесткий диск.
Реализация виртмашины :) подробно описано тут:
rus-linux.net/ /perenos-virtualnoi-mashini-v-real

Пунктирно это выглядит так:

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

2011-09-20

URL это не только ценный мех


URL это не только ценный мех, но и возможность хранения состояния аппликухи.

js-библиотека полезна для всяких аяксовых сайтов, для хранения параметров в урле без перезагрузки страницы.

пойти по пути REST и сделать так, чтобы состояние приложения полностью зависело от uri.
— Но тогда будет перезагрузка страницы.
— А ты меняй только hash-part страницы.
— Но как я узнаю, что uri изменился?
— Для этого есть библиотеки.
— А что если состояние моего приложения — это многомерная структура?
— Используй Hiqus.

habrahabr.ru/blogs/webstandards/92300
habrahabr.ru/blogs/javascript/92505

URL, полностью определяющий состояние, скажем страницы, это всегда полезно и приятно.

2011-09-19

Нам пишет пищевик


Ну наконец-то, тайна раскрыта! А то я прям извелся весь. Чую — бесовщина, а обосновать не могу. Ну почему в пакете сока не литр а 0.95?

У сока плотность не равна единице, а датчик весовой. Приходилось каждый раз вручную выставлять разную массу пакета, а что такое человеческий фактор в России объяснять не надо. Каждая ошибка - это огромные потери для предприятия - потому что ОТК не пропускало партию, если в пакете случайно было меньше сока, чем положено.
Для избежания ошибок перепечатали упаковку и выставили один раз и навсегда стандартную массу пакета в 1 кг, что соответствует 0,95-0,97 л в зависимости от рецептуры. В системе менеджмента качества это стандартная процедура - установление условий, при которых возникновение ошибки физически невозможно

flavorchemist.livejournal.com/34786

Одно непонятно, что мешает сделать датчики не на вес а на обьем?

Рекомендую занести блог к мемориз, ибо информация из первых рук.

2011-09-16

ReST


Чутка про ReST. Где-то на хабре видел опрос, как правильно перевести на русский словосочетание «Representational State Transfer». Как не переводи, получается фигня. В основном потому, что у буржуев принято подгонять словосочетания так, чтобы получалась благозвучная и запоминающаяся аббревиатура. В результате словосочетание может терять, скажем, адекватность.

Что есть ReST? Это набор принципов, регулирующих построение протоколов. Можно сказать, что ReST определяет метапротокол передачи и обработки ресурсов между клиентом и сервером.

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

С хабра:

Предположим, я продаю билеты в театр клиентам. Клиентом может быть только агентство, которое имеет свою учётную запись у меня на сервисе. Агентства бывают маленькие, в котором сидит тетёчка и ручками в личном кабинете с помощью барузера осуществляет покупку билета, а также большие, у которых всё автоматизированно. Большие хотят иметь возможность подсоединиться ко мне с помощью API и осуществить покупку.
На билеты можно смотреть цены, предварительно бронировать, выкупать бронь, возвращать купленные и удалять бронь.
Вопрос: как лучше всего организовать API?
...
...я выбрал REST, т.к. он даёт меньше свободы в тех местах, где она не нужна: наименование методов и способ вызова этого метода. Кратко: мои билеты теперь — это ресурсы. Каждое действие с билетом доступно по уникальному сочетанию HTTP-метод + URL. Например, предварительное бронирование (по сути, создание заказа на билет): POST /orders.xml, удаление заказа на билет DELETE /orders/1.xml, а просмотр цен GET /prices.xml....
Лучшая статья про API REST и Ruby on Rails, в открытом доступе — это глава про ActiveResource в книге Rails 3 in a Nutshell...

habrahabr.ru/blogs/webdev/127243
ofps.oreilly.com/titles/ /activeresource
infoq.com/minibooks/emag-03-2010-rest

2011-09-15

Silverlight async calls


На заре вебдванольности, да и раньше, нам не хватало асинхронности. Была масса задач, которые хорошо было бы запускать в фоне. Выкручивались как-то, то имитировали асинхронность, то костыльки подставляли.

Теперь, когда рулит сеть, редко где найдешь синхронную обработку сетевого вызова. А иногда надо. Зачем мне два байта пересылать в асинхроне? Гораздо удобнее сделать это старым добрым синхронным способом. Но нет, не положено.
Теперь выкручиваемся в обратную сторону. Имитируем синхронность и костыльки подставляем. Нет в жизни щастя.

Как имитировать синхронность в Silverlight:

All network calls are Invoked on the UI thread, so if you attempt to block the UI thread after triggering the async call, the call ends up queued behind your current call. So what you can do to achieve linear processing is to do it on a background thread, and step it along with ResetEvents, i.e.
Make async network call on background thread
Block background thread with ResetEvent.Wait().
Async call executes on UI Thread.
In the async callback, which is Invoked on the UI thread, call ResetEvent.Set() letting the background thread continue.
Rinse and Repeat.
It's ugly, but it's a limitation imposed by the current browser plugin APIs.

forums.silverlight.net/t/83357
там и пример кода есть.


А есть фреймворк (не разбирался пока), обещают сопроцедуры:

Coroutines – Any action can optionally choose to return IResult or IEnumerable<IResult>, opening the door to a powerful approach to handling asynchronous programming. Furthermore, implementations of IResult have access to an execution context which tells them what ActionMessage they are executing for, what FrameworkElement triggered the messsage to be sent, what instance the ActionMessage was handled by (invoked on) and what the View is for that instance. Such contextual information enables a loosely-coupled, declarative mechanism by which a Presenter or View-Model can communicate with it’s View without needing to hold a reference to it at any time.

caliburnmicro.codeplex.com/ IResult and Coroutines

developer.mindtouch.com/Dream/Tutorials/Using_Coroutines_for_Asynchronous_programming

2011-09-14

System tips


Бродя по интернетам увидал полезняшку. Солидную, жирную такую. Набор советов и рецептов по обслуживанию Linux-овых ОС.
В мемориз.

Here, I describe basic tips to configure and manage systems, mostly from the console.
...
Ext3 filesystem is the default filesystem for the Linux system and strongly recommended to use it unless you have some specific reasons not to. After Linux kernel 2.6.30 (Debian squeeze), ext4 filesystem is available and expected to be the default filesystem for the Linux system. btrfs filesystem is expected to be the next default filesystem after ext4 filesystem for the Linux system.
[Warning] Warning
You might face some limitations with ext4 since it is new. For example, you must have Linux kernel 2.6.30 or later if you wish to resize an ext4 partition.
...
[Tip] Tip
Use "shutdown -F -r now" to force to run the fsck(8) command safely on all filesystems including root filesystem on reboot. See the shutdown(8) manpage for more.
...
debian.org/doc/manuals/reference/ch09

2011-09-13

Феерия


Вот пока Иван делился соображениями о своем жизненном пути, мне было интересно и местами поучительно. Я уважал его позицию, его самого. Уважал как человека сильного, умного, хоть и с закидонами.
А теперь я в смятении. Прям не знаю, как расценивать его деятельность. Как могучий стёб? Тогда он ваще крут. Как серьезное радение о будущем России? Тогда он в неадеквате полнейшем. IMHO, ясен пончик.

Другие варианты?

Это я почитал Иванову речугу, ролик смотреть не смог — форма подачи вышибала смысл.

Империум — образ мысли, освобожденный от временных и социальных условий, в пользу утверждений при построении империи, как единственной органичной формы государственного устройства России. Чистая логика человека, мыслящего категориями тысячелетий, чувствующего на себе ответственность за весь мир.
...
Логика империума — логика строителей идеального общества, по предначертанному создателем, плану, смысл которого не сложно угадывается в событиях предшествующей истории.
...
Прежде всего, раз и навсегда необходимо понять самим, наши дети — это единственное в этой жизни, что мы можем позволить иметь, кроме наших принципов и общей мечты.
...
Только единомыслие народа по этому вопросу, по созданию вопроса идеального общества, создает необходимый фон для обретения личного счастья. И единственным решением разумно считать строительство могучей империи, возглавляемой помазанником Божьим — императором. Империи, гарантирующей выполнение нашим народом поставленной перед самим Богом задачи — защиты мира от самоуничтожения.
...
Мы умеем быть свободными. Или нет? Нет, все таки да! Аминь.

doctrina77.com/text_doctrina77

Феерия, не находите? Здравое зерно есть, куда без него. Но в таком обрамлении — спасибо, не надо. Все очень вкусно, но мне не хочется.

Каждый раз как начинают строить империи — дохнут люди. Массово. Человек — ничто, империя — все. Мечта, идея — всеобщие. Лозунг на знамя и вперед с песней! За веру, царя, за отечество!
Мать их за ногу. Не угомонятся никак.
Зато понятно, почему плодиться надо как кроликам — империи нужно мясо.

Есть в фильме «Патриот» (посмотрите обязательно, если еще не) эпизод, где герой Мела Гибсона отвечает на упрек (воодушевленцы призывают к оружию и вступлению в войну а он пытается их отговорить) «а как же твои принципы?». Ответ — у меня дети, я не могу позволить себе принципы (такие).

А вот Иван может себе позволить одновременно и детей и принципы. Принципы, которые запросто приведут его к потере детей. И останется только «на все воля Божья».

А «единомыслие народа»? Знаете, что нужно, чтобы у народа появилось единомыслие? Тотальная угроза. Иначе никак не выходит, читайте историю и учебники по этологии.

И демагогия про «умеем быть свободными». И «знаю, потому как верю». Эх, Ваня, я тебя теряю. Жаль.

Life, liberty and the pursuit of happiness.
Вот это по мне.

2011-09-11

Xataface


На хабре видел статью про data-driven разработку веб-аппликух, на примере Xataface.
Что любопытно, Затафейс использует CSS и яваскрипт из Plone.

Xataface is a Framework in the sense that it is a set of classes and libraries that take the tedium out of writing web applications. It provides a simple web interface to a MySQL database enabling users to update, delete, and find data in the underlying database. The interface is targeted at secretaries and end-users as opposed to database administrators

xataface.com/documentation/tutorial/getting_started/introduction

В общем так, если вам надо быстро (сегодня, а лучше вчера) сляпать для бухов или еще кого набор веб-форм для работы с БД, то Затафейс это то, что доктор прописал. БД нужна MySQL, серверные скрипты - PHP.

xataface.com

2011-09-10

IPv4 отвалился, плывем на IPv6


Нет, не так страшно, все проще. Гораздо.

В последние дни заметил, что как-то слишком медленно торренты торрентят. У меня этим занимается rTorrent на древнем ноуте. И вот, сегодня дошли руки поковырять проблему. Поковырял и увидел, что рТоррент не использует IPv4 а вовсю шарашит по IPv6. Стало понятно, почему медленно торрентит — шестая версия у народа до сих пор не сильно в ходу, пиров мало. Но, что мне понравилось — работает, хоть и медленно.

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

До сих пор я на IPv6 внимания не обращал, ибо не пересекался с ним. Теперь придется заняться чтением теории. Ибо я не понимаю, как это он так умудрился связь обеспечивать, при активном моем противодействии. Туннелировал через IPv4?

А все почему - одно из последних обновлений ядра Linux обломало rTorrent (зато на ноуте ядро 3.х!). Потому как в рТорренте бага, не дающая ему биндиться на четвертый протокол. Раньше бага не проявлялась, минус на минус дает плюс. А теперь проявилась. Да и пофиг, повод попробовать другую торрентокачалку.

Поставил Deluge: на ноут deluged + deluge-console, на десктоп deluge-gtk. Три часа - полет нормальный.

dev.deluge-torrent.org/wiki/UserGuide/ThinClient
dev.deluge-torrent.org/wiki/UserGuide/InitScript/Ubuntu

2011-09-09

Банка с пауками


Иногда чтение исторических материалов доставляет всерьез.
Посмотрев «Король говорит», я полез в вики читать про Георга VI, королевскую семью, Черчилля. Там ссылка на ссылке, куча материала, все интересно. Вышел на
Вашингтонское морское соглашение (1922)

США вышла из Первой мировой войны ведущей промышленной державой мира. Имея в 1920 году всего 6% мирового населения, они сосредоточили в своих руках 66% мировой добычи нефти, 60% меди, ...Суммарная задолженность европейских стран США составляла 11,6 млрд. долл., ...
...США успешно конкурировали с Великобританией на рынках её доминионов (Канада, Австралия, Новая Зеландия), путём займов и создания сети банков вытесняли её из Южной и Центральной Америки. Важным объектом англо-американского соперничества стал Китай, где Великобритания обладала огромной собственностью и проводила политику раздела страны на сферы влияния. США противопоставляла ей политику под лозунгом «открытых дверей», вытесняя конкурентов путём экономического давления....
Другим серьёзным соперником США была Япония. В 1914—1918 годах, когда внимание ведущих держав было отвлечено войной, Япония последовательно укрепляла свои позиции на Дальнем Востоке. Путём экономического и военного давления она постепенно превращала Китай в японскую колонию. ... Интенсивно развивавшаяся в годы войны японская промышленность позволила японским товарам вытеснять английский и американских конкурентов из Китая, проникать в Латинскую Америку, в том числе в Мексику...
Определённые затруднения испытывала на Дальнем Востоке и Великобритания.... она сталкивалась с конкуренцией не только со стороны США, но и Японии, которая активно проникала в английские сферы влияния — долину Янцзы и Южный Китай....
В то же время существовали точки соприкосновения интересов Великобритании и США. США нуждались в посредничестве Англии в международной торговле. В интересах обоих стран было не допустить усиления Франции в Европе и Японии на Дальнем Востоке....
Послевоенные противоречия между тремя ведущими морскими державами – США, Великобританией и Японией – вызвали новый виток гонки морских вооружений. Планировались и закладывались корабли водоизмещением более 40 000 т, калибр орудий вырос до 16 дюймов (406 мм; на японских кораблях — 410 мм), проектировались корабли с орудиями 18 дюймов (457 мм; на японских кораблях — 460 мм) и более...

wikipedia.org/wiki/Washington_Naval_Treaty

И, на секундочку, СССР (декларированный в том же, 22 году).
Удивительно, как так сложилось, что пауки не сожрали СССР в те времена. Не смогли договорится. Друг друга боялись больше чем коммунизма.

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

Сочувствую историкам.

Фултонская речь Уинстона Черчилля, 1946 г.

2011-09-08

Стейнбек


Намедни закончил прослушивать подборку аудиокниг Стейнбека нашего Джона. Что в остатке? Автор молодец, написал отличные книжки. Такие книжки стОит иметь в библиотеке.
Что поразило — в четырех гигабайтах аудиокниг не нашлось ни одной с однозначным хеппиэндом. Практически после всех произведений послевкусие типа «все убиты, остальные ранены». Зато жизненно.
Думаю, натурам тревожным, с повышенной алармностью, лучше не читать.

2011-09-06

md5sum


Вчера я написал о беде с библиотеками Silverlight. Нету в них реализации высчитывания хеша MD5. Там же я дал сцыль на самописные библиотеки, две. Сегодня я попробовал обе. Оказалось, что полезна из них только одна, за авторством Delay.

Спасибо тебе, David Anson, твой труд был не напрасен :)

Кусок кода для наглядности:
OpenFileDialog dlg = new OpenFileDialog(); // only in 'onClick...'
dlg.Filter = "All Files|*.*";
dlg.Multiselect = false;
if ((bool)dlg.ShowDialog())
{
	try {
		foreach (FileInfo f in dlg.Files)
		{
			Stream fs = f.OpenRead();
			Delay.MD5Managed ha = new Delay.MD5Managed();
			String fid = BitConverter.ToString(ha.ComputeHash(fs)).Replace("-", "");
			app.log(String.Format("getFileID, FID [{0}]", fid));
			fs.Close();


Дебилизмы


Сегодняшние дебилизмы. Эпизод первый.
Переписываю серию увесистых файлов с дебианчика на вин7, посреди процесса получаю сообщение «mount error(12): Cannot allocate memory» и напрочь теряю коннект к файлсерверу винды. Что такое? Предположительно, некто в Microsoft решил, что если у тебя «домашняя» редакция MS Windows 7, то файлсервер тебе не нужен (в смысле, полноценный, ибо некий огрызок-то работает). Ситуевина лечится правкой реестра винды:

How to Resolve “mount error(12): Cannot allocate memory” on a Windows Share
If you mount a Windows 7 share using Samba/CIFS you may run into “mount error(12): Cannot allocate memory” if you are using very large files on the Windows machine. Looks like in certain situations Windows needs to be told to run as a file server and to expect large files. You can read more details at Large Files are locking up Windows 7 32 bit and 64 bit, but the solution is to make two registry edits and then restart a service:
Set “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache” to “1″.
Set “HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size” to “3″.
Restart the “server” service.

jlcoady.net/windows/how-to-resolve-mount-error12-cannot-allocate-memory-windows-share
social.technet.microsoft.com/Forums/en-US/w7itpronetworking


Эпизод второй.
Сижу, кодирую на .NET (Silverlight) передачу файла. По ходу, надо посчитать хеш MD5. Что нам на эту тему предлагает дотнет фреймворк? Прекрасный System.Security.Cryptography Namespace содержащий не менее прекрасный MD5CryptoServiceProvider. Там есть все, что мне надо.
Но я не могу этим пользоваться. Почему? Потому, что некто в Microsoft решил, что дотнет фреймворк и сильверлайт фреймворк — это разные вещи. В библиотеках сильвера MD5 недоступен, нет его (неужто у них разная кодовая база? Не верю, код на месте а вот декларацию откусили, сцуки). Ибо «устарел и небезопасен, пользуйтесь SHA».
Приходится использовать самописные реализации.

Казалось бы, причем тут ненависть к Биллу?

2011-09-05

The Zope Book (2.6 Edition)


Рад сообщить, что я закончил перевод Зопокниги на русский язык. Все содержательные главы переведены (с 1 по 24 включительно), аппендиксы переводить не буду, нечего там переводить.
Глава, закрывающая эпопею перевода:

Zope.book.24.Maintaining.Zope.odt - перевод главы №24 зопобука. Опенофисный документ. В главе рассмотрены темы журналов (логов) и их ротации, запуска Zope в виде демона, добавления к Zope "продуктов", настройки производительности, обслуживания БД и проч. Это фактически последняя глава книги, далее идут всякие аппендиксы, их я переводить вряд ли буду.

http://sites.google.com/site/vasnake

На этой странице находятся и все предыдущие главы. Если будет не лень, соберу их в один файл и запузырю на один из сайтов посвященных Zope.

Опупея началась 25 февраля 2009 года и закончилась 5 сентября 2011. Ну что сказать, 2.5 года на книгу в 270 страниц (около того) — срань Господня, 3.5 дня на страницу. Пусть не каждый день и даже не каждую неделю, пусть иногда зевота срубала через 15 минут... Зато я точно знаю, какой из меня переводчик подобных текстов :)

Скушное это дело. Не сколько сам перевод, сколько записывание переведенного, по возможности аккуратно. Особенно доставляет терминология, мать ее в коромысло. Было бы веселее переводить «как придется», но кому нужен такой перевод?
Фильмы (субтитры) переводить интереснее гораздо :) но и там есть досадные помехи.

2011-09-02

.java.policy


Проверил, работает. Но не обошлось без гамака: нужно, чтобы пользователь явно разрешил доступ к файлам, записав в файл .java.policy нечто вроде
grant {permission java.io.FilePermission "${user.home}/-", "read"; };

private void testReadFile(String filename) {
/* .java.policy
* grant {permission java.io.FilePermission "${user.home}/-", "read"; };
*/
RandomAccessFile file = null;
try{
file = new RandomAccessFile(filename, "r");
byte[] buf = new byte[1024];
int cnt = 0, pos = 0;
while(true){
cnt = file.read(buf);
if(cnt == -1 || cnt == 0){
break;
}
pos += cnt;
}
file.close();
}
catch(IOException ex){
this.log("testReadFile, IO error ["+ex.getMessage()+"]");
}
catch(Exception ex){
this.log("testReadFile, error ["+ex.getMessage()+"]");
}
} // private void testReadFile(String filename) {


А Java удобнее

Как я и надеялся, с Java applet все значительно проще. Чтобы дать пользователю-с-браузером выбрать файл и узнать полный путь к этому файлу (а потом и почитать файл) вовсе не надо стоя в гамаке. Простой и тупой код. И он работает!

http://pastie.org/2471077


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

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

2011-09-01

Пионэры, идите в школу


Про пионэров это я так, датой навеяло.

На тему отзыва Ораклом дистрибуторской лицензии на яву, мнение мантейнера дебианского пакета:
Basically, that means that Linux distributions will not be able to package new releases of the proprietary JVM/JDK (including the latest update -27). Theonly release available in the Linux distro will be the OpenJDK.
While I am glad to see Oracle pushing the free JDK, I am a bit concern by this sudden decision. There are still bugs (for example, with fonts, applets or other others issues) present in the OpenJDK which does not happen in the sun-java6 packages.
And also, as 
Andrew John Hughes said on Twitter, the Oracle proprietary JVM just lost one of the two freedoms it had (free to redistribute the software)...
sylvestre.ledru.info/blog/sylvestre/2011/08/26/sun_java6_packages_removed_from_debian

Ему тоже жаль...


Сегодня на работе надкусил Notepad++. Хороший, годный редактор. В основе лежит мой любимый SciTE, вернее Scintilla. Поскольку в моем WSciTE не нашлось быстрого решения задачи «переформатировать корявый исходник», в смысле отступы там, лишние и отсутствующие пробелы и проч.херня, пришлось поискать помощи в гугле. Функция переформатирования нашлась в стандартном плагине к npp, и она работает.
Хороший, годный редактор.

Пришел домой и поинтересовался у гугеля, нет ли npp под Linux? Нет, но, как всегда, есть альтернативы. Одна из них — Geany.
В пакетах устаревшая версия, захотелось мне скомпилять свежачка. Скомпилял, даже сделал deb-пакет из которого и установил. Проще пареной свеклы, если бы не две трудности: configure ругался на то, что у меня нет компайлера C++ и неправильная версия GTK+. Пришлось чутка повозится, пока я сообразил, что мне нужны пакеты g++ и libgtk2.0-dev соответственно.

Итоговый лог установки:
#aptitude install g++
#aptitude install libgtk2.0-dev
#aptitude install install checkinstall

$ pushd  ~/t/geany
$ tar zxvf ~/t/downloads/t/geany-0.20.tar.gz
$ cd geany-0.20/
$ bash configure
$ make
$ sudo checkinstall -D

Ничего, работает. Симпатишный.

Сцылки по теме:
itbuben.org/blog/Unix-way/829
grigio.org/pimp_my_gedit_was_textmate_linux

kwords: textedit, make, compile, java, install

Архив блога

Ярлыки

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)