0503 - 0509


# 0503 - 0509

# 0503 - git ์ž๊ฐ€์ ๊ฒ€

# git ์ž๊ฐ€์ ๊ฒ€

# ๋ฒ„์ „ ๊ด€๋ฆฌํ•˜๊ธฐ

โœ… ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””/์ด๋ฉ”์ผ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git config user.name ์•„์ด๋””
    git config user.email ์ด๋ฉ”์ผ์ฃผ์†Œ
    -local, -global
โœ… ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””/์ด๋ฉ”์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
โœ… ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊นƒ ์ €์žฅ์†Œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๊ฐ€? 
    git init
โœ… ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git status
โœ… ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git log
โœ… ์Šคํ…Œ์ด์ง•์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git add ํŒŒ์ผ์ด๋ฆ„.ํ™•์žฅ์ž
โœ… ์ปค๋ฐ‹์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? 
    git commit -m "message"
โœ… ์Šคํ…Œ์ด์ง•๊ณผ ์ปค๋ฐ‹์„ ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git commit -am "message"
โœ… ์ปค๋ฐ‹/์Šคํ…Œ์ด์ง•์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git reset HEAD^
โœ… ์ž‘์—… ํŠธ๋ฆฌ์—์„œ์˜ ์ˆ˜์ • ๋‚ด์—ญ๋„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? 
    git restore ํŒŒ์ผ์ด๋ฆ„.ํ™•์žฅ์ž
    git checkout ํŒŒ์ผ์ด๋ฆ„.ํ™•์žฅ์ž

# branch

โœ… (ํ•ด๋‹น ์ €์žฅ์†Œ ๋‚ด์—์„œ) ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? 
    git branch
โœ… ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git branch ๋ธŒ๋Ÿฐ์น˜
โœ… ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? 
    git log --oneline
โœ… ๋ธŒ๋žœ์น˜ ๋กœ๊ทธ ๊ทธ๋ž˜ํ”„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git log --oneline --branches --graph
โœ… ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git checkout ํ•ด๋‹น๋ธŒ๋Ÿฐ์น˜
โœ… master ๋ธŒ๋žœ์น˜์— ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git merge ๋ณ‘ํ•ฉ ๋Œ€์ƒ ๋ธŒ๋Ÿฐ์น˜
โœ… ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    ์ง์ ‘ ์ถฉ๋Œ ํ•ด๊ฒฐ, ํŒŒ์ผ ์ˆ˜์ • ํ›„ ์ปค๋ฐ‹

# remote ์ €์žฅ์†Œ

โœ… ๊นƒ๊ณผ ๊นƒํ—ˆ๋ธŒ์˜ ์ฐจ์ด์ ์„ ์•„๋Š”๊ฐ€?
    git : ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
    github : git์„ ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ
โœ… ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git remote add origin ์›๊ฒฉ์ฃผ์†Œ
โœ… ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git remote -v
โœ… ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ pushํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git push origin ๋ธŒ๋Ÿฐ์น˜
โœ… ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ pullํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git pull origin master
    git pull
โœ… ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ๋งŒ๋“  ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
โœ… ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git pull
    git checkout -b ๋ณ€๊ฒฝ๋Œ€์ƒ ๋ธŒ๋Ÿฐ์น˜ ์›๋ž˜ ๋ธŒ๋Ÿฐ์น˜
    git checkout -t ์›๋ž˜ ์›๊ฒฉ ๋ธŒ๋Ÿฐ์น˜
โœ… pull๊ณผ fetch์™€ merge์˜ ์ฐจ์ด์ ์„ ์•„๋Š”๊ฐ€? 
    pull == fetch + merge
    => git fetch => git checkout FETCH_HEAD => git merge FETCH_HEAD
โœ… pull-request๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    github
โœ… ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•ด ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    git clone ์ฃผ์†Œ
โœ… fork์— ๋Œ€ํ•ด ์ดํ•ดํ–ˆ๋Š”๊ฐ€? 

# 0504 - JPA๋กœ ์ธ๋ฑ์Šค ์‚ฌ์šฉ

# JPA๋กœ ์ธ๋ฑ์Šค ์‚ฌ์šฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ๊ฑด๋ฌธ ์กฐํšŒ์‹œ, ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ full scan, ๋น„ํšจ์œจ์  ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ” ํ™œ์šฉ(B-Tree ์ž๋ฃŒ๊ตฌ์กฐ)
O(n) => O(logn) ์‹œ๊ฐ„๋ณต์žก๋„

