[MySQL] Transaction Isolation Level

들어가며 JPA로 비즈니스 로직을 작성하던 중, 동시성 문제를 해결하기 위해 Transaction Isolation 에 대해 좀 더 찾아보게 되었습니다. 다양한 DBMS가 있지만 접근하기 쉬운 MySQL의 Transaction Isolation Level 에 대해 정리하고, 이를 JPA 에서 어떻게 활용할 수 있는지 알아보겠습니다.   Transaction Isolation Level 먼저 Transaction Isolation Level 이란, 이름 그대로 여러 더보기…

[VCS] Git Branching Strategy – Git flow

들어가기에 앞서 학생 시절 VCS에 무덤덤했고, 단순히 master 브랜치에서 반복되는 커밋으로 체계적이지 못한 버전관리를 하고 있었습니다. 어느 순간 현업에서 일을하며 자연스럽게 Git-flow를 적용하고 있었고, 오늘은 Git Branching Strategy 중 하나인 Git flow에 대해 나누고자 합니다. 조금 더 정확하게는, 개념과 workflow를 확실하게 기억하고자 기록을 남기는 과정으로 생각합니다.     Git-Flow 여러 더보기…

[JPA] JPQL사용중 LAZY fetch 가 안될 때

발단 복잡한 관계 매핑이나 Native SQL에 가까운 쿼리를 유도해야할때에, JPA Repository 만으로 해결이 힘든 경우가 있다. (보통 가능은 하나, 코드가 지저분해진다) 위와 같은 상황에서 비즈니스 로직을 작성하던 중 있던 일이다.  ORM에서 1:M의 OneToMany 관계를 매핑할때는 보통 지연 가져오기를 Fetch 전략으로 선택한다. (Lazy fetching, FetchType.LAZY) JPA Repository 빈을 가지고 findBy ~~ 더보기…

[JS] jQuery가 없는 페이지에서 jQuery사용하기

jQuery 를 사용하지 않는 페이지가 있다. 문제 될 건 없지만, 해당 페이지에서 편하게 디버깅을 하기 위해 jQuery 를 이용하려고 한다. 그럴 때 다음과 같은 방법을 이용한다.   F12등으로 개발자 도구를 연다. Console창에 다음과 같은 코드를 입력한다. (2번 라인은 얼마든지 필요한 버전의 CDN주소로 대체할 수 있다.) var jq = document.createElement(‘script’); jq.src 더보기…

스크린 고장난 스마트폰(안드로이드 기기) 백업하기

1. 배경 액정유리를 비롯한 디스플레이부는 생각보다 튼튼하지만 우리가 사용하는 시간과 들고다니는 정도를 감안하면, 액정 고장이 흔한일임을 알 수 있습니다. 출처: http://goodluckboss.com/what-to-do-with-a-broken-iphone-6s6s-plus-screen-your-options-for-replacing-or-not-replacing-a-shattered-iphone-screen/ 위 정도만 고장났어도 복구하는데 어려움은 없습니다. 오늘의 주제는 아예 보이지도 않는, 액정이 나가버린 스마트폰(안드로이드 기기)을 백업하는 방법에 대해서 알아보겠습니다. (정확하게는 백업할 수 있도록 원격제어할 수 있는 환경을 만듦)   2. 더보기…

[Python] type보다 명확한 isinstance

type은 객체가 실질적으로 생성한 클래스의 정보를 보여줍니다. 가장 간단하면서, 확실하게 객체 타입을 알아낼 수 있습니다. 객체 타입 비교또한 >>> int == type(123) True 위처럼 간단하게 끝낼 수 있습니다.   하지만 상속관계가 낀다면 얘기가 달라집니다. 클래스 Foo와 클래스 Bar(Foo)가 존재할 때, >>> b= Bar() >>> type(b) == Bar # b는 Bar를 더보기…

[Python] 테스트 기반 개발 준비하기

본 글은, 이호성님의 slideshare 게시물중 “Python 테스트 시작하기” 프레젠테이션을 참고하여 작성되는 글입니다.   들어가기에 앞서 일전부터 손보고 싶은 부분도 있었고 입맛에 맞도록 youtube-dl 레파지토리를 수정해보려고 계획을 했었습니다. (Media Downloader 업데이트 때문) 근래 시간적 여유가 생겨 기여를 위한 시간 투자를 시작했습니다. 데이터 플로우를 읽으면서 프로젝트 구조를 파악하려고 했는데 생각보다 프로젝트 규모가 더보기…

[CentOS] OpenSSL 1.1.1a 과 TLS v1.3 적용하기

서론 및 배경 OpenSSL 1.1.1이 긴 시간동안 pre버전으로 빌드되다, 최근 1.1.1a로 정식 릴리즈되었습니다. TLS v1.3 또한 draft 버전으로 릴리즈 되다가, 28버전을 마지막으로 정식 표준이 제정되었습니다. 기존 TLS v1.2은 handshaking을 위해 2번의 round trip이 필요했던 반면, TLS v1.3에서는 1번의 rount trip으로 연결 수립이 가능해졌습니다. 뿐만 아니라, 취약했던 SHA-1과 DES, 3DES 및 더보기…

[python] Numpy Dimension, Axis

도입 Numpy를 사용한지 얼마되지 않았다면 Axis와 Broadcasting 때문에 머리가 아플때가 많다. (필자도 가끔씩 골머리 썩고 있다) 배열 접근이나 연산(dot product, sum 등..) 시에 지금 연산하고자 하는 축이 어디인지.. 자주 하다보면 직감으로 되지만, 그렇지 않다면 예외를 만나기 일쑤다. Axis? Dimension? 삽질해보겠다고, 예제를 만들 때 더욱 헷갈리게 만드는 행동 중 하나가 있다. 더보기…

“10일 만에 배우는 네트워크 기초 – 모두의 네트워크” 서평

서론 인터넷이 없는 세상은 상상할 수 없다. 현 시대에 빗대어 생각해본다면 그런 세상은 실존할 수 없다가 더 정확한 표현이라 생각된다. 인터넷은 온 곳에 적용되고 필요로 한다. 산업에는 물론이요, 가정집에도 개인 공유기를 소유하고 있다. 이렇듯 많은 사람들이 네트워크를 통해 인터넷을 사용하고 있지만 안타깝게도 네트워크라는 정확한 개념은 알지 못하는 경우가 많다. 네트워크 더보기…