<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>프로그래밍 Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<atom:link href="https://lycos7560.com/tag/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>생각의 흐름을 타고 다니며 만드는 블로그</description>
	<lastBuildDate>Mon, 16 Feb 2026 22:46:41 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://lycos7560.com/wp-content/uploads/2022/11/cropped-cropped-cropped-log-1-150x150-1-80x80.png</url>
	<title>프로그래밍 Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Linux Development Tools Install</title>
		<link>https://lycos7560.com/etc/linux-development-tools-install/40476/</link>
					<comments>https://lycos7560.com/etc/linux-development-tools-install/40476/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 22:31:03 +0000</pubDate>
				<category><![CDATA[기타]]></category>
		<category><![CDATA[autoconf]]></category>
		<category><![CDATA[automake]]></category>
		<category><![CDATA[C 언어]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ 언어]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[dnf]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gdb]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[glibc-devel]]></category>
		<category><![CDATA[groupinstall]]></category>
		<category><![CDATA[How-to 가이드]]></category>
		<category><![CDATA[kernel-devel]]></category>
		<category><![CDATA[kernel-headers]]></category>
		<category><![CDATA[libstdc++-devel]]></category>
		<category><![CDATA[libtool]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux 개발 환경]]></category>
		<category><![CDATA[Linux 관리]]></category>
		<category><![CDATA[Linux 설치]]></category>
		<category><![CDATA[Linux 정보]]></category>
		<category><![CDATA[Linux 초보자]]></category>
		<category><![CDATA[Linux 커널]]></category>
		<category><![CDATA[Linux 컴파일]]></category>
		<category><![CDATA[Linux 팁]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[OS 개발]]></category>
		<category><![CDATA[Rocky]]></category>
		<category><![CDATA[Rocky Linux]]></category>
		<category><![CDATA[Rocky Linux 설치]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[vmtoolsd]]></category>
		<category><![CDATA[VMware Tools]]></category>
		<category><![CDATA[VMware Workstation]]></category>
		<category><![CDATA[가상 머신]]></category>
		<category><![CDATA[개발 입문]]></category>
		<category><![CDATA[개발 정보]]></category>
		<category><![CDATA[개발 튜토리얼]]></category>
		<category><![CDATA[개발 팁]]></category>
		<category><![CDATA[개발 필수 도구]]></category>
		<category><![CDATA[개발 환경]]></category>
		<category><![CDATA[개발자 가이드]]></category>
		<category><![CDATA[개발자 도구]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기술 문서]]></category>
		<category><![CDATA[기술 블로그]]></category>
		<category><![CDATA[기술 정보]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[단계별 설명]]></category>
		<category><![CDATA[드라이버 개발]]></category>
		<category><![CDATA[디버거]]></category>
		<category><![CDATA[라이브러리 빌드]]></category>
		<category><![CDATA[링킹]]></category>
		<category><![CDATA[바이너리 생성]]></category>
		<category><![CDATA[백엔드 개발]]></category>
		<category><![CDATA[버전 관리]]></category>
		<category><![CDATA[비유 설명]]></category>
		<category><![CDATA[빌드 과정]]></category>
		<category><![CDATA[빌드 관리]]></category>
		<category><![CDATA[빌드 도구]]></category>
		<category><![CDATA[빌드 자동화]]></category>
		<category><![CDATA[상세 설명]]></category>
		<category><![CDATA[서버 개발]]></category>
		<category><![CDATA[설치 가이드]]></category>
		<category><![CDATA[성능 최적화]]></category>
		<category><![CDATA[소스 코드]]></category>
		<category><![CDATA[소스 코드 컴파일]]></category>
		<category><![CDATA[소프트웨어 개발]]></category>
		<category><![CDATA[소프트웨어 빌드]]></category>
		<category><![CDATA[소프트웨어 설치]]></category>
		<category><![CDATA[소프트웨어 아키텍처]]></category>
		<category><![CDATA[시스템 개발]]></category>
		<category><![CDATA[시스템 관리]]></category>
		<category><![CDATA[시스템 구축]]></category>
		<category><![CDATA[시스템 프로그래밍]]></category>
		<category><![CDATA[실습 환경]]></category>
		<category><![CDATA[실전 가이드]]></category>
		<category><![CDATA[에뮬레이션]]></category>
		<category><![CDATA[오류 해결]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[오픈소스 개발]]></category>
		<category><![CDATA[운영체제]]></category>
		<category><![CDATA[의존성 관리]]></category>
		<category><![CDATA[이해하기 쉬운 설명]]></category>
		<category><![CDATA[임베디드 시스템]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[자동화 빌드]]></category>
		<category><![CDATA[주의사항]]></category>
		<category><![CDATA[초보자 가이드]]></category>
		<category><![CDATA[커널 개발]]></category>
		<category><![CDATA[커널 모듈]]></category>
		<category><![CDATA[커널 헤더]]></category>
		<category><![CDATA[컴파일 과정]]></category>
		<category><![CDATA[컴파일 도구]]></category>
		<category><![CDATA[컴파일러]]></category>
		<category><![CDATA[컴퓨터 아키텍처]]></category>
		<category><![CDATA[클라우드 개발]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[트러블슈팅]]></category>
		<category><![CDATA[패키지 관리]]></category>
		<category><![CDATA[패키지 설치]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[프로그래밍 도구]]></category>
		<category><![CDATA[학습 가이드]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40476</guid>

					<description><![CDATA[<p>Development Tools (개발 도구 모음) ? Linux에서 소프트웨어를 개발하고 컴파일하는 데 필요한 도구들의 패키지입니다. 예를 들어 &#8220;VMware Tools&#8221;처럼 C/C++ 소스 코드로 작성된 프로그램을 설치할 때 반드시 필요합니다. 설치 명령 부분 의미 주의 sudo 관리자 권한 필수! dnf Rocky Linux 패키지 매니저 Ubuntu는 apt groupinstall 패키지 그룹 설치 install과 다름 "Development Tools" 그룹 이름 따옴표 필수 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/linux-development-tools-install/40476/">Linux Development Tools Install</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-7dc8e9d1      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#development-tools-개발-도구-모음" class="uagb-toc-link__trigger">Development Tools (개발 도구 모음) ?</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-명령" class="uagb-toc-link__trigger">설치 명령</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-시간-및-용량" class="uagb-toc-link__trigger">설치 시간 및 용량</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-결과" class="uagb-toc-link__trigger">설치 결과</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#주요-설치-파일-cc-기준" class="uagb-toc-link__trigger">주요 설치 파일 (C/C++ 기준)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#컴파일러-compiler" class="uagb-toc-link__trigger">컴파일러 (Compiler)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#빌드-도구-build-tools" class="uagb-toc-link__trigger">빌드 도구 (Build Tools)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#커널-개발-패키지-kernel-development" class="uagb-toc-link__trigger">커널 개발 패키지 (Kernel Development)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#라이브러리-개발-패키지-library-development" class="uagb-toc-link__trigger">라이브러리 개발 패키지 (Library Development)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#추가-개발-도구" class="uagb-toc-link__trigger">추가 개발 도구</a></li></ul><li class="uagb-toc__list"><a href="#참고-및-주의사항" class="uagb-toc-link__trigger">참고 및 주의사항</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#groupinstall-vs-install" class="uagb-toc-link__trigger">groupinstall vs install</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-확인" class="uagb-toc-link__trigger">설치 확인</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#오류-발생-시" class="uagb-toc-link__trigger">오류 발생 시</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Development Tools (개발 도구 모음) ?</h2>



<p class="wp-block-paragraph">Linux에서 소프트웨어를 <strong>개발하고 컴파일하는 데 필요한 도구들의 패키지</strong>입니다.</p>



<p class="wp-block-paragraph">예를 들어 &#8220;VMware Tools&#8221;처럼 <strong>C/C++ 소스 코드로 작성된 프로그램</strong>을 설치할 때 반드시 필요합니다.</p>



<h3 class="wp-block-heading">설치 명령</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">rocky linux

dnf groupinstall "Development Tools" -y

// vm-tool 설치 (Rocky Linux 공식 저장소에서 설치, ISO 방식이 아님)
sudo dnf install open-vm-tools open-vm-tools-desktop -y
</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>부분</th><th>의미</th><th>주의</th></tr></thead><tbody><tr><td><code>sudo</code></td><td>관리자 권한</td><td>필수!</td></tr><tr><td><code>dnf</code></td><td>Rocky Linux 패키지 매니저</td><td>Ubuntu는 <code>apt</code></td></tr><tr><td><code>groupinstall</code></td><td>패키지 <strong>그룹</strong> 설치</td><td><code>install</code>과 다름</td></tr><tr><td><code>"Development Tools"</code></td><td>그룹 이름</td><td><strong>따옴표 필수</strong></td></tr><tr><td><code>-y</code></td><td>Yes 자동 응답</td><td>사용자 입력 생략</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h3 class="wp-block-heading">설치 시간 및 용량</h3>



<ul class="wp-block-list">
<li><strong>예상 시간:</strong> 3-5분</li>



<li><strong>설치 크기:</strong> ~1GB</li>



<li><strong>필요 디스크:</strong> ~2GB</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"/>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">설치 결과</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">20260217 설치 결과는 Rocky Linux 버전 및 시간에 따라 다를 수 있습니다.

--------------

Installed:
  annobin-docs-12.99-1.el10.noarch                 annobin-plugin-gcc-12.99-1.el10.x86_64               asciidoc-10.2.0-12.el10.noarch                   autoconf-2.71-13.el10.noarch                                   
  automake-1.16.5-20.el10.noarch                   bison-3.8.2-9.el10.x86_64                            boost-atomic-1.83.0-5.el10.x86_64                boost-filesystem-1.83.0-5.el10.x86_64                          
  boost-regex-1.83.0-5.el10.x86_64                 boost-system-1.83.0-5.el10.x86_64                    boost-thread-1.83.0-5.el10.x86_64                byacc-2.0.20230521-7.el10.x86_64                               
  cmake-filesystem-3.30.5-3.el10_0.x86_64          cpp-14.3.1-2.1.el10.x86_64                           debugedit-5.1-8.el10.x86_64                      diffstat-1.66-3.el10.x86_64                                    
  docbook-dtds-1.0-92.el10.noarch                  docbook-style-xsl-1.79.2-30.el10.noarch              dwz-0.16-1.el10.x86_64                           dyninst-13.0.0-1.el10.x86_64                                   
  efi-srpm-macros-6-7.el10.noarch                  efivar-libs-39-3.el10.x86_64                         elfutils-0.193-1.el10.rocky.0.1.x86_64           elfutils-debuginfod-client-devel-0.193-1.el10.rocky.0.1.x86_64 
  elfutils-devel-0.193-1.el10.rocky.0.1.x86_64     elfutils-libelf-devel-0.193-1.el10.rocky.0.1.x86_64  flex-2.6.4-19.el10.x86_64                        fonts-srpm-macros-1:2.0.5-18.el10.noarch                       
  forge-srpm-macros-0.4.0-6.el10.noarch            gcc-14.3.1-2.1.el10.x86_64                           gcc-c++-14.3.1-2.1.el10.x86_64                   gcc-plugin-annobin-14.3.1-2.1.el10.x86_64                      
  gdb-16.3-2.el10.x86_64                           gdb-headless-16.3-2.el10.x86_64                      gettext-common-devel-0.22.5-6.el10.noarch        gettext-devel-0.22.5-6.el10.x86_64                             
  git-2.47.3-1.el10.x86_64                         git-core-2.47.3-1.el10.x86_64                        git-core-doc-2.47.3-1.el10.noarch                glibc-devel-2.39-58.el10_1.7.x86_64                            
  go-srpm-macros-3.6.0-4.el10.noarch               graphviz-9.0.0-15.el10.x86_64                        intltool-0.51.0-29.el10.noarch                   javapackages-filesystem-6.4.0-1.el10.noarch                    
  jna-5.14.0-7.el10.x86_64                         kernel-devel-6.12.0-124.35.1.el10_1.x86_64           kernel-headers-6.12.0-124.35.1.el10_1.x86_64     kernel-srpm-macros-1.0-26.el10.noarch                          
  libipt-2.1-5.el10.x86_64                         libstdc++-devel-14.3.1-2.1.el10.x86_64               libtool-2.4.7-13.el10.x86_64                     libxcrypt-devel-4.4.36-10.el10.x86_64                          
  libzstd-devel-1.5.5-9.el10.x86_64                ltrace-0.7.91-52.el10.x86_64                         lua-srpm-macros-1-15.el10.noarch                 m4-1.4.19-11.el10.x86_64                                       
  make-1:4.4.1-9.el10.x86_64                       mokutil-2:0.7.2-1.el10.x86_64                        nss-tools-3.112.0-4.el10_0.x86_64                ocaml-srpm-macros-10-4.el10.noarch                             
  openblas-srpm-macros-2-19.el10.noarch            openssl-devel-1:3.5.1-7.el10_1.x86_64                package-notes-srpm-macros-0.5-13.el10.noarch     patch-2.7.6-26.el10.x86_64                                     
  patchutils-0.4.2-15.el10.x86_64                  perl-Clone-0.46-10.el10.x86_64                       perl-Compress-Raw-Bzip2-2.212-512.el10.x86_64    perl-Compress-Raw-Zlib-2.212-513.el10_1.x86_64                 
  perl-Data-Dump-1.25-13.el10.noarch               perl-Digest-HMAC-1.04-12.el10.noarch                 perl-Digest-SHA-1:6.04-512.el10.x86_64           perl-Encode-Locale-1.05-31.el10.noarch                         
  perl-Error-1:0.17029-18.el10.noarch              perl-Fedora-VSP-0.001-36.el10.noarch                 perl-File-Compare-1.100.800-512.2.el10_0.noarch  perl-File-Copy-2.41-512.2.el10_0.noarch                        
  perl-File-Listing-6.16-5.el10.noarch             perl-Git-2.47.3-1.el10.noarch                        perl-HTML-Parser-3.82-3.el10.x86_64              perl-HTML-Tagset-3.20-59.el10.noarch                           
  perl-HTTP-Cookies-6.11-5.el10.noarch             perl-HTTP-Date-6.06-6.el10.noarch                    perl-HTTP-Message-6.45-5.el10.noarch             perl-HTTP-Negotiate-6.01-40.el10.noarch                        
  perl-I18N-Langinfo-0.24-512.2.el10_0.x86_64      perl-IO-Compress-2.212-512.el10.noarch               perl-IO-HTML-1.004-14.el10.noarch                perl-LWP-MediaTypes-6.04-19.el10.noarch                        
  perl-Module-Load-1:0.36-511.el10.noarch          perl-NTLM-1.09-41.el10.noarch                        perl-Net-HTTP-6.23-6.el10.noarch                 perl-TermReadKey-2.38-24.el10.x86_64                           
  perl-Thread-Queue-3.14-511.el10.noarch           perl-TimeDate-1:2.33-16.el10.noarch                  perl-Try-Tiny-0.31-12.el10.noarch                perl-WWW-RobotRules-6.02-41.el10.noarch                        
  perl-XML-Parser-2.47-6.el10.x86_64               perl-generators-1.16-7.el10.noarch                   perl-lib-0.65-512.2.el10_0.x86_64                perl-libwww-perl-6.76-3.el10.noarch                            
  perl-macros-4:5.40.2-512.2.el10_0.noarch         perl-srpm-macros-1-57.el10.noarch                    perl-subs-1.04-512.2.el10_0.noarch               perl-threads-1:2.40-511.el10.x86_64                            
  perl-threads-shared-1.69-511.el10.x86_64         perl-version-8:0.99.32-4.el10.x86_64                 pesign-116-6.el10.x86_64                         pyproject-srpm-macros-1.16.2-1.el10.noarch                     
  python-srpm-macros-3.12-10.el10.noarch           qt6-srpm-macros-6.9.1-1.el10.noarch                  redhat-rpm-config-293-1.el10.rocky.0.2.noarch    rpm-build-4.19.1.1-20.el10.x86_64                              
  rpm-sign-4.19.1.1-20.el10.x86_64                 rust-toolset-srpm-macros-1.88.0-1.el10.noarch        sgml-common-0.6.3-65.el10.noarch                 source-highlight-3.1.9-25.el10.x86_64                          
  systemd-rpm-macros-257-13.el10.rocky.0.1.noarch  systemtap-5.3-3b.el10.x86_64                         systemtap-client-5.3-3b.el10.x86_64              systemtap-devel-5.3-3b.el10.x86_64                             
  systemtap-runtime-5.3-3b.el10.x86_64             tbb-2021.11.0-7.el10.x86_64                          valgrind-1:3.25.1-3.el10.x86_64                  valgrind-devel-1:3.25.1-3.el10.x86_64                          
  valgrind-docs-1:3.25.1-3.el10.x86_64             valgrind-gdb-1:3.25.1-3.el10.x86_64                  valgrind-scripts-1:3.25.1-3.el10.x86_64          xz-devel-1:5.6.2-4.el10_0.x86_64                               
  zlib-ng-compat-devel-2.2.3-3.el10_1.x86_64       zstd-1.5.5-9.el10.x86_64                            

Complete!</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"/>



<h3 class="wp-block-heading">주요 설치 파일 (C/C++ 기준)</h3>



<h4 class="wp-block-heading">컴파일러 (Compiler)</h4>



<p class="wp-block-paragraph">소스 코드(.c, .cpp) → 기계어 실행파일로 변환</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">gcc-14.3.1           → C 언어 컴파일러
gcc-c++-14.3.1       → C++ 언어 컴파일러</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">빌드 도구 (Build Tools)</h4>



<p class="wp-block-paragraph">컴파일러 옵션 자동 설정 / 복잡한 빌드 과정 자동화 / 어떤 파일을 먼저 컴파일할지 관리 등&#8230;</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">make-4.4.1           → 자동 빌드 관리
autoconf-2.71        → 자동 설정 생성
automake-1.16.5      → Makefile 자동 생성</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">커널 개발 패키지 (Kernel Development)</h4>



<p class="wp-block-paragraph"><strong>역할:</strong> 커널과 상호작용하는 모듈 작성 가능</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kernel-devel-6.12.0-124.35.1
kernel-headers-6.12.0-124.35.1
-----------------------------------------------
설치 명령어
sudo dnf install kernel-devel kernel-headers -y </pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">라이브러리 개발 패키지 (Library Development)</h4>



<p class="wp-block-paragraph"><strong>역할:</strong> 컴파일된 코드를 실행 가능 파일로 연결 (링킹)</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">glibc-devel-2.39           → C 표준 라이브러리
libstdc++-devel-14.3.1     → C++ 표준 라이브러리
-----------------------------------------------
모든 C/C++ 프로그램의 기본 함수 제공
printf(), malloc() 등의 함수 구현</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">추가 개발 도구</h4>



<p class="wp-block-paragraph">Git: 소스 코드 변경 이력 관리, GDB: 프로그램 실행 중 오류 추적, libtool: 공유 라이브러리(.so) 빌드</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git-2.47.3           → 소스 코드 버전 관리
gdb-16.3             → 프로그램 디버거
libtool-2.4.7        → 라이브러리 빌드 도구</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">참고 및 주의사항</h3>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">groupinstall vs install</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 잘못된 방법 (의존성 부족 가능)
sudo dnf install gcc

# <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 올바른 방법 (모든 관련 도구 자동 설치)
sudo dnf groupinstall "Development Tools" -y</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">설치 확인</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 컴파일러 확인
gcc --version

# Make 확인
make --version

# 커널 헤더 확인
ls /usr/src/kernels/</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">오류 발생 시</h4>



<p class="wp-block-paragraph"><strong>네트워크 오류:</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo dnf clean all
sudo dnf groupinstall "Development Tools" -y</pre>



<p class="wp-block-paragraph"><strong>의존성 충돌:</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo dnf groupinstall "Development Tools" --allowerasing -y</pre>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/etc/linux-development-tools-install/40476/">Linux Development Tools Install</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/linux-development-tools-install/40476/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 데이터베이스 &#038; 테이블 용량 확인</title>
		<link>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/</link>
					<comments>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 20:16:04 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[개인 공부 저장용]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[AWS_RDS]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[BackendDeveloper]]></category>
		<category><![CDATA[BigData]]></category>
		<category><![CDATA[CloudDatabase]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[DataAnalysis]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[DatabaseEngineer]]></category>
		<category><![CDATA[DatabaseHealth]]></category>
		<category><![CDATA[DatabaseOptimization]]></category>
		<category><![CDATA[DatabaseSize]]></category>
		<category><![CDATA[DatabaseStorage]]></category>
		<category><![CDATA[DatabaseTuning]]></category>
		<category><![CDATA[DataCleanup]]></category>
		<category><![CDATA[DataFree]]></category>
		<category><![CDATA[DataLength]]></category>
		<category><![CDATA[DataManagement]]></category>
		<category><![CDATA[DataStructure]]></category>
		<category><![CDATA[DataUsage]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[DBMS]]></category>
		<category><![CDATA[DBPerformance]]></category>
		<category><![CDATA[DBStatistics]]></category>
		<category><![CDATA[DB관리]]></category>
		<category><![CDATA[DB단편화]]></category>
		<category><![CDATA[DB모니터링]]></category>
		<category><![CDATA[DB상태체크]]></category>
		<category><![CDATA[DB용량확인]]></category>
		<category><![CDATA[DB튜닝]]></category>
		<category><![CDATA[DeveloperLife]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DiskUsage]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Fragmentation]]></category>
		<category><![CDATA[Indexing]]></category>
		<category><![CDATA[IndexSize]]></category>
		<category><![CDATA[InformationDesign]]></category>
		<category><![CDATA[InformationSchema]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[OptimizeTable]]></category>
		<category><![CDATA[PerformanceTuning]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[QueryOptimization]]></category>
		<category><![CDATA[QueryPerformance]]></category>
		<category><![CDATA[QueryTips]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[RelationalDatabase]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[ServerManagement]]></category>
		<category><![CDATA[ServerSide]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLQuery]]></category>
		<category><![CDATA[SQLTutorial]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[SystemAdministration]]></category>
		<category><![CDATA[TableRows]]></category>
		<category><![CDATA[TableSize]]></category>
		<category><![CDATA[TechnicalPost]]></category>
		<category><![CDATA[TechStack]]></category>
		<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[개발자일상]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[관계형데이터베이스]]></category>
		<category><![CDATA[기술블로그]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[데브옵스]]></category>
		<category><![CDATA[데이터구조]]></category>
		<category><![CDATA[데이터베이스]]></category>
		<category><![CDATA[데이터베이스기초]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[데이터사용량]]></category>
		<category><![CDATA[데이터정리]]></category>
		<category><![CDATA[디스크사용량]]></category>
		<category><![CDATA[마리아DB]]></category>
		<category><![CDATA[백엔드]]></category>
		<category><![CDATA[백엔드개발자]]></category>
		<category><![CDATA[빅데이터]]></category>
		<category><![CDATA[서버관리]]></category>
		<category><![CDATA[서버사이드]]></category>
		<category><![CDATA[성능최적화]]></category>
		<category><![CDATA[시스템관리]]></category>
		<category><![CDATA[용량최적화]]></category>
		<category><![CDATA[웹개발]]></category>
		<category><![CDATA[유지보수]]></category>
		<category><![CDATA[인덱스용량]]></category>
		<category><![CDATA[인덱싱]]></category>
		<category><![CDATA[인사이트]]></category>
		<category><![CDATA[인포메이션스키마]]></category>
		<category><![CDATA[정보설계]]></category>
		<category><![CDATA[지표분석]]></category>
		<category><![CDATA[최적화]]></category>
		<category><![CDATA[코딩]]></category>
		<category><![CDATA[쿼리꿀팁]]></category>
		<category><![CDATA[쿼리최적화]]></category>
		<category><![CDATA[클라우드DB]]></category>
		<category><![CDATA[테이블용량]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[행개수]]></category>
		<category><![CDATA[확장성]]></category>
		<category><![CDATA[효율성]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40431</guid>

					<description><![CDATA[<p>1. 모든 데이터베이스별 총 용량 확인 현재 서버에 있는 모든 DB의 크기를 한눈에 비교하고 싶을 때 사용합니다. 용량이 큰 순서대로 정렬되어 출력됩니다. 2. 특정 데이터베이스 내의 테이블별 용량 상세 확인 &#8220;어떤 테이블이 용량을 다 잡아먹고 있지?&#8221;라는 궁금증이 생겼을 때 사용합니다. 데이터 크기와 인덱스 크기를 구분해서 보여줍니다. 데이터 크기와 인덱스 크기를 구분 3. 전체 서버의 총 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/">MySQL 데이터베이스 &amp; 테이블 용량 확인</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-37ada8aa      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-모든-데이터베이스별-총-용량-확인" class="uagb-toc-link__trigger">1. 모든 데이터베이스별 총 용량 확인</a><li class="uagb-toc__list"><a href="#2-특정-데이터베이스-내의-테이블별-용량-상세-확인" class="uagb-toc-link__trigger">2. 특정 데이터베이스 내의 테이블별 용량 상세 확인</a><li class="uagb-toc__list"><a href="#3-전체-서버의-총-합계-용량-확인" class="uagb-toc-link__trigger">3. 전체 서버의 총 합계 용량 확인</a><li class="uagb-toc__list"><a href="#4-참고" class="uagb-toc-link__trigger">4. 참고</a></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1. 모든 데이터베이스별 총 용량 확인</h2>



<p class="wp-block-paragraph">현재 서버에 있는 <strong>모든 DB의 크기를 한눈에 비교</strong>하고 싶을 때 사용합니다. </p>



<p class="wp-block-paragraph">용량이 큰 순서대로 정렬되어 출력됩니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    table_schema AS 'Database Name',
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)',
    ROUND(SUM(data_free) / 1024 / 1024, 2) AS 'Free Space (MB)'
FROM 
    information_schema.tables
GROUP BY 
    table_schema
ORDER BY 
    (SUM(data_length + index_length)) DESC;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2. 특정 데이터베이스 내의 테이블별 용량 상세 확인</h2>



<p class="wp-block-paragraph">&#8220;어떤 테이블이 용량을 다 잡아먹고 있지?&#8221;라는 궁금증이 생겼을 때 사용합니다. </p>



<p class="wp-block-paragraph"><strong>데이터 크기와 인덱스 크기를 구분</strong>해서 보여줍니다.</p>



<p class="wp-block-paragraph"><strong>데이터 크기와 인덱스 크기를 구분</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    table_name AS 'Table Name',
    table_rows AS 'Total Rows',
    ROUND(data_length / 1024 / 1024, 2) AS 'Data Size (MB)',
    ROUND(index_length / 1024 / 1024, 2) AS 'Index Size (MB)',
    ROUND((data_length + index_length) / 1024 / 1024, 2) AS 'Total Size (MB)'
FROM 
    information_schema.tables
WHERE 
    table_schema = '데이터베이스명' -- 여기에 DB 이름 입력
ORDER BY 
    (data_length + index_length) DESC;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3. 전체 서버의 총 합계 용량 확인</h2>



<p class="wp-block-paragraph">서버 전체에서 <strong>MySQL이 사용하는 총 디스크 용량</strong>만 깔끔하게 보고 싶을 때 유용합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 'Total Global Size (GB)'
FROM 
    information_schema.tables;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">4. 참고</h2>



<ul class="wp-block-list">
<li><strong>data_length</strong>: 실제 데이터가 들어있는 물리적 크기입니다.</li>



<li><strong>index_length</strong>: 인덱스(색인)가 차지하는 크기입니다. 데이터는 적은데 인덱스가 너무 크면 최적화(<code>OPTIMIZE TABLE</code>)를 고려해야 합니다.</li>



<li><strong>data_free</strong>: <code>DELETE</code> 등으로 삭제된 행이 차지하던 &#8216;비어있는 공간&#8217;입니다. 이 값이 너무 크면 디스크 공간 낭비가 심하다는 뜻입니다.</li>
</ul>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/">MySQL 데이터베이스 &amp; 테이블 용량 확인</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu에 Gemini CLI 설치</title>
		<link>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/</link>
					<comments>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 16:02:48 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[$\text{apt}$]]></category>
		<category><![CDATA[$\text{GEMINI\_API\_KEY}$]]></category>
		<category><![CDATA[$\text{npm install -g}$]]></category>
		<category><![CDATA[$\text{npm uninstall}$]]></category>
		<category><![CDATA[$\text{string-width}$]]></category>
		<category><![CDATA[$v$ flag]]></category>
		<category><![CDATA[$v$ 플래그]]></category>
		<category><![CDATA[AI Assistant]]></category>
		<category><![CDATA[AI Chatbot]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AI Workflows]]></category>
		<category><![CDATA[AI 워크플로우]]></category>
		<category><![CDATA[AI 툴]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[API Key]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Clean Up]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[CLI Tips]]></category>
		<category><![CDATA[CLI Tool]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Command Line Interface]]></category>
		<category><![CDATA[Commands]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[Console Application]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Desktop Linux]]></category>
		<category><![CDATA[Dev Tips]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Development Environment]]></category>
		<category><![CDATA[environment-variable]]></category>
		<category><![CDATA[Error Fix]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Full Stack]]></category>
		<category><![CDATA[GCP]]></category>
		<category><![CDATA[Gemini 2.5 Pro]]></category>
		<category><![CDATA[Gemini AI]]></category>
		<category><![CDATA[Gemini CLI]]></category>
		<category><![CDATA[Gemini Pro]]></category>
		<category><![CDATA[Gemini Quick Start]]></category>
		<category><![CDATA[Generative AI]]></category>
		<category><![CDATA[Global Install]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Cloud]]></category>
		<category><![CDATA[Google Gemini]]></category>
		<category><![CDATA[How to Install]]></category>
		<category><![CDATA[Installation Guide]]></category>
		<category><![CDATA[Invalid regular expression flags]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Large Language Model]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Development]]></category>
		<category><![CDATA[Linux OS]]></category>
		<category><![CDATA[Linux Setup]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Node Version]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Node.js Upgrade]]></category>
		<category><![CDATA[Node.js 호환성]]></category>
		<category><![CDATA[Nodejs v18]]></category>
		<category><![CDATA[Nodejs v20]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[nvm]]></category>
		<category><![CDATA[NVM Install]]></category>
		<category><![CDATA[NVM 설치]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OS Setup]]></category>
		<category><![CDATA[Package Manager]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Regular Expression]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Step-by-Step]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[SyntaxError]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Tech Trends]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Ubuntu Development]]></category>
		<category><![CDATA[Ubuntu Guide]]></category>
		<category><![CDATA[Ubuntu Server]]></category>
		<category><![CDATA[Uninstall Node]]></category>
		<category><![CDATA[Version Management]]></category>
		<category><![CDATA[Zsh]]></category>
		<category><![CDATA[개발 트렌드]]></category>
		<category><![CDATA[개발 팁]]></category>
		<category><![CDATA[개발 환경]]></category>
		<category><![CDATA[개발 효율]]></category>
		<category><![CDATA[개발자]]></category>
		<category><![CDATA[거대 언어 모델]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[구글 제미나이]]></category>
		<category><![CDATA[기술]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[단계별 가이드]]></category>
		<category><![CDATA[루트 권한]]></category>
		<category><![CDATA[리눅스]]></category>
		<category><![CDATA[리눅스 개발]]></category>
		<category><![CDATA[명령어]]></category>
		<category><![CDATA[버전 관리]]></category>
		<category><![CDATA[버전 문제]]></category>
		<category><![CDATA[보안]]></category>
		<category><![CDATA[빠른 시작]]></category>
		<category><![CDATA[생성형 AI]]></category>
		<category><![CDATA[설치 가이드]]></category>
		<category><![CDATA[스크립트]]></category>
		<category><![CDATA[시스템 정리]]></category>
		<category><![CDATA[오류 해결]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[우분투]]></category>
		<category><![CDATA[의존성]]></category>
		<category><![CDATA[인공지능]]></category>
		<category><![CDATA[인공지능 비서]]></category>
		<category><![CDATA[인증]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[전역 설치]]></category>
		<category><![CDATA[정규 표현식]]></category>
		<category><![CDATA[제미나이]]></category>
		<category><![CDATA[챗봇]]></category>
		<category><![CDATA[콘솔 앱]]></category>
		<category><![CDATA[클라우드 컴퓨팅]]></category>
		<category><![CDATA[터미널]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[패키지 매니저]]></category>
		<category><![CDATA[패키지 제거]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[환경 변수]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40364</guid>

					<description><![CDATA[<p>1단계: Node.js 및 npm 설치 (1) NVM (Node Version Manager)을 이용한 설치 (추천) (2) apt를 통한 기본 설치 2단계: Gemini CLI 설치 3단계: Gemini CLI 실행 및 인증 설치가 완료되면, 터미널에 gemini 명령어를 입력하여 실행 최초 실행 시 다음과 같은 설정 및 인증 과정이 진행됩니다. 인증이 성공적으로 완료되면, Gemini CLI 프롬프트(gemini &#62;)가 나타나며 바로 Gemini를 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/">Ubuntu에 Gemini CLI 설치</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-c8e0bf3e      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1단계-nodejs-및-npm-설치" class="uagb-toc-link__trigger">1단계: Node.js 및 npm 설치</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-nvm-node-version-manager을-이용한-설치-추천" class="uagb-toc-link__trigger">(1) NVM (Node Version Manager)을 이용한 설치 (추천)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-apt를-통한-기본-설치" class="uagb-toc-link__trigger">(2) apt를 통한 기본 설치</a></li></ul></li><li class="uagb-toc__list"><a href="#2단계-gemini-cli-설치" class="uagb-toc-link__trigger">2단계: Gemini CLI 설치</a><li class="uagb-toc__list"><a href="#3단계-gemini-cli-실행-및-인증" class="uagb-toc-link__trigger">3단계: Gemini CLI 실행 및 인증</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1단계: Node.js 및 npm 설치</h2>



<ul class="wp-block-list">
<li>Gemini CLI는 <strong>Node.js 버전 20 이상</strong>을 권장</li>
</ul>



<h3 class="wp-block-heading">(1) NVM (Node Version Manager)을 이용한 설치 (추천)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Node.js 20 이상인지 확인
node -v
npm -v

// NVM 설치 (버전 번호는 최신 버전으로 바뀔 수 있음):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

// 터미널 재시작 또는 적용:
source ~/.bashrc 
# 또는 새 터미널 창을 엽니다.

// 최신 LTS Node.js 설치:
nvm install --lts
nvm use --lts</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">(2) <code>apt</code>를 통한 기본 설치</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Node.js 20 이상인지 확인
node -v
npm -v

sudo apt update
sudo apt install -y nodejs npm</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2단계: Gemini CLI 설치</h2>



<ul class="wp-block-list">
<li>Node.js와 npm이 준비되었다면, npm을 사용하여 Gemini CLI를 <strong>전역으로</strong> 설치</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo npm install -g @google/gemini-cli</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3단계: Gemini CLI 실행 및 인증</h2>



<p class="wp-block-paragraph">설치가 완료되면, 터미널에 <code>gemini</code> 명령어를 입력하여 실행</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">gemini</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">최초 실행 시 다음과 같은 설정 및 인증 과정이 진행됩니다.</p>



<ol start="1" class="wp-block-list">
<li><strong>테마 선택:</strong> 터미널에서 원하는 CLI <strong>테마</strong>를 선택합니다.</li>



<li><strong>인증 방법 선택:</strong>
<ul class="wp-block-list">
<li><strong>Google 로그인 (권장):</strong> <br>개인 Google 계정으로 로그인하여 사용합니다. <br>브라우저 창이 열리면 로그인 및 인증을 완료하세요. <br>무료 등급에서는 Gemini 2.5 Pro 모델에 대한 충분한 요청 횟수(예: 분당 60회, 일일 1,000회)가 제공됩니다.</li>



<li><strong>API 키 사용:</strong> <br>Google AI Studio 등에서 발급받은 <strong>API 키</strong>를 사용하려면 환경 변수로 설정하거나 이 옵션을 선택합니다. <br>(예: <code>export GEMINI_API_KEY="YOUR_API_KEY"</code>)</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">인증이 성공적으로 완료되면, Gemini CLI 프롬프트(<code>gemini &gt;</code>)가 나타나며 바로 Gemini를 사용할 수 있습니다.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1500" height="611" src="https://lycos7560.com/wp-content/uploads/2025/11/image.png" alt="" class="wp-image-40365" srcset="https://lycos7560.com/wp-content/uploads/2025/11/image.png 1500w, https://lycos7560.com/wp-content/uploads/2025/11/image-300x122.png 300w, https://lycos7560.com/wp-content/uploads/2025/11/image-768x313.png 768w" sizes="(max-width: 1500px) 100vw, 1500px" /><figcaption class="wp-element-caption">성공</figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/">Ubuntu에 Gemini CLI 설치</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTML iframe 정리</title>
		<link>https://lycos7560.com/etc/html-iframe-%ec%a0%95%eb%a6%ac/40225/</link>
					<comments>https://lycos7560.com/etc/html-iframe-%ec%a0%95%eb%a6%ac/40225/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 04 Aug 2025 12:42:26 +0000</pubDate>
				<category><![CDATA[Blazor]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[a11y]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[allow]]></category>
		<category><![CDATA[allow-forms]]></category>
		<category><![CDATA[allow-popups]]></category>
		<category><![CDATA[allow-same-origin]]></category>
		<category><![CDATA[allow-scripts]]></category>
		<category><![CDATA[allowfullscreen]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Aspect Ratio]]></category>
		<category><![CDATA[autoplay]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[Clickjacking]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[Content Security Policy]]></category>
		<category><![CDATA[CORS]]></category>
		<category><![CDATA[cross-origin]]></category>
		<category><![CDATA[CSP]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[DevTools]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[embed 태그]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[height]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML기초]]></category>
		<category><![CDATA[HTML태그]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[iframe 통신]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lazy loading]]></category>
		<category><![CDATA[loading]]></category>
		<category><![CDATA[Map Embed]]></category>
		<category><![CDATA[microphone]]></category>
		<category><![CDATA[object 태그]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PDF뷰어]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Permissions Policy]]></category>
		<category><![CDATA[picture-in-picture]]></category>
		<category><![CDATA[postMessage]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[referrerpolicy]]></category>
		<category><![CDATA[Responsive iframe]]></category>
		<category><![CDATA[Responsive Web]]></category>
		<category><![CDATA[Same-Origin Policy]]></category>
		<category><![CDATA[sandbox]]></category>
		<category><![CDATA[Screen Reader]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SPA]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[Third-Party Content]]></category>
		<category><![CDATA[title]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[WAI-ARIA]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Performance]]></category>
		<category><![CDATA[Web Security]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[width]]></category>
		<category><![CDATA[X-Frame-Options]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[YouTube Embed]]></category>
		<category><![CDATA[개발자도구]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[구글맵임베드]]></category>
		<category><![CDATA[구글지도]]></category>
		<category><![CDATA[기능정책]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[동일출처정책]]></category>
		<category><![CDATA[디버깅]]></category>
		<category><![CDATA[리액트]]></category>
		<category><![CDATA[문제해결]]></category>
		<category><![CDATA[반응형iframe]]></category>
		<category><![CDATA[반응형웹]]></category>
		<category><![CDATA[보안]]></category>
		<category><![CDATA[뷰]]></category>
		<category><![CDATA[브라우저]]></category>
		<category><![CDATA[블레이저]]></category>
		<category><![CDATA[성능]]></category>
		<category><![CDATA[스크린리더]]></category>
		<category><![CDATA[싱글페이지애플리케이션]]></category>
		<category><![CDATA[외부콘텐츠]]></category>
		<category><![CDATA[웹개발]]></category>
		<category><![CDATA[웹메시징]]></category>
		<category><![CDATA[웹보안]]></category>
		<category><![CDATA[웹성능]]></category>
		<category><![CDATA[웹접근성]]></category>
		<category><![CDATA[웹컴포넌트]]></category>
		<category><![CDATA[웹퍼블리셔]]></category>
		<category><![CDATA[웹페이지]]></category>
		<category><![CDATA[웹표준]]></category>
		<category><![CDATA[유튜브]]></category>
		<category><![CDATA[유튜브임베드]]></category>
		<category><![CDATA[이벤트리스너]]></category>
		<category><![CDATA[인라인요소]]></category>
		<category><![CDATA[인라인프레임]]></category>
		<category><![CDATA[임베드]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[접근성]]></category>
		<category><![CDATA[종횡비]]></category>
		<category><![CDATA[지연로딩]]></category>
		<category><![CDATA[최적화]]></category>
		<category><![CDATA[코딩]]></category>
		<category><![CDATA[클릭재킹]]></category>
		<category><![CDATA[키보드네비게이션]]></category>
		<category><![CDATA[퍼블리싱]]></category>
		<category><![CDATA[프레임]]></category>
		<category><![CDATA[프레임워크]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[프론트엔드]]></category>
		<category><![CDATA[호환성]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40225</guid>

					<description><![CDATA[<p>HTML iframe? &#60;iframe> (Inline Frame) 태그는 현재 HTML 문서 안에 다른 웹 페이지나 미디어 콘텐츠를 임베드(embed)할 때 사용하는 HTML 요소입니다. 외부 콘텐츠를 현재 페이지에 &#8220;창문처럼&#8221; 삽입하는 기능을 제공하며, 웹 개발에서 매우 유용한 도구입니다. 1. 기본 구조와 문법 기본 문법 최소 권장 구조 2. 핵심 속성 속성 설명 예시 필수여부 src 임베드할 콘텐츠의 URL src="https://www.youtube.com/embed/동영상ID" 필수 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/html-iframe-%ec%a0%95%eb%a6%ac/40225/">HTML iframe 정리</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-d4c23dad      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#html-iframe" class="uagb-toc-link__trigger">HTML iframe?</a><li class="uagb-toc__list"><a href="#1-기본-구조와-문법" class="uagb-toc-link__trigger">1. 기본 구조와 문법</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#기본-문법" class="uagb-toc-link__trigger">기본 문법</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#최소-권장-구조" class="uagb-toc-link__trigger">최소 권장 구조</a></li></ul></li><li class="uagb-toc__list"><a href="#2-핵심-속성" class="uagb-toc-link__trigger">2. 핵심 속성</a><li class="uagb-toc__list"><a href="#3-주요-사용-사례" class="uagb-toc-link__trigger">3. 주요 사용 사례</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-youtube-동영상-임베드" class="uagb-toc-link__trigger">1) YouTube 동영상 임베드</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-google-maps-임베드" class="uagb-toc-link__trigger">2) Google Maps 임베드</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-pdf-문서-표시" class="uagb-toc-link__trigger">3) PDF 문서 표시</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#4-인라인-html-콘텐츠-srcdoc-사용" class="uagb-toc-link__trigger">4) 인라인 HTML 콘텐츠 (srcdoc 사용)</a></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#4-보안-및-권한-제어-속성-sandbox-allow" class="uagb-toc-link__trigger">4. 보안 및 권한 제어 속성 (sandbox &amp; allow)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#41-sandbox-속성-보안-제한-설정" class="uagb-toc-link__trigger">4.1 sandbox 속성 &#8211; 보안 제한 설정</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#42-allow-속성-기능-권한-제어" class="uagb-toc-link__trigger">4.2 allow 속성 &#8211; 기능 권한 제어</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#43-사용-예시" class="uagb-toc-link__trigger">4.3 사용 예시</a></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#5-보안-및-성능-고려사항" class="uagb-toc-link__trigger">5. 보안 및 성능 고려사항</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#보안-고려사항" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 보안 고려사항</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#성능-최적화" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 성능 최적화</a></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#6-반응형-디자인" class="uagb-toc-link__trigger">6. 반응형 디자인</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#css를-이용한-반응형-iframe" class="uagb-toc-link__trigger">CSS를 이용한 반응형 iframe</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#다양한-비율-지원" class="uagb-toc-link__trigger">다양한 비율 지원</a></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#7-javascript와의-상호작용" class="uagb-toc-link__trigger">7. JavaScript와의 상호작용</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#postmessage-api-사용" class="uagb-toc-link__trigger">postMessage API 사용</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#iframe-로드-완료-감지" class="uagb-toc-link__trigger">iframe 로드 완료 감지</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#8-프레임워크별-사용-예시" class="uagb-toc-link__trigger">8. 프레임워크별 사용 예시</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#react" class="uagb-toc-link__trigger">React</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#vuejs" class="uagb-toc-link__trigger">Vue.js</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#blazor" class="uagb-toc-link__trigger">Blazor</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#9-접근성-accessibility" class="uagb-toc-link__trigger">9. 접근성 (Accessibility)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#필수-접근성-고려사항" class="uagb-toc-link__trigger">필수 접근성 고려사항</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#키보드-네비게이션" class="uagb-toc-link__trigger">키보드 네비게이션</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#10-문제-해결-및-디버깅" class="uagb-toc-link__trigger">10. 문제 해결 및 디버깅</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#일반적인-문제들" class="uagb-toc-link__trigger">일반적인 문제들</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#디버깅-도구" class="uagb-toc-link__trigger">디버깅 도구</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#11-모범-사례-및-권장사항" class="uagb-toc-link__trigger">11. 모범 사례 및 권장사항</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#권장사항" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 권장사항</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#피해야-할-것들" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 피해야 할 것들</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#12-대안-기술들" class="uagb-toc-link__trigger">12. 대안 기술들</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-object-태그" class="uagb-toc-link__trigger">1. object 태그</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-embed-태그" class="uagb-toc-link__trigger">2. embed 태그</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-web-components" class="uagb-toc-link__trigger">3. Web Components</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#결론" class="uagb-toc-link__trigger">결론</a></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">HTML iframe?</h2>



<p class="wp-block-paragraph"><code>&lt;iframe></code> (Inline Frame) 태그는 <strong>현재 HTML 문서 안에 다른 웹 페이지나 미디어 콘텐츠를 임베드(embed)할 때 사용하는 HTML 요소</strong>입니다. </p>



<p class="wp-block-paragraph">외부 콘텐츠를 현재 페이지에 &#8220;창문처럼&#8221; 삽입하는 기능을 제공하며, <strong>웹 개발에서 매우 유용한 도구</strong>입니다.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1. 기본 구조와 문법</h2>



<h3 class="wp-block-heading">기본 문법</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe 
    src="삽입할_콘텐츠_URL" 
    width="너비" 
    height="높이" 
    title="프레임 설명"
    allow="fullscreen">
    &lt;!-- 대체 콘텐츠 (iframe을 지원하지 않는 브라우저용) -->
    &lt;p>이 브라우저는 iframe을 지원하지 않습니다.&lt;/p>
&lt;/iframe>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">최소 권장 구조</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe 
    src="https://example.com" 
    title="Example Website"
    width="600" 
    height="400">
&lt;/iframe>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2. 핵심 속성</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>속성</th><th>설명</th><th>예시</th><th>필수여부</th></tr></thead><tbody><tr><td><code>src</code></td><td>임베드할 콘텐츠의 URL</td><td><code>src="https://www.youtube.com/embed/동영상ID"</code></td><td><strong>필수</strong></td></tr><tr><td><code>width</code>/<code>height</code></td><td>프레임 크기 (픽셀 또는 %)</td><td><code>width="600" height="400"</code></td><td>권장</td></tr><tr><td><code>title</code></td><td>접근성을 위한 프레임 설명</td><td><code>title="YouTube 동영상"</code></td><td><strong>권장</strong></td></tr><tr><td><code><s>frameborder</s></code></td><td><s>테두리 표시 여부 </s>(HTML5에선 CSS로 대체)</td><td><code><s>frameborder="0"</s></code></td><td><s>선택</s></td></tr><tr><td><code>allowfullscreen</code><br><code>allowfullscreen</code>은 오래된 방식이며, <br>최신 표준인 <strong>권한 정책(Permissions Policy)에서는</strong><br><strong><code>allow="fullscreen"</code>을 사용</strong>하는 것을 권장</td><td>전체 화면 모드 허용</td><td>불리언 속성</td><td>선택</td></tr><tr><td><code>sandbox</code></td><td>보안 제한 설정</td><td><code>sandbox="allow-scripts allow-same-origin"</code></td><td>선택</td></tr><tr><td><code>loading</code></td><td>로딩 방식 (lazy/eager)</td><td><code>loading="lazy"</code></td><td>선택</td></tr><tr><td><code>allow</code></td><td>기능 정책 설정</td><td><code>allow="camera; microphone"</code></td><td>선택</td></tr><tr><td><code>name</code></td><td>프레임 이름 (target으로 사용)</td><td><code>name="myFrame"</code></td><td>선택</td></tr><tr><td><code>srcdoc</code></td><td>인라인 HTML 콘텐츠</td><td><code>srcdoc="&lt;p&gt;Hello World&lt;/p&gt;"</code></td><td>선택</td></tr><tr><td><code>id</code></td><td>고유 식별자 (CSS, JavaScript에서 참조)</td><td><code>id="myIframe"</code></td><td>권장</td></tr></tbody></table></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3. 주요 사용 사례</h2>



<h3 class="wp-block-heading">1) YouTube 동영상 임베드</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div class="video-container">
    &lt;iframe src="https://www.youtube.com/embed/rdwz7QiG0lk?enablejsapi=1"
            id="ytPlayer"
            width="560"
            height="315"
            title="YouTube on the tube!"
            allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture; web-share">
    &lt;/iframe>
&lt;/div>

&lt;style>
    .video-container {
        position: relative;
        padding-bottom: 56.25%; /* 16:9 비율 */
        height: 0;
        overflow: hidden;
    }

    .video-container iframe {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
    }
&lt;/style></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">2) Google Maps 임베드</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe
    src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3165.303576908283!2d127.024612!3d37.515582!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zMzfCsDMwJzU2LjEiTiAxMjfCsDAxJzI4LjYiRQ!5e0!3m2!1sen!2skr!4v1620000000000!5m2!1sen!2skr"
    width="600"
    height="450"
    title="Google Maps"
    style="border:0;"
    allow="fullscreen"
    loading="lazy"
    referrerpolicy="no-referrer-when-downgrade">
&lt;/iframe>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">3) PDF 문서 표시</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">
&lt;iframe 
    src="/documents/sample.pdf" 
    width="100%" 
    height="600px"
    title="PDF 문서">
    &lt;p>PDF를 표시할 수 없습니다. &lt;a href="/documents/sample.pdf">다운로드&lt;/a>하세요.&lt;/p>
&lt;/iframe>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">4) 인라인 HTML 콘텐츠 (srcdoc 사용)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe 
    srcdoc="&lt;html>&lt;body>&lt;h1>안녕하세요!&lt;/h1>&lt;p>이것은 인라인 HTML입니다.&lt;/p>&lt;/body>&lt;/html>"
    width="400" 
    height="200"
    title="인라인 HTML">
&lt;/iframe>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">4. 보안 및 권한 제어 속성 (sandbox &amp; allow)</h2>



<h3 class="wp-block-heading">4.1 sandbox 속성 &#8211; 보안 제한 설정</h3>



<p class="wp-block-paragraph"><code>sandbox</code> 속성은 iframe 내 콘텐츠의 보안을 강화하기 위해 사용됩니다. </p>



<p class="wp-block-paragraph"><strong>기본적으로 모든 것을 차단</strong>하고 필요한 기능만 허용하는 방식입니다.</p>



<h4 class="wp-block-heading">sandbox 기본 사용법</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- 모든 제한 적용 (최고 보안) -->
&lt;iframe src="..." sandbox>&lt;/iframe>

&lt;!-- 특정 기능만 허용 -->
&lt;iframe src="..." sandbox="allow-scripts allow-same-origin allow-forms">&lt;/iframe></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">sandbox 값들</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>sandbox 값</th><th>설명</th><th>사용 예시</th></tr></thead><tbody><tr><td><code>allow-forms</code></td><td>폼 제출 허용</td><td>로그인, 검색 폼이 있는 페이지</td></tr><tr><td><code>allow-scripts</code></td><td>JavaScript 실행 허용</td><td>인터랙티브 콘텐츠</td></tr><tr><td><code>allow-same-origin</code></td><td>동일 출처 정책 적용</td><td>API 호출, 쿠키 접근</td></tr><tr><td><code>allow-popups</code></td><td>팝업 창 열기 허용</td><td>새 창으로 링크 열기</td></tr><tr><td><code>allow-top-navigation</code></td><td>최상위 프레임 네비게이션 허용</td><td>부모 페이지 이동</td></tr><tr><td><code>allow-pointer-lock</code></td><td>포인터 잠금 API 허용</td><td>게임, 3D 앱</td></tr><tr><td><code>allow-fullscreen</code></td><td>전체 화면 모드 허용</td><td>동영상 플레이어</td></tr><tr><td><code>allow-downloads</code></td><td>파일 다운로드 허용</td><td>문서 다운로드</td></tr><tr><td><code>allow-modals</code></td><td>모달 창 허용</td><td>alert, confirm 등</td></tr></tbody></table></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">4.2 allow 속성 &#8211; 기능 권한 제어</h3>



<p class="wp-block-paragraph"><code>allow</code> 속성은 브라우저의 고급 기능에 대한 접근 권한을 제어합니다. </p>



<p class="wp-block-paragraph"><strong>Permissions Policy</strong>를 통해 특정 웹 API 사용을 허용하거나 차단합니다.</p>



<h4 class="wp-block-heading">allow 기본 사용법</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- 특정 브라우저 기능 허용 -->
&lt;iframe src="..." 
        allow="camera; microphone; geolocation">
&lt;/iframe>

&lt;!-- YouTube 동영상에 필요한 기능들 -->
&lt;iframe src="https://www.youtube.com/embed/..."
        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share">
&lt;/iframe></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">allow 값들</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>값</strong></th><th><strong>설명</strong></th><th><strong>사용 예시</strong></th></tr></thead><tbody><tr><td><code>camera</code></td><td>카메라 접근 허용</td><td>화상 통화, 사진 촬영</td></tr><tr><td><code>microphone</code></td><td>마이크 접근 허용</td><td>음성 녹음, 통음</td></tr><tr><td><code>geolocation</code></td><td>위치 정보 접근 허용</td><td>지도 서비스, 위치 기반 기능</td></tr><tr><td><code>autoplay</code></td><td>자동 재생 허용</td><td>동영상/음악 자동 재생</td></tr><tr><td><code>encrypted-media</code></td><td>DRM 보호 콘텐츠 재생 허용</td><td>Netflix, 유료 스트리밍 서비스</td></tr><tr><td><code>picture-in-picture</code></td><td>PIP(작은 창) 모드 허용</td><td>동영상 시청 중 다른 작업</td></tr><tr><td><code>accelerometer</code></td><td>가속도계(기기 움직임) 접근 허용</td><td>모바일 게임, VR 콘텐츠</td></tr><tr><td><code>gyroscope</code></td><td>자이로스코프(기기 회전) 접근 허용</td><td>360도 동영상, AR 앱</td></tr><tr><td><code>clipboard-write</code></td><td>클립보드 복사 기능 허용</td><td>텍스트/이미지 복사 버튼</td></tr><tr><td><code>web-share</code></td><td>운영체제 공유 기능 허용</td><td>SNS 공유, 링크 공유</td></tr><tr><td><code>fullscreen</code></td><td>전체 화면 모드 허용</td><td>동영상 전체 화면으로 보기</td></tr></tbody></table></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">4.3 사용 예시</h3>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">신뢰할 수 없는 콘텐츠 (높은 보안)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- 외부 광고, 사용자 생성 콘텐츠 -->
&lt;iframe src="https://untrusted-ads.com/banner" 
        sandbox="allow-scripts"
        width="300" height="250">
&lt;/iframe></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">부분적으로 신뢰하는 콘텐츠 (중간 보안)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- 서드파티 앱, 외부 도구 -->
&lt;iframe src="https://third-party-tool.com"
        sandbox="allow-scripts allow-same-origin allow-forms"
        allow="clipboard-write"
        width="600" height="400">
&lt;/iframe></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">신뢰할 수 있는 서비스 (기능 중심)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- YouTube, Google Maps 등 -->
&lt;iframe src="https://www.youtube.com/embed/rdwz7QiG0lk"
        allow="accelerometer; autoplay; encrypted-media; fullscreen; gyroscope; picture-in-picture; web-share">
&lt;/iframe></pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">둘 다 사용하는 경우</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- 보안과 기능 모두 제어 -->
&lt;iframe src="https://video-chat-app.com"
        sandbox="allow-scripts allow-same-origin allow-forms"
        allow="camera; microphone; autoplay"
        width="800" height="600">
&lt;/iframe></pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">5. 보안 및 성능 고려사항</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 보안 고려사항</h3>



<h4 class="wp-block-heading">X-Frame-Options 헤더</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">X-Frame-Options: DENY          # 모든 프레임에서 차단
X-Frame-Options: SAMEORIGIN   # 동일 출처에서만 허용
X-Frame-Options: ALLOW-FROM https://example.com  # 대부분 지원 중단되었으므로 CSP frame-ancestors를 사용

# "특정 도메인"은 해당 웹사이트를 iframe으로 임베드할 수 있는 허용된 출처(도메인)를 의미</pre>



<figure class="wp-block-image size-full"><img decoding="async" width="965" height="490" src="https://lycos7560.com/wp-content/uploads/2025/08/image-13.png" alt="" class="wp-image-40229" srcset="https://lycos7560.com/wp-content/uploads/2025/08/image-13.png 965w, https://lycos7560.com/wp-content/uploads/2025/08/image-13-300x152.png 300w, https://lycos7560.com/wp-content/uploads/2025/08/image-13-768x390.png 768w" sizes="(max-width: 965px) 100vw, 965px" /><figcaption class="wp-element-caption"><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Frame-Options#browser_compatibility" target="_blank" rel="noreferrer noopener">https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Frame-Options#browser_compatibility</a></figcaption></figure>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">Content Security Policy (CSP)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;meta http-equiv="Content-Security-Policy" 
      content="frame-src https://youtube.com https://maps.google.com;">
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">안전한 iframe 사용법</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe 
    src="https://trusted-site.com"
    sandbox="allow-scripts allow-same-origin"
    referrerpolicy="strict-origin-when-cross-origin">
&lt;/iframe>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 성능 최적화</h3>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">지연 로딩 (Lazy Loading)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe 
    src="https://example.com" 
    loading="lazy"
    width="600" 
    height="400">
&lt;/iframe>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">리소스 힌트 사용</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!-- DNS 사전 해석 -->
&lt;link rel="dns-prefetch" href="https://www.youtube.com">

&lt;!-- 사전 연결 -->
&lt;link rel="preconnect" href="https://www.youtube.com">

&lt;!-- 리소스 사전 로드 -->
&lt;link rel="preload" href="https://example.com/critical-frame" as="document">
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">Intersection Observer를 이용한 동적 로딩</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            const iframe = entry.target;
            iframe.src = iframe.dataset.src;
            observer.unobserve(iframe);
        }
    });
});

