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

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
になっています。

Facebooktwitterlinkedintumblrmail

ぼっちBazaar

5/21(土)、『NAGASAKI-IT hands-on Spring 2011』に参加して、ライトニングトークしてきました。

弊社の吉田くんが

「ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜」

というGitのハンズオンをやるとのことだったので、それにからめて

「ぼっちBazaar 〜ぼっちを感じるバージョン管理〜」

というわけです。

今回、HTML Slidyでスライドを作りましたのでそのまま貼り付けます(slideクラスのdivには枠を付けました)。

目論見としてはスライド自体をBazaarでバージョン管理して編集しながら実演するつもりだったのですが、残念!

時間がたりませんでした(5分枠で何しようとしてるんだという意見多数)。

ぼっちBazaar

〜 ぼっちを感じるバージョン管理 〜

村部淳也(@murave)

3大分散バージョン管理システムといえば


  • Git
  • Mercurial(hg)
  • Bazaar(bzr)

 

異論はありますまい。

ぼっち


数年前からBazaarを使っていますが

他に使ってる人に会ったことがない。

 

何故だろう。

選択理由


  • 日本語ファイル名に強い(Subversion程度には)
    • 日本語ディレクトリで変な動きをしたりはします。残念ながら。
  • Bazaar Explorer の存在

弱点


ともかく日本語の情報が少なかった

 

ドキュメントは日本語化されてるんですがね

弱点解消


しかし、今年になって

「Bazaarでござ~る。猿でもできる分散バージョン管理“超”入門」

というすばらしい記事が!

さぁ「Bazaarでござ〜る」で検索!

エテ公め!


と言いたい所だけど某社のサルの方が上にでてくるのだった。

 

弱えぇ orz

 

「Bazaarでござ〜る バージョン管理」とでも検索してください

最後に、一言


ぼっちになりたくなければGitを使っとくといいと思います。

 

以上。

時間まで適当に実演


Bazaar Explorer 最高

