平衡点


2008/08/30

_ extreme "Saudades de Rock", "waiting for the punchline"

ジワジワ効いてきている. やっぱ良いわー. Extreme. おもわず waiting for the punchline もひっぱり出してきましたが.

サウダージ・デ・ロック
エクストリーム, ビクターエンタテインメント, ¥4,498

ウェイティング・フォー・ザ・パンチライン
エクストリーム, ポリドール, ¥1

_ 天文台ミーティングにて

ログは <URL:http://www.gfd-dennou.org/library/dcmodel/workshop/2008-08-18/memo/dcmodel_2008-08-18.htm:title> ということで. 以下は不真面目な話.

計算機見学

NEC SX-9 と CRAY XT-4 を見学.

NEC SX-9

X の怪しい輝きが, なんか, いやらしい. X が点滅している動画は以下. X だけが目立つと OSX みたいな... <URL:http://video.google.com/videoplay?docid=-6541241200825960536:movie>

CRAY XT-4

壮観. 前面は CfCA のロゴ入り 前面のフロントパネルを開けたトコロ. ブレード一つに QuadOpteron が 4 つ. ピカピカ光ってます. 計算中です. 背面. 通信ケーブルが凄いことになってます.

多聞で深大寺蕎麦

毎度恒例. 前回は2008/01/01 の日記を参照. ここは盛りが豪勢な事で有名.

N 多さん注文のざる大盛り.

私が注文したつけとろ大盛り. 器がなにか間違っている気がしないでもない.

N 多さんはここでギブアップでした:

私が注文したつけとろはあっさり完食してしまった. I 藤さん曰く「今日は盛りが少ない」らしい. たしかにそんな気はした.

_ Rails で文献管理システムを作ってみるよ(1/n)

この手の話はドコにでもありそうですが(笑) 近場で Rails 弄り始めた人々がいるので, 以前から作っていたコードとかを晒し始めてみます.

やりたい事はそんなに大変な事ではなくて.

  • 論文(電子ジャーナル)を管理したい.
  • 取得した PDF を適切なディレクトリに保管したい.
  • 著者名, ジャーナル名, タイトル名で検索したい.
  • 某所で仕様している文献カード形式(テキスト)で情報を出力したい.
  • 選択したファイルの文献情報を tex の bib 形式で出力したい.
  • 簡単なコメント, レビュー文書を元の論文に関連づけて保存した.

かな. 見栄えもまあそれなりに弄りたいですけどね.

環境構築

OS は Debian GNU Linux(testing) です. 以前 <URL:http://www.gfd-dennou.org/arch/davis/gfdnavi/:title> で, Debian で Rails 動かすために書いたドキュメントがありますので, それを参考に -> <URL:http://www.gfd-dennou.org/arch/davis/gfdnavi/doc/install/gfdnavi-on-debian-etch.htm:title>

基本的には, rubygems のみ Debian パッケージを使用して, それ以外は gem 経由で install します.

$ ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i486-linux]
$ gem list
*** LOCAL GEMS ***
actionmailer (2.1.0)
actionpack (2.1.0)
activerecord (2.1.0)
activeresource (2.1.0)
activesupport (2.1.0)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gcalapi (0.1.1)
gem_plugin (0.2.3)
hpricot (0.6.161)
icalendar (1.0.2)
mongrel (1.1.5)
mongrel_cluster (1.0.5)
rack (0.4.0)
rails (2.1.0)
rake (0.8.1)
refe (0.8.0.3)
sqlite3-ruby (1.2.4)
tmail (1.2.3.1)

関係無いものもまざってますが, 気にせずに.

プロジェクトの開始, リポジトリの作成

作るプログラムの名前は bookshelf にします. 今の所論文だけですけれど, 蔵書の管理もしたいので.

$ rails bookshelf
     create
     create  app/controllers
     create  app/helpers
     create  app/models
     create  app/views/layouts
     ...
     create  log/server.log
     create  log/production.log
     create  log/development.log
     create  log/test.log

