ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

いじめられた生徒の被害画像の動画とか、まとめサイトとか

2006-11-09 19:51:05 | Weblog

 たしか、韓国で、先生に殴られている様子をYOU TUBEにアップしたという話があったと思うけど、日本でも、いじめられた生徒の被害画像がYou Tubeにアップされていて、話題になっているそうですね。

ここのニュース
<いじめ>生徒の被害画像がネットに 札幌の高校に抗議殺到
http://headlines.yahoo.co.jp/hl?a=20061109-00000054-mai-soci


で、そのYou Tubeにアップされている動画はこちら
http://www.youtube.com/watch?v=1yfG9Zna80U
http://www.youtube.com/watch?v=JAbo_2Yq7Hc
(どちらも、すぐに始まって音が出るので注意)

まとめサイトは、

こちら http://www22.atwiki.jp/hakuryouwwwww/

 たしかに、自殺者が出ても、学校は認めない昨今、やっぱりYou Tubeにいじめられてる様子をアップして、公開するしか、道はないのかもしれない。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaのメール送受信-JavaMailその2(送信について)。

2006-11-09 16:31:30 | JavaとWeb

 シリーズJavaのメール送受信のつづきです。

 前回はインストールして、送受信サンプルを実行してみたので、

 今日は、送信するための手順について、JavaMailのDemoに入っているmsgsendsample.javasendfile.javaを参考にして、書いてみたいと思います。

 なお、下記の内容は、それらのファイルを読んで、わかったことを書いているだけです。




■手順(英文を送信する場合)
1.セッションの作成
 1-1.プロパティを生成し、SMTPサーバセット
 1-2.セッションを生成して、デバッグの設定をする
 
2.メッセージの作成
 2-1.メッセージ(MimeMessage)を作成して、From,Toを設定
 2-2.レシピエント(Recipients)を設定する
 2-3.表題を設定する
 2-4.送信日時を設定する
 2-5.文面を設定する

 
3.メッセージを送信する
 3-1.送信する

 
なお、上記2、3については、例外(MessagingException)をスローする場合がある。




■添付ファイルがある場合
 上記「2-5.文面を設定する」が、以下のように変わる

2-5.内容(Content)を設定する
 2-5-1.文面のパートを設定する
  2-5-1-1.ボディ部(MimeBodyPart)を生成する
  2-5-1-2.ボディ部に、テキストをセットする

 2-5-2.文面に添付ファイルを設定する
  2-5-2-1.ボディ部(MimeBodyPart)を生成する
  2-5-2-2.ファイルのデータソースを生成
  2-5-2-3.データソースからハンドラを生成し、それをボディ部に設定
  2-5-2-4.ファイル名を設定
 
 2-5-3.マルチパートにして、内容をメッセージに設定する
  2-5-3-1.マルチパートを生成する
  2-5-3-2.それに、2-5-1,2-5-2のボディ部を設定する
  2-5-3-3.マルチパートをメッセージに設定する



 なお、上記とJavaMailのデモでついてくるソースmsgsendsample.javaおよびsendfile.javaの対応に関しては、ここに書いておきました
(というか、そこの内容をこのブログにしようとしたのですが、うまくいかなかったんで。。 ^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWで複数画面を開発する場合の方法論(その16:Excelで自動生成-その2:第一弾仕様)

2006-11-09 14:27:10 | ケータイ

 シリーズBREWで複数画面を開発する場合の方法論のつづきです。

 現在、Excelの仕様書に必要な事項を記入すると、BREWで必要なファイル(各画面ソースとアプリのファイル)を自動生成するというお話をやっています。
 そして、その第一弾として、画面ソースをスタブ(ダミーの関数。処理は書いていない)でやるというケースについて、考えてます
(第二段では、部品をちゃんと入れます)


 そして、具体的なやり方として、シリーズ仕様書からプログラムソースを生成する方法で、一般論として展開してきました。
 その内容も、前回で、第一弾の自動生成ができるところまできたので、今日は、その内容をまとめてみたいと思います。




■インストール
 以下のファイルを1つのフォルダの中に入れてください。
 ●雛形ファイル
    アプリ用ソースファイル(app_c.txt)
    アプリ用ヘッダファイル(app_h.txt)
    画面用ソースファイル(gamen_c.txt)
    画面用ヘッダファイル(gamen_h.txt)
    バージョンファイル(version_h.txt)
 (リンク先のファイルを括弧内のファイル名で保存して、フォルダに入れてください)

 ●Excel仕様書
    いままで仕様書からプログラムソースを生成する方法で作ったExcel仕様書

 なお、生成したBREWのファイルは、このフォルダの中にできます。

 Excel仕様書については、第二段が終わった時点で公開予定ですが、
 すでに書いた、以下の話をもとに、作成することができます。
   画面一覧と、各画面のシートは、ここ
   このほかに、「作業一覧」というシート名で、何も書かないシートを用意します
   画面一覧の「ドキュメント作成」ボタンをマクロ登録、shiyoToFileを呼出すようにします

   マクロ部分は、「ユーザー作成部分」と「標準処理」の2つを作ります。
      2種類を作る方法は、ここの「■前処理、後処理」
      ユーザー作成部分のソースはここ。これを貼る
      標準処理のマクロは最後に載せておきます。




■手順
・「画面一覧」シートに、アプリ名、初期画面を入れてください
 また、画面数分、
 番号、画面名(小文字で)日本語画面名、ID(数字で999までOK)を入れます。
 その際、A桁に必ず番号を振ってください。
 (ここに番号が振られていないと、そこで処理を終了します)

・画面数分、「画面定義」シートを作成し(名前は何でもいいですが、日本語画面名にすると
 わかりやすいです)、その各シートにおいて
 アプリ名、画面名、日本語画面名、画面IDを書いてください
 部品一覧は、今回は使わないので、書かなくていいです。

・そしたら、画面一覧の「ドキュメント作成」ボタンを押してください。
 そのフォルダに、出力ファイルができているはず?です。
 
なお、シートの記入例は、ここにあります。
      



■付録:「標準処理」のマクロ

 上述した、標準処理のマクロは、こんな感じになります。

'//*************************************************//
'//                                                 //
'//                標準処理                         //
'//                                                 //
'//*************************************************//

'//=========================//
'//     共通変数宣言        //
'//=========================//
Public outdata As String           '// 出力内容
Public lpstr_pos As Integer        '//  繰り返しソース開始点
Public lpgyo As Integer            '//  繰り返しデータ、今何行目?

    '//    作業一覧シート用
Public Const sagyo_shname As String = "作業一覧"    '//シート名
Public Const sagyo_str_gyo As Integer = 5           '// 繰り返し開始行
Public Const sagyo_hina_keta As String = "A"        '// 雛形の桁
Public Const sagyo_sh_keta As String = "B"          '// シートの桁
Public Const sagyo_out_keta As String = "C"         '// 出力の桁

'//=========================//
'//  ボタンが押されたとき   //
'//=========================//
Sub shiyoToFile()
    Dim gyo As Integer
    Dim hina_name As String
    Dim sh_name As String
    Dim out_name As String
    
            '//================================//
            '//  開始時の前処理(固有処理)    //
            '//================================//
    Call initAppData
    
            '//================================//
            '//作業一覧に基づき出力(共通処理)//
            '//================================//
    gyo = sagyo_str_gyo
    Do While Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo)) <> ""
        
        hina_name = Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo))
        sh_name = Sheets(sagyo_shname).Range(sagyo_sh_keta & CStr(gyo))
        out_name = Sheets(sagyo_shname).Range(sagyo_out_keta & CStr(gyo))
        Call makefile(hina_name, sh_name, out_name)
        
        gyo = gyo + 1
    Loop
    
            '//================================//
            '//  終了時の後処理(固有処理)    //
            '//================================//
    Call freeAppData
    
    MsgBox "終わりました"

