d.sunnyone.org
sunnyone.org

ページ

2012-11-26

Android向けのシンプルな壁紙を作るためのGIMP用スクリプト

いくや先生がこんなことをおっしゃっていたので、作ってみました。祝・初Script-Fu.


ダウンロードはこちら: https://gist.github.com/4143779 (android-wallpaper.scm)

といっても、端末の画面サイズの画像をセンタリングしてAndroid壁紙サイズにリサイズするだけだけども。
しょっちゅう壁紙作って替えたい人向けですね。

使い方

Scriptのダウンロードと配置

ダウンロードしたandroid-wallpaper.scmを以下の場所に配置後、GIMPを起動する。
  • C:\Users\[username]\.gimp-2.8\scripts (Windows (Vista以降))
  • ~/.gimp-2.8/scripts (Linux他)

端末の画面サイズの壁紙候補の画像をロードする

壁紙にしたい画像を読み込み、端末の画面サイズに加工する。変なAndroid壁紙サイズではなく、スペック表に書かれている画面サイズ。
この場合の例は、Xperia acroなので480x854。

Script起動

メニュー項目が追加されているので、「画像>Resize for Android Wallpaper」から起動する。

調整と保存

「Resize for Android Wallpaper」を実行すると、壁紙候補の画像がセンタリングされた状態で画像が大きくなる。「Wallpaper Layer」というレイヤーが追加されるので、ここに適当なパターンなりグラデーションなりを貼ればシンプルな壁紙の完成。

裏話

