〜2015年9月上旬〜
nekokakを見てたらconvertでいけそうだなと思いシェル芸。
% seq 0 10 350 | xargs -I@ convert bakeneko-2015-orig.png -alpha set \( +clone -rotate @ \) -gravity center -compose Src -composite ppm:- | convert -delay 10 - -loop 0 -resize 30% -colors 16 bakeneko-ani.gif
10度きざみで36枚の画像を生成しconvertで受けてGIFアニメを作る。
ドメイン環境のノートPC Windows 7にログオンしようとしたらそんなメッセージが出て入れない。
ぐぐってみるとそのものずばりの
ページがMSにあった。
解決方法は一旦ドメインから抜けて入り直すだけと簡単なんだけど、
そのためには管理者権限を持つローカルアカウントでログインしないといけない。
まあ、例によってパスワード忘れちゃったのでどうしようかと思ったら、
ネットから切り離してキャッシュログオンという方法があるらしい。
が、会社中無線LANが有効だし外に出るのもなんだしとか悩んでいたら、パスワード思い出した。
これでいけるかと思ったら、無線LANにつなぐにはログオンが必要でにわとりと卵の関係に。
結局有線LANにはそんな縛りがないので事なきを得た。
心臓に悪い。
原因はセキュアチャネルが破損しているからということだが、なんだそりゃ。
それはともかくドメインに参加してるとローカルコンピュータのアカウントなんて忘れがちなので、
ちゃんと管理者アカウントを作ってアカウント名とパスワードは覚えておくように。
gccだとsizeof(void)が1になる。これはK&Rの頃に
#define void char
と定義されていたプログラムが間違ってp++的な使い方しちゃってて、
そのために対応した的ななごりだと思う。
それに限らずgccは昔からある機能をなぜか捨てずに残すようで、
コードゴルフでも多用されてる。
Yahoo Pipesの代替としてpipe2pyを試してみた。
Does pipe2py work?のAugust 13のrsspipe氏のコメント通りに実行すればok。
とはいうものの完璧とはいかない。
% python compile.py -p 436f0fa591b3b95fd71adbedbebd5252 % python pipe_436f0fa591b3b95fd71adbedbebd5252.py location (default=さいたま市) url (default=http://www.tenki.jp/amedas/3/14/43241.html) /home/eban/w/1509/pipe2py/env/local/lib/python2.7/site-packages/html5lib/ihatexml.py:262: DataLossWarning: Coercing non-XML name warnings.warn("Coercing non-XML name", DataLossWarning) {u'y:title': {'td': [{'content': u'04\u65e5', 'rowspan': '23', 'class': 'bold'}, '23:00', '23.1', '0.0', u'\u5317\u897f', '3.2', '0', {'span': {'content': '---', 'class': 'grey'}}]}, u'title': {'td': [{'content': u'04\u65e5', 'rowspan': '23', 'class': 'bold'}, '23:00', '23.1', '0.0', u'\u5317\u897f', '3.2', '0', {'span': {'content': '---', 'class': 'grey'}}]}}
とこんな感じの結果になる。元のPipesには
$1 ${td.1} ${td.2}度 降水量${td.3}mm ${td.4}の風${td.5}m
のようなテンプレートがあった無視されている。結果もPythonなので無理矢理jsonに変換してみる。
% sed 'y/\x27/"/;s/u"/"/g' | jq . { "y:title": { "td": [ { "content": "04日", "rowspan": "23", "class": "bold" }, "23:00", "23.1", "0.0", "北西", "3.2", "0", { "span": { "content": "---", "class": "grey" } } ] }, "title": { "td": [ { "content": "04日", "rowspan": "23", "class": "bold" }, "23:00", "23.1", "0.0", "北西", "3.2", "0", { "span": { "content": "---", "class": "grey" } } ] } }
一応必要な情報は取れてるので、動いてるサーバがあるならこれもありかな。
pipe2pyもいいんだけど、サーバ用意しなきゃいけないのが難点。
そこでkimonolabsだ。
Yahoo Pipesの代替とするなら決定版とも言えるかも。
こっちのほうが簡単だ。
しかもどうにもならなくなったら、JavaScriptでいじれるのでもう何でもありだ。
ああ、でもFirefoxだとCSS Pathとかなんかおかしくなるときがあるので、
Google Chrome推奨。
というわけで@rubyciもまだまだ続くよ。
先日の例では36+1回もconvertを呼んでいる。
% seq 0 10 350 | xargs -I@ convert bakeneko-2015-orig.png -alpha set \( +clone -rotate @ \) -gravity center -compose Src -composite ppm:- | convert -delay 10 - -loop 0 -resize 30% -colors 16 -verbose bakeneko-ani.gif -=>bakeneko-ani.gif[0] PPM 300x300=>90x90 90x90+0+0 8-bit sRGB 16c 79.1KB 36.860u 0:36.950
これを無理矢理1回にするとどうなるかというとちょっと長くなる。
% (echo convert -delay 10 bakeneko-2015-orig.png \\; seq -f '\( -clone 0 -alpha set \( +clone -rotate %g \) -gravity center -compose Src -composite \) \' 0 10 350; echo -loop 0 -resize 30% -colors 16 -verbose bakeneko-ani.gif ) | sh bakeneko-2015-orig.png=>bakeneko-ani.gif[0] PNG 300x300=>90x90 90x90+0+0 8-bit sRGB 16c 79.1KB 30.590u 0:30.639
ちょっと速くなるが、まあ微妙だ。展開するとこんな感じ。
convert -delay 10 bakeneko-2015-orig.png \ \( -clone 0 -alpha set \( +clone -rotate 0 \) -gravity center -compose Src -composite \) \ \( -clone 0 -alpha set \( +clone -rotate 10 \) -gravity center -compose Src -composite \) \ <途中略> \( -clone 0 -alpha set \( +clone -rotate 340 \) -gravity center -compose Src -composite \) \ \( -clone 0 -alpha set \( +clone -rotate 350 \) -gravity center -compose Src -composite \) \ -loop 0 -resize 30% -colors 16 -verbose bakeneko-ani.gif
ifconfigがdeprecatedになりipコマンドが推奨されているが、
自分のIPアドレスを知りたいだけならhostname -Iでいけるらしい。
% hostname -I 192.168.0.50
-iとか-Iなんて知らなかった。
-i, --ip-address Display the network address(es) of the host name. Note that this works only if the host name can be resolved. Avoid using this option; use hostname --all-ip-addresses instead. -I, --all-ip-addresses Display all network addresses of the host. This option enumerates all configured addresses on all net‐ work interfaces. The loopback interface and IPv6 link-local addresses are omitted. Contrary to option -i, this option does not depend on name resolution. Do not make any assumptions about the order of the output.
Yahoo Pipesでやってたけど、これはkimonoじゃできないので他のサービスで。
ぐぐるとそんなまとめが見つかるのでいくつか試した。
非常にわかりやすいUI。複数あるならあるだけコピペすればいい。1回ですむので楽。
ただ、数値文字参照をデコードしてくれないのが惜しい。
これもわかりやすいUI。複数あってもちまちま1個ずつ入れてボタンを押す必要あり。面倒。
いきなりアクセスしても403になってしまうので気長に待つ。
数値文字参照もデコードしてくれる。
タイムスタンプがマージした時点になってしまうのはいただけないがまあ気にしない。
5つまでしか登録できないので除外。
というわけでChimpFeedrを使ってる。
kimonoでもいいんだけど、簡単なフィルターなら別のサービスにしてみるかと、
Feed Rinseを使い始めた。
管理画面は日本語化け化けなのでかなり使いづらいがまあしょっちゅう使うもんでもないし。
マージ機能もあるが5個まで。
でも考えてみるとマージのマージとかすればいくつでも可能か。
一度イベントソースを指定してしまうともう止めることができない。
イベントソースを消せばいいが、そうすると元に戻すのが面倒。
AWSの中の人もわざとエラーを起こさせろと言ってるんで、そういうもんみたい。
How can I make my lambda function ON/OFF?
ああ、だから後発のDynamoDB Streamsにはステータスでenable/disableがあるのか。
いや、全部できるようにしてくれないと意味がない。