PHPカンファレンス関西2017 メモ

  • 0
    いいね
  • 0
    コメント

    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は小さな問題領域にフォーカスしたものである

    https://github.com/matsufuji/phpck2017-dsl

    ハッシュと暗号は違うよ

    @tomzoh さん

    なぜ?

    お客さん「セキュリティ上、パスワードを保存しないで。
    ベンダ「ではパスワードを暗号書いて保存!」
    @tomzohさん「ハッシュだろ」

    ハッシュとは

    関数: md5(s) など。

    PHPの配列ハッシュなどではない。

    特徴

    • 固定長の出力
    • 同じデータを入れたら、同じハッシュ値がでる
    • 別のデータを入れたら、だいたい別のハッシュ値が出てくる
    • 不可逆
    • yum/aptではハッシュ値とかでファイルの整合性確認をする

    第二部 ハッシュ値衝突

    要は無限空間から有限空間にするので、衝突が起きる。

    • ハッシュの安全性

    ハッシュ衝突の攻撃

    • sprintf('/user/%s', md5(1))
      • 推測可能
      • solt を混ぜこむ
        • sprintf('/user/%s', md5('12sda3' . 1))

    ハッシュと暗号

    1. ハッシュ: 戻せない
    2. 暗号: 鍵があると戻せる

    似たようなやつ

    1. 難読化
    2. Encode/Decode

    つづき

    1. 連想配列 = Hashという理由

    $a['k'] = 'b'; 内部マップで、'k' がハッシュ化して保持している

    関心事と責務の話

    takahashi shinichi

    あれこれ

    Microservices

    • 要は小さいアプリケーションを作っていってあれこれしよう

    スマートエンドポイント

    • Restfulなリソース

    ダムパイプ

    • RabbitMQなどの軽量メッセージ

    分散ガバナンス

    • サービスごとの言語・DBの選択可能

    DDD

    本質はどこなの?という話。

    関心事と責務の話

    関心事=ある機能の振る舞い、目的のこと。

    • → 関心事を分離しよう。

    責務 = そのクラスがするべき事

    設計・コーディングの事

    • 設計思想を言語化、文章化
    • 思想に合うようにInterfaceだけガッツリ作る
    • 関心をもつのは相手のみ。
    • クラスの責務は広くなっていないか

    Interface → 「抽象に依存する」といいます

    今日の話は

    PHP でもサーバレスしたい

    渡辺さん

    Serverless architecture

    SERVERLESS CONF

    ServerLess = 要はバックエンドのインフラを持つのは大変よね。

    • サーバ環境の変化
      • 最近は秒単位で。。。
    • オンプレだと、1から全部面倒見てた
    • SaaS だとベンダーの上で動かす。

    特徴

    • サーバを意識しない
    • 簡単にスケールできる
      • ただ、めっちゃスケールする。
    • 利用料課金

    事例

    • faultline

    初めのオススメ

    • バッチ処理
      • cronの実行など
    • 運用の自動化

    Hositng

    Amazon Lambad は PHP 動かない。

    Azure Functions は動く!

    Azure Functions

    • めっちゃ安い
    • http トリガーで動かす
      • 他にも
    • Blue Green Deployment ができる
    • ServerLessでデプロイできないのがつらい
    • htto Trugger は従量課金プランだとつらい

    Logic Apps

    • IFTTT のレシピみたいなやつ

    Application INside

    • new relic みたいなやつ?

    Durable Functions

    複数のfunctions が動かすことが出来るっぽい?

    LT

    メモってない。