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

2010-10-30

because object type foo does not exist or has different identifier

При заливке дампа БД в Oracle через утилиту imp.exe получил странное:

IMP-00060: Warning: Skipping table "A.B" because object type "SDE"."ST_GEOMETRY" does not exist or has different identifier

Это при создании таблицы, где одно из полей типа ST_Geometgy. Руками такая таблица создается без проблем. В чем дело? Как выяснилось, дело в том, что при импорте не только прогоняются скрипты DDL, но еще и проверяются всякие идентификаторы. В частности, у пользовательского типа данных ST_Geometry есть вполне определенный идентификатор, значение которого зависит от БД, в которой был сделан дамп.
Короче, если схема SDE из одной базы а импортируемый дамп из другой, то эта злоебучая ST_Geometry не импортируется. Известная бага.

Но я ее обошел. Похакал грубым образом. Чем-то вроде подсвешника. Я в дампе «правильной» схемы поглядел, как выглядит идентификатор для типа ST_Geometry, там была строка вида
FOREIGNTYPE "SDE"."ST_GEOMETRY" "FB34A3675C874539B1569A69C4071645"
и в «неправильном» дампе в такой строке заменил неправильный ID на правильный. В hex-редакторе.

После чего импорт перестал выдавать такие ошибки, таблицы создались.

2010-10-29

Как построен Facebook

Кто будет отрицать, что Фейсбук — масштабный проект? Что интересно, так это количество доработок, вносимых авторами каждого масштабного проекта в стандартные инструменты. И несмотря на использование стандартных инструментов, каждый проект уникален. По мне, так изучение архитектуры таких проектов не менее интересно чем занимательный детектив. Читаем про фейсбук:
insight-it.ru/masshtabiruemost/arkhitektura-facebook
insight-it.ru/life/facebook-how-we-scaled-to-500-000-000-users-by-robert-johnson

2010-10-28

Unbreakable

А на той неделе среда уже короткий день. Каникулы фактически.

В конце сентября Oracle представил публике «Oracle's Unbreakable Enterprise Kernel» - супер-пупер Линуксовое ядро. Оптимизировано неслабо, заточено под Ораклевый софт. Фактически, это единственное ядро (Линуксовое), рекомендуемое к использованию с упомянутым софтом:

The Unbreakable Enterprise Kernel is now the only Linux kernel Oracle recommends for use with Oracle software.

marketwatch.com/story/oracle-debuts-oracles-unbreakable-enterprise-kernel-for-oracle-linux-2010-09-20

Над ядром работали инженеры из четырех подразделений Oracle: Linux, БД, middleware, hardware. В итоге, заявляется, что оно более производительное, чем ядро, совместимое с Red Hat: на 75% при тестах на работу с OLTP, 200% — скорость обмена сообщениями по Infiniband, 137% — доступ к SSD-дискам.

nixp.ru/news/Oracle Linux-Unbreakable-Enterprise-Kernel.html

Похоже нынче это модно: Гуглевые сервисы работают лучше под Гуглевым браузером; Ораклевый софт лучше работает под Ораклевой операционкой...

2010-10-25

Коррумпированный айподка

Недолго я радовался (недолго музыка играла, ага :), прошив айподку. На днях поломалась файлсистема на айподе. Сначала стал заикаться при проигрывании, потом ушел в режим «Panic». Накрылась файлсистема, даже смонтировать в дебианчик не могу. Пришлось воспользоваться виндой и рецептом (How To Fix A Corrupt iPod). MS Windows смонтировала дивайс, не обращая внимания на побитость файлсистемы (что неудивительно для винды :). После чего проведены серия проверок «диска» и восстановление из айтюнс,...
Помогло.
Девайс определяется, монтируется, чем я и воспользовался, обновив родную Эппловскую прошивку и перезалив альтернативную.
Будем посмотреть, сколько еще протянет.


ubuntux.org/how-to-use-an-ipod-with-ubuntu
еще одни давно забытые пыховые грабли

2010-10-24

Пых

Скачал и поставил свежий дистр PHP под MS Windows. С изумлением обнаружил жесть: дублирование переменных в файле php.ini. К примеру, upload_tmp_dir встречается два раза. Сколько народу на эти грабли наступило — не перечесть. Типа, устанавливаешь переменную, а толку — нуль, ибо чуть позже переменная перебивается дублем. Будьте бдительны!


