'play'에 해당되는 글 2건

  1. 2014.10.20 spray는 멋지군..
  2. 2013.01.30 Play of Scala - import 의 위치

spray는 멋지군..

language/scala 2014.10.20 17:51 posted by dev.bistro

scala 기반에 프레임웍으로는 제일 유명한게 Play Framework.... 나름 몇일몇주를 번역해가며 스터디 한 놈이지만... 선택받지는 못했다. 
 그 외에도 scalatra나, finatra도 있지만 지금 API Platform을 구성하는데는 spray 1.3.1 을 사용중... 얘도 actor 기반이고, 간결하다.


테스트와 성능이슈를 위해서 Route를 다시 한번  Route로 묶음으로서 원하는 요구사항은 몇줄만에 해결

  val mockRoute =

    pathPrefix("mock") {

      parameter('delay.as[Int] ){

        delay => {

          Thread.sleep(delay)

          logger.warn("delay {} millisecond" , delay.toString)

          apiRoute

        }

      }

    }



신고

'language > scala' 카테고리의 다른 글

scala package object  (0) 2014.11.05
scala의 lazy 비용  (0) 2014.10.21
spray는 멋지군..  (0) 2014.10.20
Enum Type을 Slick 에서 사용하기  (0) 2014.10.07
Slick  (0) 2014.10.05
Functional Programming Principles in Scala 끝!  (1) 2013.06.04
TAG play, scala, SPRAY

Play of Scala - import 의 위치

play framework 2013.01.30 16:10 posted by dev.bistro



package controllers
import play.api.mvc.{ Action, Controller }

object Barcodes extends Controller {
  val ImageResolution = 144
  def barcode(ean: Long) = Action {
    import java.lang.IllegalArgumentException
    val MimeType = "image/png"
    try {
      val imageData = ean13BarCode(ean, MimeType)
      Ok(imageData).as(MimeType)
    } catch {
      case e: IllegalArgumentException =>
        BadRequest("Couldn’t generate bar code. Error: " + e.getMessage)
    }
  }
  
  def ean13BarCode(ean: Long, mimeType: String): Array[Byte] = {
    import java.io.ByteArrayOutputStream
    import java.awt.image.BufferedImage
    import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider
    import org.krysalis.barcode4j.impl.upcean.EAN13Bean
    val output: ByteArrayOutputStream = new ByteArrayOutputStream
    val canvas: BitmapCanvasProvider =
      new BitmapCanvasProvider(output, mimeType, ImageResolution,
        BufferedImage.TYPE_BYTE_BINARY, false, 0)
    val barcode = new EAN13Bean()
    barcode.generateBarcode(canvas, String valueOf ean)
    canvas.finish
    output.toByteArray
  }
}


1. import 는 scope을 가진다.  - 펑션 ean13BarCode의 import를 다른 펑션에 위치하면 에러!

2. import 는 사용하기 이전에 선언되어야 한다. 펑션 ean13BarCode의 import를 아래쪽에 위치하면 에러!

3. import를 def '최하단 펑션밖에 선언해도 에러!' - 이건 자바랑 똑같네.

4. barcode의 IllegalArgumentException 는 예외가 발생안하면 import 없어도 no에러! (-_-?)


ps. 또 play하다 scala로 빠진다~ (전에도 ...)

신고
TAG import, play


티스토리 툴바