[Chrome] 시스템의 hosts 정보를 변경했는데 즉각 반영되지 않을때

들어가기에 앞서 프론트엔드 개발자분들이 주로 겪을 법한 상황입니다.   /etc/hosts 혹은 drivers/etc/hosts 파일로 host 정보를 바꾸었는데, 크롬에서 아무리 새로고침해도 해당사항이 반영되지 않을 때의 조치사항입니다. 이럴 때 대부분 개발자 분들이 secret 창을 띄우거나 다른 브라우저를 사용하는데, context 를 유지해야하는 경우 해당 방법은 사용할 수 없습니다.   이 참에 아래 팁을 숙지하고 더보기…

[Spring] Excel Download 구현 – AbstractXlsxView 커스터마이징 하기

들어가기에 앞서 관리자 혹은 유지보수 툴에서는, 화면에 보여지는 데이터를 Excel 파일 형식으로 다운받을 일이 많다. 흔히 Excel Controller (API Gateway의 일종으로 이름은 그냥 관용적인 표현인 듯)에서 요청을 받으면, 주어진 조건에 맞는 데이터를 xlsx 파일로 만들어 응답해주는 형태로 구성된다. 현재 진행하는 프로젝트에서도 관리자 페이지 구현시, 스프레드 시트 형태의 데이터를 다운받도록 하는 더보기…

[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 ~~ 더보기…

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

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 업데이트 때문) 근래 시간적 여유가 생겨 기여를 위한 시간 투자를 시작했습니다. 데이터 플로우를 읽으면서 프로젝트 구조를 파악하려고 했는데 생각보다 프로젝트 규모가 더보기…

[python] Numpy Dimension, Axis

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

PCA(고유 성분 분석)를 통한 Eigenface recognizer

PCA를 활용하여 Eigenface vector 계산 그리고 얼굴 인식 영상처리에서 얼굴을 인식하는 방법은 다양하다. 그 기본으로 Eigenface방법이 존재하는데, 영상에서 고유성분을 분석(PCA) 및 추출하여 각각의 고유벡터를 Eigenface(고유 얼굴)로 사용한다.  Eigenface는 PCA의 결과로 가장 큰 고유값의 고유 벡터가 첫번째 데이터 분포축이고 그 다음으로 큰 고유값의 고유벡터는 두 번째 데이터 분포축… 이 된다. 재밌는 더보기…