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

2011-10-30

Benchmark

Предлагаю человеку комп. Он интересуется — а как быстро этот комп превращает видеоролики в DVD? Вот это правильный подход к делу, вот так и надо. А то — гигагерцы да мегабайты, что это показывает? Человек занимается DVD-авторингом, тратит на это уйму времени. Отсюда основной показатель — насколько быстро комп обрабытывает видео. Все остальное неважно.

Итак, бенчмарк — конвертация видео, процессор AMD Athlon64 X2 4200+ (2.2 Ггц), память 4 ГБ, жесткий диск — от Хитачи, SATA2.

Берем в одну руку видеоролик Big Buck Bunny (bigbuckbunny.org/index.php/download) H.264 (MOV H264 video, AAC surround sound) 1920x1080 (mirrorblender.top-ix.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov).

В другую руку берем тулзу «Free MKV Video2Dvd V3.30» (effectmatrix.com/Free-MKV-DVD).

Устанавливаем тулзу, запускаем. Выбираем Easy mode, бросаем мышкой видеоролик в окно, в дополнительных настройках выбираем профиль «NTSC dvd mpeg high ac3audio».
Запускаем Burn2iso, засекаем время. Ждем.

Получаем 13 минут. Другими словами, 10 минут ролика обрабатываются 13 минут. Почти 1:1.

Неплохо.

GetLogicalDrives

Я тут ныл недавно, что в вин7 отменили авторан. Говорил, что надо что-то придумать. Я придумал: надо написать утилитку, которая при запуске выполняет команду из авторана. Первая часть утилитки уже готова.

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

Python:
def getLogicalDrives(meth = '1'):
 res = []
 print 'getLogicalDrives...'
 # good one (http://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python)
 if meth == '1':
  import string
  from ctypes import windll
  drives = []
  bitmask = windll.kernel32.GetLogicalDrives()
  for letter in string.uppercase:
   if bitmask & 1:
    drives.append(letter)
   bitmask >>= 1
  res = sorted(drives)
 elif meth == '2':
  import win32api
  drives = win32api.GetLogicalDriveStrings()
  drives = sorted(drives.split('\000'))
  for s in drives:
   s = s.strip()
   if s: res.append(s[0:1])
 elif meth == '3': # no network mounts
  import os, re
  drives = re.findall(r"[A-Z]+:.*$",os.popen("mountvol /").read(),re.MULTILINE)
  for s in drives:
   s = s.strip()
   if s: res.append(s[0:1])
 # MS wbem (http://gallery.technet.microsoft.com/scriptcenter/488836b0-84e9-4c0c-b2cf-dd19f6e70f74)
 elif meth == '4':
  ''' DriveType, DeviceID
  http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173%28v=vs.85%29.aspx
  '''
  import win32com.client
  strComputer = "."
  objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
  objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
  colItems = objSWbemServices.ExecQuery("Select * from Win32_LogicalDisk")
  for objItem in colItems:
   s = objItem.DeviceID.strip().encode('utf8')
   if s: res.append(s[0:1])
   continue
   print '#' * 80
   print "Access: ", objItem.Access
   print "Availability: ", objItem.Availability
   print "Block Size: ", objItem.BlockSize
   print "Caption: ", objItem.Caption
   print "Compressed: ", objItem.Compressed
   print "Config Manager Error Code: ", objItem.ConfigManagerErrorCode
   print "Config Manager User Config: ", objItem.ConfigManagerUserConfig
   print "Creation Class Name: ", objItem.CreationClassName
   print "Description: ", objItem.Description
   print "Device ID: ", objItem.DeviceID # C:
   print "Drive Type: ", objItem.DriveType # 2 - removable disk
   print "Error Cleared: ", objItem.ErrorCleared
   print "Error Description: ", objItem.ErrorDescription
   print "Error Methodology: ", objItem.ErrorMethodology
   print "File System: ", objItem.FileSystem
   print "Free Space: ", objItem.FreeSpace
   print "Install Date: ", objItem.InstallDate
   print "Last Error Code: ", objItem.LastErrorCode
   print "Maximum Component Length: ", objItem.MaximumComponentLength
   print "Media Type: ", objItem.MediaType
   print "Name: ", objItem.Name
   print "Number Of Blocks: ", objItem.NumberOfBlocks
   print "PNP Device ID: ", objItem.PNPDeviceID
   print "Provider Name: ", objItem.ProviderName
   print "Purpose: ", objItem.Purpose
   print "Quotas Disabled: ", objItem.QuotasDisabled
   print "Quotas Incomplete: ", objItem.QuotasIncomplete
   print "Quotas Rebuilding: ", objItem.QuotasRebuilding
   print "Size: ", objItem.Size
   print "Status: ", objItem.Status
   print "Status Info: ", objItem.StatusInfo
   print "Supports Disk Quotas: ", objItem.SupportsDiskQuotas
   print "Supports File-Based Compression: ", objItem.SupportsFileBasedCompression
   print "System Creation Class Name: ", objItem.SystemCreationClassName
   print "System Name: ", objItem.SystemName
   print "Volume Dirty: ", objItem.VolumeDirty
   print "Volume Name: ", objItem.VolumeName
   print "Volume Serial Number: ", objItem.VolumeSerialNumber
   print "Power Management Supported: ", objItem.PowerManagementSupported
   z = objItem.PowerManagementCapabilities
   if z is None:
    a = 1
   else:
    for x in z:
     print "Power Management Capabilities: ", x
 else:
  raise NameError('getLogicalDrives, error: unknown method')
 return sorted(res, reverse=True)
