スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「お約束の添付忘れ」を防ぐ

過失は恥じるべきだが、過失を改めるのは恥じるべきではない。
ルソー
「ファイルが添付されてませんが。。」
メールの添付忘れは嫌なものです。私も時々しでかしていましたが、最近特に連続したので、今更ながら対策を考え始めました (^^;)。

添付ファイル忘れ・・・を防ぐために身につけたい習慣 | POP * POP」の記事にあるように忘れないような手順を習慣化するというのもあるでしょうが、やっぱりミスはあるのでそこはツールで防ぎたい。ということで、まず簡単に思いつくのは、メールの内容に「添付」等の文字列があるのに、添付ファイルがない場合、送信時に警告する方法。単純な話ですし、誰かが作ってそうです。

ということでちょこっとググると、やっぱりありました。方式もまさに前述の通り。考えることはみんな一緒ですね (^^)。
いろんなメーラ毎に用意されているようですので紹介しておきます。

4774127280 私は使ったことはないのですが、JustSystemのShuriken Pro 4なんかは、もともとついているみたいですね。何だかんだで最もメジャーなメーラであろうOutlook Express/Outlookについては情報がひっかかりませんでしたが、こちらもビルトインで何かあるのでしょうか。ニーズはありそうですし。

ちなみに、たまたま調べていてあたったのがSOURCE NEXTの「スンドメール」。添付忘れは、送信ボタンを押した瞬間に気づくことが多いということで、実際のメール送付を遅延させ、しばらくの間キャンセルをきかそうというもの。面白い発送ですね。確かに、送信した瞬間に気づくことは多いのでこれで結構防げるのかも。

何にしても、エンジニアとして同じことを繰り返すのは再発防止ができてないとうことなので、とっても恥ずかしいです。何よりこういうところこそ、プログラマが力を発揮するポイントですしね。

ちなみに、私のメインメーラはMew + emacs on linux。ちょっとググった限りでは目的のものは見つかりませんでしたが、ちょっとelispを書けば済みそうです。私の場合なんちゃってemacserなので、あまり自分でelispを書きませんが、mew-sendに本文チェックするようなhookを入れれば済むだけでいいのかな。ちょっとやってみようと思います。

【関連記事】
gdbを電卓として使う

【関連書籍】
はじめてのBecky!Internet Mail2 勝田 有一朗
入門 GNU Emacs 第3版 Debra Cameron James Elliott Marc Loy
入門Meadow/Emacs 小関 吉則
やさしいEmacs‐Lisp講座 広瀬 雄二

【関連リンク】
添付ファイル忘れ・・・を防ぐために身につけたい習慣 | POP * POP

スポンサーサイト

ビルド時間の短縮 - ccache

何をするにも時間は見つからないだろう。時間が欲しければ自分で作ることだ。
チャールズ・バクストン
ソフトウェアをはじめ開発プロジェクトの永遠の課題「いかに早く仕上げるか」。プロジェクト管理から設計・開発手法まで、その観点は多岐にわたりますが、結局のところ「いかに無駄を省くか」という点につきます(仕様を変えるという方法もありますが・・)。今回は、大規模ソフトウェア開発におけるビルド時間待ち時間の無駄を削減するccacheというコンパイラキャッシュプログラムを紹介します。

コンピュータの処理速度が向上したとしても、それと同等、時にはそれ以上にソフトウェア規模が大きくなってきており、そのビルド時間は膨大です。そして、開発の過程では、ソースコードのコンパイルは何度も繰り返されるものであり、この時間を抑制することは非常に価値があります。いや、今の規模ならまあ待てる範囲で問題ないよ、と言われる場合もありますが、そのような短いコンパイル時間ほど、さらに短くなることによって得られるこ効果が大きいことがあります。1時間も待たされると分かっていれば他の事をしようとしますが、中途半端な待ち時間は単に浪費されることが多いからです。

