๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • A space that records me :)

์ „์ฒด ๊ธ€78

[RabbitMQ] RabbitMQ ๊ธฐ๋ณธ ๊ฐœ๋… ๋‚ด๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ๋กœ ์ฐธ์—ฌํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค. ์ง€๊ธˆ์€ ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ, ๊ฐ ์„œ๋ฒ„๋ผ๋ฆฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„ ์บ์‹œ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด RabbitMQ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์ง์ ‘ RabbitMQ๋ฅผ ์„ธํŒ…ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์›น์—์„œ ์บ์‹œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด RabbitMQ์— ๋ฌผ๋ ค์žˆ๋Š” ์„œ๋ฒ„๋“ค์—๊ฒŒ ๋…ธํ‹ฐ๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ ํ›„ ์กฐ๊ธˆ์˜ ์—ฌ์œ ๊ฐ€ ์ƒ๊ฒจ, RabbitMQ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. 2020 KT CPN ์‹œ์Šคํ…œ FM ์„œ๋ฒ„ ๊ฐ„์— ๋…ธํ‹ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ๋Œ€ํ‘œ์ ์œผ๋กœ ํ•œ ์„œ๋ฒ„์—์„œ ์บ์‹œ๊ฐ€ ๋ณ€๋™๋˜๋ฉด, ๋‹ค๋ฅธ ์„œ๋ฒ„์—๋„ ๋™์ผํ•œ ์ž‘์—…์„ ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. RabbitMQ ๊ฐœ๋… RabbitMQ๋ž€? AMQP ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•œ ๋ฉ”์‹œ์ง€ ์ค‘๊ฐœ์ธ์ด๋‹ค. Producer์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ Consumer์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋กœ ์‹œ์Šค.. 2020. 11. 19.
[JAVA] @Transactional ์บ์‹ฑ ๋ฌธ์ œ.. @Transactional ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ.. ๋ถ€๋ชจ๋ฉ”์„œ๋“œ์—์„œ PromCpnType origin = promCpnTypeMapper.readPromCpnType(param);PromCpnType param = new PromCpnType(); param.setCpnTypeId(promCpnType.getCpnTypeId()); param.setIssDstrSeq(promCpnType.getIssDstrSeq()); PromCpnType origin = promCpnTypeMapper.readPromCpnType(param); ์ž์‹ ๋ฉ”์„œ๋“œ์—์„œ PromCpnType param = new PromCpnType(); param.setCpnTypeId(promCpnType.getCpnTypeId()); param.set.. 2020. 11. 18.
[MYSQL] DB ํŒŒํ‹ฐ์…”๋‹ 2020 - [KT] CPN DB ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํŒŒํ‹ฐ์…”๋‹ ์ž‘์—…. ๋Œ€์ƒ ํ…Œ์ด๋ธ” API_LOG (api ๋กœ๊ทธ ๊ธฐ๋ก ํ…Œ์ด๋ธ”) CPN_DTL_USE_HST (์ฟ ํฐ ์‚ฌ์šฉ์ด๋ ฅ ํ…Œ์ด๋ธ”) CPN (์ „์ฒด ์ฟ ํฐ ์ €์žฅ ํ…Œ์ด๋ธ”) ๊ฒฐ๊ณผ API_LOG๋Š” RAGE๋กœ CPN_DTL_USE_HST๋Š” HASH๋กœ CPN์€ ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด์œ ๋Š” ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด์„œ ํŒŒํ‹ฐ์…”๋‹(Partitioning)์ด๋ž€? ๊ณ„๋… TABLE์„ 'ํŒŒํ‹ฐ์…˜(Partition)'์ด๋ผ๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. 'ํŒŒํ‹ฐ์…˜(Partition)'๊ธฐ๋ฒ•์„ ํ†ตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•˜๊ณ , ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ(element)๋“ค์„ ๋‹ค์ˆ˜์˜ entity๋กœ ์ชผ๊ฐœ๋Š” ํ–‰์œ„๋ฅผ ๋œปํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด ๋Œ€์šฉ๋Ÿ‰์˜ Table์ด๋‚˜ index๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด partitio.. 2020. 11. 16.
[JavaScript] ํด๋กœ์ €(Closure) ํด๋กœ์ €(Closure)๋ž€? - MDN์—์„œ์˜ ์ •์˜ ํด๋กœ์ €๋Š” ๋…๋ฆฝ์ ์ธ (์ž์œ ) ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋˜๋Š”, ํด๋กœ์ € ์•ˆ์— ์ •์˜๋œ ํ•จ์ˆ˜๋Š” ๋งŒ๋“ค์–ด์ง„ ํ™˜๊ฒฝ์„ ‘๊ธฐ์–ตํ•œ๋‹ค’. “A closure is the combination of a function and the lexical environment within which that function was declared.” ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋์„ ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical environment)๊ณผ์˜ ์กฐํ•ฉ์ด๋‹ค. ํด๋กœ์ €๋Š” ๋‹จ์ˆœํžˆ ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์‹คํ–‰์‹œ ์™ธ๋ถ€ ๋ณ€์ˆ˜ ์ ‘๊ทผ์„ ์œ„ํ•ด, ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค. function outFunc(){ var reason = "test"; var v.. 2020. 11. 13.
[Bootstrap] SweetAlert2์˜ input์— ํฌ์ปค์‹ฑ์ด ์•ˆ๋˜๋Š” ํ˜„์ƒ Bootstrap์˜ SweetAlert2 input์— ํฌ์ปค์‹ฑ์ด ์•ˆ๋จ. modal๋‚ด์˜ focusin์ด๋ฒคํŠธ ์ค‘๋ณต ํ˜„์ƒ์œผ๋กœ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค. $(document).off('focusin.modal'); 2020. 11. 13.
[JAVA] Excel Download - ์ฝ๊ธฐ, ์ˆ˜์ •, ๋‹ค์šด๋กœ๋“œ (Servlet, POI) 2020.11.13 ์„œ๋ฒ„์— ์—…๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ์€ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€(์ˆ˜์ •)ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ - ์—…๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ (์–‘์‹) - DB์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—‘์…€์— ์ถ”๊ฐ€ ์‚ฌ์šฉ - HttpServletRequest, HttpServletResponse - FileInputStream - XSSFWorkbook - ServletOutputStream 1. Controller API๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์—‘์…€๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Service๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. @GetMapping(value = "/v1/cpnType/{cpnTypeId}/promotion/iss/{issDstrSeq}/target/excel/down") public void excelDownloadIssTarget(HttpServletRequ.. 2020. 11. 13.