goo blog サービス終了のお知らせ 

まず持ってから

「もちつもたれつ」「ギブアンドテイク」でもいいんだけどまず”もって”から、つーことで

sp

2007年12月27日 23時12分37秒 | プログラム
超実装依存だということは理解しています。

関数呼び出し履歴とかスタックの様子とかを確認する為に、
 1:ローカル変数のアドレスを取得して
 2:得られたローカル変数のアドレスからmemcpyでメモリをコピーして
 3:スタックを取得する
こんなことできるんだ・・・すげぇ

まぁICEなんか使ってスタックを覗くのと同じ事だろうけど、この方法は思いつかなかった。
ちょっとビックリ。

hexdump

2007年12月21日 22時04分13秒 | プログラム
cygwinでhexdumpを使いたいんだけど、どのPackageに入っているかわからない。なので、google codeで探したソースからインストールしたんだけど、ちょっと不満。

コンパイルした時に、u_quad_t、quad_tの定義がない、とエラーが出てmake出来ない。これらの定義は sys/types.h にあるんだけど、__rtems__ が定義されてなくてプリプロセッサで無効にされてしまう。

make するときに強制的に __rtems__ の定義を追加しても他のエラーが生まれるので、hexdump のソースに sys/types.h で定義されているコードをコピペで追加してコンパイル、インストール。

一応ちゃんと動くexeが出来たけど、なにか不満。こんな手間をかけないとソースからインストールできない理由がわからない。


ググッてみてもよくわからないので最初のcygwinのページに戻り、もう一度確認。すると左側に「Setup Package Search」の文字列を発見!中に検索窓らしきものがあるので駄目もとで hexdump を検索すると、ビンゴ!!!どのPackageに入っているかだけでなく、cygwin用のソース群も確認できた。

おかげで、コンパイルできない問題をどう解決してるか、も確認できた。

ラッキー

openoffice

2007年12月11日 23時43分36秒 | プログラム
openoffice 2.3.1

超高機能方眼紙 + COMのお手軽実行環境(+ Win32APIもつかえるし) として Excel がお気に入りのオイラですが、アウトラインエディタとして使ってもいいかな?USBで持ち運びもできるし。と思い立ち、openoffice をダウンロード。ちょうど、新verがリリースされてたみたいで、2.3.1 をインストールしました。

インストールしたんだけど、今イチそそられないのはなぜだろう?


ワープロソフトの「Writer」、
表計算ソフトの「Calc」、
プレゼンソフトの「Impress」、
ドローソフトの「Draw」、
データベースソフトの「Base」、
数式エディターの「Math」

の6つのソフトで構成されていて、このラインナップを見ると、便利だと思うんだけどなぁ・・・
そうか、これらの機能をオイラが使うシーンがイメージできないからか!なるほど

リソースデータ

2007年12月04日 23時41分21秒 | プログラム
旧Macでプログラムを作る時、リソースフォークに画像データとか音データとか置き、データフォーク(ファイルの本文?)に文字データを置く事で簡単に文字情報と画像データを1つのファイルにまとめる事が出来ていました。いまでもやろうと思えばできるのかな?

昔フリーウエアで「数独」のプログラムを作った時、データフォークに数字データ、リソースフォークに数字の画像データを置く事で、
・普通のテキストエディタでも数字データを編集でき、
・問題毎に数字の「見た目」をかえられる、
・でも問題ファイルは1つのファイルで、その中に数字データ、画像データ両方が詰まっている、
こんな機能を持たせていました。このような仕組みがリソースフォークを使えば簡単に作れたものです。

最近、Win32API でのプログラムの勉強を初めました。単純な勉強だけではつまらないので、そのプログラムネタとして「数独」を作っています。その「数独」の機能として、旧Macの時と同じように「数字データ以外に見た目も問題毎に換えれるようにしたい」を考えていたのですが、「画像込みの専用ファイルフォーマットにすると問題を編集するのにテキストエディタがつかえないしなぁ、どうしよ」と悩んでもいました。悩んでいたちょうどその時、仕事で似たような事をしている機能を発見!そうか、この手があったか!!!

簡単にいえば
・数字データは数字データで独立したtxtファイルに格納
・画像データは画像データで普通の画像ファイル(gifとかbmpとかjpgとか)で格納
・内部のファイル名だけは固定
・これらを1つのフォルダにまとめ、tarで1つのファイルに変換してしまう。

このように、数字/画像ファイル群を1つのファイルにまとめてしまうのです。一応、拡張子だけは換えておいて、ダブルクリックでtarファイルの解凍が起きないようにしています。
#もちろん、拡張子が違うだけで中身はtarファイルそのものです。なので、拡張子を戻して解凍ソフトを使えば個別ファイルにアクセスできます。

これで、旧Macのリソースフォークと同じような機能が簡単に持たせられます。あとは、tarファイルを解析する機能を実装するだけです。

tarファイルのフォーマットはgoogleで今検索中。単純なtarなので圧縮されている訳ではなく、比較的簡単だろ?と思って調査しているけど実際の所どうでしょう?ちょっと楽しみ。

起承転結

