본문 바로가기 메뉴 바로가기

"엄준일"과 함께하는 소프트웨어를 위한 플랫폼 이야기

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

"엄준일"과 함께하는 소프트웨어를 위한 플랫폼 이야기

검색하기 폼
  • UMC BLOG (98)
    • Umc Projects (19)
      • Umc.Core (1)
      • Umc Blog (0)
      • Comment Helper (0)
      • VSHelper (0)
      • VSExplorer (0)
      • VSCMD (0)
      • VSGesture (2)
      • umcDateTimePicker (0)
      • MousePresentationTracker (0)
      • JS-OOP (1)
      • JS-Array Extensions (1)
      • JS-Lambda (1)
      • MonoDevelop Korean (4)
      • [Mac App] 슈퍼 눈팅 (0)
      • [Mac App] DeskBoard (2)
      • [Mac App] Inter Translate (.. (2)
      • RedisPlus (1)
      • MyRedis (1)
      • onhashchange (0)
    • UMC (2)
      • 엄씨 생각 (0)
      • 엄씨 이야기 (2)
    • .NET (29)
      • C# (8)
      • AJAX (0)
      • ASP.NET (9)
      • XML/XSLT (0)
      • MSDN (0)
      • WPF/Silverlight (0)
      • .NET Framework (0)
      • Smart Client (4)
      • Visual Studio (7)
      • TFS / Team System (1)
      • WCF (0)
      • Modeling (0)
    • C++ (14)
    • Java (10)
      • Eclipse (4)
      • Java (5)
    • Javascript (4)
    • Software Development (3)
      • Software Factory (0)
      • Agile (0)
      • Testing (1)
    • Enterprise Architecture (8)
      • Architecture (8)
      • Development Framework (0)
    • Office (1)
    • Seminar (0)
      • 세미나 정보 (0)
      • 세미나 후기 (0)
    • O/S (3)
      • Windows 8 (0)
      • Windows (0)
      • Utility (0)
      • Linux (2)
      • Mac (1)
    • Mono (5)
    • BigData (0)
  • 방명록

C++ (14)
[MIPS] beq 를 안쓰고 bne 를 쓰는 이유는 무엇인가요?

얼마 전에 페이스북에 올라온 질문인데, “MIPS 어셈블리 코드 중 beq 를 안쓰고 bne 를 쓰는 이유는 무엇인가요?” 라는 질문이다. 아래와 같은 C 언어 코드가 있고,if (i == j) f = g + h; else f = g - h;이를 순서도로 나타내면 다음과 같다. 컴파일러와 최적화 옵션에 따라 생성되는 어셈블리 인스트럭션이 아래와 똑같다고 말할 수 없다.일반적으로 컴파일러는 인스트럭션을 생성할 때 조건문의 경우 반대 조건으로 해석해서 인스트럭션을 작성한다. 이런 경우 대부분 인스트럭션의 크기가 짧아지기 때문에 더 적은 클럭에서 명령을 수행할 수 있기 때문이다. 따라서 아래와 같은 어셈블리 코드가 생성된다.# bne 를 사용하는 코드 bne $s3, $s4, Else add $s0, $s..

C++ 2015. 5. 12. 04:12
[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..

C++ 2015. 4. 23. 17:44
[Redis] 새로 추가한 mysql 명령어로 db 연동

데이터베이스로 데이터를 조회하는 데, 성능을 꾀하기 위해 redis와 연동을 한다. 신규 기능에 적용하는 것은 어렵지 않을 것 같다. 하지만 기존 legacy 코드를 db에서 redis로 변경 한다면 새로운 전략이 필요할 것이다. 이런 경우가 얼마나 많겠냐마는 때때로 미션 크리티컬한 시스템 문제가 발생하면 한 번쯤 고려해 볼 만한 시나리오다. db에서 redis로 변경한다면 redis client 코드로 db 데이터를 조회하고 redis 데이터를 조회하여 결과 셋을 조합 proxy 객체를 생성하여 db/redis 중 데이터 조회 redis 명령 추가 위의 몇 가지 전략 중 성능이 가장 좋은 것은 3 > 2 > 1 이 될 것이고, 수정해야 할 legacy 코드의 양은 2 > 3> 1 순서가 될 것이라 짐작..

C++ 2014. 4. 21. 00:45
[OpenSSL] 디버깅을 통해 알아보는 Heartbleed 취약성 버그

전 세계 인터넷은 OpenSSL의 중대한 버그로 난리다. 이 버그의 주요 요지는 특정 OpenSSL을 사용할 경우 메모리의 64KB를 획득할 수 있고, 이 버그로 서버 인증서의 비밀키(개인키)를 취득하여 서버로 오가는 모든 패킷을 취득할 수 있다. 라는 것인데, 이를 가리켜 Heartbleed(심장출혈) 버그라고 한다. 그 만큼 심각한 버그가 맞는데, 일각의 미디어에서 최악의 시나리오를 너무 일반화시키는 것이 아닌가 싶다. 필자가 보안 전문가는 아닌 만큼 잘못된 부분은 너그러이 지적해 주길 바란다. - 사용자는 모두 패스워드를 변경해야 하나? 해도 되고 안해도 된다. 어차피 개인정보는 오픈소스. :) 농담이고, 취약성이 있는 OpenSSL을 사용하면 공격자는 클라이언트의 사용자 요청 데이터를 가로챌 수 ..

C++ 2014. 4. 17. 01:05
[GDB] Hopper Disassembler 앱

필자는 소프트웨어 개발에 필요한 앱은 라이선스를 구매해서 쓴다. 자랑은 아니지만 앱스토어와 그 외 구매한 앱의 개수가 200개가 넘어간다. 히힣; 오늘 소개하는 앱 처럼 제값어치 하는 앱에겐 뭔가 모를 희열을 느낀다. 여성분들이 쇼핑을 좋아하는 것처럼 -0- Hopper Disassembler 이 앱은 윈도우의 WinDbg, 그리고 GNU gdb처럼 디버거 명령줄(Command Line)에 익숙하지 않은 디버거에게 유용한 앱이다. 몇 달 전, Objective-C with LLVM 어셈블리 코드를 분석하기 위해 구매했다. Objective-C 내부적인 언어적 매커니즘을 이해하기 위해 역어셈블리 분석은 필수이기 때문이다. 그 중 이 앱은 기대한 것 보다 기능은 적지만, 사소한 곳에서 감동을 주는 앱이라 생..

C++ 2014. 2. 12. 02:21
[퀴즈] 프로그래머를 위한 문제 #4 - 또라이 같은 C 언어 코드를 설명하라

재미있는 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..

C++ 2013. 12. 30. 20:28
[Objective-C] OSX 매버릭스(Mavericks) 업데이트 후 개발 중인 앱이 정상 작동하지 않는다면

매버릭스 업데이트 후 개발 중인 맥 앱에서 발생하는 문제 OSX 매버릭스로 업데이트한 후 XCode로 개발 중인 유틸리티 프로그램의 일부 기능이 작동하지 않는 현상이 발생한다. 원래 Alpha 버전으로 곧 배포할 예정이었는데, 이 문제로 배포가 늦어질 것 같다. 문제는 Objective-C와 Cocoa를 사용하여 전역 마우스 및 키보드 후킹(hook global mouse and keyboard event)을 사용하는 코드가 있는데, 그 중 키보드 이벤트만 캡춰링(capturing)할 수 없는 현상이 발생한다. 해결 방법 의외로 해결 방법은 간단하다. 먼저 OSX 매버릭스에서 변경된 보안 사항에 대해서 알 필요가 있다. 기술적인 내용은 아니므로 쉬엄쉬엄 다음의 글을 참고하기 바란다. OS X 10.9 매..

C++ 2013. 10. 25. 01:07
[Objective-C] 아름다움을 추구하는 오브젝티브-C 2/2 - 객체지향

반 객체지향(Half-of-OOP) 가장 먼저 명심하자. 오브젝티브-C는 C언어의 슈퍼셋(Super Set)이고 C++의 객체 지향과는 거리가 멀다. 오브젝티브-C 언어는 마치 객체지향 프로그래밍(OOP, Object-Oriented Programming) 처럼 보이지만 객체지향 언어가 아니다. 그렇다고 완전히 함수형 언어도 아니다. 하지만, 오브젝티브-C는 객체지향의 가장 대표적인 특징인 상속(Inheritence)이 가능하고 인터페이스 구현이 가능하다. ANSI-C 입장에서 바라보면 상속과 인터페이스 구현은 함수형 언어로서 가당치도 않은 언어적 특성임에 틀림 없을 것이다. (이 문장의 인터페이스는 오브젝티브-C의 @protocol을 의미함.) 물론, C 언어에서도 구조체(struct), 포인터(poi..

C++ 2013. 9. 12. 07:00
[Objective-C] 아름다움을 추구하는 오브젝티브-C 언어 1/ 2- 언어적 특성

아름답고 자연스러운 오브젝티브-C 필자가 오브젝티브-C(Objective-C)를 접한 것은 올해 초, 갑갑한 문법적인 표현(Syntax)을 보니 코드를 보기가 싫어졌었다. 하지만 많은 iOS 개발자가 생겨나고 맥킨토시(Macintosh)를 쓰면서 자연스럽게 맥용 응용 프로그램에 관심이 생기기 시작했다. 처음에는 리눅스와 대부분의 운영체제를 지원하는 Qt(큐티) 프레임워크를 봐오다가, 코코아(Cocoa) 를 알게 되면서 맥킨토시에 가장 아름다운 UI 프레임워크인 것을 느끼게 되었다고 할까. 오브젝티브-C는 매우 깊은 역사가 있다. 이 역사에 대해서는 다음의 위키피디아(Wikipedia) 를 참고하기 바란다. 필자도 이 언어에 대한 깊은 역사를 이렇다 할 만큼 자신 있게 설명해 주기 힘들 것 같다. .. 생..

C++ 2013. 9. 11. 06:30
[퀴즈] 프로그래머를 위한 문제 #3 - 미로 찾기

[퀴즈] 프로그래머를 위한 문제 #3 요즘 퀴즈를 풀다보니 재미가 들렸나, 필자가 문제를 하나 내보려고 한다. 어려울 수도, 그렇지 않을 수도 있는 문제이며, 효율적인 코드를 작성하는 것 보다 최대한 짧게 짜는 것이 목적이다. 문제의 유형과 정답의 유형은 지난 문제를 참고하면 된다. [퀴즈] 프로그래머를 위한 문제 #1 [퀴즈] 프로그래머를 위한 문제 #2 미로 찾기 게임 문제는 미로 찾기 게임이다. 10 x 6 (가로, 세로) 크기에 * 문자가 채워진 직사각형 미로의 크기가 변해도 실행 가능해야 한다. 문자 S 는 입구 위치, 문자 E는 출구 위치이다. S 문자와 E 문자 사이에는 공백으로 연결된 길이 있고, 길은 여러 갈래일 수 있다. 길(공백)은 2x2(가로, 세로) 이상의 공간을 가질 수 없다. ..

C++ 2013. 7. 8. 07:00
[퀴즈] 프로그래머를 위한 문제 #2 - 스택 프레임(Stack Frame)

프로그래머를 위한 문제 #2 얼마 전 OKJSP 를 통해 이런 문제를 보았다. 문제는 아래의 코드 중 /* INPUT */ 주석에 알맞은 코드를 넣어, victory() 메서드가 호출되도록 완성하여라. 필자의 컴퓨터에서는 답이 (function-48)(); 로 나왔다. typedef int (*f)(); int variable = 1; int function() { if(variable == 1 ) return /* INPUT */ 5; victory(); } int main() { function(); return 0; } [문제 코드] 위의 INPUT 주석에 알맞은 코드를 넣어라. 단 제약 조건이 있습니다. 다음의 문자는 사용할 수 없음 : main, victory, asm, %, *, _, #, /..

C++ 2013. 7. 5. 18:26
[퀴즈] 프로그래머를 위한 문제 #1 - 1부터 8만까지 8의 개수

프로그래머를 위한 문제 프로그래머라면 알쏭달쏭한 논리적인 문제를 좋아하는 편인 것 같다. 답이 팍~ 나오는 문제보다 역량에 따라 코드의 아름다움이 달라지는 것을 추구하는 프로그래머라면 더욱 그렇다. 문제: 1부터 1만까지 8은 모두 몇 개가 나오나? 문제는 쉽다. 1부터 1만까지 8이라는 문자 개수만 카운팅하면 된다. 그런데 이렇게 간단한 문제를 코딩해 놓고 보면 맘에 안든다. 더 짧게…. 아래의 문제를 각 언어별로 풀어보았는데, 바이트 수는 캐러지 리턴(carriage return) 문자를 모두 제거한 바이트 수이다. 참고로, 이 문제는 ‘닷넷(.NET) 프로그래머 모임’ 에서 처음 본 문제인데, 오래 전의 일이라 게시글의 링크를 도저히 찾기가 힘들어서 링크를 남기지 못했다. 여러분 중 문제를 풀어보려..

C++ 2013. 7. 2. 07:00
[Qt] Qt 5.0의 webkitwidgets 사용

발생 배경Qt를 가장 잘 개발할 수 있는 개발 도구 Qt 개발 플랫폼인 Qt 5.0(Qt 5.0 / Qt Creator 2.6.2) 에서 QWebView 위젯을 제대로 link 및 include 할 수 없는 현상이 발생한다. 이전 환경에서는 물론 발생하지 않는, 이전 release에 보고된 버그이다. 오류 유형은 일치하지 않으나 발생하는 환경은 유사하다고 볼 수 있다. widgets 모듈에 포함되었던 QWebView가 다른 모듈로 분리가 되었기 때문이다. :-1: error: symbol(s) not found for architecture x86_64 해결 방법해결 방법은 의외로 간단하다. .pro 파일(qmake) 의 속성을 다음과 같이 추가한다.QT +=core gui webkitwidgets QT..

C++ 2013. 3. 11. 23:49
[월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다. 그리고 현재 필자는 NCSOFT에 재직하지 않음을 참고하기 바랍니다. [월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012 [월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어 [월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며 엄준일 – 현재 NCSOFT에 재직 중이며, Microsoft ALM MVP와 한국 Visual Studio 팀과 블로그를 운영하고 ..

C++ 2012. 8. 1. 18:03
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
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++ 빌더 포럼
  • .
TAG
  • Visual Studio 2008
  • Windows 8
  • 비주얼 스튜디오 2010
  • ASP.NET
  • TFS 2010
  • .NET
  • Managed Extensibility Framework
  • 비주얼 스튜디오
  • test
  • Team Foundation Server
  • c#
  • 팀 파운데이션 서버
  • 엄준일
  • Silverlight
  • .NET Framework 4.0
  • testing
  • Team Foundation Server 2010
  • POWERUMC
  • Visual Studio 2010
  • monodevelop
  • MEF
  • TFS
  • ALM
  • LINQ
  • github
  • umc
  • Visual Studio 11
  • 땡초
  • Visual Studio
  • mono
more
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Blog is powered by Tistory / Designed by Tistory

티스토리툴바