log

AWS S3๋ก CRA ๋ฐฐํฌ + GitHub Actions๋ก ์๋ํ (2)
๐ GitHub Actions๋ก ๋ฐฐํฌ ์๋ํ ํ๋ก์ ํธ์ CICD.yml ํ์ผ ์์ฑ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ .github/workflows ํด๋๋ฅผ ์์ฑํ๋ค. ํด๋น ๊ฒฝ๋ก์ CICD.yml ํ์ผ์ ์์ฑํ๊ณ ์๊ฒฉ์ ์ ๋ก๋ํ๋ค. name: CI/CD on: push: branches: - main workflow_dispatch: jobs: cicd: runs-on: ubuntu-latest steps: - uses: actions/checkout@main - run: npm ci - run: npm run build - name: deploy to s3 uses: jakejarvis/s3-sync-action@master with: args: --delete env: AWS_S3_BUCKET: ${{ secrets.A..

AWS S3๋ก CRA ๋ฐฐํฌ + GitHub Actions๋ก ์๋ํ (1)
๐ ์ ์ ์น ์ฌ์ดํธ ๋ฐฐํฌ AWS ์ฝ์์์ S3 ์๋น์ค ์ฌ์ฉ AWS ์ฝ์๋ก ์ด๋ํ๋ค. https://us-east-1.console.aws.amazon.com/console/home https://us-east-1.console.aws.amazon.com/console/home us-east-1.console.aws.amazon.com ๊ฒ์์ ํตํด S3 ์๋น์ค๋ก ์ด๋ํ๋ค. ๋ฒํท ๋ง๋ค๊ธฐ ์ข์ธก ๋ฉ๋ด์์ ๋ฒํท ํญ์ผ๋ก ์ด๋ํ๋ค. ์ฌ๊ธฐ์ ๋ฒํท์ ํ๋์ ์ ์ฅ์ ๊ตฌํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํตํด ๋ฒํท์ ์์ฑํ๋ค. ๋ฒํท ์ด๋ฆ์ AWS ๋ฆฌ์ ์ธํ ํ๋ค. ๊ฐ์ฒด ์์ ๊ถ์ ๊ถ์ฅํ๋ ์ธํ ์ธ ACL ๋นํ์ฑ์ผ๋ก ๋๋ค. ๋ฒํท์ ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ฐจ๋จ ์ค์ ์ผ๋ก ์ด๋ํ๋ค. ํ๋ก์ ํธ ๋ฐฐํฌ๋ฅผ ์ํด ์ฐจ๋จ์ ํด์ ํ๋ค. ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ํตํด ..
![[์ผ๋ฌ์คํธ๋ ์ดํฐ] PSD ํ์ผ SVG๋ก ๋ณํํ๊ธฐ + ํ
์คํธ ํจ์คํ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpafPg%2FbtrwnCn73TF%2F4k1y8DFYXHFLEn1oPpAIHk%2Fimg.png)
[์ผ๋ฌ์คํธ๋ ์ดํฐ] PSD ํ์ผ SVG๋ก ๋ณํํ๊ธฐ + ํ ์คํธ ํจ์คํ
PSD ํ์ผ SVG๋ก ๋ณํํ๊ธฐ + ํ ์คํธ ํจ์คํ 1. ์ผ๋ฌ์คํธ๋ ์ดํฐ์์ [ํ์ผ - ์ด๊ธฐ] ๋๋ ctrl + O๋ก PSD ํ์ผ์ ์ด์ด์ค๋ค. 2. ์ํ๋ ์ต์ ์ ์ฒดํฌํ๊ณ ํ์ธ์ ํด๋ฆญํ๋ค. (ํฌํ ์ต์์ ์์ ํ ๋ ์ด์ด๋ฅผ ๋ณด์กดํ๊ณ ์ถ๋ค๋ฉด '๋ ์ด์ด๋ฅผ ์ค๋ธ์ ํธ๋ก ๋ณํ' ์ต์ ์ ์ ํํ๊ณ ํ๋๋ก ํฉ์น๊ณ ์ถ๋ค๋ฉด '๋ ์ด์ด๋ฅผ ๋จ์ผ ์ด๋ฏธ์ง๋ก ๋ณํฉ'์ ์ ํ) 3. SVG์์ ํ ์คํธ๋ฅผ ํจ์ค๋ก ๋ค๋ฃจ๊ธฐ ์ํด ์ผ๋ฌ์คํธ๋ ์ดํธ ๋ด์์ ์ค๋ธ์ ํธํํด์ฃผ๋ ์์ ์ ์งํํ๋ค. ์ ํ ๋๊ตฌ(v)๋ก ๋ณํํ ์์๋ฅผ ์ ํํด์ค๋ค. 3. [๋ฌธ์ - ์ค๊ณฝ์ ๋ง๋ค๊ธฐ] ๋๋ shift + ctrl + O๋ก ์์๋ฅผ ํจ์ค๋ก ๋ณํํ๋ค. 4. [ํ์ผ - ๋ด๋ณด๋ด๊ธฐ - ๋ด๋ณด๋ด๊ธฐ ํ์] ํด๋ฆญ ํ ํ์ผ ํ์์ SVG๋ก ์ธํ ํด์ PSD๋ฅผ SVG๋ก ์ ์ฅํ๋ค. 5. ์ฝ๋ ์๋ํฐ๋ก SV..

Three.js๋ก 3D ํ์ ๋ชฉ๋ง ๊ตฌํํ๊ธฐ
3D ํ์ ๋ชฉ๋ง ๊ตฌํ Three.js๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ์นํ์ด์ง์ 3D ์ค๋ธ์ ํธ๋ฅผ ํํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์์ ์ด๋ฏธ์ง๋ Three.js๋ก ํ์ ๋ชฉ๋ง๋ฅผ ๊ตฌํํ ๊ฒ์ธ๋ฐ, ๊ทธ ๊ณผ์ ์ ๊ธฐ๋กํด๋ณด๊ณ ์ ํ๋ค.๐ ๋์์ธ ๋ ํผ๋ฐ์ค๋ก๋ ์๋ ์ฝ๋ํ์ ์ฐธ๊ณ ํ๋ค. See the Pen Responsive Houdini 3D Carousel ๐ด by Jhey (@jh3y) on CodePen. Three.js ํ๊ฒฝ ๊ตฌ์ฑ ์๋๋ Three.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๊ฒ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ค์ด๋ค. ์ด๋ฒ์๋ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์์ ์ํฌํธํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค. npm ํจํค์ง๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ # three.js npm install --save three # vite npm install --s..
[JS] ์๊ฐ ํฌ๋งคํ (์์ผ, ์๊ฐ, AM/PM)
See the Pen Untitled by 23651 (@23651) on CodePen. function getDate() { const week = new Array('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'); const today = new Date(); const dayName = week[today.getDay()]; const hours = today.getHours() % 12 ? today.getHours() % 12 : 12; const minutes = today.getMinutes() < 10 ? '0' + today.getMinutes() : today.getMinutes(); const..
![[Chrome] ํฌ๋กฌ์ผ๋ก ๊ฐ๋จํ๊ฒ ๋ก์ปฌ ์น ์๋ฒ ๊ตฌ์ถํ๊ธฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV0syJ%2FbtrtieqddZ3%2FLYmtWDDvHoCm5K4Yn7sOm0%2Fimg.png)
[Chrome] ํฌ๋กฌ์ผ๋ก ๊ฐ๋จํ๊ฒ ๋ก์ปฌ ์น ์๋ฒ ๊ตฌ์ถํ๊ธฐ
Github ๋ฐ๋ชจ๋ ์นํ์ด์ง๋ฅผ ํ ์คํธํ๊ณ ์ถ์๋ ํฌ๋กฌ์ Web Server for Chrome ์ฑ์ผ๋ก ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ํ๊ฒฝ์ ๊ตฌ์ฑ ํด๋ณผ ์ ์๋ค. 1. ์ค์น ํฌ๋กฌ ์น ์คํ ์ด์์ Web Server for Chrome์ ์ค์นํ๋ค. https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb Web Server for Chrome A Web Server for Chrome, serves web pages from a local folder over the network, using HTTP. Runs offline. chrome.google.com 2. ์ฑ ์คํ chrome://apps/ ์ ์ ์ ..
![[CSS] ํ๊ดํ ๋ฐ์ค ํจ๊ณผ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb41Crn%2FbtrbVoplmrJ%2FgRJIlbK91fseq2vsBahqN1%2Fimg.png)
[CSS] ํ๊ดํ ๋ฐ์ค ํจ๊ณผ
html HIGHLIGHT TEXT css ๋ฐฉ๋ฒ 1 : box-shadow span { /* inset | offset-x | offset-y | color */ box-shadow: inset 0 -20px 0 #bfffa1; } ๋ฐฉ๋ฒ 2 : background span { background: linear-gradient(to top, #bfffa1 40%, transparent 40%); } ๋ฐฉ๋ฒ 3 : pseudo element span { position: relative; } span:after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 40%; background-color: #bfffa1; z-in..
![[ํฌํ ์ต] ๊ณฑํ๊ธฐ ๋ธ๋ ๋ฉ ๋ชจ๋ ๋ ์ด์ด๋ฅผ PNG๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeACRWz%2Fbtq44O3rjrO%2FDDskMVkSjwHmzCXRy6Z2r1%2Fimg.png)
[ํฌํ ์ต] ๊ณฑํ๊ธฐ ๋ธ๋ ๋ฉ ๋ชจ๋ ๋ ์ด์ด๋ฅผ PNG๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ
โป multiply ๋ธ๋ ๋ฉ ๋ชจ๋ ๋ ์ด์ด์ ์๋ฒฝํ๊ฒ ๋๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ์๋๋๋ค. ํฌ๋ช ๋ ๋ฑ์ ์ ์ฉํด์ ์ต๋ํ ๋น์ทํ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฆผ์๊ฐ์ ๊ฐ๋จํ ํ ์ค์ฒ๋ฅผ ๋จ๋ ์ผ๋ก ๊ฐ์ ธ์์ผ ํ ๋ ํ์ฉํ ์ ์์ต๋๋ค. 1. multiply๊ฐ ์ ์ฉ๋ ๋ ์ด์ด๋ฅผ ๋ณต์ฌํฉ๋๋ค. (ctrl + a, ctrl + c) 2. ์ ๋ ์ด์ด๋ฅผ ์ถ๊ฐ ํ ํ ๊ฒ์ ์์ผ๋ก ์ฑ์์ค๋๋ค. (ctrl + shift + n, alt + delete) 3. ๋ ์ด์ด ๋ง์คํฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค. (๋ ์ด์ด ํจ๋์์ ์ ํ) 4. ๋ ์ด์ด ๋ง์คํฌ๋ฅผ ์ ํํ ํ multiply ์ด๋ฏธ์ง๋ฅผ ๋ถ์ฌ๋ฃ์ต๋๋ค. (alt + ํด๋ฆญ, ctrl + v) 5. ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์์ผ์ค๋๋ค. (ctrl + i) 6. ๋ ์ด์ด์ ๋ถํฌ๋ช ๋๋ฅผ ์กฐ์ ํ์ฌ multiply ์ด๋ฏธ์ง์ ๋น์ทํ..
![[Excel] ์์
์์  (๊ณต๋ฐฑ ํน์๋ฌธ์) ์ ๊ฑฐํ๊ธฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLoGJR%2FbtraIocxb6B%2FaVbeLLnfVbVCeOCfP6QfP0%2Fimg.png)
[Excel] ์์ ์์  (๊ณต๋ฐฑ ํน์๋ฌธ์) ์ ๊ฑฐํ๊ธฐ
์์ ๋ด๋ถ ์ปจํ ์ธ ๋ฅผ ๋ณต์ฌํด์ ์๋ํฐ๋ก ๋ถ์ฌ๋ฃ๊ธฐํ๋ฉด ์์ค์์๋ ๋ณด์ด์ง๋ ์์ง๋ง  ๊ฐ ์จ๊ฒจ์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ↓ ์์ ๋ด๋ถ ์ปจํ ์ธ ๋ฅผ ๋ณต์ฌํ๊ธฐ ์ ์ ์ปจํ ์ธ ๋ด  ๋ฅผ ์ญ์ ํด์ฃผ์ด์ผ ํ๋ค. 1. Ctrl + H 2. ์ฐพ์ ๋ด์ฉ : Alt + 160 3. ๋ฐ๊ฟ ๋ด์ฉ : ๋์ด์ฐ๊ธฐ 4. ๋ชจ๋ ๋ฐ๊พธ๊ธฐ
![[VSCode] ํญ ํค๊ฐ ์ ๋ ๋ ํด๊ฒฐ๋ฒ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNJw1Z%2FbtqZef5PUhS%2FfGMR0b4s4kVHvU5lcZUSx1%2Fimg.jpg)
[VSCode] ํญ ํค๊ฐ ์ ๋ ๋ ํด๊ฒฐ๋ฒ
ํ๋จ ์ํ๋ฐ์ 'tab์ผ๋ก ํฌ์ปค์ค ์ด๋'์ด ํ์ฑํ ๋์ด์๋์ง ํ์ธ ํ์ฑํ ๋์ด ์๋ค๋ฉด, Ctrl + M ์ผ๋ก ํด์