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

VB.NETのMy.Application.Logをラッピングしたクラス作ってみた
現在進めているプロジェクトでのロギングにはmiyazakiさんに調べてもらったMy.Application.Logを使うことにしました。
が、そのままだとちょいと辛かったのでラッピングしてクラスを作ってみました。
Public Class Log
Public Shared Sub Write(
ByVal message As String,
ByVal traceEventType As String,
Optional ByVal isShowMsgBox As Boolean = False
)
Dim severity As System.Diagnostics.TraceEventType =
System.Enum.Parse(GetType(System.Diagnostics.TraceEventType), traceEventType)
My.Application.Log.WriteEntry(My.Computer.Clock.LocalTime.ToString & "> " & message, severity)
My.Application.Log.TraceSource.Flush()
'下記表示判定は何パターンか試した結果ですが正しいかの確認は出来ていません。
If My.Application.Log.TraceSource.Switch.Level > severity Then
showMsgBox(message, severity, traceEventType, isShowMsgBox)
End If
End Sub
Private Shared Sub showMsgBox(
ByVal message As String,
ByVal severity As System.Diagnostics.TraceEventType,
ByVal title As String,
Optional ByVal isShowMsgBox As Boolean = False
)
If isShowMsgBox Then
Dim msgBoxButtons As MsgBoxStyle
Select Case severity
Case Diagnostics.TraceEventType.Critical, Diagnostics.TraceEventType.Error
msgBoxButtons = MsgBoxStyle.Critical
Case Diagnostics.TraceEventType.Warning
msgBoxButtons = MsgBoxStyle.Exclamation
Case Else
msgBoxButtons = MsgBoxStyle.Information
End Select
MsgBox(message, msgBoxButtons, title)
End If
End Sub
Public Shared Sub Verbose(
ByVal message As String,
Optional ByVal isShowMsgBox As Boolean = False
)
Log.Write(message, "Verbose", isShowMsgBox)
End Sub
Public Shared Sub Info(
ByVal message As String,
Optional ByVal isShowMsgBox As Boolean = False
)
Log.Write(message, "Information", isShowMsgBox)
End Sub
Public Shared Sub Warn(
ByVal message As String,
Optional ByVal isShowMsgBox As Boolean = False
)
Log.Write(message, "Warning", isShowMsgBox)
End Sub
Public Shared Sub Err(
ByVal message As String,
Optional ByVal isShowMsgBox As Boolean = False
)
Log.Write(message, "Error", isShowMsgBox)
End Sub
Public Shared Sub Exception(
ByVal ex As Exception,
ByVal message As String,
Optional ByVal isShowMsgBox As Boolean = False
)
message &= System.Environment.NewLine &
" [例外内容] " & ex.Message & System.Environment.NewLine &
" [スタックトレース] " & System.Environment.NewLine & ex.StackTrace
Log.Err(message, isShowMsgBox)
End Sub
End Class
Verboseがlog4netのDebugにあたる感じで使えると思います。
メッセージボックスを表示したりも出来ます。
My.Application.Log.には例外用のメソッドWriteExceptionがあるのですが出力される情報がイマイチだったので使わないで実装しました。
まだあまり使ってないのでバグってたりするかもしれません。
コードを修正したらここも修正するということで。






MacアプリでURLをブラウザで開く方法
- 2011/02/01
- yoshida
- Objective-C
これでHTTPなURLスキームに対応しているアプリのidentifierの一覧が取れます。
NSArray *identifiers = (NSArray*)LSCopyAllHandlersForURLScheme((CFStringRef)@"http");
ただ、このままだとブラウザでないアプリケーション(例えばEvernoteなど)も取れてしまいますので、うまい具合にブラウザだけ取る方法があれば教えてください。
次にURLをデフォルトブラウザで開く方法
NSURL *url = [NSURL URLWithString:@"http://www.example.com/"];
[[NSWorkspace sharedWorkspace] openURL:url];
最後にURLを指定のアプリケーションで開く方法
NSURL *url = [NSURL URLWithString:@"http://www.example.com/"];
[[NSWorkspace sharedWorkspace] openURLs:[NSArray arrayWithObject:url]
withAppBundleIdentifier:@"com.apple.Safari" //取得したidentifierを渡してやる
options:NSWorkspaceLaunchDefault
additionalEventParamDescriptor:nil
launchIdentifiers:nil];






Xcodeでリリースビルド時に.dmgを自動生成する
こちらを参考に、hdiutilを使ってリリースビルド時のみ生成するようにしてみました。
グループとファイルからビルドターゲットを右クリックし、[追加 > 新規ビルドフェーズ > 新規スクリプトを実行]を選択します。
スクリプトを入力する画面が表示されますので、下記のようにスクリプトを設定します。.dmgはデスクに保存するようにしています。cpしているところは適時置き換えて頂ければいいかと思います。
set -ex
[ "$ACTION" = build ] || exit 0
[ "$BUILD_VARIANTS" = "normal" ] || exit 0
[ "$CONFIGURATION" = "Release" ] || exit 0
dir="$TEMP_FILES_DIR/disk"
dmg="$HOME/Desktop/$PROJECT_NAME.dmg"
rm -rf "$dir"
mkdir "$dir"
cp -R "$BUILT_PRODUCTS_DIR/$PROJECT_NAME.app" "$dir"
cp -R "$PROJECT_DIR/README.txt" "$dir"
cp -R "$PROJECT_DIR/LICENSE.txt" "$dir"
ln -s "/Applications" "$dir/Applications"
rm -f "$dmg"
hdiutil create -srcfolder "$dir" -volname "$PROJECT_NAME" "$dmg"
rm -rf "$dir"






