技術ブログを書いたほうがいいということで書き綴ってみた

技術ブログを書いたほうがいいということで書き綴ってみた

CommonsMultipartFile を newする方法

File ff = new File("aaa.csv");
String fileName = ff.getName();
MimetypesFileTypeMap map = new MimetypesFileTypeMap();
String contentType = map.getContentType( ff );
DiskFileItemFactory factory = new DiskFileItemFactory();
FileItem fi = factory.createItem( "file", contentType, false, fileName );
InputStream input =  new FileInputStream( ff );
OutputStream output = fi.getOutputStream();
IOUtils.copy( input, output );
IOUtils.closeQuietly( input );
IOUtils.closeQuietly( output );
CommonsMultipartFile cf = new CommonsMultipartFile( fi );

詳しくは、以下参照

http://seakleng.blogspot.jp/2013/12/how-to-create-string.html

eclipseに関してのメモ書き

メモリ不足で落ちる、固まる場合は、起動メモリを変更してみる。

eclipse.exeがあるフォルダの中のeclipse.ini

-vmargs
-Xms40m
-Xmx384m

ソースコード作成効率化

・「一般」-「エディター」-「テキスト・エディター」
 「タブでスペースを挿入」をON
 「行番号の表示」をON
 「空白文字の表示」をON
・「一般」-「エディター」-「構造化テキスト・エディター」
 「折りたたみを使用する」をOFF
・「Java」-「コード・スタイル」-「フォーマッター」
・カスタムプロファイル
 インデント タブ・ポリシー 「スペースのみ」
 行折り返し 行の最大幅 100

設定は、以下の手順でエクスポートしておきましょう。

・「ファイル」-「エクスポート」-「設定」

javaで正規表現を書くときにエスケープする文字

正規表現を書くときには、以下の文字列は、エスケープしましょう。

  • エスケープが必要な文字
 ¥ * + . ? { } ( ) [ ] ^ $ - |

    ※エスケープするときは、「\」が2つ

  • 数字と英字以外NG
Pattern.compile("^[0-9a-zA-Z]");
  • いろいろな記号および数字と英字以外NG
Pattern.compile("^[0-9a-zA-Z\\\\\\*\\+\\.\\?\\{\\}\\(\\)\\[\\]\\^\\$\\-\\|]");

svnから取得したソースを固める途中で挫折

#!/bin/bash

rm -rf tmp

ELEMENT_FILE_NAME=element.txt
TAR_FILE_NAME=aaa.tar.gz

arys=`cat $ELEMENT_FILE_NAME | grep ^u | cut -d ',' -f 2`
aryt=`cat $ELEMENT_FILE_NAME | grep ^u | cut -d ',' -f 3`
aryo=`cat $ELEMENT_FILE_NAME | grep ^u | cut -d ',' -f 4`
arym=`cat $ELEMENT_FILE_NAME | grep ^u | cut -d ',' -f 5`
i=0
for item in ${aryt[@]}; do
    echo mkdir -p "tmp/${item%/*}"
    echo svn export "${arys[$i]}" "tmp/${item%/*}"
    let i++
done

chown -R 644 tmp
chmod -R root:root tmp

i=0
for item in ${arym[@]}; do
    echo chmod "${item}" "${aryt[$i]}"
    let i++
done

tar cvfp $TAR_FILE_NAME tmp

echo `md5sum $TAR_FILE_NAME`

sed -e "s/@@version@@/1.2.1/g" ./template.txt |\
sed -e "s/@@name@@/puroduct/g" > version.txt

テキストファイルを読み込んでsvn実行

svn,http://192.168.40.20/svn,,,,
server,/var/log/,,,,
target,svnpath,installpath,owner,gowner,mod
u,http://192.168.40.20/svn/module/aaa/ccc,/var/log/httpd/access_log,root,644
u,http://192.168.40.20/svn/module/aaa/ccc,/var/log/audit/audit.log,root,644
u,http://192.168.40.20/svn/module/aaa/bbb,/var/log/httpd/error_log,root,644

Excelからバッチファイルを引数つきで起動

Hyperlink関数ではだめだった

Hyperlink関数でやろうとしたが、 セルに記載された引数を使っての引数渡しでのバッチ起動ができなかったので、結局、マクロでやった。

マクロからShell関数でできる

Sub Execute()
Dim cmd As String
cmd = "C:\Windows\notepad.exe c:\memo.txt"
Shell cmd
End Sub

これでmemo.txtがメモ帳で開くことができます。

今度は、 引数をマクロに渡します。

Sub Execute(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String)
Dim cmd As String
cmd = "C:\sample.bat "
cmd = cmd & "c:memo.txt "
cmd = cmd & " " & param1
cmd = cmd & " " & param2
cmd = cmd & " " & param3
Shell cmd
End Sub

ダブルクリックした場所の相対位置は、Offsetで取得できる

今度は、セルに入力された情報を引数にして、マクロを実行します。 4行目より下で4列目をダブルクリックするとマクロが引数付きで実行されます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not (Target.Row >= 4 And Target.Column = 4) Then Exit Sub
  Execute Target.Offset(0, -3).Value, Target.Offset(0, -2).Value, Target.Offset(0, -1).Value
End Sub

1列目と2列目と3列目が引数として渡されます。

これを応用すれば、いろんなことがExcelでできる!!!