{
    "componentChunkName": "component---src-templates-blog-js",
    "path": "/blog/page/8",
    "result": {"data":{"allMdx":{"nodes":[{"frontmatter":{"title":"[번역] IoC 컨테이너와 빈 개요","description":"스프링 프레임워크 공식문서의 Core Technologies 섹션 중 IoC 컨테이너와 빈의 개요에 대한 번역","date":"May 23, 2022","category":"docs","tags":["spring","ioc-container","bean","configuration-metadata","translation"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/df4fdef3f5596646e1f54a1121489f1d/12a3e/spring-framework-wide.png","srcSet":"/static/df4fdef3f5596646e1f54a1121489f1d/9d9e0/spring-framework-wide.png 225w,\n/static/df4fdef3f5596646e1f54a1121489f1d/cc174/spring-framework-wide.png 450w,\n/static/df4fdef3f5596646e1f54a1121489f1d/12a3e/spring-framework-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/df4fdef3f5596646e1f54a1121489f1d/3f003/spring-framework-wide.webp 225w,\n/static/df4fdef3f5596646e1f54a1121489f1d/ba134/spring-framework-wide.webp 450w,\n/static/df4fdef3f5596646e1f54a1121489f1d/e7f7d/spring-framework-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"spring framework logo image"},"id":"68f6e1c2-29c8-5fc9-9a8b-1fc7226995c5","slug":"docs/spring/framework/core/ioc-container/container-and-bean-overview/"},{"frontmatter":{"title":"[번역] 스프링 프레임워크 개요","description":"스프링 프레임워크 공식문서의 Overview 섹션에 대한 번역","date":"May 8, 2022","category":"docs","tags":["spring","translation"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/df4fdef3f5596646e1f54a1121489f1d/12a3e/spring-framework-wide.png","srcSet":"/static/df4fdef3f5596646e1f54a1121489f1d/9d9e0/spring-framework-wide.png 225w,\n/static/df4fdef3f5596646e1f54a1121489f1d/cc174/spring-framework-wide.png 450w,\n/static/df4fdef3f5596646e1f54a1121489f1d/12a3e/spring-framework-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/df4fdef3f5596646e1f54a1121489f1d/3f003/spring-framework-wide.webp 225w,\n/static/df4fdef3f5596646e1f54a1121489f1d/ba134/spring-framework-wide.webp 450w,\n/static/df4fdef3f5596646e1f54a1121489f1d/e7f7d/spring-framework-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"spring framework logo image"},"id":"e9c61615-1825-5331-855d-993b181f2264","slug":"docs/spring/framework/overview/"},{"frontmatter":{"title":"[OOP] SOLID 압축 정리본","description":"우아한테크코스 레벨 인터뷰 준비 과정에서 작성한 SOLID에 대한 개념 정리이다. 너무 깊지도, 얕지도 않도록 최소한의 예제만을 활용한 압축본을 만드는 것을 목표로 하였다. 오브젝트 스터디 종료 후 수정할 계획이다.","date":"April 26, 2022","category":"computer-science","tags":["oop","srp","ocp","lsp","isp","dip"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/782dfc0465da57291e95692f6860f8f8/12a3e/solid-wide.png","srcSet":"/static/782dfc0465da57291e95692f6860f8f8/9d9e0/solid-wide.png 225w,\n/static/782dfc0465da57291e95692f6860f8f8/cc174/solid-wide.png 450w,\n/static/782dfc0465da57291e95692f6860f8f8/12a3e/solid-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/782dfc0465da57291e95692f6860f8f8/3f003/solid-wide.webp 225w,\n/static/782dfc0465da57291e95692f6860f8f8/ba134/solid-wide.webp 450w,\n/static/782dfc0465da57291e95692f6860f8f8/e7f7d/solid-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"solid image"},"id":"31c53484-fab6-5a85-866c-46c21dd3e22c","slug":"computer-science/solid-basics/"},{"frontmatter":{"title":"[보안] 비밀번호 암호화: 해쉬와 솔트","description":"DB에 비밀번호를 변형시킨 값을 저장해놓으면 DB 정보가 외부에 유출되더라도 이를 쉽게 악용하기 힘들어진다. 솔트와 해쉬 함수를 활용하여 비밀번호의 해쉬 값을 생성하고 이를 DB에 저장하는 기법을 생각해볼 수 있다.","date":"April 25, 2022","category":"development","tags":["database","hash","security","authentication"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/a0b1a282a327616498079b1e732fe0d1/12a3e/hashing-password-wide.png","srcSet":"/static/a0b1a282a327616498079b1e732fe0d1/9d9e0/hashing-password-wide.png 225w,\n/static/a0b1a282a327616498079b1e732fe0d1/cc174/hashing-password-wide.png 450w,\n/static/a0b1a282a327616498079b1e732fe0d1/12a3e/hashing-password-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/a0b1a282a327616498079b1e732fe0d1/3f003/hashing-password-wide.webp 225w,\n/static/a0b1a282a327616498079b1e732fe0d1/ba134/hashing-password-wide.webp 450w,\n/static/a0b1a282a327616498079b1e732fe0d1/e7f7d/hashing-password-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"hashing password image"},"id":"6976b79c-69ee-531c-9bc9-a19004687749","slug":"development/hashing-password-with-salt/"},{"frontmatter":{"title":"[Java] 스트림: 지연 연산과 최적화","description":"Stream API의 주요 특성인 지연 연산의 의미, 그리고 이를 기반으로 일어나는 루프퓨전과 쇼트서킷에 대해 알아보자. Stream API가 스트림이라고 불릴 수 있는 원인이 바로 여기에 있는 것으로 보인다.","date":"April 13, 2022","category":"development","tags":["java","modern-java","stream","lazy","short-circuit"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4ec343a30ea3d448be1f1cc966c7efbe/12a3e/lazy-stream-wide.png","srcSet":"/static/4ec343a30ea3d448be1f1cc966c7efbe/9d9e0/lazy-stream-wide.png 225w,\n/static/4ec343a30ea3d448be1f1cc966c7efbe/cc174/lazy-stream-wide.png 450w,\n/static/4ec343a30ea3d448be1f1cc966c7efbe/12a3e/lazy-stream-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/4ec343a30ea3d448be1f1cc966c7efbe/3f003/lazy-stream-wide.webp 225w,\n/static/4ec343a30ea3d448be1f1cc966c7efbe/ba134/lazy-stream-wide.webp 450w,\n/static/4ec343a30ea3d448be1f1cc966c7efbe/e7f7d/lazy-stream-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"lazy stream image"},"id":"b2d9b6b1-1451-572f-be95-5668ca721bdc","slug":"development/stream-lazy-evaluation/"},{"frontmatter":{"title":"[Java] 스트림 연산의 분류","description":"스트림 파이프라인은 중간연산과 최종연산으로 구성된다. 스트림 연산은 다시 내부적으로 관리되는 상태의 유무와 상태의 크기에 따라서도 구분된다. 이러한 분류는 Stream API의 내부 동작을 이해하는 데 도움이 된다.","date":"April 11, 2022","category":"development","tags":["java","stream","modern-java"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/017d1b3e02bc8ee806df0a3ed73ae93f/12a3e/stream-operations-wide.png","srcSet":"/static/017d1b3e02bc8ee806df0a3ed73ae93f/9d9e0/stream-operations-wide.png 225w,\n/static/017d1b3e02bc8ee806df0a3ed73ae93f/cc174/stream-operations-wide.png 450w,\n/static/017d1b3e02bc8ee806df0a3ed73ae93f/12a3e/stream-operations-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/017d1b3e02bc8ee806df0a3ed73ae93f/3f003/stream-operations-wide.webp 225w,\n/static/017d1b3e02bc8ee806df0a3ed73ae93f/ba134/stream-operations-wide.webp 450w,\n/static/017d1b3e02bc8ee806df0a3ed73ae93f/e7f7d/stream-operations-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"stream operations image"},"id":"3be77123-906e-5c04-bdf7-f53661826dc8","slug":"development/stream-operations/"},{"frontmatter":{"title":"[Java] 값 객체: 동등성과 동일성","description":"동등성과 동일성 개념을 토대로 값과 객체를 비교해보고, 값 객체에 대해 이해해보자. 로또 번호와 위치 정보를 값 객체로 구현해보고, 체스말의 이동경로 검증 예시를 통해 값 객체가 지니는 이점에 대해 알아보자.","date":"April 9, 2022","category":"development","tags":["java","value-object","object","oop"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/7b7817b3ed441a4700ba4673be9e260a/12a3e/value-object-wide.png","srcSet":"/static/7b7817b3ed441a4700ba4673be9e260a/9d9e0/value-object-wide.png 225w,\n/static/7b7817b3ed441a4700ba4673be9e260a/cc174/value-object-wide.png 450w,\n/static/7b7817b3ed441a4700ba4673be9e260a/12a3e/value-object-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/7b7817b3ed441a4700ba4673be9e260a/3f003/value-object-wide.webp 225w,\n/static/7b7817b3ed441a4700ba4673be9e260a/ba134/value-object-wide.webp 450w,\n/static/7b7817b3ed441a4700ba4673be9e260a/e7f7d/value-object-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"value object image"},"id":"ada49ef6-4774-589e-99bc-5a96cd5cef07","slug":"development/value-object/"},{"frontmatter":{"title":"[Java] 스트림 기초: I/O Stream과 Stream API","description":"Stream API을 통해 생성되는 스트림은 말 그대로 '데이터의 흐름'이다. 이 흐름이라는 개념에 포함된 다양한 의미 중 가장 중요한 것은 스트림이 흘러가는 과정에서 데이터가 순차적으로 사용되고 사라진다는 점이다.","date":"March 21, 2022","category":"development","tags":["java","stream","modern-java"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/c14bda83973ba8919bd7034a4392c8ac/12a3e/java-stream-wide.png","srcSet":"/static/c14bda83973ba8919bd7034a4392c8ac/9d9e0/java-stream-wide.png 225w,\n/static/c14bda83973ba8919bd7034a4392c8ac/cc174/java-stream-wide.png 450w,\n/static/c14bda83973ba8919bd7034a4392c8ac/12a3e/java-stream-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/c14bda83973ba8919bd7034a4392c8ac/3f003/java-stream-wide.webp 225w,\n/static/c14bda83973ba8919bd7034a4392c8ac/ba134/java-stream-wide.webp 450w,\n/static/c14bda83973ba8919bd7034a4392c8ac/e7f7d/java-stream-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"java stream image"},"id":"bd9cc134-41dc-5942-8baa-e7411118b121","slug":"development/stream-and-java/"},{"frontmatter":{"title":"[Java] 람다: 람다 캡처링","description":"람다 캡처링이란 파라미터로 넘겨받은 데이터가 아닌 람다식 외부에서 선언된 변수를 참조하는 변수를 람다식 내부에 저장하고 사용하는 동작을 의미한다. 이번 글에서는 이를 둘러싼 제약사항 및 주의사항을 다루어보고자 한다.","date":"March 14, 2022","category":"development","tags":["java","lambda","modern-java","functional-programming"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/6a213864b38d5082b76b6d72aaa50534/12a3e/lambda-capturing-wide.png","srcSet":"/static/6a213864b38d5082b76b6d72aaa50534/9d9e0/lambda-capturing-wide.png 225w,\n/static/6a213864b38d5082b76b6d72aaa50534/cc174/lambda-capturing-wide.png 450w,\n/static/6a213864b38d5082b76b6d72aaa50534/12a3e/lambda-capturing-wide.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/6a213864b38d5082b76b6d72aaa50534/3f003/lambda-capturing-wide.webp 225w,\n/static/6a213864b38d5082b76b6d72aaa50534/ba134/lambda-capturing-wide.webp 450w,\n/static/6a213864b38d5082b76b6d72aaa50534/e7f7d/lambda-capturing-wide.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"lambda capturing image"},"id":"95d3bb51-17a5-55ff-a659-0f0d765455d9","slug":"development/lambda-capturing-and-free-variable/"},{"frontmatter":{"title":"클래스와 프로토타입에 담긴 철학","description":"우테코 강의 중 클래스라는 개념이 플라톤의 이데아 개념에 기반을 두고 있다는 내용이 나왔다. 다만, 코치님이 이 부분에 대해 너무 가볍게 다룬 것 같아 정말 마음이 아팠다. 그런 의미에서 그 분이 쏘아올린 작은 공을 살짝 리시브해보고자 한다.","date":"February 17, 2022","category":"computer-science","tags":["oop","philosophy","java","javascript"],"hero_image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/5c5b393bfd433e110e2ef9c24ca5ace1/ba2c4/plato-wittgenstein.jpg","srcSet":"/static/5c5b393bfd433e110e2ef9c24ca5ace1/70c4d/plato-wittgenstein.jpg 185w,\n/static/5c5b393bfd433e110e2ef9c24ca5ace1/bfbf1/plato-wittgenstein.jpg 370w,\n/static/5c5b393bfd433e110e2ef9c24ca5ace1/ba2c4/plato-wittgenstein.jpg 740w","sizes":"(min-width: 740px) 740px, 100vw"},"sources":[{"srcSet":"/static/5c5b393bfd433e110e2ef9c24ca5ace1/a3685/plato-wittgenstein.webp 185w,\n/static/5c5b393bfd433e110e2ef9c24ca5ace1/3c007/plato-wittgenstein.webp 370w,\n/static/5c5b393bfd433e110e2ef9c24ca5ace1/177c9/plato-wittgenstein.webp 740w","type":"image/webp","sizes":"(min-width: 740px) 740px, 100vw"}]},"width":900,"height":450}}},"hero_image_alt":"plato vs wittgenstein image"},"id":"a82b0dda-ae9d-5433-8cba-ee1668edced3","slug":"computer-science/class-vs-prototype-philosophy/"}],"pageInfo":{"currentPage":8,"hasNextPage":true,"hasPreviousPage":true,"pageCount":9,"totalCount":86}}},"pageContext":{"skip":70}},
    "staticQueryHashes": ["1903006949","272758454"]}