December 13th, 2007

satyr

Полинял, блин :)

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

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

Так прикол в том, что потом приходится тупо этот валик, с намотанным сантиметровым волосяным слоем, приходится руками очищать в сортире, матерясь и отдирая волосы от щетки =) Это пиздец, я никогда не думал, что с обычного человека линяет столько шерсти!! Пока волосы короткие, этого как-то не замечаешь, но когда они отрастут -- масса получается весьма значительная.

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

Зависимость

А еще я аццки подсел на кефир =) Примерно так у меня выглядит примерно недельная мусорная очередь на выброс:

  • Current Music
    Mortification / Envision Evangelene
  • Tags
    ,
satyr

Битовые строки: окончание

Идея со схемой временно откладывается -- сложность реализации что-то превысило допустимый порог "code for fun" :) Тем не менее, приведу стандартное решение "в лоб", раз уж обещал показать схему: http://www.beercan.ru/misc/golomb/parser.scm.htm

Здесь я решил все-таки немного подвыебнутся, и сделал подсчет лидирующих нулей не через lookup-table, как было бы разумно, а через макрос, разворачивающийся вот в это, с логарифмической скоростью:

#;1> #;2> ,x (unroll-count-zeroes 24 #xFFFFFF)
(##core#set!
  count-zeroes
  (lambda (value)
    (- 24
       (if (zero? (bitwise-and value 16773120))
         (if (zero? (bitwise-and value 16777152))
           (if (zero? (bitwise-and value 16777208))
             (if (zero? (bitwise-and value 16777214))
               (if (zero? (bitwise-and value 16777215)) 0 1)
               (if (zero? (bitwise-and value 16777212)) 2 3))
             (if (zero? (bitwise-and value 16777184))
               (if (zero? (bitwise-and value 16777200)) 4 5)
               6))
           (if (zero? (bitwise-and value 16776704))
             (if (zero? (bitwise-and value 16776960))
               (if (zero? (bitwise-and value 16777088)) 7 8)
               9)
             (if (zero? (bitwise-and value 16775168))
               (if (zero? (bitwise-and value 16776192)) 10 11)
               12)))
         (if (zero? (bitwise-and value 16515072))
           (if (zero? (bitwise-and value 16744448))
             (if (zero? (bitwise-and value 16760832))
               (if (zero? (bitwise-and value 16769024)) 13 14)
               15)
             (if (zero? (bitwise-and value 16646144))
               (if (zero? (bitwise-and value 16711680)) 16 17)
               18))
           (if (zero? (bitwise-and value 14680064))
             (if (zero? (bitwise-and value 15728640))
               (if (zero? (bitwise-and value 16252928)) 19 20)
               21)
             (if (zero? (bitwise-and value 8388608))
               (if (zero? (bitwise-and value 12582912)) 22 23)
               24)))))))


В результате получил около 3900 инструкций на число, слив-таки хаскелю в тривиальном решении ;)

Что хочется добавить в итоге: во-первых, свою идею я как-нибудь попробую, из академического интереса =) Ну и во-вторых, на практике в своей схеме (я использую chicken) я бы в здравом уме не стал реализовывать всю эту битовую ересь в лоб, благо мне сишный код можно писать прямо как ассемблерные вставки в си:
(define my-strlen
  (foreign-lambda* int ((c-string str))
    "int n = 0; while(*(str++)) ++n; C_return(n);") )

Но правилами это было запрещено :)
satyr

Убить всех человеков

А знаете, кто самые мои благодарные читатели? =) Роботы!! Стоило мне запостить картинку про кефир, как сразу толпы этих консервных банок ломанулись за новым контентом.

Итак, знакомтесь:

http://fuzzysquid.com/LJ.php -- последние 50 картинок, запощщеных в жж
http://pizdaus.com/lj.php -- последние 236 картинок, запощенных в жж
http://www.portalofevil.com/lj.php -- опять сколько-то картинок, запощщеных в жж
http://toothpastefordinner.com/livejournal-pictures.php -- вплоть до 250 картинок, запощенных в жж
http://squishface.net/eljay/ljimg250.php -- бляя, ну вы догадались, да?
http://www.iamthecheese.com/ljimages.php?n=250 -- угадайте что
http://aboyandhiscomputer.com/lj.php?limit=250 -- я уже даже не ходил сюда
http://www.nonexiste.net/lj.php?count=250&refresh=600 -- сука мать вашу
http://www.bloglines.com -- бот с идентификатором "Bloglines-Images/0.1". Как вы думаете, зачем он здесь?

Это еще не считая жж-шного робота, который делает снапшоты по урлам. Да, либо я что-то не понимаю, либо нас скоро всех сожрет вовсе не носег с супом, а роботы на похапе :(