2009-01-01から1年間の記事一覧

zipgrep.rb

#!/usr/bin/ruby -Ks # -*- coding: shift_jis -*- P={#[Prefectures] '0'=>'愛知県', #..snip.. 'wc'=>'z邑智郡邑南町' } def get_prefs(firstChar) open(firstChar) do |f| cities = [] f.each do |l| a = l.split(/,/) cities << a[1] end prefs = [] cit…

ハイパーリンク設定が有効にならない…

Ruby から win32ole で Excelファイルを弄り、ハイパーリンク設定をして保存するも、ハイパーリンクが有効にならない…ということで悩む。今迄フツーに Hyperlinks.Add()でハイパーリンク設定できてたのに… $xl = WIN32OLE.new("Excel.Application") wb = $xl…

今日からはてな市民になったらしいのだが…

何か変。「新しいエントリー」のメニューが消滅したり、日記を新規で書こうとしたら、前日の日記が挿入されたり。 何が起きてるんだ…

郵便番号リストをDLして眺めていて驚いた

最初の一桁目で都道府県をリストアップすると以下の様になる。0 : 岩手県,北海道,秋田県,青森県 1 : 東京都 2 : 東京都,神奈川県,千葉県 3 : 茨城県,栃木県,群馬県,埼玉県,新潟県,長野県 4 : 愛知県,三重県,山梨県,静岡県 5 : 岐阜県,京都府,兵庫県,三重県,…

郵便番号表

http://www.post.japanpost.jp/zipcode/dl/kogaki.html郵便番号/住所の全国データをDLしてみる。こんな感じ↓。 01101,"060 ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0 01101,"064…

Qt Embedded によるボタンメニュー

