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

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

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

3. Console창에 $를 입력해본다. 더보기…

[Python] type보다 명확한 isinstance

type은 객체가 실질적으로 생성한 클래스의 정보를 보여줍니다. 가장 간단하면서, 확실하게 객체 타입을 알아낼 수 있습니다. 객체 타입 비교또한

위처럼 간단하게 끝낼 수 있습니다.   하지만 상속관계가 낀다면 얘기가 달라집니다. 클래스 Foo와 클래스 Bar(Foo)가 존재할 때,

위와 같은 상황에서는 type으로 상속관계를 확인할 수 없습니다. 따라서 이 때, isinstance 함수를 더보기…

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

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

[python] Numpy Dimension, Axis

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

홈 IoT 제작 – 대중교통편 (3) 구현

(이전글 홈 IoT 제작 – 대중교통편 (2) 설계) 휴가를 다녀오느라 구현과 이후 편들에 대해 작성을 하지 못했다.. 가야할 길이 멀고도 멀어 얼른얼른 진행해야 했다.   구현 버튼 하나로 버스, 지하철 모드를 바꿀 수 있게 설계하였고 각 모드에서 페이지네이션이 필요할 경우 타이머를 통해 페이지를 나타낼 수 있도록 구현하였다. 어느정도 코드가 완성되고나서 타임 더보기…

글쓴이 myoatm,

홈 IoT 제작 – 대중교통편 (2) 설계

설계를 위한 배경 이전 글( 홈 IoT 제작 – 대중교통편 (1) ) 에 이어서 설계 및 구현 내용을 작성해보고자 한다. 설계에 앞서 내가 이용할 외부데이터를 정리해보았다. 버스 도착정보와 지하철 열차 시간표가 필요했다. 버스의 경우 내 거주지역이 경기도이므로 경기버스 (http://gbis.go.kr) 에서 찾아보기로 했다. 테스트용 값이나 테스트를 위한 데이터를 받아오는 것은 가능했지만 더보기…

글쓴이 myoatm,