姫路IT系勉強会 2021.11
- 開催日: 2021/11/20 13:15 -
- 司会: fu7mu4さん
- 参加人数: 参加者: 7名(みんなLisperにならないかな)学生 0名
- HackMD: https://hackmd.io/lMp76xL1SWenu-iiV_Cfow
- connpass: https://connpass.com/event/230284/
- ハッシュタグ:#histudy
- Discord(オンラインミーティング専用)姫路IT系勉強会招待コード: https://discord.gg/rZCeScB
- Discordは無料プランに乗れる人数(10人以内)なので使っています。
- 有料版でも$15/月程度なら払えなくもないですね。
- Discord以外にも色々ありますので、人数が増えたら検討しましょう。
今月のニュースまたはネタ
ネタが思いつかない人用に今月のニュースをはじめました。
- 関西オープンフォーラム 2021.11.13 20周年だそうです。でました?
- 1/29 Open Source Conference 2022 Online/Osaka
- VImが30歳
ビルジョイだってもうviは使ってないぞ - Advent Calender 2021 書きますか? 読みますか?
- Excel 関数のプログラミング言語 Power-Fx が オープンソース化
- 日本知的財産協会の知財管理誌 11 月号に企業におけるOSSコンプライアンス業務推進に関する考察 という題で投稿しました
ただの自慢です。 - GoogleCast、スマホ必須かつ設定スマホの位置情報教えろに成り果ててました。一層Evilになった印象です
- KOF2021 視聴しました!
- ありがとうございます!
- もうじき動画公開します
自己紹介
- イモケンピで既に盛り上がりました
今日のお題
Windows 11になりました(かねだ)
- InsiderPreviewのWindowsUpdateが失敗し続け、とうとう有効期限切れになったためクリーンインストール(再インストール扱い)を断行
- 3ヶ月は長いですね。
- サポートの電話があるらしい
- その結果、WSL2とVirtualBoxが併用できるようになりました(Windows 10の再インストールではできなかった)
- WSL1 も残っているが必要ない
- 様子見 Dockerがちゃんと動くかわからないかな。
- 仮想化周りがどうか
- WSL2 だと Xがつかえる?
- X Server Microsoft Store ja-JP
- フリーのXサーバーの実装はいっぱいあるから売れない?
- サポートがないと買えない、企業向けか
- ゲーム開発向けか? 対応OSにXbox/Holo Lensがある
- もう Linux のディストリビューションになったらいい。
- とりあえず、Gitlab を Windowsにインストールする方法はありませんでした。https://www.gitlab.jp/install/
- Android のアプリが動く?などの話
- PWA が マイクロソフトストア から配信できるようになる?
- 先駆けてか不明ですがPWA化してある動画編集・配信アプリが公開されています
- Windows は道具であまり深入りしたくない
- Windows2000 はよかった
- Windows98 は毎月再インストールしていた
- Windows からの移行
- 仮想化?のmsys2は git bashの中に生き残っている
- winget。あ、そういうのもありましたっけ
- mac mini高い。
- でも値上げはしていない。昔から最安モデルは$699で変わってない
- 為替が悪い。昔MacMini買ったときは92-82円だった
自宅のProxMoxも7系にアップグレードしました(かねだ)
- 特に何事もなく
- dist upgrade で問題なくアップグレードできてしまった。
- 話題になりませんねぇ
- FreeBSD なんてどうですか
- 茨の道です。
- 失礼な。本家本元ですぞ。
- でも情報少ないよね…
- freebsd handbookを読みましょう
- Ports経由のインストールめんどうです。
- make一発ですから簡単です。
- 今はバイナリパッケージもあります。
- 昔は OpenOffice.org のビルドにまる一日くらいかかりましたっけ。
- MacもユーザーランドはFreeBSD だから Macユーザーは FreeBSD ユーザーだよ派
- HomebrewでGNU入れています。
- BSD系は(ちょっと)使いにくい…
- ls hoge -alF がエラーになる
- date とかGNUと違いすぎる
- gls みたいに g が先頭につくので alias をつけている
- BSD系は(ちょっと)使いにくい…
- ちゃんと macOSにも macports という portsシステムはあるよ。
- HomebrewでGNU入れています。
- 茨の道です。
休憩
再開は 15:05 からです
サービスの重要データのバックアップはどうしてる? (fu7mu4)
- 上司よりRedmine建てろとの命令が下った
- バックアップどうしましょう? ー ひとしきり上司とはなしたが、どうも話がまとまらない
- 擬似的に事故を起こして、思い知らせてやってはどうか
- Windowsは標準のバックアップツールでNASをバックアップ先に
- サーバは月イチくらいでデータを別のドライブにrsync。
- ローカルに直近のものをバックアップ
- 古いバックアップを別ストレージに移す
- AWSのオブジェクトストレージで冗長化なら古いものは自動的に削除することもできる
- ライフサイクル設定や権限
- バックアップからリストアできるか検証する
- ハードを分けておく原則
- ムネナガ家はメイン機とNASで分離
- サーバは月イチくらいでデータを別のドライブにrsync。
- データの重要度とコストで
- 別拠点にバックアップしたりしてます?
- どこまで冗長するかは、データの重要度しだい
- RAID (Wikipedia) を バックアップと勘違い
- 某社長さんは苦闘の末にバックアップの重要性を学習
- RAIDにしたから大丈夫 → コントローラーが吹っ飛ぶ
- 外付けのHDDに保存してるから大丈夫 → ランサムウェアを食らって吹っ飛んだ
- SharePoint で世代管理型バックアップ → アカウントを乗っ取られて吹っ飛んだ
- データ消失最大のリスクは人間
- 上司とか古参社員とか、我流を振り回す人が特に危険
- ヒューマンエラー
- どうしたらバックアップが大事だという感覚をもってもらえるのか?
- いっぺんデータを飛ばしてみる
- 逆に延々とデータを捨てられない例も
- 事務仕事で一つのエクセルシートに何年も書き溜めてた
- シートを分けることさえせずに下へ下へと書き足していました
- 一行目が3年前でした
- ライフサイクルを設定すべきでは
- ちゃんとした事務は実は保存期間を決めてて、過ぎたら廃棄
- 経理関係とか法定の保存期間=社内の保存期間だったりする
- 業務のフローを考えてないからそうなる
- 意識低いIT系もよくやる
- バックアップのライフサイクル
- ストレージも無限じゃない、コストもかかる
- 事務仕事で一つのエクセルシートに何年も書き溜めてた
- コンプラの関係で外部におけないデータもある
- マイナンバー
- SSHの鍵はUSBメモリにバックアップしています
- 不測の事態はおこる
- いかに復旧できるようにするかを考えて設計しましょう
- Webサービスのバックアップは?
- Slackはアーカイブをダウンロードできます。
- Slackは置き捨てで。フロー情報とストック情報は別に管理しましょう。
- Slackはアーカイブをダウンロードできます。
- しゃーないから避難訓練するかー
- やはり思い知らせるしかない
- 仕様をきちんと保存する習慣を身につけるのに苦労しました。
勉強会公式サイトのSSL発行にCertBotはどうだろう?(ムネナガ)
Let’s Encrypt のSSL自動発行の仕組み(dehydrated)が動作していない。そのためには1と2のどちらか
- dehyrrated をそのまま採用をつづける
- 読むのに時間がかかりそう。
- → DNS認証のクライアントでこけていることまでがわかっている。
- dehydrated は shell scriptの勉強にいいらしい
- Certbot を採用する。
- http認証、nginx はプラグインが要る
- サーバーを止めずに更新させるためにはプラグインが必要
- python製
- pip からインストールする必要がある。失敗しやすい
- どっちにするかは、まあ好み
- python2系とpython3系の問題がある
- どっちも apt で入る
現状のAnsibleだと dehydrated ->
lexicon sakuracloud create
や server/templates/dehydrated at master · histudy/server で対応しているものがある。DNS認証にしないとワイルドカード証明書が取得できない
- ワイルドカード証明はあとでもいいかな?
- ワイルドカードで取っておくとサブドメインが気軽にできる
- 現在のコードはメールサーバでSMTPSに対応させたかったのでDNS認証
- ワイルドカード証明はあとでもいいかな?
テストサーバにSSL取得&自動更新が仕込めたらDNSでサーバー切り替えて移行完了。
そもそも、スタティックなHTMLだけのサイトにSSL要る? 姫路IT系勉強会 移行ステージングサイト
- 原理的にはいらないです
- 業務となると必須です
- わざわざ http でいい、という案件はない
- 拡張性がない
- センシティブなデータを格納できない
- 問い合わせフォームが設置できない
- googleformを使うこともできるが、お金貰いにくい案件と
- Google様が「httpsで安全なインターネットを」とおっしゃってますし
認証方式
- https認証、サーバー方式はルート直下にファイルを設置してそのファイルの存在確認ををする
- DNS認証はDNSレコードに特定のキーが存在することを確認
certbot-dns-route53
lexicon
- コンソールからDNSレコードにごにょごにょしたり、フックを使用したりするもの
- https://github.com/AnalogJ/lexicon
cron に更新処理をセットする
- 1日1回実行かけるとか
- Let’s Encryptの証明書は3ヶ月で切れるけど、切れる前にリクエスト出すのは問題ない
- 1日1回ぐらいの発行は余裕
- CertBot なら証明書の残り日数を判定して、実際に発行リクエストかけるか判定してくれます
ansibleで管理するときは、すべてansible ですること
- 一部処理を手動でするのは禁止
参考
メールが届かない騒ぎに巻き込まれました(さとう、小ネタ)
- やったこととか、どうしてるのかとか聞いてみます
- firewall設定が原因だった
- 送信先が原因
- でも送信元にも問題ありそう。TLSとかやってないし
- 送信側の qmail (Wikipedia) は 1998年で開発が終了しているので、採用しないほうがいいのではないか。
- フォークプロジェクトは複数あるようです。notqmailとか
- 送信元のメールログを確認できれば、もう少し解決の役にたったかも
- 伝言ゲームで、担当者にまともに伝わらなかったのでは
- さとう → 送信元ユーザ → 客先担当者(何段か) → オペレーター の可能性
- ちょっと大きな組織だとありがち
- 伝言ゲームで、担当者にまともに伝わらなかったのでは
- 原因調査のためにメールヘッダーを先方に要求できていればよかったかも
- エラーメールをeml形式にして、添付してもらうべきではありました
- メールやめたい
- SPAM などが多いのでメールをおくりたくないし受けたくない
- もはやパスワードリセット手段でしかない
- Redmine などの代替方法を使いたい
- PPAP はやめよう。ダメ、絶対
- メールアドレスは個人の識別子としては便利なフォーマット(個人名@家族名みたいな感じ)
- メールを送ると属人的になりやすい
- 複数のメッセージングサービスに跨るプロトコルが標準化実装されれば、SMTPも役割を終えることができるかも
- 現状は程遠いけど
- SPAM などが多いのでメールをおくりたくないし受けたくない
- マイクロソフトは メール認証方式を替るとの話
- ブラックリスト入りしてしまうとスパム対策で全く応答を返さないこともある(アドレスの実在判定ができないように)
- 携帯会社が特に多いですがスパム判定したメールのエラーを返さない事が多々
- 相手先ごとに判定ルールを細かく設定している由
- 秒間10セッション投げると駄目!とか、SPF未設定!、DNSの情報と不一致!など
- セッション数とか色々
休憩
16:45 から再開します
フロントエンドのログ監視がしたい(ふなつ)
Google Analyticsのイベントとか絡ませたい
- ログの収集から利用方法までをざっくりと話したい
- バックエンドの話もいれてもいいです。
- syslog (Wikipedia) の検知すべきものでも
- このあたりトラッキングのブロック入れてるユーザーも想定
シングルページアプリケーション(SPA)を作ってみたが、現状はログ関係は特にない
- ブラウザ側の状態は、デフォルトだとサーバサイドでは何も分からない
ログの目的は?
- ログの目的としてはこのようなものがある。
- Google Analytics からするとコンバージョン?
- 機能に対する KPI にすることもある
- 機能の利用率等
- 想定外の操作のバグ検知
- 外部連携サービスの異常の検知
- どこのログを検知したい?
- シングルページアプリ(SPA)だと、バックエンドはAPIの使用しかわからない。
- 異常時は例外をスロー
- 適切な例外をお願いします!
- 型が違うなども
- JavaScriptの例外(MDN)
- 例外をキャッチしたときにログに書く
- フレームワークが例外をキャッチできる
- 大本がキャッチできる
- シングルページアプリケーションで例外処理を書くのはよくない?
- ログのレベル、ログの出力環境も注意
- PHPならエラーレポーティングなどをつかう。
- PHPなら独自のエラーハンドリングもいじれる
- エラーもすべてログストアにほりこめる
- プロダクトフェーズなのか開発フェーズなのかによっても異なる
- ブラウザのプラグインがバグを吐くこともある
- トラッキングされたくないユーザーもいる
- 利用規約を書いていないサービスを信用できない人もいる
- データをとるツールに過度に依存するのはよくない
- マーケティング目的?
- ユーザーの動作をとりたくなる場合
- Google Analytics を使うなら パラメーターをきっちりチューニングしないといけない
- ログの目的としてはこのようなものがある。
ログ出力
- ページの切り替わり時にフロントからバックエンドに投げる
- ログ収集用のAPIを作成するのが良いのでは
ログ収集
- エラーモニタリングならいくつかある 7 Application Monitoring Tools to Catch Errors on Frontend
- Sentryとかとか
- CVとかKPI関係はGoogle Analyticsに丸投げして一切実装しないのが安全かも
- セキュリティとかパフォーマンス考えたら、実装が大変
ログ分析
監視体制…etc
データストア
フロントで出たエラーをみてもどうしようもないことがある。
- SPAを作成するときに Nuxt.jsやNext.jsを使用しているとき、サードパーティの動作がからんできて使いものにならないデータしかとれないことがある。
- クロージャー(MDN)を使用するとよりデータがとれないことも。
- JavaScriptはコンパイルすると、行番号があてにならないことがある。
- WordPressブロックエディタとか
bundled-react.js 1245行目 Unknownオブジェクト
とか言われても困る - 逆にミニファイされてると全部1行
- WordPressブロックエディタとか
- ロギング目的をきめて設計しないと有効な収集できない(セキュリティなのかマーケィングなのか)
- バックエンドに投げてしまった方がいい
- 責任境界線を引く
- 場合によっては、ログをローカルストレージ (MDN)やセキュアクッキーに貯めざるをえない
- パフォーマンスとかの問題
- ただし、ブラウザ側にログを溜めるとセキュリティホールにもなりえる
- ローカルストレージはアクセス制御がない、弱く他ドメインからよまれるから。
- secure cookie (MDN)に保存するのが良い
- ただし、ブラウザ側にログを溜めるとセキュリティホールにもなりえる
- パフォーマンスとかの問題
ミッションクリティカル なものは フロントで処理させないという設計方針(アーキテクチャ (Wikipedia))もある。
- ビジネス要件も絡んでくる、プログラマもビジネスを理解すべき論
- 戦略と戦術は違う
go言語の irisフレームワーク 良さそう
WebGLが色々使えそうでした(もりや)
- 前回顔出しパネルを作った話の続きで、改良した結果、こちらで一回意見を聞いてこいと言われました。
- Web GL (WDN) はいいぞ。
- OpenGLES から派生した3Dグラフィックスを扱うライブラリ。
- OpenGLES は Microsoft の ActiveX (Wikipedia) をさまざまな環境につかえるようにしたもの。特に組み込み環境などでも対応している。
- 例えば Android でも使用できます。
- Web GLは そのActive Xのような機能がWeb で扱える。
- Vertex shader(位置または三角形のポリゴン) と pixel Shader(色)を自力で書く懐かしいコードを書く事でWeb上で3Dが書ける
- WebGL2.0からは最近のGPGPU を使えるようにもなっている
- Shaderの処理が非常に汎用的なため、グラフィック外の処理も普通にかける
- map 関数みたいなもの。一気にデータを渡して一連のデータ列に適用させることができる。
- GPGPUを使わずとも、画像の状態にデータを変換できればGPUで処理をさせることが出来る
- テッセレーションなる技術とか影の表現で、この変技が多用されていた気が
- 古の技として画像データのアルファ値 (Wikipedia)に計算の結果をいれておき、画像から計算データをとりだすといったことが行われていた。
- WEB GL から GPUが使えるようになってこの古の技がつかわなくてくなった。
- WebGL2.0からShaderで処理させた結果を直接受け取れるようになったので、よりGPUが汎用的に使えるように