суббота, 7 июня 2008 г.

понедельник, 2 июня 2008 г.

эх, красота

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

хочется странного

class ActionHolder
  def initialize
    @my_id = rand(100000)
    @actions = []
  end

  def add_action(&block)
    @actions.push( block )
  end

  def process
    @actions.each{ |a|
      a.call
    }
  end
end

ah = ActionHolder.new

ah.add_action{
  puts "I'm the action"
  puts "my holder ID is: #{@my_id}"
}

ah.process

Можно код  передавать строкой и эвалить внутри класса, но:
  - теряется проверка синтаксиса до эвала
  - в редакторе не подсвечивается синтаксис внутри строки
  - бэктрэйс с эвалами труднопонимаем
Upd: Днем был тупняк. во время определения лямбды, @my_id ссылается на nil т.к. никто такой переменной в контексте не обьявлял, а преобразование из текста "@my_id" во внутреннее представление, похоже, происходит 1 раз, во время создания. Этож не eval.
  class ActionHolder
  def initialize
    @my_id = rand(100000)
    @actions = []
    @@Getter = proc do |var_name|
      raise "instance variable '#{var_name}' not defined" \
        if !self.instance_variables.include? var_name
      self.instance_variable_get( var_name )
    end
  end

  def add_action(&block)
    @actions.push( block )
  end

  def process
    @actions.each{ |a|
      a.call( @@Getter )
    }
  end
end

ah = ActionHolder.new

ah.add_action{ |obj|
  puts "I'm the action"
  puts "my holder ID is: #{obj['@my_id']}"
}

ah.process

пятница, 30 мая 2008 г.

Firefox

http://www.spreadfirefox.com/ru/worldrecord/ Почему бы собственно и нет.

четверг, 29 мая 2008 г.

вторник, 27 мая 2008 г.

grrrrrrr

1) Нет способа убить каталог со всем содержимым одной командой. Никаких rm -rf. Только ебучие del + rd... для _каждого_ вложенного Х_Х. уродынах. Я всего лишь не поставил UnxUtils. 2) что будет если: system('del /S /Q /F "c:\documents and settings\user\МОИ ДОКУМЕНТЫ\someth"')? правильно, нихуя. 'del /S /Q /F "C:\Documents and Settings\barablin\¦Ь¦-¦¬ ¦Ф¦-¦¦TГ¦-¦¦¦-TВTЛ\someth Системе не удается найти указанный путь.'. а все почему? потому, что кодировка консоли cp866 а файл исходников в utf-8, поэтому чтобы заработало надо перекодировать в cp1251. 3) xcopy /S somedir\*.* someothername -> someothername это файл или каталог((F) File (D) Directory)? она меня еще, сука спрашивает и ждет до понедельника, что ей ответят. с утра субботы. уродина. Вонючая ось для мышефилов и имега-хакеров, в которой принципиально не возможно писать нормально работающие вещи. ВСЕ надо делать через хаки. делаешь штуку за 20 мин, а потом её хачишь пол-дня, чтобы она запустилась. 500 * Бля.

Туклипсы

Вчера вечерком прикрутил себе туклипсы (никак это слово в мою дырявую башку не лезет). Часа полтора сражался с велосипедом в прихожей пытаясь понять, как же запихивают ноги в эти штуки. Тестирование окончилось успешно. Оказалось не так уж все и сложно, хотя ботинки мне всеже придется поменять - глубокий протектор сильно мешает. Скорость поддерживать с туклипсами намного легче, но довольно быстро начинаю путаться, какую ногу в какую сторону и когда напрягать, теперь надо не просто нажимать на педаль вниз, а быстро менять направление усилия. Может с непривычки. По Невскому почти всю дорогу приходится ехать с одной свободной ногой - автолюбители разогнаться не дают и все время под колеса лезут :). Приходиться их все время объезжать. Да и на светофорах всетаки останавливаешься, а до той стадии просветления, когда можно не опускать ноги на землю я еще не скоро дойду. Есть еще небольшой страх, что когда надо будет - не смогу вовремя ноги выдернуть. Когда едешь - выдернуть обе ноги точно не получиться. Придется выбрать любимую ногу :). А еще я раньше часто видел такие педали(сейчас такие у меня) и никогда не мог понять, их конструкции. Оказалось все просто. Это обычные дешевые педали для дешевых туклипс. Все встает на свои места: есть прорези для ремешка, спец. форма для лучшего крепления ноги, спец. выступ чтобы поворачивать педаль нужной стороной.

