From 8923d14b3a662dfce4a1ca8d811f16862d095bb7 Mon Sep 17 00:00:00 2001 From: cruelladevil Date: Fri, 1 Dec 2023 07:39:35 +0000 Subject: [PATCH] deploy: cabee919f7d568ab3b5b60761031e55bbb448842 --- page-data/sq/d/2898439428.json | 2 +- rss.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/page-data/sq/d/2898439428.json b/page-data/sq/d/2898439428.json index c6d7f6571..c9c35d352 100644 --- a/page-data/sq/d/2898439428.json +++ b/page-data/sq/d/2898439428.json @@ -1 +1 @@ -{"data":{"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["naming","convention"]}}},{"node":{"frontmatter":{"tags":["naming","convention"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic","oop"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["clean-code","recursion"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["hard-coding","clean-code"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["clean-code","refactoring"]}}},{"node":{"frontmatter":{"tags":["stream","functional-programming"]}}},{"node":{"frontmatter":{"tags":["interface","refactoring","test"]}}},{"node":{"frontmatter":{"tags":["collection"]}}},{"node":{"frontmatter":{"tags":["immutable","refactoring"]}}},{"node":{"frontmatter":{"tags":["oop","composition","inheritance","clean-code"]}}},{"node":{"frontmatter":{"tags":["static-factory-method"]}}},{"node":{"frontmatter":{"tags":["oop","object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["law-of-demeter","clean-code","object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["value-object","immutable"]}}},{"node":{"frontmatter":{"tags":["class","immutable","refactoring"]}}},{"node":{"frontmatter":{"tags":["cache"]}}},{"node":{"frontmatter":{"tags":["reflection"]}}},{"node":{"frontmatter":{"tags":["static","static-factory-method","static-method","oop"]}}},{"node":{"frontmatter":{"tags":["interface"]}}},{"node":{"frontmatter":{"tags":["architecture"]}}},{"node":{"frontmatter":{"tags":["spring","di"]}}},{"node":{"frontmatter":{"tags":["asynchronous","api"]}}},{"node":{"frontmatter":{"tags":["exception"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic","oop","clean-code","enum"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["spring","spring-boot","logback","logger"]}}},{"node":{"frontmatter":{"tags":["test","dynamic-test"]}}},{"node":{"frontmatter":{"tags":["oop","clean-code"]}}},{"node":{"frontmatter":{"tags":["design-pattern","class"]}}},{"node":{"frontmatter":{"tags":["exception","custom-exception"]}}},{"node":{"frontmatter":{"tags":["http-method","put","patch"]}}},{"node":{"frontmatter":{"tags":["oop","interface","functional-programming","enum"]}}},{"node":{"frontmatter":{"tags":["spring","docs"]}}},{"node":{"frontmatter":{"tags":["spring","test"]}}},{"node":{"frontmatter":{"tags":["dto","entity"]}}},{"node":{"frontmatter":{"tags":["jpa","entity","transaction"]}}},{"node":{"frontmatter":{"tags":["http","status-code"]}}},{"node":{"frontmatter":{"tags":["loop"]}}},{"node":{"frontmatter":{"tags":["jpa","transaction","test"]}}},{"node":{"frontmatter":{"tags":["spring","docs"]}}},{"node":{"frontmatter":{"tags":["token","authorization"]}}},{"node":{"frontmatter":{"tags":["javascript","asynchronous"]}}},{"node":{"frontmatter":{"tags":["java","string","immutable"]}}},{"node":{"frontmatter":{"tags":["transaction","jpa"]}}},{"node":{"frontmatter":{"tags":["test","isolation"]}}},{"node":{"frontmatter":{"tags":["build"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["test-double","test"]}}},{"node":{"frontmatter":{"tags":["jpa","entity","transaction","security"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["spring","validation"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["properties"]}}},{"node":{"frontmatter":{"tags":["spring","test"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring","etag"]}}},{"node":{"frontmatter":{"tags":["stream","collection","loop"]}}},{"node":{"frontmatter":{"tags":["event"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["security","test"]}}},{"node":{"frontmatter":{"tags":["test","mockito"]}}},{"node":{"frontmatter":{"tags":["loop"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["java","test"]}}},{"node":{"frontmatter":{"tags":["java","oop"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["jpa"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["java","singleton"]}}},{"node":{"frontmatter":{"tags":["java","generics"]}}},{"node":{"frontmatter":{"tags":["java","dto","spring","mvc","layered-architecture"]}}},{"node":{"frontmatter":{"tags":["hoisting"]}}},{"node":{"frontmatter":{"tags":["javascript","react"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":[]}}},{"node":{"frontmatter":{"tags":["ui/ux","css","css-in-js","darkmode"]}}},{"node":{"frontmatter":{"tags":["immutable","collection"]}}},{"node":{"frontmatter":{"tags":["java","oop"]}}},{"node":{"frontmatter":{"tags":["java","mvc"]}}},{"node":{"frontmatter":{"tags":["refactoring"]}}},{"node":{"frontmatter":{"tags":["design-pattern"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["dom-element"]}}},{"node":{"frontmatter":{"tags":["java","spring"]}}},{"node":{"frontmatter":{"tags":["spring-boot"]}}},{"node":{"frontmatter":{"tags":["java","stack","deque"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["refactoring","design-pattern"]}}},{"node":{"frontmatter":{"tags":["react","ref"]}}},{"node":{"frontmatter":{"tags":["react"]}}},{"node":{"frontmatter":{"tags":["spring","dto","vo","entity"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["jwt","web"]}}},{"node":{"frontmatter":{"tags":["html","form"]}}},{"node":{"frontmatter":{"tags":["http"]}}},{"node":{"frontmatter":{"tags":["stream"]}}},{"node":{"frontmatter":{"tags":["refactoring"]}}},{"node":{"frontmatter":{"tags":["typescript"]}}},{"node":{"frontmatter":{"tags":["spring-boot"]}}},{"node":{"frontmatter":{"tags":["iteration-protocols","iterable","iterator"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring","transactional"]}}},{"node":{"frontmatter":{"tags":["test","unit-test","integration-test","acceptance-test"]}}},{"node":{"frontmatter":{"tags":["prototype","oop","class"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["optional","null"]}}},{"node":{"frontmatter":{"tags":["typescript"]}}},{"node":{"frontmatter":{"tags":["validation"]}}},{"node":{"frontmatter":{"tags":["spring","aop"]}}},{"node":{"frontmatter":{"tags":["spring","bean"]}}},{"node":{"frontmatter":{"tags":["spring","spring-mvc","dispatcherservlet"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["message","msa"]}}},{"node":{"frontmatter":{"tags":["babel"]}}},{"node":{"frontmatter":{"tags":["git"]}}},{"node":{"frontmatter":{"tags":["oauth"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["database","transaction"]}}},{"node":{"frontmatter":{"tags":["suspense","react"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["react","library","npm"]}}},{"node":{"frontmatter":{"tags":["vim"]}}},{"node":{"frontmatter":{"tags":["springboot","exception"]}}},{"node":{"frontmatter":{"tags":["service","test"]}}},{"node":{"frontmatter":{"tags":["function","Overloading"]}}},{"node":{"frontmatter":{"tags":["spring","spring mvc","dispatcherservlet"]}}},{"node":{"frontmatter":{"tags":["git"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["closure","javascript"]}}},{"node":{"frontmatter":{"tags":["react","concurrent-mode"]}}},{"node":{"frontmatter":{"tags":["spring","jpa"]}}},{"node":{"frontmatter":{"tags":["spring","resttemplate","webclient"]}}},{"node":{"frontmatter":{"tags":["react","cypress","test"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["lxc"]}}},{"node":{"frontmatter":{"tags":["web-server","nginx"]}}},{"node":{"frontmatter":{"tags":["email","async","event"]}}},{"node":{"frontmatter":{"tags":["git","submodule"]}}},{"node":{"frontmatter":{"tags":["log","logging","slf4j","logback"]}}},{"node":{"frontmatter":{"tags":["최적화"]}}},{"node":{"frontmatter":{"tags":["jpa","querydsl"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["PWA"]}}},{"node":{"frontmatter":{"tags":["react","error","error-handling"]}}},{"node":{"frontmatter":{"tags":["test-automation"]}}},{"node":{"frontmatter":{"tags":["infra"]}}},{"node":{"frontmatter":{"tags":["docker"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["jpa"]}}},{"node":{"frontmatter":{"tags":["spring","jpa"]}}},{"node":{"frontmatter":{"tags":["jpg","png","svg","gif"]}}},{"node":{"frontmatter":{"tags":["event","web"]}}},{"node":{"frontmatter":{"tags":["event-loop","javascript"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["static-web-page"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["log","visualization","ELK"]}}},{"node":{"frontmatter":{"tags":["Redis"]}}},{"node":{"frontmatter":{"tags":["database"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["gradle","build"]}}},{"node":{"frontmatter":{"tags":["csr","ssr","react"]}}},{"node":{"frontmatter":{"tags":["race-condition","비동기"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["database"]}}},{"node":{"frontmatter":{"tags":["java","thread","thread-pool"]}}},{"node":{"frontmatter":{"tags":["database","replication","clustering"]}}},{"node":{"frontmatter":{"tags":["message-queue"]}}},{"node":{"frontmatter":{"tags":["http","nginx"]}}},{"node":{"frontmatter":{"tags":["Github Actions","deployment","aws"]}}},{"node":{"frontmatter":{"tags":["http","https"]}}},{"node":{"frontmatter":{"tags":["java","java8","functional-programming"]}}},{"node":{"frontmatter":{"tags":["error-handling","react-query"]}}},{"node":{"frontmatter":{"tags":["tcp","ip","network"]}}},{"node":{"frontmatter":{"tags":["design-pattern"]}}},{"node":{"frontmatter":{"tags":["infra"]}}},{"node":{"frontmatter":{"tags":["database","index","covering index"]}}},{"node":{"frontmatter":{"tags":["scale-up","scale-out"]}}},{"node":{"frontmatter":{"tags":["springboot"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["database","elasticsearch","spring"]}}},{"node":{"frontmatter":{"tags":["refresh token","ssr"]}}},{"node":{"frontmatter":{"tags":["asynchronous","synchronous","webclient"]}}},{"node":{"frontmatter":{"tags":["react-testing-library"]}}},{"node":{"frontmatter":{"tags":["database","flyway"]}}},{"node":{"frontmatter":{"tags":["java","synchronized","monitor"]}}},{"node":{"frontmatter":{"tags":["browser-rendering"]}}},{"node":{"frontmatter":{"tags":["svg"]}}},{"node":{"frontmatter":{"tags":["component","dependency"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["hashmap"]}}},{"node":{"frontmatter":{"tags":["infra","kubernetes"]}}},{"node":{"frontmatter":{"tags":["load-balancing"]}}},{"node":{"frontmatter":{"tags":["chart","stroke-dasharray","stroke-dashoffset"]}}},{"node":{"frontmatter":{"tags":["websocket","web-socket","spring"]}}},{"node":{"frontmatter":{"tags":["solid","dip"]}}},{"node":{"frontmatter":{"tags":["functional-interface","lambda"]}}},{"node":{"frontmatter":{"tags":["springboot","exception"]}}},{"node":{"frontmatter":{"tags":["WebAssembly","웹어셈블리"]}}},{"node":{"frontmatter":{"tags":["hashmap","hashtable","concurrenthashmap"]}}},{"node":{"frontmatter":{"tags":["nginx","image","cache"]}}},{"node":{"frontmatter":{"tags":["docker"]}}},{"node":{"frontmatter":{"tags":["transactional"]}}},{"node":{"frontmatter":{"tags":["composite","layer","렌더링"]}}},{"node":{"frontmatter":{"tags":["React","ErrorHandling"]}}},{"node":{"frontmatter":{"tags":["spring-boot","yml"]}}},{"node":{"frontmatter":{"tags":["sse","spring"]}}},{"node":{"frontmatter":{"tags":["Test","Spring Boot"]}}},{"node":{"frontmatter":{"tags":["JPA","hibernate"]}}},{"node":{"frontmatter":{"tags":["slack"]}}},{"node":{"frontmatter":{"tags":["git","github","merge"]}}},{"node":{"frontmatter":{"tags":["OpenID","OAuth2.0"]}}},{"node":{"frontmatter":{"tags":["무중단배포"]}}},{"node":{"frontmatter":{"tags":["Mysql","DeadLock"]}}},{"node":{"frontmatter":{"tags":["Transaction","Isolation-Level"]}}},{"node":{"frontmatter":{"tags":["aop","proxy","transaction"]}}},{"node":{"frontmatter":{"tags":["typescript","interface","type"]}}},{"node":{"frontmatter":{"tags":["spring","event"]}}},{"node":{"frontmatter":{"tags":["DAO","Repository","Data persistence"]}}},{"node":{"frontmatter":{"tags":["web","image","optimization"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["JDBC"]}}},{"node":{"frontmatter":{"tags":["react"]}}},{"node":{"frontmatter":{"tags":["Network"]}}},{"node":{"frontmatter":{"tags":["JPA","Cascade"]}}},{"node":{"frontmatter":{"tags":["TanStack Query","optimistic-update","optimistic-UI"]}}},{"node":{"frontmatter":{"tags":["concurrency","transaction","transactional"]}}},{"node":{"frontmatter":{"tags":["concurrency","lock"]}}},{"node":{"frontmatter":{"tags":["AWS","EC2","VPC"]}}},{"node":{"frontmatter":{"tags":["AWS","EC2","subnet","network"]}}},{"node":{"frontmatter":{"tags":["JPA","MYSQL","SPATIAL","INDEX"]}}},{"node":{"frontmatter":{"tags":["query","sub-query","join"]}}},{"node":{"frontmatter":{"tags":["useLayoutEffect","rendering optimization","react","google map api"]}}},{"node":{"frontmatter":{"tags":["ANDROID","MULTIPART","IMAGE","UPLOAD","ARCHITECTURE"]}}},{"node":{"frontmatter":{"tags":["Web"]}}},{"node":{"frontmatter":{"tags":["JPA"]}}},{"node":{"frontmatter":{"tags":["Test","Testcontainers"]}}},{"node":{"frontmatter":{"tags":["Database"]}}},{"node":{"frontmatter":{"tags":["Database"]}}},{"node":{"frontmatter":{"tags":["parallelism","parallel stream","CompletableFuture"]}}},{"node":{"frontmatter":{"tags":["test","cypress"]}}},{"node":{"frontmatter":{"tags":["MySQL","동시성","반정규화"]}}},{"node":{"frontmatter":{"tags":["JPA"]}}}]}}} \ No newline at end of file +{"data":{"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["naming","convention"]}}},{"node":{"frontmatter":{"tags":["naming","convention"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic","oop"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["clean-code","recursion"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["hard-coding","clean-code"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["clean-code","refactoring"]}}},{"node":{"frontmatter":{"tags":["stream","functional-programming"]}}},{"node":{"frontmatter":{"tags":["interface","refactoring","test"]}}},{"node":{"frontmatter":{"tags":["collection"]}}},{"node":{"frontmatter":{"tags":["immutable","refactoring"]}}},{"node":{"frontmatter":{"tags":["oop","composition","inheritance","clean-code"]}}},{"node":{"frontmatter":{"tags":["static-factory-method"]}}},{"node":{"frontmatter":{"tags":["oop","object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["law-of-demeter","clean-code","object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic"]}}},{"node":{"frontmatter":{"tags":["value-object","immutable"]}}},{"node":{"frontmatter":{"tags":["class","immutable","refactoring"]}}},{"node":{"frontmatter":{"tags":["cache"]}}},{"node":{"frontmatter":{"tags":["reflection"]}}},{"node":{"frontmatter":{"tags":["static","static-factory-method","static-method","oop"]}}},{"node":{"frontmatter":{"tags":["interface"]}}},{"node":{"frontmatter":{"tags":["architecture"]}}},{"node":{"frontmatter":{"tags":["spring","di"]}}},{"node":{"frontmatter":{"tags":["asynchronous","api"]}}},{"node":{"frontmatter":{"tags":["exception"]}}},{"node":{"frontmatter":{"tags":["object-calisthenic","oop","clean-code","enum"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["spring","spring-boot","logback","logger"]}}},{"node":{"frontmatter":{"tags":["test","dynamic-test"]}}},{"node":{"frontmatter":{"tags":["oop","clean-code"]}}},{"node":{"frontmatter":{"tags":["design-pattern","class"]}}},{"node":{"frontmatter":{"tags":["exception","custom-exception"]}}},{"node":{"frontmatter":{"tags":["http-method","put","patch"]}}},{"node":{"frontmatter":{"tags":["oop","interface","functional-programming","enum"]}}},{"node":{"frontmatter":{"tags":["spring","docs"]}}},{"node":{"frontmatter":{"tags":["spring","test"]}}},{"node":{"frontmatter":{"tags":["dto","entity"]}}},{"node":{"frontmatter":{"tags":["jpa","entity","transaction"]}}},{"node":{"frontmatter":{"tags":["http","status-code"]}}},{"node":{"frontmatter":{"tags":["loop"]}}},{"node":{"frontmatter":{"tags":["jpa","transaction","test"]}}},{"node":{"frontmatter":{"tags":["spring","docs"]}}},{"node":{"frontmatter":{"tags":["token","authorization"]}}},{"node":{"frontmatter":{"tags":["javascript","asynchronous"]}}},{"node":{"frontmatter":{"tags":["java","string","immutable"]}}},{"node":{"frontmatter":{"tags":["transaction","jpa"]}}},{"node":{"frontmatter":{"tags":["test","isolation"]}}},{"node":{"frontmatter":{"tags":["build"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["test-double","test"]}}},{"node":{"frontmatter":{"tags":["jpa","entity","transaction","security"]}}},{"node":{"frontmatter":{"tags":["refactoring","test"]}}},{"node":{"frontmatter":{"tags":["spring","validation"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["properties"]}}},{"node":{"frontmatter":{"tags":["spring","test"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring","etag"]}}},{"node":{"frontmatter":{"tags":["stream","collection","loop"]}}},{"node":{"frontmatter":{"tags":["event"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["security","test"]}}},{"node":{"frontmatter":{"tags":["test","mockito"]}}},{"node":{"frontmatter":{"tags":["loop"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["java","test"]}}},{"node":{"frontmatter":{"tags":["java","oop"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["jpa"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["java","singleton"]}}},{"node":{"frontmatter":{"tags":["java","generics"]}}},{"node":{"frontmatter":{"tags":["java","dto","spring","mvc","layered-architecture"]}}},{"node":{"frontmatter":{"tags":["hoisting"]}}},{"node":{"frontmatter":{"tags":["javascript","react"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":[]}}},{"node":{"frontmatter":{"tags":["ui/ux","css","css-in-js","darkmode"]}}},{"node":{"frontmatter":{"tags":["immutable","collection"]}}},{"node":{"frontmatter":{"tags":["java","oop"]}}},{"node":{"frontmatter":{"tags":["java","mvc"]}}},{"node":{"frontmatter":{"tags":["refactoring"]}}},{"node":{"frontmatter":{"tags":["design-pattern"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["dom-element"]}}},{"node":{"frontmatter":{"tags":["java","spring"]}}},{"node":{"frontmatter":{"tags":["spring-boot"]}}},{"node":{"frontmatter":{"tags":["java","stack","deque"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["refactoring","design-pattern"]}}},{"node":{"frontmatter":{"tags":["react","ref"]}}},{"node":{"frontmatter":{"tags":["react"]}}},{"node":{"frontmatter":{"tags":["java"]}}},{"node":{"frontmatter":{"tags":["spring","dto","vo","entity"]}}},{"node":{"frontmatter":{"tags":["test"]}}},{"node":{"frontmatter":{"tags":["jwt","web"]}}},{"node":{"frontmatter":{"tags":["html","form"]}}},{"node":{"frontmatter":{"tags":["http"]}}},{"node":{"frontmatter":{"tags":["stream"]}}},{"node":{"frontmatter":{"tags":["refactoring"]}}},{"node":{"frontmatter":{"tags":["typescript"]}}},{"node":{"frontmatter":{"tags":["spring-boot"]}}},{"node":{"frontmatter":{"tags":["iteration-protocols","iterable","iterator"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring","transactional"]}}},{"node":{"frontmatter":{"tags":["test","unit-test","integration-test","acceptance-test"]}}},{"node":{"frontmatter":{"tags":["prototype","oop","class"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["optional","null"]}}},{"node":{"frontmatter":{"tags":["typescript"]}}},{"node":{"frontmatter":{"tags":["validation"]}}},{"node":{"frontmatter":{"tags":["spring","aop"]}}},{"node":{"frontmatter":{"tags":["spring","bean"]}}},{"node":{"frontmatter":{"tags":["spring","spring-mvc","dispatcherservlet"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["message","msa"]}}},{"node":{"frontmatter":{"tags":["babel"]}}},{"node":{"frontmatter":{"tags":["git"]}}},{"node":{"frontmatter":{"tags":["oauth"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["database","transaction"]}}},{"node":{"frontmatter":{"tags":["suspense","react"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["react","library","npm"]}}},{"node":{"frontmatter":{"tags":["vim"]}}},{"node":{"frontmatter":{"tags":["spring","spring mvc","dispatcherservlet"]}}},{"node":{"frontmatter":{"tags":["git"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["closure","javascript"]}}},{"node":{"frontmatter":{"tags":["react","concurrent-mode"]}}},{"node":{"frontmatter":{"tags":["spring","resttemplate","webclient"]}}},{"node":{"frontmatter":{"tags":["spring","jpa"]}}},{"node":{"frontmatter":{"tags":["react","cypress","test"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["lxc"]}}},{"node":{"frontmatter":{"tags":["web-server","nginx"]}}},{"node":{"frontmatter":{"tags":["email","async","event"]}}},{"node":{"frontmatter":{"tags":["git","submodule"]}}},{"node":{"frontmatter":{"tags":["최적화"]}}},{"node":{"frontmatter":{"tags":["log","logging","slf4j","logback"]}}},{"node":{"frontmatter":{"tags":["jpa","querydsl"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["PWA"]}}},{"node":{"frontmatter":{"tags":["react","error","error-handling"]}}},{"node":{"frontmatter":{"tags":["test-automation"]}}},{"node":{"frontmatter":{"tags":["infra"]}}},{"node":{"frontmatter":{"tags":["docker"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["jpa"]}}},{"node":{"frontmatter":{"tags":["spring","jpa"]}}},{"node":{"frontmatter":{"tags":["jpg","png","svg","gif"]}}},{"node":{"frontmatter":{"tags":["event","web"]}}},{"node":{"frontmatter":{"tags":["event-loop","javascript"]}}},{"node":{"frontmatter":{"tags":["jvm"]}}},{"node":{"frontmatter":{"tags":["static-web-page"]}}},{"node":{"frontmatter":{"tags":["webpack"]}}},{"node":{"frontmatter":{"tags":["log","visualization","ELK"]}}},{"node":{"frontmatter":{"tags":["Redis"]}}},{"node":{"frontmatter":{"tags":["database"]}}},{"node":{"frontmatter":{"tags":["websocket"]}}},{"node":{"frontmatter":{"tags":["gradle","build"]}}},{"node":{"frontmatter":{"tags":["csr","ssr","react"]}}},{"node":{"frontmatter":{"tags":["race-condition","비동기"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["database"]}}},{"node":{"frontmatter":{"tags":["java","thread","thread-pool"]}}},{"node":{"frontmatter":{"tags":["database","replication","clustering"]}}},{"node":{"frontmatter":{"tags":["message-queue"]}}},{"node":{"frontmatter":{"tags":["http","nginx"]}}},{"node":{"frontmatter":{"tags":["Github Actions","deployment","aws"]}}},{"node":{"frontmatter":{"tags":["http","https"]}}},{"node":{"frontmatter":{"tags":["java","java8","functional-programming"]}}},{"node":{"frontmatter":{"tags":["error-handling","react-query"]}}},{"node":{"frontmatter":{"tags":["tcp","ip","network"]}}},{"node":{"frontmatter":{"tags":["design-pattern"]}}},{"node":{"frontmatter":{"tags":["infra"]}}},{"node":{"frontmatter":{"tags":["database","index","covering index"]}}},{"node":{"frontmatter":{"tags":["scale-up","scale-out"]}}},{"node":{"frontmatter":{"tags":["springboot"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["database","elasticsearch","spring"]}}},{"node":{"frontmatter":{"tags":["refresh token","ssr"]}}},{"node":{"frontmatter":{"tags":["asynchronous","synchronous","webclient"]}}},{"node":{"frontmatter":{"tags":["react-testing-library"]}}},{"node":{"frontmatter":{"tags":["database","flyway"]}}},{"node":{"frontmatter":{"tags":["java","synchronized","monitor"]}}},{"node":{"frontmatter":{"tags":["browser-rendering"]}}},{"node":{"frontmatter":{"tags":["svg"]}}},{"node":{"frontmatter":{"tags":["springboot","exception"]}}},{"node":{"frontmatter":{"tags":["component","dependency"]}}},{"node":{"frontmatter":{"tags":["linux"]}}},{"node":{"frontmatter":{"tags":["hashmap"]}}},{"node":{"frontmatter":{"tags":["infra","kubernetes"]}}},{"node":{"frontmatter":{"tags":["load-balancing"]}}},{"node":{"frontmatter":{"tags":["chart","stroke-dasharray","stroke-dashoffset"]}}},{"node":{"frontmatter":{"tags":["websocket","web-socket","spring"]}}},{"node":{"frontmatter":{"tags":["solid","dip"]}}},{"node":{"frontmatter":{"tags":["functional-interface","lambda"]}}},{"node":{"frontmatter":{"tags":["springboot","exception"]}}},{"node":{"frontmatter":{"tags":["WebAssembly","웹어셈블리"]}}},{"node":{"frontmatter":{"tags":["hashmap","hashtable","concurrenthashmap"]}}},{"node":{"frontmatter":{"tags":["nginx","image","cache"]}}},{"node":{"frontmatter":{"tags":["docker"]}}},{"node":{"frontmatter":{"tags":["transactional"]}}},{"node":{"frontmatter":{"tags":["composite","layer","렌더링"]}}},{"node":{"frontmatter":{"tags":["React","ErrorHandling"]}}},{"node":{"frontmatter":{"tags":["spring-boot","yml"]}}},{"node":{"frontmatter":{"tags":["service","test"]}}},{"node":{"frontmatter":{"tags":["MySQL","동시성","반정규화"]}}},{"node":{"frontmatter":{"tags":["JPA"]}}},{"node":{"frontmatter":{"tags":["sse","spring"]}}},{"node":{"frontmatter":{"tags":["test","cypress"]}}},{"node":{"frontmatter":{"tags":["function","Overloading"]}}},{"node":{"frontmatter":{"tags":["Test","Spring Boot"]}}},{"node":{"frontmatter":{"tags":["JPA","hibernate"]}}},{"node":{"frontmatter":{"tags":["slack"]}}},{"node":{"frontmatter":{"tags":["git","github","merge"]}}},{"node":{"frontmatter":{"tags":["OpenID","OAuth2.0"]}}},{"node":{"frontmatter":{"tags":["무중단배포"]}}},{"node":{"frontmatter":{"tags":["Mysql","DeadLock"]}}},{"node":{"frontmatter":{"tags":["Transaction","Isolation-Level"]}}},{"node":{"frontmatter":{"tags":["aop","proxy","transaction"]}}},{"node":{"frontmatter":{"tags":["typescript","interface","type"]}}},{"node":{"frontmatter":{"tags":["spring","event"]}}},{"node":{"frontmatter":{"tags":["DAO","Repository","Data persistence"]}}},{"node":{"frontmatter":{"tags":["web","image","optimization"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["spring"]}}},{"node":{"frontmatter":{"tags":["JDBC"]}}},{"node":{"frontmatter":{"tags":["react"]}}},{"node":{"frontmatter":{"tags":["Network"]}}},{"node":{"frontmatter":{"tags":["JPA","Cascade"]}}},{"node":{"frontmatter":{"tags":["TanStack Query","optimistic-update","optimistic-UI"]}}},{"node":{"frontmatter":{"tags":["concurrency","transaction","transactional"]}}},{"node":{"frontmatter":{"tags":["concurrency","lock"]}}},{"node":{"frontmatter":{"tags":["AWS","EC2","VPC"]}}},{"node":{"frontmatter":{"tags":["AWS","EC2","subnet","network"]}}},{"node":{"frontmatter":{"tags":["JPA","MYSQL","SPATIAL","INDEX"]}}},{"node":{"frontmatter":{"tags":["query","sub-query","join"]}}},{"node":{"frontmatter":{"tags":["useLayoutEffect","rendering optimization","react","google map api"]}}},{"node":{"frontmatter":{"tags":["ANDROID","MULTIPART","IMAGE","UPLOAD","ARCHITECTURE"]}}},{"node":{"frontmatter":{"tags":["Web"]}}},{"node":{"frontmatter":{"tags":["JPA"]}}},{"node":{"frontmatter":{"tags":["Test","Testcontainers"]}}},{"node":{"frontmatter":{"tags":["Database"]}}},{"node":{"frontmatter":{"tags":["Database"]}}},{"node":{"frontmatter":{"tags":["parallelism","parallel stream","CompletableFuture"]}}}]}}} \ No newline at end of file diff --git a/rss.xml b/rss.xml index 6980bbbbd..dc82b790d 100644 --- a/rss.xml +++ b/rss.xml @@ -1,4 +1,4 @@ -<![CDATA[Tecoble]]>https://tecoble.techcourse.co.krGatsbyJSMon, 27 Nov 2023 05:52:54 GMT<![CDATA[다중 이미지 업로드 최적화: 병렬 스트림과 CompletableFuture]]>https://tecoble.techcourse.co.kr/post/2023-11-23-multiple-image-upload/https://tecoble.techcourse.co.kr/post/2023-11-23-multiple-image-upload/Thu, 23 Nov 2023 13:00:00 GMT<p>사이드 프로젝트로 sns 서비스를 개발하며 사용자가 다수의 이미지를 업로드하는 기능을 개발하게 되었다. +<![CDATA[Tecoble]]>https://tecoble.techcourse.co.krGatsbyJSFri, 01 Dec 2023 07:38:52 GMT<![CDATA[다중 이미지 업로드 최적화: 병렬 스트림과 CompletableFuture]]>https://tecoble.techcourse.co.kr/post/2023-11-23-multiple-image-upload/https://tecoble.techcourse.co.kr/post/2023-11-23-multiple-image-upload/Thu, 23 Nov 2023 13:00:00 GMT<p>사이드 프로젝트로 sns 서비스를 개발하며 사용자가 다수의 이미지를 업로드하는 기능을 개발하게 되었다. 웹 애플리케이션에서 다중 이미지 업로드는 일반적이며, 이를 효율적으로 처리하는 것은 사용자 경험 향상에 중요한 역할을 한다.</p> <p>그렇다면 서버 측에서는 여러 장의 이미지를 어떻게 효율적으로 업로드할 수 있을까?</p> <p>이 글에서는 구체적인 이미지 저장 방법(로컬 스토리지 저장, 클라우드 서비스 사용, DB에 바이너리 데이터로 저장 등)을 떠나, 이미지 업로드 과정을 어떻게 하면 더 효율적이고 빠르게 처리할 수 있을지에 집중해 보고자 한다.