๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ29

[Vue.js] Char.js ๋ผ๋ฒจ ๊ฐ’(value) ํ‘œ์‹œํ•˜๊ธฐ Chart.js ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ต์…˜๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ „๋ถ€ ๋‹ค ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธด ์–ด๋ ค์šฐ๋‹ˆ ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค ์ฐพ์•„๋ณด๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋ฒ„์ „๋ณ„๋กœ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๋‹ฌ๋ผ์„œ ๋ผ๋ฒจ ๊ฐ’ ํ‘œ์‹œํ•˜๋Š”๋ฐ ์• ๋ฅผ ์ข€ ๋จน์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ chart.js ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค chart.js : 2.9.4 chartjs-plugin-datalabels : 0.7.0 vue-chartjs : 3.5.1 ๋‚˜๋Š” chart.js 2.x ๋ฅผ ์‚ฌ์šฉํ•ด์„œ datalabels ๋ฅผ 2.x ๋ฅผ ์„ค์น˜ํ–ˆ์„๋•Œ๋„ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์•—๊ณ , 1.x๋กœ ๋‚ด๋ ธ์„๋•Œ๋„ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ฐพ๊ณ  ์ฐพ์•„์„œ 0.7.0 ๋ฒ„์ „์„ ์„ค์น˜ํ•ด์„œ์•ผ ๋ผ๋ฒจ ๊ฐ’์„ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋งŒ์•ฝ chart.js 3.x ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด datalables ๋Š” 2.x ์ด์ƒ ํ•„์š”ํ•˜๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธ.. 2022. 10. 28.
[Linux] jar ํŒŒ์ผ ์‹คํ–‰ ๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰, ๋กœ๊ทธ ๋‚จ๊ธฐ๊ธฐ ์‹คํ–‰๋ฐฉ๋ฒ• ๋ฆฌ๋ˆ…์Šค์—์„œ jar ํŒŒ์ผ๋กœ ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ ์‹คํ–‰ํ• ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค. java –jar [๋นŒ๋“œ๋œ jar ํŒŒ์ผ๋ช…]๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰๋ฐฉ๋ฒ• ํ•˜์ง€๋งŒ ์œ„ ๋ช…๋ น์–ด๋Š” Ctrl + c ๋ฅผ ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค ๊ณ„์† ๊ตฌ๋™ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๊ตฌ๋™์‹œ์ผœ์•ผ ํ•œ๋‹ค. nohup java –jar [๋นŒ๋“œ๋œ jar ํŒŒ์ผ] &๋นŒ๋“œ๋œ ํŒŒ์ผ๋ช…๊ณผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋ฅผ ์˜๋ฏธํ•˜๋Š” & ๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰ ํ•˜๋ฉด ๋œ๋‹ค. ์ด์ œ ps -ef | grep [๊ฒ€์ƒ‰ํ•  jar ํŒŒ์ผ๋ช…] ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธ ํ•˜๋ฉด ๋œ๋‹ค. ๋กœ๊ทธ ๋‚จ๊ธฐ๊ธฐ ์‹คํ–‰๊ณผ ํ•จ๊ป˜ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์‹ถ์œผ๋ฉด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. overwrite ( > ) > ๋Š” ๊ธฐ์กด์— ์žˆ๋Š” ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋ฎ์–ด ์”Œ์›Œ์ง„๋‹ค. nohup java –jar [๋นŒ๋“œ๋œ jar .. 2022. 10. 27.
[Vue.js] Chart.js ๋ˆ„์  ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ดํ•ฉ ํ‘œ์‹œํ•˜๊ธฐ (Stack Bar, Total) Chart.js ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ณธ ์˜ต์…˜์œผ๋กœ๋Š” ๋ˆ„์  ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„์˜ total ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” option ์˜ tooltips ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. tooltips: { mode: "label", callbacks: { footer: function (data) { var total = 0; for (var i = 0; i < data.length; i++) { total += data[i].yLabel; // ์„ธ๋กœ๋ง‰๋Œ€๋Š” yLabel , ๊ฐ€๋กœ๋ง‰๋Œ€๋Š” xLabel } return "Total: " + total; }, }, },option ๋“ค์„ ์ •์˜ํ• ๋•Œ ์ด ์ฝ”๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ๋ง‰๋Œ€ ๊ฐœ๋ณ„ ๊ฐ’๊ณผ ์ด ํ•ฉ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 2022. 10. 25.
[MySQL] ์‹œ๊ฐ„๋Œ€๋ณ„ ๋ฐฉ๋ฌธ ํ†ต๊ณ„ ๊ตฌํ•˜๊ธฐ ๋ฐฉ๋ฒ• 1 SELECT Hour(access_date) AS hh , count(access_date) AS cnt FROM access_log WHERE access_date BETWEEN '2022-01-01 00:00:00' AND date_format(now(),'%Y-%m-%d 23:59:59') GROUP BY hh ORDER BY hh ASC; access_date ์—์„œ Hour() ๋กœ ์‹œ๊ฐ„๊ฐ’(0,1,2,3...) ๋งŒ ๊ฐ€์ ธ์˜จ ๋’ค ๊ทธ ๊ฐ’์„ GROUP BY ๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ์ œ๊ฑฐ์™€ ํ•จ๊ป˜ count ๊ฐ’์„ ๊ตฌํ•œ๋‹ค BETWEEN AND ์ ˆ๋กœ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•œ๋‹ค ์ถœ๋ ฅ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์€ ๊ฐ’์ด ์žˆ๋Š” ์‹œ๊ฐ„๋งŒ ์ถœ๋ ฅ์„ ํ•œ๋‹ค. ๊ฐ’์˜ ์œ ๋ฌด์™€ ์ƒ๊ด€์—†์ด 1~24 ์‹œ๊ฐ„๋Œ€๋ณ„ ๋ฐฉ๋ฌธ ํ†ต๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฐฉ๋ฒ• 2 ์šฐ์„  ํ–‰๋ฒˆ.. 2022. 10. 19.
[Java] ์ œ๊ณฑ๊ทผ(๋ฃจํŠธ) ๊ตฌํ•˜๊ธฐ / Math.sqrt() ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด์—์„œ ์ œ๊ณฑ๊ทผ์„ ํŒ๋ณ„ํ• ๋•Œ ์œ ์šฉํ•œ Java ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค. Math.sqrt( n ) ์ œ๊ณฑ๊ทผ(๋ฃจํŠธ) ํ•จ์ˆ˜ n์˜ ์ œ๊ณฑ๊ทผ์„ double ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ ( ๋‹จ, ์Œ์ˆ˜ ์‚ฌ์šฉ์‹œ NaN ์ถœ๋ ฅ) ๋ฆฌํ„ด๋˜๋Š” ๊ฐ’์ด ์ •์ˆ˜(int) ์—ฌ์•ผ ์ œ๊ณฑ๊ทผ์— ํ•ด๋‹น๋œ๋‹ค. Math.pow(double a , double b ) ์ œ๊ณฑ ํ•จ์ˆ˜ a ์˜ b ์ œ๊ณฑ ์„ double ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ num.intValue() num ๊ฐ’์„ int ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ Math.sqrt() ๊ฐ’์ด ์–‘์˜ ์ •์ˆ˜์ธ์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ ์šฉ 2022. 10. 18.
[Vue.js] Hot Reload ๋™์ž‘ ์•ˆํ• ๋•Œ ์˜ˆ์ „์— ๋งŒ๋“ค์–ด ๋†จ๋˜ Vue.js + SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ๋„์› ๋Š”๋ฐ Vue ์˜ ์žฅ์ ์ธ hot reload ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์•˜๋‹ค. Vue ์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊พธ๋ฉด ํ•ญ์ƒ rebuild ํ›„ ์Šคํ”„๋ง์„ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋ถˆํŽธํ•ด์„œ ๊ธ‰ํ•˜๊ฒŒ ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜๋‹ค. package.json ์— --watch ์ถ”๊ฐ€ build --watch ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์žฌ๋นŒ๋“œ ํ•˜์—ฌ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋„๋ก ์ถ”๊ฐ€ ํ•˜์˜€๋‹ค. ์ด์ œ ์˜ˆ์ „์ฒ˜๋Ÿผ Vue์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜์ด ๋˜์—ˆ๋‹ค. 2022. 10. 18.
[Java] ์‚ฌ์šฉ์ž Web/App/Mobile ์ ‘์† ๊ตฌ๋ถ„ํ•˜๊ธฐ User Agent ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋””๋ฐ”์ด์Šค๋กœ ์ ‘์†ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ• ๋•Œ Request Header ์˜ User Agent ๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. User Agent ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด ์˜ˆ์‹œ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 public void getUserDevice(HttpServletRequest request) { String userAgent = request.getHeader("User-Agent"); // ๋ชจ๋ฐ”์ผ ๊ธฐ์ข… ์ฒดํฌ boolean isMobile = userAgent.matches(".*(iPhone|iPod|i.. 2022. 10. 14.
[Java] ๋Œ€์†Œ๋ฌธ์ž ํ™•์ธ ๋ฐ ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜ ๋Œ€์†Œ๋ฌธ์ž ํ™•์ธ Character ํด๋ž˜์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด ๋œ๋‹ค. isUpperCase() ์ „๋‹ฌ๋œ ๊ฐ’์ด ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ true ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false ๋ฐ˜ํ™˜ isLowerCase() ์ „๋‹ฌ๋œ ๊ฐ’์ด ์†Œ๋ฌธ์ž์ธ ๊ฒฝ์šฐ true ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false ๋ฐ˜ํ™˜ ์˜ˆ์‹œ char value = 'C'; if(Character.isUpperCase(value)) { System.out.println("๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค."); } if(Character.isLowerCase(value)) { System.out.println("์†Œ๋ฌธ์ž์ž…๋‹ˆ๋‹ค."); } ์‹คํ–‰ ๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜ String ํด๋ž˜์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. toUpperCase() ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. toLowerCas.. 2022. 10. 14.
[Java] List to Array(๋ฐฐ์—ด) ๋˜๋Š” Array(๋ฐฐ์—ด) to List ์ฃผ๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์“ธ๋•Œ๋งˆ๋‹ค ์žŠ์–ด๋จน๊ณ  ์ฐพ์•„๋ณด๊ฒŒ ๋˜์–ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. 1. List to Array List.toArray() List ์˜ toArray() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ List list = new ArrayList(); String[] arr = list.toArray(new String[0]); ์œ„์™€ ๊ฐ™์ด ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹น ํ•˜๊ฑฐ๋‚˜ List list = new ArrayList(); String[] arr = new String[list.size()]; list.toArray(arr); ๋ฐฐ์—ด ์„ ์–ธ ํ›„ List ๊ฐ’์„ ์ฑ„์›Œ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Stream API Java8 ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์ œ๊ณต๋˜๋Š” Stream API ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• String[] arr = list.. 2022. 10. 13.
SSH ํ„ฐ๋„๋ง Local Port Fowarding ๊ณ„์† ์ƒˆ๋กœ์šด ssh ์—ฐ๊ฒฐ์ด ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค ๊ฐœ๋…์„ ์ดํ•ดํ•˜์ง€ ํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰์„ ํ•˜๋‹ค๊ฐ€ ๋ช‡๋ฒˆ ์• ๋ฅผ ๋จน๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. SSH ํ„ฐ๋„๋ง(ํฌํŠธ ํฌ์›Œ๋”ฉ) LocalForward RemoteForward DynamicForward ์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” Local Forwarding ๋งŒ ๋‹ค๋ฃจ๋ ค๊ณ  ํ•œ๋‹ค. 1. SSH ํ„ฐ๋„๋ง(ํฌํŠธ ํฌ์›Œ๋”ฉ) SSH ํด๋ผ์ด์–ธํŠธ์™€ SSH ์„œ๋ฒ„ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ ํ†ต๋กœ ์ž์ฒด๋ฅผ SSH ํ„ฐ๋„์ด๋ผ ํ•˜๋ฉฐ, SSH ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ์ด ๋˜๋ฉด ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. SSH ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ ์••์ถ•, ์•”ํ˜ธํ™” ๋“ฑ์„ ํ•ด์ฃผ๋ฉฐ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ์—๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. SSH ์˜ Default ํฌํŠธ๋Š” 22 ๋‹ค. 2. Local Po.. 2022. 10. 11.
๋ฐ˜์‘ํ˜•