aタグのping属性

私は基本的に業務・趣味の両方でGoを書いていると言うこともあり、ソースコードの管理はGOPATH方式で管理しています。しかしGOPATH方式で管理していると、ライブラリの挙動確認やらなんやらで使う書き捨てのコードをどこに置くか、という問題がある。 src/github.com/nasa9084/... に置くというのも一つの手ではあるものの、社内のGitリポジトリやらGitHubやらにアップするつもりもないコードを他の、GitHubやらなんやらで管理されているリポジトリと同じ場所に置くと一覧性や検索性が下がるし、やりたくはないので、普段はそういった直ぐにいらなくなるコードは src/practice というディレクトリに配置しています。 毎回書き殴った後に削除をする、というまめな性格はしていないので、結果として二度と日の目を見ないことがほとんどなコード片が貯まっていくので定期的にクリーンアップを行っています。書き殴りのコードとはいえ、何かヒントが残っているかもしれないので、削除前にチラチラと内容を確認しながら削除していくのですけれど、そういえばそんなの調べたな、なんて思うコード片がたまに見つかったりする訳です。 今回発見したのはタイトルにもあるとおり、aタグのping属性です。W3C発行(発行、という表現が正しいのかどうかもよく分かっていないですけど)のHTML仕様が廃止となり、WHATWGのHTML仕様、HTML Living Standardに置き換えられる、との話を6月頃に見て、なるほどなーなんてちょろっと調べて、HTML Living Standardではaタグのping属性ってのがある、という情報にたどり着き、そして実際どんな挙動なのか、とコードを書いた、という経緯だったと思います。 実際のコード片がこちら: index.html: 1 2 3 4 5 6 7 8 9 10 11 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Document</title> </head> <body> first page <a href="second.html" ping="http://localhost:8080/ping">second</a> </body> </html> second.html: 1 2 3 4 5 6 7 8 9 10 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Document</title> </head> <body> second page </body> </html> main.go: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package main import ( "log" "net/http" ) func main() { http....

2021-08-02 · nasa9084

dateコマンドで簡単な時間計算をする

shellscript内で時間計算をしたい事がある。例えば、「最終実行から10分経過していたらxxxをする」という様なケース。定期的にファイルを生成したい、といった簡単なユースケースであれば、findコマンドあたりでファイルの変更タイムスタンプを調べるといった方法でも実現可能ではあるけれど、「ファイルの中に記載された時間から10分経過しているかどうか調べる」なんて事もあるでしょう(あった)。 shellscriptで時間の計算するのって面倒そうなんだよな・・・と思っていたのですけれど、私のユースケースだとそれほど難しくなくて、dateコマンドで大体なんとかなるという事が分かったのでメモしておきます。 時間を比較する 二つの時間を比較したい。これは対象の時間がUnix時間で表現されていれば非常に簡単で、dateコマンドを使用する必要すら無く、test乃至[で普通に比較ができます。もちろん取り扱いは数字として取り扱うことになるので、比較演算子として-ltか-gtを使用します。 1 2 3 4 5 6 7 8 # 1626146220 = 2021-07-13T12:17 # 1626146340 = 2021-07-13T12:19 if [ 1626146220 -lt 1626146340 ]; then echo hello fi # Output: # hello 対象の時間がUnix時間で表現されていない場合、Unix時間に変換して比較するのがおそらく最も簡単です。dateコマンドで一度時間をパースして、Unix時間の形で出力します。パースには-d / --dateオプションを使用します。Unix時間として出力するためのフォーマット文字は%sです。 1 2 3 4 5 6 7 if [ $(date -d '2021-07-13T12:17' +%s) -lt $(date -d '2021-07-13T12:19' +%s) ] then echo hello fi # Output: # hello -d / --date オプションは一般的なフォーマットの日付文字列をよしなにパースしてくれます。詳しいフォーマットはGNU Coreutilsのマニュアル などを見ると良いでしょう。...

2021-07-13 · nasa9084

梅仕事2021 (2)

先だって梅シロップを漬け、既に半分以上梅シロップを消化してしまった今日この頃、大分遅くなってしまったものの今年も梅酒を仕込みました。 就職で関東に出てきてから今年で4L瓶が5本目と相成りました。 本年は面倒くさがっている間にあれよあれよと日が経ってしまい、近所の西友では4L瓶が買えなくなる始末でありましたがなんとか4L瓶を調達する事に成功し、無事仕込みを済ませることができました。 今年はあまり時間が無かったこともあり、梅は近所の西友で調達した南高梅(大玉)です。割と傷も少なく良い香りのする梅で、西友侮りがたし、といったところですね。おそらく1kgと思われる袋が980円(税抜)でした。 酒は今年は初めて日本酒を使用。実は以前から日本酒で梅酒を仕込むというのはやってみたいと思ってはいたのですが、通常店頭で販売されている日本酒は梅酒を仕込むには度数が足りないため、梅酒(乃至果実酒)用のものを調達する必要がある、という面倒さがあり、店頭でそういった梅酒用の日本酒が販売されているのを発見したことがなかったため、これまでは挑戦してきませんでした。 今年はむやみやたらにAmazonのポイントが貯まっていたという事もあり、Amazonでいろいろと探したところ、果実酒用の日本酒が販売されていたためこちらを購入しました。 苗場酒造という酒蔵の苗場山「果実酒用日本酒」、度数が20%のものです。Amazon で本体価格が1,800円、送料が500円です。 日本酒を使うのは初めてのため、砂糖は特に奇をてらわず一般的な氷砂糖を使用しました。 作り方は特に例年と変わらず、洗ってへたを取った梅と砂糖を瓶に入れ、上から酒を注ぎ入れるだけです。日本酒の場合米の甘みがあるため砂糖は控えめで良い、という事でしたので、酒に付属してきたレシピにあわせて氷砂糖の量は500gとしました。例年は1kgで使用しているため、例年の半分です。 このあとは砂糖が溶けるまでは時々振ってあげて、砂糖が溶けたら放置です。自家製梅酒大体3ヶ月程度からが飲み頃と言われていますから、9月くらいになったら味見をして、そのあとはまた数年放置されることとなります。 最後に、昨年は2017年に漬けた梅酒を飲んで締めたようなので 今年は2018年に漬けた梅酒を飲んで締めようと思います。 ラベルによると2018年は久米仙と氷砂糖を使用したようです。泡盛ですね。意外と癖もなく、飲みやすく仕上がっています。 今年の梅酒も美味しく漬かることを祈って。

2021-06-18 · nasa9084

梅仕事2021 (1)

向暑の候皆様いかがお過ごしでしょうか。近所の西友で梅酒関連の商品が店頭に並びはじめているのを見て季節を感じる今日この頃です。 例年梅酒と梅シロップを漬けるわけですが、漬けっぱなしで放置している梅酒はさておき梅シロップはできればシーズン中に二回は仕込みたい、という気持ちがあり、店頭で梅の実を発見してとりあえず購入してきました。 まだ出始めですから、まだかなり青い実ではありますが、急ぎ一発目の梅シロップを仕込みました。 手順自体は例年とそう変わるモノではなく、昨年梅シロップをつけていた空き瓶をアルコールで消毒した後、洗って水気を切りへたを取った梅の実と砂糖を交互に積んでおいておきます。昨年 は中ザラ糖を使用した、との記録がありましたが今年は気分で三温糖をセレクトしました。特に深い理由はありません。三温糖はしっとりとしており、積み上げるのも容易ですし、粉末状なので隙間にも入っていきやすく取り扱いがしやすい様に感じました。氷砂糖はうまく積んでいくことを考えると意外と難しいです。 うまいこと梅を砂糖の中に埋める事ができ、上から見ると梅が出てしまっているということもありませんから、今年は酢を入れない方針で行ってみようと思います。 大粒の実が店頭に並びはじめたら梅酒も漬けたい所存です。

2021-05-26 · nasa9084

最近のWebカメラってすごい、の件

どうもAnker大好き人間です。ケーブル類は大体Ankerだし、Thunderbolt 3 Dock もAnkerだし、充電器もヘッドホン もAnkerです。 そんなAnkerから、新しくWebカメラが発売されたということで、購入したらすごかったのです。 購入したのはAnker PowerConf C300 。Amazonで7,990円で購入できます。LogicoolのStreamCam を買いたいな、と思っていたところのAnkerからの新商品、値段も半額以下、という事で即購入に至りました。 箱は最近よくあるぴったりでしっかりしたタイプの箱です。ぴったりすぎて開けるのにちょっと時間がかかる奴ですね。高級感はあります。写真ではざらざらしたかんじのテクスチャっぽく見えますが、これは印刷で、手触りはすべすべです。 これまでのAnker製品によく入っていたHappy/Not Happyカードではあんく、“WHAT DO YOU THINK OUR WORK?“というカードが入っていました。PowerConfシリーズではこの紙なんでしょうかね。 ケーブルはType-C to Type-Cケーブルが付属しています。この手のWebカメラは本体からケーブルが伸びている事が多いので、ケーブル交換ができるのはとても嬉しい点ですね。 外部ディスプレイを使っていると、Webカメラは大体ディスプレイのUSBポートを使うと思うんですが、Type-CからUSB-Aに変換するためのコネクタも入っているので安心(?)です(Type-Cの仕様的には全然安心じゃないんですが) プライバシー保護用の蓋みたいなものもついているのはなんだか時代を感じさせますね。 これまで使っていたWebカメラと並べた様子はこんな感じ。サイズは結構大きくなりましたね。 古い方のカメラで、ライトをつけないとこんな感じでした。一般的なご家庭は大体そうだと思うんですが、壁に机をくっつける配置にしていると夕方以降逆光になる、という問題があり、顔がとても暗くなります。 結果として、ライト を購入して明るさを確保したりなんかしている人も多いと思います。私もその一人でした。ライトをつければまぁもちろん明るくはなります。 新しいカメラではこの通り。ライトなしでも頭が適当にボサボサなのがバレて恥ずかしいくらいには明るく映ります。これは本当に感動。 比較用にライトをつけてみました。むしろちょっと明るすぎる位ですね。これはライトはもうお役御免かもしれません。 加えて、専用のアプリで細かい設定をする事ができます。解像度の調整、fps、画角、明るさやコントラストなどが設定できるほか、人の顔を追跡するような設定もできます。 このアプリの良いところは、他のメーカーで良くあるような、常駐させておかなければ設定が反映されないような類いのモノではなく、設定したらアプリを閉じても設定が反映され続ける、というところですね。 総じて、非常に満足度が高く、コストパフォーマンスに優れた商品だと思いました。流石Anker。

2021-05-16 · nasa9084

RAMマウントをQi対応にする

バイク乗りの皆さん、スマホホルダーは何を使っていますか?色々と選択肢はありますが、しっかりとしたものを使いたいと考えた時、RAMマウントを使っている人も多いでしょう。 加えて、バイクからUSB電源を引いてスマホを充電している人もいるでしょう。そうした場合、どこぞに駐車をして、スマホを取り外すたびにケーブルを抜いて、また走り出すときにケーブルを挿して、というのは少しばかり面倒じゃないでしょうか? 世の中、面倒だという事柄にはそれを面倒ではなくするソリューションがあるもので、無接点充電対応のスマホホルダーなるものが販売されています。 こういったモノを購入しても良いのですが、やはりスマホをしっかりホールドしてくれるという点でできれば安心安全のRAMマウントを使い続けたい気持ちがありました。 そう考えていたところ、世の中には防水仕様のQi充電器というモノが存在するという事を知りました。 正直この手のものは屋内で使うモノだと思っていたので、どういうユースケースがあって防水仕様になっているのかはよく分からないのですが、私にとっては渡りに船、幸いなことに超薄型という事なのでなおのこと私のユースケースにぴったりということで商品がこちらです 友人の@tagucch に誕生日プレゼントとして送ってもらいました。感謝。 2021-05-06追記: Pixel 4とは相性が悪かった(Pixel 4ではうまく充電できず、iPhone XRで試したら充電できた)ため、本品はiPhoneを使っている妹に譲りRAMマウントは再びQi非対応となりました。無念。iPhoneユーザは本商品で問題ないはず。多分。 扨、実際これをRAMマウントに設置できるか、というところが問題ですが・・・ RAMマウントは汎用のスマホホルダーですので、ちゃんと余裕があります!ここに適当に突っ込んでみたところ、スマホのホールド感も問題なく設置できそうです。 何故か丸い両面テープも付属していたので、おあつらえ向き、という感じで適当に両面テープで(本当は屋外用の両面テープを使った方がいいんでしょうが&屋外用の両面テープも持っては居るのですが)ぺたっと うまく貼ることができました。これ自体は普通のUSB給電ですので、これまでケーブルを挿していたUSBポートからケーブルを抜き、代わりにQi充電器のケーブルを挿します。 キーをオンにしてスマホを設置したところ無事に充電できました。 RAMマウントは中心部分は回転しないので、スマホの取り付け・取り外しも問題ありませんでした。 めでたしめでたし。

2021-04-27 · nasa9084

Desk Tour 2021.04

COVID-19が猛威を振るい、自宅で勤務するようになり早一年、少しずつ機材を増やし、入れ替え、作業環境を改善してきました。自分のデスクを紹介するDesk Tourの流行も少し落ち着いたところではありますが、ここで一度デスク環境を記録がてらご紹介します。 Overview 全体像としてはこんな感じ。デスクはニトリの組み合わせフリーデスク プレフェ を使用しています。天板の幅は140cmです。最近腰痛がアレでアレなので、昇降デスクにしたい気持ちがあります。写真には写っていませんが、イスはアーロンチェア を使用していて、足下にはエルゴノミクスフットレスト を置いています。 ディスプレイはLG 27UK850-W という4K 27インチのディスプレイ2枚をモニターアーム(右がHP 、右がエルゴトロン 。HPのものもエルゴトロンのOEM商品なのでロゴ以外は実質同じ)で設置しています。右はHDMI接続、左はDisplayPort接続でつないでいて、わざわざType-C接続のモニタを買う必要が無かったな、と思っています。 モニタの上 マイクはAKG LYRA です。USB type-Cで接続するタイプのコンデンサマイクで、AnkerのType-C to Type-Aケーブル を使用して接続しています。Rode PSA1 というマイクアームを使用して、マイクがモニタの上に来るように設置しています。マイクアームにはSwitchBot 温湿度計 をくっつけています。 ウェブカメラは大昔に安く購入したバッファロー BSW20KM15 というものを使っていて、最近の良い感じのウェブカメラに買い換えたいな、と思っています。ロジクールのStreamCam とか良さそう。まぁ特に不満は感じていないですが。 日中は窓が机の奥にあるので特にライトとかは必要無いんですが、夕方になるとすぐ暗くなるのでライトも用意しました。UlanziのVL49 というライトをなんかぐねぐねするやつ で設置しています。モニタ裏のアームにクリップ(の強い奴)で止めるような形です。 手元 手元はこんな感じ。トラックパッドが結構好きなので、Magic Trackpad 2 を使用しています。Magic Trackpad 2用のリストレスト を使用しています。 キーボードはErgodash を使用していて、最近BLE Micro Pro で無線化しました。配線が減ってデスクの上がすっきりし、最高ですが時々接続が不安定になります。キーボード用のリストレストはFILCO Majestouch Wrist Rest “Macaron” の17mm厚を使用しています。ちょっと厚いので、12mmの方でも良かったかな、という感じ。 ゲームをするときはロジクール MX Master 3 for Mac とRazer Tartarus Pro を使ってます。Razer Synapse、Macにも対応してくれ。 スピーカーはFostex PM0.1e を最近買いました。電源ランプがまぶしすぎるのでサランネットの裏に養生テープを貼って調整しています(結果、白かったランプが緑 になった)。ゲームを配信するとき等に使っているヘッドホンはSoundCore Q30 で、ヘッドホンラック にぶら下げています。。 PCは13インチ MacBook Pro で、2018年のThunderbolt 3ポートが四つあるモデルです。メモリは16GBで、ストレージは256GBですが、最近動画編集をはじめたことにより外部ストレージの購入を検討しています。PCと周辺機器はAnker PowerExpand Elite を経由して接続しています。PCに接続するケーブルが1本で済む点は最高ですが、何故かUSB Type-C to USB Type-Cで4K出力すると30Hzになってしまい残念です(仕様上は4K@60Hzで出るはず)。 PCはTwelve South BookArc for MacBook に立てていて、これによりデスクを広く使用することができています。...

2021-04-11 · nasa9084

switchbot-exporterを書いた

先だって、SwitchBot APIのGo言語用クライアント実装であるgithub.com/nasa9084/go-switchbot を書いた、という記事 を書きましたが、これを使用してPrometheusでSwitchBot温湿度計 の情報を収集できるswitchbot-exporter を書いてみたので紹介します。 switchbot-exporterはblackbox exporter のように、起動時にはターゲットを指定せず、Prometheusがメトリクスを収集する際にrelabel_configでターゲットを与えるタイプのexporterです。 起動時に必要な情報はSwitchBotアプリから取得できるOpenTokenのみです。OpenTokenはコマンドラインオプションか、環境変数SWITCHBOT_OPENTOKEN経由で渡すことができます。 1 2 3 $ switchbot-exporter -switchbot.opentoken=blahblahblah # or $ SWITCHBOT_OPENTOKEN=blahblahblah switchbot-exporter docker image も用意してありますので、例えばKubernetes上で動かすこともできます: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 --- apiVersion: apps/v1 kind: Deployment metadata: name: switchbot-exporter spec: revisionHistoryLimit: 3 selector: matchLabels: app: switchbot-exporter template: metadata: labels: app: switchbot-exporter spec: containers: - name: switchbot-exporter image: nasa9084/switchbot-exporter:0....

2021-03-23 · nasa9084

SwitchBot APIのGoクライアント、go-switchbotを書いた

SwitchBot は所謂IoT機器を扱っているメーカーで、温度計を専用のハブ経由でインターネットに接続し、アプリから室温を確認したり、室温によってエアコンの設定を変更する、などといったホームオートメーションに役立つガジェットを複数販売しています。 しかし、それらのデータを確認できるのはSwitchBotのアプリからか、Bluetooth経由だけ、という状況で、私もHTTPのAPIを用意してくれたら良いのに、とずっと思っていました。 ところが昨日、社のSlackで、こちらのissue を共有してもらい、どうやら昨年12月ごろにはHTTPのAPI が使えるようになっていたっぽいことが分かりました。 我が家にはHub Miniもあり、インターネットに接続してある状態ですから、早速次の手順でtokenを手に入れて試してみました: スマホでSwitchBotのアプリを開く プロフィールタブ > 設定と進み、アプリバージョンを10回連打する 開発者向けオプションが表示されるので、開いてトークンを取得する Authorizationヘッダにトークンを入れ、https://api.switch-bot.com/v1.0/devices にGETでリクエストを投げてみる 結果、確かに自宅のSwitchBotデバイスの一覧を取得することができました。 こうしちゃいられねぇ!と深夜に書いたGolang用のSwitchBotクライアントがこちらです: https://github.com/nasa9084/go-switchbot ドキュメントはpkg.go.inなどで見て下さい: https://pkg.go.dev/github.com/nasa9084/go-switchbot 今回はFunctional Option PatternとGoogleっぽいAPIの合わせ技構成にしてみました。 例えば、デバイスの一覧を取得したい場合は次の様にすると取得することができます。 1 2 3 client := switchbot.New("SET_YOUR_SWITCHBOT_OPEN_TOKEN") physical, virtual, _ := client.Device().List(context.Background()) 第一返値のphysicalはSwitchbotデバイスの事で、第二返値のvirtualは赤外線で通信するデバイスの事です。SwitchBot APIでは、SwitchBotデバイスの事を物理デバイス、赤外線で接続するデバイス(エアコンなど)のことをvirtual remote deviceと区別して扱います。 API rate limitは1,000 request / dayとなっていて、あまり多いという訳ではないですが、例えば数分に一回、あるいは一時間に一回室温を取って記録するようなPrometheus Exporterを記述するといったことが捗ると思いますので、SwitchBotデバイスを使っている方は是非使ってみて下さい!

2021-02-25 · nasa9084

Firefox 83で導入されたピンチズームを無効にする

11月7日にリリースされたFirefox 83 では、タッチスクリーン/タッチパッドを搭載したデバイスでのピンチズームがサポートされました。 が、私としてはスクロールしたいだけなのにズームされてしまったりと誤動作が多く、使いづらいなーと感じましたので、無効化しましたが、設定画面からは無効化できなかったのでメモを残しておきます。 about:config を開く zoomで検索しapz.allow_zoomingをfalseに設定する 以上です。

2021-02-02 · nasa9084