mikutter3.5のUserMixinでユーザーアイコンにスキンの画像を使いたいとき
UserMixinを混ぜ込んだ自作のユーザーモデルのアイコンを、みくったーちゃん(スキンのicon.png)にしたい場合です。
- UserMixinは自身のprofile_image_urlフィールドをキーにして、Photo::PhotoからPixbufを得ている。なので、ユーザーモデルのprofile_image_urlにアイコン画像のURLを入れておけば良い。
※Photo::Photoは"file://hoge/fuga.png"みたいなfile://スキームのURLが解釈できない(バグ?)ので、URI::path()を使って/から始まるUNIXパス形式で渡してやる必要がありました。ってこれまたWindowsでハマるパターンじゃん。。。
コード的にはこんな感じになります。
user = DashButtonUser.new_ifnecessary({ :uri => URI.parse("dashbutton://singleton"), :name => "Amazon Dash Button", :idname => "Dashボタン", :profile_image_url => Skin["icon.png"].uri.path })
たった1行!シェルスクリプトからAmazon Dash Buttonを使う
tcpdumpコマンドを使ってAmazon Dash Buttonのボタン押下を検出する仕組みを編み出しました。
どうやんの?
tcpdump arp and ether src ac:63:be:ba:09:4b -c 1
arp :ARPパケット
and :かつ
ether src ac:63:be:ba:09:4b:発信元MACアドレスがDash ButtonのMACアドレス
-c 1 :該当するパケットを1回検出したらtcpdumpを終了する。
Dash Buttonを押すとtcpdumpが上記のパケットを検知して終了するので、その後にお望みの処理をするシェルスクリプトを書く感じです。
#! /bin/sh while true ;do ssh -i $2 root@localhost tcpdump arp and ether src $1 -c 1 > /dev/null 2>&1 echo "ボタンが押されました" done
Linuxとかでtcpdumpを動かすにはroot権限が必要です。
今回は普通のユーザーから使いたかったので、sshの公開鍵認証でパスワードなしにrootに昇格させることにしています。
おまけ:Dash ButtonのMACアドレスを調べる
moguno@dashbutton:~$ sudo tcpdump -e arp -c 1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes (Dash Buttonを押す) 09:11:06.876606 ac:63:be:ba:09:4b (oui Unknown) > Broadcast, ethertype ARP (0x0806), length 60: Request who-has 192.168.11.1 tell 192.168.11.13, length 46
ac:63:be:ba:09:4bがMACアドレスです。
お名前.comで取ったドメインが「何もしてないのに」名前解決してくれなくなった
会社の人からminecraftサーバ(araaraufufu.click)に繋がらなくなってると連絡あり。
最近忙殺されててサーバの設定なんて変えてないのになぁ。
ポートマッピング等、内部ネットワークには特に問題なし。
サーバを構築しなおしたりするも改善せず。
結局、DNSがうまく名前解決してくれてないことが判明。調査してみました。
Alicia:~ moguno$ dig araaraufufu.click +trace +all ; <<>> DiG 9.8.3-P1 <<>> araaraufufu.click +trace +all ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22334 ;; flags: qr ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 163844 IN NS h.root-servers.net. . 163844 IN NS i.root-servers.net. . 163844 IN NS j.root-servers.net. . 163844 IN NS k.root-servers.net. . 163844 IN NS l.root-servers.net. . 163844 IN NS m.root-servers.net. . 163844 IN NS a.root-servers.net. . 163844 IN NS b.root-servers.net. . 163844 IN NS c.root-servers.net. . 163844 IN NS d.root-servers.net. . 163844 IN NS e.root-servers.net. . 163844 IN NS f.root-servers.net. . 163844 IN NS g.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 251596 IN A 198.41.0.4 a.root-servers.net. 599878 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 518780 IN A 192.228.79.201 b.root-servers.net. 318569 IN AAAA 2001:500:84::b c.root-servers.net. 229655 IN A 192.33.4.12 c.root-servers.net. 141764 IN AAAA 2001:500:2::c d.root-servers.net. 518780 IN A 199.7.91.13 d.root-servers.net. 310180 IN AAAA 2001:500:2d::d e.root-servers.net. 482089 IN A 192.203.230.10 f.root-servers.net. 90977 IN A 192.5.5.241 f.root-servers.net. 88111 IN AAAA 2001:500:2f::f g.root-servers.net. 342186 IN A 192.112.36.4 h.root-servers.net. 488814 IN A 198.97.190.53 ;; Query time: 25 msec ;; SERVER: 192.168.11.1#53(192.168.11.1) ;; WHEN: Sun Jul 17 07:41:06 2016 ;; MSG SIZE rcvd: 496 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49815 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 8 ;; QUESTION SECTION: ;araaraufufu.click. IN A ;; AUTHORITY SECTION: click. 172800 IN NS a.click.dyntld.net. click. 172800 IN NS b.click.dyntld.net. click. 172800 IN NS c.click.dyntld.net. click. 172800 IN NS ns1.uniregistry.net. ;; ADDITIONAL SECTION: a.click.dyntld.net. 172800 IN A 199.19.1.4 b.click.dyntld.net. 172800 IN A 199.19.7.4 c.click.dyntld.net. 172800 IN A 185.38.98.4 ns1.uniregistry.net. 172800 IN A 64.96.1.1 a.click.dyntld.net. 172800 IN AAAA 2a02:e180::4 b.click.dyntld.net. 172800 IN AAAA 2a02:e180:1::4 c.click.dyntld.net. 172800 IN AAAA 2a02:e180:2::4 ns1.uniregistry.net. 172800 IN AAAA 2620:57:4000:1::1 ;; Query time: 344 msec ;; SERVER: 199.7.83.42#53(199.7.83.42) ;; WHEN: Sun Jul 17 07:41:06 2016 ;; MSG SIZE rcvd: 305 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33503 ;; flags: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;araaraufufu.click. IN A ;; AUTHORITY SECTION: CLICK. 900 IN SOA ns.uniregistry.net. regops.uniregistry.link. 1468708750 1800 900 604800 86400 ↑↑↑↑↑↑ 普通ならaraaraufufu.clickのネームサーバが返ってくるはずが、SOAレコードが帰ってきた。 ;; Query time: 206 msec ;; SERVER: 2a02:e180::4#53(2a02:e180::4) ;; WHEN: Sun Jul 17 07:41:06 2016 ;; MSG SIZE rcvd: 117
.clickドメインを管理してるとこにaraaraufufu.clickを問い合わせるも、そんなドメイン知らないと回答(SOAレコードってそんな使い方なんすかね?勉強不足)されてしまいました。あれぇ?
手違いでドメインが解放された?と思って別のドメイン業者でaraaraufufu.clickの空きを確認するも確保されてる模様。
じゃあ.clickにaraaraufufuのネームサーバを登録してくれてるお名前.comさんで障害とか起きてる?とメールを漁ったらきになるメールが届いてました。
━ お名前.com by GMO ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━ ドメイン公式登録サービス ━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━ http://www.onamae.com/ ━ お名前.comでは、個人情報の取り扱いに関しまして当社策定の「個人情報保護 ポリシー」に従っております。詳細は下記URLにてご確認ください。 http://gmo.jp/policy/privacy.html?pol=onamae ※本メールに心当たりの無い方は、本メールの破棄をお願いいたします。 ※本メールは重要なお知らせのため、「ドメインニュース」を配信停止いただ いているお名前.com会員様にも配信しております。 平素よりお名前.comをご利用いただきまことにありがとうございます。 2015年6月30日(火)11時より、ドメイン登録情報のより厳格な審査及び、サー ビス品質向上の一環のため、一部お手続きの流れを変更させていただきます。 お客様には、大変ご迷惑とご不便をおかけしますが、何卒ご理解とご協力を賜り ますようお願い申しあげます。 ■サービス変更日時 2015年6月30日(火)11:00以降に完了した手続きから ※現時点にて認証メールが送信されている状況ではございません。 ■変更内容 以下お手続き完了後、【登録者情報】のメールアドレス宛にWhois情報正確性 確認のため、認証メールが送信されます。 メール本文中に記載されている認証用URLへアクセスが必要となります。 [対象の手続き] ・ドメイン新規登録 ・登録者情報変更/名義変更 ・お名前.comへのドメイン移管 ■認証メール 件名:【重要】[お名前.com] ドメイン 情報認証のお願い 送信元:[verification-noreply@onamae.com] 宛先:登録者情報のメールアドレス ※認証メール送信後、2週間(336時間)以内に認証されない場合、ドメインの 利用制限が行われ、ホームページやメールがご利用できなくなります。 なお、利用制限された場合でも、認証手続きを行っていただければ数時間から 最大72時間程度で復旧いたします。 ※メールアドレス単位の認証となりますので、複数のドメインを1つのメール アドレスで管理されている場合、1度認証していただければ、その後の認証手続 きは不要となります。 ※利用制限中もWhois情報の変更等、各種手続きは可能となります。 【対象ドメイン】 .com/.net/.org/.biz/.asia/.info/.mobi/.name/.xxx/.ceo/.wiki/.yokohama/ .xyz/.bar/.rest/.christmas/.blackfriday/.click/.fishing/.rodeo/.vodka/ .hosting/.property/.diet/.help/.audio/.hiphop/.juegos/.host/.press/ .website/.black/.onl/.rich/.global/.ryukyu/.surf/.club/.nagoya/.tokyo/ .sexy/.tattoo/.link/.guitars/.pics/.gift/.photo/.pink/.red/.blue/.kim/ .ink/.okinawa/.cooking/.horse/.bid/.trade/.webcam/.market/.beer/.uno/ .cricket/.science/.casa/.work/.yoga/.vegas/.dance/.social/.pub/.moda/ .consulting/.kaufen/.actor/.rocks/.haus/.hiv/.party/.fashion/.garden/ .fit/.flowers/.kiwi/.buzz/.country/.wedding/.space/.tel ※ 日本語ドメインも対象となります。 ※ 各種JPドメイン及びccTLDは対象ではございません。 今後ともお名前.comをよろしくお願いいたします。
ああ、確かに3通ほど「早く認証してね」メールが届いてますね。
「何もしてないのに問題が起きた」じゃなくて「何もしなかったのが問題」だったんですね。
URLクリック。完了。
メールでは最大72時間と書かれてましたが即時復旧しました。
Alicia:~ moguno$ dig araaraufufu.click +trace +all ; <<>> DiG 9.8.3-P1 <<>> araaraufufu.click +trace +all ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8583 ;; flags: qr ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 165570 IN NS m.root-servers.net. . 165570 IN NS g.root-servers.net. . 165570 IN NS a.root-servers.net. . 165570 IN NS b.root-servers.net. . 165570 IN NS c.root-servers.net. . 165570 IN NS i.root-servers.net. . 165570 IN NS h.root-servers.net. . 165570 IN NS l.root-servers.net. . 165570 IN NS e.root-servers.net. . 165570 IN NS d.root-servers.net. . 165570 IN NS j.root-servers.net. . 165570 IN NS k.root-servers.net. . 165570 IN NS f.root-servers.net. ;; ADDITIONAL SECTION: m.root-servers.net. 252781 IN A 202.12.27.33 m.root-servers.net. 267420 IN AAAA 2001:dc3::35 g.root-servers.net. 316495 IN A 192.112.36.4 a.root-servers.net. 252834 IN A 198.41.0.4 a.root-servers.net. 86522 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 131289 IN A 192.228.79.201 b.root-servers.net. 379764 IN AAAA 2001:500:84::b c.root-servers.net. 483050 IN A 192.33.4.12 c.root-servers.net. 167935 IN AAAA 2001:500:2::c i.root-servers.net. 208480 IN A 192.36.148.17 i.root-servers.net. 306889 IN AAAA 2001:7fe::53 h.root-servers.net. 134145 IN A 198.97.190.53 h.root-servers.net. 500607 IN AAAA 2001:500:1::53 ;; Query time: 21 msec ;; SERVER: 192.168.11.1#53(192.168.11.1) ;; WHEN: Sun Jul 17 08:07:35 2016 ;; MSG SIZE rcvd: 508 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5977 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 8 ;; QUESTION SECTION: ;araaraufufu.click. IN A ;; AUTHORITY SECTION: click. 172800 IN NS b.click.dyntld.net. click. 172800 IN NS a.click.dyntld.net. click. 172800 IN NS c.click.dyntld.net. click. 172800 IN NS ns1.uniregistry.net. ;; ADDITIONAL SECTION: a.click.dyntld.net. 172800 IN A 199.19.1.4 a.click.dyntld.net. 172800 IN AAAA 2a02:e180::4 b.click.dyntld.net. 172800 IN A 199.19.7.4 b.click.dyntld.net. 172800 IN AAAA 2a02:e180:1::4 c.click.dyntld.net. 172800 IN A 185.38.98.4 c.click.dyntld.net. 172800 IN AAAA 2a02:e180:2::4 ns1.uniregistry.net. 172800 IN A 64.96.1.1 ns1.uniregistry.net. 172800 IN AAAA 2620:57:4000:1::1 ;; Query time: 129 msec ;; SERVER: 2001:500:2f::f#53(2001:500:2f::f) ;; WHEN: Sun Jul 17 08:07:35 2016 ;; MSG SIZE rcvd: 305 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13100 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0 ;; QUESTION SECTION: ;araaraufufu.click. IN A ;; AUTHORITY SECTION: araaraufufu.CLICK. 900 IN NS ns4.dzndns.com. araaraufufu.CLICK. 900 IN NS ns3.dzndns.com. araaraufufu.CLICK. 900 IN NS ns2.dzndns.com. araaraufufu.CLICK. 900 IN NS ns1.dzndns.com. ;; Query time: 104 msec ;; SERVER: 199.19.7.4#53(199.19.7.4) ;; WHEN: Sun Jul 17 08:07:35 2016 ;; MSG SIZE rcvd: 134 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15900 ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;araaraufufu.click. IN A ;; ANSWER SECTION: araaraufufu.click. 7200 IN A 113.153.25.22 ;; Query time: 29 msec ;; SERVER: 175.41.239.64#53(175.41.239.64) ;; WHEN: Sun Jul 17 08:07:35 2016 ;; MSG SIZE rcvd: 51