/var/log

技術系のあれこれ。※内容は個人の発言であり、所属する組織を代表するものではありません。

KeyRemap4MacBook

最近職場のPCでもプログラミングする機会が増えたので
ちょっとWindowsライクなキーボード配置に慣れてしまった.

仕方ないので
http://onno.jp/dev/2012/01/mac-windows-keyremap4macbook.html
を参考にMacWindowsのキーボード配置を再現してみました.

これでOS間での微妙な違和感を吸収できる.





もう,OSが違うからとか,Macはすばらしいとか,Windowsはどうのとか
言う時代は終わったんですね...

emacs@Cygwin

Windowsだけど似非UNIX的な使い方がしたくて。
WindowsCygwinをいれてCygtermから接続してemacsを利用しています。



emacsを起動を制御するスクリプトを自前で用意して
emacs serverが上がっていれば同じ画面につなぎに行くようにしています。

#!/bin/bash

ps_result=`ps -ef | grep emacs-w32 | grep -v grep | wc -l`
if [ $ps_result == 0 ]; then
 echo "Stating Emacs..."
 emacs-w32 $@ &
 echo "...done"
else
 echo "Connect to Emacs Server..."
 emacsclient $@ &
 echo "...done"
fi

これだと以下の場合は問題ないのですが
(1)Cygtermからコマンドで新規に起動する場合
(2)Cygtermからコマンドでファイルを追加で開く場合
(3)既に起動したemacs-w32@GUIにファイルをドロップする場合

以下のケースが動きません。
(4)Windows上のファイルを関連付けて ダブルクリックでファイルを開くとき


というのも
(1)~(3)は何れもCygwin上、またはcygpathが裏で動くので
WindowsのPATHでもCygwinのPATH形式に変換してくれます。


(4)の場合にのみWindowsのPATHでもCygwinのPATH形式に変換できず
困ってしまします。



対策は。。。ぱっと思いつかないので暫く放置。
愚直にやるなら WindowsバッチでCygwinのシェルを呼び出す方法でしょうかねぇ。
美しくないなぁ。。。

Cygwin環境でのpingの文字化け対策

当然のように日本語環境が仇になって文字化けする。


http://calcurio.com/wordpress/?p=1387
を参考にcocotを導入。

前提となるパッケージも既にはいっていたので

./configure
make
make install

して出来上がったcocot.exeを/binに入れた。

あとはいかのaliasを切って完了。

alias ping='cocot ping'

これでWindowspingを使いつつも問題なく表示できる。
よかった。

emacs設定

また使いたい病になったのでWindowsで設定を行う。
Cygwin環境のemacsを設定するために奮闘中。


cygtermを設定して
teraterm ⇒ emacs-w32@Cygwin を呼日だせるように設定した。


特殊文字「①」などが化けるのがどうしても治らないので少し困った。
対策としてcp5022xを入れたつもりだけど
どうもまだおかしい。

読み込めないし、書けない。。


あとは矩形選択が使えるように
いかを追加。
Crtl+Ret してモードに入って操作できる。
マウスでも操作出来るようにしたかったけど
急ぎではないので後回しにした。

;;矩形三択モード
(cua-mode t)
(setq cua-enable-cua-keys nil)


どれだけ追加パッケージをいれるか分からないけど
いかを参考にauto-installも導入
http://blog.kondoyoshiyuki.com/2012/12/17/install-auto-install-el-on-emacs/



emacsは最近触ってなかったのでさっぱりですな。

Ruby on Rails はじめました

冷やし中華の季節でもないのに
はじめました
のタイトルで失礼します.

もはやいつインストールしたのかも定かではないですが

Valkyrie:~ (ユーザ名)$ which ruby
/Users/(ユーザ名)/.rbenv/shims/ruby
Valkyrie:~ (ユーザ名)$ 

rbenvでrubyを導入していたらしい

sudo gem install rdoc
sudo gem install rails

でひとまず完了.


<環境>
モデル:13-inch, Mid 2012
プロセッサ:2.9 GHz Intel Core i7
メモリ:8 GB 1600 MHz DDR3
グラフィックス:Intel HD Graphics 4000 512 MB
ソフトウェア:OS X 10.8.2
MySQL:5.5.28 MySQL Community Server (GPL)
ruby-mysql :2.9.10
ruby:1.9.3-p385