ビルドツールの基本と言えば、make。適切なMakefileを書けば(あるいは生成するようにしておけば)、不要な再コンパイルを抑制することができ、ビルド効率が改善されます。しかし、いくつかのソースファイルだけのコンパイルでも、それなりの時間がかかることもあります。数十行といった小さなソースファイルでも#includeステートメントによって数珠繋ぎにヘッダファイルがインクルードされていたりすることがあるため、プリプロセッサによる構文解析、及びそれによって増大した大きなソースファイルのコンパイルが必要となることがあるのです。

とはいえ、#includeの部分は開発中そういじるものではありませんので、毎回構文解析やヘッダ部分のコンパイルを行うのは考えても見れば非常に無駄な気がします。ここに目をつけたのがコンパイラキャッシュプログラム ccacheです。

詳しくは、IBMの解説ページが詳しいのでそちらを参照いただきたいのですが、動作としては、一度コンパイルした結果をキャッシュし、次回コンパイル時に部分的にキャッシュが再利用可能な部分をコンパイルせずに、単にキャッシュで置き換えるようにするというプログラムです。使い方もいたって簡単で、通常のコンパイルコマンドにccacheと書くだけです。Makefileを使うなら、
CCACHE = /usr/local/bin/ccache
CC = $(CCACHE) gcc
等と通常のgcc等のコマンドをccache gcc等置き換えるだけです。

実際に使ってみると、二回目以降のコンパイルが驚くほど早くなっているのが実感できます。キャッシュプログラムなので、オープンソースソフトをダウンロードしてmakeするような一度きりのビルドには効果を発揮しませんが、開発中何度も同じツリーをmakeするような場合には、非常に効果的なプログラムです。

※私は使ったことはありませんが、gccに特化したcachecc1というものもあります。

【関連リンク】
ccacheを使って共同作業のビルド時間を改善する (IBM dW)
cachecc1: a gcc cache
Manpage of Make

【関連書籍】
GNUソフトウェアプログラミング―オープンソース開発の原点オライリー・ジャパン
GCC GNU C Compiler―Manual & Reference
make 改訂版オライリー・ジャパン
GNU Autoconf/Automake/Libtool

ブラウザをRSSリーダーに

Firefox用のRSSリーダー拡張のsageをインストールしました。これは本当に便利。すごく快適になります。
Firefoxにはデフォルトでライブブックマークと呼ばれる一種のRSSリーダー機能がありましたが、フィードのタイトルしか確認できない、既読/未読がわからない、というあたりがネックであまり使っていませんでした。しかし、ブラウザ自体でRSSの確認が出来る、RSSの存在を発見してくれる、RSSの発見や登録が簡単、というメリットは捨てがたいものがあります。sageをインストールすれば、上記ライブブックマークの利点はそのまま、上記のsageの欠点もなくなって、Firefoxを非常に強力なRSSリーダーとして利用できるようになります。

sageはFirefox用ですが、IEにもRSSバーという同種の拡張があります。ちょっと使ってみましたが、個人的には、RSSフィードの発見・登録やフィード内容の表示等の機能がsageのより洗練されており使いやすく感じました。
RSSバーは高機能のタブブラウザSleinir用にも提供されていましたが、Sleinir 2.0からはプリインストールになったようです。

RSSリーダーはbloglines等のサーバーサイドサービスや、Thunderbirdのようなものもあり、それぞれに利点はあります。情報ソース毎に何が一番便利かは変わってくると思いますが、ブラウザのRSSリーダー機能の手軽さは非常に魅力的です。是非、使ってみてください。

(※)「Sage」は「セージ」と読むそうです。「サゲ」と読まれそうですが・・

【関連リンク】
RSS-search RSS情報サイト
sage - Firefoxまとめサイト
Firefoxで遊ぼう(FirefoxをRSSリーダーにしてしまうの巻)
RSSバー オフィシャルサイト
Sleinir 公式ページ
【関連書籍】
詳解RSS~RSSを利用したサービスの理論と実践
ブログユーザーのためのRSS徹底活用ガイド

たまには回り道を

前回の記事で、膨大な情報から有用な情報を探し出す検索力について触れました。いかに無駄なく目的の情報にたどり着くか。その方法を持っているかどうかで作業効率は大きく変わってきます。今回は、逆に一見「無駄」な過程をいかに生かすかという話です。

