トップページ | 2008年3月 »

2008年2月

2008年2月20日 (水)

makeがエラー

configureしてmakeしたら、エラーになった。
同じソース前にmakeした時はうまくいったので、なんでかなーと
一日近くはまった結果、ようやく判った。

configureて../src/configureのように相対パスで実行しないとダメなのね。知らずに/home/atico/src/configureのように絶対パスで実行すると、srcdirが.//home/atico/src/configureになってしまい、そのせいで参照している他のmakeファイル
なんかが読みこめずにエラーになってました。

疲れたー。

| | コメント (1) | トラックバック (0)

2008年2月18日 (月)

windowsで必ず入れるフリーソフト

vim
究極のエディタ。emacsは至高?
お気に入り機能:syntaxカラー、補完,検索、置換、マルチウィンドウ、レジスタ、ビジュアルモードによるクリップボードコピー、整形、tagジャンプ etc.
必ず入れるplugin: taglist,Chalice,hown

fenrir
最速のアプリ起動ランチャー。
好きなキー(私はCtrl+q)で起動し、アプリ名の最初の文字の入力のみで呼びだしたアプリ起動。便利すぎ。

colinux

お気楽、極楽なlinux仮想環境。
ファイル切り変えるだけで簡単にLinuxの環境やバージョンを切り変えられるため、テストにも便利。

WinDeskWide
仮想ディスクトップで平行に仕事をしていても、タスク同士にデスクトップを分けることで、ごちゃごちゃしない。

