Simple_Is_Bestの日記 RSSフィード

2007-08-18 文字と文字の間を切り取る

メモです。

翠○○君発見のユーティリティのメモ

キーワードキーワードの間を切り取ってくれるcommons

public void testSubStringBetween() throws Exception {

String str = "<TEST>タグ内を切り取る</TEST>";

assertEquals("タグ内を切り取る",

StringUtils.substringBetween(str, "<TEST>","</TEST>"));

}

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

わけあってGroovyXMLパースすることになったのでお勉強。

以下のXMLGroovyファイルを同じディレクトリに置いて以下コマンド実行

>Groovy XmlTest sample-config.xml

パースする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

url

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

というわけで関連して熱い本はこんな感じ。

達人プログラマーソフトウェア開発に不可欠な基礎知識

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

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を落として実行!!

https://sourceforge.jp/projects/aioec/


あとは勝手にコマンドプロンプトが立ち上がり、Apacheが立ち上がって以下にアクセスすればtracが使える。

http://localhost/


3 Windowのサービスに登録

上記のままだと起動中はコマンドプロンプトを常に立ち上げておかないといけないので、Windowのサービスから起動させる。

サービスに登録するのもバッチが用意されている。いやー至れり尽くせり。

http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=All%2DIn%2DOne+Trac%A4%CE%A5%B5%A1%BC%A5%D3%A5%B9%B2%BD%BC%EA%BD%E7

基本的には以下を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つ

  1. スタート − すべてのプログラム(P) − スタートアップ からtrac_startのショートカットを削除。忘れると際ログイン後サービスとバッチでぶつかる。
  2. サービス起動させる際のアカウントを指定。これをやらないと500 Server Error。そこも解決方法が以下のサイトに書いてあった。

http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=BBS%2DTrac%A4%B4%B0%D5%B8%AB%A1%A6%A4%B4%BC%C1%CC%E4%B7%C7%BC%A8%C8%C4%2F20


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つのフォルダを削除

以下のページを参考

http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=BBS%2DTrac%A4%B4%B0%D5%B8%AB%A1%A6%A4%B4%BC%C1%CC%E4%B7%C7%BC%A8%C8%C4%2F26


6 ユーザ追加

やっぱりユーザは追加したい。これも参考サイトがすぐにあった。ありがたや。

C:\trac\admin\apache\adduser.bat ユーザ名 パスワード

以下のページを参考

http://kamezo.cc/blog/entry/9758


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 初めてのプロジェクトマネジメント

プロジェクトマネジメント初体験なので、備忘録としてこれまでの経緯やアクションや成果物をメモって行きます。

プロジェクト概要

  • システムの目的
    • 情報を全国の支店から本店のDBに集約することにより、全国で情報を共有する。
    • 全文検索機能を取り入れ、情報の検索効率向上を図る。
    • 既存システムをJAVAによりリプレイスし、再利用性を向上させる。
  • 期間
    • 2007/04〜2007/03
  • カットオーバー
    • 2008/01/04
  • 開発規模

今回4月、5月はSES契約で、作業としては見積り、技術検討、要件定義、概要設計。

6月以降は一括請負契約で、作業は開発、テスト、リリース、ユーザサポート。

4月は2名での参入。4年目のM君を投入。

5月は5名での参入。6年目のMっちとパートナーSE2名を投入。

6月は8名〜9名体制の予定。



これまでの自身のアクションは、

  • 見積
    • 何はともあれ工数見積り。今回はリプレイスということもありお客の要件が参入時にはほぼ明確でした。そのため機能や画面数や項目数が分かっていたため見積もりはすぐに始めることが出来ました。
    • ポイント
      • 登録、検索(全文検索)、帳票、データ移行は工数を多めに
      • 設計とは別に、納品物(設計書)の作成で工数を算出
      • テストは、実施後の検証にかかる工数を多めに
      • 全体的に管理工数を忘れずに。今回は毎月1人月と想定
      • 前提を明確に記載して、見積りを提示していく。前提を色々置かないと見積もれない
  • スケジュール作成
    • 大項目(マイルストーン、フェーズ)スケジュール 月単位
    • 中項目(設計単位、機能単位)スケジュール 週単位
    • 小項目(成果物単位、作業単位) 日単位
  • 要員計画
    • 中項目のスケジュールを引いたところで、単位ごとに仮想の要員を当てはめていった。
    • 例えば、
      • 6月 登録機能の概要設計0.5人月 SE1
      • 6月 DB設計0.5人月SE1
      • 6月 検索機能の概要設計0.5人月 SE2
      • 7月 登録機能の開発1人月 PG1
      • 7月 検索機能の開発1人月 PG2
      • 合計 6月はSE1、SE2の2名体制 7月はPG1、PG2の2名体制みたいな感じ。
    • ポイント
      • 設計、開発期間で急激な要員増加が発生しないように、要員計画をしながらスケジュールを調整
      • 例えば、8月が開発のピークで要員は最大になるが、作業を前にずらしたり、後ろにずらして6,7,8,9月の要員増減を極力なくして計画
  • 要員探し、面談
    • とある経路で紹介いただいた会社の方と面談。
    • 会社でこれまでお付き合いがあった会社の方と面談。
    • 社内のメンバーを引き込む場合も調整多し。
    • ポイント
      • 当たり前だが、必要な要員体制のイメージを持っておく。
      • 契約方法(一括、SES)、成果物、作業範囲(機能、期間)、作業形態のイメージを持っておく。相手に正確に伝えないと誤解を招く。
      • プロジェクトの概要、リスクをまとめておく。これも相手に正確に伝えないと誤解を招く。
  • 開発用ハード、開発用ソフトウエアの調達
  • ネゴとり
    • いろんな場面でのネゴとりの重要さを実感。
    • お客、他社、自社など。とにかく電話や直接話してネゴをとっていった。
  • 契約
    • ほぼ会社にお任せ。今後の課題。契約についてあまりにしらなすぎる。
    • 通常の契約書や秘密保持契約とにかくわかりません。

これまでの感想として、

参入時に一緒に入るパートナーは重要。

仕様、開発技術を一通り理解して、後に入ってくるメンバーに伝えることが出来るメンバーが良い。

自分が打ち合わせ、要員調達、見積りでほぼいっぱいになるため、

パートナーがそれなりの人材でないと、他の仕事をこなせない。

本音を言うと、体調もスキルも、微妙に心配だったけど、

褒めたら調子に乗りそうだけど、期待以上でした。助かったよ。

隆之介

名前決まりました。隆之介です。

日本人らしく、音がよく、画数もいいんです。


ただあだ名が困ってます。「りゅうくん」はいとこにいてかぶるし、「りゅうちゃん」と呼ぶと、上島っぽいし。

まー嫁は帽子をくるりんとさせるんだっと気にっているみたいですが。(笑)

自分は「りゅう」っと読んでます。


微妙にある人物から「隆」の字をもらうことになるので、天然系になりそうで・・・。(笑)

嫁も天然ですし、まー天然系で生まれてきそうです。(笑)