u-ryo's blog

various information for coding...

Rename Files

| Comments

ファイル名一括置換

「rename」を使えばよいとのことだったので、

1
$ rename 'IMG_' 'img_0' ~/photo/20151227/*.JPG

しかし、

1
Bareword "IMG_" not allowed while "strict subs" in use at (eval 1) line 1.

と言われて動かなかったので、

1
find /home/u-ryo/photo/20151227/ -maxdepth 1 -name "IMG_*.JPG"|sed 'p;s|IMG_\([0-9]*\).JPG|img_0\1.jpg|g'|xargs -n2 mv -i

とすれば動いた。

Ruby on Heroku

| Comments

11月から駒沢大学のCTCに派遣されて、 某A空輸の次期予約サイトのMonkey Testをやらされているんですが、 screen shotとかuploadするのに、何故か20kbという制限があります。 そんなの、Gimpとかフリーソフト使えば簡単なんですが、 入れさせてくれないんですよね。 なので、screen shotを撮るにはALT + PrintScreen、 編集はMicro$oft謹製のペイント、 pngでsave出来るようになっただけマシではありますが、 64bit colorでしか保存できないので、 sizeが無駄に大きくなっちゃって、 20kbなんてすぐ超えちゃうんですよね。 ImageMagick使えばそんなの、 convert infile.png -colors 256 outfile.png で済むのに。

仕方無いので、縮小したりしていたんですが、 縮小すると何が書いてあるかわからないし。 そうだ、Web Applicationならinstallしなくてもいい、 と気付いたんですけど、 巷間のserviceに外部秘の画像を上げるのは気が引けたので、 なら自分で作ろうと。

オンプレミスなserverも持ってますが、 イマドキじゃないのと、 よく見たらオンプレミスserverにはImageMagickも入ってないですし。 まぁそれはapt-get install一発で行けるからいいんですけど、 shell scriptでconvertすればいいから、 cgiでちゃちゃっと書いちゃおう、と思ったんですが。 POSTされたfile dataをparseするのが面倒かな、 と思ったのと、あと443が開いてないんですね。 なので、herokuに上げよう、と。 そうなるとrubyかな、と思ったので、調べてやってみました。

herokuの公式ruby用sampleを元に作れそう、だったので、 調べて、sinatra使ってるってわかって、 あとImageMagickはherokuに元々入ってて、 rubyはrmagicを使えるらしいということで、やりました。

cf.

  1. Heroku導入メモ
  2. ruby sample
  3. あと$ build?
1
2
$ git commit -a
$ git push heroku master

rmagicを使うには、以下の作業が必要でした。

  1. Gemfileにgem 'rmagick', '~>2.15.4', :require => 'RMagick'
  2. c9上でsudo apt-get install imagemagick libmagick++-dev

POSTされたfile dataの取得は、

1
2
image_filename = "./#{params[:file][:filename]}"
imagedata = params[:file][:tempfile].read

image dataの取得は、

1
image = Magick::Image.from_blob(imagedata).first

fileとしてのreturnは、

1
2
content_type = 'image/png'
attachment image_filename

image dataのbinary data取り出しは、

1
image.to_blob

256色への減色は、

1
mage.format = "PNG8"

とするだけで8bit colorで保存されます。

最終的には、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'sinatra'
require "rmagick"

get '/' do
  erb :index
end

post '/' do
	if params[:file]
	   image_filename = "./#{params[:file][:filename]}"
	   imagedata = params[:file][:tempfile].read
	   image = Magick::Image.from_blob(imagedata).first
	   image.format = "PNG8"
        content_type = 'image/png'
        attachment image_filename
        image.to_blob
	end
end

あぁ、erbってのも初めて使いました。 ここへpostするためのplain htmlが書いてあります。

Beethoven Comic

| Comments

昨日のDoodleがBeethovenのmini gameだったので、 ついそのまま検索していたら、 ベートーヴェン4コマ劇場「運命と呼ばないで」 というのを見付けました。 これ面白い! デス。 部屋汚い、(時々間違える?など)演奏が雑、でも情熱的、 ってのだめじゃーん。 でも天才ってそうなんでしょうね。 オヤジギャグとかいいなー。貧乏は嫌ですが。

Deploying to GAE

| Comments

いやぁ、こんなに大変だとは。 web applicationをGAEにdeployするのって。 既に何度も過去にはやっているんですが、 久し振りにやると、なかなか上手く行かないです。

最初、Cloud9でやってみたら、 何度やってもresource(memory?)不足でappengine:updateが途中でkillされます。 仕方無いので、GAE連携がウリのCodenvyでやってみたんですが、 original jarにdependsしているんですけど、 それが上手く行かないんです。 official manual 見てrepository追加して、 directoryもgroupId、artifactId、versionと掘って配置して、 buildかけると読んではくれてるんですが、 何故か「jar; error in opening zip file」と言われてこけます。 改めてjar fileをuploadしたんですけど、 何度やってもダメ、同じerrorでした。 何故?

もう仕方無く、localでbuild、updateしようとすると、 今度は「Either the access code is invalid or the OAuth token is revoked.Details: invalid_grant」と言われて。 herokuはCloud9でサクッとdeploy出来るのに。 やっぱりGAEはもう時代遅れでしょうか。 Java8未対応ですし無料分では。

結局、~/.appcfg_oauth2_tokens_javaを消したら上手くOAuth再取得してくれました。 やれやれ、です。

Angular2 Tutorial

| Comments

Angular2のTutorialが凄いです。 すぐ使えて面白いです。 英語も平易ですし。 そこからDeveloper Guidesへも、 割と繋がってますし。完全に、ではないのが残念ですけど。 特にroutingの解説は、欲しいところです。 netで探せばAngular2の解説が幾つか日本語でも出て来ますが、 2015年3月4月くらいのものだと、 もうかなり大分違うので(@Teplateとかもうないでしょう?)、 気を付けないとなりません。 でも今からAngularやるなら、 もう来年からAngular2になることが分かっているので、 今更$scopeとかやりたくないですよ。 まだまだα版なので、これからも大きく変わりそうですけど...