姫路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以外にも色々ありますので、人数が増えたら検討しましょう。

今月のニュースまたはネタ

ネタが思いつかない人用に今月のニュースをはじめました。

自己紹介

  • イモケンピで既に盛り上がりました

今日のお題

Windows 11になりました(かねだ)

  • InsiderPreviewのWindowsUpdateが失敗し続け、とうとう有効期限切れになったためクリーンインストール(再インストール扱い)を断行
    • 3ヶ月は長いですね。
    • サポートの電話があるらしい
  • その結果、WSL2VirtualBoxが併用できるようになりました(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 のアプリが動く?などの話
    • Android コンテナ上で動くらしいが、実態は Qemu?
    • Android アプリ は Amazon からしかインストールできない?
    • インサイダープレビューにて一応Amazonからアプリをインストールする方法自体は公開されています
  • PWA が マイクロソフトストア から配信できるようになる?
    • 先駆けてか不明ですがPWA化してある動画編集・配信アプリが公開されています
  • Windows は道具であまり深入りしたくない
    • Windows2000 はよかった
    • Windows98 は毎月再インストールしていた
  • Windows からの移行
    • Linux は快適
    • メインマシンを移行しないと、だめ。サブマシンだけ移行したらだめ
    • macOS も同様
      • ベンダーロックが多い
        • キーボードに慣れるのもちょっと大変
      • 移行時に ansible を使いだしたが Windows では動作しなかったから
      • 仮想化環境がないと仕事できないので更新できないときがある
      • macOSに慣れるまで3ヶ月くらいかかったが、それだけの価値はある
        • 慣れたらWindowsにはもう戻りたくない
        • Homebrewなどもこなれてきているし
  • 仮想化?のmsys2git bashの中に生き残っている
  • winget。あ、そういうのもありましたっけ
    • Nugetは結構前からあるんだから、OSにも入れて欲しかったなあ
    • choco とか scoop があるのでもういらない子?
    • winget アンインストール実装されなかった?
    • scoop でインストールしたものを Windows からアンインストールすると scoop にインストール情報が残ってしまう
  • 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 をつけている
      • ちゃんと macOSにも macports という portsシステムはあるよ。

休憩

再開は 15:05 からです

サービスの重要データのバックアップはどうしてる? (fu7mu4)

  • 上司よりRedmine建てろとの命令が下った
    • バックアップどうしましょう? ー ひとしきり上司とはなしたが、どうも話がまとまらない
    • 擬似的に事故を起こして、思い知らせてやってはどうか
  • Windowsは標準のバックアップツールでNASをバックアップ先に
    • サーバは月イチくらいでデータを別のドライブにrsync
      • ローカルに直近のものをバックアップ
      • 古いバックアップを別ストレージに移す
        • AWSのオブジェクトストレージで冗長化なら古いものは自動的に削除することもできる
        • ライフサイクル設定や権限
      • バックアップからリストアできるか検証する
    • ハードを分けておく原則
      • ムネナガ家はメイン機とNASで分離
  • データの重要度とコストで
    • 別拠点にバックアップしたりしてます?
    • どこまで冗長するかは、データの重要度しだい
    • RAID (Wikipedia) を バックアップと勘違い
  • 某社長さんは苦闘の末にバックアップの重要性を学習
    • RAIDにしたから大丈夫 → コントローラーが吹っ飛ぶ
    • 外付けのHDDに保存してるから大丈夫 → ランサムウェアを食らって吹っ飛んだ
    • SharePoint で世代管理型バックアップ → アカウントを乗っ取られて吹っ飛んだ
  • データ消失最大のリスクは人間
    • 上司とか古参社員とか、我流を振り回す人が特に危険
    • ヒューマンエラー
  • どうしたらバックアップが大事だという感覚をもってもらえるのか?
    • いっぺんデータを飛ばしてみる
  • 逆に延々とデータを捨てられない例も
    • 事務仕事で一つのエクセルシートに何年も書き溜めてた
      • シートを分けることさえせずに下へ下へと書き足していました
      • 一行目が3年前でした
        • ライフサイクルを設定すべきでは
        • ちゃんとした事務は実は保存期間を決めてて、過ぎたら廃棄
        • 経理関係とか法定の保存期間=社内の保存期間だったりする
      • 業務のフローを考えてないからそうなる
        • 意識低いIT系もよくやる
    • バックアップのライフサイクル
      • ストレージも無限じゃない、コストもかかる
  • コンプラの関係で外部におけないデータもある
    • マイナンバー
    • SSHの鍵はUSBメモリにバックアップしています
  • 不測の事態はおこる
    • いかに復旧できるようにするかを考えて設計しましょう
  • Webサービスのバックアップは?
    • Slackはアーカイブをダウンロードできます。
      • Slackは置き捨てで。フロー情報とストック情報は別に管理しましょう。
  • しゃーないから避難訓練するかー
    • やはり思い知らせるしかない
    • 仕様をきちんと保存する習慣を身につけるのに苦労しました。

勉強会公式サイトのSSL発行にCertBotはどうだろう?(ムネナガ)

Let’s Encrypt のSSL自動発行の仕組み(dehydrated)が動作していない。そのためには1と2のどちらか

  1. dehyrrated をそのまま採用をつづける
    • 読むのに時間がかかりそう。
    • → DNS認証のクライアントでこけていることまでがわかっている。
    • dehydrated は shell scriptの勉強にいいらしい
  2. Certbot を採用する。
    • http認証、nginx はプラグインが要る
    • サーバーを止めずに更新させるためにはプラグインが必要
    • python製
      • pip からインストールする必要がある。失敗しやすい
      • どっちにするかは、まあ好み
      • python2系とpython3系の問題がある
    • どっちも apt で入る

メールが届かない騒ぎに巻き込まれました(さとう、小ネタ)

  • やったこととか、どうしてるのかとか聞いてみます
  • firewall設定が原因だった
    • 送信先が原因
    • でも送信元にも問題ありそう。TLSとかやってないし
  • 送信側の qmail (Wikipedia) は 1998年で開発が終了しているので、採用しないほうがいいのではないか。
    • フォークプロジェクトは複数あるようです。notqmailとか
  • 送信元のメールログを確認できれば、もう少し解決の役にたったかも
    • 伝言ゲームで、担当者にまともに伝わらなかったのでは
      • さとう → 送信元ユーザ → 客先担当者(何段か) → オペレーター の可能性
      • ちょっと大きな組織だとありがち
  • 原因調査のためにメールヘッダーを先方に要求できていればよかったかも
    • エラーメールをeml形式にして、添付してもらうべきではありました
  • メールやめたい
    • SPAM などが多いのでメールをおくりたくないし受けたくない
      • もはやパスワードリセット手段でしかない
    • Redmine などの代替方法を使いたい
    • PPAP はやめよう。ダメ、絶対
    • メールアドレスは個人の識別子としては便利なフォーマット(個人名@家族名みたいな感じ)
    • メールを送ると属人的になりやすい
    • 複数のメッセージングサービスに跨るプロトコルが標準化実装されれば、SMTPも役割を終えることができるかも
      • 現状は程遠いけど
  • マイクロソフトは メール認証方式を替るとの話
  • ブラックリスト入りしてしまうとスパム対策で全く応答を返さないこともある(アドレスの実在判定ができないように)
    • 携帯会社が特に多いですがスパム判定したメールのエラーを返さない事が多々
    • 相手先ごとに判定ルールを細かく設定している由
      • 秒間10セッション投げると駄目!とか、SPF未設定!、DNSの情報と不一致!など
      • セッション数とか色々

休憩

16:45 から再開します

フロントエンドのログ監視がしたい(ふなつ)

  • Google Analyticsのイベントとか絡ませたい

    • ログの収集から利用方法までをざっくりと話したい
    • バックエンドの話もいれてもいいです。
    • syslog (Wikipedia) の検知すべきものでも
      • このあたりトラッキングのブロック入れてるユーザーも想定
  • シングルページアプリケーション(SPA)を作ってみたが、現状はログ関係は特にない

    • ブラウザ側の状態は、デフォルトだとサーバサイドでは何も分からない
  • ログの目的は?

    • ログの目的としてはこのようなものがある。
      • Google Analytics からするとコンバージョン?
      • 機能に対する KPI にすることもある
        • 機能の利用率等
      • 想定外の操作のバグ検知
      • 外部連携サービスの異常の検知
    • どこのログを検知したい?
      • シングルページアプリ(SPA)だと、バックエンドはAPIの使用しかわからない。
      • 異常時は例外をスロー
      • 例外をキャッチしたときにログに書く
        • フレームワークが例外をキャッチできる
        • 大本がキャッチできる
      • シングルページアプリケーションで例外処理を書くのはよくない?
      • ログのレベル、ログの出力環境も注意
        • PHPならエラーレポーティングなどをつかう。
        • PHPなら独自のエラーハンドリングもいじれる
        • エラーもすべてログストアにほりこめる
        • プロダクトフェーズなのか開発フェーズなのかによっても異なる
    • ブラウザのプラグインがバグを吐くこともある
    • トラッキングされたくないユーザーもいる
      • 利用規約を書いていないサービスを信用できない人もいる
    • データをとるツールに過度に依存するのはよくない
    • マーケティング目的?
      • ユーザーの動作をとりたくなる場合
      • Google Analytics を使うなら パラメーターをきっちりチューニングしないといけない
  • ログ出力

    • ページの切り替わり時にフロントからバックエンドに投げる
    • ログ収集用のAPIを作成するのが良いのでは
  • ログ収集

  • ログ分析

  • 監視体制…etc

  • データストア

    • datadog
    • ログデータは、検索性が求められないので、MongDBなども検討できる。
  • フロントで出たエラーをみてもどうしようもないことがある。

    • SPAを作成するときに Nuxt.jsNext.jsを使用しているとき、サードパーティの動作がからんできて使いものにならないデータしかとれないことがある。
      • 動作毎にログを書きだす方がいいこともある。
        • エラーったらサーバ側に即時送信させるとか
      • フロント側だけでエラーをとるのがむりなことがある。
      • ちなみに
        • Nuxt.jsはVue.jsベースでサーバーサイドレンダリングとSPAと両方書ける
        • Next.jsはReactベースでサーバーサイドレンダリングもできて高機能
    • クロージャー(MDN)を使用するとよりデータがとれないことも。
    • JavaScriptはコンパイルすると、行番号があてにならないことがある。
      • WordPressブロックエディタとかbundled-react.js 1245行目 Unknownオブジェクト とか言われても困る
      • 逆にミニファイされてると全部1行
    • ロギング目的をきめて設計しないと有効な収集できない(セキュリティなのかマーケィングなのか)
      • バックエンドに投げてしまった方がいい
      • 責任境界線を引く
    • 場合によっては、ログをローカルストレージ (MDN)やセキュアクッキーに貯めざるをえない
      • パフォーマンスとかの問題
        • ただし、ブラウザ側にログを溜めるとセキュリティホールにもなりえる
          • ローカルストレージはアクセス制御がない、弱く他ドメインからよまれるから。
        • secure cookie (MDN)に保存するのが良い
  • ミッションクリティカル なものは フロントで処理させないという設計方針(アーキテクチャ (Wikipedia))もある。

    • ビジネス要件も絡んでくる、プログラマもビジネスを理解すべき論
    • 戦略と戦術は違う
  • go言語の irisフレームワーク 良さそう

WebGLが色々使えそうでした(もりや)

  • 前回顔出しパネルを作った話の続きで、改良した結果、こちらで一回意見を聞いてこいと言われました。
  • Web GL (WDN) はいいぞ。
    • OpenGLES から派生した3Dグラフィックスを扱うライブラリ。
    • OpenGLES は Microsoft の ActiveX (Wikipedia) をさまざまな環境につかえるようにしたもの。特に組み込み環境などでも対応している。
    • 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が汎用的に使えるように