ansible.builtin.fileのmodeパラメータは頭に0が必要

多分ほとんどのケースでは気にすることもなく0755とか0644とか書くと思うんですが、特殊な属性を付ける必要があるときに困るよ、という話。 世の中にはSUIDとかSGIDとかスティッキービットとかいう、特殊な属性がありまして、例えば基本のファイルパーミッションが0755でSUIDを指定したいという場合はchmodで言うとchmod 4755 path/to/fileといった感じになるんですけれども、ansible.builtin.fileのmodeパラメータでは以下の様に書くとパーサが10進数として解釈して訳の分からんことになってしまいます。 1 2 3 ansible.builtin.file: path: path/to/file mode: 4755 これはこう書く必要があります: 1 2 3 ansible.builtin.file: path: path/to/file mode: 04755 もしくはこう: 1 2 3 ansible.builtin.file: path: path/to/file mode: '4755' これは例えば、結構古いAnsible playbookなんかで、 1 file: path=path/to/file mode=4755 とか書いていたやつを書き直したりしたときに注意が必要です。 まぁ、公式ドキュメントに書いてある んですけど、そうは言ってもみんなそんなに細かいところまで読んでないでしょ、という。 You must either add a leading zero so that Ansible’s YAML parser knows it is an octal number (like 0644 or 01777) or quote it (like ‘644’ or ‘1777’) so Ansible receives a string and can do its own conversion from string into number....

2021-12-13 · nasa9084

人生初Apple Watch (series 7)

これまで私は基本的にAndroid端末を使うことが多く、初めて持ったスマートフォンであるGalaxy Sを始め、ほとんどのスマホ人生をAndroid端末とともに歩んできました。これまで最初で最後のiPhone端末はiPhone 5のみで、今回iPhone 13 miniを購入した のは8年ぶりの事です。 Androidユーザであったために買えなかったAppleデバイス、それがApple Watchです。Androidデバイスでも使えるスマートウォッチはもちろんあります。私もfitbit Versa を使っていました。しかし、Apple Watchには遠く及びません。iDでの決裁もできない(現行のfitbit Versa 3/Senseはsuicaには対応している)し、何よりソロループがありません。 一日の大半をPCに向かってキーボードをカチャカチャするという虚業に従事していますから、時計のバックルというのは結構いづい(注:大半の人に伝わらない表現なのは理解しているけど他の表現がない)のです。 そんな私もiPhoneを買ったことによりApple Watchが買える!という事でApple Watch series 7を購入しました。

2021-10-19 · nasa9084

iPad mini 6を買って1週間半経った

みんなが待ってたiPad。そうiPad miniです。私は過去に会社のお下がりでもらったiPad mini第2世代を使っていたことがありますが、その後iPad Pro 第一世代(2018)に買い換え、今に至ります。Youtubeや読書に使用するにはちょっと大きいな、と思いつつ、なんだかんだ便利に使ったり使わなかったりしていました。iPad miniは良いサイズだったな、なんて思いながら。 とはいえ、iPad Proのベゼルレスデザインを体感すると、(ちょっとダサい)従来のiPad miniに戻る気にはなれず、ベゼルレスデザインのiPad miniがでたら買おうと思っていました。 そして今年、第六世代iPad miniとしてベゼルレスデザインのモノが発売されたので購入しました。なんだかんだ安くはないので、一晩悩んだ結果発売日に入手することはできず、10月9日到着でした。 今回購入したのはスペースグレイのiPad mini 第六世代 Wi-Fi + Cellularモデル、ストレージは256GBです。iPad Proも256GBのモノを使用していて、ストレージが大きく余っているので正直256GBは多すぎると思ったのですが、64GBか256GBという二つの選択肢を考えたとき、64GBは流石に小さすぎるだろう、と考え256GBを選択しました。MacBook Proですら256でストレージが余っている(最近ゲーム実況動画編集をするようになって、動画の為に外付けSSDを買ったけど)ため、iPad miniのストレージも枯渇することはおそらく無いと思います。 ケースは安定の公式Smart Folioを購入。iPad Pro用のモノとは異なり、アップルのロゴがエンボス加工されています。これはこれで良いですね。 iPad Proとサイズを比較するとこんな感じ。ざっくり半分くらいの大きさです。身長176センチ(最近1センチほど伸びました)の私だと片手でホールドできるくらいのサイズ感です。 著作権的なアレをアレするためモザイクをかけていますが、マンガを読むのに非常にちょうど良いサイズです。おそらく小説やビジネス書など、他の書籍にも良いでしょう(技術書は大判の事も多いしiPad Proの方が読みやすいかも知れない) 本機はiPad Airと同じくtouch IDですが、個人的にはiPadはface IDの方が良いかな、という気がしました。家の中で使うことが多い端末ですから、マスクをしている事も無いため、face IDの方がボタンに指を持っていくという動作が不要なため便利です。 また、これは慣れの問題もあるとは思いますが、ボリュームボタンが画面左上部(ランドスケープでは左下)というのは少し操作しづらいように感じました。これはiPad Proとボタンの位置が違うから戸惑っているだけかも知れません。画面の向きによってボタンの方向が変わる(右側、上側が+になる)のは直感的で良いので、iPad Proにもバックポート(?)してほしいものです。

