IT/development212 [springBoot] daum SMTP ๋ฉ์ผ ๋ฐ์ก daum์ SMTP๋ฅผ ์ด์ฉํด์ ๋ฉ์ผ ๋ฐ์กํ๋ ์์ ๊ฐ๋ฐํ๊ฒฝ: springBoot 2.7.14, gradle ์ ํ์กฐ๊ฑด(daum smtp ํ์ฑํ) ์ค์ > IAMP/POP3(์ ๊ธฐ์ ์ ๋ณด๋ฅผ ํ๋กํผํฐ์ ๊ธฐ์ ) ์์กด์ฑ ์ถ๊ฐ(gradle) implementation 'org.springframework.boot:spring-boot-starter-mail' application.yml์ smtp ์ค์ ์ถ๊ฐ spring: mail: host: smtp.daum.net port: 465 username: #์ก์ ๋ฉ์ผ์ฃผ์(๋ณด๋ด๋ ๋ฉ์ผ ์ฃผ์) password: #์ก์ ๋ฉ์ผ ์ฃผ์์ ๋น๋ฐ๋ฒํธ(์ฌ๊ธฐ์ 2์ฐจ ์ธ์ฆ ์ฑ ๋น๋ฐ๋ฒํธ ์ ๋ ฅํจ) properties: #tls ์ค์ mail: smtp: auth: true ssl: enable:.. IT/development 2023. 8. 22. [github] github ์น vs code ์ฌ์ฉ ์น์ผ๋ก ํธ์ง๊ธฐ๋ฅผ ์ด๊ณ ์ถ์ repository์ ๊ฐ์ github.com์ .dev๋ก ์์ github.dev๋ก ๋ณ๊ฒฝ ์ ์๋์ฒ๋ผ ์น ๋ฒ์ vs code๊ฐ ์คํ๋๋ค. IT/development 2023. 8. 17. [Vue.js] Vue.js ์ฒจ๋ถํ์ผ ์ ๋ก๋ upload.html ์ฒจ๋ถํ์ผ [.jpg, .jpeg, .png, .xlsx, .hwp, .docx, .pptx, .pdf] add remove ํ์ฅ์๋ .jpg, .jpeg, .png, .xlsx, .hwp, .docx, .pptx, .pdf ๋ง ๊ฐ๋ฅํฉ๋๋ค. 5MB์ดํ ํ์ผ๋ง ์ฌ๋ ค์ฃผ์ธ์. {{ item.num }}.์ฒจ๋ถ @change="handleFileChange($event, index)" ํ์ผ ์ฒจ๋ถ ์ ์ฅ ์ ์ฝ๋๋ ๋์ ์ผ๋ก ์ฒจ๋ถํ์ผ ์์ญ์ ์ถ๊ฐ/์ญ์ ํ ์ฒจ๋ถํ์ผ์ ์ ๋ก๋ ํ๋ ๊ฐ๋จํ ์์ ์ด๋ค. ์ ์ฒด์ ์ผ๋ก ํฌ์คํ ์ ์ํด ํธ์งํ ์ฝ๋๋ผ์ ํ๊ทธ ์ด๊ณ ๋ซ๊ณ ์ ๋ง์ ์๋ ์๋ค. ์ฒจ๋ถํ์ผ ๊ด๋ จ ๋ฉ์๋๋ ์ด 4๊ฐ์ด๋ค. ์ฒจ๋ถํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ฐฐ์ด์ด ์ธ์คํด์ค์ data ๊ฐ์ฒด์์ ์ด๊ธฐํ ๋ ์ํ์ด๊ณ addAtt.. IT/development 2023. 8. 13. [JavaScript] ํ ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ๋ฒ(feat. '(๋ฐฑํฑ)) javascript์์ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํด์ ๋ ๊ฐ๋ ์ฑ ๋์ ์ฝ๋๋ฅผ ์์ฑ ํ ์ ์๋ค. ์ ๋ ์ฝ๋๋ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ค. ํ์ง๋ง ์ผ์ชฝ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ ๋ ๊ฐ๋ ์ฑ์ด ์ข๋ค. ๋ณ์์ ๋ฌธ์์ด ๊ตฌ๋ถ์ด ์ ๋๋ค. ํ ํ๋ฆฟ ๋ฌธ์์ด์ ๋ฐฑํฑ(`)์์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค. ๋ฐฑํฑ์ ํค๋ณด๋ 1 ์ข์ธก์ ์๋ค. IT/development 2023. 8. 13. [JavaScript] ์์ ํ์ ์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ ํจ์ ํธ์ถ(javascript ์์ฃผ) ๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ ์๋์ฒ๋ผ ํ์ ์ผ๋ก ์ด์์(html ์ฝ๋๋ ์๋ต) parent.html //๋ฒํผ ํด๋ฆญ ์ child๋ผ๋ ํ์ ํธ์ถ $("#btn").on("click", function() { //ํ์ ํธ์ถ(openPopUp()์ด๋ผ๋ ๊ณตํตํจ์์์๋ ํ์ ํธ์ถํ๋ค๊ณ ๊ฐ์ ) const popup = openPopUp("/child", 1100, 700, "child"); }); //์์ ํ์ ์์ ํธ์ถํ๋ ํจ์(์์์ฐฝ์์ ๋์ด์จ ์ฌ์ ์๋ฒํธ, ๊ณ ๊ฐ๋ช ์ ๋ถ๋ชจ์ ํ๋์ ์ ์ฉ) function chooseClient(clientBizNo, clientNm) { $("#clientBizNo").val(clientBizNo); $("#projClientNm").val(clientNm); } child.html /** .. IT/development 2023. 8. 13. [springBoot] ์๋ก ๋ค๋ฅธ branch๋ฅผ ๋์์ ๋์ฐ๋ ค๋ฉด? ๊ฑฐ์ฐฝํ ๋ฐฉ๋ฒ์ ์๋๊ณ ๋งค์ฐ ๊ฐ๋จํ๋ค. ์ฌ์ด ์ดํด๋ฅผ ์ํด ์์ค์ ์จ ๋ณด๊ฒ ๋ค. A๋ผ๋ branch๋ springBoot, thymeleaf, javascript/jQuery๋ก ๊ฐ๋ฐ ๋์ด ์๋ ์ํ์ด๊ณ B๋ผ๋ branch๋ A branch์์ ์๋ก branch๋ฅผ ๋ด ๋ธ๋์น๋ค. B branch์์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋๋ฅผ javascript/jQuery๋ฅผ Vue.js๋ก ์ ํํ๋ ์์ ์ ํ๊ธฐ ์ํด์๋ค. A branch์์ ๊ธฐ์กด์ ๋๋ ๊ธฐ๋ฅ์ ์ ์งํ๋ฉด์ ํ๊ฒฝ๋ง ๋ณํ๋๋ ์ํฉ์ด๋ค. ์ด ๋ A branch์ ํ๋ฉด์ ๋ณด๋ฉด์ ๊ฐ๋ฐํ๋๊ฒ ๋น์ฐํ ํธํ๋ค. ์ด๋ฐ ์ํฉ์ด๋ผ๊ณ ๊ฐ์ ํ์ ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ๋ด ๊ฒฝ์ฐ๋ ์๋์ฒ๋ผ ํ๋ค. A branch๋ port ๋ณ๊ฒฝ ํ build ํด์ jarํ์ผ๋ก ๋ก์ปฌ์์ ๋์ฐ๊ณ B branch.. IT/development 2023. 8. 12. [Vue.js] ๊ธฐ์กด thymeleaf์ Vue.js ์ ์ฉํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ ์กด์ฌ node.js ํ๊ฒฝ์ผ๋ก ๊ตฌ๋(node.js ๋ฐํ์ ํ๊ฒฝ ํ์, ์๋น์ค ๊ตฌ๋ ์ ์๋ฒ์ port ๋ค๋ฅด๊ฒ ๊ตฌ์ฑ) ๊ธฐ์กด thyemeleafํ์ผ์ script๋ง ์ถ๊ฐ(thyemelaf ๋ ๋๋ง ์ดํ ์กฐ์ํ๋ ๋ฐฉ์์ด๋ผ node.js ๋ถํ์) ์ฌ๊ธฐ์ 2๋ฒ ์งธ ๋ฐฉ๋ฒ ์ฑํ ๊ธฐ์กด html์ body ํ๊ทธ์์ Vue.js ๊ด๋ จ script import(์ค์ ๋ฐฐํฌ ์์ jsํ์ผ ์ง์ import ๊ถ์ฅ) vue.js๋ฅผ ์ ํ div root id ์ค์ (์์) ์ฃผ์๋ก ์ฌ์๋ช ๊ฒ์ ์ด๊ธฐํ ์ฌ์ ๋ชฉ๋ก ์ฌ์์น์ธ ์ ์ฒญ ์๋ฒ ์ฌ์๋ช ์ง๊ธ ์ง์ฑ ์ ํ๋ฒํธ ์ด๋ฉ์ผ {{ item.no }} {{ item.empNm }} {{ item.positionCd }} {{ item.roleCd }} {{ item.empHp }} {{ i.. IT/development 2023. 8. 10. [Vue.js] ์ฝ๋ฐฑ ํจ์์์ this ์ฌ์ฉ ์ ์ ์์ โป ์ผ๋ฐ์ ์ผ๋ก javascript์์ this๋ ์ฌ์ฉํ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํด ex)๋ทฐ ์ธ์คํด์ค์ methods ๊ฐ์ฒด์ ํจ์ ๋ด ์ฝ๋ฐฑํจ์์์ ์ธ์คํด์ค์ data ๊ฐ์ฒด ๊ฐ์ ์ธํ ํ๋ ๋ก์ง Vue ์ธ์คํด์ค new Vue({ //element id el: '#project-client-req', //vue์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ data: { client: { clientBizNo: '', //์ฌ์ ์๋ฑ๋ก๋ฒํธ clientNm: '', //์ํธ clientZipNo: '', //์ฐํธ๋ฒํธ(์ฃผ์๊ฒ์ API๋ก ์ธํ ) clientBasAddr: '', //๊ธฐ๋ณธ์ฃผ์(์ฃผ์๊ฒ์ API๋ก ์ธํ ) clientDtlAddr: '' //์์ธ์ฃผ์ } }, methods: { //์ฃผ์ ๊ฒ์ searchAddr() { let add.. IT/development 2023. 8. 10. [Vue.js] ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ ๋ถ๋ชจ ์ปดํฌ๋ํธ new Vue({ //element id el: '#main', //vue์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ data: { items: [], // ๋ฐ์ดํฐ ๋ชฉ๋ก currentPage: 1, //ํ์ฌ ํ์ด์ง firstPage: 0, //์ฒซ๋ฒ ์งธ ํ์ด์ง lastPage: 0, //๋ง์ง๋ง ํ์ด์ง startIdx: 0, //์ฒซ๋ฒ ์งธ ํ์ด์ง ๋ฒํธ endIdx: 0, //๋ง์ง๋ง ํ์ด์ง ๋ฒํธ .. IT/development 2023. 8. 9. [Vue.js] modal์ฐฝ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์๋ ๋ ๋ฌธ์ : modal ํ์ ์ ajax๋ก ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ค์ง๋ง ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ ํ๊ฒฝ: thyemelaf ํ์ผ์ vue.js๋ฅผ ์ ์ฉ(๋ณ๋ node.js ํ๊ฒฝ X) thymeleafํ์ผ์ vue.js๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ์ modal์ฐฝ์ ์๋์ฒ๋ผ ๋ฐ์ธ๋ฉ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ์์ธ์ ๊ฐ๋จํ๋ค. ๊ธฐ์กด thyemelafํ์ผ์์๋ ์๋์ฒ๋ผ ์ ์ฒด๋ฅผ ๋ํ๋ด๋ div ์์ญ ๋ฐ์ ๋ชจ๋ฌ์ฐฝ div๊ฐ ์์์ ๊ธฐ์กด์๋ javascript/jQuery๋ก ํ์ด์ง ๋ก๋ ํ DOM์ ์ง์ ์ ๊ทผํด์ ์์ ํด์ ๋ฌธ์ ๊ฐ ์๋์์ ํ์ง๋ง vue.js์์๋ root element์์ ๋ชจ๋ฌ์์ญ์ด ํฌํจ๋์ด ์์ด์ผ vue.js์ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ด vue.js์ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ(vue.js์์๋ DOM์ ์ง์ ์ ๊ทผํ๋ ์ผ์ด ๊ฑฐ์ ์์) ์ ์ฝ๋์ฒ๋ผ m.. IT/development 2023. 8. 6. ์ด์ 1 ยทยทยท 4 5 6 7 8 9 10 ยทยทยท 22 ๋ค์