雑誌Interfaceに連載されているシニアエンジニアの技術草子というコラムがあります。私の好きなコラムなのですが、2005年7月号の中で、「紙の辞書が持つ秘めたパワー」についての話が載っていました。電子辞書を使用すると、紙の辞書と比べてはるかに早く単語の意味が検索できます。しかし、紙の辞書にも、
・単語を心の中で反芻しながら調べることで記憶に残りやすい
・またページ内の別の単語や用例も目に入るので付加的な情報も同時に記憶に残る
・さらには折り目などの使用する人のくせが手になじんでくる気持ちが乗りやすい
といった効果があるという話です。
これはペーパーメディアと電子メディアの比較ですが、電子メディア内でも同じことが言えます。例えば、前回紹介したanswers.com。検索ワードの意味に関するページが一発で表示されるようになっており、無駄なく目的の情報にたどり着けます。しかし、通常の検索エンジンを用いた検索の過程では、当初の目的にたどり着く過程で、多くの周辺情報や最新トピック等、当初の目的ではないものにも触れることができます。このような検索の過程で得られる情報にこそ、自分の知識を広げてくれる、あるいは、新しい発想の種となるようなものが多く含まれています。

つまり「いかに早く結果を得るか」だけではなく「いかに有意義な過程を経るか」が大切なんですね。
# 検索だけに限った話ではありませんが (^^)

たまには、検索対象一直線ではなく、ちょっと寄り道をしながら、ひとりブレーンストーミング(?)をしてみてはいかがでしょう。ブログだったらトラックバックリンクを辿っていったりするのも、どんどん世界が広がって楽しいですよ。

下記関連リンクに、検索エンジンを使った発想を支援してくれるサイトの紹介記事を紹介しておきます。入力キーワードにランダムな単語をくっつけた検索結果を表示してくれます。単純だけどなかなか面白い結果が得られることもありますよ。

【関連リンク】
どう組み合わせるか (百式)
ただ眺めるだけ

検索力

インターネットを使えば実に豊富な情報が手に入ります。検索エンジンでキーワードを入力して、関連リンクをたどって。
しかし、全てが有用な情報とは限らず、中には間違った情報ありますし、偏った見方によって書かれた情報も含まれています。情報が増えれば増えるほど、膨大な情報から本当に求める情報を見つけ出す「検索力」の重要性が高まってきます。

では、「検索力」を高めるにはどうすればいいのでしょうか。第一歩は「道具」を知ることでしょう。GoogleやYahooだけが検索エンジンではありません。確かにGoogleやYahooは非常に優秀な検索エンジンですが、目的によっては、より特化された「道具」の方が便利なものです。例えば、以前紹介したソースコード検索エンジンKodersもそのひとつでしょう。対象を絞られることで、検索の効率が上がります。

また、検索にかかる手間を省くというアプローチをとっているサイトもあります。日本ではまだ認知度は低いようですが、路線やテレビ番組の一発検索も可能となっているAsk.jpという検索エンジンがあります。検索欄に「新宿 目白」「終電 京都 名古屋」や「テレビ 大阪」等と書くことで、路線情報やテレビ番組情報が直接で検索出来ます。
asnsers.com(英語)では、検索ワードにヒットしたページの一覧ではなく、検索ワードの意味を示すサマリーページが表示されるようになっており、最小限のステップで検索ワードの意味に辿り付けるようになっています。

また、普段使っているものでも意外と知られていない便利な応用機能があったりします。例えばGoogleでも「和英 経済」「英和 communication」等と入力すると、和英/英和辞書へのリンクが表示されます。検索以外では、以前紹介したGoogle電卓もそのひとつといえるかもしれません。

ちょっとしたことを知っていると格段に効率が上がるということもあります。意外と知られていない便利な機能がないか、ちょっと調べてみてはいかがでしょうか。

【関連リンク】
Ask.jp
Googleの特殊機能
必要ないページ (百式)
後工程 (百式)

