- 「パートナーを見つけるべきだということです。もっと重要なのは、その人とキャッチボールができるフィールドを手に入れていくこと。」
- 「エロサイト見てる暇あったら自分の技量を磨け。」
これに尽きると思う
ねこさんのぐうたらなにちじょう
これに尽きると思う
Fortranでは2003からコマンドライン引数処理のための内部手続きが正式に用意されています \(^o^)/
とっても便利なのですが、コマンドライン文字列を受け取って適当に処理して変数に値を渡す処理を書くのはなんにしても面倒です。ところで、Fortranでは変数の値の入出力をするための仕掛けとしてnamelistなるものがあります。これを使うと入力の順番を気にする必要がなくなったり、必要となる変数にのみ値を与えたりすることができます。
でこないだ気付いたのですが、これら2つを組み合わせるとなかなか使い勝手が良くなります。
program main
character(len=1024) :: buf,text
integer :: n,nlen
integer :: a,b,c ! パラメータ変数の定義
namelist /param/ a,b,c ! パラメータ変数をnamelistに登録
a = 1 ; b = 2 ; c = 3 ! パラメータのデフォルト値の設定
call get_command_argument(0,buf,n) ! コマンド名の文字数を取得する
call get_command(buf,nlen) ! コマンド入力全体を取得する
text = '¶m ' // buf(n+2:nlen) // '/' ! コマンド名を除外する
read(text,param) ! namelistでパラメータを読む
write(*,*) 'a = ',a,', b = ',b,', c = ',c
end program main
\$ ./commandline
a = 1 , b = 2 , c = 3
\$ ./commandline b=4
a = 1 , b = 4 , c = 3
のような使い方ができます。
…と自分自身に言い聞かせてみるメモ。
昨日は会社で与太話をしていて帰りが遅くなって、NHKスペシャルをまるまる見逃してしまったのでした。明日の24:55から再放送なので、起きてられたら今度は見よう。
ちなみにどんな話かというと、昔羽振りがとんでもなくよかった頃に会社にあったらしい計算機について、会社に長くいらっしゃる方と話をしていたのでした。私が今の会社に来た頃は既にかつての面影はなかったのでそれら計算機とは全然面識がなく、噂で聞いたり当時の雑誌とかで導入記事を見たり程度の知識しかないのでいろいろお伺いしてたのです。会社に研修に来ている学生さん達も一緒に聞いていたのですが、聞いたこともないようで「映画のジュラシックパークにもちょっとだけ出てた奴で…」と言っても全然ピンと来ないみたいでした。ねこさんも触ってみたかったなー。
上の話のどこいらへんが謎なのかというと、はっきり書くといろいろばれてしまう処がですw
うちの会社に元原子力関係の人がいて、ウェスティングハウスの話はよくあがっていたけど、どういう会社か良く解らなかったので勉強になりました。
というか番組は予想通りなお話だったんだけど、そもそもWestinghouseを良く知らなくて見てみるとEdison Electric Lightと対抗して電力事業を進め、交流発送電技術を確立した会社なのですね。ニコラ=テスラもこの会社にいたのかー。
んで80年代に衰退して、原子力部門がBNFLから東芝に買収、あとは商標だけがバイアコムに残ったと。一時期話題になったシンドラーグループのエレベータ部門ってウェスティングハウスの一部門だったのかー、でも確か日本エレベーター工業株式会社を子会社化したんじゃなかったっけ?とか。
この本とかがおもしろそう。
今までなんで知らなかったんだ orz
読書会に行こうと思っていたのに肝心のSICPを会社に置き忘れた orz
仕方がないのでWebから見ていようかと思っていただけど、会場で「infoファイルがダウンロードできますよ?」と伺い、そういえば前回そんな話を聞いたなと早速検索するとinfo以外にtexiファイルがある。ダウンロードしてtexinfoもインストール…と思ったら既に入っていたので、texi2pdfを使ってPDFファイルに変換、だいぶ読みやすくなった。
でもよくよく調べてみると配布されているPDFファイルがいくつかあった。texiファイルは数式や図がASCII Artで書かれているので読みにくいが、こっちは汚いけどまだ読みやすい。
本当にお疲れ様です。英語を読むのが苦手なねこさんはとっても助かっています。
新しいドキュメントはまだ全然読んでいませんが、以前のバージョンにあったねこさんには難解な日本語が読みやすくなってるといいなー。
いつの頃からかねこさんが使ってるXPなNotePCの新規作成に「FDF Document」なんてものが登録されていて、何に使うか良く解らないしフォルダを新規作成する時に邪魔なので("F"を押すだけで選択されなくなる)どうしたものかと思って、今調べたら…これか。
Foxit Readerも使用してなくて削除済みだし、面倒だったのでregeditで削除した。
最近たまたまこんなドキュメントを見つけてしまって、気になったので触ってみる気になってしまったのです。
昨年の6月位にふつけるを読んでみたりしていたのですが、1週間位で流し読みをしただけで処理系はほとんど触らなかったので、今のねこさんにとって久々に見たHaskellのコードは殆ど暗号です orz
にもかかわらず、何故か普段使っているNotePCにはghc-6.8.1-2とgtk2hs-0.9.12がインストールされている…きっとこびとさんが気を利かしてくれたに違いありません。会ったことのないこびとさんに感謝しながらドキュメントにあった例題コードを打ってみると、GTK+は何故かインストール済みなのでgth2hs+cairoなコードは動きますが、GLUTなコードはコンパイルできません。GLUT自体はインストール済みなはずです。Google大先生にお伺いしても「ghcにデフォルトで入ってるよ!」としか教えてくれません。
「代わりにOpenGLを動かす方法はないのかしら~?」と見てみるとgtk2hsに素敵なデモコードがあるではないですか!これはばっちり動かせました。なんかこれでいいような気がします。
でも何か気になるので調べてみますと、ghcとgtk2hsの最新バージョンはそれぞれ6.8.3と0.9.12です。何でコンパイラのバージョンが2世代前なのかしらと考えて…思い出しました、当時(?)最新のgtk2hs-0.9.12を動かすには最新のghc-6.8.2は使えなくて、ghc-6.8.1を使うしかなかったのです。
ghc-6.8.1にはGLUT用ライブラリが同梱していたのかどうか…なんていうことはもはやどうでもいいですので、とりあえず両方アップデートします。アップデートインストールする前には古いバージョンをアンインストールした方がよさそうです…少なくともねこさんはハマリました orz 思惑通り新しいバージョンにはGLUT用ライブラリが同梱されていました。例題プログラムもちゃんと動きました。万事問題なしです。
問題があるとすれば、ここいら辺で力尽きて肝心のドキュメントがあんまり読めてないことと、急いでやらなければならない仕事が滞っている事くらいでしょうか? orz
仕事で統計が解らないとまずそうな局面があったので、とりあえず手っ取り早く言葉だけでも解る様になれればと会社の図書室から持ち出して眺めていたのですが、仕事で必要なのか不明瞭になって読むの止めようかと思いつつ、なんとなく癪だったので一日10~20分位づつ読んでたら、意外に骨があって結局結構時間をかけて読了。
テクニックとしての計算よりも、統計を考える際の前提となるものの考え方について繰り返し念を押している所がこの本の持ち味なんだなと思いました。あとは日本のこの手の本ではありえなさそうなブラックジョークとか。ただ、訳者があんまり旨く本来の持ち味を出せてない予感。
もうちょっと適切な訳者を探して頂けるといい訳本になったと思うです、残念。
ねこさんは昔から常微分方程式の数値計算がそれはそれは大好きで、学生時代もそれにのめり込んで気が付いたらプログラムばっかり書いてる人生になってしまったのですが、「常微分方程式を計算するプログラムを綺麗に書きたい!」って言ってるうちに泥沼にはまり込んでしまったともいえる訳で orz
んで最近になってboost::fusionっていうステキライブラリの存在を知りまして、ろくにtemplate metaprogrammingなんて解らないくせに、「これで常微分方程式のスキームを書いたらきっとステキだー」と思ってしまって、試してみたら直ぐに蹴躓いて、恥ずかしながら某スレに質問して戴いた答えを元にどうにか書いてみました。
#include <iostream>
#include <boost/fusion/tuple.hpp>
#include <boost/fusion/algorithm.hpp>
namespace ode {
namespace euler {
template <typename FLT=double>
struct scheme {
FLT dt;
template<typename T>
T operator()(const T& x0, const T& x1) const {
return x0+x1*dt;
}
template<typename T>
struct result;
template<typename T>
struct result<scheme<FLT>(T,T)> {
typedef T type;
};
scheme(const FLT& dt=1.0) : dt(dt) {}
};
}
template <typename FLT, template <typename> class Sc, class Op, class X>
void solve(Sc<FLT>& prop, const Op& op, X& x) {
X x0 = x;
op(x);
x = boost::fusion::transform(x0,x,prop);
}
}
typedef boost::fusion::tuple<double,double> state;
std::ostream& operator<<(std::ostream& os, const state& x_) {
double t,x;
boost::fusion::tie(t,x) = x_;
return os << t << " " << x;
}
struct Logistic {
double a,b;
Logistic(const double& a, const double& b) : a(a), b(b) {}
template <class X>
void operator()(X& x_) const {
double t,x;
boost::fusion::tie(t,x) = x_;
t = 1.0;
x = a*x - b*x*x;
x_ = X(t,x);
}
};
int main() {
state x(0.0,0.01);
ode::euler::scheme<double> euler(0.01);
Logistic logi(1.0,1.0);
std::cout << std::scientific;
for (int i=0; i<1000; ++i) {
ode::solve(euler,logi,x);
std::cout << x << std::endl;
}
return 0;
}
ベタに書くよりはオーバーヘッドがあるだろうし、あんまり速くないかも(計測しろよ)しれないけど、簡単にコードが書けるようになりそうなのが良いかな。とりあえず簡単にEuler法で書いてるけど、多分インターフェースそのままにRunge-Kuttaでも何でも拡張できると思うです…やってみてないから確証はないですけど orz。時間ができたらそのうち書いてみるです。
また昨日の続き…最近帰りが遅いので毎日少しずつしか作業できない orz
もう一枚特典ディスクも焼こうと思ったのですが、あまり必要でないコンテンツが一杯入ってるので、片面2層分のデータを片面1層分に収めるための不可逆圧縮によるコンテンツの劣化を抑えるために不要なコンテンツの削除をしようかと思ったのです。
DVD ShrinkでもStill Imageを設定することでで不要なコンテンツを静止画像に置換して表示させるようにする機能があるのですが、元コンテンツの実再生時間分の表示をするのがあまりスマートでないなと。
そこでVobBlankerを導入して、不要なコンテンツをBlankに設定することで、コンテンツの再生自体を禁止することができるようになる。あとはVobBlankerで修正したファイルを焼きこんであげるだけ。
それにしても夜中までなにやってるんだか orz
昨日のリベンジをしようと考えたわけですが、方法として (1) 片面1層メディア2枚に分ける (2) 片面1層に収まるようにコンテンツを不可逆圧縮する が考えられるわけで、できれば画質が落ちる不可逆圧縮は避けたかった(だから最初をDLメディアを使った)のですが、2枚に分けるとやっぱり興が冷めたりするわけで、やっぱりそれは避けようと (1) でいってみる事にしたわけです。
早速DVD Shrinkをインストールして、昨日RipしたISOファイルをDAEMON Toolsでmountした状態からDVD Shrinkで再エンコーディングしながら吸出して、再びできたISOファイルをDVD Decrypterで再び焼き込んだ。
多少手間がかかったし若干ノイジーになった気もするけど、Deep Analysisが効いているのかさほど悪くもないかな?と思うことにしました。
某目的で、所有しているDVDの盤面を不要に傷付けるのを極力避けるために、中のコンテンツをRipしてDVD-Rに焼こうと思っていたのですが、Ripしようと思っていたDVDは当然のように片面2層で、そのままRipして片面1層のDVD-Rに焼こうとしても入りません。
ねこさんは愚かにも「片面2層メディアなら問題なかろう」と思ってDVD-R DLメディアを買ってきて、DVD-Decrypterを使ってRipして作製したISOファイルを焼きこんでみたのですが、ある意味当然にも焼いたPCを含む新しめの機械以外ではメディアを認識することはありませんでした。そこまでDVD-R DLの後方互換性がないとは全然知らなかった orz
郵便ポストを見たら中身の厚そうな封筒が届いてた。送り元も「有限会社ランテック」と記憶にあるようなないような。
んで、訝しながら中身を開けると中からCD-Rが…何の事はない、先週末に手続きした英辞郎のデータディスクだった。
確か"Internal Server Error"が出て失敗したはずだと思ってたのになんという…まぁ、再手続きしなくて済んで良かったと思うことにした。
Proce55ingを使った大域照明レンダラ。すごく簡潔に書かれてるのでねこさんにも読めそう…読めそうなだけ orz
こーゆー分野に興味があるけど全然勉強してないから、たぶん全然解んない orz
時間があって勉強しようと思ったら是非参考にさせてもらおう。
ちなみに、こんなものがあったりします。開発版はJythonベースだったりするのでパフォーマンスにも期待できるかな。Windowsでも動いたりしてる。ちょっと興味があったので、たった今ダウンロードしてみた…ダウンロードしてみただけだけど orz
これを垂れ込むべきかどうか、そもそもどうやって?
なんばと日本橋にお買い物。
不足していたDVDメディアと、会社の人に頼まれていたオーディオ用のステレオミニピンプラグ(3.5mm)を買うためにパーツ屋巡り。気が付かなかったけど、パーツ屋が結構増えてますね。以前はニノミヤのパーツフロアを重宝していたのですが、最近は共立を皮切りにマルツ堂や千石電商も進出してるしパーツランドというお店もあるし。一通り廻ったらえらい時間がかかってしまった。共立でいいプラグを見つけたのでここでお買い物。
共立でGAINERも見つけたけど、そこまで遊んでると本当に時間がなくなる orz あとMicroSD+USBリーダを買おうかと迷うも自重。
帰りに激しくジェノベーゼなパスタが食べたくなり、突撃してみるもあまりの混雑に挫折 orz 代わりにすじネギカリーとかいうのを興味本位で食べてみた。たぶんもう二度と食べない orz
やさぐれた気分で帰路に着いた orz
発表されてからはともかく、標準模型の骨子の一つとして固まってからも大分経ってからの受賞は遅すぎでは…という声が結構多いなとか思いつつ、でもノーベル物理学賞って結構検証を重んじるので、CP対称性の崩壊の実験による検証が行われてからを考えるとこんなものかなと思う。南部先生はずっと候補に上がっていたのだと思うのですが、明確に確立した理論を構築したという仕事の少ない人だと伺っていたので、合わせ技がないとたぶん難しかったんだろーなという事で、今回このような合わせ技になったのかなーとか。
先生方には当然の受賞だと確信しつつも、なにはともあれ受賞おめでとうございますです。理系の最底辺に棲んでいるねこさんにもとっても励みになるニュースなのです。
それにしてもNHKのニュースで30分も話題を取り上げていたのは報道する側に流せるだけの能力もないのにはしゃぎ過ぎだろとは思いつつも、最近明るい話題がないから仕方がないかとも思ったり。
と門外漢の癖になんかほざいているねこさんが一番はしゃぎすぎ orz
ようやっと変なプレッシャーが取れてきたので、午後から時間を見つけてファイルの整理をしてました。
別に整理しても何にも生産しないので無駄な気もちょっとだけするのですが、定期的に仕事の振り返りをすることは、これからの仕事の進め方を考える上で重要なヒントが得られるはず。
なんてエラそうなレベルの話ではなくて、単純に自分のデスクトップ・homeディレクトリが取り散らかしたファイルで埋もれてしまっているのでどうにかする…っていうだけ orz 適当にディレクトリを設けて中に入れる・明らかに不要なファイルは削除する、をしただけです。ディレクトリの中のファイルの整理はさらに時間を見つけて進めなければなりません。特に春から断続的にやってた半導体光導波路の伝播計算関連の超絶大量のファイルとか、以前デモ用に作成した半導体微小光共振器の発振状態の動的計算の動画ファイル関係の大量のデータとかを外部ディスクへ整理しつつ移動しなければ。あと申請・報告書の大量のファイルとか。
やっぱりこれからは、なるべく短い間隔(~1週間)でそういう振り返り・過去の整理をしていく習慣を作っていかねばやばいなー…とか思ったりするぐうたらなねこさんなのでした。
できるかな?