๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ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. ์ด์ 1 2 3 ๋ค์ ๋ฐ์ํ