作る前、Androidの壁紙はホーム画面の枚数分横並びだと誤解してたから、ImageMagickでちゃちゃっとくっつければ終わりだろうと思ったんだけど、画面サイズ2倍の横幅をトータルで合うようにちょいちょいずらすだけっていうやっかいな仕様であった。
(詳しく:Androidの壁紙に最適な画像サイズがわからない...助けてライフハッカー!

横に並べることができない以上、サイドパネルの部分を何らかの部分で埋めないといけないのでinteractiveなGIMPで実装することにしたという流れがあったのであった。

おかげで、10年以上昔に書いてみようと思って書いたことがなかったScript-Fuを書けるようになった。Schemeを実用で使ったのは初めてかも。

Script-Fuの書き方

Script-Fuの書き方は、以下を読めばわかった。
おれおれ Script-Fu 入門

ポイントだけ書くと、以下の感じ。
  • スクリプトはfoobar.scmとして$HOME/.gimp-2.8/scriptsに配置する。
  • スクリプトを配置したら、「フィルター>Script-Fu>スクリプトを再読み込み」で読み直す。
  • どんな関数があるかは、「フィルター>Script-Fu>Script-Fu コンソール」でScript-Fuコンソールを起動して「参照」ボタンを押せばインクリメンタルサーチで調べられる。
  • スクリプト用の関数を適当にdefineして、script-fu-register関数を呼んで登録する。メニューにも載せたい場合はscript-fu-menu-registerを呼ぶ。
  • スクリプト用の関数の引数はscript-fu-registerの引数で決まる。
  • どんな感じに書けばいいかはGIMP内蔵のスクリプトを読めばわかる。/usr(C:\Program Files\GIMP 2)/share/gimp/2.0/scripts にたくさんある。

2012-11-18

Gollumのblockdiag対応

どうも都合のよいことにGollumのpull requestにGraphviz対応があり、変更すべきところがまるわかりだったので、真似してblockdiagに対応した。

こんな感じでblockdiagが書ける。
 <blockdiag>
  { A -> B; }
 </blockdiag>

MediaWiki extensionと異なり、seqdiag/actdiag/nwdiagを使うときは専用のものを使う。
 <seqdiag>
  { A -> B; }
 </seqdiag>

出力サンプルはこんな感じ。


Extensionという仕組みがないようなので、パッチという形になってしまうが、対応したものがこちら

Gollumで日本語ファイル名を使う

前回紹介したWiki、Gollum。すでにレポジトリに入っているものに対しては問題なく日本語ファイル名も使えるのだが、Createするときに問題がある。それは...

このように日本語ページへのリンクを作り、
リンクをたどってCreateさせると...
"nituite"はいいにしても"ri ben yu"は日本語じゃありませんから!

これはあまりにもひどいので調べたところ、"to_url"というメソッドがこの変換をやっている模様。あまりはっきりとは調べてないのだが、どうやらstringexというモジュールに"Unidecode"という機能があり、これをしているようだ。

仕方ないので、この機能を外した。to_urlはどうもこのページ名の調整に使っているっぽいので、すべてのto_urlを機能しなくした。それに伴いURLエンコードが必要になる部分があるので、対応した。
 その変更がこちら

GitバックエンドなWiki「Gollum」をインストールする

Gitit使ってたんじゃなかったのかよ、という話なのだが、Gititは単体でディレクトリ以下にホストできない((Virtual)Host必須)とか、いろいろ遭遇したので、別のものを使ってみた。

使ってみたのは、Githubの(?)Wiki engine「Gollum」
http://github.com/github/gollum


Ruby, Sinatraのお馴染みの構成。今のところRuby 1.8でも動く優しい仕様。
画面はこんな感じ。



インストール

gemで入れる方法もあるが、細かい事情によりちょいちょいいじる必要があるため、git cloneしてbundlerで拾ってくる方法を取る(bundlerは例えばUbuntu 12.04ならapt-get install ruby-bundlerで入る。)

bundleコマンドが使える状態になったら、bundleコマンドを叩く前に、libxsltの開発パッケージをインストールする(自分のところでこれが足りなかっただけで、他にも必要かも)
# apt-get install libxslt-dev

あとは、cloneしてbundle installすればOK。
$ cd ~/opt
$ git clone https://github.com/github/gollum.git
$ cd gollum
$ bundle install --path vendor/bundler

設定

保存するためのgitレポジトリを作る。
$ mkdir ~/wikidata
$ cd wikidata
$ git init
--bareで作ったものは2012/11/17時点のmasterでは怒られる(手元のは対応させちゃった)

実行方法

bundlerで入れたので、bundle execを使う。
$ bundle exec bin/gollum --port 5080 --base-path wiki ~/wikidata
--base-path wikiを指定すると、/wiki/がトップになる(=ProxyPassするときに便利)

あとはhttp://server:5080/wiki/にアクセスすればOK.

デーモン化

例によってrunitを使った。以下のような感じ。
$ mkdir -p ~/var/log/gollum
$ mkdir -p ~/service/.gollum/log

$ vi ~/service/.gollum/run
~~~
#!/bin/sh
echo "Start."
cd ~/opt/gollum
exec bundle exec bin/gollum --host 127.0.0.1 --port 5080 --base-path wiki ~/wikidata 2>&1
~~~

$ chmod +x ~/service/.gollum/run
$ vi ~/service/.gollum/log/run
~~~
#!/bin/sh
exec svlogd -tt ~/var/log/gollum
~~~

chmod +x ~/service/.gollum/log/run

$ mv ~/service/.gollum ~/service/gollum

--host 127.0.0.1をつけたいんだけど、--helpに書いてあるのにまさかの無視される罠があるのでそのままでは使えない。(これも対応させた。)
マージされたので--host使えます。

認証

Apacheでかける。

<Location /wiki>
          AuthUserFile /dokka/www/htpasswd-wiki
          AuthGroupFile /dev/null
          AuthName "Input password"
          AuthType basic

          require valid-user
        </Location>

        ProxyPass /wiki/ http://127.0.0.1:5080/wiki/
        ProxyPassReverse /wiki/ http://127.0.0.1:5080/wiki/

これで概ね使うことができる。


2012-11-17

blockdiag-mediawiki-extensionをseqdiag,actdiag,nwdiagに対応させた

blockdiagMediaWiki対応が素晴らしかったので、他のseqdiag, actdiag, nwdiagにも対応させた。PHPなんてひさしぶりで、arrayの書き方覚えてなかったよ。pull requestしたので、うまくいけば取り込んでもらえるかも。

対応してて気付いたのだけど、nwdiagにはrackdiag, packetdiagなんてのもあるのね。ラック図はまぁそうだよねって感じだけど、パケットのアレを描くという発想はなかった... バイナリアン達には便利かも。

(追記)
早速取り込んでいただけました。

2012-11-10

MSBuild Launcher 0.0.2リリース

MSBuild Launcher 0.0.2をリリースした。
 https://github.com/sunnyone/MsbuildLauncher/downloads

キャンセル機能がついた。といっても、ビルド処理を別プロセスで立ち上げてキャンセルしたいときはKillするというアグレッシブな仕様だけど。

bkimgprocに傾き補正機能を追加

bkimgprocに傾き補正機能を追加した。
(といっても、-deskew 40%を引数に追加しただけだけど)

ちなみに、"t"を指定された場合のみ機能するようになっている。テキストでないと誤爆しそうだったので。これでようやくmとtを分けた意味がでてきた。