Archive for 7月, 2005

Movable Typeに移行しました。

金曜日, 7月 22nd, 2005

 ブログを jugem から MovableType に移行しました。
 一年ほどブログを書いていますが、少し昔の日記を読むと、自分で恥ずかしくなるようなことを書いています。そのときと比べて、成長しているのか、人間がスレていっているのか…どちらか分かりませんが。



Try Catch Finallyが使える

火曜日, 7月 19th, 2005

例外処理は

VB.NET:
  1. Dim sr As System.IO.StreamReader
  2. On Error Resume Next
  3. sr = System.IO.File.OpenText("redme.txt")
  4. If Err.Number<>0 Then
  5. MsgBox("エラー番号=" & Err.Number & vbcr &_
  6. Err.Description, _
  7. MsgBoxStyle.Exclamation)
  8. Else
  9. sr.close()
  10. End If
  11. sr = Nothing

でしたが、構造化例外処理が使えます。

VB.NET:
  1. Dim sr As System.IO.StreamReader
  2. Try
  3. sr = System.IO.File.OpenText("a.txt")
  4. Catch exp As System.Security.SecurityException
  5. MsgBox("アクセス権なし")
  6. Catch exp As System.ArgumentException
  7. MsgBox("パス名が不正")
  8. Finally
  9. sr.close()
  10. End Try
  11. sr = Nothing

DLL内部で発生したエラーの検出

VB.NET:
  1. Dim returnCode As Integer
  2. returnCode = ShellExecute(Me.Handle, "open", "readme.txt",_
  3. vbNullString, ApplicationExecutablePath, _
  4. SW_SHOWNORMAL)
  5. IF returnCode <= 32 Then
  6. Debug.WriteLine("Last DLL Error =" & Err.LastDllError)
  7. Debug.WriteLine("Return Value = " & returnCode)
  8. End If

エラーを起こすときは

VB.NET:
  1. Err.Raise(エラー番号*他にも引数がある。)



基本的なクラスとプロシージャの宣言

火曜日, 7月 19th, 2005

クラスの書き方

VB.NET:
  1. Public Class Form1 Inherits System.Windows.FormsForm
  2. ' クラスの内容
  3. End Class

Inheritsというのが継承するという意味?extendsと同じ?

プロシージャの書き方

VB.NET:
  1. Private Sub プロシージャ名(引数)
  2. ' なんらかの処理
  3. End Sub

引数にByValを付けて渡すと「値渡し」、ByRefを付けて渡すと「参照渡し」。省略した場合、VB.NETではByValが自動的に付けられる。
値を返すときは

VB.NET:
  1. Private Function TestProc(ByVal v1 As Integer) As Long
  2. TestProc = v1 * v1 * 3.14
  3. End Function

とか。



Javaばかり書いていた人がVB.NETを始めるさま

火曜日, 7月 19th, 2005

来月からVB.NETとASP.NETでC/SとWebを開発するので、これらのメモ。
せっかくの.NETなので、オブジェクト指向(OOP)で。
以下は参考になりそうなサイト。