@NoArgsConstructor(access = PROTECTED)
@AllArgsConstructor
@Getter
@ToString
@EqualsAndHashCode(of = "userSeq")
@DynamicUpdate
@Entity
@Table(name = "users",
        // ์ธ๋ฑ์Šค ์„ค์ •
       indexes = {
               @Index(name = "users_email_idx", unique = true, columnList = "email"),
               @Index(name = "users_nickname_idx", unique = true, columnList = "nickname"),
               @Index(name = "users_user_type_idx", columnList = "user_type"),
               @Index(name = "user_deleted_active_idx", columnList = "deleted,active")
       }
)
public class Users extends BaseEntity {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "user_seq", updatable = false, nullable = false)
    private Long userSeq;
    ...
}

๊ฒฐ๋ก  ๋ฐ์ดํ„ฐ ์กฐํšŒ์‹œ ์†๋„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€๋งŒ
์ธ๋ฑ์Šค๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์„ค์ •์‹œ ์ž์ฒด๋งŒ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ณ , ํ…Œ์ด๋ธ”์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค ์ •๋ ฌ ์ˆœ์„œ๋„ ๋งค๋ฒˆ ์ˆ˜์ •์ด ๋˜์–ด์•ผํ•˜๋ฏ€๋กœ ๋น„ํšจ์œจ์„ ๋‚ณ๋Š”๋‹ค.

๋ณตํ•ฉ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ ๊ฐฏ์ˆ˜๋Š” 3~4๊ฐœ๊ฐ€ ์ ๋‹นํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฅผ๋•Œ์—๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ๊ณ ๋ฅด๋Š”๊ฒŒ ํšจ์œจ์ ์ด๋‹ค.

B-Tree๋Š” LIKE ๊ฒ€์ƒ‰์œผ๋กœ ์ค‘๊ฐ„์ผ์น˜, ํ›„๋ฐฉ์ผ์น˜ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฐฉํƒ์ƒ‰(full-text)์ด ์•„๋‹ˆ๋ผ๋ฉด, ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ƒ‰์˜ ํšจ์œจ์„ ๋†’์ด๋Š”๊ฒŒ ์ข‹๋‹ค.


# 0505 - JPA ํŠน์ • type ์ •์˜

# JPA ํŠน์ • type ์ •์˜

# Spring Data JPA ๊ธฐ๋ฐ˜์ด ๋˜๋Š” Hibernate์˜ type์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ vladmihalcea์˜ hibernate-types๋ฅผ ์ถ”๊ฐ€

<dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>2.10.1</version>
</dependency>

# TypeDef ์ถ”๊ฐ€

  • jsonb
package me.oofbird.jpa

import org.hibernate.annotations.TypeDef; 
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; 

import javax.persistence.*; 

@Entity 
@Table(name = "TB_TEST") 
@TypeDef(
    name = "jsonb", 
    typeClass = JsonBinaryType.class) 
public class TestTable { 
    ...
    @Type(type = "jsonb") 
    @Column(name = "JSON_TEXT", columnDefinition = "jsonb") 
    private JsonPOJOObject jsonText; 
    ...
}
  • list-array
@Entity
@Table(name = "TB_TEST") 
@TypeDef(
    name = "list-array",
    typeClass = ListArrayType.class
)
public class TestTable {
    ...
    @Type(type = "list-array")
    @Column(name = "LIST-ARRAY", columnDefinition = "int[]")
    private List<Integer> listText = new ArrayList<>();
    ...
}

# 0506 - ํŒŒ์ผ์† ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

grep [option] pattern [file]

# ์˜ต์…˜

  • -c : ๋งค์นญ๋œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋งค์นญ๋œ ํ–‰์˜ ์ด ๋ผ์ธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • -i : ๋งค์นญ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • -l : ํŒจํ„ด์— ๋งค์นญ๋œ ๋ผ์ธ์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„๋งŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • -n : ํŒŒ์ผ ๋‚ด์—์„œ ๋งค์นญ๋œ ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•œ๋‹ค.
  • -s : ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์™ธ์—๋Š” ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • -v : ํŒจํ„ด๊ณผ ๋งค์นญ๋˜์ง€ ์•Š๋Š” ํ–‰๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.
  • -w : <์™€ >๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ํŒจํ„ดํ‘œํ˜„์„ ํ•˜๋‚˜์˜ ๋‹จ์–ด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

