Archive for 1月, 2009

Windows7のレポート Vol.??

木曜日, 1月 29th, 2009

Windows7のベータ版(英語)を使っての感想をレポートしようと思います。

基本的な操作感などは完全に慣れてしまいました。もう、WindowsXPには戻れないかもしれません(笑)

そんな中、ちょっと気になったのをいくつか。

インストールできないソフトウェアがいくつか。

以前、Skype Ver3.8??をインストールしたんですが、急に不安定になり、ブルー画面→シャットダウンを何度も繰り返していました。Skypeをアンインストールしたところ、システムが通常に戻ったので、Skypeが原因だろうと思っています。SkypeについてはVer4.??がベータ版で利用可能だったので、そちらをインストールしたら問題なく、動きました。なので、これはSkype Ver3.8??とWIndows7の間での不具合かな?

ほかにもVisualStudio2005や、Cannonのプリンターソフトウェアなんかをインストールしようとしたときも尽くエラーではじかれてしまいました。

こういったインストール・エラーの原因は何だろうか??もしや、OSが英語版をつかってて、ソフトウェアに日本語版をインストールしようとしてるのが原因だろうか??

Bluetooth機能が使いやすい

Bluetoothアダプタのソフトウェアをインストールしなくても、デフォルトでBluetoothアダプタを装着すれば認識している点が使いやすい。今は、携帯電話とSkypeヘッドセットがBluetooth対応だけど、これからどんどん増やしていきたいな。

ということで、もし誰か上のインストール・エラーの原因がわかる方がいましたら、教えてください。

オンラインExifリーダー ベータリリース

水曜日, 1月 21st, 2009

PHPにより、オンラインExifリーダーをベータ版としてリリースしたので、ここで告知しておきます。

http://www.exif.biz/からアクセス可能です。

なにができるの?

JPEG画像ファイルに付加されたメタデータであるExifという情報を読み出します。今の段階で読み出せるExif情報は、

  • 画像の横幅
  • 画像の縦幅
  • 画像のファイルサイズ
  • 写真の撮影日
  • カメラのメーカー
  • カメラの機種
  • 露光時間
  • 撮影場所(GPSデータ)

となっております。画像によってはこれらの情報が付加されていないものがあったりします。付加されていない情報については読み出せません。

URL

C/C++のプログラム高速化

水曜日, 1月 21st, 2009

C言語、C++言語のプログラム高速化について書いていこうかと思います。
C実践プログラミング、C++実践プログラミングの本(共に、O’REILLY出版)を読んで、その中に乗っていたことを主に書いていきます。

関数をマクロ化

処理を関数として書くよりも、1~2行程度の処理であれば、マクロとして書いたほうが速く実行できます。

int sqr(int x) { return (x*x); }とするよりも、
#define sqr(x) ((x)*(x))としたほうが速くなる。

このとき、#define sqr(x) (x*x)などとしないように注意する。

配列の初期化はポインタを利用

二次元配列mat[5][9]を初期化する際には、mat[0][0]のポインタから、mat[4][8]のポインタまで、ポインタを1ずつずらしながら初期化していきましょう。

ライブラリ関数を使う

もし、実行したい処理を行うライブラリ関数が存在すれば、迷わずそのライブラリ関数を用いる。頻繁に用いられるライブラリ関数はアセンブリ言語で記述されていることが多く、プロセッサに依存した手法を利用し、C/C++で書くようよりも高速な処理が可能になる。

読み書きするファイルをバイナリ化

読み書きするファイルがASCIIで書かれているよりも、バイナリとして書かれているほうが処理が早く済むようです。詳しくは、scanfが非常に時間のかかる処理だから、だそうです。

複雑なループを内側へ

ループが何重にもネストする場合、もっとも内側のループは、もっとも複雑な処理を書くようにしましょう。

浮動小数点演算をできるだけ使わないように

できるだけ、浮動小数点演算を行わないようにしましょう。少しの工夫で整数演算に変えれる場合は、整数演算にしたほうが3倍~20倍にまで速くなります。

2の累乗

コンピュータの内部は2進数を使っているので、10の累乗を使うよりも2の累乗を使うようにしましょう。

要素の交換はポインタの付け替えで

構造体など、多くのデータを持ったデータを入れ替えたりするには、データを入れ替えるのではなく、ポインタを入れ替えるようにしましょう。

register修飾子

通常の変数宣言int x;などは、メインメモリ中に格納されます。が、頻繁にアクセスされる変数は、アクセスに比較的時間のかかるメインメモリよりも、高速なレジスタに格納したほうが早くなるそうです。レジスタに格納するために、変数宣言をregister int x;のようにします。

通常のPCの場合、レジスタは2個程度、大多数のUNIXシステムでは11個前後、スーパーコンピュータでは128個くらいのレジスタを備えているようです。使用できるレジスタの数よりも多くのレジスタ変数を宣言しても良く、多すぎる分はメインメモリに格納されるようです。

実際には、register修飾子はあまり使われていないようです。

その他(アルゴリズム・データ構造)

上で紹介した高速化手法よりも重要なのが、使用するアルゴリズム、データ構造の吟味。これらをしっかり考えたほうが、プログラムはより高速になります。

[フリーソフト] DropBox

月曜日, 1月 19th, 2009

百式ブログの中の人も使っているというファイル同期ツール『DropBox』というソフトを知り、実際に使ってみました。

むちゃくちゃ便利すぎる。DropBoxフォルダにSendしておけば知らない間にアップロードが終了してて、別PCで見ても同じファイルがDropBoxフォルダに存在している。しかも、WindowsだけでなくMac,Linuxクライアントも存在するというからもう完璧。あとはFree版の2GBの容量で足りるのかどうか。まぁ、もし足りなくても50GBの有料版を申し込むんだろうな。

ということで、DropBoxのURLを張っておきます。

DropBox
http://www.getdropbox.com/

Windows7のペイントが強化されてた

日曜日, 1月 18th, 2009

20090118_01.JPG

いまさらながらのネタです。Windows7のペイントが一気に強化されてました。っていってもVistaから強化されてるのか、Wi7からの強化なのかはVistaをまともに使ったことがないのでわかりません。

気づいた新機能としては、

  • グリッドをつける
  • ルーラーをつける
  • シェイプが追加
  • ブラシの種類が増えた?
  • フル・スクリーン表示が可能

というあたりかな?おそらくVistaのころにも存在した機能があるかもしれませんが。

Photoshopなんかと比べたらまだまだだけど、それは比べる相手が違ってる気もする。あとは、保存形式がPNG形式を標準にするなら透過させる機能をつけてもいいのかな?とは思ったりしますね。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes