์ ์ฒด ๊ธ79 javascript byte ์ ๊ณ์ฐ euc-kr byte ๊ตฌํ๊ธฐ ํ๊ธ ํ ๊ธ์๋น 2byte ๊ธฐ์ค ๋ฐ์ดํธ ์ ๊ณ์ฐ function calcByteEuckr(str) { return str .split('') .map(s => s.charCodeAt(0))// ์ ๋์ฝ๋ ๊ฐ์ผ๋ก ๋ณํ .reduce((prev, c) => (prev + ((c === 10) ? 2 : ((c >> 7) ? 2 : 1))), 0); // c ๊ฐ์ด 0~127์ฌ์ด์ ์์ผ๋ฉด 1๋ฐ์ดํธ } ์ต๋ byte ๋งํผ๋ง ๋ฌธ์์ด ์๋ฅด๊ธฐ function getLimitedByteEuckrText(str, maxByte) { if (!str) return; let b; for (b = i = 0; (c = str.charCodeAt(i)); ) { b += (c === 10) ? 2 : .. 2022. 6. 21. Vue.js xlsx ์์ ๋ค์ด๋ก๋ Vue ์์ ๋ค์ด๋ก๋ ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ํ๋ฉด ์์์ xlsx ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์์ ๋ค์ด๋ก๋๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. xlsx ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น npm install --save xlsx xlsx ๋ฅผ ์ฌ์ฉํ ์์ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ ๊ตฌํ import xlsx from 'xlsx'; ... excelDownload() { const fileName = 'excelFile';// ํ์ผ๋ช const sheetName = 'sheet1';// ์ํธ๋ช const header = [['์ด๋ฆ', '๋์ด', '์ด๋ฉ์ผ']];// ์ปฌ๋ผ๋ช const list = [{ name: 'ํ๊ธธ๋', age: 15, email: 'ํ๊ธธ๋@naver.com' }, { name: '๊น๊ธธ๋', age: 44, email: '๊น๊ธธ๋@naver.com'.. 2022. 6. 16. vue router / query vs params vue router ๋ทฐ๋ก ์ฑ๊ธ ํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ ๋ ํ๋ฉด ์ ํ ๋ฐ ํ์ด์ง ์ด๋์ ์ํด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์น์์ ๋ผ์ฐํ ์ ํ์ด์ง ๊ฐ์ ์ด๋ ๋ฐฉ๋ฒ์ ๋ปํ๋๋ฐ ๋ทฐ๋ ํ๋ฉด ์ด๋ ์ DOM์ ์๋ก ๊ฐฑ์ ํ์ง ์๊ณ ๋ณ๊ฒฝ๋ ์ปดํฌ๋ํธ๋ง ๊ฐฑ์ ํ์ฌ ๊น๋นก์ ์์ด ๋งค๋๋ฝ๊ฒ ์ ํ๋๋ ์ฅ์ ์ด ์๋ค. ํ์ด์ง ์ด๋ ํ๊ทธ๋ก ํ๋ฉด์์ ํ๊ทธ๋ก ์นํ๋์ด ์คํ๋๋ค. :to ์์ฑ path: ์ด๋ํ๋ ค๋ ๊ฒฝ๋ก name: ์ด๋ํ๋ ค๋ ๊ฒฝ๋ก๋ฅผ ๋ผ์ฐํฐ์ ์ค์ ๋ ์ด๋ฆ์ผ๋ก ์ง์ query: query string ํํ๋ก ์ ๋ฌ๋๋ ํ๋ผ๋ฏธํฐ, GET ๋ฐฉ์ params: name ์์ฑ์ ์ง์ ํ์ฌ ์ด๋ํ ๋(path๊ฐ ์๋) ์ ๋ฌ๋ ํ๋ผ๋ฏธํฐ, POST ๋ฐฉ์ query vs. params ๐ง params๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด path๊ฐ ์๋ name์ผ๋ก ์ด๋.. 2022. 6. 14. LeetCode - Missing Number https://leetcode.com/problems/missing-number/ Missing Number - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ์กฐ๊ฑด n == nums.length ์ด๊ณ nums์ ๋ชจ๋ ์ซ์๋ ์ค๋ณต์ด ์๋ค. nums ๋ฐฐ์ด์ ๊ฐ์ 0 a+b, 0); return (nums.length) * (nums.length + 1) / 2 - sum; }; ๊ฐ์ ์ฝ๋ 2 - ๋นํธ XOR์ ๊ฐ์ด ๋ ๋ฒ ์ ์ฉ๋๋ฉด ์ด๊ธฐ ๊ฐ์ผ๋ก ๋์์จ๋ค. - ์์๊ฐ .. 2022. 5. 30. git branch ๋ฐ์ ๊ฐ๋ฐํ๊ธฐ / ์ถฉ๋ ๋์ฒํ๊ธฐ git ์ฌ์ฉํ๊ธฐ ๊ฐ๋ฐ ์ ํ์๊ด๋ฆฌ๋ก git์ ์ฌ์ฉํ๋ค๋ฉด ๊ธฐ๋ฅ ๋ณ๋ก branch๋ฅผ ๋ฐ์ ๊ฐ๋ฐ ํ ์๋ณธ ์์ค์ mergeํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค. vscode์ git scm์ ์ค์นํ์ฌ ๋ช ๋ น์ด ๊ธฐ๋ฐ์ผ๋ก git branch ๊ด๋ จ ๋ช ๋ น์ด๋ฅผ ๋ค๋ฃจ์ด๋ดค๋ค. git branch ๋ฐ์ ๊ฐ๋ฐํ๊ณ ์ถฉ๋ ๋์ฒํ๊ธฐ ๐branch ์์ฑ git branch [๋ง๋ค๋ธ๋์น๋ช ] [๋ถ๊ธฐํ ๋ธ๋์น๋ช ] ๐๋ค๋ฅธ branch ์์ค pull ๋ฐ๊ธฐ git pull origin [๋ค๋ฅธ๋ธ๋์น๋ช ] 1. ์ฌ๊ธฐ์ ์ถฉ๋ ๋ฐ์ ์ ํ์ฌ branch ์์ ํ ํ์ผ์ ๋จผ์ commit & push ํ๋ค.(ํ์ฌ branch์ ์ฌ๋ฆฐ๋ค.) 2. ๋ค์ ์ ๋ช ๋ น์ด๋ก ๋ค๋ฅธ branch๋ฅผ pull ๋ฐ์ผ๋ฉด Automatic Merge Failed ๋๋ฉฐ ์ถฉ๋๋ ํ์ผ๊ณผ ํ์ผ ๋ด ์ถฉ๋ ์.. 2022. 5. 20. Object.freeze ๊ฐ์ฒด ๋๊ฒฐ / ๊ฐ์ฒด ์ฝ๊ธฐ ์๋ Object.freeze() ๊ฐ์ฒด์ ์๋ก์ด ์์ฑ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ ์ํ๋ก ๋ฐ๊พธ์ด immutableํ Object๋ฅผ ๋ง๋ค ์ ์๋ค. ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ๋๊ฒฐํ๋ ํจ์ ๋๊ฒฐ๋ ๊ฐ์ฒด๋ ์์ฑ์ ์ถ๊ฐ, ์ญ์ ํ๋ ๋ฑ ๋ณ๊ฒฝ ๋ถ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ ์๋ ์ TypeError ์์ธ ๋ฐ์ ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ ์ ์ง ์์ ๋ณต์ฌ(1 depth๊น์ง๋ง)๋ฅผ ํ๋ฏ๋ก ์ค์ฒฉ๋ ๊ฐ์ฒด๋ ๋๊ฒฐ๋์ง ์์ Object.isFrozen() ๋ฉ์๋๋ก ๊ฐ์ฒด ๋๊ฒฐ ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ const info = { name: 'Anna', age: 19 }; Object.freeze(info); info.age = 20; // ๋ณ๊ฒฝ๋์ง ์์ info.email = 'hello@gmail.com'; // ์ถ๊ฐ๋์ง ์์ const vs. Object.freeze.. 2022. 5. 12. ES6 Syntax ๋ชฉ์ฐจ Restructing(๊ตฌ์กฐ ๋ถํด ํ ๋น) Spread Operator(์ ๊ฐ ๊ตฌ๋ฌธ) Default Parameters(๊ธฐ๋ณธ ๊ฐ ๋งค๊ฐ๋ณ์) Template Literal(ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด) Arrow Function(ํ์ดํ ํจ์) for of ... loop 1. Restructuring(๊ตฌ์กฐ ๋ถํด ํ ๋น) ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋ ํํ์ 1-1. ๊ฐ์ฒด โ ๊ตฌ๋ฌธ ES5 ์์๋ ๊ฐ ๋ณ์์ ๊ฐ์ ํ ๋นํด์ผ ํ๋ค. var info = { myName: 'Anna', myAge: 10 }; var myName = info.myName; var myAge = info.myAge; console.log(myName, myAge);// Anna 10 ES6 ์์๋ ์ค๊ดํธ ์์.. 2022. 5. 3. ํด๋ผ์ฐ๋ ์ปดํจํ ๊ณผ IaaS/PaaS/SaaS 2022. 5. 1. TypeScript TypeScript ๋? Javascript ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ์ ์ ํ์ ๋ฌธ๋ฒ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด JavaScript ์ ์์ ์งํฉ์ผ๋ก Microsoft ์์ ๊ฐ๋ฐํ๋ค. ๋ฐ๋ผ์ JavaScript์ ๋ชจ๋ ๊ธฐ๋ฅ์ TypeScript ์์๋ ์ฌ์ฉํ ์ ์๋ค. ES6 ์ ๊ท ๋ฌธ๋ฒ์ ํฌํจํ๊ณ ํด๋์ค, ์ธํฐํ์ด์ค, ์์, ๋ชจ๋ ๋ฑ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ์ ๊ณตํ๋ค. TypeScript ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ TypeScript(.ts) ํ์ผ์ Javascript(.js) ํ์ผ๋ก ๋ณํํ์ฌ ์คํํ๋ค. TypeScript vs. JavaScript ๐ง ์๋, ์์ ์ฑ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ ์ธ์ด๋ก ๋ฐํ์ ์๋๋ ๋น ๋ฅด์ง๋ง, ํ์ ์์ ์ฑ์ ๋ณด์ฅ๋์ง ์๋๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์ ์ ํ์ ์ธ์ด๋ก ์ปดํ์ผ ์๊ฐ์ด ๊ธธ์ง๋ง, ์์ .. 2022. 4. 28. ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ / Promise / async / await / fetch ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ตฌ์กฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ ์ธ์ด์ด๋ฉฐ ๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ค. ํธ์ถ ์คํ(Call Stack)์ด ํ๋์ฌ์ ์คํ ๋ด์ ์์ธ ์์ ์ ์์๋๋ก ์ฒ๋ฆฌํ๋ค. ํ์ง๋ง, ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ๊ทธ ์์ ์ด ๋๋๊ณ ์ฝ๋ฐฑํ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค์ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค. ๊ทธ ์๊ฐ ๋์์ ๋๊ธฐํด์ผ ํ๋ฏ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค. setTimeout() ์ผ๋ก ์ผ์ ์๊ฐ ๋์ ์์ ์ ์ง์ฐ์ํค๋ ์์์ด๋ค. ์ด ์์ ๋ฅผ ์คํํ๋ฉด 3์ด ๋ค์ '3์ด ์ง์ฐ!'์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ฐ๋๋ค. setTimeout(function() { console.log('3์ด ์ง์ฐ!'); }, 3000); ์ง๊ธ์ 3์ด์ง๋ฆฌ ์ฝ๋์ด์ง๋ง, ์๋ฒ์์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ฑ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋๋ ๋ ์๊ฐ์ด ๊ธธ์ด์ง๊ฒ ๋๋ค.. 2022. 4. 20. ์ด์ 1 2 3 4 5 ยทยทยท 8 ๋ค์