End Sub

'//=========================//
'//  出力ファイル作成     //
'//=========================//
Sub makefile(infname As String, shname As String, outfname As String)

            '//=========================//
            '//     雛形を読み込む      //
            '//=========================//
    Open infname For Binary Access Read As #1
    fsize = FileLen(infname)
    Seek #1, 1
    indata = Input(fsize, #1)
    Close #1

            '//=========================//
            '//     書き出し内容作成    //
            '//=========================//
    str_pos = 1         '   開始ポイント
    outdata = ""
    tag_pos = InStr(str_pos, indata, "$#$")
    
    Do While (tag_pos > 0)
                        '直前まで書き出し
        outdata = outdata & Mid(indata, str_pos, tag_pos - str_pos)
                        
                        '制御内容終わりを探す
        end_pos = InStr(tag_pos + 3, indata, "$#$")
        If (end_pos = 0) Then
            str_pos = tag_pos + 3
            Exit Do
        End If
        
                        '制御内容コピー
        tag_data = Mid(indata, tag_pos, end_pos - tag_pos + 3)
        
                        '  制御内容ごとに処理
        str_pos = chgTagToStr(Replace(tag_data, "$#$", ""), end_pos + 3, shname)
        
        
            '   次のタグ位置を探す
        tag_pos = InStr(str_pos, indata, "$#$")
    Loop
            
            '   最後の残りを書き出し
    outdata = outdata & Mid(indata, str_pos)

            
            '//=========================//
            '//     作成データ書き出し  //
            '//=========================//
    If (Dir(outfname) <> "") Then
        Kill outfname       '   ファイルがあったら、削除しておく
    End If
    
    Open outfname For Binary Access Write As #1
    fsize = FileLen(outfname)
    Put #1, 1, outdata
    Close #1

End Sub

'//=========================//
'// タグを処理する      //
'//=========================//
Function chgTagToStr(tag As String, next_str_pos As Integer, shname As String) As Integer
    
    If (Mid(tag, 1, 6) = "REPEND") Then
        lpgyo = lpgyo + 1
        cellpos = Replace(Mid(tag, 7), " ", "") & CStr(lpgyo)
        celldata = Sheets(shname).Range(cellpos)
        If (celldata = "") Then
            chgTagToStr = next_str_pos
        Else
            chgTagToStr = lpstr_pos
        End If
        Exit Function
    End If
    
    If (Mid(tag, 1, 3) = "REP") Then
        lpstr_pos = next_str_pos
        lpgyo = CInt(Replace(Mid(tag, 4), " ", ""))
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 4) = "CELL") Then
        cellpos = Replace(Mid(tag, 5), " ", "")
        celldata = Sheets(shname).Range(cellpos)
        outdata = outdata & celldata
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 4) = "KETA") Then
        cellpos = Replace(Mid(tag, 5), " ", "") & CStr(lpgyo)
        celldata = Sheets(shname).Range(cellpos)
        outdata = outdata & celldata
        chgTagToStr = next_str_pos
        Exit Function
    End If

    chgTagToStr = next_str_pos

End Function

(上記 < > = は、本当は半角)

なので、上記の枠内のソースに対して、<、>、=を、それぞれ半角に置換して、
それを仕様書のマクロの「標準処理」にはり込んでください。
結果として、Excel仕様書の構成は

シート
  画面一覧シート
  画面シート
   :
   :
  (画面数分)
  作業一覧  :シートがあれば、空白でよい(どっちみち、クリアするから)。

マクロ
   ユーザー作成部分
   標準処理

となります。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする