2009年1月7日

以前の仕事仲間と通勤駅が同じなので、たまにホームで出会うと、
そのまま電車の中でも話をしていくわけですが、その話の中で出た
のが、中国語って漢字ばかりだけど、どうやって入力しているんだ
ろうって話題が出てきたわけです。

会社で着くなり、早速検索してみました。

中国では、発音を「ピン音(PinYin)」と呼ばれるアルファベットを使った
発音表記法で入力し、漢字に変換ってローマ字入力に近い感覚です。

イ尓 好(ニーハオ) --> ni3 hao3

アルファベットの後の数値は、基本の声調(音の高さのパターン)で
1~4段階を入力します。


世界各国ではどうなっているのかは、下記サイトが見つかりました。
http://r25.jp/b/honshi/a/link_review_details/id/1122008103105?vos=nr25nn0000001

韓国のハングルはまだしも、漢字のパーツを上下左右などして漢字を組み
上げる、台湾は大変そう。

posted @ 2:02 | Feedback (0)

2009年1月1日

正直、英語勉強系サイトや書籍は山のようにあります。
私の部屋にも積読本が多くあり、買ったことで満足してしまい
実際にやっていないのが現状です。

今年は真剣に取り組むためにも、昨年から英語勉強系サイトを
見つけたらブックマークしていたので、その中からセレクション
したのを一覧にまとめてみました。

私の今年の目標としては、しゃべるや聞き取りは優先順位を
下げて、英語の技術ドキュメントを読めること英作文を書ける
ことを最優先に取り組む方針でいます。


Perlの公式ドキュメントを読むための英語の勉強方法
http://d.hatena.ne.jp/perlcodesample/20080525/1211679785

英語の技術blog・ニュースサイトをまとめてみた!
http://d.hatena.ne.jp/gomi-box/20080717/1216299639

英語耳を鍛えるための科学なポッドキャスト10選
http://blackshadow.seesaa.net/article/101156674.html

訳すな、頭から読め
http://d.hatena.ne.jp/Britty/20081225/p1
英語の語順は日本語の倒置文と思っている
http://d.hatena.ne.jp/tonocchi/20081226/1230262530

「get」を使った表現50個を英語で覚える
http://d.hatena.ne.jp/shunsuk/20081103/1225704261

知らない英単語を辞書を引かずに読む方法
http://business.nikkeibp.co.jp/article/nba/20081015/173959/?P=1

英語ができないたった1つの決定的な理由
http://anond.hatelabo.jp/20081101050330
http://blog.livedoor.jp/dankogai/archives/51133522.html

「英語論文に使う表現文例集」のレジュメ
http://homepage1.nifty.com/kamegaya/ei_honbu.htm

大学のときTOEIC390点だった社会人が1年でTOEIC「Bクラス」を出す方法
http://anond.hatelabo.jp/20080609005131
40歳平凡サラリーマンが半年でTOEIC400点から700点を獲得した方法
http://anond.hatelabo.jp/20081019115056
英語落ちこぼれ→取りあえずTOEIC935点 大人から始める英語講座まとめ
http://d.hatena.ne.jp/sergejO/20080624/1214234591

ソーシャルネットワーク
breakr  http://breakr.net/
iKnow   http://www.iknow.co.jp/

自分の英語力がすぐにわかるNHK出版の「英語力測定テスト」
http://gigazine.net/index.php?/news/comments/20080221_english_test/
英語でしゃべらナイト
http://www.nhk.or.jp/night/

英単語タイピングゲーム iVoca
http://ivoca.31tools.com/home
英文ニュースで速読の練習ができる『Spreed News』
http://www.100shiki.com/archives/2008/10/spreed_news.html

英語上達完全マップ
http://homepage3.nifty.com/mutuno/
TOEIC勉強法&ノウハウ集
http://www.toeicchallenge.com/
Google副社長 村上式シンプル英語勉強法
http://book.diamond.co.jp/_itemcontents/0201_biz/00580-4.html

posted @ 17:53 | Feedback (0)

あけましておめでとうございます。

昨年は、セッション3回とライトニングトーク2回や掲示板の回答数
にブログの記事数においても、わんくま内でもそこそこの活動が
出来たのではないかと自負しております。

今年は、とりあえず1月にスキー合宿(私はスノボ)がありますね。
昨年から競争率が高くなってきたセッションは、1回くらい出来れば
いいんじゃないかしら。

今年は不況の大波がきますし、失業問題も明日は我が身ともなり
かねませんので、わんくま内の活動は若干セーブして、本格的に
英語の勉強に力を入れていきます。

オブジェクト指向(デザインパターン)、設計技法、テスト技法など
昨年同様に引き続き追求していきたいですね。

