SlideShare uma empresa Scribd logo
1 de 91
Baixar para ler offline
ぼくのかんがえたさいきょうの
  うぇぶあぷりけーしょん
    ふれーむわーく


  cho45 <cho45@lowreal.net>
        株式会社はてな
自己紹介
id:cho45
http://www.lowreal.net/
株式会社はてな
 京都8F勤務
Perl (バックエンド)
JavaScript (フロントエンド)
Ruby (ツール作り)
Scala (たまにあそびで)
Java (Android アプリ)
Config::Pit
Config::ENV
Plack::App::CocProxy
SQL::NamedPlaceholder

JSDeferred
最近は
window.postMessage
   にハマっています
が
その話はしません
趣味
神社巡り
写真
プログラミング
コード群: http://github.com/cho45
日記: http://subtech.g.hatena.ne.jp/cho45/
本題
の前に
前提
1. 長期的にメンテナンスする
2. 大規模
3. 複数人開発
個人で使うフレームワークとか正
直どうでもいいと思う。
フレームワーク
つかってますか 
Catalyst,
 Jifty, Dancer, CGI::
 Application, HTTP::
   Engine, Mason,
Squatting, Continuity,
Maypole, Tatsumaki,
Mojolicious, Ark, Noe,
    Kamui, Amon2
                 ref. http://plackperl.org/
ぼくのかんがえたさい
きょうのうぇぶあぷり
けーしょんふれーむ
わーく
アジェンダ

● 良いフレームワークとはなにか
● 信頼性設計とかについて
● テストについて
ぼくのかんがえたさい
きょうのうぇぶあぷり
けーしょんふれーむ
わーく
を考える前に
フレームワークの
メリット   デメリット


  を整理します
メリット
共同開発しやすい
安全なフレームワークは安全
  形になるまで早い
  バッドノウハウの蓄積
  うまくいかないとき
フレームワークのせいにできる
共同開発しやすい
安全なフレームワークは安全

    特に重要
デメリット
読むコードが増える
  自由度がない
  拡張性がない

フレームワークが糞だと
 全てが糞になる
フレームワークを覚えるのに
  必死になりがち

  挙動が意味不明

 マジカルなことやりがち
良いフレームワークとは?
読むコードが最小
(共同開発のために)
 → 薄いフレームワーク

安全であること
 → 信頼性設計
読むコードが最小
だいたいフレームワークは
  結局ハマって
  全部コード読む
だいたいフレームワークは
  結局ハマって
  全部コード読む
 → 学習コスト増大
フレームワークのコードは
  マジカルすぎて
   意味不明
フレームワークのコードは
  マジカルすぎて
    意味不明
→ 読むと Perl に詳しく
フレームワークのコードは
  マジカルすぎて
    意味不明
→ 学習コスト アゲ♂アゲ
ある prepan.org 作者のつぶやき

「○○っていうフレームワークつかってるん
だけど、もう嫌なんだよね。
 フルスタックなんだけどドキュメントよくわ
からないし。
 中身読もうとすると意味不明だし」
薄いフレームワークが良い
      ↑
    良くいう
薄いフレームワーク
を極める
何も実装がない
フレームワーク
どういうこと?
限りなく薄いフレームワークとは
       ↓
     設計指針

      ● 安全
      ● 読むコード最小
フレームワークは
実装ではなく設計指針

共同開発に必要なのは
 共通の実装ではなく
  共通の設計指針
僕の考える設計指針=フレームワーク

   安全 (信頼性設計)
 読むコード最小 (メンテコスト)
信頼性設計
危険なことをするために
 より多くのコストが
 必要になるように
例: 最低限必要なXSS対策
デフォルトで HTML エスケープ

[% req.param('query') %]


危ないことをしようとするときは手間をかける

[% req.param('query') | raw %]
読むコード最小
3
       DRY

  3回コピペしたら抽象化しろ
(不必要な/下手クソな抽象化は悪)
設計例: Hatena Blog
長期的に開発することを念頭に

     柔軟性
新機能を加えるときに読むべき
   コードを最小化
    信頼性設計
柔軟性と
 読むべきコードの最小化を
  同時に達成しようとすると
ドメイン特化にならざるを得ない
安全で最小限な実装を
プロジェクト内に持つ

設計指針を明確にする
僕の考える設計指針=フレームワーク
                    再掲

   安全 (信頼性設計)
 読むコード最小 (メンテコスト)
設計指針

  安全 (信頼性設計)
読むコード最小 (メンテコスト)
  早い (ユーザ体験)
ディスパッチャ
Plack + Router::Simple + α

ビュー
Text::Xslate, JSON:XS, etc...

DBアクセス
DBI生 + SQL::NamedPlaceholder
(DBアクセスはコストがかかるので面倒にしとく)
既存実装(Ridge)を使わなかった理由
 → 安全じゃなかったら
 → テストも十分ではなかった

安全にする
テストを十分に

