PC関係のメモ
職業プログラマになって3ヶ月 / あったらいいなツール / メールサーバ / Lens / ノミニケーション / ウィニー開発 東大院助手、無罪を主張 - 朝日朝刊 / Name and email address are required. / Windows XP SP2
職業プログラマになって3ヶ月
基礎大事。
あったらいいなツール
- npopみたいなインターフェース&軽快さのRSSリーダー
- またはbloglinesみたいなWebベースのRSSリーダー(こっちのが欲しい)
- 軽快なWebDAVクライアント
- tDiaryのサブタイトルをカレンダー形式で一覧表示したい
- ブラウザの右メニュー等から開いてるURLをこのメモに貼り付けるツール(お気に入りに追加する感覚。ブックマークレットで作れそう)
メールサーバ
要件追加
- スパムフィルタ入れたい
- Webメール使いたい
携帯に転送してるからスパムがうっとおしい。簡単にフィルタする予定。
WebメールはリスメールことSquirrelMailを使う予定。
Lens
ノミニケーション
仕事後にかるーくノミニケーション。
最近仕事中は会話することが少ないので日本語会話のリハビリみたいなものです。
ウィニー開発 東大院助手、無罪を主張 - 朝日朝刊
最近新聞読んでる暇がないんだけど、今日帰ってきたら机の上にこの記事が載ってる新聞が置いてあった。
パソコンに疎い母に「この逮捕はどうかな〜」と説明してきたかいあって(?)、事件に興味を持っているらしい。それで、久しぶりに取り上げられたこの事件の記事を広げておいてくれたのだろう。
僕はソフトを作る側だし、P2Pの技術を使った開発もしたいと思ってるので偏った見方になるかもしれない。それでも検察側の冒頭陳述には疑問を感じる。
「被告は現行の著作権法は時代遅れだという疑問を持っていた」と指摘。
それは主義主張、考え方でしょ。裁判には関係ないんじゃないの?と思った。もちろんそれが違法だなどとは言っていないだろうし、動機については別に述べられているが。まぁ裁判というとサスペンスドラマの中のものとしてとらえてる自分がどうこう言えたものではないのだけれど。
純粋にこの裁判の経過と結果が気になる。
Name and email address are required.
MTのサイトにコメントを書こうとして「Name and email address are required.」といわれてコメントすること自体やめる。そういう経験がちょくちょくある。気軽なコメントなので「まぁいいか」で終わってしまうのだ。
コメントになんらかの制限がついてることが良いとか悪いとかではなく、その記事に対して反応できなかったことがちょっと残念。もちろんもっと強い気持ちがあればメールアドレスでもURLでも書くし、自分も書きたいと思えばメモしてトラックバックするんだけどそのラインが非常に微妙。多分ちょっと強い気持ちになるとメモにしてる。
Windows XP SP2
先日SP2入れたけどインストール途中で「atapi.sysに書き込めません」みたいなエラーが出た。多分何かのアプリケーションでロックされてるんだろうと思ってウインドウを一通り閉じてみたがやっぱりだめ。タスクトレイを見てみるとDAEMON Toolsが居た。多分これだ。でもタスクトレイから消しただけでは駄目だった。デスクトップマシンはいいけどThinkPad X31にはCD-ROMドライブがないからDAEMON必須なんだけどな。(結局そのファイルの書き換えだけスキップした)
と思っていたらその問題の修正を含む最新版がリリースされた。
changelogより
- Fixed atapi.sys locking problem (as a result, some emulation ability is removed for PCD5 until new release)
2日未明に日本語版のSP2もダウンロード開始されるようだしこの修正版を入れておこう。
iモードでWebサービス / NTT DoCoMo DLP Service / Windows XP SP2日本語版を導入
iモードでWebサービス
Webサービスといってもたいしたことではなく、単にCHTMLに値をポストしてDBに放り込むだけ。専用端末を使うよりはるかに安価だ。
試しに出退勤ページでも作ってみよう。15分くらいでできそう。
Windows XP SP2日本語版を導入
ThinkPad X31に出たばっかりのSP2を導入。DAEMON Toolsによるatapi.sysロックも最新版の修正のおかげで発生せず、無事インストール完了。
インストール後にWindowsセキュリティセンターが起動してウイルス対策ソフトウェアの状態が不明だといわれた。インストールされているソフトウェアには「Norton AntiVirus」が表示されている。実際インストールされているバージョンはNorton AntiVirus 2003で、先日延長キーを購入したばっかり。
最新版(2004)ではないがウイルス定義ファイルが更新されていればたいていのウイルスは検地してくれるんだろう、多分。でもどうやらSP2のWindowsセキュリティセンターはその辺関知していないらしく、「推奨される対策案」ボタンをクリックすると2つの対策案が示される。「ウイルス対策ソフトウェアが最新の状態に保たれいて、有効になっているか確認しろ」「別のウイルス対策ソフトをいれろ」。シマンテックにとっては失礼な話だ。
メールサーバリプレース作業
そもそも今のサーバで何のサービスが動いてるのか改めて考えてみた。
- POP, SMTP(qmail+vpopmail)
- DNS(bind9)
- ローカル向けNTP(xntpd)
二転三転してFedora Core2をやめてDebian(Woody)にした。で、MTAにはPostfixを採用。Courier-IMAPを動かすことにする。
メールサーバリプレース完了 / Standard Template Library プログラミング on the Web / メールサーバ今後の予定 / メールが来てませんでした / 仕様書メンテ / [buy][book] 極めるVisual C++ / [wish][book]プログラミング言語C++第3版 / [wish][book]C++ Primer 改訂3版 / メールサーバ今後の予定(2) / Debian Linux + qmail / SquirrelMailを改造したらGmailみたいにならないかなぁ / Nucleus CMS / 地震のときにしたこと / PC関係の地震対策 / 誰がいつ何をしたのかを収集するWebシステム
メールサーバリプレース完了
今のところ以下の環境
- ハードウェア: IBM PC300GL改
- CPU : Pentium III 400MHzくらい
- HDD : 80GB
- OS : Debian GNU/Linux 3.0r2
- MTA : Postfix
- SMTP-AUTH, SMTPS
- IMAP : Courier-IMAP
- IMAPS
- NTP
- DNS : BIND9
メールクライアントには今までどおりBecky!2を使用。最近SSL通信に対応してて楽チン。というかBecky!2が対応してなかったら多分SMTPSとか使う気にならなかった。
あとはたまに使うnpopがIMAPとSSL通信に対応してるとうれしい。BeckyのSSL実装は更新履歴によると
Ver2.09.01 -> Ver2.10
- SSL/TLSに対応。
メールボックスの設定の、サーバー名の設定の横の「POP3S」「IMAPS」「SMTPS」が該当オプションです。ただし、WindowsのSCHANNEL APIに依存しているので、Windows2000、WindowsXP以外のOSでは正常に動作しない可能性があります。
ということらしいので、同じく「SCHANNEL API」というのを使えば実装できるのかも。
Standard Template Library プログラミング on the Web
Standard Template Library プログラミング on the Web
本書は標準C++の一部として組み入れられたSTLについて、その構造や使い方をサンプルを交えながら解説するものです。
メールサーバ今後の予定
Webメールを使いたいのでApacheとPHPを入れてSquirrelMailを動かす予定。せっかく他のところ(SMTP、IMAP)をSSL化してるのでApacheもHTTPS通信にしたい。
メールが来てませんでした
お約束のごとく失敗してました。テストで書いた設定を消さずにpostfix restartしてこけていたという罠。
今日はいつも以上にメールがこないなー、と思っていたけど、さすがにスパムもこないのはおかしいでしょ。ということでログ見てみたら案の定失敗してた。
仕様書メンテ
教訓。ソース書くときは後で仕様書書くことも念頭に置く。
いや、要はわかりやすいコード書いてコメントつけろというあたりまえの話。そうしないと何より後で自分が面倒くさいことになる。
極めるVisual C++
極めるVisual C++―基礎にして初歩にあらず(吉田 弘一郎)
さっさとMFCを極めて作業効率を上げたいので購入。いや、あがるかどうかわからないけど。たまたまCObjectの派生クラスを作ろうと思ってググってたときに出てきたのがこの本。「CObjectの拡張法」というどんぴしゃのセクション。中身見てないけど安かったので即購入。
これから読む。
プログラミング言語C++第3版
プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)(Bjarne Stroustrup/長尾 高弘)
高いけどいい本だと思う。
C++ Primer 改訂3版
これまた良書。上のプログラミング言語C++と同じ ASCII Addison Wesley Programming Series。
メールサーバ今後の予定(2)
スパムフィルタもいいかも。
せっかくRAIDのファイルサーバがあるし、NFSを介してファイルサーバ上にMaildirを置いてもいいかも。
Debian Linux + qmail
結局やらなかったけど調べたときのURLメモ。
- http://sasapanda.com/toshi/linux/qmail.html
- http://david.ulevitch.com/qmail-debian/
- http://www.unix-power.jp/linux/qmail-scanner.html
Debian以外qmail関係
あー、関係ないけどURL書いたときに自動でタイトル取得して付記してくれる機能があるととってもうれしい。でもそれってどこにつけるべきなんだろう。tDiary側ではないような気がする。日記書いてるとき(xyzzyを使用)にWindowsなりxyzzyなりがやってくれたほうがいいかな。
SquirrelMailを改造したらGmailみたいにならないかなぁ
噂のGoogleの1GBメールサービス「Gmail」を最速レビュー!
そもそもGmailを使ったことが無いけど上記レビューを眺めてみた限り使いやすそう。多分Webインターフェースはまだ先だと思うけどMatzさんのmorqもおもしろそう。
地震のときにしたこと
昨日地震があった、2度目(震度5)のときは半分寝てた。揺れを感じてしたことは、
- 家族を起こす
- (自宅の)サーバの無事を確認
- ThinkPadをかばんに詰める
- 死ぬほどの揺れじゃないとわかったので落ち着いてお茶を飲む
東海大地震のときはダメカモネー。
PC関係の地震対策
データバックアップをどうするとか考えたけど、家は10階なのでデータがやばいような状況のときは自分の命はもっとやばい。
誰がいつ何をしたのかを収集するWebシステム
ユーザはログイン(または決められたユーザページにアクセス)して何をしたのかをポストする。管理側は誰がいつ何をしたのかを確認する。
地震だ / xyzzyをVisual C++と併用したい / tDiaryに「前(次)のn日分」リンク / IMAPの検索機能 / 自宅サーバTODO
地震だ
また地震。最近多いな。
xyzzyをVisual C++と併用したい
タグファイルを作ってタグジャンプできるのは知っていたが、秀丸みたいに関数一覧を出す方法がわからなかったので調べてみた。
M-x list-function
でできる。
次はMSDNで調べ物をする方法。[ツール]-[共通設定]-[ディレクトリ]-[HTMLヘルプ]にMSDNのファイルを設定。
C:/Program Files/Microsoft Visual Studio/MSDN98/98VS/1041/MSDNVS98.COL
参照するときには
M-x show-html-help
両方ともよく使う機能なのでファンクションキーに割り当てたい。今度はその方法を調べておこう。これでIntelliSenseが使えると完璧なんだけど。
そういえばあんまり知られてない(というかアピールされていない)けどxyzzyはソースが公開されている(ただしオープンソースではない)。ソースが公開されているか否かは、日常的に使うソフトウェアを選択する上で僕にとってとても大切な要素だ。xyzzy最高。
tDiaryに「前(次)のn日分」リンク
はてなみたいにn日分ごとに見たいときに便利そう。プラグインであるのかな。要調査。
IMAPの検索機能
今日IMAPにしてから初めて検索しようと思ったんだけど、正しく検索できない。クライアントはBecky!2で、多分IMAPの場合はサーバ側で検索処理が実行される。
IMAPに関してはほぼapt-getしただけの状態で動かしてるから当然といえば当然か。
Debian GNU/Linux 3.0(woody)運用ノートを参考に入れなおしてみる予定。
自宅サーバTODO
- MRTG等で監視
- syslog一元化
- Analogでログ解析
- Webサーバをディスクレスにする
リモートデスクトップで複数ユーザの同時接続 / xyzzy ページタイトル入力支援スクリプト / 良いインターフェース / また地震 / サーバリプレースしたのかな? / Linux ディストリビューションの欠点比較
リモートデスクトップで複数ユーザの同時接続
SP2が出たけど、結局リモートデスクトップの同時接続って実現されたんだろうか。帰ったらテストしてみよう。
xyzzy ページタイトル入力支援スクリプト
入力中のURLのタイトルを取得する。取得してその位置に挿入されてもまずいのでクリップボードに格納されるといい。
確かURLにリンクを貼るスクリプトはあったような気がするからそれを参考にして作れそう。少なくとも文字列がURLかどうかの判断はできる。そのURLの内容を取得してタイトルタグの中身を抽出してクリップボードにコピーできればOK。
っていうのがあると便利。
良いインターフェース
クラスのインターフェースについて考える。
誰にとって良いインターフェースなのか。使う人、作る人、呼ぶ側、呼ばれる側。両方にとってよりベターな方法は何か。
シンプル、スマート、単純、簡単、作りやすい、使いやすい、高速、メモリ効率が良い。優先すべきは何か?求められる性能は?
本やWebで手に入る知識だけでなく、状況に応じて自分の言葉で説明できるようにならないと。
また地震
これ書いてる最中に家が倒壊したら遺言メモになってしまう・・・(汗)
でも良く考えたらサーバもここにあるわけだし心中だよ。あ、誰かがこのメモを書いた直後にRSSを取得するという可能性もあるか。
などと落ち着いてパソコンに向かっていられるのはまだ余裕があるからで、ほんとに危ないときにはちゃんと逃げる。
サーバリプレースしたのかな?
以前自分が構築したサイトで、見た目が何も変わっていないのにWWWCが反応した。
HTMLが変わっていないとなるとHTTPヘッダの情報が変わったか?telnetで80ポート叩いて確認してみる。む、DATEヘッダが新しい。他に2、3点確認してみるとやっぱり自分の設定と違う模様。前から?今度聞いてみよっと。
Linux ディストリビューションの欠点比較
ただの日記 - 自宅サーバ再構築経由西東京日記 - Linux ディストリビューションの欠点比較より転載。
722 :login:Penguin :04/09/03 13:48 ID:v/HuZxzI Debianのダメな点:
- 安定版は個々のソフトウェアのバージョンが古すぎる。
- 安定版リリース間隔が長すぎる。アップグレードの敷居が高くなる。
- 新しい安定版が出るとニ三ヶ月で旧版がメンテされなくなる。
- テスト版は不安定。Fedora Coreの比ではない。
- テスト版ですら既に古い。
- 開発版(sid)は超不安定。Fedora devlopmentの比ではない。
- パッケージ品質にばらつきが大きい。出来の悪いパッケージは悲惨。
- パッケージの品質が全体的にやや低い。
- メンテナが怠惰だとNMUが発動されるまでアップデートが出ない。
- 他のディストリからの勧告を見て慌ててアップデートを作っている。
- 安定版はセキュリティ関連の修正のみでバグフィックスが無い。
- パッケージのインストール時にあれこれと質問してくる。
- 上の影響でインストールに他ディストリの数倍の時間がかかる。
- インストールしたデーモン動かさないでおく事が難しい。
- /etc/rc?.dを削除していても、アップデート時に勝手に起動される。
- dpkgの作製が難しい。対RPM比で2.5倍。
- apt-*, dpkg-* コマンドが大量にあって修得が困難。manも難解。
- LSB準拠が不充分なうえDeb厨の我侭でLSBの策定が遅れている。
- 他のディストリの良い点を取り入れようとしない。
- ランレベルの使いかた等、他のUnix系OSの伝統に従わない。
- カーネルハッカーが居ない。パッケージは公式カーネルそのまんま。
- Apache httpdのパッケージが変。メンテナ変えろ。
- Sendmailのパッケージが変。これはたいした問題ではないが。
- デフォルトがeximは変。GPLだからというだけの理由で選ぶな。以下個々のパッケージに関する問題点が並ぶが省略
- 問題点を指摘しても「Debianのポリシーだから」とスルーされる。
725 :login:Penguin :04/09/03 14:24 ID:v/HuZxzI Fedoraの駄目な点:
- インストーラの出来があまり良くない。
- バグが多い。というよりアップデート時のエンバグが目立つ。
- iiimf採用やUTF-8化等、国際化対応で無茶しすぎ。
- セキュリティ修正でソフトの版が上がるので非互換を生じ易い。
- 現状のyumはaptに比べて遅い。Ver2.1でapt並みになるらしい。
- 安定版のリリース間隔六ヶ月、メンテ期間一年は短かすぎ。
- 当初「年に三四回のリリース」と言ってたが実現出来てないw
- yumやaptでアップグレードは可能だが公式にはサポートされない。
- 商用サポートが無い。Debianにはある。
- Fedora Legacyプロジェクトが活動停止中で旧版はメンテされない。
- セキュリティ勧告は出ず、簡単なアップデート通知が出るだけ。
- 従ってBugtraqを講読していてもアップデートに気付かない。
- コミュニティベースで開発すると言いつつ実態は赤帽社員ばかり。
- 巷に野良リポジトリが溢れていて乱用すると整合性が崩れる。
- MySQL等一部のソフトに冷淡。
- MP3やビデオコーデック等ライセンス/特許問題に敏感すぎ。
- RHEL等の商用ディストリよりもアップデートが出るのが遅い。
- ソフトウェアのバージョンが新しすぎて問題が出る事がある。
- RHLから継承したFedora独自ツールが無数にある。
- デフォルトでSSHのrootログインが許可されている。
- デフォルトでファイヤウォールが動いていて初心者が戸惑う。
- グラフィカルブートのせいで起動が遅い。
- kudzuによるハードウェア自動検出&ドライバインスコがウザイ。
- FC1のカーネルパッケージは公式カーネルからいじりすぎ。
- FC2のカーネルは新しすぎ。しょっちゅうアップデートしすぎ。
- Gnome推奨はアホ。そのうえKDEの品質がイマイチ。
- 問題点を指摘しても「それならRHEL買えば?」とスルーされる。
747 :login:Penguin :04/09/03 21:03 ID:orRptRKM おー、盛り上がったみたいだな。 じゃ、自鯖OSの欠点語ってくれた725に敬意を表し Gentooのダメな点 :
- インストール。有名な「欠点」はともかく、Gentoojpのインストールドキュメントは古く、まんま真似ると詰まるらしい。
- 起動サービスの扱い方が他とまるっきりちがう。rc-updateなど、実際スクリプトのソースおっかけないと気味が悪い。
- (02)に類し、RHのnetwork-scriptみたいなのを直で弄る人が好きな人はconf.d/netのような設定ファイルが気持悪い。
- 逆にそういう設定に慣れてしまった人がRHとか弄ると大変。「network管理の勉強したい」人には勧められない。
- ebuild作成コスト。記述はシェルスクリプトだが、知らないとどうにもならない前提がかなりある。カテゴリごとの決まりごとなど。RPMより明らかに敷居が高い。
- emergeというコマンド自体の問題。全容を掴むのにかかるコストはifconfigのごとし。かつ、ある程度分かっていないとエンドユーザーは詰まる。
- gentoojp-users MLがかなりコワイ。レベル以前の問題でコワイ。2chのGentooスレ盛況はこのせい。
- ユーザーはGentooであることにあまり忠誠心めいたものを持っていないようだ。Gentoojpの神中野氏も最近やる気なし。(欠点ちゃうな)
- etc-update、ユーザーにも評判悪いその操作性。TTYなユーザーはかなりキビシイ。
- パッケージごとのポリシーのばらつき。一から十まで設定するebuildもあれば、ビルドだけですまし顔のebuildもあり。とまどう。
- HDDの寿命間違いなく縮む。ccacheなんか使うとますます縮む。
- groffなど、国際化の問題でマトモに使うにはバージョンを選ばなければならないものがstableにもある。
- genkernel,kportageなど独自ツールの出来が軒並悪い。
- emerge sync (apt-get updateみたいなもん)にかかる時間。毎度のことだから尚更に。
ふむ。書けば結構あるもんだ。あ、誰でも指摘できる例の欠点は抜いた。 こう来たんだから、722によるFedoraも読みたいね。しつこいようだけど。
ref_toolsプラグイン / 自宅サーバダウン
ref_toolsプラグイン
通りすがりさんに教えてもらったref_toolsプラグインを試してみた。これはこれで便利!
自宅サーバダウン
10日0時10分くらいにブレーカーが落ちたので15分ほどWebサーバがダウン。メールサーバとファイルサーバはUPSのおかげで無事。
Visual C++ のエディタでタブを使えるようにするAdd-in / xyzzy C++モードのインデントを調整
Visual C++ のエディタでタブを使えるようにするAdd-in
xyzzy C++モードのインデントを調整
;; C++も似たように (setq c++-indent-level 4) (setq c++-continued-statement-offset 4) (setq c++-argdecl-indent 4) (setq c++-brace-offset 0) (setq c++-brace-imaginary-offset 0) (setq c++-label-offset -4) (setq c++-comment-indent 2) (setq *c++-indent-tabs-mode* t)
malloc/realloc/freeとnew/delete / 付箋ソフトがほしい / qsort/bsearch / Moonlight / xyzzyでメモを取るツール / xyzzy使いに50の質問一覧 / NucleusのRSSフィード / [todo] メール環境
malloc/realloc/freeとnew/delete
- mallocで受け取ったポインタはその関数の中でのみ有効?
- reallocに対するrenewみたいなのは存在しない。vector使う。
- reallocするときは必要量をちゃんと計算する。
付箋ソフトがほしい
仕事のメモ用に使いたい。
xyzzyでごにょごにょしたいので検索してみたらMoonlightというのがあるらしい。あとはchangelogメモも使えるかも。どっちも試してないので要調査。
qsort/bsearch
メモリの動的確保といい、こういうC言語っぽい部分は自分のウィークポイントだ。あとアルゴリズム。両方覚えるのはやっぱり適当なアルゴリズム本のC言語で書かれたサンプルで勉強するのがいいのかな。
Moonlight
Moonlightは付箋ソフトではなくてランチャソフトだったみたい。http://www003.upp.so-net.ne.jp/eva/
xyzzyでメモを取るツール
調べてみると以下の3つが有名どころらしい。
- hown
- calmemo
- changelog-memo
付箋的役割だからTODOがついてるcalmemoが使いやすいそう。
xyzzyに関するサイトメモ
- HIE no Page
- Han's Room / xyzzy-lisp
- diff-buffer 隣のバッファとdiffを取る
- Xyzzy-Wiki
xyzzy使いに50の質問一覧
xyzzyは使う人によって姿を変えるエディタだと思う。これらの回答結果をみてそう思った。自分で50の質問やるのはもう少し先になりそう。
自分で集めるつもりだったけどKyokusho newsさんにいくつかリンクがはってあった。
NucleusのRSSフィード
Nucleusで構築されたサイトのRSSフィードを見ようと思ったらリンクが貼ってなかったので調べてみたら/xml-rss2.phpのURLで自動ではいてるっぽい。
アクセスしてみると無事取れた。
メール環境
- スパムフィルタ
- Webメール
の二つができるだけ早く導入したい。
最近のメモ / c-mode/c++-modeのときにF1でhelpが見たい / [xyzzy]c++-modeでタブを入力したい
最近のメモ
最近のメモを振り返ってみると「○○したい」とか「○○らしい」、「○○要調査」とか後回し事が多い。たまには「○○した」という結果メモを書きたい。と、また願望だけのメモを増やしてみる。よく言えば目標を立てた。
c-mode/c++-modeのときにF1でhelpが見たい
http://d.hatena.ne.jp/MajyokkoRoyRoy/20040908#1094651128より
;; c-mode/c++-modeのときにF1でhelpが見たい (define-key ed::*c-mode-map* #\F1 'show-html-help) (define-key ed::*c++-mode-map* #\F1 'show-html-help)
どんぴしゃ!これがやりたかったんです。
VC6&xyzzyでMSDNのCOLファイルをHTMLヘルプに設定したんだけど M-x show-html-help するのが面倒だなぁというような内容をどこかで
僕が先日書いたメモのことだったりして?(笑)
c++-modeでタブを入力したい
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=xyzzy
ただダラ / hown / xyzzyで行ソート
環境を整える / xyzzy + hown / xyzzyでセッションを使ってみる / xyzzyの呼び方 / リトルエンディアンではまる / floatで丸め誤差発生
環境を整える
xyzzy日記を読んで、使ったことが無かったり、使いこなせていない便利な機能がいっぱいだと改めて思った。ますます離れられなくなりそう。
- 文字の補完(abbrev, dabbrev)
- 辞書引き
- セッション
- フレーム
特に文字の補完は良さそう!インテリセンスとはちょっと違うけどほぼ置き換えることができると思う。こんな素晴らしいエディタがフリーなんて本当に作者の亀井さんには足を向けて寝られないな。(どっちの方角か知らないけど・・・)
xyzzyでセッションを使ってみる
ファイルを大量に開くからタブは横書きのほうがいいな、ということで共通設定の表示で「タブバーを横書きにする(*) 」にチェックを入れた。お、いい感じ。でもそれでもプロジェクト全部のソースを開くと収まりきらない。上下もマウスでやるよりキーボードでやりたいなー。あ、ホイールのほうが使い慣れてるからホイールでぐりぐりできると直感的。
さすがにVC++みたいなツリーでは出せないかな。アウトラインは違うだろうし・・・。ツリーコントロールを使えばなんとかなるのも。要調査。
xyzzyの呼び方
http://web.sfc.keio.ac.jp/~t01089ti/how-pronounce-xyzzy.html
僕は"じじい"派です。というか"ジジー"。使い始めた頃は"エックスワイゼットゼットワイ"って言ってたけど長すぎ&言いにくいのでどっかでみたジジーで落ち着いてます。
リトルエンディアンではまる
今読んでいるソースで最初に格納されてるのがunsigned longの変数の構造体をmemcmpで比較してqsortしてる箇所があって、並び順がばらばらになっていたという罠。パディングを疑ってたんだけどそっちだったか。
パディングに関連してアライメントという用語があるらしいので忘れないようにメモ。
floatで丸め誤差発生
floatの精度が保障される有効桁数は6桁から7桁途中までくらい。
開発環境を整える
今日も今日とてxyzzyネタ。
http://terai.s55.xrea.com/index.php?xyzzyより。関数一覧を"C-7"に割り当てる。
(global-set-key #\c-7 #'list-function)
他、気になるネタがいろいろ
- JavaTinyConsole
- xyzzy用のJava開発環境
- ポップアップヘルプ
- コード補完
- paren 対応する括弧"()"や鍵括弧"{}"を強調表示
- outline-treeを使ってメソッド、インナークラスなどのアウトラインをツリー表示。
xyzzyネタ
午前2時過ぎに帰社して日記を書く。早く寝ろよと自分に言いたい。が、とりあえずメモりたいページを見つけたのでメモ。
http://sabakan.jpn.ph/tdiary/?date=20040918#p04
IDEから呼び出すのは自分も試そうと思っていたけど一筋縄ではいかないらしい。
via ごった煮Blog
あとこのごった煮の方のxyzzyの初期設定ファイルが公開されてるのでこちらもメモ。
http://sabakan.jpn.ph/sabakan/wiki/wiki.cgi?xyzzy%a4%cb%b4%d8%a4%b9%a4%eb%a5%e1%a5%e2%bd%f1%a4%ad
引数を増やすか、構造体ポインタを渡すか
関数に渡す情報が多くなったとき、引数を増やすか構造体を作って渡すかで悩んだ。
実際に使ってみて、引数だと一行ですむからコピペするのが楽。構造体を作って渡すほうだと関数を呼ぶ回数が多いときにコピペが面倒だし変更も大変だと思った。
CArrayのSetAtGrowメソッドの効率
固定長配列を使ってるところをCAarrayに置き換えたら極端に遅くなった。一つ一つAddメソッドをつかったから当たり前なので今度は先にSetSizeメソッドである程度確保しておくことにして、SetAtGrowで要素を追加するように変更した。
そしたらこれも同じくらい遅い。SetAtにしたらようやく固定長配列のときと同じくらいのスピードになった。SetSizeでは配列の拡張が起きないくらいに大きめに領域を取ったはずなのでSetAtGrowはサイズチェックだけでSetAtと大して変わらないだろうと思ってたけど違ったらしい。
~/.xyzzy / VC6からxyzzyを呼び出す他 / メモに絵が欲しい / Blogツール三種の神器 / 言語の基本的なところ
~/.xyzzy
最近使い始めたばかりのマシンの.xyzzy
(require "ni/setup")
;; 自動設定を利用する
(ni-autoload)
(in-package "tdiary")
(setf *tdiary-diary-list* '(
("mylab" "http://www.mylab.jp/diary/")
))
(in-package "editor")
(pushnew '("\\.src" . basic-mode) *auto-mode-alist* :test 'equal)
(setq *c-indent-tabs-mode* nil)
(load-library "php-mode")
(pushnew '("\\.php$" . php-mode) *auto-mode-alist*)
;; php-miscを使う場合
(load-library "php-misc")
(setq c++-indent-level 4)
(setq c++-continued-statement-offset 4)
(setq c++-argdecl-indent 4)
(setq c++-brace-offset 0)
(setq c++-brace-imaginary-offset 0)
(setq c++-label-offset -4)
(setq c++-comment-indent 2)
(setq *c++-indent-tabs-mode* t)
;; c-mode/c++-modeのときにF1でhelpが見たい
(define-key ed::*c-mode-map* #\F1 'show-html-help)
(define-key ed::*c++-mode-map* #\F1 'show-html-help)
(define-key ed::*c++-mode-map* #\TAB 'self-insert-command)
(require "dabbrev")
(global-set-key #\C-t 'dabbrev-popup)
(setq *popup-completion-list-default* :always)
(load-library "winkey")
VC6からxyzzyを呼び出す他
http://d.hatena.ne.jp/MajyokkoRoyRoy/20040921#1095747669より
explorer #見ているファイルの場所 コマンド:C:\WINNT\explorer.exe 引数 :/e,$(FileDir) explorer #開いているワークスペースの場所 コマンド:C:\WINNT\explorer.exe 引数 :/e,$(WkspDir) xyzzy.exe #行と列も渡します コマンド:C:\kame\xyzzy.exe 引数 :$(FilePath) -g$(CurLine) -c$(CurCol) xyzzycli.exe #ファイルを追加して開きます コマンド:C:\kame\xyzzycli.exe 引数 :$(FilePath) -g$(CurLine) -c$(CurCol) ツールバー1にワークスペースを開くボタンと保存するボタン、上で設定したボタンをすこし追加。
オプションの書式でソースウィンドウのフォントを設定。
VC6からエクスプローラやxyzzyを呼び出す設定。さすがに業務でつかってる人のメモは参考になります。
しかも簡単にツールバーにも割り当てられて便利。以前にdoxygenを呼び出すアドインのdoxbarを導入したときにインストールドキュメントどおりにやった作業がこれだったのか。
ついでに別のdoxbarのインストールドキュメントもメモ
メモに絵が欲しい
スクリーンショットがないと伝わりにくい。というかあるとわかりやすいメモが多い。特に最近のxyzzy系は。xyzzy日記はスクリーンショットが多くてわかりやすい。
んだけど、スクリーンショット撮ってアプるのはちょっと面倒だったりする。普段はフォームからの更新をすることはめったになく、xyzzyのtdiary-modeで更新してるからなおさら。
マウスで画面上を範囲選択して「tDiaryに貼り付け」ができると理想的。でなくともファイルを選択して右クリックで同じことができるとうれしい。さらにその際にどのセクションに貼り付けるか選択できたら・・・
となるとtDiary側になんらかのインターフェース(XML-RPCとか)がないとそもそもアプリ側ではセクション分割もできないな。やるとなると自分で各書式ごとにパースしなきゃいけない。
Blogツール三種の神器
tDiary2.0になってから三種の神器(TrackBack、ping、RSS feed)が使えるようになってるけど、僕が活用できてるのは今のところRSS feedだけ。プラグインは有効になってるけど使えてない。
これまたtdiary-modeで更新してるからなんだけど。tdiary-modeからの更新で自動的に作動(?)する神器はおそらくRSS feedのみ。
TrackBackは相手先を指定しなきゃいけないし、最近は送信元のセクションも指定できる。が、tdiary-modeにその機能はない。
pingは宛先は固定だけどtdiary-modeからの更新で送信してるのかどうか未調査。ちなみに今はbulkfeedsのPingサーバを指定している。だって早くSimilarity Searchに反映して欲しいからね。
言語の基本的なところ
for( int i = 0; i < 10; i++ ){
int j = 0;
printf( "%d\n", j );
j++;
}
と書いたら毎回jは0に初期化されるんだっけか?それとも初回だけ?というかなり基本的なことをいまさら疑問に思ってためしてみた。
結果は「毎回0で初期化される」。当たり前の動作だと思うんだけどなんで初回だけだと思ったのか・・・。どっかで何か勘違いしてる悪寒。スコープ?変数の宣言?
これとは別に、このソースのiはhttp://homepage2.nifty.com/aito/cpp/node4.htmlによると
最新のC++の仕様では,変数iのスコープは, forで繰り返すブロックの中になる.ところが,以前の仕様では, iのスコープはfor文が属する外側のブロックだった.そのため,古いC++のプログラムは新しいC++コンパイラでは動かず,またその逆も起こる.
となるらしい。
C++ Primer 改訂3版 (ASCII Addison Wesley Programming Series)(スタンリー・B. リップマン/ジョージー ラジョワール/Stanley B. Lippman/Jos´ee Lajoie/石川 勝)

_ 通りすがり [URL書いたときに自動でタイトル取得して付記してくれる機能ですが,tDiaryのプラグインで近いものがありますよ. ..]