長崎ITキャンプ2010やりますよ!って話
昨年に引き続き、長崎ITキャンプが開催されます。
大事なことなので最初に書きます。今週末にはプレイベントなのでもうすぐ締切りだと思いますが、8/30現在、社会人枠はまだ募集中です。申し込みフォームからお申込みくださいませ。参加費は3,000円です。
学生さんは締め切っちゃってます。ごめんなさい。
峰松、村部はスタッフで参加します。よろしくお願いします。
去年は「海」でしたが、今年は秋ということもあり「山」です!
時期的に紅葉なんかには早いと思いますが、ITキャンプの頃の山の空気は気持ちイイと思われますよ(私が下見にいった8/28は猛烈に暑かったですけど)。
キャンプインと呼んでいるプレイベントが今週末に迫ってまいりました。参加予定の方々には既に連絡が届いているかもしれませんが、これから申し込みたいという方には情報が少ないと思います。私が分かる範囲で書いておきますね。
●キャンプイン(プレイベント『趣旨説明およびグループ分け』)
日 時: 平成22年9月4日(土) 13:00〜18:00 + 懇親会
会 場: 長崎市民会館 6階 第2・第3大会議室
12:30受付開始です。
今回プレイベントでTwiiterを使う予定ですのでTwitterアカウントを事前に取得しておいてください。アカウントの取り方がわからない方は早め(12:00位〜)に来てくださればスタッフが対応します。
●ITキャンプ(本イベント『合宿研修』)
日 時: 平成22年9月24日(金)20:00 ~ 26日(日)16:30(2泊3日)
会 場: 長崎式見ハイツ
金曜日スタートですが、夜8時からですので勤務等に差支えはでないかと思います。ご安心を。
交通手段としては大型バスでの送迎もありますし、自家用車で行ってもOKだそうです。
今回、各チームの自主性に重きを置いて「ITで長崎の魅力を発信」するという大きな目標を目指してもらうという挑戦的な試みとなります。我こそは!という方、待ってます。






どうでも良い話
タッチパッドが苦手です。
キータッチしているうちに、触って別の場所にフォーカスしてしまう。
果てはWeb上のフォームで入力中にPostしてしまう。
そんな経験を何度もしているうちに、苦手になりました。
設定やアプリで変更出来ますよと言う人もいるけど、割と設定画面が違ったりして面倒です。
今使っているノートPCはUSBマウスを挿すと自動的にタッチパッドが無効化されるので、
設定で出来ます、じゃなくて初期設定でそうなるように作ってある事が良いと感じました。
Firefoxのアドオンやコンフィグが一部で評価が悪いのが分かった気がします。WindowsMobileも。
そもそもタッチパッド付けなければ良いじゃないか、
とかタッチパッド嫌いはThinkPad買えと言う話が出るんですがまぁそれは別の話で。






JRuby兄弟、爆誕!
7月27日に行われた「福岡Rubyビジネス拠点推進会議 平成22年度総会」に行ってきました。私の場合正しくは、合わせて行われたRBC(Ruby Business Commons)の総会に行って来た、というべきかな(弊社は長崎ですからね)。
RBCブースのお手伝いが主目的だったのですが、講演もほとんど聞くことができました(まつもとさんのプレゼンは一部しか聞けなくて残念)。
私的に一番インパクトがデカかったのはJRuby兄弟(JRuby開発者、ThomasとCharlesの二人。翻訳して徹夜で字幕をつけてくれた片山さんによると「自称」らしい(笑))からのビデオメッセージ!
http://rubybizcommons.jp/ja/articles/2010/07/28/2010727-rubydays-2010/
RBCオフィシャルサイトの上記ページでまつもとさんのプレゼンテーション資料とともに公開されていますので、ぜひぜひ見てください。この二人が出てくるだけでなんだかなごんじゃうんですが、内容はエキサイティングですよ!
「cExtension APIを JRubyで利用出来るように挑戦しています」
とかね! JRubyやっぱ、好きや〜!






Pacemakerが(いろんな意味で)スゴイ
といいますか、Linux-HA Japanがスゴイ。
webラジオペースメーカーには大変に心(のおもにダメなところ)を揺り動かされました。
そんで、オープンソースカンファレンス 2010 Fukuoka でとったメモ公開してなかったなぁ、と思い出したのでした。
プレゼンテーション資料を公開(http://linux-ha.sourceforge.jp/wp/archives/741)してくださってるので合わせてご覧ください。スライドだけで十分って気もしますが。
ラジオはともかく(好きですけども)、動画のかんたんペースメーカー入門はいいコンテンツですなー。




