Hatena::ブログ(Diary)

DOSEI日記 RSSフィード

20150128[Wed] このエントリーを含むブックマーク

はてなブログに移行してみた。

トラックバック - http://d.hatena.ne.jp/DOSEI/20150128

20140928[Sun]

[][][] iBus 1.5 の日本語入力  iBus 1.5 の日本語入力を含むブックマーク

とりあえず ibus 1.5 でググってから読むといいと思います。

Fedora 20 あたりから、日本語入力が iBus 1.5 になった。クリーンインストールした直後だと、日本語入力を行うために Super-space で切り替える。

コンパネの「地域と言語」をみると、初期状態で「日本語」と「日本語 (かな漢字)」が登録されている。 Super-space ではこれらを切り替える。キーバインドは「キーボード→ショートカット」の「タイピング」で指定できる。

初期状態は「日本語」が選択されていて、これは単に日本語キーボード配列で英数字を入力できるだけである。直接入力専用の IME と思ってもよい。一方「日本語 (かな漢字)」は kkc という IME であり、初期入力モードは「ひらがな」(漢字変換をするモード)である。

今まで普通の人は半角/全角キーで、 IME のモード「ひらがな」と「直接入力」を切り替えていた。らしいしが、私は ctrl-space で IME 自体の起動・終了をしていたので、それはいいと思う。

問題は、切り替えが重い。一瞬 IME の選択画面がオーバーレイして出てくる(mac みたいに)のだが、これに時間がかかる。あと、一瞬フォーカスが奪われるような動作になっている。

今までの普通の人の状態を再現するには、「日本語」をけして「日本語 (かな漢字)」だけにすればよさそうなのだが、なぜかうまくいかない。起動直後の入力モードが「ひらがな」だと都合が悪いので「直接入力」に設定できるが、起動直後に「あ」とインジケータが表示されている。まぁ、直接入力はできるが、デフォルトで設定されているモード切替のキーを打っても切り替わらない。なぜなんだぜ。

最大の問題は、初期状態で「半角全角キー」で日本語切替できないこと。じゃあ、 super-space と同じようなキーを追加すればいいかというと、キーは一つしか指定できないらしい。 super-space を捨てて Zenkaku Hankaku キーを指定すればいいかというと、これだとなぜか切り替えがうまくできない。というわけで、現状はあきらめるしかない?

Ctrl-space に指定した場合は、gnome tweak tool の「ポインタの位置をハイライト」機能をオンにすると、 ctrl の動作を奪われるのでオフにすべし。

なお、英語キーボードの人はどうすればいいかというと、「日本語」「日本語 (かな漢字)」の組を「英語」「日本語 (かな漢字)」に変える。どうやら「日本語 (かな漢字)」のほうは直前のキーボードレイアウトに従うらしい。変な仕様。

まとめ: Fedora 20 などで初期設定での日本語入力は Super-space で切り替える(か、ショートカットを ctrl-space などに変える)。半角/全角キーでの切り替えはできない。

余談:キーボードの刻印は「半角/全角」だけど、 Gnome の表記は Zenkaku Hankaku だし、俺もそうだと思ってた。

トラックバック - http://d.hatena.ne.jp/DOSEI/20140928

20131215[Sun]

[][] bash で空白区切りの数値文字列の符号を反転する。  bash で空白区切りの数値文字列の符号を反転する。を含むブックマーク

つまり、 100 20.4 -1.0-100 -20.4 1.0 にしたいという話。

val="100 20.4 -1.0"

