https://www.scala-sbt.org/release/docs/Installing-sbt-on-Windows.html

 

sbt Reference Manual — Installing sbt on Windows

Installing sbt on Windows Install JDK Follow the link to install JDK 8 or 11. Installing from a universal package Download ZIP or TGZ package and expand it. Windows installer Download msi installer and install it. Installing from a third-party package Note

www.scala-sbt.org

인스톨 버전과 패키지 버전이 있으며, 패키지 버전은 압축을 푼 후 해당경로의 bin디렉토리를 환경변수로 등록해줘야 한다.

 

jdk8 이상 설치.

 

 

'Scala' 카테고리의 다른 글

인텔리J에서 스칼라 환경 세팅  (0) 2019.12.20

implicit라는 것은 "암시적"이라고 하는 것인데, 선뜻 그 쓰임새가 쉽게 이해되지 않는다.

 

파라미터 측면으로 보자면, 파라미터를 넣지 않아도 자동으로 세팅되어 들어간다는 뜻인데,

암시적으로 들어갈 파라미터를 어딘가에 미리 만들어 놓고 컴파일러가 이를 찾아 적용한다.

 

class MyTest1(val  tell : String)

class MyTest2(val tell : String)



object Greeter {

def greet (name : String) ( implicit  test  : MyTest1 ,  test2 : MyTest2 ) {

		println(name)

		println(test.tell)

		println(test2.tell)  

    }

}

object HamaPrefs {

	implicit val test = new MyTest1 ("삐약")

	implicit val test2 = new MyTest2 ("개굴")

}



출처: https://hamait.tistory.com/605?category=79134 [HAMA 블로그]

Greeter.greet("Tiger") 단일 파라미터를 던져도 나머지 암시적 파라미터를 찾아 작동한다.

 

Play2에서 다국어 메시지를 이용한다고 가정해보자.

 

내가 여기저기 검색하며 써 본 방식은 아래 코드였다.

class Products @Inject() (val controllerComponents: ControllerComponents)(langs: Langs, messagesApi: MessagesApi) extends BaseController{

 def show(ean: Long) = Action { implicit request =>

    val availableLangs: Seq[Lang] = langs.availables.filter(_ == Lang("en"))
    println("availableLangs :" + availableLangs)

    val messages = messagesApi.preferred(availableLangs)

    Product.findByEan(ean).map { product =>
      Ok(views.html.products.details(product)(messages))
    }.getOrElse(NotFound)

  }	
}

detail.scala.html 의 내용

@(product: Product)(messages: Messages)

  <h2>
    제품상세 - @messages.messages("product.details")
  </h2>
  
 =============================================== 

(참고) messagesApi.preferred(request) 로 세팅해서 넘기면 locale에 따라 자동으로 해당 언어의 메시지로 출력 될 것이다.

 

이렇게 메소드별로 번번이 파라미터로 전달해야 할까~~~

그래서 implicit가 필요하다.

class Products @Inject() (val controllerComponents: ControllerComponents)
  (langs: Langs, messagesApi: MessagesApi) 
  extends BaseController 
  with I18nSupport{

  def show(ean: Long) = Action { implicit request =>

    Product.findByEan(ean).map { product =>
      Ok(views.html.products.details(product))
    }.getOrElse(NotFound)

  } 
}


detail.scala.html

@(product: Product)(implicit messages: Messages)

with I18nSupport 를 선언하여 Products Action이 수행되는 뷰에서 messages를 implicit로 호출하면 된다.

I18nSupport은 trait (자바의 인터페이스 + 추상클래스) 인데, MessagesApi를 멤버 메소드로 가지고 있다.

 

play2의 2.8.x 로 개발하고 있기에 다른 버전에서 api사용에 대한 차이가 있을 수 있음.

'Play2' 카테고리의 다른 글

play2-pager 샘플 소스 구동기  (0) 2020.01.06
[play2] Intellij 인코딩 세팅  (0) 2019.12.26

conf/messages 에 한글 메시지를 정의하면 깨지는 경우 발생.

 

product.food = 과자

 

���� 요렇게...

 

다음과 같이 인텔리j의 인코딩 설정을 바꿔주고 리빌드 해본다.

 

 

한글이 잘 표시되는 것을 볼 수 있다.

'Play2' 카테고리의 다른 글

play2-pager 샘플 소스 구동기  (0) 2020.01.06
[play2] play와 implicit 그리고 message  (0) 2019.12.27

1. settings -> plugins 에서 "scala" , "sbt executor" 검색해서 설치해준다. (2.13버전이 설치되었으며 jdk는 11버전을 사용)

 