понедельник, 26 мая 2008 г.

сортировка версий

есть множество строк: Есть несколько множеств типа: strs = ['1.10.1.0','1.1.13.0','1.2.3.4','1.20.3.1','1.24.1.1','1.3.6.7','1.1.6.7','1.3.3.7', '0.0.0.1', '0.1.0.0'] В разных множествах колличество чиселок, разделенных точками может различаться (2-5). В одном множестве все строки с одинаковым колвом чиселок все чиселки: 0 <= чиселко <= 9999
strs = ['1.10.1.0','1.1.13.0','1.2.3.4','1.20.3.1','1.24.1.1','1.3.6.7','1.1.6.7','1.3.3.7', '0.0.0.1', '0.1.0.0']
puts strs.sort.join("\n")
puts " - "
String.class_eval(%Q{
  def ver_to_i
    total = 0
    self.split('.').reverse.each_with_index{|d,i|
      total += d.to_i * 1000 ** (i+1)
    }
    total
  end
})
puts strs.sort{|a,b| a.ver_to_i <=> b.ver_to_i}.join("\n")
п.с. ruby 1.9

воскресенье, 25 мая 2008 г.

Выхи


Выхи, окончились, теперь я могу поспать :)
Приобрел вело-мульти-тул. теперь, как белый человек с собственным инструментом ездить буду, да еще и со спицевым(аж 3мя вариантами) ключем.
Нацепил, новую красненькую мигалочку под седло, в замен потерянной месяц назад(просто отвалилась, пока по ухабам скокал). Аж 7 светодиодов сфокусированно светят на 180, 225, 270, 315, 0 (ну, всмысле, 90 - вперед)
Прилепил вело-комп. Теперь знаю как же я езжу, крейсерская - 26-28 км/ч. Подумал, что такую штуку не прикольно покупать просто в магазине, решил найти на velopiter.spb.ru. Нашел. Дядечко продавал нужный девайс, но во Всеволожске. "О", подумал я, это целый квест: узнать дорогу, доехать, встретится с мужиком... В общем, интересно приобретать интересно. Пока настраивал, выяснил, что мои колеса - 2011мм.
Только что подарили непонятные загогулинки для педалек, с ними, типа педали станут "контактными". Педали с этими штуками превратились в совершенно невразумительные агрегаты. Ну, завтра попробую, как это жать педальки не только вниз но и во все остальные стороны.

Сегодня покатали с kreomarcell за Юноной, нашли совершенно Сталкеро-подобный ландшафтик. речка-говнотечка + горы непонятных отходов производства + безжизненные проплешины + невнятный подлесок + индустриальные постройки вдали + очень интересные дорожки(местами настолько, что с вела чуть не падал :) ). Вообще, на Юнону мы ездили за новыми педалями (начали вдруг жутко щелкать). Но, как выяснилось в процессе диагностики болезни пересадкой органов между нашими железными коняшками, надо было просто разобрать и собрать обратно, как росло.

Велик радует все больше и больше. Прямо наркотик какой-то.

Вчера, до 6 утра играл в шашки. Счет 1-много не в мою пользу. шашки - зло.

пятница, 23 мая 2008 г.

тяжелое детство, деревянные игрушки.

Чето вспомнились. Ностальгия блин.

how to remove bom from unicode file

remove the Unicode Byte-Order Mark (BOM) from all your files... to find them on a linux box do the following: find /path/to/editor -type f | while read line; do hd "$line" | grep -q 'ef bb bf' && echo "$line"; done > listOfBOMedFiles.txt to remove them then: cat listOfBOMedFiles.txt | while read line; do dd if=$line of=$line.noBOM ibs=3 skip=1; mv $line.noBOM $line; done

