お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2007年9月 9日 - 2007年9月15日

2007年9月15日

無料のアンチウイルス・ソフトウェア「avast!」

PCを使っていると、今では アンチウイルス・ソフト無しでは 危なっかしくてネットにもつなげない状況となってしまっている。 アンチウイルス・ソフトをインストールするにしても、メジャーなモノは、 どれも毎年 ライセンス料を払い続けなくて使えなくなってしまうものばかりで、 非常にもったいない話だ。 しかし現在では、条件を満たせば 無料で利用できるアンチウイルス・ソフトウェアも いくつか存在している。 そのひとつが、 「avast!」 だ。

チェコ共和国に本社を置く 「ALWIL Software a.s. 」が 1988年から提供してきている アンチウイルス・ソフトウェアが「avast!」だ。 たくさんの種類があるが、その中でも 「 avast! 4 Home Edition 」は 非商用の個人使用に限り、無料で利用することができる。 実際に試用してみたが、 有料バージョンである「 avast! 4 Professional Edition 」に比べると 若干 機能が制限されてはいるものの、ファイルのリアルタイム監視 等、 基本的な機能はおさえてあるので、 個人ベースで使用するのであれば、十分だと思う。 一応、日本語にも対応している。

無料登録については、 「avast! 4 Home Edition の登録」ページ から、メールアドレス、氏名、住所を記入すると、 ライセンスキーがメールで送られてくる。 それから、そのライセンスは1年間有効だとういうことだ。 これについては、このページに
avast! 4 Home Edition はインストール後60日間デモモードで稼働します。 登録後電子メールで無料ライセンスキーを取得します。 このライセンスキーは1年間有効です。 1年が過ぎたら再登録をしてください。
と 説明されている。

「avast!」では、いくつか特殊な用語を使っている。 例えば、常駐保護プログラムのことを「プロバイダ」と呼んだり、 更新されるウイルス定義ファイルのことを「 VPS 」と呼んだりしている。 また、ウイルスを隔離する領域のことを 「Chest(チェスト)」と呼び、 ウイルスが発見された場合など 処理の選択肢として「 チェストへ移動 」というのを 選ぶことができる。

【参考リンク】

カテゴリー: Security , Software     22:12 | コメント (0) | トラックバック (0)

2007年9月14日

ギークサロン : 松田白朗氏とゲーム機技術について語る

松田白朗 氏による JTPAギークサロン 「松田白朗氏とゲーム機技術について語る」が いつものとおり、パロアルト(Palo Alto)にある 弁護士事務所 Wilson Sonsini Goodrich Rosati (WSGR) にて 行われた。

長年、ゲーム機業界で活躍されてこられた松田さんである。 今までに携わってこられたゲームとしては、 「SEGAサターン」 「Dreamcast」 「Xbox」 「Xbox360」等である。 それらの機器に関する パフォーマンス・チューニング、 グラフィックス、ネットワーク、システム、サウンド 関連の 開発を行ってこられている。

コンシューマ向けのゲームと言えば、 専用のソフトしか動作しない、クローズドなプラットフォームである。 このプラットフォームの提供社のことを、プラットフォーマと呼ぶらしい。 そして、ゲーム・ソフトを開発する際には、 このプラットフォーマと契約をし、出来上がったソフトに関しては プラットフォーマがメディア生産をおこなう流れとなっている。

また、ゲーム・ソフトの方向性として、 1本のゲーム・ソフトが 今まで以上に大規模化してしてきており、 それに対応して 開発体制や資金の調達も大規模化してきている。 具体的には、開発スタッフが百人規模で、開発予算が20億円となっている ゲーム・ソフトも存在しているようだ。 また最近では、ゲーム・ソフトの形態も オンライン・ゲームや携帯ゲーム等、多岐にわたってきている。

開発チームに関しては、徒弟制度に基づく完全分業制で、 ディレクタを筆頭に、プログラマ、プランナ、アーティスト 等が それぞれの持分を担当している。

ゲーム機のハードウェアに関しては、 「Xbox360」「PlayStation3」「Wii」 のそれぞれについて、詳しく比較解説があった。

