URLエンコード(Percent-Encoding)をデコードする方法は単純な処理なので実装するのは簡単なのですが、いざ欲しいと思うと何故かOSには用意されていなかったりします。
ググれば一発だろ! と思っても何故かすんなりは見つからないか、見つかっても冗長だったりするので毎回新たに書いているのですが、今回で最後にしたいのでここに貼りつけておきます。
エンコードは今回必要無かったので作ってませんが必要になった時に作ります。
urlDecode()にバッファとその長さと変換したい文字列を渡します。
なんか見本で見かけるソースよりやけに短くなってしまうのですが、何か自分が間違っているんだろうか・・・。(RFCは読んでいない)
9 :int valueFromHexChar(char hex)
10 :{
11 : if('0' <= hex && hex <= '9') return hex - '0';
12 : else if('A' <= hex && hex <= 'F') return hex - 'A' +10;
13 : else if('a' <= hex && hex <= 'f') return hex - 'a' +10;
14 : else return 0;
15 :}
16 :
17 ://typedef unsigned int size_t;
18 :void urlDecode(char* decoded
19 : ,size_t decoded_length
20 : ,const char* source)
21 :{
22 : decoded_length--; //最後の\0の分
23 : while(*source && decoded_length){
24 : if(*source == '%'){
25 : if(*(source+1) == '\0') break; //%の後2Byte続かずに備えて
26 : *(decoded++)
27 : = (valueFromHexChar( *(source+1) ) <<4 )
28 : + valueFromHexChar( *(source+2) );
29 : source += 3;
30 : }else if(*source == '+'){
31 : *(decoded++) = ' ';
32 : source++;
33 : }else{
34 : *(decoded++) = *(source++);
35 : }
36 : decoded_length--;
37 : }
38 : *decoded = '\0';
39 :}
MacProを買うわけにも行かず、仕方なくMac miniを入手してみました。
一つ前のモデルですが、仕様が現行に近いのと新品をバラすのも忍びないので。

