์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ๋น„ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… NOCHECK CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;

 

 

 

์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… WITH CHECK CHECK CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;

 

 

 

๋ชจ๋“  ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ํ•œ ๋ฒˆ์— ๋น„ํ™œ์„ฑํ™”/ํ™œ์„ฑํ™”ํ•˜๊ธฐ
-- ๋ชจ๋“  ์ œ์•ฝ ์กฐ๊ฑด ๋น„ํ™œ์„ฑํ™”
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… NOCHECK CONSTRAINT ALL;

-- ๋ชจ๋“  ์ œ์•ฝ ์กฐ๊ฑด ํ™œ์„ฑํ™”
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… WITH CHECK CHECK CONSTRAINT ALL;
์—๋Ÿฌ๋ฉ”์„ธ์ง€ ๋‚ด์šฉ
Module Error (from ./node_modules/eslint-loader/index.js):
error: Use object destructuring (prefer-destructuring) at src\views\mr\BrandPerformance.vue:296:13:
  294 |       const compComboId = '#PRODUCT_BY_RANGE#';
  295 |       const yyyymm = this.query.yyyymm.replace(/-/gi, '');
> 296 |       const prodRangeCd = this.query.prodRangeCd;
      |             ^
  297 |       const rs = await this.compCodeList(compComboId, yyyymm, prodRangeCd);
  298 |       const clsRow = rs.data.resultList;

 

์œ„ ์—๋Ÿฌ๋Š” this.query.prodRangeCd๋ฅผ ๊ตฌ์กฐ ๋ถ„ํ•ด๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค.

๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด๋ฅผ ํ†ตํ•ด this.query์˜ ์†์„ฑ์„ ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ถ”์ถœํ•˜๋ผ๋Š” ๋‚ด์šฉ์ด๋‹ค.

this.query ๊ฐ์ฒด์—์„œ ์—ฌ๋Ÿฌ ์†์„ฑ์„ ๊ฐ€์ ธ์˜จ๋‹ค๋ฉด ๊ตฌ์กฐ ๋ถ„ํ•ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ˆ˜์ • ๋ฐ˜์˜
const { yyyymm, prodRangeCd } = this.query;
const compComboId = '#PRODUCT_BY_RANGE#';
const formattedYyyymm = yyyymm.replace(/-/gi, '');
const rs = await this.compCodeList(compComboId, formattedYyyymm, prodRangeCd);
const clsRow = rs.data.resultList;

 

์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด this.query ๊ฐ์ฒด์—์„œ yyyymm๊ณผ prodRangeCd๋ฅผ ํ•œ ๋ฒˆ์— ๊ตฌ์กฐ ๋ถ„ํ•ดํ•˜์—ฌ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

'Errors' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SVN] svn commit has encountered a problem  (0) 2022.05.23

๐Ÿณ docker ps

โ€ป ps : process status

# ํ˜„์‹œ์  ์‹คํ–‰์ค‘์ธ docker ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
docker ps

# a์˜ต์…˜์„ ์ฃผ๋ฉด ์ข…๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ๋„ ๊ฐ™์ด ์กฐํšŒ
docker ps -a

๐Ÿณ docker stop / docker kill

โ€ป stop : ์ง„ํ–‰์ค‘์ธ ์ž‘์—… ๋๋‚ธ ํ›„ ์ข…๋ฃŒ

โ€ป kill : ๊ฐ•์ œ ์ข…๋ฃŒ

# NAMES๋Š” docker ps ์กฐํšŒํ•˜๋ฉด ๋‚˜์˜ด
docker stop [NAMES]
docker kill [NAMES]

ํšŒ์‚ฌ ๋‚ด์—์„œ ์ƒˆ๋กœ ๊ตฌ์ถ•์ค‘์ธ ํŒจํ‚ค์ง€์—์„œ๋Š” ์ฝ”์–ด ๋‹จ๊ณ„ ์†Œ์Šค๋Š” ๋”ฐ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ 

๊ฐ ์‚ฌ์ดํŠธ๋งˆ๋‹ค ๋“ค์–ด๊ฐ€๋Š” ์ปค์Šคํ…€ ํŽ˜์ด์ง€๋ฅผ ๋ถ™์—ฌ์„œ ์˜คํ”ˆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ฝ”์–ด ๋‹จ๊ณ„ ์†Œ์Šค๋Š” git submodule์„ ์‚ฌ์šฉํ•ด์„œ ์ž‘์—…์ค‘์ด๋‹ค.

 

