リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2007-10-09

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2007-10-09 Tue

* csisv2+graphviz2

標準インストールで png が作成できない環境になってしまっていた…。

arno と比べてみると、gdk-pixbuf が無い模様。
さらに、gdk-pixbufをコンパイルしようとしても、glib-config とかが現
在のバージョンには存在しないのでエラーになってしまうという罠…。。。

しょうがないので、全て一からインストールしてみる:

% cd glib-2.12.13
% ./configure --prefix=$HOME
% make && make install

% cd pango-1.16.4
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig ./configure --prefix=$HOME
% make && make install

% cd atk-1.9.1
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig ./configure --prefix=$HOME --disable-glibtest
% make && make install

% cd cairo-1.2.6
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig ./configure --prefix=$HOME
% make && make install

% cd pango-1.16.4
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig:/usr/lib64/pkgconfig ./configure --prefix=$HOME
% make && make install

% cd gtk-1.12.10
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig:/usr/lib64/pkgconfig ./configure --prefix=$HOME --disable-glibtest
% make && make install


ようやく graphviz2 のインストールへ:

% cd cvswork/graphviz2
% env PKG_CONFIG_PATH=$HOME/lib/pkgconfig:/usr/lib64/pkgconfig ./configure --prefix=$HOME --disable-perl
% make && make install

* IO#bsearch

ruby-bsearch を IO に対して有効にするだけのもの。

2年ほど前に書いたコード。
使わないと探し出すのに苦労するので、転記しておく…

class IO
   def bsearch_first_pos( left, right, &block )
      STDERR.puts "bsearch_first_pos" if $DEBUG
      while left < right
         self.pos = ( left + right ) / 2
         raise 'unexpected end' unless gets
         self.pos = left if self.pos >= right
         line = gets
         STDERR.puts "#{self.pos}: #{left} <-> #{right}: #{line.size}:#{line}" if $DEBUG
         case block.call(line)
         when 0
            right = self.pos
            if self.pos = left and line2 = gets and block.call(line2) == 0
               return left
            else
               left = self.pos
            end
         when -1
            right = self.pos - line.size
         when 1
            left = self.pos
         end
      end
      nil
   end

   def bsearch_last_pos( left, right, &block )
      STDERR.puts "bsearch_last_pos: #{left} #{right}" if $DEBUG
      while left < right
         self.pos = ( left + right ) / 2
         raise 'unexpected end' unless gets
         self.pos = left if self.pos >= right
         line = gets
         STDERR.puts "#{self.pos}:#{block.call(line)}: #{left} <-> #{right}: #{line}" if $DEBUG
         case block.call(line)
         when 0
            if line2 = gets and block.call(line2) == 0
               left = self.pos - line2.size
            else
               return self.pos - line2.to_s.size
            end
         when -1
            right = self.pos - line.size
         when 1
            left = self.pos
         end
      end
      nil
   end

   def bsearch( left, right, &block )
      result = bsearch_first_pos(left, right, &block)
      if result
         self.pos = result
         gets
      else
         nil
      end
   end

   def bsearch_list( left, right, &block )
      result = []
      lower = bsearch_first_pos(left, right, &block)
      upper = bsearch_last_pos(left, right, &block)
      STDERR.puts "#{lower.inspect} #{upper.inspect}" if $DEBUG
      if lower and upper
         self.pos = lower
         while self.pos < upper
            result << gets
         end
      end
      result
   end
end