Latest

나의 프로그래밍 폰트 사용 일대기

나의 프로그래밍 폰트 사용 일대기

시작은 2003년 이제 막 프로그래머로써 첫발을 내딛을 때부터 나는 프로그래밍 폰트에 대해서 관심이 많은 편이었다. 화면 붙잡고 매일 글자들과 씨름하는 직업이다보니 당연하게도 좀더 눈에 잘 보이고, 보기에 좀더 미려하고 조화스러운 폰트를 찾는 것이 어찌보면 약간 본능(?)적으로 관심을 가졌던게 아닌가 싶기도 하고 말이다. 최근까지도 이 주체할 수 없는 본능에 따라

By Kevin H. Kwon
Istio 를 통한 path(url) 기반 Local Rate Limit 적용

Istio 를 통한 path(url) 기반 Local Rate Limit 적용

몇 년 전인지는 기억나진 않지만 Rate Limit 적용은 항상 애플리케이션 쪽에서 처리하는 것이 당연하다는 것이 주된 의견이었다. 그래서 그때 당시 Bucket4J 를 통해서 Spring 쪽에서 처리하고 했던 기억이 있다. 이제는 당연하게도 Istio와 같은 Service Mesh쪽에서 처리하는 것이 응당 맞다고 생각되는 것이 개발 세상이 이제 점점 더 클라우드향으로 이동된다는 느낌이다. 강력한

By Kevin H. Kwon
Istio를 통한 header기반 API 라우팅/호출 시 cors preflight request 이슈 트러블슈팅 기록

Istio를 통한 header기반 API 라우팅/호출 시 cors preflight request 이슈 트러블슈팅 기록

현재 개발하고 있는 일부 컨테이너 기반의 서비스들을 Istio를 통해 서비스들을 구성하고 트래픽을 관리하고 있다. 이때 컨테이너 서비스가 같은 규격이 여러개가 같은 url과 port를 할당 받아서 사용해야는 애로 사항이 있어 Istio에서 header 기반으로 특별한 헤더가 있는 경우에만 라우팅이 될 수 있도록 구성하고 테스트를 진행했었다. Istio Request Routing 예제와 같이 header

By Kevin H. Kwon
Kubernetes cluster에 Feature gates 활성화 방법

Kubernetes cluster에 Feature gates 활성화 방법

최근에 nvidia a100 gpu를 mig로 나눠서 사용 하는 노드에서 cadvisor가 gpu metric을 수집을 잘 못해서 kubulet에서 계속 오류가 떨어져서 트러블슈팅을 진행했었다. dcgm-exporter로 prometheus로 metric을 수집하고 있어서 굳이 cadvisor에서 nvidia accelerator meric을 수집할 이유가 없어져서 이것저것 자료를 찾아보니 1.19 버전부터는 DisableAcceleratorUsageMetrics feature gates로 해당 수집 옵션을 비활성화 시킬 수 있는

By Kevin H. Kwon
Mac에서 Docker Desktop clean uninstall 방법

Mac에서 Docker Desktop clean uninstall 방법

Mac에서 갑자기 Docker desktop이 무한 리스타트가 되면서 맛탱이가 가는 상황이 발생됐다. 좀 오래 걸리는 Docker build를 돌려 놓고 퇴근 했는데 Desktop이 전원이 나갔나 중간에 리부팅 되면서 Docker desktop이 정상 동작되지 않는다.. 최신버전 받아서 재설치도 해보고 여전히 해결이 안되서 싹 지우고 다시 설치하니 정상 작동 한다. 아래는 문제 해결해보면서 했던 일들

By Kevin H. Kwon
Ubuntu 18.04 이상 Netplan을 사용한 Static IP 설정

Ubuntu 18.04 이상 Netplan을 사용한 Static IP 설정

Ubuntu는 한 3년전부터인가 CentOS보단 개인적으로 더 주력으로 많이 사용했던거 같다. 16.04 LTS 나올때부터 꾸준히 쓰긴 했었는데 어느샌가 벌써 18.04가 LTS 버전으로 나왔다. 16.04로 바꿔서 쓸때도 systemctl 때문에 한동안 매우 힘들었는데 18.04 올라가고 벌써부터 바뀐 것들이 너무 많다. 뭐 이리 배울게 많아 ㅠㅠ 어찌됐든 또 잊어버리기 전에