+ app.psgi から
あっちこっちいかずに読み下せるように
安全策
HTML出力時
自動エスケープ
 → XSS対策
POST時にトークン自動チェック
     → CSRF対策
JSON出力時
     XMLHtmlRequestの
X-Requested-Withを自動チェック
→ IE XSS 対策 / UTF-7攻撃対策 / JSON読み出し対策
自動で
X-Frame-Options: DENY
→ クリックジャッキング対策
iframeでロードされたフォームでは
 何か変更されないと submit 不可
   → クリックジャッキング対策
  (どうしても iframe 使う場合のフォールバック)
自動でできるだけ安全に
適切なデフォルトを設定
テスト
テストが大量にあってもメンテしない

レイヤー(Appとか)を増やすとテストが増える
       読むコードが増える

              ↓

       最小限の構成
      Model + Controller
Model のテスト
   (仕様があまり変わらない)
  ロジックのみ (DBアクセスなし)
    細かい挙動をチェック
カバレッジ重視 (ホワイトボックステスト)
例:

use Test::More;

# ロジックしかないので難しいところなし
my $e = Entry->new({body => '..'});
is_deeply $e->classes, [ ... ];
done_testing;
Controller のテスト
 (しばしば細かい仕様が変わる)
   ディスパッチ → 出力まで
Test::WWW::Mechanize::PSGI
  ユーザの挙動をシミュレート
     (ブラックボックステスト)
例:

use My::Test qw(create_hatena_user mechanize);

# DB アクセスとかはいい感じにしてる
my $user = create_hatena_user();
my $mech = mechanize($user);
my $blog_id = $mech->create_blog_ok;
ok $blog_id;
my $entry_id = $mech->post_entry_ok(blog_id => $blog_id);
ok $entry_id; done_testing;
早い
use DBI;
ORM は
勝手にDBひくな
ORM は
勝手にblessするな
コストがかかることを
便利にしてはいけない
実装
大枠としてはだいたいこんなかんじです
https://github.com/cho45/starter.pl/tree/master/templates/mywebapp

       (スケルトンジェネレータのテンプレートレベルのコード)
まとめ
ぼくのかんがえたさい
きょうのうぇぶあぷり
けーしょんふれーむ
わーく
とはなんだったのか
設計指針
サービス特化の
実装
僕の考えた最強の設計指針
僕の考えた最低限の設計指針

● 安全 (信頼性設計)
● 読むコード最小 (メンテコスト)
● 早い (ユーザ体験)

実装は必要に応じて選び
必要であれば最低限自分で書くのが良い
ご清聴ありがとうございました
  www.lowreal.net

Mais conteúdo relacionado

Mais procurados

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

Mais procurados (20)

目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 

Destaque

Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
hitode909
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Terui Masashi
 

Destaque (20)

SPAと覚悟
SPAと覚悟SPAと覚悟
SPAと覚悟
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
AngularJS2でつまづいたこと
AngularJS2でつまづいたことAngularJS2でつまづいたこと
AngularJS2でつまづいたこと
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
ハードディスクの正しい消去(2015.7)
ハードディスクの正しい消去(2015.7)ハードディスクの正しい消去(2015.7)
ハードディスクの正しい消去(2015.7)
 
Angular2実践入門
Angular2実践入門Angular2実践入門
Angular2実践入門
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2
 
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化
 
64ヶ月オンプレ運用したシステムを aws移行した話
64ヶ月オンプレ運用したシステムを aws移行した話64ヶ月オンプレ運用したシステムを aws移行した話
64ヶ月オンプレ運用したシステムを aws移行した話
 
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
 
「子供がハッカーに興味をもった時に備えて」考える会オープニング
「子供がハッカーに興味をもった時に備えて」考える会オープニング「子供がハッカーに興味をもった時に備えて」考える会オープニング
「子供がハッカーに興味をもった時に備えて」考える会オープニング
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in Scala
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
 
DESNUTRICION EN AFRICA
DESNUTRICION EN AFRICADESNUTRICION EN AFRICA
DESNUTRICION EN AFRICA
 
Je suis libre je m'envole dans les airs1
Je suis libre je m'envole dans les airs1Je suis libre je m'envole dans les airs1
Je suis libre je m'envole dans les airs1
 
SIG-Audio#1 CEDEC2012 ラウドネス関連セッション報告
SIG-Audio#1 CEDEC2012 ラウドネス関連セッション報告SIG-Audio#1 CEDEC2012 ラウドネス関連セッション報告
SIG-Audio#1 CEDEC2012 ラウドネス関連セッション報告
 
Octoplus. cambio gerencial avanzado
Octoplus. cambio gerencial avanzadoOctoplus. cambio gerencial avanzado
Octoplus. cambio gerencial avanzado
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 

Semelhante a ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
 
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
CODE BLUE
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 

Semelhante a ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011 (20)

サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
 
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係Linux daemonとsupervisordの美味しい関係
Linux daemonとsupervisordの美味しい関係
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要
 

Último

Último (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011