{
    "componentChunkName": "component---src-templates-blog-js",
    "path": "/blog/page/3",
    "result": {"data":{"allMdx":{"nodes":[{"frontmatter":{"title":"[C++] 참조자 문법 정리","description":"C++에서 참조자는 특정 변수가 가리키는 메모리 공간을 가리키는 또 하나의 식별자를 생성하는 문법입니다. 포인터와의 차이점, const 참조자, 선언 가능 범위, 매개변수 및 반환형 위치의 참조자 등에 대해 정리해보고자 합니다.","date":"May 6, 2024","category":"development","tags":["cpp","reference-syntax","syntax"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/862b00f9989397b428b1f96cb697dc8a/12a3e/cpp-reference-syntax-wide.png","srcSet":"/static/862b00f9989397b428b1f96cb697dc8a/9d9e0/cpp-reference-syntax-wide.png 225w,\n/static/862b00f9989397b428b1f96cb697dc8a/cc174/cpp-reference-syntax-wide.png 450w,\n/static/862b00f9989397b428b1f96cb697dc8a/12a3e/cpp-reference-syntax-wide.png 900w,\n/static/862b00f9989397b428b1f96cb697dc8a/4dd11/cpp-reference-syntax-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/862b00f9989397b428b1f96cb697dc8a/3f003/cpp-reference-syntax-wide.webp 225w,\n/static/862b00f9989397b428b1f96cb697dc8a/ba134/cpp-reference-syntax-wide.webp 450w,\n/static/862b00f9989397b428b1f96cb697dc8a/e7f7d/cpp-reference-syntax-wide.webp 900w,\n/static/862b00f9989397b428b1f96cb697dc8a/fc420/cpp-reference-syntax-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"cpp reference syntax image"},"id":"c89d17a4-48db-556d-8da1-b6662b3a129a","slug":"development/cpp-reference-syntax/"},{"frontmatter":{"title":"[OMSCS] 조지아텍 컴퓨터공학 석사 과정 준비 및 합격 후기","description":"직장 생활과 병행하면서 대학원 석사 과정을 이수하기 위해 조지아텍에 지원했고 합격했습니다. 합격 당시 스펙을 궁금해하는 사람들이 있어 준비 과정을 간략히 공유합니다.","date":"April 12, 2024","category":"essay","tags":["georgia-tech","omscs","admission","university","computer-science","graduate-program"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#2878a8","images":{"fallback":{"src":"/static/ea7c08946cad30c04e27958ab7ae2dff/12a3e/georgia-tech-admission-review-wide.png","srcSet":"/static/ea7c08946cad30c04e27958ab7ae2dff/9d9e0/georgia-tech-admission-review-wide.png 225w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/cc174/georgia-tech-admission-review-wide.png 450w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/12a3e/georgia-tech-admission-review-wide.png 900w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/4dd11/georgia-tech-admission-review-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/ea7c08946cad30c04e27958ab7ae2dff/3f003/georgia-tech-admission-review-wide.webp 225w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/ba134/georgia-tech-admission-review-wide.webp 450w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/e7f7d/georgia-tech-admission-review-wide.webp 900w,\n/static/ea7c08946cad30c04e27958ab7ae2dff/fc420/georgia-tech-admission-review-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"georgia tech admission review cover image"},"id":"9d3042f3-4ac1-5903-af5a-70d60379bc87","slug":"essay/georgia-tech-admission-review/"},{"frontmatter":{"title":"[Swagger] 인터페이스로 어노테이션 분리하기","description":"스프링에서 스웨거를 활용하다보면 컨트롤러에 각종 스웨거 어노테이션을 추가할 일이 생깁니다. 자바 인터페이스를 활용하여 문서화 관련 어노테이션을 컨트롤러로부터 분리해봅시다.","date":"March 27, 2024","category":"development","tags":["spring","swagger","annotation","java","interface","dev-tools","api"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/bf7f55d67a0f66bd2b00ace418fee239/12a3e/swagger-annotations-with-interface-wide.png","srcSet":"/static/bf7f55d67a0f66bd2b00ace418fee239/9d9e0/swagger-annotations-with-interface-wide.png 225w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/cc174/swagger-annotations-with-interface-wide.png 450w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/12a3e/swagger-annotations-with-interface-wide.png 900w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/4dd11/swagger-annotations-with-interface-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/bf7f55d67a0f66bd2b00ace418fee239/3f003/swagger-annotations-with-interface-wide.webp 225w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/ba134/swagger-annotations-with-interface-wide.webp 450w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/e7f7d/swagger-annotations-with-interface-wide.webp 900w,\n/static/bf7f55d67a0f66bd2b00ace418fee239/fc420/swagger-annotations-with-interface-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"swagger image"},"id":"3aab9e4c-49c4-52cd-9b0f-8afa4b7bb06d","slug":"development/swagger-separate-annotations-with-interface/"},{"frontmatter":{"title":"[Swagger] JWT 인증 버튼 셋업 (feat. Bearer 인증)","description":"스웨거를 통해 요청을 보낼 때마다 Authorization 헤더에 매번 JWT 토큰을 입력하는 것은 번거롭습니다. 딱 한번만 JWT 토큰을 설정하고 재활용할 수 있도록 Authorize 버튼을 설정해봅시다.","date":"February 21, 2024","category":"development","tags":["spring","swagger","authentication","authorization","dev-tools","api"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/2d0f0c347f51ad90899272bbec540c2f/12a3e/swagger-wide.png","srcSet":"/static/2d0f0c347f51ad90899272bbec540c2f/9d9e0/swagger-wide.png 225w,\n/static/2d0f0c347f51ad90899272bbec540c2f/cc174/swagger-wide.png 450w,\n/static/2d0f0c347f51ad90899272bbec540c2f/12a3e/swagger-wide.png 900w,\n/static/2d0f0c347f51ad90899272bbec540c2f/4dd11/swagger-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/2d0f0c347f51ad90899272bbec540c2f/3f003/swagger-wide.webp 225w,\n/static/2d0f0c347f51ad90899272bbec540c2f/ba134/swagger-wide.webp 450w,\n/static/2d0f0c347f51ad90899272bbec540c2f/e7f7d/swagger-wide.webp 900w,\n/static/2d0f0c347f51ad90899272bbec540c2f/fc420/swagger-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"swagger image"},"id":"0ab6e5ae-80b4-50a5-8dcc-82f9e50fab01","slug":"development/swagger-auth-tutorial/"},{"frontmatter":{"title":"[Swagger] 스프링부트 2버전에서 API 명세 자동화하기","description":"스프링부트 2버전에서 API 문서화 및 관리 툴인 Swagger를 셋업해봅시다. Postman처럼 서버에 실제로 요청을 보낼 수 있는 API 명세를 자동으로 생성할 수 있다는 점은 스웨거가 지닌 명확한 장점입니다.","date":"February 18, 2024","category":"development","tags":["spring","swagger","dev-tools","api"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/ab4ea481e8fe17c04e9ac086460460f6/12a3e/swagger-tutorial-wide.png","srcSet":"/static/ab4ea481e8fe17c04e9ac086460460f6/9d9e0/swagger-tutorial-wide.png 225w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/cc174/swagger-tutorial-wide.png 450w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/12a3e/swagger-tutorial-wide.png 900w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/4dd11/swagger-tutorial-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/ab4ea481e8fe17c04e9ac086460460f6/3f003/swagger-tutorial-wide.webp 225w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/ba134/swagger-tutorial-wide.webp 450w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/e7f7d/swagger-tutorial-wide.webp 900w,\n/static/ab4ea481e8fe17c04e9ac086460460f6/fc420/swagger-tutorial-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"swagger image"},"id":"dcd3beaf-7346-5818-9ee0-dd4da36ef76f","slug":"development/swagger-tutorial/"},{"frontmatter":{"title":"[발표] 객체지향 언어로서의 Go","description":"실무에서 Go를 사용한지 정확히 1년이 되었습니다. 작년에 Golang Korea 주관 행사에서 발표했던 내용의 요약과 함께 Go와 OOP에 대한 개인적인 생각을 정리해보고자 합니다.","date":"February 6, 2024","category":"essay","tags":["go","oop","presentation","retrospective"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/2f71933488a805eaab5d52b60cf907e7/12a3e/object-oriented-go-wide.png","srcSet":"/static/2f71933488a805eaab5d52b60cf907e7/9d9e0/object-oriented-go-wide.png 225w,\n/static/2f71933488a805eaab5d52b60cf907e7/cc174/object-oriented-go-wide.png 450w,\n/static/2f71933488a805eaab5d52b60cf907e7/12a3e/object-oriented-go-wide.png 900w,\n/static/2f71933488a805eaab5d52b60cf907e7/4dd11/object-oriented-go-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/2f71933488a805eaab5d52b60cf907e7/3f003/object-oriented-go-wide.webp 225w,\n/static/2f71933488a805eaab5d52b60cf907e7/ba134/object-oriented-go-wide.webp 450w,\n/static/2f71933488a805eaab5d52b60cf907e7/e7f7d/object-oriented-go-wide.webp 900w,\n/static/2f71933488a805eaab5d52b60cf907e7/fc420/object-oriented-go-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"object oriented go image"},"id":"6ab50876-4d5b-530b-99bb-6d4bc6455ab6","slug":"essay/object-oriented-go-presentation/"},{"frontmatter":{"title":"[쿠키런] 데이터 기반 조합 추천 시스템 구현 이야기","description":"[쿠키런: 오븐브레이크]라는 게임의 조합 추천 시스템의 개발 과정에 대한 NDC 발표 영상을 정리해보았습니다.","date":"January 9, 2024","category":"development","tags":["recommendation-system","cro"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/de57c8b5f377679fd093279aaad5a040/12a3e/main-wide.png","srcSet":"/static/de57c8b5f377679fd093279aaad5a040/9d9e0/main-wide.png 225w,\n/static/de57c8b5f377679fd093279aaad5a040/cc174/main-wide.png 450w,\n/static/de57c8b5f377679fd093279aaad5a040/12a3e/main-wide.png 900w,\n/static/de57c8b5f377679fd093279aaad5a040/4dd11/main-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/de57c8b5f377679fd093279aaad5a040/3f003/main-wide.webp 225w,\n/static/de57c8b5f377679fd093279aaad5a040/ba134/main-wide.webp 450w,\n/static/de57c8b5f377679fd093279aaad5a040/e7f7d/main-wide.webp 900w,\n/static/de57c8b5f377679fd093279aaad5a040/fc420/main-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"main image"},"id":"2e51282b-7243-52fa-8325-9dc7058c78c9","slug":"development/ndc-cookie-recommendation/"},{"frontmatter":{"title":"[MySQL] B트리 인덱스와 Hash 인덱스","description":"인덱스는 데이터를 보다 효율적으로 검색할 수 있도록 테이블에서 관리되는 자료구조입니다. 해당 글에서는 MySQL에서 제공되는 B 트리 기반 인덱스와 Hash 인덱스의 특징과 주의사항에 대해 가볍게 정리해보고자 합니다.","date":"January 3, 2024","category":"computer-science","tags":["mysql","database","index","b-tree","hash"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/e8236d054d06f5b0e2f42c5cf5b28551/12a3e/main-wide.png","srcSet":"/static/e8236d054d06f5b0e2f42c5cf5b28551/9d9e0/main-wide.png 225w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/cc174/main-wide.png 450w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/12a3e/main-wide.png 900w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/4dd11/main-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/e8236d054d06f5b0e2f42c5cf5b28551/3f003/main-wide.webp 225w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/ba134/main-wide.webp 450w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/e7f7d/main-wide.webp 900w,\n/static/e8236d054d06f5b0e2f42c5cf5b28551/fc420/main-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"main image"},"id":"04921a36-824f-5f86-9638-06a66567228b","slug":"computer-science/btree-index-and-hash-index/"},{"frontmatter":{"title":"[MySQL] 왜 DB 인덱스로 B 트리를 사용하는가 (feat. 이진탐색트리)","description":"MySQL에서는 일반적으로 B 트리 기반의 인덱스가 사용됩니다. 이진탐색트리과의 비교를 통해 B 트리 자료구조를 이해하고, 왜 DB 인덱스에 적절한지에 대해 정리해보고자 합니다.","date":"January 2, 2024","category":"computer-science","tags":["mysql","data-structure","b-tree","binary-search-tree","database","index"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/50c27211decbf4235b871f56ae3d1a0b/12a3e/main-wide.png","srcSet":"/static/50c27211decbf4235b871f56ae3d1a0b/9d9e0/main-wide.png 225w,\n/static/50c27211decbf4235b871f56ae3d1a0b/cc174/main-wide.png 450w,\n/static/50c27211decbf4235b871f56ae3d1a0b/12a3e/main-wide.png 900w,\n/static/50c27211decbf4235b871f56ae3d1a0b/4dd11/main-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/50c27211decbf4235b871f56ae3d1a0b/3f003/main-wide.webp 225w,\n/static/50c27211decbf4235b871f56ae3d1a0b/ba134/main-wide.webp 450w,\n/static/50c27211decbf4235b871f56ae3d1a0b/e7f7d/main-wide.webp 900w,\n/static/50c27211decbf4235b871f56ae3d1a0b/fc420/main-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"main image"},"id":"6a0636a2-da60-5dfe-95dc-61213ab3ff3b","slug":"computer-science/why-use-btree-for-db-index/"},{"frontmatter":{"title":"[Redis] ZSet으로 랭킹 시스템 구현하기 (feat. 점수 갱신, 동점자 처리)","description":"레디스 ZSet을 활용하여 온라인 게임의 랭킹 시스템을 구현하는 방법에 대해 정리해보겠습니다. 세부적인 요구사항에 따라 점수 갱신 로직과 동점자들을 어떻게 관리할 수 있는지에 대해 알아봅니다.","date":"November 22, 2023","category":"development","tags":["redis","zset","sorted-set","hash","data-structure","leaderboard","database"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/50497664268d698ba6fe36f8be31fea2/12a3e/redis-ranking-system-with-zset-wide.png","srcSet":"/static/50497664268d698ba6fe36f8be31fea2/9d9e0/redis-ranking-system-with-zset-wide.png 225w,\n/static/50497664268d698ba6fe36f8be31fea2/cc174/redis-ranking-system-with-zset-wide.png 450w,\n/static/50497664268d698ba6fe36f8be31fea2/12a3e/redis-ranking-system-with-zset-wide.png 900w,\n/static/50497664268d698ba6fe36f8be31fea2/4dd11/redis-ranking-system-with-zset-wide.png 1800w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/50497664268d698ba6fe36f8be31fea2/3f003/redis-ranking-system-with-zset-wide.webp 225w,\n/static/50497664268d698ba6fe36f8be31fea2/ba134/redis-ranking-system-with-zset-wide.webp 450w,\n/static/50497664268d698ba6fe36f8be31fea2/e7f7d/redis-ranking-system-with-zset-wide.webp 900w,\n/static/50497664268d698ba6fe36f8be31fea2/fc420/redis-ranking-system-with-zset-wide.webp 1800w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"redis ranking system with zset image"},"id":"30ac5d42-61cd-5b7b-8c62-c204d9219443","slug":"development/redis-ranking-system-with-zset/"}],"pageInfo":{"currentPage":3,"hasNextPage":true,"hasPreviousPage":true,"pageCount":9,"totalCount":86}}},"pageContext":{"skip":20}},
    "staticQueryHashes": ["1903006949","272758454"]}