Pyon's Diary
2006-02-22 舊 平成拾捌年睦月廿伍日 (水・晴) [更]
Ruby で Excel 仕樣の CSV 形式ファイルを讀込む。(其之壹)
Perl メモ: 値に改行コードを含む CSV 形式を扱ふのコードを Ruby に置換へてみた。最初に Perl メモのコードを出來るだけ正直に置換へてみた。
以下のコードは 3000 行、20 列の Excel 仕樣の CSV 形式ファイルを讀込み、各セルの中身から復歸・改行を取除き、「|」を区切り文字にして結合して標準出力に出力するもの。ファイルのエンコーディングは UTF-8 にした。
csv.rb
#!/usr/bin/ruby -Ku
t = Time.now
buffer = ""
ARGF.each do |line|
next if ((buffer += line).count("\x22") % 2) != 0
buffer.sub!(/(?:\x0D\x0A|[\x0D\x0A])?\Z/m, ",")
#
columns = []
while ! buffer.nil?
elm, buffer = /\A(\x22[^\x22]*(?:\x22\x22[^\x22]*)*\x22|[^,]*),(.*)?\Z/m.match(buffer).to_a[1,2]
next if ! elm
if elm.sub!(/\A\x22(.*)\x22\Z/m, "\\1")
columns << elm.gsub(/\x22\x22/, "\x22")
else
columns << elm
end
end
buffer = ""
#
columns.map!{|e| e ? e.gsub(/[\r\n]+/m, " ") : ""}
print columns.join("|") + "\n"
end
STDERR.printf("ETime: %e (sec)\n", Time.now - t)
實行結果は以下の通り。
$ ./csv.rb test.csv > output.0.txt ETime: 4.595411e+00 (sec)
次に以下の樣に正規表現を分轄して評價を行ふ樣にしてみた。
csv1.rb
#!/usr/bin/ruby -Ku
t = Time.now
buffer = ""
ARGF.each do |line|
next if ((buffer += line).count('"') % 2) != 0
buffer.sub!(/(?:\r\n|[\r\n])?\Z/mo, ',')
#
columns = []
while ! buffer.nil?
if /\A"([^"]*(?:""[^"]*)*)",/mo =~ buffer
buffer = $'
columns << $~[1].gsub(/""/, '"')
elsif /\A([^,]*),/mo =~ buffer
buffer = $'
collumns << $~[1]
else
buffer = nil
end
end
buffer = ""
#
columns.map!{|e| e ? e.gsub(/[\r\n]+/m, " ") : ""}
print columns.join("|") + "\n"
end
STDERR.printf("ETime: %e (sec)\n", Time.now - t)
此の實行結果は以下の通り。
$ ./csv1.rb test.csv > output.1.txt ETime: 2.531840e+00 (sec)
何囘か繰り返し實行してみたが、二番目の方が矢張り微妙に速かつた。此から Ruby で Excel 仕樣の CSV ファイルを讀込む必要が有る時は、此方を使ふ事にする。(其之貳へ)
GNU screen を使ふ。(其之肆)
(其之參へ) けふ初めて GNU screen で畫面分轄が出來る事を知つた。
- ^zS -- 畫面分轄。
- ^zQ -- 畫面分轄解除。
- ^zTAB -- 分轄された領域を巡囘する。
キーの組合はせが今一つ、自分には使ひ辛いが其之内慣れるでせう。(其之伍へ)
HTTP_Request (1.3.0) では HTTPS Proxy が使へない。
ウェブ頁を携帶用に變換して呉れる pc2m を調べてゐて氣が附いたのだが、PEAR の HTTP_Request 1.3.0 はソースを讀むと HTTPS Proxy に對應してゐなかつた。
604 // 4.3.0 supports SSL connections using OpenSSL. The function test determines
605 // we running on at least 4.3.0
606 if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) {
607 if (isset($this->_proxy_host)) {
608 return PEAR::raiseError('HTTPS proxies are not supported.');
609 }
610 $host = 'ssl://' . $host;
611 }
此が駄目だと嚴しいな。自力で何とかするのも面倒臭いし。
追記: 1.4.0 では。(2006-11-02)
HTTP_Request の 1.4.0 が出てゐた事に氣が附いたので、ソースを眺めて診たが、矢張り HTTPS Proxy には對應してゐ無かつた。
Google で情報を探してみたら、
と云ふ記事を見附けて仕舞つた。端から對應出來無い模樣。CURL を使へ、と囘答されてゐる。
2007-02-22 舊 平成拾玖年睦月伍日 (木・晴) [更]
M+2VM+IPAG circle フォント。
M+ と IPA フォントの合成フォントで配布してゐるフォント。此のフォントは半濁點が大きくて讀易い。説明に據ると以下の三つのフォントを合成してゐる。
此を mlterm で使用して見た。$HOME/.mlterm/aafont で以下の樣に指定する。
ISO10646_UCS4_1=M+2VM+IPAG circle-iso10646-1:100;
此で mlterm を起動して、w3m で此乃日記を見てみたら駄目だつた。

リストの li タグで文字列の前に在る點が豆腐に化けて了つた。最初は半角の中點(U+FF65)が化けてゐるのかと思つたが UTFChecker.utf で見ると BULLET (U+2022) か亦は MIDDLE DOT (U+00B7) が化けてゐるらしい。何で全角の中點で無いのか氣に成るが、其れを解決するのは自分の手に餘るので、何とかして BULLET (U+2022) か MIDDLE DOT (U+0087) を表示させられ無いか探索中。
環境に據る違ひ。
環境變數 LANG を ja_JP.UTF-8 にして、w3m も其れに合はせて UTF-8 で動作する樣に設定すると、li タグを表す中點は半角文字で BULLET (U+2022) だった。
然し、環境變數 LANG を jp_JP.eucJP にして、w3m を其れに合はせると、li タグを表す中點は全角文字で KATAKANA MIDDLE DOT (U+30FB, EUC-JP では A1A6) だつた。
2008-02-22 舊 平成廿年戊子睦月拾陸日壬辰 (金・晴) [更]
けふは職場の懇親會だつた。
澁谷のスペイン坂に在る店で飲んだ。
店に行く前に澁谷の交叉點を渡つてゐたら神樂坂のBRUSSELSの店員さんと擦れ違つた。
先に向かふが氣が附いたのだが、斯樣な處で會ふとは思つてゐ無かつたので吃驚した。
明日行きますよ、と云つて別れた。
2009-02-22 舊 平成廿壹年己丑睦月廿捌日戊戌 (日・晴) [更]
iceiv+putty (色んなPuTTY)
PuTTY ごつた煮版 (20070806版)に獨自パッチが充てられたPuTTY。以下のスレで知つた。
開發者の頁に行くと色々と追加された機能が擧げられてゐるが、個人的に便利だと思つたのは、
- IMEがオンの時に、カーソルの色を變へる。
- ウィンドウ位置を記憶する。
の二つ。
- 文字を除去してクリップボードへ入れる。
機能は「文字では無く文字列で、出來れば正規表現で指定可能」で無いと自分には使ひ道が無い。(何て偉さうな云ひ方なのだろう)
明日職場で使つてゐる方も入換へやう。
追記: PuTTYの變種。
同じスレでPuTTYの變種の一覧が擧がつてゐた。
- PuTTY Tray.
- PuTTY Session Manager.
- PuTTYjp.
- PuTTYごつた煮版)。
- iceiv+putty. (ごつた煮版の變種)
- PuTTYどこでもハック版。(ごつた煮版の變種)
- PuTTY マウス選択挙動変更+背景半透明化 + 文字ふちどりパッチ。(ごつた煮版の變種)
- PuTTY for Win32で背景畫像表示。
- PuTTYごつた煮+ウィンドウ位置保存。(ごつた煮版の變種)
- PuTTY 0.60をINIファイルに對應するパッチ。
- puttyのコンソールでIMEの切り替え時カーソル色を変更するパッチを書いた(初めてのOSS活動) - Guyon Diary。
澤山在るけど殆どごつた煮版に吸収されてゐさう。
源平合戰の虛像を剝ぐ―治承・壽永内亂史研究。
源平合戰の虛像を剝ぐ―治承・壽永内亂史研究も借りて來た。
平安後期から源平期の頃の武士は開拓農場主みたいなものだつた、と説に對して其乃頃から武士は武藝を賣りにしてゐたと云ふ説を展開してゐる、のか?。
公明黨vs.創價學會。
後、公明黨vs.創價學會も最後の章が面白さうだつたので借りて來た。
- 創價學會員の多樣化。
- エリートを抑へる仕組み。
- 組織力の低下。
- 遠のく現世利益。
- 近づくポスト池田。
- カリスマなき時代。
- 瓦解しない組織。
- SGIの國内展開。
- 劇場化した政治狀況のなかで。
二大政黨制にすべしと云ふ宣傳を聞くやうになつて久しいけど、ニッチ政黨としての公明黨は何處へ向かふのか興味が有る。