サイズ: 916
コメント:
|
サイズ: 9390
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
== 2011/04/01 == | = 2011年4月 = == 04/01 == |
行 4: | 行 5: |
* いい加減勉強する。コードを書く。 | * いい加減勉強する。コードを書く |
行 10: | 行 11: |
* [[https://wiki.archlinux.org/index.php/Synaptics#The_touchpad_isn.27t_working.2C_Xorg.0.log_shows_.22Query_no_Synaptics:_6003C8.22|わりと長いこと懸案事項だったよく分からないエラーの対処法]] === X11、はじめました === とりあえずウィンドウを出す所までは行った。Win32APIを叩いていた頃の記憶がよみがえるような気がする。手始めに練習として、xmma(MMAのロゴを表示する。元ネタは言うまでもなくxlogo)を作ろうと思う。 * どうやら、Win32APIの勘が結構生かせそうなので対比で学んでいくことにする * 何よりも最初にXサーバとの接続を行う。`XOpenDisplay()` <-> `XCloseDisplay()` * とりあえず何でも送られてくるWin32とは違って、欲しいイベントを最初に通知しておく * 拾わなかったものはどうやら祖先に送られるらしい * `MappingNotify`イベントは問答無用で全てのクライアントに届くらしい。これがどういうものかはまだ分からない * `XEvent`共用体というのがWin32でいうところの`MSG`構造体に当たるようだ。何か凄まじい宣言がなされている。以下`Xlib.h`から引用 {{{#!highlight c numbers=no typedef union _XEvent { int type; /* must not be changed; first element */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; /* 中略。たくさんある */ XGenericEventCookie xcookie; long pad[24]; } XEvent; }}} * `XなになにEvent`構造体はすべて先頭の要素に`type`を持っているために、`type`を見ることでどのイベントか判別できるようだ * 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか {{{#!highlight c numbers=no typedef struct _XEvent { int type; union { XAnyEvent xany; /* ... */ long pad[24]; } u; } XEvent; }}} * `long pad[24];`は境界整合性を確保するための詰め物か。`union`なので、他のメンバが`pad`より小さければ`XEvent`のサイズは`pad`のサイズに従うはず == 04/03 == 日々の記録(これ)の公開範囲を広げた * 公開しても問題なさそうなものの方が多いことに最近気づいたので、外部から読めるようにした * ページを再構築 <<Include(/03-log)>> == 04/05 == <<Include(/05-shinkan)>> ---- <<Include(/05-train)>> == 04/07 == * 百萬石Web公開した(4/6)。後で色々まとめて[[EditHyakumangoku]]にマージする。 === テキストエディタ === 最近emacsを使ってみようかと思い始めている。あれこれ論評できるほどemacsを使っていない、というのが主な理由。vi(m)も活用できていない機能が多い。viで修行することも考える。 === const === `XpmReadFileToPixmap()`の第3引数`filename`が`const`のないただの`char *`だったせいで、`const char *`なものを渡したら当然"invalid conversion"エラーが出る。かといってただの`char *`に文字列リテラルを代入すると"deprecated conversion"警告が出るように、これはあまり良くない。C++なら、これは`const_cast<char *>`の出番か。 == 04/08 == * Arch/kFreeBSD、やってみるかなあ * google先生に聞くと、Archのフォーラムの他に'''Debianのarchパッケージ'''がわんさか出てくる。たぶん[[http://www.gnu.org/software/gnu-arch/index.jp.html|こっちのarch]] * ローリングリリースがネックとなりそう * 少し前に試して分かったことだが、Archの`/etc/rc.d/`以下のスクリプトはbashの文法に依存している。動作が早くならないかなーとか言ってshとかdashに変えてはいけない。 * muttの設定を施そうとして挫折した。`muttrc`でencodingを指定してもeuc-jpで送られる…… * どうもvimのエンコーディング設定(euc-jp)が上書きされている気がする * やっぱりそうだった {{{ :set fileencoding=iso-2022-jp }}} * 毎回設定するのは面倒なので、自動設定する方法を探さねば * autocommandとかかな == 04/10 == * Uターンには気を付けよう * 油断するな * なんとなく家のマシンでVirtualBoxにArchを入れて遊ぶ * nestのVirtualBoxに入れる場合、blueをfedoraに取られてしまった * 別に色に縛られる必要はないか * nestの元ネタであるところのACネタなら、候補はいくらでも出てくるが * インストール途中で挫折。何か壊れてるよこれ * パッケージのインストールまでは成功したように見えたが、各種設定ファイルのテンプレートがことごとく空っぽ * 少し前にpacmanのデータベース形式が変わったが、使用したインストールイメージ(最新)はそれ以前のものなので、ここに問題がある可能性が高い * もう一回パッケージインストールをしたら途中から始まって上手く行った模様。良く分からない * その後は無事にインストールが完了して動いている、ように見える * もっと、もっとコード書こう * POJとかAOJとか活用するのも良いかも * 登録したまま放置してるTopCoderとか == 04/11 == * 部室にあった「X Window ハンドブック」が非常に良さそう == 04/12 == * 端末を8.2-RELEASEに更新した * [[http://www.cyberciti.biz/faq/how-to-upgrade-freebsd-jail-vps/|参考1]]、[[http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html|参考2]] == 04/13 == === mutt+vim、エンコーディングの設定 === メール作成時に上がってくるvimで`:set filetype`すると、どうやらファイルタイプは適切に設定(認識?)されているようだった。あとは`fileencoding`を適切に設定してやればよい。`.vim/ftplugin/mail.vim`に次の1行を書く。 {{{ setlocal fileencoding=iso-2022-jp }}} これでOK。`vimrc`で`filetype plugin on`しておく必要がある。 == 04/15 == * `bcd`、`ppt(6)` * 感動した * See Also: `morse(6)` == 04/16 == * graphvizの`dot`への入力はUTF-8でないといけないのか * 標準入力から読んでくれるので、`nkf -w`とか使って流し込めばいい * やろうやろうと思っていた、日付から無駄な年を削る作業を完了 * 度々お騒がせしております(更新履歴を) * ちょっと追記したり * 衝撃の事実: dwm用のランチャ(dmenu)は全然dwmと連携していなかった * dwmのバーとすっかり同じサイズ、同じフォントで描画するからあたかもdwmの一部であるかのように見えるだけ * dmenuを呼び出す際のオプションは`config.h`に書く -> dwmのバーのフォントとか色とかは`config.h`に書いてある -> 後は分かるな * dmenu自体コンパクトで良いんだけど、何から何まで(パスの通ってるもの全部を、辞書式で)表示してくれるので使ってなかった * パスの通ってるものを表示する機能は実際にdmenuを呼び出すのに使っているdmenu_runというやつが実現しているようだ * dmenu自体は標準入力から受け取ってメニューを作り、選択されたものを標準出力に出すだけ * ということはそういうことだ。上手くやればdynamic度が上がるぞやったね。しかし本当に良く考えられている…… * '''Originally''' designed for dwmってそういうことだったのか * UNIX的。小さいツールを組み合わせることの強み === admonitions === テスト。文章は完全にネタなのでスルー推奨 {{{#!wiki note メインシステム、戦闘モード起動 }}} {{{#!wiki tip AC用パーツを入手 }}} {{{#!wiki warning 南東に敵増援を確認 }}} {{{#!wiki caution AP50%、機体ダメージが増大しています }}} {{{#!wiki important 作戦目標クリア。システム、通常モードに移行します }}} === dmenuの設定 === [[/dmenu|こちらに分離]] |
2011年4月
04/01
- 4月になってしまった
- kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
- いい加減勉強する。コードを書く
- socket programming
- X11 programming
Synaptics touchpad driver
タッチパッドのレスポンスが以前からよろしくない気がしていたので、synapticsのmanを読んだりここを読んだりしていた。MinSpeed、MaxSpeedの値をいじれば良さそうな気がするが、試しに適当に変えてみてもあまり変わった気がしない。静的なパラメータの変更はxorg.conf.d/10-synaptics.confに書けばできる。またsynclientコマンドを使えば動的に設定可能。もう少しパラメータの意味を探る必要あり。
X11、はじめました
とりあえずウィンドウを出す所までは行った。Win32APIを叩いていた頃の記憶がよみがえるような気がする。手始めに練習として、xmma(MMAのロゴを表示する。元ネタは言うまでもなくxlogo)を作ろうと思う。
- どうやら、Win32APIの勘が結構生かせそうなので対比で学んでいくことにする
何よりも最初にXサーバとの接続を行う。XOpenDisplay() <-> XCloseDisplay()
- とりあえず何でも送られてくるWin32とは違って、欲しいイベントを最初に通知しておく
- 拾わなかったものはどうやら祖先に送られるらしい
MappingNotifyイベントは問答無用で全てのクライアントに届くらしい。これがどういうものかはまだ分からない
XEvent共用体というのがWin32でいうところのMSG構造体に当たるようだ。何か凄まじい宣言がなされている。以下Xlib.hから引用
typedef union _XEvent { int type; /* must not be changed; first element */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; /* 中略。たくさんある */ XGenericEventCookie xcookie; long pad[24]; } XEvent;
XなになにEvent構造体はすべて先頭の要素にtypeを持っているために、typeを見ることでどのイベントか判別できるようだ
- 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか
typedef struct _XEvent { int type; union { XAnyEvent xany; /* ... */ long pad[24]; } u; } XEvent;
- 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか
long pad[24];は境界整合性を確保するための詰め物か。unionなので、他のメンバがpadより小さければXEventのサイズはpadのサイズに従うはず
04/03
日々の記録(これ)の公開範囲を広げた
- 公開しても問題なさそうなものの方が多いことに最近気づいたので、外部から読めるようにした
- ページを再構築
04/05
04/07
百萬石Web公開した(4/6)。後で色々まとめてEditHyakumangokuにマージする。
テキストエディタ
最近emacsを使ってみようかと思い始めている。あれこれ論評できるほどemacsを使っていない、というのが主な理由。vi(m)も活用できていない機能が多い。viで修行することも考える。
const
XpmReadFileToPixmap()の第3引数filenameがconstのないただのchar *だったせいで、const char *なものを渡したら当然"invalid conversion"エラーが出る。かといってただのchar *に文字列リテラルを代入すると"deprecated conversion"警告が出るように、これはあまり良くない。C++なら、これはconst_cast<char *>の出番か。
04/08
- Arch/kFreeBSD、やってみるかなあ
google先生に聞くと、Archのフォーラムの他にDebianのarchパッケージがわんさか出てくる。たぶんこっちのarch
- ローリングリリースがネックとなりそう
少し前に試して分かったことだが、Archの/etc/rc.d/以下のスクリプトはbashの文法に依存している。動作が早くならないかなーとか言ってshとかdashに変えてはいけない。
muttの設定を施そうとして挫折した。muttrcでencodingを指定してもeuc-jpで送られる……
- どうもvimのエンコーディング設定(euc-jp)が上書きされている気がする
- やっぱりそうだった
:set fileencoding=iso-2022-jp
- 毎回設定するのは面倒なので、自動設定する方法を探さねば
- autocommandとかかな
- やっぱりそうだった
- どうもvimのエンコーディング設定(euc-jp)が上書きされている気がする
04/10
- Uターンには気を付けよう
- 油断するな
なんとなく家のマシンでVirtualBoxにArchを入れて遊ぶ
nestのVirtualBoxに入れる場合、blueをfedoraに取られてしまった
- 別に色に縛られる必要はないか
- nestの元ネタであるところのACネタなら、候補はいくらでも出てくるが
- インストール途中で挫折。何か壊れてるよこれ
- パッケージのインストールまでは成功したように見えたが、各種設定ファイルのテンプレートがことごとく空っぽ
- 少し前にpacmanのデータベース形式が変わったが、使用したインストールイメージ(最新)はそれ以前のものなので、ここに問題がある可能性が高い
- もう一回パッケージインストールをしたら途中から始まって上手く行った模様。良く分からない
- その後は無事にインストールが完了して動いている、ように見える
- もっと、もっとコード書こう
- POJとかAOJとか活用するのも良いかも
登録したまま放置してるTopCoderとか
04/11
- 部室にあった「X Window ハンドブック」が非常に良さそう
04/12
04/13
mutt+vim、エンコーディングの設定
メール作成時に上がってくるvimで:set filetypeすると、どうやらファイルタイプは適切に設定(認識?)されているようだった。あとはfileencodingを適切に設定してやればよい。.vim/ftplugin/mail.vimに次の1行を書く。
setlocal fileencoding=iso-2022-jp
これでOK。vimrcでfiletype plugin onしておく必要がある。
04/15
bcd、ppt(6)
- 感動した
See Also: morse(6)
04/16
graphvizのdotへの入力はUTF-8でないといけないのか
標準入力から読んでくれるので、nkf -wとか使って流し込めばいい
- やろうやろうと思っていた、日付から無駄な年を削る作業を完了
- 度々お騒がせしております(更新履歴を)
- ちょっと追記したり
- 衝撃の事実: dwm用のランチャ(dmenu)は全然dwmと連携していなかった
- dwmのバーとすっかり同じサイズ、同じフォントで描画するからあたかもdwmの一部であるかのように見えるだけ
dmenuを呼び出す際のオプションはconfig.hに書く -> dwmのバーのフォントとか色とかはconfig.hに書いてある -> 後は分かるな
- dmenu自体コンパクトで良いんだけど、何から何まで(パスの通ってるもの全部を、辞書式で)表示してくれるので使ってなかった
- パスの通ってるものを表示する機能は実際にdmenuを呼び出すのに使っているdmenu_runというやつが実現しているようだ
- dmenu自体は標準入力から受け取ってメニューを作り、選択されたものを標準出力に出すだけ
- ということはそういうことだ。上手くやればdynamic度が上がるぞやったね。しかし本当に良く考えられている……
- パスの通ってるものを表示する機能は実際にdmenuを呼び出すのに使っているdmenu_runというやつが実現しているようだ
Originally designed for dwmってそういうことだったのか
- UNIX的。小さいツールを組み合わせることの強み
- dwmのバーとすっかり同じサイズ、同じフォントで描画するからあたかもdwmの一部であるかのように見えるだけ
admonitions
テスト。文章は完全にネタなのでスルー推奨
メインシステム、戦闘モード起動
AC用パーツを入手
南東に敵増援を確認
AP50%、機体ダメージが増大しています
作戦目標クリア。システム、通常モードに移行します