昔、Windowsでも動く様に、Qtでも動くバージョンを作っていた気がする…Qt と QtEmbedded 、色々違うんだよね… def select_qt(&block) require 'qte' require 'qpe' @a = Qpe::QPEApplication.new([$0]+ARGV) @a.setDefaultCodec(QTextCodec::codecForName("u…

cursesでメニュー

@@SelChars = ['0'..'9','a'..'z','A'..'Z'].inject([]){|i,j|i.push(*j.to_a)} def select_cu(&block) require "curses" ch = "" Curses.init_screen() begin while true @@SelChars.size.times do |i| break if i >= @menu.size Curses.setpos(i % 20 , i …

Ruby/Tkでボタンメニューを出す

Threadを使って、ボタン押下時に与えられたブロックを実行させてるのだけど、美しくない。もう少しエレガントな方法はないものか。 def select_tk(&block) require 'tk' ret = -1 pt = Thread.current # ct = Thread.new do b = Array.new(@menu.size) Tk.ro…

VisualuRubyでボタンメニューを出す

def select_vr(&block) require 'vr/vruby' require "vr/vrcontrol" frm = VRLocalScreen.newform $menu = @menu $block = block $ret = 0 def frm.construct self.caption= $0 $menu.size.times do |i| addControl(VRButton,"b"+i.to_s,$menu[i],4,20*i,300…

araMenu

「メニュー表示→選択実行」をお手軽に実現できる様に、araMenu.rb というのを作って使っている。例えば、 a = %w(http://www.goo.ne.jp http://www.yahoo.co.jp http://google.com) AraMenu.new(a).select{|i| `fiber #{a[i]}`} てな感じで実行すると、渡し…

tui, cui, cli

先日、『Debug Hacks』を読んでて、最近の gdb は「gdb -tui」で起動したらGUIっぽく使えるのを知った。で、『gdb --help』でヘルプを見たら、「--tui Use a terminal user interface.」と出てくる。ふーん、「text user interface」じゃないんだ…と思いつつ…

こんなところにも不況の波、リストラが。

『「BB Watch」は「INTERNET Watch」に、「Robot Watch」は「GAME Watch」にそれぞれ統合』 http://impresswatch.jp/press/091214.htmBB Watch はともかく Robot Watch が統合されるのは少し寂しい気がする。

id3lib

cygwin環境に id3lib を入れる。『Download id3lib from SourceForge.net』 http://sourceforge.net/projects/id3lib/files/id3lib/3.8.3/id3lib-3.8.3.tar.gz/download上記をDLして、configure してmake; make installしただけ。 ~$ id3tag --help id3tag U…

D言語

『C/C++に疲れた人のD言語2.0 - ...ing wiki』 http://rayerd.plala.jp/pukiwiki/ingwiki/index.php?C%2FC%2B%2B%E3%81%AB%E7%96%B2%E3%82%8C%E3%81%9F%E4%BA%BA%E3%81%AED%E8%A8%80%E8%AA%9E2.0これ↑読んで、初めて D言語の仕様を知ったんだけど、D言語って…

Rubyとデザインパターン

本職は泥臭い組込みプログラマなので、Rubyとかのオブジェクト指向プログラミング言語をいじるのは完全に趣味の世界。 なので、私のデザインパターンに関する理解は浅薄で、GoF本やら結城本やらオルセン『Rubyによるデザインパターン』やら読んで、後はWEBの…

2年前の記事に今頃気付く。

『まつもと直伝 プログラミングのオキテ 第8回 - まつもと直伝 プログラミングのオキテ:ITpro』 http://itpro.nikkeibp.co.jp/article/COLUMN/20070608/274002/?ST=oss&P=3この記事、たまに読んでた。でも、デザインパターンについて結構良いことが書いてあ…

emacsからirbを使う

Emacs上から run-ruby して、irbを使ってる。C-jでshellコマンドを実行したりする様にして、shellみたいな使い方をしてる。 irb-shell や rush も面白そうだと思うけど、フツーのirbの機能+shell機能だけあれば良いんで。で、プロンプトにカレントディレクト…

w32apis.rb

ちょっと改造。 require 'Win32API' class W32APIs attr_reader :apis attr_accessor :incpath include Enumerable @@h = { 'int'=>'I', #..snip.. 'WCHAR'=>'H', } def each(&block) @apis.each{|k,v| yield k,v} end def initialize(incs={'winuser.h'=>'u…

w32apis.rb

よくRubyから win32apiを呼び出して使用する。しかし、その度に Win32API.newするのが面倒なので、下記の様なラッパーを使ってる。こうやっとくと、「require 'w32apis';w=W32APIs.new」とかするだけで、w.MessageBoxA(0,"Hello, World.","",0) とかして API…

classを一つにまとめてみる。

SAPI4, SAPI5, AquesTalkのどれかしか入っていない環境でも動作する様に一つにまとめてみる。下記を tts.rb という名前で ruby libpath に置いて、ruby -rtts 'Tts.speak "お帰りなさいませ、御主人様"' とかすると、(何らかの音声合成エンジンが入ってたら)…

Ruby-kakasiのインストールメモ

『KAKASI - 漢字→かな(ローマ字)変換プログラム』 http://kakasi.namazu.org/index.html.jacygwin で tar zxvf kakasi-2.3.4.tar.gz して configure して make;make install するだけ。で、問題無く動作することを確認。 /share/tmp/kakasi/kakasi-2.3.4$ ec…

AquesTalkとkakasiを組み合わせて再生。

#!/usr/bin/ruby -Ks # -*- coding: shift_jis -*- require 'kakasi' require 'Win32API' aqtk_play = Win32API.new('AquesTalkDa', 'AquesTalkDa_PlaySync', 'PL', 'L') s = ARGV.size>0 ? ARGV.shift : "お帰りなさいませ、御主人様。" yomi = Kakasi.kaka…

AquesTalk

『AquesTalk - テキスト音声合成ミドルウェア』 http://www.a-quest.com/aquestalk/index_win.htmlフリーの音声合成エンジン AquesTalk というのを見つけたので、拾ってきて、Pathの通ったディレクトリにDLLを置いてみた。ドキュメント見て、以下のコードで…

SAPI

別の WindowsXP マシンで試したら、WIN32OLE.new('SAPI.SpVoice')でフツーに日本語音声合成ができた。 (こっちは最新の MS Agent を入れてる)私の認識は、 「SAPI5 は英語だけで、SAPI4 に多国語対応パッケージを入れたら日本語合成ができる」 だったのだが…

邪悪な日本語プログラミング

#!/usr/bin/ruby -Ks # -*- coding: shift_jis -*- require 'win32ole' class String @@tts = WIN32OLE.new('TextToSpeech.TextToSpeech') def と喋る(cond=/Naoko/) @@tts.Select((1..@@tts.CountEngines).find{|i|cond===@@tts.Speaker(i)}) @@tts.Speak(s…

MS Agent TTS

MS Agentをインストールしておいたら、COMを叩いて、日本語文字列から音声の再生ができる。で、クラス化しといたら、他のコードから呼べて多少便利。例えば、「require 'tts'」しといて、何か時間がかかる作業が終った時、「Tts.speak "作業が終了しました"…

「画面」にdrawLine(x1, y1, x2, y2)して、pgm画像ファイルとして出力する C のソースコードを5分で書けるか?

頭の体操、ということで、試してみた。これくらい5分で書けなきゃ駄目だろ。 「drawLine.exe [x1] [y1] [x2] [y2]」で起動、(x1, y1) - (x2, y2) の線を仮想画面に描く。 画面サイズは決め打ち(320x240)で、pgmファイル(グレースケール255階調)を出力。 座標…

ん?

11/29(日)00:25に登録したエントリーが11/28(土)に入っちゃってる。「0時過ぎに書いた日記は前日のことを書いた日記に違いない」ということでこういう仕様になってるんだろーが、なんか違和感がある…わかりにくい…つか、何時に日が変わるんだよ。>>はてな# …

マクロの記録/再生をする簡単なフォーム

「1」〜「5」「クリア」「記録」「再生」の8個のボタン、1個のラベルをフォームに配置する。 数字ボタンを押すと、ラベル上にその数字が追加される。 「クリア」を押すとラベルがまっさらになる。 「記録」を押すと数字ボタンの押されたタイミング/履歴を保…

PictureBoxにマウスでフリーハンドの絵を描く様子を保存し、再生する。

昨日のコードに PictureBox を追加する。 「記録開始」ボタンを押すとマウス操作の記録開始。(ボタン表示は「保存」と変わる) 「1」〜「5」のボタンを押すと上の青いラベルに数字が挿入される。 下の白いキャンバス(PictureBox)で左ボタン押しつつマウスを動…