document.querySelectorAll('iframe[data-src]').forEach(iframe => {
    observer.observe(iframe);
});
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">6. 반응형 디자인</h2>



<h3 class="wp-block-heading">CSS를 이용한 반응형 iframe</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.iframe-container {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
}

.iframe-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div class="iframe-container">
    &lt;iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" 
            title="YouTube 동영상"
            allow="fullscreen">
    &lt;/iframe>
&lt;/div>
</pre>



<h3 class="wp-block-heading">다양한 비율 지원</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.aspect-16-9 { padding-bottom: 56.25%; }  /* 16:9 */
.aspect-4-3 { padding-bottom: 75%; }      /* 4:3 */
.aspect-1-1 { padding-bottom: 100%; }     /* 1:1 */
.aspect-21-9 { padding-bottom: 42.86%; }  /* 21:9 */
</pre>



<h2 class="wp-block-heading">7. JavaScript와의 상호작용</h2>



<h3 class="wp-block-heading">postMessage API 사용</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 부모 페이지에서 iframe으로 메시지 전송
const iframe = document.getElementById('myFrame');
iframe.contentWindow.postMessage('Hello from parent', '*');

// 메시지 수신 리스너
window.addEventListener('message', (event) => {
    if (event.origin !== 'https://trusted-domain.com') return;
    console.log('받은 메시지:', event.data);
});
</pre>



