メニュー
Infomation
■お知らせ
[スパム対策]コメントにURLを含めると自動的に削除されます。
■このサイトについて
一応残していますが、全時代の遺物。全ての情報は古く役に立ちません 連絡先:メールアドレス
■日記更新情報
RSSRSS|RSS(本文のみ)|lirs
実験&リサーチ
巡回先
製作環境
 

 



2004|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|11|12|
2011|01|
2014|05|08|
2017|07|

2010年04月01日(Thursday) [長年日記]

_ [日記] 新年度です

桜も咲いていよいよ春ですね。

本年度は語学の習得(英語、中国語、エスペラント)と漢字検定1級取得を目指すつもりです。

あとは人にやさしく、慈善活動にも力を入れて相手の立場にたった活動に心血を注ぐのも目標です。


ところで、iPhoneをつかって横になりながらWebを見たりすると画面が勝手に回転して鬱陶しいという声があることを知りました。

解決策をユーザーの立場にたって真剣に考えた結果、最初から画面を回転しておけば問題が解決するという事に気づきました。

というわけで、早速回転しておきました。

この調子でがんばりたいと思います。よろしくお願いします。



(4月2日追記)

こんな風になってました。

90度回転したままスクロールやコメントの入力も可能でした。

なんだかんだで5年もエイプリルフールネタやってしまいました。

過去のは[長年日記]をクリックすると見れます。

本日のコメント(全2件) [コメントを投稿]

§ K@i [ユーザーフレンドリーな貴方に花を 私に唄を。]

§ Suika [>K@iさん 返答に困りますが、ありがとうございます。]


2010年04月09日(Friday) [長年日記]

_ [日記][コンピュータ] URLエンコードをデコード/エンコードするCコード

以前の日記でデコードするコードを載せましたが、その続きです。

エンコードの方は適当に思いつきでは無理そうだったのでRFCを読んでみました。

参照元はRFC 3986になります。

Percent-Encodingのデコード関数とエンコード関数を作ってあります。

とはいえ、ナナメ読みなのであんまり信頼してもらっては困りますが。


読んで気づいたのですが、"+"の処理はPercent-Encodingの範疇ではないっぽいですね。

ただしapplication/x-www-form-urlencodedではまずスペースを"+"に置き換えます。

というわけでソースから一応外しました。

上記の用にフォームで使う用途によっては残しておいたほうが便利なのでコメントにしただけにしてます。


長くなったのでファイルでも置いてきます。

■percentEncoding.zip

2010/11/11追記

このソースコードのライセンスは「ご自由にお使いください」ライセンスです。

用途を問わず、利用改変自由です。ただし無保証。

よろしければ一言コメント欄にどうぞ。(任意です)

     1 ://///////////////////////////
     2 :///
     3 :///  Percent-Encoding(RFC 3986)
     4 :///
     5 :///  2010.03.08 http://Knonline.NET
     6 :///
     7 :
     8 :
     9 :#include "percentEncoding.h"
    10 :
    11 ://///////////Percent-Encoding/////////////////////////
    12 :
    13 :#define ASCII_ALPHA1_START	(0x41)	//A
    14 :#define ASCII_ALPHA1_END	(0x5A)	//Z
    15 :#define ASCII_ALPHA2_START	(0x61)	//a
    16 :#define ASCII_ALPHA2_END	(0x7A)	//z
    17 :#define ASCII_DIGIT_START	(0x30)	//0
    18 :#define ASCII_DIGIT_END		(0x39)	//9
    19 :#define ASCII_HYPHEN		(0x2D)	//-
    20 :#define ASCII_PERIOD		(0x2E)	//.
    21 :#define ASCII_UNDERSCORE	(0x5F)	//_
    22 :#define ASCII_TILDA			(0x7E)	//~
    23 :
    24 :
    25 :
    26 :
    27 ://16進数文字[A-F|a-f]から数値を得る
    28 :int valueFromHexChar(char hex)
    29 :{
    30 :	if('0' <= hex && hex <= '9') return hex - '0';
    31 :	else if('A' <= hex && hex <= 'F') return hex - 'A' +10;
    32 :	else if('a' <= hex && hex <= 'f') return hex - 'a' +10;
    33 :	else return 0;
    34 :}
    35 :
    36 ://数値[0-15]から16進数文字を得る
    37 :char hexCharFromValue(unsigned int value)
    38 :{
    39 :	if( value <0 || 16 <= value) return '0';
    40 :	return "0123456789ABCDEF"[value];
    41 :}
    42 :
    43 ://URLエンコードをデコードする
    44 :void urlDecode(char* decoded 
    45 :			   ,size_t decoded_length
    46 :			   ,const char* source)
    47 :{
    48 :	decoded_length--;	//最後の\0の分
    49 :	while(*source && decoded_length){
    50 :		if(*source == '%'){
    51 :			if(*(source+1) == '\0') break; //%の後2Byte続かずに
終わっている場合に備えて
    52 :			*(decoded++) 
    53 :				= (valueFromHexChar( *(source+1) ) <<4 )
    54 :				+ valueFromHexChar( *(source+2) );
    55 :			source += 3;
    56 :		}/*else if(*source == '+'){	//おまけ
    57 :			*(decoded++) = ' ';
    58 :			source++;
    59 :		}*/else{
    60 :			*(decoded++) = *(source++);
    61 :		}
    62 :		decoded_length--;
    63 :	}
    64 :	*decoded = '\0';
    65 :}
    66 :
    67 ://URLエンコードにエンコードする
    68 :void urlEncode(char* encoded 
    69 :			   ,size_t encoded_length
    70 :			   ,const char* source)
    71 :{
    72 :	char temp;
    73 :	encoded_length--;
    74 :	while(*source && encoded_length){
    75 :		temp =*source;
    76 :		if(   ASCII_ALPHA1_START <= temp &&  temp<= ASCII_ALPHA1_END
    77 :			||ASCII_ALPHA2_START <= temp &&  temp<= ASCII_ALPHA2_END
    78 :			||ASCII_DIGIT_START <= temp &&  temp<= ASCII_DIGIT_END
    79 :			|| temp == ASCII_HYPHEN
    80 :			|| temp == ASCII_PERIOD
    81 :			|| temp == ASCII_UNDERSCORE
    82 :			|| temp == ASCII_TILDA)
    83 :		{
    84 :			//Unreserved Characters
    85 :			*(encoded++) = temp;
    86 :			
    87 :		}else{
    88 :			//Reserved Characters
    89 :			*(encoded++) = '%';
    90 :			if(!(--encoded_length)) break;
    91 :			*(encoded++) = hexCharFromValue((unsigned char)temp >> 4);
    92 :			if(!(--encoded_length)) break;
    93 :			*(encoded++) = hexCharFromValue(temp & 0x0F);
    94 :			encoded_length-=2;
    95 :		}
    96 :		source++;
    97 :		encoded_length--;
    98 :	}
    99 :	*encoded = '\0';
   100 :}
   101 :
   102 :
本日のコメント(全3件) [コメントを投稿]

§ 名無しのリーク [香川県ルー餃子のフジフーヅはバイトにパワハラの末指切断の重傷を負わせた犯罪企業]

§ 名無しのリーク [香川県ルーちゃん餃子でおなじみのフジフーヅはバイトにパワハラで指切断の重傷を負わせた糞ブラック企業]

§ 名無しのリーク [香川県さぬき市ルーちゃん餃子のフジフーヅはバイトにパワハラで指切断の大けがを負わせた激烈ブラック企業。犯人は中卒社員..]


最近のコメント

364,000 at 2008.06.14
Copyright (c) Suika KNOnline.NET