Hatena::ブログ(Diary)

メモ帳 RSSフィード

2015-01-13 【Vim】自分的vimrc

""" =======================
""" complement
""" =======================
"" common
" ファイル別にプラグインとインデントを有効にする
filetype plugin indent on


" 文字補完
ab #i #include
ab #d #define


""" ===============================
""" set
""" ===============================
set noswapfile " スワップファイルを作らない
set backspace=2 " バックスペースでインデントや改行を削除
set showmatch " 対括弧の表示
set autoindent
set nostartofline " 行頭に移動しない
set number " 行番号表示
set wildmenu " コマンドライン補完
set showcmd " タイプ中のコマンドを表示
set showmode " 現在のモードを表示
set hlsearch " 検索語を強調表示(<C-L>で解除)
set grepprg=grep\ -nH\ $* " grep 使用


" 日本語に対応させる
set encoding=utf-8
set fenc=uft-8
set fileencodings=utf-8,usc-bom,iso-2022-jp,euc-jp,cp932,sjis
set fileformats=unix,dos,mac

" tab 系 = 2space
set expandtab
set shiftwidth=2
set softtabstop=2

" ターミナルマウスを使用
set mouse=a " マウスを有効
set guioptions+=a
set ttymouse=xterm2 " ターミナルマウスを使用

" バッファを保存しなくても他のバッファを表示できるようにする
setlocal hidden

"日本語の行の連結時には空白を入力しない
setlocal formatoptions+=mM

""□や○の文字があってもカーソル位置がずれないよう
if exists('&ambiwidth')
set ambiwidth=double
endif

"画面最後の行をできる限り表示する。
set display+=lastline

" コメントやブロックの折りたたみ可能
set foldmethod=syntax

""" =============================
""" map
""" ============================

" rake
nnoremap rake :!rake<Enter>

" ヘルプの設定
nnoremap <C-h> :<C-u>help<Space>
nnoremap <C-h><C-h> :<C-u>help<Space><C-r><C-w><Enter>

" ハイライトを削除
nnoremap <ESC><ESC> :nohlsearch<CR>

" unite-rails の設定
nnoremap <C-x> :Unite rails/

""" =============================
""" autocmd
""" ============================
" 保存時にrubyの構文チェック
" augroup rbsyntaxcheck
" autocmd!
" autocmd BufWrite *.rb w !ruby -c
" augroup END


augroup csyntaxcheck
autocmd!
" C/C++関数を強調表示
autocmd FileType c,cpp syntax match CFunction /[a-zA-Z_]\w*\s*\(\(\^*\]\s*\)\?(\s*[^\*]\)\@=/
autocmd FileType c,cpp syntax match CFunction /\*\s*[a-zA-Z_]\w*\s*\(\(\[\]\s*\)\?)\s*(\)\@=/
autocmd FileType c,cpp hi CFunction guifg=#ff0000 guibg=#ffff00
autocmd FileType c set omnifunc=ccomplete#Complete
augroup END

augroup templateload
autocmd!
autocmd BufNewFile repo.tex 0r ~/Dropbox/Document/tmp/tex/repo.tex
autocmd BufNewFile slide.tex 0r ~/Dropbox/Document/tmp/tex/slide.tex
autocmd BufNewFile ms.tex 0r ~/Dropbox/Document/tmp/tex/ms.tex
autocmd BufNewFile *.java 0r ~/Dropbox/Document/tmp/java.java
augroup END

autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP




""" =================================
""" color
""" =================================

syntax enable
colorscheme ron
"colorscheme darkblue
hi perlComment ctermfg=darkgray
hi perlDATA ctermfg=cyan
hi perlPOD ctermfg=darkred
hi Normal cterm=bold


let tlist_objc_settings='objc;P:protocols;i:interfaces;I:implementations;M:instance methods;C:implementation methods;Z:protocol methods'

"
inoremap <silent><ESC><ESC>:set iminsert=0<CR>




""" ===================
""" plugin
""" ==================
"" def Vundle
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" Vundleで管理するプラグインを書く
Bundle 'gmarik/vundle'

" github にあるプラグイン
Bundle 'Shougo/neocomplcache'
Bundle 'Shougo/vimshell'
Bundle 'Shougo/vimproc'
Bundle 'thinca/vim-visualstar'
Bundle 'nathanaelkane/vim-indent-guides'
Bundle 'tomtom/tcomment_vim'
Bundle 'thinca/vim-ref'
Bundle 'soh335/vim-ref-jquery'
Bundle 'soh335/vim-ref-pman'
Bundle 'ujihisa/ref-hoogle'
Bundle 'Shougo/neocomplcache'
Bundle 'Shougo/vimfiler'
Bundle 'Shougo/unite.vim'
Bundle 'basyura/unite-rails'
Bundle 'msanders/cocoa.vim'
Bundle 'vim-ruby/vim-ruby'
Bundle 'vim-scripts/errormarker.vim'
Bundle 'thinca/vim-quickrun'
Bundle 'hallison/vim-markdown'

" www.vim.org にあるプラグイン
Bundle 'project.tar.gz'
Bundle 'Markdown'

" それ以外にある git リポジトリにあるプラグイン
Bundle 'git://vim-latex.git.sourceforge.net/gitroot/vim-latex/vim-latex'

"" end Vundle

"" common
" ファイル別にプラグインとインデントを有効にする
filetype plugin indent on

"" def vim-latex
let g:tex_flavor='latex'
" スペルチェック(拡張子TeXのときON)
"autocmd FileType tex set spell
""end vim-latex

"" def YankRing.vim
" 履歴ファイルの保存先を変更
let g:yankring_history_dir = expand('$HOME')
let g:yankring_history_file = '.yankring_history'

" :YRShowコマンドの設定
" F7 で :YRShow を実行出来るようにする
nnoremap <silent> <F7> :YRShow<CR>
" 記録する履歴の件数を10件に制限する
let g:yankring_max_history = 10
" 履歴全体を見通せるようにウィンドウの高さを制限
let g:yankring_window_height = 13

"" end YankRing.vim

"" def yanktmp.vim
map <silent> sy :call Yanktmpank()<CR>
map <silent> sp :call YanktmpPaste_p()<CR>
map <silent> sP :call YanktmpPaste_P()<CR>
if has("win32")
let g:yanktmp_file = $TEMP. '/vimyanktmp'
endif

"" end yanktmp.vim

"" def indent-guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_color_change_percent = 15
let g:indent_guides_guide_size = 1

"" end indent-guides

"" def vimshell
" nnoremap zsh :VimShellInteractive<Space>zsh
nnoremap shell :VimShell

"" end vimshell


"" quickrun
nnoremap run :QuickRun

let g:quickrun_config = {}
" if strlen($rvm_bin_path)
" let g:quickrun_config['ruby'] = {
" \ 'command': 'ruby',
" \ 'exec': '$rvm_bin_path/ruby %s',
" \ 'tempfile': '{tempname()}.rb'
" \ }
" endif
"

let g:quickrun_config = {}
let g:quickrun_config['markdown'] = {
\ 'command': 'bluecloth',
\ 'exec': '%c -f %s'
\ }

"" end quickrun

"" necomplcache
let g:neocomplcache_enable_at_startup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_EnableUnderbarCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
"

let g:neocomplcache_enable_underbar_completion = 1
" "Define dictionary.
" let g:neocomplcache_dictionary_filetype_lists = {
" \ 'default' : '',
" \ 'vimshell' : $HOME.'/.vimshell_hist',
" \ 'scheme' : $HOME.'/.gosh_completions'
" \ }
" noremap <expr><C-e> neocomplcache#cancel_popup()
" imap <expr><TAB> neocomplcache#sources#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : pumvisible() ? "\<C-n>" : "\<TAB>"
"

2013-07-28

Ruby Goldに合格しました!

7月21日にRuby技術者認定試験のGoldを受けてきました.
結果は,無事に合格です.

今回は,100点満点中90点とGoldにしてはかなりの高得点でした.
勉強期間は4月からなので約3ヶ月ですが,時間は実質1ヶ月あったぐらいではないでしょうか?
社会人って勉強できる時間少ないですよね;(当たり前)

Gold受験にあたり,参考にした書籍は次のとおりです.

メタプログラミングRuby

メタプログラミングRuby

メタプログラミングRubyはGoldを受ける・受けないにかかわらず,読んでおいて損はないです.(良書)
話言葉形式でスラスラと頭の中に入ってきますし,ちょっと使ってみたい技がたくさん出てきます.
闇プログラマーの仲間入りが出来るかも?

本書には模擬問題がありますが,余り参考にしないほうが良いかも?
全部できて当たり前ではないとGoldは取れないと思います.
範囲の確認程度や最終確認に使用するのがおすすめ

プログラミング言語 Ruby

プログラミング言語 Ruby




Goldの範囲ですが,クラス・モジュールライブラリを理解していて,尚且つオブジェクト思考が分かれば問題なく合格できると思います.