基本的に、ゲーム機のCPUには組み込み系のCPUが採用されていて、 PowerPC、SH、MIPS 等がメジャーである。 Xbox1.0 で採用された Celeron は例外ともいえる。 実際にゲーム機に採用されるCPUが最新・最高性能のモノよりも、 コストを落とすために、ミッドレンジ・クラスのモノが採用されており、 あとは、ソフトのカスタマイズでギリギリまでの性能を引き出すことになる。

ゲーム機には欠かせないGPUに関しては、 現在のところ、 AMD と nVidia の2つの会社での独占である。 その他、オーディオでは DolbyDigital、Prologic II 等が主流となっている。 また、ネットワーク接続も欠かせない機能となっており、 WiFiによる無線LAN対応も当たり前になってきている。

ソフトウェアの設計方針としては ともかく、プレイヤーが面白ければOK。 あとの見えない部分は全て無視する。 特に、レスポンスタイムが重要である。 ということであった。

開発環境としては、 VisualStudio、CodeWarrior、GDB等のIDEによる クロス開発の形態をとっていることがほとんどで、 開発言語は基本的に C++ となっている。 ちなみに、「CodeWarrior(コードウォーリア)」とは、 Metrowerks社が開発した たくさんのプラットホームに対応している統合開発環境で 現在は、Freescale社からリリースされている。

そして最後に、最適化についてだが、 前回ギークサロンで使った OpenCV を最適化する、 という実演を交えてのプレゼンであった。 特に、松田さんの最適化ポリシーは、 最適化をはじめるにあたり具体的で達成可能な目標を決め、 それを達成できたら、すぐに忘れること、だそうだ。 確かに、最適化は突き詰めるとキリがない。 どこまでやって、どこでやめるか、というのも エンジニアの感どころ、と言えそうだ。

【参考リンク】

カテゴリー: JTPA     22:10 | コメント (0) | トラックバック (0)

2007年9月13日

FreeBSDでシステムコール呼び出しをトレースする「truss」コマンド

最近のFreeBSDには、「truss」コマンド、というコマンドが付いてきている。 これで、プログラム中のシステムコール呼び出し部分をトレースすることができる。

まず FreeBSDでは procfs(5) が mountされていることが必要なので、 /etc/fstab に以下を加えて mount する。
proc    /proc   procfs  rw      0       0
マウントの方法は、
# mount -a
で、もう一度、引数なして mount コマンドを実行するか、もしくは dfコマンドで 確認できる。
# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
procfs on /proc (procfs, local)
# df
Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
/dev/ad0s1a  18276366 2760552 14053706    16%    /
devfs               1       1        0   100%    /dev
procfs              4       4        0   100%    /proc


