2000-12-02[n年前へ]
■ブランコの中の∞(無限大) その1
mail 子供がブランコをこぐということを「仕事をする」と考えます.仕事とは力に逆らって物体を移動させたりすることです.子供がブランコに乗っているとき、最下点に来た瞬間に速度は最大です.当然そのとき遠心力も最大になります.このタイミングでしゃがんでいる子供が立ち上がるということは遠心力に逆らって自分の体を移動させたと考えることができ、それは仕事をしたと考えられます. < Thank you. jun hirabayashi なるほど、判りやすい説明ですね。ただ、ちょっと気をつけなければならないのが、「 遠心力に逆らって自分の体を移動させた」という部分でしょうか。例えば、ブランコが45度の角度まで、つまり結構高く上昇した後に最下点を通過する時の遠心力を計算してみると、たかだか重力の六割弱に過ぎません。つまり、力あるいは仕事の割合から言えば、「重力に逆らって」という方が近いわけです。なので、結果的には単純に位置エネルギーを運動エネルギーに変換している、ということになるのでしょう。
■ブランコの中の∞(無限大) その2
mail ぶらんこがこげる理由にwebmaster様は「角運動量の保存」としていましたがこれでは「すわりこぎ」はできないことにはならないでしょうか。(その他二通) < Thank you. jun hirabayashi 足というのは結構重く長さもあるので、足を曲げると重心の移動が生じます。というところで、如何でしょうか。
■ブランコの中の∞(無限大) その3
mail もしブランコの座り台を吊る鎖が一本のパイプで出来ており可動部がないとするとうまく漕げないような気がします。 < Thank you. jun hirabayashi という疑問には、同じく読者の方から頂いた次のメールが参考になるか、と。
■ブランコの中の∞(無限大) その4
mail 実は私は,まじめにブランコの制御を研究していまして,実際にブランコロボットを製作し実験しました.その様子は(リンク)にありますので,ご覧ください. ブランコがなぜこげるかは,数式を使うと簡単に説明できるのですが,直観的に説明しようとするとなかなか難しいものです.物理の教科書にも,これまでなかなかいい説明が載っていなかったので,僕も学生には角運動量の話を使って説明していました.今回,同じ論法で説明されている方を見つけて大変感激しております.次回のパラメータ励振の話も楽しみにしています. < Thank you. jun hirabayashi 「次回のパラメータ励振の話」を読んで失望されていないことを、ただただ願うのみです。ハイ。
2001-12-02[n年前へ]
■今日見た景色 夕日に照らされる釣り船
キレイな景色だなぁ。(リンク)
■今日見た景色 夕日を眺めるネコ
と思ったら、こっちを眺めてた。間違い、間違い。(リンク)
■今日見た景色 いつもと同じ深い青色
いつもと同じRGB=(20,40,60)/255っていう感じの色。(リンク)
■にらけらハウスっ!閉鎖
にらけらは解散することになりました。...(リンク)
■今日見た景色 こっちを眺めるネコ
とても迷惑そうな目つき。(リンク)
2002-12-02[n年前へ]
■ATOKプラグイン「多対一対応」
どんなものが便利でなおかつ面白いだろうか?IMEのアドインとして使うのだから、時間(検索に時間がかかるとか)や手間が必要(マウスを使うとか)なものでは今ひとつだろう。その点、「数式処理プラグイン」の「変換結果が基本的に一つ」という性質はなかなか良い例だと思うのである。
しかも、「多対一であって、一対一対応でない」というのも重要だろう。「一対一の対応」であれば、プラグインを使うのでなくて、それは単に辞書登録すれば良いわけなのだから。というわけで、「数式処理プラグイン」はそういう面でとても良いサンプルだと思う。他にはそんな例は無いのだろうか?
■思い出のテーマ曲
もう一度見たいあの番組|思い出のテーマ曲を眺めていたら、「獅子の時代」の最終回で流れていたダウン・タウン・ブギウギ・バンドの「OUR HISTORY AGAIN - 時の彼方に -」を無性に聴きたくなって、CDを買いに行くのだ。「十五で世の中をわかっちまったようなヤツラから見れば馬鹿げた話さ〜」
■演算子・関数一覧
ATOK数式処理プラグインの使用可能な演算子・関数一覧を置いておきます。ATOKで演算子・関数が使えるなんていいと思いません?
■プラスαの付加価値
WEBページで使われている画像を見ると、ちょっと最近考えてしまう。何かの話題を説明するような画像を用意することは困難なわけで、単に他から自分のところにコピーして使ってあるものも見かける。それではあまりに「他人の褌じゃなかろか」と思ったりする。せめて、自分なりの落書きの一言でも画像中に入れるとか、何かのプラスアルファ(その価値を他人も認めるかどうかはともかく)を自分なりに付けるべきじゃなかろうか。それができないなら直リンクするとか。「直リンクお断り」と宣言しているようなサイトで有れば(そうでなくとも多くの場合は)、そもそも画像をどっかにコピーされるなんて問題外だろうし。(ちなみに、hirax.netに関してはもちろん直リンクOK、で、もし画像をローカルコピーして公開するなら「何らかの付加価値をその画像に付け加えるべし」です。それができないなら、直リンクということで。)
もちろん、私もこういうことをしないわけじゃないけれど、綺麗さを彩る「○×△」を眺めていると、うむむーとちょっと考えてしまうのである。毎日毎日、何かの話題に適切な画像(大抵の場合文章よりも時間がかかる)を作るなんて大変だから、とはいえねぇ。
2003-12-02[n年前へ]
■多くの私たちの一部
「国民全員が集まって、討論したり多数決をとったりすることができないから、選挙というものがある」「みんなで集まる場所もなかったりするから、色んな制限があったりするから、選挙というモノがある」「多くの私たちの代理として、何人かの人を選ぶというものがある」「だけど、ネットワークの世界ならそんな制限はないから、みんなで集まることができるハズ」 …確かに、そういう見方も面白くそしてスリリングかもしれない。
~ なるほど、だとするならば話は変わるが、現実の世界も(色んな制限があるせいで、少し見通しが悪くなってはいるけれど)それの相似形に違いない。北朝鮮に拉致された人達も私たちであるし、イラクで死んだ人達も私たちに違いない。それも、多くの私たちの一部であるに違いない。
2004-12-02[n年前へ]
■Pukiwikiのjphoto2プラグイン
Pukiwikiで「ズーミングするFlash画像アルバム(zphotoモドキ)」を表示するプラグインjphoto.inc.php. ページに添付されている画像を一覧ズーミング表示したり、指定ページに添付されている画像を一覧ズーミング表示したりするプラグイン。
元々ははてなダイアリの写真カレンダ表示プラグイン用に作ったjphoto3pが、愛用しているPukiwikiでも使うことができるのは、とてもありがたいかも。さらには、Pukiwikiのblog2 で作成したブログを Movable Type 風に表示するプラグインmorejams::blog2show(動作例)と組み合わせてみるのも面白いかも。
■WindowsのCUI版zphoto
WindowsのCUI版zphotoが欲しい、という話題。以前は、Windows版もCUIのみだったが、今ではGUI版のみのバイナリが配布されている。そこで、マウスを使いたくない時、だけどコンパイル作業がメンドクサイ時に作ったスクリプトがこれ。あぁ、なんて強引。「マウスは使ってない(あくまで私は)」という強引さ。
use Win32::GuiTest qw( FindWindowLike GetWindowText SetForegroundWindow MouseMoveAbsPix SendMouse GetWindowRect SendKeys);
my $pid = fork;
die unless defined $pid;
if($pid) { sleep 1;
@windows = FindWindowLike(0, "フォトアルバムを作成");
foreach my $win (@windows) { SetForegroundWindow($win);
SendKeys("{ENTER} {TAB}{ENTER}{ENTER}");
} for(my $i = 0;
$i < 61;
$i++){ @windows = FindWindowLike(0, "フォトアルバムが作成されました");
if(@windows > 0){ last;
} else{ sleep 1;
} if($i == 60){ &error("Time Out!");
exit;
} }foreach my $win (@windows){ SetForegroundWindow($win);
SendKeys("{TAB}{ENTER}%{F4}");
} exit;
}system("\"$zphoto\" -o \"$SwfPath\" --photo-width=800 --gamma 1.25 --title \"ppt2zphoto\" $Slides");
exit;
■ DELL UltraSharp 2001FP 20inch液晶モニタ
DELL UltraSharp 2001FP 20inch液晶モニタ(1600 x 1200)が配送料税込み69800円。というわけで、仕事用に買う。
2005-12-02[n年前へ]
■「ポジティブ・ネガティブ・ニュートラル」
先日、渋谷で「アルファブロガー」というタイトルの本を本棚から抜き、ページをめくってみました。すると、「ネガティブなことは書かないようにしている」という一節が見えたのです。その瞬間、ふとこんなことを考えました。
それは、「アルファブロガーの人たち」と「その他」を分ける境界線というものは、単にその「ネガティブでない = ポジティブ(もしくはニュートラル)」と「ネガティブ」の違いなのかもしれない、ということでした。私は「アルファブロガー」と呼ばれる人たちが、どういうものであるのかを全然知りません。全く知らないので、適当に「アルファブロガー」というものが「何かを生み出す人たち」だと勝手に想像してみたのです。そして、「その他の人たち」というものがその「何か」を受け継いでいくグループなのかな?と想像してみたのです。…だとすると、「アルファブロガーの人たち」というのは「ネガティブ」ではダメなのかもしれない、とふと思ったのです。
なぜかというと、「何かを新たに生み出す」ということは、「ポジティブ(もしくはニュートラル)に書くことが必要条件である」に違いない、とその瞬間には思ったからです。ポジティブの逆、「ネガティブ」というものは、「否定を含むもの」ということです。「何かに対して否定的なもの」ということです。もしかしたら、「ネガティブ」は「何かに対する感想・反応」と言い換えることもできたりするかもしれません。そして、それはさらに副次的・従属的なものだ、と言い換えることができるかもしれません。
「何かを新たに生み出す」ということが、(他のものに連なる)従属的で副次的なものないとしたら、それが「(他の何かに対する)感想」で終わらないためには、「ネガティブ」でなく、ポジティブあるいはニュートラルなスタイルで書かないといけないのだろうか?と想像したのです。…だから、「アルファブロガー」の人たちの条件は、「ネガティブなことは書かない」ことなのかもしれない、とふと思ったのです。
こんな文章も、ほんの何十秒か「アルファブロガー」の本をめくっただけの「感想」に過ぎません。そう考えると、何だか情けない気分になりつつ、仕事の帰りがてらに本屋によって、その本を買ってみたのです。さてさて、何はともあれ、本のページをゆっくりめくってみることにしましょうか。
■「ウェストを素晴らしく細くする」脳内トリック
Tech総研ブログに「ウェストを素晴らしく細くする」脳内トリックを書きました。「貧乏揺すり」ハンドパワーで彼氏の心に魔法をかけろ!? という?内容です。
「(腰回り)81cm の超ポッチャリ体型」が「58cm のスーパーモデル並み体型」に感じられた、ということになります。ビックリ仰天してしまうくらいの、恐ろしい!?錯覚です。
2007-12-02[n年前へ]
■「フェルメール・ブルー」と「有田焼」と「ガリバー旅行記」
フェルメールと言えば、「青」だ。「青いターバンの少女」をはじめ、高価なラピスラズリを顔料に用いて描いたウルトラマリンブルーの色調は、フェルメールの看板色となっている。
フェルメールの時代、彼が過ごしたオランダの街デルフトは、「デルフト焼」と呼ばれる陶磁器を世界中へ届ける街だった。デルフト焼は、美しい青で知られた「デルフトブルー」という代名詞で知られている。このデルフトブルーの原点は、日本の有田焼だった。日本の有田で作られた有田焼が(ヨーロッパで伊万里焼と呼ばれたものの多くは実は有田焼である)、世界初の株式会社と言われる連合オランダ東インド会社を通じてオランダに運ばれ、デルフトの陶工たちが、有田焼を参考にして「デルフトブルー」を作り続けた。そんな街で、フェルメールは毎日の景色を眺め続けた。
フェルメールは1632年に生まれ、連合オランダ東インド会社は1602年に設立された。そして、オランダ人が始めて日本にやってきたのは、1600年である。この年4月、大分にオランダ船リーフデ(英語の"LOVE")号が漂着したのが、日本とオランダのファースト・インパクトである。そして、そのオランダ船の航海長だったのがウィリアム・アダムス、後の三浦按針だ。
ウィリアム・アダムス=三浦按針といえば、ガリバー旅行記のガリバーのモデルとして知られている。ガリバーは第三篇で、空飛ぶラピュタ島などを経た後に日本へ行き、長崎から日本を離れイギリスへ帰国したが、そのモデル三浦按針は、望み叶わず、祖国へ戻ることなく1620年長崎の平戸で亡くなった。それが、フェルメールが生まれる12年前である。
日本からガリバーなどの手を経て、オランダへ渡った有田焼はデルフト焼のデルフトブルーを産む。フェルメールがラピスラズリでフェルメール・ブルーの色を調合しようとする頃、デルフトはデルフトブルーの青い色でで溢れている。歴史の流れも、何だかとても面白い。
2008-12-02[n年前へ]
■"Win32GuiTest.exe"で「Windows操作を再現するRubyスクリプト」を自動で作る
PerlでWindowsのGui操作を記述することができるライブラリ Win32::GuiTest を Ruby に移植した Win32GuiTest クラスをバージョンアップし win32GuiTest.rb として、ここに置きました)。変更点の一つめは、"pushButton" ""pushChildButton" "sendMessage" "postMessage" "getTopWindow" といった関数を増やしたことです。
そして、もう一つが「マウスイベントとキーボードイベントをフックし、得られたマウス操作やキーボード操作を Perlのソースコードとして保存してくれる」"Win32-GuiTest Recorder"(ここに Recorder.lzh としてコピーを置いておきます)が出力したPerlのソースコードをRubyスクリプトに変更する処理を、クラスメソッドとして実装したことです。たとえば、
require 'win32GuiTest' Win32GuiTest.convertPerlScript("pl.pl")といったコードを書けば、"Win32-GuiTest Recorder"が出力したPerlスクリプト"pl.pl"をもとに、Rubyスクリプトが出力されます。(たとえば、pl.plを変換した結果がpl2rb.rbになります)。
これで、PerlユーザだけでなくRubyユーザも(とはいえ、きっとPerlを使うことができる人はRubyも使うことができるだろうし、Rubyを使うことができる人はPerlも使えるだろう・・・と思っているのですが)、"Win32-GuiTest Recorder"を使ったWindows 操作のスクリプト自動生成のありがたみを味わえる、ということになります。
ちなみに、"Win32-GuiTest Recorder"の設定は、ダイアログのチェックボタンを下に示したスクリーンショットのように(とりあえずは)ユーザが処理した待ち時間やウィンドー情報を保持しておくのと、後で便利でお勧めです。
■"Win32GuiTest.exe"で自動作成したRubyスクリプト実行動画
"Win32GuiTest.exe"で「Windows操作を再現するRubyスクリプト」を自動で作るの処理例、つまり、"Win32GuiTest.exe"で自動作成したPerlスクリプトをWin32GuiTest by RubyでRubyスクリプトに変換し、そのRubyスクリプトを走らせてみた時の動作画面を下に動画として貼り付けておきます。
まずは、下に貼り付けた動画がpl2rb.rb(変換前のPerlスクリプトはpl.plになります)の実行画面になります。行った作業はテキストを入力して、何回かコピー&ペーストして、その後に削除する、というものです。
そしてこちらがoutput_revised.rb (変換前のPerlスクリプトはoutput.rbです)の実行画面です。行った作業は、日本語入力とアルファベット入力を自動で行ったものです(ちなみに、"Win32GuiTest.exe"は、私の環境では、日本語変換モード切り替えのキーコンビネーションをきちんと記録してくれなかったので、Rubyコードの方に修正を入れてあります)。
2009-12-02[n年前へ]
■Ruby版 Thinkpad 加速度センサ類取得クラスを書きました
Lenovo(旧IBM)のノートPC ThinkPad にはハードディスク保護を目的として、加速度センサが付いています。SSDを搭載している機種でも、(その他のハードウェアは共通化されているからだろうと思いますが)やはり加速度センサが付いているということです。
以前、C++でThinkpad加速度センサ類取得クラスを作りましたが(このC++コードを眺めてみると、不要な部分が残っていたので、その点については後で修正します)、今回はRubyでそのクラスを組んでみました。作成したRubyソースは、ここに置きました(accelerometer.rb)。ソース最下部には、使用方法もコメントアウトした上で付けておきました。また、このバージョンはC++バージョン同様、最近のThinkpadでも動く実装になっています。
読みやすさのために改行を適当に入れたソースは、下記のようになります。
# jun hirabayashi jun@hirax.net 2009.12.02
class Accelerometer
require 'Win32API'
attr_accessor :x
attr_accessor :y
attr_accessor :temperature
attr_accessor :presentState
def initialize
begin
@sensorFunctionAPI=Win32API.new("Sensor",
"ShockproofGetAccelerometerData", ['P'], 'V')
@buffer=' '*17
if @sensorFunctionAPI.Call(@buffer)
parse(@buffer)
@offsetX=-@latestRawAccelDataX.to_i;
@offsetY=-@latestRawAccelDataY.to_i;
end
rescue
'We have some problem.'
exit!
end
end
def parse(result)
@presentState,@latestRawAccelDataX,@latestRawAccelDataY,
@latestAccelDataX,@atestAccelDataY,@temperature,
@atestZeroG_X,@atestZeroG_Y=result.unpack("iSSSSCSS")
end
def getAccelerometerData
@sensorFunctionAPI.Call(@buffer)
parse(@buffer)
@x=@latestRawAccelDataX.to_i+@offsetX.to_i;
@y=@latestRawAccelDataY.to_i+@offsetY.to_i;
return [@x,@y]
end
end
このRubyクラスを使った加速度取得スクリプト例は、下記のようになります。ちなみに、Xが(ノートPCに向かって)左右方向で、Yが奥行方向になります。これで、1秒おきにThinkpadの傾斜をコンソール出力します。
require 'accelerometer' accelerometer=Accelerometer.new 10.times{ |i| puts accelerometer.getAccelerometerData.join(',') sleep 1 }
MA5授賞式で面白いものを作っている開発者を見たせいか、何か色々作ってみたくなります。4年ほど前には、この加速度センサテクニックを使って「「未来の立体ディスプレイ」を作る」とか色々作ったような覚えがありますが、まだまだ色々な応用がありそうな気がしてきました。というわけで、まずは準備のために、今日はRuby版 Thinkpad 加速度センサ類取得クラスを書いてみました。
2010-12-02[n年前へ]
■数学(コーディング)パズル、大好き!?
ここのところ、数学パズル||コーディング・パズルにハマっています。きっかけは、国際情報オリンピック(International Olympiad in Informatics)の予選問題にもなったことがあるという「入門レベルの問題」で、「200個以内の長方形の上左および右下座標(32bit floatで表現できるような実数)が与えられる。長方形は相互に重なりが許されるとき、与えられた長方形群により覆われた部分の面積を求めるコードを書け。今すぐ書け。あっ、実行時間が2秒を越えるようなコードはダメだかんね」というお題でした。
あなたなら、このお題に対して、どんなコードを書くでしょう?VisualBasicでも、Perlでも、C++でも、Lispでも・・・、自分の言葉で問題を書き綴り・解き明かす「数学(コーディング)パズル」はっても楽しくスリリングなことなのだろう、と思います。きっと、それは固くなりがちな頭を柔らかくし、何らかの瞬発力を与えてくれるものであるような気がします。
ちなみに、そのお題を与えられたとき、適当にRubyで書いたコードが下のものになります。あなたなら、どんなコードを書きますか?
def makeRect(n) data=[] n.times{ data<<[rand(),rand(),rand(),rand()] } return data end def makeMesh(rects) xg=[] yg=[] rects.each do |xt,xb,yt,yb| xg<<xt<<xb yg<<yt<<xb end xg.sort! yg.sort! mesh=[] (xg.length-1).times do |x| (yg.length-1).times do |y| cx=(xg[x]+xg[x+1])/2 cy=(yg[y]+yg[y+1])/2 area=(xg[x+1]-xg[x])*(yg[y+1]-yg[y]) mesh<<[cx,cy,area] if area>0 end end return mesh end rects=makeRect(200) mesh=makeMesh(rects) area=0 mesh.each do |x,y,a| rects.each do |xt,xb,yt,yb| if xt<x&&x<xb&&yt<y&&y<yb area+=a break end end end puts area
2011-12-02[n年前へ]
■続 ガリガリ君のアタリは法律上限の2倍近い高確率だった!?
「ガリガリ君のアタリの確率は(アタリ確率の上限を決めている)景表法の2%上限規定に違反してた!?」という「ガリガリ君のアタリは法律上限の2倍近い高確率だった!?」の継続研究を続けています。真冬を感じさせる寒い日が続きますが、それでもガタガタブルブルと震えつつ、ガリガリ君 梨味を毎日食べ続けています。…それどころか、自分だけでは数をこなせませんから、「ガリガリ君食べたい」と囁いた人には、もれなく「ガリガリ君」をおごるガリガリ君プレゼントサービスまでして・研究を続けていたりします。
今日は、ガリガリ君を売るコンビニで働く方に「ガリガリ君のアタリの謎」について尋ねてみました。ガリガリ君のアタリは「どういう数」になってるのか・アタリは「どういう風に交換する」のか、ということを尋ねてみたのです。すると、こういうお答えが返ってきました。
ガリガリ君は、仕入れ数に対し所定比率のアタリ分が付いてくる(納められてくる)。アタリ棒を持ち「交換」しに来たお客さんがいればお店にあるガリガリ君の在庫と交換し、もしも在庫がなければ「すみません、今は在庫がないので別の日にお願いできますか」と交換を断ります。
「仕入れ数に対し所定比率のアタリ分」というのが、前回調べた「31本につきアタリ1本」という比率なのかどうかは不明です。前回調べた「赤城乳業 ガリガリ君ソーダ 31本+アタリ分1本入 」パックはコンビニエンスストアなど小売店に卸されているものとは別かもしれません。
…というわけで、今日はコンビニで調べる「ガリガリ君のアタリ研究レポート」報告をしてみました。暑い夏も、寒さの冬も、まだまだ、ガリガリ君アタリ研究は続きます。