By Kevin H. Kwon
GeoJSON으로 대한민국 시군구읍면동 맵차트 그리기

GeoJSON으로 대한민국 시군구읍면동 맵차트 그리기

최근에 진행하고 있는 사이드 프로젝트 중 하나에 전국/시/군/구/읍/면/동 별 맵차트를 그려야 할일이 생겼었다. 특정 지역의 분포도라던지 히트맵 정도를 지도에 보여줘야 하는 요구사항이었는데(네이버 부동산처럼) 그간 GIS쪽이나 이런쪽은 SI사업을 주로 하다보니 솔루션 베이스로 다뤄봤지만 직접 구현해본적은 없어서 이리저리 자료 조사를 해보니 그럭저럭 오픈소스를 활용해서도 원했던

By Kevin H. Kwon
XenServer – local ISO Library만들기

XenServer – local ISO Library만들기

XenServer 구성 시 설치할 os의 iso 이미지 attach 하는 가장 기본적인 방법은 cifs 를 사용해서 윈도우 머신의 공유 폴더를 attach하여 사용하는 방법이 있다. 근데 요상하게 cifs가 잘 안잡히거나 하는 경우에는 xenserver host에 local iso library를 만들어 사용하면 된다. 큰 파일의 ISO Library 만들기 Xenserver 호스트의 루트 파티션은 기본이 아마 4G로

By Kevin H. Kwon
Thymeleaf 확장으로 새로운 dialect 추가해보기

Thymeleaf 확장으로 새로운 dialect 추가해보기

최근에 몇몇 프로젝트를 Thymeleaf를 템플릿 엔진으로 선정해서 진행을 하고 있다. 일단 기존의 개발자들이 JSP & JSTL을 사용하는 것에 너무 익숙하다보니 도입을 하는게 쉽진 않았으나 Spring Framework와 궁합도 잘 맞아보이고 개인 프로젝트를 몇개 해보니 확실히 도입하는 것이 낫다 싶어서 최근 프로젝트는 일단 Thymeleaf로 진행을 하고 있다. 몇가지 살짝 아쉬운 기능들 Link

By Kevin H. Kwon
Spring Boot(Spring) i18n 설정 시 주의사항

Spring Boot(Spring) i18n 설정 시 주의사항

장장 네시간(?)의 삽질 후에 혹시나 다른 누군가가 비슷한 곤란한 상황에 빠졌을 때 도움이 되길 바라면서 포스트를 써본다. 사내에서 솔루션 관련 내부 프로젝트 구성 중에 간단하게 배포해야하는 서비스 구조가 있어서 그 동안 눈으로만 훑어봤던 Spring Boot를 사용하기로 맘 먹고 레퍼런스 보면서 하나씩 붙여나가는 도중에 예기치 않게 i18n 구성 중에 메시지

By Kevin H. Kwon

VirtualBox 호스트 전용 어댑터 설정

나이가 들어가니 매번 vm 만들 때마다 얼마 되지 않는 이 내용을 검색해서 찾을려니 죽을맛이라 ㅎㅎ 그냥 찾기라도 편하게 블로그에 기록해본다. VirtualBox에서 기본으로 vm을 설치하면 NAT 네트워크로 연결이 되서 그냥 ssh client로 접속하는데 꽤 불편하다. 호스트 전용 어탭터 설정을 통해 내부 고정 IP로 세팅하는 방법을 기술해본다. Windows 기준이지만 mac도 거의 동일하다.

By Kevin H. Kwon

slack

Slack Subversion Intergration 한글 코멘트 사용하기