2007年12月01日 18時42分33秒 | プログラム
Google Desktop search はファイルの先頭数KBからインデックスを作っています。RSSリーダもエントリ一覧では先頭数行を表示してそこから個別エントリに誘導しています。これはレジュメ(文の要旨)が先頭に書かれていることを利用しているんだろうな。

プログラムのソースでもモジュール分けされたファイルの先頭に説明があるし、各関数の説明もその関数の前の行に書かれている。

でも、これだと起承転結で書かれた文が上手くインデックスされなくなるんだなぁ・・・日本で開発している検索エンジンは文の起承転結なんか意識して検索インデックスを作っているんだろうか?

ログとり

2007年11月30日 22時38分46秒 | プログラム
引き続き、不具合調査中。#つーか、仕事でプログラム書いてねーし

実行時の変数を確認するためにいろいろログを埋めて調査してます。ログ出力の文字列の長さに制限がある&&行番号からログの位置は把握できる為、ログ文字列は極力短く、とりあえず、見たい値が確認できればOK、の気持ちで調査してました。

ある程度、grepで場所の予想を立ててから調査してるつもりだけど、見たいデータのログがどうしてもとれない。埋める位置が間違っている?見たいデータのログは別のところ?と悩み、第2候補、第3候補の調査位置へ新たにログを追加し、ログを取るときの操作方法を変えながら調査していると、なにかヘンな文字列がgrepに引っかかる。

あれ?なんか、ほしいデータのログが古いログの中にある?

どうも、内部でキャッシュの仕組みがあり、ログを埋めた箇所を通過するのは必要最小限な場合に限られているみたいで、見ようとしていた時はキャッシュ効果が働いていたみたい。だからログが取得できていない。それが偶然grepで引っかかった訳だ。

うーん、使い捨てのログでもちゃんとgrepに引っかかりやすいログを書かないと駄目って事を再認識した一日でした。

久しぶりのWin32API

2007年11月18日 23時17分52秒 | プログラム
日曜日で天気が悪かったので久しぶりにWin32APIを使ってプログラム作りをはじめる。

個人的なお約束にしている数独をWin32APIを使って楽しめるプログラムを作ることにしたんですが・・・
いかん、久しぶりすぎで全然覚えてない。今日はウインドウを出してデバッグ用準備のあれこれを準備してたら1日が終わってしまった。


個人的なお気に入りデバッグ用ログ。これを開発環境に合わせて改造。

#define CHECK(chk) do{   ¥
  if(!(chk)){          ¥   
   fprintf(stderr,"CHECK:%s:%04d%:%sn", __FILE__,__LINE__, #chk);¥
   return;          ¥
  }               ¥
}while(0)

#define CHECK1(chk,rVal) do{  ¥
  if(!(chk)){            ¥
   fprintf(stderr,"CHECK:%s:%04d%:%sn", __FILE__,__LINE__, #chk);¥
   return rVal;          ¥
  }                  ¥
}while(0)


「#chk」と#を使って文字列をマクロで生成してるところがミソです。
rValもマクロなので型チェックがゆるくなるのがお気に入り。

Cのassertだとプログラムが止まってしまうので実行時チェックには少しきつすぎ。それにDEBUGがはずされるとチェック機能自体がなくなるので、それはそれで困ってしまう。

でも、このマクロだと、パラメータチェックにもお手軽に使えるし、fprintf の部分をはずしたマクロに変更すればデバッグマクロから実行時チェックとしても使える。


このマクロのおかげでソースとログのマッチングがしやすくなってなかなか嬉しい。

携帯?開発

2007年11月15日 23時53分12秒 | プログラム
定期的に見ているスラドより
携帯電話の液晶を再利用したボードPC「DVIEW」




>液晶は320×240ドット(QVGA)表示可能な2.2型LCDを採用し、
>テレビへの同時出力や、LCDとテレビ別々の表示のなども可能。
>MP3、 MIDIやADPCMなどの音声出力を標準装備し、CMOSカメラ、
>UARTやSDカードなどのデバイスと接続することもできる。


ぜひ、一般に小売もしてくれ。基本セット2万くらいなら買うから。

趣味で「LEDではないある程度の大きさの液晶画面を持った組み込み開発ごっこ」の目的でGBAの開発してるんだけど、時々自分の書いたプログラムが実機で動いてるところが見たくなるときがある。FPGAとかMonaOSとかエミュの上でも動かせるけど、一度実機で動いている姿を見たら無性に感動した。ぜひ、GBA用に書いたプログラムの「生」な動きを体感したい。せっかくGBAのハード的な機能はほとんど使わずに書いてるんだから(笑

アンドロイド

2007年11月15日 00時33分24秒 | プログラム
試そうと思ったらPPCMac版SDKは無いんだな・・・

Android

つーか、iPhoneじゃね?これ
Cocoaは使ってないけど、WebKitもつかってるし、DBとしてSQLite使ってるし、
ライブラリ云々じゃないけど、コンセプトはiPhoneと同じ、かな?

とりあえず、日本のケータイ部隊では生み出せなかっただろうなぁ
Palmを買ったACCESSならいけたかも知れないけど、中の人達は残ってるかどうか不明だし

とりあえず、凄すぎ