rakeのDB関連タスク
Rails本などではDBを作る際にmysqladminを使いましょうと書かれているが、
調べてみると以下のタスクでDBの作成を行ってくれる
rake db:create
ただしconfig/database.ymlの設定が完了している必要がある。
DBを初期化したい場合には
rake db:migrate:reset
を実行する
db:migrate:resetを行うと、db:drop, db:create, db:migrateが順に実行される。
これらは以下に定義されている
rails-2.3.2/lib/tasks/databases.rake
ちなみにdb:resetというのもあるがこれはdb:drop, db:create, db:schema:loadが実行される
ただ、db:schema:loadというのは、ざっと見ただけではよく分からなかった
desc "Load a schema.rb file into the database" task :load => :environment do file = ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb" load(file) end
db/schema.rbはdb:migrate実行時に生成され、中身はdb/migrate/以下のものを統合している模様。
という事はdb:migrate実行後にmigrateを変更していない、かつDBを初期化したいという場合にdb:schema:loadを使用するdb:resetを使うべき?
db/schema.rbのコメントにもこれ使った方が早いぜとある。
# This file is auto-generated from the current state of the database. Instead of editing this file, # please use the migrations feature of Active Record to incrementally modify your database, and # then regenerate this schema definition. # # Note that this schema.rb definition is the authoritative source for your database schema. If you need # to create the application database on another system, you should be using db:schema:load, not running # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). # # It's strongly recommended to check this file into your version control system.
ついでに大雑把な訳:
このファイルは現状のデータベースから自動生成されます。このファイルを編集する代わりにデータベースの差分変更を行うActive Recordのマイグレーション機能を使ってください。そうすればこのスキーマ定義は再生成されます。
注意:このschema.rb定義はあなたのデータベーススキーマの信頼できる情報源です。他のシステムへこのデータベースを作成する必要があれば、1からすべてのマイグレーションを実行するのではなくdb:schema:loadを使用しましょう。すべてのマイグレーションを実行することには欠陥があり、継続して行える方法ではありません(訳注:なんで??)。(あなたは多くのマイグレーションを作成しているでしょうし、実行するには遅く、そして問題を起こす可能性が高いです。)
このファイルをバージョン管理システムへチェックインすることを強くお勧めします。
終わり
文字コード変換
nkf - Network Kanji Filter
http://sourceforge.jp/projects/nkf/
ntfだっけ?nftだっけ?と、いつもこれの名前を忘れてしまうのでメモ
名前が短くて良いのだが頻繁に名前を忘れてしまう…。
.vimrc
syntax on colorscheme darkblue filetype plugin on set nocompatible set number set autoindent set showcmd set showmatch set matchtime=2 set backspace=indent,eol,start set ruler set cursorline set visualbell set tabstop=2 set shiftwidth=2 set softtabstop=2 set smarttab set expandtab set incsearch set hlsearch set ignorecase set nobackup set nowritebackup set swapfile set pastetoggle=<F11> setlocal omnifunc=syntaxcomplete#Complete " QuickRunで横分割にする let g:quickrun_config = { '*': { 'split': ''}} inoremap <C-j> <DOWN> inoremap <C-k> <UP> inoremap <C-l> <RIGHT> inoremap <C-h> <LEFT> nnoremap n nzz nnoremap N Nzz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz nnoremap g# g#zz inoremap <C-@> <Esc> vnoremap <C-@> <Esc> cnoremap <C-@> <Esc> nnoremap <C-Space> <Esc> inoremap <C-Space> <Esc> vnoremap <C-Space> <Esc> cnoremap <C-Space> <Esc> nnoremap <ESC><ESC> :nohlsearch<CR>
JVMクラッシュダンプの解析
JVMのクラッシュダンプぐらい読めないとJavaのGeekじゃないそうです(汗
http://weblogs.java.net/blog/kohsuke/archive/2009/02/crash_course_on.html
ちなみにLinux上ではobjdumpでダンプします。
いつかしっかり理解したい…
クラスローダの動作確認
配備したクラスファイル、jarファイル等が意図した箇所からロードされているかを確認する際には-verbose:classオプションを利用する
java -verbose:class クラス名
すると以下の様な出力が標準出力に得られる
[Loaded sun.misc.URLClassPath$FileLoader$1 from /usr/java/jdk1.5.0_15/jre/lib/rt.jar]
verboseには他にjni gcが指定可能
オプションの詳細
java - the Java application launcher