‘未分類’ カテゴリーのアーカイブ

VB.NETのMy.Application.Logを使う
My.Application.Logを使用してトレースする、ログに書き込む
で詳しく説明されているのでメモ程度で。
まず、My.Application.Logを使うためにアプリケーション構成ファイルであるapp.configを編集します。(ない場合は[プロジェクト] > [新しい項目の追加]からアプリケーション構成ファイルを選択)
app.configがプロジェクトに追加された時点でMy.Application.Logに関する記述があるので楽です。
しかし、このまま何も触らずにプログラム内で
My.Application.Log.WriteEntry("コントロールの初期化")
'Try~Catch内などで
My.Application.Log.WriteException(New Exception("エラー!"))
とするだけでも
DefaultSource Information 0 コントロールの初期化
DefaultSource Error 2 エラー!
と出力され使うことができます。
ちなみに出力先のデフォルトは
ユーザーのApplication Dataフォルダ\CompanyName\ProductName\ProductVersion\ProductName.log
ですが、Vista以降はフォルダ構成が変わっているので
ユーザーのAppData\Roaming\CompanyName\ProductName\ProductVersion\ProductName.log
になっています。






ぼっちBazaar
5/21(土)、『NAGASAKI-IT hands-on Spring 2011』に参加して、ライトニングトークしてきました。
弊社の吉田くんが
「ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜」
というGitのハンズオンをやるとのことだったので、それにからめて
「ぼっちBazaar 〜ぼっちを感じるバージョン管理〜」
というわけです。
今回、HTML Slidyでスライドを作りましたのでそのまま貼り付けます(slideクラスのdivには枠を付けました)。
目論見としてはスライド自体をBazaarでバージョン管理して編集しながら実演するつもりだったのですが、残念!
時間がたりませんでした(5分枠で何しようとしてるんだという意見多数)。






CakePHP でシェルを書くときに最初にやったこと(親クラス作り)
CakePHP にはデバッグで便利な pr() って関数があります。
出力の前後に pre タグ を付けてくれる print_r() のラッパーです。当然Web用。
シェルにも欲しいです。てなわけで作りました。
function pr($obj){
$pr = print_r($obj, true);
$this->out($pr);
}
簡単。こんな感じで使います。
$popopopooon = array('こんにちわ' => 'こんにちワン', 'ありがとう' => 'ありがとウサギ');
$this->pr($popopopooon);
このようにコンソールに出力されます。
Array
(
[こんにちわ] => こんにちワン
[ありがとう] => ありがとウサギ
)
print_r() は第2引数に true を渡すと出力せずに結果を返してくれるのでオブジェクト構造をログに出したりするときにも便利です。
でもコレ、全部のシェルに書きたくない。
どこに集約したらいいのか悩んだのですが、実際に実行するシェルの親クラスを作成して継承することにしました。継承の段数が増えるのはあまりすきじゃないのですが、Shellクラス をそのまま継承するよりも1段増やしといたほうがいいかな?って気もしたので。
appbase.php
class AppbaseShell extends Shell {
function initialize() {
parent::initialize();
}
function startup() {
//ウェルカムメッセージを消すためにオーバーライド
}
/**
* デバッグ用
*/
protected function pr($obj){
$pr = print_r($obj, true);
$this->out($pr);
}
}
ついでに startup() をオーバライドしてウェルカムメッセージを消しました。
こういう事やるには1段あいだに入ってるほうがいいですね。
実際に起動するシェルは AppbaseShellクラス を継承します。
aisatu.php
App::import('Shell', 'Appbase');
class AisatuShell extends AppbaseShell {
function initialize() {
parent::initialize();
}
function main() {
$popopopooon = array('こんにちわ' => 'こんにちワン', 'ありがとう' => 'ありがとウサギ');
$this->pr($popopopooon);
}
}
サンプルコードは今テキトーに書いたのでちょっとあやしいかも。
最後にオチを。
このprメソッド、実際に作ったんですが普通に print_r() すればコンソールに出力されるんですよねー。「そりゃそうだ」と後で気づいたわけで。
CakePHP のシェルでは $this->out() でコンソールへの出力をすることになってますが、開発中にしか使わないし print_r() をそのまま使えばいいかなと。親クラスは機能の集約に役立ってます。






