2014/07/14(月) [n年前の日記]
#1 [prog][cg_tools] Gaucheをインストールしてみた
GIMP の Script-fu を書く際に、ちょっと苦労していて。
_Gauche - A Scheme Implementation から、Gauche-mingw-0.9.3.3.msi をDL。とりあえず、C:\Gauche\ 以下にインストールした。環境変数 PATH への追加はインストーラが自動でやってくれる模様。
DOS窓を開いて gosh と打つと、「gosh>」と表示されて入力を受け付ける状態になった。例えば (+ 1 2) などと打ち込めば動作確認ができる。当てずっぽうで (exit) と打ったら終了してくれた。
このままDOS窓上で作業するのはツライ感じがしたので、xyzzy 上で使えるようにする。以下を参考に作業。scheme-mode を導入して、~/.xyzzy を修正。
_xyzzy - WikiWikiFun
_matsuoka/scheme-mode-for-xyzzy - GitHub
M-x make-scheme-scratch すると、バッファが開く。C-RET を打つと「gosh>」と出てきた。
- Script-fu コンソール上では1行で入力しないといかんので動作確認が色々ツライ。
- Racket (Scheme) では、Script-fu が持っているマクロが使えなかったりする。
_Gauche - A Scheme Implementation から、Gauche-mingw-0.9.3.3.msi をDL。とりあえず、C:\Gauche\ 以下にインストールした。環境変数 PATH への追加はインストーラが自動でやってくれる模様。
DOS窓を開いて gosh と打つと、「gosh>」と表示されて入力を受け付ける状態になった。例えば (+ 1 2) などと打ち込めば動作確認ができる。当てずっぽうで (exit) と打ったら終了してくれた。
このままDOS窓上で作業するのはツライ感じがしたので、xyzzy 上で使えるようにする。以下を参考に作業。scheme-mode を導入して、~/.xyzzy を修正。
_xyzzy - WikiWikiFun
_matsuoka/scheme-mode-for-xyzzy - GitHub
M-x make-scheme-scratch すると、バッファが開く。C-RET を打つと「gosh>」と出てきた。
- (+ 1 2) C-RET と打てば、それらしい結果が出てくる。
- (exit) C-RET RET と打ったら、サブプロセスは死んでくれた模様。
[ ツッコむ ]
#2 [prog][cg_tools] gimp-shell.el等が気になる
Script-fu を書くなら、gimp-shell.el や script-fu-shell.rb を使えたほうがいいのかなと思えてきたり。ただ、導入の仕方が…。Windows上で動くかどうかも不明だし。
_gimp-shell.el / gimp-mode を使ってみた | anobota
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
_pft/gimpmode - GitHub
_gimp-shell.el / gimp-mode を使ってみた | anobota
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
_pft/gimpmode - GitHub
◎ script-fu-shell.rb を試してみた。 :
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
を参考にして動作確認を試みたり。
環境は、Windows7 + GIMP 2.8.10 Portable + Ruby 1.9.3 p545 mingw32版。
結果を先に書いておくと、動きそうだけど微妙に動かなかった。
試した手順をメモ。 _sonota/script-fu-shell - GitHub から一式をDL。解凍。
まず、以下のエラーメッセージが出てくる。
とりあえず192行目に、
再度試してみたけれど。
item->string は、script-fu-shell-init.scm 内で定義されてる。Script-fuサーバが返してきた値について、コンソールに出力するために文字列へと変換する処理を担当しているのだと思う。script-fu-shell-init.scm をGIMPに追加したはずなので、item->string が使えそうな気がするのだけど、反映されてないのだろう。どうやって反映させたらいいのか分からない。
136行目に、
やはり item->string を Script-fu に認識させないといかんらしい。もしくは Rubyスクリプト側で、リスト値その他を判別して文字列に変換する処理ができれば…。そんなことができるのかわからんけど。
GIMP の Script-fu のマズイ点は、動作確認がやりづらい点だと思うわけで。そこらへんをどうにかできないものかと…。
環境は、Windows7 + GIMP 2.8.10 Portable + Ruby 1.9.3 p545 mingw32版。
結果を先に書いておくと、動きそうだけど微妙に動かなかった。
試した手順をメモ。 _sonota/script-fu-shell - GitHub から一式をDL。解凍。
- script-fu-shell-init.scm を GIMP 2.8.10 Portable に追加。
- GIMPを起動
- Script-fu → Script-fu → サーバスタート
- ruby script-fu-shell.rb を実行。
- (gimp-display-new (car (gimp-image-new 640 480 0))) と打つ。
まず、以下のエラーメッセージが出てくる。
script-fu-shell.rb:190:in `run': undefined local variable or method `line' for #<ScriptFuShell:0x21128d0> (NameError) from script-fu-shell.rb:264:in `<main>'script-fu-shell.rb の 190行目に、
Readline::HISTORY.pop if dup_or_blank?(line)と記述があるが、line なんて変数は定義されてない。オリジナルソースは、作者の手元で動いていたのだろうか…。何故動いていたのだろう…。
とりあえず192行目に、
line = prepare_line(raw_line)という記述があるので、190行目を、その下に移動してみた。
再度試してみたけれど。
> (gimp-display-new (car (gimp-image-new 640 480 0))) => Error: (<unknown> : 61562155) eval: unbound variable: item->string「item->string なんて知らねえよ」と文句を言われてしまった。
item->string は、script-fu-shell-init.scm 内で定義されてる。Script-fuサーバが返してきた値について、コンソールに出力するために文字列へと変換する処理を担当しているのだと思う。script-fu-shell-init.scm をGIMPに追加したはずなので、item->string が使えそうな気がするのだけど、反映されてないのだろう。どうやって反映させたらいいのか分からない。
136行目に、
send_raw %Q{(item->string #{script.strip})}という記述があったので、試しに、
send_raw %Q{(#{script.strip})}と書き換えてみたが、一応コマンド?は送られて新規画像が作成されるものの、
> (gimp-display-new (car (gimp-image-new 640 480 0))) => Error: (<unknown> : 83411614) illegal functionと表示されてしまう。(1) というリストが返ってきてるけど、DOS窓に表示しようもなくてエラーになっているのかなと。
やはり item->string を Script-fu に認識させないといかんらしい。もしくは Rubyスクリプト側で、リスト値その他を判別して文字列に変換する処理ができれば…。そんなことができるのかわからんけど。
GIMP の Script-fu のマズイ点は、動作確認がやりづらい点だと思うわけで。そこらへんをどうにかできないものかと…。
[ ツッコむ ]
#3 [mysql] MySQLについて勉強中
VMware Player + Ubuntu 12.04LTS 上で MySQL とやらを勉強してみようかなと。
◎ インストール。 :
以下でインストールできるらしい。
sudo apt-get install mysql-server既に入ってた。自分、どこかの段階でインストールしていたらしい。
◎ 文字化け解消用の設定。 :
ググってみたら、文字化け解消用の設定をしておかないといかんそうで。/etc/mysql/my.cnf を編集する。
以下を追加。
古い解説ページでは、
_MySQL 5.5で「default-character-set」が使えず文字化けする→「character-set-server」にするとOK | KennyQi で解説されてた。どこかのバージョンで、character-set-server という記述に変わったらしい。
サービスを再起動。
sudo vi /etc/mysql/my.cnf
以下を追加。
[client] default-character-set = utf8 [mysqld] character-set-server = utf8 skip-character-set-client-handshake
古い解説ページでは、
[mysqld] default-character-set = utf8等の指定があるが、そのようにすると起動時にエラーが出て起動してくれない。
_MySQL 5.5で「default-character-set」が使えず文字化けする→「character-set-server」にするとOK | KennyQi で解説されてた。どこかのバージョンで、character-set-server という記述に変わったらしい。
サービスを再起動。
sudo service mysql restart
◎ rootパスワードを再設定。 :
MySQL root のパスワードを忘れてしまった…。mysql -u root -p と打ち込んで、パスワードを入力しても弾かれる。仕方ないので再設定する。
サービスを停止。
パスワードなしでログインできるようにする。
別の端末?シェル?を開いてから、ログイン。…一つ前のコマンドを打つ時に、最後に「&」をつけてやるべきだったかも。
パスワードを初期化。
プロセスを殺す。
パスワードなしでログインできるか確認。
パスワードを設定。
パスワードなしでもログインできてしまうか確認。
パスワードを指定してログインできるか確認。
サービスを停止。
sudo service mysql stop
パスワードなしでログインできるようにする。
mysqld_safe --skip-grant-tables
別の端末?シェル?を開いてから、ログイン。…一つ前のコマンドを打つ時に、最後に「&」をつけてやるべきだったかも。
mysql -u root mysql
パスワードを初期化。
update user set password='' where user='root' and host='localhost'; FLUSH PRIVILEGES; exit
プロセスを殺す。
sudo killall mysqldkillall って何だろうとググってみたら、kill はプロセスIDを指定して殺すけど、killall はプロセス名を指定して殺せるらしい。
パスワードなしでログインできるか確認。
mysql -u root exit
パスワードを設定。
sudo mysqladmin password -u root 新しいパスワード
パスワードなしでもログインできてしまうか確認。
mysql -u root以下のような感じで弾かれるはず。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
パスワードを指定してログインできるか確認。
mysql -u root -pパスワードを入力すれば welcome と言ってくれるはず。exit で抜ける。
◎ 参考ページ。 :
[ ツッコむ ]
以上、1 日分です。