#def getLogicalDrives():

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

Кстати, о птичках. Обнаружилось, что в вин7 некорректно определяются размеры экрана функциями Tkinter (w, h = tk.winfo_screenwidth(), tk.winfo_screenheight()). Так что надо переписывать еще и код разворачивания окна на весь экран.

О, стихи родились: Луч поноса посылаю чувакам из Микрософт.

2011-10-28

Замаскированный пароль

Есть у меня скриптик, bat-файл, который я запускаю в начале рабочей сессии. Скрипт цепляет SMB-ресурсы с разных серверов, для чего надо указать имя:пароль.

До недавнего времени я использовал такую конструкцию для записи паролей в переменную среды:

set /P dompass=type NT domain password here:
set /P sqzpass=type SQZ Samba password here:

И вот, внезапно, мне надоело, что при вводе паролей их видно на экране. Задумал я потратить часок на поиск решения для замаскированного (звездочками!) ввода пароля при выполнении скрипта. Короче, как это ни странно, виндовый интерпретатор скриптов и сама MS Windows не содержат средств маскирования вводимых паролей. И конечно, мир не без добрых людей. Представляю мой выбор, утилитка командной строки, делает что надо и многое другое. Вот так теперь выглядит в батнике задание переменных с паролями:

editv32.exe -m -p "type NT password here: " dompass
editv32.exe -m -p "type SQZ Samba password here: " sqzpass

westmesatech.com/editv
stackoverflow.com/questions/664957/can-i-mask-an-input-text-in-a-bat-file


kwords: mask, input, password, bat, cmd, windows, script

2011-10-27

IfModifiedSinceWebClient

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

"You are now up to date." [IfModifiedSinceWebClient makes it easy to keep a local file in sync with online content - and do so asynchronously]
Recently, I was working with a program that needs to cache the content of a network file on the local disk for faster, easier access. The network file is expected to change periodically according to an unpredictable schedule; the objective is to keep the local file in "close" sync with the online copy without a lot of cost or complex protocols.
...
we can improve things easily: the HTTP specification defines the If-Modified-Since header for exactly this purpose! By including that header with the HTTP request, the server "knows" whether the local file is out of date

blogs.msdn.com/b/delay/archive/2011/10/18/ you-are-now-up-to-date ifmodifiedsincewebclient-makes-it-easy-to-keep-a-local-file-in-sync-with-online-content-and-do-so-asynchronously

Исходный код прилагается.

2011-10-26

Intel Sandy Bridge video in Debian Squeeze

Небольшой хинт на тему X.Org X server (Debian Squeeze) на связке Z68 + i7-2600 (GigaByte GA-Z68X-UD3H-B3 rev1.0/3 + CPU Intel Core i7-2600).

Собрал на работе станцию, подразумевалось, что использовать буду встроенное Интеловское видео с двумями дисплеями, один фулХД и второй попроще, плоская семнашка. Собрал, включил, накатил Сквиза, запускаю GDM — монитор не опознан и картинка далеко не fullHD. Как жить?

