[C#]Leaky Bucketアルゴリズムを実装する
AmazonのAPIでは呼び出し制限にリーキーバケットアルゴリズムを採用しています。今回、クライアント側で呼び出し回数が超過しないようチェックするため、リーキーバケットのアルゴリズムを実装を実装したクラスを作成しました。 内部で、BackGroundWorkerオブジェクトを生成し、指定された周期で、現在の値を再計算しています。 使い方は以下のような感じです。 オブジェクトの生成 LeakyBucket quota = new LeakyBucket();LeakyBucket quota = new LeakyBucket(); 値の初期化。 下記の例では、現在値が0、最大値…
続きを読む
ソーラー発電システムを自作する場合のコスト試算
ソーラー発電システムの自作に興味があったので、どの程度費用が掛かるかシミュレーションしてみました(まだ実際に購入・組み立ては行ってないです)。 とりあえず、欲しい電力として「ノートPCを5時間動かせるようにする」程度の規模で考えてみました。 必要な蓄電容量 2010年発売あたりのノートPCだと大体40Wぐらいなので、必要な供給電力の目安は200Wとなります。 40W/h x 5hr = 200W40W/h x 5hr = 200W また毎日200W分の電力消費を節約できると、ざっくりいって月間140円の電気代に相当します。 必要な部品 ソーラー発電の仕組みを作るには、何が要るかですが̷…
続きを読む
[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 );// ウィンドウを画面右下に表示させる int left = Screen…
続きを読む
[C#]タスクトレイアイコンにバルーンヘルプを表示させる共通関数
たかだかメッセージを表示させるために何行もコードを書きたくない… というわけで、汎用のラッパ関数を作成しました。 使い方 // 3秒間エラーメッセージを表示させる。 showBloonHelp( TaskTrayIcon, ToolTipIcon.Error, "エラーです。", 3000 ); // 1秒間情報メッセージを表示させる。 showBloonHelp( TaskTrayIcon, ToolTipIcon.Info, "パターンファイルが更新されました。", 1000 );// 3秒間…
続きを読む
[C#]SoundPlayerクラスを使用して、1行でwav再生を行う。
下記の1行で、wavファイルの再生が可能。 (new System.Media.SoundPlayer("test.wav")).Play();(new System.Media.SoundPlayer("test.wav")).Play(); 同期再生の場合は、PlaySync()を使います。 ちなみに、SoundPlayerではmp3の再生や再生音量の調整は出来ません。
続きを読む
[C#,日付]ISO8601形式の文字列と、DateTime型の相互変換を行う方法
C#で時刻情報を管理する場合、DateTime型がよく利用されます。 一方、ログファイルなどで日付を文字列として表記する際、ISO8601形式で表現することがあります。 このISO8601形式というのは日付と時刻の表記に関する国際規格で、以下のようなフォーマットです。 2011-02-26T23:59:59Z2011-02-26T23:59:59Z ※厳密に言うと、規格上は他にも曜日表記を付け加えるなどのバリエーションがありますが、本記事では最もポピュラーな上記の書式のみを取り扱います。 この、ISO8601形式の文字列と、C#で用意されているDateTime型は、 以下のコードで相互変換を行…
続きを読む
[C#]DataGridViewで、行ヘッダにある三角マーク”▲”を非表示にする
DataGridView使用時に行ヘッダを表示させると、選択行に三角のマークが表示されます。 表示専用のグリッドなどで、上記マークを非表示にしたい場合は以下の作業を行います。 DataGridViewが標準で使用しているRowHeaderCellクラスが表示させているので、まずはこれを継承したクラスを作成します。 最後の引数で指定されたpaintPartsを弄って、状態表示のアイコンを非表示にしています。 //——————————————— // 三角マーク非表示版の、DataGridView行ヘッダー //————-…
続きを読む
[C#]アプリの設定画面で入力した内容をapp.configで管理する
アプリケーションでは通常、「ツール→オプション」等のメニューで、プログラムの動作内容をユーザがカスタマイズできることが多いです。 本記事では、C#のプログラムにて、ユーザが設定画面で入力した情報をapp.configで管理する手順を説明します。 1.設定画面を作ります 下記は、設定画面のサンプル画像です。Formを使って普通に作ればOKです。 2.設定画面のOK,キャンセルボタンに対してハンドラを定義します //********************************************************************* /// <summary> OK…
続きを読む
[C#]タスクトレイアプリケーションを作る時に、最初にすること。
1.フォームにNotifyIconと,ContextMenuStripコントロールを貼り付ける 2.NotifyIconのContextMenuStripで、先ほど追加したコントロールを選択する 3.NotifyIconのIconを設定する(忘れがちなので注意!!) 4.ContextMenuStripのメニューに”終了”を追加し、以下のコードを追加する //********************************************************************* /// <summary> プログラム終了が選択されたときのハ…
続きを読む
[JavaScript]即時関数の呼び出しが,なぜ「(function(){…})()」の形式になるか説明してみる。
JavaScriptでは即時関数という仕組みがあります。 即時関数は、グローバルな名前空間を汚さない無名関数を作って、その関数を直ぐにコールする方法です。 コードは、以下のような形式になります。 (function() { alert( "hello" ); })();(function() { alert( "hello" ); })(); jQueryとかのサンプルを見ると良く見る形式ですが、なぜこの形式で即時関数を定義できるのか、 改めて考えてみます。 まず、無名関…
続きを読む
[JavaScript]関数に、一度しか実行しない初期化処理を組み込む
関数に、コンストラクタのような一度しか実行されない初期化処理を組み込むことが出来ます。 下記の例では、getCounter()で関数オブジェクトを取得するたびに、初期化処理がコールされます。 // 関数の定義 var getCounter = function() { // コンストラクタ的な、初期化処理 console.log( "initialize" ); // この変数は呼び元から見えない(privateな状態になる) var counter = 0; return function…
続きを読む
[JavaScript]例外発生時に、catch句でエラーの発生場所を取得する
JavaScriptのtry-catchのcatch句で取得できる例外オブジェクトは、エラーの内容を伝えるためにnameとmessageプロパティを持っています。 JavaScriptの標準規格では、例外オブジェクトが持っているプロパティは2つのみですが、firefox等の一部のブラウザでは、これらに加えてエラーが発生したファイルや行番号の情報も取得することが可能です。 これらの情報はfirefoxの場合はfileName,lineNumberで取得できますが、標準仕様からの拡張である為、IEでは取得することが出来ません。 ブラウザの互換性まで考慮したうえで、以下のようなエラー処理を書いておく…
続きを読む
[JavaScript]文字列リテラルと、new String()の違い。
JavaScriptの書籍を読むと、文字列の定義において以下の2つが同じであるという説明をしている場合があります(入門書だと良く有る説明です)。 case1: var msg = new String( "hello" );var msg = new String( "hello" ); case2: var msg = "hello";var msg = "hello"; 確かに両者ともalert( msg );で、メッセージを出力できるので一見すると同じに見えるのですが、実は一緒では有りません。…
続きを読む
HDDをSSDに交換した際に,電気代の節約効果
基礎資料: 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)1kWhの電気代 : 22円程度 SSDの消費電力: アイ…
続きを読む
zenbackのスクリプトを解析してみた(3/3)
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)
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)
zenback解析シリーズ連載: zenbackのスクリプトを解析してみた(1/3) zenbackのスクリプトを解析してみた(2/3) zenbackのスクリプトを解析してみた(3/3) ブログパーツを作成してみたいのですが、手始めに勉強としてzenbackの動作原理を解析してみました。 まず、入り口です。 サイトにて提示されているスクリプトは以下の通りです。xxxの部分にはサイトに応じた値が入ります。 (実際は1行ですが見辛いので適当に改行してます。) <!– X:S ZenBackWidget –> <script type="text/javascrip…
続きを読む
JavaScriptをブラウザだけで作成&テスト出来る環境を作った(JS.nanobench)
JavaScriptの動作確認をしているのですが、「エディタで編集 ⇔ ブラウザで確認」の行ったりきたりが面倒なので、ブラウザだけで確認できるようにしました。 作ったもの これです↓ JS.nanoBench プログラム: console.log( 2 * 3.14 ); 出力結果: エラー: 仕組み 仕組みは、textAreaの中身をevalして出力してるだけです。 …だと説明にならないので、html,js,cssのソース見ながら解説して行きます。 html まずは、htmlの構造です。 特に何の変哲も無いhtmlです。 各パーツにidを振ってあるのと、ボタンのonclickだけ…
続きを読む
http://www.google.com/jsapiを使用してjQueryをロードするときの注意点
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#のラムダ式をチェーンさせる記法が便利!
(この記事は,Hidden Features of C#?を参考に記述しています) C#では、バージョン3.0(Visual C# 2008)以降でサポートされた、ラムダ式というものが有ります。 ラムダ式を使うことで、関数型プログラミングっぽい記述や、デリゲート・イベントハンドラを簡潔に記述することが出来ます。 このラムダ式ですが、実は複数のラムダ式を連結(チェーン)させることが可能です。 //——————————————– // 「dx,dyを渡すと、ハンドラ関数を返す」関数 //—————————…
続きを読む