Just another Ruby porter,

〜2015年9月上旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2015-09-01 (Tue)

画像回転アニメ #シェル芸

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アニメを作る。


2015-09-02 (Wed)

このワークステーションとプライマリドメインとの信頼関係に失敗しました

ドメイン環境のノートPC Windows 7にログオンしようとしたらそんなメッセージが出て入れない。
ぐぐってみるとそのものずばりの ページがMSにあった。
解決方法は一旦ドメインから抜けて入り直すだけと簡単なんだけど、
そのためには管理者権限を持つローカルアカウントでログインしないといけない。
まあ、例によってパスワード忘れちゃったのでどうしようかと思ったら、
ネットから切り離してキャッシュログオンという方法があるらしい。
が、会社中無線LANが有効だし外に出るのもなんだしとか悩んでいたら、パスワード思い出した。
これでいけるかと思ったら、無線LANにつなぐにはログオンが必要でにわとりと卵の関係に。
結局有線LANにはそんな縛りがないので事なきを得た。
心臓に悪い。

原因はセキュアチャネルが破損しているからということだが、なんだそりゃ。
それはともかくドメインに参加してるとローカルコンピュータのアカウントなんて忘れがちなので、
ちゃんと管理者アカウントを作ってアカウント名とパスワードは覚えておくように。


2015-09-03 (Thu)

sizeof(void)

gccだとsizeof(void)が1になる。これはK&Rの頃に

#define void char

と定義されていたプログラムが間違ってp++的な使い方しちゃってて、
そのために対応した的ななごりだと思う。
それに限らずgccは昔からある機能をなぜか捨てずに残すようで、
コードゴルフでも多用されてる。


2015-09-04 (Fri)

Yahoo Pipesとpipe2py

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"
        }
      }
    ]
  }
}

一応必要な情報は取れてるので、動いてるサーバがあるならこれもありかな。


2015-09-05 (Sat)

kimonolabs

pipe2pyもいいんだけど、サーバ用意しなきゃいけないのが難点。
そこでkimonolabsだ。
Yahoo Pipesの代替とするなら決定版とも言えるかも。
こっちのほうが簡単だ。
しかもどうにもならなくなったら、JavaScriptでいじれるのでもう何でもありだ。
ああ、でもFirefoxだとCSS Pathとかなんかおかしくなるときがあるので、
Google Chrome推奨。

というわけで@rubyciもまだまだ続くよ。


2015-09-06 (Sun)

画像回転アニメ化のconvertの数を減らす

先日の例では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

2015-09-07 (Mon)

自分のIPアドレス

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.


2015-09-08 (Tue)

複数のRSSフィードを1つにまとめるサービス

Yahoo Pipesでやってたけど、これはkimonoじゃできないので他のサービスで。
ぐぐるとそんなまとめが見つかるのでいくつか試した。

_ RSS Mix:

非常にわかりやすいUI。複数あるならあるだけコピペすればいい。1回ですむので楽。
ただ、数値文字参照をデコードしてくれないのが惜しい。

_ ChimpFeedr:

これもわかりやすいUI。複数あってもちまちま1個ずつ入れてボタンを押す必要あり。面倒。
いきなりアクセスしても403になってしまうので気長に待つ。
数値文字参照もデコードしてくれる。
タイムスタンプがマージした時点になってしまうのはいただけないがまあ気にしない。

_ feedkiller:

5つまでしか登録できないので除外。

というわけでChimpFeedrを使ってる。


2015-09-09 (Wed)

Feed Rinse

kimonoでもいいんだけど、簡単なフィルターなら別のサービスにしてみるかと、
Feed Rinseを使い始めた。
管理画面は日本語化け化けなのでかなり使いづらいがまあしょっちゅう使うもんでもないし。
マージ機能もあるが5個まで。
でも考えてみるとマージのマージとかすればいくつでも可能か。


2015-09-10 (Thu)

AWS Lambda functionのON/OFF

一度イベントソースを指定してしまうともう止めることができない。
イベントソースを消せばいいが、そうすると元に戻すのが面倒。
AWSの中の人もわざとエラーを起こさせろと言ってるんで、そういうもんみたい。
How can I make my lambda function ON/OFF?
ああ、だから後発のDynamoDB Streamsにはステータスでenable/disableがあるのか。
いや、全部できるようにしてくれないと意味がない。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!