Прочитав недавнюю статью Подарок от Microsoft, решил поменять себе дефолтный шрифты в Firefox на Lucida Bright, Lucida Sans и Lucida Sans Typewriter. Сайты стали выглядит гораздо более читабельнее (не все конечно, а только там, где не прописан какой нибудь гадкий Arial или Times New Roman). Вот так выглядит opennet.ru, например:
Вышел X.Org 7.4
Возрадуемся — сегодня зарелизили X.Org 7.4. Итак, что нас ждет новенького?
Открытие спецификаций на видеокарты ATI привело к значительному улучшению поддержки продукции этой компании. Драйвер xf86-video-ati начал поддерживать 3D-ускорение в серии карт R500, появилась (похоже в зачаточном состоянии) поддержка серии R600, появилось ускорение рендеринга (Render acceleration, чтобы это значило?) в сериях R300/R400. Драйвер xf86-video-redeonhd теперь поддерживает серию Radeon HD 4800. Поддержка карт серии GeForce 9 и GeForce GTX добавлена в драйвер xf86-video-nv. Все интересные новшества и вкусности перенесли в релиз Xorg 7.5. Релиз X Server 1.6 обещают через 3 месяца (думаю, врут).
Ubuntu 8.10 Interpid будет включать в себя X.Org 7.4 и Mesa 7.1. Так что для карточек ATI серий X1000 и HD 2000/3000, мы получим open-source драйвер с аппартным 3D-ускорением.
Алгоритмы перестановок в Ruby
Понадобилось мне намедне генерировать перестановки. Пошукал гуглом, почитал умные книги. В итоге, наметилось три кандидата на реализацию.
Кандидат первый:
class Array
  def perm(n = size)
    if size < n or n < 0
    elsif n == 0
      yield([])
    else
      self[1..-1].perm(n - 1) do |x|
        (0...n).each do |i|
          yield(x[0...i] + [first] + x[i..-1])
        end
      end
      self[1..-1].perm(n) do |x|
        yield(x)
      end
    end
  end
end
Кандидат второй: gem install permutation.
Кандидат третий: встроенный метод Array#permutation в Ruby 1.9.
Провел бенчмарк, результаты такие:
Ruby 1.8:
                        user     system      total        real
Array#perm            2.670000   0.070000   2.740000 (  2.828519)
Permutation           1.950000   0.090000   2.040000 (  2.157960)
Ruby 1.9:
                        user     system      total        real
Array#perm            2.150000   0.000000   2.150000 (  2.289050)
Permutation           1.280000   0.000000   1.280000 (  1.342824)
Array#permutation     0.290000   0.000000   0.290000 (  0.290440)
Код теста:
require 'rubygems' require 'permutation' require 'benchmark'class Array def perm(n = size, &blk) if n == 0 yield [] elsif n >= 0 and n <= size self[1..-1].perm(n - 1) do |x| (0...n).each do |i| yield x[0...i] + [first] + x[i..-1] end end self[1..-1].perm(n) do |x| yield x end end end endn = (0..8).to_a Benchmark.bm(20) do |x| x.report("Array#perm") { n.perm { |a| ;} } x.report("Permutation") do p = Permutation.new(9) p.map { |a| ; } end if RUBY_VERSION >= '1.9' x.report("Array#permutation") { n.permutation { |a| ; } } end end
Firefox 3.0 Strikes Back!
После перехода с Firefox 2.0.x на 3.0, у меня перестала работать боковая кнопка на мыши, которая ранее заменяла мне кнопку Back в браузере. Очень я к ней привык и привязался. Поэтому потерю функциональности сильно переживал. Сегодня решил серьезно раскопать все и пофиксить.
Как оказалось, FF 3.0 начал по другому интерпретировать номера кнопок. Кнопки, которые ранее отвечали за back/forward, теперь начали отвечать за горизонтальный скроллинг. Включив в Xorg драйвер evdev для мыши и получив все 8 кнопок с моей Logitech MX-310, я перемаппил кнопки:
echo "pointer = 1 2 3 4 5 8 7 6" > ~/.Xmodmap
Кнопку forward вернуть на мышь не удалось – не хватает еще одной кнопки на мыши (тогда можно было бы написать “1 2 3 4 5 8 9 6 7”).
Специальный Google
Совсем недавно узнал, что в гугле можно искать какие то OS-специфичные вещи:
