遅めに帰着。
あまりの眠さに急速停止。
AM中に起床。ぐうたらしてたら昼過ぎ。
掃除したり。
そういやWindows10のアップデート通知がだんだんと主張強めになっている
気がしたり。
おおよそ二週間ほどEmacs+美人時計を動かしてみたのですが死なず。
もう大丈夫と言って良いレベル。
先週の散在で買った「インサイドヘッド」を観終わったり。数日かけて本編と
コメンタリーとか一通り観ていたのですが、盛りだくさん過ぎて観るのに時間が
かかってしまいました。
最後、全ての感情が必要だという点に着地したのは上手いなぁと思いました。
前回買ったPixar作品はウォーリーなので、コメンタリー入りのは久しぶりかも。
今回のコメンタリーでは、映像技術的な点にはほとんど触れられていなくて、
ストーリーの組み上げに随分苦労したという点について多く語られていたように
思います。今回のインサイドヘッドに限らず、未公開シーンでは全然キャラの
設定なんかが違っている場合もあり、よく最終版に着地できたよなぁ?
と毎度思います。因みに、原題は「INSIDE OUT」で、日本語では裏返しという
意味です。作品の内容から言うと原題の方がぴったり合ってるように思います。
そういえば、インサイドヘッドが日本で公開される同時期に「脳内ポイズンベリー」
という漫画原作の邦画実写作品も公開されました。脳内の方も頭の中の
キャラクターが会議して....という感じの作品のようですが、
「え?こんな設定かぶりってあるのか?」と不思議に思ったりもしました。
実際には、インサイドヘッドは感情毎にキャラクターが分かれているけど、
脳内ポイズンベリーの方はもう少し違った感情でキャラクター分けされていたりと、
脳内にキャラクターが居る以外の共通点はほぼ無いようです。
昼過ぎ起床。
OpenCVで顔認識。
こちら
で知ったコードを参考に、カメラ画像を使って顔認識してみたり。
$ cat camera.cpp #include <vector> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/objdetect/objdetect.hpp> using namespace std; using namespace cv; int main(int argc, char *argv[]) { VideoCapture cap(0); cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); if (!cap.isOpened()) return -1; namedWindow("Capture", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO); for(;;) { Mat frame; cap >> frame; // write image processing here ... Mat gray_image ; cvtColor(frame, gray_image, CV_BGR2GRAY) ; GaussianBlur(gray_image, gray_image, Size(3,3), 1) ; //equalizeHist(gray_image, gray_image) ; vector<Rect> faces; //CascadeClassifier cascade("haarcascade_frontalface_default.xml") ; CascadeClassifier cascade("haarcascade_frontalface_alt.xml") ; //CascadeClassifier cascade("haarcascade_frontalface_alt2.xml") ; cascade.detectMultiScale(gray_image, faces, 1.09, 2, 2) ; for( auto it=faces.begin() ; it!=faces.end() ; ++it){ rectangle(frame, it->tl(), it->br(), Scalar(0,255,255), 2, 8, 0) ; } imshow("Capture", frame); if (waitKey(30) >= 0) { break; } } return 0; } $ i686-w64-mingw32-g++.exe -std=c++0x -I/usr/local/opencv-3.0.0/include camera.cpp -L/usr/local/opencv-3.0.0/lib -lopencv_core300 -lopencv_highgui300 -lopencv_videoio300 -lopencv_objdetect300 -lopencv_imgproc300
遅めに帰着。
ちょろり実験。認識率はあまり高くないような。
遅めに帰着。
PS4のアーケードアーカイブスに 沙羅曼蛇 が来る事になってたり。
普段ウォッチしていないのもあるのですが、なんかいきなり来る感が
強い気も。
遅めに帰着。
あまりの眠さに急速停止。
遅めに帰着。
ちょろっとctagsとEmacsからの使い方を調べたり。
Cygwinパッケージの一覧を表示すると、ctags自体は既にインストール済み
のように表示されているのですが、コマンドの実体はどこにも無く。
結局reinstallで対応したり。
ソースファイルの置かれたディレクトリで
$ ctags -Re
起きたら午後もいい時間。寝過ぎ。
掃除したり。
Webを散策していて知ったSayaというCGキャラクター
(http://www.telyuka.com/)。
髪の毛がスゲェ。これ、物理シミュレーションで動いたりするのかしら?
夜もいい時間に先日の散在の一つである「インサイドヘッド」の
Blu-rayを観たり。
AM中に起床。
ちょろりお出かけ。そして散在。
ビルドしたままほったらかしにしていたOpenCVの3.0.0ですが、
カメラって使えるかな?と思い、実験の為だけにWebカメラを購入してみたり。
どれを選ぶのが良いか悩んだのですが、安すぎず高すぎずな所で
選んでみたり。それにしても、スペックとして解像度とフレームレートの
関係が書かれているものとそうでないものとがあって、なんだか判りにくい
なぁ?と思ったりも。 ごちゃごちゃ書きましたが、実際のところ 動画撮影に
1mmも興味が無いので、どれでも良かったのかも知れません(^^;;;
帰ってからカメラを繋いでみたり。自動的にドライバがインストール
されて使えるようになったようなそうでもないような。適当なテストプログラム
をWebで探してみたところ、VLCやWindows Live ムービーメーカーとかを
使えば良い感じみたい。ひとまず動くのは確認できたり。
本題。カメラ映像を表示するだけのOpenCVのサンプルコードをWebで見つけて
コンパイル。
$ cat camera.cpp #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main(int argc, char *argv[]) { VideoCapture cap(0); cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); if (!cap.isOpened()) return -1; namedWindow("Capture", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO); for(;;) { Mat frame; cap >> frame; // write image processing here ... imshow("Capture", frame); if (waitKey(30) >= 0) { break; } } return 0; } $ i686-w64-mingw32-g++.exe -I/usr/local/opencv-3.0.0/include camera.cpp -L/usr/local/opencv-3.0.0/lib -lopencv_core300 -lopencv_highgui300 -lopencv_videoio300 $ ./a.exe
AM中に起床。
mcalendarをちょこちょこ弄ったり。
そういえば、
国民の祝日の中に「皇室慶弔行事に伴う休日」というのが
あるのですが、実際に休みだった記憶がほぼありません(^^;
昭和天皇が死んだ時に休みだった記憶は(学校が休みになったという事で)
うっすらあるのですが、それって2月になってからだっけ?
とかそんな感じ。
ちょっと弄った版を放流(mcalendar_151121.tar.xz)。
コードの約半分が休日処理に関係しているというのに改めて気づいたりも。
ちょろり文書更新。
早めに帰着。
コーディング。春分/秋分の日になんとなく対応してみたり。
やっぱりLISPは コンパイル時にデータの型をチェックできない&
実行してみるまでエラーが判らないのが辛いです(^^;
そんな訳で放流してみます(mcalendar_151120.tar.xz)。
操作方法の説明とか全然ありませんがひとまずそんなもんだと
いう事で。
遅めに帰着。
コーディング。春分の日と秋分の日以外は なんとなく
動くようになったような気がしたり。
遅めに帰着。
あまりの眠さに急速停止。
遅めに帰着。
ちょろりコーディング。
遅めに帰着。
第1回全日本X68000芸術祭(1991)オープニングムービー。懐かしい。
TAKERUで販売していたDoGAのCGAマガジンのどれかの号に全データ
収録されていたと思います。当時 68000(XVI)で試して
みたら、全部レンダリングするのに30日近くかかる計算になる事が
1日目で判って断念。その後 Xellent30 を載せて、CPU直結の
数値演算コプロを直接たたくrend030を使ったところ、確か
3日かからないくらいで全編レンダリングできたと思います。
オンメモリ再生は無理だったので、無圧縮のHDDストリーム再生可能
な動画フォーマット(なんて名前だったか失念)に変換して
通しで観ました。動画フォーマットの都合で解像度を256x256から
128x120くらいに縮小する必要があったのですが、その後もフル解像度
(256x256)で見ることは叶いませんでした。20年くらい前の話です。
てか、何日もかけてレンダリングするとか、何時間もかけてツールを
ビルドするとか、今でもしょっちゅう やってるような気も(^^;;
AM中に起床。
プロ遊の下に
「GDCのビルド手順(on MSYS2)」を
追加しました。御参考まで。
現在の我が家のメインPCは HP(ヒューレット・パッカード)の奴なのですが、
「HP Support Assistant」なるプログラムの起動用アイコンがタスクバー
に表示されています。で、なにやらアップデート通知が来たので
アップデートした所、アイコンのサイズがちょっと小さくなったのですが、
その影響でタスクバーが少し細くなってしまい、左下の時計表示が
時刻しか表示されなくなってしまいました。
→
タスクバーを二段に広げるとなんだか広がり過ぎな感じになり、
大きなアイコンを使用すると高さは良いけどボタンのラベルが
小さくなりすぎると どれもイマイチ。
HPサポートアシストのアイコンがタスクバーの高さを絶妙に
調節していたのに、今気づきました(^^;
掃除したり、ちょろりお出かけしたり。
「あなたの知らない超絶技巧プログラミングの世界」という本。
以前
「 IOCCC(The International Obfuscated C Code Contest(国際難解Cコードコンテスト)」
なるものの存在を知ったのですが、難読コードの中でも更に特殊な
Quine(クワイン)
と呼ばれる実行すると自分自身を出力するプログラム
が多く載っている変ったプログラムの本です。
中でも「マジか!?」と思ったのが
100種類のプログラム言語を経由して元のプログラムに戻る
「100言語版Quineリレー」。
あと、任意の一文字が消えても修復される
「宇宙線耐性Quine」。
後者はCygwinのrubyで動いたのですが、本当にどこを削っても元に戻る
ので「なんで???」って感じです。
あとがきに"本書はおそらく世界初の「役に立たないコンピュータ書籍」です。"
と書かれていましたが、こんなプログラム、あってもイイと思います。
カレンダーの休日表示。近年の休日だけでも表示できないかと
japanese-holidays.elと祝日のWikipediaなどを見ながら考え中。
祝日について調べていて、春分の日と秋分の日は観測に基づいて決められる為、
一意のアルゴリズムで求まるものでは無い(1900年〜2099年までの簡易判定式はある)
というのを知ったり。
まぁまぁ長いこと生きているのに初めて知りました(^^;;
昼前に起床。
EmacsLispでコーディングしてました。
以前、calendarが3ヶ月
表示なのを1ヶ月にできればなぁ?という事を書いたのですが、
暇つぶしを兼ねて1ヶ月分表示のカレンダーを自作してみました。
普段使いの幅に丁度ハマる感じになった気も。
見た目、Emacs付属のcalendarに合わせていますが、本当に表示
しかできません(^^;。japanese-holidays.el相当の休日表示
はできないので、そこがかなりイマイチです。
それにしても、日本の休日は ハッピーマンデーや、振り替え休日、国民の休日で
挟まれた平日は休日になるオセロルールなど、なんだか複雑で
ちょっと考えただけでも TANEには「ムリだこれ」って感じなのですが、
大分前からそれができている上に、
時代に合わせた休日の呼び方の変化(例えば4/29は「(昭和)天皇誕生日」→
「みどりの日」→「昭和の日」のように変遷)にも対応している
japanese-holidays.elって改めてすげぇと感じます。
MSYS2でのgdcビルド手順をまとめたり。binutilsとgdcのビルド順番を
一般的な順と逆にしないと「-lgphobos2 -lws2_32 問題」の解決に
ならない事に気づいたりして、手順の再確認に時間がかかったり。
大分遅めに帰着。
ちょろりコーディング。なんとなく動くようになった気も。
遅めに帰着。
ちょろりコーディング。
気持ち早めに帰着。
Cygwin-2.3.0-1でEmacs+美人時計/nyam-modeのテスト。
まる24時間ほど実行したのですが、落ちる事も無ければ
round関数が「Arithmetic range error: "round", -0.0e+NaN」 でエラー する
事もありませんでした。美人時計起動で落ちる件は
約8ヶ月間、nyan-modeでArithmetic range errorになる件は
約1年7ヶ月間悩まされました。やっと平穏が訪れました。
MSYS2でgdcのビルド。画像ライブラリなどもビルドして、手持ちの
ウインドウアプリをビルドしてみたり。
「-lgphobos2 -lws2_32」を付加しないとリンクに失敗する問題は
とりあえずそのままですが、i686-w64-mingw32とx86_64-w64-mingw32の
どちらのgdcコンパイラを使ってもビルド&実行に成功。
CygwinのMinGWクロスコンパイラではパッケージインストールしてある
MinGWライブラリでは、うまく動作する実行ファイルを生成できなかった
のですが、MSYS2でビルドしたものは大丈夫そうです。
CygwinのMinGW-gdcクロスコンパイラと同様に、binutilsも2.23.1を
ビルドして使用してみたところ、「-lgphobos2 -lws2_32」は無くても
リンクできるようになりました。
そんな訳で週末にでもMSYS2でのgdcビルド手順をまとめてみようかと
思います。
遅めに帰着。
Cygwin-2.3.0-1をインストール。さて、美人時計とnyan-modeの
問題は解決されるか?そんな訳で長時間実行テスト。
遅めに帰着。
Cygwin 2.3.0-1のリリースがアナウンスされてましたが、最寄のダウンロード
サイトにはまだ同期されていない模様。
MSYS2でgdcのビルド。i686-w64-mingw32 ターゲットの方も試してみたり。
こちらもビルドに成功。
$ gdc -O2 iam.d $ ./a.exe I am GNU I am Windows I am MinGW I am Win32 I am X86 $ gdc -v Using built-in specs. COLLECT_GCC=C:\msys64\mingw32\local\gdc20661_520_mingw\bin\gdc.exe COLLECT_LTO_WRAPPER=c:/msys64/mingw32/local/gdc20661_520_mingw/bin/../libexec/gcc/i686-w64-mingw32/5.2.0/lto-wrapper.exe Target: i686-w64-mingw32 Configured with: ../gcc-5.2.0/configure --with-pkgversion='gdc-5 dadb5a3784' --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --enable-languages=c,d --prefix=/mingw32/local/gdc20661_520_mingw --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --enable-threads=win32 --disable-win32-registry --enable-target-optspace --disable-nls --disable-bootstrap --disable-shared --disable-multilib --enable-long-long Thread model: win32 gcc version 5.2.0 (gdc-5 dadb5a3784)
AM中に起床。不調継続。
洗濯したり掃除したり。
Webを散策していたら
「
emacs 18.59/mule 1.1を NetBSD 7.0で動かした話」というスライドを知ったり。
動かすのは結構大変だったようです。64bitポインタ問題は
割と最近のソフトウェアでもありうる話かも知れません
(「龍が如く 維新!」のPS4への移植の話)。
そういやGDCの掲示板に
「
Trying to generate gdc for mingw-w64(x86 and x64) using msys2」という
記事があり、MSYS2でgdcをネイティブビルドしようとした記録がありました。
結果から言うとうまく動かないgdcが生成されて、ビルドに失敗したようですが、
最後に
「ok so end of story I am going back to c++, I already lost too much time with this.」
と言わしてしまったのは残念な事かも知れません。
でも、言われてみればMSYS2でGDCをビルドって聞いたこと無いかも?
MSYSとMSYS2の違いはシェルとしての環境だけで、コンパイラとかライブラリ
が違うという訳ではないのでは?と思ったりも。つまり、ビルドされるものは
MSYSとMSYS2とで違いは無いのではと思ったのですが......違うのかしら?
そんな訳で、MSYS2を使ってgdcのビルドを試してみる事に。MSYS2はインストール
の仕方がイマイチ判らなかったのですが、
こちらの
記事を参考に入れてみたり。ちょっと足りないパッケージ
(unzipやtarなど)は「pacman -S xxx」てな感じで探せば見つける事ができて
インストールできるようです。
で、本題。Cygwin上でのMinGWクロスコンパイラのソースやパッチ群を使って
ビルドしてみました。そのままだとちょっとマズい所があったり、ちょっと
手を加えたりしましたが、ひとまずビルド&実行できるものができました。
$ cat iam.d import std.stdio; import std.string ; int main() { version( GNU ) writef("I am GNU\n" ) ; version( Unix ) writef("I am Unix\n" ) ; version( linux ) writef("I am linux\n" ) ; version( Windows ) writef("I am Windows\n") ; version( MinGW ) writef("I am MinGW\n" ) ; version( MinGW32 ) writef("I am MinGW32\n") ; version( MinGW64 ) writef("I am MinGW64\n") ; version( cygwin ) writef("I am cygwin\n" ) ; version( Win32 ) writef("I am Win32\n" ) ; version( Win64 ) writef("I am Win64\n" ) ; version( Posix ) writef("I am Posix\n" ) ; version( X86 ) writef("I am X86\n" ) ; version( X86_64 ) writef("I am X86_64\n" ) ; version( ARM_SoftFloat ) writef("I am ARM_SoftFloat\n" ) ; version( ARM ) writef("I am ARM\n" ) ; version( PPC ) writef("I am PPC\n" ) ; version( PPC64 ) writef("I am PPC64\n" ) ; version( PPC_SoftFloat ) writef("I am PPC_SoftFloat\n" ) ; version( PPC_HardFloat ) writef("I am PPC_HardFloat\n" ) ; return(0) ; } $ gdc -O2 iam.d $ ./a.exe I am GNU I am Windows I am MinGW I am Win64 I am X86_64 $ gdc -v Using built-in specs. COLLECT_GCC=C:\msys64\mingw64\local\gdc20661_520_mingw\bin\gdc.exe COLLECT_LTO_WRAPPER=c:/msys64/mingw64/local/gdc20661_520_mingw/bin/../libexec/gcc/x86_64-w64-mingw32/5.2.0/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../gcc-5.2.0/configure --with-pkgversion='gdc-5 dadb5a3784' --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --enable-languages=c,d --prefix=/mingw64/local/gdc20661_520_mingw --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --enable-threads=win32 --disable-win32-registry --enable-target-optspace --disable-nls --disable-bootstrap --disable-shared --disable-multilib --enable-long-long Thread model: win32 gcc version 5.2.0 (gdc-5 dadb5a3784)
AM中に起きたものの、ずっと起きてられず。
何年かに一度かかるしつこいタイプの風邪のようです。
Cygwinの2.3.0-1は来週の月曜日にリリースされそうな雰囲気。
DMD 2.069.0がリリースされているもよう。GDCの方は2.067が
出ずじまいで2.068.xはスキップしている感じになっています。
追従性よりも安定性を優先してそうしているようですが、
適度な距離を保っていないとついて行くのが大変になるかも
知れません。
Emacsで動くデジタル時計のちょっと弄った版(dclock-151107.tar.xz)。
色を付けたり文字毎にフォントを変えたりできるようになっている
つもりです。例えば、
(require 'dclock) (setq dclock-font-scale 9) (setq dclock-font-faces '(:family "DSEG7 Classic" :foundry "outline" :slant italic :weight bold)) (setq dclock-format-time-string "%y年%m月%d日(%a)\n%H:%M %S") (setq dclock-display-properties '(lambda () "" (progn (add-text-properties (point-min) (+ (point-min) 13) '(face (:family "Impact" :height 0.3 :weight normal))) (add-text-properties (- (point-max) 3) (point-max) '(face (:height 0.5))) )))
遅めに帰着。
具合が回復してなくて即死。
遅めに帰着。
Emacsのデジタル時計。テキストプロパティをカスタマイズできるように
してみたり。
遅めに帰着。
乗り越えられていたと思った風邪は乗り越えられていなかった模様。
起きていられず急速停止。
AM中に起床。
風邪はどうにか乗り越えられたような。
訳あって、Emacsで動くちょっと大きめ表示のデジタル時計が欲しいなぁ?
と思い作ってみたり。
時計だらけですが、7セグメントフォント表示されているのが今回作ったものです。
こちらのサイト
「7セグ・14セグフォント 「DSEG」」
のフォントをインストールしておき、buffer-face-set関数でフォントを切り替えて
text-scale-set関数で大きく表示しているだけのものです。
とても見易い感じになりフォントの作者様には感謝です。
そんな訳でELISPを置いておきます
(dclock-151103.tar.xz)。
お役に立つようでしたら幸いです。
気持ち早めに帰着。
具合がどんどん悪くなって死亡。
AM中に起床。
掃除したり。風邪気味で不調。
調べ事をしていたら
「
Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo」という
Wikipediaを知ったり。これ、英語圏の人でも意味をちゃんと取れる
のだろうか?と思ったりも。
日本語だと「きしゃのきしゃはきしゃできしゃした。」とかと同じ
感じだと思いますが、日本語の場合は漢字が使えるので
文字にすれば(貴社の記者は汽車で帰社した)意味を取るのは容易に思えます。
「あれ、チャウチャウちゃう? ちゃうちゃう、チャウチャウちゃうがな」
は方言交じりなので特殊な例かも知れません。