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 use of …