Погуглил, довольно быстро отыскал рабочий рецепт: поставить xserver-xorg-video-intel из бэкпортов. Заодно и ядро оттуда утянул, ибо такова была настоятельная рекомендация — мол библиотеки требуют ядра не ниже 35-го.

Как заюзать бэкпорты и обновить видеосистему:
http://pkg-xorg.alioth.debian.org/reference/squeeze-backports.html

И сцыль, откуда я вышел на решение проблемы:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624146

Рецепт рабочий, проверено. Оба дисплея опознались и прекрасно показывают что надо.

2011-10-25

Болото

На днях в меня кинули цынком на информативный текст.

...я живу в маленьком городе в 40т населения, я предприниматель, моя компания занимается управлением рынком, обычным торговым рынком. Я конечно там не один, у меня есть компаньоны. У нас около 1000 арендаторов в выходные наш рынок посещает до 10.000 человек. Я нахожусь в постоянном контакте с людьми и знаю о чем они думают.
... я понял на сколько сложно нами управлять. Сначала я принимал сам всех торгашей, общался с ними, но потом по разным причинам, я начал их понемногу ненавидеть и сейчас разговоры с ними ведет другой человек. Народ постоянно недоволен, одним холодно, другим жарко, постоянное вранье, у них ВСЕГДА плохо идут дела, лично я ни разу не слышал ни одного ответа что "все отлично". Как не спросишь, дела хорошо шли вчера, сегодня плохо, а завтра будет ещё хуже. При этом чувствуется классовая ненависть....
Власть это такие же люди как и мы, это часть общества, вот когда мы станем европейцами в глубине души, вот тогда и правители станут более заботливые, а пока, если обычные люди ненавидят всех вокруг, то почему власти должны вести как-то по особенному?! Работая на рынке, я насмотрелся уже такого....., люди не задумываясь продают испорченные продукты, обвешивают, обсчитывают, хамят друг другу и тд. А когда это начинаешь пресекать, проводить теже рейды по испорченным продуктам и обвесам, народ называет нас именно так, как в ЖЖ называют власть, это и фашистами и оккупантами, и зажравшимися олигархами и тд., хотя мы хотим только одного, соблюдения закона и уважения к покупателям.

otecsergiy.livejournal.com/432306

Не могу удержаться от каментов. Итак.
Написано несколько сумбурно, видно наболело у человека, знает о чем пишет и делает правильные выводы, респект. По сути все верно, да, в массе своей, население нашей необьятной страны несколько инфантильно и диковато, чего уж там. Шансов особых не было для развития культурки, то понос, то золотуха. Только неторопливым и упорным трудом, без охламонских переворотов, можно осушить болото и привить народу культурку. Но всем же хочется сейчас и сразу и всё (и чтоб никто не ушел обиженным), правда?

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

2011-10-24

Огородились анально

MS Windows 7 не может запустить программу с USB диска через Autorun (или Autoplay, который теперь вместо авторана). By design отрублена всякая возможность автоматического старта программы со сменного носителя, который НЕ CD/DVD. Типа, это оне повысили безопасность.
Что сказать, молодцы, бля. А как будут выкручиваться люди, которые на функции авторана строили свои продукты? А насрать, пусть как хотят так и выкручиваются.
Я бы поверил в заботу о пользователях, если бы в меню автоплея выводился пункт меню типа «да, я знаю о угрозе авторана и таки хочу запустить авторан с этого диска». Но нет, ничем подобным и не пахнет. Пользователь должен сам отыскать на диске заветный ярлычок и даблкликнуть на нем. Странно, что не запретили выполнение вообще любого кода со сменных носителей. Ведь как безопасно — сначала перепиши весь диск себе в домашний каталог, проверь на безопасность, потом задай разрешения на запуск исполняемым файлам и только потом запускай.

Наверное, это будет в следующих версиях MS Windows сделано. Тогда по неудобству использования она сравняется с Linux и можно будет с чистой совестью на все десктопы поставить его, родимого.