# ์ •๊ทœํ‘œํ˜„์‹ ๋ฉ”ํƒ€ ๋ฌธ์ž

  • ^ : ํ–‰์˜ ์‹œ์ž‘ ์ง€์‹œ์ž ex) ^joon : joon์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ–‰์„ ์ถœ๋ ฅํ•จ
  • $ : ํ–‰์˜ ๋ ์ง€์‹œ์ž ex) joon$ : joon์œผ๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ํ–‰์„ ์ถœ๋ ฅํ•จ.
  • . : ํ•˜๋‚˜์˜ ๋ฌธ์ž์™€ ๋Œ€์‘
    ex) j..n : ์ด 4๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด ์ค‘์— ์ฒ˜์Œ ๋ฌธ์ž๋Š” j ๋๋ฌธ์ž๋Š” n์œผ๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์˜ ํ–‰์„ ์ถœ๋ ฅํ•จ
  • * : ๋งค์นญ๋˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฌธ์ž์— ๋Œ€ํ•ด ๋งค์นญ ex)joo* : joo, joon, jooo, jood, joon0312 ์ „๋ถ€ ๋งค์นญ
  • [] : [ ]์•ˆ์— ๋ฌธ์ž ์ค‘ ์–ด๋–ค ํ•˜๋‚˜๋ผ๋„ ๋งค์นญ ex) joo[n,d,o] : joon, jood, jooo ๋งค์นญ

# 0507 - Java11

# Oracle Java Support RoadMap

roadmap

# 1. ๋žŒ๋‹ค ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ„ํ•œ ์ง€์—ญ๋ณ€์ˆ˜ ํ‘œํ˜„

java 10๋ฒ„์ „์—์„œ ํŽธ๋ฆฌํ•œ var ๊ตฌ๋ฌธ์ด ์ƒ๊ฒจ๋‚œ ์ƒํ™ฉ์—์„œ, 11๋ฒ„์ „์—์„œ๋Š” ๋žŒ๋‹ค ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ var๋ฅผ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ

list.stream()
    .map((@NotNull var s) -> s.toLowerCase())
    .collect(Collectors.toList());

# 2. HTTP Client (Standard)

  • Non-Blocking request and response ์ง€์› (with CompletableFuture)
  • Backpressure ์ง€์›(java.util.concurrent.Flow ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด Rx Flow๋ฅผ ๊ตฌํ˜„์ฒด์— ์ ์šฉ)
  • Factory method ํ˜•ํƒœ๋กœ ์ง€์›
  • HTTP/2 ์ง€์›
  • Sptring5์—์„œ๋Š” Rest Client์— RestTemplate ๋Œ€์‹  WebClient๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๊ตฌํ˜„ ๊ฐ€๋Šฅ.
    => ๊ธฐ์กด ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๋ฐฉ์‹์„ ๋ฒ„๋ฆฌ๊ณ  Reactor(WebFlux) ์™€ ํ•จ๊ป˜ ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์›น์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ๊ทธ์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ ํ–ฅ์ƒ์€ ์–ด๋งˆ์–ด๋งˆ ํ•ฉ๋‹ˆ๋‹ค.

# 3. ๋ชจ๋“ˆ

  • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋” ์ ๊ฒŒ ์‚ฌ์šฉ
  • ํŠนํžˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ์œ ์šฉ
  • ๋Ÿฐํƒ€์ž„์ด ๋” ์ž‘์•„์ง€๊ณ , ๋”๊ฐ€๋ฒผ์›Œ์ ธ์„œ ๋” ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘
  • ๊ฐ•๋ ฅํ•œ ์บก์Šํ™”๋ฅผ ์ ์šฉ

# 4. ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ ์ง„๋‹จ

# Java Flight Recorder

์‹คํ–‰ ์ค‘์ธ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ง„๋‹จ ๋ฐ ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, Java 11์—์„œ๋Š” ๋‘˜๋‹ค ์˜คํ”ˆ ์†Œ์Šค

# Java Mission Control

  • JFR ๋ฐ JMC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, GC ์˜ค๋ฒ„ํ—ค๋“œ, ํ•ซ ๋ฉ”์„œ๋“œ ์Šค๋ ˆ๋“œ ๋ณ‘๋ชฉ ์ƒํƒœ ๋ฐ I/O ๋ธ”๋กœํ‚น๊ณผ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จ

