2009/01/31

Googleがばぐった。

本日、ついにGoogleが末期のようです。

20090201000540

20090131235741

カウンター製作日記 #1

今回は、このブログにカウンターをつけよう、ということらしい。
検索中・・・「よさげなカウンター」・・・・・・・・・・・検索結果:当該件数0件
と、いうことで、カウンターを作ってみることにした。

まず、どんなカウンターを作るのか?
現在考えているものとしては、PHPでいろいろな処理して、Flexで表示をするというもの。

ただね、例のサーバーのPHPがしょぼいからいろいろ大変です・・・。

2009/01/21

浮動小数点の指数部

どもども。今回はプログラムねたです。

C#での浮動小数点型であるdoubleから指数部を取り出す企画です。
まず、doubleの定義から。doubleは64bitで表す倍精度浮動小数。
今回は、一般的なIEEEで定められているIEEE754の場合。(ほかの場合は聞いたことがないが)

|符号部 S|指数部 E|小数部 F|
|  1bit      |  11bit      | 52bit     |

で表す。実際の値は、
equation 
こんな感じになる。

さて、いよいよC#で指数部を取り出す方法だが、値をビット演算したいのでdoubleのままじゃ困る。そんなとき。これを使えばいい。

BitConverter.DoubleToInt64Bits メソッド
http://msdn.microsoft.com/ja-jp/library/system.bitconverter.doubletoint64bits.aspx

ってなわけで、指数部を取り出すプログラム。メソッドにしてみた。

public int doubleExponate(double value){
//doubleをlongに
long bits = BitConverter.DoubleToInt64Bits(value);
//指数部を取り出す
long exponate = (bits >> 52) & 0x7ff;
//-1023
exponate -= 1023;
return (int)exponate;
}



こんな感じ。



ちなみにこれやってて初めて気づいたんだが、

equation (1)


となるらしい、Eって常用対数なのね、自然対数だとばかり思っていた。



今日はこんな感じで、でわでわ。

2009/01/16

滑ってきました。

1/10~1/12にスノーボードしに雪山ってきました。

スキー場は、白馬コロチナ国際スキー場というところです。

3日間行ってきたのですが、1日目、雪、2日目、晴れ、3日目、雪とかなり恵まれたコンディションでした。

ということで、2日目に頂上で撮った景色をあげときます。

Image001

ではでは。

2009/01/01

謹賀新年

年が明けました。

今年もどうぞよろしくお願いします。

2008/12/23

Beta RssCollection

報告です。

「RssCollection」がとりあえず動く形になりました。

入力RSS : Atom1.0 RSS2.0 RSS1.0

出力RSS : RSS2.0

使用言語 : PHP

備考

使用したPEAR

  • HTTP_Request
  • XML_Feed_Parser
  • Date

使用データベース : SQLite (PDO_SQLite)

エンコード : JCode ライブラリを使用 (mbstring版もあります)

 

これから、出力RSSにAtom1.0とRSS1.0を追加したいと考えています。

2008/12/21

PEAR 「HTTP_Request」

今日は、RssCollectionの進行報告と一緒に、使っているPEARライブラリの解説をしたりしたいと思います。

まずは、報告。

前回言った「XML_Serializer」はbeta版しかないことが発覚につき、別のを考えます。

そして、xmlファイルをダウンロードするところに、「HTTP_Request」を使いたいと思います。

HTTP_Request : http://pear.php.net/manual/ja/package.http.http-request.php

で、PEARライブラリの解説ですが、とりあえずこの「HTTP_Request」の簡単な使い方をやります。

今回使ったのは、他サイトからxmlファイルをとってくるというものです。

$url = 'http://white-output.blogspot.com/rss.xml';

$request =& new HTTP_Request($url);
if(!PEAR::isError($request)){
echo $request->getResponseBody();
}



これが、家のサイトのRSSを取得し、表示するプログラムです。



//接続先のURL
$url = 'http://white-output.blogspot.com/rss';

//オプションのパラメーター 値は初期値
$params = array(
//使用するmethod GETやPOSTのこと (string)
'method'=>'HTTP_REQUEST_METHOD_GET',
//HTTPのバージョン 1.1か1.0 (string)
'http'=>'HTTP_REQUEST_HTTP_VER_1_1',
//Basic認証のユーザー名 (string)
'user'=>null,
//Basic認証のパスワード (string)
'pass'=null,
//プロキシサーバーのホスト (string)
'proxy_host'=>null,
//プロキシサーバーへの接続ポート (integer)
'proxy_port'=>null,
//プロキシ認証のユーザー名 (string)
'proxy_user'=>null,
//プロキシ認証のパスワード (string)
'proxy_pass'=>null,
//タイムアウト時間(秒) (float)
'timeout'=>null,
//リダイレクトの許可 (bool)
'allowRedirects'=>false,
//リダイレクトの最大値 (integer)
'maxRedirects'=>3,
//配列の変数に[]を追加するか (bool)
'useBrackets'=>true,
//レスポンスオブジェクト内にボディを保存するか (bool)
'saveBody'=>true,
//Socketの読み込みタイムアウト時間 (array(seconds, milliseconds))
'readTimeout'=>null,
//Net_Socketのオプション (array)
'socketOptions'=>null
);

$request =& new HTTP_Request($url, $params);


と、いろいろ設定があるみたいです。ドキュメントはあるんだけど仕様がなかった。ソース見たら分かったけど。




$request =& new HTTP_Request($url, $param);
//cockieの名前
$name = 'name';
//cockieの値
$value = 'value';
//cockieの追加
$request->addCockie($name, $value);
//レスポンスオブジェクト内にボディを保存するか
$saveBody = true;
if(!PEAR::isError($request->sendRequest($saveBody))){
//ステータスコードの取得
$request->getResponseCode();
//ステータスの取得
$request->getResponseReason();
//取得するヘッダーの名前 (nullだとヘッダーの連想配列を取得)
$headername = null;
//ヘッダーの取得
$request->getResponseHeader($headername);
//ボディの取得
$request->getResponseBody();
//Cockieの取得 (連想配列)
$request->getResponseCockie();
}


こんな感じで使ってください。



PEARの日本語ドキュメントはかけている部分があるので、ソース見なきゃいけないことがたびたびあるね。



でわでわ、今日はここで。