あと、今年は第1回 静岡 IT Pro 勉強会 2009年2月7日(土)に
開催されます。静岡でもITを盛り上げないとね。

posted @ 8:26 | Feedback (1)

2008年12月31日

業務アプリケーションでも、予約管理する機能を作成するときがあります。
その時に、予約した日付期間が重複しているかチェックするわけですが、

日付期間の重複チェックを、複雑に記述される方を見られます。
しかし、これには定石のチェック方法があります。
比較開始日付 <= 対象終了日付 AND 比較終了日付 >= 対象開始日付

Oracleなら「OverLaps oracle」のキーワードで探すといいでしょう。

例では日付にしてますが、Date型を使ってますので時間でも同様です。

        '日付が重複するパターンには、以下の4通りがあります。
        '    |-- 日付 --|
        ' ① |--------|
        ' ②    |--------|
        ' ③       |--------|
        ' ④   |------------|

        '対象期間 2008/05/05 ~ 2008/06/15 
        '期間①  2008/04/01 ~ 2008/05/31
        '期間②  2006/05/10 ~ 2006/06/20
        '期間③  2006/06/15 ~ 2006/07/10
        '期間④  2006/05/10 ~ 2006/06/30

        '重複しない以下のパターンでは、上の条件式は成立しません。
        '       |-- 日付 --|
        ' ① |-----|
        ' ②            |-----|

        '対象期間 2008/05/05 ~ 2008/06/15
        '期間①  2008/04/01 ~ 2008/05/04
        '期間②  2006/06/16 ~ 2006/06/30

Dim dtTable As New DataTable
Dim drRow As DataRow = Nothing

dtTable.Columns.Add("START_DATE", GetType(Date))
dtTable.Columns.Add("END_DATE", GetType(Date))
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/04/01")
drRow("END_DATE") = CDate("2008/05/31")
dtTable.Rows.Add(drRow)
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/05/10")
drRow("END_DATE") = CDate("2008/06/20")
dtTable.Rows.Add(drRow)
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/06/15")
drRow("END_DATE") = CDate("2008/07/10")
dtTable.Rows.Add(drRow)
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/05/10")
drRow("END_DATE") = CDate("2008/06/30")
dtTable.Rows.Add(drRow)
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/04/01")
drRow("END_DATE") = CDate("2008/05/04")
dtTable.Rows.Add(drRow)
drRow = dtTable.NewRow()
drRow("START_DATE") = CDate("2008/06/16")
drRow("END_DATE") = CDate("2008/06/30")
dtTable.Rows.Add(drRow)

'重複している場合の抽出条件
'比較開始日付 <= 対象終了日付 AND 比較終了日付 >= 対象開始日付
Dim dv As DataView
dv = dtTable.DefaultView
dv.RowFilter = "START_DATE <= #2008/06/15# AND END_DATE >= #2008/05/05#"

If dv.Count > 0 Then
 Console.WriteLine(dv.Count & "件の期間が重複しています。")
End If

'重複していない場合の抽出条件
'比較開始日付 > 対象終了日付 OR 比較終了日付 < 対象開始日付
dv.RowFilter = "START_DATE > #2008/06/15# OR END_DATE < #2008/05/05#"

If dv.Count > 0 Then
 Console.WriteLine(dv.Count & "件の期間が重複していません。")
End If

posted @ 2:43 | Feedback (0)

2008年12月22日

私の経験の中であった、設計時の見落としをテーマとして何点か書いてみます。

業務用アプリケーションでは、料金などを比率によって振り分ける按分処理を行う
ことがあります。

簡単な例で言えば、100円を5つに均等配分するとすれば、各20円となります。
では、100円を3つに均等配分してみるとどうでしょう? 
この場合、各33円となって、1円が余ってしまいますね。

では、この1円はどうするのでしょうか?

この例とは違いますが、以前あった振り分け先として
・按分した際に金額(按分比率)が一番多いところ、または一番少ないところ
・キーとなるコードの昇順または降順の先頭
・先に登録された順

これは、ユーザーであるお客さんの決められたルールによって処理します。
逆にこれが決まってないようなら、ユーザーに決めてもらう必要があります。

こうしてユーザーのルールによって、どこかに1円を含めた結果として
34円、33円、33円 といった配分となるわけです。


この端数処理の振り分けで思い出したのが、サラミ法を使った犯罪です。

■60年代末に発覚したニューヨーク在住の銀行員の犯行:
 顧客の預金利子を計算するプログラムで端数処理を四捨五入ではなく
 すべて切り捨て計算とし、剰余の利息を自分名義の口座に自動振込す
 るプログラムも付け加えて巨額の不正入金を得た。

サラミ法といえばこの事件が有名ですね。実に巧妙な手口です。
塵も積もれば、金額も巨額になるわけですね。