четверг, 22 мая 2008 г.

using modules

module Sim
  def puts(str)
    Kernel.puts "hello #{str}"
  end
end

puts('world') # Kernel::puts here
begin
  Sim.puts('world') # private method called
rescue
  puts $!
end

include Sim # don't want _include_ them all, just use them

puts('world') # I want Kernel::puts here!!!
Sim.puts('world') # just right

# ???

Фсе Фтопку

Одеваешь теплые, мягкие наушнички, с приятненькой музычкой. Фтыкаешь куда-нибудь типа "http://Как_написать_самую_умную_прогр
амму.нет". Придвигаешь клаву, отодвигаешь мышку подальше, чипятаешь ровненький кодик.
Гоняешь бажки потихоньку...
А потом оказывается, что уже 2 дня все на ушах от террористов взорвавших все АЭС в радиусе 20000 км. И вообще, заставляют йод пить ведрами (фу, бяка какая).

Хороше в танке... где там мои наушнечки. :)

вторник, 20 мая 2008 г.

Масло машинное.

Блин, как же его от себя отмыть? Отмываюсь уже столько же, сколько велик чистил.

понедельник, 19 мая 2008 г.

Невтерпеж

Хочу работу, постоянную, связанную с Руби. в Питере. Очень. :)

Indication of the popularity of programming languages

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
пока на 9м ;)

среда, 14 мая 2008 г.

Google again

Открыл сегодня для себя "Просмотр улиц" и "Википедия" на maps.google. Немогу подобрать челюсть и от восторга пупаются мысли :) Возможность проехаться по улицам совершенно далеких (во всех смыслах) городов (пускай только и американских) просто потрясает. Википедия - не так масштабно выглядит, но тоже очень даже интересно. Надо новый гугл ерс скачать... блин... где там моя челюсть...

вторник, 13 мая 2008 г.

тривиальные действия

Кажется я всетаки начинается перелом мозга. Такие вещи начинают казаться вполне естественными :(
debian# for FILE in $(svn status | grep ? | sed -re {s/^.{7}//}); do svn add $FILE; done

Музло

Захотелось тут чегото нового послушать. За последнюю неделю в "любимые" записаны:
Anneke Van Giersbergen (ex. The Gathering)
The Gathering - Mandylion особеноо The Starnge Machines
Ayreon - 0101100178 (прямо целиком.)
28
Старенькая песенка, которая мне очень понравилась пару лет назад. правда услышал я её в электричке, в исполнении одного знакомого. наконец нашлась. :)
http://lleo.aha.ru/pesni/mashina.mp3
http://lleo.aha.ru/pesni/text/mashina.shtml

понедельник, 28 апреля 2008 г.

первая звезда

Сегодня утром по дороге на работу сбил какую-то недобрую тётю. Ну не сбил... затормозить я всетаки успел нормально, но контакт был. В принципе довольно стыдно т.к. вина моя, к тому же услышав 3х этажный мат в мою сторону (стоило ожидать), ошалел и даже не извинился, пробурчав что-то на счет светофора. Поворачивал на лево на равнозначном перекрестке с улицы с одной полосой в каждую сторону. Машин небыло. Тетя переходила тоже на зеленый. Как я её там не увидел - хз. Ну небыло её там! Вои и смотри по сторонам после этого, перед собой надо было смотреть. :)

четверг, 24 апреля 2008 г.

как бы покороче...

cабж.
  @data.last.last.kind_of?( String ) ? \
     @data.last.last += opened_file.readchar.chr : \
     @data.last.last = opened_file.readchar.chr

воскресенье, 20 апреля 2008 г.

Необходимо получить 1846kB архивов. После распаковки 5116kB будет занято.
Хотите продолжить? [Y/n/?] Y
ПРЕДУПРЕЖДЕНИЕ: будут установлены версии ненадёжных пакетов!

Ненадёжные пакеты могут скомпроментировать безопасность системы.
Продолжайте установку, если только вам точно это нужно.

  gcc-4.1-doc gcc-doc gcc-doc-base

