Yukiharu YABUKI の tDiary
このtDiaryを検索します。
2004-04-09 気がつくかどうか
_ 最初は、エレコムの話から(トラックバックの練習をかねて)
バックドアも酷いが、直さない。放置というのが辛いところ。
http://slashdot.jp/article.pl?sid=04/04/04/1740234
アキバBlog(http://blog.livedoor.jp/geek/tb.cgi/334741)
_ ■気がつくかどうか(2)
本人がやっていることは、本人にはよくわからない。だからこそ、いろんな滑稽なことがおきる。ワインバーグの著書に色々書いてある。フムフムと読むと、自分に思いあたる節がいっぱいです。
2005-04-09
_ 世界の朝ごはん
ベネチア
_ 情報交換
NM Processに入ったことなどを話した.そうすると,相手も nm process に apply する気になってくれそうなのでうれしい.BC州では,鍼灸をやるには免許制になったという.5年も鍼灸の学校へと制度が改正されたそうである.
_ Issue登録に関する翻訳
done, bluedwarf氏へ送付
_ 菓子折り
Hair dye したときにシャツをよごされて,その美容院からシャツをクリーニングに出してもらっていたのを取りにいく.そのとき,いっしよに菓子折りもいただいた.
_ netfort.gr.jp
done, 横山さんに連絡を入れる.
2006-04-09
_ Air Edge 2x パケット方式へ
遅ればせながら、1xから2xへ変更。(http://www.willcom-inc.com/ja/p_s/service/provider/air_edge.html)
地下鉄で、試しに使ってみたら、体感速度も上がったと思います
_ memo:MySQLからPostgreSQLに乗り換えた理由。MySQLより10倍速かったから?!
やはり、案件の内容による。という例に感じる。MySQLからPostgreSQLに乗り換えた理由。MySQLより10倍速かったから?!(http://blog.ohgaki.net/index.php/yohgaki/2006/04/08/mysqla_a_postgresqla_las_a_a_a_a_c_c_p)
_ slashdot.jpの日記
分散していたのを、www.netfort.gr.jp/~yabuki/diary/へ集約したいので、移さないとなあ。slashdot.jp日記をバックアップするスクリプトをどっかでみたのだが、どこだっただろう。google先生にお尋ねしてみたのだが... mixiのは簡単に見付かるのだが ;-)
_ 梅田へ
PiTaPaを使い、御堂筋線で梅田へ移動する。ピッコロにて、美味しくカレーを頂きました。夕ご飯はちょっとあっさり目に野菜炒め。ご飯(炭水化物)はカレーで本日分は規定量を越えたので、夕食でご飯は食べないことに。
_ ヨドバシカメラ
旅行用に、準備のためにやって来た。(1)スーツケース用ストラップを購入した。(2)時計(一つの時計に2つの時刻表示がある)の電池交換(2個)をおこなう。
_ 紀伊国屋書店
RailsによるアジャイルWebアプリケーション開発 を購入。ついでに、PiTaPaで、雑誌を購入。
_ basic instinct
直訳すると、基本的本能。これって、映画「氷の微笑」の原題だったと今ごろ知る。
2007-04-09
_ [Debian] 第2回 関西 Debian 勉強会
Debian GNU/Linux 4.0 ("Etch")も出たことだし、勉強会もがんばりましょ。原案はこんな感じで(http://wiki.debian.org/KansaiDebianMeeting20070421) 受け付けシステムは、http://cotocoto.jp/ を使ってみました。携帯電話も対応みたいで、便利になるかな。
_ ぐるなびやhotpepper.jp
結構、食べ放題特集とかやってて、食べ放題のお店ってあるものなのね。
_ [Debian] Debian Package of the Day
今回は、Tiny CA (http://debaday.debian.net/2007/04/08/rd-tinyca-simple-user-interface-to-manage-a-small-ca/)
_ [Debian] Etch で Opera が動かない件について
DebianHELPより。(http://www.debianhelp.org/node/5925)適当にサマライズ
質問
Etchにアップグレードしたら、operaが動かないんだけど。
答え
既知の問題です。対処方法は、(1)libx11とlibx11-devのバージョンを2:1.0.3-6 に落すこと。または(2)Xの色数を16ビットにする。または(3)operaのweelkyビルドhttp://snapshot.opera.com/unix/Weekly-635/を使うこと
Markさんは、operaのweeklyビルドを使うことにしたようです。
_ [Debian] cwiid #3
Debパッケージのwmiputを動かすためには、適切な場所に設定ファイルを書いて置く必要がある。ユーザの環境で実行すると、下記のコードの部分が実行される。main.c95 /* Load Config */ 96 if ((tmp = getenv("HOME")) == NULL) { 97 wminput_err("unable to find home directory"); 98 config_search_dirs[0] = WMINPUT_CONFIG_DIR; 99 plugin_search_dirs[0] = CWIID_PLUGINS_DIR; 100 config_search_dirs[1] = plugin_search_dirs[1] = NULL; 101 } 102 else { 103 snprintf(home_config_dir, HOME_DIR_LEN, "%s/.cwiid/wminput", tmp); 104 snprintf(home_plugin_dir, HOME_DIR_LEN, "%s/.cwiid/plugins", tmp); 105 config_search_dirs[0] = home_config_dir; 106 plugin_search_dirs[0] = home_plugin_dir; 107 config_search_dirs[1] = WMINPUT_CONFIG_DIR; 108 plugin_search_dirs[1] = CWIID_PLUGINS_DIR; 109 config_search_dirs[2] = plugin_search_dirs[2] = NULL; 110 } 111 112 if (conf_load(&conf, config_filename, config_search_dirs, 113 plugin_search_dirs)) { 114 return -1; 115 }ということで、~/.cwiid/wminputの下などに、config_filenameに設定されているファイル名を捜しに行く訳です。
プラグインの置き場所は、
yabuki@Ernalda:~$ ls -la /usr/lib/cwiid/plugins/ 合計 32 drwxr-xr-x 2 root root 4096 2007-04-02 16:54 . drwxr-xr-x 3 root root 4096 2007-03-31 02:58 .. -rw-r--r-- 1 root root 4648 2007-04-02 16:54 acc.so -rw-r--r-- 1 root root 4616 2007-04-02 16:54 ir_ptr.so -rw-r--r-- 1 root root 4744 2007-04-02 16:54 nunchuk_acc.soに配置してある。こういうのをちゃんと設定ファイルに書き込んであげればいいかと。上記のソース中にある WMINPUT_CONFIG_DIR は、makefile で与えているようだ。
yabuki@Ernalda:~/src/deb-package/cwiid/cwiid-0.5.02$ grep -nri WMINPUT_CONFIG_DIR * grep: debian/libwiimote0-dev/usr/lib/libwiimote.so: そのようなファイルやディレクトリはありません grep: debian/wminput/usr/share/wminput/plugins: そのようなファイルやディレクトリはありません wminput/Makefile:11: -DWMINPUT_CONFIG_DIR=\"$(WMINPUT_CONFIG_DIR)\" wminput/Makefile:15:WMINPUT_CONFIG_DIR = $(CWIID_CONFIG_DIR)/wminput wminput/Makefile:32: install -d $(WMINPUT_CONFIG_DIR) wminput/Makefile:33: install configs/* $(WMINPUT_CONFIG_DIR) wminput/Makefile:34: ln -sf $(WMINPUT_CONFIG_DIR)/acc_ptr \ wminput/Makefile:35: $(WMINPUT_CONFIG_DIR)/default wminput/Makefile:38:# rm -f $(WMINPUT_CONFIG_DIR)/default wminput/Makefile:40:# rm -f $(WMINPUT_CONFIG_DIR)/$$c; \ wminput/Makefile:42:# rmdir $(WMINPUT_CONFIG_DIR); true wminput/main.c:98: config_search_dirs[0] = WMINPUT_CONFIG_DIR; wminput/main.c:107: config_search_dirs[1] = WMINPUT_CONFIG_DIR; wminput/Makefile.in:11: -DWMINPUT_CONFIG_DIR=\"$(WMINPUT_CONFIG_DIR)\" wminput/Makefile.in:15:WMINPUT_CONFIG_DIR = $(CWIID_CONFIG_DIR)/wminput wminput/Makefile.in:32: install -d $(WMINPUT_CONFIG_DIR) wminput/Makefile.in:33: install configs/* $(WMINPUT_CONFIG_DIR) wminput/Makefile.in:34: ln -sf $(WMINPUT_CONFIG_DIR)/acc_ptr \ wminput/Makefile.in:35: $(WMINPUT_CONFIG_DIR)/default wminput/Makefile.in:38:# rm -f $(WMINPUT_CONFIG_DIR)/default wminput/Makefile.in:40:# rm -f $(WMINPUT_CONFIG_DIR)/$$c; \ wminput/Makefile.in:42:# rmdir $(WMINPUT_CONFIG_DIR); trueということで、debian/rulesファイルを読む。
#!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/autotools.mk # In order to regenerate 'debian/control' : # DEB_AUTO_UPDATE_DEBIAN_CONTROL=yes fakeroot debian/rules clean # Then check manually if everything's ok DEB_CONFIGURE_EXTRA_FLAGS := --with-cwiid-config-dir="\$${debroot}/etc/cwiid" --disable-ldconfig DEB_MAKE_INSTALL_TARGET := install debroot=$(CURDIR)/debian/tmp prefix=$(CURDIR)/debian/tmp/usr DEB_INSTALL_CHANGELOGS_ALL := ChangeLog configure/libwiimote0-dev:: mkdir -p $(CURDIR)/debian/tmp/usr/include configure/libwiimote0:: mkdir -p $(CURDIR)/debian/tmp/usr/lib configure/wmgui:: mkdir -p $(CURDIR)/debian/tmp/usr/bin configure/wminput:: mkdir -p $(CURDIR)/debian/tmp/usr/bin binary-install/wminput:: chmod -x $(CURDIR)/debian/wminput/etc/cwiid/wminput/* clean:: rm -rf config.logCDBSスタイルになっている。 /etc/cwiidの下。 Debianは、設定ファイルを/etcの下に置くという掟がある。そのため
yabuki@Ernalda:~/src/deb-package/cwiid/cwiid-0.5.02/wminput$ ls -laR /etc/cwiid/ /etc/cwiid/: 合計 16 drwxr-xr-x 3 root root 4096 2007-03-31 02:58 . drwxr-xr-x 159 root root 8192 2007-04-09 21:18 .. drwxr-xr-x 2 root root 4096 2007-04-02 16:55 wminput /etc/cwiid/wminput: 合計 36 drwxr-xr-x 2 root root 4096 2007-04-02 16:55 . drwxr-xr-x 3 root root 4096 2007-03-31 02:58 .. -rw-r--r-- 1 root root 70 2007-03-20 21:47 acc_ptr -rw-r--r-- 1 root root 628 2007-03-20 21:47 buttons lrwxrwxrwx 1 root root 84 2007-04-02 16:54 default -> /home/yabuki/src/deb-package/cwiid/cwiid-0.5.02/debian/tmp/etc/cwiid/wminput/acc_ptr -rw-r--r-- 1 root root 406 2007-03-20 21:47 gamepad -rw-r--r-- 1 root root 77 2007-03-20 21:47 ir_ptr -rw-r--r-- 1 root root 63 2007-03-20 21:47 neverball -rw-r--r-- 1 root root 94 2007-03-20 21:47 nunchuk_acc_ptrでみてみると、あれれ??? 本当は、/etc/cwiid/wminput/defaultは、同じディレクトリにあるacc_ptrにln -s(ソフトリンク)をしないといけないんじゃないかなー。acc_ptrの中身をみるとちゃんとコンフィグレーションがされている風味。あとは、wminput に設定ファイルは /etc/cwiid/の下にあるぞってのを教えてやるとうまく行きそうな予感。--- うまくいきました。
関西 Debian 勉強会あたりでネタにするか。
2008-04-09
_ memo: About Innovation
(http://www.geekpage.jp/blog/?id=2008/4/6/1)のWeb Pageより Google Tech Talk で 積んどくリストにのっけてあるイノベーションの神話(Scott Berkun/村上 雅章)に関連する記事を読めた。
_ memo:gold: Google Releases New and Improved GCC Linker
http://google-opensource.blogspot.com/2008/04/gold-google-releases-new-and-improved.html)より。Ian Lanceさんが、GNU Linkerをスクラッチから書き直して、機能は全く変わらないけど、新しい機能として*5倍のスピード*で動作する Linker を作ったとのこと。そして先月オープンソースコミュニティへリリースをした。
2009-04-09
_ USB HID(Human Interface Device)
バーコードリーダーと関連する。物品管理に便利なUSBバーコードリーダー(http://k-tai.impress.co.jp/cda/article/todays_goods/44500.html)は、HIDデバイスとして認識できれば、Linuxでもつかえるとのこと。要するに、人間の代わりに読み取ったコードをキーボードから入力するようなものなのである。
_ Linux kernel で使われている rtt_sample の sample は動詞の sample
sampleって動詞でつかうと、(見本をとって)質を試す/味を見る/経験する/標本抽出する/などの意味になる。rtt_sample は、定義はinclude/net/ipv4/tcp.hに、使われている部分(net/ipv4/tcp_input.cを見ると *1
/* * Interface for adding new TCP congestion control handlers */ #define TCP_CA_NAME_MAX 16 struct tcp_congestion_ops { struct list_head list; /* initialize private data (optional) */ void (*init)(struct sock *sk); /* cleanup private data (optional) */ void (*release)(struct sock *sk); /* return slow start threshold (required) */ u32 (*ssthresh)(struct sock *sk); /* lower bound for congestion window (optional) */ u32 (*min_cwnd)(const struct sock *sk); /* do new cwnd calculation (required) */ void (*cong_avoid)(struct sock *sk, u32 ack, u32 rtt, u32 in_flight, int good_ack); /* round trip time sample per acked packet (optional) */ void (*rtt_sample)(struct sock *sk, u32 usrtt); /* call before changing ca_state (optional) */ void (*set_state)(struct sock *sk, u8 new_state); /* call when cwnd event occurs (optional) */ void (*cwnd_event)(struct sock *sk, enum tcp_ca_event ev); /* new value of cwnd after loss (optional) */ u32 (*undo_cwnd)(struct sock *sk); /* hook for packet ack accounting (optional) */ void (*pkts_acked)(struct sock *sk, u32 num_acked); /* get info for inet_diag (optional) */ void (*get_info)(struct sock *sk, u32 ext, struct sk_buff *skb); char name[TCP_CA_NAME_MAX]; struct module *owner; };
この中で、必須項目は、required とされているsshreshとcong_avoidである。あとは必要に 応じて定義して呼び出してもらう形となる。rtt_sampleも関数のポインターとして定義されているのが わかるだろう。
/* Remove acknowledged frames from the retransmission queue. */ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p) { struct tcp_sock *tp = tcp_sk(sk); const struct inet_connection_sock *icsk = inet_csk(sk); struct sk_buff *skb; __u32 now = tcp_time_stamp; int acked = 0; __s32 seq_rtt = -1; u32 pkts_acked = 0; void (*rtt_sample)(struct sock *sk, u32 usrtt) = icsk->icsk_ca_ops->rtt_sample; struct timeval tv; ...snip.... if (acked&FLAG_ACKED) { tcp_ack_update_rtt(sk, acked, seq_rtt); tcp_ack_packets_out(sk, tp); if (rtt_sample && !(acked & FLAG_RETRANS_DATA_ACKED)) (*rtt_sample)(sk, tcp_usrtt(&tv)); if (icsk->icsk_ca_ops->pkts_acked) icsk->icsk_ca_ops->pkts_acked(sk, pkts_acked); } static u32 tcp_usrtt(struct timeval *tv) { struct timeval now; do_gettimeofday(&now); return (now.tv_sec - tv->tv_sec) * 1000000 + (now.tv_usec - tv->tv_usec); }
*1 Debian GNU/Linux Etchの Kernel 2.6.18にてチェック
2010-04-09
_ 「コミュニティ団体運営の手引き」〜自治会、町内会、その他地域活動を行うグループの皆さまに〜
総務省トップ > 組織案内 > 研究会等 > コミュニティ組織のガバナンスのあり方に関する研究会 > 「コミュニティ団体運営の手引き」〜自治会、町内会、その他地域活動を行うグループの皆さまに〜ってことで、総務省の研究会から、「コミュニティ団体運営の手引き」が出た。(http://www.soumu.go.jp/main_sosiki/kenkyu/community_governance/27329_3.html)どのぐらいの影響力と他方面との調整が終わっているかわからないが、なーんも無いよりはマシ。お金について揉めないようにと色々かいてはります。
_ deb.li - the Debian ShortURL service
Debian が ShortURL service を持つ意味はなんだろう。...(http://wiki.debian.org/deb.li)
_ aegis
現在主流の、分散管理リポジトリをつかったワークフローと Aegis が提供するワークフローにどれだけの差があるのだろうか。
トランザクションベースのソフトウェアの構成管理
Aegis は、開発者のチームがプログラムに対して別々に多くの変更を加えるような作業が行えるフレームワークを提供します。そのような作業時に、Aegis は各変更をできるだけ壊さずにまとめ、プログラムのマスタソースコードへの統合を行います。
Aegis は、トランザクションベースの手法をバージョン管理に適用することにより、複数の開発者および開発コードツリーが連携する際の問題を単純化します。また、Web ブラウザで閲覧可能なレポジトリや統合されたテスト機構が提供されています。
Aegis のドキュメントについては aegis-doc パッケージを、Tk ベースのユーザインターフェイスについては aegis-tk パッケージ、Web ベースのユーザインターフェイスについては aegis-web パッケージをご覧ください。[Debian sidのaegisパッケージ解説より引用]
Aegis
Aegis is a project change supervisor, and performs some of the Software Configuration Management needed in a CASE environment. Aegis provides a framework within which a team of developers may work on many changes to a program independently, and Aegis coordinates integrating these changes back into the master source of the program, with as little disruption as possible. Resolution of contention for source files, a major headache for any project with more than one developer, is one of Aegis's major functions.[Software by Peter Millerより引用]
_ libbfd.aの具体例
libbfd.aの続き。
ってことができると。上のコードでは nm の出力を使ってシンボルの情報を取得しています。外部コマンドを呼び出さないでシンボルの情報を取得するには libbfd というライブラリを使うと便利です。libbfd を使ったコードの例としては、鵜飼さんの livepatch が参考になります。また、livepatch では /proc/PID/maps を見て共有ライブラリ内のシンボル情報の取得およびアドレスの再配置の計算を行っていますが、ここでは実行形式ファイルに含まれるシンボルだけを対象としました。
_ 静的リンクと動的リンクの混合(その2)
なぜstatic linkか
Linuxそのものは単一のOSでありながら、ディストリビューションによって入ってるライブラリやバージョンに違いがあって、あるLinuxのバイナリをそのまま他のLinuxへ持っていって動くということはめったにない。では足りないライブラリを新しく入れればいいのではないかとも思うが、ライブラリの依存が依存を呼び、ひとつのライブラリをインストールするために山ほど依存するライブラリを入れねばならないということもある。これを Dependency Hellとも言う。aptのように依存チェックを行って自動で入れてくれるものもあるが、採用しているのは一部のディストリビューションのみである。
そこで静的リンクの登場となる。静的リンクとは、つまり依存するライブラリを実行ファイルの中にあらかじめ含めてしまうことで、こうすれば依存するのは Linuxカーネルのみとなる。つまりディストリビューションに関わらず使えるようになる。ただしライブラリを実行ファイルに含めるのでファイルサイズは大きくなるし、他のアプリケーションと共通のライブラリを使っていたとしても、新たにメモリを確保される。それでもほとんどのライブラリは数KBから大きくても100MBを超えるようなものはまずないと思うので、相当古いマシンを使うのでなければ余裕で動作させられるだろう。
[Linux静的リンクのすすめより引用]
上記のことはわかっててやっているのなら良いが、preloadの仕組みなどで動的なリンクを仮定している場合もあるので、勉強のためにはやってみるのが良いと思う。静的リンクと動的リンクの混合で触れたような考察や、既存で動的リンクと静的リンクを併用している oprofile の事例を研究してみるのも良い。2011-04-09
_ Rubyでマルチプラットホーム対応ですが、GUIのアプリケーションを作って各プラットホームで簡単に配布するベストプラクティスは何か?
まあ、自分で使うんだったら別に bundle とかで構わない。コンパイル環境も作るし、extも別に困らない。
Web環境全盛のいまの時代、とりわけ Rails があるので、デプロイがめんどくさくてもブラウザがあれば使ってもらえる環境なんでWeb経由でRubyを使うのなら一般ユーザは困らないので、少数派かもしれないなあと思いつつもメモ
- エンドユーザにやってもらうなら、理想はファイル一つだけで、インストールや更新ができるといい
- 自分の開発環境は、GNU/Linuxでやるけど、使ってもらう人には、WindowsやMacでも簡単に使って欲しい
- 上記とプログラミングの手間のバランスだと、ツールキットは、gtkかqtになる?
- GUIアプリケーションも、RailsのようにMVCで作りたいよね?
- GUIアプリケーションも、Railsが使っている Active Record や Active Support を使いたいよね?
- Rubyスクリプトをexeにしてくれるのもあったけど、gemが複数あったり、extがあるのはどうなるのかな?
- RubyもMatz Rubyだけじゃなくて、
以下はアトランダムにメモ
_ [Ruby] 差分探しはコンピューターに
Diffに食わせ難いデータの差分探しをどうするか、一つの答えとして、Rubyは、集合演算できるので、irbで、%w[] をつかって集合を定義し、-オペレータで演算しちゃう。差分がなかったら、空集合
irb(main):005:0> a1 = %w[ hoge fuga moge moge1 mogee ] => ["hoge", "fuga", "moge", "moge1", "mogee"] irb(main):006:0> b1 = %w[ hoge fuga moge moge2 mogeb ] => ["hoge", "fuga", "moge", "moge2", "mogeb"] irb(main):007:0> b1 - a1 => ["moge2", "mogeb"]