[{"data":1,"prerenderedAt":941},["ShallowReactive",2],{"blog-post-\u002Fko\u002Fhow-to-mount-storage":3,"blog-related-source":680},{"id":4,"title":5,"body":6,"description":666,"extension":667,"meta":668,"navigation":674,"path":675,"seo":676,"sitemap":677,"stem":678,"__hash__":679},"ko\u002Fko\u002Fhow-to-mount-storage.md","라즈베리파이4에 저장장치 마운트 시키기",{"type":7,"value":8,"toc":658},"minimark",[9,13,16,21,29,51,54,159,169,178,180,184,189,205,208,293,300,310,312,316,323,335,337,341,348,363,370,397,400,406,416,419,504,506,510,513,565,567,575,589,591,595,598,616,618,624,640,642,649,654],[10,11,12],"p",{},"라즈베리파이에 SSD를 연결해두고 오랫동안 방치했는데, 문득 생각나서 마운트를 시도하게 되었다. 이 글에서는 SSD를 연결한 후 파티션을 생성하고 포맷하여 라즈베리파이에서 마운트하는 과정을 정리하였다.",[14,15],"hr",{},[17,18,20],"h2",{"id":19},"연결된-저장장치-확인","연결된 저장장치 확인",[10,22,23,24,28],{},"먼저 ",[25,26,27],"code",{},"lsblk -f"," 명령어를 통해 현재 연결된 블록 장치를 확인한다.",[30,31,36],"pre",{"className":32,"code":33,"language":34,"meta":35,"style":35},"language-bash shiki shiki-themes github-light github-dark","lsblk -f\n","bash","",[25,37,38],{"__ignoreMap":35},[39,40,43,47],"span",{"class":41,"line":42},"line",1,[39,44,46],{"class":45},"sScJk","lsblk",[39,48,50],{"class":49},"sj4cs"," -f\n",[10,52,53],{},"출력 예시는 다음과 같다:",[30,55,57],{"className":32,"code":56,"language":34,"meta":35,"style":35},"NAME        FSTYPE FSVER LABEL   UUID                                   FSAVAIL FSUSE% MOUNTPOINTS\nsda                                                                                   \nmmcblk0                                                                                \n├─mmcblk0p1 vfat   FAT32 bootfs  5DC7-F115                              434.7M     15% \u002Fboot\u002Ffirmware\n└─mmcblk0p2 ext4   1.0   rootfs  a36be96c-66be-4487-a7a6-0481bca99d89   101G       8% \u002F\n",[25,58,59,86,96,105,132],{"__ignoreMap":35},[39,60,61,64,68,71,74,77,80,83],{"class":41,"line":42},[39,62,63],{"class":45},"NAME",[39,65,67],{"class":66},"sZZnC","        FSTYPE",[39,69,70],{"class":66}," FSVER",[39,72,73],{"class":66}," LABEL",[39,75,76],{"class":66},"   UUID",[39,78,79],{"class":66},"                                   FSAVAIL",[39,81,82],{"class":66}," FSUSE%",[39,84,85],{"class":66}," MOUNTPOINTS\n",[39,87,89,92],{"class":41,"line":88},2,[39,90,91],{"class":45},"sda",[39,93,95],{"class":94},"sVt8B","                                                                                   \n",[39,97,99,102],{"class":41,"line":98},3,[39,100,101],{"class":45},"mmcblk0",[39,103,104],{"class":94},"                                                                                \n",[39,106,108,111,114,117,120,123,126,129],{"class":41,"line":107},4,[39,109,110],{"class":45},"├─mmcblk0p1",[39,112,113],{"class":66}," vfat",[39,115,116],{"class":66},"   FAT32",[39,118,119],{"class":66}," bootfs",[39,121,122],{"class":66},"  5DC7-F115",[39,124,125],{"class":66},"                              434.7M",[39,127,128],{"class":66},"     15%",[39,130,131],{"class":66}," \u002Fboot\u002Ffirmware\n",[39,133,135,138,141,144,147,150,153,156],{"class":41,"line":134},5,[39,136,137],{"class":45},"└─mmcblk0p2",[39,139,140],{"class":66}," ext4",[39,142,143],{"class":49},"   1.0",[39,145,146],{"class":66},"   rootfs",[39,148,149],{"class":66},"  a36be96c-66be-4487-a7a6-0481bca99d89",[39,151,152],{"class":66},"   101G",[39,154,155],{"class":66},"       8%",[39,157,158],{"class":66}," \u002F\n",[10,160,161,164,165,168],{},[25,162,163],{},"\u002Fdev\u002Fsda","는 연결된 SSD를 나타내지만, 아직 파티션이 없고 파일 시스템도 지정되지 않았기 때문에 ",[25,166,167],{},"FSTYPE"," 항목이 비어 있다.",[10,170,171,173,174,177],{},[25,172,46],{}," 명령어는 시스템에 연결된 디스크와 파티션 구조를 확인할 수 있게 해준다. ",[25,175,176],{},"-f"," 옵션을 붙이면 파일 시스템 타입과 UUID 등의 정보도 함께 출력된다.\n::",[14,179],{},[17,181,183],{"id":182},"파티션-생성","파티션 생성",[10,185,186,188],{},[25,187,163],{}," 장치에 파티션을 생성하려면 다음 명령어를 입력한다.",[30,190,192],{"className":32,"code":191,"language":34,"meta":35,"style":35},"sudo fdisk \u002Fdev\u002Fsda\n",[25,193,194],{"__ignoreMap":35},[39,195,196,199,202],{"class":41,"line":42},[39,197,198],{"class":45},"sudo",[39,200,201],{"class":66}," fdisk",[39,203,204],{"class":66}," \u002Fdev\u002Fsda\n",[10,206,207],{},"이 명령어를 입력하면 대화형(interactive) 모드로 진입하게 된다. 아래 순서에 따라 파티션을 생성한다:",[209,210,211,224,236,247,259,270,281],"ol",{},[212,213,214,215],"li",{},"현재 파티션 상태 확인 (선택 사항)",[30,216,218],{"className":32,"code":217,"language":34,"meta":35,"style":35},"p\n",[25,219,220],{"__ignoreMap":35},[39,221,222],{"class":41,"line":42},[39,223,217],{"class":45},[212,225,226,227],{},"새 파티션 생성",[30,228,230],{"className":32,"code":229,"language":34,"meta":35,"style":35},"n\n",[25,231,232],{"__ignoreMap":35},[39,233,234],{"class":41,"line":42},[39,235,229],{"class":45},[212,237,238,239],{},"파티션 타입 선택 (Primary)",[30,240,241],{"className":32,"code":217,"language":34,"meta":35,"style":35},[25,242,243],{"__ignoreMap":35},[39,244,245],{"class":41,"line":42},[39,246,217],{"class":45},[212,248,249,250],{},"파티션 번호 입력 (기본값: 1)",[30,251,253],{"className":32,"code":252,"language":34,"meta":35,"style":35},"[엔터]\n",[25,254,255],{"__ignoreMap":35},[39,256,257],{"class":41,"line":42},[39,258,252],{"class":94},[212,260,261,262],{},"시작 섹터 설정 (기본값 사용)",[30,263,264],{"className":32,"code":252,"language":34,"meta":35,"style":35},[25,265,266],{"__ignoreMap":35},[39,267,268],{"class":41,"line":42},[39,269,252],{"class":94},[212,271,272,273],{},"마지막 섹터 설정 (기본값 사용 - 디스크 전체 사용)",[30,274,275],{"className":32,"code":252,"language":34,"meta":35,"style":35},[25,276,277],{"__ignoreMap":35},[39,278,279],{"class":41,"line":42},[39,280,252],{"class":94},[212,282,283,284],{},"변경 사항 저장 및 종료",[30,285,287],{"className":32,"code":286,"language":34,"meta":35,"style":35},"w\n",[25,288,289],{"__ignoreMap":35},[39,290,291],{"class":41,"line":42},[39,292,286],{"class":45},[10,294,295,296,299],{},"위 과정이 완료되면 새로운 파티션 ",[25,297,298],{},"\u002Fdev\u002Fsda1","이 생성된다.",[10,301,302,305,306,309],{},[25,303,304],{},"fdisk","에서 ",[25,307,308],{},"w"," 명령을 입력해야 실제로 디스크에 파티션 변경 사항이 반영된다.\n::",[14,311],{},[17,313,315],{"id":314},"파티션-정보-반영","파티션 정보 반영",[10,317,318,319,322],{},"파티션을 만든 후에는 시스템 커널에 변경 사항을 알려야 한다. 이를 위해 ",[25,320,321],{},"partprobe"," 명령을 실행하거나, 시스템을 재부팅할 수 있다.",[30,324,326],{"className":32,"code":325,"language":34,"meta":35,"style":35},"sudo partprobe\n",[25,327,328],{"__ignoreMap":35},[39,329,330,332],{"class":41,"line":42},[39,331,198],{"class":45},[39,333,334],{"class":66}," partprobe\n",[14,336],{},[17,338,340],{"id":339},"파일-시스템-생성-포맷","파일 시스템 생성 (포맷)",[10,342,343,344,347],{},"파티션에 파일 시스템을 생성해야 실제로 데이터를 저장할 수 있다. 일반적으로 리눅스 시스템에서는 ",[25,345,346],{},"ext4"," 파일 시스템을 사용한다.",[30,349,351],{"className":32,"code":350,"language":34,"meta":35,"style":35},"sudo mkfs.ext4 \u002Fdev\u002Fsda1\n",[25,352,353],{"__ignoreMap":35},[39,354,355,357,360],{"class":41,"line":42},[39,356,198],{"class":45},[39,358,359],{"class":66}," mkfs.ext4",[39,361,362],{"class":66}," \u002Fdev\u002Fsda1\n",[10,364,365,366,369],{},"Windows에서 사용하려면 ",[25,367,368],{},"ntfs","로 포맷할 수 있다. 이 경우, 다음 명령어를 먼저 실행해야 한다:",[30,371,373],{"className":32,"code":372,"language":34,"meta":35,"style":35},"sudo apt install ntfs-3g\nsudo mkfs.ntfs \u002Fdev\u002Fsda1\n",[25,374,375,388],{"__ignoreMap":35},[39,376,377,379,382,385],{"class":41,"line":42},[39,378,198],{"class":45},[39,380,381],{"class":66}," apt",[39,383,384],{"class":66}," install",[39,386,387],{"class":66}," ntfs-3g\n",[39,389,390,392,395],{"class":41,"line":88},[39,391,198],{"class":45},[39,393,394],{"class":66}," mkfs.ntfs",[39,396,362],{"class":66},[10,398,399],{},"::",[10,401,402,403,405],{},"포맷이 완료되면 다시 ",[25,404,27],{}," 명령어를 실행하여 파일 시스템이 적용되었는지 확인할 수 있다.",[30,407,408],{"className":32,"code":33,"language":34,"meta":35,"style":35},[25,409,410],{"__ignoreMap":35},[39,411,412,414],{"class":41,"line":42},[39,413,46],{"class":45},[39,415,50],{"class":49},[10,417,418],{},"출력 예시:",[30,420,422],{"className":32,"code":421,"language":34,"meta":35,"style":35},"NAME        FSTYPE LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS\nsda                                                                                   \n└─sda1      ext4         e3c7b8f2-1a3d-4a66-9e2a-9a41231f531b                      \nmmcblk0                                                                                \n├─mmcblk0p1 vfat  bootfs 5DC7-F115                              434.7M     15% \u002Fboot\u002Ffirmware\n└─mmcblk0p2 ext4  rootfs a36be96c-66be-4487-a7a6-0481bca99d89   101G       8% \u002F\n",[25,423,424,441,447,461,467,485],{"__ignoreMap":35},[39,425,426,428,430,432,435,437,439],{"class":41,"line":42},[39,427,63],{"class":45},[39,429,67],{"class":66},[39,431,73],{"class":66},[39,433,434],{"class":66}," UUID",[39,436,79],{"class":66},[39,438,82],{"class":66},[39,440,85],{"class":66},[39,442,443,445],{"class":41,"line":88},[39,444,91],{"class":45},[39,446,95],{"class":94},[39,448,449,452,455,458],{"class":41,"line":98},[39,450,451],{"class":45},"└─sda1",[39,453,454],{"class":66},"      ext4",[39,456,457],{"class":66},"         e3c7b8f2-1a3d-4a66-9e2a-9a41231f531b",[39,459,460],{"class":94},"                      \n",[39,462,463,465],{"class":41,"line":107},[39,464,101],{"class":45},[39,466,104],{"class":94},[39,468,469,471,473,476,479,481,483],{"class":41,"line":134},[39,470,110],{"class":45},[39,472,113],{"class":66},[39,474,475],{"class":66},"  bootfs",[39,477,478],{"class":66}," 5DC7-F115",[39,480,125],{"class":66},[39,482,128],{"class":66},[39,484,131],{"class":66},[39,486,488,490,492,495,498,500,502],{"class":41,"line":487},6,[39,489,137],{"class":45},[39,491,140],{"class":66},[39,493,494],{"class":66},"  rootfs",[39,496,497],{"class":66}," a36be96c-66be-4487-a7a6-0481bca99d89",[39,499,152],{"class":66},[39,501,155],{"class":66},[39,503,158],{"class":66},[14,505],{},[17,507,509],{"id":508},"마운트-하기","마운트 하기",[10,511,512],{},"이제 생성된 파티션을 특정 디렉터리에 마운트하여 사용할 수 있다.",[209,514,515,533,553],{},[212,516,517,518],{},"마운트할 디렉터리를 생성한다.",[30,519,521],{"className":32,"code":520,"language":34,"meta":35,"style":35},"sudo mkdir \u002Fmnt\u002Fmystorage\n",[25,522,523],{"__ignoreMap":35},[39,524,525,527,530],{"class":41,"line":42},[39,526,198],{"class":45},[39,528,529],{"class":66}," mkdir",[39,531,532],{"class":66}," \u002Fmnt\u002Fmystorage\n",[212,534,535,536],{},"디바이스를 해당 디렉터리에 마운트한다.",[30,537,539],{"className":32,"code":538,"language":34,"meta":35,"style":35},"sudo mount \u002Fdev\u002Fsda1 \u002Fmnt\u002Fmystorage\n",[25,540,541],{"__ignoreMap":35},[39,542,543,545,548,551],{"class":41,"line":42},[39,544,198],{"class":45},[39,546,547],{"class":66}," mount",[39,549,550],{"class":66}," \u002Fdev\u002Fsda1",[39,552,532],{"class":66},[212,554,555,556],{},"마운트 확인",[30,557,559],{"className":32,"code":558,"language":34,"meta":35,"style":35},"lsblk\n",[25,560,561],{"__ignoreMap":35},[39,562,563],{"class":41,"line":42},[39,564,558],{"class":45},[10,566,418],{},[30,568,573],{"className":569,"code":571,"language":572},[570],"language-text","NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS\nsda           8:0    0 111.8G  0 disk \n└─sda1        8:1    0 111.8G  0 part \u002Fmnt\u002Fmystorage\nmmcblk0     179:0    0 119.1G  0 disk \n├─mmcblk0p1 179:1    0   512M  0 part \u002Fboot\u002Ffirmware\n└─mmcblk0p2 179:2    0 118.6G  0 part \u002F\n","text",[25,574,571],{"__ignoreMap":35},[10,576,577,578,581,582,581,585,588],{},"마운트 지점 디렉터리 이름은 자유롭게 지정할 수 있다. ",[25,579,580],{},"\u002Fmnt\u002Fssd",", ",[25,583,584],{},"\u002Fdata",[25,586,587],{},"\u002Fmedia\u002Fstorage"," 등 원하는 대로 설정하면 된다.\n::",[14,590],{},[17,592,594],{"id":593},"추가-팁-ssd인지-확인하는-방법","추가 팁: SSD인지 확인하는 방법",[10,596,597],{},"SSD인지 HDD인지 확인하고 싶다면 다음 명령어를 사용한다:",[30,599,601],{"className":32,"code":600,"language":34,"meta":35,"style":35},"lsblk -d -o NAME,ROTA\n",[25,602,603],{"__ignoreMap":35},[39,604,605,607,610,613],{"class":41,"line":42},[39,606,46],{"class":45},[39,608,609],{"class":49}," -d",[39,611,612],{"class":49}," -o",[39,614,615],{"class":66}," NAME,ROTA\n",[10,617,418],{},[30,619,622],{"className":620,"code":621,"language":572},[570],"NAME   ROTA\nsda        0\nmmcblk0    0\n",[25,623,621],{"__ignoreMap":35},[625,626,627,634],"ul",{},[212,628,629,630,633],{},"ROTA 값이 ",[25,631,632],{},"0","이면 SSD 또는 SD카드 (비회전 디스크)",[212,635,629,636,639],{},[25,637,638],{},"1","이면 HDD (회전 디스크)",[14,641],{},[10,643,644,645,648],{},"이 과정을 통해 라즈베리파이에서 SSD를 인식하고 사용할 수 있게 되었다. 이후 ",[25,646,647],{},"\u002Fetc\u002Ffstab"," 파일을 수정하면 시스템 부팅 시 자동으로 마운트되도록 설정할 수 있다.",[30,650,652],{"className":651,"code":35,"language":572},[570],[25,653,35],{"__ignoreMap":35},[655,656,657],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":35,"searchDepth":88,"depth":88,"links":659},[660,661,662,663,664,665],{"id":19,"depth":88,"text":20},{"id":182,"depth":88,"text":183},{"id":314,"depth":88,"text":315},{"id":339,"depth":88,"text":340},{"id":508,"depth":88,"text":509},{"id":593,"depth":88,"text":594},"라즈베리파이에 저장장치를 연결하고 파티션 생성부터 포맷, 마운트까지의 전체 과정을 정리한 기록입니다.","md",{"date":669,"field":670,"tags":671},"2025.07.11","infra",[672,673],"raspberry-pi","linux",true,"\u002Fko\u002Fhow-to-mount-storage",{"title":5,"description":666},{"loc":675},"ko\u002Fhow-to-mount-storage","ghzRKLj2cKqEZbGLeqXxgBpXvgqjyxKlT-fx7ZOzAwA",[681,692,702,710,718,725,736,744,752,763,771,774,780,787,794,801,807,816,826,833,839,846,853,861,868,875,884,891,898,905,913,920,928,934],{"path":682,"title":683,"description":684,"meta":685},"\u002Fko\u002Fadsense-ads-txt-and-seo-indexing-bug","애드센스 ads.txt 경고를 받고 파헤치다가 찾은 진짜 색인 버그","구글 애드센스가 ads.txt 문제를 알려왔는데, 확인해보니 파일은 멀쩡했다. 대신 서치콘솔 색인 수가 적었던 진짜 원인을 Nuxt Content 슬러그 불일치 버그에서 찾은 과정을 정리한다.",{"date":686,"field":687,"tags":688},"2026.09.17","blog",[689,690,691],"seo","adsense","nuxt-content",{"path":693,"title":694,"description":695,"meta":696},"\u002Fko\u002Fcss-layouts","CSS Flexbox 완전 정복 가이드","Flexbox를 활용한 반응형 레이아웃 구현 방법과 실전 예제. 수직 정렬, 네비게이션 바, 카드 레이아웃까지 완벽 정리!",{"date":697,"image":698,"field":699,"tags":700},"2025.01.25","css.jpg","frontend",[701],"css",{"path":703,"title":704,"description":705,"meta":706},"\u002Fko\u002Fcss-login-form","로그인","로그인 UI를 그려보자",{"date":707,"field":699,"tags":708},"2025.03.29",[709,701],"html",{"path":711,"title":712,"description":713,"meta":714},"\u002Fko\u002Fcsv-parser-cleaning","복잡한 CSV 데이터를 안전하게 파싱하는 방법","JavaScript에서 큰따옴표, 줄바꿈, 쉼표 등 복잡한 CSV 데이터를 안전하게 객체로 변환하는 전체 과정 설명",{"date":715,"field":699,"tags":716},"2025.06.19",[717],"javascript",{"path":719,"title":720,"description":721,"meta":722},"\u002Fko\u002Fdebounce-guide","debounce와 throttle이란??","반복되는 함수 호출을 제어하는 기술인 디바운스(debounce)와 쓰로틀(throttle)을 알아보자.",{"date":723,"field":699,"tags":724},"2025.03.26",[717],{"path":726,"title":727,"description":728,"meta":729},"\u002Fko\u002Fdeclarative-vs-procedural-programming","선언적 프로그래밍 vs 절차형 프로그래밍","선언적 프로그래밍과 절차형 프로그래밍은 서로 대비되는 대표적인 패러다임이다. 두 패러다임의 차이를 알아보고, 각 패러다임에 해당하는 언어와 Vue\u002FReact의 특징을 살펴보자.",{"date":730,"field":731,"tags":732},"2025.05.24","concepts",[733,734,735],"paradigm","vue","react",{"path":737,"title":738,"description":739,"meta":740},"\u002Fko\u002Fdesign-guide","Design-Guide","A comprehensive guide on design principles and best practices for developers.",{"date":741,"field":699,"tags":742},"2025.01.19",[743],"design-system",{"path":745,"title":746,"description":747,"meta":748},"\u002Fko\u002Fdikw-pyramid","DIKW 피라미드 정리: 데이터가 지혜가 되기까지","Data, Information, Knowledge, Wisdom 4단계로 구성된 DIKW 피라미드 개념을 로그\u002F분석 데이터 같은 실제 개발 사례에 대입해서 정리한다.",{"date":749,"field":731,"tags":750},"2026.09.18",[751],"data",{"path":753,"title":754,"description":755,"meta":756},"\u002Fko\u002Fdisplaying-commits-with-github-actions","깃허브 액션으로 커밋 로그를 블로그에 띄우기: Nuxt와 Vercel 활용법","깃허브 액션을 통해 커밋 데이터를 자동으로 수집하고, Nuxt와 Vercel로 UI에 노출하는 방법을 소개합니다.",{"date":757,"image":758,"field":670,"tags":759},"2025.02.28","github-commits.jpg",[760,761,762],"github-actions","vercel","nuxt",{"path":764,"title":765,"description":766,"meta":767},"\u002Fko\u002Fdocker-auto-build-run","로컬에서 커밋 시 도커 빌드 후 컨테이너 시작하기","로컬에서 커밋 시 도커 빌드 후 컨테이너 시작하기.",{"date":768,"field":670,"tags":769},"2025.03.10",[770],"docker",{"path":675,"title":5,"description":666,"meta":772},{"date":669,"field":670,"tags":773},[672,673],{"path":775,"title":776,"description":776,"meta":777},"\u002Fko\u002Fhtml","HTML이란 무엇인가",{"date":697,"image":778,"field":699,"tags":779},"html.jpg",[709],{"path":781,"title":782,"description":783,"meta":784},"\u002Fko\u002Fhtml2","미치광이 카드 컴포넌트","미치광이 카드 컴포넌트는 어떤 느낌일까",{"date":785,"field":699,"tags":786},"2025.03.28",[709,701],{"path":788,"title":789,"description":789,"meta":790},"\u002Fko\u002Fhttps-guide","Let's Encrypt를 이용해서 HTTPS 적용하기",{"date":791,"field":670,"tags":792},"2025.03.11",[793],"https",{"path":795,"title":796,"description":797,"meta":798},"\u002Fko\u002Fjs-data-01","JavaScript 데이터01","JavaScript 데이터 다루는 문제를 풀어보자",{"date":799,"field":699,"tags":800},"2025.03.08",[717],{"path":802,"title":803,"description":804,"meta":805},"\u002Fko\u002Fjs-data-02","JavaScript 데이터02","복잡한 데이터 구조를 다루는 실전 문제를 해결해보자.",{"date":799,"field":699,"tags":806},[717],{"path":808,"title":809,"description":810,"meta":811},"\u002Fko\u002Fmarkdown-guid","마크다운 문법","마크다운 문법을 알아보자",{"date":812,"image":813,"field":687,"tags":814},"2025.03.02","markdown.webp",[815],"markdown",{"path":817,"title":818,"description":819,"meta":820},"\u002Fko\u002Fminio-guide","MinIO 완벽 가이드: 설치부터 Node.js 연동까지","MinIO는 오픈소스 기반의 고성능 객체 스토리지 서버입니다. AWS S3와 호환되는 API를 제공하여 클라우드 네이티브 애플리케이션을 위한 완벽한 스토리지 솔루션으로 자리잡고 있습니다.",{"date":821,"field":822,"tags":823},"2025.11.23","backend",[824,825],"minio","nodejs",{"path":827,"title":828,"description":829,"meta":830},"\u002Fko\u002Fnode-simple-server","Node.js 간단한 서버 만들기","Node.js로 간단한 HTTP 서버를 만드는 방법",{"date":831,"field":822,"tags":832},"2025.01.30",[825],{"path":834,"title":835,"description":836,"meta":837},"\u002Fko\u002Fnuxt-colormode","Nuxt3 다크모드 적용하기","Nuxt3에 다크모드 적용하여 관리하기",{"date":707,"field":699,"tags":838},[762],{"path":840,"title":841,"description":842,"meta":843},"\u002Fko\u002Fnuxt-content-vercel-empty-query-sqlite","배포만 하면 블로그 글이 하나도 안 보이던 버그: Nuxt Content와 Vercel의 \u002Ftmp 문제","로컬에서는 멀쩡한데 Vercel에 올리면 queryCollection()이 빈 배열만 반환하던 버그를 추적한 과정. 원인은 @nuxt\u002Fcontent가 Vercel의 읽기 전용 파일시스템을 지원하기 전 버전에 고정돼 있었던 것.",{"date":844,"field":687,"tags":845},"2026.10.07",[691,761],{"path":847,"title":848,"description":849,"meta":850},"\u002Fko\u002Fnuxt-runtimeconfig-appconfig","Nuxt 설정 runtimeConfig vs app.config 완전 정복","Nuxt3에서 전역 설정을 어떻게 관리하고, 어떤 기준으로 나누어야 할까? 다크모드 예시부터 실무 기준 설정 전략까지 총정리",{"date":851,"field":699,"tags":852},"2025.06.16",[762],{"path":854,"title":855,"description":856,"meta":857},"\u002Fko\u002Fnuxt-useasyncdata-cache-error","useAsyncData 캐싱 문제와 Key 동적 설정으로 해결하기","이전 포스트의 데이터가 계속 출력되는 캐싱 관련 문제를 해결하는 방법",{"date":858,"field":699,"tags":859,"image":860},"2025.01.24",[762],"cache.jpg",{"path":862,"title":863,"description":864,"meta":865},"\u002Fko\u002Fnuxt-vercel-sql-error","Nuxt 3에서 Vercel 배포 시 발생한 md 파일 로딩 문제 해결기","Nuxt 3 웹 어플리케이션에서 Vercel 배포 환경에서 발생한 md 파일 로딩 문제를 분석하고 해결한 방법에 대해 공유합니다.",{"date":858,"image":866,"field":699,"tags":867},"ssg.jpg",[762,691,761],{"path":869,"title":870,"description":871,"meta":872},"\u002Fko\u002Fnuxt3-pinia-guide","nuxt3 Pinia 적용하기","Nuxt3 프로젝트에서 Pinia를 적용해보자 @pinia\u002Fnuxt",{"date":707,"field":699,"tags":873},[762,874],"pinia",{"path":876,"title":877,"description":878,"meta":879},"\u002Fko\u002Fnuxt3-unit-test","Nuxt 프로젝트에 유닛 테스트 코드 추가하기","Nuxt 3 프로젝트에서 Vitest를 활용한 테스트 환경 설정과 유틸리티 함수 테스트 방법",{"date":880,"image":881,"field":699,"tags":882},"2025.03.07","unit-test.jpg",[762,883],"vitest",{"path":885,"title":886,"description":887,"meta":888},"\u002Fko\u002Fpm2-guide","프로세스 매니저 PM2","배포환경에서 유용하게 사용할 수 있는 프로세스 매니저를 알아보자.",{"date":768,"field":670,"tags":889},[890,825],"pm2",{"path":892,"title":893,"description":894,"meta":895},"\u002Fko\u002Freact-createportal","React createPortal 완벽 가이드","React의 `createPortal`을 활용한 UI 구현법, 활용 사례, 장단점 및 코드 예제를 소개합니다.",{"date":896,"field":699,"tags":897},"2025.01.27",[735],{"path":899,"title":900,"description":901,"meta":902},"\u002Fko\u002Frouting","Routing","Nuxt file-system routing creates a route for every file in the pages\u002F directory.",{"date":903,"field":699,"tags":904},"2025.01.22",[762],{"path":906,"title":907,"description":908,"meta":909},"\u002Fko\u002Ftanstack-query-guide","TanStack Query란 무엇인가?","TanStack Query가 웹 애플리케이션에서 데이터 가져오기, 캐싱, 상태 관리를 어떻게 개선하는지 알아본다.",{"date":910,"field":699,"tags":911},"2025.04.15",[735,912],"tanstack-query",{"path":914,"title":915,"description":916,"meta":917},"\u002Fko\u002Fuse-context","리엑트 상태관리 useContext()","React에서 `useContext`를 사용하면 컴포넌트 트리에 깊이 중첩된 컴포넌트에서도 prop drilling 없이 상태를 공유할 수 있습니다. 이 글에서는 `useContext`의 개념, 사용 방법, 장단점, 그리고 실전 예제를 함께 알아보겠습니다.",{"date":918,"field":699,"tags":919},"2025.02.03",[735],{"path":921,"title":922,"description":923,"meta":924},"\u002Fko\u002Fvite-plugin-style-inject","리엑티 컴포넌트를 패키지 빌드 시 CSS 같이 적용시키기","dist에 css에 파일이 생성되었으나, 적용 안 되는 이유를 알아보고 에러를 처리하자",{"date":925,"field":699,"tags":926},"2025.04.06",[927,735],"vite",{"path":929,"title":930,"description":931,"meta":932},"\u002Fko\u002Fvue-component-guide","Vue의 \u003Ccomponent :is \u002F> 완벽 정리: 동적 렌더링의 모든 것","Vue에서 \u003Ccomponent :is \u002F>를 활용한 동적 컴포넌트 렌더링 방법과 VNode, 컴포넌트 객체의 차이를 실전 예제로 이해하기",{"date":697,"field":699,"tags":933},[734],{"path":935,"title":936,"description":937,"meta":938},"\u002Fko\u002Fvue-query-ref-value-trap-nuxt3","Vue Query에서 데이터가 안 보이는 이유? Nuxt 3와 Ref 구조의 함정","Nuxt 3 + vue-query를 사용할 때 API 데이터가 `v-if` 조건문에서 제대로 표시되지 않는 현상을 해결한 경험을 바탕으로, Ref 구조와 template 디렉티브에서의 차이를 자세히 설명합니다.",{"date":939,"field":699,"tags":940},"2025.06.08",[762,734,912],1791391656117]