Хотите игнорировать предупреждение и продолжить?
Чтобы продолжить, наберите фразу "Да"; для отмены введите "Нет": Y
Неверный ввод. Требуется "Да" или "Нет".
Хотите игнорировать предупреждение и продолжить?
Чтобы продолжить, наберите фразу "Да"; для отмены введите "Нет": Yes
Неверный ввод. Требуется "Да" или "Нет".
Хотите игнорировать предупреждение и продолжить?
Чтобы продолжить, наберите фразу "Да"; для отмены введите "Нет": Да
Запись информации расширенных состояний... Готово

:)

среда, 16 апреля 2008 г.

откуда эксепшн?

Добрый день всем.

Ищу-ищу, немогу найти инфу.
Как вытащить имя файла и номер строки кода райзевшего эксепшн, когда его(эксепшн) обрабатываешь?
Или эти данные самому надо в эксепшн записывать? Где-то, по этому поводу, инфу видел, а сейчас уже второй день не могу найти.

Помогите ссылочкой или советом.

Решиение проблемы:

def my_func
  raise "blah"
end

begin
  my_func
rescue
  puts $!.backtrace.join("\n")
end

понедельник, 14 апреля 2008 г.

don't wanna be dumb!! :)

Посоветуйте мне какую-нибудь "умную" книжку, я давно не читал.
Is there any body out there?

Читаем

http://scepsis.ru/library/id_1895.html
За ссылку спсибо

среда, 9 апреля 2008 г.

Надо такую же поставить :)

http://www.defeatingthehacker.com/videoham/

Мантра

Меня не раздражает СурсСейв Меня не раздражает Инредибилд Меня не раздражает Вижуалка Меня не раздражает ПХП

воскресенье, 6 апреля 2008 г.

Начало летне-активного

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

Upd:  выложил фотки тут.

среда, 2 апреля 2008 г.

Вело-тошноты, вело-гопнеги и все-все-все. и я.

4ый день на велике катаю везде, в гости, на работу и просто так. Открыл множество интересных вещей. Почему то, катая на чужем агрегате не замечал много чего(может осторожничал сильно). Успел почти въехать под форд-фокус и почти "пнуть" газель-маршрутку(нелюблю их, недобрые они :)). Никак не могу понять, как определить хотят ли тебя видеть окружающие четырехколесные друзья (не обижаться никому!), или нет. Похоже придется научиться читать карму. Как выяснилось, нужно побольше махать руками - типа "Эй там, мне туда"(показываешь куда едешь :)), ибо без такого шаманства все считают, что ты должен провалиться сквозь землю на ближайшем перекрестке. Про других велосипедистов: забавные они...
Тошноты - скорость 5 км/ч велосипед разваливается.
Тошнот+ - скорость 8 км/ч, вклосипед разваливается, зато наглости хоть отбавляй - "это что - машины? кто их на дорогу пустил".
Гопнег - скорость >25 км/ч, велосипед >средней пАнтовости, ездят кучками, постоянно прыгают на тротуар и обратно на проезжую, светофоров не видят, признаков здравомыслия не подают. Был бы я водителем, из-за последних считал бы всех велосипедистов уродами :).
Надо срочняк что-то решать с одеждой, всю сменную брать с собой и переодеваться на работе как то не охота, ходить в грязных джинсах - тоже безпонт. Надо приобрести мешок на рюкзак, а то все, кто его видят - спрашивают, "что с ним?".
Повезло с работой - нашел место для стоянки велика в соседнем офисе(там предбанник есть и люди все знакомые), теперь хоть не приходиться думать, как там - не сперли еще? Вообще, очень нравится думать, что у меня есть свое средство передвижения и мне нужно самому добираться туда, куда мне надо. Не просто "сяду в метро и доеду", а сяду на велик и доеду так и вот так. Нравится, что не надо ждать никакого транспорта, то, что езжу где хочу... в общем все нравится. С воздухом у нас правда проблемы, дышать зачастую тяжело, хоть респиратор надевай.
Цепь похоже была новая, а кассета не очень. Сейчас цепь притирается потихоньку, 6,7 звезды уже лучше её держат. Думаю, вот, поменять все или пусть живет, пока совсем не помрет. До сих пор не приобрел себе запаску и рем. набор, надо.

