회사에서 Handlebars.java 와 관련된 이슈가 공유가 되었다. Handlebars 가 Javascript 버전과 Java 버전의 #with helper 결과가 동일하지 않습니다. 우선 이 이슈 버그를 해결한 코드는 필자의 github 저장소 https://github.com/powerumc/handlebars.java.bug-fix 에 커밋 되어 있고, 원본 저장소의 이슈 번호 #314, Pull Request #315 에 등록 되었다. Handlebars vs Handlebars.java 이 테스트에서 사용되는 handlebars 데이터는 다음과 같습니다. { "company": { "ko": "쿠팡", "en": "Coupang" }} 그리고 handlebars 템플릿은 다음과 같다. {{#..
얼마 전 자바8 람다 나머지 이야기를 보면서 평소 필자가 알던 Java와는 완전히 달라 보였다. 필자가 알고 있던 Java는 보수적이지만 정통적이라고 생각 해왔는데 과감히 이 생각을 깨졌다. Java 8 Lambda 에 대해 궁금한 부분은 필자가 예전에 작성한 아티클을 참고하기 바란다. [Java] Java 8 의 Lambda(람다) 표현식에 대한 고찰 Java 8 Interface 변경 사항 default 키워드 오라클의 Defining an Interface 문서에 의하면 Java Interface의 정의는 변경되었다. Java Interface는 abstract methods, default methods, static methods 를 정의할 수 있다고 한다. The interface body c..
지난 2013년 7월부터 MonoDevelop 공식 프로젝트를 Fork 하여 MonoDevelop Korean 프로젝트를 진행 하였습니다. 그 결과 한 달을 매달려 약 4,500여 문장을 번역하였습니다. 그냥 번역 작업만 하면 쉽게 생각하겠지만, IDE 툴에서 보여주는 메시지를 영문으로 보여야 할지, 한글로 보여야 할지… 여러 문장이 합쳐지면 어색해 지지 않는지… 그리고 직역을 하게 되면 의미가 잘못 전달되지 않는지… 번역에 따른 크래시 버그…. 이런 작업을 일일이 확인 하다보니 한 달이라는 시간이 지났던 것이죠;;; 앞으로 이 사이트를 통해 지속적으로 한글 번역과 개선 작업을 진행 할 예정입니다. http://monodevelop.co.kr
데이터베이스로 데이터를 조회하는 데, 성능을 꾀하기 위해 redis와 연동을 한다. 신규 기능에 적용하는 것은 어렵지 않을 것 같다. 하지만 기존 legacy 코드를 db에서 redis로 변경 한다면 새로운 전략이 필요할 것이다. 이런 경우가 얼마나 많겠냐마는 때때로 미션 크리티컬한 시스템 문제가 발생하면 한 번쯤 고려해 볼 만한 시나리오다. db에서 redis로 변경한다면 redis client 코드로 db 데이터를 조회하고 redis 데이터를 조회하여 결과 셋을 조합 proxy 객체를 생성하여 db/redis 중 데이터 조회 redis 명령 추가 위의 몇 가지 전략 중 성능이 가장 좋은 것은 3 > 2 > 1 이 될 것이고, 수정해야 할 legacy 코드의 양은 2 > 3> 1 순서가 될 것이라 짐작..
전 세계 인터넷은 OpenSSL의 중대한 버그로 난리다. 이 버그의 주요 요지는 특정 OpenSSL을 사용할 경우 메모리의 64KB를 획득할 수 있고, 이 버그로 서버 인증서의 비밀키(개인키)를 취득하여 서버로 오가는 모든 패킷을 취득할 수 있다. 라는 것인데, 이를 가리켜 Heartbleed(심장출혈) 버그라고 한다. 그 만큼 심각한 버그가 맞는데, 일각의 미디어에서 최악의 시나리오를 너무 일반화시키는 것이 아닌가 싶다. 필자가 보안 전문가는 아닌 만큼 잘못된 부분은 너그러이 지적해 주길 바란다. - 사용자는 모두 패스워드를 변경해야 하나? 해도 되고 안해도 된다. 어차피 개인정보는 오픈소스. :) 농담이고, 취약성이 있는 OpenSSL을 사용하면 공격자는 클라이언트의 사용자 요청 데이터를 가로챌 수 ..
DeskBoard 앱은 프레젠테이션 등으로 발표를 자주 하는 분들을 위해 필자가 만든 앱입니다. (지난 블로그 글) 이번에 $9.99의 앱 가격을 이달 4월 말까지 $2.99 로 할인합니다. DeskBoard 앱은 유료/무료 버전 두 가지가 있습니다. 무료 버전도 모든 기능을 지원 하지만 멀티 모니터(두 대 이상 모니터)를 지원하지 않습니다. 그러므로 외부 모니터에 연결하거나 멀티 모니터 지원이 필요한 분만 유료 버전을 구매하시면 됩니다. 자세한 사항은 아래의 AppStore 아이콘을 클릭하면 됩니다. DeskBoard (유료 $2.99
Mono 데스크탑 응용 프로그램 개발 3가지 방법 클라이언트 응용 프로그램 또는 데스크탑 응용 프로그램을 Mono로 만든다면, 어떤 방법으로 만들면 좋을까? 이 세 가지 방법을 알아본다. 1. System.Windows.Forms System.Windows.Forms(일명 윈폼-WinForm)으로 GDI(그래픽 장치 인터페이스(Graphics Device Interface)의 APIs를 객체지향적으로 제공하는 것을 일컷는다. 이제 대한 자세한 설명은 GDI+ 링크를 참고 하기 바란다. 그러나 Mono 환경에서 Windows Forms 개발은 사용자에게 좋은 사용자 인터페이스를 제공하지 못한다. virtual OnPaint(PaintEventArgs e) 가 적절하게 동작하지 않는다. 화면의 창 사이즈를 ..
프로그래밍은 언제나 숫자와의 경쟁인 것 같다. 반올림이 되느냐, 부동소수점이냐, 정수 오버플로우(integer overflow) 등은 백발이 되어 코드를 만질 때 까지 항상 따라다니는 문제가 될 것이다. MySQL 날짜 관련 이슈 얼마 전 필자가 다니는 회사에서 발생한 데이터베이스 관련 이슈로 다음과 같은 문제가 발생하였다. 아래는 MySQL 관련 문제에 대하여 공유된 내용이다. MySQL 5.6.4 부터 시간값 저장시 밀리세컨드를 지원한다. 하지만 DATETIME의 경우 길이가 6일 경우에만 가능하다. 그런데, DATETIME 타입(이는 DATETIME(4)와 같다)일 경우 밀리세컨드 부분을 반올림(round)하는 버그가 있다. #68760 이 버그로 인해 1999년 12월 31일 23시 59분 59초..
필자가 github를 통해서 제공하는 자바스크립트 두 가지 패키지 모두 npm과 관련된 버그가 픽스 되었다. 각각 npm package 버전이 업데이트 되었고, nuget은 금주 중으로 패키지를 재배포 할 예정이다. 또한, Unity 게임 개발 및 Mono 개발에 필요한 MonoDevelop 한국어 버전도 몇 주 전 최신 저장소 코드로 업데이트가 완료 되었다. Bugs related to npm both packages provided the author through the github has been fixed. npm is updated each, nuget is a plan to re-distribute the package later in the week. In addition, the upda..
필자는 소프트웨어 개발에 필요한 앱은 라이선스를 구매해서 쓴다. 자랑은 아니지만 앱스토어와 그 외 구매한 앱의 개수가 200개가 넘어간다. 히힣; 오늘 소개하는 앱 처럼 제값어치 하는 앱에겐 뭔가 모를 희열을 느낀다. 여성분들이 쇼핑을 좋아하는 것처럼 -0- Hopper Disassembler 이 앱은 윈도우의 WinDbg, 그리고 GNU gdb처럼 디버거 명령줄(Command Line)에 익숙하지 않은 디버거에게 유용한 앱이다. 몇 달 전, Objective-C with LLVM 어셈블리 코드를 분석하기 위해 구매했다. Objective-C 내부적인 언어적 매커니즘을 이해하기 위해 역어셈블리 분석은 필수이기 때문이다. 그 중 이 앱은 기대한 것 보다 기능은 적지만, 사소한 곳에서 감동을 주는 앱이라 생..
현재 사용하는 크롬 브라우저 버전은 32.0.1700.77. 이 버전에서 팝업창에서 스크롤바가 비활성화되는 버그가 있다. 이 버그는 윈도우 운영체제에서 발생한다. 필자가 사용하는 맥OS 버전의 크롬에서는 발생하지 않는다. 버그 환경 재연 방법 The Pro Shop 웹 사이트에서 상품 상세 페이지에서 ‘Size Chart’ 링크를 클릭하여 팝업창을 열어 마우스 휠로 스크롤이 잘 되는 것을 확인할 수 있다. 하지만 클릭을 하거나 드래그를 하면 가로/세로 스크롤바가 비활성화된 것처럼 반응하지 않는다. ( 테스트를 하려면 이 링크를 클릭하세요 ) [그림1] Size Chart 링크의 팝업창에서 스크롤바가 비활성화 되어 있음. (활성화 되어야 정상) [그림2] 스크롤바가 비활성화 된 상태 문제 원인 이 버그에 ..
맥 앱스토어 다운로드 DeskBoard (유료) DeskBoard Free (무료) 프레젠테이션 앱 - DeskBoard 여러분의 성공적인 발표나 세미나를 위해 당신에게 더 집중할 수 있도록 DeskBoard 앱을 사용해 보세요. 여러분이 전달하고자 하는 메시지를 다양한 도형을 사용하여 청중들에게 정확하게 전달할 수 있어요. 그럼 청중들은 당신이 무엇을 강조하는지 쉽게 알 수 있답니다. DeskBoard 앱은 다음과 같은 분들이 사용하는 것을 권장합니다. ^_^ 1. 여러 사람 앞에 발표할 기회가 많은 분 프로는 항상 발표할 준비가 되어 있다고 해요. 발표할 때 필요한 것 중 하나가 바로 레이저 포인터랍니다. 레이저 포인터도 좋지만, 화면 측면에서 손으로 짚어서 강조하는 것이 감성적으로 더 좋다고 해요...
재미있는 C 언어 문제 인터넷 RSS 피드를 구독해서 보다가 재미있는 C 언어 코드를 발견했다. 조금 난해하게 보이는 코드다. 이런 코드로 신입 개발자 면접 시험을 보면 재미있겠단 생각이 든다. 문제의 C 언어 코드는 다음과 같다. 소스 코드와 실행 결과가 전혀 매치가 안되는 이 또라이 같은 코드를 보고 순간 멈칫 할 것이다. 하지만 조금 귀 기울여 보면 말 되는 코드다. 이 링크를 클릭하면 즉시 컴파일 된 실행 결과도 함께 볼 수 있다. main() { int a,b,c; int count = 1; for (b = c = 10; a = "- FIGURE?, UMKC,XYZHello Folks,\ TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ UHs UJq TNn*RPn/QPbEWS_JSW..
Gradle 로컬 캐시로 인한 빌드 실패 얼마 전 회사에서 Java 버전을 Java 7 버전으로 업그레이드 했다. 이에 따라 JDK, Tomcat 7을 구성하고 언어 스팩을 @1.7 버전으로 설정한 후 다음과 같은 오류가 발생하였다. MCPOWERUMC:coupang powerumc$ ./gradlew FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'coupang'. > Could not resolve all dependencies for configuration ':classpath'. > Timeout waiting to lock artifact cache (/U..
매버릭스 업데이트 후 개발 중인 맥 앱에서 발생하는 문제 OSX 매버릭스로 업데이트한 후 XCode로 개발 중인 유틸리티 프로그램의 일부 기능이 작동하지 않는 현상이 발생한다. 원래 Alpha 버전으로 곧 배포할 예정이었는데, 이 문제로 배포가 늦어질 것 같다. 문제는 Objective-C와 Cocoa를 사용하여 전역 마우스 및 키보드 후킹(hook global mouse and keyboard event)을 사용하는 코드가 있는데, 그 중 키보드 이벤트만 캡춰링(capturing)할 수 없는 현상이 발생한다. 해결 방법 의외로 해결 방법은 간단하다. 먼저 OSX 매버릭스에서 변경된 보안 사항에 대해서 알 필요가 있다. 기술적인 내용은 아니므로 쉬엄쉬엄 다음의 글을 참고하기 바란다. OS X 10.9 매..
IntelliJ 배포 오류 Gradle로 구성된 프로젝트가 여러개 있는데, 그 중 하나만 IntelliJ에서 제대로 인식하는데 실패한 적이 있다. Tomcat으로 올바로 구동이 되어야 하는데, 배포가 되었다고만 나오고 Tomcat Context에 로드되지 않는 현상이 발생한다. 관련된 오류를 검색해 보았다. 하지만 전혀 다른 문제의 답변이었다. Artifact XXX:war exploded: Server is not connected. Deploy is not available. 그러다가 Modules 구성을 살펴보니 여기에 문제가 있었다. 일전에 우리팀 루피님께서 Spring 구성이 잘 안되었다고 봐준적이 있는데, 어찌어찌 시간이 없어 이제서야 다시 살펴보게 되었다. 아래는 올바른 모듈의 Spring ..
개요 Git을 이용하여 외부 모듈을 참조하려면 git submodule 명령을 이용해서 외부 모듈을 clone할 수 있다. git submodule 명령은 git clone과 달리 같은 작업 디렉토리(Working Directory)에 여러 모듈을 추가할 수 있는 장점이 있다. 샘플 코드 추가 (연습하기) 본 아티클에서 사용하는 샘플 코드는 필자가 개발한 Umc.Core의 의존성 주입(DI, Dependency Injection), 역전 제어(IoC, Inversion of Control), 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming) 이다. submodule를 추가하고 제거하는 과정을 이해하기 쉽도록 Umc.Core 프로젝트를 사용한다. $ git clone htt..
반 객체지향(Half-of-OOP) 가장 먼저 명심하자. 오브젝티브-C는 C언어의 슈퍼셋(Super Set)이고 C++의 객체 지향과는 거리가 멀다. 오브젝티브-C 언어는 마치 객체지향 프로그래밍(OOP, Object-Oriented Programming) 처럼 보이지만 객체지향 언어가 아니다. 그렇다고 완전히 함수형 언어도 아니다. 하지만, 오브젝티브-C는 객체지향의 가장 대표적인 특징인 상속(Inheritence)이 가능하고 인터페이스 구현이 가능하다. ANSI-C 입장에서 바라보면 상속과 인터페이스 구현은 함수형 언어로서 가당치도 않은 언어적 특성임에 틀림 없을 것이다. (이 문장의 인터페이스는 오브젝티브-C의 @protocol을 의미함.) 물론, C 언어에서도 구조체(struct), 포인터(poi..
아름답고 자연스러운 오브젝티브-C 필자가 오브젝티브-C(Objective-C)를 접한 것은 올해 초, 갑갑한 문법적인 표현(Syntax)을 보니 코드를 보기가 싫어졌었다. 하지만 많은 iOS 개발자가 생겨나고 맥킨토시(Macintosh)를 쓰면서 자연스럽게 맥용 응용 프로그램에 관심이 생기기 시작했다. 처음에는 리눅스와 대부분의 운영체제를 지원하는 Qt(큐티) 프레임워크를 봐오다가, 코코아(Cocoa) 를 알게 되면서 맥킨토시에 가장 아름다운 UI 프레임워크인 것을 느끼게 되었다고 할까. 오브젝티브-C는 매우 깊은 역사가 있다. 이 역사에 대해서는 다음의 위키피디아(Wikipedia) 를 참고하기 바란다. 필자도 이 언어에 대한 깊은 역사를 이렇다 할 만큼 자신 있게 설명해 주기 힘들 것 같다. .. 생..
SharePoint 데이터베이스로 부터 모든 문서를 백업 및 추출하기 개요 필자는 SharePoint 서버 제품을 이용해서 문서를 관리해 왔다. SharePoint를 이용하면 수 천개의 문서를 종류별로 분류하고 데이터베이스화할 수 있다. 문서의 종류와 문서의 내용도 인덱싱(indexing)되므로 문서 내용과 다양한 메타 데이터로 문서를 검색할 수 있다는 점 때문에 많은 문서를 쉽게 관리하고 검색할 수 있다는 장점이 있다. SharePoint의 장점을 나열하지면 많겠지만, 모바일 트랜드 시대에서는 에버노트가 최고이지 쉽다. 필자의 에버노트와 DropBox는 땡전 한푼 안들이고 프리미엄 서비스를 받고 있는데, 필자가 문서를 사용하고 관리하는 패턴에선 SharePoint 보다는 에버노트와 DropBox 조합이..
- Total
- Today
- Yesterday
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
- Team Foundation Server
- TFS 2010
- github
- monodevelop
- testing
- 비주얼 스튜디오 2010
- Windows 8
- mono
- 엄준일
- Visual Studio 11
- Silverlight
- ALM
- 땡초
- 팀 파운데이션 서버
- .NET
- umc
- c#
- 비주얼 스튜디오
- LINQ
- Visual Studio 2008
- Managed Extensibility Framework
- Visual Studio
- Team Foundation Server 2010
- TFS
- MEF
- test
- .NET Framework 4.0
- Visual Studio 2010
- POWERUMC
- ASP.NET