์•„๋ž˜ ๋‚ด์šฉ์€ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ git clone ๋ฐ›์€ ํ›„

submodule๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ฝ”์–ด ์†Œ์Šค๋ฅผ pull ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๋จผ์ € ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ๋ฅผ clone ๋ฐ›์€ ํ›„ !

# ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์ฒ˜์Œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰
# ์„œ๋ธŒ๋ชจ๋“ˆ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ปฌ ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ ์ค€๋น„
# .gitsubmodules ํŒŒ์ผ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ .git/config์— ๋“ฑ๋ก
# git config -list -local๋กœ ๋“ฑ๋ก ๊ฒฐ๊ณผ ํ™•์ธ ๊ฐ€๋Šฅ
git submodule init

# ์„œ๋ธŒ๋ชจ๋“ˆ ์ตœ์‹ ํ™”
git submodule update

# ์ฒ˜์Œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ ์œ„ ๋‘๊ฐ€์ง€๋ฅผ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
git submodule update --init

 

๊ทธ ๋‹ค์Œ ์•„๋ž˜๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ ์ตœ์‹ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• !

git submodule update --remote --merge

1. Vue๋ž€?

Vue๋Š” Facebook์˜ React, Google์˜ Angular์™€ ๋”๋ถˆ์–ด

๋Œ€ํ‘œ์ ์ธ Single Page Application(SPA) ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

 

๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ํ•™์Šต ๊ณก์„ ์ด ๋‚ฎ์•„

๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•˜์ง€๋งŒ

๋ญ... ์„ธ์ƒ ๋งŒ๋ฌผ์ด ๊ทธ๋ ‡๋“ฏ์ด ์ฒ˜์Œ ์ ‘ํ•˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์–ด๋ ต๊ธฐ๋งˆ๋ จ ใ…Ž

 

 

 

2. ๋ฒ„์ „

Vue๋Š” Evan You๋ผ๋Š” ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด 2014๋…„ ๋ฐœํ‘œ๋˜์—ˆ๊ณ , ๋ฐœํ‘œ๋œ ์ดํ›„๋กœ ํ˜„์žฌ๊นŒ์ง€ ๊พธ์ค€ํžˆ ๋ฆด๋ฆฌ์ฆˆ ๋˜๊ณ  ์žˆ๋‹ค.

Vue 2.0์€ 2016๋…„์— Ghost in the Shell์ด๋ผ๋Š” ์ฝ”๋“œ๋ช…์œผ๋กœ, 2.6์€ 2019๋…„์— Macross๋ผ๋Š” ์ฝ”๋“œ๋ช…์œผ๋กœ,

๊ทธ๋ฆฌ๊ณ  ๋“œ๋””์–ด 3.0์€ 2020๋…„ 9์›” 19์ผ์— One Piece๋ผ๋Š” ์ฝ”๋“œ๋ช…์œผ๋กœ ๊ณต๊ฐœ๋˜์—ˆ๋‹ค.

ํ˜„ ์‹œ์ ์˜ ์ตœ์‹  ๋ฒ„์ „์€ 3.2.37์ด๋‹ค.

 

 

 

3. ๊ธฐ์กด ๋ฒ„์ „์—์„œ ๋‹ฌ๋ผ์ง„ ์ 

Vue 3๋Š” ๊ธฐ์กด ๋ฒ„์ „๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜์—ˆ๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋‹ค.

๋งŽ์€ ์—…๋ฐ์ดํŠธ๋“ค ์ค‘์— ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ 4๊ฐ€์ง€๋งŒ ์ •๋ฆฌํ–ˆ๋‹ค ๐ŸŽ

 

3.1. Compisition API ๊ธฐ๋ณธ ์ง€์›

์ฒซ ๋ฒˆ์งธ๋Š” Composition API๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

 

// Vue 2
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    login() {
      // login method
    }
  },
  computed: {
    lowerCaseUsername() {
      return this.username.toLowerCase()
    }
  }
}

Vue 2์—์„œ๋Š” Component์˜ ์˜ต์…˜์„ Data, Methods, Computed, Watch๋กœ ๊ตฌ๋ถ„ํ–ˆ๋‹ค.