Широко известная история про гусыню по имени Мартина (длинновато, посему без курсива):

Мартина в самом раннем детстве приобрела одну твёрдую привычку. Когда в недельном возрасте она была уже вполне в состоянии взбираться по лестнице, я попробовал не нести её к себе в спальню на руках, как это бывало каждый вечер до того, а заманить, чтобы она шла сама. Серые гуси плохо реагируют на любое прикосновение, пугаются, так что по возможности лучше их от этого беречь. В холле нашего альтенбергского дома справа от центральной двери начинается лестница, ведущая на верхний этаж. Напротив двери — очень большое окно. И вот, когда Мартина, послушно следуя за мной по пятам, вошла в это помещение, — она испугалась непривычной обстановки и устремилась к свету, как это всегда делают испуганные птицы; иными словами, она прямо от двери побежала к окну, мимо меня, а я уже стоял на первой ступеньке лестницы. У окна она задержалась на пару секунд, пока не успокоилась, а затем снова пошла следом — ко мне на лестницу и за мной наверх. То же повторилось и на следующий вечер, но на этот раз её путь к окну оказался несколько короче, и время, за которое она успокоилась, тоже заметно сократилось. В последующие дни этот процесс продолжался: полностью исчезла задержка у окна, а также и впечатление, что гусыня вообще чего-то пугается. Проход к окну все больше приобретал характер привычки, — и выглядело прямо-таки комично, когда Мартина решительным шагом подбегала к окну, там без задержки разворачивалась, так же решительно бежала назад к лестнице и принималась взбираться на неё. Привычный проход к окну становился все короче, а от поворота на 180o оставался поворот на все меньший угол. Прошёл год — и от всего того пути остался лишь один прямой угол: вместо того чтобы прямо от двери подниматься на первую ступеньку лестницы у её правого края, Мартина проходила вдоль ступеньки до левого края и там, резко повернув вправо, начинала подъем.

В это время случилось, что однажды вечером я забыл впустить Мартину в дом и проводить её в свою комнату; а когда наконец вспомнил о ней, наступили уже глубокие сумерки. Я заторопился к двери, и едва приоткрыл её — гусыня в страхе и спешке протиснулась в дом через щель в двери, затем у меня между ногами и, против своего обыкновения, бросилась к лестнице впереди меня. А затем она сделала нечто такое, что тем более шло вразрез с её привычкой: она уклонилась от своего обычного пути и выбрала кратчайший, т.е. взобралась на первую ступеньку с ближней, правой стороны и начала подниматься наверх, срезая закругление лестницы. Но тут произошло нечто поистине потрясающее: добравшись до пятой ступеньки, она вдруг остановилась, вытянула шею и расправила крылья для полёта, как это делают дикие гуси при сильном испуге. Кроме того она издала предупреждающий крик и едва не взлетела. Затем, чуть помедлив, повернула назад, торопливо спустилась обратно вниз, очень старательно, словно выполняя чрезвычайно важную обязанность, пробежала свой давнишний дальний путь к самому окну и обратно, снова подошла к лестнице — на этот раз «по уставу», к самому левому краю, — и стала взбираться наверх. Добравшись снова до пятой ступеньки, она остановилась, огляделась, затем отряхнулась и произвела движение приветствия. Эти последние действия всегда наблюдаются у серых гусей, когда пережитый испуг уступает место успокоению. Я едва верил своим глазам. У меня не было никаких сомнений по поводу интерпретации этого происшествия: привычка превратилась в обычай, который гусыня не могла нарушить без страха.
...
Тройная функция — запрет борьбы между членами группы, удержание их в замкнутом сообществе и отграничение этого сообщества от других подобных групп — настолько явно проявляется и в ритуалах культурного происхождения, что эта аналогия наталкивает на ряд важных соображений.
Существование любой группы людей, превосходящей по своим размерам такое сообщество, члены которого могут быть связаны личной любовью и дружбой, основывается на этих трех функциях культурно-ритуализованного поведения. Общественное поведение людей пронизано культурной ритуализацией до такой степени, что именно из-за её вездесущности это почти не доходит до нашего сознания. Если захотеть привести пример заведомо неритуализованного поведения человека, то придётся обратиться к таким действиям, которые открыто не производятся, как неприкрытая зевота или потягивание, ковыряние в носу или почёсывание в неудобоназываемых частях тела.

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

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

