현재 상황   데스크탑 2.0.2  /  노트북(맥) 2.1.0-RC

최근에 http://www.playframework.com/의 홈페이지 UI가 바뀜과 동시에 play 2.1 정식버전도 릴리즈 되었다.  이번기회에 노트북과 데스크탑의 싱크도 버전도 맞추고, 작업 워크스페이스도 공유하는 작업을 하였다.


1. https://www.dropbox.com/install 에서 client를 설치한다. 내가 원하는 workspace 폴더를 동기화 하고, 맥북도 동시에 동기화 해준다. 그 다음 이 디렉토리를 sublime text 2에서 작업을 진행할 것이다.


2. 데스크탑 play 2.0.2 -> 2.1.0 업그레이드

기존의 play-2.0.2 폴더를 지우고 새로 받은 2.1.0 버전을 압축을 풀고 PATH를 설정한다.

기존 2.0.2 기반의  ${projectHOME}/project/build.properties 파일에서 sbt.version=0.12.0 으로 수정

${projectHOME}/project/plugins.sbt 파일에서  addSbtPlugin("play" % "sbt-plugin" % "2.1.0") 으로 수정

TIP] 이 부분은 아래의 에러 로그를 보고 직접 확인한 다음 작업할 수 있었다.

[info] Loading project definition from D:\dropbox\work\products\project

[warn]  module not found: play#sbt-plugin;2.0.2

[warn] ==== typesafe-ivy-releases: tried

[warn]   http://repo.typesafe.com/typesafe/ivy-releases/play/sbt-plugin/scala_2.9.2/sbt_0.12/2.0.2/ivys/ivy.xml

[warn] ==== sbt-plugin-releases: tried

[warn]   http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/play/sbt-plugin/scala_2.9.2/sbt_0.12/2.0.2/i

vys/ivy.xml

[warn] ==== local: tried 


다시, play 를 실행해보면 잘 작동 된다.


3. 노트북 (맥)  2.1.0-RC1 -> 2.1.0 

기존의 2.1.0-RC를 지우고 2.1.0 정식버전을 설치하고 .profile을 수정해준다.

${projectHOME}/project/2개의 파일은 수정하지 않아도 된다 (왜냐하면 우리는 이 파일을 dropbox에 올려놓고 싱크를 해놓고 있기 때문이다)



문서를 똑바로 읽자. 이미... 해당 문서가 잘 정리되어 있다...T_T

http://www.playframework.com/documentation/2.1.0/Migration

그리고 2.1 에 들어서 모듈화가 ... -"-

appDependencies 쪽의 수정이 필요하다.  (javacCore 같은 예약어를 쓸수도 있다...)


난 이렇게 선언

    val appDependencies = Seq(

      "net.sf.barcode4j" % "barcode4j" % "2.0",

       "mysql" % "mysql-connector-java" % "5.1.18",

       "org.squeryl" % "squeryl_2.9.0-1" % "0.9.5",

       javaCore, javaJdbc, javaEbean 

    )


case class 2번째 이야기.

language/scala 2013.02.06 14:17 posted by dev.bistro

http://korean-nerdism.blogspot.kr/2012/12/scala-pattern-matching-case-class.html?spref=tw 를 보고 '아차' 놓친게 있나 보다.


CaseClassExample.scala

case class ClassExample(message: String)


ClassExample.scala

class ClassExample(message: String)

두개의 파일을 작성하고,  scalac 로 class파일을 생성하였다.


결과는 총 3개의 class파일이 나온다. CaseClassExample$ 가 컴패니언 클래스의 output으로 보인다. (마치 자바의 inner class처럼 $를 달고 

            1,481 CaseClassExample$.class

            3,901 CaseClassExample.class

              642 ClassExample.class


javap의 결과는 

C:\MyProject>javap ClassExample CaseClassExample$ CaseClassExample

Compiled from "ClassExample.scala"

public class ClassExample extends java.lang.Object{

    public ClassExample(java.lang.String);

}


Compiled from "CaseClassExample.scala"

public final class CaseClassExample$ extends scala.runtime.AbstractFunction1 implements scala.Serializable{

    public static final CaseClassExample$ MODULE$;

    public static {};

    public final java.lang.String toString();

    public CaseClassExample apply(java.lang.String);

    public scala.Option unapply(CaseClassExample);

    public java.lang.Object apply(java.lang.Object);

}


Compiled from "CaseClassExample.scala"

public class CaseClassExample extends java.lang.Object implements scala.Product,scala.Serializable{

    public static scala.Function1 andThen(scala.Function1);

    public static scala.Function1 compose(scala.Function1);

    public java.lang.String message();

    public CaseClassExample copy(java.lang.String);

    public java.lang.String copy$default$1();

    public java.lang.String productPrefix();

    public int productArity();

    public java.lang.Object productElement(int);

    public scala.collection.Iterator productIterator();

    public boolean canEqual(java.lang.Object);

    public java.lang.String _1();

    public int hashCode();

    public java.lang.String toString();

    public boolean equals(java.lang.Object);

    public CaseClassExample(java.lang.String);

}



companion class file 에서는 apply, unapply 가 보이고 original class file 에서는 copy, andThen등의 몇가지 메소드가 추가적으로 보임을 알 수 있다. 

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

Functional Programming Principles in Scala 끝!  (1) 2013.06.04
Scala Tuple  (0) 2013.03.12
2.10을 위한 scala-ide plugin 재설치  (0) 2013.03.12
case class 2번째 이야기.  (0) 2013.02.06
Play framework IDE, Scala Build Sublime  (0) 2013.02.06
case class  (0) 2012.07.19

Play framework IDE, Scala Build Sublime

language/scala 2013.02.06 11:23 posted by dev.bistro


기존에는 STS(eclipse) 에 scala plugin 을 깔아서 사용하였다. 

하지만, view template들의 자동 빌드와, class not found 에러는 눈에 거슬리는 이슈이다.

대부분의 개발자가 이러한 문제로 있네요 auto build를 끄고 단순한 에디터로 사용을 할텐데, 그럴꺼면 무거운 STS를 쓸필요가 없는듯하고 , sublime 으로 개발해보기로 한다.


sublime text 2 : http://www.sublimetext.com/2


#1.  play framework , scala plugin 설치


play 2 sublime plugin : https://github.com/guillaumebort/play2-sublimetext2 

설치방법은 : https://github.com/guillaumebort/play2-sublimetext2#mac 참 쉽죠?


SIDE

http://blog.hugeaim.com/2012/03/22/use-sublime-text-2-for-scala-development/ 처럼 sublime에 scala plugin을 깔 수 있지만, 위의것이 나와 맞는다고 생각하였다.(Ok템플릿이나, routes, conf파일도 하이라이팅 해준다)


#2. scala build

play for scala 를 공부하다 보면 scala 만 공부해야 하는 경우도 있는데 sublime에 Scala Build System을 추가해보자.

Menu - Tools - Build System - New Build System 을 선택한후

{

"cmd": ["~/scala/scala", "$file_name"]

}


작성한후 저장한다 [ SublimeHome/Data/Packages/Default/scala.sublime-build ]


그 이후 Ctrl+B 를 누르면 결과를 Console View에서 확인 할 수 있다.


(계속 작성)



#4 Tip

http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/ 

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

Functional Programming Principles in Scala 끝!  (1) 2013.06.04
Scala Tuple  (0) 2013.03.12
2.10을 위한 scala-ide plugin 재설치  (0) 2013.03.12
case class 2번째 이야기.  (0) 2013.02.06
Play framework IDE, Scala Build Sublime  (0) 2013.02.06
case class  (0) 2012.07.19


티스토리 툴바