@kotyのブログ

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

第2回「体系的に学ぶ-安全なWebアプリケーションの作り方-第2版」読書会参加記録

nseg.connpass.com (確か)7名の参加

CORSで、「シンプルなリクエスト」の要件を満たすものはプリフライトリクエストなくHTTPリクエストが発行される。満たさないものはプリフライトリクエストが飛び、ターンアラウンドが一回多くなる。

クライアント側を守るためにサーバー側に仕組みが必用な点がCORSの分かりにくい点(個人の感想)。

Djangoの場合は、django-cors-headers を使えばよしなにしてくれ、各種設定はsettingsでできる。Djangoで言うviewではCORSを意識しなくて良い。ほかの処理系のwebフレームワークであってもおそらくは、リクエストのパイプラインの途中に介入しコントローラに至る前にプリフライトリクエストは処理できるするしくみになっている、またaccess-control-allow-* ヘッダを制御しているハズ。。。

この辺のトピックはここ数年で入った話なので改訂版ならではですね。

次回は 9/19 です。

nseg.connpass.com

第1回「体系的に学ぶ-安全なWebアプリケーションの作り方-第2版」読書会参加記録

nseg.connpass.com

キャンセルが出たものの、当日の飛び込みもあり参加者は7名。静かな滑り出しという感じ。

序盤なのであまりコメントすることがない。。。

x-www-form-urlencodedとRFC3986のURLエンコードの違いについて少し話題になった。

x-www-form-urlencodedの仕様では半角スペースは +になるがURLエンコード(encodeURIComponent)を通すと %20 になるという違いがある。厳格に扱うには %20 をさらに+ に変換してやる必用がある。

今までそこまで気にしてなかったが。。。

参考:

次回は9/5です。

nseg.connpass.com 本の厚さからして読了に1年くらいかかりそう。

MBPを修理してもらった話

会社から貸与されているMac Book Pro(13 inch early 2015)のビルトインのキーボードとトラックパッドが反応しなくなった。USBキーボードとbluetoothトラックパッドを使えば問題ないが持ち運びが面倒すぎる。

最初にケーズデンキAppleストアに持っていったがハードウェア修理は請けていないとのこと。

調べたところ、松本に修理センターがあるらしい。なぜ長野に無い。。。追記長野にもあるが、macの修理はやってない模様。追記おわり。

BIC MIDORI松本店 - Appleの購入と修理 | ビックカメラ

そっち方面の同僚にお願いして持ち込んでもらった。

受け取りは盆休みを使って自分で行った。おおむねこの日と言われた日の夕方になっても連絡が無い。突然連絡を受けてから向かっても閉店に間に合わない可能性があるのでこちらから電話したところ、部品は交換済みであとは動作確認をしているとのこと。それを聞いて松本に向かった。

費用は8,000円弱。このモデルに多い故障らしい。翌日から仕事で使う予定だったので、ひと安心。

しかし連絡待ちで貴重な休みを使ってしまった。

SFTP時のumask

ユースケース

  • 複数のデザイン会社がサイトに静的コンテンツをuploadしたい
  • デザイン会社ごとにログインユーザーを分けたい
  • 無駄なポートは開けたくない
  • php拡張子も許容
  • AWS上でAmazon Linux2を使っている

このようなケースの場合、FTP、FTPS、SFTP、SCPが選択肢に挙げられる。ちょっと調べた限りmacだとscpクライアントに良いものが無い。ソフトウェアエンジニア相手ならscpコマンドでええやんと言えるのだが。。。余計なポートも開けたくないし当然暗号化はしないといかん。というわけで、SFTPを選択することになった。

ソリューション

手抜きで恐縮だが、結論から言うと、ほぼ以下でできる。

epnote.net

が、このままだとuploadしたときに 744で書き込まれてしまい、upload後に他のユーザーが上書きできなくなる。Centos7の既定のumaskは022で*1であり、仮に775でuploadしても755に変えられてしまう。

