昔の最近の出来事(2015.11)

2015/11/30

遅めに帰着。

あまりの眠さに急速停止。

2015/11/29

AM中に起床。ぐうたらしてたら昼過ぎ。

掃除したり。

そういやWindows10のアップデート通知がだんだんと主張強めになっている 気がしたり。

おおよそ二週間ほどEmacs+美人時計を動かしてみたのですが死なず。 もう大丈夫と言って良いレベル。

先週の散在で買った「インサイドヘッド」を観終わったり。数日かけて本編と コメンタリーとか一通り観ていたのですが、盛りだくさん過ぎて観るのに時間が かかってしまいました。 最後、全ての感情が必要だという点に着地したのは上手いなぁと思いました。

前回買ったPixar作品はウォーリーなので、コメンタリー入りのは久しぶりかも。 今回のコメンタリーでは、映像技術的な点にはほとんど触れられていなくて、 ストーリーの組み上げに随分苦労したという点について多く語られていたように 思います。今回のインサイドヘッドに限らず、未公開シーンでは全然キャラの 設定なんかが違っている場合もあり、よく最終版に着地できたよなぁ? と毎度思います。因みに、原題は「INSIDE OUT」で、日本語では裏返しという 意味です。作品の内容から言うと原題の方がぴったり合ってるように思います。

そういえば、インサイドヘッドが日本で公開される同時期に「脳内ポイズンベリー」 という漫画原作の邦画実写作品も公開されました。脳内の方も頭の中の キャラクターが会議して....という感じの作品のようですが、 「え?こんな設定かぶりってあるのか?」と不思議に思ったりもしました。 実際には、インサイドヘッドは感情毎にキャラクターが分かれているけど、 脳内ポイズンベリーの方はもう少し違った感情でキャラクター分けされていたりと、 脳内にキャラクターが居る以外の共通点はほぼ無いようです。

2015/11/28

昼過ぎ起床。

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

autoを使っているので、g++だと「-std=c++0x」が必要みたい。
顔認識自体はカメラ映像をグレースケール変換してガウスぼかしをかけた画像を cascade.detectMultiScale()で判定しています。facesに顔認識された矩形領域 のリストが返ってくるので、それを元のカメラ映像に描画してGUIで見られる ようにしているという感じになってます。

しばらくTVに向けて様子を見たり。

OpenCV 3.0.0 顔認識テスト

見た感じで思ったこと。


ただ、一見 顔に見えないものを顔だと認識している点がダメとは、 一概に言えないかも知れません。人が見逃すものを見逃していないとも 考えられるからです。実際、画面中に小さく一瞬映っていたお札の 福沢諭吉を認識してました。

因みに、グレースケール変換せずにカラーのまま食わせても認識 するようですが、色情報を認識に使用しているかは判りませんでした。 認識率に変化があるように見えなかったので、 cascade.detectMultiScale()内部でグレースケール変換しているの かも知れません。