googleを電卓として使う

以前「gdbを電卓として使う」という記事を書きました。
桁あふれや桁落ち、型変換等の型を意識した計算には非常に重宝しますので、プログラミングのお供には最適だと思っています。

ただ欠点としては、gdbはLinux環境以外ではどの環境にでも入っているというものではない点です。
そこで、重宝するのがgoogleの電卓機能です。
googleの検索ボックスに計算式を書くだけです。

16進表記や2進表記も使えるので、デバッグ中の計算にも使えます。
もちろんこれらの混在表記も可能。
さらには、sin等の三角関数はもちろん、各種科学定数も使えるので、ちょっとしたけ計算には十分すぎるほどの高性能です。

しかし、google電卓が本当にすごいのはこのような基本的な機能ではありません。
詳しくは、下記の関連リンクを見て頂きたいのですが、単位計算や文字での計算等まで出来てしまいます。
例えば、
1A * 1V」 で、1Watt
1km in mile」で、0.621371192 mile
(10Mbps * 80%) * 60sec」で60megabytes
thirty four thousand five hundred sixty seven times two」で、sixty-nine thousand one hundred thirty-four
answer to life the universe and everything」で42
等です。
勿論、googleの語源となったgoogol(10の10条)も使えます。
googol / 10^100」は、1

とにかく、とても説明しきれないので、是非下記リンクを参考に試してみてください。

【関連リンク】
google電卓リファレンス
Google電卓のすさまじい機能一覧

使いやすさと分かりやすさ

仮想化によってユーザビリティを改善する。
そんな例のひとつとして、GmailをHDDのように見せてくれるサービスが百式さんで紹介されていました。

http://www.gmailharddrive.com/

内容はGmailの巨大なメールスプール(2GB)をバックアップストレージとして使うというものです。
アイデア自体は特に目新しいものではなく、実際にいろんなサイトで同様の機能を実現するためのスクリプト等が公開されています。
Googleで「Gmail バックアップ」等のキーワードで検索してみると、いろいろと出てきます。
今回紹介されていたサイトは、UIが誰にでも使えるような「分かりやすさ」が売りのようです。
同じようなコンセプトで、Explorer風にGmailスプールを厚かるソフトもあるようです。

GMail Drive shell extension

ただ、実際に試した方の感想などを見ていると必ずしも「使いやすい」ものでもなさそうです。
Explorerとshell、GUIとCUI。必ずしも「分かりやすい」ものが「使いやすい」ものとは限りません。
どちらも忘れてはいけない大事な観点だとと再認しました。

ちなみに、その他似たようなものを調べていて気になったのがGmailFSです。GmailアカウントをVFS mountできるそうです。

面白そうなので一度使ってみたいとは思ったのですが、残念ながら私はGmailアカウントを持っていません。
今後もしアカウントを取る機会ができれば一度試してみたいと思います。
# ちなみに、私はGmailアカウント取得に招待メールがいることを知りませんでした。
# 米Googleでは、時々新規登録リンクが不定期で現れるようですね。

【関連リンク】
スクリプト変化 (百式)
GmailアカウントをマウントするGmailFS (スラッシュドット ジャパン)
Gmail Filesystem のインストールと使い方 (Discreet Blog)
Gmailの実装 (blog.bluknews.com)

続きを読む

Caps lockとCtrl

「パリへ行って言葉に不自由しなかった?」
「僕はしなかった。けどパリの人が不自由してたよ」

プログラマの多くがまずOSをインストールしてまずやること。
その代表的なものが、Caps LockキーにCtrl(コントロールキー)を割りあてることではないでしょうか。
私のメインエディタはemacsですが、Ctrlが左下にあるのとCaps Lockの位置にあるのとでは、小指のストレスが10倍くらい違ってきます。

定番なのでご存知の方が多いと思いますがその方法を簡単に紹介しておきます。

■Linux (X window)
/etc/X/XF86Configのkeyboard sectionにある
# XkbOptions "ctrl:nocaps"
のコメントを外して、Xを再起動するだけです。
これで、Caps LockもCtrlキーにバインドされます。