Я почему разозлился? Я некогда сделал предкам программульку-оболочку для удобного смотрения кина с USB-диска. И она прекрасно работает у них на старом ноуте. А вот на новом работать не хочет, ибо запускается из авторана прОклятого. На новом ноуте MS Windows 7 — авторан не работает.
Надо срочно что-то придумывать.



2011-10-22

21 век в отдельно взятом офисе

Вот и до нас добрался-таки прогресс. Не прошло и года. После долгой и продолжительной болезни, провайдерская жаба скончалась. Правда, остались еще жабеныши.
У нас в конторе появился безлимитный Интернет. По выделенке. И сразу наступил 21 век в наших ебенях. Наконец-то.
Пять мегабит за 6 (шесть) тысяч рублей. Без ограничения обьемов. Канал устойчивый, надежный (стучит по дереву, чтоб не сглазить).
До того нам продавали что-то вроде 3 гигабайт за 3 тысячи рублей. А превышение по два рубля за мегабайт.
Я так долго этого (безлимита) ждал, что уже и особой радости нет. Есть усталое удовлетворение типа «ну вот и дождались, вашу за ногу». Тем не менее, событие знаковое, ура, товарищи!



2011-10-21

Открыл браузер, попал в консоль

Обнаружилось еще одно возможное применение для iPad-ки. Можно, запустив браузер, админить сервера, ибо добрые люди создали веб-аппликуху:

реализация работающего внутри web-бразуера эмулятора терминала и SSH-клиента, написанная на JavaScript с использованием стандартного HTML5 API, способная работать без установки дополнений или плагинов. Серверная часть запускается в виде скрипта на локальной или удаленной машине. Код серверной части написан на языке Python с использованием модуля pyOpenSSL. Канал связи организуется с использованием WebSockets

opennet.ru/opennews/art 32036


Gate One is an HTML5 web-based terminal emulator and SSH client. Top features:
No browser plugins required!
Supports multiple simultaneous terminal sessions. As many as your hardware can handle.
Users can re-connect to their running terminals whenever they like from anywhere.
Can be embedded into other applications. Add a terminal--running whatever application(s) you want--to your web app! Would be vastly superior to say, a Java-based serial console applet (hint hint).
Includes powerful plugin system that supports plugins written in Python, JavaScript, and even CSS (yes, you can write a CSS-only plugin).
The Gate One server can be stopped & started without users losing their running terminal applications (even SSH sessions stay connected!). In essence, worry-free upgrades!
The SSH plugin allows users to duplicate sessions without having to re-enter their username and password (it re-uses the existing SSH tunnel).
Provides users with the ability to play back and save/share their terminal sessions via a self-contained HTML playback file.
Similarly, supports server-side logging, recording, and video-like playback of user sessions. It can even log to syslog to support whatever centralized logging system you want.
Keberos-based Single Sign-on support is included. It even works with Active Directory. Other authentication options are available as well.

github.com/liftoff/GateOne
liftoff.github.com/GateOne

Эта пять, однозначно.

2011-10-20

Высирая кирпичи

В редакцию прислали сцыль на «Замес про Twitter, iOS 5 и сервисы Google». Человек со знанием дела рассказывает про технические подробности оборотной стороны медали. Вот небольшой кусочек:

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

cdriper-rss.livejournal.com/27993

Подитожить можно так: айвсякое это удобная простота, а Linux это простое удобство. Идеал не достижим, но к нему надо стремиться.

2011-10-19

Из первых рук

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

...WSGI на самом деле хорошо заточен под классическую задачу "показать целиком веб-страницу". Он был спроектирован как самый простой рабочий "наименьший общий делитель" — фактически Питоний вариант CGI. То есть он очень хорошо спроектирован для веба 1995 года, но не настолько хорошо для веба 2011, с его long polling'ом и другими вкусными push-технологиями и серверными плюшками...
...
здравый смысл подсказывает, то модели должны валидироваться при сохранении, и модельный формы должны делать всю валидацию, какую могут. И так бы мы и сделали, если бы начинали с чистого листа. Но нам нужно поддерживать старый код, поэтому мы теперь имеем эту кривость.

softwaremaniacs.org/blog/2011/10/14/russel-on-wsgi-and-model-validation

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

2011-10-18

Круглосуточно


