Languages & Frameworks
[Spring] DB 관련 : Mybatis CustomTypeHandler
2021.03.31 : Languages & Frameworks/SpringjdbcType : nullable column에 null이 들어갈 때? MyBatis는 nullable 컬럼의 parameter로 null이 넘어왔을 때, jdbcType이 명시되어 있지 않으면 TypeException을 던진다. setNull로 해당 타입에 맞는 null값(VARCHAR인 경우 "")을 넣어줘야 하는데, 뭘 넣어줄지 모르니까 예외가 발생하는 것 The JDBC Type is required by JDBC for all nullable columns, if null is passed as a value. You can investigate this yourself by reading the JavaDocs for the PreparedStatement.setNull() method. [..
[Spring] WebClient
2021.03.14 : Languages & Frameworks/Spring왜 WebClient ?: RestTemplate은 deprecated 예정. docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern API and supports syn..
[Kotlin] java의 static final 변수에 대응되는 것은?
2021.02.11 : Languages & Frameworks/Kotlin```kt class KakaoAuthHelper { companion object { const val REDIRECT_URI = "http://webpage-observer" val AUTHZ_CODE_URL = "https://kauth.kakao.com/oauth/authorize?client_id=${KakaoConfig.app_rest_api_key}&redirect_uri=${REDIRECT_URI}&response_type=code" } } ``` AUTHZ_CODE_URL은 변수가 들어가야 해서 const를 안붙였지만... Byte Code -> Java Decompile 해보면 ```java public static final String REDIRECT_URI = "http://web..
[Java] Collection 초기화
2020.11.02 : Languages & Frameworks/Javawww.baeldung.com/java-init-list-one-line www.baeldung.com/java-initialize-hashmap www.baeldung.com/java-combine-multiple-collections 자바의 immutable? ```java private static final Thing[] PRIVATE_VALUES = { ... }; public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)); ``` ```java return ImmutableMap.of( key1, value1, key2, value2); ImmutableMap.builder() .put..
[Java8] CompletableFuture
2020.10.13 : Languages & Frameworks/Java-asyncCompleatbleFuture에 대해 https://medium.com/@chanhyeonglee/completable-future-가이드-part-1 https://medium.com/@chanhyeonglee/completable-future-가이드-part-2 https://medium.com/@chanhyeonglee/completable-future-가이드-part-3 thenCompose VS thenApply thenCompose VS thenApply thenCompose는 Future 다음에 또 다른 Future를 이어서 실행하게끔 연결할 때 사용 thenApply는 Future 결과를 받았을 때 반환 전에 어떤 처리를 apply 할 때 사용 exception handling : exc..
[Python] 파이썬 버전, 패키지 관리
2020.10.10 : Languages & Frameworks/Pythonpyenv / venv / virtualenv / conda 비교 pyenv macos만 지원. 했었는데 요즘은 어떤지 모르겠네. venv python에서 기본 모듈로 지원 docs.python.org/ko/3/tutorial/venv.html python에 딸려 있는 모듈이라서 현재 시스템에 설치되어 있는 버전의 python을 기반으로 패키지 가상화 환경 제공 그니까 다른 버전을 쓰고 싶다면 그 버전을 일단 설치해서 python해당버전 -m venv ``` python3 -m venv {venv_path} ``` virtualenv -p 옵션으로 파이썬 버전을 지정할 수 있는데, 현재 시스템에 설치되어 있는 파이썬 경로를 입력해야 하는거라서 결국 venv와 똑같다. 그니까, 새로운 버전의 파이썬을 알아..
Java Servlet 이란
2020.06.15 : Languages & Frameworks/SpringServlet이 무엇인가? A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes..
SameSite Cookie
2020.06.15 : Languages & Frameworks/Front-end쿠키(Cookie)와 저장소(Storage) SameSite cookies explained https://web.dev/samesite-cookies-explained/ first-party cookie와 third-party cookie 브라우저는 도메인 별로 쿠키를 저장하고 있다. 따라서 다른 도메인으로 이동한다고 해서 쿠키가 삭제되지 않는다. 다른 사이트 갔다가 돌아왔을 때, 로그인 상태가 유지되는 것은 브라우저가 해당 도메인의 세션 쿠키를 다시 꺼내기 때문이다. 어떤 도메인에 요청할 때, 브라우저는 해당 도메인의 쿠키를 꺼내 헤더에 포함하여 전송하도록 되어 있다. 내가 현재 도메인 A에 있고, 페이지 내에 삽입된 이미지는 외부 도메인 B의 데이터다. 이미지를 불러오기 위하여 외부 도메인 B로 요..
Same-origin Policy, CORS
2020.06.14 : Languages & Frameworks/Front-endSame-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/Same-origin_..
[Java] Enum to Json / Enum to Object
2020.04.27 : Languages & Frameworks/JavaEnumConstant 하나를 `` {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은..
React
2020.04.13 : Languages & Frameworks/JSgithub.com/umbum/react-basic-hooks/blob/master/docs/README.md FE react 패키지 목록 React component https://ko.reactjs.org/docs/hello-world.html props를 전달 받아 React Element를 반환하는 function 혹은 class state라는 내부 상태를 가질 수 있음 props는 react component의 파라미터, state는 react component의 필드라고 생각하면 됨. react state 관리 https://ko.reactjs.org/docs/react-component.html ``js this.state``를 직접 변경하면 안 됩니다. 왜냐하면 이후 호출되는 ``js se..
RestTemplate은 어떻게 response Object를 DataType <T>로 변환하는가
2020.03.27 : Languages & Frameworks/Spring원래 그 데이터 타입으로는 캐스팅 가능 ```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()``에서 비검사 형변환..