2009-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
いわゆるスケジューラ。今は MHC 使っているけど、今後使うことがあるか
もしれない。Google カレンダー + Sunbird はなかなかナイスらしく、オ
フラインでも予定チェックできるらしい。
(URL: Mozilla Sunbird)
[2009-03-29-2] の「断る力」で紹介されていたテストをやってみた。
マスタカさんは、ややメランコ的なところがあります。
どちらかというとしっかりとした自分を持っている人です。まわりの意
見を聞きながら、自分の意見を崩さないで、よりよい自分にしていくため
には、有利なスタンスにあると言えます。
他人の意見に流されず、多少にしっかりしたところがありますが、まだ
まだ自分へのこだわりも強く、ちょっとしたところでトラブルが起きるか
もしれないので要注意。
あなたのメランコ度、シゾフレ度は以下の通りです。
メランコ度 68%
シゾフレ度 14%
(URL: 和田秀樹のココロクリニカ[シゾフレ・メランコテスト])
「自分へのこだわり」っていうのは気をつけないといけないな。ここ2〜
3年、自分が思ったことを全部話さずにいられないことがあるし、人の意
見を聞いていないこともある。どちらも気をつけているけど、なかなかコ
ントロールは難しい。
いい感じ。以下を設定したあと、Mew を再起動すれば表示される。
(setq mhc-summary-use-cw t mhc-use-week-separator t mhc-start-day-of-week 1)
(URL: http://carz.air-nifty.com/sowhat/2008/08/emacs_d408.html)
小飼弾さんのブログで勝間さんの本が紹介されていたので、気になってい
たんです。今日、近所の文教堂に行ったら2冊とも置いてあったので、
まとめて買ってきました。
(URL: 404 Blog Not Found:assert(yourself); - 書評 - 断る力)
(URL: 404 Blog Not Found:Live your life - 書評 - 会社に人生を預けるな)
天皇になろうとした将軍—それからの大平記 足利義満のミステリー
「言霊(コトダマ)の国」解体新書
朝日新聞の正義—対論 戦後日本を惑わしたメディアの責任
日本史漫遊
宮本武蔵 最強伝説の真実
ほんとうの環境問題
正義で地球は救えない
三国志 英雄たちの最期の瞬間!
このダジャレで生きのびろ!
聖剣伝説4
以上をブックオフで売ってきました。
これで 510 円かあ。相変わらず売り叩くなあ。
トップページ以外(日ページ、月ページ、カテゴリページ)は、各アイテム
を古い記事から新しい記事の順に表示するようにしました。
例えばあるカテゴリや、ある月の記事を最初から最後まで見る場合は、古
い記事→新しい記事の順で並んでいたほうが見やすいと考えたからです。
(そんな人がいるのかはヽ(^_^;))((^,^;)ノ置いといて。)
今回も chalow 本体を修正しました。オリジナル(chalow-1.0.tar.gz)の
cl.conf と chalow へのパッチを貼り付けておきますね。
追記(2011-07-06):
GitHub に push しました。
《続きを読む》
[2009-03-21-1] に手動更新でお茶を濁していた「最近追記された記事」で
すが、自動更新するようにしました。
「追記YYYYMMDD:」といったマークをつけて追記すると、左側の「最近追加
された記事」に自動的に表示されます。デフォルトの設定では 5 つ表示し
ます。"YYYYMMDD" は例えば "20090326" です。chalow を更新しないと、
(?日前) は更新されません。
[2009-03-22-3] の ChangeLogReader.rb で実装しようかなとも考えていま
したが、結局 chalow 本体を修正しました。Perl 初心者なので、変なこと
してたら教えてください。^^;
以下にオリジナル(chalow-1.0.tar.gz)の cl.conf と chalow へのパッチ
を貼り付けておきます。
追記(2009-04-05):
例えば 2009.4.5 に [2009-03-07-1] と [2009-03-26-1] に追記を行うと、
後者だけしか「最近追記された記事」の候補に上がらないので chalow へ
のパッチを差し替えました。
また、埋め込む URL を絶対パスから相対パスに変更しました。
追記(2011-07-06):
GitHub に push しました。
《続きを読む》
もはや私以外は興味ないと思いますがw、続けます。
各記事ごとにコメントを付けられるようにしました。レイアウトはすっき
りさせたつもりです。
こういうブログサイトって、いろいろな機能がカオスのように付いてます
よね。当人以外は何がなんだか分からないのでは...。ああはならないよう
に、一つ増やしたら一つ減らすの精神で精進していきます。
で、いきなり矛盾しますが、左側になかのひとを設置しました。日本地図
の画像です。「どんな組織からアクセスがあったか」が分かります。一般
の大手プロバイダーからのアクセスは集計しません。
何がすごいって、アクセスがあった会社名をクリックすると、その会社の
地図が表示されるんです。最初のインパクトは大きいです。お〜ってなり
ます(笑)。ブログを持っている人は試してみると良いかも。
「くっつき BBS」の各ログファイルをローカルに持ってきて、リモートに
アップしたらタイムスタンプが更新されてしまった。どうやら FTP の仕様
にはタイムスタンプを扱う機能はないらしい。
(URL: http://nsjnotes.blogspot.com/2008/04/ftp_11.html)
左側の「最近コメントを頂いた記事」が全て「(0時間前)」になってしまっ
た。うーん。(x_x)
Ruby 版の Chalow ってのがありました。
(URL: http://www.ftnk.jp/~fumi/cl/2009-02-12-1.html)
移行するかどうかは置いといて、rchalow-0.0.2.tar.bz2 に同封の
ChangeLogReader.rb。これを使えば Perl が分からない私でも
[2009-03-21-1] の tuiki.js を作れそうな気がしてきました。
デフォルトの cl.conf は、トップページにしか左側のサイドメニューを表
示しない設定になっていました。良く分からないので放置していましたが、
この度一念発起して全てのページで表示するようにしました。レイアウト
も統一したので、各ページがだいぶフラットになりました。
内部的には、カウンタやアクセス解析を書く場所を統一できたため、管理
が楽になりました。
chalow ver2 早く出ないかな。
(URL: http://chalow.net/2008-01-26-1.html)
「たつをの ChangeLog」を見ていたら、各記事の最後にこんなのが付いて
いました。
↓面白そうなので、各記事の下に付けてみました。邪魔になったらまた考えます。
追記(2009-03-23):
記事ごとにコメントを付けられるようにしたら早速邪魔になったので、
「固定リンク」の先でだけ表示するようにしました。
過去の記事に断りなく修正することがありますが、「追記YYYYMMDD:」と断
り(?)を入れて追記することもあるので、左側に「最近追記された記事」を
表示するようにしました。
(URL: http://chalow.net/2005-01-31-4.html)
「最近コメントを頂いた記事」や「最近トラックバックを頂いた記事」と
同じように、JavaScript ファイル tuiki.js を作って index.html から読
み込ませています。ただ tuiki.js を更新するスクリプトがないため、
まだほぼ手動で更新しています...。もちろん自動化しますが、さてどうやっ
てやろうかな。
記事 ID ではなく、記事タイトルを表示するのも良いかもしれません。
(URL: http://chalow.net/2008-09-21-3.html)
せっかくの休みなのでw、printf() のような関数を自作してみた。
static char my_buffer[1024 * 1024]; extern void my_printf(const char *fmt,...);
訳あって、書き出し先は my_buffer という外部変数。
va_list も訳あって使えないので、可変長引数は自前で読み込む。
可変長引数はどう読み込めば良いか? C 言語の場合、内部変数はスタック
に積まれるため、後に宣言したものの方が若いアドレスになる。でも、引
数の場合は違っていて、「引数1」の次のアドレスに「引数2」が存在する
ことが保証されているらしい。
(URL: http://networkprogramming.blog18.fc2.com/blog-entry-7.html)
これを利用すれば、可変長引数を自前で読み込むのは簡単。
fmt の中に %d や %x が見つかるたびに param32p を読み進めていけば良い。
void my_printf(const char *fmt,...) { unsigned long int *param32p = (unsigned long int *)&fmt + 1;
ところが!!試しに最適化レベルを 3 にしたら、「引数1」の *前の* ア
ドレスに「引数2」が存在していた。ガセだったか...。以下のページにも
可変長引数を扱う時は stdarg.h 使えと書いてあった。va_list が使えな
いというのは勘違いな気がしてきたので、後で確認してみよう。
(URL: http://docs.hp.com/ja/B2355-90858/stdarg.5.html)
itoa() も使えないため自作した。「符号あり/なし 10 進数」と「符号な
し 16 進数」をサポートしたが、意外に大変だった。一番時間かかったかも。
やっと printf() モドキが完成!!
と言いたいところだけど、"%d" の数と可変長引数の数が合ってなくても
warning にならないのね。ちょっとヤダなあ...。
調べてみたら、gcc 系の場合以下のように宣言すれば良いことが分かった。
extern void my_printf(const char *fmt,...) #ifdef __GNUC__ __attribute__ ((format (printf, 1, 2))) #endif /* __GNUC__ */ ;
__attribute__ については、以下にある程度まとまっていた。
いろいろあるなあ。。。
(URL: http://sugarpot.sakura.ne.jp/yuno/?gcc%2Fattribute)
追記(2009-03-21):
コメントにもありますが、最適化レベル 3 で動作が変わったのはインライ
ン展開されていたためでした。インライン化できないような単純でない関
数にしたり、__attribute__((noinline)) を付けたりすれば大丈夫そうで
すが、移植性が落ちるのでやはり避けた方が良いと思います。
建築のマネジメントはシステム構築とよく似ている。似ているというよ
り,システム構築のプロジェクト・マネジメントの原型が建築である。
(URL: http://itpro.nikkeibp.co.jp/article/COLUMN/20080520/303016/)
へぇ〜 そうなのか。
ちなみにこれは「すごい現場」というコラムの第9回です。恐ろしい。。。
ファイルの MIME タイプを確認
% svn propget svn:mime-type hoge.pdf
ファイルの MIME タイプをバイナリ(application/octet-stream)に設定
% svn propset svn:mime-type application/octet-stream hoge.pdf
ファイルの MIME タイプを application/pdf に設定
% svn propset svn:mime-type application/pdf hoge.pdf
ファイルの MIME タイプを削除
% svn propdel svn:mime-type hoge.pdf
追記(2011-03-06):
似たような操作で svn:ignore 属性を追加したり、削除したり出来ます。
Subversionで無視パターンを指定 - てんぷらメモ
追記(2011-12-30):
svn commit すると反映されます。svn revert すると、propset が破棄さ
れます。svn revert と git checkout は似ていますね。
以下の Web site にサンプルソースとともに簡潔にまとめられていた。
素晴らしい。
(URL: http://www.ueda.info.waseda.ac.jp/~toyama/network/example2.html)
サーバ -> Cygwin on WindowsXP
クライアント -> Debian GNU Linux squeeze (testing)
- Debian では libsocket が見つからなくてリンクエラーになった。
Linux では不要らしいので、Makefile 中の -lsocket を削除した。
- Cygwin では libsocket と libnsl が見つからなくてリンクエラーに
なった。両方とも cygwin1.dll に含まれているらしいので、Makefile 中
の -lsocket と -lnsl を削除した。
- Cygwin で iserver.exe を実行し、クライアントからの通信待ち受け状
態にした。
- Linux で iclient を実行した。そのまま文字列を打ち込んだら、大文字
に変換されて表示された。成功!
- 大文字への変換は iserver.c の toupper() で行っている。iclient は
標準入力から受け取った文字列をサーバに送り、送り返された文字列を
printf() しているだけ。
SMTP プロトコルが定義された RFC 5321 によると、"4.5.3.1.6. Text
Line" に一行は(英文字で) 1000 文字までと制限されている。
原文
The maximum total length of a text line including the <CRLF> is 1000
octets (not counting the leading dot duplicated for transparency).
This number may be increased by the use of SMTP Service Extensions.
日本語訳
<CRLF> を含むテキスト行の最大長は 1000 オクテットです(透過性のために
付けられた複製した先頭のドットはカウントしません)。この数値は SMTP
サービス拡張の使用によって増加するかもしれません。
(URL: http://www.hde.co.jp/rfc/rfc5321.php)
実際はユーザが意識する必要はなくて、MUA(メーラ) が適切に処理してく
れる。例えば Mew は長い行があるとエンコード方法を訊いてくる。
Lines are too long. Input encoding (base64):
ではメーラが適切に処理しなければどうなるのか? MTA(転送プログラム)
が適切に処理してくれる。例えば sendmail の標準的な設定では、990 文
字目に !<cr><lf> が挿入される。
もっとも、メーラは RFC 5321 を意識しているわけではなく、RFC 2822(電
子メールの仕様) に則って実装されている。"2.1.1. Line Length
Limits" によると、1 行は(英文字で) 78 文字以下であるべきで、998 文
字以下でなければならないと定められている。
原文
There are two limits that this standard places on the number of
characters in a line. Each line of characters MUST be no more than
998 characters, and SHOULD be no more than 78 characters, excluding
the CRLF.
日本語訳
この標準では1行中の文字数に2つの制限がある。それぞれの行の文字はCRLF
を除いて、決して998文字以下でなければならず(MUST)、78文字以下であるべ
きである(SHOULD)。
(URL: http://www.puni.net/~mimori/rfc/rfc2822.txt)
RFC 3676 による Text/Plain の拡張
一方、RFC 3676 で Text/Plain が拡張され、送信元のメーラが対応してい
ればユーザは長い行を気軽に書いてもよくなった。そのようなメールのヘッ
ダ部分には "Text/Plain" のパラメータとして "format=flowed" が設定さ
れ、長い行の途中には適度に「半角スペース+改行」が挿入される。これに
より連続した行が折り返されたものか、本当に改行されたものかが分かる。
そのため、受信者側のメーラは適度に改行して表示できるようになった。
Content-Type: Text/Plain; charset=us-ascii; format=flowed
上記は英語本文の場合だが日本語本文の場合、以下のような値となる。
Content-Type: Text/Plain; charset=iso-2022-jp; format=flowed; delsp=yes
"delsp=yes" とは何か?英語本文は単語の途中で折り返されることはない
ため、折り返された行を連結したい時は行末のスペースをそのまま単語の
区切りに使えばよい。しかし、日本語本文でそれをやると単語の途中で半
角スペースが現れ、みすぼらしい文章になる。よって、連結する時は行末
の半角スペースを削除してねというお願いが "delsp=yes" というわけ。
Mew のデフォルトでは "format=flowed" は OFF だが、以下の 2 種類の方
法で ON にすることが出来る。
;;送信メールは常に "format=flowed" を ON にする。 (setq mew-use-format-flowed t)
;;現在作成しているメールの "format=flowed" を ON にする。 draft-mode で C-c C-f
Mew は "format=flowed" でないメールは、何も加工せずに表示する。
Summary-mode で `_' することによって、折り返された行、長い行、通常
の行の順に行の表示を変えることが出来る。
それに対して、"format=flowed" なメールは一度 `_' された状態で表示される。
※ Mew での長い行の扱いについては、Info の longline の項に記載されている。
変更してはいけないファイルを閲覧する時に、あらかじめ
M-x toggle-read-only する人も多いかと思います。以下の設定をしておく
と、ページャライクな操作も行えるようになるのでオススメです。
view-mode の詳細は "F1 f view-mode" をご覧下さい。
;; read-only の時は view-mode にする。 (setq view-read-only t)
私はさらに less コマンド の G,j,k 相等のことも行えるようにしています。
(defun view-goto-line-last (&optional line) (interactive "P") (View-goto-line (if (integerp line) line (line-number-at-pos (point-max))))) (add-hook 'view-mode-hook (lambda () (define-key view-mode-map (kbd "G") 'view-goto-line-last) (define-key view-mode-map (kbd "j") 'View-scroll-line-forward) (define-key view-mode-map (kbd "k") 'View-scroll-line-backward)))
ここのページにモードラインの " View" の文字列を目立たせる設定があり
ました。便利そうなのでこれも設定しました。
(eval-after-load "view" '(setcar (cdr (assq 'view-mode minor-mode-alist)) (list (propertize " View" 'face '(:foreground "white" :background "DeepPink1")))))
UNIX での圧縮には gz か、より圧縮率の高い(しかし圧縮に時間がかかる)
bzip2 が使われることが多い。
2009/1/29 に新しく xz という形式が公開されたとのこと。最大の特徴は、
その高い圧縮率と高速な伸長、そして激遅なw圧縮。そういう性格から、
組み込みアプリケーションに期待されているそう。
ややこしいのが、開発元の The Tukaani Project に行くと、XZ Utils と
LZMA Utils の2つあること。今まで後者の名前で開発されていたそうだが、
正式リリースにあたり前者の名前に変わったようだ。ただ、Latest
release が xz-4.999.8beta.tar.gz なので、まだベータ版なのかな。
GNU tar も 1.22 から xz をサポートしたとのこと。
さてどうしようか。←何が ^^;
(URL: http://www.jmuk.org/diary/2009/03/08/0)
(URL: http://codezine.jp/article/detail/3658)
cdda2wav を使えば、CD から *.wav を抽出できる。
% cdda2wav -D/dev/cdrom -Igeneric_scsi -x -vall -L 0 -cddbp-server=freedbtest.dyndns.org:80/~cddb/cddbeuc.cgi -B
sarge の時と同じように、ソースからコンパイルした gogo(petit313.tgz) を
使って、wav から mp3 に変換しようとしたが、変換できなくなっていた。
% gogo -q 0 audio_01.wav audio_01.mp3
encode audio_01.wav to audio_01.mp3
GOGO-no-coda ver. 3.13 ( May. 20 2004 ) is a mp3 encoder based on lame 3.88,
which is distributed under LGPL on http://www.mp3dev.org/mp3/ .
See http://member.nifty.ne.jp/~pen/ ,
http://homepage1.nifty.com/herumi/gogo_e.html .
zsh: floating point exception gogo -q 0 audio_01.wav audio_01.mp3
gogo の他に lame というエンコーダがあるらしい(正しくは gogo の元に
なったツールが lame)。Debian GNU/Linux スレッドテンプレからの情報を
元に /etc/apt/sources.list に http://www.debian-multimedia.org を追
加し、"aptitude update" したが、以下のエラーが発生した。
W: GPG error: http://www.debian-multimedia.org squeeze Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 07DC563D1F41B907
http://www.debian-multimedia.org/faq.php によると、
debian-multimedia-keyring をインストールすれば良いとあったがダメ。
W: GPG error: http://www.debian-multimedia.org squeeze Release: 以下の署名が無効です: BADSIG 07DC563D1F41B907 Christian Marillat <marillat atmark debian.org>
面倒なので、lame をソースからインストールすることにした。
http://lame.sourceforge.net/ からソースをダウンロード。
% tar xzf lame-398-2.tar.gz
% cd lame-398-2
% ./configure
% make
% make check
# make install
エンコードできるようになった。
% lame -V0 audio_01.wav audio_01.mp3
以前、CD->wav->mp3 を自動で行う cdda2mp3 というシェルスクリプトを
作ったので、gogo の代わりに lame を使うように修正した。
最近、月に 1 回 Amazon を使っている。今回は湿度計を買うのが目的。
川崎でかなり探し回ったんだけど、こういうときに限って見つからないものだ。
愛されキャラになるためにw買った。
¥1(代金) + ¥360(配送料) で買えたのはかなりお得だった。
追記(2009-04-05):
そういえば、たつをの ChangeLog で紹介されていたので買ったのでした。
まだ読み終わってない。。。
(URL: たつをの ChangeLog - 人に好かれる話し方)
一回落としたせいなのか、うちの湿度計がかなり不正確だったので、
Amazon で評判の良いこれを買った。実物は画像で見るよりも大きめだが、
外見はかなりクール。
2は要らなかったなあ。1の兄貴の曲が入ってないとは。。。
(URL: http://alfalfa.livedoor.biz/archives/51418623.html)
左側のネコを見ていたら、シャドウを思い出した。
シャドウっていうのはデビルメイクライ1のモンスター。
4 匹出てきたときは泣きそうになったよ。(;´д⊂)
ゲーム自体はだいぶ前(2001年!!)なんだけど、最近また始めた..。
これだと「返品できません」という意味になっちゃうそう。
正しくは、"We cannot break large bills" なんだって。
(URL: http://d.hatena.ne.jp/kazu-yamamoto/20090306/1236332358)
(URL: http://translation.1-find.com/wasei/)
debian-users:52078 によると、"man ati" があるらしい。というかあった。
さらにビデオドライバごとの man もある。私の PC のビデオドライバ
Radeon HD 2400 PRO の情報も "man radeon" にいろいろ書いてあった。
(setq mew-ask-charset '("us-ascii" "iso-2022-jp"))
などと設定して、これ以外の文字を含むメールを送信しようとすると、
"utf-8 is used. OK?" と聞かれるが、本文のどこに該当の文字が含まれて
いるのか経験と勘(笑)で調べるしかなかった。そこで、"n" でキャンセル
した後、該当の文字の背景を紫色にするようにしてみた。
;; 「UNICODE 文字」の face を定義 (defvar mew-unicode-char-face-list '((((class color) (type tty)) (:bold t)) (((class color) (background light)) (:background "purple")) (((class color) (background dark)) (:background "purple")) (t (:bold t)))) (defface mew-unicode-char-face mew-unicode-char-face-list "UNICODE 文字" :group 'mew-highlight) (defvar mew-unicode-char-face 'mew-unicode-char-face) (face-spec-set 'mew-unicode-char-face mew-unicode-char-face-list) (defadvice mew-encode-undo (after mew-encode-undo-after-advice activate) "「UNICODE 文字」を強調表示" (if mew-ask-charset (let* ((beg (progn (mew-header-goto-body) (point))) (end (or (mew-attach-begin) (point-max))) (unicode-char-regexp (mew-cur-unicode-char-regexp beg end))) (if (stringp unicode-char-regexp) (save-excursion (mew-elet (goto-char beg) (while (and (<= (point) end) (re-search-forward unicode-char-regexp end t)) (put-text-property (match-beginning 0) (match-end 0) 'face 'mew-unicode-char-face)))))))) (defun mew-cur-unicode-char-regexp (beg end) (let (pos unicode-char unicode-char-list) (save-excursion (goto-char beg) (while (< (setq pos (point)) end) (if (and (mew-unicode-char-p pos) (setq unicode-char (char-to-string (char-after pos))) (not (member unicode-char unicode-char-list))) (setq unicode-char-list (cons unicode-char unicode-char-list))) (forward-char 1))) (if (consp unicode-char-list) (concat "[" (mapconcat 'identity unicode-char-list "") "]+")))) (defun mew-unicode-char-p (pos) (let* ((char (char-after pos)) (eight-bit-p (and (not enable-multibyte-characters) (>= char 128))) (charset (if eight-bit-p 'eight-bit (char-charset char)))) (and (not (eq charset 'ascii)) (not (eq charset 'japanese-jisx0208)))))
さらに draft-mode で C-c C-l した時も色付けさせる設定。
(defadvice mew-highlight-body-region (after mew-highlight-body-region-after-advice activate) "「UNICODE 文字」を強調表示" (if (and mew-ask-charset (eq major-mode 'mew-draft-mode)) (let* ((BEG (ad-get-arg 0)) (END (ad-get-arg 1)) (unicode-char-regexp (mew-cur-unicode-char-regexp BEG END))) (if (stringp unicode-char-regexp) (save-excursion (mew-elet (goto-char BEG) (while (and (<= (point) END) (re-search-forward unicode-char-regexp END t)) (put-text-property (match-beginning 0) (match-end 0) 'face 'mew-unicode-char-face))))))))
追記(2009-03-02):
mew-cur-unicode-char-regexp() と mew-unicode-char-p() を変更しました。
前者は検索回数の削減、後者は Unicode 判断の変更です。
2009-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31