VB2010でNUnit2.5を利用する
初めまして、miyazakiです。今年からこちらでお世話になることになりました。よろしくお願いします!
初めての投稿なのでものすごく緊張していますが、さっそく本題に入っていきたいと思います。
VB.NETの環境でNUnitを使うことになったので入れてみました。
参考ページ
NUnit 2.5 の導入 Step by Step
VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step
参考にしたページと同じ環境だったのと、とても詳しく分かりやすく書かれていたので、インストールから動かしてみるまでサクサク進めました。
なのでこちらではメモ程度に書いていきたいと思います。
まずはインストール。
NUnitのページのDOWNLOADから”NUnit-2.5.10.11092.msi”をクリックしインストール。
インストールすると中にサンプルが入っているので、とりあえずそちらを動かしてみることにします。
ソリューションを開くと、このプログラム古いから今の環境で動くようにしろ、と言われるので指示に従ってコンバート。
コンバートして開けたところでビルドするんですが、元が古いということでプロジェクトで参照されているnunit.frameworkも古いです。新しいほうを参照させる必要があります。
NUnitをインストールしたドライブ\NUnit 2.5.10\net-2.0\framework内にnunit.framework.dllがあるので、プロジェクトごとに設定しなおしていきます。
これでビルドが通りました。
ビルドに成功したところでNUnitを起動。このままだとVisual Studioのファイルが開けないので、
[Tools] > [Settings…]から[IDE Support]を選択し[Enable Visual Studio Support]という項目にチェックを入れておきます。
これでNUnit側でサンプルを開くことができます。
読み込み時にdllファイルが見つからないエラーが出る場合は、
[Project] > [Configurations] > [2 Release]
を選択します。
あとはRunを押すとテストされるかと思います。こんな感じで。
赤い部分がテスト失敗。緑の部分が成功しているということを表しています。
では、実際にプロジェクトを作ってやっていきたいと思います。こちらも参考ページにバッチリ書いてあるので大まかな部分とテストの記述部分のみ触れていきます。
構成としてはメインプログラムとテスト用とプロジェクトを分けて作成します。
テスト用プロジェクトに関してはクラスライブラリで作成し、NUnitから呼び出して使うためにdllとして作ります。
参照設定は先ほども出たnunit.frameworkと、メインプロジェクトを設定しておきます。
テストケース部分
Imports FizzBuzz
Imports NUnit.Framework
Public Class FizzBuzzerTest
'Fizz Buzz - 数字を数え、3の倍数でFizz、5の倍数でBuzz、3と5の倍数でFizzBuzz
Public Sub SayNextTest_1回目は1_1()
Dim obj As FizzBuzzer = New FizzBuzzer()
Dim result As String = obj.SayNext()
Assert.AreEqual("1 - 1", result) 'Assert.AreEqual(期待値, 検査したい値)
End Sub
End Class
NUnitはTestFixture()を見て「このクラスにテストケースがある」ということ、Test()で「このメソッドがテストケース」であることを判断します。
Assert.AreEqual()ですが、このプログラムはFizz Buzzをしているので、この場合1回目の期待値は”1-1″、検査する値はSayNext()(数字、Fizz、Buzzのいずれかを返す)で返ってくる値になります。
また、テストケースを増やすうえで、同じような処理がある場合はまとめて書くことができます。
Public Class FizzBuzzerTest
'同じような処理をするテストはTestCaseを使うことでまとめて書ける
'1のとき
'2のとき
'3のとき
Public Sub SayNextTest(ByVal count As Integer, ByVal expected As String)
Dim obj As FizzBuzzer = New FizzBuzzer()
Dim result As String = Nothing
For i As Integer = 1 To count
result = obj.SayNext()
Next
Assert.AreEqual(expected, result) 'Assert.AreEqual(期待値, 検査したい値)
End Sub
End Class
と、こんな感じでテストケースを書いては実装を繰り返し、無事すべてのケースをグリーンにさせることができました!






