@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

実践Rust入門 読了後メモ

実践Rust入門[言語仕様から開発手法まで]

実践Rust入門[言語仕様から開発手法まで]

Rustの調査のために手にとった。

言語自体の難しさもあるかもしれないけど、中級者以上向けといった感じで、特に解説無くPythonコードが出てきたり「クロージャ」という単語が出てきたりする。

説明は詳細なので、Rustの基本部分は理解できるのではないかな。

しかしRustは常駐プロセスのようなミドルウェア向けでWebアプリにはあまり向いていないようだな。 メモリを厳密に管理できるのは良いが、Webアプリを作るのにそこまで気にしたくなく業務ロジックに集中したいのが本音である。

それに、比較的使われているWebアプリケーションフレームワークのactix webでさえマルチパートpostをサポートしていないとか。。。

More Effective Agile 読了後メモ

今の会社のエンジニア内ではスクラムで日々仕事をしている。割りとうまく行ってると思っておりあまり参考になる点は少なかった。(問題意識が低いだけかもしれんけど)

  • サポート時間をスプリントに盛り込む
  • バーンアウトやスプリント疲れを防ぐために短いスプリントを入れてリズムを変えてみる
  • オープンフロアオフィスでは対面のコミュニケーションがブースに比べて70%減少する。ググってみた情報 まあこのご時世のおかげで強制的に「ブース」状態である。

活かせるところは活かしていきたい。

bundle install時にmysql2のインストールでこける件

突然Railsの話題。

FAQらしい。よく見かける対応方法は

$ bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include"

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

だが、自分の場合は

error: unsupported option '--with-cppflags=-I/usr/local/opt/openssl/include'

というログが出ていたので、 .bundle/config から当該オプションを削除したらインストールが成功した。

間違ってbrew upgradeしちゃったときにトラブル気がするので、根本対応はdockerコンテナに入れてmacから開発環境を切り離すのが良いのだろう。やれやれ。

ちなみにパーフェクト Ruby on Railsは良書でした。仕事で使うようになって1年、ようやくRailsの全体感をつかめた気がします。Rubyはいまだによく分からんけど。

Django for Professionals と Django for APIs 読了記録

諸事情で、今時点でのDjangoのベストプラクティスを知りたくなり、手にとった。

そもそもDjangoって時点で和書が少ないのにあっても入門レベルのものばかりで、仕方なく洋書をぽちった。Djangoを使うくらいの人は普段(仕方なく)英語を読む機会は多いので、この本もどうにか読めるんではと思う。

Django for Professionals

Django for Professionals: Production websites with Python & Django

Django for Professionals: Production websites with Python & Django

  • 著者はDjango Software Foundationの人。Django podcastもやってる
  • 自費出版らしい
  • Django3対応をうたっている
  • 1章はのっけからDockerについての説明でDjango関係ないじゃんと思ったが環境構築するうえで必要だったんだろう。
  • 自分はAPIとしての利用を考えているので、template部分の説明は読み飛ばした
  • 個人的には、あまり詳しくなかった1章のDockerによる開発環境構築と、18章のherokuへのデプロイが参考になった
  • Stripeとの連携の話があるので、これから導入する人には参考になるのでは
  • ほか、for Professionals を名乗っているだけあって実践的な内容だった。この内容の和書があると良いのだけど。

Django for APIs

Django for APIs: Build web APIs with Python & Django

Django for APIs: Build web APIs with Python & Django

  • 同じ著者
  • こちらはDRFDjango Rest Framework)初心者向けという感じで、少し物足りなかった
  • あると良いなと思ったのは、CSRF対策、フロントエンドも含めたプロジェクト構成とデプロイ方法、ネストしたオブジェクトの更新 あたりか。と思ったが、akiyokoさんの本ではどれも言及されていた。DRFに関しては良い和書があった。

というわけで、 Djangoについて知りたいなら「Django for Professionals」はおすすめ。DRFについて知りたいならakiyokoさんのDRF本がおすすめ、という所感。

後付け自動窓開け閉め装置「ムーブウィンドウ」をプログラムから操作する

背景

自分は暑いのが苦手で仕事のパフォーマンスは落ちるしQoLは落ちるしで、夏はいつも憂鬱な日々を過ごしている。 特に夜に気温が下がらないのが辛い。かといって夜中エアコンをつけるのもそれはそれで冷えるので無理。

この対策として以下をやりたいと常々思ってきた。

  • エアコンをタイマーで稼働させておき、就寝後1,2時間で切れるようにしておく。
  • 一定の温度になったら窓を開ける

イケてる人だったらハンズで材料を買ってきてサーボモーターか何かで窓を開け閉めできるようにするんだろうけど、 あいにく自分にはそのスキルが無い。

しかし最近になってホームオートメーションのデバイスやエコシステムががそろってきた。時はきたれりである。

