<<前の5件次の5件>>

2015-4-29[水] vs12 で openFramework をちょっと弄る

※追記:間抜けてました。以下は間違い、単にvs12指定してもvs11がinstallしてある環境だとそれが使われてただけの模様(新しいマシンに移行してvs12インストールしなかったらダメだった)

久しぶりに openFramework (のexample)をコンパイルしてみた。 ver0.8.4って vc12(Visual Studio 2013) に対応してたのですね。sln/vcxproj がvc11のものだから、てっきり以前の問題のあるままかと思ってしまってた。

一年程前にvc12で試した時(ver0.8.1|2前後?)は poco 等のc++系ライブラリの .lib のリンクでVCバージョンチェックに引っかかったり諸々エラー出て断念したのだけど(もちろんvc11はok) ... 0.8.4は vc11(2012)の sln/vcxproj をvc12で読み込んで実行できた。 (追記:vs11ないと駄目でした)

で、一つ一つsln開いてコンパイルするのは面倒なので、
  scripts/vs/setupCommandLine.cmd
をテキストエディタで修正、vs11向処理真似てvs12処理を追加すればいいけど、もっと安易に 110 を 120 に全置換するのでもok(当然vs11用処理がなくなる)。scripts/vsフォルダで

setupCommandLine.cmd 120 build both devenv

のように修正したバッチを実行すれば、ひと通りコンパイル出来る。

Drag&Drop example

oF では char文字列は概ね UTF8 扱いになっている。oFが利用しているライブラリの poco とか glfw とかが UTF8 で扱っいて それらに任せてる状態のようだけど。
ただUTF8未対応のライブラリも利用していて freeImage のファイル関係なんかがそれで、このため examples/utils/dragDropExample で、全角混じりのファイル名を drop したら壊れたファイル名になって画像が読み込めない。

正攻法で直すとするとファイル・アクセスはpoco系にまかせてオンメモリ状態のファイルから画像イメージを取り出す形にすればよいのだろうけど... freeImage には wchar_t*ファイル名のAPIも用意されてるので oF 側を修正するのがお手軽な感じ.

