2011年01月16日 iOS3.1.3でJpeg画像を読みだしたときにEXC_BAD_ACCESSが起きる問題

インターネットからJpeg画像をダウンロードして表示するアプリケーションを開発していたとき、 特定のJpeg画像を読みだしたときにiOS SDK側でEXC_BAD_ACCESSが起きて困ったことがありましたので、 解析結果と対策を書いておきます。

2010年12月26日 UINavigationController使用時にフルスクリーン表示する方法

UINavigationControllerを使うと、Viewのサイズが勝手にリサイズされてしまいます。 普段は便利なのかもしれませんが、 ナビゲーションバー(UINavigationBar)やツールバー(UIToolbar)を透明にしたとき、 その裏に描画できなくて困ります。 これを避けて、以下のように画面全体に描画する方法を調べましたので書いておきます。

2010年12月15日 NSString+Geometry

UIViewのframeの状態をコンソールに出力するのが結構面倒でしたので、 以下のようなクラスを作って対応することにしました。

2010年12月13日 GTMLoggerクラス

Google Toolbox for Macに入っていたロギング用のGTMLoggerクラスを使ってみました。

2010年12月11日 Google Toolbox for Macの使い方

XMLやHTMLを扱うとき、"&"といった実体参照文字列を、"&"に置き換えたい場合があったので、適当なライブラリがないか調べてみました。 Google Toolbox for Macのgtm_stringByUnescapingFromHTMLを使うのが良さそうだったので、これを導入してみることにしました。 導入手順を参考までに残しておきます。

2010年12月08日 Objective-C@iOSの例外処理

最近Objective-CでiOSのアプリケーションを書いているのですが、ライブラリ的な役割をするコードで異常を検出した際、 呼び出し元への通知に例外処理を使ってよいのかどうかで良く悩みます。

2010年12月05日 HTTPモニタFiddler

HTTPを扱うアプリケーションを開発するとき、 HTTPの生データをモニタするために横取り丸とInetSpyというソフトを使っていました。

2010年12月04日 UIViewControllerのframe設定

Window-based Applicationプロジェクトを作成して、initWithNibName:bundle:を使ってUIViewControllerを追加して表示しようとすると、 以下のようにInterface Builderの表示とiPhone Simulatorの表示がStatusBarの分ずれることがあります。

2010年12月03日 libxml2でHTML Parse

iOSでHTML(not XML)を解析(Parse)するコードを書く機会がありましたので、トラブル情報や解決策などをまとめておきます。

2010年11月23日 NSURLResponseのexpectedContentLengthの使い方

NSURLConnectionを使ってデータをダウンロードするとき、 ダウンロードデータを格納するNSMutableDataの容量をダウンロードデータのサイズと合わせておこうと思って NSURLConnectionのdelegateを担うクラスに以下のようなコードを書きました。

2010年07月21日 iOS SDK4.0でapplicationWillTerminateが呼ばれない

遅ればせながらiPhoneアプリ開発環境をiOS SDK 4.0にアップデートしてみたところ、 シミュレータでアプリを終了した時に、XxxAppDelegateのapplicationWillTerminateが呼ばれなくなっていました。 このMessageを受けてアプリ終了処理(状態保存など)をしていたので、呼ばれなくなってしまうと大変です。

2010年07月19日 開発初期段階のパスワード取り扱い

最近アカウントが必要なウェブサービスに接続するアプリケーションを作っていたとき、 開発の初期段階では、ソースコード中に自分のアカウントのパスワードを埋め込んでいました。

2010年02月02日 タッチイベント処理の順番

iPhone SDK 3.1.2 において、タッチイベント処理が、 touchesBegan → touchesMoved x N → (touchesEnded or touchesCancelled) という順番で来る想定でコードを書いていたら、マルチタッチ時に上手く動作しないという問題が発生しました。 この問題があるため、以前リリリースしたButterfly 15というアプリは、 画面を複数の指でタッチしまくっていると落ちます。なんてことだ。

2010年01月11日 人材獲得作戦・4 試験問題

人材獲得作戦・4 試験問題というのがあったのでやってみました。

2009年12月29日 iPhoneアプリの登録作業(3/3)

iPhoneアプリの登録作業(2/3)の続きです。 Overviewの入力が終わりましたので、残りの項目を入力していきます。

2009年12月28日 iPhoneアプリの登録作業(2/3)

iPhoneアプリの登録作業(1/3)の続きです。

2009年12月27日 iPhoneアプリの登録作業(1/3)

先日iPhoneアプリの登録作業をしてみましたので、作業に必要だったものや遭遇したトラブルについてメモしておきます。

2009年12月16日 Butterfly15 1.0 リリース

先日iTunesのApp Storeへ登録したiPhoneアプリ「Butterfly15」のレビューが完了し、公開されました。 登録から公開までは10日ほどでした。Appleからの指摘は何もありませんでした。 内容無いので指摘しようがなかったのかもしれませんが。

2009年12月09日 透明色を含む画像の縮小

先日iTunes App Storeへの登録を行ったアプリですが、アプリ名称は「Butterfly15」で、以下のようなロゴを使っています(LogoShader V1.85で作成しました)。 ちょっと大きめのロゴなので、アプリで使う場合は縮小して使うのですが、縮小するときにトラブルが起きたので、そのときの話を書いておきます。

2009年12月06日 iPhoneアプリ登録

iPhoneアプリの15パズルが完成したので、iTunesのApp Storeに登録してみました。

2009年12月04日 iPhone SDK ファーストインプレッション