다른 세팅은 해준 것이 없다.

 

2. file -> new -> project -> Scala -> sbt 의 순서로 진행하여 스칼라 프로젝트 생성.

 

디펜던시 때문에 초기 세팅시간이 오래걸린다. 

 

scala class 파일과 scala worksheet가 있는데 , 

간단한 문법 테스트는 worksheet를 생성해서 진행하자. 하지만 , Source.fromFile을 이용한 파일읽기 등 테스트를 할때는 scala 클래스 파일에서 진행하여야 한다. 왜 그런지는 모름.  

'Scala' 카테고리의 다른 글

sbt 설치  (0) 2020.01.06
var myObj = { 
  myText: "hi!",
  myFunc: function(){
    setTimeout(function(){
      console.log(this.myText);
    }, 1000)
  },
  myFunc2: function(){
    setTimeout(()=>console.log(this.myText), 1000);
  }
};

myObj.myFunc(); // undefined
myObj.myFunc2(); // "hi!"

 

myFunc2의 화살표 함수 () => 는 this가 바인딩되지 않기 때문에 상위 스코프인 myObj의 this를 바라본다.

반면 myFunc는 익명함수를 사용하여 undefined.

 

 

참조 : https://www.a-mean-blog.com/ko/blog/%ED%86%A0%EB%A7%89%EA%B8%80/_/Javascript-%ED%99%94%EC%82%B4%ED%91%9C-%ED%95%A8%EC%88%98-Arrow-Functions

'자바스크립트 > Javascript 참고자료' 카테고리의 다른 글

정규표현식 정리  (0) 2019.11.21
jQuery 테이블 셀병합 (rowspan)  (0) 2019.11.19
[ES6] for ~ of의 활용  (0) 2018.12.27
[ES6] ES6 , let과 const  (0) 2018.12.27
[ES6] spread operator와 from 메소드  (0) 2018.12.27

1. DAMO라는 유저생성.

CREATE USER DAMO  IDENTIFIED BY damo123 DEFAULT TABLESPACE GOOMS

 

2. 권한 설정 (개별)

  GRANT CONNECT, RESOURCE TO DAMO  ;
  GRANT CREATE PROCEDURE TO DAMO  ;  
  GRANT CREATE TABLE TO DAMO  ;
  GRANT DBA TO DAMO  DAMO WITH ADMIN OPTION;

 

모든 권한 한번에

 GRANT CONNECT,DBA, RESOURCE TO DAMO  WITH ADMIN OPTION;

'오라클' 카테고리의 다른 글

[오라클] 세션 LOCK 킬  (0) 2021.02.25
관리툴 DBeaver 설치하기  (0) 2020.01.20
토드(TOAD) 단축키 정리  (0) 2019.11.13

stream 에서 filter, map, flatmap 을 사용한 샘플 코드입니다

String[][] arrays = new String[][]{ {"a1", "a2"}, {"b1", "b2"}, {"c1", "c2", "c3"} };
Stream<String[]> stream6 = Arrays.stream(arrays);
Stream<String> stream7 = stream6.flatMap(s -> Arrays.stream(s));
stream7.filter(s-> s.startsWith("a"))
        .map(String::toUpperCase).forEach(System.out::println);

결과

A1

A2

1. 콤마( . )
. 
 어떤 문자 1개를 가리킨다. ( "줄바꿈 문자(\n)" 제외)
====================================
표현식 h.t
문자열 hat halt hitheat hot
====================================
표현식 h..t
문자열 hathalt hit heathot
====================================

2. 대괄호 [ ]
[ ] 
 안에 있는 문자중 하나를 가리킨다.
[abc] a,b,c 
 하나
[a-z] 
알파벳 소문자  하나
[0-9] 
숫자  하나
[a-zA-Z] 
알파벳 소문자나 대문자  하나
====================================
표현식 h[aiu]t
문자열 hat het hithot hut
====================================

3. 대괄호와 캐럿 [^ ]
[^ ] 
 안에 있는 문자를 제외한 문자중 하나를 가리킨다.
[^abc] a,b,c 
이외의 문자  하나
[^a-z] 
알파벳 소문자 이외의 문자  하나
[^0-9] 
숫자 이외의 문자  하나
[^a-zA-Z] 
알파벳 소문자나 대문자 이외의 문자  하나
====================================
표현식 h[^aiu]t
문자열 hathet hit hothut
====================================

3. 별표( * )
* 
 바로 앞에 있는 문자가 0또는  이상 반복되는 것을 가리킨다.
