태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

달력

12

« 2017/12 »

  •  
  •  
  •  
  •  
  •  
  • 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
  •  
  •  
  •  
  •  
  •  
  •  
2011.09.22 17:09

Windows 8 - COM의 역습 분류없음2011.09.22 17:09

"윈도우 8, PC와 태블릿 SW 호환안돼"라는 블로터닷넷 기사를 보고 관심이 생겨 살짝 구글링 하다가 Win 8에 추가되는 Windows Runtime(WinRT) 라는 녀석에 대해 기술적으로 설명한 글이 있어서 공유합니다.

원문 : Microsoft's high-risk Windows 8 .NET switch - Revenge of COM, or something like it


원문을 쓴 사람은 MS가 태블릿 환경에서 아이패드를 따라잡는 것을 가장 중요한 목표로 잡고 있다고 보고 있네요. 그래서 모든 에너지를 WinRT 기반의 메트로 앱과 클라우드 환경에 쏟고 있다고 보고 있습니다. (닷넷과 실버라이트는 뒷전이라는 얘기죠.)

아래 내용은 제가 요약한 버전입니다.



WinRT : COM으로의 회귀(혹은 아주 비스무레한 새로운 녀석)

MS는 터치 인터페이스에 잘 어울리는 기반이 필요했다. 윈폰7에서 닷넷 기반 XNA나 실버라이트를 시험해 봤지만, 결국 새 API 모델을 만든 셈이다.

WinRT는 닷넷에 의존하지 않는다. 닷넷이 등장하기 이전에 윈도우를 구성하던 COM 스타일의 런타임이다. 거기에 닷넷에서 가져온 메타데이터 시스템을 채용하여, .winmd 라는 파일에 메타데이터를 저장한다. 그 덕분에 닷넷, C++, IE 엔진에서 모두 호출할 수 있는 런타임이 되었다. UI는 WPF/Silverlight에서 사용하던 XAML 을 채용했지만, 닷넷 기반이 아니라 Native 로 재작성한 것이다.

메트로 스타일 앱 환경 자체는 실버라이트와 비슷한 보안 모델을 사용하고 있어서 굉장히 제한적이다. 네이티브 DLL을 만들 수 있지만, 역시나 허용한 기능만 사용할 수 있다. 다른 앱과 공유된 익스텐션을 만들 수 없게 되어 있다.  파일 I/O 도 앱 전용 Isolated Storage에 대해서만 허용된다. (거의 애플 iOS 의 어플리케이션 모델과 비슷하게 보이네요.)

메트로 스타일 앱을 위한 UI 시스템은 프로그래머들이 사용하기 쉬우면서도 높은 성능을 제공한다. 모든 화면은 DirectX로 렌더링된다. 또한 비동기 프로그래밍 기능이 아주 쉬워졌다. await 라는 새로운 키워드가 제공되어, 프로그래머는 동기적인 것처럼 간단히 프로그래밍하면 내부적으로는 콜백을 써서 비동기적으로 동작한다.



추가로 InfoQ의 WinRT: An Object Orientated Replacement for Win32 라는 포스트도 참고할 만 합니다.

신고
TAG Windows 8
Posted by wafe

댓글을 달아 주세요

제가 겪은 상황은 빌드해서 실행하면 ZKFileArchive 내부에서, [NSCFString zk_precomposedUTF8Length] unrecognized selector sent ... 라는 에러가 나는 상황이었습니다.