2021-10-19 · nasa9084

DroneCIでパイプライン全体をfailさせずに後続のジョブを停止する

例えばmono repoで特定のディレクトリに変更があったときにだけジョブを実行したい、という様なケース。DroneCIのconditionはディレクトリ単位での変更でステップを実行するかという分岐はできません。かといってfailさせてしまうと、対象のディレクトリに変更がない場合はいつもfailする事になり、実際に問題があってfailしているのかどうなのか分からない、という事態に陥ります。 そんなときは exit 78 すると良いようです。 exit 78 したステップはsuccess、後続のステップは実行されず、(depends_on で設定しているような)後続のパイプラインは実行されます。 Reference How to exit a Pipeline early without Failing

2021-10-18 · nasa9084

iPhone 13 miniを買った

新型コロナウイルス感染症ワクチンの副反応(ということにした)で、iPhone 13 miniを購入しました。色はミッドナイトで、128GBのモデルです。 日々のご飯の写真くらいしか写真は撮らないし、大きいスマホは好きになれないのでminiを選択しました。これまで使用していたPixel 4が64GBのモデルだったので、ストレージは倍になったことになります。AppleCare+ 盗難・紛失プラン for iPhone 13 miniもつけて、107,600円でした。 最後にiPhoneを使っていたのはiPhone 5なので、実に8年ぶりくらいのiPhoneです。 iPad miniも買いましたが、買うかどうか一晩悩んだ結果発売日に届きませんでした。 以下開封写真です:

2021-09-26 · nasa9084

bashのhere-documentは一時ファイルを作成するらしい

皆さん使ってますか、here-document。bashでいうとこういう奴: 1 2 3 4 5 6 cat <<EOF this is here document EOF 出力はこう: this is here document 複数行に渡るテキストをリテラルとして表現したい場合に便利ですね。で、shellscriptからREST APIにリクエストを投げたくて、here-documentを使ってJSONをべたっとスクリプト内で書いてたんですけど、こんなエラーが出てました(パスはもちろん違いますよ。念のため。): /path/to/shellscript/using/here-document.sh: line 179: cannot create temp file for here-document: No space left on device 全然知らなかったけど、here-documentって一時ファイルを作成するんですね。確かめてみます。 $ docker run -it --rm centos:7 bash [root@8017e5e28d6e /]# yum install -y strace (中略) [root@8017e5e28d6e /]# cat <<EOF > script.sh > cat <<EOS > foo > bar > baz > EOS > EOF [root@8017e5e28d6e /]# strace -f bash script....

2021-09-08 · nasa9084

Huawei Band 6を買った