lib.rus.ec/b/148819
Конрад З.Лоренц, Агрессия

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

2010-10-22

Rockbox

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

Прошить оказалось несколько проще, чем я представлял. Фактически, выполнив рекомендации руководства по автоматической установке, я в три минуты получил рабочую альтернативную прошивку. Еще минут пять заливал файло.
В общих чертах это выглядело так: первым делом надо узнать модель девайса, я воспользовался для этого викистатьей (ipod nano 4g первая ревизия, однако); потом надо перевести айподку в режим диска, нажав особым образом кнопки на нем; потом подключить его к компу и поглядеть его точку монтирования в файлсистему компа; потом запустить автопрошивальщик, указать параметры (модель и точку монтирования — строго!); и прошить. Все. После перезагрузки айподки он работает под новой прошивкой и принимает файлы как внешний накопитель.

Вопросы эстетики (выбор и установку тем оформления) оставим за бортом, ибо вкусовщина.

Примеры вызова 7-zip из командной строки, полезняшка.

2010-10-21

Клинеты

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


Steve Rambam «Privacy is Dead – Get over it!»
Активно расползаются переводы впечатляющего доклада:
hatovich.com/?p=65
stas-blinoff.livejournal.com/12484
stas-blinoff.livejournal.com/12730
На хабре раньше был пост к докладу, теперь убрали.
Сам доклад ищите в гугеле :)

2010-10-20

keepass2env

Написав микроскрипт, я для себя закрыл тему «как же мне избавиться от открытой записи паролей в скриптах?». Может и вам поможет:

keepass2env.py - пример решения проблемы "пароли открытым текстом в скриптах". Используются KeePass + KPScript, Python. Скрипт запускает процесс шелла, для которого установлены переменные среды в виде login=password. Пока окно шелла не закрыто, можно запускать команды, требующие ввода паролей, передавая им значения из переменных среды.
50 строк кода на все-про-все.
sites.google.com/site/vasnake

Что почитать
Конрад Лоренц, Агрессия:

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

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

lib.rus.ec/b/148819/read

2010-10-19

MQ

Если заинтересуетесь темой «очереди сообщений», то вот чел собрал хорошую подборку слайдовых презентаций по разным решениям в этой области.
abrdev.com/?p=1153


Как человеки переехали на новый сайт прозрачным для клиентов способом. Решения очевидные, но все равно интересно.

...I always find it amusing how something as straight forward as a new website launch has so much happening behind the scenes.

azavea.com/blogs/labs/2010/08/how-we-launched-a-new-cms
А переехали они на CMS concrete5.org

2010-10-17

Дисбактериоз

Петрович местами впадает в грех тщеславия, что сильно мешает ему стать действительно популярным и любимым писателем. Но уж какой есть. Либеральный клоун, да. И тем не менее, всегда интересно ознакомиться с подборками фактов и аргументацией, которые он выдвигает в защиту продвигаемых идей.
Я к текущему моменту нашел в книге 3 непробиваемых аргумента против оружефобов или в пользу вооружения народа: аналогия с дисбактериозом — бактерии уничтожать нельзя, ибо нарушается баланс; а нарушенный баланс — потеря здоровья. У милиции, у армейцев полно оружия, но убивает оно не столько, сколько прорицают оружефобы. Пример из животного мира — чем сильнее вооружен хищник, тем реже он применяет свое вооружение в драках с себе подобными. Ну и четыре — не аргумент, но принцип: никто не хочет умирать и никто не хочет быть беззащитной овцой. Чуть не забыл, тоже мощно — оружие обратно разизобрести нельзя, оно уже есть и его количество в мире только растет. Отбирая его у хороших, законопослушных, мы вооружаем противную сторону.

Все познается в сравнении. Много ли народу убивает каждый год молния? Берете ли вы всерьез в расчет возможность погибнуть от удара молнии? Нет, конечно. А между тем ежегодно в таких странах, как Россия и США, молния убивает от 100 до 200 человек – на порядок больше, чем массовые убийцы! Но убийцы привлекают внимание, а молнии нет.

