https://www.scala-sbt.org/release/docs/Installing-sbt-on-Windows.html
인스톨 버전과 패키지 버전이 있으며, 패키지 버전은 압축을 푼 후 해당경로의 bin디렉토리를 환경변수로 등록해줘야 한다.
jdk8 이상 설치.
'Scala' 카테고리의 다른 글
인텔리J에서 스칼라 환경 세팅 (0) | 2019.12.20 |
---|
https://www.scala-sbt.org/release/docs/Installing-sbt-on-Windows.html
인스톨 버전과 패키지 버전이 있으며, 패키지 버전은 압축을 푼 후 해당경로의 bin디렉토리를 환경변수로 등록해줘야 한다.
jdk8 이상 설치.
인텔리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-pager 샘플 소스 구동기 (0) | 2020.01.06 |
---|---|
[play2] Intellij 인코딩 세팅 (0) | 2019.12.26 |
conf/messages 에 한글 메시지를 정의하면 깨지는 경우 발생.
product.food = 과자
���� 요렇게...
다음과 같이 인텔리j의 인코딩 설정을 바꿔주고 리빌드 해본다.
한글이 잘 표시되는 것을 볼 수 있다.
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 클래스 파일에서 진행하여야 한다. 왜 그런지는 모름.
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.
정규표현식 정리 (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
자바 명명 규칙 - 클래스 / 메서드 / 변수 (0) | 2019.11.13 |
---|---|
NullpointerException은 무엇이며 어떻게 수정할까 (0) | 2019.06.25 |
토비의 봄TV 1회 - 재사용성과 다이나믹 디스패치, 더블 디스패치 정리 (0) | 2017.01.04 |
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자리로 사용
[javascript] 화살표함수와 ()=> this (0) | 2019.12.16 |
---|---|
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 |