2009年1月29日木曜日

Let's UMIN!

なんだかよく分からないけど、大学で一括してUMINに登録されていた。

フリーでないメールアドレスがゲットできてちょっとうれしい。

というわけでmailの設定をすることにした。

パスワードを忘れたりするとなんだかめんどくさそうなのでちゃんとメモメモ。

色々と考えた結果、UMINのweb mailシステムを使うよりgmailを使って(必要に応じて)gmailからUMINのサーバー経由で使うことにした(***@uminで送受信するメールも***@gmailで送受信メールもどっちもgmailで管理できる)。

その方が、集約できていいし。

ただ、gmailがダウンしたときのバックアップ先を確保した方がいいような気もしてきた。

そもそも今のところ、yahoo,  googleをメインに使っているけど、あんまり使い分けてない。

フリーのアドレスが永久に使えるとも思えないからやっぱりどこかでバックアップを取れるようにしたほうがいいのかも。

2009年1月28日水曜日

Pascal or Delphi?

ふと思ってPascalでプログラムを組んでみようと思い、Pascalの本を紐解いてみた。

そういえばコンパイラとしてはfree pascal compilerがあったなと思い、mini note PCを起動してみた。

というわけで、Pascalの本にあったcodeを入力してみると見事完成。

しかし、大学のパソコンでやりたい(でも勝手にインストールは出来ない)ということで、ポータブルハードディスク(要するにiPod)にfree pascal compilerをコピペして、大学のパソコンで動かしたら見事に動いた!

じゃあと思い、今度はGUIなプログラムを組もうと思って、Pascalの本をくまなく探してもどこにもそんなことが書いていない。

あれっ?Free pascal compilerはdelphi(Object Pascal)互換じゃなかったけ?

と思ったらGUIの部分はどうやらlazarusという別の環境が必要らしいということ。

う〜ん、どうしようか…。

lazarusはなんかまだ日本語の扱いが不安定らしいし、かといってDelphiは相当重たいからなぁ…。

一つの結論としては、GUIアプリケーションではなく、コンソールアプリケーションを作って、Javaから呼び出す形式にするとか。

もしくはもうJavaからDelphiに乗り換えるか…。

昔初めてDelphiを見たとき(先生にDelphiのいろはを教えてもらったとき)、自分でコードを組まずに適当なマウス操作で作ったコードは意味不明だし、実力がつかない!と思っていたが、今こうしてこのソースを見てみると、意外とlogicalだと思う。もちろんDelphiの大もとであるPascalを知ったからに他ならないのかもしれないけど。

ただ、とりあえずは使いなれたJavaを捨てるわけにはいかないので、Javaでデザインパターンを勉強して、症例子ちゃんを完成させることにする。

2009年1月26日月曜日

カウントダウン

ma: いやあ国試も近づいてきましたね。。。

hirokickman: まあ正面向いても側面向いても試験はやってくるからねぇ。

ma: それって…ボケになってないですよ。

hirokickman: あっそう。

ma: 勉強は順調に進んでるんですか?

hirokickman: う〜ん、順調と言えば順調だし、やることがたくさんあると言えばある。

ma: なんだかよく分からない状況ですねぇ。

hirokickman: まあある種当然だろう。どんなに勉強したって(って言うほど勉強してないけどw)目の前に患者さんがいたとして、採血の一つですら満足に出来ないんだから。実技を伴わない見学はやっぱり空虚だったりする。

ma: まあ見学の問題は仕方ないかもしれません。確かに人間は責任が伴わないと実力はアップしませんからね。

hirokickman: その通りで、もっと言うなら興味も必要だけど。いずれにせよ、やっぱり働きだしてからかなぁという気がする。

ma: でもって国試が終わったらどうするんですか?

hirokickman: なんだかんだで事務処理的なことがあるからそれをこなすのが先。もっとも大半が合格してからという前提になっているので、ウォームアップくらいしか出来ないけど。

ma: それから?

hirokickman: とりあえずやり残した仕事が2, 3あるから、それをこなす。それ以降は未定。今はリアルにお金がないから(本来の予想よりも30万近く減)、医師免許の登録料etcと四月の予定生活費なんかを加味してちょっと残ればどこかに行ってみようかなというところ。あっ、その前にバイトをしてみてみ良いかも。この超不景気にアルバイト先があるかどうかは疑問だけれども。

ma: なんかすごい綱渡りですねぇ。