trussコマンドの例して、"hello" を echo する際に使われるシステムコールを追います
# truss /bin/echo hello
mmap(0x0,3952,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 671555584 (0x28072000)
munmap(0x28072000,3952)                          = 0 (0x0)
__sysctl(0xbfbfeab8,0x2,0x2806e618,0xbfbfeab4,0x0,0x0) = 0 (0x0)
mmap(0x0,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 671555584 (0x28072000)
issetugid()                                      = 0 (0x0)
open("/etc/libmap.conf",O_RDONLY,0666)           ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",O_RDONLY,00)     = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0V\0\0\0\0"...,128) = 128 (0x80)
lseek(3,0x80,SEEK_SET)                           = 128 (0x80)
read(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,86) = 86 (0x56)
close(3)                                         = 0 (0x0)
access("/lib/libc.so.6",0)                       = 0 (0x0)
open("/lib/libc.so.6",O_RDONLY,00)               = 3 (0x3)
fstat(3,{mode=-r--r--r-- ,inode=376834,size=929420,blksize=4096}) = 0 (0x0)
read(3,"\^?ELF\^A\^A\^A\t\0\0\0\0\0\0\0"...,4096) = 4096 (0x1000)
mmap(0x0,946176,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_NOCORE,3,0x0) = 671588352 (0x2807a000)
mprotect(0x28144000,4096,PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x28144000,4096,PROT_READ|PROT_EXEC)    = 0 (0x0)
mmap(0x28145000,24576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED,3,0xca000) = 672419840 (0x28145000)
mmap(0x2814b000,90112,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 672444416 (0x2814b000)
close(3)                                         = 0 (0x0)
sysarch(0xa,0xbfbfeb30)                          = 0 (0x0)
mmap(0x0,168,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 672534528 (0x28161000)
munmap(0x28161000,168)                           = 0 (0x0)
mmap(0x0,22784,PROT_READ|PROT_WRITE,MAP_ANON,-1,0x0) = 672534528 (0x28161000)
munmap(0x28161000,22784)                         = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0)                 = 0 (0x0)
readlink("/etc/malloc.conf",0xbfbfec20,63)       ERR#2 'No such file or directory'
issetugid()                                      = 0 (0x0)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 672534528 (0x28161000)
break(0x804b000)                                 = 0 (0x0)
break(0x804c000)                                 = 0 (0x0)
hello
writev(0x1,0x804b030,0x2)                        = 6 (0x6)
exit(0x0)
process exit, rval = 0
と、このように、簡単な echo コマンドでさえも、このように長い出力になる。

【参考リンク】

カテゴリー: FreeBSD     22:46 | コメント (0) | トラックバック (0)

2007年9月12日

プログラムがロードする共有ライブラリを表示する「 ldd 」コマンド

FreeBSDをはじめとする UNIX系の ほとんどのプログラムは、 共有ライブラリ(共有オブジェクト)を動的にリンクして動作する。 場合によっては、あるプログラムが、 どのような共有ライブラリをロードするのかを知りたい場合がある。 そのような時に、一覧で表示してくれるのが、この「 ldd 」コマンドである。

詳細は、マニュアルの 「ldd -- 依存する共有オブジェクトの一覧」 などに書いてあるので、 ここでは具体例をみてみることにする。 まずは ls コマンド。
%  which ls
/bin/ls
% ldd /bin/ls
/bin/ls:
        libutil.so.5 => /lib/libutil.so.5 (0x2807f000)
        libncurses.so.6 => /lib/libncurses.so.6 (0x2808b000)
        libc.so.6 => /lib/libc.so.6 (0x280cc000)
このように、/bin/ls コマンドは、 「libutil.so.5」、「libncurses.so.6」、「libc.so.6」の 3つの共有ライブラリをロードし、 それぞれは、/lib ディレクトリに存在していることがわかる。

また、ldd には 「 -a 」オプションというのがあり、このオプションをつけると 各ロードオブジェクトが必要とするすべてのオブジェクトの一覧を表示してくれる。 例えば、
% ldd -a /usr/local/bin/ruby
/usr/local/bin/ruby:
        libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x2807a000)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28138000)
        libm.so.4 => /lib/libm.so.4 (0x28150000)
        libpthread.so.2 => /lib/libpthread.so.2 (0x28166000)
        libc.so.6 => /lib/libc.so.6 (0x2818b000)
/usr/local/lib/libruby18.so.18:
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28138000)
        libm.so.4 => /lib/libm.so.4 (0x28150000)
のように、「 libruby18.so.18 」から、 「 libcrypt.so.3 」と「 libm.so.4 」が呼ばれているのがわかる。

それから、lddコマンドは、実行ファイルだけでなく共有オブジェクトにも対応しているので、 上記の例では、共有ライブラリである「 /usr/local/lib/libruby18.so.18 」についてみてみると、
% ldd /usr/local/lib/libruby18.so.18
/usr/local/lib/libruby18.so.18:
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x28223000)
        libm.so.4 => /lib/libm.so.4 (0x2823b000)
のように表示される。

【参考リンク】

カテゴリー: FreeBSD     22:46 | コメント (0) | トラックバック (0)

2007年9月11日

FreeBSDにおけるタイムゾーンの手動設定方法

FreeBSDのハンドブック等には、 FreeBSDにおける タイムゾーンの設定には、 sysinstall を起動して行うように記述されている。 しかし、sysinstall を起動することなく手動で、 もしくは シェル・スクリプトか何かから自動的に 設定したい場合もある。 今回のブログでは、その方法について調査してみた。

