본문 바로가기

전체 글

[Swift] Xcode 6.3, Swift 1.2 업그레이드 시 언어 사양이 변경된 부분 정리 얼마 전 Swift 1.2 버전으로 업그레이드를 실시했다. 뭐, 자의에 의해서 한 것은 아니고, Xcode 6.3.1 버전으로 업데이트 하니 자연스럽게 Swift 언어 버전도 업데이트 된 것! 다음은 Swift 1.2 로 업데이트하면서 나에게 발생한 오류를 정리해 본다. 1. NSString과 String 타입 캐스팅(형변환)은 명시적으로 하도록 변경 이렇게 동작하던 코드는 더 이상 암시적으로 캐스팅을 하면 안된다. func print(string: String) { // print } let str : NSString = “POWERUMC” print(str) Swift 1.2 부터는 위의 코드는 다음과 같이 명시적으로 캐스팅을 해야 한다. func print(string: String) { // pr.. 더보기
[MonoDevelop Korean] 최신 빌드 오류 정보 Xamarin사에서 MonoDevelop 오픈 소스 재단을 인수하면서 너무 돈을 밝히는 게 아닌가 싶을 정도로 상업적인 기업으로 변했다. M$(Microsoft)와 긴밀하게 관계가 유지되면서 돈 버는 방법도 너무 M$와 비슷해져 비호감 기업 반열에 충분히 올라갈 것으로 기대한다. 그건 그렇고 필자가 진행하고 있는 MonoDevelop Korean 빌드에 오류가 발생했다. 물론 Xamarin사에 인수되기 전부터 한글화 작업을 진행했던 터라 이번 빌드 문제가 조금 언짢아 진다. 문제 원인: 누락된 Xamarin 라이브러리 ./configure —profile=mac 명령행으로 빌드 구성을 한 후에 make 빌드를 수행하면 다음과 같이 이전에 보지 못했던 라이브러리 누락 오류가 발생한다. $ make if t.. 더보기
[마감][베타 다운로드] 중간 번역 (Inter-Translate) 베타 버전 다운로드 공개 [마감] 중간 번역 (Inter-Translate) 베타 버전 다운로드 공개 중간 번역(Inter-Translate) 앱이 탄생하게 된 계기는 다음과 같습니다. 구글에서 제공하는 번역기의 공개 API는 번역 문장의 길이에 제한이 있어 한글 문장 약 1,500자가 넘으면 번역이 되지 않고, 번역 횟수에도 제한이 있습니다. 이 두 가지의 문제를 해결하기 위해 우회적인 방법으로 제한 없이 매우 긴 문장도 번역할 수 있는 앱입니다. 사용자의 피드백을 받아 기능을 더 개선하기 위해 제 블로그에서 베타 빌드 버전을 공개합니다. iOS 버전도 곧 테스트를 위해 공유할 예정입니다. 익숙한 Objective-C 를 뒤로 하고, 공부도 해 볼겸 Swift with Objective-C 두 가지 언어로 개발이 되었습니다. .. 더보기
[MonoDevelop] v5.7.2.2 한글 버전 배포 공지 - MonoDevelop v5.7.2.2 한글 버전 빌드 업데이트 2013년부터 꾸준히 진행해 오던 MonoDevelop v5.7.2.2 한글 버전의 새로운 빌드를 업데이트 했습니다. MonoDevelop v5.7.2.2 한글 버전은 다음의 링크에서 다운로드 받을 수 있습니다. 다운로드 : http://monodevelop.co.kr - 왜 MonoDevelop을 써야하나? 외국 Xamarin 기업에서 Mono 오픈소스 재단을 인수하면서 Mono 가 폭풍성장을 하고 있습니다. 이제 따른 부작용이 Xamarin이 Mono를 통해 수익을 얻으려 하는 것이죠. 물론 돈은 벌어야 하니까요. 따라서 Xamarin Studio 를 사용하고 Xamarin.*.dll 라이브러리에도 GPL 라이선스 제한을 받게 됩니다... 더보기
[Mac App][일시무료] Inter-Translate (중간 번역 앱) Inter Translate (중간 번역 앱) - 현재 심사중 영문을 한글로 번역하는 것이 힘드시죠? 번역 품질을 더 매끄럽게 만들기 위해 Inter Translate (중간 번역) 앱을 이용해 보세요. 구글은 일본어에 대한 번역 데이터베이스가 더 풍부한 점을 이용하여, 번역할 문장을 일본어로 번역한 후 이를 다시 원하는 언어로 번역합니다. 일반적으로 한글을 직접 번역하는 것 보다 훨씬 품질이 좋습니다. 즉시 번역 예) 영어 -> 한국어로 번역 중간 번역 예) 영어 -> 일본어 -> 한국어로 번역 특징 즉시 번역과 중간 번역을 선택적으로 사용 입력 글자수에 제한이 없음 즉시 번역과 중간 번역 품질을 비교 귀여운 고양이 배경 화면 더보기
[Github/Javascript-OOP-AOP-IoC] 자바스크립트 객체지향 프로그래밍 (github) Javascript-OOP-AOP-IoC / 자바스크립트 객체지향 프로그래밍 자바스크립트 객체지향 프로그램을 쉽게 하기 위한 소스 코드를 github 에 공개(https://github.com/powerumc/Javascript-OOP-AOP-IoC)했다. 자바스크립트로 객체지향 프로그래밍을 잘 하려면 배워야 하는 것들이 참 많다. 함수형 프로그래밍과 자바스크립트의 prototype 기반의 chain, 함수를 인스턴스로 사용하고, 객체지향적인 몇 가지 자바스크립트 패턴을 익혀야 하는 데, 쉽지만은 않을 것이다. C 가장 간단한 객체지향 코드를 보자. 이 코드는 Program 클래스를 상속 받은 Outlook 클래스가 있고, run() 메서드로 실행하는 코드다. function INHERITANCE(PAR.. 더보기
[보안] Bash 원격코드실행 취약성 패치하기 오늘 팀 동료를 통해 bash 취약점이 있다는 내용을 들었고, cnet.com 링크를 통해 확인할 수 있다. bash 보안 취약성 패치하기 제가 배치한 버전은 bash 4.3.25 (이 버전의 패치 코드 25개) 이며, 이 버그는 원격 코드 실행 버그로 매우 위협적인 버그이다.맥에서는 당시(2014–09–26) MacPort, Homebrew 에서 패치 버전을 제공하지 않는 관계로, 직접 소스 코드를 컴파일 하는 방법으로 해결하였다.최신 bash 버전으로 패치하고 컴파일 하는 스크립트 코드를 필자의 github 에 커밋하였다. - https://github.com/powerumc/Patch-Bash-Vulnerability맥/리눅스 에서 아래의 명령을 실행하면 바로 패치 하도록 했다. curl https.. 더보기
[Synergy] 여러 컴퓨터에서 키보드, 마우스 공유 개요윈도우 맥 리눅스 등 멀티 컴퓨터에서 마우스와 키보드를 공유할 수 있는 소프트웨어로 편하게 개발하기Pair Programming 시에 키보드의 마우스를 주거니 받거니 할 필요 없이 각각 키보드와 마우스를 이용하여 개발하기 설치하기1. 공식 홈페이지http://synergy-project.org/ 2. 다운로드 링크 중요 : 현재 다운로드가 공식 홈페이시를 통해 불가능해 졌습니다. 따라서 아래의 링크를 통해 다운로드를 하시기 바랍니다. (저희 팀의 브리츠님께서 알려주신 정보입니다) Synergy Nightly Build : https://synergy-project.org/nightly/ Synergy 가 판매 및 기부 방식으로 변경되면서, 아래의 링크에서 다운로드 받을 수 없습니다. Stable ve.. 더보기
[Handlebars] Handlebars.java 버전의 with helper 버그 패치 커밋 회사에서 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 템플릿은 다음과 같다. {{#.. 더보기
[Java] Java 8 Interface, default 메서드의 고찰 얼마 전 자바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.. 더보기
[Markdown Toc] Markdown 콘텐트를 랜더링, 목차를 만들어 주는 소스 공개 필자 만든 소스 코드가 GitHub에 올린 것들이 20여 가지가 넘어간다. 소스 코드도 중요 하지만 이것을 잘 설명하는 것도 무척 중요한 것 같다. 거기에 예쁘게 꾸밀 수 있다면 이건 신이 주신 능력임이 분명할 거다. ㅠ Markdown ToC (Table of Contents) 이런 어려움에 착안하여 Markdown ToC를 만들어 GitHub에 공개했다. 링크 : https://github.com/powerumc/markdown-toc Markdown ToC는 Markdown 문법을 이용하여 만든 문서에 목차를 만들어 주는 라이브러리이다. 진짜 별 거는 아니고, 필자가 필요해서 쓱~ 만들었다. MIT 라이센스로 공개 했으며, 이미 잘 만들어진 marked.js, tocify.js 라이브러리를 조합하여.. 더보기
[MonoDevelop] MonoDevelop 한글 버전 프로젝트 오픈 지난 2013년 7월부터 MonoDevelop 공식 프로젝트를 Fork 하여 MonoDevelop Korean 프로젝트를 진행 하였습니다. 그 결과 한 달을 매달려 약 4,500여 문장을 번역하였습니다. 그냥 번역 작업만 하면 쉽게 생각하겠지만, IDE 툴에서 보여주는 메시지를 영문으로 보여야 할지, 한글로 보여야 할지… 여러 문장이 합쳐지면 어색해 지지 않는지… 그리고 직역을 하게 되면 의미가 잘못 전달되지 않는지… 번역에 따른 크래시 버그…. 이런 작업을 일일이 확인 하다보니 한 달이라는 시간이 지났던 것이죠;;; 앞으로 이 사이트를 통해 지속적으로 한글 번역과 개선 작업을 진행 할 예정입니다. http://monodevelop.co.kr 더보기
[Redis] 새로 추가한 mysql 명령어로 db 연동 데이터베이스로 데이터를 조회하는 데, 성능을 꾀하기 위해 redis와 연동을 한다. 신규 기능에 적용하는 것은 어렵지 않을 것 같다. 하지만 기존 legacy 코드를 db에서 redis로 변경 한다면 새로운 전략이 필요할 것이다. 이런 경우가 얼마나 많겠냐마는 때때로 미션 크리티컬한 시스템 문제가 발생하면 한 번쯤 고려해 볼 만한 시나리오다. db에서 redis로 변경한다면 redis client 코드로 db 데이터를 조회하고 redis 데이터를 조회하여 결과 셋을 조합 proxy 객체를 생성하여 db/redis 중 데이터 조회 redis 명령 추가 위의 몇 가지 전략 중 성능이 가장 좋은 것은 3 > 2 > 1 이 될 것이고, 수정해야 할 legacy 코드의 양은 2 > 3> 1 순서가 될 것이라 짐작.. 더보기
[OpenSSL] 디버깅을 통해 알아보는 Heartbleed 취약성 버그 전 세계 인터넷은 OpenSSL의 중대한 버그로 난리다. 이 버그의 주요 요지는 특정 OpenSSL을 사용할 경우 메모리의 64KB를 획득할 수 있고, 이 버그로 서버 인증서의 비밀키(개인키)를 취득하여 서버로 오가는 모든 패킷을 취득할 수 있다. 라는 것인데, 이를 가리켜 Heartbleed(심장출혈) 버그라고 한다. 그 만큼 심각한 버그가 맞는데, 일각의 미디어에서 최악의 시나리오를 너무 일반화시키는 것이 아닌가 싶다. 필자가 보안 전문가는 아닌 만큼 잘못된 부분은 너그러이 지적해 주길 바란다. - 사용자는 모두 패스워드를 변경해야 하나? 해도 되고 안해도 된다. 어차피 개인정보는 오픈소스. :) 농담이고, 취약성이 있는 OpenSSL을 사용하면 공격자는 클라이언트의 사용자 요청 데이터를 가로챌 수 .. 더보기
[Mac] DeskBoard 앱 할인 이벤트, 프레젠테이션을 위한 앱 DeskBoard 앱은 프레젠테이션 등으로 발표를 자주 하는 분들을 위해 필자가 만든 앱입니다. (지난 블로그 글) 이번에 $9.99의 앱 가격을 이달 4월 말까지 $2.99 로 할인합니다. DeskBoard 앱은 유료/무료 버전 두 가지가 있습니다. 무료 버전도 모든 기능을 지원 하지만 멀티 모니터(두 대 이상 모니터)를 지원하지 않습니다. 그러므로 외부 모니터에 연결하거나 멀티 모니터 지원이 필요한 분만 유료 버전을 구매하시면 됩니다. 자세한 사항은 아래의 AppStore 아이콘을 클릭하면 됩니다. DeskBoard (유료 $2.99 더보기
[Mono] Mono 플랫폼에서 데스크탑 응용 프로그램 개발 3가지 방법 Mono 데스크탑 응용 프로그램 개발 3가지 방법 클라이언트 응용 프로그램 또는 데스크탑 응용 프로그램을 Mono로 만든다면, 어떤 방법으로 만들면 좋을까? 이 세 가지 방법을 알아본다. 1. System.Windows.Forms System.Windows.Forms(일명 윈폼-WinForm)으로 GDI(그래픽 장치 인터페이스(Graphics Device Interface)의 APIs를 객체지향적으로 제공하는 것을 일컷는다. 이제 대한 자세한 설명은 GDI+ 링크를 참고 하기 바란다. 그러나 Mono 환경에서 Windows Forms 개발은 사용자에게 좋은 사용자 인터페이스를 제공하지 못한다. virtual OnPaint(PaintEventArgs e) 가 적절하게 동작하지 않는다. 화면의 창 사이즈를 .. 더보기
[MySQL/C/JAVA] MySQL 5.6 버전의 DATETIME 이슈 프로그래밍은 언제나 숫자와의 경쟁인 것 같다. 반올림이 되느냐, 부동소수점이냐, 정수 오버플로우(integer overflow) 등은 백발이 되어 코드를 만질 때 까지 항상 따라다니는 문제가 될 것이다. MySQL 날짜 관련 이슈 얼마 전 필자가 다니는 회사에서 발생한 데이터베이스 관련 이슈로 다음과 같은 문제가 발생하였다. 아래는 MySQL 관련 문제에 대하여 공유된 내용이다. MySQL 5.6.4 부터 시간값 저장시 밀리세컨드를 지원한다. 하지만 DATETIME의 경우 길이가 6일 경우에만 가능하다. 그런데, DATETIME 타입(이는 DATETIME(4)와 같다)일 경우 밀리세컨드 부분을 반올림(round)하는 버그가 있다. #68760 이 버그로 인해 1999년 12월 31일 23시 59분 59초.. 더보기
[GitHub] 세 가지 업데이트 소식 js-lambda-expression, js-array-extensions, monodevelop-korean 필자가 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.. 더보기
[GDB] Hopper Disassembler 앱 필자는 소프트웨어 개발에 필요한 앱은 라이선스를 구매해서 쓴다. 자랑은 아니지만 앱스토어와 그 외 구매한 앱의 개수가 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] 스크롤바가 비활성화 된 상태 문제 원인 이 버그에 .. 더보기