Шанс быть раненным массовым убийцей меньше, чем шанс получить травму, споткнувшись о собственную собаку. Центр контроля заболеваний США (CDC USA) опубликовал следующую статистику: каждый год в больницы и госпитали поступают более 86 000 американцев, которые получили травму, споткнувшись о собаку, кошку или другое домашнее животное, включая ослов и попугаев. В 30 % случаев дело кончается переломами, а в 4 % – тяжелыми травмами внутренних органов, требующими госпитализации. Четыре процента от 86 тысяч – это 3 440 раненых за год. Столько раненых не наваляли все маньяки за всю историю США! А собаки это делают за год.

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

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

lib.aldebaran.ru/author/nikonov_aleksandr

2010-10-15

Что есть красота?

Которая спасет мир?
Не с моими навыками лезть в блюбрим, однако в красоте кода и архитектурных решений я понимаю, IMHO.

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

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

...вьюлеты читают и используют контекст ДО момента редиректа, т.е. пытаются дергать уже несуществующий объект...
...
Гибкость построения скинов в bluebream чрезвычайно велика и трудно сравнима с чем-либо. При проектировании всегда следует ориентироваться на интерфейсы и не стесняться создавать новые, пусть и для каждой мелочи. Это позволяет делать сложные вещи исключительно декларативными конструкциями, коими являются интерфейсы и zcml-описания.

astoon.zwiki.org/DeleteFormInBlueBream

Нельзя не согласиться с заключающим призывом. Но вот конкретное употребление вызывает у меня отрыжку.
Архитектурное противоречие обходится применением изящных костыльков. Лично мне такие подходы не симпатичны. Я предпочитаю либо поправить код, вызываемый после удаления обьекта, типа реализации redirect-force, чтобы после вызова редиректа цепочка сокращалась до условного нуля; либо, что еще правильнее, таки продумать и сделать красиво удаление обьектов вызовом метода контейнера этих обьектов.

Автокад под Linux

Называется Брикскад.

...это первая система автоматизации проектных работ (САПР / CAD) в формате .dwg, доступная для пользователей Linux. Формат .dwg используется в таких популярных CAD-системах, как AutoCAD и IntelliCAD.
...
На данный момент в релизе Bricsys V10 for Linux поддерживаются дистрибутивы Fedora 12+, openSUSE 11.1+, Ubuntu 9.10+. Стоимость «Bricscad (Linux) V10 Classic» составляет 275 USD, «Bricscad (Linux) V10 Classic — All-In» — 385 USD.

nixp.ru/news/Bricscad-V10
bricsys.com/en_INTL/bricscad/comparison

Интересно, когда же выйдет сам Автокад под Linux? Хотя в Брикскад заявлена поддержка многих API Автокада, что означает несложный перенос массы разработок из Акада в Кирпич.


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

2010-10-14

И за это платить в два раза больше?

Фриц умен, уважаю. Но демонстрирует некую нестабильность, что ли?

...Вот за эту вот мелочь — умение делать работу до конца и проверять результаты — ответственных сотрудников и ценят.
Ответственному сотруднику можно сказать "сделай вот это" и забыть. Он сделает, а если не сможет, то позвонит тебе и объяснит почему.

Если же мы отдадим приказ безответственному сотруднику, то нам придётся потом тратить кучу дополнительного времени на контроль за ним. Этого дефицитного времени у руководителей, как правило, нет.

Ещё один пример из жизни. Компания едет на шашлыки. Одного из участников просят купить шампура.
Ответственный человек заглянет в магазин и купит их. Если шампуров не будет — зайдёт в следующий магазин или позвонит остальным и скажет, что шампуров нет.
Безответственный человек заглянет в магазин, увидит, что шампуров там нет и… на этом сочтёт свою работу выполненной. А когда его спросят через три дня "где же шампура" разведёт руками.

Обратите внимание: ответственный человек — это не герой, который достигает цели во что бы то ни стало. Это не мазохист, который добровольно взваливает на себя чужие обязанности.

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

fritzmorgen.livejournal.com/320744

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


posix.ru/sitemap материала негусто, зато неплохо дистиллирован.

2010-10-13

МЯК

Трафик для ЯКарт мне теперь бесплатен. Но только на винмо. Ну и че мне теперь, таскать два девайса? Один основной, на Андроиде и второй с МЯК бесплатным? Или попробовать ява-версию на Андроиде?

абоненты МТС из всех регионов России могут пользоваться мобильным приложением Яндекс.Карты и при этом не платить за интернет-трафик.
citforum.ru/news/24235

