전체 글
[Python] 파이썬 버전, 패키지 관리
[Python] 파이썬 버전, 패키지 관리
2020.10.10뭘 쓰든 한가지 방법으로 통일해서 관리하는게 좋음. pyenv / venv / virtualenv / conda 비교 pyenv windows는 지원 안함. python 버전 관리를 위해 쓰는거라. 특정 버전에 종속적인게 아니다. brew install ... python 자체 버전 관리를 위해 사용. 따라서 패키지 관리는 virtualenv 등과 연계해서 사용해야 한다. pyenv 하위로 virtualenv를 사용할 수 있다. (이게 좀 더 낫다.) pyenv-virtualenv를 사용하는 방법이 에러로 불가한 경우? python 버전은 pyenv로 관리하고, 해당 python 버전의 venv 모듈로 가상환경 만들면서 [python + 패키지]를 가상환경으로 묶는 방법을 사용해도 된다. venv pyt..
DB 이중화 / 클러스터링
DB 이중화 / 클러스터링
2020.09.23DB 클러스터링 DB 장애 시 가용성을 유지하기 위한 클러스터링 방안 Oracle 기준이긴 하지만, 다른 DB에서도 비슷한 옵션이 있는 경우 있음. HA ( High Availability ) 같은 장비를 Active 1대 , Standby 1대로 구성해서 Active에 문제 생기면 Standby로 서비스 하는 방식. Active, Standby 각자가 별도 storage를 가지고 있음. => Active와 Standby의 데이터 동기화 문제 및 성능 저하 => Active 가 죽고 Standby로 전환되기 전 그 사이에 발생하는 트랜잭션은 유실됨 *** 오라클에서는 데이터 가드 라는 이름으로 제공하고 있다. *** 위와 같은 문제점 때문에 OPS 방식이 8i 버전까지 사용되었음. OPS ( Oracle..
메서드 return VS throw : 실패 정보 리턴 VS 성공 빼고 다 Exception으로 처리?
메서드 return VS throw : 실패 정보 리턴 VS 성공 빼고 다 Exception으로 처리?
2020.08.21이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[Spring] MVC Layering Architecture : Controller와 Service의 책임 나누기
[Spring] MVC Layering Architecture : Controller와 Service의 책임 나누기
2020.07.06그림으로 정리한 Spring MVC Application Architecture 왜 layer가 필요한가? layer를 왜 분리할까? layer를 분리한다는 것에는 어떤 의미가 있는가? layer를 나누게 되면, 다른 layer를 추상화 할 수 있다. 추상화를 잘 했다면, 관심 분리 를 통해 현재 작업하고 있는 layer에 집중할 수 있다. 다른 layer의 모듈을 부품을 갈아끼우듯 변경할 수 있다. 각 layer가 자신의 세부사항을 몰라도 상관 없도록, 잘 추상화해서 제공하고 있었다면 가능하다. 컴포넌트 간의 의존 계층 관계를 깔끔하게 유지할 수 있다. 각 layer를 넘나들면서 스파게티처럼 꼬여 있는 관계가 아니라, 위에서 아래로 떨어지는 간단한 구조 혹은 복잡한 참조는 같은 계층 내에서 끝내는 등 ..
[Spring] MVC Layering Architecture : Map 보다 Data Class 사용해야 하는 이유
[Spring] MVC Layering Architecture : Map 보다 Data Class 사용해야 하는 이유
2020.06.25Map과 data class는 애초에 용도와 목적이 다르다. Map은 data class 처럼 쓸 수는 있지만, 그렇게 쓰는게 Map의 올바른 사용법이라고 할 수는 없다. Data Class 대용으로 Map을 사용할 때의 단점 타입 정보가 유실되어 type safe 하지 않다는 점. 이게 가장 큰 단점이자 본질적인 단점이다. 꺼낼 때 형변환 필요해서 번거롭다. key 지정을 String으로 하다 보니 잘못된 참조에 대한 컴파일 타임 체크가 불가능하다. fragile. Map을 Domain Model로 쓴다면? Domain Model에 대해서 당연히 안된다. Map을 Domain Model로 쓴다는 것은 시스템에 자폭 기능을 넣는 것과 같다. 이렇게 오남용된 Map은 자살 특공대가 되어 언제 어떤 형태로든..
Java Servlet 이란
Java Servlet 이란
2020.06.15Servlet이 무엇인가? 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
SameSite Cookie
2020.06.15쿠키(Cookie)와 저장소(Storage) SameSite cookies explained https://web.dev/samesite-cookies-explained/ first-party cookie와 third-party cookie 브라우저는 도메인 별로 쿠키를 저장하고 있다. 따라서 다른 도메인으로 이동한다고 해서 쿠키가 삭제되지 않는다. 다른 사이트 갔다가 돌아왔을 때, 로그인 상태가 유지되는 것은 브라우저가 해당 도메인의 세션 쿠키를 다시 꺼내기 때문이다. 어떤 도메인에 요청할 때, 브라우저는 해당 도메인의 쿠키를 꺼내 헤더에 포함하여 전송하도록 되어 있다. 내가 현재 도메인 A에 있고, 페이지 내에 삽입된 이미지는 외부 도메인 B의 데이터다. 이미지를 불러오기 위하여 외부 도메인 B로 요..
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/Same-origin_..
[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..