Bazaar Explorer を使うのがお勧め(当然、コマンドラインでも使えますが)。

  • Mac や Linux ならターミナルから起動 
    • bzr explorer
  • Windowsならメニューやアイコンから起動

    管理の基本

    • 共有リポジトリ作成 init-repo (必須ではありません) 
      • 複数のブランチで効率的にディスクを利用させるためのディレクトリを共有リポジトリという。
    • ディレクトリのブランチ化 init 
      • 管理の基本となるディレクトリをブランチという。
    • ブランチ作成 branch
    • 他のブランチを取得 pull (merge) 
      • 他のブランチの変更を取得する場合も使用します。
      • 作業後に他のブランチの変更を取得する場合はmergeを使用する。
    • 作業ブランチに反映 commit
    • 他のブランチに反映 push

      独特(?)なしくみ

      • チェックアウト(バインド・ブランチ) 
        • 他のブランチ(以降、親と呼びます)にバインドされたブランチをチェックアウトという(たぶん)。
        • コミット(commit)すると親にも反映されたり。
        • さらにSubversionっぽくなる感じ。
           

          おわり

      Facebooktwitterlinkedintumblrmail

      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() をそのまま使えばいいかなと。親クラスは機能の集約に役立ってます。

      Facebooktwitterlinkedintumblrmail

      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
      

      と、こんな感じでテストケースを書いては実装を繰り返し、無事すべてのケースをグリーンにさせることができました!

       

      Facebooktwitterlinkedintumblrmail

      いつか通った道

      富士通のWindows 7ケータイ F-07C ですが、これに似たような物を持っていたなと。
      思い出してみると、SHARPのWillcom D4でした。

      D4と比べてみるとサイズは少し小さくて、重量に至っては218グラムでD4の半分以下。
      非力とはいえ、今この重量でWindows OSの機種は他に無さそうです。
      が、iPhoneやGalaxySよりは大きいので、それで大きいと感じる人には向かないですね。
      携帯用OSが入っているから、普段は困らないかも知れないですが、それならWindowsは不要じゃないかと言う事にも。

      必要か、必要無いかと言えば必要無いんですが。
      必要無いんですが。
      そろそろ携帯買い替えようかと思っていたところでこんな物が出たら・・・。

      取り合えず、安く済ませる事だけ考えるように、他は何も考えないようにしています。

      Facebooktwitterlinkedintumblrmail

      オープンソースカンファレンス 2011 Kansai@Kobe でセミナー

      オープンソースカンファレンス 2011 Kansai@Kobe でセミナー講師やってきました。

      OpenCOBOLとPerlを使った汎用機ダウンサイジング

      上記ですが、遠方とかで見に行けなかった人、字が小さくてプレゼン資料が読めなかった人もいらっしゃると思いますので特に見て頂きたい部分につきましてファイル用意いたしました(クリックで拡大)。

      既存の汎用機リソースの移植をなるべく工数をかけずに出来るように頑張ってみました。

      次回はOSC2011 Hokkaido にて出展予定ですので、宜しくお願い申し上げます。

      追記:セミナースライドも上げておきます
      20110415MFdownsizing

      Facebooktwitterlinkedintumblrmail

      OSC 2011 Kansai@KOBE セミナー前説

      オープンソースカンファレンス 2011 Kansai@KOBEで
      「OpenCOBOLとPerlを使った汎用機ダウンサイジング」
      というセミナーを、弊社、峰松がやります。

      私も行くので軽い内容の前説をやることにしました。

      この土日で前説用のスライドを作ったのですが、
      ネタに走ったので後でスライドを公開するという
      わけにもいかない内容になってしまいました。

      見に来て欲しいなぁ。

      4/16(土)です。よろしくお願いします。

      ※ただし、一部にしか刺さらないネタです。

      Facebooktwitterlinkedintumblrmail

      OSC北海道、設営完了。開場待ち。

      設営完了しました。

      昨日は会場の場所を下見してホテルまであるいてみたら1時間
      かかったりしましたが、タクシーだと一瞬だったぜ!(言い過ぎ)。

      設営完了して油断してる代表を激写。
      OSC北海道、設営完了

      Facebooktwitterlinkedintumblrmail

      OSC北海道に向けて出発!

      の準備中です。私は着替えるだけですけども。

      隣の部屋ではmine氏がギリギリまでスライドを作っていたようです。
      午前3時とかにつぶやいてましたし、@minemaz。

      今回のセミナーは前回の神戸よりも技術寄りな内容になります。
      https://www.ospn.jp/osc2011-do/modules/eguide/event.php?eid=23

      ブースには仮想プリンタの出力見本なども用意しています。
      のぞきにきてくださいね。

      それではいってきます(の前に服着ないと)。

      Facebooktwitterlinkedintumblrmail

      munin-node-win32でWindowsのリソース監視

      「パソコンがなんか遅いんだよ」的なお客様のご不満。

      弊社はデータベースサーバー側のチューニング等を行っているのですが状況を聞いてみると「プログラムの起動が遅い」といった話で、どうもクライアント側の問題かもなぁといった感じ。どうも他社のシステム(しかも画像絡み)が同時に動いているらしいのでそちらにリソースを取られているんじゃないかと想像。

      しかし、想像にすぎないのでどうにか確かめられないかと考えていたらmineさんは言いました。

      「そのパソコンにSNMPd設置するとか」

      MRTGで監視しようってことです。

      それで閃いた(といいますか、なぜそれまで思いつかなかったのか)。

      そのお客様のところのデータベースサーバーとファイルサーバーはMuninで監視してるわけで

      「Windows用のmunin-nodeがあれば監視できるじゃない」

      ありました。munin-node-win32

      http://sourceforge.net/projects/munin-nodewin32/

      現在はお客様のパソコンへの投入前のテストをやっているのですが、バッチリです。

      引っかかったところは2つ

      1. zip解凍して実行ファイルmunin-node.exeをダブルクリックして「あれ?」
      2. 「メモリのグラフが出来ないなぁ」

      一つ目はマニュアルをちゃんと読めってことで。
      サービスとしてインストールするには次のようにします。

      > 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.
      

      ありがてぇ。ありがてぇ。

      Facebooktwitterlinkedintumblrmail