@kotyのブログ

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

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版も半年ほど前に作った。

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スキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

Django Congress JP 2018 参加記録

djangocongress.jp

参加者の皆さま、スタッフの皆さまお疲れさまでした。

macの調子が悪くほとんどメモを取れなかった。

Django After Web 2.0 // Speaker Deck

"Pure SPAs don't really need Django" はまったくその通り

A Modernization of Legacy Django Based Applications // Speaker Deck

以下メモ書き。

  • Dockerで本番も開発も同じImageを利用。環境変数で切り替え。というのがイケてるやり方なんだろうか。質疑のときにどうデバッグするか聞いたら、リモートデバッグかローカルでrunserverとのご回答であった。その後jpkingさんからpdbを使え、とのありがたいお言葉を頂戴した。

Building your MVP with Django: Lessons Learned Building and Launching a SaaS // Speaker Deck

  • テンプレートのincludeは速度的に不利だそうだ。テンプレートをあまり細かく分割したことがなく気にしていなかった。
  • get/postを関数ベースビューとデコレータで書く方法は、うーん、、、そこまで感銘を受けなかった。

いまさら振り返る Django Migration // Speaker Deck

すごいマシンガントークだった

Django in the age of AI // Speaker Deck

英語セッションで半分も分からんかった。サービスは面白そうなので使ってみる。

所感

  • この日に限ってなぜmacが不調に
  • Djangoだけで完結する時代ではなく、それ以外の要素が増えている。("Pure SPAs don't really need Django" だし)
  • もっとみんな質問すればいいのに。質問ゼロというのは発表者に失礼
  • 今回以外もそうだけど、おしなべて英語セッションの方が質問が多い
  • そしてこれも今回以外もだが、英語セッションは話が半分も分からない
  • 母語が日本語の発表者と質問者が英語で質疑をしていたのが印象的だった
  • 英語がんばろう。。。

今回は弊社からも発表者が出た。私もCFPを出していたがあえなくリジェクト。

Django・WSGIミドルウェア入門/django-congress-jp-2018-talk // Speaker Deck

スライド等当日の発表の良さもさることながら、thinkamiさんの発表は過去のブログ記事が元ネタになっており、普段からのアウトプットの重要性を感じる。thinkamiさん、お疲れさまでした。

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

nseg.connpass.com

参加者6名 (´・ω・`)

  • 経過時間:そのプロセスが開始されてから終了するまでの時間
  • 使用時間:CPUを使った時間。マルチコアを100%使った場合は、経過時間よりも(ざっくりマルチコア数分)大きくなる。

今回もグラフを書いてみた。優先度を変えて起動した場合の挙動。87ページのグラフ。

以下のコードにより、グラフを描画できる。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('data3.csv', delimiter='\t')

fig2 = plt.figure(figsize=(10, 5))

ax2 = fig2.add_subplot(1,1,1)
data0 = data[(0==data[:,0])]
input0 = data0[:,1]
output0 = data0[:,2]
ax2.scatter(input0, output0, label='p1')

data1 = data[(1==data[:,0])]  #0番目の列が1の行を抽出
input1 = data1[:,1]
output1 = data1[:,2]
ax2.scatter(input1, output1, label='p2')

fig2.show()
plt.legend()  # 凡例を表示

f:id:kkotyy:20180511114129p:plain 優先度が各プロセスの 処理時間に反映されているのが分かる。

freeコマンドについて

  • freeは実際に空いている容量
  • availableはそれに加えて解放できるカーネルメモリも含まれる

OOM

  • OOM-killerは、デフォルトでは適当に選んだプロセスを殺して物理メモリを空けることにより、なんとかしてシステムを生き延びさせようとする*1
  • 所感:適当に選ばれるのつらい...
  • 所感:98ページの図は誤植もあったが、それにしてもよく理解できんかった。

次回は人数が回復すると良いのですが。

第4回 Linuxのしくみ 読書会 - connpass