Mysql::ProtocolError

<環境>
モデル:13-inch, Mid 2012
プロセッサ:2.9 GHz Intel Core i7
メモリ:8 GB 1600 MHz DDR3
グラフィックス:Intel HD Graphics 4000 512 MB
ソフトウェア:OS X 10.8.2
MySQL:5.5.28 MySQL Community Server (GPL)
ruby-mysql :2.9.10
ruby:1.9.3-p385
Eclipse:Version: Juno Service Release 1


bash上で実行しても問題なく動くけど
Eclipseから実行すると以下のエラーがでる...

/Users/(ユーザ名)/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.10/lib/mysql/protocol.rb:562:in `read_eof_packet': packet is not EOF (Mysql::ProtocolError)
	from /Users/(ユーザ名)/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.10/lib/mysql/protocol.rb:274:in `retr_fields'
	from /Users/(ユーザ名)/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.10/lib/mysql.rb:326:in `query'
	from /Users/(ユーザ名)/workspace/ruby_test_mysql/select_test.rb:14:in `<main>'

ちなみに実行したソースは以下の通り(途中まで)

require 'mysql'
client = Mysql.connect('127.0.0.1','ユーザ名','パスワード','DB名')


たぶんeclipseの設定に問題があるんだろうけど.
よくわからん.

予定している作業の本質ではないものの気になってしょうがない...



(追記)
ソースの中にpsを仕掛けてみたら驚愕の事実が...

501  3799  1048   0 11:05PM ??         0:00.12 /Users/(ユーザ名)/.rbenv/versions/1.9.3-p385/bin/ruby -KU -I/Users/(ユーザ名)/workspace/ruby_test_mysql -r/var/folders/0f/z2h08ngn7dgbwvpkq086y7xm0000gn/T/dltk64612.tmp/scripts/sync.rb /Users/(ユーザ名)/workspace/ruby_test_mysql/select_test.rb

だれが「-KU」つけていいと言った(# ゚Д゚)
何もしてないのに勝手についてるんだよな...



(追記)

厳密な切り分けができてないけど
以下の対応をやってるうちに勝手に出来るようになった.



このあといつの間にか選択出来るようになった
RunAsの項目「RubyApplication」を使うとうまいこと動きました.
ちなみにRunConfiguration上は以下のようになってました.


おそらく正解手順のはず.


ちなみにソースに仕掛けたpsでは以下のようになってました.

  501  8561  6602   0 12:16AM ??         0:00.12 /Users/(ユーザ名)/.rbenv/versions/1.9.3-p385/bin/ruby -I /Applications/eclipse/configuration/org.eclipse.osgi/bundles/627/1/.cp/ruby -rsync -- /Users/(ユーザ名)/workspace/ruby_test_mysql/select_test.rb

見事に「-KU」がなくなりました.

Connection refused(/tmp/mysql.sock)対策

VPSで運用中のUbuntuにおいて
rubyからruby-mysql使ってDBアクセスを試みたらエラーとなった..

$ irb
irb(main):001:0> require 'mysql'
=> true
irb(main):002:0> 
irb(main):003:0* client = Mysql.connect('localhost','ユーザ名','パスワード','DB名')
Errno::ECONNREFUSED: Connection refused - "/tmp/mysql.sock"


ちなみに環境としてはこんな感じです.

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
io-console (0.3)
json (1.5.4)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)
ruby-mysql (2.9.10)

$ rbenv versions
* 1.9.3-p385

原因は割とはっきりしていて"localhost"を指定しているのがまずいらしいです.
なのでちょこっとソースを変更したら直りました.

$ irb
irb(main):001:0> 
irb(main):002:0* 
irb(main):003:0* require 'mysql'
=> true
irb(main):004:0> client = Mysql.connect('127.0.0.1','ユーザ名','パスワード','DB名')
=> (略)


まぁ本当はこの辺の接続情報をじかに書くのはよくないと思うので
実際にコーディングしているときには問題にならないと思います.