git リポジトリの作成

$ cd bookshelf
$ git init

gitignore の作成

$ cat .gitignore
 #*#
 *.*~
 *~
 *.#*
 *.bk
 *.bak
 tags
 log/*.log
 tmp/**/*
 .DS_Store
 doc/api
 doc/app 
$ touch tmp/.gitignore
$ touch log/.gitignore

リポジトリにファイルの追加とコミット

$ git add .
$ git commit -m "initial import"

サーバへ転送するための裸(bare)リポジトリの作成, 転送

$ git clone --bare . ~/tmp/bookshelf.git
$ scp -r ~/tmp/bookshelf.git server@git_repos/

ちなみに, リポジトリの取得, マスターへの反映は

- 取得 - 
$ git clone ssh://[アカウント]@server/[git リポジトリの場所]
- 更新の反映 -
$ git push ssh://[アカウント]@server/[git リポジトリの場所]

git のコミットはローカルにしか反映されないので, マスターへの反映を適宜行なう必要あり.

Article テーブルの作成

bibtex の形式に変換するための情報として, Article には最低限

  • 論文タイトル
  • 著者(複数)
  • 雑誌名
  • 発行年
  • ボリューム
  • ページ(開始と終了)

が必要. 著者名はそのうち別のデータベースにするけど. とりあえず.

$ ./script/generate scaffold Article \
 title:string \
 authors:string \
 journal:string \
 year:datetime \
 volume:integer \
 start_page:integer \
 end_page:integer
...

これで, 一通り足場(scaffold)ができる. db/migrate/XXXXXXXX_create_articles.rb[XXXXX は日付による timestamp] によれば

class CreateArticles < ActiveRecord::Migration
 def self.up
   create_table :articles do |t|
     t.string :title
     t.string :authors
     t.string :journal
     t.datetime :year
     t.integer :volume
     t.integer :start_page
     t.integer :end_page

     t.timestamps
   end
 end

 def self.down
   drop_table :articles
 end
end

となっている. データベースの作成は

$ rake db:migrate

これで

$ ./script/server 

として, ブラウザで http://localhost:3000/articles にアクセスしてみると一応それっぽい画面ができている. で, この状態では [New Article] で情報が全く無い論文データが作成できてしまう. なので, model の方に最低限の validation をかけておく. 少なくとも title, author(s), year は必須項目にしたい. app/models/articles.rb を弄る. 結果は以下.

class Article < ActiveRecord::Base
  validates_presence_of(:title, :authors, :year)
end

()をつけるのは, コーディングスタイルとしてはどうなんだろう. 個人的にはつけた方が好みなんだけど, ものの本ではつけてないなぁ... これで, 空の文献データを作成しようとすると, ちゃんと怒られる.

次回

まだまだ始めたばっかなのでやることイッパイあるよー

  • test の修正, 追加
  • 作成時
    • year, (start|end)_page を integer で入力, チェック
    • year は Date オブジェクトを渡すようにする. 選択できるように.
  • 見栄えの修正その (1/n)
  • PDF のアップロードを可能にする.
    • 置き場のディレクトリは文献データから適宜決定する.
    • 文献データを更新した際は, PDF 置き場も変更する?
    • 存在しない文献データのディレクトリを適宜フラッシュする?

の予定.

今日の参考文献


連絡先など
最近の日記
  • 2024/10/09
    • 1. Mastodon でのメール通知, というか Exim4 と Apparmor
  • 2024/06/19
    • 1. WSL2 での gpg-agent, ssh-agent
  • 2024/06/18
    • 1. WSL で Windows 側のフォントを利用する
  • 2024/06/17
    • 1. WSLとWindowsの時刻同期
  • 2024/06/12
    • 1. wsl2 で systemd
    • 2. wslg の設定
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|04|05|06|10|
Back to Top ▲