<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>한결의 개발로그</title>
    <link>https://hangyeoldora.tistory.com/</link>
    <description>hangyeoldora 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 16 Jul 2026 02:22:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>hangyeoldora</managingEditor>
    <image>
      <title>한결의 개발로그</title>
      <url>https://tistory1.daumcdn.net/tistory/7551514/attach/0eaac871207e47d59a97d3e7c3acb65b</url>
      <link>https://hangyeoldora.tistory.com</link>
    </image>
    <item>
      <title>[Supabase] 프로젝트 백업 복원&amp;nbsp;- 90일 비활성 일시정지 복구</title>
      <link>https://hangyeoldora.tistory.com/65</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 개요&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 &lt;b&gt;Supabase 무료 티어 90일 비활성으로 일시정지된 프로젝트를 백업 파일로 복원하는 과정을 정리하기 위해 작성&lt;/b&gt;했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년에 회사에서 LLM을 활용한 RAG 테스트 프로젝트를 진행하면서 Supabase를 알게 되었고 Hybrid Search 등을 지원하여 프로젝트에 사용했었다. 한동안 사용 안 하다가 다시 보려고 접속했는데 프로젝트가 일시정지 상태로 나오고 있는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾아보니 &lt;b&gt;Supabase 무료 티어는 90일 이상 비활성 상태면 자동으로 일시정지&lt;/b&gt;된다고 한다... 말이 일시정지인거지 그냥 사용할 수가 없는 상태로 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 백업 파일은 일시정지된 프로젝트의 Dashboard에서 다운받을 수 있었고(&lt;code&gt;.backup.gz&lt;/code&gt;, &lt;code&gt;.storage.zip&lt;/code&gt;) 새 프로젝트를 만들어서 복원하기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;운영체제: macOS&lt;/li&gt;
