ログイン
編集不可のページディスカッション情報添付ファイル
"clear/note/2011-04"の差分

MMA
1と49のリビジョン間の差分 (その間の編集: 48回)
2011-04-01 01:40:09時点のリビジョン1
サイズ: 669
編集者: clear
コメント:
2011-04-24 23:49:43時点のリビジョン49
サイズ: 11575
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
== 2011/04/01 == = 2011年4月 =
==
04/01 ==
行 3: 行 4:
 * kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
 * いい加減勉強する。コードを書く
  * socket programming
  * X11 programming
行 5: 行 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
作戦目標クリア。システム、通常モードに移行します
}}}

== 04/17 ==
 * dwmとかdmenuをhackしている楽しい人たちが相当数いるようだ
  * https://bbs.archlinux.org/viewtopic.php?id=92895
  * https://bbs.archlinux.org/viewtopic.php?id=80145

=== dmenuいじった ===
[[/17-dmenu|こちら]]に分離

== 04/20 ==
 * 私が`hamegg`です
  * どうしてこうなった! どうしてこうなった!

== 04/23 ==
 * 私は`clear`です
  * このひとなにいってるんだろう
 * 最近''More Effective C++''を原書で読んでいる。比較的古い本だけど勉強になる
  * `new`演算子と`operator new`の違いとか、例外を投げた際は必ず(`throw`で投げた時点で)オブジェクトのコピーが発生するとか、色々新しく知ったり
  * 後でいくつかテストコードを買いてちゃんと挙動を確認する
  * C++で例外を使い出した途端、気をつけなければならない事柄が急増する。kagidで例外を使うか悩む程度には
   * 「ちゃんと」書ければ問題ないが。特に怖いのはリソースリーク
 * ''The Annoted C++ Reference Manual''(大学図書館にあった)とか''The Design and Evolution of C++''(大学図書館にはない? 訳書を生協で売ってる)、も読んでおきたい
  * 何というか、C++にはただ一通り学ぶだけでは分からない落とし穴が多いと思う
   * そもそもある程度知らないと検索のしようがないので、個々の事柄について自分から調べるというよりは、人の書いたまとまった分量の文章(本とかblogとか)を読んで初めて知る、といった感じ
   * 結構クリティカルなものが多いのでたちが悪い
   * それをおいても面白いからもっと使えるようになりたい
 * いろいろな意味でboost

<<Include(/23-kagid)>>

== 04/24 ==
 * muttがしょっちゅうバスエラーで落ちるのは私だけだろうか
 * とりあえず、何もしないデーモン(命名: nulldaemon)を書いてる
 * 「詳解UNIXプログラミング 」図書館にあるので今度借りてくる
  * 欲しいけどご多分に漏れず高い
 * メモ: `/usr/src/lib/libc/gen/daemon.c`

2011年4月

04/01

  • 4月になってしまった
  • kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
  • いい加減勉強する。コードを書く
    • socket programming
    • X11 programming

Synaptics touchpad driver

タッチパッドのレスポンスが以前からよろしくない気がしていたので、synapticsのmanを読んだりここを読んだりしていた。MinSpeedMaxSpeedの値をいじれば良さそうな気がするが、試しに適当に変えてみてもあまり変わった気がしない。静的なパラメータの変更は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引数filenameconstのないただの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とかかな

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。vimrcfiletype plugin onしておく必要がある。

04/15

  • bcdppt(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

テスト。文章は完全にネタなのでスルー推奨

メインシステム、戦闘モード起動

AC用パーツを入手

南東に敵増援を確認

AP50%、機体ダメージが増大しています

作戦目標クリア。システム、通常モードに移行します

04/17

dmenuいじった

こちらに分離

04/20

  • 私がhameggです

    • どうしてこうなった! どうしてこうなった!

04/23

  • 私はclearです

    • このひとなにいってるんだろう
  • 最近More Effective C++を原書で読んでいる。比較的古い本だけど勉強になる

    • new演算子とoperator newの違いとか、例外を投げた際は必ず(throwで投げた時点で)オブジェクトのコピーが発生するとか、色々新しく知ったり

    • 後でいくつかテストコードを買いてちゃんと挙動を確認する
    • C++で例外を使い出した途端、気をつけなければならない事柄が急増する。kagidで例外を使うか悩む程度には
      • 「ちゃんと」書ければ問題ないが。特に怖いのはリソースリーク
  • The Annoted C++ Reference Manual(大学図書館にあった)とかThe Design and Evolution of C++(大学図書館にはない? 訳書を生協で売ってる)、も読んでおきたい

    • 何というか、C++にはただ一通り学ぶだけでは分からない落とし穴が多いと思う
      • そもそもある程度知らないと検索のしようがないので、個々の事柄について自分から調べるというよりは、人の書いたまとまった分量の文章(本とかblogとか)を読んで初めて知る、といった感じ
      • 結構クリティカルなものが多いのでたちが悪い
      • それをおいても面白いからもっと使えるようになりたい
  • いろいろな意味でboost

04/24

  • muttがしょっちゅうバスエラーで落ちるのは私だけだろうか
  • とりあえず、何もしないデーモン(命名: nulldaemon)を書いてる
  • 「詳解UNIXプログラミング 」図書館にあるので今度借りてくる
    • 欲しいけどご多分に漏れず高い
  • メモ: /usr/src/lib/libc/gen/daemon.c

clear/note/2011-04 (最終更新日時 2011-04-30 19:17:27 更新者 clear)