Сегодня я наблюдал прорыв в банковском деле России :) Банк принял мои платежные поручения (через Интернет-банк) и выполнил их в течении 10 минут. Казалось бы, делов-то. Суть в том, что было это ночью, точнее в 2 часа ночи!

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

Мелочь, а приятно.

2011-10-17

Objectify


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

На Python: parsing XML with lxml.objectify saltycrane.com/blog/2011/07/example-parsing-xml-lxml-objectify

На Javascript: jQuery XML to JSON Plugin fyneworks.com/jquery/xml-to-json

2011-10-15

Dennis MacAlistair Ritchie

Во дела, не успели оплакать Джобса, как пришло сообщение о смерти Денниса Ритчи:

Роб Пайк с прискорбием сообщил о смерти Денниса Ритчи, создателя языка Си и одного из ключевых разработчиков операционной системы UNIX.

opennet.ru/opennews/art 32028

Один из авторов нынешней айтишной экосистемы. Полубог, фактически. Я учился по его книге (K&R).
RIP Dennis.

2011-10-14

айБук

В продолжение темы iPad.
Не успел я прикупить айпадку, как поспело обновление прошивки. Прошил, а как же. Ответственно заявляю, прошивать можно из виртмашины. Проблема ровно одна — по ходу прошивки айпадка перезапускается и обратно автоматом в виртуальную винду не монтируется. Надо не упустить момент и подмонтировать устройство вручную (два щелчка мышкой).

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

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

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

Чета я расписался. А ведь еще про чтение пдф не тему не закрыл. Закрываю.
Вроде разобрался как пачками добавлять PDF-ки в читалку книг на iPad-ке. Алгоритм не простой и грозит потерей уже залитого в айпадку контента.

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

Книжки djvu читать можно через программулину xDjvu Lite. Пачками закидывать книжки в айпадку можно через айтюнс — устройства — айпад — аппликухи. Там включить синхронизацию аппликух (упс, опять все файлы пропали, нет?) и внизу, в части «общих файлов» выбрать аппликуху xDjvu. В правую часть окна драг-н-дропнуть пачку файлов. Вот только версия Lite втихую удаляет (или прячет с концами?) все файлы кроме одного. Так что или читать по одной дежавюшке или покупать полную версию. Кстати, в прогу встроен веб-сервер, через него можно книжки заливать и без айтюнса. Быстрее выходит (или входит?).

Еще полезная программа — OPlayer. Бесплатная версия показывает рекламу, зато и файлы MKV показывает тож.

Масса информации для айпадопользователей:
4pda.ru/forum/i topic=184977

2011-10-13

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


Это в отличие от дополненной реальности, реальность в которой чегой-то поправили — будет поправленная реальность.

На примере статьи дяди-дока uncle-doc.livejournal.com/307927 видно, что уметь отличать поддельные картинки от оригинальных может дорогого стоить. Лично меня заинтересовала техническая сторона вопроса — куда смотреть и что именно искать в подозрительных картинках.

Понятно, что профессиональную подделку не каждый эксперт распознает, но подавляющее количество «левака» откинуть можно и самостоятельно, освоив некоторые несложные приемы. Конечно, без внимательности и зоркости тоже никак.

2011-10-12

Регулятор


Возможно, провайдерскую вольницу подсокротят:

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

citforum.ru/news/27110

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

2011-10-11

iPad

Купил вчера iPad 2. Черный, в память о Джобсе.

Сразу выяснил, что лежа в кровати держать айпадку неудобно. Не хватает ручек по бокам - планшет тяжелый, рамки тонкие, за эти рамки держать - пальцы ломать.
Фотки заливает медленно, но результат хорош, если не брать в расчет то, что все фотки поджимаются до размера экрана (или около того), сильно не позумишь.
Как залить кинцо  - я не понял, файлы MKV ни в каком виде не переваривает.
Как залить PDF - тоже пока неясно, но если такой файл дернуть браузером Safari, то пдф-ка открывается и прекрасно читается. Правда, строго после установки аппликухи iBooks.

Доступ в Интернет есть, ютуб работает.

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

2011-10-10

FOSS4G


По материалам конференции FOSS4G (Free and Open Source Software for Geospatial).