というわけで、umaskを明示的に設定した。

        ForceCommand internal-sftp -u 002

これでほかのユーザーでも同じグループに所属していれば上書きできるようになる。

蛇足

本題から外れるので言及しないが、実際にはALBで冗長化しているためuploadしたあとに各ノードにファイルを同期してやる必要もあり、unixユーザーの追加作業もあいまってこの構成は運用負荷が高めである。phpやめようぜと調整し、S3にホストしてIAMを都度振り出すように運用すのがイケてるエンジニアなんだろう。あるいは最近出たNFSのマネージドサービスを使うとか。。。

*1:必ずしもそうではないようだが https://www.pupha.net/archives/151/

第8回「Linuxのしくみ」読書会参加記録

nseg.connpass.com

7名参加

8章ストレージデバイス

サンプルコードを動かすには空きパーティションが必要で動かせず、イマイチ実感なし。

I/Oスケジューラは読み書き処理のマージや先読み等の支援機構によりI/O性能を向上できる。

I/Oスケジューラは標準のものだとSSDで性能が劣化するので異なるものを使うことがあるらしい。

誤植の多い本だった。。。

参加者の皆さんお疲れさまですた。

第7回「Linuxのしくみ」読書会参加記録

nseg.connpass.com

参加記録をつけるのをさぼっていたうえに前回は不参加。間が抜けると分からんくなるな。。。

参加者は8名だった。当日に駆け込みで申込みがあった。

7章ファイルシステムを読んだ。

ジャーナリング

RDBMSでも似たようなことやってますね。

btrfs

  • コピーオンライトを搭載
  • スナップショットを取れる
  • ソフトウェアRAIDみたいなこともできる

不勉強なもので初耳です。「ばたーえふえす」と読むらしい。 読む限り超便利そう。でもRHEL6サポートされたが、7でdeprecatedになったとのこと。何があった。。。

/dev

バイスをファイルで表現。ファイルと同様に open/read/write できる。

仮想ファイルシステム

  • procfs・・・プロセス情報
  • sysfs・・・カーネルのプロセス以外の雑多な情報
  • cgroupfs・・・リソースの使用量の制限をかける。dockerやvirt-manger(kvmってことか?)が使う。

雑なメモ書きですんません。

次回で終わりになるようです。

nseg.connpass.com

次のネタは何にしましょう。

ゴミAlexa Skillを作った

今日審査に合格して公開にいたった。

https://www.amazon.co.jp/dp/B07DPKSP3R/

Google Assistant版も半年ほど前に作った。

https://assistant.google.com/services/a/uid/0000009b8eb935b1?hl=ja

AlexaもAssistantも大まかな作りや出てくる用語は同じ。ただしバックエンドのfunctionにPython(しかも3.6)を使える点と無料で使う範囲内だと外部にhttpリクエストを送れる点で、 Alexaの方が作りやすい。

また、多くのAWSの機能を使えるのAlexa Skillのも利点である。本件ではリクエスト内容をDynamoに保存して2回目以降は地区名を言わなくても良いようにできた。

審査はAlexa、Assistantともに3回目の申請で合格した。もう少し下調べすれば3回も申請しないで済むと思う。自分はとりあえずぽちったので。。。審査をする方はこういったしょうもない申請を毎日レビューしているんだろう。しかし申請に対する公称5営業日以内のフィードバックが半日で返ってきた。組まれているレビュー体制に比べて申請が少ないのかもしれない。

今なら公開特典があるらしい。

スキルを開発して、特典をもらおう | Amazon Alexa | アレクサ

Tシャツはもらえるが、echo dotをもらえる要件の利用者100名は無理だ。。。

しかしまたゴミアプリを作ってしまった。ここ1,2年はやっつけのものしか作っていないので、腰を据えてゴミではない何かを生み出したい。

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]