さすがに銀行でこの手口はもう出来ないでしょうけど、最近は何かとポイント制
だったりしますので、知らない間に仕組まれている可能性も・・・(^^;

posted @ 2:39 | Feedback (0)

2008年12月8日

DataSet と DataReader のパフォーマンスにおいては、DataReaderが速い
というのは、仕組み的にも下記サイトの検証結果をみても分かる。

ADO.NETでのデータ取得を高速化するためのヒント
http://japan.internet.com/column/developer/20060307/26.html?rss

ADO.NET2.0から、DataTableのLoad メソッドが追加されたわけだが
http://www.microsoft.com/japan/msdn/net/adonet/datasetenhance.aspx

Dim dt As new DataTable
dt.Load(dataReader)

上記の結果から考えると、adapter.Fill(ds)よりは速いように思えてしまう
のだけど、下記サイトの検証結果によるとdt.Loadの方がそれなりに
遅いようである。

DataSet vs DataReader 検証 .NET2.0
http://blogs.wankuma.com/ganfield/archive/2007/02/06/61084.aspx

DataGridViewなどのDataSourceにセットする場合は、素直にAdapter.Fill
を使用した方がよさそうです。

また、dt.Load(dataReader) とAdapter.Fillで、挙動が違うなどもありますね。
dt.Load(dataReader)は制約(NULL)までも取り込んでしまう?
http://blogs.wankuma.com/ognac/archive/2008/06/13/143481.aspx

DataTableのLoad メソッドは、使用する場合はちと注意が必要かも。

posted @ 1:45 | Feedback (1)

2008年12月5日

私の経験の中であった、設計時の見落としをテーマとして何点か書いてみます。

業務用アプリケーションを作成していると、ヘッダ部と明細部が一緒になって
いる画面がだいたいあります。例 受注入力画面

簡易な例としては、ヘッダ部に請求先コードを入力し、明細部に数量、単価、金額
などの項目があるとかです。
請求先コードをキーに請求先マスタを参照し、端数区分(切り上げ、四捨五入、
切り捨て)を取得します。
そして、明細入力の金額を自動計算(数量x単価)する際の端数処理に使用します。

明細を何件か入力後に、先ほどとは違う請求先コードに変更したとき、端数区分が
四捨五入→切り捨てなど違う場合があります。

では、その時に入力されている明細の金額についてはどうするべきなのか?
1.何もしない
2.自動計算
3.明細をクリアする
などなど
※請求書コードを変更する段階で確認メッセージを出力するものとする

また、数量x単価=金額ですが、仕様によっては金額が入力項目になっていることが
あります。(調整用に金額を訂正可能にするため)
金額を訂正した後に、数量を入力し直したら金額は計算しなおすべきなのか、それとも
何もしないのか などなど

このように関連する項目が変更された場合、幾つかの方法が考えられるわけですが、
詳細設計書上にその旨の記述があったことがなかなかありません。
かといって、共通仕様書上にあるのかというと無いわけです

そうすると、たいがい指摘するはめになります。

みさなん、関連項目を変更した場合をちゃんと考慮してますか、されてますよね…
特に関連項目の数が多いと抜けが発生します、気をつけましょう。

posted @ 2:40 | Feedback (0)

2008年12月2日

「ドラゴン桜」で有名な三田 紀房さんの別作品に
「エンゼルバンク」というのがあります。
こちらは東大ではなく転職サポートビジネスがテーマです。

その中でおもしろいなと思ったことが数点かありました。
まったくもって受け売りな私は、反省すべき点が多々・・・

■人は決めてから悩む
 普通は決める前に悩むと思うわけですが実は違う
 人は簡単に調べられることも、案外その場の勢い
 などで調べずに決めてしまう
 決めたあとでちくちく悩むあとで後悔する
 それは、決めることで基準ができるからである

 基準がない中での悩みはきりがない、なかなか
 はじめの一歩を踏み出せない

 決めてから悩む、でもそれでいいのさ(^-^)

  いつまでも悩んでたら何もできない、何も行動を
  起こせなかったら幸せになれない

 韓国のことわざに「始まりは半分」ってのがありますが
 ものごとを新しくはじめるにはものすごくエネルギーが
 いるので、はじめただけで、もう半分まで来ているんだよ。
 という解釈です。 

■啓発本を山ほど読んでも成功には近づかない
 本を読んで成功する人間はほんの一部でほとんど思い通り
 にならないのが現実ですよね。

 啓発本を呼んで「へぇ」と「そうそう」と思う人のうち成功する
 のは、「そうそう」と思う人、それは自分で常に考えているから
 「そうそう」と思うのは成功した人と思考が似ているため自身
 がついて同等と行動ができる。
 「へぇ」という人は、新しい知識を得て感心し内容に感心して
 真似て実践するけど、すぐに結果がでないとまた次の本に手
 を伸ばす。普段、自分では何も考えていないから。
 
 がーん、私だ(^^;

 自分で考えないやつが成功するはずがない・・・ですよね

■目標の決め方
 目標は高い方がいいけど、戦略が立てられる目標でなければ
 ならない、戦略がないと努力の仕方がわからない。
 漠然とした感情でいるうちは一歩も前に進まない。

 目標を立てて戦略を真剣に自分で考えない限りは努力は続かない
 仕事に夢だのやりがいだの言っているうちは本当の努力はしない
 ってこと、もっと現実的に具体的に考えなさいとね。


毎年のごとく英語を勉強しなきゃしなきゃと思って、はや12月だし。
この本もある意味、啓発本みたいなもんだな。「へぇ」って言ってるし

posted @ 2:22 | Feedback (0)

2008年12月1日

サイエンスZERO 人類の謎に迫る 
http://www.nhk.or.jp/zero/index.html

サイエンスZEROを見た上で自分用のまとめです。
※類人猿は、人類以外のヒト上科に属する種を指す。

■人間が何故2足歩行をするようになったのか
 気候変動により乾燥地になったことにより、食料確保が難しくなり
 遠くまで出るようになった。また栄養価の高い肉を求めた背景もある。

 四足歩行より二足歩行の方が、広い範囲をエネルギーをあまり使わず
 に歩くことができる(有力説)

■類人猿と人間の違い
 1.多産であること
  類人猿の出産間隔は4~5年と極めて長い。
  (乳児期が長く、その間は排卵が出来ない)
  人間は、出産後でもすぐに子供を作ることができるため、年子出産が
  可能である。
  これは、食料確保などにより草原地帯など出ることで肉食動物に襲わ
  れやすく死亡率が高かったことへの生存戦略によるもの。
  また、二足歩行により産道が小さくなり、未熟な赤ちゃんをたくさん
  産む必要があった。

  ※少子化問題というのは現代文化のひずみでもある。

 2.食の分配
  類人猿には食を分配することはなく、乳児もそれを抱える母親も自分の
  エサを確保するのに精一杯で、複数の乳児を同時には育てられない。
  人間は、身内による食の分配は当たり前となっており、食の確保から
  解放されるため、複数の乳児を同時に育てることが可能になった。

 3.閉経後(出産できなくなること)の女性の寿命が長い
  類人猿は閉経後のメスは間もなく死を迎える。
  人間は、閉経後の女性が寿命を迎えるまでおよそ30年もある。
  これにより、おばあちゃんは多くの孫を育てることが重要な役割となり
  双子を始めとする乳児を育てる力となっている。

 4.教育
  類人猿には教えるという行為は見られない。また食事も一人で行う。
  人間は教えるという行為をする。また集団で食事を取る。
  これは、食の分配などにより共感やお互いの知識の差を認識することで
  他人を教育するようになっていった。

 5.白目の多さ
  類人猿には白目が少なく黒目がちである。
  人間は、高度なコミュニケーションを得るため、自分の感情を他人に伝
  えるなどの表情が必要となり、白目があることで眼球の動きがよくわかる
  ため、白目が発達することとなった。
  
■脳の発達
 人間は、草原地帯など出ることで肉食獣の食べ残した栄養価の高い肉を得る
 ことが出来た、これにより、脳に栄養がいくことにより大きくなっていった
 と考えられる。
 また、摂取エネルギーを出来るだけ脳の成長にまわす様になった人間は、
 身体のひ弱な子供を産まざる得なくなった、これにより体の成長においては
 類人猿より遅くなる。
 たが、ひ弱な子供を集団のなかで共同で育てる選択をしたことが、その後の
 人間が発達することを決定付けたと思われる。

■土地の所有の争い
 アフリカを出て新天地を求め、争いとは無縁だった人間だったが、農耕生活を
 始めたことで定住化することとなり、これが土地の所有による集団のための
 争いが生まれる要因になった。

posted @ 2:18 | Feedback (0)

2008年11月30日

TV番組「アッコにおまかせ」の1コーナー「がっぽりサンデー」を
見ていたのですが、ファッション雑誌の掲載されているのは
ほとんどが東京だったりするため、地方の人に代わって掲載
されたものを代行して購入し、手数料収入で稼いでいるとのこと
http://www.nekore.com/

コーナーの最後に、ここの社長さんが、将来は掲載雑誌と提携
してやりたいと仰っておりました。

ん、そういえば・・・

すでに掲載雑誌と提携してやっているサイトがあったなーと思って
いつか使うかとブックマークしていたのが、スタートトゥデイが運営
する「ZOZORESORT」です。http://zozo.jp/

記事:http://markezine.jp/article/detail/4145

posted @ 17:04 | Feedback (2)