이 상황은 ZipKit 의 이슈트래커에도 올라와 있더군요. ( #22 zk_precomposedUTF8Length unrecognized selector sent to instance )

해결책은 해당하는 타겟의 빌드 설정에서 Other Linker Flags 에 -Objc 와 -all_load 플래그를 추가해주는 것이었습니다.



신고
TAG ios
Posted by wafe

댓글을 달아 주세요

Objective-C로 iOS 개발을 할 때 retain count 를 잘못 관리하여 EXC_BAD_ACCESS 에러가 발생하면서 프로그램이 종료되는 문제를 디버깅할 때 사용할 수 있는 팁에 대한 글입니다.

EXC_BAD_ACCESS 메모리 문제 디버깅하기

신고
Posted by wafe

댓글을 달아 주세요

SHFB(Sandcastle Help File Builder)를 이용하여 .NET 프로젝트 문서화를 할 때(코드주석 문서화하자 참조) namespace에 해당하는 페이지에서는 항상 문서화 주석이 없다는 붉은 오류 메시지가 포함되어 상당히 보기 안좋았는데, 오늘 잠깐 검색을 해서 방법을 찾았습니다. 이것은 SHFB에 포함된 도움말의 색인에서 NamespaceDoc class 항목을 찾아보면 볼 수 있는 내용입니다.

해당 네임스페이스에 NamespaceDoc 이라는 클래스를 만들고 그 클래스에 문서화 주석을 달면 SHFB가 빌드할 때 네임스페이스 도움말로 바꿔줍니다. 아래와 같은 코드를 만드는거죠.

namespace TheNamespace
{
    /// <summary>
    /// 이 네임스페이스로 말할 것 같으면, 아무튼 멋지구리하다는 것!
    /// </summary>
    [System.Runtime.CompilerServices.CompilerGenerated]
    class NamespaceDoc
    {
    }
}

이렇게 써주면 TheNamespace 에 해당하는 도움말 페이지에는 NamespaceDoc 클래스의 문서화 주석 내용이 표시되는 겁니다. 이제 더이상 별로 보기 안 좋은 붉은 글씨를 안 봐도 되겠네요!



신고
Posted by wafe

댓글을 달아 주세요

2011.02.12 00:07

오늘의 몽상. 아키텍트?! 분류없음2011.02.12 00:07

회사에서 후배 녀석이, 벤츠(BMW 였던것 같기도 합니다) 컨셉트 카 사진을 보면서 곡선이 어떻게 이렇게 멋질 수가 있냐, 정말 갖고 싶다, 과장님 이거 사줘요 등등 갖은 오도방정을 떱니다.

그런 모습을 보니 문득 소프트웨어 설계/개발도 그런 눈에 보이고 손에 잡히는 모양으로 나타난다면 저 녀석이 참 재미있게 일하겠구나 싶은 생각이 듭니다.

'이야~ 이거 설계가 아주 매끈한데? 이 곡선을 봐~ 끝내주는구만!' '어~ 거기는 좀 더 깎아야겠는데~' 같은 식으로 대화할 수 있으면 재미있지 않겠어? 했다가 뭐든지 개발에 갖다붙인다고 핀잔만 벌었습니다.

저도 능력있는 설계자, 흔한 외래어로 아키텍트의 능력을 갖고 싶은 개발자 중의 한 명이지만 아직 어디가서 설계의 설 자도 내밀만한 정도도 못됩니다.

혹시 아키텍트로서의 능력을 각성하게되면 소프트웨어 설계가 마치 실체인 것처럼 머리속에 선명하게 떠오르게 되는 것은 아닐까 하는 공상도 해봅니다. 영화 인셉션에 나오는 장면들처럼요.

iPhone 에서 작성된 글입니다.
신고
Posted by wafe

댓글을 달아 주세요

일단 iPad를 iOS 4.3 beta 2 로 업그레이드 해야 되겠죠.

개발자 사이트에서 iPad 용 iOS 4.3 beta 2 DMG 파일을 받습니다. 700MB 가 좀 안되는 정도의 크기입니다. 받는 동안 iPad에서 구매한 항목도 iTunes로 전송해주고, 백업도 해 둡니다. 언제나 백업은 필수죠.

다운로드가 끝나면 DMG를 더블클릭해서 마운트하면 ipsw 파일이 하나 들어있습니다.

iPad를 USB로 연결해놓고 iTunes 에서 복원을 하는데, option 키를 누른 채로 복원 버튼을 눌러줍니다. 그러면 파일 선택창이 뜹니다.

아까 마운트 한 DMG 파일에 들어있는 ipsw 파일을 선택하면 이후로는 기다리기만 하면 됩니다.

이전에 4.1에서 4.2로 업데이트할 때에는 업데이트 후에 앱들도 다 복원이 되었는데, 이번에는 데이터와 설정만 복원이 되고 앱은 복원이 되지 않았습니다. 응용프로그램만 iTunes를 통해서 다시 동기화를 시켜주니 이전의 데이터들이 다 남아 있어서 사용할 수 있게 되었습니다. (아직 다른 앱들은 괜찮은데 트위터 공식 앱은 글쓰기를 누르면 죽어버리는군요 ㅜ.ㅜ)

테더링을 해 봅니다!

일단 아이폰에서 테더링을 켭니다. 테더링을 꺼놓고 블루투스부터 연결하려고 했더니 서로 연결이 안되었습니다. (아이폰은 iOS 4.2 입니다)

그리고 아이패드에서 블루투스를 켜고 아이폰과 연결을 하면 일반 노트북으로 블루투스 테더링 쓰는 것과 동일하게, 아이폰 화면 상단은 파란 막대가 생기고 아이패드에서 테더링을 이용한 인터넷이 됩니다.

베타의 문제

제가 경험한 것은 두 가지입니다.

일단 위에서 말씀드린 것처럼 트위터 공식 앱이 글쓰기 버튼을 누르면 종료되어 버리는 것이 있습니다.

그리고 아이패드 상에서 앱 아이콘 배치(폴더 조정 등)한 것이 동기화를 해도 iTunes에는 반영이 되지 않아서, 동기화할 때마다 iTunes 쪽의 배치로 돌아가버리는다는 점 정도입니다.

신고
TAG ios
Posted by wafe

댓글을 달아 주세요

지난 번 포스트에 이어지는 Xinics 개발부 블로그의 Objective-C 관련 포스트입니다. "여러 개의 인자를 받는 메소드".

신고
Posted by wafe

댓글을 달아 주세요

2011.01.19 09:36

티스토리로 컴백 분류없음2011.01.19 09:36

텍스트큐브닷컴에서 다시 티스토리로 돌아왔습니다. 블로거닷컴 강제 이전 시한이 얼마 남지 않았죠. 블로거닷컴으로 가는 것은 텍스트큐브 기반 블로그에서 쓰던 것과 많이 달라서 내용이 이전된다고 해도 완벽하지는 않을 것 같고, 어차피 도메인이 유지될 수도 없어서요.

트위터 쪽에 발행된 링크들이 아직 예전 블로그 쪽으로 연결되는 경우도 있는 것 같아서 내용은 그대로 뒀습니다. wafe.kr 이라는 개인 도메인으로만 블로그를 사용했었는데 그 도메인은 이미 티스토리로 바꿔두었는데도 텍스트큐브닷컴 쪽으로 연결되는게 신기하네요.

신고
Posted by wafe

댓글을 달아 주세요

오랜만에 자이닉스 개발부 블로그에 글을 썼습니다. "메시지, 메소드, 셀렉터에 대해서"라는 글인데, Objective-C에 있는 @selector 라는 컴파일러 지시자에 대해서 공부하다가 쓰게된 글입니다. 아마도 연재가 되어야 할 것 같기는 한데요... 시간과 의지가 허락하는 안에서 최대한 노력해보도록 하겠습니다.
신고
Posted by wafe

댓글을 달아 주세요

이전까지의 Visual Studio에서는 ATL Simple Object(ATL 단순 개체)를 만들 때 약식 이름을 넣어주면 모든 필드가 채워졌지만 Visual Studio 2010에서는 그렇지가 않아서 좀 당황스럽네요. 앞으로는 ProgID를 빠뜨리지 않게 신경써야 되겠습니다.


Visual Studio 2010에서는 보안상의 이유로 ProgID 를 자동으로 채워주지 않도록 했다고 하는데, 정확히 어떤 보안상의 이유인지는 저도 아직 파악을 못했고, 이러한 변화를 언급하고 있는 웹 페이지를 두 개 정도 찾았을 뿐입니다.

신고
Posted by wafe

댓글을 달아 주세요



티스토리 툴바