2014年12月10日水曜日

日付_時刻のフォルダを作成してカレントディレクトリ内のファイルをバックアップするバッチファイル

日付_時刻のフォルダを作成してカレントディレクトリ内のファイルをバックアップするバッチファイル

@ECHO OFF

SET YYYYMMDD=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2%
SET HHMM=%TIME:~0,8%
set HHMM=%HHMM::=%
set HHMM=%HHMM: =0%

SET DIR_NAME=%YYYYMMDD%_%HHMM%

ECHO %DIR_NAME%
MKDIR %DIR_NAME%

COPY .\* %DIR_NAME%

PAUSE


2014年12月7日日曜日

YouTubeの動画をダウンロードするには

YouTubeの動画をダウンロードするには

 ① 以下のURLからRealPlayerをダウンロードします   

   http://jp.real.com/windows/

 



② ダウンロードしたRealPlayerCloud_ja.exeを実行します



③  「次のプログラムにこのコンピュータへの変更を許可しますか?」と聞かれたら「はい」



④ [同意する]をクリック


⑤ BaiduIME 日本語入力システムをインストールするか確認されるので
 チェックボックスを外す(インストールしない)


⑥ セットアップを選択するように聞かれても画面右上のXボタンで閉じる

⑦ 「PCライブラリへのメディアの追加」は「次へ」をクリックする


⑧ 「結果」が表示されたら「完了」をクリックする。


⑨ ここから先はインストールしたRealPlayerで動画を保存する方法です。
  [スタート]→[すべてのプログラム]→[RealNetworks]→[RealPlayer]でRealPlayerを起動します。
  勝手に動画ニュースが再生され始めるので動画の左下にある一時停止ボタンで止めます。
  (これをやっとかないと、YouTubeと同時にニュースも再生されるので邪魔)


⑩ 画面左上の[RealPlayer Cloud]のボタンをクリックして[ファイル]→[開く]をクリックします


⑪ [開く]の画面が表示されたら「youtube.com」と入力します。



⑫ RealPlayerの中でYouTubeが見れるので、お目当ての動画を表示して再生すると、
  動画の右上に「このビデオをダウンロード」というボタンが表示されるので、これをクリックする
  とPCに動画がダウンロードできます。


⑬ ちなみに次回以降RealPlayerを起動するとFaceBookにログインするように言われるけど、画面右上のXボタンで無視できます。




2014年11月28日金曜日

スネーク記法をキャメル記法に変換するExcelの関数

DBの仕様書をもとにクラスのメンバを定義するのはよくあること。 DBのカラム名はスネーク記法で定義されていて、クラスのメンバはキャメル記法な場合にExcelで一気にスネーク記法からキャメル記法に変換するのに使ってました。
Attribute VB_Name = "snake2Camel"
Option Explicit

Const DELIMITER_SNAKE = "_"
Const DELIMITER_CHAIN = "-"
Const DELIMITER_CAMEL = ""

'------------------------------------------------------------
' 文字列strをUpperCamel形式に変換して返す
'------------------------------------------------------------
Function UpperCamel(ByVal str As String)
    Dim delimiter As String
    Dim i As Integer    'loop index
    Dim tmp As String
       
    '変換前の記法を判定
    If InStr(str, DELIMITER_SNAKE) > 0 Then
        delimiter = DELIMITER_SNAKE
    ElseIf InStr(str, DELIMITER_CHAIN) > 0 Then
        delimiter = DELIMITER_CHAIN
    Else
        delimiter = DELIMITER_CAMEL
    End If
    
    If delimiter <> DELIMITER_CAMEL Then
        Dim tokens() As String
        tokens = Split(str, delimiter)
        For i = 0 To UBound(tokens)
            tokens(i) = UCase(Left(tokens(i), 1)) & LCase(Mid(tokens(i), 2))
        Next
        str = Join(tokens, "")
    Else
        str = UCase(Left(str, 1)) & LCase(Mid(str, 2))
    End If
    
    '最初の1文字と数字の次は大文字
    tmp = UCase(Left(str, 1))
    For i = 2 To Len(str)
        If InStr("0123456789", Mid(str, i - 1, 1)) > 1 Then
            tmp = tmp & UCase(Mid(str, i, 1))
        Else
            tmp = tmp & Mid(str, i, 1)
        End If
    Next
    UpperCamel = tmp

End Function