ObjectクラスやModuleクラスは高確率で出ます.
ライブラリではSocketの組み込みクラスやThreadの生成,例外処理の動きなどがよく出てくる印象です.
Marshallのfreeze,dup,cloneメソッドは文章問題として出てきていました.



Ruby1.8系のサポートが終了してしまったので,「そろそろRuby技術者認定試験のバージョンが変わるのではないか?」という噂があります.
本試験はRuby1.8.7ですので,今のうちの受験をおすすめします.
善は急げ!!!!

2013-03-02

Ruby技術者認定試験Silver合格しました!!

2月24日にRuby技術者認定試験のSilver受けてきました!
結果は・・・・・

100点満点中94点!!

無事合格!!!!

2週間という短い準備期間でしたが無事に合格することができました.
合格秘話ということで,参考にした,書籍やサイトなんかを紹介したいと思います.



メソッドの機能や引数戻り値などをちゃんと覚えていなくてもプログラムって書けてしまうので,そこを重点的に覚えなおししていましたね.
実は,「非破壊的メソッドと破壊的メソッドの区別がつかない!!」と頭を抱えてしまいました.(暗記しましたが)

恐らく,Rubyがある程度書ける人出あれば,書籍の後ろに載っている問題を徹底的にやれば合格できるでしょう.
ほぼ,見た事あるような,似たような問題ばかりでした(笑)


次は,Gold頑張る

2013-02-24

rbenvでまだ対応していないRuby2.0.0-p0をrbenvで入れたい人たちへ

2月24日に等々Ruby2.0.0-p0がリリースされました!
お恥ずかしい話ですが,修論とか修論とか修論とかでリリース間近だったの知りませんでした.
あまりにもびっくりしすぎてどっかの喫茶店で,飲み物を吹き出しそうになったのはここだけの話です.

で.早速インストールしようと思いましたが,rbenvのインストール一覧にはもちろんありません.
ruby-build」を更新すれば!とか思いましたが,リリースしてすぐ対応されているわけでもなく・・・・

$ rbenv install
  ・・・
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-preview1
  ・・・


インストール方法

Ruby2.0.0-p0用の「ruby-build」というものがあるらしく,curlダウンロードしてきて,インストールするだけのようです.



インストール完了!とか思ったら失敗

$ rbenv install 2.0.0-p0                                                                                                                      [~]
Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...
/usr/local/bin/ruby-build: line 308: build_package_verify_openssl: command not found

BUILD FAILED

Inspect or clean up the working tree at /var/folders/n6/5r_577b127lczz3bft7x7jgr0000gn/T/ruby-build.20130225000908.63553
Results logged to /var/folders/n6/5r_577b127lczz3bft7x7jgr0000gn/T/ruby-build.20130225000908.63553.log

Last 10 log lines:
installing manpages:          /Users/shiori/.rbenv/versions/2.0.0-p0/share/man/man1
installing default gems:      /Users/shiori/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0 (build_info, cache, doc, gems, specifications)
                              bigdecimal 1.2.0
                              io-console 0.4.2
                              json 1.7.7
                              minitest 4.3.2
                              psych 2.0.0
                              rake 0.9.6
                              rdoc 4.0.0
                              test-unit 2.0.0.0

build_package_verify_opensslが無いらしいのですが・・・Ruby2.0.0-p0を入れるときに最新版のopensslもインストールされるようなのですよね.
実は,Homebrewインストールしている ruby-build のバージョンが違うことが原因!(詳細:404 not found - あわあわのブログ)
--HEADというオプションを付けてアップグレードします.

$ brew install --HEAD ruby-build
$ rbenv install 2.0.0-p0        
                                                                                                              
Downloading openssl-1.0.1e.tar.gz...
-> https://www.openssl.org/source/openssl-1.0.1e.tar.gz
Installing openssl-1.0.1e...
Installed openssl-1.0.1e to /Users/shiori/.rbenv/versions/2.0.0-p0

Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...
Installed ruby-2.0.0-p0 to /Users/shiori/.rbenv/versions/2.0.0-p0

はい成功!
入れ方は他にもあるようなので(これとか:自分でコンパイルしたRubyをrbenvで管理する(Mac OS X, Ubuntu) - Qiita)ヨサゲな方法で入れてRuby2.0の世界を楽しみましょう!

2012-06-27

Ruby で SQLite3 を使う

覚え書きということで.

環境

使い方

require 'sqlite3'

begin
# ファイルが見当たらなければ,新規作成
db = SQLite3::Database.new(ファイル名)

sql = "select * from テーブル名"
result = db.execute(sql)

puts result

rescue
STDERR.puts $!

ensure
db.close

end