Monthly Archives: 2月 2012

[C#]Leaky Bucketアルゴリズムを実装する

2012年2月29日 (カテゴリ: C#:, , )

AmazonのAPIでは呼び出し制限にリーキーバケットアルゴリズムを採用しています。今回、クライアント側で呼び出し回数が超過しないようチェックするため、リーキーバケットのアルゴリズムを実装を実装したクラスを作成しました。 内部で、BackGroundWorkerオブジェクトを生成し、指定された周期で、現在の値を再計算しています。 使い方は以下のような感じです。 オブジェクトの生成 LeakyBucket quota = new LeakyBucket(); 値の初期化。 下記の例では、現在値が0、最大値が10で2000mSec(2秒)ごとに現在値を減算します。 // 初期値のセ…


続きを読む

ソーラー発電システムを自作する場合のコスト試算

2012年2月27日 (カテゴリ: 未分類:)

ソーラー発電システムの自作に興味があったので、どの程度費用が掛かるかシミュレーションしてみました(まだ実際に購入・組み立ては行ってないです)。 とりあえず、欲しい電力として「ノートPCを5時間動かせるようにする」程度の規模で考えてみました。 必要な蓄電容量 2010年発売あたりのノートPCだと大体40Wぐらいなので、必要な供給電力の目安は200Wとなります。 40W/h x 5hr = 200W また毎日200W分の電力消費を節約できると、ざっくりいって月間140円の電気代に相当します。 必要な部品 ソーラー発電の仕組みを作るには、何が要るかですが…説明するのがめんどうなので、以下…


続きを読む

[C#]ウィンドウを画面右下に表示させる方法

2012年2月27日 (カテゴリ: C#:)

以下のコードをFormのLoadイベントに記述すると、画面がウィンドウの右下に表示されます。 // ウィンドウを画面右下に表示させる int left = Screen.PrimaryScreen.WorkingArea.Width – this.Width; int top = Screen.PrimaryScreen.WorkingArea.Height – this.Height; DesktopBounds = new Rectangle( left, top, this.Width,this.Height ); 左下や右上に表示したい場合は、Rectangleの引数をそれぞれleft…


続きを読む

[C#]タスクトレイアイコンにバルーンヘルプを表示させる共通関数

2012年2月27日 (カテゴリ: C#:, )

たかだかメッセージを表示させるために何行もコードを書きたくない… というわけで、汎用のラッパ関数を作成しました。 使い方 // 3秒間エラーメッセージを表示させる。 showBloonHelp( TaskTrayIcon, ToolTipIcon.Error, "エラーです。", 3000 );   // 1秒間情報メッセージを表示させる。 showBloonHelp( TaskTrayIcon, ToolTipIcon.Info, "パターンファイルが更新されました。", 1000 ); ソース /…


続きを読む

[C#]SoundPlayerクラスを使用して、1行でwav再生を行う。

2012年2月27日 (カテゴリ: C#:)

下記の1行で、wavファイルの再生が可能。 ( new System.Media.SoundPlayer( "test.wav" ) ).Play(); 非同期再生の場合は、PlaySync()を使います。 ちなみに、SoundPlayerではmp3の再生や再生音量の調整は出来ません。


続きを読む

[C#,日付]ISO8601形式の文字列と、DateTime型の相互変換を行う方法

2012年2月26日 (カテゴリ: C#:)

C#で時刻情報を管理する場合、DateTime型がよく利用されます。 一方、ログファイルなどで日付を文字列として表記する際、ISO8601形式で表現することがあります。 このISO8601形式というのは日付と時刻の表記に関する国際規格で、以下のようなフォーマットです。 2011-02-26T23:59:59Z ※厳密に言うと、規格上は他にも曜日表記を付け加えるなどのバリエーションがありますが、本記事では最もポピュラーな上記の書式のみを取り扱います。 この、ISO8601形式の文字列と、C#で用意されているDateTime型は、 以下のコードで相互変換を行えます。 DateTime dtData…


続きを読む

[C#]DataGridViewで、行ヘッダにある三角マーク”▲”を非表示にする

2012年2月24日 (カテゴリ: C#:)

DataGridView使用時に行ヘッダを表示させると、選択行に三角のマークが表示されます。 表示専用のグリッドなどで、上記マークを非表示にしたい場合は以下の作業を行います。 DataGridViewが標準で使用しているRowHeaderCellクラスが表示させているので、まずはこれを継承したクラスを作成します。 最後の引数で指定されたpaintPartsを弄って、状態表示のアイコンを非表示にしています。 //——————————————— // 三角マーク非表示版の、DataGridView行ヘッダー //————-…


続きを読む

[C#]アプリの設定画面で入力した内容をapp.configで管理する

2012年2月24日 (カテゴリ: C#:)

アプリケーションでは通常、「ツール→オプション」等のメニューで、プログラムの動作内容をユーザがカスタマイズできることが多いです。 本記事では、C#のプログラムにて、ユーザが設定画面で入力した情報をapp.configで管理する手順を説明します。 1.設定画面を作ります 下記は、設定画面のサンプル画像です。Formを使って普通に作ればOKです。 2.設定画面のOK,キャンセルボタンに対してハンドラを定義します //********************************************************************* /// <summary> OK…


続きを読む

[C#]タスクトレイアプリケーションを作る時に、最初にすること。

2012年2月24日 (カテゴリ: C#:)

1.フォームにNotifyIconと,ContextMenuStripコントロールを貼り付ける 2.NotifyIconのContextMenuStripで、先ほど追加したコントロールを選択する 3.NotifyIconのIconを設定する(忘れがちなので注意!!) 4.ContextMenuStripのメニューに”終了”を追加し、以下のコードを追加する //********************************************************************* /// <summary> プログラム終了が選択されたときのハ…


続きを読む

[JavaScript]即時関数の呼び出しが,なぜ「(function(){…})()」の形式になるか説明してみる。

2012年2月21日 (カテゴリ: JavaScript:)

JavaScriptでは即時関数という仕組みがあります。 即時関数は、グローバルな名前空間を汚さない無名関数を作って、その関数を直ぐにコールする方法です。 コードは、以下のような形式になります。 (function() { alert( "hello" ); })(); jQueryとかのサンプルを見ると良く見る形式ですが、なぜこの形式で即時関数を定義できるのか、 改めて考えてみます。 まず、無名関数を作ります。 function() { alert( &q…


続きを読む

[JavaScript]関数に、一度しか実行しない初期化処理を組み込む

2012年2月21日 (カテゴリ: JavaScript:)

関数に、コンストラクタのような一度しか実行されない初期化処理を組み込むことが出来ます。 下記の例では、getCounter()で関数オブジェクトを取得するたびに、初期化処理がコールされます。   // 関数の定義 var getCounter = function() { // コンストラクタ的な、初期化処理 console.log( "initialize" );   // この変数は呼び元から見えない(privateな状態になる) var counter = 0;   return function…


続きを読む

[JavaScript]例外発生時に、catch句でエラーの発生場所を取得する

2012年2月21日 (カテゴリ: JavaScript:)

JavaScriptのtry-catchのcatch句で取得できる例外オブジェクトは、エラーの内容を伝えるためにnameとmessageプロパティを持っています。 JavaScriptの標準規格では、例外オブジェクトが持っているプロパティは2つのみですが、firefox等の一部のブラウザでは、これらに加えてエラーが発生したファイルや行番号の情報も取得することが可能です。 これらの情報はfirefoxの場合はfileName,lineNumberで取得できますが、標準仕様からの拡張である為、IEでは取得することが出来ません。 ブラウザの互換性まで考慮したうえで、以下のようなエラー処理を書いておく…


続きを読む

[JavaScript]文字列リテラルと、new String()の違い。

2012年2月13日 (カテゴリ: JavaScript:)

JavaScriptの書籍を読むと、文字列の定義において以下の2つが同じであるという説明をしている場合があります(入門書だと良く有る説明です)。 case1: var msg = new String( "hello" ); case2: var msg = "hello"; 確かに両者ともalert( msg );で、メッセージを出力できるので一見すると同じに見えるのですが、実は一緒では有りません。 両者の違いは、下記のコードを実行してみると分かります。 var msg = new String( "hello&quo…


続きを読む

HDDをSSDに交換した際に,電気代の節約効果

2012年2月11日 (カテゴリ: 未分類:, , )

基礎資料: 1kWhの電気代 : 22円程度   SSDの消費電力: アイドル時 100mW アクティブ時 150mW 0.05W Intel320シリーズ[SSDSA2CW080G3K5]の場合(80GB)   HDDの消費電力: アイドル時 8.4W ランダムリード/ライト時 12.3W HDS721010の場合(1TB,7200rpm 2011年製のHDD)   アイドル時 12W ランダムリード/ライト時 23W Maxtor 7L300R0の場合(300GB,7200rpm 2008年製のHDD) 1ヶ月使いっぱなしにした場合の電気代: SSD 0.15…


続きを読む

zenbackのスクリプトを解析してみた(3/3)

2012年2月11日 (カテゴリ: JavaScript:, , )

zenback解析シリーズ連載: zenbackのスクリプトを解析してみた(1/3) zenbackのスクリプトを解析してみた(2/3) zenbackのスクリプトを解析してみた(3/3) 前回の続きです。 cssとhtmlには特に見るべき所が無さそうなので、javascriptだけチェックしていきます。 zb_jq("div.zenback-twitterbtn > a:first").click(function() { this.disabled = true; var title = (document…


続きを読む

zenbackのスクリプトを解析してみた(2/3)

2012年2月11日 (カテゴリ: JavaScript:, , )

zenback解析シリーズ連載: zenbackのスクリプトを解析してみた(1/3) zenbackのスクリプトを解析してみた(2/3) zenbackのスクリプトを解析してみた(3/3) 前回、以下のURLでzenbackのブログパーツ本体を取得しているところまで解析しました。 http://widget.zenback.jp/?callback=jsonp1328934279143&base_uri=http%3A%2F%2Fnanoappli.com%2Fblog& rand=276590972233&nsid=101368938457261269%3A%3A10…


続きを読む

zenbackのスクリプトを解析してみた(1/3)

2012年2月10日 (カテゴリ: JavaScript:, , )

zenback解析シリーズ連載: zenbackのスクリプトを解析してみた(1/3) zenbackのスクリプトを解析してみた(2/3) zenbackのスクリプトを解析してみた(3/3) ブログパーツを作成してみたいのですが、手始めに勉強としてzenbackの動作原理を解析してみました。 まず、入り口です。 サイトにて提示されているスクリプトは以下の通りです。xxxの部分にはサイトに応じた値が入ります。 (実際は1行ですが見辛いので適当に改行してます。) <!– X:S ZenBackWidget –> <script type="text/javascrip…


続きを読む

JavaScriptをブラウザだけで作成&テスト出来る環境を作った(JS.nanobench)

2012年2月10日 (カテゴリ: JavaScript:)

JavaScriptの動作確認をしているのですが、「エディタで編集 ⇔ ブラウザで確認」の行ったりきたりが面倒なので、ブラウザだけで確認できるようにしました。 作ったもの これです↓ JS.nanoBench プログラム: console.log( 2 * 3.14 ); 出力結果: エラー: 仕組み 仕組みは、textAreaの中身をevalして出力してるだけです。 …だと説明にならないので、html,js,cssのソース見ながら解説して行きます。 html まずは、htmlの構造です。 特に何の変哲も無いhtmlです。 各パーツにidを振ってあるのと、ボタンのonclickだけ…


続きを読む

http://www.google.com/jsapiを使用してjQueryをロードするときの注意点

2012年2月10日 (カテゴリ: JavaScript:)

http://www.google.com/jsapiを使用した、jQueryのロード 以下の記述で、googleがホスティングしているjQueryを利用することが出来る。 <script src="http://www.google.com/jsapi" type="text/javascript"></script> <script type="text/javascript"> google.load("jquery", "1.4"); …


続きを読む

C#のラムダ式をチェーンさせる記法が便利!

2012年2月9日 (カテゴリ: C#:)

(この記事は,Hidden Features of C#?を参考に記述しています) C#では、バージョン3.0(Visual C# 2008)以降でサポートされた、ラムダ式というものが有ります。 ラムダ式を使うことで、関数型プログラミングっぽい記述や、デリゲート・イベントハンドラを簡潔に記述することが出来ます。 このラムダ式ですが、実は複数のラムダ式を連結(チェーン)させることが可能です。 //——————————————– // 「dx,dyを渡すと、ハンドラ関数を返す」関数 //—————————…


続きを読む