One thing that struck me, and apparently also Stu Lester - the maturity of the FOSS GIS software was really on display. 
... PostGIS Cloud Services are clearly hot. SpacialDB and CartoDB are leading the charge here. Both will be offered as services, and both have their own take on how this should work. ...were pretty direct in saying that CartoDB was modeled on Google Fusion Tables, and the demo shown was really slick. Here’s a video of CartoDB accessed from an iPad. ... 
... PostGIS – the upcoming version 2.0 will seriously raise the bar with the addition of has more built-in features – from “clean” operations, to 3D support to raster algebra / focal operations (as in Spatial Analyst ‘fu in the database). Quite simply this is gonna be a huge release – I think I heard that the beta is slated for end of the year. More info here. ...
 ...talked with the folks at SkyGone, and got the skinny – although a “cloud” provider, they are NOT like EC2. ... What really struck me was that a running instance can be scaled by adding resources on the fly (think scaling from an EC2 micro-instance to an x-large instance on the fly without launching new instances). This is especially attractive for emergency response applications which need to run with minimal resources until an event occurs and then needs to scale up quickly. ...

blog.davebouwman.com/2011/09/21/foss4g-rockin-the-mile-high-city

Что ПостГИС прет, в этом удивительного немного, хотя и много интересного. А вот как в облаке, на лету, меняется размер машины, вот это удивительно.

Еще к теме:
blog.davebouwman.com/2011/08/19/foss4g-fun-and-games-in-denver
blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps
spatiallyadjusted.com/2011/08/18/you-cant-edit-spatial-rdbms-with-arcgis-for-desktop-without-sde

2011-10-08

Шиповник


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

Надо собирать инфу.

Как посадить шиповник правильно? Сажают шиповник как весной, до начала вегетации, так и осенью, в предварительно подготовленные посадочные ямы. Предпочтение следует отдать весеннему периоду, осенняя посадка шиповника допускается только во влажную почву. Перед посадкой почву перекапывают на глубину 15-20 см. Для посадки используют однолетние и двухлетние саженцы, на приживаемости растений это не отражается. Для создания живой изгороди шиповник высаживают по схеме 3 х 1 м.
После посадки саженцы шиповника обязательно обильно поливают и делают обрезку на 1/3 их длины. Для лучшей приживаемости шиповника можно сделать корневые срезы. Этот процесс заключается в обрезке кончиков корней еще до посадки, причем корни после укорачивания должны быть длиной не менее 25 см.
Шиповник также очень легко размножить зелеными черенками. Для этого в конце июня – начале июля нарезают молодые побеги на черенки с 2-3 междоузлиями и высаживают их в теплицу. Укореняемость при таком способе достигает 97%.

fazenda-box.ru/349-kak-pravilno-posadit-shipovnik


Размер посадочных ям в зависимости от плодородия почвы может быть разным, но не менее 50  см  ширины   и   глубины.   В каждую яму внесите 10-15 кг перегноя, 200 г суперфосфата, 50 г хлористого калия и 60 г мочевины, предварительно хорошо перемешав их с почвой.
Перед посадкой надземную часть саженцев коротко обрежьте, оставляя пеньки наиболее толстых ветвей длиной 8-10 см (2-3 почки). Корни погрузите в глиняную болтушку, желательно с добавлением гетеро-ауксина (100 мг на 10 л воды). Затем саженцы поставьте в яму и, расправив корни, присыпьте землей, постепенно ее уплотняя и следя за тем, чтобы корневая шейка была на 5-8 см ниже уровня поверхности почвы. После посадки растение обильно полейте водой и замульчируйте торфом, опилками или другим материалом.
Уход за шиповником заключается в регулярных поливах, особенно в первый год после посадки, и борьбе с сорняками.

dachniy-uchastok.ru/vyrashhivanie-shipovnika-na-uchastke


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

znaikak.ru/howvirashshipovnik

Ну, понятно. По весне берем саженцы, делаем корневое обрезание, копаем яму, сажаем, засыпаем, поливаем, делаем обрезку на 1/3 длины (срезать 1/3 или оставить 1/3?). Поливаем. Поливаем. Не забыть сделать оградку. Поливаем.

2011-10-07

Стив Джобс

Стив Джобс ушел. Навсегда. Я понятия не имею, что это был за человек, но я знаю, что он сделал для компьютерной индустрии. Человек-локомотив. Таких очень немного на Земле. Мир праху.