&lt;li&gt;Docker Desktop, Supabase CLI, PostgreSQL 클라이언트(&lt;code&gt;psql&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;다운로드 받은 백업 파일: &lt;code&gt;db_cluster-*.backup.gz&lt;/code&gt;, &lt;code&gt;*.storage.zip&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 복원한 범위는 데이터베이스(테이블&amp;middot;함수&amp;middot;트리거&amp;middot;인덱스 전부, 사용자 3명&amp;middot;문서 124개 등), Storage 메타데이터&amp;middot;실제 파일(객체 520개, 48.9MB). 로컬에서 먼저 테스트한 뒤 원격 복원했음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 공식문서 방법 시도 및 실패&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 공식문서를 보고 그대로 따라해봤음.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;# 1. PostgreSQL 설치
brew install postgresql&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 확인은 아래처럼 하면 됨.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;pg_restore --version
# pg_restore (PostgreSQL) 14.20 (Homebrew)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(1) 첫 번째 시도 - Direct Connection&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 프로젝트를 만들고 Dashboard에서 Connection string을 확인한 뒤 아래처럼 넣어야 함.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;postgresql://postgres:[YOUR-PASSWORD]@db.xnevbeeifkumavhbhepk.supabase.co:5432/postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호를 넣어줘야해서 비밀번호 설정하고 복원 시도했음.&lt;/p&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;export PGPASSWORD=&quot;your_password&quot;

psql \
  -h db.xnevbeeifkumavhbhepk.supabase.co \
  -p 5432 \
  -U postgres \
  -d postgres \
  &amp;lt; db_cluster-28-09-2025@15-06-50.backup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 아래와 같이 주소 관련해서 알 수 없다는 에러가 발생했다.&lt;/p&gt;
&lt;pre class=&quot;xquery&quot;&gt;&lt;code&gt;psql: error: could not translate host name &quot;db.xnevbeeifkumavhbhepk.supabase.co&quot; to address: nodename nor servname provided, or not known&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ping&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;nslookup으로 확인해봐도 같은 에러가 나서 났다.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;ping db.xnevbeeifkumavhbhepk.supabase.co
# ping: cannot resolve db.xnevbeeifkumavhbhepk.supabase.co: Unknown host&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고보니 &lt;b&gt;Direct connection은 IPv4 유료 플랜이 필요&lt;/b&gt;했던 것이다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/VFuJWun.png&quot; alt=&quot;IPv4 connection requires paid plan&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(2) 두 번째 시도 - Session Pooler로 변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Connection 방법을 Direct에서 Session pooler로 바꿧다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/xiaDOXu.png&quot; alt=&quot;Session pooler option&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션 풀러를 선택 하니 IPv4 주소가 제대로 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/TybZjhe.png&quot; alt=&quot;IPv4 address with pooler&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 Session pooler로 재시도 했다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;gunzip -c db_cluster-28-09-2025@15-06-50.backup.gz | \
psql \
  -h aws-1-ap-northeast-1.pooler.supabase.com \
  -p 5432 \
  -U postgres.xnevbeeifkumavhbhepk \
  -d postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(3) 세 번째 시도 - Session pooler 에러 폭탄 발생&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 연결은 되는데 복원 과정에서 에러가 폭탄처럼 쏟아졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Role 관련 에러 (수백 개)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;subunit&quot;&gt;&lt;code&gt;ERROR: role &quot;anon&quot; already exists
ERROR: &quot;anon&quot; is a reserved role, only superusers can modify it
ERROR: role &quot;authenticated&quot; already exists
ERROR: role &quot;supabase_admin&quot; already exists
ERROR: permission denied to alter role&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase가 자동으로 생성하는 Role들과 충돌한다는 에러...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Schema 충돌&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;subunit&quot;&gt;&lt;code&gt;ERROR: schema &quot;auth&quot; already exists
ERROR: schema &quot;storage&quot; already exists
ERROR: permission denied for schema auth&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 프로젝트에 이미 존재하는 스키마를 백업 파일이 재생성하려고 시도..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Permission Denied&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;subunit&quot;&gt;&lt;code&gt;ERROR: permission denied for schema auth
ERROR: must be owner of table audit_log_entries
ERROR: permission denied for function get_auth
ERROR: permission denied to change default privileges&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase 권한 부족..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등등 에러 메시지가 계속 스크롤되면서 올라갔고 수백 개는 넘는 것 같았다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러 원인을 정리하자면 4가지 정도인 것 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;백업 파일이 &lt;b&gt;full dump 방식&lt;/b&gt;이라 모든 CREATE 명령 포함&lt;/li&gt;
&lt;li&gt;새 Supabase 프로젝트는 이미 기본 스키마, Role, 권한이 자동 생성되어 있음&lt;/li&gt;
&lt;li&gt;백업 파일이 이미 존재하는 것들을 재생성하려다가 충돌&lt;/li&gt;
&lt;li&gt;에러는 무시해도 되는 경고들이지만 핵심 데이터 복원이 제대로 안될 위험이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 다른 방법이 없나 하고 구글 검색이나 레딧을 찾아보니 저렇게 직접 psql로 넣는게 아니라 로컬 supabase에서 작업하고 복원했다는 글이 있어서 그렇게 진행해보기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 로컬 Supabase로 원격 Supabase 복원 시도&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(1) 로컬 환경 준비&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;필수 도구 설치&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;postgresql 버전은 dashboard를 참조해서 버전을 세팅했음.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;# Supabase CLI 설치 (Homebrew)
brew install supabase/tap/supabase

# PostgreSQL 클라이언트 설치
brew install postgresql@15

# Docker Desktop 실행
open -a Docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Docker 실행 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker가 정상적으로 실행 중인지 확인함.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(2) 로컬 Supabase 환경 구축&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Supabase 프로젝트 초기화&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 디렉토리를 만들고 Supabase를 초기화함.&lt;/p&gt;
&lt;pre class=&quot;dos&quot;&gt;&lt;code&gt;# 작업 디렉토리 생성
mkdir supabase-restore &amp;amp;&amp;amp; cd supabase-restore

# Supabase 초기화
supabase init&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;PostgreSQL 버전 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중요&lt;/b&gt;: 백업 파일과 로컬 환경의 PostgreSQL 버전이 일치해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 백업 파일은 PostgreSQL 15로 생성되었기 때문에 로컬도 15로 맞춰줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;supabase/config.toml&lt;/code&gt; 파일을 아래처럼 수정했음.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;[db]
major_version = 15&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 버전 파일도 생성&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mkdir -p supabase/.temp
echo &quot;15.6.1.115&quot; &amp;gt; supabase/.temp/postgres-version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;로컬 Supabase 시작&lt;/h4&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;supabase start&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 시작되면 아래와 같은 정보가 나온다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Started supabase local development setup.

         API URL: http://localhost:54321
          DB URL: postgresql://postgres:postgres@localhost:54322/postgres
      Studio URL: http://localhost:54323&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 되면 일단 로컬 Supabase 세팅은 끝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(3) 백업 파일 복원&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SQL 덤프 추출&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백업 파일을 SQL 텍스트로 변환한다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;pg_restore -f postgres_restore.sql -d postgres db_cluster-*.backup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;로컬 데이터베이스에 복원&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출한 SQL 파일을 로컬 PostgreSQL에 적용&lt;/p&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;psql 'postgresql://postgres:postgres@localhost:54322/postgres' \
  -f postgres_restore.sql 2&amp;gt;&amp;amp;1 | tee restore.log&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;* 에러사항 무시!&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복원하면 아까 Supabase 원격으로 복원하는 것처럼 에러 메시지가 엄청 쏟아지는데 걱정하지말고 대부분 무시해도 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;schema already exists&lt;/code&gt;: Supabase가 이미 만들어둔 스키마(&lt;code&gt;auth&lt;/code&gt;, &lt;code&gt;storage&lt;/code&gt; 등)와 충돌&lt;/li&gt;
&lt;li&gt;&lt;code&gt;permission denied&lt;/code&gt;: Supabase 관리 영역 권한 문제&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unrecognized configuration parameter&lt;/code&gt;: PostgreSQL 버전 차이&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 에러들은 대부분 무시해도 되고 실제 데이터(테이블, 함수, 트리거)는 정상적으로 복원된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Storage 메타데이터 복원&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 또 문제가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 상황&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;storage.objects&lt;/code&gt; 테이블 복원 시 다음 에러가 남.&lt;/p&gt;
&lt;pre class=&quot;subunit&quot;&gt;&lt;code&gt;ERROR: column &quot;level&quot; does not exist&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원인: 백업 파일에는 &lt;code&gt;level&lt;/code&gt; 컬럼이 있는데 새 Supabase에는 없다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 &lt;code&gt;sed&lt;/code&gt;로 해당 컬럼을 제거했다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;# storage.objects COPY 문 추출
grep -A 100000 &quot;COPY storage.objects&quot; postgres_restore.sql &amp;gt; storage_objects.sql

# level 컬럼 제거
sed 's/\t[0-9]\+$//' storage_objects.sql &amp;gt; storage_objects_fixed.sql

# 수정된 파일 적용
psql 'postgresql://postgres:postgres@localhost:54322/postgres' \
  -f storage_objects_fixed.sql&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;복원 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블이 제대로 복원되었는지 확인 진행&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;psql 'postgresql://postgres:postgres@localhost:54322/postgres' -c &quot;
SELECT 
  schemaname,
  tablename
FROM pg_tables
WHERE schemaname IN ('public', 'auth', 'storage')
ORDER BY schemaname, tablename;
&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수도 확인&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;psql 'postgresql://postgres:postgres@localhost:54322/postgres' -c &quot;
SELECT
  n.nspname as schema,
  p.proname as function_name
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public'
ORDER BY function_name;
&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(4) 원격 Supabase 프로젝트로 복원&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;원격 데이터베이스 연결 정보 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 테스트가 끝났으면 이제 원격 프로젝트로 복원하면 끝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase Dashboard &amp;gt; Project Settings &amp;gt; Database &amp;gt; Connection string&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까랑 똑같이 진행하는데 Direct 방식은 유료로 해야하니 &lt;b&gt;Session pooler&lt;/b&gt; 나 &lt;b&gt;Transaction pooler&lt;/b&gt;를 사용해서 진행하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* Connection string 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;postgresql://postgres.[project-ref]:[password]@aws-1-[region].pooler.supabase.com:5432/postgres&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SQL 파일 -&amp;gt; 원격 Supabase 적용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬에서 사용한 SQL 파일을 그대로 원격에 적용한다.&lt;/p&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;# 전체 SQL 적용
psql 'postgresql://postgres.[project-ref]:[password]@aws-1-[region].pooler.supabase.com:5432/postgres' \
  -f postgres_restore.sql 2&amp;gt;&amp;amp;1 | tee remote_restore.log

# Storage 메타데이터 적용
psql 'postgresql://postgres.[project-ref]:[password]@aws-1-[region].pooler.supabase.com:5432/postgres' \
  -f storage_objects_fixed.sql 2&amp;gt;&amp;amp;1 | tee remote_storage.log&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬과 마찬가지로 에러 메시지 많이 나오는데 무시하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;대시보드 복원 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복원 후 커스텀 함수 및 트리거 등 제대로 생성되었는지 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Dashboard에서 확인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Database &amp;gt; Functions에서 함수 목록 확인&lt;/li&gt;
&lt;li&gt;SQL Editor에서 직접 쿼리 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL Editor에서 함수 조회&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;-- 함수 목록 조회
SELECT 
  n.nspname as schema,
  p.proname as function_name,
  pg_get_function_arguments(p.oid) as arguments
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public'
ORDER BY function_name;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 함수의 전체 정의를 확인하려면 아래 쿼리를 실행한다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;-- 특정 함수 정의 확인
SELECT pg_get_functiondef(oid)
FROM pg_proc
WHERE proname = 'hybrid_search';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Storage 파일 업로드 (S3 버킷)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: 데이터베이스에는 메타데이터(&lt;code&gt;storage.objects&lt;/code&gt; 테이블)만 복원되고 실제 파일은 별도로 업로드해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복원할 때가 아니라 기존에 supabase에 파일 업로드할 때도 버킷을 사용했기 때문에 똑같이 해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 1: Dashboard 사용&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Supabase Dashboard &amp;gt; Storage&lt;/li&gt;
&lt;li&gt;각 버킷(&lt;code&gt;rag&lt;/code&gt;, &lt;code&gt;customer_file&lt;/code&gt; 등) 선택&lt;/li&gt;
&lt;li&gt;파일 수동 업로드&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법 2: Supabase CLI, Storage API 키 사용 (데이터 많을 때)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(5) 애플리케이션에서 테스트&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;환경 변수 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 애플리케이션이 새 프로젝트를 바라보도록 환경 변수를 바꿔준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Node.js 프로젝트 기준으로 &lt;code&gt;.env&lt;/code&gt; 파일을 아래처럼 수정함.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# .env 파일
MODE=development
SERVER_PORT=3000

# Supabase Configuration
SUPABASE_URL=https://[project-ref].supabase.co
SUPABASE_ANON_KEY=your_anon_key_here
JWT_SECRET=your_jwt_secret_here

# OpenAI API Key
OPENAI_API_KEY=your_openai_api_key

# 기타 API Keys
API_2_PDF=your_api2pdf_key
KYUNGRINARA_API_KEY=your_kyungrinara_key&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Supabase 대시보드 API Key 위치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase Dashboard &amp;gt; Settings &amp;gt; API&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;anon&lt;/code&gt; key: 클라이언트에서 사용하는 공개 키&lt;/li&gt;
&lt;li&gt;&lt;code&gt;service_role&lt;/code&gt; key: 서버 전용, 모든 권한 (클라이언트 노출 절대 금지)&lt;/li&gt;
&lt;li&gt;JWT Secret: 토큰 검증용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;연결 테스트&lt;/h4&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;// supabase-test.js
const { createClient } = require('@supabase/supabase-js');
require('dotenv').config();

const supabase = createClient(
  process.env.SUPABASE_URL,
  process.env.SUPABASE_ANON_KEY
);

async function testConnection() {
  const { data, error } = await supabase
    .from('documents')
    .select('*')
    .limit(1);

  if (error) {
    console.error('연결 실패:', error);
  } else {
    console.log('연결 성공!');
    console.log('데이터:', data);
  }
}

testConnection();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;node supabase-test.js&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 결과&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;힘든 과정을 거쳐서 2024년도에 RAG 테스트 프로젝트에 사용한 데이터를 전부 복구했다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;복원된 데이터&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자: 3명 (auth.users)&lt;/li&gt;
&lt;li&gt;문서: 124개 (public.documents)&lt;/li&gt;
&lt;li&gt;욕설 데이터: 8,037개 (public.profanity_data)&lt;/li&gt;
&lt;li&gt;가이드 문서: 409개 (public.combine_guide_documents)&lt;/li&gt;
&lt;li&gt;이미지 메타데이터: 248개 (public.image_metadata)&lt;/li&gt;
&lt;li&gt;함수: 207개 (hybrid_search 등 커스텀 함수 포함)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Storage 확인&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버킷: 2개 (customer_file, rag)&lt;/li&gt;
&lt;li&gt;객체 메타데이터: 520개&lt;/li&gt;
&lt;li&gt;실제 파일: 48.9MB&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase 프리티어 90일 비활성으로 일시정지된 프로젝트를 백업 파일로 복원하는 과정을 정리했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 무료 호스팅들의 경우 멈춤 상태로 있어도 그냥 활성화하면 작동하는 경우가 많아서 크게 신경 안썼는데 Supabase는 정지시켜버려서 당황했다.. 그리고 다시 복원하는데 조금 애를 먹었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년도에 사내에서 LLM을 활용한 RAG 프로젝트 진행할 때 한창 Supabase 얘기가 많이 나와서 supabase로 먼저 테스트를 진행했었다. 최근에도 다양한 프로젝트에서 supabase를 많이 활용하는걸로 아는데 90일 비활성화 부분에 대해서는 잘 생각을 해봐야할 것 같다. 주기적으로 사용하지 않으면 잠겨버리니..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 진행한다면 로컬에 띄워두고 테스트하고 실제 배포 테스트할 때 원격 Supabase를 사용해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핵심 포인트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무료 티어는 90일 비활성 시 일시정지&lt;/li&gt;
&lt;li&gt;공식문서 방법은 에러로 실패할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg_restore&lt;/code&gt;로 SQL 뽑아서 수정 후 복원하면 안정적&lt;/li&gt;
&lt;li&gt;백업 파일에 맞게 PostgreSQL 버전 맞춰야 함&lt;/li&gt;
&lt;li&gt;로컬 테스트 후 원격 복원&lt;/li&gt;
&lt;li&gt;Connection String은 Session pooler 사용 (Direct는 IPv4 유료)&lt;/li&gt;
&lt;li&gt;버킷에 업로드한 Storage 파일은 별도 업로드 필요 (메타데이터만 복원)&lt;/li&gt;
&lt;li&gt;복원 후에 Custom Functions 동작 확인 필수 (&lt;code&gt;hybrid_search&lt;/code&gt; 같은 것들)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;* 참고 링크&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://supabase.com/docs/guides/platform/migrating-within-supabase/dashboard-restore&quot;&gt;Supabase 공식 문서 - Dashboard Restore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://supabase.com/docs/guides/local-development/restoring-downloaded-backup&quot;&gt;Supabase 공식 문서 - Restoring Downloaded Backup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.postgresql.org/docs/current/app-pgrestore.html&quot;&gt;PostgreSQL pg_restore 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://supabase.com/docs/guides/cli&quot;&gt;Supabase CLI 문서&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>LLM/벡터 DB</category>
      <category>llm</category>
      <category>supabase</category>
      <category>Vector</category>
      <category>vector db</category>
      <category>벡터db</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/65</guid>
      <comments>https://hangyeoldora.tistory.com/65#entry65comment</comments>
      <pubDate>Mon, 2 Mar 2026 17:49:31 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지: 김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential 강의 최종 후기</title>
      <link>https://hangyeoldora.tistory.com/64</link>
      <description>&lt;p style=&quot;color: #000000; text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1757428532815&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4kQ0Ahe&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cSJ20L/hyZIVRKGSw/hxhi9dyp6geFmdiL55lb4K/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/ca0I4L/hyZIPD0olb/ixNm6yD5BrbbuwMszkJN81/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4kQ0Ahe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4kQ0Ahe&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cSJ20L/hyZIVRKGSw/hxhi9dyp6geFmdiL55lb4K/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/ca0I4L/hyZIPD0olb/ixNm6yD5BrbbuwMszkJN81/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://fastcampus.info/4kQ0Ahe&quot;&gt;https://fastcampus.info/4kQ0Ahe&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;강의 최종 후기&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;1. 환급챌린지에&amp;nbsp;참여한&amp;nbsp;이유는&amp;nbsp;무엇이었는지?&amp;nbsp;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;현재 저는 개발자로 일을 하고 있습니다. 일을 하다 보면 새로운 기술을 접하거나 재미있고 관심있는 주제를 마주할 때가 많아 퇴근 후에는 '공부 좀 해야겠다'라는 생각이 자주 들곤 했습니다. 그러나 막상 집에 돌아오면 회사에서 회사업무로 인해 피곤하기도 하고 쉬고 싶어서 공부를 잘 안하게 되기도 하고 공부 의지도 잘 생기지 않았습니다. 특히 야근이라도 있는 날에는 집에 와서 쉬고 싶다는 생각만 들어서 공부는 늘 뒷전으로 밀릴 때가 많았습니다. 그러다가 뭔가 꾸준하게 스스로 학습할 수 있는 환경과 동기가 필요하다고 느꼈습니다.&lt;br /&gt;그렇게&amp;nbsp;고민하다가&amp;nbsp;패스트캠퍼스에서&amp;nbsp;진행하는&amp;nbsp;환급&amp;nbsp;챌린지를&amp;nbsp;알게&amp;nbsp;되었습니다.&amp;nbsp;패스트캠퍼스는&amp;nbsp;이전에&amp;nbsp;회사&amp;nbsp;비즈니스&amp;nbsp;관련&amp;nbsp;강의를&amp;nbsp;수강했을&amp;nbsp;때도&amp;nbsp;만족도가&amp;nbsp;높았고,&amp;nbsp;LLM&amp;nbsp;관련&amp;nbsp;강의&amp;nbsp;역시&amp;nbsp;구매해서&amp;nbsp;들은&amp;nbsp;경험이&amp;nbsp;있어&amp;nbsp;이미&amp;nbsp;신뢰하는&amp;nbsp;플랫폼이었습니다.&amp;nbsp;제가&amp;nbsp;원하는&amp;nbsp;분야의&amp;nbsp;강의도&amp;nbsp;많았고&amp;nbsp;실제&amp;nbsp;현업에서&amp;nbsp;일하시는&amp;nbsp;분들이&amp;nbsp;강의하는&amp;nbsp;것도&amp;nbsp;많아서&amp;nbsp;실무와&amp;nbsp;연결되는&amp;nbsp;콘텐츠가&amp;nbsp;많다는&amp;nbsp;점도&amp;nbsp;마음에&amp;nbsp;들었습니다.&amp;nbsp;그래서&amp;nbsp;강의라고&amp;nbsp;한다면&amp;nbsp;패스트캠퍼스에&amp;nbsp;대한&amp;nbsp;믿음이&amp;nbsp;있었는데&amp;nbsp;환급&amp;nbsp;챌린지는&amp;nbsp;새로웠기&amp;nbsp;때문에&amp;nbsp;관심이&amp;nbsp;갔습니다.&lt;br /&gt;환급&amp;nbsp;챌린지의&amp;nbsp;방식은&amp;nbsp;50일&amp;nbsp;동안&amp;nbsp;정해진&amp;nbsp;미션을&amp;nbsp;수행하고,&amp;nbsp;학습한&amp;nbsp;내용을&amp;nbsp;블로그에&amp;nbsp;꾸준히&amp;nbsp;기록하고&amp;nbsp;제출하는&amp;nbsp;것이었습니다.&amp;nbsp;이&amp;nbsp;구조를&amp;nbsp;접했을&amp;nbsp;때&amp;nbsp;뭔가&amp;nbsp;꾸준히&amp;nbsp;공부도&amp;nbsp;하면서&amp;nbsp;기록할&amp;nbsp;수&amp;nbsp;있겠다는&amp;nbsp;생각이&amp;nbsp;바로&amp;nbsp;들었습니다.&amp;nbsp;그동안&amp;nbsp;공부를&amp;nbsp;하고&amp;nbsp;싶다는&amp;nbsp;의지는&amp;nbsp;있었지만&amp;nbsp;스스로&amp;nbsp;기간을&amp;nbsp;정해&amp;nbsp;꾸준하게&amp;nbsp;끌고&amp;nbsp;나가는&amp;nbsp;것이&amp;nbsp;쉽지&amp;nbsp;않았습니다.&amp;nbsp;하지만&amp;nbsp;환급챌린지는&amp;nbsp;50일이라는&amp;nbsp;기간&amp;nbsp;동안&amp;nbsp;매일&amp;nbsp;목표를&amp;nbsp;수행해야&amp;nbsp;하고&amp;nbsp;그&amp;nbsp;과정에서&amp;nbsp;기록까지&amp;nbsp;남겨야&amp;nbsp;하니&amp;nbsp;자연스럽게&amp;nbsp;꾸준함을&amp;nbsp;유지할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;짜여있었습니다.&amp;nbsp;무엇보다&amp;nbsp;돈!&amp;nbsp;환급이라는&amp;nbsp;보상&amp;nbsp;구조가&amp;nbsp;&amp;nbsp;큰&amp;nbsp;동기부여&amp;nbsp;요소가&amp;nbsp;되었기&amp;nbsp;때문에&amp;nbsp;학습을&amp;nbsp;꾸준하게&amp;nbsp;이어가게&amp;nbsp;해준다고&amp;nbsp;느꼈습니다.&amp;nbsp;이렇게&amp;nbsp;외부적인&amp;nbsp;압박과&amp;nbsp;동시에&amp;nbsp;성취감을&amp;nbsp;줄&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;프로그램이&amp;nbsp;꼭&amp;nbsp;필요했기&amp;nbsp;때문에&amp;nbsp;바로&amp;nbsp;환급챌린지에&amp;nbsp;참여하게&amp;nbsp;되었습니다.&lt;br /&gt;&amp;nbsp;챌린지에 참여하면서 일정 기간 동안 하루하루 강제로라도 집중적으로 학습할 수 있었습니다. 그리고 블로그에 기록하기 위해 강의 내용도 정리하면서 자연스럽게 반복 학습도 되었기 때문에 좋았습니다. 그리고 일회성이 아니라 50일이라는 기간동안 반복했기 때문에 하루에 길진않더라도 꾸준히 공부하는 습관도 만들 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;2.&lt;span&gt; 왜&amp;nbsp;이&amp;nbsp;강의를&amp;nbsp;선택하게&amp;nbsp;되었는지?&amp;nbsp;(무엇을&amp;nbsp;얻고&amp;nbsp;싶었는지,&amp;nbsp;실제로&amp;nbsp;얻은&amp;nbsp;것은&amp;nbsp;무엇인지)&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재&amp;nbsp;개발자로&amp;nbsp;일하면서&amp;nbsp;자바스크립트를&amp;nbsp;실무에서&amp;nbsp;자주&amp;nbsp;사용하고&amp;nbsp;있지만&amp;nbsp;가끔&amp;nbsp;기본&amp;nbsp;개념에&amp;nbsp;대한&amp;nbsp;이해가&amp;nbsp;부족하다는&amp;nbsp;생각과&amp;nbsp;아쉬움이&amp;nbsp;크게&amp;nbsp;다가오곤&amp;nbsp;했습니다.&amp;nbsp;빠르게&amp;nbsp;발전하는&amp;nbsp;자바스크립트&amp;nbsp;생태계&amp;nbsp;속에서&amp;nbsp;새로운&amp;nbsp;라이브러리와&amp;nbsp;프레임워크는&amp;nbsp;끊임없이&amp;nbsp;쏟아져&amp;nbsp;나오고&amp;nbsp;이를&amp;nbsp;빠르게&amp;nbsp;적용하며&amp;nbsp;프로젝트를&amp;nbsp;진행하기도&amp;nbsp;했습니다.&amp;nbsp;하지만&amp;nbsp;개발을&amp;nbsp;진행하면&amp;nbsp;문법이나&amp;nbsp;사용법을&amp;nbsp;넘어&amp;nbsp;자바스크립트와&amp;nbsp;타입스크립트에&amp;nbsp;대한&amp;nbsp;기반&amp;nbsp;개념이&amp;nbsp;부족하다는&amp;nbsp;생각이&amp;nbsp;들었고&amp;nbsp;단순히&amp;nbsp;활용에&amp;nbsp;그치는&amp;nbsp;개발자가&amp;nbsp;아니라&amp;nbsp;개념을&amp;nbsp;제대로&amp;nbsp;이해하고&amp;nbsp;응용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;개발자가&amp;nbsp;되고&amp;nbsp;싶다는&amp;nbsp;생각을&amp;nbsp;가지게&amp;nbsp;되었습니다.&amp;nbsp;&lt;br /&gt;그러다가&amp;nbsp;환급챌린지&amp;nbsp;강의목록을&amp;nbsp;보다가&amp;nbsp;눈에&amp;nbsp;들어온&amp;nbsp;것이&amp;nbsp;바로&amp;nbsp;&amp;lsquo;김민태의&amp;nbsp;프론트엔드&amp;nbsp;아카데미&amp;rsquo;&amp;nbsp;강의였습니다.&amp;nbsp;사실&amp;nbsp;자바스크립트&amp;nbsp;기초&amp;nbsp;강의라고&amp;nbsp;들었을&amp;nbsp;때는&amp;nbsp;루즈하지&amp;nbsp;않을까&amp;nbsp;걱정도&amp;nbsp;했습니다.&amp;nbsp;하지만&amp;nbsp;강의를&amp;nbsp;진행하시는&amp;nbsp;분이&amp;nbsp;배달의민족&amp;nbsp;프론트엔드&amp;nbsp;개발그룹장으로&amp;nbsp;재직&amp;nbsp;중이시라고&amp;nbsp;해서&amp;nbsp;마음이&amp;nbsp;크게&amp;nbsp;끌렸습니다.&amp;nbsp;이미&amp;nbsp;업계에서&amp;nbsp;많은&amp;nbsp;경험을&amp;nbsp;하시고&amp;nbsp;유명한&amp;nbsp;기업에서&amp;nbsp;그룹장으로&amp;nbsp;계신&amp;nbsp;분께서&amp;nbsp;직접&amp;nbsp;강의를&amp;nbsp;한다는&amp;nbsp;사실은&amp;nbsp;신뢰도를&amp;nbsp;높여주었고,&amp;nbsp;흔히&amp;nbsp;듣던&amp;nbsp;강의가&amp;nbsp;아니라&amp;nbsp;새롭고&amp;nbsp;실무와도&amp;nbsp;연결된&amp;nbsp;인사이트와&amp;nbsp;지식,&amp;nbsp;노하우를&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;것&amp;nbsp;같아&amp;nbsp;기대가&amp;nbsp;컸습니다.&amp;nbsp;그리고&amp;nbsp;회사에서&amp;nbsp;패스크캠퍼스&amp;nbsp;비즈니스&amp;nbsp;전용&amp;nbsp;강의를&amp;nbsp;제공해줘서&amp;nbsp;듣기도&amp;nbsp;했고,&amp;nbsp;LLM&amp;nbsp;관련&amp;nbsp;강의를&amp;nbsp;수강한&amp;nbsp;경험도&amp;nbsp;있어서&amp;nbsp;강의의&amp;nbsp;질이나&amp;nbsp;플랫폼에&amp;nbsp;대한&amp;nbsp;신뢰도도&amp;nbsp;많이&amp;nbsp;있었습니다.&amp;nbsp;그렇기&amp;nbsp;때문에&amp;nbsp;이&amp;nbsp;강의를&amp;nbsp;선택하게&amp;nbsp;되었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;3.&lt;span&gt;&lt;span&gt; 이&amp;nbsp;강의만의&amp;nbsp;장점&amp;nbsp;(ex.&amp;nbsp;강사님의&amp;nbsp;강의력,&amp;nbsp;커리큘럼&amp;nbsp;등)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;자바스크립트나&amp;nbsp;타입스크립트&amp;nbsp;기초&amp;nbsp;강의라고&amp;nbsp;하면&amp;nbsp;흔히&amp;nbsp;누구나&amp;nbsp;알고&amp;nbsp;있는&amp;nbsp;기본&amp;nbsp;문법이나&amp;nbsp;단순한&amp;nbsp;개념&amp;nbsp;정리를&amp;nbsp;떠올려서&amp;nbsp;지루하거나&amp;nbsp;진부하다고&amp;nbsp;생각할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;저도&amp;nbsp;처음에는&amp;nbsp;완벽하게는&amp;nbsp;아니지만&amp;nbsp;그래도&amp;nbsp;실무에서&amp;nbsp;사용하고&amp;nbsp;있는&amp;nbsp;자바스크립트&amp;nbsp;그것도&amp;nbsp;맨&amp;nbsp;처음&amp;nbsp;개념&amp;nbsp;강의를&amp;nbsp;듣는게&amp;nbsp;맞는걸까&amp;nbsp;하는&amp;nbsp;걱정을&amp;nbsp;했습니다.&amp;nbsp;하지만&amp;nbsp;강의를&amp;nbsp;듣고&amp;nbsp;나니&amp;nbsp;그런&amp;nbsp;생각이&amp;nbsp;싹&amp;nbsp;사라졌습니다!&amp;nbsp;강사님께서는&amp;nbsp;단순한&amp;nbsp;개념뿐만&amp;nbsp;아니라&amp;nbsp;세부적인&amp;nbsp;디테일까지&amp;nbsp;짚어&amp;nbsp;주시며&amp;nbsp;설명해&amp;nbsp;주셨고,&amp;nbsp;실제로&amp;nbsp;개발을&amp;nbsp;하면서&amp;nbsp;어떻게&amp;nbsp;적용하고&amp;nbsp;활용하는지에&amp;nbsp;대한&amp;nbsp;부분도&amp;nbsp;말씀해주셔서&amp;nbsp;이해하기가&amp;nbsp;훨씬&amp;nbsp;수월했습니다.&amp;nbsp;그리고&amp;nbsp;컴퓨터&amp;nbsp;공학,&amp;nbsp;소프트웨어적인&amp;nbsp;관점에서&amp;nbsp;중요한&amp;nbsp;배경지식과&amp;nbsp;이를&amp;nbsp;&amp;nbsp;연관지어&amp;nbsp;설명해주셨기&amp;nbsp;때문에&amp;nbsp;단순히&amp;nbsp;사용법만&amp;nbsp;아는&amp;nbsp;개발자가&amp;nbsp;아니라&amp;nbsp;원리를&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;설명해주셨습니다.&amp;nbsp;이런&amp;nbsp;강의&amp;nbsp;설명&amp;nbsp;덕분에&amp;nbsp;평소&amp;nbsp;부족하다고&amp;nbsp;느꼈던&amp;nbsp;자바스크립트,타입스크립트의&amp;nbsp;기초&amp;nbsp;개념을&amp;nbsp;보다&amp;nbsp;명확히&amp;nbsp;정리할&amp;nbsp;수&amp;nbsp;있었고&amp;nbsp;새로운&amp;nbsp;시각으로&amp;nbsp;바라보는&amp;nbsp;계기도&amp;nbsp;되었습니다.&lt;br /&gt;또한&amp;nbsp;강사님은&amp;nbsp;말씀을&amp;nbsp;너무&amp;nbsp;잘하시다&amp;nbsp;보니&amp;nbsp;화법이나&amp;nbsp;설명하는&amp;nbsp;능력까지&amp;nbsp;배우고&amp;nbsp;싶었습니다.&amp;nbsp;정말&amp;nbsp;교수님처럼&amp;nbsp;지식도&amp;nbsp;술술&amp;nbsp;말씀하시지만&amp;nbsp;교양있게?&amp;nbsp;말씀을&amp;nbsp;차분하게&amp;nbsp;해주셔서&amp;nbsp;너무&amp;nbsp;좋았습니다.&amp;nbsp;&lt;br /&gt;강의&amp;nbsp;전반의&amp;nbsp;커리큘럼도&amp;nbsp;잘&amp;nbsp;되어&amp;nbsp;있어서&amp;nbsp;처음&amp;nbsp;학습을&amp;nbsp;시작하는&amp;nbsp;사람은&amp;nbsp;물론이고,&amp;nbsp;이미&amp;nbsp;현업에서&amp;nbsp;일하고&amp;nbsp;있는&amp;nbsp;개발자에게도&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;만한&amp;nbsp;내용들이&amp;nbsp;잘&amp;nbsp;정리되어&amp;nbsp;있었습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;4.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;강의를&amp;nbsp;추천하고&amp;nbsp;싶은&amp;nbsp;사람은&amp;nbsp;누구인지?&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;자바스크립트를&amp;nbsp;기반으로&amp;nbsp;업무를&amp;nbsp;하고&amp;nbsp;있는&amp;nbsp;개발자는&amp;nbsp;물론이고&amp;nbsp;프로그래밍을&amp;nbsp;처음&amp;nbsp;배우고&amp;nbsp;싶은&amp;nbsp;학생들에게도&amp;nbsp;이&amp;nbsp;강의를&amp;nbsp;추천하고&amp;nbsp;싶습니다.&amp;nbsp;단순히&amp;nbsp;문법을&amp;nbsp;학습하는&amp;nbsp;수준을&amp;nbsp;넘어&amp;nbsp;자바스크립트와&amp;nbsp;타입스크립트의&amp;nbsp;개념을&amp;nbsp;깊이&amp;nbsp;있게&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;구성되어&amp;nbsp;있기&amp;nbsp;때문입니다.&amp;nbsp;강사님의&amp;nbsp;실무&amp;nbsp;경험과&amp;nbsp;컴퓨터&amp;nbsp;공학적&amp;nbsp;접근을&amp;nbsp;바탕으로&amp;nbsp;설명해주시기&amp;nbsp;때문에&amp;nbsp;이해도&amp;nbsp;잘&amp;nbsp;되고&amp;nbsp;체계적인&amp;nbsp;커리큘럼으로&amp;nbsp;기초부터&amp;nbsp;차근차근&amp;nbsp;쌓아갈&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;그렇기&amp;nbsp;때문에&amp;nbsp;이미&amp;nbsp;개발을&amp;nbsp;하고&amp;nbsp;있는&amp;nbsp;사람은&amp;nbsp;기초를&amp;nbsp;다시&amp;nbsp;다지며&amp;nbsp;부족한&amp;nbsp;부분을&amp;nbsp;보완할&amp;nbsp;수&amp;nbsp;있고&amp;nbsp;새로운&amp;nbsp;관점을&amp;nbsp;가질&amp;nbsp;수도&amp;nbsp;있고&amp;nbsp;초보자는&amp;nbsp;기반을&amp;nbsp;잘&amp;nbsp;다져서&amp;nbsp;나아갈&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;좋은&amp;nbsp;기회가&amp;nbsp;될&amp;nbsp;것입니다!&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;5.&lt;span&gt;&lt;span&gt; 다음으로&amp;nbsp;듣고&amp;nbsp;싶은&amp;nbsp;강의는&amp;nbsp;무엇인지?&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음&amp;nbsp;강의로는&amp;nbsp;당연히&amp;nbsp;김민태&amp;nbsp;강사님의&amp;nbsp;프론트엔드&amp;nbsp;아카데미&amp;nbsp;2강을&amp;nbsp;가장&amp;nbsp;먼저&amp;nbsp;수강해보고&amp;nbsp;싶습니다.&amp;nbsp;이번&amp;nbsp;1강을&amp;nbsp;들으면서&amp;nbsp;강사님의&amp;nbsp;설명&amp;nbsp;방식과&amp;nbsp;커리큘럼&amp;nbsp;구성이&amp;nbsp;좋았다는&amp;nbsp;것을&amp;nbsp;느꼈기&amp;nbsp;때문에&amp;nbsp;이어지는&amp;nbsp;강의까지&amp;nbsp;모두&amp;nbsp;듣고&amp;nbsp;공부하고&amp;nbsp;싶다는&amp;nbsp;생각이&amp;nbsp;들었습니다.&amp;nbsp;개인적으로&amp;nbsp;강사님이&amp;nbsp;진행하시는&amp;nbsp;강의라면&amp;nbsp;전체&amp;nbsp;커리큘럼을&amp;nbsp;빠짐없이&amp;nbsp;다&amp;nbsp;들어보고&amp;nbsp;싶은&amp;nbsp;마음이&amp;nbsp;있습니다.&amp;nbsp;또한&amp;nbsp;이전에&amp;nbsp;LLM&amp;nbsp;관련&amp;nbsp;애플리케이션을&amp;nbsp;개발하면서&amp;nbsp;파이썬과&amp;nbsp;Node.js를&amp;nbsp;주로&amp;nbsp;다루었는데,&amp;nbsp;강의&amp;nbsp;목록&amp;nbsp;중에&amp;nbsp;spring&amp;nbsp;기반으로&amp;nbsp;LLM과&amp;nbsp;RAG&amp;nbsp;시스템을&amp;nbsp;개발하는&amp;nbsp;강의도&amp;nbsp;있어서&amp;nbsp;한&amp;nbsp;번&amp;nbsp;들어보고&amp;nbsp;싶다고&amp;nbsp;생각했습니다.&amp;nbsp;Spring&amp;nbsp;AI도&amp;nbsp;계속해서&amp;nbsp;발전하고&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;꼭&amp;nbsp;한&amp;nbsp;번&amp;nbsp;들어보고&amp;nbsp;싶습니다.&amp;nbsp;이&amp;nbsp;밖에도&amp;nbsp;빅데이터&amp;nbsp;및&amp;nbsp;메시징&amp;nbsp;처리에&amp;nbsp;널리&amp;nbsp;쓰이는&amp;nbsp;Kafka나&amp;nbsp;테스트&amp;nbsp;주도&amp;nbsp;개발(TDD)&amp;nbsp;강의에도&amp;nbsp;많은&amp;nbsp;관심이&amp;nbsp;있습니다.&amp;nbsp;그리고&amp;nbsp;무엇보다&amp;nbsp;최근&amp;nbsp;가장&amp;nbsp;핫한&amp;nbsp;주제로&amp;nbsp;꼽히는&amp;nbsp;MCP&amp;nbsp;관련&amp;nbsp;강의까지&amp;nbsp;접해보고&amp;nbsp;싶어&amp;nbsp;차근차근&amp;nbsp;하나씩&amp;nbsp;수강해보고자&amp;nbsp;합니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;6.&lt;span&gt;&lt;span&gt; 앞으로의&amp;nbsp;계획&amp;nbsp;(ex.&amp;nbsp;커리어&amp;nbsp;목표,&amp;nbsp;이직&amp;nbsp;목표,&amp;nbsp;자기계발&amp;nbsp;목표&amp;nbsp;등)&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;우선은&amp;nbsp;실무에서&amp;nbsp;자주&amp;nbsp;사용하는&amp;nbsp;자바스크립트와&amp;nbsp;타입스크립트&amp;nbsp;같은&amp;nbsp;언어에&amp;nbsp;대한&amp;nbsp;지식&amp;nbsp;기반을&amp;nbsp;더욱&amp;nbsp;단단히&amp;nbsp;다지고&amp;nbsp;싶습니다.&amp;nbsp;요즘&amp;nbsp;AI&amp;nbsp;기술이&amp;nbsp;빠르게&amp;nbsp;발전하고&amp;nbsp;있지만&amp;nbsp;기본기를&amp;nbsp;확실히&amp;nbsp;다져야&amp;nbsp;새로운&amp;nbsp;기술을&amp;nbsp;접할&amp;nbsp;때도&amp;nbsp;빠르게&amp;nbsp;흡수할&amp;nbsp;수&amp;nbsp;있다고&amp;nbsp;믿기&amp;nbsp;때문입니다.&amp;nbsp;여기에&amp;nbsp;더해&amp;nbsp;최근&amp;nbsp;급격히&amp;nbsp;발전하고&amp;nbsp;있는&amp;nbsp;인공지능&amp;nbsp;분야에도&amp;nbsp;꾸준히&amp;nbsp;관심을&amp;nbsp;두고&amp;nbsp;학습을&amp;nbsp;이어갈&amp;nbsp;계획입니다.&amp;nbsp;특히&amp;nbsp;LLM을&amp;nbsp;포함한&amp;nbsp;다양한&amp;nbsp;AI&amp;nbsp;기술은&amp;nbsp;하루가&amp;nbsp;다르게&amp;nbsp;새로운&amp;nbsp;시도가&amp;nbsp;나오고&amp;nbsp;발전하고&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;공부하고&amp;nbsp;싶은&amp;nbsp;의욕이&amp;nbsp;큽니다!&amp;nbsp;&amp;nbsp;더&amp;nbsp;나아가&amp;nbsp;최신&amp;nbsp;프레임워크와&amp;nbsp;아키텍처,&amp;nbsp;클라우드&amp;nbsp;환경에서의&amp;nbsp;서비스&amp;nbsp;운영까지&amp;nbsp;영역을&amp;nbsp;확장하여&amp;nbsp;개발자로서의&amp;nbsp;경쟁력을&amp;nbsp;높이는&amp;nbsp;것이&amp;nbsp;앞으로의&amp;nbsp;목표이고&amp;nbsp;최종적으로는&amp;nbsp;배운&amp;nbsp;것들을&amp;nbsp;바탕으로&amp;nbsp;실제&amp;nbsp;서비스와&amp;nbsp;애플리케이션&amp;nbsp;개발에&amp;nbsp;접목시키고&amp;nbsp;싶습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;* 학습 인증샷&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-09-09 오후 11.29.44.png&quot; data-origin-width=&quot;2541&quot; data-origin-height=&quot;1185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNTW3e/btsQrIhaQXt/jEzumXn31MG8cLIABWB0T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNTW3e/btsQrIhaQXt/jEzumXn31MG8cLIABWB0T1/img.png&quot; data-alt=&quot;학습 통계 기록&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNTW3e/btsQrIhaQXt/jEzumXn31MG8cLIABWB0T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNTW3e%2FbtsQrIhaQXt%2FjEzumXn31MG8cLIABWB0T1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2541&quot; height=&quot;1185&quot; data-filename=&quot;스크린샷 2025-09-09 오후 11.29.44.png&quot; data-origin-width=&quot;2541&quot; data-origin-height=&quot;1185&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 통계 기록&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인.png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhp8wA/btsQrTpdrA0/6yLLf9h3xtbpbpVpzCAn80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhp8wA/btsQrTpdrA0/6yLLf9h3xtbpbpVpzCAn80/img.png&quot; data-alt=&quot;학습 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhp8wA/btsQrTpdrA0/6yLLf9h3xtbpbpVpzCAn80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhp8wA%2FbtsQrTpdrA0%2F6yLLf9h3xtbpbpVpzCAn80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;5712&quot; height=&quot;4284&quot; data-filename=&quot;제목 없는 디자인.png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (1).png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mvD4p/btsQsktiOK3/a1UJ4A3KSysUZkXzLVAuPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mvD4p/btsQsktiOK3/a1UJ4A3KSysUZkXzLVAuPK/img.png&quot; data-alt=&quot;학습 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mvD4p/btsQsktiOK3/a1UJ4A3KSysUZkXzLVAuPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmvD4p%2FbtsQsktiOK3%2Fa1UJ4A3KSysUZkXzLVAuPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;5712&quot; height=&quot;4284&quot; data-filename=&quot;제목 없는 디자인 (1).png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2) (1).png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCHlnm/btsQquKKpW6/GjbJ0ZXcZAMHrSw8oot73K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCHlnm/btsQquKKpW6/GjbJ0ZXcZAMHrSw8oot73K/img.png&quot; data-alt=&quot;학습 - 3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCHlnm/btsQquKKpW6/GjbJ0ZXcZAMHrSw8oot73K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCHlnm%2FbtsQquKKpW6%2FGjbJ0ZXcZAMHrSw8oot73K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;5712&quot; height=&quot;4284&quot; data-filename=&quot;제목 없는 디자인 (2) (1).png&quot; data-origin-width=&quot;5712&quot; data-origin-height=&quot;4284&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 - 3&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.44em; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;마치며&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이걸로 50일의 최종 환급챌린지가 끝났습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 경험을 했고 다음에도 기회가 있으면 참여하고 싶습니다.&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>직장인자기계발</category>
      <category>파이널미션</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/64</guid>
      <comments>https://hangyeoldora.tistory.com/64#entry64comment</comments>
      <pubDate>Tue, 9 Sep 2025 23:36:06 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 50일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/63</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755612756313&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biRrSO/hyZyc1hK8d/mpO7eoSMPJviI8bPsqvwf1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/lKioC/hyZCX2qRm6/E9ZZPKQESL253VIjgWVIGk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biRrSO/hyZyc1hK8d/mpO7eoSMPJviI8bPsqvwf1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/lKioC/hyZCX2qRm6/E9ZZPKQESL253VIjgWVIGk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;운영 반영때문에 늦게 마쳤지만 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;50일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baaCmP/btsPWZ5ceiH/srj9Woa7WY2Wh2U3l180Z1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baaCmP/btsPWZ5ceiH/srj9Woa7WY2Wh2U3l180Z1/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.19 23:15)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baaCmP/btsPWZ5ceiH/srj9Woa7WY2Wh2U3l180Z1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaaCmP%2FbtsPWZ5ceiH%2Fsrj9Woa7WY2Wh2U3l180Z1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;744&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.19 23:15)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;개념과 구조 - 이터러블,&amp;nbsp;이터레이터&amp;nbsp;프로토콜'&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5JGN0/btsPZZCArn8/9A6eNKHeOQBP4LjrFCDxI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5JGN0/btsPZZCArn8/9A6eNKHeOQBP4LjrFCDxI1/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5JGN0/btsPZZCArn8/9A6eNKHeOQBP4LjrFCDxI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5JGN0%2FbtsPZZCArn8%2F9A6eNKHeOQBP4LjrFCDxI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- 개념과 구조 - 이터러블, 이터레이터 프로토콜&amp;nbsp; -&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* 이터러블의 의미&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이터러블은&amp;nbsp;반복&amp;nbsp;가능한&amp;nbsp;구조를&amp;nbsp;가진&amp;nbsp;객체를&amp;nbsp;말한다.&amp;nbsp;자바스크립트에서&amp;nbsp;배열은&amp;nbsp;대표적인&amp;nbsp;이터러블이지만,&amp;nbsp;배열&amp;nbsp;말고도&amp;nbsp;다양한&amp;nbsp;이터러블이&amp;nbsp;존재한다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;Map,&amp;nbsp;Set과&amp;nbsp;같은&amp;nbsp;자료구조가&amp;nbsp;있으며&amp;nbsp;제너레이터&amp;nbsp;함수를&amp;nbsp;통해&amp;nbsp;무한히&amp;nbsp;값을&amp;nbsp;생산하는&amp;nbsp;이터러블&amp;nbsp;또한&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;이런&amp;nbsp;구조들은&amp;nbsp;모두&amp;nbsp;공통적으로&amp;nbsp;이터레이션&amp;nbsp;프로토콜을&amp;nbsp;기반으로&amp;nbsp;동작한다.&amp;nbsp;따라서&amp;nbsp;자바스크립트에서&amp;nbsp;반복&amp;nbsp;가능성을&amp;nbsp;제공하는&amp;nbsp;핵심&amp;nbsp;원리는&amp;nbsp;바로&amp;nbsp;이&amp;nbsp;프로토콜에&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1755614564443&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const myIterable = {};

