【メモ】ImageMagick(convertコマンド)で3枚以上の画像を合成する

Pocket
LINEで送る

単なるメモですが日本語で手っ取り早いエントリーがなかったので。以下のドキュメントを読んでやってみました。

http://www.imagemagick.org/script/command-line-options.php?#evaluate-sequence

バージョンはこれです。Macでやってます。

$ convert --version
Version: ImageMagick 6.9.2-3 Q16 x86_64 2015-10-06 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules 
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib

この5枚を合成します。これもImageMagickで連結しました。($ convert +append *.png ../a.png)

b

実行。maxのほかにmeanとかminとかあります。

uedamb:tmp ueda$ convert *.png -evaluate-sequence max ../a.png

できたのがこれ。

a

時間を食ってしまったけどこれで論文が完成する・・・。

Pocket
LINEで送る

日記: 研究室の名前/AD○BE殺傷コマンドの作成

Pocket
LINEで送る

山なし、落ちなし、意味なし。

シェル芸研では無い

この前とったアンケート。違います。

正式名称はコレですので宜しくお願い致します。

Creative Cloudのjsのプロセス殺傷シェルスクリプト

AdobeのCreative Cloudが勝手にメモリを何ギガも食っていて、MacBookの8GBのメモリだとすぐ振り切れてしまう現象に見舞われており。

↓こいつらです。なんか、「JavaScript使っとけばいいんじゃね?」みたいな安易な実装で自爆しているんじゃないかと推測します。私のメモリは御社のプログラマに楽をさせるためにあるのではないのですが。

uedamb:~ ueda$ ps aux | grep js
ueda              512 100.0  4.4  3396884 369820   ??  R    11:20PM   2:50.36 
/Applications/Utilities/Adobe Creative 
Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../libs/node 
/Applications/Utilities/Adobe Creative 
Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../js/server.js
ueda              501  99.7  4.6  3428820 387152   ??  R    11:20PM   2:52.92 
/Applications/Utilities/Adobe Creative 
Cloud/CCXProcess/CCXProcess.app/Contents/MacOS/../libs/node 
/Applications/Utilities/Adobe Creative 
Cloud/CCXProcess/CCXProcess.app/Contents/MacOS/../js/main.js
ueda              606   0.0  0.0  2460396    336 s001  R+   11:23PM   0:00.00 
grep js

Macのtopは次のようにオプションを入れるとメモリ食ってる順に表示してくれますが・・・ひどいですね。CPUもギンギンに使っています。しかも殺しても仕事に何の支障もなく、挙句ゾンビのように何度でも蘇るさ状態です。

uedamb:~ ueda$ top -o mem
...
PID  COMMAND      %CPU TIME     #TH   #WQ  #PORT MEM    PURG   CMPRS  PGRP PPID STATE    BOOSTS         %CPU_ME
501  node         90.3 13:57.49 11/1  2    72    913M+  0B     239M   501  1    running  *0[1]          0.00000
512  node         96.6 13:55.64 11/1  2    71    835M+  0B     191M   512  1    running  *0[1]          0.00000
...

蘇るたびにプロセス番号を調べて殺しているのも面倒なので殺しの呪文をシェルスクリプトにしました。例外処理も何にもありませんが。あと、名前が物騒ですが他意はないです。他意はないというのは、ファイル名の通りに行動するということではありません。

使ってみましょう。

uedamb:~ ueda$ ~/SYS/KILL_ADOBE 
uedamb:~ ueda$ ps aux | grep js
ueda              720   0.0  0.0  2434836    756 s001  S+   11:42PM   0:00.01 grep js

いなくなりました。シェルスクリプト便利!万歳!超小手先感!

とか書いてたら、なんだよ、解決しとったんかいというツイートを見つけてしまった・・・。いや、解決したならいいんですけど。

当該のパッチを当てたら寝る。

Pocket
LINEで送る

やっと論文の「, . 」と、その他原稿の「、。 」を使い分ける(自分にとっての)究極の方法を見つけた

Pocket
LINEで送る

