Opening メモ
立ち見。よく覚えていない
PHP におけるDSL
松藤さん
@matsu_hide さん
DSL例
-
SQL
-
Shell
-
CSS
-
PHP ...?
- 初めはWebSiteを作るためのフレームワーク
- DSLから汎用プログラム言語に発展
DSL とは
Domain Specific Language
ドメイン特化型開発
- SQL => RDBに特化した(領域を絞った)言語
問題領域(例)
「キャンペーン商品を含んでいる場合は合計額から10%値引き」
実践DSL
- パーサ(構文解析)
- エンジン
- エディター
... 無理デスヨネー orz
- パーサ → YAML
- エンジン → ExpressionLanguage(Symfony)
- エディター → まぁ無くていいでしょ。( IntelliJ でいいんじゃね? )
ExpressionLanguage
式をコンパイルして評価するエンジン
キャンペーン商品の割り引き:
条件: カート.キャンペーン商品を含む()
割引: カート.商品合計() * 0.1
↑「条件」「割引」にExpressionLanguageを使う
class Cart {
public function 送料() { ... }
public function キャンペーン商品を含む() { ... }
public function 商品合計() { ... }
}
まとめ
DSLは小さな問題領域にフォーカスしたものである
ハッシュと暗号は違うよ
@tomzoh さん
なぜ?
お客さん「セキュリティ上、パスワードを保存しないで。
ベンダ「ではパスワードを暗号書いて保存!」
@tomzohさん「ハッシュだろ」
ハッシュとは
関数: md5(s)
など。
PHPの配列ハッシュなどではない。
特徴
- 固定長の出力
- 同じデータを入れたら、同じハッシュ値がでる
- 別のデータを入れたら、だいたい別のハッシュ値が出てくる
- 不可逆
- yum/aptではハッシュ値とかでファイルの整合性確認をする
第二部 ハッシュ値衝突
要は無限空間から有限空間にするので、衝突が起きる。
- ハッシュの安全性
ハッシュ衝突の攻撃
-
sprintf('/user/%s', md5(1))
- 推測可能
- salt を混ぜこむ
sprintf('/user/%s', md5('12sda3' . 1))
ハッシュと暗号
- ハッシュ: 戻せない
- 暗号: 鍵があると戻せる
似たようなやつ
- 難読化
- Encode/Decode
つづき
- 連想配列 = Hashという理由
$a['k'] = 'b';
内部マップで、'k' がハッシュ化して保持している
関心事と責務の話
takahashi shinichi
あれこれ
Microservices
- 要は小さいアプリケーションを作っていってあれこれしよう
スマートエンドポイント
- Restfulなリソース
ダムパイプ
- RabbitMQなどの軽量メッセージ
分散ガバナンス
- サービスごとの言語・DBの選択可能
DDD
本質はどこなの?という話。
関心事と責務の話
関心事=ある機能の振る舞い、目的のこと。
- → 関心事を分離しよう。
責務 = そのクラスがするべき事
設計・コーディングの事
- 設計思想を言語化、文章化
- 思想に合うようにInterfaceだけガッツリ作る
- 関心をもつのは相手のみ。
- クラスの責務は広くなっていないか
↑
Interface → 「抽象に依存する」といいます
今日の話は
PHP でもサーバレスしたい
渡辺さん
Serverless architecture
SERVERLESS CONF
ServerLess = 要はバックエンドのインフラを持つのは大変よね。
- サーバ環境の変化
- 最近は秒単位で。。。
- オンプレだと、1から全部面倒見てた
- SaaS だとベンダーの上で動かす。
特徴
- サーバを意識しない
- 簡単にスケールできる
- ただ、めっちゃスケールする。
- 利用料課金
事例
- faultline
初めのオススメ
- バッチ処理
- cronの実行など
- 運用の自動化
Hosting
Amazon Lambda は PHP 動かない。
Azure Functions は動く!
Azure Functions
- めっちゃ安い
- http トリガーで動かす
- 他にも
- Blue Green Deployment ができる
- ServerLessでデプロイできないのがつらい
- http Trigger は従量課金プランだとつらい
Logic Apps
- IFTTT のレシピみたいなやつ
Application INside
- new relic みたいなやつ?
Durable Functions
複数のfunctions が動かすことが出来るっぽい?
LT
メモってない。