myIterable[Symbo.iterator] = function* () {
	let i = 1;
	while(i &amp;lt;= 100) {
		yield i++;
	}
};

for (const n of myIterable) {
	console.log(n);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;이터러블 프로토콜&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이터러블&amp;nbsp;프로토콜은&amp;nbsp;객체가&amp;nbsp;반복&amp;nbsp;가능한&amp;nbsp;형태를&amp;nbsp;따르도록&amp;nbsp;규정한&amp;nbsp;약속이다.&amp;nbsp;이&amp;nbsp;프로토콜을&amp;nbsp;따르는&amp;nbsp;객체는&amp;nbsp;Symbol.iterator라는&amp;nbsp;키를&amp;nbsp;구현해야&amp;nbsp;한다.&amp;nbsp;이&amp;nbsp;메서드는&amp;nbsp;이터레이터를&amp;nbsp;반환하고,&amp;nbsp;반환된&amp;nbsp;이터레이터는&amp;nbsp;for...of&amp;nbsp;구문과&amp;nbsp;같은&amp;nbsp;반복&amp;nbsp;구조에서&amp;nbsp;순차적으로&amp;nbsp;값을&amp;nbsp;꺼낼&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;한다.&amp;nbsp;쉽게&amp;nbsp;말해&amp;nbsp;이터러블은&amp;nbsp;&quot;반복할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;성질&quot;을&amp;nbsp;제공하는&amp;nbsp;약속이며,&amp;nbsp;자바스크립트&amp;nbsp;엔진은&amp;nbsp;이&amp;nbsp;약속을&amp;nbsp;기준으로&amp;nbsp;루프와&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;해석한다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;이터레이터 프로토콜&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이터레이터&amp;nbsp;프로토콜은&amp;nbsp;이터러블&amp;nbsp;객체에서&amp;nbsp;실제로&amp;nbsp;값을&amp;nbsp;하나씩&amp;nbsp;꺼낼&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;동작을&amp;nbsp;정의한다.&amp;nbsp;이터레이터는&amp;nbsp;next&amp;nbsp;메서드를&amp;nbsp;반드시&amp;nbsp;제공해야&amp;nbsp;하고,&amp;nbsp;이&amp;nbsp;메서드는&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;속성을&amp;nbsp;가진&amp;nbsp;객체를&amp;nbsp;반환한다.&amp;nbsp;첫째는&amp;nbsp;value로&amp;nbsp;현재&amp;nbsp;반환되는&amp;nbsp;값이고,&amp;nbsp;둘째는&amp;nbsp;done으로&amp;nbsp;반복이&amp;nbsp;끝났는지를&amp;nbsp;나타내는&amp;nbsp;불리언&amp;nbsp;값이다.&amp;nbsp;done이&amp;nbsp;true가&amp;nbsp;되면&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;반복할&amp;nbsp;값이&amp;nbsp;없음을&amp;nbsp;의미한다.&amp;nbsp;제너레이터&amp;nbsp;함수가&amp;nbsp;반환하는&amp;nbsp;제너레이터&amp;nbsp;객체&amp;nbsp;또한&amp;nbsp;동일한&amp;nbsp;구조를&amp;nbsp;가지고&amp;nbsp;있으며,&amp;nbsp;이는&amp;nbsp;제너레이터가&amp;nbsp;이터레이터&amp;nbsp;프로토콜을&amp;nbsp;충실히&amp;nbsp;구현한&amp;nbsp;대표적인&amp;nbsp;예라고&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;제너레이터와 심볼 이터레이터&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;직접&amp;nbsp;이터러블을&amp;nbsp;정의할&amp;nbsp;때는&amp;nbsp;Symbol.iterator&amp;nbsp;키를&amp;nbsp;객체에&amp;nbsp;구현하면&amp;nbsp;된다.&amp;nbsp;이&amp;nbsp;값으로&amp;nbsp;제너레이터&amp;nbsp;함수를&amp;nbsp;넣으면&amp;nbsp;해당&amp;nbsp;객체를&amp;nbsp;for...of&amp;nbsp;문에서&amp;nbsp;바로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;제너레이터는&amp;nbsp;내부적으로&amp;nbsp;이터레이터를&amp;nbsp;반환하기&amp;nbsp;때문에&amp;nbsp;이&amp;nbsp;방식이&amp;nbsp;자연스럽게&amp;nbsp;동작한다.&amp;nbsp;이는&amp;nbsp;자바스크립트가&amp;nbsp;객체에&amp;nbsp;반복&amp;nbsp;가능성을&amp;nbsp;부여하는&amp;nbsp;방법을&amp;nbsp;명확히&amp;nbsp;보여주는&amp;nbsp;사례다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;자바스크립트는&amp;nbsp;배열,&amp;nbsp;문자열,&amp;nbsp;Map,&amp;nbsp;Set을&amp;nbsp;포함해&amp;nbsp;기본적으로&amp;nbsp;다양한&amp;nbsp;이터러블&amp;nbsp;구조를&amp;nbsp;제공한다.&amp;nbsp;이러한&amp;nbsp;구조는&amp;nbsp;언뜻&amp;nbsp;단순해&amp;nbsp;보이지만&amp;nbsp;반복&amp;nbsp;처리의&amp;nbsp;기반을&amp;nbsp;이루는&amp;nbsp;매우&amp;nbsp;중요한&amp;nbsp;규칙이다.&amp;nbsp;따라서&amp;nbsp;이터러블과&amp;nbsp;이터레이터&amp;nbsp;프로토콜을&amp;nbsp;이해하면&amp;nbsp;반복&amp;nbsp;로직을&amp;nbsp;유연하게&amp;nbsp;설계할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;사용자&amp;nbsp;정의&amp;nbsp;객체에도&amp;nbsp;반복&amp;nbsp;가능성을&amp;nbsp;부여할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;결과적으로&amp;nbsp;자바스크립트의&amp;nbsp;동작&amp;nbsp;원리를&amp;nbsp;깊이&amp;nbsp;이해하는&amp;nbsp;데&amp;nbsp;큰&amp;nbsp;도움이&amp;nbsp;된다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SCRTx/btsPXQfxXDW/2wpwOlDSi9uytmRklloAK0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SCRTx/btsPXQfxXDW/2wpwOlDSi9uytmRklloAK0/img.jpg&quot; data-alt=&quot;52강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SCRTx/btsPXQfxXDW/2wpwOlDSi9uytmRklloAK0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSCRTx%2FbtsPXQfxXDW%2F2wpwOlDSi9uytmRklloAK0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;595&quot; height=&quot;793&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;52강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LYupx/btsPZ44Xs5T/kHXX6AtwY44eMTepOhC63K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LYupx/btsPZ44Xs5T/kHXX6AtwY44eMTepOhC63K/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.19 23:32)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LYupx/btsPZ44Xs5T/kHXX6AtwY44eMTepOhC63K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLYupx%2FbtsPZ44Xs5T%2FkHXX6AtwY44eMTepOhC63K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;656&quot; height=&quot;875&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.19 23:32)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LOvzQ/btsPZtKFPNj/j8PgP11OJV60Z04rAt7nVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LOvzQ/btsPZtKFPNj/j8PgP11OJV60Z04rAt7nVk/img.png&quot; data-alt=&quot;52강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LOvzQ/btsPZtKFPNj/j8PgP11OJV60Z04rAt7nVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLOvzQ%2FbtsPZtKFPNj%2Fj8PgP11OJV60Z04rAt7nVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;52강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-19 23.49.20.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wn4Fr/btsPYJmWKBX/b3mrCnmDFpWfaBdxseDork/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wn4Fr/btsPYJmWKBX/b3mrCnmDFpWfaBdxseDork/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wn4Fr/btsPYJmWKBX/b3mrCnmDFpWfaBdxseDork/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwn4Fr%2FbtsPYJmWKBX%2Fb3mrCnmDFpWfaBdxseDork%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;995&quot; height=&quot;752&quot; data-filename=&quot;스크린샷 2025-08-19 23.49.20.png&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 52강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의를 통해 이터러블, 이터레이터에 대한 내용을 배웠다. 이터러블과 이터레이터 프로토콜은 자바스크립트 반복 구조의 핵심 원리다.&amp;nbsp; 이 개념은 자바스크립트를 더 깊이 있고 효율적으로 다루기 위한 기초이기 때문에 리마인드하면서 다시 한 번 공부해야겠다.&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/63</guid>
      <comments>https://hangyeoldora.tistory.com/63#entry63comment</comments>
      <pubDate>Tue, 19 Aug 2025 23:47:40 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 49일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/62</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755516312452&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hjpmR/hyZDblZAbV/bAaDjF8mQ8OolrY7xU4mH1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/mOIrA/hyZyfjiyfa/KEzuOoS2yqMOlr7xoFxcbK/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hjpmR/hyZDblZAbV/bAaDjF8mQ8OolrY7xU4mH1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/mOIrA/hyZyfjiyfa/KEzuOoS2yqMOlr7xoFxcbK/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;피곤한 월요일에도 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;49일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5IyrE/btsPX4qx4ZL/k2RdkTdga9ray2uOb93kyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5IyrE/btsPX4qx4ZL/k2RdkTdga9ray2uOb93kyK/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.18 20:30)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5IyrE/btsPX4qx4ZL/k2RdkTdga9ray2uOb93kyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5IyrE%2FbtsPX4qx4ZL%2Fk2RdkTdga9ray2uOb93kyK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;483&quot; height=&quot;644&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.18 20:30)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;개념과 구조 - 프로토콜'&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byuHX4/btsPWWNz1GO/YDvqgsmB80RekasWRuL4YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byuHX4/btsPWWNz1GO/YDvqgsmB80RekasWRuL4YK/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byuHX4/btsPWWNz1GO/YDvqgsmB80RekasWRuL4YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyuHX4%2FbtsPWWNz1GO%2FYDvqgsmB80RekasWRuL4YK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- 개념과&amp;nbsp;구조&amp;nbsp;-&amp;nbsp;프로토콜 &amp;nbsp;-&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 프로토콜의 기본 의미&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;프로토콜은 규약을 의미한다. 소프트웨어 분야에서 프로토콜이라고 하면 보통 HTTP 같은 네트워크 통신 규약이 먼저 떠오른다. 예를 들어 웹 환경에서 프론트엔드는 서버와 데이터를 주고받기 위해 HTTP를 사용하고, 그와는 다른 특성을 가진 WebSocket을 활용해 실시간 양방향 통신을 구현하기도 한다. 채팅 서비스나 실시간 알림, 푸시 시스템이 바로 그 대표적인 예시다. 이런 맥락에서 프로토콜은 단순히 데이터 교환의 방식일 뿐 아니라 시스템이 안정적으로 협력하기 위한 최소한의 약속이 된다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 프로토콜의 확장된 관점&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;소프트웨어&amp;nbsp;방법론적인&amp;nbsp;관점에서&amp;nbsp;프로토콜은&amp;nbsp;훨씬&amp;nbsp;더&amp;nbsp;넓게&amp;nbsp;해석될&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;클래스&amp;nbsp;역시&amp;nbsp;일정한&amp;nbsp;규격을&amp;nbsp;가진&amp;nbsp;일종의&amp;nbsp;프로토콜로&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;클래스가&amp;nbsp;제공하는&amp;nbsp;속성과&amp;nbsp;메서드는&amp;nbsp;개발자가&amp;nbsp;특정한&amp;nbsp;방식으로&amp;nbsp;사용하도록&amp;nbsp;만들어둔&amp;nbsp;약속이다.&amp;nbsp;특히&amp;nbsp;추상&amp;nbsp;클래스나&amp;nbsp;인터페이스는&amp;nbsp;이러한&amp;nbsp;성격을&amp;nbsp;더욱&amp;nbsp;명확히&amp;nbsp;보여준다.&amp;nbsp;구현체가&amp;nbsp;반드시&amp;nbsp;특정&amp;nbsp;메서드를&amp;nbsp;오버라이드하도록&amp;nbsp;강제하는&amp;nbsp;것은&amp;nbsp;결국&amp;nbsp;어떤&amp;nbsp;협약을&amp;nbsp;지키도록&amp;nbsp;만드는&amp;nbsp;과정이다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;도구와 프로토콜&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;현대의&amp;nbsp;개발&amp;nbsp;도구와&amp;nbsp;프레임워크도&amp;nbsp;프로토콜을&amp;nbsp;기반으로&amp;nbsp;확장성을&amp;nbsp;확보한다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;웹팩은&amp;nbsp;다양한&amp;nbsp;기능을&amp;nbsp;커스터마이징하기&amp;nbsp;위해&amp;nbsp;로더와&amp;nbsp;플러그인&amp;nbsp;아키텍처를&amp;nbsp;제공한다.&amp;nbsp;개발자가&amp;nbsp;웹팩의&amp;nbsp;플러그인&amp;nbsp;규약을&amp;nbsp;따르면&amp;nbsp;새로운&amp;nbsp;기능을&amp;nbsp;추가해도&amp;nbsp;기존&amp;nbsp;생태계와&amp;nbsp;잘&amp;nbsp;어우러질&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;로더&amp;nbsp;프로토콜&amp;nbsp;역시&amp;nbsp;같은&amp;nbsp;맥락이다.&amp;nbsp;이를&amp;nbsp;따르면&amp;nbsp;누구든&amp;nbsp;웹팩을&amp;nbsp;위한&amp;nbsp;맞춤형&amp;nbsp;빌드&amp;nbsp;기능을&amp;nbsp;제작할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;생태계가&amp;nbsp;거대하게&amp;nbsp;확산될&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;마찬가지로&amp;nbsp;Node.js&amp;nbsp;기반의&amp;nbsp;Express&amp;nbsp;프레임워크&amp;nbsp;또한&amp;nbsp;미들웨어라는&amp;nbsp;확장&amp;nbsp;포인트를&amp;nbsp;제공한다.&amp;nbsp;그&amp;nbsp;자체가&amp;nbsp;일종의&amp;nbsp;프로토콜이며,&amp;nbsp;덕분에&amp;nbsp;수많은&amp;nbsp;라이브러리와&amp;nbsp;도구가&amp;nbsp;Express&amp;nbsp;위에서&amp;nbsp;협업할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;것이다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;프로토콜과 아키텍처적 시야&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;앱을&amp;nbsp;실제로&amp;nbsp;개발할&amp;nbsp;때&amp;nbsp;중요한&amp;nbsp;것은&amp;nbsp;단순히&amp;nbsp;기능을&amp;nbsp;구현하는&amp;nbsp;수준을&amp;nbsp;넘어서는&amp;nbsp;것이다.&amp;nbsp;규모가&amp;nbsp;커지는&amp;nbsp;프로젝트일수록&amp;nbsp;단순히&amp;nbsp;코드의&amp;nbsp;양을&amp;nbsp;늘리는&amp;nbsp;방식은&amp;nbsp;유지보수성과&amp;nbsp;협업&amp;nbsp;측면에서&amp;nbsp;한계가&amp;nbsp;분명하다.&amp;nbsp;오히려&amp;nbsp;볼륨이&amp;nbsp;큰&amp;nbsp;앱일수록&amp;nbsp;기능의&amp;nbsp;복잡도를&amp;nbsp;줄이고&amp;nbsp;협업을&amp;nbsp;용이하게&amp;nbsp;하기&amp;nbsp;위해&amp;nbsp;규격화된&amp;nbsp;아키텍처가&amp;nbsp;필수적이다.&amp;nbsp;이때&amp;nbsp;프로토콜을&amp;nbsp;기반으로&amp;nbsp;한&amp;nbsp;함수,&amp;nbsp;클래스,&amp;nbsp;또는&amp;nbsp;인터페이스의&amp;nbsp;도입은&amp;nbsp;복잡성을&amp;nbsp;제어하고&amp;nbsp;구조적인&amp;nbsp;일관성을&amp;nbsp;유지하는&amp;nbsp;데&amp;nbsp;중요한&amp;nbsp;역할을&amp;nbsp;한다.&amp;nbsp;이는&amp;nbsp;고급&amp;nbsp;개발자로&amp;nbsp;성장하기&amp;nbsp;위한&amp;nbsp;핵심&amp;nbsp;역량이기도&amp;nbsp;하다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;프로토콜을 바라보는 관점&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;프로토콜은&amp;nbsp;단지&amp;nbsp;언어나&amp;nbsp;프레임워크가&amp;nbsp;제공하는&amp;nbsp;기법에&amp;nbsp;머무르지&amp;nbsp;않는다.&amp;nbsp;추상화를&amp;nbsp;잘하는&amp;nbsp;능력&amp;nbsp;외에도,&amp;nbsp;문제&amp;nbsp;도메인에&amp;nbsp;맞는&amp;nbsp;프로토콜을&amp;nbsp;설계하고&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;협업이&amp;nbsp;가능한&amp;nbsp;시스템을&amp;nbsp;만드는&amp;nbsp;능력이&amp;nbsp;고급&amp;nbsp;역량으로&amp;nbsp;요구된다.&amp;nbsp;따라서&amp;nbsp;새로운&amp;nbsp;도구를&amp;nbsp;학습하거나&amp;nbsp;낯선&amp;nbsp;라이브러리를&amp;nbsp;접할&amp;nbsp;때는&amp;nbsp;단순히&amp;nbsp;사용법을&amp;nbsp;익히는&amp;nbsp;것을&amp;nbsp;넘어서,&amp;nbsp;그&amp;nbsp;안에&amp;nbsp;내장된&amp;nbsp;프로토콜이&amp;nbsp;무엇인지에&amp;nbsp;주목하는&amp;nbsp;것이&amp;nbsp;좋다.&amp;nbsp;어떤&amp;nbsp;규칙을&amp;nbsp;지켜야&amp;nbsp;하고,&amp;nbsp;개발자가&amp;nbsp;의도한&amp;nbsp;확장&amp;nbsp;포인트는&amp;nbsp;무엇인지,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;안에서&amp;nbsp;내가&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;부분은&amp;nbsp;어디인지를&amp;nbsp;탐구하는&amp;nbsp;습관은&amp;nbsp;구조적&amp;nbsp;사고를&amp;nbsp;넓히는&amp;nbsp;데&amp;nbsp;큰&amp;nbsp;도움이&amp;nbsp;된다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqlXa/btsPUFTPjcm/JcxNfy2kJ93Vymd8GMqtSk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqlXa/btsPUFTPjcm/JcxNfy2kJ93Vymd8GMqtSk/img.jpg&quot; data-alt=&quot;51강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqlXa/btsPUFTPjcm/JcxNfy2kJ93Vymd8GMqtSk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqqlXa%2FbtsPUFTPjcm%2FJcxNfy2kJ93Vymd8GMqtSk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;773&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;51강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFbnOX/btsPVwB7ZDQ/b3o35c8E4ZhrWp1RWRadO1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFbnOX/btsPVwB7ZDQ/b3o35c8E4ZhrWp1RWRadO1/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.18 20:38)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFbnOX/btsPVwB7ZDQ/b3o35c8E4ZhrWp1RWRadO1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFbnOX%2FbtsPVwB7ZDQ%2Fb3o35c8E4ZhrWp1RWRadO1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;733&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.18 20:38)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbMyvj/btsPXJmEOPX/TTA9yp10BuAAW6NDNcnaK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbMyvj/btsPXJmEOPX/TTA9yp10BuAAW6NDNcnaK1/img.png&quot; data-alt=&quot;51강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbMyvj/btsPXJmEOPX/TTA9yp10BuAAW6NDNcnaK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbMyvj%2FbtsPXJmEOPX%2FTTA9yp10BuAAW6NDNcnaK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;51강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-18 20.40.19.png&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;755&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWouRX/btsPXJAa5xn/iNC2Qdc2dK9oujbn0X55uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWouRX/btsPXJAa5xn/iNC2Qdc2dK9oujbn0X55uk/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWouRX/btsPXJAa5xn/iNC2Qdc2dK9oujbn0X55uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWouRX%2FbtsPXJAa5xn%2FiNC2Qdc2dK9oujbn0X55uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1003&quot; height=&quot;755&quot; data-filename=&quot;스크린샷 2025-08-18 20.40.19.png&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;755&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 51강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의에서는 프로토콜에 대한 내용을 다루었다. 흔히 알듯이 통신 규약 정도로 생각하고 있었는데 이를 소프트웨어 방법론적인 관점에서 말씀해주셔서 좋았다. 결국에 프로그램을 개발할 때 프로토콜과 같은 규약, 규칙을 정하고 추상화부터 올바르게 전체를 설계하고 구성하는 것이 중요하다는 것을 배웠다!&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/62</guid>
      <comments>https://hangyeoldora.tistory.com/62#entry62comment</comments>
      <pubDate>Mon, 18 Aug 2025 20:45:54 +0900</pubDate>
    </item>
    <item>
      <title>혼공학습단 14기 활동 회고 (6주의 시간)</title>
      <link>https://hangyeoldora.tistory.com/61</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;혼공학습단 14기 회고록&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;학생 때 데이터와 머신러닝을 배운 후 관련 공부가 끊겼지만 최근 LLM과 랭체인으로 RAG 시스템을 개발하며 머신러닝과 딥러닝 기초를 다시 공부하고 싶어졌었다. 그런데 회사 업무가 바빴던 것도 있지만 퇴근하더라도 피곤하고 새로운 걸 공부하는게 힘든 경우가 많았다. 그러다가 혼공학습단 14기를 보게 되었고 마침 혼공머신이라는 책이 있어서 신청을 했었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여름방학 기간 1주를 포함하여 총 7주 동안 학습단을 진행했는데 중간중간 턱이 붓거나 감기에 걸리는 등 이슈가 있었다.. 하지만 매주 정해진 목표가 있었기 때문에 의욕이 생겨서 공부를 진행할 수 있었다. 그리고 일주일이라는 기간동안 책을 읽고 실습을 할 수 있었기 때문에 시간도 여유로웠던 것 같다. 물론 오랜만에 해서 까먹은 것도 많고 새로운 것도 있어서 어려운 부분이 많았지만 목표와 숙제가 있어서 잘 끝마칠 수 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최근에는 LLM과 랭체인 기반의 시스템 개발 외 개인적으로 CNN이나 BERT를 이용한 토이 프로젝트 개발을 진행 중이다. 혼공머신 덕분에 지식도 쌓고 더 나아가 토이 프로젝트도 진행할 수 있었다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9791169213608.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oED1l/btsO5BSbjOL/DnByzQEPrKlqVpHxkXM2aK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oED1l/btsO5BSbjOL/DnByzQEPrKlqVpHxkXM2aK/img.jpg&quot; data-alt=&quot;한빛미디어의 혼공머신&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oED1l/btsO5BSbjOL/DnByzQEPrKlqVpHxkXM2aK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoED1l%2FbtsO5BSbjOL%2FDnByzQEPrKlqVpHxkXM2aK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;405&quot; data-filename=&quot;9791169213608.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한빛미디어의 혼공머신&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;혼공학습단을 하면서 나름 공부가 잘 진행되었기 때문에 이번에 회사에서 팀 스터디를 진행하기로 했다! 혼공학습단의 스케줄 표를 참고하여 스터디 목표를 정했고 룰은 아무래도 사내 스터디이기 때문에 벌금 등 조금은 엄격한? 룰을 정했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여러 책을 다같이 검토했었는데 그중에 오랠리 책이 이전에 좋았던 기억이 있었기 때문에 선정하였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째로는 최근 AI 붐이 심화되고 있는데 이에 대비하고자 LLM에 대한 전반적인 지식이 담긴 핸즈온 LLM을 선택하였다. 지난 주에 1주차로 1장을 진행하였는데 어려운 내용도 있었지만 설명도 잘 되어 있었기 때문에 다들 잘 진행할 수 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9791169213516.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZXH0n/btsPTAYQs61/0C84Yv04txQxRaqkYfdgI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZXH0n/btsPTAYQs61/0C84Yv04txQxRaqkYfdgI1/img.jpg&quot; data-alt=&quot;한빛미디어의 핸즈온 LLM&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZXH0n/btsPTAYQs61/0C84Yv04txQxRaqkYfdgI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZXH0n%2FbtsPTAYQs61%2F0C84Yv04txQxRaqkYfdgI1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;505&quot; data-filename=&quot;9791169213516.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한빛미디어의 핸즈온 LLM&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;두 번째로는 팀에서 사용하고 있는 언어인 자바스크립트와 리액트에 대해 다같이 좀 더 공부하고자 한빛미디어의 '자바스크립트 + 리액트 디자인 패턴' 책을 선정하였다. 안티 패턴부터 최신문법과 JS 디자인 패턴 등 필요한 내용들이 꽉꽉 차있어서 해당 책으로 정하였다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9791169212571.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;589&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyVwsr/btsPUENghwb/j6KIL2RUvGu1aNkkONGu7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyVwsr/btsPUENghwb/j6KIL2RUvGu1aNkkONGu7K/img.jpg&quot; data-alt=&quot;한빛미디어의 자바스크립트 + 디자인 패턴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyVwsr/btsPUENghwb/j6KIL2RUvGu1aNkkONGu7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyVwsr%2FbtsPUENghwb%2Fj6KIL2RUvGu1aNkkONGu7K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;398&quot; height=&quot;512&quot; data-filename=&quot;9791169212571.jpg&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;589&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한빛미디어의 자바스크립트 + 디자인 패턴&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼공학습단 덕분에 혼자 하기 어려운 공부를 매주 목표에 맞춰 꾸준히 할 수 있었다. 머신러닝과 딥러닝에 대한 지식을 다시 정리하고 확장할 수 있었으며, 무엇보다 꾸준한 학습 습관을 갖게 되었다. 그 결과, 회사에서도 사내 스터디를 구성하여 혼공학습단과 같은 일정으로 함께 공부하며 지식을 공유하고 있다. 이처럼 좋은 학습 환경과 습관을 만들어주신 혼공학습단과 매주 과제 점검과 격려를 해주신 족장님께 깊이 감사드린다. 앞으로도 이런 기회가 있다면 꼭 다시 참여하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다!&lt;/p&gt;</description>
      <category>혼공단/혼자 공부하는 머신러닝</category>
      <category>딥러닝</category>
      <category>머신러닝</category>
      <category>혼공단</category>
      <category>혼공머신</category>
      <category>혼공학습단</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/61</guid>
      <comments>https://hangyeoldora.tistory.com/61#entry61comment</comments>
      <pubDate>Sun, 17 Aug 2025 22:11:37 +0900</pubDate>
    </item>
    <item>
      <title>[혼공머신] 6주차_딥러닝</title>
      <link>https://hangyeoldora.tistory.com/60</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;챕터별&amp;nbsp;상세&amp;nbsp;내용은&amp;nbsp;다시&amp;nbsp;정리&amp;nbsp;예정..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;이번 주 목표와 이슈&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 주 혼공머신의 공부 목표는 '&lt;b&gt;Chapter 07. 딥러닝&lt;/b&gt;' 을 공부하는 것이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 주에는 회사 운영 반영건때문에 바쁜 것 외에는 몸에 큰 이상이 없어서 좋은 상태로 혼공머신을 공부했다. 드디어 딥러닝에 대한 부분이 나와서 재미있게 공부하고 실습을 했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;* 혼공단이란?&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;한빛미디어 에서 운영 혼공학습단은 각자 책을 정해 정해진 기간 동안 읽고, 매주 내용을 정리해 블로그에 올리며, 그 내용을 함께 공유하는 프로젝트&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;공부 내용&lt;/h3&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Chapter 07. 딥러닝&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;07-1&amp;nbsp;'인공&amp;nbsp;신경망'&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 패션 MNIST&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;머신러닝을&amp;nbsp;처음&amp;nbsp;접하는&amp;nbsp;사람들은&amp;nbsp;주로&amp;nbsp;붓꽃&amp;nbsp;데이터셋을&amp;nbsp;사용해서&amp;nbsp;학습한다.&amp;nbsp;딥러닝&amp;nbsp;분야에서는&amp;nbsp;MNIST&amp;nbsp;데이터셋이&amp;nbsp;자주&amp;nbsp;활용된다.&amp;nbsp;MNIST는&amp;nbsp;0부터&amp;nbsp;9까지&amp;nbsp;손글씨&amp;nbsp;숫자&amp;nbsp;이미지로&amp;nbsp;구성된&amp;nbsp;데이터인데,&amp;nbsp;패션&amp;nbsp;MNIST는&amp;nbsp;여기에&amp;nbsp;패션&amp;nbsp;아이템&amp;nbsp;이미지를&amp;nbsp;넣은&amp;nbsp;버전이다.&amp;nbsp;크기와&amp;nbsp;데이터&amp;nbsp;개수는&amp;nbsp;오리지널&amp;nbsp;MNIST와&amp;nbsp;동일하나,&amp;nbsp;숫자&amp;nbsp;대신&amp;nbsp;신발,&amp;nbsp;바지,&amp;nbsp;셔츠&amp;nbsp;등&amp;nbsp;여러&amp;nbsp;패션&amp;nbsp;아이템&amp;nbsp;이미지로&amp;nbsp;구성되어&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;이&amp;nbsp;데이터셋은&amp;nbsp;텐서플로&amp;nbsp;라이브러리를&amp;nbsp;사용해서&amp;nbsp;손쉽게&amp;nbsp;불러올&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이미지&amp;nbsp;데이터를&amp;nbsp;딥러닝&amp;nbsp;모델에&amp;nbsp;그대로&amp;nbsp;넣게&amp;nbsp;되면,&amp;nbsp;특성&amp;nbsp;값의&amp;nbsp;범위가&amp;nbsp;크기&amp;nbsp;때문에&amp;nbsp;학습에&amp;nbsp;어려움이&amp;nbsp;따른다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;MNIST&amp;nbsp;이미지의&amp;nbsp;각&amp;nbsp;픽셀&amp;nbsp;값은&amp;nbsp;0부터&amp;nbsp;255까지의&amp;nbsp;정수다.&amp;nbsp;이&amp;nbsp;값을&amp;nbsp;255로&amp;nbsp;나누어&amp;nbsp;0과&amp;nbsp;1&amp;nbsp;사이&amp;nbsp;값으로&amp;nbsp;정규화하면&amp;nbsp;학습이&amp;nbsp;훨씬&amp;nbsp;수월해진다.&amp;nbsp;이런&amp;nbsp;정규화는&amp;nbsp;이미지를&amp;nbsp;전처리할&amp;nbsp;때&amp;nbsp;널리&amp;nbsp;쓰는&amp;nbsp;방법이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 인공 신경망(Artificial Neural Network, ANN)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;인공&amp;nbsp;신경망은&amp;nbsp;입력을&amp;nbsp;받아&amp;nbsp;여러&amp;nbsp;층을&amp;nbsp;거쳐&amp;nbsp;출력을&amp;nbsp;내는&amp;nbsp;구조로&amp;nbsp;구성되어&amp;nbsp;있다.&amp;nbsp;가장&amp;nbsp;기본&amp;nbsp;구조는&amp;nbsp;입력층,&amp;nbsp;은닉층,&amp;nbsp;출력층으로&amp;nbsp;나뉜다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;신경망의&amp;nbsp;각&amp;nbsp;원소는&amp;nbsp;뉴런&amp;nbsp;또는&amp;nbsp;유닛이라고&amp;nbsp;부르며,&amp;nbsp;실제&amp;nbsp;계산은&amp;nbsp;선형&amp;nbsp;연산으로&amp;nbsp;이뤄진다.&amp;nbsp;입력층은&amp;nbsp;데이터를&amp;nbsp;그대로&amp;nbsp;전달하며,&amp;nbsp;특별한&amp;nbsp;계산&amp;nbsp;과정이&amp;nbsp;없지만&amp;nbsp;보통&amp;nbsp;입력층이라고&amp;nbsp;칭한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;신경망의&amp;nbsp;마지막&amp;nbsp;값이&amp;nbsp;나오는&amp;nbsp;층을&amp;nbsp;출력층이라고&amp;nbsp;한다.&amp;nbsp;신경망은&amp;nbsp;입력부터&amp;nbsp;출력까지&amp;nbsp;일련의&amp;nbsp;계산을&amp;nbsp;수행해&amp;nbsp;최종적으로&amp;nbsp;클래스를&amp;nbsp;예측해낸다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;신경망&amp;nbsp;구조는&amp;nbsp;1943년&amp;nbsp;워런&amp;nbsp;매컬러(McCulloch)와&amp;nbsp;월터&amp;nbsp;피츠(Pitts)가&amp;nbsp;제안한&amp;nbsp;최초&amp;nbsp;인공&amp;nbsp;뉴런&amp;nbsp;모델까지&amp;nbsp;거슬러&amp;nbsp;올라간다.&amp;nbsp;이&amp;nbsp;모델은&amp;nbsp;생물학적&amp;nbsp;뉴런에서&amp;nbsp;영감을&amp;nbsp;받아&amp;nbsp;설계됐다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 딥러닝과 심층 신경망&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;딥러닝은&amp;nbsp;인공&amp;nbsp;신경망과&amp;nbsp;거의&amp;nbsp;동의어처럼&amp;nbsp;사용된다.&amp;nbsp;여러&amp;nbsp;층을&amp;nbsp;가진&amp;nbsp;인공&amp;nbsp;신경망을&amp;nbsp;심층&amp;nbsp;신경망(Deep&amp;nbsp;Neural&amp;nbsp;Network,&amp;nbsp;DNN)이라고&amp;nbsp;하며,&amp;nbsp;여러&amp;nbsp;은닉층을&amp;nbsp;두어&amp;nbsp;복잡한&amp;nbsp;패턴을&amp;nbsp;학습할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 텐서플로와 케라스&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;텐서플로는&amp;nbsp;구글에서&amp;nbsp;2015년&amp;nbsp;공개한&amp;nbsp;딥러닝&amp;nbsp;오픈소스&amp;nbsp;라이브러리이다.&amp;nbsp;이와&amp;nbsp;함께&amp;nbsp;딥러닝에&amp;nbsp;대한&amp;nbsp;관심도&amp;nbsp;크게&amp;nbsp;늘었다.&amp;nbsp;2016년&amp;nbsp;알파고가&amp;nbsp;이세돌을&amp;nbsp;이긴&amp;nbsp;이후로&amp;nbsp;더욱&amp;nbsp;많은&amp;nbsp;사람들의&amp;nbsp;관심을&amp;nbsp;받았다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;텐서플로에는&amp;nbsp;저수준&amp;nbsp;API와&amp;nbsp;함께&amp;nbsp;고수준&amp;nbsp;API가&amp;nbsp;제공되는데,&amp;nbsp;그&amp;nbsp;대표가&amp;nbsp;바로&amp;nbsp;케라스다.&amp;nbsp;케라스는&amp;nbsp;2015년&amp;nbsp;프랑소와&amp;nbsp;숄레가&amp;nbsp;만든&amp;nbsp;딥러닝&amp;nbsp;라이브러리로,&amp;nbsp;텐서플로와&amp;nbsp;연동되어&amp;nbsp;점차&amp;nbsp;통합이&amp;nbsp;진행됐다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;딥러닝&amp;nbsp;모델은&amp;nbsp;GPU&amp;nbsp;연산을&amp;nbsp;적극&amp;nbsp;활용하고,&amp;nbsp;대규모의&amp;nbsp;벡터,&amp;nbsp;행렬&amp;nbsp;곱셈과&amp;nbsp;덧셈을&amp;nbsp;빠르게&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;특징이&amp;nbsp;있다.&amp;nbsp;케라스는&amp;nbsp;자체적으로&amp;nbsp;GPU&amp;nbsp;연산을&amp;nbsp;수행하지&amp;nbsp;않고,&amp;nbsp;텐서플로나&amp;nbsp;CNTK,&amp;nbsp;씨아노&amp;nbsp;등의&amp;nbsp;라이브러리를&amp;nbsp;연산&amp;nbsp;백엔드로&amp;nbsp;쓴다.&amp;nbsp;최근에는&amp;nbsp;멀티-백엔드&amp;nbsp;케라스가&amp;nbsp;2.3.1&amp;nbsp;이후&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;개발되지&amp;nbsp;않으며,&amp;nbsp;텐서플로와&amp;nbsp;케라스가&amp;nbsp;사실상&amp;nbsp;같은&amp;nbsp;의미로&amp;nbsp;사용된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 케라스의 레이어와 신경망 구현&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;케라스에는&amp;nbsp;다양한&amp;nbsp;신경망&amp;nbsp;층이&amp;nbsp;준비되어&amp;nbsp;있다.&amp;nbsp;그&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;기본적인&amp;nbsp;것이&amp;nbsp;밀집층(Dense&amp;nbsp;Layer)이다.&amp;nbsp;밀집층이란&amp;nbsp;입력층의&amp;nbsp;모든&amp;nbsp;뉴런과&amp;nbsp;출력층의&amp;nbsp;모든&amp;nbsp;뉴런이&amp;nbsp;서로&amp;nbsp;연결되는&amp;nbsp;구조이며,&amp;nbsp;이를&amp;nbsp;완전&amp;nbsp;연결층(Fully&amp;nbsp;Connected&amp;nbsp;Layer)이라고&amp;nbsp;부르기도&amp;nbsp;한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;각&amp;nbsp;층의&amp;nbsp;출력에&amp;nbsp;적용되는&amp;nbsp;함수를&amp;nbsp;활성화&amp;nbsp;함수(Activation&amp;nbsp;Function)라고&amp;nbsp;한다.&amp;nbsp;대표적으로&amp;nbsp;시그모이드,&amp;nbsp;소프트맥스&amp;nbsp;등이&amp;nbsp;있다.&amp;nbsp;신경망&amp;nbsp;훈련에는&amp;nbsp;fit()&amp;nbsp;메서드를&amp;nbsp;활용하며,&amp;nbsp;입력&amp;nbsp;데이터와&amp;nbsp;타깃을&amp;nbsp;지정하고&amp;nbsp;학습&amp;nbsp;반복&amp;nbsp;횟수(epochs)&amp;nbsp;등의&amp;nbsp;매개변수를&amp;nbsp;설정하면&amp;nbsp;된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* 실습&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;인공신경-1.png&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BsCG1/btsPUhLhKEJ/NyQVGJ3tbgW5i1obqJgYmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BsCG1/btsPUhLhKEJ/NyQVGJ3tbgW5i1obqJgYmk/img.png&quot; data-alt=&quot;인공신경망 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BsCG1/btsPUhLhKEJ/NyQVGJ3tbgW5i1obqJgYmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBsCG1%2FbtsPUhLhKEJ%2FNyQVGJ3tbgW5i1obqJgYmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1263&quot; height=&quot;863&quot; data-filename=&quot;인공신경-1.png&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인공신경망 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;인공신경-2.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;775&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9aXAH/btsPSPWwwYf/rFD92Tw7OxLyKd6cwZ1FdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9aXAH/btsPSPWwwYf/rFD92Tw7OxLyKd6cwZ1FdK/img.png&quot; data-alt=&quot;인공신경망 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9aXAH/btsPSPWwwYf/rFD92Tw7OxLyKd6cwZ1FdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9aXAH%2FbtsPSPWwwYf%2FrFD92Tw7OxLyKd6cwZ1FdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1268&quot; height=&quot;775&quot; data-filename=&quot;인공신경-2.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;775&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인공신경망 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;07-2 '심층 신경망'&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;입력층과&amp;nbsp;출력층&amp;nbsp;사이에&amp;nbsp;위치한&amp;nbsp;모든&amp;nbsp;층을&amp;nbsp;은닉층이라&amp;nbsp;한다.&amp;nbsp;이&amp;nbsp;은닉층에는&amp;nbsp;시그모이드,&amp;nbsp;렐루(ReLU)&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;활성화&amp;nbsp;함수가&amp;nbsp;사용된다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;dense1이라는&amp;nbsp;이름의&amp;nbsp;은닉층에&amp;nbsp;100개의&amp;nbsp;뉴런을&amp;nbsp;두고,&amp;nbsp;시그모이드&amp;nbsp;활성화&amp;nbsp;함수를&amp;nbsp;지정할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;출력층인&amp;nbsp;dense2에는&amp;nbsp;10개의&amp;nbsp;뉴런과&amp;nbsp;소프트맥스&amp;nbsp;활성화&amp;nbsp;함수를&amp;nbsp;써서&amp;nbsp;다중&amp;nbsp;클래스&amp;nbsp;분류&amp;nbsp;문제를&amp;nbsp;해결한다.&lt;br /&gt;&lt;br /&gt;심층&amp;nbsp;신경망&amp;nbsp;만들기&amp;nbsp;&amp;nbsp;&lt;br /&gt;여러&amp;nbsp;층을&amp;nbsp;Sequential&amp;nbsp;클래스를&amp;nbsp;통해&amp;nbsp;쌓으면&amp;nbsp;심층&amp;nbsp;신경망(DNN)을&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&lt;br /&gt;활성화&amp;nbsp;함수:&amp;nbsp;렐루(ReLU)&amp;nbsp;&amp;nbsp;&lt;br /&gt;초기에는 시그모이드 함수가 많이 쓰였으나, 층이 깊어질수록 학습이 어려워지고 성능도 저하되는 문제가 있었다. 이를 개선하고자 렐루 함수가 널리 사용되고 있다. 렐루 함수는 입력이 0보다 크면 그대로 값을 반환하고 0 이하는 0으로 만든다. 이로써 더 깊은 층에서도 효율적으로 학습이 진행된다.&lt;br /&gt;&lt;br /&gt;옵티마이저(Optimizer)&amp;nbsp;&amp;nbsp;&lt;br /&gt;신경망에는&amp;nbsp;다양한&amp;nbsp;하이퍼파라미터가&amp;nbsp;있는데,&amp;nbsp;층의&amp;nbsp;수,&amp;nbsp;각&amp;nbsp;층의&amp;nbsp;뉴런&amp;nbsp;수,&amp;nbsp;활성화&amp;nbsp;함수&amp;nbsp;등이&amp;nbsp;모두&amp;nbsp;하이퍼파라미터다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;모델을&amp;nbsp;컴파일할&amp;nbsp;때&amp;nbsp;compile()&amp;nbsp;메서드를&amp;nbsp;활용하며,&amp;nbsp;최적화&amp;nbsp;알고리즘(옵티마이저)을&amp;nbsp;설정한다.&amp;nbsp;케라스는&amp;nbsp;RMSprop,&amp;nbsp;SGD&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;옵티마이저를&amp;nbsp;제공한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;SGD 클래스에는 모멘텀(momentum)이나 네스테로프(Nesterov)와 같은 고급 옵션도 포함되어 있어 하이퍼파라미터를 조절할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* 실습&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;심층신경-1.png&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;951&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ74Wh/btsPVZXpr9T/If3WCzQ6Srk6XaWezOZg81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ74Wh/btsPVZXpr9T/If3WCzQ6Srk6XaWezOZg81/img.png&quot; data-alt=&quot;심층 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ74Wh/btsPVZXpr9T/If3WCzQ6Srk6XaWezOZg81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ74Wh%2FbtsPVZXpr9T%2FIf3WCzQ6Srk6XaWezOZg81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;951&quot; data-filename=&quot;심층신경-1.png&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;951&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;심층 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;심층신경-2.png&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3X3pS/btsPVZQDW8c/XNfoYm9sQc4WzY5GJ3bsdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3X3pS/btsPVZQDW8c/XNfoYm9sQc4WzY5GJ3bsdK/img.png&quot; data-alt=&quot;심층 -2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3X3pS/btsPVZQDW8c/XNfoYm9sQc4WzY5GJ3bsdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3X3pS%2FbtsPVZQDW8c%2FXNfoYm9sQc4WzY5GJ3bsdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1261&quot; height=&quot;1164&quot; data-filename=&quot;심층신경-2.png&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;심층 -2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;07-3 '신경망 모델 훈련'&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* 손실 곡선&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;모델의&amp;nbsp;훈련&amp;nbsp;상황을&amp;nbsp;시각적으로&amp;nbsp;확인하려면&amp;nbsp;손실&amp;nbsp;곡선을&amp;nbsp;살펴보면&amp;nbsp;된다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;verbose&amp;nbsp;매개변수로&amp;nbsp;훈련&amp;nbsp;출력물을&amp;nbsp;제어할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;기본값은&amp;nbsp;1인데,&amp;nbsp;이를&amp;nbsp;2로&amp;nbsp;바꾸면&amp;nbsp;진행&amp;nbsp;막대&amp;nbsp;없이&amp;nbsp;텍스트만&amp;nbsp;보여준다.&amp;nbsp;0으로&amp;nbsp;두면&amp;nbsp;훈련&amp;nbsp;로그를&amp;nbsp;출력하지&amp;nbsp;않는다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 검증 손실&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;과대적합이나&amp;nbsp;과소적합을&amp;nbsp;판별하려면&amp;nbsp;훈련&amp;nbsp;세트와&amp;nbsp;검증&amp;nbsp;세트&amp;nbsp;손실을&amp;nbsp;모두&amp;nbsp;확인해야&amp;nbsp;한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;딥러닝&amp;nbsp;모델은&amp;nbsp;정확도가&amp;nbsp;아닌&amp;nbsp;손실&amp;nbsp;함수(loss&amp;nbsp;function)를&amp;nbsp;최적화하며,&amp;nbsp;손실이&amp;nbsp;줄었다고&amp;nbsp;해서&amp;nbsp;정확도가&amp;nbsp;반드시&amp;nbsp;비례해서&amp;nbsp;오르진&amp;nbsp;않는다.&amp;nbsp;따라서&amp;nbsp;모델&amp;nbsp;성능을&amp;nbsp;평가할&amp;nbsp;때는&amp;nbsp;손실&amp;nbsp;함수의&amp;nbsp;값을&amp;nbsp;함께&amp;nbsp;고려하는&amp;nbsp;것이&amp;nbsp;좋다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;드롭아웃(Dropout)&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;드롭아웃은&amp;nbsp;신경망의&amp;nbsp;일부&amp;nbsp;뉴런을&amp;nbsp;임의로&amp;nbsp;꺼서&amp;nbsp;과대적합&amp;nbsp;문제를&amp;nbsp;완화하는&amp;nbsp;정규화&amp;nbsp;기법이다.&amp;nbsp;이는&amp;nbsp;제프리&amp;nbsp;힌턴이&amp;nbsp;제안했다.&amp;nbsp;드롭아웃은&amp;nbsp;훈련&amp;nbsp;중에만&amp;nbsp;활성화되며,&amp;nbsp;테스트&amp;nbsp;시기에는&amp;nbsp;모든&amp;nbsp;뉴런을&amp;nbsp;활용한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;콜백(Callback)과&amp;nbsp;조기&amp;nbsp;종료&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;콜백은&amp;nbsp;훈련&amp;nbsp;중&amp;nbsp;특정&amp;nbsp;시점에&amp;nbsp;작업을&amp;nbsp;자동으로&amp;nbsp;실행하도록&amp;nbsp;하는&amp;nbsp;옵션이다.&amp;nbsp;케라스는&amp;nbsp;keras.callbacks&amp;nbsp;패키지에&amp;nbsp;여러&amp;nbsp;콜백&amp;nbsp;기능을&amp;nbsp;제공한다.&amp;nbsp;fit()&amp;nbsp;메서드의&amp;nbsp;callbacks&amp;nbsp;파라미터에&amp;nbsp;리스트로&amp;nbsp;넣어서&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;훈련&amp;nbsp;과정에서&amp;nbsp;검증&amp;nbsp;점수가&amp;nbsp;상승하면,&amp;nbsp;그&amp;nbsp;이후부터는&amp;nbsp;과대적합이&amp;nbsp;커질&amp;nbsp;수&amp;nbsp;있으므로&amp;nbsp;미리&amp;nbsp;훈련을&amp;nbsp;중단하는&amp;nbsp;것이&amp;nbsp;좋다.&amp;nbsp;이런&amp;nbsp;기법을&amp;nbsp;조기&amp;nbsp;종료(early&amp;nbsp;stopping)라고&amp;nbsp;하며,&amp;nbsp;딥러닝에서&amp;nbsp;자주&amp;nbsp;활용된다.&lt;br /&gt;&lt;br /&gt;이상으로&amp;nbsp;인공&amp;nbsp;신경망,&amp;nbsp;딥러닝&amp;nbsp;모델의&amp;nbsp;기초&amp;nbsp;개념과&amp;nbsp;케라스,&amp;nbsp;텐서플로를&amp;nbsp;활용한&amp;nbsp;기본&amp;nbsp;딥러닝&amp;nbsp;모델&amp;nbsp;구현&amp;nbsp;및&amp;nbsp;하이퍼파라미터&amp;nbsp;설정,&amp;nbsp;손실&amp;nbsp;곡선&amp;nbsp;시각화,&amp;nbsp;드롭아웃과&amp;nbsp;콜백,&amp;nbsp;조기&amp;nbsp;종료&amp;nbsp;등&amp;nbsp;실제&amp;nbsp;적용&amp;nbsp;가능성을&amp;nbsp;살펴봤다.&amp;nbsp;앞으로는&amp;nbsp;예제&amp;nbsp;구현이나&amp;nbsp;실전&amp;nbsp;문제를&amp;nbsp;통해&amp;nbsp;이해를&amp;nbsp;확장할&amp;nbsp;계획이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* 실습&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;신경망-1.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;1205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czcuHh/btsPWllEIGO/lzrAWMUYEKvBsd1YElriG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czcuHh/btsPWllEIGO/lzrAWMUYEKvBsd1YElriG1/img.png&quot; data-alt=&quot;신경망 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czcuHh/btsPWllEIGO/lzrAWMUYEKvBsd1YElriG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczcuHh%2FbtsPWllEIGO%2FlzrAWMUYEKvBsd1YElriG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1282&quot; height=&quot;1205&quot; data-filename=&quot;신경망-1.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;1205&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;신경망 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;신경망-2.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZ5FuP/btsPVAiWPZ7/XKpnb2KMFejrw6WQDZRj41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZ5FuP/btsPVAiWPZ7/XKpnb2KMFejrw6WQDZRj41/img.png&quot; data-alt=&quot;신경망 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZ5FuP/btsPVAiWPZ7/XKpnb2KMFejrw6WQDZRj41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZ5FuP%2FbtsPVAiWPZ7%2FXKpnb2KMFejrw6WQDZRj41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1281&quot; height=&quot;1121&quot; data-filename=&quot;신경망-2.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;1121&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;신경망 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기본 숙제&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제: '어떤 인공 신경망의 입력 특성이 100개이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇개인가요?'&lt;br /&gt;&lt;br /&gt;인공 신경망에서 밀집층의 파라미터 개수 계산 시에는 &lt;u&gt;가중치에 절편(편향)&lt;/u&gt;을 더한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가중치는 특성 수인 100과 뉴런 개수인 10개를 곱해서 1000이 되고 이에 뉴런당 1개의 절편을 가지고 있으므로 총 10개해서 &lt;u&gt;전체 1010&lt;/u&gt;개의 파라미터 개수가 된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 챕터에서는 인공 신경망의 기본 개념부터 심층 신경망 구성, 활성화 함수, 옵티마이저, 그리고 모델 훈련 과정까지 체계적으로 배웠다. 특히 케라스와 텐서플로를 활용한 실전 구현 방법을 익히면서 딥러닝의 전체 흐름을 이해할 수 있었다. 앞으로 다른 실습을 통해서 더 잘 이해할 수 있도록 해야겠다.&lt;/p&gt;</description>
      <category>혼공단/혼자 공부하는 머신러닝</category>
      <category>딥러닝</category>
      <category>머신러닝</category>
      <category>혼공단</category>
      <category>혼공머신</category>
      <category>혼공학습단</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/60</guid>
      <comments>https://hangyeoldora.tistory.com/60#entry60comment</comments>
      <pubDate>Sun, 17 Aug 2025 21:47:05 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 48일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/59</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755414664586&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bofXIu/hyZzyhWZBB/2WsvaPwk6K84n6cAIs7V4K/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/YKwm3/hyZyfXyaZ3/sKYfIQioQod48IjFu1t4R0/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bofXIu/hyZzyhWZBB/2WsvaPwk6K84n6cAIs7V4K/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/YKwm3/hyZyfXyaZ3/sKYfIQioQod48IjFu1t4R0/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일요일에도 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;48일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5G6l0/btsPVxGMMoc/T6HVKpkwaIkokLgkP3GF91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5G6l0/btsPVxGMMoc/T6HVKpkwaIkokLgkP3GF91/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.17 15:59)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5G6l0/btsPVxGMMoc/T6HVKpkwaIkokLgkP3GF91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5G6l0%2FbtsPVxGMMoc%2FT6HVKpkwaIkokLgkP3GF91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;566&quot; height=&quot;755&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.17 15:59)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;개념과 구조 - 순회'&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d8lgtO/btsPUsfeM9G/zFNouSY7UqNJnr2nEm7AU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d8lgtO/btsPUsfeM9G/zFNouSY7UqNJnr2nEm7AU0/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d8lgtO/btsPUsfeM9G/zFNouSY7UqNJnr2nEm7AU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd8lgtO%2FbtsPUsfeM9G%2FzFNouSY7UqNJnr2nEm7AU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- 개념과 구조 - 순회&amp;nbsp; -&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;* 순회의 의미&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;프로그래밍에서&amp;nbsp;순회라는&amp;nbsp;개념은&amp;nbsp;데이터를&amp;nbsp;반복적으로&amp;nbsp;접근하면서&amp;nbsp;특정한&amp;nbsp;연산을&amp;nbsp;수행하는&amp;nbsp;과정을&amp;nbsp;의미한다.&amp;nbsp;배열이나&amp;nbsp;객체와&amp;nbsp;같은&amp;nbsp;자료&amp;nbsp;구조는&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;값을&amp;nbsp;담고&amp;nbsp;있는데,&amp;nbsp;그&amp;nbsp;안에서&amp;nbsp;원하는&amp;nbsp;방식으로&amp;nbsp;값&amp;nbsp;하나하나를&amp;nbsp;꺼내어&amp;nbsp;처리하는&amp;nbsp;동작이&amp;nbsp;바로&amp;nbsp;순회다.&amp;nbsp;순회는&amp;nbsp;데이터&amp;nbsp;처리&amp;nbsp;과정&amp;nbsp;전반에서&amp;nbsp;기본이&amp;nbsp;되는&amp;nbsp;패턴이며,&amp;nbsp;단순히&amp;nbsp;값을&amp;nbsp;변환하거나&amp;nbsp;필터링하는&amp;nbsp;작은&amp;nbsp;작업부터&amp;nbsp;더&amp;nbsp;복잡한&amp;nbsp;연산에&amp;nbsp;이르기까지&amp;nbsp;폭넓게&amp;nbsp;활용된다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;* 명령형 순회와 함수형 순회&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 실습 코드&lt;/p&gt;