TL;DR: 割と良い。 スマートウォッチは長いことfitbit versa を使用していたのですが、最近プールに行くようになり、プール内で使用できるレギュレーションに対応したスマートウォッチ/スマートバンドが欲しいと思っていました。 私が行っているプールのスマートウォッチ/スマートバンドのレギュレーションは次の様になっています: ベルト幅が30mm以下でディスプレイがベルト幅および厚みから出ないものは使用可能 柔らかい素材のカバー等で覆えば使用可能 シリコン製カバーまたはウォッチスーツで覆えば使用可能 fitbit versaは一つ目のレギュレーションにマッチしていないため、柔らかい素材のカバー・シリコン製カバー・ウォッチスーツで覆えば使用可能、ということです。 とはいえ、fitbit versaはもう2世代型落ちのモデルです。ディスプレイを覆うカバーを見つけるのがそもそも難しい(あるにはあるけど)ですし、シリコン製カバーは何故か6個単位でしか売っていない ため、私の結論としてはレギュレーションにマッチするスマートバンドを買うのが早い、となりました。 じゃぁなにを買おうか、と考えたときに、私はPixelユーザですしfitbitのユーザでもありますから、Googleによるfitbitの買収を受けて、fitbitから良い感じの新製品が出るのを待ちたいという気持ちもありますから、あまりコストを掛けるわけにもいかないな、と考え、選択肢は自然とHuaweiかXiaomiの二択となりました。 いろいろ検討しましたが、最終的にはmi band 6 の丸っこいデザインより、Huawei Band 6 の四角いデザインの方が通知などが見やすそうですし、画面もほどよく大きい、という事でHuawei Band 6を選択しました。 以下開封写真です。 外箱はこんな感じ。一応amazon.co.jp販売の日本正規代理店品と書かれたモノを購入したのですが、日本語はシールで修正しているような外箱でちょっと不安な感じがあります。まぁ気にしても仕方ないでしょう。安いし。 箱を開けると本体がこんな感じで入っています。まぁわかりやすいはわかりやすいですね。 箱に入っていたものはこれで全部です。本体、充電ケーブル、WARRANTY CARD、クイックスタートガイドですね。クイックスタートガイドは本当に必要最小限の情報だけが書いてあるという感じで、詳細はWebから説明書をダウンロードしてね!という事でQRコードが書いてありました。 今のところ購入から二週間弱使用しましたが不満点は次の二つです: HUAWEI BAND 6、お値段も含めて割と満足してるけど、保護フィルムにまともなのがなさそう(これはこのクラスのものに気を使いすぎかも)なのと、ツイートをしたときに通知が来ちゃうのが微妙ポイント — nasa9084@某某某某(0x1b) (@nasa9084) August 27, 2021 まぁ保護フィルムはこのクラスの製品に保護フィルムをつけようというのが間違っているのかも知れませんが。 ツイートをしたときに通知が来ちゃうのは、「tweetをしました」という通知が一瞬通知欄に出るためそれを認識してしまっている、という事でHuawei Band側の問題と言うよりはtwitterアプリ側の問題の様な気もしますね。 あとはまぁ、ウォッチフェイスを作ってみた、みたいなブログを書こうと思ってはいたんですが、環境のセットアップがまぁまぁめんどくさそうというか、バンドとスマホの情報同期にはHuawei Healthというアプリをスマホにインストールするんですが、ウォッチフェイスを作ってテストするにはこれのベータ版?開発版?をインストールしなければならないということなのでやめました。諦めて既製のウォッチフェイスを使うことにします。 以上です。

2021-08-30 · nasa9084

剥がれかけたSesame 3を貼り直す

弊宅ではCANDYHOUSEのSESAME3 というスマートロック製品を使用していて、付属の両面テープで貼るだけ、剥がすときも跡が残らず便利!という最高の製品なんですが、最近少し剥がれてきてしまいました。 電池切れや故障などの有事に備えて鍵は持って歩いているので問題ないと言えば問題ないのですが、そうは言っても不便な思いはしたくないですし、完全に剥がれてしまってからバタバタするのもイヤなので張り直しをしました。 公式から交換用の両面テープも販売されてはいる のですが、明らかに3Mのコマンドタブ ですし、割高っぽい印象を受けたので近所のカインズで購入してきました。(実際比較してみるとヨドバシ.comでは8枚で300円弱 なのに対し、CANDYHOUSEから買うと4枚で350円と倍程度の値段設定となっています) たまたまカインズに行ったときに思い出して適当に買ってきてしまったため私はMサイズを購入しましたが、元々ついていたモノと比べると多分Lサイズだったので皆さんはLサイズを購入すると良いです。カインズではどのサイズも値段が同じでしたが、ヨドバシ.comではLサイズが若干安いようです。 SESAME本体の形に合わせてコマンドタブをカットし、貼り付けます。剥がすときに引っ張る部分は電池ボックスの中に折り込んでおきます。 無事しっかり貼ることができました。めでたしめでたし。

2021-08-12 · nasa9084

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