tag:blogger.com,1999:blog-82209866957168672632024-02-03T05:34:24.355+09:00Scrawl for Someone誰かのための技術メモAmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-8220986695716867263.post-59601828167359091712014-10-25T08:24:00.001+09:002014-10-25T08:24:37.336+09:00Sinatraで多言語をサブディレクトリ風に管理久しぶりの投稿です。<br />
<br />
最近、Sinatraで多言語化することがあったので、<br />
どんな感じにやったかの共有です。<br />
<br />
元々、sessionに保存された言語情報から同じURLでも言語を切替えて表示してたのですが、<br />
<a href="https://support.google.com/webmasters/answer/182192?hl=ja#1" target="_blank">google的に微妙っぽい</a>のでサブディレクトリ風に管理することにしました。<br />
http://hogehoge.com/ => http://hogehoge.com/ja/<br />
で、その場合に、いままでのルーティングを極力変更しないで移行したかったので、<br />
以下の様な記述をbeforeフィルタに追加しました。<br />
<br />
<pre> request.path_info =~ /^\/([A-z]{2})\//
supported_langs = ["ja", "en"]
if supported_langs.include?($1)
session[:lang] = request.path_info[1..2].to_sym # /en/aaa => en
request.path_info = request.path_info[3..-1] # /en/aaa => /aaa
else
if session[:lang].nil?
session[:lang] = r18n.locale.code.downcase # 適当に言語情報取得
end
# 言語に依存しないスクリプト周りやPOST通信などはリダイレクトしない
if request.get? && request.path_info !~ /^\/(api|js)/
redirect "/#{session[:lang]}#{request.path_info}"
end
end
</pre>
<br />
ざっくりこんな感じです。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-15714255588398448702012-06-22T14:00:00.000+09:002012-06-22T14:06:15.773+09:00MacでDropbox以下のフォルダを公開フォルダにするMacでPHPを使ったページをテストしたかった。<br />
apacheとPHPはlionには元々入ってる。<br />
システム環境設定の共有の項目からWeb共有をオンにするだけで、<br />
Webページが見られる。apacheの設定をいじればPHPページも実行できる。<br />
この辺の詳しい手順は参考URLを見てください。<br />
<br />
デフォルトでは~/Sitesが公開フォルダなわけだが、<br />
自分はDropboxでファイルを共有しているので、<br />
パスをDropbox内のディレクトリに設定したい。<br />
調べると、/etc/apache2/users/{username}.conf<br />
に公開パスの設定があるらしい。<br />
しかし、設定を直して、アクセス権を整えてもどうもうまくいかない。<br />
結局、原因はわからなかった。<br />
<br />
けれど、調べてる内に他の方法があることに気づいた。<br />
Sites以下にシンボリックリンクを置けばいいのだ。<br />
まず、先ほどの設定ファイル内で<br />
Options Indexes MultiViews FollowSymLinks<br />
という風にFollowSymLinksを追記する。<br />
ln -s ~/Dropbox/hogehoge/ public_html<br />
みたいな感じでシンボリックリンクを作成する。<br />
んで、apacheを再起動する。Web共有をオフにして再度オンにすればいい。<br />
すると、localhost/~{username}/public_html/<br />
で~/Dropbox/hogehoge/のファイルにアクセスできるようになりました。<br />
<br />
参考URL<br />
<a href="http://www.happytrap.jp/blogs/2012/01/21/6931/">http://www.happytrap.jp/blogs/2012/01/21/6931/</a> <br />
<a href="http://eyenote.cocolog-nifty.com/blog/2011/08/mac-os-x-107lio.html">http://eyenote.cocolog-nifty.com/blog/2011/08/mac-os-x-107lio.html</a> <br />
<a href="http://szdy.info/docs/apache_on_osx/">http://szdy.info/docs/apache_on_osx/</a> <br />
<br />AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-529338115509891692012-06-20T01:29:00.000+09:002012-06-20T01:32:08.959+09:00見慣れないfor文『JavaScriptパターン』を読んでたら、見慣れないfor文が出てきた。<br />
<pre>for(var i = length; i--;){
//hogehoge
}
</pre>
<br />
なんだこれ?ちゃんと動くのか?と思ってfirebugのコンソール上で<br />
叩いてみると問題なく動いた。<br />
何が引っかかったかというと、条件のところi--だよね。<br />
これって何が評価されるの?<br />
で、いろいろ試したり調べてたらわかってきた。<br />
i--;<br />
のような後置デクリメントはまず値が評価され、その後デクリメントが行われる。<br />
インクリメントも一緒。<br />
というか、ずっと勘違いしていたことに気づいた。<br />
<pre>
if(i = 5) {
//hogehoge
}
</pre><br />
みたいな処理を書くとif文の中が実行されるのって代入が成功してtrueが返ってるんだと<br />
思ってたんだけどホントはiに5が代入されてその値5が評価されてそれでifがtrueになってるんだね。<br />
どういうことかというと、<br />
<pre>
if(i = 0){
//fugafuga
}</pre><br />
っていうのでも実行されると思ってたけど、これはif文の中は実行されない。<br />
結局、最初のi--;っていうのはまず値が評価されるわけだから、<br />
<pre>
for(i = 3; i--;){
console.log(i);
}</pre><br />
みたいに書くと、<br />
210と出力されるわけだ。<br />
<br />
んー、でも、これって実はかなり基礎的なことだよなぁ。<br />
色々な意味で勉強になった。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-20460857368915235922012-05-02T12:58:00.002+09:002012-05-02T12:59:19.935+09:00Vimの色Vimで作業をしているときに以前から気になっていたことがある。<br />
折り畳みをしてある部分の色が見づらくて仕方なかった。<br />
だいぶ放置してあったのだが、今日やっと直した。<br />
カラースキームのファイルに以下を追加した。<br />
highlight Folded guifg=black guibg=white<br />
<br />
<br />
折り畳みされたテキストはFoldedというグループに分類されているようだ。<br />
知った後から考えれば当たり前ですね。<br />
help groupでグループの一覧が見られるので、 <br />
今度、全体的に色を見なおしてみよう。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-92005916482114646382012-04-28T14:16:00.000+09:002012-04-28T14:16:56.717+09:00Macでgcc最近のMacはXcodeをインストールすれば、gccも入ってると思ってたんですが、
Xcode4.2.3では違いました。<br />
Performances→Downloads→Command Line Toolsと進み、<br />
右側にあるInstallボタンを押しましょう。<br />
これでgccが使えました。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-17742473948147006752012-02-12T13:47:00.001+09:002012-02-12T13:50:35.930+09:00rake db:seedでcsvを使う今回はRuby on Railsの話です。<br />
rake db:seed<br />
というコマンドでデータベースに初期データを流し込めます。<br />
この流しこむデータはdb/seeds.rbに記述します。<br />
そこでcsvを読み込んでデータを作る処理を書きます。<br />
<br />
<pre>require "csv"
CSV.foreach("csvファイルへのパス") do |row|
Book.create(:name => row[0], :price => row[1])
end</pre>
<br />
一応、解説すると各行が毎回カンマ区切りの配列としてrowに入ってきます。各データを番地を指定して、テーブルの対応するフィールドに割り当てます。<br />
すごく簡単ですね。 <br />
<br />
ファイルパスはseeds.rbからではなくプロジェクトのルートからの相対パス?<br />
自分は絶対パス指定しました。<br />
csvのデータを色々処理してから流し込めるので便利ですね。
<br />
<pre></pre>AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-43171436114814525322012-01-24T17:47:00.000+09:002012-01-24T18:44:47.904+09:00WindowsでのVimを快適に<h2>
Windowsでもvundle</h2>
プラグインをどんどん入れる派のVimmerの方はプラグイン管理プラグインを導入してるでしょう。<br />
自分は以前はpathogenを使っていましたが、今はvundleを使っています。NeoBundleは移行する機会がなくてまだ移行していませんが、近いうちにこっちに移るかもしれません。<br />
vundleはrubygemsのbundleに影響を受けており、とても便利なものです。<br />
使い方はvundleのhelpを読みましょう。<br />
このプラグイン何が便利ってgithubからコマンド一つでプラグインを落としてこられるところです。<br />
ですが、これはもちろんgitが必要になります。自分はMacやLinuxでvundleを使っていたのですが、やはりWindowsからもプラグインを更新したいときがあるので、今回その作業を行いました。<br />
<a href="http://code.google.com/p/msysgit/downloads/list?can=3&q=official+Git">こちら</a>からGit-1.7.8-preview20111206.exeをダウンロードしてきます。実行し、インストールを行います。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCmIHRFaD1Xx9qHhNMRft_XX1rCgursDGHOOptLA0nTeKhM8Msx42AKs-XTQ-OIKZWviletQfKRhmNBpxGVxXiZFaeonlCY2FCzln3_6UbnWtJbUtAaOgF8_m5IxN-77g2XWKFneCp0Ko/s1600/git.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCmIHRFaD1Xx9qHhNMRft_XX1rCgursDGHOOptLA0nTeKhM8Msx42AKs-XTQ-OIKZWviletQfKRhmNBpxGVxXiZFaeonlCY2FCzln3_6UbnWtJbUtAaOgF8_m5IxN-77g2XWKFneCp0Ko/s320/git.png" width="320" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwXogjhDMhCdFI69qSgso76Jhli252s4h_uBEFggOeVf36DFIXuXaz8VySrDcEePoGQrCa1taGZUx2UOcgAChFgHox7nSe9cCw6rFv77lxS1-9ugrYRP1aElSIbdJsOvVgwmnHiYI_rs/s1600/git2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a>Run Git from the Windows Command Promptを選ぶ必要があるので気をつけましょう。<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwXogjhDMhCdFI69qSgso76Jhli252s4h_uBEFggOeVf36DFIXuXaz8VySrDcEePoGQrCa1taGZUx2UOcgAChFgHox7nSe9cCw6rFv77lxS1-9ugrYRP1aElSIbdJsOvVgwmnHiYI_rs/s1600/git2.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbwXogjhDMhCdFI69qSgso76Jhli252s4h_uBEFggOeVf36DFIXuXaz8VySrDcEePoGQrCa1taGZUx2UOcgAChFgHox7nSe9cCw6rFv77lxS1-9ugrYRP1aElSIbdJsOvVgwmnHiYI_rs/s320/git2.png" width="320" /></a>その次の画面ではopenSSHかputtyのどちらを使うかを指定します。puttyの場合はputtyのあるパスを指定する必要があります。<br />
<br />
インストールが終了して、vundleを使う際に一つ注意点があります。call vundle#rc('~/vimfiles/bundle')という風にvundle#rcにパスを書くことを忘れずにしましょう。Windowsでは指定しないとうまく動きませんでした。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2>
WindowsにこそVimShellを</h2>
vundleを使ってWindowsでもどんどん便利なプラグインを入れましょう。数ある便利なプラグインの中でもWindowsにこそ必要なもの、VimShellです。<br />
しかし、VimShellをBundleInstallしただけではlsすら使えません。ということで、先人たちによって作られた便利なプログラムをインストールしましょう。<br />
<a href="http://sourceforge.net/projects/mingw/files/">MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net</a>から最新バージョンを落としてきましょう。展開してインストールします。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAiv5AghNo46O0zMFUWb0LwqMrW1iUyq2c1rpOimDGCzKPmxebz1hzWzA3b-4xmplxcwOmyLSeKzqfzm3iwXqBXVLPqmRKnGEP9SSFFzy9KmKxfi3wfjnje07UL4DdthoGp32sPdq5uIc/s1600/mingw.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAiv5AghNo46O0zMFUWb0LwqMrW1iUyq2c1rpOimDGCzKPmxebz1hzWzA3b-4xmplxcwOmyLSeKzqfzm3iwXqBXVLPqmRKnGEP9SSFFzy9KmKxfi3wfjnje07UL4DdthoGp32sPdq5uIc/s320/mingw.png" width="320" /></a></div>
インストール時にはコンパイラだけでなく、「MSYS Basic System」「MinGW Developer ToolKit」もチェックを入れましょう。というかこれらが必要です。<br />
インストール後、環境変数のPATHを設定します。環境変数をどこで設定するかわからない人は「Win+r」でファイル名を指定して実行を呼び出し、sysdm.cplと入力しましょう。詳細設定から環境変数を設定できます。環境変数でパスを追加するときはセミコロンで区切るのを忘れずに。ちなみに追加するパスは「C:\MinGW\bin;C:\MinGW\msys\1.0\bin」になるかと思います。<br />
これでWindowsでも素敵なVimライフをエンジョイできますね!<br />
<br />
<h2>
Windowsで輝く非同期処理(vimproc)</h2>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjGFpQbuyhxwfUtyhD-rMJCNd8M3A4F0XX6qJTnAHwsNMT3oMY85ke_UmL9pL-T1nWX7AdGIh5rl9lvKDHQy5WJFfsalSnCdgWloVx2jb-XU2Rhy1ItODgby7cep13lALlYq1iIMry8Rs/s1600/vimproc_msvs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjGFpQbuyhxwfUtyhD-rMJCNd8M3A4F0XX6qJTnAHwsNMT3oMY85ke_UmL9pL-T1nWX7AdGIh5rl9lvKDHQy5WJFfsalSnCdgWloVx2jb-XU2Rhy1ItODgby7cep13lALlYq1iIMry8Rs/s320/vimproc_msvs.png" width="320" /></a>
Vimで非同期処理を実現するプラグイン、それがvimprocです。しかし、vimprocを使うには利用する環境でのコンパイルが必要になります。これが出来ずに悩んでいる人をたまに見かけます、というか以前の自分です。<br />
Windowsでコンパイルする方法としてはまず、VisualStudioのコマンドプロンプトでnmakeを使う方法があります。vimprocのディレクトリに移動し、そこでnmake /f make_msvc.makです。自分の場合はDropboxを使ってvimのファイルは共有していますが、普通ならC:\Users\○○\vimfiles\bundle\vimprocというパスですかね。<br />
<br />
<br />
<br />
そして、もう一つはMinGWを使う方法です。しかし、先程インストールしたMinGWは64bitではありません。<br />
64bit環境なら<a href="http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/">ここ</a>からAutomated Buildsの中のmingw-w64-bin_i686-mingw_20111220.zipをダウンロードしてきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyxU1iycE2HnYeFaRxww4SKnMjOEj6TvfVSfWHNXI8ie4iHKiTMrH67h9aWyE_Nr7BCebM8y4iojtDA57FsspEHn1i7CZr8nm9Y7aUx2Q496WizWHzyXFyjPxrGMYSbhAXoU-AGxlGmLw/s1600/path.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyxU1iycE2HnYeFaRxww4SKnMjOEj6TvfVSfWHNXI8ie4iHKiTMrH67h9aWyE_Nr7BCebM8y4iojtDA57FsspEHn1i7CZr8nm9Y7aUx2Q496WizWHzyXFyjPxrGMYSbhAXoU-AGxlGmLw/s320/path.png" width="320" /></a></div>
展開し適当に短めな名前にしたらC:\に置いて先ほどのPATHよりも先にPATHに記述します。自分の場合はmigw64というディレクトリ名に変えました。 <br />
これでめでたくmakeできるようになりました。コマンドプロンプトを開き、vimprocのディレクトリに移動し、make -f make_mingw.makです。<br />
ぶっちゃけVisualStudio入ってるならそっちでやったほうがわかりやすい気がします。ただ、VisualStudioはnmakeですので、nを忘れずに-fでなく/fなところも気をつけてください。 <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEHfjhf2EXwS1MIpNlyBdQoKJNhqK5hI_9UEEI1h65ktzbEk0T7ZIKUX51AiwenuhTDq27e2TH97pvUvIfYB9Yq4sPPSKEWeyFrBGf1LPqVmvVAfKKoQ8QGi79vRaS6JWosUlMCfMVK3I/s1600/vimproc_mingw.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEHfjhf2EXwS1MIpNlyBdQoKJNhqK5hI_9UEEI1h65ktzbEk0T7ZIKUX51AiwenuhTDq27e2TH97pvUvIfYB9Yq4sPPSKEWeyFrBGf1LPqVmvVAfKKoQ8QGi79vRaS6JWosUlMCfMVK3I/s320/vimproc_mingw.png" width="320" /> </a> </div>
<div class="separator" style="clear: both; text-align: left;">
以下、参考URL
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://rohinomiya.posterous.com/gvim-vundle">GVIM に vundle (プラグイン管理)をインストールする</a></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.karakaram.com/vim/windows-vimshell/">Windows7 GVim にVimShellをインストールする</a></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://umeji.blogspot.com/2011/10/mingwwindows64bitvimprocdll.html">mingwを使用したWindows64bit版vimproc.dllの作り方</a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-31606172876672846892012-01-01T08:26:00.001+09:002012-01-24T17:27:53.221+09:00MacVimの設定Windows版のgvimとか普通のvimを使った後にMacVimを使うと、<br />
<Leader>が機能しないなんていう問題に遭遇する。<br />
これは<Leader>の\がちゃんと入力されていないからである。<br />
ターミナル上だと¥を入力すると実は\が入力されている。<br />
MacVimで同様のことをやろうとすると「option+¥」なんていう面倒なキーを押すはめになる。<br />
そこで次のような設定をする。<br />
<br />
<pre>if has('gui_macvim')
let mapleader='¥'
endif
</pre>
<Leader>の設定方法がわからなくてずっと放置してたよ。<br />
<br />
*追記<br />
普通に<br />
<pre>map ¥ <leader>
</pre>
でいけたよ。<br />
.vimrcの下のとこで前に試行錯誤してたときに間違ったmappingしてたみたい(^q^)AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-65616851343982091112011-12-16T07:20:00.000+09:002011-12-15T19:00:18.058+09:00MTMと電子工作コンテストに出展してきた<p>
めっきり更新の途絶えていたこのブログ。<br />
何をしていたかというと、これです。
</p>
<a href="http://elecontest.com/prize">http://elecontest.com/prize</a><br />
<br />
<p>
このリンクは電子工作コンテスト2011の受賞作品を紹介するページです。<br />
その中の新人賞とwhite-screen.jp賞に挙げられている「わっとボトル」。<br />
これが自分の所属するチーム「どうしてこうなった」の作品なのです。
</p>
<p>
いろいろ大変でしたが、賞が頂けて嬉しい限りです。<br />
それで、これを機にチームの中の何人かでモノづくり系のサークルを作ろうかと思っています。<br />
新メンバーも見付かりそうで、いろいろ頑張ってみようと思います。
</p>AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-35763542553041590142011-12-14T08:04:00.000+09:002011-12-14T08:04:41.678+09:00vimでhtmlの改行タグの挿入vimでhtml書いてて改行タグをすんなり入れたかったので、<br />
C-CRに割り当てようと思い、これで動くのか軽く調べてみたが、<br />
Ctrl+改行をキーマップしようとしてわからなかったっていう記事が出てきただけだった。<br />
しかし、物は試しとやってみたら普通にできた。<br />
inoremap <C-CR> <br /><CR><br />
inoremap <C-Return> <br /><Return><br />
のどちらでも動きました。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-77784986721409531682011-11-20T12:05:00.002+09:002011-11-25T23:28:01.386+09:00ujihisa.vim#2に行ってきました<p>長らく放置されていたブログですが、ujihisa.vim#2に参加してきたので更新します。</p>
<p>
今回の会場はmixi社様が提供してくれたとのことで、つくばからはるばる渋谷まで行ってきました。
</p>
<p>
会場には@Kaoriya氏、@ujihisa氏、@ShougoMatsu氏、@thinca氏などVim界の有名人が多くいらっしゃっており、ホントに自分のような未熟者が参加していいのかと、キョドってました。
</p>
<p>
最初の基調講演は@Kaoriya氏の「Vimのソースコードをdisる」でした。
big switchには笑いましたが、あのソースで動いてるっていうのが何よりすごい。
自分はCで書かれたあんな大規模なソースを読む気にならないのでホント尊敬です。
</p>
<p>
その次は@basyura氏による自作プラグインの紹介。
最近までrailsで開発してたのでunite-railsはもう少し早く知りたかったですね。
Vimの新しいtwitterクライアントを早く作られることを期待しています。
</p>
その他にもVim scriptについての発表や@sora_hくんのsimplenoteのuniteプラグインの紹介などがありました。<br />
@thinca氏のライブコーディングと@ujihisa氏の喋りはなかなか見応えのある内容でした。<br />
また、@ShougoMatsu氏のVim愛は基調講演でもとどまるところを知りませんでしたねw<br />
ujihisa氏の基調講演はVimレベルについての話がありましたが、<br />
自分はどんなもんでしょうかね?<br />
プラグインはいろいろ試しに使ってみたりしてますが、自分ではほとんどVim scriptも書いてませんし……<br />
と、まぁ、ためになるお話がたくさんありました。<br />
その後の懇親会も皆さんVimもといオレオレエディタについて熱く語っており非常に楽しかったです。<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJZ0hS_4S0a7ze86jf-qCYPpuw1iiu7Kf5ESYiXV1SQwIFz55UDTxIRuwPFw4-8BpplJ3878-C9miamlW_XM-LZ17GQvdHNMlA8uXK6GHqdTfhVZiuKkVOQt33TSQKBxTTAiYmJJnrSM/s1600/P1000019.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJZ0hS_4S0a7ze86jf-qCYPpuw1iiu7Kf5ESYiXV1SQwIFz55UDTxIRuwPFw4-8BpplJ3878-C9miamlW_XM-LZ17GQvdHNMlA8uXK6GHqdTfhVZiuKkVOQt33TSQKBxTTAiYmJJnrSM/s320/P1000019.JPG" width="179" /></a><br />
@ShougoMatsu氏のサインをVimテクニックバイブルに書いていただくという今回の目的の一つも達成できました。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-20906709511740728122011-08-30T21:28:00.000+09:002011-11-26T01:43:25.818+09:00sassを導入するまでの流れsassはcssをもっと簡潔に構造的に書くためのものです。<br />
今回はsassを導入するまでの流れを紹介します。<br />
sassはrubyで実装されているため同時にrubyのインストールも必要です。<br />
以前、構築した仮想マシン上に環境を構築してみましょう。<br />
まずは、rubyのインストールです。<br />
sudo yum install ruby<br />
次にrubyのライブラリ管理ツールであるRubyGemsをインストールします。<br />
sudo yum install rubygems<br />
rubygemsを使ってrubygemsをアップデートしておきましょう。<br />
sudo gem install rubygems-update<br />
では、さっそくsassのインストール<br />
sudo gem install sass<br />
これでsassり放題!<br />
sass input.sass output.css<br />
みたいな感じでsassをcssに出力しちゃいましょう。<br />
sass --watch input.sass:output.css<br />
で自動で変換するように監視させることもできます。<br />
次は、sassの書き方を書こうかと思います。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-44547923028384616512011-08-20T11:57:00.002+09:002011-08-20T11:59:39.663+09:00VirtualBoxの導入、フォルダの共有久しぶりの更新です。<br />
実家に帰省中でlinuxのほうのノートPCを置いてきたので、<br />
いろいろできずに困っていたのですが、<br />
これを機に仮想マシンを使ってみようかと思ったのでそれらのメモを残します。<br />
まず、使ったのはVirtualBoxというソフトです。<br />
今回はWindows7 64bit上のVirtulaBoxにLinuxを構成します。<br />
公式サイトからWindows用のインストーラーをダウンロードしてきてインストールします。<br />
起動すると、以下のような画面が出てきます。<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnN33Fcaxnc8YXHmBaSpYFOxC24MAXp7KW1QOk_AI7ELeJiIoiqwNk-d8ShVBd15F_CInFugYiM3vqow7Jqa6yzUmiGjTardXDJloHsIt2bl_oX8Jjc1ISTNf0yM4GO_YQD_yUq5NVXEU/s1600/vb2.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="258" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnN33Fcaxnc8YXHmBaSpYFOxC24MAXp7KW1QOk_AI7ELeJiIoiqwNk-d8ShVBd15F_CInFugYiM3vqow7Jqa6yzUmiGjTardXDJloHsIt2bl_oX8Jjc1ISTNf0yM4GO_YQD_yUq5NVXEU/s320/vb2.png" /></a></div>左の画面は既に構成済みですが、インストール直後は左の欄は空だと思います。<br />
それでは上の新規ボタンを押して仮想マシンを構成していきます。<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyLI9QRY_aYcPdWfTy9-AipnwO6Z9cku_yTw9ANGTp5apqSpZfRl3n9GCeHjsCpDrIpjlQxWbuZy128hfzlSNWp5PFawrPNg4_a3K7viLsDAehktT6AIraacykiBhzimeVbA648exNDcU/s1600/vb.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="206" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyLI9QRY_aYcPdWfTy9-AipnwO6Z9cku_yTw9ANGTp5apqSpZfRl3n9GCeHjsCpDrIpjlQxWbuZy128hfzlSNWp5PFawrPNg4_a3K7viLsDAehktT6AIraacykiBhzimeVbA648exNDcU/s320/vb.png" /></a></div>まず、仮想マシンの名前と種類を決めます。自分は今までにCentOSとUbuntuぐらいしかLinuxを触ったことがなかったので、今回はFedoraを使ってみることにしました。<br />
次の画面では割り当てるメモリの量を決めます。自分の好きな量を指定しましょう。<br />
HDDは新規で次へ、特に気にせずどんどん次へいきましょう。<br />
HDDの割り当てるサイズを聞かれるので好きに設定しましょう。デフォルトは8GBです。<br />
最後にCreateで設定完了です。<br />
さっそく作成された仮想マシンを起動してみましょう。<br />
初回起動ウィザードが表示され、インストールメディアを要求されます。<br />
今の状態はまだ中身のない空っぽの状態なので先ほど指定した仮想マシンの種類(OS)のイメージを入れる必要があります。<br />
自分の場合はFedoraの公式サイトからliveCDのイメージを落としてきました。<br />
メディアソースの右にあるフォルダアイコンからファイルを指定します。<br />
指定したら次へ、起動と進み、起動しましょう。<br />
デスクトップ上にインストールディスクが表示されるらしいのですが、<br />
自分の場合は表示されませんでした。<br />
とりあえず、自分のFedora15 32bitの場合では、<br />
左上のApplications→System Tools→Install to Hard Driveでインストールを行いました。<br />
これで仮想マシンの構築は完了です。<br />
<br />
ここからは実OS(ホストOS)と仮想マシン(ゲストOS)とのフォルダの共有を行っていきます。<br />
作成した仮想マシンの設定から共有フォルダを選び、新規で共有したいフォルダのパスと名前を設定します。<br />
しかし、これだけでは実際に動作しません。<br />
共有フォルダの欄の注意書きにも書いてあるようにGuest AdditionsというものをゲストOS側にインストールする必要があります。<br />
そのためには以下の処理が必要となります(Fedoraの場合です、自分のOSにあったパッケージ管理を使いましょう)。<br />
yum update<br />
yum install dkms<br />
yum install gcc<br />
いずれもroot権限が必要です。suを使うか毎回sudoをしましょう。<br />
これで必要なパッケージがそろったのでいよいよGuest Additionsのインストールです。<br />
まず、Guest Additionsのイメージを載せる仮想ドライブを追加する必要があります。<br />
一度、仮想マシンを終了し設定ボタンを押しましょう。<br />
ストレージを選び、IDEコントローラーからCD/DVDドライブの追加を選びましょう。<br />
追加するものは空で大丈夫です。<br />
再び仮想マシンを起動します。<br />
仮想マシン上のツールバーからデバイス→Guest Additionsのインストールを選びましょう。<br />
ツールバーが非表示の場合は右のCtrlとHomeキーで(デフォルトの場合)メニューを表示できます。<br />
インストールが終わったら再び仮想マシンを終了し、起動します。<br />
共有フォルダの設定で自動マウントにしていれば/media/sf_フォルダ名に共有フォルダがマウントされています。<br />
自動マウントでない場合は、<br />
mount -t vboxsf 共有フォルダ名 ゲストOS上でのマウント先<br />
といったコマンドでマウント可能です。<br />
マウント先は<br />
mkdir ~/share<br />
あたりに適当に作ればよいでしょう。<br />
自分でマウント先を選びかつ自動化したい場合は<br />
/etc/rc.localに上記のコマンドを追記しましょう。<br />
自分の場合は別PCのDropboxと共有したい設定ファイルがあるので~/Dropboxをマウント先にしました。<br />
もう一つ忘れそうでしたが、共有フォルダのアクセス権限に気を付けてください。<br />
設定で自動マウントにした場合はrootが所有者でvboxsfがグループになっています。<br />
また、コマンドで追加した場合は共にrootです。<br />
実際にファイルを編集するにはアカウントのグループを追加する必要があります。<br />
id -a アカウント名<br />
で所属しているグループを確認後、<br />
usermod 元から所属しているグループ,root,vboxsf アカウント名<br />
というコマンドでグループを追加しましょう。<br />
元から所属しているグループも指定しないとグループから消えてしまうので注意してください。<br />
とりあえず、これで作業は終わりだと思います。<br />
<br />
仮想マシンを導入したのでこれからは時間のある時にいろいろなOSを試してみたいですね。<br />
では、今回はここまでです。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-38237179863605746702011-08-05T23:23:00.000+09:002011-08-05T23:23:12.755+09:00snippetsneocomplcacheのsnippets機能を使い始めたのですが、<br />
これすごい便利ですね!<br />
snippets自体初めて使うので、他はどうなのか知りませんが<br />
確実にコーディング速度の向上につながる機能だと思います。<br />
これからは積極的にsnippetsファイルも更新していきたいですねー<br />
<br />
あとは、行末にセミコロンを打つマッピングとか追加しました。<br />
最初<c-;><C-;>にマッピングしようとしたんですが、これできないみたいですね。<br />
結局<space><Space>;にしました。</space></c-;><br />
<c-;><space>マッピングに<Space>使ってなかったんですが、これ使いやすいです。</space></c-;><br />
<c-;><space>そもそもスペースキー自体いい位置にあるんだから使わなきゃ損ですよね。</space></c-;>AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-531998621555179772011-08-02T22:18:00.001+09:002011-08-02T22:21:13.551+09:00uniteの設定今日はuniteの設定を少しだけしました。<br />
.vimrcにこんな感じに増やしました。<br />
<pre>autocmd FileType unite call s:unite_my_settings()
function! s:unite_my_settings()
imap <buffer><buffer> <C-w> <Plug>(unite_delete_backward_path)
nnoremap <silent><buffer><expr> t unite#do_action('tabopen')
endfunction
</plug></buffer></pre>内容としては、ファイルパスの入力時にファイル単位でパスの削除をするマッピングと<br />
候補が並んでいるときにtでtabopenするようにしました。<br />
<br />
これからもプラグインに限らず気になる点は直していく癖をつけるようにしないと。<br />
最近はタイピングの癖も修正していたりします。<br />
アルファベットのタッチタイプはできるのですが、<br />
記号が入ってくるとホームポジションが崩れることが多いので<br />
それを直しています。<br />
思ったより早く慣れそうでよかったです。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-10825687588782773362011-08-01T21:03:00.000+09:002011-08-01T21:03:33.123+09:00ランニング以前より買おうと思っていたランニングシューズを買いました。<br />
最近は二日に一回ペースで筋トレをしていたのでランニングと一日おきという<br />
生活サイクルにもっていけたらいいなと考えてたりします。<br />
一日中パソコンの前に座ってるなんていうのはざらなので<br />
意識的に運動するようにします。<br />
<br />
後、図書館で借りてちょっと読んで放置してた「入門git」も再び読み始めました。<br />
VCSの重要性は最近認識するようになってきたんですが、<br />
自然と使えるようになるまでがネックですよね。<br />
近いうちに作れたらいいなと思ってるものがあるので、<br />
それを作るときにはgitを実戦投入したいですね。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-75291907741264381402011-07-31T20:50:00.000+09:002011-07-31T20:50:15.746+09:00プラグインの導入今日はunite.vimとvundleを導入しました。<br />
uniteは使い始めたばかりですが、かなり便利そうです。<br />
uniteは何ができるかというといろいろできるっぽいんですが、<br />
とりあえず、いろいろなソースから検索やら表示やら何やらできるっぽいです。<br />
vundleはgitを使ってプラグインのバージョン管理を行ってくれます。<br />
プラグインの管理はpathogenを使ってたのですが、<br />
これからはいちいち更新を確認しに行かないで済むので助かりますね。<br />
<br />
導入にあたってマッピングの設定をしていると、<br />
今まで知らなかったデフォルトの機能とかを知ったりして、<br />
まだまだ修行が足りないなぁという感じです。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-7271237816265377702011-07-29T19:05:00.010+09:002011-08-07T17:06:51.064+09:00うざいアレを消す最近は雨が続いて困ります。<br />
基本、自転車での移動ですし洗濯もできません。<br />
<br />
今日の本題はこれです。<br />
<div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigEDTY96S_nmIeUFjWQMKALSNVS83R70wh1wpXp1VTH6hEGhsBwPZbZed2ie_ZM8bFmtpo6sriiqYJ1tkBC5EpZJUFPHEH1TVf8aaPVJS2sRNDf7rNFR1lHqCU4yIcsBuMSB0bAyPxJug/s1600/form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigEDTY96S_nmIeUFjWQMKALSNVS83R70wh1wpXp1VTH6hEGhsBwPZbZed2ie_ZM8bFmtpo6sriiqYJ1tkBC5EpZJUFPHEH1TVf8aaPVJS2sRNDf7rNFR1lHqCU4yIcsBuMSB0bAyPxJug/s320/form.png" width="320" /></a></div><br />
よくあるフォームの登録画面ですね。<br />
これを送信した後、更新するとこのうざいヤツが出ます。<br />
今日はこれを出ないようにしました。<br />
<pre class="brush: jscript"><html>
<body>
<head>
<script type="text/javascript" src="js/jquery-1.6.2.min.js" charset="utf-8"></script>
<script type="text/javascript" src="js/jquery.form.js" charset="utf-8"></script>
<script>
$(document).ready(function() {
$("#form1").submit(function(){
if($("input:text[name='name']").val() == ""){
alert("名前を入力してください");
}
else if(!$("input:radio[name='gender']").is(":checked")){
alert("種類を選択してください");
}
else{
var options = {
success: function(response){
if(response == "success"){
$("#registMsg").empty().append("登録を完了しました。")
}
else{
$("#registMsg").empty().append("登録済みのアカウント名です。")
}
}
}
$(this).ajaxSubmit(options);
}
return false;
});
});
</script>
</head>
<form action="" method="post" id="form1">
<p>名前<input type="text" name="name"/></p>
<p><input type="radio" name="gender" value="male"/>男性
<input type="radio" name="gender" value="female"/>女性</p>
<input type="submit" value="登録">
</form>
<p id="registMsg"></p>
</body>
</html>
</pre><br />
使ったのは<a href="http://jquery.malsup.com/form/">jQuery Form Plugin</a>です。<br />
これのajaxSubmit()を使いました。<br />
jQueryでformのsubmit時の動作を定義します。<br />
例では値の空チェックとかやってます。<br />
ajaxSubmitがちゃんと行われた後の動作をオプションで指定し、<br />
呼び出します。<br />
登録用のphpにprintとかでレスポンス用のメッセージを出力します。<br />
それで判定に応じた結果を返します。<br />
最後はreturn false;です。<br />
これをしないと通常のsubmitを行ってしまいますので気を付けてください。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-63979188791169034472011-07-28T22:05:00.001+09:002011-08-07T17:28:28.324+09:00初VimScript今日もバイトに行ってきました。<br />
最近はバイトに行く前と帰ってきてからが自由時間というわけでいろいろやってます。<br />
バイトでもプライベートでも最近はよくコーディングしているのですが、<br />
そのときに煩わしいことがありました。<br />
phpのソースをネットから拾ってくると、やたら「"」を使っているのです。<br />
自分はこれが気に食わないので、「"」と「'」を正しい使い分けに直すのですが、<br />
混在してると置換もしづらいので一つ一つ直したりします。<br />
そこで、簡単に書き換えられるスクリプトを書いてみました。<br />
以前、VimScriptに一度挑戦しましたが入門ページみたいなのを読んでもさっぱりわからなかったのでやる気を喪失していました。<br />
しかし、数日前に調べていたらもっとわかりやすいページがあって何となく雰囲気も掴めたので実際に書いてみることにしました。<br />
初ということで今回のは短いです。<br />
<pre class="brush: ">function ExUpLower()
let a:currentChar = getline(".")[col(".")-1]
if(match(a:currentChar,'[a-z]') == 0)
execute "normal r".toupper(a:currentChar)."l"
elseif(match(a:currentChar,'[A-Z]')==0)
execute "normal r".tolower(a:currentChar)."l"
elseif(match(a:currentChar,'\"')==0)
execute "normal r'l"
elseif(match(a:currentChar,"\'")==0)
execute 'normal r"l'
else
execute 'normal l'
endif
endfunction
nnoremap ~ :call ExUpLower()<cr>
</pre><br />
Vimには~を押すと大文字小文字を相互変換してくれる機能があるのですが、<br />
それを「'」と「"」にも機能するようにしました。<br />
executeを見つけるまでにやたら時間がかかりました。<br />
もっとスマートなやり方があると思います。<br />
そもそもこんなの欲しがる人は自分以外には居なさそう。<br />
マッピングの方法もよくわかってません。<br />
勉強あるのみですね。<br />
<a href="http://nanasi.jp/articles/vim/monday_vim.html">monday.vim : Ctrl-a、Ctrl-xで曜日、月をループ (+他の用途への応用)</a>のソースを参考にしました。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0tag:blogger.com,1999:blog-8220986695716867263.post-25691181983269188612011-07-27T20:07:00.000+09:002011-07-27T20:07:41.123+09:00今までブログを始めなかった3つの理由<h2>これからの予定</h2>これからはこのブログにて拙い技術メモやらとりとめもない意見などを綴っていく予定です。そもそも、前々からブログを始めようと思っていたのですが、いろいろ理由があって始めるのをためらっていました。<br />
<br />
<h2>1.ブログを借りるか悩んでいた</h2>技術者らしく自分でサーバーを用意してサイトを作ってとかも考えていました。しかし、家にサーバーなんか置いた日にはそのサーバー熱暴走で即死です。無料のレンサバ借りるぐらいならブログで十分です。<br />
<h2>2.どこのブログを借りるか悩んでいた</h2>自分が知っていたブログサービスは、FC2、livedoor、Yahoo、Ameba、はてな、Bloggerなどでした。ここからはてなかBloggerで悩んでいました。FC2は何かアダルトのイメージなので却下です。YahooとAmebaは一般人向けなイメージなので気に食いません。livedoorは何となく除外です、特に理由はありません。見て分かるように結局、Bloggerにしました。理由は「次のブログ」が好きだからです。あと、はてなは皆使ってる感があるからです。<br />
<h2>3.そもそも必要なのか</h2>メモを書くだけならローカルでいいのではという気持ちがあったからです。しかし、基本的に情報はオープンであるべきだという考えなので、自分のカスみたいな情報でも少しは世の中に還元できるかもしれないということで始めることにしました。AmatsukiKuhttp://www.blogger.com/profile/12271660197531405429noreply@blogger.com0