今回以下を導入してみた。 www.thanko.jp なかなかのお値段がするが、QoLのためなので仕方がないし、これでハッピーになるならむしろ安いくらいだ。

設置

取説通りにやればOK。取り付けたかった窓はこの製品が対応する幅よりも狭いので、10cmほど切断した。 切断方法も取説に書いてあるので大きな問題はなかった。金ノコがないと切断は厳しいかも。

Smart Lifeアプリから操作できるところまで確認できた。 しかしアプリから操作したいのではない。アプリは不要。ほしいのはAPI。アプリなんて飾りなのです。

事前にサンコー社のサポートにAPIによる操作ができるか確認してみたら、「APIは公開しておりません」との冷たいご回答が返ってきた。 しかし調べてみるとSmart Life対応デバイスはtuya APIなるプラットフォームで操作できるらしい。できるではないか。 サポートさんはちゃんとしてほしい。

APIからの操作

初期設定

基本的には以下に記載されている手順でできる。 qiita.com

WiFiのAPが複数ある場合は、狙ったAP以外は切っておかないとうまく接続できなかった。ここがかなり苦労した。

操作方法

取得した情報を使って以下のコマンドでデバイスの状態を取得できるようになる。

tuya-cli get -all --id <id> --key <key>

各dps値の意味

しかしこの値の意味が分からない。ググってもどこにも情報がない。

{ devId: 'xxx',
  dps:
   {
     '6': false,
     '101': 0,
     '102': 'pause',
     '103': false,
     '104': '6',
     '105': '7',
     '106': 'left',
     '107': 'cancel',
     '108': false,
     '109': false } }

仕方がないので、取説に掲載されているアプリの画面を参考に各dps値の意味を予測しつつ、値を実際に変更してみた。

以下のコマンドで全開する。

tuya-cli set --dps 102 --set open  --id <id> --key <key>

まとめたのが以下。必要なdps値しか実際に動かしていない。

{ devId: 'xxxx',
  dps:   {
      '6': false, <— アラームロック
      '101': 0, <- 1以上全開 0全閉
      '102': 'pause’, <-現在の状態。指定も可。open/close/pause
      '103': false, <- ロック(たぶん)
      '104': '6’, <- 動作速度(たぶん)
      '105': '7’, <- Anti clamp strength
      '106': 'left’, <- 窓を開く方向
      '107': 'cancel’, <-infared control
      '108': false, <- infered fortification
      '109': false <- Manual start(たぶん)
   }
}

dps値102にopenコマンドを送って途中どこかでpauseコマンドを送ればちょっと開けることができる。

しかし動作遅延の関係で、open送出してから何秒後にpauseを送出すれば良いのかよく分からんし、そもそも再現性が怪しい。 現実的には、ストッパーか何か(つっかえ棒?)を使って所望の位置で止まるようにしとくってもんかな。

CLIだと使いにくいのでWeb APIを直接叩けないかとCLIのソースをざっと眺めると、httpじゃないっぽいな。MQTTかな。なので、CLIでがんばってみる。

今後の展望

何らかの手段で温度を取り、一定のしきい値を超えたら窓を開閉したい。

目の前にRasPi Zero Wがある。これで何とか。

鼠径ヘルニアで入院&手術した話

突然入院&手術することになった顛末記

最初に

このマンガ本をもともと持っていたのだが、入院中に読み直したらさらに面白かった。当エントリーはこれを紹介するために書いたと言っても過言ではない。さあポチるのです!!!

ぽちっていただけたら以下は特に読まなくて良いです。。

発端

5月の頭に、終日薪を切っていたら夕方下腹部に違和感でてきた。シャワー後に目視すると何か出っ張りがある。これは、、、キ◯タ◯が入り込んでしまったのか?乳児だとそういうことあるけど大人でもあるんだろうか?と一瞬思ったのだが、いつもの場所にいつもの数がちゃんとあった。であるならばこれは何だろう。

ググって調べるとどうやら鼠径ヘルニアらしい。仰向けになると引っ込むし。

鼠径ヘルニアというのは中高年の男性に多いとのこと。男性が多いのは体の構造上から、中高年に多いのは筋膜が弱ってくるから。筋肉ではなく筋膜という鍛えようがないものが弱ってくる点が大事である。したがって、筋肉が弱っているのが原因なわけではないことを震え声で主張したい。治療には手術しかなく徐々にヘルニアが悪化する(出っ張りが大きくなっていく)ので、部位が部位だが恥ずかしがらずに受診してほしい。

そして、発症のきっかけになるのはお腹に強い力を入れたときとのこと。これは心当たりがある。数日前にプランクをやったんだよな。おそらくあれがトリガーであろう。。。

というわけで、医者に行ってみることにした。

近所の消化器外科受診