&lt;pre id=&quot;code_1755414920903&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 명령형
cosnt arr = [];
for (const n of [1, 2, 3, 4]) {
	arr.push(n * 2);
}

// 함수형
const arr2 = [1, 2, 3, 4].map(n =&amp;gt; n * 2);

const arr3 = [1, 2, 3, 4]
	.map(n =&amp;gt; n * 3)
	.filter(n =&amp;gt; n % 2 !== 0)
	.map(n =&amp;gt; `&amp;lt;li&amp;gt;${n}&amp;lt;/li&amp;gt;`)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;배열을&amp;nbsp;순회하는&amp;nbsp;방법에는&amp;nbsp;크게&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;방식이&amp;nbsp;있다.&amp;nbsp;첫&amp;nbsp;번째는&amp;nbsp;명령형&amp;nbsp;방식으로서,&amp;nbsp;반복문을&amp;nbsp;직접&amp;nbsp;작성하여&amp;nbsp;실행&amp;nbsp;흐름을&amp;nbsp;하나하나&amp;nbsp;명시하는&amp;nbsp;방법이다.&amp;nbsp;for&amp;nbsp;of&amp;nbsp;구문을&amp;nbsp;이용해&amp;nbsp;배열을&amp;nbsp;순회하면서&amp;nbsp;연산&amp;nbsp;결과를&amp;nbsp;새로운&amp;nbsp;배열에&amp;nbsp;담는&amp;nbsp;전형적인&amp;nbsp;패턴이&amp;nbsp;이에&amp;nbsp;해당한다.&amp;nbsp;이&amp;nbsp;방식은&amp;nbsp;실행&amp;nbsp;과정이&amp;nbsp;눈에&amp;nbsp;잘&amp;nbsp;들어오고&amp;nbsp;직관적이지만,&amp;nbsp;로직이&amp;nbsp;길어지기&amp;nbsp;쉽고&amp;nbsp;조건이나&amp;nbsp;변환&amp;nbsp;과정을&amp;nbsp;재활용하기&amp;nbsp;어렵다는&amp;nbsp;단점이&amp;nbsp;있다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;두&amp;nbsp;번째는&amp;nbsp;함수형&amp;nbsp;프로그래밍&amp;nbsp;스타일로,&amp;nbsp;배열의&amp;nbsp;메서드인&amp;nbsp;map,&amp;nbsp;filter&amp;nbsp;같은&amp;nbsp;고차&amp;nbsp;함수를&amp;nbsp;활용한다.&amp;nbsp;이&amp;nbsp;방식은&amp;nbsp;조건식과&amp;nbsp;변환&amp;nbsp;로직을&amp;nbsp;함수의&amp;nbsp;형태로&amp;nbsp;캡슐화하기&amp;nbsp;때문에&amp;nbsp;코드가&amp;nbsp;훨씬&amp;nbsp;간결해지고,&amp;nbsp;작은&amp;nbsp;단위의&amp;nbsp;연산을&amp;nbsp;쉽게&amp;nbsp;조합할&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;특징을&amp;nbsp;가진다.&amp;nbsp;결과적으로&amp;nbsp;데이터&amp;nbsp;흐름을&amp;nbsp;선언적으로&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있어&amp;nbsp;코드의&amp;nbsp;구조가&amp;nbsp;더&amp;nbsp;명확해진다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 연산의 조합과 체이닝&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;순회가&amp;nbsp;단순한&amp;nbsp;변환&amp;nbsp;하나로&amp;nbsp;끝나지&amp;nbsp;않을&amp;nbsp;때도&amp;nbsp;많다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;특정&amp;nbsp;연산으로&amp;nbsp;값을&amp;nbsp;변환한&amp;nbsp;뒤,&amp;nbsp;조건을&amp;nbsp;적용해&amp;nbsp;일부&amp;nbsp;항목만&amp;nbsp;남기거나,&amp;nbsp;다시&amp;nbsp;다른&amp;nbsp;형태로&amp;nbsp;변환하는&amp;nbsp;식이다.&amp;nbsp;이런&amp;nbsp;과정을&amp;nbsp;함수형&amp;nbsp;스타일에서는&amp;nbsp;메서드&amp;nbsp;체이닝을&amp;nbsp;통해&amp;nbsp;직관적으로&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;map으로&amp;nbsp;변환하고&amp;nbsp;filter로&amp;nbsp;걸러낸&amp;nbsp;뒤,&amp;nbsp;다시&amp;nbsp;map으로&amp;nbsp;특정한&amp;nbsp;템플릿을&amp;nbsp;적용하는&amp;nbsp;식이다.&amp;nbsp;각각의&amp;nbsp;연산이&amp;nbsp;작은&amp;nbsp;단위로&amp;nbsp;분리되어&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;재사용이&amp;nbsp;가능하고,&amp;nbsp;로직의&amp;nbsp;구성&amp;nbsp;또한&amp;nbsp;분명해진다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 순회의 핵심 포인트&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;중요한&amp;nbsp;점은&amp;nbsp;순회의&amp;nbsp;핵심이&amp;nbsp;어떤&amp;nbsp;방식으로&amp;nbsp;동작하는지&amp;nbsp;파악하는&amp;nbsp;데&amp;nbsp;있다.&amp;nbsp;명령형&amp;nbsp;코드에서는&amp;nbsp;세세한&amp;nbsp;절차를&amp;nbsp;일일이&amp;nbsp;제어하는&amp;nbsp;대신&amp;nbsp;직접적인&amp;nbsp;실행&amp;nbsp;과정을&amp;nbsp;쉽게&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;함수형&amp;nbsp;코드에서는&amp;nbsp;데이터&amp;nbsp;흐름을&amp;nbsp;변환&amp;nbsp;규칙에&amp;nbsp;따라&amp;nbsp;설계하고&amp;nbsp;이를&amp;nbsp;조립하듯&amp;nbsp;결합한다.&amp;nbsp;어느&amp;nbsp;방식이든&amp;nbsp;결국&amp;nbsp;동일한&amp;nbsp;연산을&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;문제의&amp;nbsp;복잡성이&amp;nbsp;커질수록&amp;nbsp;함수형&amp;nbsp;방식이&amp;nbsp;재활용성과&amp;nbsp;유지보수&amp;nbsp;측면에서&amp;nbsp;더&amp;nbsp;유리하다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 개발에서 배열 순회는 매우 빈번하게 등장하는 패턴이므로 함수형 프로그래밍에 익숙해지는 것이 필수적이다. 단순히 문법을 외우는 수준을 넘어 데이터 변환과 조합의 흐름을 이해하고 체이닝을 활용하는 습관을 들이면 반복적인 문제 해결 속도가 빨라지고 코드 품질도 높아진다. 따라서 순회를 단순한 반복이 아닌 작은 연산 단위를 체계적으로 결합하는 아키텍처적 관점에서 이해하는 것이 중요하다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5LvtR/btsPUSEpo7Z/7CxgwtxZrMPk3s2sliXkKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5LvtR/btsPUSEpo7Z/7CxgwtxZrMPk3s2sliXkKk/img.jpg&quot; data-alt=&quot;50강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5LvtR/btsPUSEpo7Z/7CxgwtxZrMPk3s2sliXkKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5LvtR%2FbtsPUSEpo7Z%2F7CxgwtxZrMPk3s2sliXkKk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;809&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;50강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vDMlc/btsPWtRmtYu/KtX47yHY6jExz7c4rWWdRk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vDMlc/btsPWtRmtYu/KtX47yHY6jExz7c4rWWdRk/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.17 16:07)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vDMlc/btsPWtRmtYu/KtX47yHY6jExz7c4rWWdRk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvDMlc%2FbtsPWtRmtYu%2FKtX47yHY6jExz7c4rWWdRk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;760&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.17 16:07)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zi9qw/btsPWhjaKs2/KXgCJlgGY6Oz0CAPfG8UX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zi9qw/btsPWhjaKs2/KXgCJlgGY6Oz0CAPfG8UX1/img.png&quot; data-alt=&quot;50강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zi9qw/btsPWhjaKs2/KXgCJlgGY6Oz0CAPfG8UX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZi9qw%2FbtsPWhjaKs2%2FKXgCJlgGY6Oz0CAPfG8UX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;50강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-17 16.09.11.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vw7UK/btsPVwOGsPs/qwRR5YYKrjK0f86V0x3cI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vw7UK/btsPVwOGsPs/qwRR5YYKrjK0f86V0x3cI0/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vw7UK/btsPVwOGsPs/qwRR5YYKrjK0f86V0x3cI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvw7UK%2FbtsPVwOGsPs%2FqwRR5YYKrjK0f86V0x3cI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1008&quot; height=&quot;764&quot; data-filename=&quot;스크린샷 2025-08-17 16.09.11.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 50강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의에서는 순회에 대해 배웠다. 배열을 순환하는 순회는 워낙 많이 쓰기 때문에 해당 내용에 대해 잘 설명해주셔서 좋았다. 작은 단위의 연산으로 나누고 재활용성을 높이며 각각의 노드로 나눌 수 있는 함수형 프로그래밍을 잘 써야하는 것에 대해 알 수 있었다.&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/59</guid>
      <comments>https://hangyeoldora.tistory.com/59#entry59comment</comments>
      <pubDate>Sun, 17 Aug 2025 16:17:26 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 47일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/58</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755353951406&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9nZxz/hyZyqkafhD/daKJAqbriLEMj16LCRDOkk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/iV3wq/hyZvqsdneI/cswCUwzpzJYkJangSYINGK/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9nZxz/hyZyqkafhD/daKJAqbriLEMj16LCRDOkk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/iV3wq/hyZvqsdneI/cswCUwzpzJYkJangSYINGK/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;너무 더운 날씨에도 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;47일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jq9v5/btsPU0vEYww/7YiqtfAbTvaKHj9RgZo9J0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jq9v5/btsPU0vEYww/7YiqtfAbTvaKHj9RgZo9J0/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.16 23:21)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jq9v5/btsPU0vEYww/7YiqtfAbTvaKHj9RgZo9J0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJq9v5%2FbtsPU0vEYww%2F7YiqtfAbTvaKHj9RgZo9J0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;769&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.16 23:21)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;개념과 구조 - API&lt;/b&gt;'이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U9oTA/btsPWsSn7Zc/mSUo1gxKX88hKnCmn9SEh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U9oTA/btsPWsSn7Zc/mSUo1gxKX88hKnCmn9SEh0/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U9oTA/btsPWsSn7Zc/mSUo1gxKX88hKnCmn9SEh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU9oTA%2FbtsPWsSn7Zc%2FmSUo1gxKX88hKnCmn9SEh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- API -&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Web API는 자바스크립트를 기반으로 웹 애플리케이션을 개발할 때 활용할 수 있는 폭넓은 도구 집합이다. 실제로 브라우저 환경에서 제공되는 API는 방대하고, MDN 문서를 살펴보면 사전처럼 나열된 수많은 기능들을 확인할 수 있다. API는 단순한 유틸리티부터 시스템 자원 접근까지 다양한 범위를 아우르며, 상황에 맞게 선택적으로 활용할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 스토리지 API&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;스토리지&amp;nbsp;API는&amp;nbsp;브라우저에서&amp;nbsp;데이터를&amp;nbsp;클라이언트&amp;nbsp;측에&amp;nbsp;저장하기&amp;nbsp;위해&amp;nbsp;제공되는&amp;nbsp;기능이다.&amp;nbsp;개발자&amp;nbsp;도구의&amp;nbsp;애플리케이션&amp;nbsp;탭을&amp;nbsp;통해&amp;nbsp;로컬&amp;nbsp;스토리지,&amp;nbsp;세션&amp;nbsp;스토리지,&amp;nbsp;IndexedDB,&amp;nbsp;Web&amp;nbsp;SQL,&amp;nbsp;쿠키&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;저장소를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;이&amp;nbsp;중&amp;nbsp;IndexedDB와&amp;nbsp;Web&amp;nbsp;SQL은&amp;nbsp;데이터베이스&amp;nbsp;기능을&amp;nbsp;제공하지만,&amp;nbsp;클라이언트&amp;nbsp;단에서&amp;nbsp;대규모&amp;nbsp;데이터를&amp;nbsp;다루는&amp;nbsp;경우가&amp;nbsp;드물기&amp;nbsp;때문에&amp;nbsp;일반적인&amp;nbsp;웹&amp;nbsp;애플리케이션에서는&amp;nbsp;잘&amp;nbsp;쓰이지&amp;nbsp;않는다.&amp;nbsp;실제로&amp;nbsp;가장&amp;nbsp;많이&amp;nbsp;활용되는&amp;nbsp;것은&amp;nbsp;로컬&amp;nbsp;스토리지와&amp;nbsp;세션&amp;nbsp;스토리지다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;로컬&amp;nbsp;스토리지는&amp;nbsp;데이터를&amp;nbsp;직접&amp;nbsp;삭제하지&amp;nbsp;않는&amp;nbsp;이상&amp;nbsp;브라우저에&amp;nbsp;지속적으로&amp;nbsp;남아&amp;nbsp;있으며,&amp;nbsp;세션&amp;nbsp;스토리지는&amp;nbsp;브라우저&amp;nbsp;세션이&amp;nbsp;유지되는&amp;nbsp;동안에만&amp;nbsp;데이터를&amp;nbsp;저장한다.&amp;nbsp;따라서&amp;nbsp;로그인&amp;nbsp;같은&amp;nbsp;일시적인&amp;nbsp;정보는&amp;nbsp;세션&amp;nbsp;스토리지가&amp;nbsp;적합하고,&amp;nbsp;장기간&amp;nbsp;유지해야&amp;nbsp;하는&amp;nbsp;데이터는&amp;nbsp;로컬&amp;nbsp;스토리지가&amp;nbsp;적합하다.&amp;nbsp;두&amp;nbsp;방법&amp;nbsp;모두&amp;nbsp;데이터를&amp;nbsp;문자열&amp;nbsp;형태로만&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;제약이&amp;nbsp;있으므로,&amp;nbsp;객체&amp;nbsp;데이터를&amp;nbsp;저장할&amp;nbsp;때는&amp;nbsp;JSON&amp;nbsp;문자열로&amp;nbsp;변환&amp;nbsp;후&amp;nbsp;저장하고&amp;nbsp;다시&amp;nbsp;파싱하여&amp;nbsp;사용해야&amp;nbsp;한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* History API&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;History&amp;nbsp;API는&amp;nbsp;브라우저의&amp;nbsp;페이지&amp;nbsp;탐색&amp;nbsp;기록을&amp;nbsp;다루는&amp;nbsp;기능이다.&amp;nbsp;특히&amp;nbsp;Single&amp;nbsp;Page&amp;nbsp;Application&amp;nbsp;환경에서는&amp;nbsp;URL&amp;nbsp;변경&amp;nbsp;없이&amp;nbsp;화면&amp;nbsp;전환을&amp;nbsp;구현하는&amp;nbsp;과정에서&amp;nbsp;핵심적으로&amp;nbsp;활용된다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;사용자가&amp;nbsp;뒤로&amp;nbsp;가기&amp;nbsp;버튼을&amp;nbsp;눌렀을&amp;nbsp;때&amp;nbsp;적절한&amp;nbsp;화면&amp;nbsp;상태를&amp;nbsp;복원하려면&amp;nbsp;히스토리&amp;nbsp;조작이&amp;nbsp;필요하다.&amp;nbsp;직접적으로&amp;nbsp;API를&amp;nbsp;빈번히&amp;nbsp;호출하지&amp;nbsp;않더라도,&amp;nbsp;대부분의&amp;nbsp;라우팅&amp;nbsp;라이브러리와&amp;nbsp;프레임워크&amp;nbsp;내부에서는&amp;nbsp;이를&amp;nbsp;기반으로&amp;nbsp;동작하고&amp;nbsp;있다.&amp;nbsp;따라서&amp;nbsp;SPA를&amp;nbsp;다루거나&amp;nbsp;모바일&amp;nbsp;환경에서&amp;nbsp;네이티브&amp;nbsp;앱처럼&amp;nbsp;동작하는&amp;nbsp;웹&amp;nbsp;앱을&amp;nbsp;만들고자&amp;nbsp;할&amp;nbsp;때&amp;nbsp;반드시&amp;nbsp;이해해야&amp;nbsp;하는&amp;nbsp;개념이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* Clipboard API&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Clipboard&amp;nbsp;API는&amp;nbsp;텍스트나&amp;nbsp;이미지를&amp;nbsp;클립보드에&amp;nbsp;복사하거나&amp;nbsp;불러오기&amp;nbsp;위해&amp;nbsp;제공된다.&amp;nbsp;특히&amp;nbsp;모바일&amp;nbsp;환경에서&amp;nbsp;텍스트를&amp;nbsp;선택하고&amp;nbsp;복사하는&amp;nbsp;과정이&amp;nbsp;번거로운&amp;nbsp;상황에서,&amp;nbsp;원클릭으로&amp;nbsp;데이터를&amp;nbsp;복사하는&amp;nbsp;기능을&amp;nbsp;구현하기에&amp;nbsp;적합하다.&amp;nbsp;보안상의&amp;nbsp;이유로&amp;nbsp;브라우저&amp;nbsp;권한&amp;nbsp;정책과&amp;nbsp;함께&amp;nbsp;동작하기&amp;nbsp;때문에,&amp;nbsp;사용자&amp;nbsp;인터랙션이&amp;nbsp;있을&amp;nbsp;때만&amp;nbsp;동작하도록&amp;nbsp;제약된다.&amp;nbsp;단순하지만&amp;nbsp;사용자&amp;nbsp;경험을&amp;nbsp;개선하는&amp;nbsp;데&amp;nbsp;매우&amp;nbsp;효과적인&amp;nbsp;API다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* Canvas API&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Canvas API는 픽셀 단위의 2D 그래픽을 다룰 수 있도록 제공되는 저수준 API다. HTML과 CSS만으로는 구현하기 어려운 정교한 그래픽이나 애니메이션을 구현할 수 있으며, 그래프, 차트, 이미지 처리, 간단한 게임 제작에까지 활용된다. 또 WebGL과 연계하면 3D 그래픽 처리도 가능하다. 다만 자유도가 높은 만큼 코드 양이 많아지고 성능 최적화가 중요하기 때문에 체계적인 학습이 필요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7HYfJ/btsPUNiIfsr/eLrnIG95S0Tq2o3YB15qw1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7HYfJ/btsPUNiIfsr/eLrnIG95S0Tq2o3YB15qw1/img.jpg&quot; data-alt=&quot;49강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7HYfJ/btsPUNiIfsr/eLrnIG95S0Tq2o3YB15qw1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7HYfJ%2FbtsPUNiIfsr%2FeLrnIG95S0Tq2o3YB15qw1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;549&quot; height=&quot;732&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;49강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6na6e/btsPV2mafrQ/CW71S4XcHEscik4S4PhcY1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6na6e/btsPV2mafrQ/CW71S4XcHEscik4S4PhcY1/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.16 23:30)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6na6e/btsPV2mafrQ/CW71S4XcHEscik4S4PhcY1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6na6e%2FbtsPV2mafrQ%2FCW71S4XcHEscik4S4PhcY1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;772&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.16 23:30)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHfpYs/btsPWlFMWQM/q8nFAJL2U64JIlKFu3uV41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHfpYs/btsPWlFMWQM/q8nFAJL2U64JIlKFu3uV41/img.png&quot; data-alt=&quot;49강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHfpYs/btsPWlFMWQM/q8nFAJL2U64JIlKFu3uV41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHfpYs%2FbtsPWlFMWQM%2Fq8nFAJL2U64JIlKFu3uV41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;49강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-16 23.36.04.png&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6mScp/btsPWemm35D/kFqNjV5pVD0H2gjMuO58BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6mScp/btsPWemm35D/kFqNjV5pVD0H2gjMuO58BK/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6mScp/btsPWemm35D/kFqNjV5pVD0H2gjMuO58BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6mScp%2FbtsPWemm35D%2FkFqNjV5pVD0H2gjMuO58BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1009&quot; height=&quot;767&quot; data-filename=&quot;스크린샷 2025-08-16 23.36.04.png&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 49강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의에서는 API와 주로 많이 사용하는 web api에 대해 배웠다. Canvas API를 빼면 많이 사용하는 API이기 때문에 잘 알아두면 좋을 것 같고 MDN API 명세를 보고 기존에 알던 것과 새로 나온 것들에 대해 공부를 해야겠다.&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/58</guid>
      <comments>https://hangyeoldora.tistory.com/58#entry58comment</comments>
      <pubDate>Sat, 16 Aug 2025 23:42:09 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 46일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/57</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755268114165&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Omnfc/hyZzKbplkP/YdDUscSpVP8iMj1JxkWCh1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/bVLF7r/hyZvoVnSov/rSiaGGtRvKxZy1ys9gi2D1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Omnfc/hyZzKbplkP/YdDUscSpVP8iMj1JxkWCh1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/bVLF7r/hyZvoVnSov/rSiaGGtRvKxZy1ys9gi2D1/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;광복절 공휴일에도 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;46일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCBS3y/btsPWfyFNma/7vAJsmbW2NN3nV12mdn8e1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCBS3y/btsPWfyFNma/7vAJsmbW2NN3nV12mdn8e1/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.15 23:14)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCBS3y/btsPWfyFNma/7vAJsmbW2NN3nV12mdn8e1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCBS3y%2FbtsPWfyFNma%2F7vAJsmbW2NN3nV12mdn8e1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;492&quot; height=&quot;656&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.15 23:14)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;개념과 구조 - DOM&lt;/b&gt;'이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FU6ex/btsPWdARzrg/oIAgZE1SIEcjPqRpzujYCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FU6ex/btsPWdARzrg/oIAgZE1SIEcjPqRpzujYCK/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FU6ex/btsPWdARzrg/oIAgZE1SIEcjPqRpzujYCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFU6ex%2FbtsPWdARzrg%2FoIAgZE1SIEcjPqRpzujYCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (2).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- DOM -&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* DOM의 기본 개념&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;웹&amp;nbsp;개발에서&amp;nbsp;DOM은&amp;nbsp;브라우저가&amp;nbsp;HTML&amp;nbsp;문서를&amp;nbsp;내부적으로&amp;nbsp;다루기&amp;nbsp;위해&amp;nbsp;사용하는&amp;nbsp;자료&amp;nbsp;구조다.&amp;nbsp;HTML&amp;nbsp;파일을&amp;nbsp;브라우저가&amp;nbsp;받아들이면,&amp;nbsp;단순히&amp;nbsp;텍스트를&amp;nbsp;보여주는&amp;nbsp;것이&amp;nbsp;아니라&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;각&amp;nbsp;요소와&amp;nbsp;속성&amp;nbsp;정보를&amp;nbsp;구조화해서&amp;nbsp;프로그램적으로&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;한다.&amp;nbsp;이렇게&amp;nbsp;변환된&amp;nbsp;구조가&amp;nbsp;바로&amp;nbsp;DOM이다.&amp;nbsp;DOM은&amp;nbsp;Document&amp;nbsp;Object&amp;nbsp;Model의&amp;nbsp;줄임말로서,&amp;nbsp;문서를&amp;nbsp;객체&amp;nbsp;형태로&amp;nbsp;표현해&amp;nbsp;프로그램에서&amp;nbsp;다룰&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;만든&amp;nbsp;규격이다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* DOM의 진화와 중요성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;DOM은&amp;nbsp;단순한&amp;nbsp;자료&amp;nbsp;구조&amp;nbsp;그&amp;nbsp;자체를&amp;nbsp;넘어서&amp;nbsp;다양한&amp;nbsp;API와&amp;nbsp;시스템이&amp;nbsp;결합된&amp;nbsp;복합적인&amp;nbsp;웹&amp;nbsp;스펙으로&amp;nbsp;발전해&amp;nbsp;왔다.&amp;nbsp;초기에는&amp;nbsp;HTML과&amp;nbsp;밀접하게&amp;nbsp;연결된&amp;nbsp;듯&amp;nbsp;보였지만,&amp;nbsp;시간이&amp;nbsp;지나면서&amp;nbsp;XML이나&amp;nbsp;SVG&amp;nbsp;같은&amp;nbsp;다양한&amp;nbsp;문서를&amp;nbsp;다루는&amp;nbsp;핵심&amp;nbsp;기술로&amp;nbsp;확장됐다.&amp;nbsp;브라우저마다&amp;nbsp;독립적인&amp;nbsp;DOM&amp;nbsp;구현체가&amp;nbsp;있고,&amp;nbsp;표준화된&amp;nbsp;규약에&amp;nbsp;따라&amp;nbsp;동작한다.&amp;nbsp;덕분에&amp;nbsp;DOM을&amp;nbsp;몰라도&amp;nbsp;단순한&amp;nbsp;HTML을&amp;nbsp;보여주는&amp;nbsp;것은&amp;nbsp;어렵지&amp;nbsp;않지만,&amp;nbsp;실제로&amp;nbsp;동적&amp;nbsp;웹을&amp;nbsp;제작하려면&amp;nbsp;DOM의&amp;nbsp;구조와&amp;nbsp;작동&amp;nbsp;원리를&amp;nbsp;반드시&amp;nbsp;이해해야&amp;nbsp;한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 유지보수의 어려움&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;DOM의&amp;nbsp;주요&amp;nbsp;문제점은&amp;nbsp;규모가&amp;nbsp;커질수록&amp;nbsp;유지&amp;nbsp;관리가&amp;nbsp;어려워진다는&amp;nbsp;점이다.&amp;nbsp;DOM은&amp;nbsp;저수준의&amp;nbsp;인터페이스&amp;nbsp;형태로&amp;nbsp;제공되며,&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;API를&amp;nbsp;조합해서&amp;nbsp;문서&amp;nbsp;구조를&amp;nbsp;변경한다.&amp;nbsp;처음에는&amp;nbsp;간단한&amp;nbsp;페이지라면&amp;nbsp;직접&amp;nbsp;DOM&amp;nbsp;요소를&amp;nbsp;선택하고&amp;nbsp;속성을&amp;nbsp;바꿀&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;기능이&amp;nbsp;늘어나고&amp;nbsp;사용자&amp;nbsp;인터랙션이&amp;nbsp;복잡해질수록&amp;nbsp;코드가&amp;nbsp;읽기&amp;nbsp;어렵고&amp;nbsp;버그도&amp;nbsp;쉽게&amp;nbsp;발생한다.&amp;nbsp;이&amp;nbsp;때문에&amp;nbsp;최근에는&amp;nbsp;직접&amp;nbsp;DOM을&amp;nbsp;조작하는&amp;nbsp;방식을&amp;nbsp;지양하는&amp;nbsp;흐름이&amp;nbsp;주류가&amp;nbsp;됐다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* 프레임워크와 DOM의 관계&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;리액트,&amp;nbsp;뷰&amp;nbsp;같은&amp;nbsp;현대적인&amp;nbsp;프론트엔드&amp;nbsp;프레임워크는&amp;nbsp;DOM을&amp;nbsp;직접&amp;nbsp;다루지&amp;nbsp;않는다.&amp;nbsp;개발자는&amp;nbsp;데이터와&amp;nbsp;UI&amp;nbsp;상태를&amp;nbsp;설계하면,&amp;nbsp;내부적으로&amp;nbsp;프레임워크가&amp;nbsp;DOM을&amp;nbsp;최적화해서&amp;nbsp;처리해준다.&amp;nbsp;이러한&amp;nbsp;방식은&amp;nbsp;코드&amp;nbsp;관리와&amp;nbsp;유지보수에서&amp;nbsp;큰&amp;nbsp;이점을&amp;nbsp;제공한다.&amp;nbsp;jQuery와&amp;nbsp;같은&amp;nbsp;라이브러리는&amp;nbsp;DOM을&amp;nbsp;좀&amp;nbsp;더&amp;nbsp;쉽게&amp;nbsp;조작할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;만들어졌지만,&amp;nbsp;규모가&amp;nbsp;커질수록&amp;nbsp;근본적인&amp;nbsp;어려움은&amp;nbsp;해결되지&amp;nbsp;않는다.&amp;nbsp;그래서&amp;nbsp;대규모&amp;nbsp;프로젝트에서는&amp;nbsp;jQuery마저도&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;권장되지&amp;nbsp;않는다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* DOM의 핵심 구조와 학습 포인트&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;하지만&amp;nbsp;DOM의&amp;nbsp;중요성은&amp;nbsp;변하지&amp;nbsp;않는다.&amp;nbsp;대부분&amp;nbsp;브라우저가&amp;nbsp;제공하는&amp;nbsp;HTML&amp;nbsp;조작은&amp;nbsp;결국&amp;nbsp;DOM&amp;nbsp;인터페이스를&amp;nbsp;통해&amp;nbsp;이뤄지기&amp;nbsp;때문에,&amp;nbsp;개발자는&amp;nbsp;DOM의&amp;nbsp;주요&amp;nbsp;개념과&amp;nbsp;데이터&amp;nbsp;타입,&amp;nbsp;특히&amp;nbsp;트리&amp;nbsp;구조와&amp;nbsp;관련된&amp;nbsp;내용을&amp;nbsp;제대로&amp;nbsp;이해할&amp;nbsp;필요가&amp;nbsp;있다.&amp;nbsp;DOM은&amp;nbsp;문서&amp;nbsp;전체를&amp;nbsp;나무처럼&amp;nbsp;계층적으로&amp;nbsp;모델링하는데,&amp;nbsp;각&amp;nbsp;요소는&amp;nbsp;노드로&amp;nbsp;표현되고&amp;nbsp;부모-자식-형제&amp;nbsp;관계가&amp;nbsp;생긴다.&amp;nbsp;이러한&amp;nbsp;트리&amp;nbsp;구조는&amp;nbsp;탐색,&amp;nbsp;추가,&amp;nbsp;삭제&amp;nbsp;작업의&amp;nbsp;기반이&amp;nbsp;된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;웹 개발을 하면서 DOM을 완벽히 이해하는 것은 필수다. 직접적으로 DOM을 조작하지 않더라도, 프레임워크 내부에서 어떤 원리로 동작하는지 이해해야 대규모 시스템에서도 효율적으로 문제를 해결할 수 있다. DOM 스펙의 세부적인 인터페이스, 이벤트, 트리 구조, 각 노드 타입과 프로퍼티 등은 반드시 학습해야 할 필수 개념이다. Mozilla 공식 문서 등 참조하며 공부하는 것이 좋다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2rPpd/btsPVdVDQ29/T09epXUB5PebetRzumuzUK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2rPpd/btsPVdVDQ29/T09epXUB5PebetRzumuzUK/img.jpg&quot; data-alt=&quot;48강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2rPpd/btsPVdVDQ29/T09epXUB5PebetRzumuzUK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2rPpd%2FbtsPVdVDQ29%2FT09epXUB5PebetRzumuzUK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;532&quot; height=&quot;709&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;48강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zaDNk/btsPVIHQAlO/PUbOSdoQJLALW1W4qWqED0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zaDNk/btsPVIHQAlO/PUbOSdoQJLALW1W4qWqED0/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.15 23:20)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zaDNk/btsPVIHQAlO/PUbOSdoQJLALW1W4qWqED0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzaDNk%2FbtsPVIHQAlO%2FPUbOSdoQJLALW1W4qWqED0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;632&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.15 23:20)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OZTx8/btsPWdHC4UU/djnmrlenXrzBYJUGBozOoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OZTx8/btsPWdHC4UU/djnmrlenXrzBYJUGBozOoK/img.png&quot; data-alt=&quot;48강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OZTx8/btsPWdHC4UU/djnmrlenXrzBYJUGBozOoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOZTx8%2FbtsPWdHC4UU%2FdjnmrlenXrzBYJUGBozOoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (3).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;48강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-15 23.25.49.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wt6Q6/btsPWi3e7sg/6D7eHHFvSd6smgPlzzOEPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wt6Q6/btsPWi3e7sg/6D7eHHFvSd6smgPlzzOEPk/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wt6Q6/btsPWi3e7sg/6D7eHHFvSd6smgPlzzOEPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwt6Q6%2FbtsPWi3e7sg%2F6D7eHHFvSd6smgPlzzOEPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1008&quot; height=&quot;780&quot; data-filename=&quot;스크린샷 2025-08-15 23.25.49.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 48강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의에서는 DOM에 대한 내용을 다루었다. DOM과 가상 DOM 등 프론트엔드에서는 항상 나오는 것으로 이번 강의를 통해 리마인드할 수 있었다. 나중에 한 번 다시 공식문서를 기반으로 정리를 해야겠다.&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/57</guid>
      <comments>https://hangyeoldora.tistory.com/57#entry57comment</comments>
      <pubDate>Fri, 15 Aug 2025 23:32:46 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 45일차: '김민태의 프론트엔드 아카데미 - 제 1강 JavaScript &amp;amp; TypeScript Essential' 강의 후기</title>
      <link>https://hangyeoldora.tistory.com/56</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;패스트캠퍼스 환급챌린지란?&lt;/h3&gt;