hirokickman: 自分としてはそんなつもりは毛頭なかったんだけど、というか5年の夏くらいに「ああ、あとはこれでokayだ」と思ったのでアルバイトなどを止めたわけで、要するに計算ミス。もともとそんなに贅沢もしていないし、これでも良いかなと今では思っているけど。

ma: でもパソコンにかけたお金は学年一位二位を争うのでは?

hirokickman: そんな、パソコンくらい良いでしょ。お金の(ちょっぴり)かかる唯一の楽しみなんだから。ただ、同じコンピュータでも最近はパソコン本体よりもプログラミングにはまっているけど。

ma: あと、本を買うペースが相当早いですね。

hirokickman: まあ昔は買う本と言えば十中八九は英語関連の本だったと思うけど、今はコンピュータ・医学(生命科学系)がそれぞれ4割くらいで残りの2割が英語の本。最近は統計や化学の本が多いかも。

ma: でも読まずに積んであるいわゆる「積ん読」が多いのでは?

hirokickman: それも良いんだって。5冊買って1冊良いのがあれば良い方。始めから最後まで読む本は確かに少ないかもしれないけど、意外と後々読んだりするわけで。

2009年1月22日木曜日

Idea memo and schedule memo

臨床の、特に内科外科に関してはイヤーノートという一種の総まとめ的なものがある。

マイナーに関しては(多分需要が少ないためか)レビューブックマイナーという内容が薄めのまとめがある。

しかし、基礎医学のまとめ的な本はない。

臨床を勉強する中で基礎医学の「あの…」と思うことは少なくない。

その中である程度情報がまとまっている辞書的な本があってもいいかもしれない。

やるかやらないかは分からないけど…とりあえず目次だけ考えてみた
  •  総論的事項
    • 発生学総論
    • 生化学
    • ウイルス学
    • 薬理学
    • 微生物学
    • 免疫学
    • 病理学総論(免疫学・微生物学は省略)
  • 各論的事項
    • 心血管系(解剖学・組織学・発生学・生理学・病理学)
    • 呼吸器系(解剖学・組織学・発生学・生理学・病理学)
    • 消化器系(解剖学・組織学・発生学・生理学・病理学)
    • 泌尿器系(解剖学・組織学・発生学・生理学・病理学)
    • 男性生殖器(解剖学・組織学・発生学・生理学・病理学)
    • 女性生殖器(解剖学・組織学・発生学・生理学・病理学)
    • 乳腺(解剖学・組織学・発生学・生理学・病理学)
    • 造血器・免疫系(解剖学・組織学・発生学・生理学・病理学)
    • 内分泌・代謝系(解剖学・組織学・発生学・生理学・病理学)
    • 皮膚系(解剖学・組織学・発生学・生理学・病理学)
    • 頭頸部系(解剖学・組織学・発生学・生理学・病理学)
    • 運動器系(解剖学・組織学・発生学・生理学・病理学)
    • 神経系(解剖学・組織学・発生学・生理学・病理学)
どういう分け方をしても結局上手く行かなかったりする。仕方ないのかな…。

というわけで国試が終わったらやることリスト
  • デザインパターン勉強→症例子ちゃん
  • アトキンス ライフサイエンスのための物理化学
  • 統計ノート作成
  • マクマリー有機化学概説
  • (やる気が起これば)イアーノート基礎医学(仮)作成
とりあえず国試までにやることリスト
  1. ターゲット講座復習
  2. MEC 公衆衛生講座を最後までみる
  3. 102回国試を解く
  4. 100回・101回国試の復習
  5. クエバン間違え直しノートの復習
  6. ターゲット講座・クエバン間違え直しノート・公衆衛生講座の復習

2009年1月21日水曜日

国試勉強とSQL

Dr. みとまのターゲット講座を見ていると「あーそうだったんだ!」ということが多い。

例えば1/2生理食塩水を投与するタイミングは血圧が保たれていて、かつ血漿浸透圧350以上という条件が必要、など。

しかしだ、現実的にここまでクリアカットに分かれるものなのか…とちょっと思ってしまった。

背理法で考えると、(卒業した人80%くらいがターゲット講座を見ているとして)「テコムが…」とか「みとま先生が…」とか言うのを聞いたことがない。

だから意味がないとかどうとかは言わないけど。

この超直前の時期に「初めて知ったわー」ということが多いのが不安(でもなぜか模試ではそこそこ点数は取れているのだが…)。ポジティブに考えよう。


ところで、「いちばんやさしい オブジェクト指向の本」という本を読んだら、プログラムはなるべく再利用できるように書いた方が良いということが分かった。