@IT:連載 改訂版 プロフェッショナルVB.NETプログラミング
.NETフォーラムサイト
PAPA'n VB (ぱぱんぶぃびぃ) - HOME
VBStation
Visual Basic Tips Library
じゃんぬねっと (C#, VB.NET)
どっとねっとふぁん
中の技術日誌
.NETでいきまっしょい!
KOZの館



Flash Video

日曜日, 7月 17th, 2005

 あるホームページで動画を配信する事になった。Windows Media PlayerやReal Player でストリーミング配信、というのが定石なのですが、

  • 個人的に、あれらのプレイヤが立ち上がるのが嫌いな事
  • このホームページでは Flashの コンテンツを扱うので、ついでに Flash Video で配信してみたい
  • という理由から、 Flash Video を採用してみました。

     職場のマシンや個人のマシンで、Media PlayerやReal PlayerがインストールされていなくてもFlash Playerはインストールされているのではないでしょうか?Flash Videoの一番の利点は、Flash Player7がインストールされていれば、他のメディアコンポーネントが不要なことだと思います。
    材料

  • Macromedia Flash MX 以降
  • 動画ファイル(*.asf, *.wmv, *.mpg, *.movなど)
  • 作り方
    1. 動画ファイルをFlashのライブラリに読み込みます。FlashVideo形式に書き出せる動画ファイルについては Flash TechNote ビデオの読み込み : ファイルとエンコーディングに関するガイドライン を参照。
    2. ライブラリに読み込んだ動画ファイルをFlash Video形式 (*.flv) に書き出します。
    3.ライブラリに空の「埋め込みビデオ」を作成して、ステージに配置します。インスタンス名を適当に付けます。そのた、Play, Stop, Pause/Play, Forward, Rewindボタンを作成しときます。
    4._rootのタイムラインの1コマ目にスクリプトを書いて、Flashムービーを呼び出します。

    // flvとして書き出したムービーの名前
    var currentMov:String = "testmovie.flv";
    
    // NetConnectionの設定
    var objNc:NetConnection = new NetConnection ();
    objNc.connect ( null );
    
    // NetStreamの設定
    var objNs:NetStream = new NetStream ( objNc );
    
    // FLVビデオの設定
    // ステージに配置した埋め込みビデオに"objVideo"と名前を付けておく
    objVideo.attachVideo ( objNs );
    
    //ムービーのバッファ処理
    objNs.setBufferTime (5);
    
    //playボタン
    plays.onRelease = function () {
            objNs.play (currentMov);
    }
    
    //puaseとplayボタン
    pauseplay.onRelease = function () {
            objNs.pause (currentMov);
    }
    
    //stopボタン
    stop.onRelease = function () {
            objNs.close (currentMov);
    }

    早送りは

    objNs.seek(objNs.time + 1);

    巻き戻しは

    objNs.seek(objNs.time - 1);

    を各ボタンが押されている間、繰り返すように記述します。

     巻き戻しに objNs.seek (objNs.time - 1); と書いたのですが、なにか、上手くいかずにSさんに相談しました。SさんはFlashの文法を知らないのに、「 -1 を -2 にして見れば?」という助言をくださいました。理由は、巻き戻しボタンが押されている間、objNs.time - 1 をループしても、 -1 した次の瞬間に +1 されているので、後ろに進まないのでは?ということでした。 -2 に修正したら、見事、巻き戻しもスムースになりました。解決時間、およそ1分。Sさんのすごさを再認識しました。そして、ヘコミました。

     書き出した flv ファイルも結構小さく圧縮できていて、レンタルサーバーのスペースも喰いません。サーバーに置いて再生してみたのですが、スムースに再生できてるようで、結構使えると思います。



    また禁煙(最後)

    金曜日, 7月 15th, 2005

     今日、市の保健所が開催する禁煙カウンセリングに行って来ました。すでに禁煙をしていたのですが、今迄のように、途中で挫折しないようにコツを聞きに。
     今回はタバコを吸う夢は余り見ませんが、一度だけ夢を見ました。Mさんから「根性ねぇな~」と言われる、とてもリアルな夢でした。現実かと思って、うっすら目が覚めました…。
     ブログを書き始めて一年ほど経ちますが、何回禁煙して失敗したか覚えていません。禁煙しようとして、ライターを家に置いてきて、その日に我慢できなくなって、ライターとタバコを買ってしまう、というパターンを何回も繰り返した結果、私の家にはライターが20個以上ありました。自分の事ながらびっくりです。
     まず、呼気中の一酸化炭素濃度と尿検査でニコチン濃度を計測しました。最後にタバコを吸ったのが二ヶ月前ですが、まだ両方の検査共、少量反応が。でも、「この値はノンスモーカーレベルです」ということ。実際に数字で結果が出てくると嬉しい。私はニコチン依存度が低いそうですが、ニコチン依存度が高い人はニコレットなどのガムやパッチを使って、依存度を低くしていくようです。また、希望すれば、病院の禁煙外来を紹介してくれるということです。
     あとは、職員の方から面談を受けました。なぜ禁煙したいか、禁煙して何が利点と感じているか、などを人に話すことによって、自分の考えが整理されてきました。一ヶ月毎に電話でカウンセリングを受け、3ヶ月後にまた面談を受ける予定。
     前回、禁煙に失敗したときの言い訳は「今は忙しい(とか、悩みがある)から禁煙は今度にしよう」でした。でも、忙しいとか、苦しい時に禁煙できれば、次に何があっても、禁煙できるのでは?と思うことにしました。
     あと、「一本くらい吸っても良いだろう」というのは甘い考えでした。一本からすっかり元に戻ってしまいます。
     ストレスもたまって無いし、体重も増えてないし、酒の席で勧められても断れるし、100%とは言い切れませんが…今回は成功しそうです。



    Flashのパラメータオプションについて

    金曜日, 7月 15th, 2005

    SWFの背景を透明にしたかったので、ついでにFlashのHTMLパラメータオプションについてメモ。

    背景を透明にするのは

    <param name="wmode" value="transparent"/>

    を付加。
    embedタグのプロパティにwmode="transparent"を追加。

    参考

  • Flash TechNote > パラメータオプション
  • Kei Laboratory - FAQ(よくある質問)
  • (more...)