====================================
표현식 ha*t
문자열 ht hit hathot haat hut haaaaat
====================================

4. 플러스(+)
+ 
 바로 앞에 있는 문자가 1 또는  이상 반복되는 것을 가리킨다.
====================================
표현식 ha+t
문자열 ht hit hat hot haathut haaaaat
====================================

5. 물음표( ?)
? 
 바로 앞에 있는 문자가 0또는 1 반복되는 것을 가리킨다.
====================================
표현식 ha?t
문자열 ht hit hathot haat hut haaaaat
====================================

6. {n}
{n} 
 바로 앞에 있는 문자가 n 반복되는 것을 가리킨다.
====================================
표현식 ha{2}t
문자열 ht hit hat hot haat hut haaaaat
====================================

7. {n,}
{n,} 
 바로 앞에 있는 문자가 n 이상 반복되는 것을 가리킨다.
{0,} 별표(*) 같은 의미이다.
{1,} 더하기(+) 같은 의미이다.
{0,1} 물음표(?) 같은 의미이다.
====================================
표현식 ha{2,}t
문자열 ht hit hat hot haat hut haaaaat
====================================

8. {n,m}
{n,m} 
 바로 앞에 있는 문자가 n 이상, m 이하 반복되는 것을 가리킨다.
====================================
표현식 ha{2,4}t
문자열 ht hat haat haaat haaaat haaaaat
====================================

9. 캐럿( ^)
^ 
 줄의 제일 처음(시작위치) 가리킨다.
====================================
표현식 ^h.t
문자열 hat hit hot
====================================

10. 달러( $)
$ 
 줄의 제일 마지막( 위치) 가리킨다.
====================================
표현식 h.t$
문자열 hat hit hot
====================================



11. Group ( )
특정 패턴을 묶어서 반복 기호등과 함께 사용.

여러 문자 중 하나만 선택적으로 매칭하고자 할 때 사용.
====================================
표현식 ba(na)*
문자열 ba na banabanana nana bananana
====================================
====================================
표현식 ba(na)+

문자열 ba na bana banana nana bananana
  ba na wow wow nana wow
====================================


12. 선택 지정 ( | )
괄호로 묶인 그룹 내에서 | 으로 나뉘어진 여러 개의 패턴  하나와 일치하는 것을 가리킨다.
====================================
표현식 (eg|sa|be)g
문자열 egg eng sag sig beg bag
====================================

13. Group 참조 \숫자
Group
으로 지정된 내용을 뒤에 \숫자의 형식으로 재 사용하는데 사용.
====================================
표현식 (h.t)\1
문자열 hathat hitbit hothot hutcut
====================================

14. 반복 문자 탐지  Greedy, Lazy
반복 문자 개수를 지정하는 방법은 크게 Greedy방식과 Lazy방식으로 나뉘어진다.
Greedy
 방식은 가능한 최대의 것을 선택하고, Lazy방식은 가능한 최소의 것을 선택한다.
Greedy
 방식뒤에 ? 붙이면 Lazy방식이 된다.

-Greey 방식
====================================
표현식 <.*>
문자열 Regex <b>Greedy</b> Style
====================================
-Lazy
방식

====================================
표현식 <.*?>
문자열 Regex<i>Lazy</i> Style
====================================
- 
사용 

==================
Greedy | Lazy
==================
* | *?
+ | +?
? | ??
{n} | {n}?
{n,} | {n,}?
{n,m} | {n,m}?
==================

15.주요 Escape 문자 목록
\t 
 문자, Tab, \u0009
\r 
 바꿈 문자, Carriage Return, \u000D
\n 
 바꿈 문자, Line Feed, \u000A
\s 
공백 문자, White-Space Character, \t \r \n 스페이스 포함
\S \s
 이외의 문자
\d 
숫자, [0-9]  같은 의미
\D \d
 이외의 문자, [^0-9]  같은 의미
\w Word Character, [a-zA-Z0-9_]
  한글 일본어 중국어 등의 유니코드 문자 포함
\W \w
 이외의 문자
\b [ ]
 안에서 사용될 때는 백스페이스 문자, Backspace, \u0008
[ ]
 밖에서 사용될 때는 \w  \W 사이의 경계, Word Boundary
  Pattern에서 사용될 때는 항상 백스페이스 문자
\\ \
 문자 자체를 가리킬  사용
비슷한 사용법 \. \* \+ \? \^ \$ \( \) \{ \} \[ \]
\u0020 16
진수 Unicode 문자, 항상 4자리로 사용
\x20 16
진수 ASCII 문자, 항상 2자리로 사용

+ Recent posts