&lt;figure id=&quot;og_1755181828322&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&quot; data-og-description=&quot;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4n8ztzq&quot; data-og-url=&quot;https://fastcampus.co.kr/event_online_challenge_2506&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cK6sFK/hyZygIiCmK/FNJWNiXKaoO1OJUSKmUgak/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/ygooq/hyZyoM5IDp/ZSSSsIxIeHgrq2esB10Hbk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cK6sFK/hyZygIiCmK/FNJWNiXKaoO1OJUSKmUgak/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252,https://scrap.kakaocdn.net/dn/ygooq/hyZyoM5IDp/ZSSSsIxIeHgrq2esB10Hbk/img.png?width=462&amp;amp;height=252&amp;amp;face=0_0_462_252');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(~6/20) 50일의 기적 AI 환급반  | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4n8ztzq&quot;&gt;https://fastcampus.info/4n8ztzq&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;집에 갑자기 물이 안나와서 난리가 났었지만 재미있게 강의를 들을 수 있게 해주는 환급챌린지 최공!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;45일차 공부 시작!&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejN7Yk/btsPSL7khFr/GWkUODI8Fkdajdi73auCC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejN7Yk/btsPSL7khFr/GWkUODI8Fkdajdi73auCC1/img.jpg&quot; data-alt=&quot;오늘 공부 시작 시간 (08.14 23:16)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejN7Yk/btsPSL7khFr/GWkUODI8Fkdajdi73auCC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FejN7Yk%2FbtsPSL7khFr%2FGWkUODI8Fkdajdi73auCC1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;454&quot; height=&quot;605&quot; data-filename=&quot;start.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 시작 시간 (08.14 23:16)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘의 강의 주제는 '&lt;b&gt;문법-JSON&lt;/b&gt;'이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (6).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/31yhf/btsPStMFu6t/ip02LeA8x4kEpyzLfYEZYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/31yhf/btsPStMFu6t/ip02LeA8x4kEpyzLfYEZYK/img.png&quot; data-alt=&quot;학습 인증샷 - 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/31yhf/btsPStMFu6t/ip02LeA8x4kEpyzLfYEZYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F31yhf%2FbtsPStMFu6t%2Fip02LeA8x4kEpyzLfYEZYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (6).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오늘도 마찬가지로 모자이크 처리..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;오늘의 학습 내용&lt;/h4&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;- JSON -&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* JSON 개념과 필요성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;JSON(JavaScript&amp;nbsp;Object&amp;nbsp;Notation)은&amp;nbsp;데이터&amp;nbsp;교환을&amp;nbsp;위해&amp;nbsp;만들어진&amp;nbsp;경량&amp;nbsp;데이터&amp;nbsp;포맷이다.&amp;nbsp;자바스크립트나&amp;nbsp;타입스크립트&amp;nbsp;환경에서&amp;nbsp;객체를&amp;nbsp;서로&amp;nbsp;주고받을&amp;nbsp;때&amp;nbsp;매우&amp;nbsp;효율적이다.&amp;nbsp;객체는&amp;nbsp;실행&amp;nbsp;중&amp;nbsp;메모리에만&amp;nbsp;존재하므로,&amp;nbsp;서버와&amp;nbsp;통신하거나&amp;nbsp;저장&amp;nbsp;장치에&amp;nbsp;기록하기&amp;nbsp;위해서는&amp;nbsp;문자열&amp;nbsp;형태로&amp;nbsp;변환이&amp;nbsp;필요하다.&amp;nbsp;이때&amp;nbsp;객체&amp;nbsp;그&amp;nbsp;자체를&amp;nbsp;전송하거나&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;없으므로,&amp;nbsp;이를&amp;nbsp;문자열로&amp;nbsp;직렬화하고&amp;nbsp;다시&amp;nbsp;객체로&amp;nbsp;역직렬화하는&amp;nbsp;과정이&amp;nbsp;필요하다.&amp;nbsp;이&amp;nbsp;목적을&amp;nbsp;위해&amp;nbsp;JSON이&amp;nbsp;고안되었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;* JSON의 문법 규칙&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;JSON 데이터는 항상 키를 쌍따옴표로 감싸야 한다. 값이 문자열이라면 역시 쌍따옴표를 사용한다. 마지막 속성 뒤에는 콤마를 두면 안 되며, 데이터 타입은 문자열, 숫자, 불리언, 배열, 객체만을 지원한다. 함수나 undefined 같은 값은 JSON에 포함될 수 없다. 이러한 문법의 일관성 덕분에 JSON은 언어와 환경에 상관없이 안정적으로 데이터 교환이 가능하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;* JSON 처리 코드 예제&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;아래&amp;nbsp;예시는&amp;nbsp;JSON&amp;nbsp;문자열을&amp;nbsp;자바스크립트&amp;nbsp;객체로&amp;nbsp;변환한&amp;nbsp;후,&amp;nbsp;다시&amp;nbsp;JSON&amp;nbsp;문자열로&amp;nbsp;직렬화하는&amp;nbsp;과정을&amp;nbsp;보여준다.&amp;nbsp;변환&amp;nbsp;과정에서&amp;nbsp;오류가&amp;nbsp;발생하면&amp;nbsp;`try-catch`&amp;nbsp;구문으로&amp;nbsp;예외를&amp;nbsp;처리한다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1755182055700&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const jsonString = `
    {
        &quot;name&quot;: &quot;dexter&quot;,
        &quot;age&quot;: 30,
        &quot;bloodType&quot;: &quot;B&quot;
    }