ここ数年の問題が解決しました。こうやれば良かったんです。何故気付かなかったのか。

研究者は普通、デフォルトで句読点を「, .」(カンマとピリオド)にしてますが、私のようなエセの場合、学術的な文章とそうでない文章が半々で使い分けないといけません。1日に何度も切り替えるのも馬鹿馬鹿しいので、普段は「、。」で書いて、論文もそのまま「、。」で書いて後でvimで変換してました。ただ、これだと論文を出すときに変換忘れをやらかしそうでなんか落ち着きません。

しかし考えてみたら、論文は必ずpLaTeXで書いてmakeしているので、上のツイートのようにMakefileに変換を仕込んでおけばよかったと。なぜ今の今まで考えつかなかったのかと。ということでMakefileを晒しておきます。コンパイル対象のファイル名を変えたらMacとかLinuxとかBSDとかで普通に使えると思います。

uedambp:RSJ2015 ueda$ cat Makefile 
rsj2015.pdf: rsj2015.dvi
	dvipdfmx -p a4 rsj2015.dvi

rsj2015.dvi: *.tex
	sed -i.bak -e 's/。/. /g' -e 's/、/, /g' rsj2015.tex
	platex rsj2015.tex
	pbibtex rsj2015.aux
	platex rsj2015.tex
	platex rsj2015.tex

clean:
	rm -f *.aux *.log *.dvi *.bbl *.blg *.pdf *.ilg *.idx *.toc *.ind

6行目のsedで、-i.bakで「ファイルの中身を出力で入れ替えて、拡張子.bakのバックアップファイルを作る」という意味になります。Vimから:!makeした場合だと、コンパイルが終わったらVimが「編集中にファイルが変わっちまった」とワーニングを出すので、再ロードして変更を読み込みます。

ところで、こういう話は「、。」と「, .」どっちが正しいという炎上案件になりがちですが、ここではそういう議論はしません。誰が何を言おうと論文のフォーマットとして句読点を「,.」で出せと言ってくるわけでして、それに従順に従っているにすぎません。

ところで、rst2015.texとう名前の通り、そういう学会に向けて何か書いておるわけですが、まだ書けてません。期限が延長されてよかったよかった・・・。

Pocket
LINEで送る

bashのpipefailで確実にスクリプトを止める

Pocket
LINEで送る

シェルプログラミング実用テクニック、出版される前からもう補足ですが、私めがbashのpipefailというオプションをすっかり見落としていたのでフォローしておきます。

本文ではbashに-e(エラーがあったら止める)をつけてもパイプラインの左側のコマンドにエラーがあったときに処理が止まらないと書きました。

例です。

続きを読む bashのpipefailで確実にスクリプトを止める

Pocket
LINEで送る

【問題】年末年始シェル芸問題集

Pocket
LINEで送る

12月のシェル芸勉強会よりもひどい問題を準備しましたので、時間をかけてお楽しみください。

追記: 解答はコチラ

解答はMacで作りました。ただし、Coreutilsが必要なので、

$ brew install coreutils

をお願いします。Q1以外の解答は1/2頃に公開します(Q1は便利なので早めに公開しておきます)。解答はハッシュタグ「#シェル芸」でワイワイやっていただければと。

良いお年を。

Q1

年末年始はディレクトリの掃除をしましょう。ということで、ご自身のPCから重複しているデータを探してみてください。全てのファイルから探すのは大変なので、手始めに重複しているJPEG画像リストを作ってみてください。

続きを読む 【問題】年末年始シェル芸問題集

Pocket
LINEで送る

布団の中でiPhoneを使ってLaTeXの文章を書く手法の提案

Pocket
LINEで送る

いつまで人類は机に向かってキーボードを叩いているんだ!ということで、布団でLaTeXの原稿を書く方法(Mac + iPhone)を。なんか有料のものもあるらしいですが・・・ここに書いてある方法はダーターです。

こちらの記事の内容を参考にアレンジしたものです。

iPadでLaTeXを!! | Another Tomhus