Абоненты МТС из всех регионов России, ..., могут скачать специальную версию Яндекс.Карт и пользоваться приложением, не оплачивая интернет-трафик. В совместной версии доступны все возможности Мобильных Яндекс.Карт, дополнительно к которым МТС предлагает свои услуги. В частности, сервис «Локатор», определяющий, где в данную минуту находятся ваши друзья.

Совместная версия МТС и Яндекс.Карт доступна для платформ Windows Mobile, Symbian и Java.

совместную с МТС версию легко узнать по наличию логотипа МТС на экране телефона во время запуска приложения. ... у вас должна быть настроена точка доступа internet.mts.ru. ... возможно списание технических платежей

Про пользователей iPhone и Android мы, конечно, помним. Следите за новостями.

clubs.ya.ru/company/replies
clubs.ya.ru/company/posts
mobile.yandex.ru/maps/mts/download

2010-10-12

Поллитра

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

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

habrahabr.ru/blogs/webdev/100255
anekdot.ru/id/-10059144

2010-10-10

Upload

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

jupload.sourceforge.net — ява апплет (в смысле, клиент реализован как ява апплет). В комплект исходников входят примеры серверного кода на ява и PHP. Насколько я понял, состояние закачки сохраняется в куках а не на сервере, что лично мне не нравится, да и пример у меня не заработал. Описания протокола я не нашел.

habrahabr.ru/company/mailru/blog (forum.nginx.org grid.net.ru/nginx/resumable_uploads) - сильверлайт-клиент и nginx-модуль на сервере. Решение используется на файл.мейл.ру. Хорошо описан протокол, клиент должен (вроде бы) работать под моно на линуксе (это про хорошее). Состояние закачки хранится на клиенте, бедовые хеши и идентификаторы сессий (это я про плохое уже). В целом достойно.

plupload.com/example_all_runtimes — весь спектр браузерных плагинов (кроме явы, что странно) и достаточно примитивный серверный код на PHP. Вся логика на клиенте. Описания протокола не нашел. Несмотря на явный перекос в сторону клиента, решение выглядит наиболее убедительно на фоне остальных.

idle-hacking.com/2009/03/resumable-file-uploads (github.com/taf2/resume-up) — GGears в качестве клиентской платформы и скрипт на руби в качестве сервера. Простенько но со вкусом. Протокол описан, он прост до безобразия, зато поддерживается авторизация.

silverlightfileupld.codeplex.com - сильверлайт-апплет как клиент и PHP-скрипт на сервере. Протокол не описан, серверный скрипт ужасающе примитивен. В качестве временного решения годится.

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

2010-10-08

Upload

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

Вот и возникла очередная идея сделать велосипед, решающий задачу надежного аплоада больших файлов по HTTP. Клиент бьет файл на кусочки и каждый заливает на сервер, известным образом. С проверкой контрольной суммы каждого кусочека. Сервер принимает кусочки и по завершении процесса (или по ходу, что удобнее) сливает их обратно, выстраивая оригинал. Вся транзакция сопровождается уникальным токеном, заголовком с описанием оригинального файла (имя, длина, количество кусочков, проч.), состоянием процесса (принятые/не принятые кусочки). Все это оформить как REST сервис.
Одна проблема — пользователю надо получить и запустить клиента. Это либо ява, либо флеш/сильверлайт апплет с доступом к файлсистеме. Хотя лично меня устроит банальный скрипт на Python.

Все уже придумал, да? Остается решить вопрос, надо ли самому писать такой велик, когда народ уже озаботился проблемой?

2010-10-07

Дримвивер

Если внимательно изучить сравнительную таблицу редакторов HTML, то субьективное мнение обрастает обьективными фактами. А мнение, собственно, такое — нет редактора HTML лучшего чем Dreamweaver. Ну и ладно, не беда. При известных профессиональных навыках можно обойтись свободными KompoZer и Bluefish.
Самое любопытное, это попробовать ответить на вопрос «а почему нет свободного редактора уровня Дримвивер?». Я думаю, ответ таков — те, кто могут написать такой редактор, в нем не нуждаются. А те, кто в нем нуждаются, не могут забашлять достаточно денег. Вот и выходит — не очень то он и нужен, свободный аналог Дримвивера. И вообще, крутые профи сайтостроения пользуются блокнотом.

Кстати, для утягивания копий сайтов весьма полезен XTTrack.

2010-10-06

Удобно и безопасно

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