<h3 class="wp-block-heading">iframe 로드 완료 감지</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">const iframe = document.getElementById('myFrame');
iframe.addEventListener('load', () => {
    console.log('iframe 로드 완료');
});
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">8. 프레임워크별 사용 예시</h2>



<h3 class="wp-block-heading">React</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function YouTubeEmbed({ videoId }) {
    return (
        &lt;div className="iframe-container">
            &lt;iframe
                src={`https://www.youtube.com/embed/${videoId}`}
                title="YouTube video player"
                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen"
            />
        &lt;/div>
    );
}</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Vue.js</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;template>
    &lt;div class="iframe-container">
        &lt;iframe
            :src="`https://www.youtube.com/embed/${videoId}`"
            title="YouTube video player"
            allow="fullscreen"
        />
    &lt;/div>
&lt;/template>

&lt;script>
export default {
    props: ['videoId']
}
&lt;/script>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Blazor</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">@page "/iframe-demo"

&lt;div class="iframe-wrapper">
    &lt;iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ"
            width="560"
            height="315"
            title="YouTube 동영상"
            allow="fullscreen"
            class="youtube-frame">
    &lt;/iframe>
&lt;/div>

&lt;style>
    .youtube-frame {
        border: none;
        border-radius: 8px;
        box-shadow: 0 4px 8px rgba(0,0,0,0.1);
    }
    
    .iframe-wrapper {
        display: flex;
        justify-content: center;
        margin: 20px 0;
    }