воскресенье, 30 марта 2008 г.

Велик

Свершилось, наконец-то! Купил себе велик (7т.р.) не новый, но хороший, небольшое обслуживание и будет вообще отличный :) Уже прикатил на работу на нем. Думаю постоянно ездить, осталось только всякими причиндалами полезными обзавестись... типа спец. одежды :), а то после поездки по нашему "мега-полису" чистыми остаются только уши, и то только потому, что я волосат :) В общем, счастья полные штаны. ПыСы: отдельное спасибо 'у, за поддержку при покупке сего девайса.

суббота, 22 марта 2008 г.

среда, 19 марта 2008 г.

riva 128 pci

Всегда любил эту железку. Больше не люблю. GLX драйверов для неё нет. :( или я туплю пол-ночи.

суббота, 8 марта 2008 г.

Memory remains.


На их концерт хотел сходить больше 10ти (! самому не верится) лет. Сегодня, наконец, блестящая бумажка (1,5КРуб.) у меня в рюкзаке.
Впереди почти полгода ожидания(до 18 июля) и попыток не прое..терять этот самый билет. Решил впасть в детство и обзавелся нашивкой на куртку с, понятно какой, символикой :). Совершенно детский восторг и неописуемо приятное предвкушение. Давно уже эту музыку не "заслушиваю", вкус поменялся уже не один раз, но это совершенно не важно.

четверг, 6 марта 2008 г.

Цитата

"Девушка доила корову на берегу озера, в воде все отражалось наоборот."

среда, 27 февраля 2008 г.

rake target task

Здравствуйте.

Вопрос по rake.
как можно узнать, что текущий таск - тот, который запрошен из командной строки?

Например:

rakefile:

task :t1 do
...
puts "T1 is what you want." if chtoto_tipa_final_task?(:t3)
end
task :t2 do
...
puts "T2 is what you want." if chtoto_tipa_final_task?(:t3)
end
task :t3 => [:t1, :t2] do
...
puts "T3 is what you want." if chtoto_tipa_final_task?(:t3)
end
-rakefile

Надо, чтоб так получалось:

cmd line:
>rake t1
T1 is what you want.
>rake t3
T3 is what you want.


Совсем чего-то в документации закопался, нучего не нахожу :(

x-post to  

upd: 
порадовало:
     # File lib/rake.rb, line 403
403: def needed?
404: true
405: end
upd2:
Rake::application.top_level_tasks

среда, 20 февраля 2008 г.

Долой баги из svn-dump'ов

SOURCE_FILE = 'dmp.bin'
CUTTED_FILE = 'dmp_cutted.txt'

cutarray = [
  [1433, 'Editors/TMMatEditor/Res/preview.bmp'],
  [1621, 'Editors/TMMatEditor/Res/Toolbar.bmp']
]

File.open(SOURCE_FILE, 'r'){|f|
  File.open(CUTTED_FILE, 'w'){ |tf|
    f.binmode
    tf.binmode

    cntr = 0
    curr_rev = 0
    skip_node = false
    header = true
    node_text = ''
    while !f.eof?
      if header
        5.times do
          tf.puts(f.gets)
        end
        header = false
      end
      ln = f.gets
      node_text += ln
      if ln[':']
        n,v = ln.split(': ')
        if (n == 'Content-length')
          if skip_node
            puts " skipping content "
            node_text = ''
            f.read(v.to_i + 1)
            cntr += 1
          else
            tf.puts node_text
            node_text = ''
            tf.write(f.read(v.to_i + 1))
          end
        elsif n == 'Revision-number'
          skip_node = false
          curr_rev = v.to_i
          print  " #{curr_rev}"
        elsif n == 'Node-path'
          skip_node = false
          cutarray.each{ |c|
            skip_node = true if (c[0] == curr_rev) and (v.chomp == c[1])
          }
        end
      end
    end

    puts "\nNodes cutted: #{cntr}"
  }
}

суббота, 9 февраля 2008 г.

кто здесь?

Если я, как обычный быдлочитатель - долго слежу за каким-нибудь изданием и, вдруг, оно портится я складываю на него пару матов и нахожу себе другое :) И вообще завел себе жж, нравится - читай, не нравится - с глаз долой, из френдов вон. Но стоит человеку получить место в обществе, заслужить Эн премий Икс, как вдруг оказывается, что (Боже мой!) газеты то портятся, СМИ опускаются в жопно-сортирные глубины и на заборах, оказывается, написано вовсе не где ближайшая библиотека и вообще, вокруг СТОЛЬКО говна, от которого так страдает хрупкая психика интеллигенции! Некоторые вещи делаются для казуалов и быдломассы, популяризация, знаете ли. Расстраиваться по этому поводу... или пытаться изменить содержание Массовых изданий и передач, путем воздействий на редакторов... Мне просто это смешно. Когда Некоторые являются "уважаемыми" людьми - смешно вдвойне. В хлеву - грязно, не вини фермера, что у него грязные сапоги.