AltIME
CtrlキーとCapsLockキーを入れ変えるため。
もう戻れません。vimでよく使うEscキーはCtrl+[で代用できるし。

電信8号
好きなエディタが使えるメーラー。
正規表現による受信フォルダの切り分けも便利。

AN HTTPD
本来はWebサーバだが、proxy機能もあり、専ら
私はproxy機能を使用。
colinuxとのネットワークと実際のネットワークとの架け橋をさせるため。

PopTray
メールチェッカー。タスクトレイに入るため、邪魔にならない。
英語なのが残念。本文も文字化けするが、タイトルは文字化けしないため、メールチェックには十分。

cygwin
基本的には、colinux上で済ませるが、grepとdiffをvimから使いたいため。

後、firefoxやteretermやffftpやrubyは定番すぎるため、割愛。

| | コメント (0) | トラックバック (0)

2008年2月17日 (日)

windowsのgvimの設定

 function MakeNewWindow()
  let s:cmdstr = '!start gvim.exe -R "' . expand("%:p") . '" +'. line(".") 
  execute s:cmdstr
  return
endfunction
function ExplorerStart()
  let s:dir = expand("%:p:h")
  let s:directory=substitute(s:dir,"/","\\","g")
  execute "!start explorer /e,".s:directory
endfunction
function Iestart()
  let url=expand("%:p")
  execute "!start \"C:\\Program\ Files\\Internet\ Explorer\\IEXPLORE.EXE\"\ " . url
endfunction
function ZeroCount(strNum)
  let s:slen = strlen(a:strNum)
  let s:i = 0
  let s:zeroCount = 0
  while s:i < s:slen
    if a:strNum[s:i] !~ "0"
      break
    endif
    let s:zeroCount = s:zeroCount+1
    let s:i = s:i + 1
  endwhile
  return s:zeroCount
endfunction
function GetNextNum(moto,inc)
  let s:digits = a:moto
  let s:strNum = ZeroCount(s:digits)
  let s:i = 0
  let s:digits = strpart(s:digits,s:strNum)
  let s:chrCnt = strlen(s:digits)
  let s:digits =s:digits+a:inc
"桁上がりした
  if s:strNum != 0
    if strlen(s:digits) > s:chrCnt
      let s:strNum = s:strNum - 1
    elseif s:chrCnt > strlen(s:digits)
      let s:strNum = s:strNum + 1
    endif
  endif

  while s:i < s:strNum
    let s:digits = "0" . s:digits
    let s:i = s:i + 1
  endwhile
  return s:digits
endfunction
function EditNext(inc)
  let s:nowFN =expand("%:r")
  let s:fnStr=substitute(s:nowFN,'\(\D*\)\d\+$',"\\1","g")
  let s:fnNum =substitute(s:nowFN,'\D*\(\d\d*\)$',"\\1","g")

  let s:nowNum = GetNextNum(s:fnNum,a:inc)

  let s:newFN = "e ".s:fnStr.s:nowNum.".".expand("%:e")
  execute s:newFN
  return
endfunction
function Autoftp()
  let s:nowDir = substitute(expand("%:p:h"),"c:\\(.*\\)$","\\1","")
  let s:nowFile = expand("%:p")

  let s:fn  = "c:\\ftpcmd.txt"
  if filereadable(s:fn)
    let s:ret = delete(s:fn)
  endif
 
  execute "sp ".s:fn
  call LineAdd("open サーバのIP")
  call LineAdd("user")
  call LineAdd("ユーザ名")
  call LineAdd("パスワード")
  call LineAdd("ascii")
  call LineAdd("cd ".s:nowDir)
  call LineAdd("put \"".s:nowFile."\"")
  call LineAdd("quit")
  execute "w"
  execute "q"
  execute "!ftp -n -s:".s:fn
endfunction
function Ftpget()
  let s:nowDir = substitute(expand("%:p:h"),"c:\\(.*\\)$","\\1","")
  let s:nowFile = expand("%:t")

  let s:fn  = "c:\\ftpcmd.txt"
  if filereadable(s:fn)
    let s:ret = delete(s:fn)
  endif
 
  execute "sp ".s:fn
  call LineAdd("open サーバのIP")
  call LineAdd("user")
  call LineAdd("ユーザ名")
  call LineAdd("パスワード")
  call LineAdd("ascii")
  call LineAdd("cd ".s:nowDir)
  call LineAdd("get \"".s:nowFile."\"")
  call LineAdd("quit")
  execute "w"
  execute "q"
  execute "!ftp -n -s:".s:fn
endfunction
function LineAdd(linestr)
  let s:lineCount = line("$") - 1
  let s:ret = append(s:lineCount,a:linestr)
endfunction
function Diffs(fname)
  let s:cfilename = a:fname . '\' . expand("%:t") . "~"
  let s:cmdstr = "diffsplit " . s:cfilename
  execute s:cmdstr
  return
endfunction
set vb t_vb=
set guioptions+=a
set guioptions-=T
set guioptions-=m
set guicursor=a:blinkon0
set shellslash
set backup
set backupdir =c:/tmp
ab diffs call Diffs("c:/tmp")<CR>
au BufEnter * execute ":lcd " . expand("%:p:h")
autocmd BufRead *.txt nm <C-n> :call EditNext("1")<CR>
autocmd BufRead *.txt nm <C-p> :call EditNext("-1")<CR>
colorscheme torte
ab vimed sp ~/_gvimrc
nm <C-j> :call MakeNewWindow()<CR>
cm <C-o> call ExplorerStart()<CR>
let $PATH=$PATH.";c:/cygwin/bin"

解説
MakeWindow
現在開いているファイルに対して、新しくgvimを立ち上げて、読み取り専用で開く。先に立ち上げたvimで内容を更新しても、新しく立ち上げたウィンドウのほうは変更されないため、更新内容を確認しつつ編集するのに便利。

ExplorerStart
今開いているファイルのディレクトリをエクスプローラで開く。
ファイル名を変更したり、コピーをしたりするのに便利。

Iestart
今開いているファイルをInternetExplolerで開く。HTMLやXMLを編集している時に便利

ZeroCount(Number)
先頭をゼロパディングされた数字の先頭の0の数を返す。

GetNextNum(moto,inc)
motoにinc分の数字を増減させた数字を返す。ゼロサプレスされた数字はゼロサプレスを考慮して返す。incに負の数が与えられた場合は減少。

EditNext(inc)
現在のファイル名の末尾の数字をinc分増減したファイル名を返す。電信八号(メールの読み書きに好きなエディタが使えるメーラ)のファイル形式が数字.txtのため、次に受信したファイルを読みたい場合に、call EditNext(1)のように呼び出すことで次のファイルを読める。call EditNext(-1)で前のファイルを読める。

Autoftp ※サーバ名 ユーザ名 パスワードを実際に合わせる必要あり。
現在編集しているファイルをサーバにアップロードする。
その規則はwindows側のc:\直下をサーバの/(ルート)に変換してファイルをアップロードする。
例えば、c:\www\public\html\index.htmlを編集している状態で:call Autoftpを実行すると、サーバの/www/public/html/index.htmlにアップロードする。

Ftpget()
Autoftpとは逆にサーバから現在編集しているファイルをダウンロードする。
現在編集しているファイルが強制的にサーバのファイルに置き換えられるため要注意

LineAdd(string)
stringを現在開いているバッファの最後に追記する。

Diffs(バックアップディレクトリ名)
現在編集しているファイルとバックアップディレクトリにあるファイル名~とのdiffsplitを行う。

ビジュアルベルをOFF
set vb t_vb=
ビジュアルモードで選択している箇所をクリップボードにコピー
set guioptions+=a
ツールバーを表示しない。
set guioptions-=T
メニューバーを表示しない。
set guioptions-=m
カーソルの点滅を行わない。
set guicursor=a:blinkon0
パスの区切り文字を"\"ではなく"/"にする。
set shellslash
ファイルを変更した際にバックアップを行う。
set backup
バックアップファイルを置くディレクトリ名
set backupdir =c:/tmp
:diffsのみで現在のファイルと変更前のファイルとのdiffをとる。
ab diffs call Diffs("c:/tmp")<CR>
編集しているファイルの場所をカレントディレクトリとする
au BufEnter * execute ":lcd " . expand("%:p:h")
拡張子が.txtのファイルの場合Ctrol+nで現在のファイル名+1を開く(電信八号用)
autocmd BufRead *.txt nm <C-n> :call EditNext("1")<CR>
拡張子が.txtのファイルの場合Ctrol+pで現在のファイル名-1を開く(電信八号用)
autocmd BufRead *.txt nm <C-p> :call EditNext("-1")<CR>
テーマカラーをtorteに設定
colorscheme torte
:vimedで新しいバッファにgvimの設定ファイルを開く
ab vimed sp ~/_gvimrc
:Ctrol+jでもうひとつ新しいgvimのウィンドウを開いて現在編集しているファイルを開く
nm <C-j> :call MakeNewWindow()<CR>
::(コロン)+Ctrol+oで現在開いているファイルのディレクトリをエクスプローラで開く
cm <C-o> call ExplorerStart()<CR>
環境変数のPATHにcygwinのパスを追加
(はじめからcygwinのパスを通しているとwincvsがエラーになるため。)
let $PATH=$PATH.";c:/cygwin/bin"

| | コメント (0) | トラックバック (0)

2008年2月15日 (金)

連番によるバックアップ

cp ファイル名 ファイル名.bk
みたいな作業が多くなり、いちいちファイル名を2回入力
するのが面倒に感じ、
bk ファイル名 [
ファイル名 ...]
により、ファイル名+番号のバックアップを行えるような
シェルスクリプトを作成した。
(すでにファイルがあった場合は最後の番号+1にする)
いちいちsubversionに登録するには及ばんよという時に
便利かも。
私はPATHの通ったディレクトリにbkの名前で下記のスクリプト
を保存している。

無保証です。問題が起こっても、保証しません。
#!/bin/sh

while [ $# -gt 0 ]
do
  if [ ! -f $1 ]
  then
    echo "no exist $1."
    shift
    continue
  fi
  i=1
  while [ -e "$1.$i" ]
 do
    let i=$i+1
  done
  /bin/cp $1 $1.$i
  shift
done

| | コメント (0) | トラックバック (0)

2008年2月13日 (水)

linuxの.vimの設定

.vimrc
set sw=2
set ts=2
set softtabstop=0
au  BufEnter *   execute ":lcd " . expand("%:p:h")
ab vimed sp ~/.gvimrc
set ignorecase
set fileencodings=utf-8,iso-2022-jp,cp932,euc-jp
set termencoding=utf-8
set fileencoding=utf-8
set encoding=utf-8
set formatoptions-=or

.gvimrc

set lines=80       " ウインドウの高さ
set columns=180    " ウインドウの幅
set guifont=IPAゴシック\ 16
set linespace=3
set antialias
set guioptions-=m
set guioptions-=T
let g:rubycomplete_buffer_loading = 1
let g:rubycomplete_classes_in_global = 1

| | コメント (0) | トラックバック (0)

2008年2月 8日 (金)

複数ファイルのファイル名変更

昨日は複数ファイル中の文字列の置き換えを行いましたが、今回は複数ファイルのファイル名自体の変更を行う方法についてです。
例えば、デジカメで撮った写真のファイル名は、日時+連番.jpgなどの無機質なファイル名になってしまいますが、ファイル名の先頭に誕生会や熱海旅行などの文字列を追加したい場合、いちいちひとつずつファイル名を変換していくのは面倒です。
そういった場合は、私は下記のようにします。

1.  find . -name -type -f > rename.sh
カレントディレクトリ配下のファイル一覧を取得
別にコマンドはなんでもいいが、とにかく変換したいファイルの一覧をファイルに書き出す。

2. rename.shの内容を自分の好みのエディタでmvコマンドになるように編集。
vimの場合、ファイル名の先頭に運動会という文字列をつけたい場合は、
%s/\(.*\)/mv \1 運動会\1/
とすれば、
mv 20080210_001.jpg 運動会20080210_001.jpg
mv 20080210_002.jpg 運動会20080210_002.jpg
のようなシェルスクリプトが作成できる。
別に置換を行わなくても、単にコピペや編集だけでも大幅に手間が減る。

3. sh rename.sh
後は単純にできあがったシェルスクリプトを実行するだけだ。

私は8年ぐらいIT業界にいるが、こんな単純なことに気づいたのは、ここ1年ぐらいだ。
それまで、vimのディレクトリエディタのスクリプトであるexplorer.vimを直接ファイル名を書き変えられるようにスクリプトを改造するなど手間暇かけてまわりくどいことをしていた。おまけにその場合カレントディレクトリしかファイル名の変換対象にならないし。きっかけはvim7になって、explorer.vimが使われなくなったせいで、今までのように単にスクリプトファイルを置き換えるだけではいかなくなり、どうしたもんかと悩んているときに、あっとひらめいた。
コマンドつなげるにはパイプっていう固定概念がこんなことさえ気づかなくしていた。

| | コメント (2) | トラックバック (0)

2008年2月 7日 (木)

rubyで複数ファイルの文字列置換

単一ファイルの文字列の置き換えは簡単にエディタ(VIM)でできるんですが、複数のファイルだった時にいつも面倒だなーと思っていたので、rubyで作ってみました。

使い方

replace.rb [option] 変換対象正規表現文字列(//はつけない) 変換する文字列  ファイル名[ファイル名...]

オプション

-c      各変換に対して、変換前に変換していいかを尋ねる。(y/n/a/q)

-i       変換対象正規表現文字列の大文字、小文字を区別しない。

-m     複数行対応(”.”にCR/LF文字を含める。)

-h      ヘルプメッセージを出力して終了

-b      バックアップファイルの拡張子を指定(デフォルトは.bef) もし、-bのみで拡張子を指定しなかった場合はバックアップを行なわない。

(例)拡張子が.rbのファイルの/usr/local/bin/rubyを/usr/bin/rubyに変換する場合

find . -name '*.rb' |xargs ./replace.rb /usr/local/bin/ruby /usr/bin/ruby

無保証です。使用に問題があっても、責任をとりません。

replace.rb

 #!/usr/bin/ruby
require "optparse"

$opt_confirm = false
$opt_ignore_case = false
$opt_multi_case = false
$opt_ext = ".bef"
def write_data(file,orig,data)
  if orig == data
    return
  end
  if $opt_ext
    File.open(file+$opt_ext,"w") do |f|
      f.write(orig)
    end
    $stdout.puts "backup #{file} to #{file+$opt_ext}"
  end
  File.open(file,"w") do |f|
    f.write(data)
  end
  $stdout.puts "renewal #{file}"
end

 
begin
  parser = OptionParser.new do |opt|
   opt.banner = "Usage: #{File.basename($0)} Source(Type:RegularExpression) Destination(Type:String) File [File]..."
   opt.on("-c","--confirm","confirm y/n per replace") {|o|
      $opt_confirm=true
    }
    opt.on("-i","--ignorecase","ignore case for replace") {|o|
      $opt_ignore_case=true
    }
    opt.on("-m","--multiline",'"." muches CR/LF') {|o|
      $opt_multi_case=true
    }
    opt.on("-h","--help","print this message and quit") {|o|
      puts opt.help
      exit 0
    }
    opt.on("-b","--backup [EXT]",String,'extension backup file(default .bef) if you need not backup,use -b only') {|o|
      $opt_ext = o
    }
    opt.parse!(ARGV)
  end
rescue OptionParser::ParseError => err
  $stderr.puts err.message
  $stderr.puts parser.help
  exit 1
end
if ARGV[0] == ""
  ARGV.shift
end
if ARGV.length < 2
  $stderr.puts parser.help
  exit 1
end
opt=0
if $opt_ignore_case
  opt = Regexp::IGNORECASE
end
if $opt_multi_case
  opt += Regexp::MULTILINE
end
if opt == 0
  orig = Regexp.new(ARGV.shift)
else
  orig = Regexp.new(ARGV.shift,opt)
end

dest = ARGV.shift

ARGV.each do |file|
  unless File.file?(file)
    $stdout.puts "no exist #{file}"
    next
  end

  lines = nil
  orig_lines = ""
  File.open(file,"r") do |f|
    orig_lines = f.read
  end
  newlines=""
  lines = orig_lines
  unless $opt_confirm
    newlines = lines.gsub(orig,dest)
    write_data(file,orig_lines,newlines)
    next
  end

  while lines && orig.match(lines)
    bef_str = $`
    after_str = $'
    match_str = $&
    if $opt_multi_case
      $stdout.write "#{file} replace #{match_str} to #{dest} y/n/q/a ?"
    else
      sPos = lines.rindex("\n",$~.begin(0))
      if sPos == nil
        sPos = 0
      else
        sPos += 1
      end
      ePos = lines.index("\n",$~.end(0))
      line = lines[sPos...ePos]
      $stdout.write "#{file}:#{line} replace #{match_str} to #{dest} y/n/q/a ?"
    end
    case $stdin.gets
    when /q/i
      newlines += lines
      write_data(file,orig_lines,newlines)
      exit
    when /n/i
      newlines += bef_str
      newlines += match_str
      lines = after_str
      next
    when /a/i
      $opt_confirm = nil
      newlines += lines.gsub(orig,dest)
      break
    else
      newlines += bef_str
      newlines += dest
      lines = after_str
    end
  end
  if $opt_confirm
    newlines += lines if lines
  end
  write_data(file,orig_lines,newlines)
end

| | コメント (0) | トラックバック (0)

Railsで簡易カレンダ

今、体重管理のためのWebアプリをRailsの勉強をかねて、作ろうとしている。
カレンダにその日の体重を表示できるようにしたいのだが、 Rails カレンダでgoogle先生に質問したが、よく解らない回答 だったので、自分で作ってみた。

無保証です。使用により不都合が起きても責任を取りません。

コントローラ側

def list_cal
    if params[:date]
      begin
        indicate = params[:date].split("-")
        session[:date] = Date.new(indicate[0].to_i,indicate[1].to_i,indicate[2].to_i)
      rescue
        flash[:notice] = "Invalid #{params[:date]}"
      end
    end
    unless session[:date]
      session[:date] = Date.today
    end
    @date = session[:date]
  end
end

list_cal.html.erb

<%= link_to('先月',:action=>'list_cal',:date=> @date.last_month) -%>
<span><%= @date.year %><%= @date.month%></span>
<%= link_to('来月',:action=>'list_cal',:date=>@date.next_month) -%>
<table>
  <thead>
    <tr>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
    <% cnt = 0 -%>
    <% @date.beginning_of_month.beginning_of_week.yesterday.upto
(@date.end_of_month.next_week(:monday).yesterday.yesterday) do |d| -%>
      <% if cnt != 0 && cnt % 7 == 0 -%>
      </tr>
      <tr>
      <% end -%>
      <td> <%=d.day-%> </td>
      <% cnt+=1 -%>
      <% end -%>
    </tr>
  </tbody>
</table>

現時点ではCSSまったくつけていないが、これから土、日の色を変えたり等を

行う予定。

さらに祝日もhttp://www.h3.dion.ne.jp/~sakatsu/holiday_logic4.htm#Ruby を利用させていただいて、表示できるようにする。

日付はリンクにして、その日の体重等を書き込む入力画面に遷移する予定。

今週の土曜日が解らなかったので、来週の月曜日の昨日、昨日にしているのが、 かなりダサい。

イメージ  2008年4月

30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3

| | コメント (0) | トラックバック (0)

RESTの意味が解りかけてきた。

RESTって何が嬉しいのかいまいち判っていなかった。 RESTの特徴にステートレスが挙げられるが、この ステートレスっていう用語が今いちピンと来ていなかった。

HTTPはそもそもステートレスだし。

と気になって、今日時間があったからネットで調べてみた。 yohei-y:weblog: ステートレスとは何か を読んで、始めてピンと来た。 ステートフルの例としては、mixi のトップページが挙げられる。

mixiのトップページのURLは誰もが、http://mixi.jp/home.pl である。ただ、アクセスする人によって、内容はまったく違う。

Aさんが開けば、Aさんの日記だし、Bさんが開けば、Bさんの日記だ。 なぜかと言えば、ログイン以降、自分のIDをURL以外の方法でサーバに 送っているからだ。

この利点はみんなが同じアドレスを使えるということが利点である。

ただ、この方法が好ましくない場合もある。

例えば、旅行のWebページがあるとする。

私が旅行の条件に料金や国を設定して、検索ボタンを押すと、 条件にあった結果画面が表示された。

一緒に旅行に行く友人に私が結果画面のURLを送って、友人は そのURLをアクセスするとエラーが表示された。

なぜなら、私が検索ボタンを押した時にどういう条件かをサーバに 送信したため、サーバはその条件に基づいて、結果画面を表示できる のに対し、友人は検索を行っていないため、どういう結果を表示したら いいのか解らないためだ。

このように検索状態→結果表示状態という2つの状態があり、いきなり 結果には行けないという仕組みがステートフルと呼ばれる

では、ステートレスはどうか?

私が旅行の条件に料金や国を設定して、検索ボタンを押すと、 条件にあった結果画面が表示されるまでは一緒だ。 ただし帰ってくるURLに検索条件の情報も含まれている。

(例)

ステートフルの場合の結果画面のURL

http://適当/kekka.html

ステートレスの場合の結果画面のURL

http://適当/kekka.html?country=india&max_cost=100000

(10万円の予算でインドに行くツアー)

このステートレスの場合、URLを友人に送ったとしても、 URLに検索情報が含まれているため、友人も検索せずに、いきなり 結果画面を見ることができる。

なるほど、そういうことかー。

ってリンク先のWebページを書いている人は、今読んでいる「RESTful Webサービス」 の監訳している山本 洋平さんだった。

この方の書いたREST入門 はめちゃくちゃ解りやすい。

残念ながら、本のほうは、3章のS3の解説で挫折中。

気になって、めくると1章から3章まではREST的なWebサービス の利用プログラムの実装 についてで、4章からようやくRESTの概説が始まっている。 普通は逆だと思うんですが、どういう意図があるのだろう? ともかくようやく判ってきたから、読みすすめられそうだ。

| | コメント (0) | トラックバック (0)

PHP,Ruby論争

Rubyの発案者である、まつもとゆきひろさんの日記に
「PHPがいかに駄目な言語か、という話」

がでたことから、Ruby VS PHPの論争が巻き起こっている。

「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い

多忙であるまつもとさんが丁寧に反論に対してコメントされている姿に感動。

これだけの論争になるっていうのは、やっぱり自分が手間暇かけて、学習した言語が落ち目になってたまるか!という気持ちの表れだろう。生活もかかってるし。

私も、Java->Perl->PHP->Rubyと変遷してきた。

Javaを離れた理由
メソッド呼び出す構文が長すぎ。
マシンを変えた場合の環境の移行が面倒。
XMLの設定が面倒

Perlから離れた理由
オブジェクトを作るのに無名ハッシュにblessっていう意味がよく解らず使っていた。
モジュールの最後に1を記述することに違和感を感じていた。
printでHTMLを出力していて、自分のコードでさえ見失うことがあった。

PHPから離れた理由
PHPに関して不満があったという訳ではなく、逆にHTMLに直接スクリプトを埋め込むだけでいいから、実行しなくても、レイアウトだけ見れたり便利だなと思っていた。ただいつかはMVCモデルを実践しないとと思いながら、ロジックとビューが一緒になっている気持ち悪さを感じていた。以前からRubyをシェルスクリプトがわりに使用していて、そこにRailsが一大旋風としてやってきて、それに乗っかかった。
Rubyに詳しくなれば、Webアプリ以外にも役立てるし。

勝手ながら、Railsがトランザクションやマルチスレッド対応になって、それが主流になってほしい。

もういい加減落ち着きたい。

| | コメント (0) | トラックバック (0)

最近よく耳にする単語

Restful………SOAPを使用せず,URLの表現によってリソースと呼ばれる情報単位を操作するWebサービス

agenda……… 予定

defer…………延期 

google先生… googleに敬愛を込めたいい方


Restfulは概念は難しいけど、実装は簡単。主流になると見た。

「agenda,deferは日本語でいいやん」といつも思うのに、職場ではそういう習わしみたいです。

google先生は、始めて耳にした時も違和感がなかった。なんでも知ってるし。

| | コメント (0) | トラックバック (0)

トップページ | 2008年3月 »