negval=-${val// / -}     # 頭の - を忘れずに。
negval=${negval//--/}

echo $val
echo $negval

[][][] Fedora に povray を入れるには  Fedora に povray を入れるにはを含むブックマーク

ATrpms で配布されているので、以下のサイトに行ってリポジトリを登録するパッケージを入れる。

20131204[Wed]

[][][] Fedora 19 の TeX 環境  Fedora 19 の TeX 環境を含むブックマーク

Fedora 19 で日本語の TeX 環境を入れるには、少なくとも texlive-ptex を入れる必要がある。 texlive-japanesetexlive-cjk では、なぜか ptex が入らない。もし、 unicode 対応の uptex, uplatex を使う場合は、 texlive-uptex をいれる。

だが、これだけだとうまく動かない。さらに追加で、 texlive-texconfig, texlive-metafont, texlive-cm が必要となる。で、足りないものをちまちま足していくのは大変なので、容量が許せば texlive パッケージをドーンと入れるのがよいと思われる。 (texlive-ptex は別途必要)

dvidpfmx は texlive-dvipdfmx で入る (dvipdfmx パッケージでは不完全)

なんか、 Fedora 18 まではもっとうまく導入できた気がするんだがなぁ。

トラックバック - http://d.hatena.ne.jp/DOSEI/20131204

20131120[Wed]

[][][][] Qt Creator で svn+sshリポジトリを扱う  Qt Creator で svn+ssh のリポジトリを扱うを含むブックマーク

svn+ssh でアクセスする Subversion リポジトリのワーキングコピーを扱う場合、 SSH の通信にパスワードが必要になる。

Qt Creator は、オプション→バージョン管理システム→概要タブの、 「SSH プロンプトコマンド」のコマンドを呼び出して、パスワード入力を促すのだが、デフォルトでは ssh-askpass という風になっていて、 Fedora などではこのコマンドが入っていないと動かない。

Fedora では、 openssh-askpass パッケージに含まれる、/usr/libexec/openssh/ssh-askpass を指定すればよい。なお、このコマンドのディレクトリはパスが通っていないので、フルパスで指定しないといけない。

トラックバック - http://d.hatena.ne.jp/DOSEI/20131120

20131016[Wed]

[][][] SSH の config のパーミッションエラーを解決する  SSH の config のパーミッションエラーを解決するを含むブックマーク

Cygwin でファイルを作成すると、グループが "なし" になる。で、この状態だとグループのパーミッションが rw となって、これを消すことができない。つまり、 chmod g-rw をしても無視される。

~/.ssh/config はユーザ以外のパーミッションを無しにしなければならないのだが、これだとエラーとなって困ってしまう。

解決するには、グループを Users にする。

$ chgrp Users ~/.ssh/config
$ chmod 600 ~/.ssh/config

関連サイト: Using Cygwin in Windows 8, chmod 600 does not work as expected? - Super User

トラックバック - http://d.hatena.ne.jp/DOSEI/20131016

20131011[Fri]

[] を含むブックマーク

面接官「特技は高階グラフカットとありますが?」

ASK君 「はい。高階グラフカットです。」

面接官「高階グラフカットとは何のことですか?」

ASK君 「3つ以上のボクセルからなるクリークに依存するエネルギー最小化です。」

面接官「え、クリーク?」

ASK君 「はい。クリークです。クリークの配置が複雑な臓器の配置を表現します。」

面接官「・・・で、その高階グラフカットは当社において働くうえで何のメリットがあるとお考えですか?」

ASK君 「はい。多臓器の領域分割ができます。」

面接官「いや、当社には分割したい臓器などありません。それに人に危害を加えるのは犯罪ですよね。」

ASK君 「でも、Potts エネルギーにも勝てますよ。」

面接官「いや、勝つとかそういう問題じゃなくてですね・・・」

ASK君 「3階以上のエネルギーは1階に還元できるのです。」

面接官「ふざけないでください。それに高階って何ですか。だいたい・・・」

ASK君 「階数は依存するボクセルの数-1です。クリークのボクセル数そのものは次数とも言います。高階というのは・・・」

面接官「聞いてません。帰って下さい。」

ASK君 「あれあれ?怒らせていいんですか?使いますよ。QPBO。」

面接官「いいですよ。使って下さい。QPBOとやらを。それで満足したら帰って下さい。」

ASK君 「運がよかったな。今日はメモリが足りないみたいだ。」

面接官「クリーク数多いよ。」

kamekamekame877kamekamekame877 2013/10/11 22:27 ずいぶんと懐かしいネタじゃありませんか

トラックバック - http://d.hatena.ne.jp/DOSEI/20131011

20130919[Thu]

[][] Gnome Tweak Tool の設定  Gnome Tweak Tool の設定を含むブックマーク

「ウィンドウ」の "Modifier to use modified window click actions" っていうのは(たぶん、右側がドロップダウンボックスに隠れて読めないのだが)、従来 alt 押しながらウィンドウをドラッグすると、ウィンドウが移動するといった機能の特殊キーのこと。 Fedora 18 から (Gnome 3.6 から) alt ではなく super キーに変わっている。

トラックバック - http://d.hatena.ne.jp/DOSEI/20130919

20130726[Fri]

[][] colorize  colorizeを含むブックマーク

colorize は、 fill で指定した色を指定した比率で画像全体にアルファブレンドする。

各チャンネルごとに比率をわけることもできる。

値は、単位を省略すると % になるらしい。

$ convert in.png -fill red -colorize 50% out.png   # 全体に赤みが付く
$ convert in.png -fill white -colorize 50% out.png   # 全体が白っぽくなる
$ convert in.png -fill black -colorize 50% out.png   # 全体が暗くなる
$ convert in.png -fill gray50 -colorize 70% out.png   # スモークのかかったようになる
$ convert in.png -fill red -colorize 0,100,100 out.png   # B,G が 0 になる
トラックバック - http://d.hatena.ne.jp/DOSEI/20130726

20130425[Thu]

[][][] OpenCV のサンプルディレクトリ  OpenCV のサンプルディレクトリを含むブックマーク

Fedora 18 で、 opencv-devel-docs (2.4.3-3) を入れると、

サンプルが /usr/share/OpenCV/samples/usr/share/opencv/samples に分かれてるんだけど、これはパッケージングのミスだろうか? ソースパッケージとか見た方がいいのかもしれないけど、時間なし。

Fedora 17 の方は、チェックしたらちゃんと小文字の方に統一されてるから、何かのミスなのかもしれない。

トラックバック - http://d.hatena.ne.jp/DOSEI/20130425

20130318[Mon]

[][] Mat_<T> の (本当の) 罠  Mat_<T> の (本当の) 罠を含むブックマーク

id:DOSEI:20130306:p1 の訂正記事。のつもりだったけど、まだ理解が不十分だったので以下の文章は治す予定。うのむな

まとめ

cv::Mat_<T> を関数の引数の型にしてはいけない。

理由

cv::Mat_<T> は、 cv::Mat の型を固定した薄いラッパーです。 Mat は任意の型を持てるのだが、メンバ関数 at() などには(通常は正しい)型を指定しなければならない。しかし、あらかじめ型が既知なら、 Mat_ を使うと、その指定が省略できたり、コンストラクタが簡単になったりする。

関数の引数で Mat を受け取ったら、まずは型などを調べて、 Mat_ でラップすればいい。

void f(Mat const& _M)
{
  assert(M.type() == CV_8UC1);
  Mat_<unsigned char> M = _M;
  // M を安全に使う
}

以下のコードだと、型に合わせて変換される。変換の要不要で、もとのインスタンスのクローンになるかが異なるため、わかりづらい。

Mat_::type() は、ラップしてる型を常に返すので、 Mat_ でラップするともともと何の型だったかを調べることが不可能になる。

void f(Mat_<unsigned char> const& M) // !! 変換が不要ならインスタンスそのものがそのまま、必要なら新しいインスタンスが生成・変換されて渡される。
{
  assert(M.type() == CV_8UC1); // !! 常に真
  // M は、呼び出し元で見ているデータを書き換えているかがわかりづらい。
}

kamekamekame877kamekamekame877 2013/03/19 23:54 cv::Mat_<T>::Mat_<T>(const cv::Mat&)などのコンストラクタでは、型チェックをして型が異なる場合はconvertTo()を内部で呼びますので、必ず指定の型のメモリが確保されます。したがって記事のような心配は無用です。

Mat_<T>の(本当の本当の)罠は、基底クラスのMatにアップキャストされてから別の型でcreateしたりshallow copyしたりすることが可能なことです。この場合はもとのMat_<T>として再度使う際にセグフォします。OpenCV関数で、Matの参照を引数に取り、内部でcreateを呼び出す可能性があるものは要注意です。引数のsrcとdstの型を合わる必要が出てきます。

DOSEIDOSEI 2013/03/20 00:06 あー、確かに基底クラスの Mat のコンストラクタが使われるんだから、そうなる気がする…。ということは、同じ型・次元だったらデータがシェアされて、異なっていたらコピーが発生するのか。どちらにせよ、関数の引数の型にしてしまったら、勝手に変換されて、調べる余地がないのは一緒か。 http://docs.opencv.org/modules/core/doc/basic_structures.html#id7 の例は &参照 の場合の注意なのか。わかりずらいわ。

kamekamekame877kamekamekame877 2013/03/20 01:55 正確には基底クラスMatのコンストラクタはデフォルト以外ほぼ使われないですよ〜。Mat_<T>のコンストラクタでは代入演算子が呼ばれると思います。いま、手元にソースがないですけどたしか。
Mat_<T>の挙動はヘッダのmat.hppかoperations.hppに書いてありますよ〜。全部インライン関数なので。なんと、型さえ同じならreshapeしてshallow copyします。
ドキュメントの記事はダウンキャストする際の注意ですね。フツーのキャストなら問題ないです。

トラックバック - http://d.hatena.ne.jp/DOSEI/20130318

20130306[Wed]

[][][] Fedora 18 の Vim のスプリッタをマウスでぐりぐりする  Fedora 18 の Vim のスプリッタをマウスでぐりぐりするを含むブックマーク

Fedora 18 の vim は、ウィンドウのスプリッタがなぜかマウスで動かせない。これは、 ttymousexterm が自動指定されているせいらしい。

通常、自動認識によって xterm2 となるのだが(少なくとも今までのバージョンや、 Ubuntu などは)、この認識に失敗しているようだ。

というわけで、 ~/.vimrcset ttymouse=xterm2 と書いておけばよろしい。

[][] cv::Mat_ を使う場合の注意。  cv::Mat_ を使う場合の注意。を含むブックマーク

以前ここにあった記事は、見えなくしてあります。cv::Mat_<T>::type() などは、 cv::DataType<T>::type などを返すので、元々が何の型の Mat をラッピングしているかは調べられない…。

トラックバック - http://d.hatena.ne.jp/DOSEI/20130306

20130305[Tue]

[][][][] Povray を Fedora 18 にインストールする  Povray を Fedora 18 にインストールするを含むブックマーク

Fedora 18 から、 povray が削除されてしまい、 そもそも Fedora には povray パッケージがなく

しかもサードパーティリポジトリにも Fedora 18 用がないので、自力でビルドしたい。

まず、 ATrpms にある src.rpm をダウンロードする。

$ wget http://dl.atrpms.net/all/povray-3.7.0.RC6-1.src.rpm

ただ残念なことに、 RC6 は Fedora 18 ではビルドできない。

POV-Ray のニューズグループの記事によると、 RC7 で修正されたらしいので、これで置き換える。

まず、 src.rpm をインストールする。

$ rpm -ivh povray-3.7.0.RC6-1.src.rpm

そうすると、 ~/rpmbuild/ 以下に展開される。

~/rpmbuild/SOURCES/povray-3.7.0.RC6.tar.gz があることが確認できる。ここに、 RC7 をダウンロードする。

$ wget http://www.povray.org/redirect/www.povray.org/beta/source/povray-3.7.0.RC7.tar.bz2

SPECS/povray.spec の Version を RC7 に書き換え。あと、 .gz となってる部分を .bz2 に書き換え。(ほんとは、ログとかちゃんと書いた方がいいと思う)。さらに、 40 行目がビルドの際にエラーになるので、削除 (頭に # をつけてコメントアウト。)

で、ビルドする。 SPECS に移動して、

$ rpmbuild --bb --clean povray.spec

長いビルドの末、 RPMS/x86_64/povray-3.7.0.RC7-1.fc18.x86_64.rpm がたぶん完成する。

誰もいらないと思うけど、 ここにこっそり置いておきます。

トラックバック - http://d.hatena.ne.jp/DOSEI/20130305

20130222[Fri]

[][] Windows 7 マシンを無線ルータ化する(アドホック接続)  Windows 7 マシンを無線ルータ化する(アドホック接続)を含むブックマーク

  • 有線でインターネッツできるようにする
  • 「ネットワークと共有センター」を開く
  • 「アダプターの設定の変更」をクリック(「ネットワーク接続」の画面になる)
  • 今つながってる有線 LAN アダプタのプロパティを出す
  • 「共有」タブで、「ネットワーク云々」という上段のチェックを押す
    • 複数の無線アダプタがある場合は、どれにインターネット通信させるかを選ぶドロップダウンボックスが追加されている
    • 2つ目のチェックボックスは任意
    • この作業で、無線アダプタの IP アドレスが自動設定される(解除すれば、元に戻るらしい)
    • このアドレスが、有線LANのほうのネットワークと同じだと都合が悪いので、変えないとならない。
  • 「ネットワーク共有センター」を再び開く(履歴で戻ればいい)
  • 「ワイヤレスネットワークの管理」をクリック
  • 追加で、アドホックを追加する。
    • そこで設定した暗号化とパスワードで、他の機器が接続できるようになる
    • iPad1 だと、 WEP じゃないとつなげなかった。
    • 通知領域のネットワークアイコンを開いて、「ユーザを待機しています」となっているときにつなぐ。
トラックバック - http://d.hatena.ne.jp/DOSEI/20130222
Connection: close