Slack을 내가 투입되는 팀마다 사용한지가 꽤 되었다. 특히나 CI서버의 Job 상태나 형상관리 서버의 commit notification을 slack app기능으로 받는건 꽤나 유용하다.(빌드 깨진거 벌금 매길때 참 좋다 ㅎㅎ) 요샌 형상관리서버로 Git을 많이 사용한다지만 아직 SI쪽에서는 SVN이 주를 이루고 있다. 찾아보니 많은 예제들이 github, gitlab이나 bitbucket 설정하는 건 자세하게 도움말이 많은데 subversion

By Kevin H. Kwon

gradle

Gradle Test task 로깅 설정하기

TDD의 맹신자는 아니지만 보통 개발을 진행할 때 테스트 케이스를 먼저 만들면서 코딩하느라 디버깅을 테스트 케이스로 많이 하는 편인데 Gradle test 태스크는 기본적으로 console 로깅이 disable된 채로 구동된다. 개발시에는 stacktrace를 상세하게 볼 필요도 있는데 아래 설정을 통해 볼 수 있다. Gradle reference는 잘되어 있는 듯 잘 안되어 있는(?) 뭔가 하나씩 빠져

By Kevin H. Kwon
SI프로젝트 빅뱅 오픈 왜 이렇게 항상 힘드나

SI

SI프로젝트 빅뱅 오픈 왜 이렇게 항상 힘드나

거의 1년을 달려온 프로젝트가 저번주 금요일을 기점으로 오픈하면서 안정화 단계에 접어들고 있다. 덕분에 요 몇달간 블로그며 스터디며 개인생활이건 또 뒷전이 되버리는 상황이 벌어지고 말았다. SI생활을 15년 가까이 해오면서 프로젝트 규모가 커지면 커질수록 오픈이 가까와지면 가까와 질수록 야근도 많아지고 , 먹는 욕도 많아지고.. 운동은 열심히 한다고는 하는데 체력도 예전 같지 않은지 몸도

By Kevin H. Kwon
AB(Apache HTTP server benchmarking tool)를 활용해 벤치마킹 테스트 해보기

AB

AB(Apache HTTP server benchmarking tool)를 활용해 벤치마킹 테스트 해보기

AB(Apache HTTP server benchmarking tool)는 커맨드 라인을 활용한 매우 가볍고 유용한 웹서버 벤치마킹 도구 이다. 간단한 REST API나 정적 컨텐츠에 대한 성능 테스트 시에 빠르고 간편하게 벤치마킹 정보를 얻어올 수 있다. 이번에 성능개선 작업을 진행하면서 수정된 API에 대해서 개발환경에는 ngrinder를 활용하고 운영환경에서는 서버에 뭔가 설치하고 성능테스틀 돌려보기 힘든

By Kevin H. Kwon
ORACLE SQL Trace & TKPROF 확인 방법

oracle

ORACLE SQL Trace & TKPROF 확인 방법

오라클은 어플리케이션(SQL)을 모니터링하고 튜닝하기 위한 기본적인 성능 진단 툴을 제공하고 있다. 요샌 Toad나 SQLGate 등 DBMS 관련 Tool들이 매우 잘 나와서 개발 단계에서 실행계획 분석이나 XPLAN.DISPLAY 정보는 쉽게 확인 가능하기는 하나 언제나 애로사항을 꽃피우는 곳은 운영환경이다. 장애상황이 아주 그냥 활짝 피셨다 특히나 DB쪽의 운영환경은 대부분 강력한 방화벽

By Kevin H. Kwon
사내 내부 개발자 교육 필요한가?

사내 내부 개발자 교육 필요한가?

한달에 두어개 정도 블로그 포스트를 작성하는게 이렇게 어려울 줄이야.. 계속 되는 과업 변경과 끊임없는 성능개선 사이드 프로젝트 그리고 사내 내부 개발자 교육 준비.. 회사 일이 바빠지니 집안에도 또 소홀히 되는 나쁜 습관들이 또 고개를 쳐들고 슬금슬금 나오기 시작했다. 호랑이 굴에 아주 제대로 빠져있다 이제 겨우 좀 숨 쉴 만하니 미뤄

By Kevin H. Kwon
Jackson 라이브러리를 활용한 Map to Json Serialization 처리

jackson

Jackson 라이브러리를 활용한 Map to Json Serialization 처리