最近iPhone SDK 3.1.2を使い、以下のようなアプリを作ってみています(ただの15パズルですが)。 iPhoneアプリを作るのは初めてなので、感想を書いておきます。

2009年11月25日 iPhone SDK Agreementメモ

最近iPhoneアプリの開発を始めたので、iPhone SDK Agreementを読んでみました。 iPhone SDKの利用規約みたいなものです。発行日は2009/07/30のようでした。 興味深かったところをメモしておきます。

2009年11月21日 4方向を回るfor文

忘備録代わりに4方向を回るfor文を書いてみました。

2009年11月15日 iPhone Developer Program加入時のトラブル

先日(2009/11/14)、iPhone Developer Programに加入しました。 参考にしたページは「iPhone実機に自作プログラムを転送するまでの手順」です。 このページの通り私もiPhone Developer Programに加入するときにトラブルが発生したので、そのあたりの出来事をまとめておきます。

2008年12月31日 D90のEXIFからADL設定を抜き出す

突然ピンポイントな情報でなんですが、 NikonのD90というカメラで撮影したJPEGデータからアクティブD-ライティングに関する情報を抜き出す方法を調べましたので、 ここに記録しておきます。

2008年07月30日 WS_POPUPウィンドウを最小化

Windowsアプリケーションでは、ウィンドウのタイトルバーや枠を表示せず、画面一杯にアプリケーションデータを表示することはフルスクリーン化と呼ばれています。 このフルスクリーン化を実現する方法のひとつに、ウィンドウスタイルをWS_POPUPにしてウィンドウサイズを画面サイズと同じにする、という方法があります。 しかし、WS_POPUPにすると、Windowsキー+Mによる最小化が効かなくなります。私はこのショートカットをよく使うので大変不便に感じました。

2008年04月08日 boost 1.35.0のBoost.Thread

boost 1.35.0では、Boost.Threadが結構強化されたようですので、Boost.Threadのドキュメントを読んでみたのですが、残念ながらThread Priorityの制御にはまだ対応していないようです。 Thread制御のコードをWin32APIではなくboostで書きたいのですが、これができないために移行できずにおります。 早く対応して欲しいなぁ・・・。

2008年04月04日 boost 1.35.0インストール(Visual C++ 2008)

boost 1.35.0がリリースされました。

2008年03月15日 boost::function + bindの破壊力

boost::functionとboost::bindの組み合わせは結構強力なようです。以下のコードをコンパイルしてみると・・・

2008年03月11日 boost::function その3

前回の続きです。 前回はFuncオブジェクトにObjectへのポインタを渡していましたが、今回はboost::shared_ptr<Object>を渡してみました。

2008年03月10日 boost::function その2

前回の続きです。 前回はFuncオブジェクトにObjectそのものを渡していましたが、今回はポインタを渡してみました。

2008年03月09日 boost::function その1

boostにはFunctionというライブラリがあります。 一言でいうと強化型関数ポインタですが、結構多機能です。 特にメンバ関数周りの機能が充実していて、以下のようにメンバ関数を格納した上に呼び出すこともできます。

2008年03月02日 WM_ENTERSIZEMOVEとWM_EXITSIZEMOVE

本記事は過去に書いた記事の焼き直しです。 Windowsアプリケーションの中には、ウィンドウのサイズ変更に時間がかかるものがあります。 代表的なものは画像ビューアです。画像の拡大縮小を綺麗にやろうとすると時間がかかるからです。 この時間がかかる処理をOnSize(WM_SIZEのハンドラ)に書くと、ウィンドウのサイズ変更がもっさりとしたアプリケーションになってしまいます。 本日紹介する方法は、サイズ変更のもっさり感を解消するための方法です。

2008年02月29日 Visual Studio 2008のマルチスレッドデバッグ機能

本日はVisual Studio 2008のマルチスレッドデバッグ機能を紹介します。 従来のVisual Studioからあった機能ですが、ほんのちょっとだけ進化しているようです。

2008年02月27日 Unicodeアプリケーションでファイルオープン

Visual Studio 2008を買ってからほぼ毎日ちょっとずつ触っていますが、GUIが今まで使っていたVisual Studio.NET 2003とあんまり変わらないので慣れるのは早そうです。 まだboostが公式に2008に対応していないあたりがちょっと辛いですが。

2008年02月26日 Visual Studio 2008のインテリセンス

Visual Studio 2008のインテリセンスは、Visual Studio.NET 2003に比べて良くなっています。(Visual Studio 2005は持ってないので比較できません) 特にboostを使ったコードが書きやすくなっています。例を数点紹介します。

2008年02月18日 libjpeg高速化改造版の使い方(Visual Studio 2008)