いつか通った道
- 2011/02/18
- aikawa
富士通のWindows 7ケータイ F-07C ですが、これに似たような物を持っていたなと。
思い出してみると、SHARPのWillcom D4でした。
D4と比べてみるとサイズは少し小さくて、重量に至っては218グラムでD4の半分以下。
非力とはいえ、今この重量でWindows OSの機種は他に無さそうです。
が、iPhoneやGalaxySよりは大きいので、それで大きいと感じる人には向かないですね。
携帯用OSが入っているから、普段は困らないかも知れないですが、それならWindowsは不要じゃないかと言う事にも。
必要か、必要無いかと言えば必要無いんですが。
必要無いんですが。
そろそろ携帯買い替えようかと思っていたところでこんな物が出たら・・・。
取り合えず、安く済ませる事だけ考えるように、他は何も考えないようにしています。






オープンソースカンファレンス 2011 Kansai@Kobe でセミナー
- 2011/02/18
- mine
オープンソースカンファレンス 2011 Kansai@Kobe でセミナー講師やってきました。
上記ですが、遠方とかで見に行けなかった人、字が小さくてプレゼン資料が読めなかった人もいらっしゃると思いますので特に見て頂きたい部分につきましてファイル用意いたしました(クリックで拡大)。
既存の汎用機リソースの移植をなるべく工数をかけずに出来るように頑張ってみました。
次回はOSC2011 Hokkaido にて出展予定ですので、宜しくお願い申し上げます。
追記:セミナースライドも上げておきます
20110415MFdownsizing






OSC 2011 Kansai@KOBE セミナー前説
オープンソースカンファレンス 2011 Kansai@KOBEで
「OpenCOBOLとPerlを使った汎用機ダウンサイジング」
というセミナーを、弊社、峰松がやります。
私も行くので軽い内容の前説をやることにしました。
この土日で前説用のスライドを作ったのですが、
ネタに走ったので後でスライドを公開するという
わけにもいかない内容になってしまいました。
見に来て欲しいなぁ。
4/16(土)です。よろしくお願いします。
※ただし、一部にしか刺さらないネタです。






munin-node-win32でWindowsのリソース監視
「パソコンがなんか遅いんだよ」的なお客様のご不満。
弊社はデータベースサーバー側のチューニング等を行っているのですが状況を聞いてみると「プログラムの起動が遅い」といった話で、どうもクライアント側の問題かもなぁといった感じ。どうも他社のシステム(しかも画像絡み)が同時に動いているらしいのでそちらにリソースを取られているんじゃないかと想像。
しかし、想像にすぎないのでどうにか確かめられないかと考えていたらmineさんは言いました。
「そのパソコンにSNMPd設置するとか」
MRTGで監視しようってことです。
それで閃いた(といいますか、なぜそれまで思いつかなかったのか)。
そのお客様のところのデータベースサーバーとファイルサーバーはMuninで監視してるわけで
「Windows用のmunin-nodeがあれば監視できるじゃない」
ありました。munin-node-win32
http://sourceforge.net/projects/munin-nodewin32/
現在はお客様のパソコンへの投入前のテストをやっているのですが、バッチリです。
引っかかったところは2つ
- zip解凍して実行ファイルmunin-node.exeをダブルクリックして「あれ?」
- 「メモリのグラフが出来ないなぁ」
一つ目はマニュアルをちゃんと読めってことで。
サービスとしてインストールするには次のようにします。
> munin-node.exe -install
逆にサービスから削除するときには -uninstall オプション。
二つ目のメモリのグラフについては偉大な先人がいらっしゃいました。
munin-node-win32でメモリーのグラフが出ない問題 « こにやnのぶろぐ
munin(cronで起動されてグラフを作成してる方)の設定(munin.conf)内の対象Windows機のmunin-nodeに関する所には次のようにmemoryに関する記述の追加が必要ってことですね。
[TargetPC] #Windows PC
address xxx.xxx.xxx.xxx #IP Address
memory.swap.label swap
memory.swap.draw STACK
memory.swap.info Swap memory used.
ありがてぇ。ありがてぇ。