# ํ†ตํ•ฉ ๋กœ๊น…

# ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋‚ฎ์€ ํž™ ํ”„๋กœํŒŒ์ผ๋ง

# StackWalker

# 5. ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘

  • Java 11์˜ ๊ธฐ๋ณธ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋Š” G1GC(๊ฐ€๋น„์ง€ ์šฐ์„  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ)
  • ZGC๋Š” ์ผ์‹œ ์ค‘์ง€ ์‹œ๊ฐ„์„ 10ms ๋ฏธ๋งŒ์œผ๋กœ ์œ ์ง€ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง์€ ๋™์‹œ ์ˆ˜์ง‘๊ธฐ

# ์—ก์‹ค๋ก 

์—ก์‹ค๋ก  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ ํ• ๋‹น๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜์ง€์•Š๋Š”๋‹ค. ํž™์ด ์†Œ์ง„๋˜๋ฉด JVM์ด ์ข…๋ฃŒ

# Docker ์ปจํ…Œ์ด๋„ˆ์˜ ํ–ฅ์ƒ๋œ ๊ธฐ๋Šฅ

Java 10๋ถ€ํ„ฐ JVM์€ ์ปจํ…Œ์ด๋„ˆ ์ œ์–ด ๊ทธ๋ฃน(cgroup)์— ์˜ํ•ด ์„ค์ •๋œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ฌ์šฉ

# 6. ์„ฑ๋Šฅ ํ–ฅ์ƒ


# 0508 - ๋งฅ ํ„ฐ๋ฏธ๋„์—์„œ AWS EC2 ํ„ฐ๋ฏธ๋„ ์ ‘์†

# ํ‚คํŒŒ์ผ ํผ๋ฏธ์…˜ ๋ณ€๊ฒฝ

$ chmod 400 ๊ฒฝ๋กœ/keyfile.pem

# ํ„ฐ๋ฏธ๋„์—์„œ ํ‚คํŒŒ์ผ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ ๋ช…๋ น์œผ๋กœ ssh ์ ‘์†

$ ssh -i ๊ฒฝ๋กœ/keyfile.pem ec2-user@[์„œ๋ฒ„ ์•„์ดํ”ผ ๋˜๋Š” ๋„๋ฉ”์ธ]

# 0509 - jUnit5 ์‚ฌ์šฉ

# ์˜์กด์„ฑ(gradle)

dependencies {
    testCompile('org.junit.jupiter:junit-jupiter:5.7.1')
    testCompile('org.assertj:assertj-core:3.19.0')
}

# ์˜ˆ์ œ

class RefereeTest {
    private static final List<Integer> ANSWER = Arrays.asList(1, 2, 3);
    private Referee referee;

    @BeforeEach
    void setUp() {
        referee = new Referee();
    }

    @ParameterizedTest
    @CsvSource({"1,2,3,0 ๋ณผ 3 ์ŠคํŠธ๋ผ์ดํฌ", "3,1,2,3 ๋ณผ 0 ์ŠคํŠธ๋ผ์ดํฌ", "1,3,2,2 ๋ณผ 1 ์ŠคํŠธ๋ผ์ดํฌ", "7,8,9,์•„์›ƒ"})
    public void compare(int number1, int number2, int number3, String expected) {
        String actual = referee.compare(ANSWER, Arrays.asList(number1, number2, number3));
        assertThat(actual).isEqualTo(expected);
    }

    @Test
    void ์ŠคํŠธ๋ผ์ดํฌ3() {
        String result = referee.compare(ANSWER, Arrays.asList(1, 2, 3));
        assertThat(result).isEqualTo("0 ๋ณผ 3 ์ŠคํŠธ๋ผ์ดํฌ");
    }

    ...
}
  • @Test : ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ์ž„์„ ๋ช…์‹œ
  • @ParameterizedTest : ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํ…Œ์ŠคํŠธ์ž„์„ ๋ช…์‹œ
  • @BeforeEach : ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์˜ ๊ฐ๊ฐ์˜ ๋ฉ”์„œ๋“œ ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.
  • @CsvSource : ์—ฌ๋Ÿฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ,๋กœ ๊ฐ’์„ ๊ตฌ๋ถ„ delimiter ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ
Last update: July 22, 2021 19:09
Contributors: jaesungahn91