仕様書を書くにあたって注意しているポイント5つ。
①見出し、目次 ②概要→詳細(全体と部分) ③目的・背景を明確に ④文章は短く簡潔に。文字よりも図表 ⑤関連するものは、近くに。関連するものは、同じ色にするなど、 視覚的にわかりやすいように。
単語ごとの出現回数を出現順に表示するには、HashMapとArrayListが必要か
単語ごとの出現回数をカウントするのは、HashMapでやってみた。 Integerのコストは高い?
出現順に表示するために出現順は、ArrayListでキー管理した。 これがベストの方法なのかどうかわからなかったが、 今知っている限りのベストだと思う。
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); String token[] = line.split(" "); HashMapmap = new HashMap (); ArrayList list = new ArrayList(); for(String key: token){ if(!list.contains(key))list.add(key); if(map.get(key) == null ){ map.put(key,new Integer(1)); }else{ map.put(key,new Integer((int)map.get(key)+1)); } } for (int i = 0; i < list.size(); i++) { StringBuffer a = new StringBuffer(); a.append(list.get(i)); a.append(" "); a.append(map.get(list.get(i))); System.out.println(a); } } }
findコマンドの便利なもの備忘録
●検索したものをmd5sumして、ファイル名でソート
find /tmp -type f -exec md5sum {} \;| grep svn | sort -k 2 # 確認しながらやる場合 find /tmp -type f -ok md5sum {} \;| grep svn | sort -k 2
●最近使ったファイル
# 1日前 find /tmp -type f -mtime -1 # 7分前 find /tmp -type f -mmin -7
●svnディレクトリをすべて削除
find /var/www/htdocs/ -type d -name ".svn" -exec rm -rf {} \;
●日付の古い大きなサイズのファイル
find . -mtime +10 -size +1G -exec ls -lh {} \; find . -mtime +30 -size +1M -exec ls -lh {} \;
●指定したファイルより新しいファイル
find /tmp -type f -newer sample.txt
●svn管理フォルダを削除
find /var/www/htdocs/ -type d -name ".svn" -exec rm -rf {} \;
バッチ処理でループさせる方法
10回ループの例。%が2つなのがミソ
<test.bat>
@echo off FOR /L %%i IN (1,1,10) DO ( ECHO %%i )
Time::HiResモジュールがないというコンパイルエラーが発生した際の対処方法
Time::HiResモジュールがないというコンパイルエラーが発生した際の対処方法
# perl -c test.pl
でコンパイルエラー発生
Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at test.pl line 4.
そんなときは、以下で解決
yum install perl-Time-HiRes
================================================================================ Package Arch Version Repository Size ================================================================================ Installing: perl-Time-HiRes x86_64 4:1.9721-141.el6 base 49 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 49 k Installed size: 56 k Downloading Packages: perl-Time-HiRes-1.9721-141.el6.x86_64.rpm | 49 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : 4:perl-Time-HiRes-1.9721-141.el6.x86_64 1/1 Verifying : 4:perl-Time-HiRes-1.9721-141.el6.x86_64 1/1 Installed: perl-Time-HiRes.x86_64 4:1.9721-141.el6 Complete!
これで、usleepが使えて、処理時間の計測ができる。 サンプルコードは、以下。
use strict; use Time::HiRes qw/ usleep /; my $microseconds = 5000; my $start_time = Time::HiRes::time; usleep ( $microseconds ); printf "%0.3fus\n",Time::HiRes::time - $start_time ;
実行結果は、 0.007us
っん?そんなにusleepは正確じゃないんだね。
log4jで出力した出力結果をjunitでテストする
@Test public void test() { StringWriter writer = new StringWriter(); WriterAppender appender = new WriterAppender(new PatternLayout("%p, %m%n"),writer); LogManager.getRootLogger().addAppender(appender); LogManager.getRootLogger().setAdditivity(false); try{ /** 何かしらのログを出力する処理 */ /** エラーログのテスト */ String logString = writer.toString(); assertThat(logString, containsString(" 確認したいログメッセージ ")); }finally{ LogManager.getRootLogger().removeAppender(appender); LogManager.getRootLogger().setAdditivity(true); } }