The document discusses the Play web framework and how it compares to traditional Java web development using servlets and XML configuration. Play allows building web applications in Java without servlets and XML by embedding the web framework directly into the code using a convention over configuration approach. It also supports features like asynchronous programming and websockets. Several companies that have used Play in production are mentioned.
WebSocket is a new web technology that provides bidirectional communication between a client and server over a TCP connection. It aims to overcome limitations of Ajax techniques like long polling and streaming that used HTTP. The WebSocket API was standardized by the W3C and IETF and is supported in HTML5 browsers through native JavaScript. It enables new types of web applications by facilitating real-time data transfer and interactive experiences.
The document discusses the Play framework. It provides an overview of Play's history and features, including support for hot code reloading, database migrations, and more. It also discusses tools for Play like Playclipse and p6spy. Finally, it covers techniques like dependency injection, jobs, environments, and testing with Play.
The document contains a series of dates from July 1, 2011 repeated multiple times. In between some of the dates is the word "Backlog". There is no other text, numbers, or apparent meaning contained within the document.
論文紹介:「Amodal Completion via Progressive Mixed Context Diffusion」「Amodal Insta...Toru Tamaki
Katherine Xu, Lingzhi Zhang, Jianbo Shi; Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, "Amodal Completion via Progressive Mixed Context Diffusion"CVPR2024
https://openaccess.thecvf.com/content/CVPR2024/html/Xu_Amodal_Completion_via_Progressive_Mixed_Context_Diffusion_CVPR_2024_paper.html
Minh Tran, Khoa Vo, Tri Nguyen, and Ngan Le,"Amodal Instance Segmentation with Diffusion Shape Prior Estimation"ACCV 2024
https://uark-aicv.github.io/AISDiff/
This study aims to develop an interactive idea-generation support system that enables users to consider the potential side effects of realizing new ideas.
In idea generation, confirmation bias often leads to an excessive focus on ``convenience,'' which can result in the oversight of unintended consequences, referred to as the ``side effects of convenience.''
To address this, we explored methods to alleviate user biases and expand perspectives through system-supported dialogue, facilitating a broader consideration of potential side effects.
The proposed system employs a stepwise idea-generation process supported by large language models (LLMs), enabling users to refine their ideas interactively.
By dividing the ideation process into distinct stages, the system mitigates biases at each stage while promoting ideas' concretization and identifying side effects through visually supported dialogues.
Preliminary evaluation suggests that engaging with the proposed system fosters awareness of diverse perspectives on potential side effects and facilitates the generation of ideas that proactively address these issues.
19. Play は Web フレームワークであ
る
• 多すぎる抽象化レイヤーは悪
• Web フレームワークは Web の開発が出来れば
よい
• Web にフォーカスしよう
• HTTP を変に抽象化するのはやめよう
20. Heroku 曰く
• Developers with experience in both Java and Ruby
web development often ask the question: Why is
web app development so complicated in Java, and
so much simpler in Ruby, with Rails?
• Java と Ruby の両方を経験している Web 開発者
はしばしば疑問に思うことがある。なぜ Java
の Web 開発はこんなにややこしいんだ?
Ruby, 特に Rails で開発するとこんなにシンプ
ルなのに。
http://blog.heroku.com/archives/2011/8/29/play/
http://d.hatena.ne.jp/ikeike443/20110830/p1
47. Web フォーカス
• もしあなたが Servlet API や Strtus のような
Java の Web フレームワークを使っているな
らば、 HTTP プロトコルを Java の奇妙な
API やコンセプトで抽象化したビューを使って
きたことになります。
• Web アプリケーションフレームワークは
HTTP とそのコンセプトに対して完全かつ容易
なアクセス手段を提供すべきです。これが Play
とその他の Java web フレームワークの根本的
な違いです。
71. PromiseInvoker の例 (Java)
public static Result index() {
Promise<Integer> promiseOfInt = Akka.future(
new Callable<Integer>() {
public Integer call() {
longComputation();
}
}
);
async(
promiseOfInt.map(
new Function<Integer,Result>() {
public Result apply(Integer i) {
77. テスタビリティ
• テンプレートもただの関数→ View をテスト可
"render index template" in {
val html = views.html.index("Coco")
contentType(html) must equalTo("text/html")
contentAsString(html) must contain("Hello Coco")
}
78. テスタビリティ
• コントローラもテスト可能
"respond to the index Action" in {
val result = controllers.Application.index("Bob")(FakeRequest())
status(result) must equalTo(OK)
contentType(result) must beSome("text/html")
charset(result) must beSome("utf-8")
contentAsString(result) must contain("Hello Bob")
}
79. テスタビリティ
• HTTP サーバを起動して Selenium WebDriver
(FluentLeniumを採用している )
"run in a browser" in {
running(TestServer(3333), HTMLUNIT) { browser =>
browser.goTo("http://localhost:3333")
browser.$("#title").getTexts().get(0) must equalTo("Hello Guest")
browser.$("a").click()
browser.$("#title").getTexts().get(0) must equalTo("Hello Coco")
}
}