Skip to main content

Posts

Showing posts from November, 2008

Ваш блог заблокирован за спам :(

Вот уж не думал :) зайти и увидеть такое в dashboard Хорошо что на почту пришло извещение да и операция разблокирования заняла всего-то пару минут. Будем надеяться, что все обойдется :)

Getting Ruby Array.uniq! work for array of objects

Иногда возникает задача удалить дубликаты из массива объектов. В Ruby для решения этой задачи в классе Array есть методы uniq и uniq!. Отличие первого от второго состоит лишь в том, что второй производит in place модификацию массива, а первый возвращает результат в виде массива. Для того, чтобы эти методы работали для custom классов необходимо чтобы у классов были определены методы hash и eql?. class TestClass attr_reader :a, :b, :c #Ctor def initialize(a,b,c) @a, @b, @c = a, b, c end def hash "#@a #@b #@c".hash end def ==(p) @a ==p.a and @b == p.b and @c == p.c end def eql?(p) self == p end def to_s "#@a,#@b,#@c" end end a = [] a << TestClass.new(1,2,3) a << TestClass.new(1,2,3) a << TestClass.new(3,2,1) a << TestClass.new(3,2,3) a << TestClass.new(2,3,3) a.uniq! a.each do |elem| p elem.to_s end Т.е. одного eql? не достаточно, как это указано в PickAxe а нужен еще и hash method который должен возвращать цело

Блоговщина #2

Как-то провтыкал, что в субботу блогу исполнилось 2 года. Чтобы не нарушать традицию сделаю обзор статистики блога за этот период. Итак в номинации "Самая Популярная Статья" места распределились следующим образом std::string vs. const char* . Comparison - 1 405 просмотров С & C++ useful resources - 888 просмотров "Must Read" C++ Books - 874 просмотра Последние две наверное потому, что ссылки на них висят в сайдбаре блога :) в номинации "Самый Популярный Бразуер" победила, как и в прошлый раз , огненная лиса. в номинации "Самый Популярная ОС" снова победила самая популярная ОС. в номинации "Страна Где-Меня-Больше-Всего-Читают" тоже ничего не изменилось А всего за 2 года блог посетило аж 10 432 уникальных посетителей =), а судя по тому что всего посетителей было 17 600, то можно сделать вывод, что некоторый приходили сюда аж по нескольку раз =). Вот где-то так в общем :) Спасибо вам большое за то, что вы читаете то, что я пишу :)

Empire strikes back: Steven Dewhurst's response to Linus's criticism against C++

Помните нападки Линуса на С++ о которых я когда-то писал ? Когда он в довольно жесткой форме высказался в отношении того, что он думает о С++? Ну вот Steven Dewhurst ему отвечает: I think it's only fair to point out that Linus' diatribe is more than a year old, and he has spoken in more measured and printable tones elsewhere about the same subject. Less excusable, however, is that he makes the claim that C++ cannot be used in resource-constrained areas with nothing but anecdotal evidence to support his claim. Linus has done good work and has earned his soap box, but he also has a professional obligation to make sense while he’s holding forth. (For those who follow such things, this is an instance of Gotcha #12, “Adolescent Behavior,” from C++ Gotchas.) The argument that abstraction and efficiency are mutually-exclusive or that they're mutually exclusive in the context of C++ is demonstrably false. Lately, much of my work involves writing embedded code in C++ with heavy us