<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>crowwan</title><description>crowwan 의 개발 블로그 — 매일 쌓는 기록</description><link>https://crowwan.github.io/</link><item><title>모듈은 어떻게 번들이 되나 #3 — 왜 번들러가 이렇게 많은가</title><link>https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-3-%EC%99%9C-%EB%B2%88%EB%93%A4%EB%9F%AC%EA%B0%80-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EB%A7%8E%EC%9D%80%EA%B0%80/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-3-%EC%99%9C-%EB%B2%88%EB%93%A4%EB%9F%AC%EA%B0%80-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EB%A7%8E%EC%9D%80%EA%B0%80/</guid><description>webpack·Rollup·esbuild·Vite·Rspack·Turbopack·Rolldown — 왜 이렇게 많을까. 이름을 외우는 대신 각 도구가 어떤 문제를 풀려고 태어났는지 계보를 따라가면 지형도가 저절로 그려진다. Browserify부터 Rust 세대까지, 그리고 2026년의 수렴 지점.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate></item><item><title>모듈은 어떻게 번들이 되나 #2 — 안 쓰는 코드는 어떻게 사라지나</title><link>https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-2-%EC%95%88-%EC%93%B0%EB%8A%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EB%9D%BC%EC%A7%80%EB%82%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-2-%EC%95%88-%EC%93%B0%EB%8A%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EB%9D%BC%EC%A7%80%EB%82%98/</guid><description>import한 함수만 번들에 남고 나머지는 사라진다. 누가 지웠나(tree-shaking), 왜 CommonJS에선 안 되나, 왜 개발 서버에선 안 지워지나(dev≠prod), 그리고 import type은 왜 필수인가 — 1편의 정적 그래프 위에서 번들러가 실제로 부리는 것들을 따라갔다.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>모듈은 어떻게 번들이 되나 #1 — 브라우저는 원래 import를 몰랐다</title><link>https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-1-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EB%8A%94-import%EB%A5%BC-%EB%AA%B0%EB%9E%90%EB%8B%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AA%A8%EB%93%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B2%88%EB%93%A4%EC%9D%B4-%EB%90%98%EB%82%98-1-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EB%8A%94-import%EB%A5%BC-%EB%AA%B0%EB%9E%90%EB%8B%A4/</guid><description>브라우저는 원래 import를 몰랐다. 수백 개 파일에 쓰는 import가 하나로 합쳐져 브라우저에서 돌기까지 무슨 일이 일어나는지 — 모듈 시스템(격리·정적)부터 ESM 3단계 로딩, 그리고 번들러 런타임까지 밑바닥부터 따라갔다.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #6 — 남의 라이브러리 타입을 내 코드에서 확장하기, module augmentation</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-6-module-augmentation/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-6-module-augmentation/</guid><description>#3에서 declare module 한 줄로 번역 키를 잠갔는데, 그게 왜 아무도 import 안 해도 프로그램 전역에 퍼지는지가 남아 있었다. i18next의 빈 interface를 채우는 module augmentation을 밑바닥까지 파고, barrel export가 왜 다른 앱까지 타입을 오염시키는지까지 내려갔다.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>모래 위의 디버깅 — 9규칙 중 하나를 건너뛰면 나머지가 무너진다</title><link>https://crowwan.github.io/blog/%EB%AA%A8%EB%9E%98-%EC%9C%84%EC%9D%98-%EB%94%94%EB%B2%84%EA%B9%85/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AA%A8%EB%9E%98-%EC%9C%84%EC%9D%98-%EB%94%94%EB%B2%84%EA%B9%85/</guid><description>디버깅 9규칙 중 여덟 개를 지켜도 1번(시스템 이해)을 건너뛰면 나머지가 전부 모래 위의 집이 된다. &apos;이거 간단하네&apos; 한마디로 이틀을 잘 정리된 오답에 쓴 기록.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #5 — JS 모듈 시스템, 모듈이냐 스크립트냐</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-5-js-%EB%AA%A8%EB%93%88-%EC%8B%9C%EC%8A%A4%ED%85%9C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-5-js-%EB%AA%A8%EB%93%88-%EC%8B%9C%EC%8A%A4%ED%85%9C/</guid><description>#3에서 declare module 한 줄로 번역 키를 잠갔는데, 그게 왜 아무도 import 안 해도 프로그램 전역에 퍼지는지는 안 풀렸다. 그걸 이해하려고 TypeScript를 잠깐 내려놓고 그 밑 JS 모듈 시스템으로 내려갔다 — 모듈이냐 스크립트냐를 누가 정하고, ESM과 CommonJS는 왜 다른가.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #3 — JSON을 타입으로, 도구 없이 declare module로 키 잠그기</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-3-json%EC%9D%84-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-declare-module/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-3-json%EC%9D%84-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-declare-module/</guid><description>번역 키를 타입으로 잠그려고 코드 생성기부터 떠올렸는데, 막상 해보니 내가 직접 짠 건 열 줄 남짓이었다. 중첩 키 평탄화 같은 어려운 부분은 i18next 타입이 이미 다 해두고 있었다.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #4 — 타입을 집합으로 보기, i18next 타입을 읽는 법</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-4-%ED%83%80%EC%9E%85%EC%9D%84-%EC%A7%91%ED%95%A9%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-4-%ED%83%80%EC%9E%85%EC%9D%84-%EC%A7%91%ED%95%A9%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EA%B8%B0/</guid><description>#3에서 keyof·조건부 타입·템플릿 리터럴을 &quot;썼지만&quot; 왜 동작하는지는 파고들지 않았다. &apos;타입은 값의 집합이다&apos; 한 문장으로 그 밑바닥을 꿰고, i18next의 실제 타입 한 줄을 직접 읽어냈다.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #2 — 왜 조용히 터지나, 그리고 왜 개발 단계에서 잡아야 하나</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-2-%EC%99%9C-%EC%A1%B0%EC%9A%A9%ED%9E%88-%ED%84%B0%EC%A7%80%EB%82%98-shift-left/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-2-%EC%99%9C-%EC%A1%B0%EC%9A%A9%ED%9E%88-%ED%84%B0%EC%A7%80%EB%82%98-shift-left/</guid><description>번역 키 t(&apos;user.profile.title&apos;), 딱 한 글자 잘못 쳤을 뿐인데 컴파일도 CI도 다 통과했다. 그런데 프랑스어 화면엔 영어가 떠 있다. 왜 이런 버그는 런타임에야 조용히 드러날까 — 그리고 나는 이걸 어디서 잡았어야 했을까.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate></item><item><title>번역 키를 컴파일 타임에 잡기 #1 — TypeScript는 언제 무엇을 하는가</title><link>https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-1-typescript%EB%8A%94-%EC%96%B8%EC%A0%9C-%EB%AC%B4%EC%97%87%EC%9D%84-%ED%95%98%EB%8A%94%EA%B0%80/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B2%88%EC%97%AD-%ED%82%A4%EB%A5%BC-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%83%80%EC%9E%84%EC%97%90-%EC%9E%A1%EA%B8%B0-1-typescript%EB%8A%94-%EC%96%B8%EC%A0%9C-%EB%AC%B4%EC%97%87%EC%9D%84-%ED%95%98%EB%8A%94%EA%B0%80/</guid><description>t(&apos;user.profile.title&apos;)의 오타는 왜 컴파일도 테스트도 다 통과하고 런타임에야 조용히 터질까. 그걸 타입만으로 잡고 싶어서, 먼저 TypeScript가 언제 무엇을 하는지 — 컴파일·실행 모델과 타입 소거부터 다시 봤다.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>좋은 테스트는 어떻게 쓰나 — e2e와 Playwright</title><link>https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%93%B0%EB%82%98-e2e%EC%99%80-playwright/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%93%B0%EB%82%98-e2e%EC%99%80-playwright/</guid><description>1·2편이 &apos;무엇을, 어디에&apos;였다면 이번 편은 &apos;그래서 어떻게 쓰나&apos;다. e2e를 Playwright로 — 왜 그렇게 생겨먹었는지 따라가면 e2e의 본질이 보인다.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate></item><item><title>좋은 테스트는 어디에 두나</title><link>https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EB%91%90%EB%82%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EB%91%90%EB%82%98/</guid><description>좋은 테스트를 손에 쥐고 나니 다음 질문이 왔다 — 그래서 그걸 어디에 두나? 단위·통합·e2e, 그리고 프론트엔드.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate></item><item><title>좋은 테스트는 구현이 아니라 동작을 검증한다 — 동작 vs 구현, 단 하나의 칼날</title><link>https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EA%B5%AC%ED%98%84%EC%9D%B4-%EC%95%84%EB%8B%88%EB%9D%BC-%EB%8F%99%EC%9E%91%EC%9D%84-%EA%B2%80%EC%A6%9D%ED%95%9C%EB%8B%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%A2%8B%EC%9D%80-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8A%94-%EA%B5%AC%ED%98%84%EC%9D%B4-%EC%95%84%EB%8B%88%EB%9D%BC-%EB%8F%99%EC%9E%91%EC%9D%84-%EA%B2%80%EC%A6%9D%ED%95%9C%EB%8B%A4/</guid><description>같은 동작인데 구현을 바꿨다고 테스트가 깨진다면, 그 테스트는 무엇을 지키고 있는 걸까. 그 직관을 끝까지 밀어붙인 기록.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate></item><item><title>그래서 어제 방청소를 했다</title><link>https://crowwan.github.io/blog/%EA%B7%B8%EB%9E%98%EC%84%9C-%EC%96%B4%EC%A0%9C-%EB%B0%A9%EC%B2%AD%EC%86%8C%EB%A5%BC-%ED%96%88%EB%8B%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EA%B7%B8%EB%9E%98%EC%84%9C-%EC%96%B4%EC%A0%9C-%EB%B0%A9%EC%B2%AD%EC%86%8C%EB%A5%BC-%ED%96%88%EB%8B%A4/</guid><description>AI로 코드를 너무 쉽게 고치게 되자 6개월 동안 구조를 마구 갈아엎었다. 방어선은 없었고, 버그는 또 AI로 막았다. 무엇이 새는지부터 측정하기로 한 이야기 — 그리고 어제, 진짜로 방을 치운 이야기다.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><item><title>AI로 빠르게 개발하는 팀이 회귀와 싸운 기록 — 결국 &apos;측정&apos;부터</title><link>https://crowwan.github.io/blog/ai%EB%A1%9C-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EA%B0%9C%EB%B0%9C%ED%95%98%EB%8A%94-%ED%8C%80%EC%9D%B4-%ED%9A%8C%EA%B7%80%EC%99%80-%EC%8B%B8%EC%9A%B4-%EA%B8%B0%EB%A1%9D/</link><guid isPermaLink="true">https://crowwan.github.io/blog/ai%EB%A1%9C-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EA%B0%9C%EB%B0%9C%ED%95%98%EB%8A%94-%ED%8C%80%EC%9D%B4-%ED%9A%8C%EA%B7%80%EC%99%80-%EC%8B%B8%EC%9A%B4-%EA%B8%B0%EB%A1%9D/</guid><description>AI로 개발 속도가 빨라지자 회귀가 폭증했다. 온갖 검증을 시도하다 결국 &apos;무엇이 새는지부터 측정하자&apos;로 돌아온 이야기다.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>z-fighting을 6시간 쫓다가 polygon offset을 다시 배웠다</title><link>https://crowwan.github.io/blog/z-fighting%EC%9D%84-6%EC%8B%9C%EA%B0%84-%EC%AB%93%EB%8B%A4%EA%B0%80-polygon-offset%EC%9D%84-%EB%8B%A4%EC%8B%9C-%EB%B0%B0%EC%9B%A0%EB%8B%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/z-fighting%EC%9D%84-6%EC%8B%9C%EA%B0%84-%EC%AB%93%EB%8B%A4%EA%B0%80-polygon-offset%EC%9D%84-%EB%8B%A4%EC%8B%9C-%EB%B0%B0%EC%9B%A0%EB%8B%A4/</guid><description>VTK에선 정상이던 화면이 three.js로 옮기자 두 군데서 깨졌다. 결론은 셰이더 한 줄이지만, 거기까지의 경로가 사실상 전부였다.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>한 줄의 보안 패치가 PWA를 깨운 이야기 — noopener와 링크 캡처</title><link>https://crowwan.github.io/blog/%ED%95%9C-%EC%A4%84%EC%9D%98-%EB%B3%B4%EC%95%88-%ED%8C%A8%EC%B9%98%EA%B0%80-pwa%EB%A5%BC-%EA%B9%A8%EC%9A%B4-%EC%9D%B4%EC%95%BC%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%95%9C-%EC%A4%84%EC%9D%98-%EB%B3%B4%EC%95%88-%ED%8C%A8%EC%B9%98%EA%B0%80-pwa%EB%A5%BC-%EA%B9%A8%EC%9A%B4-%EC%9D%B4%EC%95%BC%EA%B8%B0/</guid><description>보안 스캐너 경고를 끄려고 넣은 noopener 한 줄. 그게 멀쩡하던 새 탭을 설치형 PWA 창으로 깨워버렸습니다. 게다가 그 경고는 오검출이었어요.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>3D 엔진을 갈아끼우고 나서야 UV를 공부했다</title><link>https://crowwan.github.io/blog/3d-%EC%97%94%EC%A7%84%EC%9D%84-%EA%B0%88%EC%95%84%EB%81%BC%EC%9A%B0%EA%B3%A0-%EB%82%98%EC%84%9C%EC%95%BC-uv%EB%A5%BC-%EA%B3%B5%EB%B6%80%ED%96%88%EB%8B%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/3d-%EC%97%94%EC%A7%84%EC%9D%84-%EA%B0%88%EC%95%84%EB%81%BC%EC%9A%B0%EA%B3%A0-%EB%82%98%EC%84%9C%EC%95%BC-uv%EB%A5%BC-%EA%B3%B5%EB%B6%80%ED%96%88%EB%8B%A4/</guid><description>검은 메시, 흰 메시, 사라지는 텍스처… 두더지잡기처럼 끝없이 튀어나오던 버그의 진짜 정체는 &quot;개념 구멍&quot;이었습니다.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code로 나만의 AI 비서 만들기 - 경제 뉴스 자동 수집 여정</title><link>https://crowwan.github.io/blog/claude-code%EB%A1%9C-%EB%82%98%EB%A7%8C%EC%9D%98-ai-%EB%B9%84%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B2%BD%EC%A0%9C-%EB%89%B4%EC%8A%A4-%EC%9E%90%EB%8F%99-%EC%88%98%EC%A7%91-%EC%97%AC%EC%A0%95/</link><guid isPermaLink="true">https://crowwan.github.io/blog/claude-code%EB%A1%9C-%EB%82%98%EB%A7%8C%EC%9D%98-ai-%EB%B9%84%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B2%BD%EC%A0%9C-%EB%89%B4%EC%8A%A4-%EC%9E%90%EB%8F%99-%EC%88%98%EC%A7%91-%EC%97%AC%EC%A0%95/</guid><description>&quot;클로드 코드를 활용해서 AI 비서같은 걸 만들 수 있을까?&quot; 그 질문에서 시작된 삽질과 발견의 기록입니다.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate></item><item><title>엄마 손글씨 장부를 앱으로 만들게 된 이야기</title><link>https://crowwan.github.io/blog/%EC%97%84%EB%A7%88-%EC%86%90%EA%B8%80%EC%94%A8-%EC%9E%A5%EB%B6%80%EB%A5%BC-%EC%95%B1%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B2%8C-%EB%90%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%97%84%EB%A7%88-%EC%86%90%EA%B8%80%EC%94%A8-%EC%9E%A5%EB%B6%80%EB%A5%BC-%EC%95%B1%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B2%8C-%EB%90%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0/</guid><description>&quot;좋아 너도 느끼겠지만, 이거 너무 귀찮잖아.&quot; Claude에게 던진 이 한마디가 앱 기획의 시작이었습니다.</description><pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Claude에게 테스트 코드 작성을 맡기면 생기는 일</title><link>https://crowwan.github.io/blog/claude%EC%97%90%EA%B2%8C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%9D%84-%EB%A7%A1%EA%B8%B0%EB%A9%B4-%EC%83%9D%EA%B8%B0%EB%8A%94-%EC%9D%BC-7g7t4ane/</link><guid isPermaLink="true">https://crowwan.github.io/blog/claude%EC%97%90%EA%B2%8C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%9D%84-%EB%A7%A1%EA%B8%B0%EB%A9%B4-%EC%83%9D%EA%B8%B0%EB%8A%94-%EC%9D%BC-7g7t4ane/</guid><description>AI와 협업하는 테스트 자동화 워크플로우</description><pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate></item><item><title>E2E 테스트 인프라, Docker + EKS 삽질기 (그리고 EC2로 돌아온 이유)</title><link>https://crowwan.github.io/blog/e2e-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9D%B8%ED%94%84%EB%9D%BC-docker-eks-%EC%82%BD%EC%A7%88%EA%B8%B0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ec2%EB%A1%9C-%EB%8F%8C%EC%95%84%EC%98%A8-%EC%9D%B4%EC%9C%A0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/e2e-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9D%B8%ED%94%84%EB%9D%BC-docker-eks-%EC%82%BD%EC%A7%88%EA%B8%B0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ec2%EB%A1%9C-%EB%8F%8C%EC%95%84%EC%98%A8-%EC%9D%B4%EC%9C%A0/</guid><description>&quot;제대로 해보자&quot;며 Docker + EKS로 시작했습니다. 3일 만에 포기하고 EC2로 돌아왔습니다. 그 삽질의 기록과, 오버엔지니어링에서 배운 것들.</description><pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate></item><item><title>매일 아침 스탠드업, 직접 쓰고 계신가요?</title><link>https://crowwan.github.io/blog/%EB%A7%A4%EC%9D%BC-%EC%95%84%EC%B9%A8-%EC%8A%A4%ED%83%A0%EB%93%9C%EC%97%85-%EC%A7%81%EC%A0%91-%EC%93%B0%EA%B3%A0-%EA%B3%84%EC%8B%A0%EA%B0%80%EC%9A%94/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%A7%A4%EC%9D%BC-%EC%95%84%EC%B9%A8-%EC%8A%A4%ED%83%A0%EB%93%9C%EC%97%85-%EC%A7%81%EC%A0%91-%EC%93%B0%EA%B3%A0-%EA%B3%84%EC%8B%A0%EA%B0%80%EC%9A%94/</guid><description>팀에서 스탠드업 메시지 작성을 기본적으로 하고 있고, 최근에 하루동안 진행한 작업 내용들에 대해서 좀 정리가 되면 좋을 것 같다는 개인적인 필요가 생겨 고민이 있었습니다.</description><pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Todo 앱에 TDD 적용해보기(3)</title><link>https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B03/</link><guid isPermaLink="true">https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B03/</guid><description>먼저 Todo 앱에서 사용될 기본적인 Todo 엔티티를 생성해보자.</description><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Todo 앱에 TDD 적용해보기(2)</title><link>https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B02/</link><guid isPermaLink="true">https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B02/</guid><description>이전에 Todo 앱의 요구사항을 정의하고 간단한 디자인을 만들어봤다. 이제 이 요구사항을 바탕으로 앱을 만들어보자. 이번 포스트에서는 앱 초기 설정을 진행해 볼 것이다.</description><pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate></item><item><title>프론트엔드에서 도메인 모델링이 필요한 이유</title><link>https://crowwan.github.io/blog/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%AA%A8%EB%8D%B8%EB%A7%81%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0/</guid><description>-----</description><pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate></item><item><title>DTO vs Domain entities</title><link>https://crowwan.github.io/blog/dto-vs-domain-entities/</link><guid isPermaLink="true">https://crowwan.github.io/blog/dto-vs-domain-entities/</guid><description>프론트엔드 개발에서 서버 응답 데이터를 DTO(Data Transfer Object) 형태로 그대로 사용하지 않고, 클라이언트의 도메인 엔티티(Domain Entity) 형태로 변환하여 사용하는 것은 애플리케이션의 유지보수성, 유연성, 그리고 관심사의 분리를 위해 매우...</description><pubDate>Thu, 24 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Todo 앱에 TDD 적용해보기(1)</title><link>https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B01/</link><guid isPermaLink="true">https://crowwan.github.io/blog/todo-%EC%95%B1%EC%97%90-tdd-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B01/</guid><description>간단한 Todo 앱을 만들면서 타입 기반 설계를 적용해보자.</description><pubDate>Wed, 23 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Proxy!</title><link>https://crowwan.github.io/blog/proxy/</link><guid isPermaLink="true">https://crowwan.github.io/blog/proxy/</guid><description>프론트엔드 개발을 하다 보면 CORS, API 프록시, nginx, devServer proxy 같은 단어들과 함께 “프록시”라는 개념을 자주 마주치게 된다. 그런데 프록시에는 forward proxy(포워드 프록시)와 reverse proxy(리버스 프록시)라는 두 ...</description><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Axios 버전을 올리게 된 이유</title><link>https://crowwan.github.io/blog/axios-%EB%B2%84%EC%A0%84%EC%9D%84-%EC%98%AC%EB%A6%AC%EA%B2%8C-%EB%90%9C-%EC%9D%B4%EC%9C%A0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/axios-%EB%B2%84%EC%A0%84%EC%9D%84-%EC%98%AC%EB%A6%AC%EA%B2%8C-%EB%90%9C-%EC%9D%B4%EC%9C%A0/</guid><description>SSRF(Server-Side Request Forgery)는 서버 측에서 위조된 요청을 발생시켜 직접적인 접근이 제한된 내부 자원에 접근하거나 데이터를 유출하고 오작동을 유발하는 공격입니다.</description><pubDate>Fri, 18 Jul 2025 00:00:00 GMT</pubDate></item><item><title>TDD? TDD!</title><link>https://crowwan.github.io/blog/tdd-tdd/</link><guid isPermaLink="true">https://crowwan.github.io/blog/tdd-tdd/</guid><description>“가능한 모든 유효하지 않은 상태를 타입으로 표현 불가능하게 만든다면?” 이 질문에서 타입 주도 개발(Type-Driven Development)은 시작됩니다.</description><pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate></item><item><title>프론트엔드 테스트 코드</title><link>https://crowwan.github.io/blog/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C/</guid><description>프론트엔드 테스트 코드는 일반적으로 다음 네 가지로 구분할 수 있으며, 각각은 계층적으로 역할이 다르고, 목적도 명확히 구분됩니다.</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Git Flow? Trunk based?</title><link>https://crowwan.github.io/blog/git-branch-%EC%A0%84%EB%9E%B5/</link><guid isPermaLink="true">https://crowwan.github.io/blog/git-branch-%EC%A0%84%EB%9E%B5/</guid><description>Git Flow와 트렁크 기반 개발은 소프트웨어 개발 팀이 코드를 작성, 병합 및 배포할 때 채택하는 대표적인 브랜치 전략입니다. 두 전략은 각각의 핵심 원칙과 목표에 따라 브랜치 관리 방식과 개발 워크플로에서 명확한 차이를 보입니다.</description><pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate></item><item><title>ErrorBoundary를 잘 사용하고 있나요?</title><link>https://crowwan.github.io/blog/errorboundary%EB%A5%BC-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0-%EC%9E%88%EB%82%98%EC%9A%94/</link><guid isPermaLink="true">https://crowwan.github.io/blog/errorboundary%EB%A5%BC-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0-%EC%9E%88%EB%82%98%EC%9A%94/</guid><description>리액트로 서비스를 개발할 때 에러처리를 할 수 있는 방법은 다양하다. if문을 사용해서 데이터가 없을 때를 분기 처리하거나, ErrorBoundary를 사용해서 fallback UI를 보여주는 것처럼 여러 방법이 있다.</description><pubDate>Sun, 12 Jan 2025 00:00:00 GMT</pubDate></item><item><title>슬기로운 인턴 생활 - (5)</title><link>https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-5/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-5/</guid><description>매주 인턴 생활을 블로그에 작성하다 보니 한 주 동안 무슨 일을 하면서 보냈는지 생각하게 됩니다. 이번 주는 길었던 추석 연휴가 끝나고 다음 주였는데, 월요일이 공휴일이라 너무 좋았던 건 저만 그런 게 아니겠죠?</description><pubDate>Sun, 15 Oct 2023 00:00:00 GMT</pubDate></item><item><title>슬기로운 인턴 생활 - (4)</title><link>https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-4/</guid><description>벌써 시간이 1달이 넘어 빠르게 지났네요. 그만큼 이마고웍스에 많이 적응해서 기분이 좋습니다. 이번 블로그 포스팅은 추석 연휴가 있어 조금 늦어졌습니다.</description><pubDate>Mon, 09 Oct 2023 00:00:00 GMT</pubDate></item><item><title>슬기로운 인턴 생활 - (3)</title><link>https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4%EC%83%9D%ED%99%9C-3/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4%EC%83%9D%ED%99%9C-3/</guid><description>정신 차리니 벌써 3주가 지나갔네요. 이번 월요일에는 예비군 훈련으로 출근을 안해서 한 주가 더 빨리 흐른 느낌입니다... 이번주는 정말 재밌는 한 주였습니다. 바로 멘토 멘티 6명이 회식을 했기 때문이죠! 이건 조금 이따 얘기하고 먼저 무슨 일이 있었는지 말해보겠습니...</description><pubDate>Sat, 23 Sep 2023 00:00:00 GMT</pubDate></item><item><title>슬기로운 인턴 생활 - (2)</title><link>https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-2/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-2/</guid><description>첫 테스크는 설명을 듣고 피그마 디자인을 봤을 때 크게 어렵지 않게 구현이 가능할 거라고 생각했습니다. 물론 다른 분들의 코드를 보면서 내가 쓴 코드가 잘 동작을 하는 지, 또 제대로 이해하고 기존 코드를 바꾸고 있는 건지 의문이 들었습니다. 그래도 어찌저찌 기능은 동...</description><pubDate>Fri, 15 Sep 2023 00:00:00 GMT</pubDate></item><item><title>슬기로운 인턴 생활 - (1)</title><link>https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-1/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4-%EC%9D%B8%ED%84%B4-%EC%83%9D%ED%99%9C-1/</guid><description>개발 환경을 세팅하고 정신없이 하루를 보내다 보니 벌써 점심시간이... 다른 팀원분들 가시는 식당에 조용히 끼어서 같이 먹게 되었습니다. 닭볶음탕을 먹었는데 생각보다 매워서 놀랐지만 그래도 맛있었어요. 사진을 못 찍은게 아쉬워도 제 혀바닥은 맛을 기억하니 그거면 충분합...</description><pubDate>Sun, 10 Sep 2023 00:00:00 GMT</pubDate></item><item><title>인디버디 리팩토링하기 (3)</title><link>https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-3/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-3/</guid><description>useCheckAuth(PATHURL.LOGIN);</description><pubDate>Sun, 16 Jul 2023 00:00:00 GMT</pubDate></item><item><title>인디버디 리팩토링하기 (2)</title><link>https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-2/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-2/</guid><description>위 부분이다. 크게 보면 2개의 부분으로 나눌 수 있다. 인기, 신규 탭을 보여주는 네비게이션 바과 게임 카드와 페이지네이션이 보여지는 부분이다. 또 게임 카드들과 페이지네이션도 분리할 수 있다.</description><pubDate>Mon, 26 Jun 2023 00:00:00 GMT</pubDate></item><item><title>인디버디 리팩토링하기 (1)</title><link>https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-1/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B8%EB%94%94%EB%B2%84%EB%94%94-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%ED%95%98%EA%B8%B0-1/</guid><description>시간이 없다는 핑계로 대충 코드를 짜면서 이렇게 짜면 나중에 무조건 고쳐야하는데...하고 생각을 했고, 그 벌을 지금 받으려고 한다.</description><pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate></item><item><title>클라이언트 배포</title><link>https://crowwan.github.io/blog/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EB%B0%B0%ED%8F%AC/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EB%B0%B0%ED%8F%AC/</guid><description>하지만 간과한게 있었다. S3는 정적 웹페이지 호스팅 방법이다. 그렇기 때문인지 동작이 되지 않는 것이 있었다. 바로 로그인 시 POST요청을 하게 되는데 이 경우 405 error를 받게 되었다. 확인해보니까 s3에서 post 요청을 막는 줄 알았는데 그것이 아니라 ...</description><pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate></item><item><title>이미지 넣고 수정하기</title><link>https://crowwan.github.io/blog/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%84%A3%EA%B3%A0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%84%A3%EA%B3%A0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0/</guid><description>프론트엔드에서 이미지를 보여주기 위해서는 해당 이미지의 url 정보나 base64로 인코딩 된 값이 필요했다. 하지만 방금 막 업로드한 이미지의 url은 서버에 저장되어 있지 않고, 클라이언트에서 임시로 url을 만들어 보여주는 단순 미리보기 기능밖에 구현이 되지 않는...</description><pubDate>Tue, 16 May 2023 00:00:00 GMT</pubDate></item><item><title>고민했던 거</title><link>https://crowwan.github.io/blog/%EA%B3%A0%EB%AF%BC%ED%96%88%EB%8D%98-%EA%B1%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EA%B3%A0%EB%AF%BC%ED%96%88%EB%8D%98-%EA%B1%B0/</guid><description>버튼 컴포넌트 만드는데 헤더에서만 사용할 컴포넌트이지만, 로그인 회원가입 두개의 버튼이라 어떻게 구현할까 고민</description><pubDate>Mon, 08 May 2023 00:00:00 GMT</pubDate></item><item><title>컨벤션 정하기</title><link>https://crowwan.github.io/blog/%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%A0%95%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%A0%95%ED%95%98%EA%B8%B0/</guid><description>const StyledDiv = styled.div ...styles import 순서는 기본 린트 설정을 따른다. // 외부 라이브러리 패키지 // 컴포넌트 // 스타일 관련 파일</description><pubDate>Mon, 08 May 2023 00:00:00 GMT</pubDate></item><item><title>타입 스크립트 eslint 적용하기</title><link>https://crowwan.github.io/blog/%ED%83%80%EC%9E%85-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-eslint-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%83%80%EC%9E%85-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-eslint-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0/</guid><description>eslint-plugin-react@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest √ Would you like to install them now? · No / Yes √...</description><pubDate>Thu, 04 May 2023 00:00:00 GMT</pubDate></item><item><title>Inddy Buddy - 인디 게임 커뮤니티</title><link>https://crowwan.github.io/blog/inddy-buddy-%EC%9D%B8%EB%94%94-%EA%B2%8C%EC%9E%84-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/inddy-buddy-%EC%9D%B8%EB%94%94-%EA%B2%8C%EC%9E%84-%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0/</guid><description>커뮤니티 형식의 프로젝트를 진행하게 되었다. 팀은 프론트엔드 3인, 백엔드 3인으로 이루어져있고, 기본 기술 스택은 프론트엔드 REACT, 백엔드는 JAVA, SPRING을 이용할 것이다.</description><pubDate>Tue, 02 May 2023 00:00:00 GMT</pubDate></item><item><title>Pre-Project DAY 7,8</title><link>https://crowwan.github.io/blog/pre-project-day-78/</link><guid isPermaLink="true">https://crowwan.github.io/blog/pre-project-day-78/</guid><description>페이지를 담당하는 컴포넌트들이 중복되는 컴포넌트들을 가지고 있는 경우가 있다. 특히, 사이드 바가 그렇다. 이건 어느 웹 사이트나 마찬가지일 것이다. 이때 사용할 수 있는 방법이 리액트 라우터에서 네스팅 방식을 사용하는 것이다. 그렇게 했을 때 &lt;Outlet /컴포넌트...</description><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Pre-Project DAY 5,6</title><link>https://crowwan.github.io/blog/pre-project-day-45/</link><guid isPermaLink="true">https://crowwan.github.io/blog/pre-project-day-45/</guid><description>병합이 완료된 이후, 레이아웃 정리는 팀장이 진행 후 dev브랜치에 올려 다른 팀원들이 최종 결과를 pull했다.</description><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Pre-Project DAY4</title><link>https://crowwan.github.io/blog/pre-project-day4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/pre-project-day4/</guid><description>사용자 요구사항 정의서 최종적으로 검토 후 제출 화면 정의서 작성</description><pubDate>Fri, 14 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Pre-Project DAY3</title><link>https://crowwan.github.io/blog/pre-project-day3/</link><guid isPermaLink="true">https://crowwan.github.io/blog/pre-project-day3/</guid><description>요구사항 정의서 완성본은 아래 링크에서 확인할 수 있다. https://www.notion.so/6c4ccc302ffb4c4ca3f6fc33a8588fc0?v=1df103092c344c07b92d77cd8e15fc58</description><pubDate>Thu, 13 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Pre-Project DAY2</title><link>https://crowwan.github.io/blog/pre-project-day2/</link><guid isPermaLink="true">https://crowwan.github.io/blog/pre-project-day2/</guid><description>할 것들? - 트렐로 - 슬랙? - 깃 플로우 정하기 - 컨벤션 정하기 (코드, 커밋) - 피그마 어떻게 할지</description><pubDate>Wed, 12 Apr 2023 00:00:00 GMT</pubDate></item><item><title>서버 배포와 쿠키 문제</title><link>https://crowwan.github.io/blog/%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%EC%99%80-%EC%BF%A0%ED%82%A4-%EB%AC%B8%EC%A0%9C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%EC%99%80-%EC%BF%A0%ED%82%A4-%EB%AC%B8%EC%A0%9C/</guid><description>이는 vim .env를 통해 파일을 생성하고 환경변수를 넣어주는 것으로 해결했다. 사실 .env파일을 이렇게 ec2 내에서 직접 만들어서 사용해도 괜찮은 가 모르겠는데 뭐 지금은 이것말고는 방법이 없으니...</description><pubDate>Wed, 12 Apr 2023 00:00:00 GMT</pubDate></item><item><title>virtual DOM</title><link>https://crowwan.github.io/blog/virtual-dom/</link><guid isPermaLink="true">https://crowwan.github.io/blog/virtual-dom/</guid><description>리액트를 공부하다 보면 항상 마주치는 내용이 virtual DOM입니다. 그렇다면 과연 이것이 무엇이길래 그럴까요? DOM virtual DOM을 보기 전에 DOM(document object model)에 대해서 알아봅시다. 이전에 포스팅을 한 적이 있지만, 그때는 ...</description><pubDate>Sat, 18 Mar 2023 00:00:00 GMT</pubDate></item><item><title>todo list server</title><link>https://crowwan.github.io/blog/todo-list-server/</link><guid isPermaLink="true">https://crowwan.github.io/blog/todo-list-server/</guid><description>서버 구현이 어느 정도 완료된 것 같습니다. 폴더 구조는 아래와 같습니다. api sheet은 따로 만들지 않았습니다.</description><pubDate>Mon, 13 Mar 2023 00:00:00 GMT</pubDate></item><item><title>todo list 기획하기</title><link>https://crowwan.github.io/blog/todo-list-%EA%B8%B0%ED%9A%8D%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/todo-list-%EA%B8%B0%ED%9A%8D%ED%95%98%EA%B8%B0/</guid><description>솔로 프로젝트로 투두 리스트를 만들어보기로 했습니다. 많은 사람들이 처음 개발 공부를 하면서 만들어보게 되는 것인데 전 아직 제대로 만들어 본 적이 없었네요.</description><pubDate>Sun, 12 Mar 2023 00:00:00 GMT</pubDate></item><item><title>쿠키</title><link>https://crowwan.github.io/blog/%EC%BF%A0%ED%82%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%BF%A0%ED%82%A4/</guid><description>무상태성으로 인해서 이전 요청에 대한 정보가 필요할 때 어떤 처리를 하기 어려운 경우가 생깁니다. 예를 들면, 로그인 된 유저를 상태로 저장하고 있고, 이에 따라 다른 페이지로 넘어가는 것과 같이 로그인 된 유저 정보가 필요한 요청에 대해서 매번 로그인을 다시해야 하는...</description><pubDate>Thu, 02 Mar 2023 00:00:00 GMT</pubDate></item><item><title>이진 트리 순회</title><link>https://crowwan.github.io/blog/%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C/</guid><description>코드를 짠다고 하면 다음과 같이 됩니다.</description><pubDate>Wed, 01 Mar 2023 00:00:00 GMT</pubDate></item><item><title>서버에 요청하기</title><link>https://crowwan.github.io/blog/%EC%84%9C%EB%B2%84%EC%97%90-%EC%9A%94%EC%B2%AD%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%84%9C%EB%B2%84%EC%97%90-%EC%9A%94%EC%B2%AD%ED%95%98%EA%B8%B0/</guid><description>위의 두 컴포넌트에서 필터 요소나 페이지를 클릭하게 되면 쿼리스트링을 바꿔 데이터 요청을 할 수 있게 했습니다.</description><pubDate>Mon, 27 Feb 2023 00:00:00 GMT</pubDate></item><item><title>리덕스 사용해보기</title><link>https://crowwan.github.io/blog/%EB%A6%AC%EB%8D%95%EC%8A%A4-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%A6%AC%EB%8D%95%EC%8A%A4-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0/</guid><description>이전 아고라스테이츠 리액트 프로젝트에서 문제가 되었던 것은 상태 끌어올리기로 인한 props drilling이었습니다. 제일 먼저 손을 봐야 하는 것이 현재 로그인 된 유저를 저장한 상태였는데요. 이것을 리덕스를 이용해서 바꿔보도록 하겠습니다.</description><pubDate>Fri, 24 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Redux를 왜 쓸까</title><link>https://crowwan.github.io/blog/redux%EB%A5%BC-%EC%99%9C-%EC%93%B8%EA%B9%8C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/redux%EB%A5%BC-%EC%99%9C-%EC%93%B8%EA%B9%8C/</guid><description>리액트로 프로젝트를 하다보면 상태 관리에 어려움을 느끼는 경우가 많습니다. 컴포넌트 별로 공유 되어야 하는 상태를 다룰 때 보통 상태 끌어올리기를 통해서 해결하게 됩니다. 하지만 props로 넘겨지는 상태가 많아지고 그 깊이가 깊어지면 코드 자체가 복잡해져 관리가 어려...</description><pubDate>Thu, 23 Feb 2023 00:00:00 GMT</pubDate></item><item><title>useState</title><link>https://crowwan.github.io/blog/usestate/</link><guid isPermaLink="true">https://crowwan.github.io/blog/usestate/</guid><description>함수 컴포넌트에서 상태를 다룰 때 사용하는 훅은 useState입니다. 그냥 변수를 사용하면 되는 것을 왜 state를 사용해야할까요?</description><pubDate>Wed, 22 Feb 2023 00:00:00 GMT</pubDate></item><item><title>useRef</title><link>https://crowwan.github.io/blog/useref/</link><guid isPermaLink="true">https://crowwan.github.io/blog/useref/</guid><description>리액트 훅 중 useRef에 대해 알아보자. 보통 리액트에서 변하는 값을 다룰 때는 상태를 이용하게 된다. 또한, 리액트에서는 특정 DOM객체에 접근하고 싶을 때 document.querySelector과 같은 방법은 권장하지 않는다. 이럴 때 사용을 고려해볼 수 있는...</description><pubDate>Tue, 21 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Atomic design</title><link>https://crowwan.github.io/blog/atomic-design/</link><guid isPermaLink="true">https://crowwan.github.io/blog/atomic-design/</guid><description>이것 저것 찾아보다 보게 된 네이버의 설명 영상은 styled component와 story book을 이용한 atomic design에 대해 간략하게 다루고 있습니다. 기존 brad frost가 제안한 아토믹 디자인은 5단계를 가지고 있지만, 영상에서는 의미가 비슷한...</description><pubDate>Mon, 20 Feb 2023 00:00:00 GMT</pubDate></item><item><title>문자열 폭발</title><link>https://crowwan.github.io/blog/%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AD%EB%B0%9C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AD%EB%B0%9C/</guid><description>문제를 요약하자면 기준 문자열과 폭발 문자열을 입력받고, 기준 문자열에서 폭발 문자열을 제거한 새로운 문자열을 만들고 거기서 폭발 문자열을 다시 제거하고를 반복해서 최종적으로 나오는 문자열을 출력한다.</description><pubDate>Thu, 16 Feb 2023 00:00:00 GMT</pubDate></item><item><title>순수 함수</title><link>https://crowwan.github.io/blog/%EC%88%9C%EC%88%98-%ED%95%A8%EC%88%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%88%9C%EC%88%98-%ED%95%A8%EC%88%98/</guid><description>함수형 프로그래밍을 처음 공부하게 되면 먼저 접하는 개념이 바로 순수 함수입니다. 프로그래밍 패러다임의 기반이 되는 개념이죠. 그렇다면 순수 함수는 무엇일까요?</description><pubDate>Fri, 10 Feb 2023 00:00:00 GMT</pubDate></item><item><title>깃허브를 꾸밀 수 있다고?</title><link>https://crowwan.github.io/blog/%EA%B9%83%ED%97%88%EB%B8%8C%EB%A5%BC-%EA%BE%B8%EB%B0%80-%EC%88%98-%EC%9E%88%EB%8B%A4%EA%B3%A0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EA%B9%83%ED%97%88%EB%B8%8C%EB%A5%BC-%EA%BE%B8%EB%B0%80-%EC%88%98-%EC%9E%88%EB%8B%A4%EA%B3%A0/</guid><description>다른 사람들의 깃허브를 구경하다 보니 뭔가 내 깃허브보다 잘 정리되어 있다는 느낌을 받았다. 그래서 뭐 때문에 그런 것일까 고민을 해봤는데, 큰 차이가 있었다. 바로 깃허브 첫 페이지의 모습이었다.</description><pubDate>Sat, 04 Feb 2023 00:00:00 GMT</pubDate></item><item><title>이벤트</title><link>https://crowwan.github.io/blog/%EC%9D%B4%EB%B2%A4%ED%8A%B8/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B4%EB%B2%A4%ED%8A%B8/</guid><description>여기서 알고 있어야 하는 것은 이벤트 핸들러 함수는 비동기적으로 동작한다는 것입니다. 이미 콜스택에 남아있는 실행 컨택스트가 없는 상태에서 어떤 이벤트가 발생했을 때 함수가 실행된다는 것이니까요. 그렇기 때문에 핸들러 내부에서 특정 값에 변화를 주어도 화면에 반영이 되...</description><pubDate>Wed, 01 Feb 2023 00:00:00 GMT</pubDate></item><item><title>DOM</title><link>https://crowwan.github.io/blog/dom-pv20elxr/</link><guid isPermaLink="true">https://crowwan.github.io/blog/dom-pv20elxr/</guid><description>자바스크립트가 생긴 목적은 HTML과 CSS만으로 이루어진 기존의 웹 페이지의 특정 기능들을 수행할 수 있게 하기 위해서 만들어진 프로그래밍 언어인데요. 즉, HTML요소들을 조작할 수 있게 하는 것이 주된 목표였죠. 또, HTML은 브라우저 내에서 사용하는 마크업 언...</description><pubDate>Tue, 31 Jan 2023 00:00:00 GMT</pubDate></item><item><title>아고라스테이츠 리팩토링1</title><link>https://crowwan.github.io/blog/%EC%95%84%EA%B3%A0%EB%9D%BC%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%B8%A0-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%811/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%95%84%EA%B3%A0%EB%9D%BC%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%B8%A0-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%811/</guid><description>이전 아고라스테이츠 과제 회고 당시 생각했던 수정사항 일부를 리팩토링했다.</description><pubDate>Mon, 23 Jan 2023 00:00:00 GMT</pubDate></item><item><title>프로미스</title><link>https://crowwan.github.io/blog/%ED%94%84%EB%A1%9C%EB%AF%B8%EC%8A%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%94%84%EB%A1%9C%EB%AF%B8%EC%8A%A4/</guid><description>자바스크립트에서 비동기 처리에 관한 글을 저번 포스트에서 남겼다. 그 글에서 비동기 처리를 하면서 만날 수 있는 문제에 대해 설명했는데, 그렇다면 그 문제를 해결하는 방법이 무엇이 있는지 확인해보자.</description><pubDate>Fri, 20 Jan 2023 00:00:00 GMT</pubDate></item><item><title>비동기</title><link>https://crowwan.github.io/blog/%EB%B9%84%EB%8F%99%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B9%84%EB%8F%99%EA%B8%B0/</guid><description>비동기 처리는 정확하게 이해했다고 장담할 수 없다. 그렇기 때문에 내가 아는 선에서 최대한 설명해보겠다.</description><pubDate>Thu, 19 Jan 2023 00:00:00 GMT</pubDate></item><item><title>생성자 함수</title><link>https://crowwan.github.io/blog/%EC%83%9D%EC%84%B1%EC%9E%90-%ED%95%A8%EC%88%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%83%9D%EC%84%B1%EC%9E%90-%ED%95%A8%EC%88%98/</guid><description>생성자 함수란 new키워드와 함께 함수를 호출해서 객체를 생성할 수 있는 함수를 말한다. 이때 생성되는 객체를 인스턴스라고 한다.</description><pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate></item><item><title>클래스</title><link>https://crowwan.github.io/blog/%ED%81%B4%EB%9E%98%EC%8A%A4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%81%B4%EB%9E%98%EC%8A%A4/</guid><description>ES5까지는 생성자 함수를 이용해서 클래스를 정의했지만, ES6부터는 클래스 문법을 제공하기 때문에 클래스 문법을 사용해서 작성하면 된다. 하지만, 클래스 문법을 제공한다고 해서 프로토타입의 언어에서 클래스를 기반으로 한 언어로 바뀐 것은 아니고 새로운 인스턴스 생성 ...</description><pubDate>Fri, 13 Jan 2023 00:00:00 GMT</pubDate></item><item><title>프로토타입</title><link>https://crowwan.github.io/blog/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85/</guid><description>자바스크립트의 거의 모든 것은 객체다 -누군가 했던 말인 거 같은데</description><pubDate>Fri, 13 Jan 2023 00:00:00 GMT</pubDate></item><item><title>고차함수</title><link>https://crowwan.github.io/blog/%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98/</guid><description>위의 특징을 만족하는 객체를 일급 객체라고합니다. 자바스크립트에서는 함수가 일급 객체로 동작합니다. 즉, 함수를 하나의 값으로 평가할 수 있다는 것입니다. 그렇기 때문에 변수에 할당하거나, 함수의 인자로 넘겨주거나, 함수의 반환값으로 함수를 반환할 수 있게 되는 것이죠...</description><pubDate>Thu, 12 Jan 2023 00:00:00 GMT</pubDate></item><item><title>아고라스테이츠</title><link>https://crowwan.github.io/blog/%EC%95%84%EA%B3%A0%EB%9D%BC%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%B8%A0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%95%84%EA%B3%A0%EB%9D%BC%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%B8%A0/</guid><description>javascript const data = {id: { id, cretaedAt, title, url, author, answer: { id, createdAt, url, author, body, avatarUrl }, body, avatarUrl, tag } } 데이...</description><pubDate>Tue, 10 Jan 2023 00:00:00 GMT</pubDate></item><item><title> 리스트 순회</title><link>https://crowwan.github.io/blog/%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%88%9C%ED%9A%8C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%88%9C%ED%9A%8C/</guid><description>javascript const li = [1,2,3,4]</description><pubDate>Wed, 04 Jan 2023 00:00:00 GMT</pubDate></item><item><title>이터러블과 이터레이터</title><link>https://crowwan.github.io/blog/%EC%9D%B4%ED%84%B0%EB%9F%AC%EB%B8%94%EA%B3%BC-%EC%9D%B4%ED%84%B0%EB%A0%88%EC%9D%B4%ED%84%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9D%B4%ED%84%B0%EB%9F%AC%EB%B8%94%EA%B3%BC-%EC%9D%B4%ED%84%B0%EB%A0%88%EC%9D%B4%ED%84%B0/</guid><description>for(const a of arr) console.log(a); // 1 2 3</description><pubDate>Wed, 04 Jan 2023 00:00:00 GMT</pubDate></item><item><title>closure</title><link>https://crowwan.github.io/blog/closure/</link><guid isPermaLink="true">https://crowwan.github.io/blog/closure/</guid><description>클로저는 자바스크립트의 꽃이라고 할 수 있다. 클로저는 함수와 함수가 선언된 렉시컬 환경의 조합이다.</description><pubDate>Tue, 03 Jan 2023 00:00:00 GMT</pubDate></item><item><title>this</title><link>https://crowwan.github.io/blog/this/</link><guid isPermaLink="true">https://crowwan.github.io/blog/this/</guid><description>this에 대해 정확하게 알고 있다고 생각했지만, 전혀 아니었다. 제대로 알기 위해서 여러가지 실험을 했고 어느 정도 감이 잡힌 것 같기 때문에 포스팅을 한다.</description><pubDate>Thu, 29 Dec 2022 00:00:00 GMT</pubDate></item><item><title>팩토리 패턴</title><link>https://crowwan.github.io/blog/%ED%8C%A9%ED%86%A0%EB%A6%AC-%ED%8C%A8%ED%84%B4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%8C%A9%ED%86%A0%EB%A6%AC-%ED%8C%A8%ED%84%B4/</guid><description>팩토리 패턴은 특정 인스턴스를 생성하는 클래스를 만들어 인스턴스의 생성과 기능 구현을 분리시킨 디자인 패턴이다.</description><pubDate>Mon, 26 Dec 2022 00:00:00 GMT</pubDate></item><item><title>싱글톤 패턴</title><link>https://crowwan.github.io/blog/%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4/</guid><description>개발 공부를 하다 보니 디자인 패턴이라는 것을 듣게 되었다. 디자인 패턴은 지금까지 자주 사용되었던 코드를 템플릿처럼 만든 개발 방법이다.</description><pubDate>Fri, 23 Dec 2022 00:00:00 GMT</pubDate></item><item><title>rem vs vw</title><link>https://crowwan.github.io/blog/rem-vs-vw/</link><guid isPermaLink="true">https://crowwan.github.io/blog/rem-vs-vw/</guid><description>css로 상대 단위를 이용해 계산을 할 때 어떤 단위를 사용하는 것이 좋을까요? 우선 rem과 vw의 의미가 무엇인지 알아보겠습니다.</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate></item><item><title>scroll bar 조작</title><link>https://crowwan.github.io/blog/scroll-bar-%EC%A1%B0%EC%9E%91/</link><guid isPermaLink="true">https://crowwan.github.io/blog/scroll-bar-%EC%A1%B0%EC%9E%91/</guid><description>HTML문서를 작성하다 보면 그 내용이 길어져 화면을 벗어나는 경우가 있습니다. 이런 경우 브라우저에서 자동으로 스크롤 바를 제공합니다. (overflow가 auto혹은 scroll인 상태의 경우입니다.)</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate></item><item><title>미디어 쿼리 사용하기</title><link>https://crowwan.github.io/blog/%EB%AF%B8%EB%94%94%EC%96%B4-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%AF%B8%EB%94%94%EC%96%B4-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/</guid><description>웹사이트를 보면 브라우저 크기에 따라 화면이 변하는 경우를 본 적이 있습니다. 이때 사용할 수 있는 것이 미디어 쿼리입니다.</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate></item><item><title>요소를 안 보이게 하는 방법</title><link>https://crowwan.github.io/blog/%EC%9A%94%EC%86%8C%EB%A5%BC-%EC%95%88-%EB%B3%B4%EC%9D%B4%EA%B2%8C-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%9A%94%EC%86%8C%EB%A5%BC-%EC%95%88-%EB%B3%B4%EC%9D%B4%EA%B2%8C-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/</guid><description>css를 작성하다 보면 특정 요소를 보이지 않게 하거나, 보이게 하고 싶은 경우가 있습니다. 이런 경우 어떻게 하면 좋을까요?</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate></item><item><title>CSS</title><link>https://crowwan.github.io/blog/css/</link><guid isPermaLink="true">https://crowwan.github.io/blog/css/</guid><description>HTML &lt;!DOCTYPE html &lt;html lang=&quot;ko&quot; &lt;head &lt;meta charset=&quot;UTF-8&quot; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; &lt;titleParadigm S...</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate></item><item><title>CSS 선택자(SELECTOR)</title><link>https://crowwan.github.io/blog/css-%EC%84%A0%ED%83%9D%EC%9E%90selector/</link><guid isPermaLink="true">https://crowwan.github.io/blog/css-%EC%84%A0%ED%83%9D%EC%9E%90selector/</guid><description>{}</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate></item><item><title>HTML 기본</title><link>https://crowwan.github.io/blog/html-%EA%B8%B0%EB%B3%B8/</link><guid isPermaLink="true">https://crowwan.github.io/blog/html-%EA%B8%B0%EB%B3%B8/</guid><description>HTML &lt;!DOCTYPE HTML &lt;html &lt;!-- head 요소-- &lt;head &lt;!-- 시작 태그-- &lt;!-- 내용 -- &lt;/head &lt;!-- 종료 태그-- &lt;body &lt;/body &lt;/html 태그의 내용은 텍스트를 담을 수도 있고, 태그를 담을 수도 있습니다. ...</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate></item><item><title>시멘틱 마크업</title><link>https://crowwan.github.io/blog/%EC%8B%9C%EB%A9%98%ED%8B%B1-%EB%A7%88%ED%81%AC%EC%97%85/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8B%9C%EB%A9%98%ED%8B%B1-%EB%A7%88%ED%81%AC%EC%97%85/</guid><description>이런 검색 엔진에 잘 노출되기 위해서 검색 엔진 최적화를 통해 검색을 하는 유저들의 방문을 늘리는 방식을 이용하게 됩니다. 검색 엔진 최적화는 검색하는 유저들의 의도에 맞게 웹 페이지를 최적화해서 검색 엔진의 평가를 높여 결과 페이지에 노출되게 하여 자연스러운 유입을 ...</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate></item><item><title>태그의 속성</title><link>https://crowwan.github.io/blog/%ED%83%9C%EA%B7%B8%EC%9D%98-%EC%86%8D%EC%84%B1/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%83%9C%EA%B7%B8%EC%9D%98-%EC%86%8D%EC%84%B1/</guid><description>속성은 태그에 기능을 수정하거나, 기능을 제공하는 역할을 한다고 생각하세요.</description><pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate></item><item><title>var, let, const</title><link>https://crowwan.github.io/blog/var-let-const/</link><guid isPermaLink="true">https://crowwan.github.io/blog/var-let-const/</guid><description>지금까지 코드 설명을 var키워드를 이용하여 설명했습니다. 하지만 var를 사용하는 것은 문제를 발생시킬 소지가 있기 때문에 사용이 권장되지 않죠. 그렇다면 지금부터 무엇이 문제이고, 그것을 해결하기 위해선 무엇을 해야하는 지 알아 보도록 합시다.</description><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title>객체</title><link>https://crowwan.github.io/blog/%EA%B0%9D%EC%B2%B4/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EA%B0%9D%EC%B2%B4/</guid><description>객체는 0개 이상의 프로퍼티로 구성된 하나의 자료구조라고 할 수 있습니다. 자료구조라는 것은 데이터를 표현하는 하나의 방법이라고 생각하면 될 것 같네요. 프로퍼티는 무엇인지 차근차근 설명하겠습니다.</description><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title>스코프</title><link>https://crowwan.github.io/blog/%EC%8A%A4%EC%BD%94%ED%94%84/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%8A%A4%EC%BD%94%ED%94%84/</guid><description>그렇다고 추상적으로 존재하는 것이 아니라 실재로 스코프의 개념이 있고 물리적으로 존재합니다. 그것에 대해서는 나중에 자세히 알아보도록 하고 이번에는 스코프에 대해 알아보죠.</description><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title>함수</title><link>https://crowwan.github.io/blog/%ED%95%A8%EC%88%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%95%A8%EC%88%98/</guid><description>이전에 자바스크립트의 거의 모든 것은 객체라고 했습니다. 함수 역시 &apos;일급객체&apos;입니다. 객체처럼 프로퍼티를 가질 수 있고, 값으로 변수에 할당될 수 있다는 의미죠.</description><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title>제어문 - 조건문, 반복문</title><link>https://crowwan.github.io/blog/%EC%A0%9C%EC%96%B4%EB%AC%B8-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%A0%9C%EC%96%B4%EB%AC%B8-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8/</guid><description>제어문의 사용을 줄이기 위해서 함수형 프로그래밍에서는 map, filter, reduce와 같은 방식을 제시하기도 합니다.</description><pubDate>Sun, 18 Dec 2022 00:00:00 GMT</pubDate></item><item><title>연산자</title><link>https://crowwan.github.io/blog/%EC%97%B0%EC%82%B0%EC%9E%90/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EC%97%B0%EC%82%B0%EC%9E%90/</guid><description>NaN을 보게 된다면 산술이 안되는 데이터로 산술 연산을 하진 않았는지 의심해야 하는 것이죠. 예를 들어, 입력으로 받은 숫자가 사실 number타입이 아닌 string타입일 수 있는 것입니다.</description><pubDate>Sat, 17 Dec 2022 00:00:00 GMT</pubDate></item><item><title>변수</title><link>https://crowwan.github.io/blog/%EB%B3%80%EC%88%98/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B3%80%EC%88%98/</guid><description>쉽다고 했지만 처음 프로그래밍을 접하는 사람에겐 값이 뭔지, 어디에 위치한다는 것인지 알 수가 없습니다.</description><pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate></item><item><title>타입</title><link>https://crowwan.github.io/blog/%ED%83%80%EC%9E%85/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%83%80%EC%9E%85/</guid><description>타입은 데이터 타입, 자료형, 형 등으로 사용되는데 모두 같은 의미입니다. 데이터(값)이 가지는 고유한 정체성같은 거라고 생각하면 되겠네요.</description><pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate></item><item><title>표현식과 문</title><link>https://crowwan.github.io/blog/%ED%91%9C%ED%98%84%EC%8B%9D%EA%B3%BC-%EB%AC%B8/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%ED%91%9C%ED%98%84%EC%8B%9D%EA%B3%BC-%EB%AC%B8/</guid><description>javascript var score = 100; // 100은 그 자체로 표현식이다. (리터럴)</description><pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate></item><item><title>부트캠프 첫걸음</title><link>https://crowwan.github.io/blog/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EC%B2%AB%EA%B1%B8%EC%9D%8C/</link><guid isPermaLink="true">https://crowwan.github.io/blog/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EC%B2%AB%EA%B1%B8%EC%9D%8C/</guid><description>1. 일일 일정 평일 정규 수업 시간 : 9:00 18:00 휴식 : 18:00 19:00 수업 내용 복습 및 보완 : 19:00 주말 필요 부분 학습 : 9:00 13:00 이후 부족한 것은 시간을 더 들여 공부</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate></item></channel></rss>