๊ฐ ํŠน์ง•์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์–ด ํ”„๋กœ์ ํŠธ ์ดˆ๋ฐ˜์—๋Š” ๋” ์ง๊ด€์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ

ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก, ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค.

 

// Vue 3
import { reactive } from 'vue';
export default {
  setup() {
    const state = reactive({
      username: '',
      password: '',
      lowerCaseUsername: computed(() => state.username.toLowerCase()),
    })
    const login = () => {
      // login method
    }
    return {
      login,
      state,
    }
  }
}

Composition API๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•˜์˜€๋‹ค.

Data, Methods, Computed ๋“ฑ์ด ๊ฐ์ž ๋ถ„์‚ฐ๋˜์–ด ๋‹ด๋‹นํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์„ Setup ๋ฉ”์„œ๋“œ์— ํ•˜๋‚˜๋กœ ๋ชจ์œผ๋Š” ๊ฒƒ์ด๋‹ค.

๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ๋“ค์„ ์„œ๋กœ์˜ ๊ด€๋ จ์„ฑ ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ž ์Šค์Šค๋กœ ๋ฐฐ์น˜ํ•˜์—ฌ, ์ฝ”๋“œ๋ฅผ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Vue 2์—์„œ๋„ Composition ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ•ด์„œ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ

Vue 3์—์„œ๋Š” Composition API๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ ์ด ํฐ ์ฐจ์ด์ ์ด๋‹ค.

 

 

3.2. Lifecycle ๋ณ€ํ™”

๋‘ ๋ฒˆ์งธ๋Š” Lifecycle์˜ ๋ณ€ํ™”์ด๋‹ค.

 

// Vue 2
export default {
  created() {
    console.log('created')
  },
  mounted() {
    console.log('mounted')
  },
}

Vue 2์—์„œ๋Š” Created, Mounted, Updated ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฉ”์„œ๋“œ๋“ค์ด Composition API์˜ Setup ๋ฉ”์„œ๋“œ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด์„œ ๋ช…์นญ ๋“ฑ์ด ๋ฐ”๋€Œ์—ˆ๋‹ค.

 

// Vue 3
import { onMounted } from 'vue';
export default {
  setup() {
    // ..
    onMounted(() => {
      console.log('onMounted')
    })
    // ...
  }
}

Created๋Š” Setup ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ๋ฐ”๋€Œ์—ˆ๊ณ ,

Mounted๋Š” onMounted๋กœ, Updated๋Š” onUpdated๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

์œ„์น˜์™€ ์ด๋ฆ„์ด ์กฐ๊ธˆ ๋ฐ”๋€Œ์—ˆ์„ ๋ฟ ๊ธฐ๋Šฅ์€ ํฐ ์ฐจ์ด ์—†๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

์ด ์™ธ์—๋„ BeforeUnmount, Unmounted๋“ฑ์˜ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฒ€์ƒ‰!

 

 

3.3. ๋ฉ€ํ‹ฐ ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ

์„ธ ๋ฒˆ์งธ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•  ๋•Œ ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

 

Vue 2์—์„œ๋Š” ํ…œํ”Œ๋ฆฟ ์•ˆ์— ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ•˜๋‚˜๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ Vue 3๋ถ€ํ„ฐ๋Š” ํ…œํ”Œ๋ฆฟ ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

<template>
  <h1>Title</h1> <!-- Vue 2์—์„œ๋Š” h1๊ณผ div ๋‘๊ฐœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ -->
  <div>Content</div> <!-- Vue 3์—์„œ๋Š” ๊ฐ€๋Šฅ -->
</template>

 

 

3.4. IE ์ง€์› ์ค‘๋‹จ

๋งˆ์ง€๋ง‰์œผ๋กœ ๋” ์ด์ƒ Internet Explorer(IE)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค.

๊ผญ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

๊ธฐ์กด JavaScript์—์„œ๋Š” var๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ–ˆ๋‹ค.

๊ทธ ํ›„ ES6์—์„œ let๊ณผ const๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ์ด ๋‘˜์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์™œ var๋ฅผ ๋‘๊ณ  let๊ณผ const๊ฐ€ ๋‚˜์™”๊ณ , ์ด ๋‘˜์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?


1. var์˜ ๋‹จ์ 

