smartyでarray()の要素をcsvっぽく出力する方法
array()の要素をsmartyを使ってcsv形式で出力しようとして、
どうすればいいかと思ってちょっと調べてみた。
やりたい内容としては、各要素をカンマで区切って最後の要素には改行を付与する。
とすると、↓のような感じになった。
{section name=index loop=$itemList} {if $smarty.section.loop.last eq false}{$itemList[index]}, {else}{$itemList[index]}{"\r\n"} {/if} {/section}
2行目の「$smarty.section.loop.last eq false」で、
最後の要素でない場合にカンマを付与。
最後の要素である場合に改行を付与。改行は見ての通り{"\r\n"}
Linuxサーバ上のPHPUnitのメモリ枯渇
評価環境(Linuxサーバ)でPHPUnitを使った自動テストをしていて、
PHPUnitのテストがメモリ不足で失敗してしまう現象が起きた。
サーバのメモリが1GBなのに対し、PHPUnitがメモリを500MB以上も使用していて
これ以上PHPUnitにメモリを割けない状態。
※開発環境(Windows)のPHPUnitでは60MB強
根本的な対処が必要になったので、原因を調べたら(自分で調べた訳ではないけど。。)
$GLOBALSのバックアップとレストアでメモリを喰っていたもよう。
↓のオプションを指定することで問題は解消した。
--no-globals-backup
このオプションを設定することで、テスト毎の$GLOBALSのバックアップとレストアをしなくなり、
メモリ使用量が70MB弱まで下がった。
その代わり、$GLOBALSがテスト毎に初期化されないため
テストの作り方に注意が必要だったりする。
【scala備忘録】リストのメソッド
最近scalaを勉強し始めた。
忘れやすい自分のために、基本的なリストのメソッドを書いておく。
scala> var list = List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)
- head リストの先頭の要素を求める
scala> list.head
res0: Int = 1
- tail リストの先頭要素を取り除いたリストを求める
scala> list.tail
res1: List[Int] = List(2, 3, 4)
- :: or +: リストの先頭に要素を付け加えたリストを求める
scala> 5::list
res2: List[Int] = List(5, 1, 2, 3, 4)scala> 5+:list
res3: List[Int] = List(5, 1, 2, 3, 4)
- length or size リストの長さを求める
scala> list.length
res4: Int = 4scala> list.size
res5: Int = 4
- isEmpty 空リストであるか調べる
scala> list.isEmpty
res6: Boolean = false
- == リストを比較する
scala> list == List(1,2,3,4)
res7: Boolean = true
- last リストの最後の要素を求める
scala> list.last
res8: Int = 4
- init リストの最後の要素を除いたリストを求める
scala> list.init
res9: List[Int] = List(1, 2, 3)
- :+ リストの最後に要素を付け加えたリストを求める
scala> list:+5
res10: List[Int] = List(1, 2, 3, 4, 5)
- apply(n) or (n) n番目の要素を求める
scala> list.apply(3)
res11: Int = 4scala> list(3)
res12: Int = 4
- take(n) リストの先頭からn個の要素からなるリストを求める
scala> list.take(2)
res13: List[Int] = List(1, 2)
- takeRight(n) リストの最後からn個の要素からなるリストを求める
scala> list.takeRight(2)
res14: List[Int] = List(3, 4)
- drop(n) リストの先頭からn個の要素を除いたリストを求める
- dropRight(n) リストの最後からn個の要素を除いたリストを求める
scala> list.dropRight(2)
res16: List[Int] = List(1, 2)
- contains(x) xがリストの要素に含まれているか調べる
scala> list.contains(1)
res17: Boolean = truescala> list.contains(10)
res18: Boolean = false
- ::: リストの連結
scala> list:::list
res19: List[Int] = List(1, 2, 3, 4, 1, 2, 3, 4)
- reverse 逆順のリストを求める
scala> list.reverse
res20: List[Int] = List(4, 3, 2, 1)
- sorted 昇順にしたリストを求める
scala> list.sorted
res21: List[Int] = List(1, 2, 3, 4)
逆順の場合
scala> list.sorted(Ordering[Int].reverse)
res22: List[Int] = List(4, 3, 2, 1)
- sum 全要素の和を求める
scala> list.sum
res23: Int = 10
- max 全要素の積を求める
scala> list.product
res24: Int = 24
- min 全要素の最大値を求める
scala> list.max
res25: Int = 4
- min 全要素の最小値を求める
scala> list.min
res26: Int = 1
JMeterをバッチファイルから自動で実行する方法
いつもJMeterを使って計測している試験を、
タスクスケジューラで勝手にやってくれるようにしてみる。
週末中に自動でテストが動いて、
週明けに先週時点での試験結果がわかってしまう、
そんな感じ。
まずJMeterの試験をするために必要なステップはこんな感じ↓
JMeterのテスト計画は作成済みなので
この時点で引っかかるところが、JMeterのコマンドラインからの実行。
調べてみるとJMeterにはnon-guiモードがあるとか。
これでコマンドラインからの実行ができそう。ちなみに↓のような感じ。
java.exe -jar ApacheJMeter.jar -n -t テスト計画.jmx
java.exe -jar ApacheJMeter.jar -n -t テスト計画.jmx -l 動作ログ
こんな感じでバッチファイルを作成して、タスクスケジューラに登録する。
That's all.
TortoiseSVNのexportをコマンドラインから実行して自動化する方法
Subversionで管理しているソースを
定期的にソースコードチェックしていてもっと簡単にできないかと、
バッチを作って自動化しようとちょっと考えてみた。
まずソースコードチェックをするために必要なステップはこんな感じ↓
- チェックするソースコードをエクスポート
- エクスポートしたソースをzip
- zipしたファイルを所定のストレージ領域へ配置
- zipのパスをチェックタスクのリストに追記
- メールを送付
まず最初の課題はTortoiseSVNをGUIからではなくて、
コマンドラインからexportすること。
調べてみると、TortoiseSVNでもコマンドラインから実行できるらしい。
↓のような感じ。
TortoiseProc.exe /command:export /url:"エクスポート元リポジトリURL" /path:"エクスポート先パス" /closeonend:1
/command:〜の部分で実行するコマンドを指定(ここではexport)
/url:〜でエクスポートしたいリポジトリのURL
/path:〜でエクスポートしたものを配置するパス
少し癖がある点としては、コマンドラインから実行してもexport画面と進行ダイアログが表示されること。
進行ダイアログは、
/closeonend:〜を指定することで自動で閉じる設定が可能。
/closeonendの設定値と動作は↓のような感じ。
- /closeonend:0 自動でダイアログを閉じません。
- /closeonend:1 エラーがなければ自動で閉じます。
- /closeonend:2 エラーや競合がなければ自動で閉じます。
- /closeonend:3 エラー、競合、マージがなければ自動で閉じます。
- /closeonend:4 エラー、競合、マージが手元の操作で起きなければ自動で閉じます。
もうひとつの難点は、export画面のリポジトリURLが
/urlで指定した値がうまく入らないこと。
入らないというか空欄になる訳ではなくて、
URLは入っているけど直近でアクセスしたリポジトリURLが入っているように見える。
それと致命的なのが、コマンドラインから実行してもexport画面のOKボタンを押さないとexport処理が走らないこと。。
なんとかできないかと調べてみたけど、未解消。
半自動化な状態。
とりあえず最初のステップはこのくらいに