置き換えではなく入れ替えをしたい場合は、
# XkbOptions "ctrl:swapcaps"
の方のコメントを外してください。
ただ、入れ換えても普通Caps Lockは使わないと思いますので、nocaps設定をお勧めします。

ディストリビューションによって、XF86Configの場所は違いますのでご注意下さい。
- Redhat Linux 7.x ... /etc/X11/XF86Config-4
- Vine Linux 2.x ... /etc/X11/XF86Config
最近のディストリビューションでは、XFreeではなくXorgが採用されているので、
/etc/X11/xorg.conf
になっているかもしれません。

なお、コンソールでCaps LockとCtrlを入れ替える、または置き換えるには別途設定が必要です。
keymap(キー配列定義ファイル)を書き換えるのですが、詳細は記事下の関連リンクの記事を参考にして下さい。

■Windows

私はAltIMEを使わせてもらっています。
このツールでCtrlとCaps Lockを入れ替えることができます。

できれば、入れ替えじゃなくて置き換えをしたいんですが。
レジストリをいじればできるようですが、そもそもあまりWindowsは使わないので入れ替えで使っています。

----

仕事では、人の環境でエディタを使うことがよくあります。
残念ながらこの場合、CtrlとCaps Lockがどうなっているかはわかりません。
プロであれば、Ctrlがどっちにあっても適応できるようになっておくことが必要ですね ^^;)

B000EXXEWE【関連記事】
・X Window Systemで[Ctrl]と[Caps Lock]キーを入れ替えるには
・コンソールで[Ctrl]と[Caps Lock]キーを入れ替えるには

【関連商品】
PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

使われ方を知る

学問なき経験は、経験なき学問に勝る
イギリスの諺
プログラミング技術は磨くには、先人のソースコードをみるのが一番。
よく言われることです。
最近はGNUをはじめ、素晴らしいオープンソースコードがたくさん手に入るので、その点では、非常に恵まれた環境が整っています。
まさに宝の山です。

さて、この宝の山、使ったことのないライブラリ関数を使う時なんかにも、非常に役に立ちます。
マニュアルやmanページを長々と読むよりも、実際の使われ方を見た方がはるかに分かりやすいってことは良くあります。
その他、こんなクラス作りたいんだけどな、と思ったときの参考あるいは下敷きにもなります。

そんな時に便利なのが次のソースコード検索エンジンです。
Koders - Source Code Seaech Engine
http://koders.com/

(情報元:百式さん)

関数名を調べれば、その使用例、allocator等のキーワードで調べれば実装例なんかが見つかります。
一度は調べてみる価値があります。

ちなみに、gonzuiという和製ソースコード検索エンジンもあるようです。
まだ使ったことはないのですが、なかなか便利そうなので、一度使ってみようと思います。

【関連書籍】
Code Reading―オープンソースから学ぶソフトウェア開発技法 トップスタジオ まつもとゆきひろ 平林俊一
プログラミングテクニック―UNIXコマンドのソースコードにみる実践プログラミング手法 多治見 寿和
GNUソフトウェアプログラミング―オープンソース開発の原点 マイク・ルキーダス アンディ・オラム

ドキュメント自動生成

仕様書書くのって面倒ですよね。
でも、ユーザーへの説明や引継ぎを考えると全くないっていうのも考え物。

Javaだと、javadocっていうのがあって、コメントからhtmlやlatexのドキュメントを自動生成する枠組みが用意されています。
C/C++でも同様のことを実現してくれるのがdoxygenです。
glibcのSTLのコードにも使われたりして、結構普及しているようです。

こちらのサイトにマニュアルの日本語訳と使い方の説明なんかがあります。
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
Let's use doxygen!


使用されたことのない方は一度試されることをお勧めします。
人気エントリ
最近の記事
本のおすすめ

4274065979

4844337858

482228493X

4904807057

4873114799


最近のコメント
Links
プロフィール
  • Author:proger
  • 組み込み関係で仕事してます
ブログ内検索
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。