PS4の沙羅曼蛇をポチってみたり。3面くらいまではまぁまぁ覚えてたり。 でも、4面以降は全然です(^^; 一度死ぬと吸われるように連続死する のは沙羅曼蛇だなぁという感じ。でも、コインを連投できるので 5面までに 残機 50とかにしておけばとりあえず一周はクリアできました(^^; そういや画面のフラッシュは抑えられているように思ったり。

2015/11/27

遅めに帰着。

ちょろり実験。認識率はあまり高くないような。

2015/11/26

遅めに帰着。

PS4のアーケードアーカイブスに 沙羅曼蛇 が来る事になってたり。 普段ウォッチしていないのもあるのですが、なんかいきなり来る感が 強い気も。

2015/11/25

遅めに帰着。

あまりの眠さに急速停止。

2015/11/24

遅めに帰着。

ちょろっとctagsとEmacsからの使い方を調べたり。 Cygwinパッケージの一覧を表示すると、ctags自体は既にインストール済み のように表示されているのですが、コマンドの実体はどこにも無く。 結局reinstallで対応したり。

ソースファイルの置かれたディレクトリで

$ ctags -Re

てな感じで実行すると同じディレクトリに「TAGS」というファイルが 生成されます。その後、Emacs上で適当なソースファイルを開き、 関数を呼び出しているコードの関数名部分にカーソルを乗せて 「M-.」(find-tagコマンド)を実行すると、キーワードとタグファイル の問い合わせがあった後、関数の実体のあるソースファイルが開く という感じみたいです。
TAGファイルはEmacs上で一つしか選択できないようなので、 異なるプロジェクトのそれぞれでTAGサーチが使いたい場合は TAGファイルを切り替える必要があるようです。ファイルの切り替えは 「M-x visit-tags-table」でディレクトリパスを指定すれば良いみたい。

よくよく調べてみると、ctagsとetagsという二つのコマンドが存在している ようで、ctagsはvi用、etagsはEmacs用のTAGファイルを生成するようです。 どうやら、


という感じのようです。そして、ctags.elというELISPもパッケージと して存在していて、試せてませんが ctagsで生成した小文字のtagsファイルを 解釈できるんじゃなかろうか?と推測します。

ただ、残念な事にD言語には対応していない模様(野良パッチは存在する みたいhttp://pastie.org/971968)。

2015/11/23

起きたら午後もいい時間。寝過ぎ。

掃除したり。

Webを散策していて知ったSayaというCGキャラクター (http://www.telyuka.com/)。 髪の毛がスゲェ。これ、物理シミュレーションで動いたりするのかしら?

夜もいい時間に先日の散在の一つである「インサイドヘッド」の Blu-rayを観たり。

2015/11/22

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

OpenCV 3.0.0 カメラキャプチャテスト

たったこれだけのコードで映像をキャプチャできるのか。すげぇ。

2015/11/21

AM中に起床。

mcalendarをちょこちょこ弄ったり。 そういえば、 国民の祝日の中に「皇室慶弔行事に伴う休日」というのが あるのですが、実際に休みだった記憶がほぼありません(^^; 昭和天皇が死んだ時に休みだった記憶は(学校が休みになったという事で) うっすらあるのですが、それって2月になってからだっけ? とかそんな感じ。

ちょっと弄った版を放流(mcalendar_151121.tar.xz)。 コードの約半分が休日処理に関係しているというのに改めて気づいたりも。

ちょろり文書更新。

2015/11/20

早めに帰着。

コーディング。春分/秋分の日になんとなく対応してみたり。 やっぱりLISPは コンパイル時にデータの型をチェックできない& 実行してみるまでエラーが判らないのが辛いです(^^;

mcalendar

そんな訳で放流してみます(mcalendar_151120.tar.xz)。 操作方法の説明とか全然ありませんがひとまずそんなもんだと いう事で。

2015/11/19

遅めに帰着。

コーディング。春分の日と秋分の日以外は なんとなく 動くようになったような気がしたり。

2015/11/18

遅めに帰着。

あまりの眠さに急速停止。

2015/11/17

遅めに帰着。

ちょろりコーディング。

2015/11/16

遅めに帰着。

第1回全日本X68000芸術祭(1991)オープニングムービー。懐かしい。 TAKERUで販売していたDoGAのCGAマガジンのどれかの号に全データ 収録されていたと思います。当時 68000(XVI)で試して みたら、全部レンダリングするのに30日近くかかる計算になる事が 1日目で判って断念。その後 Xellent30 を載せて、CPU直結の 数値演算コプロを直接たたくrend030を使ったところ、確か 3日かからないくらいで全編レンダリングできたと思います。 オンメモリ再生は無理だったので、無圧縮のHDDストリーム再生可能 な動画フォーマット(なんて名前だったか失念)に変換して 通しで観ました。動画フォーマットの都合で解像度を256x256から 128x120くらいに縮小する必要があったのですが、その後もフル解像度 (256x256)で見ることは叶いませんでした。20年くらい前の話です。

てか、何日もかけてレンダリングするとか、何時間もかけてツールを ビルドするとか、今でもしょっちゅう やってるような気も(^^;;

2015/11/15

AM中に起床。

プロ遊の下に 「GDCのビルド手順(on MSYS2)」を 追加しました。御参考まで。

現在の我が家のメインPCは HP(ヒューレット・パッカード)の奴なのですが、 「HP Support Assistant」なるプログラムの起動用アイコンがタスクバー に表示されています。で、なにやらアップデート通知が来たので アップデートした所、アイコンのサイズがちょっと小さくなったのですが、 その影響でタスクバーが少し細くなってしまい、左下の時計表示が 時刻しか表示されなくなってしまいました。

旧HP_assist_ICON新HP_assist_ICON

タスクバーを二段に広げるとなんだか広がり過ぎな感じになり、 大きなアイコンを使用すると高さは良いけどボタンのラベルが 小さくなりすぎると どれもイマイチ。 HPサポートアシストのアイコンがタスクバーの高さを絶妙に 調節していたのに、今気づきました(^^;

掃除したり、ちょろりお出かけしたり。

あなたの知らない超絶技巧プログラミングの世界」という本。 以前 「 IOCCC(The International Obfuscated C Code Contest(国際難解Cコードコンテスト)」 なるものの存在を知ったのですが、難読コードの中でも更に特殊な Quine(クワイン) と呼ばれる実行すると自分自身を出力するプログラム が多く載っている変ったプログラムの本です。 中でも「マジか!?」と思ったのが 100種類のプログラム言語を経由して元のプログラムに戻る 「100言語版Quineリレー」。 あと、任意の一文字が消えても修復される 「宇宙線耐性Quine」。 後者はCygwinのrubyで動いたのですが、本当にどこを削っても元に戻る ので「なんで???」って感じです。
あとがきに"本書はおそらく世界初の「役に立たないコンピュータ書籍」です。" と書かれていましたが、こんなプログラム、あってもイイと思います。

カレンダーの休日表示。近年の休日だけでも表示できないかと japanese-holidays.elと祝日のWikipediaなどを見ながら考え中。 祝日について調べていて、春分の日と秋分の日は観測に基づいて決められる為、 一意のアルゴリズムで求まるものでは無い(1900年〜2099年までの簡易判定式はある) というのを知ったり。 まぁまぁ長いこと生きているのに初めて知りました(^^;;

2015/11/14

昼前に起床。

EmacsLispでコーディングしてました。 以前、calendarが3ヶ月 表示なのを1ヶ月にできればなぁ?という事を書いたのですが、 暇つぶしを兼ねて1ヶ月分表示のカレンダーを自作してみました。

mcalendarテスト

普段使いの幅に丁度ハマる感じになった気も。 見た目、Emacs付属のcalendarに合わせていますが、本当に表示 しかできません(^^;。japanese-holidays.el相当の休日表示 はできないので、そこがかなりイマイチです。
それにしても、日本の休日は ハッピーマンデーや、振り替え休日、国民の休日で 挟まれた平日は休日になるオセロルールなど、なんだか複雑で ちょっと考えただけでも TANEには「ムリだこれ」って感じなのですが、 大分前からそれができている上に、 時代に合わせた休日の呼び方の変化(例えば4/29は「(昭和)天皇誕生日」→ 「みどりの日」→「昭和の日」のように変遷)にも対応している japanese-holidays.elって改めてすげぇと感じます。

MSYS2でのgdcビルド手順をまとめたり。binutilsとgdcのビルド順番を 一般的な順と逆にしないと「-lgphobos2 -lws2_32 問題」の解決に ならない事に気づいたりして、手順の再確認に時間がかかったり。

2015/11/13

大分遅めに帰着。

ちょろりコーディング。なんとなく動くようになった気も。

2015/11/12

遅めに帰着。

ちょろりコーディング。

2015/11/11

気持ち早めに帰着。

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ビルド手順をまとめてみようかと 思います。

2015/11/10

遅めに帰着。

Cygwin-2.3.0-1をインストール。さて、美人時計とnyan-modeの 問題は解決されるか?そんな訳で長時間実行テスト。

2015/11/09

遅めに帰着。

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)

で、GDIだけを使うような手持ちのウインドウアプリをビルドしてみた のですが、x86_64もi686も Cygwinのクロスコンパイラで発生した 「-lgphobos2 -lws2_32」を付加しないとリンクに失敗する問題が MSYS2でビルドしたgdcでも発生しました。えー? ただ、ライブラリ指定を 付加すればリンクはできて、生成された実行ファイルの実行もできたので、 全く使い物にならないというレベルでは無さそうです。

2015/11/08

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)


全く用事にならないgdcコンパイラが生成されるという感じでは無さそうな予感。

2015/11/07

AM中に起きたものの、ずっと起きてられず。

何年かに一度かかるしつこいタイプの風邪のようです。

Cygwinの2.3.0-1は来週の月曜日にリリースされそうな雰囲気。

DMD 2.069.0がリリースされているもよう。GDCの方は2.067が 出ずじまいで2.068.xはスキップしている感じになっています。 追従性よりも安定性を優先してそうしているようですが、 適度な距離を保っていないとついて行くのが大変になるかも 知れません。

Emacsで動くデジタル時計のちょっと弄った版(dclock-151107.tar.xz)。

DigitalClock on Emacs (151107)

色を付けたり文字毎にフォントを変えたりできるようになっている つもりです。例えば、

(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)))
       )))

てな感じにすれば、

DigitalClock on Emacs (151107b)

という感じに表示されます。 faceの属性についてはこちら のマニュアルを参照(日本語のを見つけられない....(^^;)してみてください。御参考まで。

Emacsのdiredはちょっとしたファイルの操作を行うのに便利なのですが、 ファイルエクスプローラのノリでディレクトリを一つずつ潜るような 操作を行うとdiredバッファが開きすぎてしまいます。 新たなバッファを作らずに潜れる方法は無いかとWebを探してみたら、 こちら のブログエントリがそのものズバリでした。早速設定を真似てみて、 潜る方は全く問題無かったのですが、「..」で親ディレクトリを 選択した際に「Cannot operate on `.' or `..'」というメッセージ が表示されたり。どうやらdired.el内にあるdired-get-filename関数が 「.」と「..」を何故か特別扱いしているようです。 dired自体は「..」を選べば親ディレクトリへのdiredは行える ので、dired-get-filename関数が「.」と「..」を特別扱いしなければ イケるハズという訳で、チェックを外してみたらイケました。 そんな訳でちょっとだけdiredの使い勝手が上がりました。 ただ、何故 dired-get-filename関数が「.」と「..」を特別扱いしているのか は謎。

2015/11/06

遅めに帰着。

具合が回復してなくて即死。

2015/11/05

遅めに帰着。

Emacsのデジタル時計。テキストプロパティをカスタマイズできるように してみたり。

2015/11/04

遅めに帰着。

乗り越えられていたと思った風邪は乗り越えられていなかった模様。 起きていられず急速停止。

2015/11/03

AM中に起床。

風邪はどうにか乗り越えられたような。

訳あって、Emacsで動くちょっと大きめ表示のデジタル時計が欲しいなぁ? と思い作ってみたり。

DigitalClock on Emacs

時計だらけですが、7セグメントフォント表示されているのが今回作ったものです。
こちらのサイト 「7セグ・14セグフォント 「DSEG」」 のフォントをインストールしておき、buffer-face-set関数でフォントを切り替えて text-scale-set関数で大きく表示しているだけのものです。 とても見易い感じになりフォントの作者様には感謝です。 そんな訳でELISPを置いておきます (dclock-151103.tar.xz)。 お役に立つようでしたら幸いです。

2015/11/02

気持ち早めに帰着。

具合がどんどん悪くなって死亡。

2015/11/01

AM中に起床。

掃除したり。風邪気味で不調。

調べ事をしていたら 「 Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo」という Wikipediaを知ったり。これ、英語圏の人でも意味をちゃんと取れる のだろうか?と思ったりも。 日本語だと「きしゃのきしゃはきしゃできしゃした。」とかと同じ 感じだと思いますが、日本語の場合は漢字が使えるので 文字にすれば(貴社の記者は汽車で帰社した)意味を取るのは容易に思えます。 「あれ、チャウチャウちゃう? ちゃうちゃう、チャウチャウちゃうがな」 は方言交じりなので特殊な例かも知れません。


TOP PREV