commonsで文字列内の文字をカウント

メモです。
文字をカウントするユーティリティがないかと探したらあった。

http://www.jajakarta.org/commons/lang-1.0.1/ja/withoutPrimary/org/apache/commons/lang/CharSetUtils.html#count(java.lang.String,%20java.lang.String)

package sandbox;

import junit.framework.TestCase;

import org.apache.commons.lang.CharSetUtils;

public class CharSetUtilsTest extends TestCase {

public void test改行を数えます() throws Exception {
String str1 = "開業改行\n改行";
System.out.println(str1);
assertEquals(CharSetUtils.count(str1,"\n"),1);
}

public void test改行を数えます2() throws Exception {
String str2 = "開業改行\n\n\r改行";
assertEquals(CharSetUtils.count(str2,"\n\r"),1);
}
}

ただ上記だとtest改行を数えます2がエラー

junit.framework.AssertionFailedError: expected:<3> but was:<1>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:282)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:201)
at junit.framework.Assert.assertEquals(Assert.java:207)
at sandbox.CharSetUtilsTest.test改行を数えます2(CharSetUtilsTest.java:32)

ん〜。どうやら\nと\rが文字列の中に何個あるかを数えてるな。
\n\rを一つの文字列としてカウントしてくれないかな?

(移設)

業界本は色んな物が出ていて何を買ったらいいかまったくわからなかったが、どうやらこれがかなりの指針になるみたい。
「Annual Jolt Product Excellence and Productive Awards」
http://www.sdmagazine.com/jolts/

うーん。英語が弱い自分にはよく分からん。ってことで簡単な紹介がしてある日本語のサイト
http://www.ilog.co.jp/corporate/jolted.cfm

というわけで関連して熱い本はこんな感じ。
達人プログラマー―ソフトウェア開発に不可欠な基礎知識
http://www.amazon.co.jp/exec/obidos/ASIN/475614599X/qid=1112069087/sr=8-1/ref=sr_8_xs_ap_i1_xgl/250-7908174-1677044

コードコンプリート―完全なプログラミングを目指して (上)
http://www.amazon.co.jp/exec/obidos/ASIN/489100455X/qid=1112069723/sr=1-4/ref=sr_1_10_4/250-7908174-1677044

コードコンプリート―完全なプログラミングを目指して (下)
http://www.amazon.co.jp/exec/obidos/ASIN/4891004568/qid=1112069723/sr=1-3/ref=sr_1_10_3/250-7908174-1677044


その他、新人教育で使うために紹介してもらった本
センス・オブ・プログラミング!―抽象的に考えること・データ構造を理解すること
http://www.amazon.co.jp/exec/obidos/ASIN/4774121738/qid=1112069331/sr=1-2/ref=sr_1_10_2/250-7908174-1677044

Javaプログラムデザイン
http://www.amazon.co.jp/exec/obidos/ASIN/4797319232/qid=1112095158/sr=1-9/ref=sr_1_10_9/250-7908174-1677044

(移設)買ってしまいました。

「会社にお金が残らない本当の理由」
http://www.amazon.co.jp/exec/obidos/ASIN/4894511576/249-2193271-7526748

書店で見つけたのではなく、デプロイ中ある人の机の上に置いてあるのを勝手に拝借し、はまってしまいました。ついついデプロイが終わっているのに読み続けてました。あい、すみません。
決算書の本や経営の小難しい本より直感的でわかりやすいので、すぐにはまってしまいました。

ということで、レビューも含めてメモメモ。
ブログって良いかも。人が見てると思うとメモも真剣に書く気になりますね。

'''収入:「ビジネスを拡大する方法」'''
1、お客を増やす
2、お客一人について平均の販売数量(販売単価)を増やす
3、お客様が再来して購入する回数を増やす
以上の3つを10%ずつあげると33%収入は増えるっと書いてありました。あー確かに。
なんとなくわかってはいるけど、普段忘れるんですよ。普段は技術者ですから。
でも、ちょっと違う方向で目の前が開けた気がしました。というのは、評価や査定の基準に使えるなって。

現状会社の査定や評価が何でなされてるかわかりにくいんです。基本派遣業なので、出向先での技術者の様子はあんまりわからないんです。で色々と査定方法の見直しもされてるけど、どうもわかりにくい。ってことでこの3つで良いじゃん。劉邦っぽくてわかりやすい。