&lt;/style>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">9. 접근성 (Accessibility)</h2>



<h3 class="wp-block-heading">필수 접근성 고려사항</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;iframe
    src="https://example.com"
    title="명확하고 설명적인 제목"
    aria-label="iframe 내용에 대한 추가 설명"
    tabindex="0">
    &lt;p>이 콘텐츠를 보려면 &lt;a href="https://example.com">여기를 클릭&lt;/a>하세요.&lt;/p>
&lt;/iframe>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">키보드 네비게이션</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">iframe:focus {
    outline: 2px solid #007cba;
    outline-offset: 2px;
}
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">10. 문제 해결 및 디버깅</h2>



<h3 class="wp-block-heading">일반적인 문제들</h3>



<h4 class="wp-block-heading">1. 콘텐츠가 보이지 않을 때</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 개발자 도구에서 확인할 사항들
console.log('iframe src:', iframe.src);
console.log('iframe 로드 상태:', iframe.readyState);

// 오류 핸들링
iframe.addEventListener('error', (e) => {
    console.error('iframe 로드 오류:', e);
});
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">2. X-Frame-Options 오류 해결</h4>



<ul class="wp-block-list">
<li>개발자 도구 → Network 탭에서 응답 헤더 확인</li>



<li>가능한 해결책: 프록시 서버 사용 또는 API를 통한 콘텐츠 가져오기</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">3. CORS 정책 위반</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 안전한 방법: 서버 사이드에서 콘텐츠 프록시
fetch('/api/proxy?url=' + encodeURIComponent(targetUrl))
    .then(response => response.text())
    .then(html => {
        iframe.srcdoc = html;
    });
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">디버깅 도구</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// iframe 상태 체크 함수
function checkIframeStatus(iframeId) {
    const iframe = document.getElementById(iframeId);
    console.log({
        src: iframe.src,
        contentDocument: iframe.contentDocument,
        contentWindow: iframe.contentWindow,
        readyState: iframe.readyState
    });
}
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">11. 모범 사례 및 권장사항</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 권장사항</h3>



