Я когда-то для этих целей написал библиотеку и тулзу позволяющую конвертировать YAML в бинарный файл, а потом получать к этому доступ в рантайме. Хотя и появляется дополнительный этап конвертации данных, у такого подхода есть преимущества. Например, минимальная фрагментация памяти, т.к. все загружается одним блоком и больше никогда не меняется. Скорость загрузки тоже заметно возрастает — всего один read. В играх это все актуально. На большом количестве файлов yaml-cpp заметно тормозил. Ну и доступ был достаточно удобный:
rodb::Database db("config.rodb");
rodb::Value root = db.root();
float x = root["ball"]["start_position"]["x"];
float y = root["ball"]["start_position"]["y"];
Я бы сказал, что дело не в том, чтобы одной строкой написать, нежели так получается читабельнее, т.к. можно охватить одним взглядом. Получается фактически одна операция — чтение строк из файла, которая пропускается через фильтр — удаление переводов строк на конце, а результат присваивается в переменную. Можно даже и не присваивать, а прямо на нем запустить цикл:
IO.readlines("data.txt").map {|line| line.chomp}.each_with_index |url, index| do
# do stuff with url and index
end
А по какой метрике у вас находится ближайший цвет? Расстояние в RGB? Как-то он иногда оказывается не сильно похож, если нажать на линк внизу. Может нужно искать, например, в HSV и задать веса по осям, скажем, самый главный — это, мне кажется, hue. А вообще должна быть какая-то метрика, которая вычисляет расстояние в «пространстве восприятия».
Есть даже тул для этого написанный. Называется cdecl (http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html). И у него даже есть онлайн версия (http://cdecl.org/).
Я согласен, что померять качество когда метриками задача не из простых. Но вот пример ваш не очень. В данном случае, вы говорите о качестве продукта, а не о качестве кода. Можно красиво запрограммировать, но не то. А это уже другая проблема.
Странное, может быть, замечание, но сайт не дружит с LastPass. Обычно LP предлагает сразу сгенерить пароль и запоминает сайт, тут он его не опознал. Возможно, это как-то связано с именами полей в формах или еще чем-то подобным. Остальное пока потестировать не удалось, т.к. получаю все время «502 Bad Gateway».
Надо было вам кого-то попросить, кто побыстрее с клавиатурой работает записать скринкасты. Смотреть очень интересно, но, честно говоря, надоедает смотреть как три минуты неумело вводится пара параграфов текста. Мало сделать что-то крутое, нужно еще перезентовать это грамотно. Надеюсь у вас это получится, т.к. выглядит интересно.
Я понимаю, что дело привычки, но вот у меня при 15-летнем опыте разработки во всевозможных средах и без них, первый раз такое, что аж за целый год я не могу привыкнуть и плююсь каждый раз, когда запускаю Xcode. Xcode на первый взгляд очень симпатичный и сначала я был доволен, думал привыкну, но со временем понял, что он совершенно не дружит с клавиатурой. Почитав форумы, я осознал, что не один я страдаю, люди просят хотя бы простейший Ctrl-Tab. И плагинов к Xcode не напишешь нормальных, т.к. API нет.
А как же навигация по открытым файлам с клавиатуры (это самая большая проблема)? А перемещение по коду без с Макбуковой клавиатуры? Аналог PgUp/PgDn — Fn + Opt + Up/Dn — это же пальцы сломаешь каждый раз нажимать? Search and replace ужасный. В дебаггере вместо каких-нибудь удобных шорткатов для Step in/out/over какие-то идиотские Opt-Shift-O и т.п., F7 гораздо проще нажать. Я понимаю, что можно перелопатить все конфиги, перенастроить все и т.п., но это дело принципа, получается, что Эпплу наплевать на разработчиков. Какая-нибудь VS 2003 (а то и более ранняя) просто недостижимая высота для Xcode.
У меня дофига претензий, можно список на несколько страниц написать. Вот и думаю как люди с этим уживаются.
Если бы была нормальная возможность все делать из командной строки, это было бы уже прекрасно. Так и этой возможности Эппл не дает нам в полной мере.
Код лежит тут, если интересно: https://github.com/detunized/rodb
IO.readlines("data.txt").map {|line| line.chomp}.each_with_index |url, index| do
# do stuff with url and index
end
urls.each do |url| ... end
и увеличенияcount
вручную, можно сделать:urls.each_with_index do |url, index|
...
end
ulrs = IO.readlines("div0.cpp").map {|line| line.chomp}
urls = []
file = File.new("data.txt", "r")
while (line = file.gets)
urls << line.chomp
end
file.close
Можно написать, например, вот так:
ulrs = IO.readlines("div0.cpp").map &:chomp
У меня дофига претензий, можно список на несколько страниц написать. Вот и думаю как люди с этим уживаются.
Если бы была нормальная возможность все делать из командной строки, это было бы уже прекрасно. Так и этой возможности Эппл не дает нам в полной мере.