2007-08-18 文字と文字の間を切り取る
2007-08-11 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を一つの文字列としてカウントしてくれないかな?
2007-06-02 (移設) GroovyでXML
わけあってGroovyでXMLをパースすることになったのでお勉強。
以下のXMLとGroovyファイルを同じディレクトリに置いて以下コマンド実行
>Groovy XmlTest sample-config.xml
sample-config.xml
<Tasks>
<Task id="0001">
<Url type="http">my.yahoo.co.jp</Url>
<ServiceName>My Yahoo</ServiceName>
<Reroad time="SECOND">20</Reroad>
<User>seitaro</User>
<Pass>password</Pass>
</Task>
<Task id="0002">
<Url type="http">mail.yahoo.co.jp</Url>
<ServiceName>Mail Yahoo</ServiceName>
<Reroad time="SECOND">30</Reroad>
<User>seitaro</User>
<Pass>password</Pass>
</Task>
</Tasks>
パースする為のコード
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
urlType
serviceName
reroad
reroadTime
user
pass
}
class Tasks {
tasks = []
void addTask(taskData){
tasks << taskData
}
void show() {
tasks.each {|task|
println "<Task id> ${task.taskId}"
println "<Url> = ${task.url}"
println "<Url type> = ${task.urlType}"
println "<ServiceName> = ${task.serviceName}"
println "<Reroad> = ${task.reroad}"
println "<Reroad time> = ${task.reroadTime}"
println "<User> = ${task.user}"
println "<Pass> = ${task.pass}"
}
}
}
出力結果
[sample-config.xml]
<Task id> 0001
<Url> = my.yahoo.co.jp
<Url type> = http
<ServiceName> = My Yahoo
<Reroad> = 20
<Reroad time> = SECOND
<User> = seitaro
<Pass> = password
<Task id> 0002
<Url> = mail.yahoo.co.jp
<Url type> = http
<ServiceName> = Mail Yahoo
<Reroad> = 30
<Reroad time> = SECOND
<User> = seitaro
<Pass> = password
■(移設)人生の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
■(移設)人生の100のリスト
プレジデントで、人生の100のリストを紹介していた。
全然思いつかない。というわけでブログを利用して思いついたら書き残すことに決めてみた。
叙々苑へ行く。
アパートを経営する。
南国に住む。
海の中に住む。
潜水艦に乗る。
犬を飼う。
ゴルフで72以下を出す。
カープ島へ行く。
親に世界一周をプレゼントする。
会社を作る。
寿司屋を経営する。
■(移設)買ってしまいました。
「会社にお金が残らない本当の理由」
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 ということでひとまずここまで。
■(移設)
業界本は色んな物が出ていて何を買ったらいいかまったくわからなかったが、どうやらこれがかなりの指針になるみたい。
「Annual Jolt Product Excellence and Productive Awards」
http://www.sdmagazine.com/jolts/
うーん。英語が弱い自分にはよく分からん。ってことで簡単な紹介がしてある日本語のサイト
http://www.ilog.co.jp/corporate/jolted.cfm
というわけで関連して熱い本はこんな感じ。
コードコンプリート―完全なプログラミングを目指して (上)
コードコンプリート―完全なプログラミングを目指して (下)
その他、新人教育で使うために紹介してもらった本
センス・オブ・プログラミング!―抽象的に考えること・データ構造を理解すること
2007-05-20 All-In-One Trac メモ
軟弱になった気がしますが、とりあえず慣れるためにという理由で、Windows上でTrac。
1 参考サイト
http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=All%2DIn%2DOne%2DTrac
2 インストール
は以下のサイトからall-in-one-trac-v0.1.1-setup.exeを落として実行!!
あとは勝手にコマンドプロンプトが立ち上がり、Apacheが立ち上がって以下にアクセスすればtracが使える。
3 Windowのサービスに登録
上記のままだと起動中はコマンドプロンプトを常に立ち上げておかないといけないので、Windowのサービスから起動させる。
サービスに登録するのもバッチが用意されている。いやー至れり尽くせり。
基本的には以下をWindowsの環境変数に通して、C:\trac-0.1.1\apache\install_service.bat を実行
- PYTHONHOME=C:\trac-0.1.1\python
- SVN_HOME=C:\trac-0.1.1\subversion
- DIFFUTILS_HOME=C:\trac-0.1.1\diffutils
- APR_ICONV_PATH=C:\trac-0.1.1\subversion\iconv
- PATH=%PATH%;%PYTHONHOME%;%SVN_HOME%\bin;%DIFFUTILS_HOME%\bin
ただポイントが2つ。
- スタート − すべてのプログラム(P) − スタートアップ からtrac_startのショートカットを削除。忘れると際ログイン後サービスとバッチでぶつかる。
- サービス起動させる際のアカウントを指定。これをやらないと500 Server Error。そこも解決方法が以下のサイトに書いてあった。
4 プロジェクト作成
プロジェクト追加も簡単。
C:\trac-0.1.1\admin\trac\create-trac-env.bat プロジェクト名称(日本語可) プロジェクトID
以下のページを参考
http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=TracMultiProjects
5 プロジェクトの削除
defaultプロジェクトを消したいと思ったら、なるほど簡単。
svn_repo/projects/defalutとtrac_repo/projects/defaultの2つのフォルダを削除
以下のページを参考
6 ユーザ追加
やっぱりユーザは追加したい。これも参考サイトがすぐにあった。ありがたや。
以下のページを参考
7 権限追加
やっぱり権限を変更したい。
C:\trac-0.1.1\admin\trac>trac-admin.bat
対話式になるので以下を実行
Trac [C:\trac-0.1.1\trac_repo\projects\stkproject]> permission add ユーザ名 TRAC_ADMIN
2007-05-19 初めてのプロジェクトマネジメント
プロジェクトマネジメント初体験なので、備忘録としてこれまでの経緯やアクションや成果物をメモって行きます。
プロジェクト概要
今回4月、5月はSES契約で、作業としては見積り、技術検討、要件定義、概要設計。
6月以降は一括請負契約で、作業は開発、テスト、リリース、ユーザサポート。
4月は2名での参入。4年目のM君を投入。
5月は5名での参入。6年目のMっちとパートナーSE2名を投入。
6月は8名〜9名体制の予定。
これまでの自身のアクションは、
- 見積り
- スケジュール作成
- 大項目(マイルストーン、フェーズ)スケジュール 月単位
- 中項目(設計単位、機能単位)スケジュール 週単位
- 小項目(成果物単位、作業単位) 日単位
- 要員計画
- 要員探し、面談
- とある経路で紹介いただいた会社の方と面談。
- 会社でこれまでお付き合いがあった会社の方と面談。
- 社内のメンバーを引き込む場合も調整多し。
- ポイント
- 当たり前だが、必要な要員体制のイメージを持っておく。
- 契約方法(一括、SES)、成果物、作業範囲(機能、期間)、作業形態のイメージを持っておく。相手に正確に伝えないと誤解を招く。
- プロジェクトの概要、リスクをまとめておく。これも相手に正確に伝えないと誤解を招く。
- 開発用ハード、開発用ソフトウエアの調達
- ネゴとり
- いろんな場面でのネゴとりの重要さを実感。
- お客、他社、自社など。とにかく電話や直接話してネゴをとっていった。
- 契約
- ほぼ会社にお任せ。今後の課題。契約についてあまりにしらなすぎる。
- 通常の契約書や秘密保持契約とにかくわかりません。
これまでの感想として、
参入時に一緒に入るパートナーは重要。
仕様、開発技術を一通り理解して、後に入ってくるメンバーに伝えることが出来るメンバーが良い。
自分が打ち合わせ、要員調達、見積りでほぼいっぱいになるため、
パートナーがそれなりの人材でないと、他の仕事をこなせない。
本音を言うと、体調もスキルも、微妙に心配だったけど、
褒めたら調子に乗りそうだけど、期待以上でした。助かったよ。
■隆之介
名前決まりました。隆之介です。
日本人らしく、音がよく、画数もいいんです。
ただあだ名が困ってます。「りゅうくん」はいとこにいてかぶるし、「りゅうちゃん」と呼ぶと、上島っぽいし。
まー嫁は帽子をくるりんとさせるんだっと気にっているみたいですが。(笑)
自分は「りゅう」っと読んでます。
微妙にある人物から「隆」の字をもらうことになるので、天然系になりそうで・・・。(笑)
嫁も天然ですし、まー天然系で生まれてきそうです。(笑)