<ol class="wp-block-list">
<li><strong>항상 <code>title</code> 속성 제공</strong> &#8211; 접근성을 위해 필수</li>



<li><strong>적절한 크기 설정</strong> &#8211; 반응형 디자인 고려</li>



<li><strong>loading=&#8221;lazy&#8221; 사용</strong> &#8211; 성능 최적화</li>



<li><strong>sandbox 속성 활용</strong> &#8211; 보안 강화</li>



<li><strong>대체 콘텐츠 제공</strong> &#8211; 호환성 보장</li>



<li><strong>HTTPS 사용</strong> &#8211; 보안 및 호환성</li>
</ol>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 피해야 할 것들</h3>



<ol class="wp-block-list">
<li><strong>frameborder 속성</strong> &#8211; HTML5에서는 CSS 사용 권장</li>



<li><strong>과도한 중첩</strong> &#8211; 성능 저하 원인</li>



<li><strong>신뢰할 수 없는 소스</strong> &#8211; 보안 위험</li>



<li><strong>고정 크기만 사용</strong> &#8211; 반응형 웹에 부적합</li>



<li><strong>title 속성 누락</strong> &#8211; 접근성 문제</li>
</ol>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">12. 대안 기술들</h2>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">1. object 태그</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;object data="document.pdf" type="application/pdf" width="600" height="400">
    &lt;p>PDF를 표시할 수 없습니다. &lt;a href="document.pdf">다운로드&lt;/a>하세요.&lt;/p>
&lt;/object>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">2. embed 태그</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;embed src="movie.mp4" type="video/mp4" width="600" height="400">
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">3. Web Components</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class CustomEmbed extends HTMLElement {
    connectedCallback() {
        this.innerHTML = `
            &lt;iframe src="${this.getAttribute('src')}" 
                    title="${this.getAttribute('title')}">
            &lt;/iframe>
        `;
    }
}
customElements.define('custom-embed', CustomEmbed);
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">결론</h2>



<p class="wp-block-paragraph">iframe은 웹 개발에서 외부 콘텐츠를 삽입하는 강력한 도구입니다. </p>



<p class="wp-block-paragraph">올바른 사용법과 보안 고려사항을 숙지하여 안전하고 효율적인 웹 애플리케이션을 개발할 수 있습니다. </p>



