2014-12-01 :-(
_ 読書メーター
2014年11月の読書メーター
読んだ本の数:9冊
読んだページ数:2015ページ
ナイス数:8ナイス
仮説思考 BCG流 問題発見・解決の発想法の感想
結論から考える
読了日:11月29日 著者:内田和成
いかにして問題をとくかの感想
問題解決へのプロセス、と考えて読むとかえって抽象的となり数学以外にどうやって応用するのか頭を抱えている
読了日:11月28日 著者:G.ポリア
考える力をつける3つの道具の感想
「ザ・ゴール」のTOCを噛み砕いたもの/ゴールドラットさんは亡くなっていたのか
読了日:11月24日 著者:岸良裕司,きしらまゆこ
マンガでやさしくわかる問題解決の感想
ロジカル・シンキング/MECE/地方の工場を立て直すという課題を例にして現状の課題、解決策の仮説、検証、フィードバックをこなす。
読了日:11月24日 著者:河瀬誠
世界一やさしい問題解決の授業―自分で考え、行動する力が身につくの感想
ロジカル・シンキング。対象は中学生、高校生か。生活のなかでの具体的な(身近な)問題を取り上げてそれを解決するための思考が書かれている。
読了日:11月24日 著者:渡辺健介
俺のかーちゃんが17歳になった (2) (電撃文庫)の感想
やまなこ/メー子一家の解決。17歳になった理由がこれまた過酷なのでそろそろチャラいひとで一休みしませんか/タカシとメー子が恋人ではなく相変わらず利害関係者にしか見えないから今後の発展に期待
読了日:11月18日 著者:弘前龍
エロマンガ先生 妹と開かずの間 (電撃文庫)の感想
一番恐ろしいのは「童貞はちょろいな」をやっていた神野めぐみだけど今時の中学生はあんなのかもしれんな。「クリスタルパレス」は「愛戦士ニコル」ですかねと思ったがよくある名前か
読了日:11月15日 著者:伏見つかさ
高速ビデオ・インターフェースHDMI&Display Portのすべて (インターフェース・デザイン・シリーズ)の感想
HDMIの仕様書を読めない一般人なら、本を読むしかないじゃない!
読了日:11月3日 著者:長野英生
ディジタル画像処理の感想
画像処理の字引き。ご家庭に一冊どうぞ
読了日:11月3日 著者:
読書メーター
_ 午後
1300 労働
2014-12-02 :-(
_ 午後
1300 労働
_ [C]最初にアクセスしたときに領域確保する
Singleton ぽいものですがどうですかね。
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> enum { BUFFER_MAX = 8, }; char* buffer = NULL; void errx( void ) { printf( "%s\n", strerror( errno ) ); exit( 1 ); } char* getInstance( void ) { if( buffer == NULL ) { buffer = malloc( BUFFER_MAX ); if( buffer == NULL ) { errx(); } } return buffer; } void destroy( void ) { if( buffer != NULL ) { free( buffer ); } } char read( int index ) { char* buf = getInstance(); return buf[ index ]; } void write( int index, char data ) { char* buf = getInstance(); buf[ index ] = data; } int main(int ac, char** av) { char data; atexit( destroy ); write( 0, 1 ); data = read( 0 ); printf( "%d\n", data ); write( 1, 2 ); data = read( 1 ); printf( "%d\n", data ); return 0; }
$ gcc c.c $ ./a.exe 1 2
2014-12-03 :-(
2014-12-04 :-(
2014-12-05 :-)
_ 通院
1週間経過したので通院した。レントゲンを撮るなど。とくに異常(?) は無く。3 週間は松葉杖が必要。完治まで 2, 3 ヶ月かかろうとのこと。
念のため診断書を貰った。3000 円くらいするのね。。。
_ 最寄り駅まで松葉杖で移動してみた
この一週間は松葉杖を使うのは仕事場のみだったので一般道を歩くのは割りと初めてなんだがツラい。もう無理。こんなに遠かったっけ。
一般道なので凹凸がわりと激しい。いや健康なときは気にならなかったけどこうして怪我するとちょっとした凹凸で松葉杖がひっかかり転けそうになる。仕事場が如何に整備されているかが実感できる。
_ NARUTO は中忍試験のころがピークだった
オレんなかで
2014-12-06 :-)
_ 午後
1200 Unityちゃん
_ [Unity]初めての Unity
たんに書籍のチュートリアルやってるだけですが。
Unity スゴいですな。初めて Windows のプログラムを書くときに Visual Basic を触ったときのような衝撃です。こんな手軽に作れるんだ。
Unity Remote を使えば Android アプリとしてテストするのも簡単です。リリースするのはまた別の手間があるらしいけど。
479737490X
_ [NetBSD][ruby][ftp][snapshot][daily]NetBSD の snapshot を取得する
# coding: utf-8 require 'net/ftp' require 'pp' FTP_SITE = 'ftp7.jp.netbsd.org' HEAD_DIR = 'pub/NetBSD-daily/HEAD/' def main(argv) Net::FTP.open(FTP_SITE) do |ftp| ftp.login ftp.chdir(HEAD_DIR) dirs = ftp.list('*').reverse.each { |d| ymd = d.split(' ')[8] sets_dir = "#{ymd}/source/sets/" files = ftp.list(sets_dir) next if files.length == 0 ftp.chdir(sets_dir) files.each {|l| f = l.split(' ')[8] printf "#{f} ..." ftp.get(f) printf "done\n" } break } end end main(ARGV)
snapshot は日付によっては sets が空っぽだったりする( ftp://ftp7.jp.netbsd.org/pub/NetBSD-daily/HEAD/201412051620Z/source/sets/ )ので空っぽじゃないディレクトリを探さないといけない。ぽい
ftp.list はファイル名のみ取得してくれるんじゃなくてほんとに LIST の結果が入っていた。
["-rw-r--r-- 1 ftp ftp 257 Dec 03 01:22 MD5", "-rw-r--r-- 1 ftp ftp 752 Dec 03 01:22 SHA512", "-rw-r--r-- 1 ftp ftp 14613392 Dec 03 01:19 gnusrc.tgz", "-rw-r--r-- 1 ftp ftp 7395905 Dec 03 01:20 sharesrc.tgz", "-rw-r--r-- 1 ftp ftp 293484728 Dec 03 01:19 src.tgz", "-rw-r--r-- 1 ftp ftp 50030593 Dec 03 01:20 syssrc.tgz", "-rw-r--r-- 1 ftp ftp 155929254 Dec 03 01:22 xsrc.tgz"]
2014-12-07 :-)
_ [Unity]Unity 4.6 でのテキスト
Unity 4.5 までの GUIText は Unity 4.6 ではレガシーとなり、UI - canvas - text に置き換わったらしい。
- Unity - Manual: Canvas
- Overview of the New UI System – Unity Blog
- Unity4.6以降のGUITEXTとGUITEXUREについて - Unity入門特設Wiki 書籍のサポートページというか wiki
GUIText を作ってみたけどスクリプトにおいて GUIText を結びつける方法が分からんかった。
ので結局 UI - Canvas を追加し、Canvas に Text と script を Add componet し、さらにインスペクターにて Scoretext ( なぜ大文字小文字が変化するのか )に Text を結びつけて( ドラッグ&ドロップすりゃいいようだ。これをやらないと script での scoretext が Text のインスタンスに結びつけられないようだ )使った。さっぱり分からん。
#pragma strict static var scorePoint : int; public var scoretext : UI.Text; function Start () { scorePoint = 0; } function Update () { scoretext.text = scorePoint.ToString(); }
2014-12-10 :-(
_ 午後
1300 労働
_ ,
入部したての桜木花道のような気分である。
_ ちびまる子ちゃんに ちくわぶ が登場した
と同僚からの話題があった。
ようするに「あの時代に清水市で ちくわぶは食べないだろ」という。
1974年から1975年の昭和50年代初期に、静岡県清水市(現静岡市清水区の入江地区)
近年まで、東京を中心とした埼玉と神奈川、千葉の一部でしか見られず、全国的にはほとんど知られていなかった。
へー
_ 劇場版アイカツ!新聞
近所のセブンイレブンで買った。
_ [艦これ]艦これ 内田大明神
「内田大明神」というネタがある。
内田提督がまた御利益を発揮したようです - Togetterまとめ
内田弘樹 の作品をお守りにしておくと Bismarck (ビスマルク)が建造されるジンクスがあるという。そういうわけで昨日買った。
あやかってみた。
出来た。
4040702107
404070360X
_ ,
2次元ばかり reblog するひとって
_ ,
「そろそろ 30 歳か。じゃあ転職どう?」と部下に勧める上司って(オレのことだ)
_ ,
実際のところ「自社がいつ潰れてもいいようにしておきましょう」と言っている。
_ [レガシーコード]そこからすべてが始まったのです
「そこからすべてが始まったのです」
このような気持ちを抱いたことがあるでしょうか。皆さんは、これまでの人生のある瞬間を指して「そこからすべてが始まったのです」と言うことができますか。自分の人生を変え、この本を手に取って、このまえがきを読むにいたさせるような、1 つの出来事があったでしょうか。(p.iii)
ない。
4798116831
_ ,
Don't think. Coding.
2014-12-13 :-)
_ Ingress 方面が大騒ぎだったようで
私は未プレイ。
東京地区の陣地を如何にして奪うか→日本を囲ってしまえばいいじゃない(笑)
というジョークは以前からあったが、それを実践されてしまい阿鼻叫喚となったが、それをさらに奪還したんだとかなんとか。Ingress ガチ勢おそろしいな。
2014-12-14 :-)
_ [デミオ][マツダ]買い物
【MAZDA】デミオ - SKYACTIV TECHNOLOGY搭載車
@マツダ
ディーゼルです。
せっかくだからソウルレッドプレミアムメタリックにした(塗装が何重になるので面倒くさいらしい)
店から出るときに従業員みんな並んで送り出された。ような。まあ業務が立てこんでなかったんだろう。
_ [SaGa][サガ]サガ』シリーズ25周年特別番組【出演】河津秋敏、伊藤賢治、小林智美 他
見てた。ロマサガ1 からのニワカですが。
サガ新作が Vita で開発中とかいろいろ。ついに Vita を買うときがきたか。
2014-12-17 :-(
_ 午後
1300 労働
_ [TOPPERS/JSP]TOPPERS/JSP の Windowsシミュレーション環境を使う
挫けた。
環境
- Microsoft Windows 7 64bit
- Microsoft Visual Studio Express 2013 for Desktop
やったこと
TOPPERSプロジェクト/ダウンロード からダウンロードするんだけど
- JSPカーネル Release 1.4.3 は include エラーを解決できず
- JSPカーネル Release 1.4.4 は include エラーを解決できず
配布されている書庫には Visual Studio 用のプロジェクトファイル等も含まれてはいるんだがかなり古い環境が前提になっているもよう。ぐぬぬ
-------------------------------- 1.1 ターゲットシステムと開発環境 -------------------------------- Windowsシミュレーション環境の実行環境としては,次のものを想定している. ・Microsoft Windows 2000/XP Pro (x86) #Windows XP Home Editionでの検証は行っていない また開発環境として次のものを想定している. ・Microsoft Visual C++ 6.0 #一部のコードにインラインアセンブラを使用しているため、 #MSVC以外の処理系を用いることはできない また付属する追加機能を利用するために、次のものが必要になる場合がある. ・Microsoft VisualBASIC 6.0 ・Active Template Library 3.0 (Visual C++ 6.0に含まれる) ・Microsoft Foundation Class Library 6.0 (Visual C++ 6.0に含まれる) 補足 TOPPERS/JSP Windowsシミュレーション環境の開発は次の環境で行われている. [OS] ・Microsoft Windows XP Professional + Service Pack 1 [処理系] ・Microsoft Visual Studio .NET Academic (主たる開発環境) + .NET Framework ServicePack 1 ・Microsoft Visual Studio .NET Enterprise Architect + .NET Framework ServicePack 1 ・Microsoft Visual Studio 6.0 Enterprise + Microsoft Visual Studio 6.0 ServicePack5 + Microsoft Visual C++ Processor Pack ・RedHat cygwin (API:0.94, 1005.5.0.0)
_ FreeRTOS
Embedded Tips from Amr Ali: Running FreeRTOS with Microsoft Windows Vista in 1 Hour
Windows シミュレータがあるというのでやろうとしたが OpenWactom が Windows 7 64bit ではそもそも実行できなかった。らしい。
2014-12-19 :-(
_ 午後
1300 労働
_ ,
「拳立て」などといったことを考えた痛い意識持ってる系の生活をしていたところ乾燥が激しかったらしく、肌が割れた。
_ ツンデル係数
_ cygwin パッケージのダウンロードが超絶時間かかるんだけど
ミラー選択ミスったかしら
2014-12-20 :-)
_ [クロスコンパイラ][h8300-hms][H8][NetBSD]NetBSD で h8300-hms な gcc クロスコンパイラを作る (NetBSD)
pkgsrc にある。
cd pkgsrc/cross/h8300-hms-gcc/ make install clean clean-depends
_ [クロスコンパイラ][h8300-hms][H8]cygwin で h8300-hms な gcc クロスコンパイラを作る (1) (挫折)
最新のツールを使おうとすると「サポートしてない」と言われる。挫折。
Libs
gcc のビルドに必要なライブラリは cygwin パッケージにある。パッケージの Devel と Libs を全部インストールしておけば事足りるだろう。
- GMP
- MPFR
- MPC
- PPL
- cloog-ppl
binutils newlib gcc
ダウンロードして展開しておく。
http://ftp.gnu.org/gnu/binutils/
ftp://sources.redhat.com/pub/newlib/index.html
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
% for f in *.gz; do echo $f; done binutils-2.24.tar.gz gcc-4.9.2.tar.gz newlib-2.2.0.tar.gz
% for f in *.gz; do tar xzf $f; done
binutils
configure して make
../configure --target=h8300-hms --disable-nls --prefix=/usr/local/cross make : checking whether byte ordering is bigendian... no This target is no longer supported in gas Makefile:4665: recipe for target 'configure-gas' failed make[1]: *** [configure-gas] Error 1 make[1]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/binutils-2.24/build' Makefile:833: recipe for target 'all' failed make: *** [all] Error 2
h8300-hms はオワコン と言われた。諦める。続く
_ [クロスコンパイラ][h8300-hms][H8]cygwin で h8300-hms な gcc クロスコンパイラを作る (2) (挫折)
最新のツールはダメらしい。公式によると古いやつを使えとのこと。
- Host/Target specific installation notes for GCC - GNU Project - Free Software Foundation (FSF)
- Installing GCC: Binaries - GNU Project - Free Software Foundation (FSF)
- GNU Development Tools for the Renesas H8/300[HS] Series
Downloading necessary files Download the following files and put them under one directory (or you can have linkes to them in one directory). binutils-2.13.2.tar.bz2 gcc-3.2.1-core.tar.bz2 h8300-hms-gcc-3.1-1.patch newlib-1.11.0.tar.gz gdb-5.2.1.tar.bz2
これ
http://ftp.gnu.org/gnu/binutils/binutils-2.13.2.tar.gz
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-3.2.1/gcc-3.2.1.tar.gz
http://prdownloads.sourceforge.net/h8300-hms/h8300-hms-gcc-3.1-1.patch
ftp://sourceware.org/pub/newlib/newlib-1.11.0.tar.gz
http://ftp.gnu.org/gnu/gdb/gdb-5.2.1.tar.gz
binutils
configure は --host を指定しないと怒られる。make install でエラーになった。
../configure --prefix=/usr/local/cross --host=x86_64-cygwin --target=h8300-hms make CFLAGS="-O2 -fomit-frame-pointer" all make install : ../../../gas/doc/c-i386.texi:608: warning: node next `i386-16bit' in menu `i386-Arch' and in sectioning `i386-Bugs' differ ../../../gas/doc/c-i386.texi:659: warning: node next `i386-Bugs' in menu `i386-Notes' and in sectioning `i386-Arch' differ ../../../gas/doc/c-i386.texi:659: warning: node prev `i386-Bugs' in menu `i386-Arch' and in sectioning `i386-16bit' differ ../../../gas/doc/c-i386.texi:680: warning: node next `i386-Arch' in menu `i386-Bugs' and in sectioning `i386-Notes' differ ../../../gas/doc/c-i386.texi:680: warning: node prev `i386-Arch' in menu `i386-16bit' and in sectioning `i386-Bugs' differ ../../../gas/doc/c-i386.texi:728: warning: node prev `i386-Notes' in menu `i386-Bugs' and in sectioning `i386-Arch' differ ../../../gas/doc/c-mmix.texi:7: warning: node next `MMIX-Dependent' in menu `SH-Dependent' and in sectioning `PDP-11-Dependent' differ ../../../gas/doc/c-pdp11.texi:6: warning: node prev `PDP-11-Dependent' in menu `SH64-Dependent' and in sectioning `MMIX-Dependent' differ ../../../gas/doc/c-ppc.texi:7: warning: node next `PPC-Dependent' in menu `Sparc-Dependent' and in sectioning `SH-Dependent' differ ../../../gas/doc/c-sh.texi:6: warning: node prev `SH-Dependent' in menu `MMIX-Dependent' and in sectioning `PPC-Dependent' differ ../../../gas/doc/c-sh64.texi:5: warning: node next `SH64-Dependent' in menu `PDP-11-Dependent' and in sectioning `Sparc-Dependent' differ ../../../gas/doc/c-sparc.texi:7: warning: node next `Sparc-Dependent' in menu `V850-Dependent' and in sectioning `Z8000-Dependent' differ ../../../gas/doc/c-sparc.texi:7: warning: node prev `Sparc-Dependent' in menu `PPC-Dependent' and in sectioning `SH64-Dependent' differ ../../../gas/doc/c-z8k.texi:6: warning: node prev `Z8000-Dependent' in menu `V850-Dependent' and in sectioning `Sparc-Dependent' differ ../../../gas/doc/c-vax.texi:7: warning: node `V850-Dependent' is next for `Vax-Dependent' in sectioning but not in menu ../../../gas/doc/c-v850.texi:5: warning: node `Z8000-Dependent' is next for `V850-Dependent' in menu but not in sectioning ../../../gas/doc/c-v850.texi:5: warning: node prev `V850-Dependent' in menu `Sparc-Dependent' and in sectioning `Vax-Dependent' differ Makefile:229: recipe for target 'as.info' failed make[2]: *** [as.info] Error 1 make[2]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/binutils-2.13.2/objdir/gas/doc' Makefile:2521: recipe for target 'install-recursive' failed make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/binutils-2.13.2/objdir/gas' Makefile:1345: recipe for target 'install-gas' failed make: *** [install-gas] Error 2
gas だけでなくサブディレクトリすべての texinfo やら texi やらでどうようのエラーになるので面倒くさいので片っ端から Makefile の該当箇所をコメントアウトしてビルド対象外とした。
bfd/Makefile
#SUBDIRS = doc po SUBDIRS = po
gas/Makefile
#SUBDIRS = doc po SUBDIRS = po
ld/Makefile
#install: install-info
再度 make install すれば入る。
gcc and newlib
手順通りやる。make install でエラーになる。
export PATH=$PATH:/usr/local/cross/bin tar xfj gcc-3.2.1-core.tar.bz2 tar xfz newlib-1.11.0.tar.gz cd gcc-3.2.1 ln -s ../newlib-1.11.0/newlib . patch -p1 < ../h8300-hms-gcc-3.1-1.patch mkdir objdir cd objdir $ ../configure --prefix=/usr/local/cross --host=i686-pc-cygwin --target=h8300-hms --enable-languages=c --with-newlib make CFLAGS="-O2 -fomit-frame-pointer" all make install : make[3]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib' Making all in libc make[3]: Entering directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/libc' Making all in argz make[4]: Entering directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/libc/argz' /cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/gcc/xgcc -B/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/gcc/ -nostdinc -B/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/ -isystem /cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/targ-include -isystem /cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/newlib/libc/include -B/usr/local/cross/h8300-hms/bin/ -B/usr/local/cross/h8300-hms/lib/ -isystem /usr/local/cross/h8300-hms/include -DPACKAGE=\"newlib\" -DVERSION=\"1.11.0\" -I. -I../../../../../newlib/libc/argz -O2 -DSMALL_DTOA -DSMALL_MEMORY -fno-builtin -O2 -O2 -fomit-frame-pointer -c ../../../../../newlib/libc/argz/dummy.c make[4]: /cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/gcc/xgcc: コマンドが見つかりませんでした Makefile:207: recipe for target 'dummy.o' failed make[4]: *** [dummy.o] Error 127 make[4]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/libc/argz' Makefile:452: recipe for target 'all-recursive' failed make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib/libc' Makefile:476: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib' Makefile:627: recipe for target 'all-recursive-am' failed make[1]: *** [all-recursive-am] Error 2 make[1]: Leaving directory '/cygdrive/c/home/public/h8-300-hms/gcc-3.2.1/objdir/h8300-hms/newlib' Makefile:1520: recipe for target 'all-target-newlib' failed make: *** [all-target-newlib] Error 2
もうやだ。
_ [TOPPERS/JSP]TOPPERS/JSP のサンプルを動作させる (挫折)
NetBSD で h8300-hms クロスコンパイラは入ったので NetBSD で作業してみる。挫けた。
% cd jsp-1.4.4.1-full/sample % ../configure -C h8 -S akih8_3069f zsh: ../configure: bad interpreter: /usr/bin/perl: no such file or directory
configure のシェバングを /usr/pkg/bin/perl に変更する。
再度 configure する。
% ../configure -C h8 -S akih8_3069f Use of "do" to call subroutines is deprecated at ../configure line 71. Use of "do" to call subroutines is deprecated at ../configure line 84. Use of "do" to call subroutines is deprecated at ../configure line 95. Use of "do" to call subroutines is deprecated at ../configure line 163. Use of "do" to call subroutines is deprecated at ../configure line 169. Use of "do" to call subroutines is deprecated at ../configure line 176. Use of "do" to call subroutines is deprecated at ../configure line 182. Use of "do" to call subroutines is deprecated at ../configure line 224. Use of "do" to call subroutines is deprecated at ../configure line 253. Use of "do" to call subroutines is deprecated at ../configure line 254. Use of "do" to call subroutines is deprecated at ../configure line 255. Use of "do" to call subroutines is deprecated at ../configure line 256. Use of "do" to call subroutines is deprecated at ../configure line 257. Can't locate getopt.pl in @INC (@INC contains: /home/rin/usr/local/lib/perl /usr/pkg/lib/perl5/site_perl/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/site_perl/5.18.0 /usr/pkg/lib/perl5/vendor_perl/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/vendor_perl/5.18.0 /usr/pkg/lib/perl5/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/5.18.0 .) at ../configure line 40.
getopt.pl はレガシーだった。cpan だとどれが該当するんだ....
2014-12-22 :-(
_ 午後
1300 労働
_ [RTOS][μiTRON][TOPPERS/ASP][H3]TOPPERS/ASP のサンプルを動作させてみた
参考
環境
- Microsoft Windows7 64bit
- VMware Player
- NetBSD 6.1.5 i386
ようするに Windows 上の VMware Player のゲスト OS が NetBSD である[ 20120629#p07 ]。なお USB 変換ケーブルを接続した箇所を変えたためか、COM は 3 ではなく 5 になっていたので VMware の vmx ファイルを変更しておくべし。
serial0.present = "TRUE" serial0.fileName = "COM5"
コンフィギュレータの構築
手順は doc/user.txt の通りではある。予め /usr/pkgsrc/meta-pkgs/boost をインストールしておくこと。
% cd cfg % ./configure --with-headers=/usr/pkg/include --with-libraries=/usr/pkg/lib
make すると怒られるのでいろいろ変更。
% gmake : c++ -O2 -I/usr/pkg/include -I../.. -c static_api.cpp ar rcs libitronx.a cfg1_out.o checker.o component.o factory.o preprocess.o static_api.o make BOOST_DIR="/usr/pkg/include" LIBBOOST_SUFFIX="" CXXFLAGS="-O2 " -C cfg make: "/home/rin/work/OS/asp/cfg/cfg/Makefile" line 20: Missing dependency operator make: "/home/rin/work/OS/asp/cfg/cfg/Makefile" line 22: Need an operator make: "/home/rin/work/OS/asp/cfg/cfg/Makefile" line 24: Need an operator make: Fatal errors encountered -- cannot continue make: stopped in /home/rin/work/OS/asp/cfg/cfg gmake: *** [cfg] エラー 1
$OSTYPE は定義されている。しかし文法としてエラーになっている。わけわからん
% echo $OSTYPE netbsdelf
msys じゃないし、コメントアウトして回避。
#ifeq ($(OSTYPE), msys) # BOOST_LIBFILES = /mingw/lib/libboost_system-mgw-mt-s.lib /mingw/lib/libboost_filesystem-mgw-mt-s.lib /mingw/lib/libboost_program_options-mgw-mt-s.lib #else # BOOST_LIBFILES := $(BOOST_LIBFILES) -lboost_system$(LIBBOOST_SUFFIX) -lboost_filesystem$(LIBBOOST_SUFFIX) -lboost_program_options$(LIBBOOST_SUFFIX) #endif BOOST_LIBFILES := $(BOOST_LIBFILES) -lboost_system$(LIBBOOST_SUFFIX) -lboost_filesystem$(LIBBOOST_SUFFIX) -lboost_program_options$(LIBBOOST_SUFFIX)
ok
% gmake
サンプルプログラムの構築と実行
% cd asp % mkdir OBJ % cd OBJ % perl ../configure -T akih8_3069f_gcc Use of "do" to call subroutines is deprecated at ../configure line 77. Use of "do" to call subroutines is deprecated at ../configure line 101. Use of "do" to call subroutines is deprecated at ../configure line 169. Use of "do" to call subroutines is deprecated at ../configure line 175. Use of "do" to call subroutines is deprecated at ../configure line 182. Use of "do" to call subroutines is deprecated at ../configure line 188. Use of "do" to call subroutines is deprecated at ../configure line 212. Use of "do" to call subroutines is deprecated at ../configure line 247. Use of "do" to call subroutines is deprecated at ../configure line 263. Use of "do" to call subroutines is deprecated at ../configure line 264. Use of "do" to call subroutines is deprecated at ../configure line 265. Use of "do" to call subroutines is deprecated at ../configure line 266. Use of "do" to call subroutines is deprecated at ../configure line 267. Can't locate getopt.pl in @INC (@INC contains: /home/rin/usr/local/lib/perl /usr/pkg/lib/perl5/site_perl/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/site_perl/5.18.0 /usr/pkg/lib/perl5/vendor_perl/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/vendor_perl/5.18.0 /usr/pkg/lib/perl5/5.18.0/i386-netbsd-thread-multi /usr/pkg/lib/perl5/5.18.0 .) at ../configure line 43.
getopt.pl はレガシーなので configure を変更( perl5120delta - perl v5.12.0 での変更点 - perldoc.jp Getopt::Std - perldoc.perl.org )
#require "getopt.pl"; use Getopt::Std;
#do Getopt("TAaULDltmdpg"); getopt("TAaULDltmdpg");
再度。ok
% perl ../configure -T akih8_3069f_gcc
さて、make すると怒られるのでいろいろ変更。
% gmake depend if ! [ -f Makefile.depend ]; then \ rm -f kernel_cfg.timestamp kernel_cfg.c kernel_cfg.h ; \ rm -f cfg1_out.c cfg1_out.o cfg1_out cfg1_out.syms cfg1_out.srec; \ rm -f makeoffset.s offset.h; \ fi rm -f Makefile.depend ../cfg/cfg/cfg --pass 1 --kernel asp -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc --api-table ../kernel/kernel_api.csv --cfg1-def-table ../kernel/kernel_def.csv --cfg1-def-table ../arch/h8300h_gcc/core_def.csv sample1.cfg Shared object "libboost_system.so.1.57.0" not found gmake: *** [cfg1_out.c] エラー 1
boost ライブラリの位置を指定することにした。さっき configure 時に指定したのはなんなの....
% LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/pkg/lib; gmake depend if ! [ -f Makefile.depend ]; then \ rm -f kernel_cfg.timestamp kernel_cfg.c kernel_cfg.h ; \ rm -f cfg1_out.c cfg1_out.o cfg1_out cfg1_out.syms cfg1_out.srec; \ rm -f makeoffset.s offset.h; \ fi rm -f Makefile.depend ../cfg/cfg/cfg --pass 1 --kernel asp -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc --api-table ../kernel/kernel_api.csv --cfg1-def-table ../kernel/kernel_def.csv --cfg1-def-table ../arch/h8300h_gcc/core_def.csv sample1.cfg h8300-hms-gcc -c -D__H8_3069F__ -mh -mint32 -mrelax -g -Wall -O2 -DTNCT_MONITOR -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc -DALLFUNC -I../kernel cfg1_out.c h8300-hms-gcc -c -D__H8_3069F__ -mh -mint32 -mrelax -g -Wall -O2 -DTNCT_MONITOR -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc -DALLFUNC -I../kernel ../arch/h8300h_gcc/start.S h8300-hms-gcc -D__H8_3069F__ -mh -mint32 -mrelax -g -Wall -O2 -DTNCT_MONITOR -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc -nostdlib -T ../target/akih8_3069f_gcc/debug.ld -o cfg1_out \ cfg1_out.o h8300-hms-nm -C cfg1_out > cfg1_out.syms h8300-hms-objcopy -O srec -S cfg1_out cfg1_out.srec ../cfg/cfg/cfg --pass 2 --kernel asp -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc \ -T ../target/akih8_3069f_gcc/target.tf --api-table ../kernel/kernel_api.csv --cfg1-def-table ../kernel/kernel_def.csv --cfg1-def-table ../arch/h8300h_gcc/core_def.csv sample1.cfg touch kernel_cfg.timestamp ../cfg/cfg/cfg --pass 3 --kernel asp -I. -I../include -I../arch -I.. -I../target/akih8_3069f_gcc \ --rom-image cfg1_out.srec --symbol-table cfg1_out.syms \ -T ../arch/h8300h_gcc/core_offset.tf --api-table ../kernel/kernel_api.csv --cfg1-def-table ../kernel/kernel_def.csv --cfg1-def-table ../arch/h8300h_gcc/core_def.csv sample1.cfg check complete Generating Makefile.depend. sh: ../utils/makedep: not found gmake: *** [cfg1_out.d] エラー 127
次のエラー。
utils/makedep のシェバングを変更
#! /usr/pkg/bin/perl
あと getopt.pl を使ってる箇所があるので変更
#require "getopt.pl"; use Getopt::Std;
#do Getopt("TAaULDltmdpg"); getopt("TAaULDltmdpg");
再度 make depend 。ok
% LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/pkg/lib; gmake depend
そして make depend
% LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/pkg/lib; gmake
生成されるのは asp というファイルである。
# # オブジェクトファイル名の定義 # OBJNAME = asp ifdef OBJEXT OBJFILE = $(OBJNAME).$(OBJEXT) CFG1_OUT = cfg1_out.$(OBJEXT) else OBJFILE = $(OBJNAME) CFG1_OUT = cfg1_out endif
はずなんだが。。。
asp.srec らしい。ふむ
% file asp.srec asp.srec: Motorola S-Record; binary data in text format
簡易モニタを書き込む
失敗した。
mogu# kz_h8write -3069 -f20 mon3069.mot /dev/tty00 ================================================= H8/3069F Flash Writer for KOZOS (Version 0.2.1) Copyright(C) 2011-2012 Shinichiro Nakamura ================================================= Bitrate sequence failed. (code=0x04)
うーん?
試しに kz_h8write (H8/3069F writer for KOZOS (kz_h8write)) 付属の example を焼いてみる。成功した。うーん?
% cd kz_h8write-v0.2.1/PackageFiles/example % sudo kz_h8write -3069 -f20 kzload.mot /dev/tty00 ================================================= H8/3069F Flash Writer for KOZOS (Version 0.2.1) Copyright(C) 2011-2012 Shinichiro Nakamura ================================================= Bitrate sequence: Done. Inquiry device: Done. Select device: Done. Inquiry clock mode: Done. Select clock mode: Done. Select bitrate: Done. Waiting for erase done:... Programming:...................... Program: Done. Complete.
じゃあさっきエラーになった箇所を追ってみる。メッセージからするとこの関数で失敗している。
kz_h8write.c
/* * ビットレート合わせ込みのシーケンスを実行する。 * * ビットレート合わせ込みシーケンスに初回時失敗する事がある。 * マイコンの電源投入時やシリアルケーブル接続時に * プロセッサのUARTポートに意図しない信号が入る事が考えられる。 * * そこで、本プログラムでは数回の試行を行うことにした。 * これはユーザがかけている手間をプログラムが代行する事を意味する。 */ for (int i = 0; i < 2; i++) { ec = bitrate_sequence(serial); if (ec == NoError) { break; } else { /* * デバッグ用出力。 * * ビットレートシーケンスは初回に失敗する可能性がある。 * これに対してエラーを表示してしまうとユーザが混乱する。 * よってデバッグ用出力としての位置づけにしておく。 * リトライした結果として成功した事を知りたい時にのみ * 表示を有効にすると良い。 */ if (USER_OPTION_DEBUG(&user_option)) { fprintf(stderr, "Bitrate sequence failed.\n"); } } } if (ec != NoError) { fprintf(stderr, "Bitrate sequence failed. (code=0x%02x)\n", (int)ec); PROGEXIT(1); }
bitrate_sequence() はこれ。しかし何が返ってるのか分からん。
/** * @brief ビットレート合わせ込みのシーケンスを実行する。 * * @details * ビットレートの合わせ込みは以下のシーケンスで行う。 * 1. 0x00を最大30回送信する。 * 2. 合わせ込みが完了すると0x00が返る。 * 3. この時点で0x55を送信する。 * 4. レスポンスコードが返る。 * 成功:0xE6 * 失敗:0xFF * * @param serial シリアルハンドラ。 * * @return エラーコード。 */ enum ErrorCode bitrate_sequence(SERIAL *serial) { unsigned char sc, rc; int i; for (i = 0; i < 30; i++) { /* * ビットレート計測用マーカを送信する。 */ sc = 0x00; if (serial_write(serial, &sc, 1) != 0) { return SerialWriteError; } /* * 何かを受信したらコードを確認する。 * コードが正しければ応答を行い、そのレスポンスを検証する。 */ if (serial_read_with_timeout(serial, &rc, 1, SERIAL_TIMEOUT_MS) == 0) { if (rc != 0x00) { /* * 最初の応答は0x00のはず。 */ return InvalidPrimaryResponseCode; } sc = 0x55; if (serial_write(serial, &sc, 1) != 0) { return SerialWriteError; } if (serial_read_with_timeout(serial, &rc, 1, SERIAL_TIMEOUT_MS) != 0) { /* * 0x55に対する応答があるはず。 */ return NoSecondaryResponseCode; } if (rc == 0xe6) { return NoError; } else { /* * 2回目の応答は0xe6のはず。 */ return InvalidSecondaryResponseCode; } } } /* * レスポンスが全くない。 */ return NoPrimaryResponseCode; }
SerialWriteError 等を grep してみるとこの enum に到達。NoPrimaryResponseCode を返していた。うーん? 電源は入ってるしなあ...
/** * @brief エラーコード。 */ enum ErrorCode { NoError = 0, SerialOpenError, SerialWriteError, InvalidPrimaryResponseCode, NoPrimaryResponseCode, <==== これ InvalidSecondaryResponseCode, NoSecondaryResponseCode, UnsupportedDevice, UnmatchedDeviceCode, UnsupportedClockMode, UnmatchedClockMode, InvalidBitrate, WriteEraseFail, };
もう一回やってみる。成功した。えー
% cd h8mon/mon3069 % sudo kz_h8write -3069 -f20 mon3069.mot /dev/tty00 ================================================= H8/3069F Flash Writer for KOZOS (Version 0.2.1) Copyright(C) 2011-2012 Shinichiro Nakamura ================================================= Bitrate sequence: Done. Inquiry device: Done. Select device: Done. Inquiry clock mode: Done. Select clock mode: Done. Select bitrate: Done. Waiting for erase done:.... Programming:................................................................ Program: Done. Complete.
サンプルプログラムを書き込む
ビルドしたサンプルのディレクトリへ移動。
% cd asp/OBJ
接続。
% sudo cu -s 38400 -l /dev/tty00 Connected
基板のリセットを押す。ok
1:H8/3069F Monitor v1.12 Copyright (C) 1999-2004 CSE Tomakomai NCT
ロードさせる
1:ld ~>Local file name?asp.srec
go する。何か起動した
1:go TOPPERS/ASP Kernel Release 1.7.0 for AKI-H8/3069F (Dec 21 2014, 19:47:12) Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory Toyohashi Univ. of Technology, JAPAN Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN Copyright (C) 2001-2010 by Industrial Technology Institute, Miyagi Prefectural Government, JAPAN Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering Tomakomai National College of Technology, JAPAN Copyright (C) 2008 by GELJET Designing Center RICOH COMPANY,LTD. System logging task is started on port 1. Sample program starts (exinf = 0). task1 is running (001). | task1 is running (002). | task1 is running (003). | task1 is running (004). | task1 is running (005). | task1 is running (006). | task1 is running (007). | task1 is running (008). | task1 is running (009). | task1 is running (010). | task1 is running (011). | task1 is running (012). | task1 is running (013). | task1 is running (014). | task1 is running (015). | task1 is running (016). | task1 is running (017). | -- buffered messages -- Ctrl-C 叩いた Sample program ends.
2014-12-25 :-(
_ 午後
1300 労働
_ ,
amazon ほしい物リストを晒したところで誰からも贈りつけられることもないのでもう二度とほしい物リストを晒さないと誓う吉宗であった。
_ [FreeStyleWiki][fswiki][Apache][cygwin]cygwin の Apache で FreeStyleWiki を使う
環境
Microsoft Windows7 64bit cygwin 最新の
cygwin
パッケージを適当にインストール
- Admin
- Base
- Devel
- Web - Apache2
Apache
$ cygserver-config $ net start cygserver CYGWIN cygserver サービスを開始します. CYGWIN cygserver サービスは正常に開始されました。
サービスとして登録する場合
$ cygrunsrv -I httpd -d "CYGWIN httpd" -p /usr/sbin/httpd2 -a -DFOREGROUND -e "CYGWIN=server" $ net start httpd CYGWIN httpd サービスを開始します. CYGWIN httpd サービスは正常に開始されました。
FreeStyleWiki
ここにあるとする
C:\cygwinn\etc\apache2\httpd.conf
User Guest Group Guests
ServerAdmin hoge@example.jp
DocumentRoot "/srv/www/htdocs"
<Directory "/srv/www/htdocs"> Options Indexes FollowSymLinks Options +ExecCGI AddHandler cgi-script .cgi AllowOverride All Order allow,deny Allow from all </Directory>
<IfModule dir_module> DirectoryIndex index.html wiki.cgi </IfModule>
$ cd /srv/www/htdocs/
$ sh setup.sh # fswiki setup (for 3.5.8)... prepare... FSWIKI_HOME=. check ./wiki.cgi... ok do... check ./backup... check ./attach... check ./pdf... check ./log... check ./data... check ./config... check ./.htaccess... create. done
$ /usr/sbin/apachectl2 stop $ /usr/sbin/apachectl2 start
よくあるエラー
[error] (28)No space left on device: Cannot create SSLMutex
$ ipcs -s Semaphores: T ID KEY MODE OWNER GROUP s 65536 0 --rw------- Guest Guests s 131073 0 --rw------- Guest Guests s 131074 0 --rw------- Guest Guests s 65539 0 --rw------- Guest Guests s 65540 0 --rw------- Guest Guests s 131077 0 --rw------- SYSTEM Administrators s 131078 0 --rw------- SYSTEM Administrators s 65543 0 --rw------- SYSTEM Administrators s 65544 0 --rw------- SYSTEM Administrators s 131081 0 --rw------- SYSTEM Administrators
ipcs -s | perl -e 'while(<>){@a=split(/\s+/); print `ipcrm -s $a[1]`}'
参考
2014-12-27 :-)
_ 午後
1200 おひる。カップラーメン || セブンイレブン印のカップラーメンを食べてみたらかなり腹いっぱいになった件 || なんかよくないものが入ってるんじゃ
1300 読書
1500 年賀状を書くなど && せいぜい 10 枚くらいしか書かないのでいまだにプリンタを使うなどといった量産ラインはできていない && と言い始めて 10 年以上経過
_ 誕生日リスト
- タスク: お世話になってるソフトウェアの開発者
- 期日: そのひとの誕生日(ブログ等に書いている)
- URL: そのひとの amazon ほしい物リスト
- 繰り返し: 1年ごと
計算機を使って生活していれば数えきれないくらいのソフトウェア( そのウェブブラウザは誰が書いてる? そのテキストエディタは誰が書いてる? その OS は誰が書いてる? そのライブラリは誰が書いてる? その Twitter クライアントは誰が書いてる? )にお世話になってるのでこんなものじゃないんだけど、ひとまずこれくらい
2014-12-28 :-)
_ 午前
1030 起床
_ 今日は日曜日だったか
コミケ 1 日目はいつも金曜日なので調子が狂う。
_ 応答せよ、おうちサーバー
コンソールも反応しないので再起動させた。原因調査できるくらいのスキルを身につけないと。
- コンソール反応せず
- ログインできず
- 再起動後にログを見ると 12/27 21 時ころの tinydns のログが最期
- top をしばらく眺めてると定常的に ruby と python が高負荷になっている
- ruby の実行者は www なので tdiary が攻撃でも食らってるぽい。んだが、それほどの負荷なのか確証が持てん
- python の実行者はたぶん denyhosts 。つまり定期的に ssh 攻撃を食らってるぽい。んだが、それほどの負荷なのか確証が持てん
隣人(謎) のサーバーの負荷を眺めるとそんなに CPU 食ってないので、うちのがなんかアレなのか。なんだろう。アクセスされるのはどうしようもないんだけど、うーん。
2014-12-29 :-)
_ 午後
1300 読書など
_ iPod Shuffle (第二世代) が iTunes に認識されなくなった
Microsoft Windows7 64bit
よく見たら Windows7 は対象に入ってないじゃんよ iPod shuffle (第 2 世代) - 技術仕様
まあ 8 年前の代物だしなあ[ 20061103#p05 ]
システム条件(Windows) USB2.0ポートを装備したWindows PC Windows Vista、Windows XP HomeまたはProfessional (Service Pack 2以降) iTunes 7.4以降 (3)
2014-12-30 :-)
_ tdiary が重い
たぶんうちだけなんだけど
日記を更新して「追記」をクリックしたあとにエラーになることがある。記録してない。その後「最新」を表示すると更新した内容が表示される。
とりあえずプロファイリングしただけ。
日記の表示
% echo date=20141229 | sudo -u www ruby -r profile ./index.rb >hoge.txt 2>&1
% cumulative self self total time seconds seconds calls ms/call ms/call name 29.06 6.62 6.62 114122 0.06 0.15 CGI.unescape 11.28 9.19 2.57 21039 0.12 0.41 String#gsub 8.52 11.13 1.94 10015 0.19 0.85 TDiary::RefererManager#add_referer 5.36 12.35 1.22 10015 0.12 1.56 #<Class:0xba35766c>::RefererDiary#add_referer 4.78 13.44 1.09 10018 0.11 3.42 #<TDiary::Plugin:0xba36f640>.referer_add_to_diary 3.34 14.20 0.76 94179 0.01 0.01 String#delete 3.12 14.91 0.71 94096 0.01 0.01 Array#pack 1.76 15.31 0.40 13 30.77 60.77 Hash#each 1.71 15.70 0.39 2325 0.17 0.76 Gem::Specification#initialize 1.54 16.05 0.35 439 0.80 31.73 Kernel#require 1.49 16.39 0.34 1798 0.19 33.95 Array#each 1.40 16.71 0.32 20227 0.02 0.02 String#sub 1.23 16.99 0.28 52538 0.01 0.01 Hash#[] 1.19 17.26 0.27 121 2.23 68.68 Kernel#gem_original_require 1.14 17.52 0.26 23585 0.01 0.02 Hash#[]= 1.10 17.77 0.25 41581 0.01 0.01 String#force_encoding 0.92 17.98 0.21 20032 0.01 0.01 String#tr 0.92 18.19 0.21 5363 0.04 0.08 nil# 0.88 18.39 0.20 4545 0.04 0.13 Array#hash
CGI.unescape はここ。wiki 書式使ってはいる。ふうむ
% cd tdiary-core % grep -r CGI.unescape * lib/tdiary/style/wiki.rb: "<%=#{CGI.unescapeHTML($1)}\n%>" lib/tdiary/style/wiki.rb: "<p><%=#{CGI.unescapeHTML($1)}\n%></p>"
日記の追記
lib/tdiary/admin.rb に仕込んでみる。
# # class TDiaryAppend # append diary # require 'profiler' class TDiaryAppend < TDiaryUpdate def initialize( cgi, rhtml, conf ) Profiler__::start_profile begin super rescue TDiaryError @date = newdate end @author = @conf.multi_user ? @cgi.remote_user : nil @io.transaction( @date ) do |diaries| @diaries = diaries @diary = self[@date] || @io.diary_factory( @date, @title, '', @conf.style ) self << @diary.append( @body, @author ) @diary.set_title( @title ) unless @title.empty? @diary.show( ! @hide ) DIRTY_DIARY end File.open("hoge.txt", "w") {|f| Profiler__::print_profile(f) } Profiler__::stop_profile end protected def newdate Time::now + (@conf.hour_offset * 3600).to_i end end
結果。うーん?
% cumulative self self total time seconds seconds calls ms/call ms/call name 40.00 0.22 0.22 1 220.00 380.00 Marshal.dump 29.09 0.38 0.16 12602 0.01 0.01 Kernel#respond_to_missing? 5.45 0.41 0.03 2 15.00 25.00 Marshal.load 3.64 0.43 0.02 140 0.14 0.14 Time._load 3.64 0.45 0.02 241 0.08 0.08 IO#puts 1.82 0.46 0.01 62 0.16 0.16 HikiDoc::LineInput#gets 1.82 0.47 0.01 6 1.67 3.33 HikiDoc#compile_header 1.82 0.48 0.01 13 0.77 0.77 HikiDoc#rstrip 1.82 0.49 0.01 61 0.16 1.31 TDiary::IO::Default#store 1.82 0.50 0.01 9 1.11 1.11 HikiDoc::HTMLOutput#initialize 1.82 0.51 0.01 3 3.33 3.33 SystemCallError#initialize 1.82 0.52 0.01 2 5.00 5.00 Dir.glob 1.82 0.53 0.01 1 10.00 10.00 Hash#each 1.82 0.54 0.01 61 0.16 0.98 Array#each 1.82 0.55 0.01 6 1.67 146.67 PStore#transaction 1.82 0.56 0.01 2 5.00 25.00 PStore#load_data 0.00 0.56 0.00 1 0.00 0.00 TDiary::Style::BaseDiary#set_title 0.00 0.56 0.00 62 0.00 0.00 String#sub 0.00 0.56 0.00 6 0.00 0.00 IO#set_encoding 0.00 0.56 0.00 5 0.00 0.00 Class#inherited 0.00 0.56 0.00 47 0.00 0.00 Module#method_added 0.00 0.56 0.00 3 0.00 0.00 Module#attr_reader 0.00 0.56 0.00 2 0.00 0.00 Module#private 0.00 0.56 0.00 4 0.00 0.00 Kernel#require 0.00 0.56 0.00 1 0.00 0.00 TracePoint#enable 0.00 0.56 0.00 4 0.00 0.00 Array#flatten 0.00 0.56 0.00 1 0.00 0.00 Module#constants 0.00 0.56 0.00 8 0.00 0.00 Symbol#slice 0.00 0.56 0.00 26 0.00 0.00 Regexp#=~ 0.00 0.56 0.00 5 0.00 0.00 Kernel#!~ 0.00 0.56 0.00 5 0.00 0.00 Module#const_get 0.00 0.56 0.00 8 0.00 0.00 Module#append_features 0.00 0.56 0.00 8 0.00 0.00 Module#included 0.00 0.56 0.00 8 0.00 0.00 Module#include 0.00 0.56 0.00 3 0.00 0.00 Module#const_defined? 0.00 0.56 0.00 10 0.00 0.00 String#downcase 0.00 0.56 0.00 7 0.00 0.00 Hash#[]= 0.00 0.56 0.00 1 0.00 10.00 TDiary::IO::Base#initialize 0.00 0.56 0.00 67 0.00 0.90 Class#new 0.00 0.56 0.00 1 0.00 10.00 TDiary::TDiaryBase#initialize 0.00 0.56 0.00 5 0.00 0.00 Fixnum#& 0.00 0.56 0.00 1 0.00 0.00 CGI::QueryExtension#referer 0.00 0.56 0.00 2 0.00 0.00 TDiary::ViewHelper#base_url 0.00 0.56 0.00 4 0.00 0.00 String#=== 0.00 0.56 0.00 190 0.00 0.00 Regexp#=== 0.00 0.56 0.00 4 0.00 0.00 MatchData#[] 0.00 0.56 0.00 4 0.00 0.00 URI::Parser#split 0.00 0.56 0.00 6 0.00 0.00 URI.scheme_list 0.00 0.56 0.00 6 0.00 0.00 String#upcase
_ エモエモ [オブジェクト指向ムズイっす]
_ みわ [デザインパターンも合わせると腑に落ちるます。FactoryパターンとかObserverパターンとか( まあオブジェク..]