LibreOfficeをインストールしてみる

OpenOfficeから主力メンバーが移動した、ということを聞いて(と言っても移動自体は大分前だったけど)そろそろ乗り換えどきかと思い、LibreOfficeをインストールしてみた。

自分は Calcしか使ってないけど、まあそれなりに動く。当たり前か。ただ移行直後は文字に指定しているフォント情報が違うものになったり、これは移行とは関係なくオートコンプリートがタブで候補選択できなくなったりと微妙にデグレしている感じ。

BUFFALO WLI-UC-GNが壊れたので再購入

久しぶりに自宅の Windowsマシンを起動してみたらネットワークに繋がらない。どうも USB接続の無線アダプタが正常に動いていない様子。抜き差ししてみても OS側で不明なデバイスと表示されてしまい認識できていない模様。で、この調査の途中でこの無線アダプタに触れてみて気がついたのだが、発熱が半端ない。ずっと持ち続けることが不可能なくらい熱い。あれ、PCに電源入れてからそんなに時間たってないはずなのに、なぜこんなに熱いのかと疑問に思っていろいろ調べてみると、USB端子には PCの電源を切っても電力が供給されているらしい。ということは約 1年半前にセットアップしてから今までずっと電力が供給されて発熱し続けていたということか。それはさすがに内部基盤も熱でやられるよな、と納得。

で、しょうがないので同じ物をもう1回買ってみた。今度はPCを使わないときは USBコネクタから抜いておくことにする。無線子機を買ってもいいんだけど、今のところ有線の機器はこの Windowsマシン 1台だけしかないからな。しかもたまにしか起動しないし。

ONKYO GX-70HD(B)を購入

気分転換に自宅のPC用スピーカを新しくしてみた。これまで同じ ONKYOの GX-R3X(B)を使っていたけど、買ってすぐに電源スイッチ(VOLUMEコントロールと兼用。VOLUMEを 0にすると電源が切れる仕組み)が壊れて、電源が入りっぱなしの状態になってしまい、使う度に電源コードを抜き差ししないといけないという面倒な状態になっていたので、なんとかしたかったということもある。

kakaku.comで評判がいいのを確認して、早速 Amazonで注文。ケーブルはビックカメラで買ってきた。RCAケーブルはオーディオテクニカの AT561A/1.5m。1200円くらいだったかな。少しいいやつにしてみた。またスピーカー間の接続は WireWorldの stream 16/2(ST2)。1000円/m。スピーカーケーブルはよく分からないけど、店員に聞いたらこれがおすすめだというので。しかしググってもあんまりヒットしないんだよな。本当におすすめなんだろうか?インシュレーターは今のところ未使用。

セットアップ後だけど、もともと GX-R3Xを使っていてそんなに悪い環境ではなかったと思うので、正直あんまり違いはよくわからない。電源スイッチさえ壊れなければ満足です。

DevFest 2010 Japan参加基準クリア

なんとかクリアできた。詳細は以下の通り。

配点詳細

ウォーミングアップ : 1.0 点
HTTP ステータスコード : 2.0 点
Google Code Discussion Group : 3.0 点
暗号通信 : 4.0 点
パッチワーク : 5.0 点
Issue Tracker : 0.0 点
Hackathon : 0.0 点
Android アプリケーション : 0.0 点
Chrome Extensions : 0.0 点
漢字変換サーバ : 7.0 点

合計 : 22.0 点

twitterなど見てるとどうも20点前後がボーダーっぽい。クイズ系全部回答しておいてよかったー。結果も出たので自分の解答例も晒しておく。

まずは暗号通信。これは rot13みたいなやつね、と思い trで変換。JSONはあまり使ったことなくよくわからなかったのでライブラリを使用した。

#!/usr/bin/ruby

require 'net/http'
require 'json'

Net::HTTP.version_1_2
host=devquiz.appspot.com"
KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
EMAIL="xxxx@xxxxx.xxx"

CRYPT_EMAIL = EMAIL.tr('abcdefghijklmnopqrstuvwxyz', 'efghijklmnopqrstuvwxyzabcd')