В августе 2008 года Блумберг опубликовал (по ошибке) заготовку некролога по Стиву. Вот этот черновик: sites.google.com/site/vasnake/stevejobs.obituary.200808.pdf

2011-10-06

Моща


Два анонса от Oracle. Скоростная числодробилка и недорого масштабируемое хранилище данных. Прогресс прет, хрен остановишь.

...очередную новинку компании — комплекс Exalytics Intelligence Machine для корпоративных пользователей. С аппаратной точки зрения новинка представляет собой сервер с 40 вычислительными ядрами и 1 Тб оперативной памяти. ... Есть два порта 10 Gigabit Ethernet и четыре — Gigabit Ethernet.
Основная программная составляющая Exalytics Intelligence Machine — база данных класса In-Memory. Платформы данного типа загружают основную часть информации в оперативную память, что позволяет минимизировать обращение к жёстким дискам ...
По заявлению г-на Эллисона, благодаря специальным алгоритмам компрессии Exalytics Intelligence Machine может хранить в ОЗУ до 10 Тб данных....

citforum.ru/news/27103


Компания Oracle анонсировала новую платформу для организации хранения больших объемов данных - Oracle Big Data Appliance, позволяющую организовать надежное хранение и анализ петабайтов данных. Решение позволяет обеспечить горизонтальную масштабируемость (при необходимости увеличения хранилища в кластер добавляются новые узлы), высокую надежность хранения (данные дублируются на нескольких узлах) и отсутствие единой точки отказа (в синхронном состоянии поддерживаются несколько узлов репликации).
Платформа функционирует на базе Oracle Linux и построена на базе следующих открытых компонентов:
  • Для организации распределенного отказоустойчивого хранилища задействована платформа Apache Hadoop...
  • Для управления данными поверх кластера Hadoop запускается БД Oracle NoSQL Database ...позволяющая гарантировать целостность и атомарность выполняемых транзакций;
  • Для анализа и статистической обработки данных предлагается использовать язык программирования R...

opennet.ru/opennews/art 31955


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

2011-10-05

Декораторы


Прекрасная (хотя и тяжеловата для неподготовленного читателя) статья про декораторы в Python:

У декораторов есть общая черта с более ранними метапрограммными абстракциями, введенными в Python: они в действительности не делают ничего, что нельзя было бы сделать и без них.
...
Будучи просто синтаксической изюминкой, декораторы позволяют легко делать глупости, если вам этого хочется. Декоратор – это просто функция, принимающая как минимум один аргумент. Это программист, использующий декоратор, должен удостовериться, что возвращаемая величина является все еще осмысленной функцией или методом ...
...
Вероятнее всего, самое типичное применение декораторов, с которым вам придется сталкиваться – это оснащение функции или метода какими-либо дополнительными функциями вдобавок к их основному назначению. Например, на Web-сайте Python Cookbook (см. ссылку в разделе Ресурсы) и в других подобных местах можно встретить декораторы, добавляющие такие возможности, как трассировка, ведение журнала, запоминание/кэширование, блокировка потоков, перенаправление вывода. Сходны с такими модификациями, хотя и немного в другом духе, модификации "до" и "после". Одно интересное применение "до/после"-декорирования – это проверка типов аргументов и возвращаемого значения функции. Предполагается, что подобный декоратор type_check() должен вызвать исключение или предпринять какие-нибудь корректирующие действия, если типы не те, которые ожидаются.

ibm.com/developerworks/ru/library/l-cpdecor
ibm.com/developerworks/linux/library/l-cpdecor

А знаете ли вы, что декораторы приближают нас к AOP?

2011-10-04

Бредятина


Намедни пришла мне в голову мысля. Бредовая но забавная.

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

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

В казну деньги поступают с чиновников, чиновникам деньги поступают от народа. Чиновник не зарабатывает, значит прогорает. И нет взяток, коррупции.
Красота!


А вот еще забавное, про олдскульных программеров:

Типичный настоящий программист живет перед дисплеем ЭВМ. Вокруг этого дисплея расположены листинги программ, над которыми он когда-либо работал. Они складированы в кучи приблизительно в хронологическом порядке на каждой плоской поверхности конторы. Вы так же обнаружите полдюжины, или около того, наполовину выпитых чашек с холодным кофе. Иногда в кофе можно обнаружить плавающие “хабарики” сигарет. В некоторых случаях в чашках находится выжатый апельсин. И только в тех случаях, когда программист не очень хорош, вы увидите экземпляры руководства OS JSL и принципов работы, открытых на особо интересных страницах. Приклеенный клейкой лентой, на стене висит распечатанный на АЦПУ календарь с собачкой Снуппи за 1969 год. На полу разбросаны обертки от хлеба с сыром и земляными орехами (такого, который становится черствым уже в пекарне, так что не может стать хуже в торговых автоматах). И, наконец, в верхнем левом ящике стола, под коробочкой Oreos, находится линейка-шаблон для вычерчивания блок-схем, оставленная предыдущим владельцем стола. Настоящие программисты пишут программы, а не документацию, которую они оставляют штату сопровождения.
Настоящий программист может работать по 30, 40 и даже 50 часов непрерывно, под интенсивным нажимом. На самом деле, он и предпочитает так работать. Плохое время отклика не беспокоит настоящего программиста; он получает возможность вздремнуть между трансляциями. Если график выполнения работы не очень жесткий, то настоящий программист предпочитает делать свою жизнь более захватывающей, работая первые 9 недель над маленькой, но интересной частью проблемы. Затем, он заканчивает выполнение всей остальной части за 2 или 3 50-часовых марафона. Это не только впечатляет начальника, но и создает удобное оправдание не делать документацию. В общем случае, ни один настоящий программист не работает с 9 до 5, за исключением тех, кто работает в ночную смену. Настоящие прграммисты не носят галстуков. Настоящие программисты приходят на работу вовремя - к обеду. Настоящий программист может знать, а может и не знать имя своей супруги. Он, однако, знает наизусть таблицу ASCII (или EBCDIC) символов. Настоящие программисты не умеют готовить. Бакалейные магазины не часто открыты в 3 часа ночи, так что они должны уметь выживать на печенье и кофе.
...
Из собственного опыта, я думаю, можно смело сказать, что будущее прекрасно для настоящих программистов. Ни OS/370, ни Фортран не высказывают ни каких признаков отмирания, несмотря на усилия программистов на Паскале.
...
Даже UNIX может быть не так уж плох для настоящих программистов, как в прошлом. Последняя реализация UNIX’а обладает потенциальными возможностями, ценными для любого настоящего программиста. Она имеет два различных и слегка несовместимых пользовательских интерфейса, аркан и сложный драйвер терминала, и виртуальную память. Если пренебречь тем, что он структурный, то даже программирование на языке “C” может быть по достоинству оценено настоящим программистом. В конце концов, в нем нет проверки типов, имена переменных имеют 7 (10?, 8?) символов в длину и введен полезный тип данных “указатель” (pointer). Получается, как будто соединены воедино лучшие части языка Фортран и Ассемблера, не говоря уже о более творческих применениях оператора #DEFINE.

vak.ru/doku.php/real-programmers

2011-10-03

Рилтайм анализ статистики трафика


Анализатор трафика. До чего дошел прогресс! До фильтрации трафика на основе статистики, собираемой и накапливаемой по потокам этого трафика. Биг браза не спит!

В октябре планируется довести до готовности к интеграции с деревом исходных текстов FreeBSD проекта DIFFUSE (DIstributed Firewall and Flow-shaper Using Statistical Evidence), добавляющего в пакетный фильтр IPFW функции классификации трафика на основании статистических параметров потоков данных, отслеживаемых в режиме реального времени на одном или нескольких узлах. Иными словами, для классификации трафика DIFFUSE оперирует не параметрами в заголовках пакетов и не анализом содержимого передаваемых в пакетах данных, а статистическими характеристиками потока, свойственными определенным видам трафика.
Система позволяет для отдельных потоков трафика накапливать и учитывать в IPFW такую статистику, как размер пакетов или время между поступлением пакетов, организуя привязку потоков к определенным классам трафика при помощи техник машинного обучения (например, позволяет определить VoIP или HTTP-трафик на нестандартных сетевых портах).

citforum.ru/news/27051

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

Архив блога

Ярлыки

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) Klaipeda (13) 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) 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)