๋จผ์ € var ํ‚ค์›Œ๋“œ๋Š” ํฌ๊ฒŒ ๋‹จ์  ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1. ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š์€ ๊ฐ’ ๋ฐ˜ํ™˜์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
2. ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.
3. ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋”๋ผ๋„ undefined๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

ES6์—์„œ ๋‚˜์˜จ let, const ํ‚ค์›Œ๋“œ๋Š” ์œ„ ์„ธ ๊ฐ€์ง€ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.

 

 

 

2. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ ์ฐจ์ด

1. var (์ค‘๋ณต ์„ ์–ธ O)

var name = 'apple'
console.log(name) // apple

var name = 'orange'
console.log(name) // orange

์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ

 

์œ ๋‹›ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ํŽธ๋ฆฌํ•˜์ง€๋งŒ,

์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์–ด๋””์—์„œ ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์„ ์–ธ์ด ๋˜์—ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๊ณ 

์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ํ• ๋‹น ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

 

 

2. let (์ค‘๋ณต ์„ ์–ธ X, ์žฌํ• ๋‹น O)

let name = 'apple'
console.log(name) // apple

let name = 'orange'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared

์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

 

let name = 'apple'
console.log(name) // apple

name = 'orange'
console.log(name) // orange

์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

 

3. const (์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ ์ง„ํ–‰, ์ค‘๋ณต ์„ ์–ธ X, ์›์‹œ๊ฐ’ ์žฌํ• ๋‹น X, ๊ฐ์ฒด ์žฌํ• ๋‹น O)

const name; // output: Uncaught SyntaxError: Missing initializer in const declaration
const name = 'apple'

์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ ์ง„ํ–‰

 

const name = 'apple'
console.log(name) // apple

const name = 'orange'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared

์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

 

const name = 'apple'
console.log(name) // apple

name = 'orange'
console.log(name) // Uncaught TypeError: Assignment to constant variable.

์›์‹œ๊ฐ’ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

 

const name = { one: 'apple' }
name.one = 'orange'
console.log(name) // { one: 'orange' }

๊ฐ์ฒด ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

 

 

3. ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ์ฐจ์ด

1. var

var a = 1

if (true) {
  var a = 2
}

console.log(a) // 2

ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด a๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

if๋ฌธ ์•ˆ์—์„œ a๊ฐ€ ์ค‘๋ณต ์„ ์–ธ๋˜๊ณ , ์ถœ๋ ฅ๊ฐ’์€ 2๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

 

์‹ค๋ฌด ํ”„๋กœ์ ํŠธ์˜ ๊ธด ์ฝ”๋“œ๋“ค์—์„œ ์ด๋Ÿฐ ์ƒํ™ฉ์ด ์˜จ๋‹ค๋ฉด, ์˜๋„์น˜ ์•Š์€ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค.

 

 

2. let, const

// const ํ‚ค์›Œ๋“œ๋„ ๋™์ผ
let a = 1

if (true) {
  let a = 2
}

console.log(a) // 1

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ–ˆ์„ ๋•Œ, ์ถœ๋ ฅ๊ฐ’์ด 2์˜€์ง€๋งŒ

let, const๋กœ ํ•จ์ˆ˜ ์•ˆ์— ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ž˜์„œ ์ „์—ญ์—์„œ ์ถœ๋ ฅํ•˜๋ฉด ์ „์—ญ์— ์žˆ๋Š” 1์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

4. ํ˜ธ์ด์ŠคํŒ… ์ฐจ์ด

1. var

console.log(name); // undefined
var name;

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋˜์–ด

name์— ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

 

๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋Ÿฐํƒ€์ž„์— ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ทธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—

var ํ‚ค์›Œ๋“œ์— ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ์–ธ์ œ๋‚˜ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ณ€์ˆ˜ ์ƒ์„ฑ ๋‹จ๊ณ„ : ์„ ์–ธ ๋‹จ๊ณ„ > ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ > ํ• ๋‹น ๋‹จ๊ณ„

 

 

2. let

console.log(name); // Uncaught ReferenceError: name is not defined
let name;

let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋œ๋‹ค.

๋Ÿฐํƒ€์ž„ ์ด์ „์— ์„ ์–ธ ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด

์•„์ง ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ฐธ์กฐ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

 

๊ทธ๋ž˜์„œ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์Šค์ฝ”ํ”„์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์‹œ์ž‘ ์ง€์ ๊นŒ์ง€