`;

try {
    const myJson = JSON.parse(jsonString);
    console.log(JSON.stringify(myJson));
} catch (e) {
	console.log('다시 시도해 주세요.');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;JSON.parse는 JSON 형식의 문자열을 자바스크립트 객체로 변환하고, JSON.stringify는 객체를 JSON 문자열로 변환한다. 이를 활용하면 서버에서 받은 문자열 데이터를 곧바로 앱의 로직에서 사용할 수 있다.&lt;br /&gt;&lt;br /&gt;* 예외 처리의 필요성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;JSON 문자열이 문법에 맞지 않으면 JSON.parse 호출 시 오류가 발생한다. 특히 네트워크 통신 과정에서는 데이터가 훼손되거나 잘못된 형식으로 전송될 수 있다. 이때 try-catch 구문을 사용하면 프로그램의 비정상 종료를 막고, 사용자에게 재시도 요청 등 적절한 안내를 제공할 수 있다. 안정적인 UX를 위해 네트워크 기반 데이터 처리 코드에는 항상 예외 처리 로직을 포함하는 것이 좋다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VBa6D/btsPTzFjW6D/Lv0BvXGIxnJiE6yGi2RECk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VBa6D/btsPTzFjW6D/Lv0BvXGIxnJiE6yGi2RECk/img.jpg&quot; data-alt=&quot;47강 수강 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VBa6D/btsPTzFjW6D/Lv0BvXGIxnJiE6yGi2RECk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVBa6D%2FbtsPTzFjW6D%2FLv0BvXGIxnJiE6yGi2RECk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;592&quot; height=&quot;789&quot; data-filename=&quot;done.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;47강 수강 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc6yo3/btsPTaMzNK7/SrhgnGjkaXJOsYNZthR5ek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc6yo3/btsPTaMzNK7/SrhgnGjkaXJOsYNZthR5ek/img.jpg&quot; data-alt=&quot;오늘 공부 종료 시간 (08.14 23:26)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc6yo3/btsPTaMzNK7/SrhgnGjkaXJOsYNZthR5ek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc6yo3%2FbtsPTaMzNK7%2FSrhgnGjkaXJOsYNZthR5ek%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;724&quot; data-filename=&quot;end.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오늘 공부 종료 시간 (08.14 23:26)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없는 디자인 (7).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0bMiu/btsPVfMyMYd/dSlc5tPe1bNf1NWRitrmY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0bMiu/btsPVfMyMYd/dSlc5tPe1bNf1NWRitrmY1/img.png&quot; data-alt=&quot;47강 강의 내용 정리 필기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0bMiu/btsPVfMyMYd/dSlc5tPe1bNf1NWRitrmY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0bMiu%2FbtsPVfMyMYd%2FdSlc5tPe1bNf1NWRitrmY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1080&quot; data-filename=&quot;제목 없는 디자인 (7).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;47강 강의 내용 정리 필기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-08-14 23.28.17.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C689Q/btsPVFYwZT0/Gq5H2CuptwvwEJgYbFRnNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C689Q/btsPVFYwZT0/Gq5H2CuptwvwEJgYbFRnNK/img.png&quot; data-alt=&quot;학습 인증샷 - 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C689Q/btsPVFYwZT0/Gq5H2CuptwvwEJgYbFRnNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC689Q%2FbtsPVFYwZT0%2FGq5H2CuptwvwEJgYbFRnNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;752&quot; data-filename=&quot;스크린샷 2025-08-14 23.28.17.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;학습 인증샷 - 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 환급 챌린지 47강 공부 완료!!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 강의에서는 필수적으로 알아야하고 알 수 밖에 없는 JSON에 대한 내용을 다뤘다. 흔하게 사용하고 있지만 오랜만에 사용하게 된 계기부터 들을 수 있어서 좋았다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>패스트캠퍼스/김민태의 프론트엔드 아카데미: 제1강</category>
      <category>습관형성</category>
      <category>오공완</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>hangyeoldora</author>
      <guid isPermaLink="true">https://hangyeoldora.tistory.com/56</guid>
      <comments>https://hangyeoldora.tistory.com/56#entry56comment</comments>
      <pubDate>Thu, 14 Aug 2025 23:36:56 +0900</pubDate>
    </item>
  </channel>
</rss>