姫路IT系勉強会 2021.07
- 開催日: 2021/7/17 13:15 - 17:35
- 司会: fu7mu4さん
- 参加人数: 参加者: 10名(うちLisper 1名) 学生 0名
- HackMD https://hackmd.io/aVHxec9eRkakAkecJ4gyMg
- connpass: https://histudy.connpass.com/event/218595/
- ハッシュタグ:#histudy
- Discord(オンラインミーティング専用)姫路IT系勉強会招待コード: https://discord.gg/rZCeScB
- Discordは無料プランに乗れる人数(10人以内)なので使っています。
- 有料版でも$15/月程度なら払えなくもないですね。
- Discord以外にも色々ありますので、人数が増えたら検討しましょう。
お題
Chrome, EdgeでIEみたいにfileスキームのリンクを”既定のプログラム”で開けるようにした(田窪)
- セキュリティに詳しい
ニキ達諸兄のご意見を伺いたい。- ニキとは?
- すみません。なんj語です…。
- ニキとは?
<a href="file:///Z:/share/master.xlsx">
みたいなリンク- file スキームはRFCにより絶対パス指定です
- IEだとこのリンクで一気にエクセル開いて編集して保存できた。
- 昔ActiveXでやりたい放題だったことが
- Edgeではこれが出来ないので不便
- こういう拡張機能を見つけました
- ローカルファイルリンク有効化 - Chrome ウェブストア: https://chrome.google.com/webstore/detail/enable-local-file-links/nikfmfgobenbhmocjaaboihbeocackld?hl=ja
- ↑これだと、別タブで開くだけなので、ファイルを編集することができないです。
- 拡張機能を探したけど見当らないのは、セキュリティ上の問題があるから?
- ローカルファイルリンク有効化 - Chrome ウェブストア: https://chrome.google.com/webstore/detail/enable-local-file-links/nikfmfgobenbhmocjaaboihbeocackld?hl=ja
自作の「ファイルオープンサーバ」を使う方法をデモ
- fileリンク->拡張機能->ファイルオープンサーバ(goで実装しました)->「既定のプログラム」
- このアーキテクチャでセキュリティの懸念はなにがあるだろうか?
- ファイルオープンサーバーが信頼できるかどうか?
- ファイルオープンサーバーがこっそりコピーするとかあると怖い
- オープンソースですれば中身わかるから信頼できる
- なので、今回の仕組みの中に悪意があることは想定しません。外部からの攻撃に対する脆弱性のみを問題にしています。
- 開けるファイルを制限する機能があった方がいいかも
- プロキシで制限かける? → 多分「プロキシだけ」だと意味ない
- ホワイトリスト方式でURLをバリデーションしてから渡す
- リンク先が拡張子やアプリケーションなどを偽装できそう
- Mimeタイプ偽装とかあると検出しにくい
- fileスキームには、Mimeは関係ないと思います。
- Mimeタイプ偽装とかあると検出しにくい
- MS: SharePointでよくね?それかOffice 365 でクラウドにファイル置くといいよ
- データファイルが共有ストレージに散らかる問題についてひとくさり
HackMDにサインインすると、ぜんぜん知らないところにリダイレクトされました(さとう)?
- 何ももしてないのに飛ばされました
- 見慣れたメモがひとつもなく、外国語らしいメモがいっぱい。
- すわアカウント盗まれて荒らされたかと冷や汗
- たまげてあちこちアクセスしているうちに普段のページに
- HackMD は台湾のサービス
- g0vですやん。g0vは、これです: https://g0v.tw/intl/ja/
- 「g0v 零時政府」(ガブゼロ)
- 集団知がさまざまな問題を解決する 台湾デジタル担当大臣 オードリー・タンさんが語る未来(4/6) | JDIR powered by JBpress
- 中の人がポカミスやったところを偶然踏んでしまった、らしい?
- ルーティングの設定をミスったのでは?
- それだと逆に、
g0v.hackmd.io
にアクセスしたかった人が別のページに飛ばされたかも
- それだと逆に、
- 「g0v 零時政府」(ガブゼロ)
Raspberry PiでUSBカメラの映像をリアルタイムに飛ばす簡単な方法ありますか?(もりや)
- FFMPEG → Nginxで飛ばすとバッファの関係で4秒ずれます
- Janusを使いWebRTCで飛ばすとリアルタイムに飛びますが、以前作ったクライアントがAngular6で作っていたので、今はReactに宗派を切り替えているので作り直しが面倒です。
- Janusのフロント設計がjQueryベースで作成されておりかなり古いです
- Janus上で発生するイベントごとに関数をオーバーライドする実装方法のため無駄に長いコードを書かないといけません
- 最近のReact等に組み込もうとするとお作法の違いでちょっと面倒です。
- これが低遅延で最強ですよ WebRTC SFU Sora - 機能・特長
- やはり有料しかないのか
- 監視カメラで使用している、RTSP対応のカメラとVLCのブラウザプラグインを組み合わせれば低遅延で簡単に映像は見れます。
- VLCはエンコーダとしても多機能
- PHP は 型がゆるい言語から型の厳しい言語の話
ピーエイチピー?
Web言語は地獄です
- 歴史的経緯1
- HTMLはゆるい書き方を許容してきました
- JavaScript もブラウザ上でちょっと動く言語ぐらいのもの
- PHP は HTML を動的に簡単に作れる言語
- Google MAP が非同期通信 & SAPでウェブアプリの世界を切り開いた
- WEB開発の大規模化が顕著に
- Google MAP が非同期通信 & SAPでウェブアプリの世界を切り開いた
- 歴史的経緯2
- 紙のグラフィックデザイナーがWEBデザインもする
- WEBデザインしつつコーディングもする
- 妙なコードが溢れる
- HTML/CSS/JS は緩く書ける
- 適当な書き方でも動いちゃう
- 妙なコードが溢れる
- 素のJavaScriptはしんどい
- Reactは分かると良いですが、そこまでが大変
- FLUXで実装出来るため、考え方がシンプルになります。React、ReactJsでは満たせないので、React+Reduxで実装する必要があります
- あらゆるデータ、イベントの流れが必ず一方向になるので機能ごとに実装する内容をシンプルに出来ます。コードの再利用性も上がります。
皆さんのプログラム環境と言語を知りたいです。(tom)
Wate さんの例
- 何でもござれです。
- サーバサイドからインフラまで
- ソースコードがドキュメントなときが
- 言語切り替えのコンテキストスイッチはきつい…
- PHP
- メインは CakePHP
- SQL / ORM でパフォーマンスがでないときに
- SQLかける人少ない。フレームワークの弊害?
- 最近MySQLしんどい。PostgreSQLに変えたい
- bash
- サーバーのチューニングなど
- ruby
- Redmineやってるとき
- ansible
- pythonとかYAMLとか
- go
- JavaScript/JQuery
- Typescriptも手をだすはめになりそう
- もうプログラミングだけではダメ。政略->戦略->戦術で考えると
- 業務フローを考えると、設計の方に行かないと
- 設計がしっかりしていれば、言語なんてどうにでも
- KGI Key Goal Indicator
- KPI Key Performance Indicator
- 上流がしっかりしてないと、下流が地獄を見ます
- 異動されたら、なんど誰も何もやってなかった
- 自分が設計がんばらないとならない状況あるある
- 上流に食い込むのはしんどいけど楽しい
- 下流工程からアラートを上げて、上流に反映させ、情報を共有していく
- BTSにログ入れない奴にぶち切れる程度になった
- 異動されたら、なんど誰も何もやってなかった
- 日本語めんどくさい
- アルファベットはちゃんとかけるけど、日本語はなぜかタイポしまくり
- タブとスペースの混在は頭痛い
- EditorConfigは入れてくれ
ムネナガ
- Wordpress : CMS 元々ブログシステム
- PHPを主に、DBの面倒もみてます
- WordPressでブログ記事を書くためのエディタがReact製
- なので半強制でReactも始めました
- 最初つらかったけど、今はReact派です
- Kotlin: Android の アプリ
- 最近のアプリ開発事情は?
- React Nativeが多そう
- Xamarineもシェアある
- 最近のアプリ開発事情は?
- Flutter, Dart でアプリ書きたいと思う
- マテリアルデザインでサクサク作れるらしい
- TypeScriptやKotlinやってれば、Dartはさほど大変ではないらしい
- ExcelのアドオンをC#で書いてました
のがじゅん
- シェルスクリプトばかりだったけど、
- LibreOfficeのために、C++をちゃんと勉強しなければ
- 実は自然言語の方が
- 用語統一に苦労しています
- 用法とか文言の意味合いが異なってたりする
- ルールを書いても皆が守るとは限らないので、システムで固めたい
- そのまえに、editorconfig で開発環境を整備したほうがいい
スマホアプリ開発でお勧めの言語&環境知りたいです(tom)
- 私はflutterか.net mauiを勉強しようと考えています。
- AndroidならKotlinいいですよ
- 車載アプリはJavaだったりします。10年後もJavaで戦いますか…?
- 10年乗りの車なんて普通にありますよね
- 新しいJavaわからないのでJava8です(一部だと思いたい)
- Java8 LTSのリリースは2014年
- ScalaでAndroidアプリを書くという苦行が過去にあったらしい。
- Cordovaは一応生きてます。が、今はReact Nativeが主流
- React Nativeもアップデートで死ねるそう…
- Kotlinでクロスプラットフォームもできます
- JVM 部分のかわりに、ネイティブで動作するライブラリを使うらしい。
- それ大丈夫なの…?
- JetBrainsは推してますがどうだろ
- C# / Xamarine で Androidアプリを作成する可能性が..
- dot net は v5以降ならマルチプラットフォームだから…
- マイクロソフトのサービス、プロダクトの話題が少ない(検索にかからない)
- 主流じゃない?古い?
- Webで発信されやすいのはOSSとかが多い
- Windowsサーバは高いですし
- OSS だと試しやすいし、今は MS も OSSにも注力しているから
- 主流じゃない?古い?
histudyのありかたについて若干雑談しました
- セミナーより技術雑談が好き
- オンラインなら十数人が適切な人数と思います
- histudyには伝説の人物が多数輩出しました
- 素人からWebシステム開発者にジャンプしたお爺さんとか
- とんがった学生さんたちもおりました
- 姫路こわい。まんじゅうこわい
- 現在、オンライン専用になってしまっていますが、ハイブリッドできたらいいですね
- 昨今のコロナ禍を考えると、場所は借りれてもオフライン開催はしにくい
AWS / Azure等のクラウド開発について知りたいです(tom)
- 「クラウド開発」の定義をまず知りたいです
- オンプレから移行は難しいのでしょうか?
初歩的な話ですが、Gitの分岐(branch)機能の使い方教えて下さい(tom)
- githubの?gitではなくて? github flowの話?
- GitHub Flow (Japanese translation): https://gist.github.com/Gab-km/3705015
- Gitflow ワークフロー | Atlassian Git Tutorial: https://www.atlassian.com/ja/git/tutorials/comparing-workflows/gitflow-workflow
- 各ブランチの役割を決めておく、ブランチ戦略、ブランチフロー
- チームメンバーごとにブランチを切る方法も
- Aさんのブランチ dev-a
- Bさんのブランチ dev-b
- 各々のメンバーは一旦、自分のブランチにコミットしていく
- 各人の作業が完了したら、マスターへプルリクを出す
- レビュワーが見てOKならマスターへマージ
- 二人でバラバラにコーディングしても相互に影響しない
- AさんがPHPを修正、BさんがCSSを修正など平行して作業できる
- dev-aブランチをdev-bにマージもできるので、PHPを修正してCSSあてて、見られる状態になってからステージングブランチへマージして表示を確認とか
- Redmineのチケット一つにブランチ一つ切る
- そのチケットに対して、どういう変更があったか記録していける
- Gitは自由度が高い
- チームやプロジェクトごとにワークフロー、ブランチ戦略を定める必要がある
- CVSなど他のバージョン管理との違い
- チームやプロジェクトごとにワークフロー、ブランチ戦略を定める必要がある
- 参考
NoSQLのDBを使っている方いらっしゃれば、従来RDBとの違いと使い分けを教えて下さい(tom)
- 本格的に使っている人がいない
- NoSQL は早いらしい
- データの型がきっちりわかれている場合は RDB にいれる
- ログなどで型がわかれていない場合は、NoSQL にいれる
- 実はRealmという NoSQL を使ってます
- しかし
- ORMかましてアクセスしてるので、使い勝手とか違いは分らないです。
- データ構造もそこまで複雑なもの扱ってないので使い勝手とか(以下略
- 比較対象もWordPressのMySQLなもので
SQLテーブル設計の正規化ってどのレベルまでやられます?(tom)
- 第1 〜 第5正規化まである
- 第3正規化ぐらいまででいいんじゃない?
- 4、5正規化まで行くと人間が理解しずらくなりそう
- メンタルモデルと乖離してこない?
- 計算機科学的「正しさ」、コンピュータが処理する分にはいいのかも
- DBスペシャリストを認定する資格 OSS-DB技術者認定試験
- ER図なにで描いてます?
- データベースを解析して、マークダウンでドキュメントを生成してくれている。
ドキュメントについて
- エンジニアならドキュメントは書きましょう
- 誰も書かないなら、三ヶ月後の自分のために
- すべてを忘れ去った*年後のリプレース案件のときのために
- 「誰かのために」は逆に心が折れます
- 書くことが思考や状況の整理にもなります
- 他の人はドキュメントを書かなかったり、ドキュメントよりコード書け文化についてひとしきり
LibreOfficeのUI/Helpの翻訳ファイル(gettextのpo)をTextlintにかけてチェックしたいと思案中(のがた)
- textlintは、ルールに従って日本語校正をするチェッカーです
- textlint · The pluggable linting tool for text and markdown: https://textlint.github.io/
- WorksApplications/textlint-plugin-po: A textlint plugin to lint translated text in .po files: https://github.com/WorksApplications/textlint-plugin-po
- こういうのを見たのですが、LibreOfficeの翻訳も表記ゆれ、表記チェックをかけたいなと妄想
- フロントエンド開発にtextlintを導入して運用している話 - Speaker Deck: https://speakerdeck.com/diescake/hurontoentokai-fa-nitextlintwodao-ru-siteyun-yong-siteiruhua
ゆる募 facebook inferに詳しい人 たぶんいない (fu7mu4)
- facebook infer は facebook がOSS化した、スマフォアプリなどを対象にした静的解析ツール
- C/C++ Objective-C/Java
- Erlangもできるよ?
- なぜか OCaml 製だよ
- Docker 環境で動かすと libc のバージョンがちがうといわれたのでソースからビルドするよ
- opamというOCaml Package Manager 1.2から 2.0にあがらない、インストールしなおしが必要
- infer のC++ 対応には カスタマイズした clang をビルドする
- 30-60くらいかかるよ。
RubyとかNodeのバージョンマネージャーでバージョン固定を行うときの方針はどうしたら?(ムネナガ)
- 自分の中で確定
- 本番環境には入れない
- 本番と開発環境で実行バージョンを揃えたい時に固定する
- 最近思うこと
- npm パッケを開発でしか使ってないなら、要らないのでは?
- 2021年の今ならそこまでガッチリ固定しなくていいと思うんですが?
- そんなに厳しいの最近、あまり出くわしてない
- むしろ排除すべし?
- チームとかプロジェクトでケースバイケースになりそう
- 2021年の今ならそこまでガッチリ固定しなくていいと思うんですが?
- Python / Ruby あたりは要るかな?
- 今も要る気配があります
- PHPはWordPressばっかりだから使ったことがない
- Composerをバリバリ使うなら要る?
- 結局、最近はそんなシビアなパッケージ少なくない?
- Composerをバリバリ使うなら要る?
- npm パッケを開発でしか使ってないなら、要らないのでは?
- 実行バージョンを切り替えたい時にバージョンマネージャーを使う
- 動作確認や不具合調査など
- バージョン切り替えなら仮想化内で実行する方法もある
- がちがちに固めるならdockerでいいんでないの
- dockerは中の権限がrootなのがねぇ
- 一応Sandboxになっています
- ユーザーモードもあります
- そのあたりを分かってない人が使うとヤバイ
- WordPressの公式開発環境がdockerです。
- @wordpress/env – Japanese Team — WordPress.org
- 元々はブロックエディタ開発用に用意されました。
- dockerは中の権限がrootなのがねぇ
- 固めるつもりならLockfile入れといてね
- Nodeなら package.json だけでなく、 package-lock.jsonも
- 運用を考えて揃えるなら、仮想化の方がベター
- バージョンを変えると失敗する例
- Android 11(AOSP全体)のビルド
- Ubuntu 16.04, 18.04 はサポートされている
- Ubuntu 20.04 はサポートされていない
- Android 11(AOSP全体)のビルド