連休の谷間に受診。場所が場所だけに診察時は「もろ出し」である。しかし気にしてはいられない。

予想通り鼠径ヘルニアの診断が出た。受診した個人医院では手術できないとのことで(なんで外科を名乗ってるんだ?)紹介状を書いてもらった。

紹介先受診

紹介先は小規模な病院だった。先生はこのへんの人なら誰でも知ってる病院の副院長を最近までやっていたらしい。なんでこんなひなびた病院に。。。医者の世界にも役職定年があるのかな。知らんけど。

簡単な診察を受けて、手術の日程を調整してもらった。手術まで10日ほどあり、長く感じる。

入院

奥さんに送ってもらって入院。ひたすらNetflixユニコーンガンダムを見ていた。最近のアニメらしくCGが使われておりきれい。全23話を無事完走した。

www.netflix.com

病院食はお世辞にもおいしいとは言えない。冷めてるし、調理のしやすさや咀嚼のしやすさを考慮してか煮物系が多い。

f:id:kkotyy:20200525142446p:plain

手術当日

朝からご飯抜きで、その代わりに浣腸を受ける。3,4分我慢してからと言われていたがそんなに無理だった。

手術室へは自分で歩いて自分で手術台に寝る。その後流れるように手術の準備が進んでいく。このあたりは文頭に紹介している「麻酔科医ハナ」に詳しく描写されている。

全身麻酔なので、マスクをあてがわれ数を数えるように言われ5か6くらい数えたところで意識が無くなった。ガスによるものか点滴によるものかよく分からん。

手術が終わって名前を呼ばれて目が覚めた。最初は状況を把握できず混乱した。数秒して、ああ手術を受けていたんだったと思い出した。子供のときの盲腸の手術では病室で目が覚めたんだけどな。手術台で目が覚めるのは勘弁。

術後

酸素濃度を測る器具、点滴、血圧計、足の血栓防止のためのマッサージ器、導尿(!)と様々なものが体にくっついていて全く寝られなかった。盲腸のときの夜もそうだったなと遠い昔を思い出す。

天井の図 f:id:kkotyy:20200525142644p:plain

おそるおそる創部を見てみると3つ絆創膏が貼られている。内視鏡による手術のためか思ったよりは大きくなかった。

隣の部屋では96だか97になる爺さんが看護師と昼夜問わず揉めていた。ナースコールもせずに「おーい!おーい!!」と看護師を呼びつけるし。医療関係者はお客を選べないから大変だ。。。

退院

シャワーを浴びれないことに辟易しながら日々回復して、手術当日を入れて4日目でどうにか退院した。もう少し家で養生して仕事に復帰する予定。

医師や看護師など病院の皆さんはプロの仕事をしてくれていたが、入院も手術もこりごりだ。早く元気になって私なりにプロの仕事をして社会に貢献したい。

健康第一。

その後

ウルトラワイドモニター LG-49WL95C-W レビュー

去年発売されたディスプレイのレビューを今更書こうと思う。

昨年フルリモートで自宅で仕事することになったので、その際少し奮発して広いものを調達した。出社した日の帰りに、秋葉原ツクモに寄って秒速で購入。

49インチ、解像度5120×1440、32:9のウルトラワイドモニター。

入力端子は、USB Type-C×1、DisplayPort×1、HDMI×2

WQHD(2560×1440) で中央で分割してふたつの入力を同時に表示できる。

スピーカーもついているが、一応ついている程度なので期待しないほうが良い。

良いところ

当然だが、広い。ブラウザやwordは並べて4つ表示できる。vscodeintellijなどでも、3つくらいなら余裕で分割してソースコードを表示できる。表示が狭くて困ることはまずない。 zoom会議でみんなの顔を見ながら、相手の画面共有を表示しながら、自分のドキュメントを見る、なんてことも余裕。

悪いところ

4Kディスプレイと比べると画質が劣る

私はそこまで気になりませんが、気になる人はいるかも。

お値段

それなりに張る。仕事で使うからと買ったけど、道楽で使うだけだと自分も手を出さなかったと思う。

箱がでかい

玄関から設置場所まではできれば二人で運搬した方が良い。

解像度が出ない

で、一番のネックは、私が使っているMacbook Pro だとフル解像度の5120×1440が出ないことだ。ググると世界中でみんな悩んでいる。。。そして今の所のソリューションは入力をふたつに分け、画面分割で同時に表示すること。以下のポンチ絵参照。

f:id:kkotyy:20200426073050p:plain

これで結果としてフル解像度を出せる。よーく見ると左右で色合いが異なるのだが、慣れる。ダメな人もいるかもしれないけど私は大丈夫。

eGPUを使えば入力一本で大丈夫らしいので、おちんぎんに余裕がもし出たら考えようかな。

まとめ

というわけで、よーく見ると色合いが異なるけどそれを気にしないのならおすすめです。