분류 전체보기
Same-origin Policy, CORS
Same-origin Policy, CORS
2020.06.14Same-origin Policy와 CORS https://en.wikipedia.org/wiki/Same-origin_policy 영문 위키가 젤잘나와있음. 시나리오까지. W3C spec Same-origin Policy란? 스크립트에 적용되는 정책이며, 스크립트 내에서 다른 리소스, 데이터를 요청할 때 요청지와 데이터 출처가 Same-origin이 아니면 막는 정책 현재 스크립트를 실행하고 있는 주소와 (프로토콜, 호스트, 포트)가 동일한 주소를 Same-origin으로 판단한다. 이는 브라우저가 `` document.domain``을 보고 판단함. 좀 더 정확히는, Cross-origin read를 막는다. https://developer.mozilla.org/ko/docs/Web/Security/..
[Java] Enum to Json / Enum to Object
[Java] Enum to Json / Enum to Object
2020.04.27EnumConstant 하나를 `` {fieldName:fieldValue}`` 형식으로 매핑하고 싶은 경우가 있다 ( 주로 뷰로 전달해야 할 때. ) 기본적으로 jackson의 ObjectMapper는 serialize/deserialize 할 때 Enum 코드만 내려주도록 되어 있다. 즉, ``java PaymentCode.CARD``를 변환하면 ``java "CARD"``가 된다. ``java {code=1, koName="카드", enName="card"}`` 형태로 내려주려면, 뭔가 해줘야 한다 방법 1 ) Jackson / ObjectMapper를 사용하고 싶은 경우 방법 1-1 ) @JsonFormat.Shape.OBJECT key:value 쌍을 내려주고 싶은 경우를 대비해 jackson은..
MobX
MobX
2020.04.13MobX MobX와 React Context를 모두 사용하여 [store -> context(provider), useHoC -> container] 구조로 사용 중 :: HoC? High-order Component 벨로퍼트 - 리액트 Context API 파헤치기 예제에서는 context, useHoc -> container 만 사용 https://mobx.js.org/getting-started 기본 개념. 상태 변화 감지. Store, Observer 개념 예제에서는 Store, Container(View) 만 사용 https://ko.mobx.js.org/react-integration.html 더 상세한 설명. code snippet 등등... 대체로 여기서(좌측 메뉴들) 찾아보면 됨. Rea..
RestTemplate은 어떻게 response Object를 DataType <T>로 변환하는가
RestTemplate은 어떻게 response Object를 DataType <T>로 변환하는가
2020.03.27원래 그 데이터 타입으로는 캐스팅 가능 ```kt @Test fun `테스트`() { val obj: Object = Coffee("id", "name") as Object val coffee: Coffee = obj as Coffee // 이건 원래 그 데이터가 Coffee라서 가능 val obj2: Object = Object() val coffee2: Coffee = obj2 as Coffee // 이건 불가능. id 속성이랑 name 속성이 없으니까 당연 불가능하다 } ``` RestTemplate의 response Object -> T type casting 과정 RestTemplate도 내부적으로는 `` (T)`` 캐스팅을 이용하게 되는데 ``kt extractData()``에서 비검사 형변환..
Promise / Future에 대한 개념 정리
Promise / Future에 대한 개념 정리
2020.03.20Promise / Future란? `` Future``는 미래에 실행이 완료될 것으로 예상되는 객체를 의미한다. 따라서 아직 실행되지 않은 경우나, 실행 중이지만 아직 완료되지 않은 경우를 포함하는 개념임. Future 객체에 요청한 값이 들어오기를 기다리는 동안 다른 연산을 수행할 수 있다. `` Promise`` 기본적으로 Future와 비슷하지만, Future는 외부에서 완료된 결과가 들어오기만 하므로 read-only, Promise는 강제로 내가 complete 할 수 있는 메서드를 제공한다는 차이점이 있다. (그래서 completable) 자바에서 `` Promise == CompletableFuture`` `` .complete()`` 라는 메서드를 제공하고 있음. https://stacko..
[Kotlin] Serialization: Gson, Jackson
[Kotlin] Serialization: Gson, Jackson
2020.03.19[Java] Jackson ObjectMapper Serialization Jackson 역직렬화 시 발생할 수 있는 에러 ( jacksonObjectMapper() ) ```javastacktrace InvalidDefinitionException: Cannot construct instance of `com.test.example.data.Coffee` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator) ``` redis에서 받아와서 kotlin data 클래스인 Coffee에 넣으려고 하는데 발생 Jackson이 Deserializ..
[Spring] resources 경로 문제
[Spring] resources 경로 문제
2020.03.18*** Spring에 대한 내용과 Jar에 대한 내용이 섞여있어서... 적당히 분리해서 이해해야 함. resources 이하에 있는 파일들(.yml, .properties, 인증서 등)은 컴파일 타임에 CLASS_PATH로 이동하여 함께 포함되어 빌드된다. spring의 경우 target/classes에 위치. jar로 컴파일 하도록 했으면 .jar에 포함된다. 그래서 리소스를 ClassPath 사용해서 제대로 불러왔다면 `` build/resources``를 통째로 날려도 잘 실행 된다. yml 등은 알아서 jar 내에 있는 것을 사용한다. 다만 소스코드 내에서 ClassPath를 쓰지 않고 그냥 File에 접근하게 되면, 실제 파일시스템에 있는 해당 경로로 가서 해당 파일이 있는지를 찾는다. 이 때 ..
Netty
Netty
2020.03.12https://github.com/netty/netty/wiki/User-guide-for-4.x https://netty.io/wiki/user-guide-for-4.x.html 공식 docs가 최고야! Netty가 무엇인가? Netty is an asynchronous event-driven network application framework. Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming s..
redis - java persistence
redis - java persistence
2020.03.10[redis - infra, cli] Java Redis Client는 다음 두 가지 Jedis Lettuce SpringBoot 2.0부터 lettuce가 기본 Client Lettuce is a fully non-blocking Redis client built with netty providing Reactive, Asynchronous and Synchronous Data Access . https://github.com/lettuce-io/lettuce-core/wiki/Connection-Pooling spring-boot-starter-data-redis-reactive 연동 build.gradle.kts ```kt implementation("org.springframework.boot:s..
맥북 <> 안드로이드 간 무선 파일 전송
맥북 <> 안드로이드 간 무선 파일 전송
2020.03.10Catalina 10.15.3 Mac -> Android 파일 전송 공유 폴더 열어놨으면 이거 써도 되고 그냥 맥에 파이썬 등으로 간단한 웹서버 열어서 다운로드 받아도 된다 이 때 jar 파일 같이 브라우저에서 다운로드 경고 하는 것은, 브라우저 통해서 다운로드 받으면 파일이 변질되는 경우가 있다. 아마 검사하면서 그런 듯? 용량 동일한데 브라우저로 다운로드 받은 jar 파일은 오류나고, 다른 수단으로 전달한jar 파일은 정상 실행 된다. 이건 별로 문제가 안되는데, 반대 방향이 문제. Android -> Mac 으로 파일 전송 "디바이스로 보내기" (SmartThings) 파일이 임시로 삼성 클라우드에 업로드 된 후에 디바이스로 전송되기 때문에 비추. 한 번에 1GB, 하루에 2GB까지만 공유 가능 "..
[tomcat] 톰캣, jvm 실행 인자
[tomcat] 톰캣, jvm 실행 인자
2020.03.05tomcat이 하는 일? = Servlet Container Java Servlet 이란 자바에는 요청을 받아서 처리하는 일을 담당하는, servlet이라는 actor가 있음. 요청을 받으면 서블릿은 자기가 알아서 실행되는게 아니라 서블릿을 실행하는 주체가 따로 있다. 이게 바로 서블릿 컨테이너. 즉, 요청을 받으면 서블릿을 해당 요청을 파라미터로 실행해주는게 서블릿 컨테이너이고, tomcat이 바로 서블릿 컨테이너다. tomcat log tomcat 로그에 찍히는 log는 여러 스레드가 동시에 기록하기 때문에, 한 세션의 요청이 연속해서 바로 뒤이은 로그에 찍혀있지 않을 수 있다. 그래서 로그를 추적하기 위해 exec-* 번호를 같이 기록해 주는데, 이는 스레드 번호를 의미한다. 로그는 이 exec-*..
[Spring] DB 관련 : Mybatis
[Spring] DB 관련 : Mybatis
2020.03.04Mybatis가 쿼리를 처리하는 방식? 스프링에서는 DB 커넥션을 어떻게 처리하는가? 쿼리 하나 날릴 때 마다 Connection을 맺고 끊는건 비효율적이므로, Connection Pool을 구성하여 Connection을 생성해두고, DB를 사용해야 할 때 Pool에서 커넥션을 빌려 쓰고 반납하게 되어 있다. Spring에서 제공하는 Connection Pool 인터페이스가 바로 `` DataSource`` 각 driver vendor들은 자사 규격에 맞게 `` DataSource`` 인터페이스를 구현해서 제공하고 있음!(커넥션 풀 구현체) ojdbc의 `` OracleDataSource`` jdbc의 `` ~~DataSource`` 각 벤더가 만들어 제공하는게 맞는게, Connection object를..