'------------------------------------------------------------
' 文字列strをlowerCamel形式に変換して返す
'------------------------------------------------------------
Function LowerCamel(ByVal str As String)
    Dim delimiter As String
    Dim i As Integer    'loop index
    Dim tmp As String
       
    '変換前の記法を判定
    If InStr(str, DELIMITER_SNAKE) > 0 Then
        delimiter = DELIMITER_SNAKE
    ElseIf InStr(str, DELIMITER_CHAIN) > 0 Then
        delimiter = DELIMITER_CHAIN
    Else
        delimiter = DELIMITER_CAMEL
    End If
    
    If delimiter <> DELIMITER_CAMEL Then
        Dim tokens() As String
        tokens = Split(str, delimiter)
        For i = 0 To UBound(tokens)
            tokens(i) = UCase(Left(tokens(i), 1)) & LCase(Mid(tokens(i), 2))
        Next
        str = Join(tokens, "")
    Else
        '小文字が一つも出現しない場合は1単語とみなして全て小文字化
        If Not isContainSmallCase(str) Then
            str = LCase(str)
        End If
    End If
    
    '最初の1文字は小文字、数字の次は大文字
    tmp = LCase(Left(str, 1))
    For i = 2 To Len(str)
        If InStr("0123456789", Mid(str, i - 1, 1)) > 1 Then
            tmp = tmp & UCase(Mid(str, i, 1))
        Else
            tmp = tmp & Mid(str, i, 1)
        End If
    Next
    LowerCamel = tmp

End Function

'------------------------------------------------------------
' 文字列strに小文字を含む場合はTRUEを返す
'------------------------------------------------------------
Function isContainSmallCase(ByVal str As String) As Boolean
    Dim i As Integer ' loop index
    Dim a As Integer ' ascii code
    isContainSmallCase = False
    For i = 1 To Len(str)
        a = Asc(Mid(str, i, 1))
        If a >= 97 And a <= 122 Then
            isContainSmallCase = True
        End If
    Next
End Function

2014年9月18日木曜日

Eclipse上のTomcatをデバッグで起動しようとしたらAGENT_ERROR_TRANSPORT_INIT

Eclipse上のTomcatをデバッグで起動しようとしたらコンソールにAGENT_ERROR_TRANSPORT_INITが表示されてデバッグ起動が失敗。

ATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport error 202: gethostbyname: unknown host ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:741]
サーバー、プロジェクトをクリーンしても起動できず・・・ Eclipseをクリーンしたところ起動できた。

cd /d %~dp0 start .\eclipse.exe -clean %*

2013年12月2日月曜日

iBatisでSQLのWHEREでINキーワードを使うには

iBatisでSQLのWHEREでINキーワードを使うには、parameterClassにListを使用する。 sqlMap
<select id="select-test" resultMap="MyTableResult" parameterClass="list">
select * from my_table where col_1 in
  <iterate open="(" close=")" conjunction=",">
   #[]#
  </iterate>
</select>
Java
List list = new ArrayList(3);
list.add("1");
list.add("2");
list.add("3");
List objs = sqlMapClient.queryForList("select-test",list);

2013年11月28日木曜日

Excelのセル内のテキストをもとにShapeを作り、グループ化するマクロ

Excelで作成したDBのテーブル定義書などをもとにER図をExcelのShapeを使って作成するのを補助するマクロです。 カラム名を選択した状態でこのマクロを実行すると、各セル単位でShapeを作成し、グループ化します。 ER図作成時にコネクタを任意のカラムに結合したのに、レイアウトの都合からShapeを移動するとコネクタの位置がずれるので作成しました。
Sub CellTextToShape()
'
' ER図作成補助 Macro
' 選択された範囲の文字列をテキストとするShapeを作成する
'
' Keyboard Shortcut: Ctrl+q
'
    Set xColumns = New Collection

    '外枠
    px = Selection.Left - 5
    py = Selection.Top - 5
    pw = Selection(1).Width + 10
    ph = Selection(1).Height * Selection.Count + 10
    Dim xParent As Shape
    Set xParent = ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, Left:=px, Top:=py, Width:=pw, Height:=ph)
    xParent.Line.ForeColor.RGB = RGB(0, 0, 0)
    xParent.Fill.ForeColor.RGB = RGB(255, 255, 255)
    xColumns.Add xParent
    
    '中身
    For i = Selection(1).Row To Selection(Selection.Count).Row
        nCol = Selection(1).Column
        nRow = Selection(1).Row
        x = Cells(i, nCol).Left
        y = Cells(i, nCol).Top
        w = Cells(i, nCol).Width
        h = Cells(i, nCol).Height
        txt = Cells(i, nCol).Value
        s = Cells(i, nCol).Font.Size
        Dim xShape As Shape
        Set xShape = ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, Left:=x, Top:=y, Width:=w, Height:=h)
        xShape.TextFrame.Characters.Text = txt
        xShape.TextFrame.Characters.Font.Color = vbBlack
        xShape.TextFrame.Characters.Font.Size = s
        xShape.TextFrame.HorizontalAlignment = xlHAlignLeft
        xShape.TextFrame.MarginBottom = 0
        xShape.TextFrame.MarginTop = 0
        xShape.Fill.Visible = False
        xShape.Line.Visible = False
        xShape.Name = txt

        xColumns.Add xShape
        
        Debug.Print (txt & vbTab & w & vbTab & h)
        'ActiveSheet.Shapes(txt).TextFrame.Characters.Text = txt
    Next
    
    For Each xShape In xColumns
        xShape.Select Replace:=False
    Next
    Selection.Group
    
End Sub