실로 오랜만에 포스팅이다. 역시나 바쁘다는 핑계로 이래저래 미루기만하면 할 수 있는건 아무것도 없는 것 같다. 나는 현재 성능 개선과 관련된 사이드(?) 프로젝트를 진행중이다. 원래 하던 일은 훌륭한 부사수님께서 잘 처리해 주시니 오히려 본업이 되버린 듯한 인상이다. 업무용 문서뷰어라고 하는 표현할 수 있는 놈인데 말 그대로 여러가지 상황에서 만들어진 아주 갖가지

By Kevin H. Kwon
OpenLDAP을 활용한 기반시스템 중앙 인증관리 #2

openldap

OpenLDAP을 활용한 기반시스템 중앙 인증관리 #2

OpenLDAP을 활용한 기반시스템 중앙 인증관리 #1에서 기반시스템과 연결을 위한 디렉토리 서비스를 구축하였다. 2편에서는 구축된 OpenLDAP 서비스를 활용하여 기반시스템을 인증처리 하는 것에 대해 정리해 본다. 보통 개발환경을 구축하게 되면 가장 많이 사용되는 기반시스템은 아래와 같다. * 형상관리 시스템 * SubVersion * Git(Gitlab) * 이슈관리 시스템 * Redmine * 코드 품질 점검 시스템 * Sonarqube * CI(Continuis Intergration)

By Kevin H. Kwon
OpenLDAP을 활용한 기반시스템 중앙 인증관리 #1

openldap

OpenLDAP을 활용한 기반시스템 중앙 인증관리 #1

지금까지 프로젝트 진행하면서서 기반시스템(svn, jenkins, sonarqube, redmine, nexus...)은 개별 시스템 별로 유저를 관리하거나 admin 계정이나 다른 하나의 계정으로만 사용을 해왔었다. 몇명 안되는 개발자들 데리고 일할 때는 큰 문제가 되지 않았는데 2~3년전부터 점점 프로젝트 규모와 수행하는 인원도 커지다 보니 이게 매번 개별 시스템 별로 계정을 생성하거나 관리하는게 아주

By Kevin H. Kwon

sonarqube

Sonarqube 이슈 엑셀 레포트 생성

Sonarqube는 널리 알려진 오픈소스 코드 품질 점검 도구이다. 공공SI 프로젝트에서도 Sonarqube는 거의 필수로 사용되고 있다. 내부적인 소스코드 품질 향상을 위한 것도 있지만, 요샌 거의 감리 받을때도 필수로 지켜야 되고, 발주 주관기관에서도 아예 PMD나 Checkstyle, FindBug 자체 룰을 관리 하는 곳도 있다. 소스코드 분석은 다양한 툴들을 통해 할 수 있다. Maven,

By Kevin H. Kwon
RabbitMQ, PHP, Node.js를 활용해 GCM push 처리하기

rabbitmq

RabbitMQ, PHP, Node.js를 활용해 GCM push 처리하기

개인적으로 아는 형님과 함께 mvp작업을 진행하고 있는 halftime이라는 안드로이드앱의 push 기능의 구현을 고민하면서 처음에는 실시간으로 php(phalcon framework)로 만든 api서버에서 직접 gcm push처리를 하려고 작업을 진행 중 이었다. 진행하면서 계속 느끼는건 push는 보내면 좋고 안보내도 그리 타격(?) 있는 서비스 타입인 것 같다. 그리고 또 다음과 같은 고민이 들기 시작했다.

By Kevin H. Kwon

블로그를 시작하다.

몇년전부터 개발 관련된 블로그를 운영해 보고 싶은 욕심은 꽤 있었으나, 나 스스로 진정 아는 것도 없이 아는 척하는게 무슨 의미가 있나 싶어 좀 더 내공이 쌓이면 시작해봐야지 했던게 벌써 수년이 지났다. 그때보다 지금 엄청난 내공이 쌓인건 아니지만, 사실 생각해보면 내가 써놓은 정보들이 남들이 생각하기에는 대단한 정보가 아니겠지만 인터넷 저멀리 누군가에는

By Kevin H. Kwon