まず、MacからDropBoxにLaTeX原稿一式を置きます。もう、研究者仲間には何を書いているのかバレバレですね。

uedambp:Dropbox ueda$ ls -d H27_KAKEN/
H27_KAKEN/
uedambp:Dropbox ueda$ ls H27_KAKEN/*.tex
H27_KAKEN/blahblah.tex                           H27_KAKEN/kiban_c_08_past_funds.tex
...

このディレクトリの中にMakefileを準備します。ポイントは、platexのオプションに-halt-on-errorを書いておく事です。これが無いとエラーがあったらiPhone側からはどうする事もできません。

uedambp:Dropbox ueda$ cat H27_KAKEN/Makefile 
h27_kiban_c.pdf: h27_kiban_c.dvi
	dvipdfmx h27_kiban_c.dvi

h27_kiban_c.dvi: *.tex
	platex -halt-on-error h27_kiban_c.tex
	platex -halt-on-error h27_kiban_c.tex

clean:

	rm -f *.dvi *.aux

ここでシェル芸。5秒に一回makeします。

uedambp:Dropbox ueda$ cd H27_KAKEN/
uedambp:H27_KAKEN ueda$ while sleep 5 ; do make ;done
make: `h27_kiban_c.pdf' is up to date.
make: `h27_kiban_c.pdf' is up to date.

あとは、PlainText 2か何かでtexファイルを編集します。pdfはiPhoneのDropBoxで確認すればよいでしょう。あ、iPhone側にもDropBoxが必要ですね。

問題は、「pdfが更新されない」ということからエラーを察知しなければならないことです。初心者には辛いかもしれません。何か改善策があれば@ryuichiuedaまでご報告を。
↑DropBoxからLaTeXの吐いたログ見ればいいですね。

さて、寝る。書く。とほほ。

Pocket
LINEで送る

個人的現在の状況(ところでshellshockってshに失礼ではないか?)

Pocket
LINEで送る

生きてます!

ということで、現在こんな感じです。

  • bash製で表に出ているものは止めている。bashで環境変数に関数を仕込めるというのはバグではなくそういう実装だったということで、現在議論が続いているようなのでそれ待ち。
  • 早いうちにbashcmsのdash版(dashcms。笑)を作るすぐ作りました!)。bashに完全に依存してるのはPIPESTATUSの部分だけなので、時間を見つけて落ち着いてやれば一時間くらいでできるかなーというところ。時間を作る。

私が本当に欲しいものはコマンドやプロセス、ファイルを制御できるものなので、そういう意味ではbashにこだわる必要はないんですが、それでも便利なのとbashbash言って本まで出している手前ちゃんと良いところ悪いところを説明しないといかんなと考えております。

あとまあ、shの実体がbashのアレはもう少し様子見になるかと。

Pocket
LINEで送る

Haskellでコマンドを使えるShellyというものを試したのでメモ

Pocket
LINEで送る

始めてこの分野で論文を書くための調査メモです。はいはい、サーベイサーベイ・・・。

https://hackage.haskell.org/package/shelly

理屈は使ってから考える人間なので、とりあえず理屈抜きで使ってみたので手順を磔の刑に処します。

続きを読む Haskellでコマンドを使えるShellyというものを試したのでメモ

Pocket
LINEで送る

危険シェル芸が蔓延して危険

Pocket
LINEで送る

謎の盛り上がりを見せております。togetterのPV数、ちょっとはこっちのサイトに譲ってもらえはしないだろうか・・・。

http://togetter.com/li/709172

1日で1万5千とは・・・。

ついでに某Kさんが便乗商売やってますので、軽く一瞥したってください。

http://www.luyehuizi.com/?p=783

特にこれ以上書く事もないのでまとめをさらにまとめてみる

1分で分かる危険シェル芸。

種火

続きを読む 危険シェル芸が蔓延して危険

Pocket
LINEで送る

第11回シェル芸勉強会無事終了

Pocket
LINEで送る

詳細はここに。

問題はこちら。

問題集

完全版

参加者の皆様、jusの皆様にお礼申し上げます。

Pocket
LINEで送る