技術者は1のお客を増やすってのは、やるにはやるけど大半は営業さんにお任せして、1はスキルを増やすに変えて、2は単価を上げる、3は名指しのリピート回数を増やす、リピートはそこに出向できなくてもあった時点で評価をする。こうすると技術者も評価を上げるために自分のやることがわかりやすいと思うな。もちろん教育とか社内的な仕事も評価するけど、社内仕事やる人分離した方がいいな。

'''支出:経費の20%をコントロールする'''
経費の20%をコントロールすれば残りの80%に影響がでるとのこと。
20%は何か、変動費と人件費、利息、家賃、リース料、税金、保険料。
うお。わかんねー。現状どれくらいかかってんだろう?この辺知りたいな。

'''借入:リスクのない借入をする'''
当たるとわかっているルーレットがあるときに、借り入れろって書いてある。つまり儲かるとわかっているビジネスがある時に借り入れろってことらしい。あらためて言われると納得だな。

'''税制:本当のかっぱらいは社会保険料'''
これについては、この本では書けないとありました。それほど矛盾だらけの法律のようです。これについては別途調べてみよっと。

'''決算書:税金を払う為の数字'''
決算書の利益と法人税がかかってくる利益とは別だと書いてあります。ただ会計士がめんどくさいので決算書の利益を税金を払う為の数字と同じにしようとしていると書いています。なので納税用の決算書を別に作るべきだとあります。


まだまだ本は続きます。ただまだ読んでないんです。w ということでひとまずここまで。

(移設)人生の100のリスト

プレジデントで、人生の100のリストを紹介していた。
全然思いつかない。というわけでブログを利用して思いついたら書き残すことに決めてみた。

叙々苑へ行く。
アパートを経営する。
南国に住む。
海の中に住む。
潜水艦に乗る。
犬を飼う。
ゴルフで72以下を出す。
カープ島へ行く。
親に世界一周をプレゼントする。
会社を作る。
寿司屋を経営する。
赤壁五丈原九寨溝黄龍など中国を旅行する。

(移設)人生の100のリスト2

ペリト・モレノ氷河いきたい
1億貯金
100個メガネ集める
カープの日本一の試合を観戦する

人生の100のリスト
http://www.amazon.co.jp/exec/obidos/ASIN/4062122707/249-8909777-8057125

自分の過去の人生の100のリスト
http://blogs.yahoo.co.jp/claudiojavierlopez19740717/150958.html

(移設) GroovyでXML

わけあってGroovyでXMLをパースすることになったのでお勉強。
以下のXMLとGroovyファイルを同じディレクトリに置いて以下コマンド実行

>Groovy XmlTest sample-config.xml

パースするXML
sample-config.xml




my.yahoo.co.jp
My Yahoo
20
seitaro
password


mail.yahoo.co.jp
Mail Yahoo
30
seitaro
password

パースする為のコード
XmlTest.groovy

import groovy.util.XmlParser

class XmlTest {
static void main(args){
println args
taskPerser = new TaskXmlParser()
tasks = taskPerser.parse(args[0])
tasks.show()
}
}

class TaskXmlParser {

Tasks parse(xml) {
tasks = new Tasks()
xmlTree = new XmlParser().parse(xml)
xmlTree.Task.each { |Task|
taskData = new TaskData()
taskData.taskId = Task['@id']
taskData.url = Task.Url[0].text()
taskData.urlType = Task.Url['@type'][0]
taskData.serviceName = Task.ServiceName[0].text()
taskData.reroad = Task.Reroad[0].text()
taskData.reroadTime = Task.Reroad['@time'][0]
taskData.user = Task.User[0].text()
taskData.pass = Task.Pass[0].text()
tasks.addTask(taskData)
}
tasks
}
}

class TaskData {
taskId
url
urlType
serviceName
reroad
reroadTime
user
pass
}

class Tasks {
tasks = []

void addTask(taskData){
tasks << taskData
}

void show() {
tasks.each {|task|
println " ${task.taskId}"
println " = ${task.url}"
println " = ${task.urlType}"
println " = ${task.serviceName}"
println " = ${task.reroad}"
println " = ${task.reroadTime}"
println " = ${task.user}"
println " = ${task.pass}"
}
}
}

出力結果
[sample-config.xml]

0001
= my.yahoo.co.jp
= http
= My Yahoo
= 20
= SECOND
= seitaro
= password
0002
= mail.yahoo.co.jp
= http
= Mail Yahoo
= 30
= SECOND
= seitaro
= password