この方法に関する説明は、 「 FreeBSD: Set date time and timezone 」 ページの「 FreeBSD Setup Timezone 」に見つけることができた。 ここの説明によると、「 /usr/share/zoneinfo 」ディレクトリ以下に 地域ごとに分類されている timezoneファイルがあり、 その中から、該当する地域のファイルを 「 /etc/localtime 」へコピーすることにより、 FreeBSDシステムにおけるタイムゾーンを設定できる、とある。

具体的に例を挙げながら 見てみることにする。 ここではシリコンバレー(Silicon Valley)のタイムゾーンを設定してみる。 まず、
# cd /usr/share/zoneinfo
# ls
Africa          Asia            CST6CDT         Etc             HST             MST7MDT         WET
America         Atlantic        EET             Europe          Indian          PST8PDT         posixrules
Antarctica      Australia       EST             Factory         MET             Pacific         zone.tab
Arctic          CET             EST5EDT         GMT             MST             SystemV
のように、ディレクトリ「 /usr/share/zoneinfo 」下には 地域や代表的なタイム・ゾーンのファイルが置いてある。 また、このディレクトリには、「 zone.tab 」というファイルがあるので、 このテキスト・ファイルの内容をみてみると、 細かな地域が一覧できる。

今回の例では、シリコンバレー(Silicon Valley)のタイムゾーンを設定するので 「 America 」ディレクトリへ降りてゆく。
# cd America
# ls
Adak            Bogota          Dawson_Creek    Guayaquil       Managua         New_York        Recife          Swift_Current
Anchorage       Boise           Denver          Guyana          Manaus          Nipigon         Regina          Tegucigalpa
Anguilla        Cambridge_Bay   Detroit         Halifax         Marigot         Nome            Resolute        Thule
Antigua         Campo_Grande    Dominica        Havana          Martinique      Noronha         Rio_Branco      Thunder_Bay
Araguaina       Cancun          Edmonton        Hermosillo      Mazatlan        North_Dakota    Santiago        Tijuana
Argentina       Caracas         Eirunepe        Indiana         Menominee       Panama          Santo_Domingo   Toronto
Aruba           Cayenne         El_Salvador     Inuvik          Merida          Pangnirtung     Sao_Paulo       Tortola
Asuncion        Cayman          Fortaleza       Iqaluit         Mexico_City     Paramaribo      Scoresbysund    Vancouver
Atikokan        Chicago         Glace_Bay       Jamaica         Miquelon        Phoenix         Shiprock        Whitehorse
Bahia           Chihuahua       Godthab         Juneau          Moncton         Port-au-Prince  St_Barthelemy   Winnipeg
Barbados        Costa_Rica      Goose_Bay       Kentucky        Monterrey       Port_of_Spain   St_Johns        Yakutat
Belem           Cuiaba          Grand_Turk      La_Paz          Montevideo      Porto_Velho     St_Kitts        Yellowknife
Belize          Curacao         Grenada         Lima            Montreal        Puerto_Rico     St_Lucia
Blanc-Sablon    Danmarkshavn    Guadeloupe      Los_Angeles     Montserrat      Rainy_River     St_Thomas
Boa_Vista       Dawson          Guatemala       Maceio          Nassau          Rankin_Inlet    St_Vincent
のように、アメリカの都市名がついたファイルが たくさん置いてある。 残念ながら、この中に、シリコンバレー(Silicon Valley) とか サンノゼ(San Jose) とか サンフランシスコ(San Francisco) と いった都市名がないので、シリコンバレーと同じタイムゾーンの ロス・アンゼルスのファイル「 Los_Angeles 」を採用することにする。

ファイルがみつかったら、あとは、このファイルを 「 /etc/localtime 」へコピーするだけだ。
# cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
新しいタイム・ゾーンが有効になるためには システムの再起動等は不要である。 確認のために
# date
Wed Sep 10 17:55:11 PDT 2008
のように「 Pacific Daylight Time」を表す「 PDT 」と表示されている。

同様に、もしタイムゾーンを日本標準時にする場合には、
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
とすればよいことになる。

ちなみに、「 /usr/share/zoneinfo 」ディレクトリにあった「 PST8PDT 」ファイルをコピーしても シリコンバレーのタイム・ゾーンである太平洋標準時になるようである。

【参考リンク】

カテゴリー: FreeBSD     22:08 | コメント (0) | トラックバック (0)

2007年9月10日