そうでなくとも、オブジェクトとオブジェクトの結びつきが強い今のプログラミング手法だと、コードが1000行くらいを超えたあたりからある箇所を修正したら全体に影響が出てしまって、もはや手に負えない。

なるべくメソッド同士、クラス同士はくっつきすぎない方が良いらしい。

ただ、オブジェクト指向は「言うは易し、行うは難し」でその具体例?として結城浩の「デザインパターン入門」を読み始めてみたが(と言っても国試勉強があるので、本格的には国試が終わってから)、非常に奥が深い。

多分このデザインパターンを知っているのと知らないのとでは作り方が大きく変わるような気がする。

せっかくなので読み終えてから作り直したいのでとりあえず
  • JavaプログラムでSQLite JDBCのコマンドプロンプトからの呼び出し練習
  • JavaプログラムによるSQLite <-> CSV の変換(とりあえず全てtext/Stringとする)
  •  SQLiteのコマンドの練習
をしようかと。

2009年1月18日日曜日

Memo

// 初期値のロード
******ItemListLoader();
void ItemListLoader(){
}

******InitLoad();
void InitLoad(){
}

// パネルの作成
******LeftPanelMaker();
void LeftPanelMaker(){
}

******RightPanelMaker();
void RightPanelMaker(){
}

******ToolBarMaker();
void ToolBarMaker(){
}

******MenuBarMaker();
void MenuBarMaker(){
}

// datasetを受け取ってロードする
******LoadData(dataset);
LoadData(HashMap[] dataset){
}

// データベースの管理
// 基本的に全てのデータを返す
// LoadData側で必要なデータのSelectionをかける
// SQLiteで管理

******dataset = OpenData(keyNum);
public HashMap[] OpenData(int keyNum){
    // keyNum番目のdatasetを返す
    HashMap[] dataset;

    return dataset;
}

******SaveData(keyNum, dataset);
public void SaveData(int keyNum, HashMap[] dataset){
    // 保存する
}

******keyNum = DeleteData(keyNum);
public int DeleteData(int keyNum){
    // keyNum番目のデータを削除してkeyNum--;を返す
    if(keyNum != 1) keyNum--;
    return keyNum;
}

******dataset = InsertData(keyNum, dataset);
public HashMap[] InsertData(int keyNum, HashMap[] dataset){
    // keyNum番目にdatasetを挿入する
    return HashMap[] dataset;
}

******keyNum = NewData(keyNum);
public int NewData(int keyNum){
    // 一番最後にinsertする!
    return keyNum; // 一番最後の番号+1を戻す
}

// 初期値の保存
******InitSave();
void InitSaver(){
    // getSize()で画面の大きさなども保存する
    // keyNumは最後のデータ番号を保存する
}
******DataWriter();
// データの出力
void DataWriter(){
    // Select * from ***
    // 全て
}

2009年1月17日土曜日

Tips

  • 症例子ちゃんでitemlist.txtを変えた時に古い項目をどうするか→必要な項目を読み出すように設計し直す(必要のない項目をdatasetにどのように採用すべきか、もしくはSQLiteの使用の考慮)
  • 追加ボタンを押したら一度ロックが入るようにする
  • JFormattedTextFieldは削除する(誤作動が多いため)
  • JListの追加の仕方のチェック(なんか順番が変)
  • 退院時サマリーの取得の仕方→parserを使って配列などのintermediateな形式にしてそこから取得できないかを考える
あとは一緒
  • デザインパターンを勉強してコーディングし直し
  • JFreeChart
  • SQLiteを使用する

2009年1月15日木曜日

デザインパターン

とりあえず症例子ちゃんの大まかなプログラミングは終わった。

やること
  • Bug取り(一番最後のデータを消すとエラー)
  • デザインパターンを勉強してプログラムの設計し直し
  • JFreeChartを使って推移を追えるようにすること
  • 将来的なことを考えて、データベースをSQLiteで設計できるかどうか考える(ただし、リレーショナルデータベースにするとちょっと管理が大変かも…)
  • 実践でのテストと要望を拾い上げること
とりあえずターゲット講座を聞いているが、この講座は非常にためになる。

まさに目からウロコ。

2009年1月13日火曜日

覚え書き 症例子ちゃん

  • JListのnewは消す(誤動作が多そう)
  • http://www.javadrive.jp/tutorial/joptionpane/index12.htmlを参考にして部分一致の検索と選択を考える
  • 日付やデータ入力にはjformattedtextfieldを使ってみる
  • http://www.javadrive.jp/tutorial/jframe/index11.htmlを参考にしてWindow Iconを設定する
  • JListの大きさをsetFixedCellHeightで出来ないか考える
  •  データの推移を表示する方法を引き続き考える