<p class="wp-block-paragraph">특히 현대 웹 개발에서는 성능, 보안, 접근성을 모두 고려한 구현이 중요합니다.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/etc/html-iframe-%ec%a0%95%eb%a6%ac/40225/">HTML iframe 정리</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/html-iframe-%ec%a0%95%eb%a6%ac/40225/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>32 bit 운영체제의 메모리 한계는 왜 최대 4GB인가?</title>
		<link>https://lycos7560.com/etc/32-bit-%ec%9a%b4%ec%98%81%ec%b2%b4%ec%a0%9c%ec%9d%98-%eb%a9%94%eb%aa%a8%eb%a6%ac-%ed%95%9c%ea%b3%84%eb%8a%94-%ec%99%9c-%ec%b5%9c%eb%8c%80-4gb%ec%9d%b8%ea%b0%80/40074/</link>
					<comments>https://lycos7560.com/etc/32-bit-%ec%9a%b4%ec%98%81%ec%b2%b4%ec%a0%9c%ec%9d%98-%eb%a9%94%eb%aa%a8%eb%a6%ac-%ed%95%9c%ea%b3%84%eb%8a%94-%ec%99%9c-%ec%b5%9c%eb%8c%80-4gb%ec%9d%b8%ea%b0%80/40074/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 17 Jul 2025 09:54:39 +0000</pubDate>
				<category><![CDATA[기타]]></category>
		<category><![CDATA[1024]]></category>
		<category><![CDATA[2의 거듭제곱]]></category>
		<category><![CDATA[2진법]]></category>
		<category><![CDATA[32-bit]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[32비트]]></category>
		<category><![CDATA[4bit]]></category>
		<category><![CDATA[4GB]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[64비트]]></category>
		<category><![CDATA[Address Space]]></category>
		<category><![CDATA[Addressing]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[Binary System]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[Bitwise Operations]]></category>
		<category><![CDATA[byte]]></category>
		<category><![CDATA[Calculation]]></category>
		<category><![CDATA[Capacity]]></category>
		<category><![CDATA[Chip]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Common Computer Knowledge]]></category>
		<category><![CDATA[Computer Architecture]]></category>
		<category><![CDATA[Computer Basics]]></category>
		<category><![CDATA[Computer Capabilities]]></category>
		<category><![CDATA[Computer Design]]></category>
		<category><![CDATA[Computer Evolution]]></category>
		<category><![CDATA[Computer Hardware]]></category>
		<category><![CDATA[Computer Knowledge]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Computer Software]]></category>
		<category><![CDATA[Computer Structure]]></category>
		<category><![CDATA[Computer System]]></category>
		<category><![CDATA[Computer Terminology]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Computing Concepts]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[data processing]]></category>
		<category><![CDATA[Data Storage]]></category>
		<category><![CDATA[Data Units]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Digital Information]]></category>
		<category><![CDATA[Digital Technology]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Exabyte]]></category>
		<category><![CDATA[Flow of Information]]></category>
		<category><![CDATA[Future Technology]]></category>
		<category><![CDATA[Gigabyte]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[History of Computers]]></category>
		<category><![CDATA[How Computers Work]]></category>
		<category><![CDATA[Information Processing]]></category>
		<category><![CDATA[Information Science]]></category>
		<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[IT Terms]]></category>
		<category><![CDATA[IT 용어]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kilobyte]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Megabyte]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Memory Access]]></category>
		<category><![CDATA[Memory Address]]></category>
		<category><![CDATA[Memory Limit]]></category>
		<category><![CDATA[Memory Management]]></category>
		<category><![CDATA[Modern Computing]]></category>
		<category><![CDATA[Numeric]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Performance Improvement]]></category>
		<category><![CDATA[Physical Memory]]></category>
		<category><![CDATA[Power of 2]]></category>
		<category><![CDATA[Principles of Computers]]></category>
		<category><![CDATA[Processor]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Register]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[System Constraints]]></category>
		<category><![CDATA[System Memory]]></category>
		<category><![CDATA[system performance]]></category>
		<category><![CDATA[System Resources]]></category>
		<category><![CDATA[Tech Trends]]></category>
		<category><![CDATA[Technical Limitations]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Terabyte]]></category>
		<category><![CDATA[Theory]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Understanding Technology]]></category>
		<category><![CDATA[Upgrade]]></category>
		<category><![CDATA[Virtual Memory]]></category>
		<category><![CDATA[가상 메모리]]></category>
		<category><![CDATA[가이드]]></category>
		<category><![CDATA[개발]]></category>
		<category><![CDATA[계산]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[교육]]></category>
		<category><![CDATA[기가바이트]]></category>
		<category><![CDATA[기술]]></category>
		<category><![CDATA[기술 이해]]></category>
		<category><![CDATA[기술 트렌드]]></category>
		<category><![CDATA[기술적 한계]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[데이터 단위]]></category>
		<category><![CDATA[데이터 저장]]></category>
		<category><![CDATA[데이터 처리]]></category>
		<category><![CDATA[디지털]]></category>
		<category><![CDATA[디지털 기술]]></category>
		<category><![CDATA[디지털 정보]]></category>
		<category><![CDATA[램]]></category>
		<category><![CDATA[레지스터]]></category>
		<category><![CDATA[메가바이트]]></category>
		<category><![CDATA[메모리]]></category>
		<category><![CDATA[메모리 관리]]></category>
		<category><![CDATA[메모리 접근]]></category>
		<category><![CDATA[메모리 주소]]></category>
		<category><![CDATA[메모리 한계]]></category>
		<category><![CDATA[물리 메모리]]></category>
		<category><![CDATA[미래 기술]]></category>
		<category><![CDATA[바이트]]></category>
		<category><![CDATA[비트]]></category>
		<category><![CDATA[비트 연산]]></category>
		<category><![CDATA[성능 향상]]></category>
		<category><![CDATA[소프트웨어]]></category>
		<category><![CDATA[수치]]></category>
		<category><![CDATA[스토리지]]></category>
		<category><![CDATA[시스템 리소스]]></category>
		<category><![CDATA[시스템 메모리]]></category>
		<category><![CDATA[시스템 성능]]></category>
		<category><![CDATA[시스템 제약]]></category>
		<category><![CDATA[아키텍처]]></category>
		<category><![CDATA[업그레이드]]></category>
		<category><![CDATA[엑사바이트]]></category>
		<category><![CDATA[용량]]></category>
		<category><![CDATA[운영체제]]></category>
		<category><![CDATA[이론]]></category>
		<category><![CDATA[이진 체계]]></category>
		<category><![CDATA[전산학]]></category>
		<category><![CDATA[정보 과학]]></category>
		<category><![CDATA[정보 기술]]></category>
		<category><![CDATA[정보 처리]]></category>
		<category><![CDATA[정보의 흐름]]></category>
		<category><![CDATA[주소 공간]]></category>
		<category><![CDATA[주소 지정]]></category>
		<category><![CDATA[중앙처리장치]]></category>
		<category><![CDATA[칩]]></category>
		<category><![CDATA[커널]]></category>
		<category><![CDATA[컴퓨터 공학]]></category>
		<category><![CDATA[컴퓨터 구조]]></category>
		<category><![CDATA[컴퓨터 기초]]></category>
		<category><![CDATA[컴퓨터 능력]]></category>
		<category><![CDATA[컴퓨터 발전]]></category>
		<category><![CDATA[컴퓨터 상식]]></category>
		<category><![CDATA[컴퓨터 설계]]></category>
		<category><![CDATA[컴퓨터 소프트웨어]]></category>
		<category><![CDATA[컴퓨터 시스템]]></category>
		<category><![CDATA[컴퓨터 아키텍처]]></category>
		<category><![CDATA[컴퓨터 용어]]></category>
		<category><![CDATA[컴퓨터 작동 방식]]></category>
		<category><![CDATA[컴퓨터 지식]]></category>
		<category><![CDATA[컴퓨터 하드웨어]]></category>
		<category><![CDATA[컴퓨터의 역사]]></category>
		<category><![CDATA[컴퓨터의 원리]]></category>
		<category><![CDATA[컴퓨팅]]></category>
		<category><![CDATA[컴퓨팅 개념]]></category>
		<category><![CDATA[코딩]]></category>
		<category><![CDATA[킬로바이트]]></category>
		<category><![CDATA[테라바이트]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[트랜지스터]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[프로세서]]></category>
		<category><![CDATA[하드웨어]]></category>
		<category><![CDATA[학습]]></category>
		<category><![CDATA[현대 컴퓨팅]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40074</guid>

					<description><![CDATA[<p>컴퓨터는 모든 데이터를 이진수, 즉 0과 1의 조합으로 처리한다. 컴퓨터의 프로세서는 메모리에 접근할 때 특정 주소를 통해 데이터를 읽거나 쓰는데 이때 메모리의 주소를 나타내는 데 사용되는 bit의 수가 주소를 지정하는 데 영향을 준다. 32 bit 운영체제는 메모리의 주소를 표현하는 데 32bit를 사용할 수 있다. 32 bit가 가질 수 있는 모든 경우의 수는 2의 32승으로 만약 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/32-bit-%ec%9a%b4%ec%98%81%ec%b2%b4%ec%a0%9c%ec%9d%98-%eb%a9%94%eb%aa%a8%eb%a6%ac-%ed%95%9c%ea%b3%84%eb%8a%94-%ec%99%9c-%ec%b5%9c%eb%8c%80-4gb%ec%9d%b8%ea%b0%80/40074/">32 bit 운영체제의 메모리 한계는 왜 최대 4GB인가?</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-aeed67c9      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							32 bit 운영체제의 메모리 한계는 왜 최대 4GB인가?						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#만약-4-bit-64-bit-운영체제-라면" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 만약 4 bit / 64 bit 운영체제 라면?</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-4-bit인-경우" class="uagb-toc-link__trigger">1&#x20e3; 4 bit인 경우</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-64-bit인-경우" class="uagb-toc-link__trigger">2&#x20e3; 64 bit인 경우</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">컴퓨터는 모든 데이터를 이진수, 즉 0과 1의 조합으로 처리한다.</p>



<p class="wp-block-paragraph">컴퓨터의 프로세서는 메모리에 접근할 때 특정 주소를 통해 데이터를 읽거나 쓰는데</p>



<p class="wp-block-paragraph">이때 메모리의 주소를 나타내는 데 사용되는 bit의 수가 주소를 지정하는 데 영향을 준다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">32 bit 운영체제는 메모리의 주소를 표현하는 데 32bit를 사용할 수 있다.</p>



<p class="wp-block-paragraph">32 bit가 가질 수 있는 모든 경우의 수는 2의 32승으로 만약 각 주소가 1 byte의 메모리를 가리킨다고 가정하면, </p>



<p class="wp-block-paragraph">32 bit 운영체제가 직접 주소를 지정할 수 있는 최대 공간은 4,294,967,296 byte 다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="380" height="58" src="https://lycos7560.com/wp-content/uploads/2025/07/image.png" alt="" class="wp-image-40075" srcset="https://lycos7560.com/wp-content/uploads/2025/07/image.png 380w, https://lycos7560.com/wp-content/uploads/2025/07/image-300x46.png 300w" sizes="(max-width: 380px) 100vw, 380px" /></figure>



<p class="wp-block-paragraph">위의 값을 우리에게 친숙한 단위인 기가바이트 (Gigabyte, GB)로 변경하면 대략 4 GB 값이 나온다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="621" height="44" src="https://lycos7560.com/wp-content/uploads/2025/07/image-1.png" alt="" class="wp-image-40076" srcset="https://lycos7560.com/wp-content/uploads/2025/07/image-1.png 621w, https://lycos7560.com/wp-content/uploads/2025/07/image-1-300x21.png 300w" sizes="(max-width: 621px) 100vw, 621px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">즉, 32개의 bit로는 최대 약 <strong>4 GB</strong>의 물리적 메모리 주소만 지정할 수 있기 때문에, </p>



<p class="wp-block-paragraph">32 bit 운영체제에서는 아무리 많은 RAM을 설치하더라도 4 GB 이상을 인식하거나 활용할 수 없다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f539.png" alt="🔹" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 컴퓨터 과학에서 데이터의 크기를 나타낼 때 <strong>1000</strong> 대신 <strong>1024</strong>를 사용하는 이유는 컴퓨터가 10진법이 아닌 2진법을 사용하며, 1024(2^10)가 2의 거듭제곱 중 1000에 가장 가까운 수이기 때문이다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 만약 4 bit / 64 bit 운영체제 라면?</h2>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">1&#x20e3; 4 bit인 경우</h3>



<figure class="wp-block-image size-full"><img decoding="async" width="447" height="526" src="https://lycos7560.com/wp-content/uploads/2025/07/image-2.png" alt="" class="wp-image-40077" srcset="https://lycos7560.com/wp-content/uploads/2025/07/image-2.png 447w, https://lycos7560.com/wp-content/uploads/2025/07/image-2-255x300.png 255w" sizes="(max-width: 447px) 100vw, 447px" /><figcaption class="wp-element-caption"><a href="https://stackoverflow.com/questions/1119278/why-does-a-32-bit-os-support-4-gb-of-ram" target="_blank" rel="noreferrer noopener">https://stackoverflow.com/questions/1119278/why-does-a-32-bit-os-support-4-gb-of-ram</a></figcaption></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">4 bit의 운영체제가 가질 수 있는 최대 메모리 주소는 0000 ~ 1111 으로 2^4 = 16개</p>



<p class="wp-block-paragraph">각 주소가 1 byte의 메모리를 가리킨다면, 16개의 주소로 총 16 byte의 메모리를 관리할 수 있다.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">2&#x20e3; 64 bit인 경우</h3>



<p class="wp-block-paragraph">64 bit의 운영체제가 가질 수 있는 최대 메모리 주소의 개수는 2^64 = <strong>18,446,744,073,709,551,616</strong></p>



<p class="wp-block-paragraph">18 엑사바이트(EB)로 이론상 엄청난 메모리를 지원한다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="559" height="369" src="https://lycos7560.com/wp-content/uploads/2025/07/image-3.png" alt="" class="wp-image-40078" srcset="https://lycos7560.com/wp-content/uploads/2025/07/image-3.png 559w, https://lycos7560.com/wp-content/uploads/2025/07/image-3-300x198.png 300w" sizes="(max-width: 559px) 100vw, 559px" /><figcaption class="wp-element-caption"><a href="https://ko.wikipedia.org/wiki/%EB%B0%94%EC%9D%B4%ED%8A%B8" target="_blank" rel="noreferrer noopener">https://ko.wikipedia.org/wiki/%EB%B0%94%EC%9D%B4%ED%8A%B8</a></figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/etc/32-bit-%ec%9a%b4%ec%98%81%ec%b2%b4%ec%a0%9c%ec%9d%98-%eb%a9%94%eb%aa%a8%eb%a6%ac-%ed%95%9c%ea%b3%84%eb%8a%94-%ec%99%9c-%ec%b5%9c%eb%8c%80-4gb%ec%9d%b8%ea%b0%80/40074/">32 bit 운영체제의 메모리 한계는 왜 최대 4GB인가?</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/32-bit-%ec%9a%b4%ec%98%81%ec%b2%b4%ec%a0%9c%ec%9d%98-%eb%a9%94%eb%aa%a8%eb%a6%ac-%ed%95%9c%ea%b3%84%eb%8a%94-%ec%99%9c-%ec%b5%9c%eb%8c%80-4gb%ec%9d%b8%ea%b0%80/40074/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Unity Serialization (직렬화)</title>
		<link>https://lycos7560.com/unity/unity-serialization-%ec%a7%81%eb%a0%ac%ed%99%94/39882/</link>
					<comments>https://lycos7560.com/unity/unity-serialization-%ec%a7%81%eb%a0%ac%ed%99%94/39882/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 25 Feb 2025 09:24:30 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Byte Stream]]></category>
		<category><![CDATA[Configuration Files]]></category>
		<category><![CDATA[Data Format]]></category>
		<category><![CDATA[Data Storage]]></category>
		<category><![CDATA[Data Structure]]></category>
		<category><![CDATA[data transfer]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[Dictionary]]></category>
		<category><![CDATA[file saving]]></category>
		<category><![CDATA[Game Data]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Game State Saving]]></category>
		<category><![CDATA[Inspector]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[JsonUtility]]></category>
		<category><![CDATA[List]]></category>
		<category><![CDATA[Load System]]></category>
		<category><![CDATA[Memory Management]]></category>
		<category><![CDATA[Newtonsoft.Json]]></category>
		<category><![CDATA[Object Conversion]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[PlayerPrefs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Readability]]></category>
		<category><![CDATA[Runtime]]></category>
		<category><![CDATA[Save System]]></category>
		<category><![CDATA[Scene Management]]></category>
		<category><![CDATA[ScriptableObject]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Serialization]]></category>
		<category><![CDATA[Serialization Rules]]></category>
		<category><![CDATA[SerializeField]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[System.Serializable]]></category>
		<category><![CDATA[Unity Editor]]></category>
		<category><![CDATA[Variable Types]]></category>
		<category><![CDATA[WebSockets]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[YAML]]></category>
		<category><![CDATA[가독성]]></category>
		<category><![CDATA[개발자도구]]></category>
		<category><![CDATA[객체변환]]></category>
		<category><![CDATA[게임개발]]></category>
		<category><![CDATA[게임데이터]]></category>
		<category><![CDATA[게임상태저장]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[데이터구조]]></category>
		<category><![CDATA[데이터저장]]></category>
		<category><![CDATA[데이터전송]]></category>
		<category><![CDATA[데이터포맷]]></category>
		<category><![CDATA[런타임]]></category>
		<category><![CDATA[로드시스템]]></category>
		<category><![CDATA[메모리관리]]></category>
		<category><![CDATA[바이트스트림]]></category>
		<category><![CDATA[변수타입]]></category>
		<category><![CDATA[설정파일]]></category>
		<category><![CDATA[스크립팅]]></category>
		<category><![CDATA[씬관리]]></category>
		<category><![CDATA[웹소켓]]></category>
		<category><![CDATA[유니티에디터]]></category>
		<category><![CDATA[직렬화]]></category>
		<category><![CDATA[직렬화규칙]]></category>
		<category><![CDATA[파싱]]></category>
		<category><![CDATA[파일저장]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=39882</guid>

					<description><![CDATA[<p>🔥 Serialization (직렬화) 개요 Serialization이란 객체 데이터를 바이트 스트림으로 변환하여 저장하거나 전송할 수 있도록 하는 과정 주 목적은 필요할 때 다시 개체로 만들 수 있도록 개체의 상태를 저장하는 것 반대로 Deserialization은 저장된 바이트 데이터를 다시 객체로 변환하는 과정입니다. 🔥 JSON, XML, YAML 일반적으로 많이 사용하는 데이터 직렬화 포맷들 1️⃣ JSON (JavaScript Object Notation) ✔️ 특징 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/unity-serialization-%ec%a7%81%eb%a0%ac%ed%99%94/39882/">Unity Serialization (직렬화)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-571189ff      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#serialization-직렬화-개요" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Serialization (직렬화) 개요</a><li class="uagb-toc__list"><a href="#json-xml-yaml" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JSON, XML, YAML</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-json-javascript-object-notation" class="uagb-toc-link__trigger">1&#x20e3; JSON (JavaScript Object Notation)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-xml-extensible-markup-language" class="uagb-toc-link__trigger">2&#x20e3; XML (eXtensible Markup Language)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-yaml-yaml-aint-markup-language" class="uagb-toc-link__trigger">3&#x20e3; YAML (YAML Ain&#039;t Markup Language)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#비교-정리" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 비교 정리</a></li></ul></li><li class="uagb-toc__list"><a href="#unity에서의-스크립트-직렬화-serialization-in-unity" class="uagb-toc-link__trigger"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" />Unity에서의 스크립트 직렬화 (Serialization in Unity)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-unity에서-직렬화가-중요한-이유" class="uagb-toc-link__trigger">1&#x20e3; Unity에서 직렬화가 중요한 이유</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-unity에서-직렬화-가능한-타입" class="uagb-toc-link__trigger">2&#x20e3; Unity에서 직렬화 가능한 타입</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-unity-직렬화-적용-방법" class="uagb-toc-link__trigger">3&#x20e3; Unity 직렬화 적용 방법</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#4-unity-직렬화와-json-활용" class="uagb-toc-link__trigger">4&#x20e3; Unity 직렬화와 JSON 활용</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Serialization (직렬화) 개요</strong></h2>



<p class="wp-block-paragraph"><strong>Serialization</strong>이란<strong> 객체 데이터</strong>를 <strong>바이트 스트림</strong>으로 변환하여 <strong>저장</strong>하거나 <strong>전송</strong>할 수 있도록 하는 과정</p>



<p class="wp-block-paragraph">주 목적은 필요할 때 다시 개체로 만들 수 있도록 개체의 상태를 저장하는 것</p>



<p class="wp-block-paragraph">반대로 <strong>Deserialization</strong>은 저장된 바이트 데이터를 다시 객체로 변환하는 과정입니다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="262" height="199" src="https://lycos7560.com/wp-content/uploads/2025/02/image-179.png" alt="" class="wp-image-39884"/><figcaption class="wp-element-caption"><a href="https://learn.microsoft.com/ko-kr/dotnet/visual-basic/programming-guide/concepts/serialization/" target="_blank" rel="noreferrer noopener">https://learn.microsoft.com/ko-kr/dotnet/visual-basic/programming-guide/concepts/serialization/</a></figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading"><strong><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong></strong> JSON, XML, YAML</h2>



<p class="wp-block-paragraph">일반적으로 많이 사용하는 데이터 직렬화 포맷들</p>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)"/>



<h3 class="wp-block-heading">1&#x20e3; JSON (JavaScript Object Notation)</h3>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 특징</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 가벼운 텍스트 기반 포맷<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 사람이 읽고 쓰기 쉬우며, 기계가 빠르게 처리 가능<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 대부분의 프로그래밍 언어에서 지원 (C#, Python, JavaScript 등)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 키-값 쌍의 구조 (Dictionary, Object와 유사)</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 예제</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "name": "John",
  "age": 30,
  "skills": ["C#", "Unity", "Python"],
  "isDeveloper": true
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 장점</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 가볍고 속도가 빠름<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 대부분의 언어에서 지원<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> API 및 데이터 전송에 적합 (REST API, WebSockets 등)</p>



<h4 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 단점</strong></h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 주석 지원이 안됨<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> XML이나 YAML보다 덜 유연함</p>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h3 class="wp-block-heading">2&#x20e3; XML (eXtensible Markup Language)</h3>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 특징</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 데이터 구조를 계층적으로 표현 (HTML과 유사)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 사람이 읽을 수 있지만, JSON보다 길이가 김<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 다양한 도메인에서 사용 (문서 저장, 설정 파일, 웹 서비스 등)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> &lt;태그&gt;를 이용한 구조화된 데이터 표현</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 예제</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;Person>
    &lt;Name>John&lt;/Name>
    &lt;Age>30&lt;/Age>
    &lt;Skills>
        &lt;Skill>C#&lt;/Skill>
        &lt;Skill>Unity&lt;/Skill>
        &lt;Skill>Python&lt;/Skill>
    &lt;/Skills>
    &lt;IsDeveloper>true&lt;/IsDeveloper>
&lt;/Person>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 장점</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 데이터 구조가 명확함<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 주석 사용 가능 (&lt;!&#8211; 주석 &#8211;&gt;)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 다양한 데이터 타입을 표현하기 적합</p>



<h4 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 단점</strong></h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JSON보다 크기가 크고, 가독성이 떨어짐<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 파싱 속도가 느림</p>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h3 class="wp-block-heading">3&#x20e3; YAML (YAML Ain&#8217;t Markup Language)</h3>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 특징</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JSON과 유사하지만 더 간결한 문법을 가짐<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 들여쓰기를 이용한 계층 구조 (Python과 유사)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 설정 파일에서 많이 사용 (Docker, Kubernetes, Unity Config 등)</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 예제</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">name: John
age: 30
skills:
  - C#
  - Unity
  - Python
isDeveloper: true
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 장점</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 사람이 읽기 쉬운 직관적인 문법<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JSON보다 간결하여 가독성이 좋음<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 주석 (#) 사용 가능</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 단점</strong></h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 들여쓰기 실수로 인한 오류 발생 가능<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 파싱 속도가 JSON보다 느림</p>



<figure class="wp-block-image size-full"><img decoding="async" width="727" height="481" src="https://lycos7560.com/wp-content/uploads/2025/02/image-180.jpg" alt="" class="wp-image-39885" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-180.jpg 727w, https://lycos7560.com/wp-content/uploads/2025/02/image-180-300x198.jpg 300w" sizes="(max-width: 727px) 100vw, 727px" /><figcaption class="wp-element-caption">Unity의 YAML<br><a href="https://unity.com/kr/blog/engine-platform/understanding-unitys-serialization-language-yaml" target="_blank" rel="noreferrer noopener">https://unity.com/kr/blog/engine-platform/understanding-unitys-serialization-language-yaml</a></figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50e.png" alt="🔎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 비교 정리</strong></h3>



<p class="wp-block-paragraph">Unity에서는 JSON (JsonUtility, Newtonsoft.Json)이 가장 많이 사용되며, YAML은 Unity의 설정 파일 (.yml)에서 많이 활용됩니다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>형식</th><th>문법</th><th>가독성</th><th>속도</th><th>사용 사례</th></tr></thead><tbody><tr><td><strong>JSON</strong></td><td><code>{ "key": "value" }</code></td><td>좋음</td><td>빠름 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>API, 데이터 저장</td></tr><tr><td><strong>XML</strong></td><td><code>&lt;tag&gt;value&lt;/tag&gt;</code></td><td>중간</td><td>느림 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>문서 저장, 설정 파일</td></tr><tr><td><strong>YAML</strong></td><td><code>key: value</code> (들여쓰기)</td><td>매우 좋음 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>중간</td><td>설정 파일, DevOps</td></tr></tbody></table></figure>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1620" height="714" src="https://lycos7560.com/wp-content/uploads/2025/02/image-180.png" alt="" class="wp-image-39886" style="width:771px;height:auto" srcset="https://lycos7560.com/wp-content/uploads/2025/02/image-180.png 1620w, https://lycos7560.com/wp-content/uploads/2025/02/image-180-300x132.png 300w, https://lycos7560.com/wp-content/uploads/2025/02/image-180-768x338.png 768w, https://lycos7560.com/wp-content/uploads/2025/02/image-180-1536x677.png 1536w" sizes="(max-width: 1620px) 100vw, 1620px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" />Unity에서의 스크립트 직렬화 (Serialization in Unity)</strong></h2>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-default" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">1&#x20e3; <strong>Unity에서 직렬화가 중요한 이유</strong></h3>



<p class="wp-block-paragraph">Unity는 <strong>Inspector 창에서 데이터를 유지</strong>하거나 <strong>저장 시스템(예: PlayerPrefs, JSON, Binary 파일 등)에 데이터를 저장</strong>하기 위해 직렬화를 활용합니다.</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>씬(Scene) 저장 및 로드</strong>: Inspector에 입력한 값이 유지됨<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>ScriptableObject:</strong> 게임 데이터 관리<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Save/Load 시스템</strong>: JSON 또는 Binary 직렬화를 활용하여 파일 저장</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-default" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">2&#x20e3; <strong>Unity에서 직렬화 가능한 타입</strong></h3>



<p class="wp-block-paragraph"><a href="https://docs.unity3d.com/6000.0/Documentation/Manual/script-serialization-rules.html" target="_blank" rel="noreferrer noopener">https://docs.unity3d.com/6000.0/Documentation/Manual/script-serialization-rules.html</a></p>



<p class="wp-block-paragraph">Unity는 <strong>특정 데이터 타입만 직렬화할 수 있도록 제한</strong>하고 있습니다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b55.png" alt="⭕" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 직렬화 가능한 타입 (Serializable)</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>기본 데이터 타입</strong>: <code>int</code>, <code>float</code>, <code>bool</code>, <code>string</code> 등<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Unity 기본 타입</strong>: <strong>배열 &amp; 리스트</strong>: <code>int[]</code>, <code>List&lt;float&gt;</code> 등 (단, <code>public</code> 또는 <code>[SerializeField]</code> 필요)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>사용자 정의 클래스</strong> (<code>[System.Serializable]</code> 필요)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>ScriptableObject</strong></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong> 직렬화 불가능한 타입 (Non-Serializable)</h4>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>딕셔너리(Dictionary)</strong><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>다차원 배열 (<code>int[,]</code>)</strong><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong><strong>속성(Property) (getter/setter)</strong></strong><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong><strong>Static 변수 (<code>static</code>)</strong></strong><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong><strong>추상 클래스 &amp; 인터페이스</strong></strong><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong><strong>델리게이트(Delegate), 이벤트(Event)</strong></strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-default" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">3&#x20e3; <strong>Unity 직렬화 적용 방법</strong></h3>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> [SerializeField]</h4>



<p class="wp-block-paragraph"><code>private</code> 변수도 Inspector에서 보이도록 만들고, 직렬화 가능하게 합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private int health = 100;  // 직렬화됨 (Inspector에서 수정 가능)
    private int score = 0;  // 직렬화되지 않음 (Inspector에서 보이지 않음)
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> [SerializeField]를 사용하면 <code>private</code> 변수도 직렬화됨<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 하지만 <code>static</code>, <code>const</code>, <code>readonly</code> 변수는 직렬화되지 않음</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> [System.Serializable]</h4>



<p class="wp-block-paragraph">사용자 정의 클래스를 직렬화하려면 <code>[System.Serializable]</code>을 붙여야 합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using UnityEngine;

[System.Serializable]  
public class Weapon
{
    public string name;
    public int damage;
}

public class Player : MonoBehaviour
{
    public Weapon myWeapon;  // Weapon 클래스가 직렬화되므로 Inspector에서 수정 가능
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 클래스를 <code>System.Serializable</code>로 만들면 Unity Inspector에서 확인 가능<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 하지만 <code>Dictionary</code>, <code>Properties</code>, <code>Static 변수</code> 등은 여전히 직렬화되지 않음</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ScriptableObject</h4>



<p class="wp-block-paragraph">게임 데이터를 저장 및 관리하는 특수한 직렬화 객체</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using UnityEngine;

[CreateAssetMenu(fileName = "New Weapon", menuName = "Weapon")]
public class WeaponData : ScriptableObject
{
    public string weaponName;
    public int damage;
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 씬(Scene)과 독립적으로 데이터 관리 가능<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 메모리 효율적 관리 가능 (오브젝트 풀링, 설정 저장 등)<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 런타임에서 수정된 값은 저장되지 않음 (Play 모드가 끝나면 초기화됨)</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-default" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">4&#x20e3; <strong>Unity 직렬화와 JSON 활용</strong></h3>



<p class="wp-block-paragraph">Unity에서 JSON 직렬화를 활용하면 <strong>데이터 저장 &amp; 로드</strong>가 가능해집니다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JsonUtility (빠르지만 제한적)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string name;
    public int level;
}

public class SaveLoadSystem : MonoBehaviour
{
    void Start()
    {
        PlayerData player = new PlayerData { name = "John", level = 10 };
        string json = JsonUtility.ToJson(player);
        Debug.Log(json);  // {"name":"John","level":10}

        PlayerData loadedPlayer = JsonUtility.FromJson&lt;PlayerData>(json);
        Debug.Log(loadedPlayer.name);  // John
    }
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 빠름 &amp; Unity 기본 지원<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dictionary, List&lt;T&gt; 같은 복잡한 자료형 지원 X</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Newtonsoft.Json (더 강력한 JSON 직렬화)</h4>



<p class="wp-block-paragraph"><code>Newtonsoft.Json</code> 라이브러리를 사용하면 <strong>Dictionary, List, Interface 등도 직렬화 가능</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using UnityEngine;
using Newtonsoft.Json;
using System.Collections.Generic;

public class PlayerData
{
    public string name;
    public int level;
    public Dictionary&lt;string, int> inventory = new Dictionary&lt;string, int>();
}

public class SaveLoadSystem : MonoBehaviour
{
    void Start()
    {
        PlayerData player = new PlayerData { name = "John", level = 10 };
        player.inventory.Add("Sword", 1);
        player.inventory.Add("Potion", 5);

        string json = JsonConvert.SerializeObject(player, Formatting.Indented);
        Debug.Log(json);

        PlayerData loadedPlayer = JsonConvert.DeserializeObject&lt;PlayerData>(json);
        Debug.Log(loadedPlayer.inventory["Sword"]);  // 1
    }
}
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dictionary, List&lt;T&gt; 등 복잡한 자료형 지원<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> JsonUtility보다 속도가 느림<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 추가 라이브러리 설치 필요 (<code>Newtonsoft.Json.dll</code>)</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="[유니티 TIPS] 데이터 시리얼라이제이션 완전 정복하기" width="1778" height="1000" src="https://www.youtube.com/embed/kEu_AQ_Es-8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">공부 참고 영상</figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://lycos7560.com/unity/unity-serialization-%ec%a7%81%eb%a0%ac%ed%99%94/39882/">Unity Serialization (직렬화)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity-serialization-%ec%a7%81%eb%a0%ac%ed%99%94/39882/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>일반화 프로그래밍 &#8211; 이것이 C# 이다.</title>
		<link>https://lycos7560.com/c/generalized-programming-c/3233/</link>
					<comments>https://lycos7560.com/c/generalized-programming-c/3233/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sat, 10 Dec 2022 07:43:10 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[이것이C#이다]]></category>
		<category><![CDATA[일반화]]></category>
		<category><![CDATA[일반화 프로그래밍]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=3233</guid>

					<description><![CDATA[<p>이것이 C#이다의 일반화 프로그래밍 파트를 요약하여 정리한 글입니다.(This is a summary of the generalized programming part of C#ida.)</p>
<p>The post <a href="https://lycos7560.com/c/generalized-programming-c/3233/">일반화 프로그래밍 &#8211; 이것이 C# 이다.</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671"
     crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-5698326622209671"
     data-ad-slot="6908948342"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">일반화 프로그래밍 &#8211; 이것이 C# 이다.</h2>



<div style="height:0px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">C# 은 프로그래머가 작성한 하나의 코드가&nbsp;여러 가지 데이터 형식에 맞춰 동작할 수 있도록 하는&nbsp;<strong>일반화 프로그래밍</strong>을 지원한다.</p>



<p class="has-medium-font-size wp-block-paragraph">이는 코드의&nbsp;<strong>생산성</strong>을 좌우하는 아주 중요한 방법이다.</p>



<p class="has-medium-font-size wp-block-paragraph">일반화 Generalization&nbsp;&nbsp;</p>



<p class="has-medium-font-size wp-block-paragraph">: 특수한 개념으로 부터&nbsp;<strong>공통된 개념</strong>을 찾아 묶는 것.</p>



<p class="has-medium-font-size wp-block-paragraph">C# 은&nbsp; &nbsp; &#8220;<strong>&nbsp;데이터의 형식 [DataType]</strong>&nbsp;&#8221;&nbsp; 으로 일반화를 할 수 있다.</p>



<p class="has-medium-font-size wp-block-paragraph">예를 들어&nbsp;<strong>정수형 배열</strong>을 복사하는 기능이 필요하여 메소드를 작성하였다.</p>



<div style="height:67px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">static void CopyArray( int[] source, int[] target)
{

    for (int i = 0; i &lt; source.Length; i++)
    {
    
        target[i] = source[i];
        
    }
    
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">이번에는&nbsp;<strong>문자열 배열</strong>을 복사하는 기능이 필요하다면?</p>



<p class="has-medium-font-size wp-block-paragraph">CopyArray() 메소드에 오버로딩을 하면 된다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">static void CopyArray(string[] source, string[] target)
{

    for (int i = 0; i &lt; source.Length; i++)
    {
    
        target[i] = source[i];
        
    }
    
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">하지만 추후에 float 배열을&#8230; 또 AClass를 복사해야 한다면? 나중에 BClass? </p>



<p class="has-medium-font-size wp-block-paragraph"><strong>무수히 많은 오버로딩 메소드</strong>가 작성될 것이다.</p>



<p class="has-medium-font-size wp-block-paragraph">위의 예들은 매개변수에 입력되는 배열의 형식만 다를 뿐이므로 우리는 일반화 할 수 있다.</p>



<div style="height:46px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1119" height="541" src="https://lycos7560.com/wp-content/uploads/image-606.png" alt="" class="wp-image-3234" srcset="https://lycos7560.com/wp-content/uploads/image-606.png 1119w, https://lycos7560.com/wp-content/uploads/image-606-300x145.png 300w, https://lycos7560.com/wp-content/uploads/image-606-768x371.png 768w" sizes="(max-width: 1119px) 100vw, 1119px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">위의 예시는 아래와 같이 일반화 될 수 있다.</p>



<p class="has-medium-font-size wp-block-paragraph">구체적인 형식의 이름 대신에 <strong> T : 형식 매개변수(Type Paramerter)</strong> 가 들어간다.</p>



<div style="height:49px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">static void CopyArray&lt;T>(T[] source, T[] target)
{

    for (int i = 0; i &lt; source.Length; i++)
    {
    
        target[i] = source[i];
        
    }
    
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">주의할 사항은 컴파일할 떄 <strong>T </strong>가 구체적으로<strong> 어떤 형식</strong>인지 컴퓨터에게 정의해 줘야 한다는 것</p>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<p class="has-medium-font-size wp-block-paragraph">배열을 복사하는 메소드의 일반화 예시</p>



<div style="height:59px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using System;


namespace ConsoleApplication1
{

    public class Copyclass
    {
    
        public Copyclass()
        {


        }

    }


    class MainApp
    {
    
        static void CopyArray&lt;T>(T[] source, T[] target)
        {
            for (int i = 0; i &lt; source.Length; i++)
            {
                target[i] = source[i];
            }
            
        }


        static void Main(string[] args)
        {

            // int 형식
            
            int[] source = { 1, 2, 3, 4, 5 };
            
            int[] target = new int[source.Length];

            CopyArray&lt;int>(source, target);
            
            foreach (int element in target)
            {
                Console.WriteLine(element);
            }



            // string 형식
            
            string[] source2 = { "하나", "둘", "셋", "넷", "다섯" };
            
            string[] target2 = new string[source2.Length];
            
            CopyArray&lt;string>(source2, target2);
            
            foreach (string element in target2)
            {
                Console.WriteLine(element);
            }




            // Class 형식
            
            Copyclass copyclass1 = new Copyclass();
            
            Copyclass copyclass2 = new Copyclass();

            Copyclass[] source3 = { copyclass1, copyclass2 };
            
            Copyclass[] target3 = new Copyclass[source3.Length];

            CopyArray&lt;Copyclass>(source3, target3);
            
            foreach (Copyclass item in target3)
            {
                Console.WriteLine(item.ToString());
            }

        }
    }
}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-5698326622209671"
     data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="991" height="578" src="https://lycos7560.com/wp-content/uploads/image-607.png" alt="" class="wp-image-3235" srcset="https://lycos7560.com/wp-content/uploads/image-607.png 991w, https://lycos7560.com/wp-content/uploads/image-607-300x175.png 300w, https://lycos7560.com/wp-content/uploads/image-607-768x448.png 768w" sizes="(max-width: 991px) 100vw, 991px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">해당 형식의 배열을 만드는 클래스가 있다.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Array_Int
{
    private int[] array;

    public int GetElement(int index)
    {
        return array[index];
    }

}



class Array_Double
{
    private double[] array;

    public double GetElement(int index)
    {
        return array[index];
    }

}</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">위의 두 클래스는 데이터의 형식만을 제외하고 다른 부분이 같으니 <strong>일반화할 수 있다</strong>.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Array_Gereric&lt;T>
{

    private T[] array;


    public T GetElement(int index)
    {
    
        return array[index];
        
    }

}</pre>



<div style="height:73px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">위의 일반화된 클래스는 아래와 같이 사용 가능하다</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Array_Gereric&lt;int> intArr = new Array_Gereric&lt;int>();


Array_Gereric&lt;double> doubleArr = new Array_Gereric&lt;double>();</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size wp-block-paragraph">클래스 일반화 예시</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">using System;


namespace Generic
{


    class MyList&lt;T>
    {
    
        private T[] array;

        public MyList()
        {
        
            array = new T[3];
            
        }
        
        
        public T this[int index]
        {
        
            get
            {
            
                return array[index];
                
            }

            set
            {
            
                if (index >= array.Length)
                {
                
                    Array.Resize&lt;T>(ref array, index + 1);
                    Console.WriteLine($"Array Resized : {array.Length}");
                    
                }

                array[index] = value;
                
            }
            
        }


        public int Length
        {
        
            get { return array.Length; }
            
        }


    }


    class MainApp
    {

        static void Main(string[] args)
        {
        
        
            MyList&lt;string> str_list = new MyList&lt;string>();
            
            str_list[0] = "abc";
            
            str_list[1] = "def";
            
            str_list[2] = "ghi";
            
            str_list[3] = "jkl";
            
            str_list[4] = "mno";
            

            for (int i = 0; i &lt; str_list.Length; i++)
            {
            
                Console.WriteLine(str_list[i]);
                
            }


            Console.WriteLine();


            MyList&lt;int> int_list = new MyList&lt;int>();

            int_list[0] = 0;
            
            int_list[1] = 1;
            
            int_list[2] = 2;
            
            int_list[3] = 3;
            
            int_list[4] = 4;


            for (int i = 0; i &lt; int_list.Length; i++)
            {
            
                Console.WriteLine(int_list[i]);
                
            }

        }

    }
    
    
}</pre>



<div style="height:0px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5698326622209671"
     data-ad-slot="5078714126"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/c/generalized-programming-c/3233/">일반화 프로그래밍 &#8211; 이것이 C# 이다.</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/c/generalized-programming-c/3233/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