среда, 30 января 2008 г.

Сцуконах, баги, не баги?

После такого кода:
  _MSVS_PATH = 'C:\Program Files\\Microsoft Visual Studio 8\\'
  _MSVS_CONSOLE = 'VC\\vcvarsall.bat'
  _SS_PATH = 'C:\\Program Files\\Microsoft Visual SourceSafe'
  open('paths_upd.bat', 'w') { |f|
    f.puts "call \"#{_MSVS_PATH + _MSVS_CONSOLE}\""
    f.puts "set PATH=%PATH%;#{_SS_PATH}"
    f.puts "set"
  }
  str = `paths_upd.bat`
  str.each_line{ |l|
    k,v = l.split('=')
    ENV[k] = "#{v}"
  }
перестает работать eval :( заколебался уже.
  puts `echo "blah"`
выдает:
  d_client.rb:57:in ``': Invalid argument - echo "blah" (Errno::EINVAL)

воскресенье, 27 января 2008 г.

Бэтмэны разбушевались

http://www.biertijd.com/mediaplayer/?itemid=4262 на всякий случай, вдруг, кто на ru_wunderluft не подписан. Дух захватило. :)

суббота, 26 января 2008 г.

простотак

Зачем люди пишут "боян"? Немогу понять. Немогу понять, зачем писать "боян", если уже написали до тебя, что это "боян" Ну видел тему, ну несколько раз видел... ну и молодец, возьми с полки пирожок и свали в туман. Зачем боянить своими боянами? :( Для чистки сообществ есть модераторы! Я зол. :) те, кто бояны постят - тоже, конечно, не особо мудрые люди... но с ними можно смириться.

четверг, 24 января 2008 г.

ПО

Как, всетаки, приятно обнаруживать, что в новой версии маленькой, совтинки исправлены как раз те баги, которые докучали больше всего :). Мало того, еще и добавлены полезные фичесы. Ну и последняя приятность узнал я об этом не из автоматического сообщения, а из живого письма разработчика, пусть и в майлинг лист. Причина поста: билд редактора geany-0.13svn_r2188.

вторник, 22 января 2008 г.

towers

http://www.candystand.com/games/vector_tdx/vectortdx.swf Еще одно мозгоедство, я пока на 31 уровне дохну. :)

понедельник, 21 января 2008 г.

10 лет почти.

Некоторые вещи не уходят годами, иногда пропадая на время... десятиминутка Q3 (TDM) после обеда и 20 минут в конце рабочего дня.

среда, 16 января 2008 г.

среда, 9 января 2008 г.

н/д

Они везде, они повсюду... сам лорд пневмослон... (с)

Некий тов. Matz  - Мармон-миссионер. :(
Ничего плохого, конечно в этом нет... но неприятный осадок от всяческих "личностей" пристающих с тупыми вопросами, на улицах, делает свое дело настроение подпорчено. хотя и не сильно.