ofImage.cpp の template<typename PixelType> static bool loadImage 関数中の

    if(fif == FIF_UNKNOWN) {
        // or guess via filename
        fif = FreeImage_GetFIFFromFilename(fileName.c_str());
    }
    if((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) {
        bmp = FreeImage_Load(fif, fileName.c_str(), 0);

        if (bmp != NULL){
            bLoaded = true;
        }
    }

#ifdef TARGET_WIN32
    extern std::wstring convertNarrowToWide( const std::string& as );
    if(fif == FIF_UNKNOWN) {
        // or guess via filename
        fif = FreeImage_GetFIFFromFilenameU(convertNarrowToWide(fileName).c_str());
    }
    if((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) {
        bmp = FreeImage_LoadU(fif, convertNarrowToWide(fileName).c_str(), 0);

        if (bmp != NULL){
            bLoaded = true;
        }
    }
#else
    略(前記元ソース)
#endif

な感じに修正.
(UTF8->UTF16 変換に convertNarrowToWide を使ったけれど、ヘッダに定義のなく多分static付け忘れかもしれない代物を流用するのはどうよ、とか、c++なのに 関数内でグローバル関数宣言するのどうよ、とか、あるけど とりあえず)

それと、winでのドラッグ&ドロップについては もう一つ問題があって、ドラッグされたファイルのパスのドライブレターが省かれてしまい同一ドライブ以外からのドラッグだとファイルが読めない状態になっている。

これは ofAppGLFWWindow.cpp の 関数 ofAppGLFWWindow::drop_cb の

    for(int i=0; i<(int)drag.files.size(); i++){
        drag.files[i] = Poco::URI(dropString[i]).getPath();
    }

の部分で Poco::URI(dropString[i]).getPath() が ドライブレターを取っ払ってしまうためで、とりあえず アルファベット1文字+':'で始まってたらローカルPC中のパスだろうとして

    for(int i=0; i<(int)drag.files.size(); i++){
#ifdef TARGET_WIN32
       if (isalpha(dropString[i][0]) && dropString[i][1] == ':') {
           drag.files[i] = dropString[i];
           continue;
       }
#endif
       drag.files[i] = Poco::URI(dropString[i]).getPath();
   }

な感じに修正することで 対処可能。

UTF-8 表示

char*はUTF-8だけれど、残念ながら表示については マルチバイト系全滅かもしれない。
ofDrawBitmapString関数 とか ofTrueTypeFont クラスとかの描画処理は char=1文字扱いの単純な処理での描画になっている。TTF処理では UTF-8 を Latin9な文字コードに変換しててハナっから CJKやる気無しな感じ。

元々 oF を vs12 で使いたかったのは(1年前 vs12購入した理由は)

#pragma execution_character_set("utf-8")

で幸せになれそうな気がしたためだけど、画面表示がこれじゃあ...

よく探してないので 別(addonとか)に あるかもしれないけれど。 お仕事でターゲット向けに作ってた文字列表示処理を思えば作れないものでもないだろうけれど。

正直 今は oF 以外に興味行ってるので、このへんで挫折です。




2015-4-20[月] KEYEVENTF_EXTENDEDKEY

win で fltk のサンプルを動かしてるとキー入力全般で、拙作のキーバインディングソフトDiaKbdMouse経由でのカーソル移動がテンキー数字に化けてしまった。調べてみると fl_win32.cxx で WK_KEYUP/DOWN処理でlParamのbit24=拡張キーをみて、拡張キーじゃなかったら まさにそのようなキーが押されたようにする処理になっている。状況的に DiaKbdMouse側で設定足りてないせいだろうで ググれば まさにな頁発見。
みごとに KEYEVENTF_EXTENDEDKEY を設定していなかった。というか、キー種類みてKEYEVENTF_EXTENDEDKEY設定していたのを無くても動くやんで#if 0で省いてた...ダメだ>俺。てことで不精して全部にKEYEVENTF_EXTENDEDKEY付けた状態で対処。

しかし fltk でこんな処理をしてるってことはIBM拡張キーボードとは非互換かつ多少なりとも普及したテンキー付キーボードがあった?…ではなく、拡張キー扱いでない時の fltk でのキーコードは、単に (virtualでない) bios のキーコードと同じようなので、本来はそういう扱いをするものなんですかね。いままで KEYEVENTF_EXTENDEDKEY 付けてなくても困ってなかったから WK_KEYUP/DOWN処理で律儀にlParamのbit24見てるソフトは滅多にないと思うけれど... fltkなソフトを今まで使ってなかったとも言えるか。




2015-2-7[土] devian7 軽量インストール (続 vaio c1 に linux)

前回以降も、たまに ちびちび弄ってたりする vaio c1。 debian7 を入れてみてたのでベストにはほど遠いけれど作業メモ。
konalinux black で icewm や jwm に変えてみて それでもよいような、けどまだ いろいろ入って(常駐して)て重いような、で、結局 素から要りそうなものだけ入れるのがよさようかな、と。やってみるとpuppyよか軽い... 要りそうなものを入れてないせいかもしれないが、まあ、弄る気になれるレスポンスも大事と。
※ 言わずもがなだけどlinux unix の知識乏しい奴なので遠回りやヘマはありそう

インストール

前回のgrub4dosインストール済のC1環境なので、grub4dos の iso ファイル起動を用いて hdd より netinst (debian-7.7.0-i386-netinst.iso) をしてみた。と、いっても例によってCDドライブは見失うので、isoファイルを展開した usb メモリを別途用意&装着。grub4dosのmenu.lst に 以下を追加。

title netinst debian7
find --set-root /debian-7.7.0-i386-netinst.iso
map /debian-7.7.0-i386-netinst.iso (0xff) || map --mem /debian-7.7.0-i386-netinst.iso
map --hook
chainloader (0xff)
rootnoverify (0xff)

isoファイル起動にしたのは net経由のためPCカードスロットにCDでなく(無線)LANアダプタを繋げるためだったのだけど、インストール時に認識できず(というかその後もうまく認識させられず)、結局 電源ありのUSBハブを繋げてそこに USB-LAN とUSBメモリを装着してインストールした。
言語やキーボード・時間等は日本な選択をしておき、 ソフトウェアの選択 で 標準システムユーティリティー と laptop のを選択。bootローダの書込は無し。
(※ USBハブ無でもインストール時にLANを諦めてスキップすれば ソフトウェアの選択 で 標準システムユーティリティー 1択のみでインストール可能だったのだが手持ちのUSB-LANアダプタ認識できなかったので諦めた。後で(起動用isoはnetinstのまま) USBメモリ側に DVD版のisoを展開しておいてインストール試すとソフトウェア選択増えて入れれるようだったのでusbハブ使わずともinstallできたかもしれない)

grub4dos のmenu.lst に起動エントリを用意

title Debian 7 gui
root (hd0,7)
kernel /boot/vmlinuz-3.2.0-4-486 root/dev/sda8 ro acpi=off quiet vga=786
initrd /boot/initrd.img-3.2.0-4-486

また 通常(runlevel 2)のGUI起動以外に テキスト(CUI)のみの起動もしたいので

title Debian 7 text
root (hd0,7)
kernel /boot/vmlinuz-3.2.0-4-486 3 root/dev/sda8 ro acpi=off quiet vga=786
initrd /boot/initrd.img-3.2.0-4-486

のように runlevel 3 で用意.

コンソール環境にて

まずはコンソール環境で作業。su で root になって、/etc/sudoers に自分(ユーザ名)の設定を追加(viやemacsの使えない己は nano で)

#ユーザー名  (ALL:ALL)       ALL
ユーザー名   (ALL)NOPASSWD:  ALL

当初は上のコメント側の設定だったが、gui側で shutdown/reboot の設定(を楽)する都合パスワード無にした。多少心地悪いが 己の vaio c1 の使用具合や puppy等LiveCD系をインストールした場合を思えば許容範囲だろうとしとく。


メールとかbluetoothとかこの環境には不要なものが ちらほら動いてそうなので apt-get remove で削除.

sudo apt-get remove exim4 exim4-base exim4-config
sudo apt-get remove bluez bluetooth

(その他も何か削除したような気はするけど忘却)


テキストエディタとして nice editor(ne) をインストール。(nanoは一時しのぎ)

sudo apt-get install ne

utf8で多少なりとも win/dos系な操作の代物を使いたく(^Zがundoじゃなくsuspendで泣くけど... fgは覚えた)。


ファイラ fdclone(fd) もインストール。己には必須。すぐさま使いたい場合は

apt-get install fdclone

なんだけど昔から apt-get で入れた場合どうも全角表示が化けてしまうようで(utf8未対応でコンパイルされてる?)、ちゃんと使いたい場合はソースからインストール。
(今のdebianの場合) apt-get したソフトのファイルは主に /usr/ 下に置かれ、ローカルマシンでの野良インストールは/usr/local/ 下に置けばよさそうなので /usr/local/src/FD-3.01b にソース展開、著者サイトか付属の Install テキスト見ながらインストール。apt-get側と極力衝突したくないこともあり local 共通のconfigは /usr/local/etc に置くことにして make CONFDIR=/usr/local/etc でコンパイル。
fd2rc は 色とかsortとか pager/editor とか諸々好みで変更(済のを別マシンからコピー)。
追記: ncurses が入ってなけりゃ入れる必要あり( apt-get install libncurses5-dev )

※ sudo ってディストリ(設定)によって sudo -s したときのユーザが 自分自身のままだったり rootに変わったりするよう。ubuntu系?だと自分自身のままのようで、それに慣れてると root で ~ ディレクトリも変わってるのを忘れて作業してミスしたり、fdclone等 で /home/ユーザー名/.各種個人config が読み込まれず難儀したり... ということでfdcloneは共通側(usr/local/etc/fd2rc)に個人設定を反映してしのいだ。(sudoをどうにかできればよいのだろうけど よくわからず)


X無でも 日本語表示 したいので fbterm とフォント も install。

sudo apt-get install fbterm
sudo apt-get install unifont

実際には unifont だけでなく fonts-takao や fonts-umeplus 等他のフォントも入れているが 指定に使うフォント名調べるの面倒臭がってとりあえず unifont。で、

sudo fbterm -n unifont

と、すれば起動。1度実行すると ~/.fbtermrc が作られているので、その中のフォント関係を

font-names=unifont
font-size=16

に修正(sizeは好みでだけど unifontではこのサイズがスッキリみえるかなと)。
./fbtermrc は rootユーザーで作られてしまってるので、chown ユーザー名:ユーザーグループ名 ./fbtermrc しとく。あとは exit して再度 sudo fbterm すれば...なんだが sudo しないと使えないのも不便なので、

sudo chmod u+s /usr/bin/fbterm

してユーザーでも使えるように変更。この環境は すでにセキュリティ的なことは緩いので、お手軽設定でヨシとしとく。


キーバインド変更ソフトの"窓の憂鬱linux版"(mayu)もインストール。(これでダイアモンドカーソル使えるようにしておかないとnote系キーボードをようさわれん奴なので)
インストールは 以前同様

ただ今回の環境では窓の憂鬱 常駐(実行)状態で (あとでインストールする)Xを 起動すると、jpキーボード設定なのに usキーボード配置に化けるということが起きた。

試してみると scim,uim,ibus だと駄目だったが fcitx だと設定次第でちゃんとjpキーボード配置になったので fcitx を採用することにした。(fcitxのインストールは後述)

設定次第とは /etc/default/keyboard のキーボード設定で、該当部分を

XKBMODEL="jp106"
XKBLAYOUT="jp"
XKBVARIANT="OADG109A"

のようにすることで対応。XKBVARIANT="OADG109A"がミソのようで、こうすることでjpキーボード(OADG109A系)扱いになった。(逆に XKBMODEL は別のでも影響なさげ)

※当然 窓の憂鬱 か X どちらか起動しなけりゃ scim,uim,ibus でも問題無く。ググってみても他の窓の憂鬱使いで同様な問題起きてそうな人は見当たらないので 環境(C1)依存か己の何かの設定ミスかもしれず。

あと、非X環境での日本語入力は諦めた。
uim-fep なら結構楽にインストールできたけれど、fcitx使うので fcitx-fbterm をインストールしてみたのだがマトモに動作せず(画面壊れる)。 uimとfcitxって同居切替できるのか?よくわからず、あまり手間かける気にもなれず mayu 諦めるくらいなら fep諦めることに。

※実は、X起動後に 窓の憂鬱を起動すれば、usキーボード化けは起きないので そうすれば uim (やscim,ibus)を用いることはできるのだけど... X起動直後に自動で適切にmayu有効にする方法わからず断念 (runlevel 2,3でmayu起動タイミングを代え、gui時は .profile で sudo /etc/init.d/mayu start すればそれっぽくできたのだけど、WMのメニューから login し直した後に結局usキーボード化けしたりと 細々面倒で)。

※配布サイト見に行こうとしたら消失してる?模様(去年末はみれてたと思うのだけど)

icewm

GUIも使いたいので、まずは x をインストール。

sudo apt-get install xorg

次に window manager として icewm をインストール。

sudo apt-get install icewm

startx で起動、ログアウトでコンソールに戻ってくる。

jwm も入れてみたけれど 好みで今のところicewm.
jwmのほうが 2MBほど常駐メモリ少なそうだったり puppy のからみもあってカスタマイズの日本語情報は多そうだけれど、とりあえずは。

  • デフォルトinstall状態での見栄えは、icewm のほうがよさげ。(themeの選択肢も最初から多少あるし...結局デフォルトを選ぶのだけど)
  • テキストで設定ファイル弄るなら、xmlよりか普通のcfg系のほうが気が楽
  • IME関係とか wicd とかのタスクトレイに入るツールが、タスクトレイに入ってくれる(けど入ったり入らなかったり動作が不安定な面もあるけれど).
  • ウィンドウ左上アイコンのダブルクリックでウィンドウが閉じる

(jwm も設定いじればできる類かもしれないが未調査)

個人的には4つめの 左上アイコン・ダブルクリックでのcloseがツボだった。これ、win3.1時代(&以前)の窓閉方法なんだが、己は未だに使ってしまうことがあるため地味にありがたかったりする。MS って戦略的に大きな変更をたまにするけれど ものによっては"まだ維持してたの?!"とあきれるような細かい互換を維持し続けてたりするので... その類を他で実現されるとね。

icewm の環境設定として、/usr/share/icewm/ (ものによっては/etc/X11/icewm) より ~/.icewm へ preferences (や menu, toolbar 等)をコピー。
preferences で、描画を軽くするため OpaqueMove=0 OpaqueResize=0、マウスwheel有なら UseMouseWheel=1、network status の常時表示はいらないので TaskBarShowNetStatus=0 (CPU statusもイラないと思いつつ そちらは残す)。シャットダウン&再起動は

ShutdownCommand="sudo poweroff"
RebootCommand="sudo reboot"

予め sudoers でパスワード無しに設定しくことで、これですます(諦めた)。
menuやtoolbar 等の設定は他のソフトを入れたあとにでも好みで.

※ 色とかフォントは、theme 側の設定が使われるので preferences 側のを弄る意味無し。
※ ~/.icewm/ にコピーするとソレが優先して使われるので 弄るつもりのない定義ファイルはコピーしないほうが無難かもしれない。menu や toolbar は /etc/X11/icewm にあるものが実情に近そうで弄るならそちらのをベースにしたほうがよさそう。


基本的なソフトとして、ファイルマネージャとして rox, 軽量テキストエディタとしてleafpad、webブラウザとして iceweal,operaをインストール。

sudo apt-get install rox
sudo apt-get install leafpad
sudo apt-get install iceweasel

できればroxよりpcmanfmを使いたいところだけれどやはり重く。
rox は以前同様にワンクリックでなくダブルクリック動作に変更(roxのオプション設定で、ファイルウィンドウおよびピンボードの2箇所にある "シングルクリックで操作する" のチェックマークを外す)。デスクトップのアイコンをあまり使う奴じゃないのでその手の設定はせず。

エディタは素早い起動で高機能のものがあればだけど未調査。

webブラウザは firefox 常用なので iceweasel を一応入れたが激重。
opera をダウンロードしてインストール(dpkg -i opera_12.16.1860_i386.deb)してみると、iceweasel よりも 明らかに起動時間が短くて動作感もマシだったので、結局こちらを常用に。(iceweaselより軽いといってもツラい重さではあるので、少々 頁の見目が崩れても さらに軽い dillo か midori あたりを入れたほうがよさそう…に思うもやっぱ使わないか)


日本語入力としては 窓の憂鬱(mayu)との相性のこともあり fcitx で mozc を設定。

sudo apt-get install fcitx-mozc

anthy と mozc では変換効率とリソース負荷を天秤にかけて mozc を選択。
※ icewmとの相性?なのか fcitx,uim,ibus どれどもトレイ常駐関係がたまにおかしくなることがある(loginし直した時に多いかも?)。このへんは現状あきらめ。(scimはトレイに入らないのでかえって安定感あるような)

※ あと己はmayuでcapslock/EISU キーでダイアモンドカーソル出来るようにしているため、mozcの設定で EISU キーへの機能割り当ては全部削除したり、ことえりぽく muhenkanとhennkanでime off/onさせるように書き換えたりしてる。がこの辺は省略。(忘れそうなので Fcitx Config → Global Config → Hotkey → Activate input method に HENKANMODE, inactivate input Method に MUHENKAN を設定だけメモ)

slim

通常は起動時からguiを使うことにしたいので、 ログイン(desktop) manager として slim をインストール。

sudo apt-get install slim

/etc/slim.conf を弄り好みで設定を変更。

default_user    ユーザー名

ユーザー1人しかいないのだしデフォルトユーザー名を設定しておく。

sessions    default,icewm

sessions には実際にインストールしている wm だけに変更(選択肢文字列なだけで、選択しない限り関係ないけど、選択できてしまうのが面倒、と)

wm 切り替えることが早々無く自宅でしか使わないなら いっそ

auto_login yes

にして ユーザー名&password 入力無く起動出来るようにしとくのも手。

あと、ログイン画面の背景画を変えたい場合は

current_theme   my-theme

な感じで debian-joy の代わりに新規theme名をつける(debian-joy直接書きけるのでもよいだろうけど一応別にしておく)。
/usr/share/slim/themes/ ディレクトリ下で、debian-joy フォルダを my-theme フォルダにコピー。その中のbackground.pngを削除しておき、背景にしたい画像を background.png あるいは background.jpg で用意して掘り込む。
※ themeは既存でいくつかあるので 好みを選んで書き換えれば。


と runlevel 3 の場合は gui でなく cui(text)で起動したいので、slimを実行しないよう /etc/rc?.d への登録を変更する。
まず /etc/init.d/slim をエディタで開け

# Default-Start:   2 4 5
# Default-Stop:    0 1 3 6

のように該当行を書換(3をStartからStopへ移し)てセーブ。その後

sudo insserv -r slim
sudo insserv -v slim

を実行。


CUI専用環境での 日本語入力

GUI(X)を使わないCUI環境だけのdebian7インストールを(別途)行う場合は、fcitx に拘る必要ないので、uim-fep で 日本語入力を行えるようにできるだろう。

sudo apt-get install uim uim-anthy uim-fep

(ここでmozcでなくanthyなのは uim-fep試した時使ってたのがこれだった為)

CTRL-SPACE で fep o/off して変換おこなえるが、全角半角や変換・無変換等のキーは使えず別キーを使う必要がある。

コンソール環境では歴史的に新しめのキーやローカル(日本語)キーなんぞは仕様・ソフト的(ncursesやそれが参照するterminfo,termcap)に未対応のようなので仕方ないけれど...

逆に F13~F36(F63?) とか、実キーとしてはめったに無さそうなキーコードは存在してたりする。

ので、窓の憂鬱で、普通は使って無さそうなファンクションキーコードを流用して、例えば、全角半角キーなら F16、無変換なら F17、変換ならF18、かな ならF19、のようにキーコードを置換するようにし、日本語変換(エンジン)側のキー設定もそれに合わせて F16-F19を設定しておけば、コンソール環境でも日本語変換キーで変換が行えるようになるはず。(F16-F19で不都合ありそうなら番号ずらす)

.mayu の設定例として(漢字キー以外の変換無しの場合)

include "linux109.mayu"
keymap Global 
key Kanji = F16
key Muhenkan = F17
key Henkan = F18
key Hiragana = F19

(もし既存の .mayu に追加するなら Kanji,Muhenkan,Henkan,Hiraganaの4行を keymap Global の範疇に追記)

~/.uim で該当部分に

(define-key generic-on-key? '("F16" "ZENKAKUHANKAKU" "<Control> "))
(define-key generic-off-key? '("F16" "ZENKAKUHANKAKU" "<Control> "))

のように F16 を追記。

あと ~/uim.d/customs/ 下の *.scm 中の、"zenkaku-hankaku", "Muhenkan", "Henkan_Modo", "hiragana" のある定義に、日本語キーに対応する "F16","F17","F18","F19" を追記していけば大体意図通りになる

……ハズ、と思う。
(実際にはGUIあり環境下でいろいろ試してた時に ちょろっと設定して動かしたことがあるだけで、どの程度使い物になるかわかるほどには使っておらず。anthyでなくmozcの場合のキー設定はどうするのとか...)




2015-1-1[木]新年

あけましておめでとうございます。

去年中にやりきれなかったことを今年(中)はやり遂げたい...とぜんぜんひきづっててあらたまってないな。

お仕事は一昨年秋くらいからのスマフォ・ガチャアプリ系の下っ端仕事がまだ続いていて1つの作品に連続でここまで長く携わるのは初めてかも(さすがにもうそろそろ切れるだろうけど)。最初のリリースまでは激務で以後は緩急あるけど穏やかな進行で、ターゲット(技術)は今までの延長だけど仕事運び的には業種の違いを実感。

やっぱ納期に対する要求具合の違いは全体的にいろいろな局面で判断基準が違ってくるものですね(会社ごとのカラーもあるでしょうが)。
ROM(DISC orカートリッジ)のため1,2ヶ月前にfixしきらなければならないコンシューマ機とリリース後も継続してバグフィックスやゲームシステム(ゲーム性)を定期的に変更していくソシャアプリとでは... こんなにプログラミングの一般論が通用して(振りかざして)いるんだもんなぁ。なんてか…(愚痴になるのでやめとこ今日は)

と、ま、ぼちぼち生きてます。




2014-12-28[日] VAIO C1 でlinux 補足

(遅延書き込み)

前回(雑記/2014-12-21)以降、grub2誤インストール→install-mbrしたりごちゃごちゃ→w2kの回復セットアップでごちゃごちゃ→drive c 破壊、と間抜けしてしまい。

C1のリカバリDISC は CだけでなくDドライブも(連続したパーティションで)必要なようでリカバリ諦め。Dドライブの w2k が生きてれば実質は問題ないので CドライブはFAT32でフォーマット、 w2k のDISC より、

NTLDR NTDETECT.COM BOOTFONT.BIN

をC:\にコピーして、c:\boot.ini を

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Win2K" /fastdetect

のようにして作成.

あと Puppy linux で grub4dos を/sdaにインストールして(menu.lstをそれっぽくして)無事起動。

それと、 debian7 を最小構成でインストールして icewm や jwm を試してみたら軽さ的には結構よさげなのかも。もちろんその他の必要そうなもの次々いろいろインストールしてサービス等常駐物増えてくとメモリ消費や重さはますけど...
ディストリと違って細々したところが整えられてないのでそこそこな環境にするまでそれなりに時間食いそう(そこまでやれてない)。




2014-12-21[日] VAIO C1 に linux

前回(小メモリ起動)のDSLの影響で、VAIO C1 VR/BP (2001年くらいのモバイルPC) を引っ張り出してきて linux を入れてみた。(懲りてない)

win98me,win2k 動く実機として残してるのでそれを削除する気はなく、余っているHDD領域を(w2k上で)複数のパーティション切り直して領域確保。win2kインストール時に適当に拡張パーティションに入れてしまっていたため、新規空領域も拡張パーティションのみ。基本パーティションのようなmbrによる起動はできない… が、たしか grub4dos を使えば何か出来るはず(うろ覚え)、とそれを当てに。

HWスペックは Crusoe 600MHz(ざっくり Pen2/Celeronの半分(300MHz)くらいの実力)、メモリは標準から+128MB増設して256MB(有効240MB)、HDDは120GBに換装済。画面は横長 1024x480、ちと特殊。640x480では動くだろうけど1024x480はディストリ(ドライバ)次第。

PCカードスロット、USB1.0ポート、メモリースティックが1つづつあるが、外付けでブート可能なのは sony純正の PCカード接続のCDROM くらいなのだが(ひょっとすると純正FDDも可能かもだが未確認)、os/ディストリ側がこれのドライバー対応してないと正常にos起動できない(起動は始めるが起動したプログラム自身がCDを見つけられない)。ググると大昔の日本製ディストリのいくつかは対応してたらしいが...(今回試した中で正常にOS起動できたのはCorePlusだけ)

今回インストールしてみたのは、 puppy 5.71jp, konalinux 2.3 black(2014-10-12), DSL4.4JP, Tiny CorePlus 5.1ja

当初は前回のこともあり DSLをメインに考えてたのだけど...
結果として 一番使い物になるのは(少しもっさりだけど) Puppy だった。
kona black はこのマシンじゃ超重量級。
DSL, CorePlusはインストールでき動作は軽くはあるけれどpcカードの認識がいまいちだったり画面解像度640x480のままではつらく。(ドライバー見つけてきて入れれたら出来るのだろうけど)

以下、諸々の作業メモ.

grub4dos のインストール

HDDインストールした linux を選択して起動するために grub4dos を使うので、ググって 見よう見まね(特にこちらのサイト とか)。

うちのc1の環境は C:にwin98me(fat32), D:にwin2k(ntfs)ですでに boot.ini での選択になってる。

grub4dos より をダウンロードし解凍。
解凍されたフォルダ直下にある grldr を C:\ にコピーする。

テキストエディタで c:\boot.ini の最後に

c:\grldr=grub4dos

を追加。(vista以降は別方法で面倒だけど,まC1にvista以降いれないだろうし)

c:\menu.lst を作成。(grub4dosは他に検索するパスもあるけど、不精してくルートに配置)
動くかどうかの確認用としては同梱されてた menu.lst を使うのでもよいけれど、余計な記述も多いので、ざっくり

default /default

title restart win
rootnoverify (hd0,0)
chainloader +1

title command line
commandline

title reboot
reboot

title shutdown
halt

のように menu.lst を作成.
※改行コードがunix系(lf)でないといけないので、それ対応のエディタで編集。

再起動して、OS選択メニューで grub4dos の項目があり、選択して menu.lst 内容が出てきたらok.

あとはosインストールしたら項目を menu.lst に追記していく.
(各項目はtitleだけでなく空行も区切りとして使われてるようなので記述するときは不精しすぎないようにと)

※ restart winの(hd0,0) はもちろんハード構成/パーティション構成による。(最近のwinは先頭にシステム予約済みのパーティション作られること多いし、note pc によっては先頭に回復パーティション置いてるのもあったり)

CD + 補助ドライブ(USBメモリ)による CDブート

CD起動は先にも書いた通り特殊なドライブのため、CorePlus以外は失敗してるが、こちらのインストール方法を用いれば、モノによっては起動できるかもしれない。

.isoファイルをCDに焼き、その.isoの中のファイルをUSBメモリにすべてコピーしておき、CD&USBメモリをマシンに装着。

CD起動したプログラムが、CDというか必要なファイルを探す動作として接続されているドライブを順繰りに舐め、USB メモリも認識されれば、そこから必要なファイルが読み込まれるだろう、という塩梅。

仕組み的にUSBメモリでなくてもよいだろうが(こちらはHDDでやられてる模様)、path構成変えずにとなるとUSBメモリがお手軽かと(USBメモリ認識しないようならHDDで)。

参考にしたサイトは Puppy で行っていたが、己のC1でも konalinux, DSL の起動ができたので、割と通用する手なのかもしれない。

grub4dos によるCDイメージのブート

当初はインストールしたosの起動用としか考えていなかったが、grub4dos はCDの中身をhdd(fat/ntfs)にコピーして置いたものも起動できるようだ。(つまりCDなくてもlinuxインストール可能。よくよく思えば bootセクタのないパーティションからos起動するのと同じようなことか)。また iso ファイル起動も条件しだいでは可能とのこと。

残念ながら isoファイル起動は条件にあわないようで駄目だったが、CDからコピーしたファイルでの起動は割と成功した。

ただ、ディストリごとに kernel,initrd ファイル&適切にパラメーラを設定しないと駄目なので結構面倒ではある。(個々の設定は後述)

PLoP Boot Manager によるUSBブート

前記の方法で一応USBブート可能だろうが、もっとお手軽にブータブルUSBメモリを簡単に起動出来ないものかと探せば、こちら で紹介のPLoP Boot Manager というもので出来る模様。
実際 DSL で試すと確かに起動(初回一発. 試したのはplpbt-5.0.14)。ただ相性個体差があるのか、何度も試してると結構 ブート途中でハングることも多く…というか起動しきることが稀で不安定。起動できてしまえば大丈夫だが……(出来ないよりはマシと思うが出来ない限り徒労感も)

PLoP は grub4dos から起動するようにした。まず ダウンロードしてきて展開、直下にある plpbt.bin を c:\ にコピー。 c:\menu.lst に

title PLoP Boot Manager 
find --set-root /plpbt.bin
kernel /plpbt.bin

を追加。

起動可能 USB は win機で何かしかのソフト(UNetbootin とか Rufus とか)で書き込んで用意。

Puppy Linux 5.71 jp のインストール

PuppyLinux5.71jp の CD(iso) の中身を、c:\puppy571 にコピー。

c:\menu.lst に

title [LiveCD image] Precise Puppy 5.71 jp
find --root-set /puppy571/vmlinuz
kernel /puppy571/vmlinuz pmedia=cd pfix=fsck acpi=off
initrd /puppy571/initrd.gz

を追記しておいて、grub4dos より起動、sda9 に full インストール。ext2。もちろんこのときbootローダは組み込まない。(すでにgrub4dos使ってるので)
あとパーティション設定で500MBほどの swap パーティションは用意してる。(他のlinuxでも使われるものだし)

インストールしたものを起動するために c:\menu.lst (/mnt/sda1/menu.lst) に

title Puppy Linux 5.7.1 jp
root (hd0,8)
kernel /boot/vmlinuz root=/dev/sda9 pmedia=atohd acpi=off

を追加。

今回の中では一番インストールでトラブルがなかった。(他をやった後なので手順に慣れてきてたのもあるだろうけど)
試していないが、CD+USBメモリの方法でも出来るだろうし、PLoPも調子よけりゃ行けそうな気はする。

実際に使う上でも今回の中では一番使い出はあると思う。
何もしなくても 1024x480 使えてるし USB-LANアダプタ(LUA-U2-GT)や無線LANのPCカード2枚(WLI-CB-G54S, DWL-G630)自動認識してくれたし。

Puppy で気に入らないのは(たぶん大抵のWinユーザーが思いそう)ファイラ(ROX)のシングルクリック動作だけど、これはちょっと設定変えればよい。

デスクトップのアイコンの"ファイル"を右クリック、"ROX-File"→"オプション設定"を選んでダイアログ表示、ファイルウィンドウおよびピンボードの2箇所にある "シングルクリックで操作する" のチェックマークを外す。

他にも画面が狭いので、フォント小さくしたり、guiのテーマ控えめのにしたり小さくできそうなところ小さくしたり。

それでも、(start)メニュー微妙に長くて少し画面はみ出しちょっと面倒。(.jwmrc から ヘルプ消して対処... 他のソフトインストールしたら復活、別途雛形管理されてるんか...)

その他、puppy には限らず他でもそうだけど、不意に電源きれたりあるいは正常でも電源が切れるタイミングか何かの影響で、タマに起動時のファイルチェックで怒られる。ext2にしたことをちょっと後悔(でもスペック的にext3躊躇)。
(蓋閉め電源管理をちゃんと設定してない(できる?できない?)のも悪いのだけど...[追記]acpi=offで蓋閉電源offしないようなので追加)

konalinux 2.3 black のインストール

画面 1024x480 や PCカード無線LAN,USB-LANの認識は大丈夫だったが、試すなら激重承知で……

CDの中身をhddにコピーしての起動は (C:\kona23bk\ に入れたとして)

title [LiveCD image] konalinux 2.3 black
find --set-root /kona23bk/live/vmlinuz
kernel /kona23bk/live/vmlinuz boot=live quiet config acpi=off locales=ja_JP.UTF-8 timezone=Asia/Tokyo live-media-path=/kona23bk/live
initrd /kona23bk/live/initrd.img

ただし、この方法で起動した場合、HDDインストールが行えない。
どうも起動ドライブを対象外にするのにパーティション単位でなくドライブ全体を弾くようでインストール対象のドライブが全く現れず中断するしかない状態。
ので HDD にインストールする場合は他の方法を選択。己はCD+USBメモリを実行。(PLoPは未確認)

HDDにインストールしたものを起動するには(sda7 に入れたとして)

title konalinux 2.3 black
root (hd0,6)
kernel /boot/vmlinuz-3.2.0-4-486 ro root=/dev/sda7 quiet locales=ja_JP.UTF-8 timezone=Asia/Tokyo acpi=off
initrd /boot/initrd.img-3.2.0-4-486

をc:\menu.lst に追記。

startメニュー開けるだけでも激遅。メニューでのアイコンの使用を全部やめるとマシになるが、その他 UI軽くするような設定に変えても焼け石に水といったところ。

DSL4.4jp のインストール

HDDに CD の中身をコピーしての場合(C:\DSL44JP に入れたとして)

title [LiveCD image] DSL 4.4 jp
find --set-root /DSL44JP/boot/isolinux/linux24
kernel /DSL44JP/boot/isolinux/linux24 vga=786 boot=live quiet dma=on noscsi lang=ja acpi=off knoppix_dir=/DSL44JP/KNOPPIX knoppix_name=KNOPPIX
initrd /DSL44JP/boot/isolinux/minirt24.gz

(HDD のインストールをするときは Bootローダ書込をしないでおく)

HDD インストールしたものを起動する場合は (hda8 に入れたとして)

title DSL4.4jp
root (hd0,7)
kernel /boot/linux24 root=/dev/hda8 quiet vga=786 dma=on noscsi lang=ja acpi=off

/dev/sdaN でなく /dev/hdaN であることに注意。
(※これ気付かずにエラく時間くった。kernel2.4の時分はhd(ide),sd(scsi)厳密に区別してたんだよなあ、と)

usb-lanはokだったけど 画面は640x480、pcカード無線LANは使えず. ドライバーとか探せばなんとかなるかですが、そこまでは手を付けず。

Tiny CorePlus 5.1ja のインストール

CD内容hddコピーしての起動はまだ成功せず、でHDDへのインストールは CD起動して行った(PLoPでusb起動できれるかもだが未確認)。
hddインストールでは CD(c)からFrugal(f)でパーティション(2)にext2でいろいろ有り有りでインストール。

HDDにインストールしたCorePlusの起動には (hda11にインストールしたとして)

title TinyCorePlus 5.1 ja
root (hd0,10)
kernel /tce/boot/vmlinuz quiet xvesa=640x480x24 dma=on tz=JST-9 notuc acpi=off lang=ja_JP.UTF-8 kmap=qwerty/jp106
initrd /tce/boot/core.gz

を c:\menu.lst に追加。

実際には CDからhddインストールするときに boot マネージャ有にしておき生成された /tce/boot/extlinux/extlinux.conf に設定されてるパラメータをみて 必要そうなのをコピペしてる(たとえば waitusb=5:UUID="…" とか)
※ インストーラでsda11に対してboot書込したときは sda1 のbootフラグがoffにされてしまうので、インストール終了後 fdisk で sda1 のbootフラグをonに戻しておく.(a でpartition 1 を選んで w での書き込み忘れず)

画面は640x480、手持ちの 無線LAN PCカードはデフォルト状態ではHW認識が微妙でマトモに使えなかった。usb-lan は最初から差しとけば使える。このへんは調べりゃなんとかなるかもしれないが... 気力ないのでブートできただけでヨシとしてる。

雑感

Puppy みなおした、てか、正直 kona black の重量級ぷりにびっくりだった。考えてみればスペック的には当然で、むしろ Puppy がようがんばっとんなぁ、なんだけど。wm等環境の差が大きいのかねえ。(jwm だってそれなりに凝ってるとこあるからも少し軽いのだってありえそうだけど)

P3-600MHz あれば kona 選択するだろうけど、Crusoe 600MHz な VAIO C1 では Puppy が一番手間いらずで使いやすいかな、と。(win2kがベターとかいうのは野暮)

DSL や TinyCore はドライバーとかの都合がつけばよいかも。
メモリ256MB積んでるから Puppy 選べたが、C1 VR標準の128MBだったらこっち頑張ってたかもしれない (ただ DSL はもう更新止まってるし 古くて apt-get 機能しないので魅力半減)...いや不毛なんで やっぱり早々に諦めてるかな




2014-12-14[日] 24MBマシンで起動できそうなディストリ?

(遅延書込12/20)

以前弄った後しまいこんで忘れてたDynabookGT475を発掘。 486DX(75MHz), 24MB(8+16MB), HDD540MB, 640x480(16bit色? 8bit色かも), win98は動いたことあるけどwin95でさえシンドいスペックなので弄るのは不毛だが、24MBで動くGUIなディストリあるかな、と無理ゲー承知、余計な気を起こして弄っていて……外装プラスチック折れる剥がれるHDD昇天、と経年劣化物は丁寧に扱えとの教訓。(躊躇なく捨てれる)

と、ま、当初の目標は失われたけど、インストール準備のためにvirtualboxで試した時のメモ.

VirtualBox は mem 24MB vram 1MB(640x480x16想定) HDD500MB 古チップ諸々低スペックに設定 (CPUが速い(i7)のは諦める)。
当然今どきのディストリは駄目だろうしオンメモリ系LiveCDも試すまでもなく(と思いつつ kona, puppy tinycore試す. もちろん駄目)

十数年前か下手すりゃ前世紀のディストリかなと思いつつ、

は起動。(他にもあるだろうけど2つ見つかったしマシン壊れたので打ち止め)

DSLは kernel 2.4系を採用したknoppix(debian)派生で最低 486DX 16MBで動くらしい。GUIは jwm (と fluxbox)採用。4.4jpは2008年製(本家最新はdsl-4.11.rc2(2012年) )。

NetBSD 6.1.5 は2014年(最新)のモノので 試しみた(ておくれ)版ではjwm。 配布されてるISO をみてると懐かしいHW(≒厳しいスペック)用が多々あったので試す気になった。

ということで思ってたよりも新しいディストリで見つかった(内部的に相応という考え方もありそうな…)
起動できたといっても辛うじて、だけど。

DSL は軽めのアプリ1つ動かすのがせいぜいか(OS起動直後のTorsmo の表示で RAM Usage 11.5M/20.9M)。 エディタ(leafPad)で日本語入力できたりはする。 Dillo でWeb 1(,2)頁 みれる、が次の頁開けると固まる。 firefox は立ち上がらない(64MB環境にしたら立ち上がる)。 LiveCDからHDDインストールするとコピー途中でハングしたりする(32MB環境にすれば可。あるいは boot時のinstall であれば 24MB環境でも可)。

NetBSD のほうはそれよりも重め。xtermでのただのキー入力でさえ重い(32MBならそんなことなく... IMEをMozcより軽量のにすればマシになる?)

と 24MB で動いたといってもi7デスクトップ機なので.
当初のnoteよりは数倍スペックのいい P2-400MHz mem256MB hdd10GB でDSL試すと、やっぱ、もっさり。特にHDDアクセスの遅さは効くなあ。(逆算すると当初のは…)

こういうのみると、Puppy や TinyCore 等がオンメモリ主体の設計で快適さを得ようとするのは理にかなってるよなあ、と納得。(今回の趣旨には合わないけれど)

DSL4.4jp インストールメモ.

わすれっぽい自分のため...

VRAM 1MB(640x480 16bit色想定)にしていたため、デフォルト(vga=normal 800x600)では 正常起動できず、bootパラメータとして dsl vga=785 (640x480 16bit)を与える必要あり。

起動時の boot: で "install" を入力すればインストールを行えるが、なまじ日本語化されてるため 英字なCUI環境では文字化けして読めない…… liveCDでの質問項目をメモ。

  • インストールに先だって、linuxパーティションは少なくとも320MBのサイズを作成しておかなければなりません.
    Linuxパーテイションを作成しますか(作業の最後には必ず[write]メニューを実行すること)(y/n)? y
    ※予め設定していないなら ここでyで設定. 設定済みなら n でよく.
  • インストール先パーティションを入力してください.(EXAMPLE: hda2): hda1
    ※ パーティションの切り方しだい
  • マルチユーザーによるログインをインストールしますか(y/...)? n
    ※ yesにすると起動時にuser&password入力. no にすると 起動時入力無しでデフォルトユーザ(dsl)で自動ログイン
  • ext3ジャーナルファイルシステムを使用しますか(低速マシンでは推奨しません)(y/n)? n
    ※ yes だと ext3, no だと ext2 になる.
  • /dev/hda1 上のデータを破壊しますが、やめるなら最後のチャンスです!! 続けますか (y/..)? y
  • ブートローダーをインストールしますか? (y/...): y
  • [G]rub あるいは[L]iloのどちらのブートローダーを使用しますか? (g/l)(grub推奨): g
  • 直ちにリブートしますか? (y/...): y

リブートして初回はrootとデフォルトユーザdslのパスワード設定、 大小英数混ぜて5~8文字を入れる。

その後、途中でエラー。vga の件だろうで、
 $ sudo nano /boot/grub/menu.lst
で編集、title DSL の次行中の vga=normal を vga=785 に変更してセーブ終了、再起動してHDDブートok。

今時のlinux環境に比べると機器の自動判定は(少)なく vgaやマウスは適切に設定する必要あり。実機だとマウスは ps/2 なりシリアルなり(usbなり)繋げてるのを正確に。VirtualBox だと usb有設定にしてusbマウス使っていても、エミュ内では usbマウスoff, ps/2マウスonじゃないと駄目かも。




2014-11-2[日] カラーキャリブレータ(ColorMunki Photo) を使ってみた

前々回 、色調整についてググっていて気になったのが色キャリブレーション機器。安いのなら1万円台からあって興味そそられてしまう。少し前にデザイナさんと色味のやりとりで手間取ったことがあったりしたので(ディスプレイのRGB輝度を適当に下げすぎてたのがまずかった)...
職業柄多少まともに色みえてたほうがよいだろうで、少し高いけど(仕事用だし) X-Rite ColorMunki Photo(カラーモンキー・フォト) を購入。

まずは付属ソフトで

ググると ColorMunki Photo は機器性能はいいけれど付属ソフトがゴミ、と評されていてフリーソフトの argyll(CMS) & dispcalGUI を使うのが定番の模様。
なんだけど、そもそも何をどうしたらいいかわからない色キャリブレーション初心者としては、まずは付属ソフトをwin機にインストールしての使用と導入解説ムービー視聴。

付属ソフトのキャリブレーション操作は、1作業1画面で図入りで何するか示してくれるので(ページごとに機器操作のムービー・ヘルプもある)、なんなくディスプレイのキャリブレーションは簡単に行えた。(プリンターはまだ試してない)

解説ムービーは、簡単に原理や必要性を解説していて、見ておいて よかったと思う。(ただプリンターのキャリブレーションの説明みてると面倒くさそうに思えて後回しに...)

流れとしてはカラーキャリブレータをつないでソフトの指示にしたがって

  • 調整目標の色温度とか輝度を選択
  • カラーキャリブレータ自身のキャリブレーションを行う
  • (照明を反映する場合は、ディスプレイの横において環境光を計測)
  • カラーキャリブレータをディスプレイの上からぶら下げ画面の所定の箇所に設置
  • 基準となる白(輝度)を計測しながら、ディスプレイ側のRGB(色温度)や輝度・ハイライトを操作して基準値になるべく一致させる. (ノート等ディスプレイ側の調整が出来ない場合はスキップ)
  • あとは色々な色をキャリブレータが計測
  • 色プロファイル生成

といったところ。
大雑把な流れはdispcalGUIでも同じようになる(機器キャリ&ディスプレイキャリが2回に増えるけど)。
"カラーキャリブレータ自体のキャリブレーション"がちょっとした肝か。 付属ソフトではわかりやすく指示されるけど、 dispcal(GUI)でそのこと気づかずにドはまりしたのは(ググると)己だけではなさそうで... (ちゃんと英語読めって話でした)
(他にもキャリブレータをディスプレイに設置するときに裏蓋開け忘れを注意されるのもよかった。まさに開け忘れてた奴なので... 開けた穴の先にセンサーぽいものをみて遅まきながらダイヤル回して4つ切り替えてる意味を意識した)

で初心者向けな操作はまあまあよいのだけど... 評判が悪いのは生成される色プロファイルの出来のほうなので、目的からすればとっとと dispcalGUI を使うが吉、と。

argyll CMS & dispcalGUI

argyll CMS は コマンドラインツール群からなる カラーマネージメントシステム(CMS) 。(現在ver.1.6.3)
dispcalGUI は argllCMS 中のキャリブレーションツールの dispcal を(メインに)GUI化したもの。(現在ver.2.5)

argyll と dispcalGUI は別プロジェクトのようなので配布は別々、だけど dispcalGUI の Zero Install 版でインストールすれば両方設定されるようでお手軽。 dispcalGUI は他に standalone 版があり、こちらは単体インストール版でargyllを別途インストールする必要がある.(linuxしか試してないけど多分)

※ Zero Install は、カタログ・タブを開くと複数の(Unix系な)オープンソースソフトの一覧がありそれらをインストール・削除・更新を管理できるツールのよう。OS標準のアプリ・インストールは行わず(c:\Program Files\とか /Apprication/とかに入れず)管理してる模様。

Zero Install 版で win8.1(x86), os x(10.9), linux(Mint17. ubuntu14.04用をインストール) とも動作した。
winはドライバーのインストールを別途行わなくてはならないのでちょっと面倒。 (付属ソフト入れたwin機はそのままで、他の32bit win機で試しただけなのでx64環境とかドライバの入れ替え等は未挑戦。macも付属ソフト入れては試してないので、入れてた場合はドライバーの切り替えとか何か手間はあるはず。※追記:Win x64ではwin起動オプション画面で"ドライバー著名を無効"にする必要がある模様. こことか参照)
win機でのインストールとかドライバーあたりの話とかはここの方とかググれば何人か書かれておられるかたがいるので、それらを参考にすれば、と。

なお Linux Mint 17(Ubuntu 14.04) では、

sudo apt-get install argyll
sudo apt-get install dispcalGUI

でインストール可能だったが、バージョンが古く(argyll 1.5.1, dispcalGUI 1.7.1)、バグなのかColorMunki Photo未対応なのか途中でエラー終了し使えなかった。(将来に期待)

※正常に動作してるようにみえ、計測値の差が大きくてエラーといった感じで中断されるので、差が小さくなるようディスプレイ設定変えて何度も試したけど駄目...よくよく見るとエラーメッセージあってなさそで... apt-get remove してプロジェクトのサイトの最新版を入れたらすんなり動作、だった。
※ gnome-color-manager でのキャリブレーションもそのargyllを使うため同様のエラーで駄目だった。
※ 当初、ハードの外れを引いたのかと思った(今でもその可能性あるかもだけど そう思いたくはない)


dispcalGUI の使いかたは、 JJs氏が書かれている Argyll CMS & dispcalGUI導入編使いこなしガイド with ColorMunki Photo 実践編 メイン設定画面編 (やキャリブレーション関係) あたりが大いに参考になる。あと インクジェット放浪記カラーマネージメントCOLORMUNKIで遊ぼう。モニター編1 ,2 とか (プリンタ編1 ,2, スキャナ編 興味深く)。 また こちら の dispcal (非GUI)で ColorMunki Photo を使う例は、dispcalの動作の流れを知るにはよいかも(バージョン違いで若干現状と違うようだけど)。 その他ググって見つかったサイト諸々を参考、先人に感謝。

上記のサイトを見ながらいろいろ試行錯誤、正直適切な設定ができてるかわからないけれど、しないよりはよくなったと思う。とくにデュアルモニタなんかはわかりやすい。 でもって、前々回の古ノートPCは劇的にマシになった(経年劣化激しい液晶なのであくまで"マシ"なんだけど)


己のヘマを吐いておくと最初に書いたように機器自身のキャリブレーションをちゃんと認識してなかった。 "Set the ColorMunki sensor to calibration position and press OK to calibrate the instrument."("ColorMunkiのセンサーをキャリブレーション位置に設定して、計器をキャリブレートするために[OK]を押してください") と書かれた機器のキャリブレート準備待ちのメッセージをよく読まずに画面計測準備待ちだと思ってMunki Photoのダイヤルを下向き(画面計測用)にして[OK]しても先進まねーと(愚)
ここでは ColorMunki Photo のダイヤルを 機器キャリブレート用の下斜めの位置に設定してからダイアログの[OK]をクリックすればよいだけだった。
しばらくすれば "Place the instrument on the test window and click OK to continue." のダイアログが出るので ColorMunki Photo のダイヤルを下(画面計測用)にし、所定の矩形(灰色)の上に ColorMunki Photo を設置して[OK]。
計測で少々時間たった後、もう一度同様に 機器のキャリブレーションと 画面の計測設置をすればあとは結果待ち&結果がよければ[install profile] をクリックしてカレントの色プロファイル設定できる。


カレントのプロファイルの設定は win,mac ではそれでよさそうだが、linux では xには反映されるが gnome-color-manager のカレント設定は変更されないので、これについては自分でする必要がある。 といっても、システム設定→色、でキャリブレートしたディスプレイの[プロファイルの追加]を選び、出てきたプロファイル一覧から先ほど生成したプロファイルを選んでカレントに設定するだけ。

あと dispcalGUI 計測時にカレントの色プロファイルの影響受けてないか気になったが、起動時に x直接初期化してるようで gnome-color-manager のプロファイル設定は無視された状態になり問題なかった。(良くも悪くもgnomeアプリじゃないから当然か)




2014-10-13[月] linux Mint(Ubuntu)で 窓使いの憂鬱 を使いダイアモンドカーソル

linux でも win や mac 同様にダイヤモンドカーソルを使いたいので、キーバインディングソフトの「私家版 窓使いの憂鬱 for linux & Mac (Darwin) 対応版」 を使用させてもらってる。

といってもlinux入PCはディスプレイ繋げず置物化していて、(格安)noteの設定のために数ヶ月ぶりに立ち上げてみればダイヤモンドカーソルが効かなくなっていて... なんぞ設定変わった?

と、ま、そんなこともあり、linux Mint 17(Ubuntu 14.04系) で窓使いの憂鬱をダイヤモンドカーソルで使用するためのメモ.

ざっくり やったことは

  • IME で CapsLock/英数(EISU)キー を使用しない用にする
  • 窓使いの憂鬱 for linux & Mac のダウンロード
  • ソースをコンパイルして インストール
  • 自動起動用スクリプトの設定
  • ダイヤモンドカーソルな定義をした ~/.mayu ファイルの作成
  • 再起動

な感じ。

IME の設定

キー配置的に CAPSLOCK/英数キー をダイヤモンドカーソルする拡張キーにしたい。

IME で 英数キー が使われていると不味いので、IME の設定(プロパティ)で英数キーを使ったものをすべて削除か別のキーに割り当て直しておく。

例えば Mozc なら

"(スタート)メニュー"→"設定"→"Mozcの設定"→"一般"→"キー設定の選択"の処の"詳細"→(各種キー設定)

あたり. (複数のIME入れてるならそれぞれ対処... 面倒なので己はAnthy削除してMozcだけにしてる)

mayuのダウンロード、コンパイル、インストール

http://www42.tok2.com/home/negidakude/ から mayu-0.12.1.tar.gz をダウンロード.

適当なフォルダで展開(tar xvzf mayu-0.12.1.tar.gz)し、そのディレクトリに移動(cd mayu-0.12.1).

その中に入ってる README(or INSTALL) テキストを参考に作業...だけど2011-11年以降の環境の変化でそのままでは駄目な場合があり、ググれば幾つかのサイトで対処方法が公開されているのでそれらも参考。

まずライブラリをインストール.
sudo apt-get install g++ libboost-regex-dev libboost-dev libudev-dev libusb-1.0-0-dev

ubuntu系だし起動時から使うので
/etc/modules の最後に uinput の1行追加.
※README に書かれている update-modules はすでに廃止されたコマンドのようで無かったが、実行しなくてもよさげ(?)

./configure は こちら等にあるようにエラーでるので
./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu/
にして実行(x64用. 32bitなら別のディレクトリ)

make するとエラー出るので先のサイトに書かれてるように msgstream.h の setp を this->setp に置換(3箇所)してから
make
そして
sudo make install

自動起動

こちら で公開されてる定番のスクリプトを使わせてもらう。
サイトにあるスクリプト部分をコピペして(自分のユーザー名に書換える部分は書換えておいて) /etc/init.d/mayu にセーブ、実行可能に変更.
...なんだが、どうもubuntuの変更か何かの影響でエラーで動かなくなった模様。

ググると対処されてる方がおられて、こちらの頁.
そこに書かれてるスクリプトをコピペすれば...だけどタブ消えてたりちょっと面倒そうだったので、必要な変更箇所だけ抜き出して、元のスクリプトに反映.
具体的には元のmayuスクリプトの最初の1行を

#!/bin/bash
# Start/stop the mayu daemon.
#
### BEGIN INIT INFO
# Provides: mayu
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mayu
# Description: Enable service provided by root
#
### END INIT INFO

に置き換えた.

/etc/init.d/mayu ができたら ([追記] update-rc.dの指定違い等修正)

sudo /sbin/insserv -v mayu

あるいは

sudo update-rc.d mayu start 17 2 3 4 5 . stop 17 0 1 6 .

で自動起動されるように設定.
(どうも update-rc.d の引数無視されてデフォルト設定か BEGIN INIT INFO の内容か何かで設定されるようにみえる)

ダイヤモンドカーソルな定義ファイル

ダイヤモンドカーソル、てか、vz系の操作を元に 設定してみたキー (ここでの ^ はCapsLock/英数キーの意)

^E^X^S^D(上下左右) ^A^F(単語移動) ^R^C(頁移動) ^H(BackSpace) ^G(Delete)
^QF(検索) ^QA(置換) ^QS(行頭) ^QD(行末) ^QR ^QC(ファイル先頭/末移動)
^T(HOME) ^V(END) ※vzと違うけど楽にHOME/ENDしたく
^TAB(CapsLock/英数) ※念の為

書いてみた定義ファイルの内容は以下

include "linux109.mayu"

keymap2 Q2
key *r = C-HOME
key *c = C-END
key *s = HOME
key *d = END
key *f = C-F
key *a = C-H

keymap Global
mod mod0 = !Eisuu
key M0-e = Up
key M0-s = Left
key M0-d = Right
key M0-x = Down
key M0-r = PageUp
key M0-c = PageDown
key M0-h = BackSpace
key M0-g = Delete
key M0-a = C-Left
key M0-f = C-Right
key M0-t = Home
key M0-v = End
key M0-q = &Prefix(Q2)
key M0-TAB = Eisuu

こいつを ~/.mayu でセーブ.

"置換"(^QA)はソフトによって結構キー違うものなので定義しないほうが無難かもだが、GEditが MS(VS)系を踏襲した CTRL-H だったのでそれを設定してる.

HOME,ENDの扱いはmacよりWinと同様のことが多そうなので そのあたりは素直に設定。なのでmacと違い^t ^v の必要性ないけれど自分が使うかもで用意(いらなければ削除)。^TABでの英数(CapsLock)キー動作は...自分で使うことはほぼ無さそうだけど念の為用意.


ひと通り設定がすんだら、再起動、問題なければ CapsLock/英数キーでダイヤモンドカーソルできるはず.




2014-10-12[日] 古noteでlinux ―― linux(gnome) で経年劣化した液晶モニタの黄色具合の改善

少しはマシな実機でlinux環境を常設したく、ちょっと前にヤフオクでOS無のジャンク扱いな core2duo(1.6GHz) 2GB の古ノートPC(FMV s8245)を入手。 外装禿げてるし画面もキーも黄ばんでるけど バッテリィは電源抜いても即落せずそれなりに持つし、 送料手数料込 4000円位の7歳児としてはまずまず。 (core i系はまだ高くなりやすいけど、core2duo は64bit使えて性能の割に安く入手しやすい感じ)

とりあえず linux Mint 17(cinnamon) の64bit版をインストール、すんなり動作。あっけない。

で、まともに使えてると気になるのは画面の黄色具合。
液晶は種類によるけれど経年劣化で黄色がかってくるモノがあり、 そういうのを承知で入手したが、いざ触りだすと結構気になってくる。
モノクロ写真を壁紙にすると セピアぽくなるのは味があるっちゃあるけれど。

BIOSみてもディスプレイのRGBを調整するような項目はなく、 Win の(Graphics Card)メーカー製ドライバ/ユーティリティのようになんらかの色味調整機能が、linuxでも何ぞないかなとみてみれば、

 "(スタート)メニュー"→"設定"(または"システム設定")→"色(カラーマネージメントの設定)"~

がそれっぽい。(他の gnome環境でも gnome-color-maneger がinstallされてたらたぶんそれ)

が、用意されたプロファイル(iccファイル)を選択できるが、直接色を調整する機能はなさそうだ。(キャリブレーション機器があればそれを使っての設定はできる模様)

ただ、プロファイルの一つに Blue(Bluish.icc) というのがあり設定すると画面が青みがかる。
通常用らしき D65(Gamma6500k.icc) と見比べると、VCGT という項目でのガンマのパラメータが違い、緑や赤が低い値になっている模様。 (VCGT は Video Card Gamma Table らしい. グラボのガンマ・パラメータを設定するもののよう)

つまり、今の液晶のへたり具合を補正するような icc ファイルを用意できればよさそうだ。 iccファイルを覗くと vcgt というタグがあるようでそこにガンマテーブルぽい値も見受けられる。 (ただ たいていのiccファイルにはvcgtタグは入ってなくて一部ディスプレイ用のiccファイルに入ってる模様。 カラーマネージャの解説されてるページからすると、そもそも vcgt タグは正式なものじゃなくメーカー(apple)拡張のようだ)

で、iccファイルを作成するツールがあれば(あるいは直接rgb調整できるようなツールがないか)、とググってみたけれど、よさそうなものをみつけられず。
最近のwinやmacの場合、標準で(目視)キャリブレーションできるらしいし、フリーソフトもあるみたい(このへん検索で見かけただけで動作未確認)。linux でも argyll とか lprof とかそれっぽいものはあるけれど使いかたよくわからず断念(キャリブレーション装置を使った例はあるけれど)。

きっと他にも何かあるだろうと思いつつ、そんな厳密なことやりたいわけじゃないし探すのも疲れたので、icc ファイルを弄ってなんとかならないか画策。

Gamma6500k.icc , Bluish.icc のバイナリみてると、vcgtタグ自体はいろいろな形式ありそうだけど、この2ファイルに限れば、わりと単純なテーブル(2バイト符号無整数を256個3チャンネル分)のようなので、簡易にr,g,b別に線形で設定するプログラム作ってガンマテーブル書き換えてみたところ、すんなり出来た感じ。

(cソース)

いや、すんなりは嘘か。パラメータや名前の設定具合が気に喰わないのか、作ったiccファイルをimportしても反応無かったりマシン再起動したら有効になる場合があったりと微妙な挙動だけれど、とりあえず変更したプロファイル(iccファイル)を1つ設定できた。
線形なんで途中の階調のバランス合ってないところあるし当然全体に輝度下がるので暗くはなってるけれど、元よりは大分マシな見栄えにはなったので吉としとく。(視野角で色の見え方違う件もあるし あまり拘ってもしかたない状態)


と、このネタ書いてる途中で、xgamma -gamma で設定かえると元の色バランスに上書きされるのに気づいた。ということは、vcgtなパラメータを書き換えてるということなのだろうか。
しかも xgamma、よくよくみると -rgamma -ggamma -bgamma というオプションがあって、r,g,b別設定すれば調整できそうだ...orz

(まだ適切なパラメータ設定をまだ見つけられてないし、起動時にxgammaを実行させる手間もあるので、iccファイルで出来る現状のほうがベター、と思おう)


(追記) これのためではないが結局 カラーキャリブレータを購入した ので、それでiccファイルを作成した。劇的にマシになった。




2014-6-20[金] 古PC に 軽いlinux を入れる

P3-800 世代に kona linux

あいかわらずタマに軽いOS(ディストリ)をインストールしたりして遊んでいる。
といっても たいていは virtualbox で動かすだけで、気になったのがあったときだけ P3-800MHz(i810)マシン(NetVista)でお試し。

最近のお気に入りは konalinux (v2.3 2014-06-03|12付近)。
OS側使用メモリ量が少なく抑えられて (black版で60MB前後, light版80MB前後)、 このクラスの古PCなのに まともな体感で操作できる。もちろんスペック相応の非力さを感じる面はあるけれど、最新のfirefox 入れて動くし使っていられるくらいにはいい感じ。 (軽いと言われるディストリでも、このスペックだと結構つらいモノが多いのよ)

軽さというならば TinyCore Linux(TinyCorePlus) のほうが頭一つ抜けてる感じだけど、 live-cd ベース オンメモリ運用前提で用意された範囲外のことをしようとすると手間が大きく(てか やれてない)、 その点 konalinux はHDDインスールのdebian環境で普通に apt-get 等できるので普段の延長で弄れて遊び甲斐あり。(いや、すぐ放置になるのだけど)

選ぶ kona のエディションは、メモリが384MB以上あれば full(-i386)版、256MB以上あれば light(lite)版、それ以下(でも192MBほしい) なら black版、 といったところだろうか。もう数世代後のスペックのマシンなら リッチなWMのエディション選ぶのも。

firefox を常用してるので、最終的には firefox (や Libre Office) が最初から入ってる full版を選択した。
iceweasel(というか古いリビジョンのfirefox) では使いたいアドオンがバージョン不一致で使えないことがあり(己の場合 All-in-One Sidebar)、black版 や light版 にfirefoxを野良インストールするのも面倒になったので結局(メニュー登録する方法調べるの億劫になり)。

※手持ちの NetVista は CD-drive かつ USB ブートのできない機種だったので、full版を入れるため一時的に 3口のIDEケーブルさしてDVD接続でしのいだが(電源はIDE->USB変換機器のものを流用)、CD|FDD で boot してから USB 起動するツールもあるようなので、なんとでもなりそう。

※ konalinux の配布物はバージョン名が同じ(2.3)まま ちょくちょく差し替わっているので、ダウンロード時期によって微妙に状況変わってることあり。

P2-400 世代

で、最近、親戚のとこの古いデスクトップPCが2台ほど巡り巡ってウチにやってきた。
電源いれてみれば 2台とも P2-400MHz(当然 slot) メモリ512MB前後 ... 15年前後前のスペックか?
そして、かなり、うるさい。

デスクトップでも静音電源が当たり前になって久しかったので... 昔は こんなうるさかったんだよなあ。 P3-800のNetVistaも音してるけど、一応静音タイプの代物で、十数年前のPCの常識で思えば静かな部類だったのだと再確認。

とりあえず HDD 換装して kona linux いれてみることにするが、80GB とか 120GB のHDDが認識されない... どうやら 32GB が最大の頃の代物らしい。10GBや30GBのHDDを繋ぐと認識(80,120GBでもジャンパで32GBに設定すれば使えたはず)。
ついでに騒音半減した感じ。
10,30GB-HDD は 静音が当たり前になりだした80,120GBの世代より音はしてるのだけど、6.4,8GBに比べれば結構静かになっていた模様。 すっかり忘れてる。

さて、肝心の kona linux だけど... もっさり。
win98 や win2k だとストレスのなくまともな体感で動くのだが... winアクセラレータが効くかどうかが大きいとは思うけれど、 さすがにこのスペックだと今どきのosやアプリはつらいわな。

と、 TinyCore Linux を動かすと win98やwin2k に匹敵する体感。さっすが。
ウィンドウ描画等UIレスポンスがよいのだけど、特にドックが滑らかに動くのが好印象の鍵なんだろうな。
(そうはいっても firefox を立ち上げるともっさりだったけど... それは win2k でも同様だろうで)

この世代については、下手なことせず win98/win2k 動かしてるほうが幸せ、でも GUI有 linux 動かしたいなら TinyCore Linux (TinyCorePlus) あたり...というのが己の結論。(自分でチューンできる技量のないものとしては)
win2k については こちらでおもしろそうな改造されてるので、気力あれば結構楽しめそうな状況あり(気力なし)。

てな具合に弄ってみたはいいけれど、スペック低いし騒音がつらいので、箱だけ残して中身(電源やM/B)は手持ちの余りパーツで置き換えよう ... と思ったのだが、 そこはメーカー製パソコン、一見汎用パーツのようで、そのままじゃあ換装できない要素が細々あり、結局、粗大ゴミになりそうな結末。
(収穫は 256MB DIMM を NetVistaに流用できたことか)




2013-9-22[日] PCKeyboardHack, KeyRemap4MacBook でのダイヤモンドカーソル(^QF 有)設定

バッテリー妊娠で放置してた macbook を復活中(バッテリー新調)。実質win7機としてしか使ってなかったのだけど今度こそmac(osx)をそれなりにさわろうかと(未だにmacよくわからん)。macbookは昔買ったlate 2008 な奴なので今更すぎますが新しいの買うまでには至らず。メモリ8G,ssd250G にしたのでまだなんとかなるかな、と。osx10.8 や win8 (win7入れ直してwin8upgrade) にしたはいいけど、まず、何より辛いのはキーボード。普段PCのテンキーレスキーボード(フルキーボードからテンキーだけ無くしたタイプ)常用、それがないならダイヤモンドカーソル(VZ系)配置必需、という自分でも少し困った生態ですが抜けられず、で、windows環境については自前ソフトで対処だけど mac 側はさて...

といっても mac 側の選択はやっぱり PCKeyboardHack, KeyRemap4MacBook のインストールがベストの模様。以前だって入れてましたが、その能力を発揮できていなかったようで(ソフトが発達した面もありそうだけど)、今回本気で設定してみたら、ダイヤモンドカーソルで^QFとかの 2 ストロークキーも使えて、かなり幸せでした。

ということで、以下、PCKeyboardHack, KeyRemap4MacBook の設定メモ.

※[追記] PCKeyboardHack は OS X 10.8 用以降は"Seil"に、KeyRemap4MacBook は OS X 10.9用以降は "Karabiner" に変名された模様.

※[追記] ( こっち ) で 窓使いの憂鬱 を使ってlinuxのダイヤモンドカーソル対応してみた

日本語キーボードを接続する場合

PCKeyboardHack で、For Japanege の 3つをチェックする(Enable NFER Key on PC keyboard. Enable XFER Key on PC keyboard, Enable KAATAKANA Key on PC keyboard).
これで、日本語キーボード(JP106系) をつなげた時に、スペースの並びの、無変換キー、変換キー、右COMMANDキーとして使える.

※ 無変換キー=IME off 変換キー=IME on なので 全角/半角キーは使うこと無く. 無理に全角/半角キーを使うことは考えず、むしろ、このほうが楽なので、windows 環境も 無変換を IME off にすることにした.

ダイヤモンドカーソル関係

実は KeyRemap4MacBook の Change Key の項目に Diamond Cursor 等各種変更があるので、好みのがあればそれを使うのが吉... だけど好みにあうのがなかったので自分で private.xml を書くことに.

やりたいことは、他の修飾キーによる動作を壊さずに、別途CapsLockキー同時押しでダイヤモンドカーソル移動等VZ系の基本操作すること(簡易に実現できる範囲のみ用意)

まず CapsLockキーを別のキーにするには PCKeyboardHack で、
CapsLock→Change Caps Lock にチェックをし、keycode を 右CTRLキー(62) にする.
(macbookでは 右CTRLキー がついてないので右CTRLを拡張キー扱いにしても影響少ないだろうと想定)

CapsLock については、これだけでなく、macos本来のキー設定でCapsLockを無効にする必要があるらしいのでそれも行う.
システム環境設定
→キーボード(アイコン)
→キーボード(タブ)
→修飾キー...
→キーボードを選択(変更したいキーボードを選ぶ)
→CapsLock キーを アクションなしに変更.
キーボードごとに設定できるので、必要なだけ設定する.
(※と書いたけど、新規追加したキーボードのCapsLock無効化忘れてても右CTRL化してるような…)

次に private.xml の作成.
作ってみた private.xml は これ.

設定方法は KeyRemap4MacBook の Misc & Uninstall(タブ) の Open private.xml を開けて、作ったものを上書き. Change Key(タブ) で ReloadXML して項目が現れたら必要な物をチェック.

作ってみた設定項目は、(以下ここでの ^ は右Ctrlの意)

Control_R Diamond Cursor ^E^X^S^D(上下左右) ^A^F(単語移動) ^R^C(頁移動) ^H(BS) ^G(DEL)
Control_R-Q ^QF(検索) ^QA(置換) ^QS(行頭) ^QD(行末) ^QR ^QC(ファイル先頭/末移動)
Control_R-T/V ^T(HOME) ^V(END) ※vzと違うけど楽にHOME/ENDしたく
Control_R-Z/W ^Z(undo) ^W(redo) ※ お試し. (vzだと1行ロールup/downだけど)
PC Application to FN Key WinキーボードのAppsキーをmacのFNキー扱いにする

生成するキーは標準のテキストエディタ準拠。
それなりにはなったのだけど、macでの(追記:編集キーを使うと) PageUp/PageDown Home/End 等のデフォルト動作が windows とは違う習慣になっていてちくちくとつらい(移動じゃなくてスクロールだけって何それ ... 行頭/行末/頁移動/ファイル先頭末移動、がことごとくwinと違ってた)
(追記:mac側は 頁移動=単語移動(OPTION+←→), OPTION+PageUp/PageDown, 行頭移動=COMMAND+←, 行末移動=COMMAND+→, ファイル先頭移動=COMMAND+HOME,ファイル末移動=COMMAND+END, 検索=COMMAND+F, 置換(アプリで違うけど標準のエディタでは)=OPTION+COMMAND+F)

作成にあたってはググっていろいろ参照…ちゃんと控えてなかった。まあ 2 ストロークキー以外は難しいことはなかったです。
2 ストロークキー関係はあまり情報なさそうで、一番役立ったのは こちら。(あと、VZ化されてるこちとか)
見よう見まね、やった結果は先の private.xml にありますが、ほんとうにこれでよいのかは自信なし。少なくともうちでは動いてるということで。

(追記: 2ストロークキーの設定では参考元にあるように config_only を使用。使わずオーソドックス?な方法だとたしかに "キーリピートが止まらない" 症状でした。ただ VK_CONFIG_SYNC_KEYDOWNUP_???? の使い方がよくわからずウマく設定できず、他の方の2ストロークキーの設定で使われてる VK_CONFIG_FORCE_ON/OFF を真似ねてみたところ希望の動作になりました。
あと、private.xmlの定義順で2ストローク用キー(Q)より先に1ストロークのキー(SDEXAFRC)が定義されていると2ストローク目のキー(SDEXAFRC)が1ストロークのキーとして処理をされてしまうようで、Qの定義を先に行なっています)

 AppsキーをFN にするのは一見 PCKeyboardHack で出来そうに思えたけど変更元となるAppsキーが一覧にないので、KeyRemap4MacBook で試してみたら意図通り動いてくれた、といった代物. (実際使うことがあるかというと ... 音量操作は便利かも、と使うようになった)(追記: Apps キーを使うには PCKeyboardHack でチェックマーク付けて有効にしておく必要あり) [追記] 使ってなかったら...いつの間にか機能しなくなっていた模様(OSバージョンアップ付近?)

※他の方の設定みてるとアプリケーション別とかの対応をされてたりして、結構高度なカスタマイズできるようですが、そこまでの気合はなく.

※ 編集キーの役割が違うので配置的にPCキーボードに拘る必要ないけれど、キータッチ感のために変える値打ちはある……が、テンキーレスキーボード、リアフォ 91U を繋ぐと右側の日本語キーボード配置な記号群が英語キーボード準拠に化ける。数字キー部分の記号は日本語準拠なので解せない。FILCOの茶軸やFujitsuの8769 を繋ぐと問題なく入力できたのでそちらを使えばいいのだけど、ちと敗北感あり。

※追記:そもそも己がダイヤモンドカーソル使うようになったキッカケが、むかーし FM-11(OS-9)とPC98(DOS)を使ってたからで、違う文化圏のマシンを触る限り二十ウン年前と問題はかわらんし解決方法もまた……なんですが、どうせ覚えるなら emacs やら vi(m) のほうが幸せだったかもな、です(今更その気はないけれど)。unix系osは生き続けemacs,vimユーザーも新規ユーザーがいるわけですが、 DOS(CP/M) 系の操作は Windows に殺されたので、未だにダイヤモンドカーソルに拘ってる人はおそらく40代付近以上……滅んだ操作体系で 小指痛くなることもあるけれど 左手のみですむ移動操作は(特に左利きには) それなりに幸せかもとは、言っておこう。

テキストエディタ物色中

さて、最低限キーボードを触る気になれるようになったけれど、問題は常用できそうなテキストエディタがあるか……まだ物色中。

決定打は今のところなし。Windowsではなんだかんだで秀丸(VisualStudio風キーカスタマイズ)に慣れすぎて……全角空白可視化したいしvz由来のスタック型カット&ペースト必需だし tsv,csv モードもなるべくほしくetc…(後半わがままなのは自覚. 正直エディタを使いこなせてるかというと?な奴だし)

NxWineで秀丸 は 思いの外動いてくれて良さげだったけれど、細かい不具合はあるにはあるし、キー操作でタブ切り替えると窓のフォーカス離れるのでいちいちマウス操作することになり今は諦め。(他の商用winエミュソフト使えばマシなんだろうか?)

性能的には sublime text 2/3 がよさそうだけどシュアウェア購入に見合うかは微妙. この金額払うのなら秀丸で使ってる機能がほぼほしいと思ってしまい…(スタック型カット&ペーストはありそ?なくてもスクリプトでなんとかなりそうな気配だけど tsv,csvモードは無さそ?。アウトライン表示とかはどうだろ). win,mac,linux 用があるのは魅力だけど(ああwin版はime入力窓が追従せず離れて表示されるのは嫌状態).

フリーのだと mi, TextMate2, komodo edit あたりか.

mi は日本人作者だしシンプルでとりあえず使う分にはよさげ……キーカスタマイズが部分的なのでもう少し設定できればと思う(理解が足りてないだけ?)

komodo edit はIDE的要素つよくてテキストエディタとしてはちょっと重め、だけどこれもオープンソースだし win/mac/linuxあるのは魅力か.

TextMate2 は元々商用でそこそこ評判がよかったものがオープンソース化したものらしく高機能、だけどごちゃごちゃしてる感じ、でも日本語の解説頁はままありそう……あ今ググってこれみたらデフォルトでスタック型カット&ペーストできた。これは俄然興味わいてきた

……もうしばらく右往左往してます。




2013-6-16[日]

前回の影響もあって、windowsで動くCコンパイラの機能を比較した頁、

  C言語機能の比較

を書いてみた。ざっくり kr,c90,c99,c11 およびvc・gcc拡張の機能を試してる。
C++目的で初めてC部分だけで挫折したちょっと情けないものだけれど、一応 c/c++互換機能と非互換機能をわけてみたりしてるので C++ 的にも意味はあると思う。




2013-5-26[日] c++03コンパイラの機能実装の比較

昔 ow や dmc のc++の(文法)実装状態をチェックしてる表をみたことあったなあ、と探してみれば、すぐみつかる.

http://cmeerw.org/prog/freecpp/

最終更新が2006で、それ以前のコンパイラの比較だけれど、チェックプログラムのソースが公開されていたので、ow 含むそれらよりも新しい(ヴァージョンの)コンパイラで試してみた。

もとより網羅されてるわけでないし今時のc++11世代のコンパイラの比較としては不十分だけど(SFINAEのチェックもなさげ)、owやdmcが以前よりよくなっているかを見る分には、と。

dmc 8.56ow 1.94.7.1 tdmclang3.1 (+mingw462)vc8vc9vc11bcc 5.5.1
1digraphpassfail[c]passpassfail[c]fail[c]fail[c]fail[c]
2alternative tokenspasspasspasspassfail[c]fail[c]fail[c]fail[c]
3new style castspasspasspassfail[c] / 実質passpasspasspasspass
4boolpasspasspasspasspasspasspasspass
5bool conditionpasspasspasspasspasspasspasspass
6mutablepasspasspasspasspasspasspasspass
7explicitpasspasspasspasspasspasspasspass
8typenamepasspasspasspasspasspasspasspass
9covariant returnpasspasspasspasspasspasspasspass
10arrow operator returnpasspasspasspasspasspasspassfail[c]
11overload enumpasspasspasspassfail[c]fail[c]fail[c]pass
12nested class fwd declpasspasspasspasspasspasspasspass
13friend namespace classpasspasspasspasspasspasspasspass
14class name injectionpasspasspasspasspasspasspassfail[c]
15friend name injectionfail[e]passpasspasspasspasspassfail[e]
16static const intpasspasspasspasspasspasspasspass
17delete constpasspasspasspasspasspasspasspass
18return voidpasspasspasspasspasspasspasspass
19new scopingpasspasspasspasspasspasspasspass
20if stmt condpasspasspasspasspasspasspasspass
21switch stmt condpasspasspasspasspasspasspasspass
22while stmt condpasspasspasspasspasspasspassfail[c]
23for stmt condpasspasspasspassfail[c]fail[c]fail[c]fail[c]
24defarg scopefail[c]fail[c]passpasspasspasspassfail[c]
25namespace enumpasspasspasspasspasspasspasspass
26namespace templatepasspasspasspasspasspasspasspass
27namespace template funcpasspasspasspasspasspasspasspass
28using namespace templatepasspasspasspasspasspasspasspass
29template non typepasspasspasspasspasspasspasspass
30explicit template instantiationpasspasspasspasspasspasspasspass
31template default allpasspasspasspasspasspasspasspass
32template default dependent argpasspasspasspasspasspasspasspass
33template template argpassfail[c]passpasspasspasspasspass
34template function explicitpasspasspasspasspasspasspasspass
35new template specializationpasspasspasspasspasspasspasspass
36partial template specializationpasspasspasspasspasspasspasspass
37partial ordering class templatespasspasspasspasspasspasspasspass
38member template classpassfail[c]passpasspasspasspasspass
39member template functionpassfail[c]passpasspasspasspasspass
40bad allocfail[e]passpasspasspasspasspasspass
41bad typeidfail[e]passpasspasspasspasspasspass
42throwing destructorpasspasspasspass (c++11fail[e])passpasspasspass
43koenig lookuppassfail[c]passpasspasspasspasspass
44two phase lookuppasspasspasspassfail[e]fail[e]fail[e]fail[e]
45empty base optpasspasspasspasspasspasspassfail[e]
46return value optpasspasspasspasspasspasspassfail[e]
47static assertionspassfail[c]passpassfail[c]fail[c]passfail[c]
48right angle bracketsfail[e]passpasspasspasspasspassfail[e]
49func predefinedpasspasspasspassfail[c]fail[c]fail[c]fail[c]
50hex float literalpassfail[c]passpassfail[c]fail[c]fail[c]fail[c]
51long longpasspasspasspasspasspasspassfail[c]
52restrictfail[c]fail[c]fail[c]fail[c]fail[c]fail[c]fail[c]fail[c]
53variable arraypassfail[c]passpassfail[c]fail[c]fail[c]fail[c]
54dynamic sizeofpassfail[c]passpassfail[c]fail[c]fail[c]fail[c]
55empty macro argumentpasspasspasspasspasspasspasspass
56enum trailing commapasspasspasspasspasspasspasspass
57flexible array memberpasspasspasspasspasspasspasspass
58compound literalfail[c]fail[c]passpassfail[c]fail[c]fail[c]fail[c]


補足

  • いずれもwin用32bit版コンパイラ. win8でコンパイル&実行.
  • fallにつけてる[c]はコンパイル出来なかった場合、[e]は実行結果で0以外を返した場合、を表してる.
  • 4.7.1tdm は mingw 4.7.1 tdm版.
  • clang v3.1 はllvm公式のmingw用バイナリを、本家 mingw g++4.6.2 の環境に上書きしたもの。
  • 元表にあるow1.6やdmc8.4.5は試していない(インストールしてない)ので元表をみてください.
  • vc8は元表にもあるけれど return void の結果が違ってる.
  • 47,48のみ必要ならば c++11 をコンパイルするオプションをつけている.(他はつけていない. 実はclangの不具合回避)


結果に fail があるチェックについて

  • 1 digraph: 交代記号( '{' が'<:'等) が使えるか.
  • 2 alternative tokens: and や and_eq のような記号の交代予約語が使えるか. ※ iso646.h(ciso646) で同様のものが#define定義されてる
  • 3 new style casts: const_cast<T>(t)のようなc++からのキャストが使えるか。clang が fail になっているのは本題とは別の virtual void A::f(); の実体が定義されていないことによるものでソースを実体定義に修正すれば問題なくパス。(このエラーは clangの挙動でも問題無いと思うけど、他のコンパイラがコンパイルできていることが興味深いかも)
  • 10 arrow operator return: メンバーのoperator->()の返型がT*,T,T&でない場合にコンパイルできるか.
  • 11 overload enum: enum型を基本整数型とは別型として関数オーバーロードできるか?
  • 14 class name injection: クラス名インジェクションが機能してるか ※このソースだと B() : ns::A() {} でなく B::B() : A() {} になっているところ.
  • 15 friend name injection: friend名インジェクションが機能してるか ※class内friend 定義したものはクラス外(非friend)で定義されたものよりも名前検索の順位が低く、またそのことは引数のマッチよりも優先される...ってことかな。
  • 22 while stmt cond: while の条件式でローカル変数を定義できるか
  • 23 for stmt cond: for の条件式(2文目)でローカル変数を定義できるか
  • 24 defarg scope: デフォルト引数スコープの扱いに関するテスト. ow はメンバー関数のデフォルト引数は関数宣言側ならOKだが定義側だとNGのようで、また、関数内での外部関数宣言ではデフォルト引数が使えない模様。bcc5.5.1 はデフォルト引数の問題でなく static const 変数の扱いが定数でないためのfailで、static const int c=3;の代わりに struct B に先立ち enum {c=3}; を定義すれば ok.
  • 34 template template arg: template<template<class T> class T1> のような template template 引数を使えるか
  • 38 member template class: クラス・メンバーとしてclass テンプレートが使えるか. ※ow1.9 はクラス定義内では使えるが、クラス定義外でtemplateを2回使う記述はNG.
  • 39 member template function: クラス・メンバーとして関数 テンプレートが使えるか. ※ow1.9 はクラス定義内では使えるが、クラス定義外でtemplateを2回使う記述はNG.
  • 40 bad alloc: new が メモリー不足の時に bad alloc を投げるか. ※ dm 標準では行えてないが stlport のようにライブラリ実装で対処可能.
  • 41 bad typeid: Typeidの引数が不正だった場合 bad_typeid を投げるか.
  • 42 throwing destructor: デストラクタ中に例外を投げることができるか. ※ clang++ 3.1 では通常は問題ないが -std=c++11 をつけでコンパイルすると実行時にハングした.
  • 43 koenig lookup: koenig lookup(ADL) が機能してるか. (関数呼出で、その引数の型が定義されている namespace から関数名をみつけられるか)
  • 44 two phase lookup:スコープ違いで同名のある関数の呼出が正しく行われるか
  • 45 empty base opt: 継承元class(struct)にメンバー変数が無い時0バイトにオプティマイズするか
  • 46 return value opt: クラス変数を返す時、コピーを発生させないようオプティマイズするか (VCはオプティマイズ指定しないとコピーになる)
  • 47 static assertions:[c++11]: static_assert があるか
  • 48 right angle brackets:[c++11]: templateで閉じカッコ2つを 空白を入れずくっつけて >> と記述して大丈夫か
  • 49 func predefined:[c99, c++11]: 関数名文字列 __func__ が使えるか
  • 50 hex float literal:[c99, c++11]: 16進数浮動小数点表記が使えるか
  • 51 long long:[c99, c++11]: long long を使えるか ※ bcc5.5.1は __int64 ならある
  • 52 restrict:[c99]: restrict 指定が使えるか. ※ c++11には入らなかった機能.
  • 53 variable array:[c99]: 動的ローカル配列が使えるか. ※ c++14に入るかもらしい(?)
  • 54 dynamic sizeof:[c99]: 動的ローカル配列に対するsizeofが機能するか ※ c++14には入らない.(c++のsizeofはあくまでコンパイル時に決定できるモノのみ)
  • 55 empty macro argument:[c99]: 空のマクロ引数を許容するか ※ bcc はこのソースでは大丈夫だが、引数が1つの場合 NG
  • 58 compound literal:[c99, c++11]: (struct A){1, 2} のような構造体リテラル表記できるか.

bcc 5.5.1 を表に加えるんじゃなかった...面倒増えてしまった(いや本当はpassしてるのもひと通りみたほうがよいくらいだけど)
vc が overload enum、two phase lookup あたりを修正しないのは、互換性がらみなんでせうかね? (既存の巨大ソースだと意図せず依存してそうな場合もありえそうだし).




2013-5-21[火] open watcom v2

年始くらいに某2chスレで 年末に2.0でるかも(ソースはニューズグループ)、とか書かれていて、けれど、watcom のサイトのデイリービルドみてもちっとも進んでなさそうで、ほんとかしら、と首をかしげてたのですが、今日、検索しててみかけました。

https://github.com/open-watcom

どうやら open watcom v2 を非公式にフォークしてたらしい。 リポジトリ覗くと、24時間以内の更新とかあって、そこそこ活動してそうな雰囲気。 といってもスタッフ的にお二人の名が書かれていたのでこじんまりとしたものなんだろうけど。

v2 ってことは Version 2 todo list の内容を目指しているのでしょうかね。どうなんだろ。watcom c++ の実装自体は c で書かれていて結構大変そうにも思いますが... まあちょっと楽しみです。




<<前の5件次の5件>>