s o m e t h i n g a b o u t m e

chubbchubbs are coming

свидетельства повышения цивилизованности :)

Лише у 2007 році за ініціативи юридичного представника порушено 199 кримінальних справ за статтею 176 Кримінального кодексу України (порушення авторського права і суміжних прав), пред’явлено 61 цивільний позов, винесено 14 обвинувальних вироків відносно 16 осіб.

в этом свете недавний пост становится актуальней


delicious

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

Когда-то была поделка на Air, но она работало только под оффтопом. Гугление не выручало - толковых и продуманных программ организации небыло.

Сегодня, по мотивам, нашел то, что искал (и пох, что это для реальных книг, думаю, только пока. и пох, что маковский продукт) -

Delicious Library

Delicious Library - Get your Mac, a webcam, and Delicious Library and rediscover your home library. Just point any FireWire digital video camera, like an Apple iSight®, at the barcode on the back of any book, movie, music, or video game. Delicious Library does the rest. The barcode is scanned and within seconds the item’s cover appears on your digital shelves filled with tons of in-depth information downloaded from one of six different web sources from around the world.

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

это еще один продукт в корзину к примерам того, как нужно писать софт. просто, понятно и элегантно.


sudo apt-get remove windows

все потихоньку приходит :) теперь я полностью девиндовзнулся — дома Kubuntu, на работе Ubuntu (кстати, Gnome, как я обнаружил, все-таки делает KDE. он целостней, чтоль. жутко макоподобный), оффтоп остался только на домашнем десктопе, который включается раз или два в месяц. есть мысль от него избавиться и, если понадобится, взять что-то более мобильное.

все движется. писать о аттестации не то чтоб неуместно, а даже смешно.


nichlusting

nichlusting in Kiev

nichlusting in Kiev, originally uploaded by _traut_.

вчера я купил замечательную книжку


PNG chunks removing with Python

# working on pyips

I’ve already have the post about chunk removing in Java. But how to remove chunk from PNG file data stream in python?


maxs:/usr/local/www/eth0less.com/pyips>cat ./pngutils.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
 PyIPS - Python image processing server/script

 author: Sergey Polzunov aka Traut
 email: traut.box[at]gmail.com
 blog: http://out.com.ua/blog

 Version 0.1
'''

import string

chunk_min_length = 4 + 4 + 4 # data_length, chunk_name, crc

main_chunks = ["IHDR", "PLTE", "IDAT", "IEND"]
other_chunks = ["tRNS",                                 # transparency
                "cHRM", "gAMA", "iCCP", "sBIT", "sRGB", # colorspace
                "iTXt", "tEXt", "zTXt", "bKGD",         # textual info
                "hIST", "pHYs", "sPLT",                 # miscellaneous things
                "tIME"]                                 # time stamp

def compute_chunk_length(data, i):
    return (ord(data[i]) << 3) | (ord(data[i + 1]) << 2) | (ord(data[i + 2]) << 1) | ord(data[i + 3])

def remove_chunk(data, chunk_name):
    for i in range(0, len(data) - chunk_min_length + 1):
        j = i + 4
        maybe_chunk = data[j] + data[j + 1] + data[j + 2] + data[j + 3]
        if maybe_chunk == chunk_name and (main_chunks + other_chunks).count(maybe_chunk) == 1:
            chunk_data_length = compute_chunk_length(data, i);

            #print "removing %d blocks" % (chunk_min_length + chunk_data_length)

            return data[:i] + data[i + chunk_min_length + chunk_data_length:]
    print "Cannot find chunk with name", chunk_name

def browse_chunks(data):
    found_chunks = []
    for i in range(0, len(data) - chunk_min_length + 1):
        j = i + 4
        maybe_chunk = data[j] + data[j + 1] + data[j + 2] + data[j + 3]
        if (main_chunks + other_chunks).count(maybe_chunk) == 1:
            chunk_data_length = compute_chunk_length(data, i);
            found_chunks.append((maybe_chunk, chunk_data_length))
            i += chunk_data_length + chunk_min_length

    #return found_chunks

    for chunk_name, chunk_length in found_chunks:
       print "Chunk %s founded. Data length is %d" % (chunk_name, chunk_length)

def test():
    image_file = open("test.png", "rb")
    image_raw_data = image_file.read()
    browse_chunks(image_raw_data)
    chunk = "gAMA"
    print "Removing", chunk
    new_image_data = remove_chunk(image_raw_data, chunk)
    new_image_file = open("test2.png", "wb")
    new_image_file.write(new_image_data)

    image_file.close()
    new_image_file.close()
    print "Edited file:"
    image_file = open("test2.png", "rb")
    image_raw_data = image_file.read()
    browse_chunks(image_raw_data)
    image_file.close()

if __name__ == "__main__":
    test()


all you need is love

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

очень круто



© busconductor