json = {"key"=>KEY, 
        "pass"=>CRYPT_EMAIL}.to_json

req = Net::HTTP::Post.new("/personalpost", initheader = {'Content-Type' => 'text/plain'})
req.body = json
response = Net::HTTP.new(host, 80).start{|http| http.request(req)}

次はパッチワーク。これは単純に 1つずつ座標をずらして調べていけばいいだけ、と思いきや、2つ以上の枝に分岐する線が出た場合、単純にスキャン済みリストに加えてしまうと、最長の枝をカウントし損ねるパターンがありそうなことに気がついて、普通に600×600全点でスキャンすることにした。おかげで計算に約1時間かかった。

#!/usr/bin/ruby

map = []
checked = []
sx,sy = 0,0

# read map
body = File.read(ARGV[0])
body.each_line{|line|
  map << line.chomp.split(//)
}

# initilized checked
checked = map.map{|x|
            x.map{|y| 0}
          }

def search_route(i, j, char, map, result, checked)
    [[1,0],[0,1],[-1,0],[0,-1]].each{|s|
      px = i + s[0]
      py = j + s[1]
      next if px < 0 or py < 0
      next if px >= map[0].size or py >= map.size 
      next if checked[px][py] == 1 or result.include?([px, py])
      if map[px][py] == char
        result = result << [px,py]
        search_route(px, py, char, map, result, checked)
      end
    }
    return result
end

#
result = []
rr = []
max_len = 1
map.each_index{|i|
  map[i].each_index{|j|
    checked[i][j] = 1
    char = map[i][j]
    result[i * map.size + j] = [[i,j]]
    rtmp = search_route(i, j, char, map, result[i * map.size + j], checked)
    if rtmp.size > max_len
      rr.clear
      rr << rtmp
      max_len = rtmp.size
    elsif rtmp.size == max_len
      rr << rtmp
    end
  }
}

# initilized result
result = map.map{|x|
           x.map{|y| 0}
         }

rr.each{|i|
  i.each{|j|
    result[j[0]][j[1]] = 1
  }
}

# print result
fp = File.open("result.txt", "w")
result.each{|i|
  fp.write(i.select{|x| x == 1}.size)
  fp.write("\n")
}
fp.close

最後の漢字変換サーバ。すっきりしたロジックが思いつかず、完全にやっつけになってしまった。ただ難易度自体はパッチワークのほうが上だと思うんだよな。こちらのほうが配点が高いのは謎。

#!/usr/local/bin/ruby

require 'cgi'

cgi = CGI.new

num = cgi["n"]

def to_k(i ,numx)
  c = numx[i]
  a = ""

  case i % 13
  when 4
    if numx[4,4] == ["0", "0", "0", "0"]
    elsif
      a << "Q"
    end
  when 8
    if numx[8,4] == ["0", "0", "0", "0"]
    elsif
      a << "N"
    end
  when 12
    a << "G"
  end

  case i % 4
  when 1
    a << "X"
  when 2
    a << "U"
  when 3
    a << "F"
  end

  case c
  when "0"
    if i % 4 == 0
    else 
      a = ""
    end
  when "1"
    if i % 4 == 0
      a << "B"
    end
  when "2"
    a << "E"
  when "3"
    a << "P"
  when "4"
    a << "L"
  when "5"
    a << "Z"
  when "6"
    a << "M"
  when "7"
    a << "K"
  when "8"
    a << "A"
  when "9"
    a << "R"
  end
 
  if numx.size == 1 and c == "0"
    a << "J"
  end

  return a
end

numx = num.split(//).reverse

result = ""
numx.each_index{|i|
  result << to_k(i, numx)
}

ans = result.reverse

print "Content-Type: text/plain\n"
print "\n"
print "#{ans}\n"

11日が楽しみだな。

POPFileその後

どうもサーバに大量にメールが残っている場合,読み込み速度が極端に遅くなる。1通あたり 5秒くらい。しかも大量といってもせいぜい100通前後なんだが。フィルタの精度はほぼ 100%で SPAMとそれ以外を判別するようになっただけに,この問題さえ解決すれば言うことなしなんだけど。