๋ณ€์ˆ˜ ์ฐธ์กฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(Temporal Dead Zone; TDZ) ๊ตฌ๊ฐ„์— ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

3. const

console.log(constName) // Uncaught ReferenceError: Cannot access 'constName' before initialization
const constName = 'apple'

const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋œ๋‹ค.

๋Ÿฐํƒ€์ž„ ์ด์ „์—๋Š” ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ

์ ‘๊ทผ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฌ๋‹ค.

spring boot ํ”„๋กœ์ ํŠธ์—์„œ application.properties๊ฐ€ ์•ˆ์—ด๋ฆด๋•Œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ธฐ๋ก.


 

1. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• โ‘ 

window โ†’ New window

Eclipse ๋‹จ์ˆœ ๋ฒ„๊ทธ์ผ ๊ฒฝ์šฐ ์ƒˆ ์ฐฝ์œผ๋กœ ์—ด๋ฉด ํ•ด๊ฒฐ๋จ ^^;

 

 

 

2. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• โ‘ก

Help โ†’ Install New Software... โ†’ Add...

Name : ์•„๋ฌด๊ฑฐ๋‚˜ ใ…Ž (๋‚˜๋Š” properties editor๋ผ๊ณ  ์ ์Œ)

Location : https://download.springsource.com/release/TOOLS/update/e4.16/

์ ๊ณ  Add ํ•ด ์ค€ ํ›„,

 

 

Extensions / Spring IDE โ†’ Spring IDE Boot Support โœ…

์„ค์น˜ํ•ด์ฃผ๊ณ  ๋‹ค ๋˜๋ฉด Restart Now OK

 

 

application.properties ์šฐํด๋ฆญ โ†’ Open With โ†’ Other... โ†’ Spring Properties Editor

์ž˜ ์—ด๋ฆฐ๋‹ค ๐Ÿ’จ

 

 

 

ํšŒ์‚ฌ์—์„œ Git ์“ฐ๋‹ค๊ฐ€ ์ปค๋ฐ‹ ๋‹ค ๊ผฌ์—ฌ์„œ ๋‚˜๋จธ์ง€๋Š” ํ•ด๊ฒฐํ•˜๊ณ 

์—‰๋ง์ง„์ฐฝ์ธ Branch ํ•˜๋‚˜๋ฅผ Git์—์„œ ์‚ญ์ œํ–ˆ๋Š”๋ฐ

๋กœ์ปฌ Branch์—๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋Š”๊ฑฐ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋ก โœ…


 

1. Local Branch ๋ชฉ๋ก ํ™•์ธ

git branch

 

 

2. Remote Branch (์›๊ฒฉ) ๋ชฉ๋ก ํ™•์ธ

git branch -r

 

 

์œ„ ๋‘๊ฐœ๋ฅผ ์กฐํšŒํ–ˆ์„๋•Œ ๋ชฉ๋ก์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋™๊ธฐํ™”๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.

 

 

3. Branch ๋™๊ธฐํ™”

git fetch --all --prune
git remote prune origin

๋‘˜์ค‘์— ํ•˜๋‚˜ ๊ณจ๋ผ์„œ ์“ฐ๋ฉด ๋™๊ธฐํ™” ์™„๋ฃŒ โœ…

 

๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Git ์ž์ฒด์—์„œ Branch๋ฅผ ์‚ญ์ œํ•ด์„œ ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ–ˆ์ง€๋งŒ,

์ฝ”๋“œ๋กœ Branch๋ฅผ ์‚ญ์ œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ‘์— ๐Ÿ˜œ

 

 

4. Local Branch ์‚ญ์ œ

git branch -d <branchName>

 

 

5. Remote Branch ์‚ญ์ œ

git push origin --delete <branchName>
git push origin : <branchName>

 

 

6. ์ฐธ๊ณ 

๋ช…๋ น๋ฌธ --dry-run

์‹ค์ œ ์‹คํ–‰์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๊ฐ’๋งŒ ๋ฏธ๋ฆฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

'Version Control > Git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Git] ํŠน์ • Branch Clone, ์ดํ›„ ๋‹ค๋ฅธ branch clone ์ถ”๊ฐ€  (0) 2025.02.18
[Git] submodule init/clone/update  (0) 2024.06.19

+ Recent posts