FreeBSDの tarコマンドによる 「tar.gz」ファイルの 作り方 と 解凍方法

FreeBSDをはじめとするUNIX系のシステムで ソースファイル等が配布される場合は必ず、 「 XXXX.tar.gz 」というファイルの拡張子になっている。 この 「 .tar.gz 」形式のファイルの 作成方法 と その展開方法について まとめておく。

これらのファイル操作は、最近の FreeBSD であれば、 「 tar 」 コマンドで行うことができる。 tarコマンドにも 例のごとくたくさんのオプションが存在するが、 これらのオプションには 大きく2通りがあり、 「モードオプション」と「その他のオプション」である。

まず 主な「モードオプション」は3つで、
  • c 新たにアーカイブを作成する
  • t 標準出力にアーカイブ内容のリストを出力する
  • x アーカイブからディスクに展開する
と言ったところ。 ちなみに上記のように、いくつかのファイルを1つにまとめること、もしくは まとめたもを表すのに「アーカイブする」とか「アーカイブ」という言葉を使う。 また、そのような操作をするソフトウェアのことを「アーカイバー」ということもある。

それから tarコマンドのたくさんある その他のオプションの中で 重要なの(私が使うことがあるの)は、
  • f 指定されたファイルに対してアーカイブを読んだり書いたりする
  • v 詳しい出力を表示する
  • z 作成するアーカイブを gzip で圧縮する
と言ったところ。

では実際の例として、「test」というディレクトリの下 全体を 「 test.tar.gz 」というファイルにまとめる場合は、
% tar czf test.tar.gz test
とする。 この際の拡張子は、「 .tar.gz 」である必要はなく、 何でもよいし、もしくは極端に言うと 何もつけなくてもよいのだが、 通常慣例として、 tar でアーカイブして、かつ gzip 圧縮したファイルには 「 .tar.gz 」と付けることになっている。 こうしておいた方が 自分が間違えなくてすむ。

既にアーカイブされているアーカイブ・ファイル「 test.tar.gz 」の内容を確認するには
% tar tvf test.tar.gz


アーカイブ・ファイル「 test.tar.gz 」を展開するには、
% tar xf test.tar.gz
とすればよい。

ここでの注意点として、 アーカイブ・ファイルを作成( c オプション )する際に gzip 圧縮するには、 必ず「 z 」オプションをつけなければならいが、 少なくともFreeBSDに関しては、 自動的に gzip 圧縮されていることを認識するので、 内容を確認( t オプション )したり、 展開( x オプション )したりする場合には、 「 z 」オプションを つける必要がない。

【参考リンク】

カテゴリー: FreeBSD     22:48 | コメント (0) | トラックバック (0)

2007年9月 9日

USB GPSレシーバー「 GlobalSat BU-353 」

最近 USBにつながる GPSレシーバーが必要になったので、 それについて調査していたのだが、 その結果として、最近のブログでレポートしたとおり、 GPSのチップでは、 「 SiRF 」社の 「 SiRFstar III」 が有名だとか、 そのチップを使ったGPS機器メーカーとしては、 「 Globalsat Technology Corporation 」 がある、ということが判ってきた。

で、この 「 Globalsat 」 からの USBによるGPSレシーバーとしては 「BU-353 Cable GPS」 という製品がある。 金額も40ドル前後とお手ごろ価格だし、 形も写真のとおり、黒い「おたまじゃくし」といったところだ。

消費電力は80mWということで、電源はUSBからの供給のみで動作してくれるので、 別に電源のことを考える必要がないのがありがたい。 というか、それが目的で、USB対応の GPSレシーバーを探していたわけなのだが。 そして利用されている GPSのチップはもちろん 「 SiRF 」社の 「 SiRFstar III」。 また、デバイス・ドライバーは Windows用 と ポケットPC用 が提供されているようだ。

この商品、アメリカでは もちろん amazon.comをはじめ 多くのショップで販売されているが、 日本でも アマゾンで 「 GlobalSat BU-353 」 として販売されている。 また、 「 楽天 」 の 「 パソコンGPSショップ 」 というショップでは、 「 コメットUSB/3 」 という名称で販売されている。

【参考リンク】

カテゴリー: Device     22:38 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.