2009年1月10日土曜日

JavaアプリケーションをMacのapp形式にする方法

以下複数のサイトを見て実際にやった覚え書き
macでのapp作成方法

・Jar Bundlerを使う
/Developer/Applications/Java Tools/Jar Bundler.app/にある。なければDeveloper Toolをインストール?

・Use Macintosh Barにチェックを付ける
ここにチェックを付けると、メニューバーがウィンドウ内ではなく上のバーに入る。

・JVM versionを1.4+にする(ここ重要!)
どうしてだか分からないが、JVMを1.4*となっているのを1.4+に直さないとうまく起動してくれない。

・Additional Sourcesを適宜追加
読み込み時に必要なファイルetcなどを追加しておくと、Contents/Resources/Java/のなかにJarファイルと一緒に入っている

もしくは何もなしにファイルをアプリケーションを作成して、パッケージの内容を表示させると
Contents/Resources/Java/のなかにJarファイルが入っているのでその中に本来あるべきフォルダなどを入れた方が楽かも。
・Propertiesでbundle nameを付ける

2009年1月9日金曜日

それらしく

 
とりあえず大方の課題はクリアしたので、後は細かい設定とバグ取りがメイン。
それが終わればさらに追加したかった機能などを加えていくことにする。
今日TECOM第四回模試とターゲット講座のテキストを受領。

前回の第三回模試は恐ろしく難しかったので今回に期待。

後なぜかMECからMEC BOOKという付録がついてきた。何じゃそりゃ??と思ってみてみると、なんとまとめ本。

ターゲット講座もまとめ本だしこれ以上まとめ本が増えても困るんだけどなぁ…。

2009年1月6日火曜日

了解

今Eclipseを使って作っているのだがなぜジェネリックを使うとコンパイルエラーが出るのかと思ってかなり悩んだ。

実は2chのJava質問スレッドに同じような質問がされていて、やっぱりネットってすごいなと思った。

結論:

EclipseがSDK 1.5に対応していなかった。(コードチェックが1.4までしか選べなかった…)

というわけでジェネリックもあきらめて書き直すと、型を指定していなかったので、いたるところで型が違うと怒られる。

というわけでキャストを重ねて対処。

時間がなくなったのでここで終了。

2009年1月4日日曜日

経過

医学教育出版社のi模試という国試対策の問題を解いてみた。

激ムズ。

もちろん解ける問題はあったし、勉強不足なところも否定はしないけれども。
というわけで症例子ちゃんもかなり出来た。おしまい。

2009年1月3日土曜日

症例子ちゃんの設計2

クリアすべき課題
  • add_data() メソッドの作成:これまでいる患者さんに対して新規の患者さんを作成する
  • propertyの活用:add_data()を作った後に

    • 第一引数:add_data()を呼び出した時に前項目をコピーすれば1、しなければ0
    • 第二引数:ボックスの大きさの指定など

  • Fieldに対してListenerを付ける:逐次変更を保存するのは動作が遅くなりそうなので変更がなければthroughという方針
  • 左のPanelの作成:

    • 患者ID, 患者氏名・かな:検索可能にする
    • Case ID:これは表示するだけ(JLabelにして編集不可)
    • 記録日リスト:同一患者IDに対して記録日を呼び出し、JListにロードする。もしチェックされればopen_data(int data_num)を呼び出す。ちなみに最後はNEWにする。
    • 新規作成ボタン:new_data()の呼び出し
  • 上のパネルの作成:JToggleButtonで<< <> >>の設定etc
  • メニューバーの設定:Fileの書き出しなど
  • 設定ファイルの作成:データの保管場所などの設定ファイルの作成

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

去年の二月頃?から始まったこのブログも紆余曲折を経ながら年を越すことが出来たみたい。

と言ってもあまりにも趣味のページになりすぎて他人が見ることを全く想定はしていないけれども。

今年の目標
  • 医師国家試験に受かること:これだけは他を犠牲にしたとしても外せない。
  • 病理の勉強:具体的には病理組織の見方と鑑別診断とRobbins Basic Pathologyの続きを読む
  • 症例子ちゃんの作成:最終的にはJFreeChartを含めて経過などをvisualで追えるようにすること
  • 研修目標:とりあえず基本的なことが出来るようになる
最後の目標はかなりfuzzyなものになってしまったがそれはそれでしょうがないだろう。