Хоть решения и нет, есть возможность изготовить костыльки, худо-бедно закрывающие вопрос. Для прекрасной программы-хранилки KeePass есть плагин KPScript. Если его использовать, можно кое-чего добиться.
Самый простой вариант, это результаты команды
KPScript.exe -c:ListEntries "secrets.kdbx" -guikeyprompt
преобразовать в серию команд типа
set db_scott=testpass
и прогнать их в командной оболочке. Пока оболочка не закрыта, любая программа может считать из переменных среды пароль известного пользователя. В примере - db это название записи в KeePass, scott это логин, testpass это пароль.
Если сложнее, то можно нарисовать свой плагин, реализующий те возможности, что вам надо. Только надо уметь программировать на C#.

Scripting KeePass
KeePass plugin development.
KeePass plugins
руководство, переводимое колхозом (любопытный проект, жаль, форматирование документов напрочь теряется).

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

2010-10-05

Hiload для чайников

Индустрия не стоит на месте, развитие идет. Народу нужно строить высоконагруженные сайты — индустрия подгоняет инструменты. Вот уже «Как Построить Гуглоридер на PHP, Для Чайников» появляются.

Если запустить написанный нами скрипт, то он будет работать как и обычная “ПеХаПешка” - сначала первая лента, потом вторая и так далее. И неважно, на скольких серверах ты его запустишь. К тому же, ошибка при обработке какой-то ленты вырубит сразу весь скрипт, а значит, остальные новости будут пропущены. Непорядок, согласись. Настоящие пацаны пишут масштабируемые и параллельные приложения на Java, С или хоть бы Python. И будут косо смотреть в твою сторону, если ты скажешь, что напишешь такое же на РНР. Не смотри на них, давай писать на РНР!
А поможет тебе в этом почётном деле крутая штука под названием Gearman. Это такой специальный сервер, который берет на себя всю работу по управлению заданиями, которые ты ему поручишь. Он сам выстроит их в очередь, посмотрит, сколько серверов и процессов у него есть, потом разошлёт всем работу, проконтролирует её выполнение и соберёт результаты.

abrdev.com/?p=1138


Лучше день потерять, да потом за час долететь:

We spent a number of days laying out this project. We planned for how to move these images to the cloud and resize the whole batch using EC2. We investigated resizing each photo on-demand as it was displayed on the site. Both of these options had drawbacks for us.
...
...им удалось завершить обработку 135 млн фотографий всего за 9 дней, задействуя четыре 16-ядерных сервера. Средняя скорость обработки составила 180 изображений в секунду.

habrahabr.ru/blogs/webdev/99108

2010-10-02

Апостиль

Что это? Это операция легализации документа. Нужно это для предоставления документа (к примеру, свидетельства о браке) в забугорье.

Проставление штампа "Апостиль" (иногда данную процедуру также называют "упрощенная легализация" или "апостилирование") применяется для отправки документа в страны, присоединившиеся к Гаагской конвенции от 5 октября 1961 года,
...
В большинстве случаев проставление штампа "Апостиль" осуществляется на копии документов, удостоверенные нотариально (это могут быть копии личных документов: свидетельств о рождении, смерти, заключении брака,
...
В большинстве стран мира, за редкими исключениями, действует универсальное правило - официальные органы принимают к рассмотрению только документы, исполненные на государственном языке своей страны
...
Бюро переводов Translations.ru рекомендует своим клиентам ... проставление штампа "Апостиль" осуществляется на сам документ на русском языке без перевода, поскольку перевести уже апостилированный документ на иностранный язык в дальнейшем не составит никакого труда - это можно сделать как на территории России, в том числе в Бюро переводов Translations.ru, так и на территории страны назначения документа.

apostille.com.ru

Список стран-участников Гаагской конвенции.
Апостиль имеет форму квадрата со стороной не менее 9 см

АйТишное:
Теория криптования дисков.


2010-10-01

Возвращение Бомжа

А вот фиг. Месяца не потребовалось. Нашлись сабы, пригодные к использованию. Склеил два файла, синхронизировал с звуковой дорожкой и усё. Готовы субтитры к смешному «переводу», сделанному Гоблином для фильмы Lord of the Rings: The Return of the King, The (Властелин колец: Возвращение бомжа, Божья Искра)
Сабы подходят к этому видео.

Архив блога

Ярлыки

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)