ソフトウェア工房αさんがリリースしているlibjpeg高速化改造版をVisual Studio 2008で使う方法を調べましたので、まとめておきます。 (正式名称はIndependent JPEG Group's JPEG software release 6b with x86 SIMD extension for IJG JPEG library version 1.02)

2008年02月17日 libjpegの使い方(Visual Studio 2008)

IJGが配布しているIJG JPEG library(libjpeg、jpeglib、jpeg-6bと呼ばれることもあるようです)をVisual Studio 2008で使う方法を調べましたので、まとめておきます。

2008年02月12日 Shift_JISとUnicodeの変換用関数

以前書いたコードのバージョンアップ版です。 仕様は以前と同じです。若干コードがスマートになっている・・・かもしれません。

2008年01月31日 SQLite性能評価まとめ

SQLite3.4.2の性能について調べた結果をまとめておきます。 調べたのはデータ追加(INSERT)のパフォーマンスです。テーブルに100000件のデータを追加した時の処理時間を測りました。

2008年01月27日 SQLite性能評価その5

「SQLite性能評価その4」の続きです。 SQLiteインメモリデータベースと、C++標準ライブラリのコンテナの性能を比較してみることにします。 ややこしい処理を何もしていない分C++標準ライブラリの方が圧倒的に速そうですが、実際のところはどうでしょうか。

2008年01月24日 boost1.34.1インストール(Visual C++.NET 2003)

Visual C++.NET 2003用にboost 1.34.1ライブラリをビルドしてみました。 結構手間でしたのでやり方をメモしておきます。

2007年10月17日 SQLite性能評価その4

「SQLite性能評価その3」の続きです。今回はインメモリデータベースの性能を評価してみました。

2007年10月08日 SQLite性能評価その3

「SQLite性能評価その2」の続きです。テーブルに100000件追加する処理だけでも、Case2の他にいろいろな書き方があるので、試してみました。

2007年10月07日 WTL紹介

Windowsで(Pure)C++とWin32でGUIアプリを作るとき、GUIライブラリがあると楽です。 私は昔はGUIライブラリとしてMFCを使っていました。 しかし、MFCは、Visual C++の各バージョンに依存していて、Visual C++のバージョンを新しくするだけで問題が起こることもありました。これはちょっと勘弁して欲しかったので、もうちょっとポータビリティが高いWTLというライブラリを使うことにしました。

2007年10月05日 SQLite性能評価その2

「SQLite性能評価その1」の続きです。 SQLiteは、ファイル名を":memory:"とすると、インメモリデータベースを構築します。 このとき、前回のCase1とCase2の処理時間を測ってみました。

2007年10月04日 SQLite性能評価その1

SQLite 3.4.2 の性能を少し見てみたいと思い、 テーブルに100000件のデータを追加した時の処理時間を測ってみました。

2007年10月01日 SQLiteの使い方(Visual C++.NET 2003)

最近、SQLiteというデータベースライブラリの存在を知りました。 シンプルな機能なので扱いやすいデータベースです。中小規模のアプリケーション向けですね。 ライセンスもパブリックドメインなので言うことなし。 スタンドアロンなアプリケーション向けのデータベースとしては、たぶんこれが最有力候補でしょう。

2007年09月22日 ファイル読み出しコードの性能評価

C++でファイルの内容をメモリ上に読み出すコードを書いてみたところ、 書き方によって結構性能に差がありました。そこでちょっと性能を調べてみましたのでまとめておきます。

2007年09月14日 libjpeg高速化改造版の性能を簡単に評価 その2

「libjpeg高速化改造版の性能を簡単に評価」の続きです。 libjpeg(以下、通常版)とその高速化改造版の性能をもうちょっと比べてみました。

2007年09月13日 libjpeg高速化改造版の性能を簡単に評価

libjpeg高速化改造版の使い方(Visual C++.NET 2003)の続きです。 libjpeg(以下、通常版)とその高速化改造版の性能をちょっと測ってみましたので、まとめておきます。

2007年09月12日 libjpeg高速化改造版の使い方(Visual C++.NET 2003)

libjpegの使い方(Visual C++.NET 2003)の続きです。 ソフトウェア工房αさんがリリースしているlibjpeg高速化改造版の使い方を調べましたので、まとめておきます。

2007年09月11日 libjpegの使い方(Visual C++.NET 2003)

Visual C++.NET 2003でIJGが配布しているIJG JPEG library(libjpeg、jpeglib、jpeg-6bと呼ばれることもあるようです)を使う方法を調べましたので、まとめておきます。

2007年09月07日 boost::arrayの初期化

Boost C++Librariesプログラミング 第2版を読んで気が付いたのですが、 boost::arrayクラスのオブジェクトは不思議な方法で初期化できます。

2007年03月18日 WindowsのBATファイルで日付と時刻を扱う方法

Windowsのバッチファイルで、ファイル名に日付や時刻を使いたいときがあります。 例えばバックアップのバックアップ先ファイル名です。ファイル名にバックアップ日時を入れるのは良くある話でしょう。 Perlなどのスクリプト言語を使えば簡単にできるのですが、バッチファイルだけでもできるので、やり方を紹介します。

2007年01月02日 MSXMLによる不正なコードを含んだXMLファイルの扱い

MSXMLが不正なコードを含むXMLファイルをどう扱うか、という話です。 MSXMLのバージョン次第で扱いが違いますので、夫々のバージョンにおける扱いを調べてみました。

2006年11月27日 boost::lambda

先日のboost::bindのサンプルコードは、 boost::lambdaを使うことによりもうちょっと分かり易くなるようです。

2006年11月26日 boost::bind

boostのbindを使った感想とサンプルコードを書きます。

2006年11月24日 シングルトンとマルチスレッド

C++のSingletonパターンの実装のうち、有名なものの1つとして、以下のようなローカルstatic変数を使った実装があります。

2006年11月21日 _bstr_tとwstringの相互変換

文字列クラス_bstr_tとwstringの相互変換のお話です。 開発環境は Visual C++.NET 2003 です。 _bstr_tはBSTR型のラッパで、COMサポートクラスの1つです。COM スマートポインタなどと一緒に使うととても便利です。 Visual C++からMSXMLを使うときは手放せないクラスです。

2006年10月29日 各社RAID5対応NASの価格調査

今、大容量のRAID5対応ネットワーク接続型ストレージ(NAS)を買うことを検討している、各社のNASを価格面で調べてみました。 対象は以下の3シリーズです。 BUFFALO TeraStation TS-TGL/R5シリーズ I/O DATA LANDISK Tera HDL-GTシリーズ Logitec TERAGATE LHD-LANシリーズ

2006年10月28日 WindowsのHTTPスタック(大阪弁版)

この記事は、先日の「WindowsのHTTPスタック」をHiro Kannoさんの標準語→大阪弁変換ツールで(無意味に)変換した記事です。 Life is beautifulの「大阪弁変換で遊んでみた」に感化されてなんとなくやってみました。技術文書ももいい味が出ますね。

2006年10月23日 WindowsのHTTPスタック

今日はWindowsのHTTPスタックを紹介します。 TTPスタックとは、HTTPを使うための各種ライブラリを集めたものです。 図を書くと、各レイヤのライブラリを積み重ねたように見えるので、スタックと呼ぶのだそうです。 アプリケーションレイヤから見ると単なるライブラリに見えますけどね。

2006年10月09日 MSXML4.0でloadできないURL

最近MSXMLをあれこれ触っているのですが、 時々妙な現象に遭遇するので、メモを残しておきます。 MSXML4.0のIXMLDOMDocument2インターフェースのload 関数でURLを指定したとき、 HTTPステータス301(Moved Permanently)や302(Moved Temporarily)が返ってくると、新しいURLにアクセスせずにエラー終了します。 MSXML2.6やMSXML3.0は新しいURLにアクセスします。 これはデフォルト状態の動作なので、何か設定を変えればうまく動くのかもしれません。

2006年06月09日 マルチモニタAPIの使い方

Windowsにおいて、GetMonitorInfoやMonitorFromPointなどのマルチモニタAPIを使用するときによく発生するエラーと、その対処法を紹介します。

2006年05月30日 WinHTTPのサンプルコード

WinHTTPは、レスポンスのヘッダに関する細かい処理を行うことができます(HTTPライブラリとしては当たり前ですが)。 そこで細かい処理を行う例として、ステータスコードが301の場合だけリダイレクト先のURLを記録し、それ以外の場合はリダイレクト先のURLを記録せずに転送するコードを書いてみました。

2006年05月29日 WinHTTPの紹介

WindowsのHTTPライブラリであるWinHTTPを紹介します。 このライブラリはWinInetに代わる新しいHTTPライブラリです。 このライブラリを使うことにより、以下のようなコードだけでURLからデータを取得できます。 とても簡単です。WinInetよりも簡単でしょう。

2006年05月26日 Heimdallrのホントのバグ対策その6

5/24の記事の続きです。 今までWinInetのバグ対策について検討してきました。一応、WinInet以外のHTTPライブラリを使うという手もあります。これについても検討しておきましょう。

2006年05月24日 Heimdallrのホントのバグ対策その5

5/23の記事の続きです。 今までバグ対策であるInternet Explorerの設定変更について色々と検討してきました。 対策をこれと決めてしまう前に、一応、他に何かないか検討しておきましょう。

2006年05月23日 Heimdallrのホントのバグ対策その4

バグ対策のためにHTTP 1.0を使うようInternet Explorerの設定を変更しても、大丈夫そう(ホントか?)なことが分かってきました。次はInternet Explorerの設定を変更する方法について検討しましょう。

2006年05月22日 Heimdallrのホントのバグ対策その3

5/20の記事の続きです。 このバグの対策を行うためには、Internet Explorerの詳細設定を変更することが必要だと分かりました。 お次は副作用について検討してみましょう。 このバグの対策により、他のWinINetを使用しているほぼ全てのアプリケーションがHTTP 1.1からHTTP 1.0へ移行することになるわけです。さて、どんな不具合が発生する可能性があるでしょうか。

2006年05月20日 Heimdallrのホントのバグ対策その2

このバグの対策としてMicrosoftが提示しているのは、以下の2点を行うことです。 (1) HttpOpenRequestの第4引数を"HTTP/1.0" とする。 (2) Internet Explorerの詳細設定の「HTTP 1.1 を使用する」をOFFにする。

2006年05月19日 Heimdallrのホントのバグ対策その1

5/17の記事の続きです。 WinINetを使用してインターネットアクセス中にCPU使用率が100%になってハングしてしまうという不具合の原因は、 t.oさんに指摘してもらったWinINetのバグだと思われます。 やっと辿りつきました。t.oさん本当にありがとうございました。

2006年05月18日 Google Calendar Data APIのgsessionid

Google Calendar Data APIを使ってカレンダーのイベントFeedを取得するためには、gsessionidと呼ばれるIDが必要です。 gsessionidは、カレンダー取得用のURLにGETリクエストを送ることで簡単に取得できます。

2006年05月17日 Heimdallrのバグ対策

5/16の記事の続きです。 不具合の原因は恐らく以下の通りです。残念ながら、断言できるところまで解析はできませんでしたが。 Heimdallrは、MFCのCInternetSession/CHttpConnection/CHttpFileクラス(以下、CInternetSession関連クラス)をマルチスレッドで使用してインターネットアクセスを行っておりますが、 残念ながらこれらのクラスはスレッドセーフではないことが原因のようです。 特に、Heimdallrでは、サーバに接続した後、一定時間が経過した場合、別スレッドからCHttpFile::Closeを呼んで切断しているのですが、このやり方に問題があったようです。

2006年05月16日 Heimdallrのバグ解析の続きの続き

5/12の記事の続きです。 先日またHeimdallrの例の不具合が起きたので解析を進めました。 残念ながらまだ原因は確定はできませんでしたが、インターネットアクセス用スレッド処理がスレッドセーフになっていないのにマルチスレッドを使っているのが原因でしょう。

2006年05月14日 Shift_JISとUnicodeの変換用関数

Windows上でShift_JISのようなマルチバイト文字とUnicodeとの変換を行う関数を紹介します。 これはMFCやATLが使えない場合の関数です(例えばVisual C++ 2005 Express Edition使用時のように)。MFCが使えればCStringを使うべきですし、ATLを使えばCW2AやCA2Wを使うべきでしょう。

2006年05月13日 Google Trends

Google Trendsが面白いです。最近Google元気ですね。

2006年05月12日 Heimdallrのバグ解析の続き

5/3の記事「Heimdallrのバグ解析」の続きです。 上記記事に書いてある不具合が昨日再現できたので、Visual C++.NET 2003のプロセスデバッグ機能と、Heimdallrが吐き出す大量のログを使って解析してみました。 その結果、ようやく不具合を引き起こす仕組みらしきものが見えてきました。まだ特定できないのが辛いところですが。

2006年05月09日 Google Calendar Data APIのお勉強

本日Google Calendar Data APIの仕様をちょっと勉強しました。 現時点で気が付いたことをあれこれ書いておきます。 まだ仕様を眺めただけであり、コードを書いて検証していないので、所々間違えているかもしれません。

2006年05月03日 Heimdallrのバグ解析

このサイトで公開しているRSSリーダー Heimdallr ですが、既知のバグが1件あります。最新の情報に更新する処理が永遠に終わらなくなるバグです。CPU使用率が100%になるのが特徴です。

2006年05月01日 iCalendar(iCal)ファイルを出力するMovableTypeテンプレート

最近のエントリの情報をiCalendar(iCal)ファイルとして出力するMovableTypeテンプレートを公開します。 動作させるためには、先日公開した「MTEntryAnotherDate」プラグインが必要です。 また、文字エンコーディング方式(mt-config.cgiの設定)がUTF-8ではない場合は動作しないと思われます。

2006年04月30日 MTEntryAnotherDateプラグイン

Movable TypeにMTEntryAnotherDateというテンプレート・タグを追加するMovable Type プラグイン「MTEntryAnotherDate 0.01」を公開します。

2006年04月28日 IndexのiCalendarファイル

最近スケジュール管理サービスのGoogle Calendarを使ってみています。 Webベースなのにレスポンスの遅さを意識させないインターフェースになっていて、使いやすいですね。

2006年01月10日 Visual C++ 2005 Express Edition インストールメモ

しばらく前に、MicroSoftからフリーのC++開発環境 Visual C++ 2005 Express Editionがリリースされました。これをインストールし、ウィンドウを1つ表示するだけの簡単なWindowsネイティブアプリケーションを作成しましたので、その手順をメモしておきます。

2005年11月09日 ログビューの設計

Heimdallrのログビューについて色々とコメントを頂いたので、今後設計をどう進めていくのか考えてみたいと思います。 Heimdallrはフリーソフトなので、必ずしも真面目に考える必要は無いものだとは思いますが、頭の体操にもなるのでちょっと真面目に考えてみます。 トラックバックを頂いた以下の2件の記事から感想を抜粋させて頂きます。

2005年11月05日 ログビュー

Heimdallrにログビューという新しいビューを追加しようとしています。 今のところこんな感じのビューにする予定です。 表示されている記事は、最近閲覧した記事や既読化(削除)した記事です。 このビューを追加する主な目的は2つほどあります。

2005年09月27日 WinInetでリダイレクト検出

WinInetというWindowsのAPI群があります。これは、Win32 Internet Extensionsの略で、 Gopher、FTP、HTTPなどのプロトコルを容易に扱うためのAPI群です。 InternetOpen、InternetOpenUrlなどのAPIがこれに属します。 MFCでは、CInternetSession、CInternetConnectionなどのクラスがWinInetを使っています。

2005年09月23日 Heimdallrのブラウザ起動時間にいちゃもん

Heimdallrの起動時間にいちゃもんの続きです。 今回はブラウザ起動時間についてのお話です。

2005年09月13日 Heimdallrの起動時間にいちゃもん

Heimdallrに色々と文句を付けた記事「Heimdallrにいちゃもん」に対するコメントやトラックバックを色々と頂きましたので、返事も兼ねてもうちょっと詳しくいちゃもんを付けて見たいと思います。 今回は起動時間、終了時間、設定変更時のハング時間についてです。

2005年09月11日 Heimdallrにいちゃもん

Heimdallrの今の安定版のバージョン番号は1.09です。これは、9回のそこそこ大きなバージョンアップが行われたことを意味しています。だいぶ機能も充実してきたので、今後はパフォーマンスやインターフェースの改善を進めていく予定です。 ここでは、そのあたりの問題について考えてみます。私自身、Heimdallrユーザなので、使っていてあれこれ感じることを書いてみて、それに対し開発者としてのコメントなどをしてみます。

2005年08月24日 Subversion向けcommit時RSS生成スクリプト公開

「Subversionにおけるcommit時のRSS生成テスト」にて紹介したRSS Feed生成スクリプトを公開します。

Subversion向けcommit時RSS生成スクリプト公開

「Subversionにおけるcommit時のRSS生成テスト」にて紹介したRSS Feed生成スクリプトを公開します。

2005年08月23日 Subversionにおけるcommit時のRSS生成テスト

Subversionにおいて、commitしたときにRSS Feedを生成するようなスクリプトを書き、試しにsandboxリポジトリ(http://www.sutosoft.com/room/svn/sandbox)で使ってみました。

2005年08月18日 SDLとOpenGL

最近、SDL(Simple DirectMedia Layer)とOpenGLとを組み合わせて使ってみています。結構面白いです。

2005年08月17日 sandboxリポジトリ

以下のURLに練習用のSubversionリポジトリを作成しました。 http://www.sutosoft.com/svn/sandbox 誰でもCommitできます。Subversionの練習用としてご自由にお使い下さい。 私も他の人がCommitしたとき、ログにどのような情報が残るか知りたいです。

2005年08月16日 Subversionの使い心地その2

「Subversionの使い心地」の続きです。 Subversionを使い始めて1ヶ月経ち、今まで使用していたVisualSourceSafeとの違いがまたいくつか見つかりました。

2005年08月13日 boostライブラリのビルド方法

boostライブラリというC++のライブラリがあります。有名なライブラリなので説明は省略します。 このライブラリに含まれるクラスのうち、shared_ptrやarrayなど大半のクラスは、ヘッダファイルをインクルードするだけで使えるのですが、filesystemやdate_timeを使うときは、boostライブラリをビルドしてライブラリファイルを作成し、それをリンクする必要があります。 本記事では、Visual C++.NET 2003向けのライブラリファイルを作成する方法を説明します。

2005年08月08日 feed meterのOPML

「feed meter の OPML」によると、少し前から実験的にfeed meter 人気度ランキングのOPMLが配信されているようです。 feed meterの人気度ランキングは、大体RSSを配信しているサイトの人気度ランキングと同じだと思います。 ですので、例えばトップ50サイトのOPMLには、世の中の人気がある(RSSを配信している)サイトの上位50サイトが記述されているわけです。 これと、Heimdallrを組み合わせると、面白いアプリケーションができあがります。

2005年08月06日 RSS検索エンジンを探して

最近、Heimdallrのキーワードチャンネルで使うためのRSS検索エンジンを探しています。 RSS検索エンジンというのは結果結果をRSSで出力してくれる検索エンジンのことです。 Heimdallrのキーワードチャンネルで使うには、以下のような検索エンジンが望ましいと思ってます。

2005年08月03日 BlogPeopleの検索エンジンを使うのは止めました

前の記事において、HeimdallrのプラグインのキーワードチャンネルでBlogPoepleの検索エンジンを使うことにしたと書きましたが、やめにしました。

2005年08月01日 Keywordチャンネルの次の検索サイト

Heimdallrのプラグインであるキーワードチャンネルは、 Feedback、Bulkfeeds、Gooブログ検索の3つの検索エンジンで検索した結果を利用してます。しかし、Feedbackが停止したようですので、替わりにBlogPeopleの検索エンジンを使うことにしました。

2005年07月28日 Subversionの使い心地

最近、私はソースコード管理ツールをVisualSourceSafeからSubversionに切り替えました。 切り替えて1週間程度経ちましたので、それだけ使っただけで分かった夫々のソースコード管理ツールの利点を書いておきます。

2005年07月20日 CppUnitライブラリ化

CppUnit 1.10.2をビルドするためのVisual C++.NET 2003用プロジェクトファイルを作成しましたので、公開します。

2005年07月17日 ソースコード管理システムSubversionを使ってみました

最近、Subversionというバージョン管理システムを使ってみました。 Subversionはフリーなオープンソースのシステムであり、CVSの後継とも言われる将来有望なシステムです。

2005年07月12日 暗復号ストリームライブラリ

以前作成したC++の暗復号ストリームライブラリを公開します。 以下、このライブラリの概要と、構成、コンパイルするために必要なものと、注意点について説明します。 本ライブラリは、「libdesのライブラリ化」で紹介したDESライブラリや、 「aesライブラリ化」で紹介したAESライブラリを用いて暗復号を行うことができるC++のストリームクラスを提供します。

2005年05月05日 使いやすい利用条件のアーカイブ展開ライブラリ

Heimdallrは、カスタマイズ版Heimdallrが作成できると謳っています(詳しくはカスタマイズ版Heimdallr作成ガイドラインを参照して下さい)。カスタマイズ版を作るのでしたら、スキンはオリジナルのものにするべきだとは思います。しかし、Heimdallrで、オリジナルのスキン、特に画像付きのスキンを使おうと思った場合、 UNLHA32.DLLを使う必要があります。

2005年04月29日 ビュー状態遷移

Heimdallrのビューには、マウス右ボタン押下から始まるマウスジェスチャ機能や、既読ボタン上でマウス左ボタン押下から始まる既読化機能など、色々な機能があります。今のところ、マウスジェスチャ中であることを表すフラグや、既読化中であることを表すフラグなどを内部で保持し、マウス左ボタン押下や右ボタン押下のときにそれらのフラグを見ながら処理を行っていたのですが・・・。マウスジェスチャ中に既読ボタン上でマウス左ボタン押下してそれからマウス右ボタンを離した場合など、色々とややこしいケースがあるようです。

2005年03月27日 The Cipher Text Stealing

最近、DES、AES、Blowfishといった幾つかの暗号方式の実装を眺めているのですが、AESのサンプルコードに面白いコードが入っているのを見つけました。 AESのサンプルコードは、「AES暗号化ライブラリ」で紹介したものです。

2005年03月25日 aesライブラリ化

「AES暗号化ライブラリ」の続きです。 AESで暗号化/復号化を行うVisual C++.NET 2003用スタティックライブラリの作り方を説明します。 「libdesのライブラリ化」のAES版です。

2005年03月24日 libdesのライブラリ化

以前、「暗号化ライブラリlibdes」でlibdesを紹介しました。 今回は、Visual C++.NET 2003で使えるlibdesの静的ライブラリを作成する方法を紹介します。 「MFCにおけるzlibの使い方」と同様に、6種類のlibファイルを作成します。

2005年03月23日 Blowfish暗号化ライブラリ

「AES暗号化ライブラリ」の続きです。 AES暗号化ライブラリが結構いい感じだったのでこれを使おうかと思いましたが、最後にライセンスフリーで評判のBlowfishを試してみることにしました。 今更ですが、ライセンスフリーの暗号化方式と言えばBlowfishが有名でしたね。すっかり忘れていました。

2005年03月22日 AES暗号化ライブラリ

暗号化ライブラリlibdesの続きです。 より使いやすいライセンスの暗号化ライブラリは無いかと探し回っていたところ、 Brian Gladman氏のサイトでAESの暗号化/複号化を行えるCのコードを配布しているのを見つけました。

2005年03月21日 暗号化ライブラリlibdes

Bloglinesチャンネル開発における課題の1つとして、パスワード保存方法があります。 これをなんとかするため、C++又はCの暗号化ライブラリを探していましたところ、libdesというDESの暗号化ライブラリを見つけました(libdesの公式サイトってどこだろう?)。

2005年03月20日 C++ストリームの拡張方法について

iostreamの拡張について書かれたサイトを見つけました。「iostreamの拡張」 私が以前の記事で作ったbasic_filterbufやbasic_inflatebufと比べてみます。

2005年03月14日 キーワードチャンネル ソースコードリリース

Heimdallrのチャンネル拡張プラグインの1つであるキーワードチャンネルのソースコードをリリースします。

2005年03月12日 basic_inflatebufクラス

前に作成したbasic_filterbufクラスを使って、Inflateを行うクラスを作ってみました。 InflateについてはRFC1950を参照して下さい。Deflateにより圧縮されたデータを展開する方式です。 zlibを使っていますので、前に説明した方法を使ってzlib.libをリンクしておく必要があります。 また、basic_filterbufクラスを定義したヘッダファイルをfilterbuf.hというファイル名で用意しておく必要があります。

2005年02月27日 MFCにおけるzlibの使い方

zlibという超有名なフリーの可逆圧縮ライブラリがあるのですが、今回はMFCアプリケーションにおけるこのライブラリの使い方について書いてみます。

2005年02月26日 basic_filterbuf用ostreamクラス

以前の記事でbasic_streambufの派生クラスであるbasic_filterbufクラスを作成しました。 しかし、アプリケーションから直接basic_streambuf派生クラスを扱うのはあまりよろしくない気がします。アプリケーションからばbasic_ostream派生クラスなりbasic_istream派生クラスだけを扱うべきだと思います。なんとなく今のC++標準ライブラリからそんなポリシーを感じるためです。

2005年02月25日 C++ストリーム用Decoratorクラス

以前の記事の続きということで、多少は役に立つオリジナル入出力クラスを作ることを考えてみます。最終的には書き込んだデータに何らかの加工を施して他のストリームに書き出すクラスを作る予定です。

2005年02月22日 オリジナル入出力クラスの作り方

前回の記事でC++標準ライブラリの入出力周りについて書きましたが、 そもそも入出力周りを調べようと思ったのはオリジナルの入出力クラスを作ってみようと思ったからです。 今回は、そのことについて書いてみようと思います。

2005年02月21日 C++の入出力関連クラス

C++の標準ライブラリには入出力関連のクラスが含まれています。 例えばファイルに出力するためのクラスはofstreamです。

2005年02月19日 MTのコメントRSS化テンプレート

「MTのコメントをRSS化」を参考に、MovableType専用のコメントのRSS作成用テンプレートを作ってみました。 参考元のRSS FeedはRSS 2.0準拠ですが、なんとなくRSS1.0に準拠したものを作成してみました。RSSのバージョンなんて何でも良いと思いますけどね。

2005年02月18日 ニュースサイト調査(2/2)

前回の続きです。 今回の調査項目は、「BLOGサービスの調査」と同様です。

2005年02月17日 ニュースサイト調査(1/2)

以前は、RSSを出力するサービスの調査の一環として、「BLOGサービスの調査」を行いました。 今回、RSSを出力するニュースサイトについて調べてみようと思います。

2005年02月13日 BLOGサービス調査(2/2)

前回の続きです。 調査項目及び調査方法 以下の5項目を調査しました。

2005年02月12日 BLOGサービス調査(1/2)

以前の記事「RSS検索サイトはステータスコード304を返すか」と「RSS検索サイトは検索結果を圧縮して返すか」において、RSS検索サイトの機能について調べました。 その続きということで、他のRSSを出力するサービスについても調べてみたいと思います。

2005年02月08日 RSS検索サイトは検索結果を圧縮して返すか

前の記事ではRSS検索サイトがステータスコード304を返すか調べましたが、今回はRSS検索サイトが検索結果を圧縮して返すかどうか調べてみようと思います。

2005年02月07日 RSS検索サイトはステータスコード304を返すか

キーワードチャンネル高速化のために、If-Modified-Sinceを使うことを考えてみました。これを使えば、検索結果が前回と変わっていなければ検索サイトはステータスコード304(Not Modified)とレスポンスヘッダだけを返し、検索結果本体は転送されないので転送時間が短縮されます。

2004年12月12日 カスタマイズ版Heimdallr作成ガイドライン

Heimdallrは、本記事のガイドラインに従う限り、カスタマイズを行って自由に配布することを許可致します。 このカスタマイズを行ったHeimdallrのことを、カスタマイズ版Heimdallrと呼ぶことにします。

2004年11月24日 Heimdallrで使われているデザインパターン(2/4)

それではHeimdallrにおいてデザインパターンが使われているクラス構成を紹介します。 最初に紹介するのは、Heimdallrのスキン関連のクラス構成です。 ここがHeimdallrにおいてもっともデザインパターンが有効に活用されたところでしょう。

2004年11月23日 Heimdallrで使われているデザインパターン(1/4)

Heimdallrは、C++を用いてオブジェクト指向による開発が行われている、ということに一応なっています。 そして、そこでは様々なデザインパターンが使われています。
本記事のデザインパターンは、GoFのパターンを意味することにします。Abstract Factoryパターンやらなんやらの23個のパターンのことです。

2004年10月31日 COMスマートポインタ

本記事では、WindowsのCOMライブラリを扱いやすくしてくれるcom_ptr_tクラスを紹介したいと思います。 com_ptr_tは、IUnknownインターフェースのQueryInterface、AddRef、Releaseメンバ関数周りを隠蔽してくれるテンプレートクラスで、いわゆるスマートポインタの一種です。

2004年10月27日 Feed Protocolの便利な使い方

今回の記事はFirefoxブラウザのユーザ向けの記事です。 Heimdallrは、1.07alpha1でFeed Protocolに対応しました。 Feed Protocolとはなんぞや?という話はさておき、一体何ができるのか?ということを書いてみます。

2004年10月02日 Feed Protocol

先日紹介したブラウザFirefoxの拡張機能の一つに、Feed Your Readerというものがあります。

2004年08月17日 高さが特定の条件を常に満たしているウィンドウの作り方

今回説明するのは、高さが特定の条件を常に満たしているウィンドウの作り方です。 特定の条件は、ここでは例として「10の整数倍+5」としておきます。

2004年07月22日 Inno Setupの使用例(3/3)

前回の続きです。 残るセクションの説明です。

2004年07月17日 Inno Setupの使用例(2/3)

前回の続きです。 Inno Setupはスクリプトファイルを元にインストーラーを作成するツールです。 よってスクリプトファイルの記述内容が全てです。

2004年07月16日 Inno Setupの使用例(1/3)

Heimdallrのインストーラーは、Inno Setupを使って作っています。 Inno Setupは、Windows用のインストーラー作成ソフトで、商用利用も可能なフリーソフトです。

2004年07月04日 背景が透明なウィンドウの作り方(2/2)

以下のような背景が透明なウィンドウの作り方の続きです。 このウィンドウは、2枚のウィンドウを重ねて使います。 1枚目は、マウスメッセージを受信して処理する透明なウィンドウで、 2枚目は、文字などを表示する描画用のウィンドウです。

2004年06月28日 設定ファイル保存場所

HeimdallrやSBookでは、アプリケーションが使用する設定ファイルを、「マイドキュメント\SutoSoft\アプリケーション名」に記録しています。 このような場所に記録している理由は一応あります。

2004年06月20日 ポップアップメニュー表示の細かい制御

CMenu::TrackPopupMenuを呼び出してポップアップメニューを表示した際、 メニュー項目を選択するとCMenu::TrackPopupMenuから戻ってきますが、 メニューコマンド自体はSendではなくPostされるので、 一旦OSに制御を返さないとメニューコマンドの処理は行われません。
メニューコマンド処理後、何か別の処理を行いたいというとき、これではちょっと不便です。 特に、メニュー項目を選択せずキャンセルした場合、何もメニューコマンドがPostされないので、 ポップアップメニューをキャンセルしたときに何か処理をさせる方法がありません。

2004年06月19日 VSSデータベースの分析と修復

うちのソースコードを管理しているVisualSourceSafe(VSS)のデータベースが壊れました。 壊れたといっても、ソースコードを失ったわけではなく、 特定のバージョンを指定してソースコードを取得することができなくなっただけです。

2004年06月13日 背景が透明なウィンドウの作り方(1/2)

背景が透明なウィンドウの作り方です。 ウィンドウの透明な部分をクリックしても、ちゃんと応答するウィンドウになるようにします。 まず、どの方法を使って実現するか考えてみます。

2004年06月06日 特殊なウィンドウを持ったMFCアプリケーションの最初の一歩

MFCは、SDIやMDIなどの標準的なウィンドウを持ったアプリケーションを開発するのに向いたクラスライブラリですが、MFCで特殊なウィンドウも作ることができます。 例えばHeimdallrもMFCを使って作られています。

2004年05月16日 最下位Windowの作り方

壁紙に張り付くようなウィンドウの作り方です。

2004年05月11日 VisualSourceSafeの分岐とマージ

最近、VisualSourceSafeの分岐機能とマージ機能を使ってみました。 これらの機能を使った感想や、うまく使うコツを書いてみたいと思います。

2004年05月09日 MFCアプリケーションが自身を再起動する方法

アプリケーションの初期化シーケンスをもう一度走らせたい場合など、 アプリケーションが、自身を再起動させたいときがたまにあります。 それを実現する方法です。

2004年05月08日 VisualSourceSafeの小技

ちょっと便利なVisualSourceSafeの小技集です。