SATAを外出しする予定。
下のはG4 mac miniです。
元Macユーザーといっても漢字Talkの頃の話なのでどうにもMacOSXで困ることもあります。
WindowsやLinuxから移ってもっとも困るのは(人によると思いますが)マウスの動きです。
なんか変に加速するんですよねぇ。そして無効にできない。
カーソルの動きはなんとか慣れることも出来そうですが、ホイールの動きだけはどうしても酔いそうで如何ともしがたいのです。
(OSX以前はホイールなんて無かったのだからそれを昔と比べるのもおかしい気もしますが)
有償のシェアウエアで、例えば「SterrMouse」のようなソフトを使うと加速スクロールを無効に出来て試用してみたところかなり改善しました。
快適度合いを考えると購入しても良いのですが、しばらく耐えてMacOS標準のこの動きになれるべきなのか、そもそもマウス止めて昔そうしていたようにタブレットで操作するようにするか悩むところです。
ものすごく今更ですが、最近iPhoneアプリの開発に興味をそそられています。
もうだいたいありとあらゆるモノが世に出ているんですけどね。
それでもやはり思うんですよ。
「使いにくい・・・」
中には酷い出来のものもありますが、だいたいはアプリ自体が悪いわけではないのです。
要するに自分には合わないってやつですね。
結局自分のために作ったものが一番なわけです。
(1番じゃないかもしれないけど)
移動時間(電車の中)が限られた自由になる時間なので必然的にモバイルデバイスにはお世話になるわけです。
社会人になったころはいわゆるPocketPC(Windows CE3.0)をけっこう使っていました。
ネット接続環境としてはどうしようもなかったですが、電子ブックを読んだり落書きしたり。
その後一時期はWindowsPC持ち歩いてたりもしましたがやはり使いづらく、sigmarionIIIが重宝した時代が長かったです。
通信環境はAirH"(PHS)でした。
しかし結局Webを見る環境としてはDoCoMoのFOMA+jigブラウザが最も快適である事がわかりパケホーダイも登場したのでしばらくはケータイ厨に。
数年前からはやっぱ寝るか本読むのが一番だよね。って事と、何故か会社でWindowsCE機持込禁止みたいなのでデジタルデバイスに失望していました。
そして昨年iPhone3GSを購入。
WindowsMobileはダメなのに何故かこれは良いらしい。ぱそこん=Windowsというおじいちゃんが考えた事なのでよく判りません。
iPhoneはやはり隔世の感がある使い勝手でずっと興味をそそっているという次第であります。
なぜこんなにスムーズに動くのか。
設計が良いんでしょうね。
後から出てきたはずのGoogle Andoroidもなんかもっさりですし。
(Javaが高級すぎてガーベジコレクションなどが重荷になっているのでしょうか)
iPhoneプラットフォームはかなり制限の多い環境ではありますが、iアプリなどに比べれば任意のホストへの自由な通信などができて色々夢が広がります。
加えて広い画面に大きなストレージ。
コミックビューアが作りたいですね。電車のお供に。
いくつか試しましたが、なんか微妙だったので。
コミックって嵩張りますし、いい大人が電車で呼んでいると恥ずかしいので(なら読むなよって言われそうですが、やっぱりコミックも読みたいんで・・・)
<構想>
・zipで固めた書庫を直接読める
・タップでページめくり/戻り
・1ページ先くらいは先読み
・拡大、縮小、スクロールを快適に
・快適なzipファイル転送環境
・遅そうだったら、最初に予め縮小してしまう機能(最適化機能)
・iPhoneのユーザーインターフェイスを出来るだけ踏襲する。(変な勝手UIにしない)
・無償公開して、よさげになったら売ってマシン代くらいは回収したいなぁ。
はいはい。口だけ口だけ・・・
このままでは2010年2月へのリンクが無くなってしまいそうです。
最近は特に書くことが無い、というよりは、ここに書くためにネタ振りをする必要がなくなったせか、あんまり更新する気が起きていませんでした。
もうしばらく更新やめて放置しようかとも思ったのですが、10年以上続けた物を止める程の理由もないのでやっぱり更新することにしました。
ただ、ネタも無いので初心に帰って最初の頃(大学生の頃)のようにうだうだ書きます。
実はその頃のログも残っているのでそのうち復元しようかな。
生き恥晒すだけだから止めておくのが正解だと思いますが。
物持ちは悪い方なのですが、データの持ちだけは何故か良くて高校生の頃最初に使ったMacのデータから現在に至るまでだいたいのデータは残っています。
(2000年前後のデータがけっこう失ってますが)
これは大学生の時にデジカメで撮った写真。

デジカメなんて全く普及していない頃で、この画像は縮小したわけでなく、オリジナルサイズです。
こんな写真しか撮れないカメラが5万円とかありえない。
場所は最近大規模に再開発されてしまっている下北沢駅。
学生の頃はこの辺に住んでいました。
特にこのころはまではMacを使っていましたが、MacOSXにどうしても慣れる事が出来ず段々と使わなくなりました。
MacOSX public betaのスクリーンショット。

これベータ版のくせにたしか有料だったんですぜ!
初期の頃はアプリケーションも無く、Finderひとつとってもやはり使いにくかったのでけっこう失望しました。
格好は良かったんですけどね。
ちなみにPowerMacG4(MacOS9標準)で動かしたものです。
最近MacOSX10.6を触っていて、これなら普通に使えるかなと思っております。
Objective-Cもなかなか面白い設計で刺激的だし、ガリガリとゲームや辺な作業もしなくなったのでまたMacOSメインに戻っても良いかなと思っています。。
当時の環境を動かしてみました。
その頃のブラウザはNetscape navigator 1.2J。
これがまた有料ソフトだったから困る。
その頃には影も形もなかったGoogleを表示してみました。

HTML4.0を解釈できず。。。
YahooJapan!とかも表示してみましたが、UTF-8が読めなかったりで少しでも見えるサイトはみつかりません。
でもUIは意外と今とそう変わりませんね?
さてはて、懐かしい。
Macmini買って改造(SATAを外出しして3.5inchiHDDつなぐ)か、素直にMacBookPro買うか悩みます。