{"version":1,"pages":[{"id":"-MGNghbR2UocFGVsvHmB","title":"Home","pathname":"/","siteSpaceId":"sitesp_2PdN8","description":"Joonas의 Today I Learned"},{"id":"-MRmyp7wN8pRfdYJL1-1","title":"Chrome Extension","pathname":"/chrome-extension","siteSpaceId":"sitesp_2PdN8","description":"크롬 확장 프로그램과 관련된 주제들 정리"},{"id":"-MRmyswgUl8TrPS3DcbG","title":"CSS injection","pathname":"/chrome-extension/css-injection","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Chrome Extension"}]},{"id":"-MGc97vbxWiON3mpVnvo","title":"Design Pattern","pathname":"/design-pattern","siteSpaceId":"sitesp_2PdN8","description":""},{"id":"-MGkAwoyFGndydN7Vmv2","title":"SOLID 원칙","pathname":"/design-pattern/solid-priciple","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"}]},{"id":"-MGs-AJp0fPw6azAZ6Nm","title":"1. SRP","pathname":"/design-pattern/solid-priciple/1-srp","siteSpaceId":"sitesp_2PdN8","description":"Single Responsibility Principle (SRP; 단일 책임 원칙)","breadcrumbs":[{"label":"Design Pattern"},{"label":"SOLID 원칙"}]},{"id":"-MGs-zRrkos6Zp1FM-gU","title":"2. OCP","pathname":"/design-pattern/solid-priciple/2-ocp","siteSpaceId":"sitesp_2PdN8","description":"Open/Closed Principle (OCP; 개방-폐쇄 원칙)","breadcrumbs":[{"label":"Design Pattern"},{"label":"SOLID 원칙"}]},{"id":"-MGs028J4Q1EdPk2qFEs","title":"3. LSP","pathname":"/design-pattern/solid-priciple/3-lsp","siteSpaceId":"sitesp_2PdN8","description":"Liskov Substitution principle (LSP; 리스코프 치환 원칙)","breadcrumbs":[{"label":"Design Pattern"},{"label":"SOLID 원칙"}]},{"id":"-MGs0BlA6RfT0maQuLwH","title":"4. ISP","pathname":"/design-pattern/solid-priciple/4-isp","siteSpaceId":"sitesp_2PdN8","description":"Interface Segregation Principle (ISP; 인터페이스 분리 원칙)","breadcrumbs":[{"label":"Design Pattern"},{"label":"SOLID 원칙"}]},{"id":"-MGs0EhTCzgh6_g5wSyX","title":"5. DIP","pathname":"/design-pattern/solid-priciple/5-dip","siteSpaceId":"sitesp_2PdN8","description":"Dependency Inversion Principle (DIP; 의존관계 역전 원칙)","breadcrumbs":[{"label":"Design Pattern"},{"label":"SOLID 원칙"}]},{"id":"-MGcA0CcJUSghYSrCRDI","title":"생성 패턴","pathname":"/design-pattern/creational-patterns","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"}]},{"id":"-MGc9ALSuH1TO9skVi-G","title":"Singleton Pattern","pathname":"/design-pattern/creational-patterns/singleton-pattern","siteSpaceId":"sitesp_2PdN8","description":"싱글턴 패턴(Singleton pattern)","breadcrumbs":[{"label":"Design Pattern"},{"label":"생성 패턴"}]},{"id":"-MGc9kxdQUxac2ywf8dM","title":"Abstract Factory Pattern","pathname":"/design-pattern/creational-patterns/abstract-factory-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"생성 패턴"}]},{"id":"-MGcAADqt8deqfsYIF6d","title":"Factory Method Pattern","pathname":"/design-pattern/creational-patterns/factory-method-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"생성 패턴"}]},{"id":"-MGc9KR8y35VX6UYHE2c","title":"구조 패턴","pathname":"/design-pattern/structural-patterns","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"}]},{"id":"-MGcByqx5zSuNIO82h8h","title":"Adapter Pattern","pathname":"/design-pattern/structural-patterns/adapter-pattern","siteSpaceId":"sitesp_2PdN8","description":"어댑터 패턴(Adapter Pattern)","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGcBlaV20a_SshegMpe","title":"Bridge Pattern","pathname":"/design-pattern/structural-patterns/bridge-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGcAbBTHmfPP4c1WXtA","title":"Composite Pattern","pathname":"/design-pattern/structural-patterns/composite-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGcAeRjC_YP6eHpNCT4","title":"Decorator Pattern","pathname":"/design-pattern/structural-patterns/decorator-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGcBhAjFvJ3AvbjKBAf","title":"Facade Pattern","pathname":"/design-pattern/structural-patterns/facade-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGcBujoBf-XPPKAjyPw","title":"Proxy Pattern","pathname":"/design-pattern/structural-patterns/proxy-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"구조 패턴"}]},{"id":"-MGc9N8TbbdnyJ5qMpSw","title":"행위 패턴","pathname":"/design-pattern/behavioral-patterns","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"}]},{"id":"-MGcAnxWnzZ6oh9LDFdM","title":"Command Pattern","pathname":"/design-pattern/behavioral-patterns/command-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"행위 패턴"}]},{"id":"-MGcAs0k71NDuGQrLPrU","title":"Observer Pattern","pathname":"/design-pattern/behavioral-patterns/observer-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"행위 패턴"}]},{"id":"-MGcB7XXUnXGtBD7Jxjn","title":"State Pattern","pathname":"/design-pattern/behavioral-patterns/state-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"행위 패턴"}]},{"id":"-MGcBV07_6vx9k1M6fyT","title":"Strategy Pattern","pathname":"/design-pattern/behavioral-patterns/strategy-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"행위 패턴"}]},{"id":"-MGcBXNj5dmNkcuhv02U","title":"Template Method Pattern","pathname":"/design-pattern/behavioral-patterns/template-method-pattern","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Design Pattern"},{"label":"행위 패턴"}]},{"id":"-MHGA3zLMwLmft5iR74Y","title":"Graphics","pathname":"/graphics","siteSpaceId":"sitesp_2PdN8","description":""},{"id":"-MHGFefq6hTm1UlZzgK8","title":"OpenGL ES","pathname":"/graphics/opengl","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Graphics"}]},{"id":"-MSaoV2buvGMj1GksApJ","title":"파이프라인","pathname":"/graphics/opengl/pipeline","siteSpaceId":"sitesp_2PdN8","description":"3D 세상에 있는 것들이 2D 화면에 그려지기까지.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MHGFjC3dlOSStbTDr1M","title":"삼각형 그리기","pathname":"/graphics/opengl/draw-triangle","siteSpaceId":"sitesp_2PdN8","description":"Android에서 OpenGL ES 2.0으로 삼각형을 정의하고, SurfaceView에 그려본다.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MHHbMzHB-vZPmNyvBS6","title":"삼각형 움직이기","pathname":"/graphics/opengl/manipulate-triangle","siteSpaceId":"sitesp_2PdN8","description":"Android에서 OpenGL ES 2.0으로 객체를 터치한 만큼 옮겨본다.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MS5tCZjGd_TzE0r8XhF","title":"다각형 그리기","pathname":"/graphics/opengl/draw-polygon","siteSpaceId":"sitesp_2PdN8","description":"Android에서 OpenGL ES 2.0으로 다각형을 정의하고 그려본다.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MS5U6LiOkVnCNREGCW4","title":"정사면체 그리기","pathname":"/graphics/opengl/draw-tetrahedron","siteSpaceId":"sitesp_2PdN8","description":"Android에서 OpenGL ES 2.0으로 \"알록달록한\" 정사면체를 정의한다.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MSgXdP31CIBDtYWpD51","title":"[WIP] 마인크래프트 블럭 만들기","pathname":"/graphics/opengl/make-minecraft-cube","siteSpaceId":"sitesp_2PdN8","description":"정육면체에 텍스처(Texture)를 입혀서 마인크래프트 블럭처럼 보이도록 만든다.","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MSk187sj8VAQEuuFm1S","title":"[WIP] Lighting, Normal Mapping","pathname":"/graphics/opengl/untitled","siteSpaceId":"sitesp_2PdN8","description":"노멀맵과 빛, 광원(Light)","breadcrumbs":[{"label":"Graphics"},{"label":"OpenGL ES"}]},{"id":"-MHfrXXuslTrj1m12onr","title":"Internet","pathname":"/internet","siteSpaceId":"sitesp_2PdN8","description":"Internet에서 일어나는 이야기"},{"id":"-MHfrd40x3_lv8U97sO-","title":"iOS/Safari","pathname":"/internet/ios-safari","siteSpaceId":"sitesp_2PdN8","description":"iOS/Safari 관련 내용들 모음","breadcrumbs":[{"label":"Internet"}]},{"id":"-MGbUxZGfJL7NeiRGCaJ","title":"Javascript","pathname":"/javascript","siteSpaceId":"sitesp_2PdN8","description":""},{"id":"-MWd2mavWL2vqWegz1Qq","title":"async, defer 속성","pathname":"/javascript/async-defer","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MGbck-8icSCh-mfGgNk","title":"나머지 매개변수 (Rest parameter)","pathname":"/javascript/rest-parameter","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MGbV1wdyDdyHZ1Bn9UB","title":"화살표 함수 표현 (arrow function expression)","pathname":"/javascript/arrow-function-expression","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MRT4Vc_2kTA0RSSrymM","title":"Template Literals","pathname":"/javascript/template-literals","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MSDNkvKxlGjqZBhthK9","title":"TDZ (Temporal Dead Zone)","pathname":"/javascript/tdz-temporal-dead-zone","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MYuOqG_LWzii9Ey8Q-q","title":"Spread syntax (...)","pathname":"/javascript/spread-syntax-...","siteSpaceId":"sitesp_2PdN8","description":"[...a] 와 같은 연산자에 대해서","breadcrumbs":[{"label":"Javascript"}]},{"id":"-MHKLIL1s9GAHLUOQcqp","title":"Network","pathname":"/network","siteSpaceId":"sitesp_2PdN8","description":"Computer Network에 대한 공부"},{"id":"-MHKLUdKr9UPBboHUSvb","title":"OSI 7 계층 모델","pathname":"/network/osi","siteSpaceId":"sitesp_2PdN8","description":"7 layers of the OSI Model","breadcrumbs":[{"label":"Network"}]},{"id":"-MGbbhwQskQfGG7MDkwb","title":"Uncategorized","pathname":"/logs-etc","siteSpaceId":"sitesp_2PdN8","description":"분류되지 않은 글"},{"id":"libEAEvOFpJgUBbzKsqY","title":"2021/12/07","pathname":"/logs-etc/2021-12-07","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Uncategorized"}]},{"id":"-MGNjQ3Dd5h5gfuj_WRs","title":"2020/09/03","pathname":"/logs-etc/03-dns-n-nameserver","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Uncategorized"}]},{"id":"-MGNjQ3FTRLjqMlLQ9Hu","title":"2020/09/04","pathname":"/logs-etc/04-github-actions","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Uncategorized"}]},{"id":"-MGNjQ3AbpJ5xl1__h0D","title":"2020/08/22","pathname":"/logs-etc/22-gcp-docker-machine","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"Uncategorized"}]},{"id":"e2BoAAXFkO95wcHpUXlC","title":"git/VCS","pathname":"/git-vcs","siteSpaceId":"sitesp_2PdN8","description":"git & GitHub & VCS(Version Control System)"},{"id":"7cwgkWsZzuOKWtR6r6h3","title":"Merge 커밋 메시지 수정","pathname":"/git-vcs/merge","siteSpaceId":"sitesp_2PdN8","description":"","breadcrumbs":[{"label":"git/VCS"}]}]}