Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINE Developer Meetup Slide

ueneid
July 27, 2016

LINE Developer Meetup Slide

This slide written about "LINE Creators Market" and "Creators' Theme" was used at LINE Developer Meetup in Fukuoka #15 on 2016/07/20.

ueneid

July 27, 2016
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 •  上野 英治 @ueneid •  LINE Creators Market – クリエイターズ着せかえの開発を担当しました

    •  Server Side Engineer – 主に Perl – Elixir 好きだけど最近追えてない 2
  2. LINE Creators Market とは •  販売スタンプ数:280,000 セット以上 •  販売着せかえ数:11,000 セット以上

    •  クリエイター登録数:580,000 人以上 (数値はいずれも 2016/07/10 時点のもの) 5
  3. 環境について •  サーバーサイドの言語は Perl – Amon2 を採用 •  フロントエンドは AngularJS1.x – Gulp

    + Babel で ES2015 で記述して modern に •  DB は MySQL •  キャッシュとして Memcached •  Nginx + Starlet – ユーザー向け静的ファイルは全て CDN 利用 6
  4. Internet Proxy Servers App Servers (For Management) App Servers (For

    Users) DB Servers Batch Servers CDN Log Aggrega\on Servers Memcached Servers Sta\c Origin Servers Proxy Servers LINE Creators Market サーバー構成概要 7
  5. LINE Creators Market サービス構成概要 Creators Market Shop NEON Billing LAN

    XLT Stats LINE Web Login LINE Pay -> hHps://developers.line.me/ 9
  6. LINE Creators Market サービス構成概要 Creators Market Shop NEON Billing LAN

    (LINE App No\ce) XLT Stats LINE Web Login LINE Pay 12
  7. Creators Market と ThriF •  Shop 側にある ThriF サーバー(armeria で実

    装) に対して、リクエストを投げる armeria については -> hHp://line.github.io/armeria/ •  データ操作用の Perl module は自動生成 $ thri' -out /tmp/foo --gen perl /path/to/ your/idl.thri' $ cat /tmp/foo/Bar.pm # auto-generated 17
  8. ThriF: Set と Perl •  set: An unordered set of

    unique elements. Translates to an STL set, Java HashSet, set in Python, etc. Note: PHP does not support sets, so it is treated similar to a List hHps://thriF.apache.org/docs/types#containers 19
  9. ThriF: Set と Perl •  こちらからデータをセットするときは Array $data->{foo} = [‘bar’,

    ‘bazz’,…]; •  データを受け取ったときは Hash say Dumper $data->{foo}; # { bar=> 1, bazz=> 1,…} 22
  10. [RESOLVED] ThriF: Set と Perl •  自動生成されたモジュールにパッチを当てて データ書き込み時も Hash で処理するようにし

    た •  Apache thriF 側に p-r hHps://issues.apache.org/jira/browse/THRIFT-3595 •  Set 型の値が object の場合 -> Tie::RefHash を使う 23
  11. PNG chunk: gAMA •  gamma = 1 のとき、入力と出力が同じ rgb(200, 200,

    200) -> rgb(200, 200, 200) •  gamma < 1 のとき、入力より暗めの出力に rgb(200, 200, 200) -> rgb(150, 150, 150) •  gamma > 1 のとき、入力より明るめの出力に rgb(200, 200, 200) -> rgb(250, 250, 250) 30
  12. PNG chunk: gAMA •  gamma = display gamma * gAMA

    = 2.2 * gAMA (本当は、2.2 * gAMA / 100000 が正しい式ですが、説明しにくいので簡易 表記にしています) •  gAMA = 1/2.2 なら gamma = 1 31
  13. PNG chunk: gAMA •  処理後に gAMA を 1/2.2 -> 1/4.4

    に戻す Edited Restored 1/2.2 1/4.4 34
  14. PNG chunk: gAMA •  処理後に gAMA を 1/2.2 -> 1/4.4

    に戻す 1/4.4 1/2.2 1/4.4 1/2.2 ? 1/4.4 ? 35
  15. [RESOLVED] PNG chunk: gAMA •  Imagemagick を使ってガンマ補正 •  補正値は、 gAMA

    / 2.2 で算出 (本当は、2.2 * gAMA / 100000 が正しい式ですが、説明しにくいので簡易 表記にしています) $ convert /path/to/src.png \ -gamma 0.5 \ # 2.2 / 4.4 +gamma 0.45455 \ # 1/2.2 /path/to/dst.png 38