[パタヘネ][C]シフトと加算だけで、掛け算を行う
パタヘネの”第3章:コンピュータにおける算術演算”にある、3.3乗算の補足説明です。 “乗算は、ハードウェア的には、前述した加算処理とシフト処理で実装できる”を確認するために、Cでコードを作成しました。 当然ながら、乗算命令が下記のような形でソフトウェア的に実装されているというわけではないです。 下記のような振る舞いを行う”電子回路が組まれる”という意味だけど、 回路的として説明すると分かり辛いので、説明としてコードとして記述しただけです。 #include <stdio.h> main(…
続きを読む
cygwinでgcc開発メモ
cygwin環境の確認(win7, x64) $ uname CYGWIN_NT-6.1-WOW64$ uname CYGWIN_NT-6.1-WOW64 とりあえずhello world $ cat test01.c #include <stdio.h> main() { printf( "hello world\n" ); }$ cat test01.c #include <stdio.h> main() { printf( "hello world\n" ); } コンパイルしてexeの出力と実行 (cygwinでは、出力フ…
続きを読む
[PHP]twitter APIを使用して、検索した結果を出力する
twitterに書き込まれたツイートを、PHPで検索して出力させるプログラムです。 $keyword = urlencode( ‘キーワード’ ); //——————————– // twitter APIを使用して検索を行う //——————————– $result = file_get_contents( ‘http://search.twitter.com/search.atom?q=’. $keyword ); $xml = new SimpleXMLEl…
続きを読む
[PHP]年月日の文字が入った日付文字列を,YYYYMMDDに変換する(2012年1月31日 -> 20120131)
PHPで、例えば「2012年1月31日」といった、書式編集されている日付文字列を、 「20120131」のようなYYYYMMDD形式に変換します。。 function normalizeDate( $inStr ) { // 年月日の各パーツを分割する preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $inStr, $data ); if ( Count( $data ) != 4 ) { return $inStr; } /…
続きを読む
[PHP]php5.3でDateTimeクラスに追加されたメソッドと同等の事を5.2で行う
PHP5.2に対して、PHP5.3ではDateTimeクラスに対してメソッドが追加されているため、5.3向けに書かれたコードを5.2の環境で動作させようとすると問題が発生する事があります。 このような場合の対処法を幾つか確認したのでメモしておきます。 //——————————- // 現在の時刻を取得 //——————————- $sysdate = new DateTime(); //——————————- // 現在時刻を文字列…
続きを読む
[PHP]メソッドの呼び出し元関数名を取得する
debug_backtrace()関数を使用することで、スタックトレースの情報から取得可能です。 function showCallerFunc() { $dbg = debug_backtrace(); echo( $dbg[1][’function’] ); }function showCallerFunc() { $dbg = debug_backtrace(); echo( $dbg[1][‘function’] ); } メソッド内で、呼び元が誰かを知る必要は通常ありませんが、デバッグ…
続きを読む
[.Net]Chartコントロールに表示させるグラフ色の,カラーパレット一覧
Chartコントロールでは、1つのコントロールに複数の系列のグラフを描画する事ができます。 この際、各系列が分かりやすくなるよう、色が自動で切り替わるのですが、このカラーパレットはPaletteプロパティで指定する事が可能です。 chart1.Palette = ChartColorPalette.Berry; chart1.ApplyPaletteColors();chart1.Palette = ChartColorPalette.Berry; chart1.ApplyPaletteColors(); パレットを切り替えたい時は、上記のコードで簡単に変更する事が可能です。 …
続きを読む
.Net Framework4.0で追加されたChartコントロールを.Net3.5でも使用したい
.Net Framework4.0では、画面にグラフを描画する為のコントロールとして、Chartコントロールが新たに追加されました。 このコントロールは、System.Windows.Forms.DataVisualization.Chartingパッケージに有るのですが、新しいクラスなので、当然ながら.Net Framework3.5以前では通常は使用することが出来ません。 ですが、.Net Framework3.5を使用して開発を行っている場合は、同コントロールが使用できるよう、Microsoftより追加のライブラリを提供してくれています。 下記のページからライブラリをダウンロードし、イン…
続きを読む
[C#][.Net]Chartコントロールに表示されているグラフをファイルに保存する
VS2010の.Net Frameworkで用意されているChartコントロールを使用して描画したグラフをファイルに保存する方法です。 private void button1_Click( object sender, EventArgs e ) { chart1.SaveImage( "c:\\work\\chart.jpg", ChartImageFormat.Jpeg ); }private void button1_Click( object sender, EventArgs e ) { chart1.Save…
続きを読む
[C#][.Net]Chartコントロールから目盛りの罫線を消す方法
VS2010の.Net Frameworkで用意されているChartコントロール(System.Windows.Forms.DataVisualization.Charting)で、グラフ内にあるグリッドの罫線を消す方法です。 ここでいう罫線とは、下図の赤枠で囲まれた線の事です。 Chartコントロールのプロパティを表示し、ChartAreasを選択します。ChartAreasは、実際にグラフが描画されるエリア(凡例などの周囲の余白ではなく)の情報を管理しています。 ダイアログが表示されるので、Axesプロパティを選択します。 さらに孫ダイアログが表示されるので、左のメンバーからX axisを…
続きを読む
[C#]WMIイベントをManagementEventWatcherクラスで処理する
Windowsでは、WMI(Windows Management Instrumentation)のAPIを使用することで、OSを構成しているコンポーネントを操作出来ます。 WMIでは通常データの取得やセットを行う事が多いのですが、イベントハンドラを登録しておく事で、指定した状況が発生したかをプログラムで検出することが出来ます。 今回は、C#より.Net FrameworkのManagementEventWatcherクラスを使用して、イベントハンドラを取れるようにします。サンプルとして、PCに接続されているディスプレイの輝度が変更された事をイベントとして検出し、イベント情報を画面に出力するプ…
続きを読む
ThinkPadのFn+Home,Endでの明るさと、wmi\WmiSetBrightnessの関係
ThinkPadでは、Fn+Home,Endのキーを押すととで、ディスプレイの明るさを変更可能です。 このショートカットキーを押すと画面に現在の明るさが表示されますが、この値とwmiのWmiMonitorBrightnessにて取得したCurrentBrightness値の対応表を調べたのでメモしておきます。 表示値 CurrentBrightness 0 2 1 3 2 4 3 5 4 7 5 8 6 10 7 12 8 14 9 17 10 20 11 22 12 30 13 42 14 63 15 100表示値 CurrentBrightness 0 2 1 3 2 4 3 5 4 7 …
続きを読む
メモリリークの確認に、タスクマネージャのワーキングセットを使ってはいけない。
システムの開発時、メモリリークが疑われる場合最初にタスクマネージャでexeが使用しているメモリの量を確認する事が多いかと思います。 この際、Windows7のタスクマネージャでだと、メモリの使用量として「ワーキングセット(メモリ)」と、「メモリ(プライベートワーキングセット)」の2つが有りますが、ワーキングセットを見てメモリリークの判断を行ってはいけません。 (補足:XPだと、プライベートワーキングセットは、仮想メモリサイズと表記されます) なぜかというと、ワーキングセットの値は、以下の特性があり該当のexeが”今使用している”メモリ量をあらわしているわけでは無いからです。 1.ワーキングセッ…
続きを読む
[C#]Chartコントロールを使用して、タスクマネージャー風のグラフを作成する
VisualStudioの2010ではグラフを表示するために、Chartコントロールというものが追加されています。 このコントロールを使用すると、手軽にグラフを作成する事が出来るのですが、デフォルトのプロパティ値ではデザインがいまいちなグラフが出来上がってしまいます。 コントロールをフォームに貼った直後のデザインは、以下のような感じになっています。 今回は、Chartコントロールを使用して、主に見た目に関するプロパティを確認しつつ、 Windowsのタスクマネージャー風のグラフを作成してみました。 [今回作成したプログラムによるグラフの表示] 情報を見える形にする技術 今回のサンプルプログラム…
続きを読む
[C#]パフォーマンスカウンタから取得した値の履歴を,一定件数覚えておく
Windowsに標準で搭載されているコントロールパネルやパフォーマンスモニタでは、PCの現在の状態を表示しつつ、グラフで一定時間(直近30sec分など)の履歴を表示しているものがあります。 このような表示方法だと、現在の状況を確認しつつデータが増加・減少傾向のどちらにあるのかの、トレンドも同時に把握する事ができるので便利です。 [コントロールパネルによるCPU負荷履歴の表示] 今回は、パフォーマンスカウンタから値を取得し、その履歴を一定件数覚えておく処理を作成します。 以下が、今回のサンプルコードです。 // 取得データの履歴 const int MAX_HISTORY = 40; Queue…
続きを読む
[C#]Listから最初のn件のデータだけ処理する
Listに登録したデータから、最初のn個だけを残して他は削除したい場合は RemoveRange()メソッドを利用します。 int n = 10; List<string> dataList = new List<string>(); if ( lstTest.Count > n ) { dataList.RemoveRange( n, dataList.Count – n ); }int n = 10; List<string> dataList = new List&…
続きを読む
CとC++の非互換性:文字リテラルのサイズ
最近知った豆知識です。 CとC++で、以下のコードを実行したときの結果は異なります。 printf( "%d", sizeof(’A’) );printf( "%d", sizeof(‘A’) ); 実行してみると、Cでは4が表示され、C++だと1となります。 理由は、C言語の仕様上文字リテラルはintとみなされ、C++ではcharとみなされるから。 以下、仕様より An integer character constant has type int. The value of an integer char…
続きを読む
[Windows]メモリエリア関係の用語まとめ(System.Diagnostics.Processクラス)
System.Diagnostics.Processにあるメモリ関係のプロパティを見ていたら、よく分からなくなってきたので、整理を兼ねてメモしておく。 メモリ プロセスが使用しているメモリには、OSが管理するメモリ領域と、プログラムが使用するメモリ領域の2つがある。 OSが使用するメモリ領域 OSが使用するメモリ領域には、ページング化なエリアと、不可なエリアが存在する。 Process.NonpagedSystemMemorySize: ページングされないシステム メモリの量 Process.PagedSystemMemorySize : ページング可能なシステム メモリの量Process.N…
続きを読む
[C#]自前でToString()メソッドを実装時に気をつけるべき9つの事
C#では、ObjectクラスがToString()メソッドを持っているため、全てのオブジェクトがこのメソッドを継承しています。.NetFrameworkで用意されているクラスでは、ToString()をコールする事で有用な情報が帰ってくるのですが、自作のクラスではクラス名が分かる程度で役に立つ情報は有りません。 自前でToString()メソッドをオーバーライドしておくと、開発・デバッグが非常に捗りますが、そのときに注意すべき点が幾つかあります。 ToString() メソッド内で例外を発生させない また、オブジェクトの内部状態に情報がセットされていない場合でも、空文字列やnullを返さないよ…
続きを読む
[C#]Windowsで実行中のサービス一覧と、起動状態を取得する
.Net Frameworkを使用して、Windowsで稼働中のサービス一覧を取得するにはSystem.ServiceProcessパッケージのServiceControllerクラスを使用します。 下記のコードで、全サービス一覧の列挙と、サービスの起動状態を取得できます。 static void Main( string[] args ) { //——————— // サービス一覧を取得 //——————— System.ServiceProcess.ServiceController[…
続きを読む
カテゴリ
"プログラム"のRSS