2010년 12월 14일 화요일
2010년 12월 12일 일요일
안드로이드에서 쉽게 AVD 경로롤 바꾸는 방법
컴퓨터의 환경변수에 ANDROID_SDK_HOME를 추가하고 원하는 위치로 다시 지정한 후
AVD를 다시 만들면 새로 설정된 위치로 AVD가 만들어지네요.
2010년 12월 10일 금요일
.NET 4.0 XamlParseException
.NET 4.0에서 SetWindowsHookEx를 쓸 때 .NET 2.0 방식과 혼동되지 않도록 주의하셔야 합니다. 2.0 방식으로 하시면 제목과 같이 XamlParseException이 일어나게 됩니다.
.NET 2.0 방식
hMouseHook = SetWindowsHookEx(
WH_MOUSE_LL,
MouseHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);
.NET 4.0 방식
hMouseHook = SetWindowsHookEx(
WH_MOUSE_LL,
MouseHookProcedure,
IntPtr.Zero,
0);참조 링크http://www.go4answers.com/Example/setwindowshookex-works-net-2-not-net-4-115728.aspx
2010년 11월 22일 월요일
워드에서 이미지 퀄리티 줄이지 않고 저장하기
결론부터 말하면 '이미지 압축' 메뉴의 대상출력에서 '문서 해상도'를 지정하면 안됩니다. (저는 지금까지 '문서 해상도'가 가장 좋은 것으로 생각했네요. -_-;) 반드시 '인쇄'를 선택해주십시오. 간혹 이미지 해상도가 낮아서 '인쇄'가 선택 불가한 경우가 있습니다. 그러면 그 다음 메뉴인 '화면'이나 '전자 메일'을 선택해주시면 됩니다.
이런 지정이 귀찮으신 분들은 gif이미지를 사용하시면 됩니다. 실험해본 결과 gif는 크기를 줄여서 저장했다가 늘려도 퀄리티 차이가 거의 없습니다.
만약 캡처를 이미지로 저장하여 사용하신 다면 jpg는 절대절대 비추합니다. 저장할 때 부터 퀄리티가 마구 떨어집니다.
2010년 11월 16일 화요일
닷넷 코드 엑세스 보안과 WPF 성능
http://msdn.microsoft.com/ko-kr/library/930b76w0(v=VS.90).aspx
악의적인 이식 가능한 코드로부터 시스템을 보호하고, 알 수 없는 출처에서 가져온 코드를 안전하게 실행하고, 신뢰된 코드가 실수 또는 의도적으로 보안을 손상시키지 않도록 .NET Framework에서는 코드 액세스 보안이라는 보안 메커니즘을 사용합니다. 코드 액세스 보안은 코드 발생 위치 및 코드 ID의 다른 측면에 따라 다양한 수준으로 코드를 신뢰할 수 있습니다. 또한, 코드 액세스 보안은 코드에 다양한 신뢰 수준을 적용하여, 실행하기 위해 완전히 신뢰되어야 하는 코드 분량을 최소화합니다. 코드 액세스 보안을 사용하면 악의적이거나 오류가 많은 코드에 의해 사용자 코드가 오용될 가능성이 적습니다. 사용자는 코드가 수행할 수 있는 작업 집합과 수행할 수 없는 작업 집합을 지정할 수 있으므로 위험 부담을 줄일 수 있습니다. 또한 코드 액세스 보안은 코드의 보안상 약점으로 인해 생길 수 있는 손상을 최소화합니다.
공용 언어 런타임 기능이 있는 모든 관리 코드는 코드 액세스 보안을 전혀 호출하지 않아도 코드 액세스 보안의 장점을 활용할 수 있습니다. 그러나, 모든 응용 프로그램은 코드 액세스 보안 기본 사항에서 설명하는 것처럼 코드 액세스 요청을 해야 합니다.
위와 같은 보안 매커니즘 때문에 닷넷 어플에서 로드한 어셈블리는 보안 인증을 먼저 거치게 됩니다. 그러나 인증 과정은 네트워크를 거치게 되므로 이때 부하가 생깁니다.
하지만 이 과정이 꼭 필요하지 않은 경우도 있습니다. 예를들어, ClickOnce로 배포할 경우, 인증과정 및 게시자 증명 과정을 필수적으로 거치게 됩니다. 하지만 이를 사용하지 않으면 굳이 증명을 할 필요가 없습니다.
http://msdn.microsoft.com/ko-kr/library/cc656914.aspx
Authenticode 확인도 시작 시간이 길어지는 원인이 될 수 있습니다.Authenticode 서명된 어셈블리는 CA(인증 기관)를 통해 확인되어야 합니다.이 확인 작업을 수행하려면 최신 인증서 해지 목록을 다운로드하기 위해 네트워크에 여러 번 연결해야 하므로 시간이 오래 걸릴 수 있습니다.또한 이 과정에서 신뢰할 수 있는 루트로 연결되는 경로에 대한 유효한 인증서가 모두 있는지도 확인합니다.이로 인해 어셈블리가 로드되는 동안 몇 초 정도 작업이 지연될 수 있습니다.
클라이언트 컴퓨터에 CA 인증서를 설치하거나, 가능하면 Authenticode를 사용하지 않는 것이 좋습니다.응용 프로그램에서 게시자 증명 정보를 필요로 하지 않는 경우 서명 확인에 리소스를 낭비할 필요가 없습니다.
http://msdn.microsoft.com/ko-kr/library/bb629393.aspx
CLR(공용 언어 런타임)은 어셈블리에 대한 Publisher 증명 정보를 만들기 위해 로드 시 Authenticode 서명을 확인합니다.그러나 기본적으로 대부분의 응용 프로그램에는 Publisher 증명 정보가 필요하지 않습니다.표준 CAS 정책은 PublisherMembershipCondition을 사용하지 않습니다.사용자 응용 프로그램이 사용자 지정 CAS 정책을 사용하는 컴퓨터에서 실행되지 않거나 부분 신뢰 환경에서 PublisherIdentityPermission에 대한 요청을 충족시키기 위한 것이 아닐 경우 게시자 서명 확인과 관련된 불필요한 시작 작업을 수행하지 않아야 합니다.전체 신뢰 환경에서는 ID 권한 요청이 항상 성공합니다.
따라서 예외적인 시나리오의 경우엔 보안 인증 과정을 생략하여 성능을 올릴수 있습니다. (있다고 합니다.)
http://msdn.microsoft.com/ko-kr/library/cc656914.aspx
.NET Framework 3.5부터는 Authenticode 확인을 건너뛸 수 있는 구성 옵션을 사용할 수 있습니다. 이렇게 하려면 app.exe.config 파일에 다음 설정을 추가하십시오.
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
이 글은 스프링노트에서 작성되었습니다.
2010년 11월 11일 목요일
2010년 10월 30일 토요일
.NET TPL 개론
.NET Framework 4 의 Parallel Task Library는 .NET 에서 기존 코드를 크게 바꾸지 않아도 멀티코어/멀티쓰레드에 맞게 프로그램을 고칠수 있게 해줍니다. 멀티코어 시대가 이미 일반화된 현재로서 멀티 프로세싱/프로그래밍 하여 퍼포먼스를 향상시키는 스킬은 개발자에게 매우 중요한 스킬인데, 이걸 네이티브로 구현하려면 정말 많이 힘이 듭니다. 많은것을 알아야 하고 고민해야되죠... (CPU 명령, CPU 전용 컴파일러, 그리고 스펙...) 그리고 해본분은 알겠지만 디버깅은 정말 죽음입니다. 그래서 닷넷에서는 많은 부분을 추상화 해서 개발자 입장에서 몇가지 자료 구조와 API로 이 문제를 해결할수 있도록 돕고 있습니다.
현재 프로그래밍 언어로서는 완벽하게 멀티 프로세싱을 지원하지 않습니다. 일부 언어가 멀티코어 환경에 맞게 문법을 지원해준다고는 하나, 현업에서는 거의 쓰이지 않고 학술적인 목적으로 제한적으로 사용되고 있습니다. 따라서 개발자 니즈로서는 기존 언어가 쉽게 멀티코어로 포팅될수 있기를 바라죠. MS는 이 니즈를 파악하고 니즈에 맞는 라이브러리를 만들었는데 이게 TPL 입니다. 니즈에 대해서 말이 나왔으니, 기존 닷넷에 대해서 약간만 이야기를 하죠... 닷넷이 멀티프로세싱을 처음부터 지원 안한건 아닙니다. 기존 닷넷의 비동기 처리와 쓰레드 풀링 처리는 1.0 때부터 지원하던 것이었습니다. 하지만 간단한 비동기 작업 코드를 짜 보아도 같은 기능의 동기화 코드와는 많은 부분에서 차이가 납니다. 동기를 비동기로 옮기는 것도 어렵고 옮긴다 해도 뻑안나는 같은 동작을 보장하는 것은 정말 어려운 일이었습니다.
그래서 MS는 이를 프레임웍 레벨에서 지원해줄수 있는 방법은 없나 고민하게 됩니다. 그럼 MS가 고민하던 때로 돌아가 같이 고민해 볼까요?
1) 어차피 모든 부분을 멀티코어로 만들수는 없습니다. 왜냐면 보통 프로그래밍 언어들은 1프로세스 1쓰레드 기준으로 가장 잘 동작하게 만들어져 있죠 (완벽한 멀티코어용 언어로 동작하게 하려면 lock 이나 모니터, 세마포어를 별도로 선언할 필요가 없어야 하지 않을까요? 이러한 동기화 구조들은 현재의 프로그래밍 언어가 멀티코어를 지원하지 않아서 생기는 것입니다.)
2) 그렇다면 멀티코어로 만들면 좋은 부분만을 확실히 멀티코어 동작하게 해주면 됩니다.
3) 어떠한 부분이 멀티코어스러울수 있을까요?
멀티코어의 효과가 최대한 있을수 있는 부분들은 대개 상당한 부하가 걸리는 작업들을 수반한 영역들입니다. 그리고 프로그램에서 가장 부하가 많이 걸리는 부분들은 대개 반복작업 - 루프 등에 몰려 있습니다. (중요한 성능개선 포인트인 LRU가 많이 발생하는 곳이기도 합니다.)
(비동기 작업이 꼭 멀티코어스러워야 하는건 아닙니다. 부하가 많이 걸려서 비동기가 필요한 곳은 멀티코어로 바꿀 필요가 있지만, 그렇지 않고 타이밍 때문에 기다려야 하는 상황에서는 멀티코어를 적용하는건 바보같은 짓입니다.)
그리고 이러한 반복작업에서 많이 사용되는 자료구조는 배열-콜렉션과 배열에서 파생된 자료구조들입니다. 이들 자료구조는 멀티프로세싱하게 되면 여러 쓰레드가 동시에 접근하게 되므로, 동기화를 반드시 신경써야 하겠죠.
따라서 멀티코어에 대해서 MS는 2가지 전략을 세울수 있습니다.
1) 반복작업내 수행되는 작업이 오래 걸리면 이를 멀티쓰레드로 쉽게 옮길수 있도록 해주자
2) 멀티쓰레드에서 사용되는 콜렉션에 대해서는 동기화가 될수 있도록 해주자.
그래서 Task Parallel Library가 등장하게 됩니다. 첨부한 PDF에는 이러한 부분에 대해서 대략적인 설명과 함께 실제 적용사례가 나와 있습니다.
1) 의 해결책으로 Task라는 멀티프로세싱을 관리하는 객체에 여러 Task를 만들수 있는 Factory를 두었고, 여기에 람다식으로 태스크를 넣을수 있습니다.
2) 의 해결책으로 System.Collections.Concurrent 네임스페이스 아래의 자료구조들을 예로 들수 있습니다.
이 두가지를 조합하여 기존 코드를 멀티코어와 할수 있습니다.
하지만 이것도 어렵다는 개발자의 니즈를 만족시키기 위해서 MS에서는 함수 단위의 비동기화를 아예 언어 단위에서 지원하도록 만들었습니다. : 이것이 최근에 나온 VisualStudio Parallel 으로 보입니다.
자세한 이야기는 좀더 나중에...
이 글은 스프링노트에서 작성되었습니다.
2010년 10월 28일 목요일
yield 키워드를 이용한 루프-데이터 반환 최적화
public class List
{
//using System.Collections;
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
}
static void Main()
{
// Display powers of 2 up to the exponent 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}
윈7폰에서 SQLLite쓰기

2010년 10월 27일 수요일
win7 토막
2010년 10월 22일 금요일
2010년 10월 12일 화요일
어제출시된 따끈한 윈7폰 테스트 (삼성,LG)
출시된 폰들 비됴입니다.
보신분은 패스
안보신 분은 함 대충 느껴보세요
손이랑 크기를 비교해보시면 대략 감이 오실것 같습니다.
급하신 분들위한 종합버전 ->
1) 슬쩍 버벅? 대는 옴니아 7폰...
2) 옵티머스 7
3) 포커스 .. 요건 좀 성실히 테스트 해줬네요
2010년 10월 9일 토요일
펌글 : 대학 자퇴하고 안정된 직장도 그만둔다는 제자 이야기
1.
T는 경영학과를 다니는 20대 초반의 직장인입니다. 야간반이지요.
2학년에 올라온 T는 1학기 제가 담당하는 교양과목을 신청하였고 그렇게 하여 저를 처음 만나게 됩니다.
'시대변화와 인재상'이라는 테마로 진행하는 과목이었지요.
조직에 충성하고 성실하게 일하는 것만으로는 인생 중간에 위험해질 수 있다는 것을,
진정 하고 싶은 일을 하는 사람들이 대접받는 세상이 왔다는 것을 한 부분으로 이야기합니다.
종강 전까지 수강생 얼굴과 이름을 외우는 것을 하나의 목표로 삼고 있는 저로서도
올해는 수강생이 100명으로 늘어나다보니 강의 초반 일일이 기억을 하기는 어렵더군요.
온라인 카페활동을 병행하는데 그 덕분에 강의 초반부터 학생들 얼굴과 이름을 익혀갈 수 있습니다.
T를 기억하는 건 강의 초반 개인 사정으로 결석을 하면서 꼬박꼬박 사전에 양해를 구하는 그녀의 태도였습니다.
내용도 읽어보면 핑계가 아니라는 것을 단박에 알 수 있을 정도로 진실함이 묻어났지요.
그래서 기억을 하게 되었습니다. 강의 시간에도 둘러보다보면 열심히 경청하는 모습이 눈에 들어왔습니다.
2.
T가 수강한 과목의 과제는 두 가지가 있었습니다.
미래퍼즐과 만능열쇠라는 제목의 것들이었지요.
미래퍼즐은 자신의 꿈을 발견하는 과제입니다. 시각적으로 표현해 보면서 구체화 해보는 과정이지요.
만능열쇠는 평소 어렵게 생각되어 미뤄두기만 하던 자신의 문제에 대해 해결책을 만들어 보는 과제입니다.
팀 활동을 통해 서로 자신의 이야기를 나누며 아이디어와 피드백을 주고 받는 참여 수업을 진행합니다. 이를 통해 과제에 대해 감을 잡게 됩니다. 시너지를 흡수하여 각자 개인 과제를 준비하게 되지요. 미래에 대한 꿈이 확실히 있거나 현실적인 난관에 대해 고민을 많이 해본 학생들이 유리한 과제들이라 하겠습니다.
3.
T는 팀 활동에도 열심이었고 온라인 카페 활동에도 적극 참여 하는 등 우등생이었습니다. 그런데 중간고사 기간이 막 지난 어느 날 T로부터 장문의 메일이 날라왔습니다. 내용인 즉, 학교를 자퇴 한다는 것이었습니다. 게다가 다니던 직장도 그만둔다고 했습니다.
덜컥 염려하는 마음이 앞서 메일을 찬찬히 읽어 보았습니다. 이유가 궁금했지요.
이유는 바로 그가 덮어 두었던 꿈 때문이었습니다. 가야 할 길에 대한 확신이 너무나 강해져서 '더 이상 시간 낭비'를 할 수가 없었다는 것입니다.
"교수님의 수업을 듣다가...정말 제 얘기를 듣는것 처럼 부끄럽고... 맘이 아팠는데 수업중에..
교수님 말씀해주신것 중에... '중요하지만 급하지 않은 것'이 가장 중요한 것이다. 라고 하셨을 때
잊고 있던 제 꿈이 생각나서 너무 가슴이 아팠고 눈물이 났습니다.
그 때부터 회사 일이 손에 잡히지 않고 제가 맘속에 담아 두었던 꿈을 꺼내보기 시작했습니다.
너무 돈이 많이 드는... 저에겐 주제 넘치는 꿈이라고 생각했기에 일부러 더 거리를 두었던 제 꿈은
커스텀 페인팅 디자이너 입니다."
커스텀 페인팅이란 자동차나 바이크를 소유자의 개성에 따라 튜닝하는 것을 말합니다.
여성으로서는 조금 독특한 적성이 아닐 수 없습니다.
최소 미술을 전공한 사람들만이 대접받는 분야에서 들여야 할 시간과 비용은 엄두가 안날 규모였겠지요.
하지만 T는 마음을 굳힌 후 강의 시간에 배운 만능열쇠를 준비했고 문을 열기위해 열심히 돌아 다녔습니다.
"저 여름부터 커스텀페인팅 전문업체에 들어가서 무보수로 일을 하면서 배우기로 했습니다..
(중략) 사실 여자가 선뜻하기 힘든 일이라서 고민도 많았는데 지금은 마음을 굳게 먹어서 너무나도 기대되고 행복합니다!!
자랑할 것은 못되지만 저번 주 내내 시험 다 빠지구 업체에 직접 가기도하고
킨텍스 전시장에도 가고, 이사람 저사람을 만나러 다녔습니다~
그 중에 정말 맘에 드는 업체와 이야기가 잘 되었어요^^ 너무 행복한 한주였습니다."
과감하지요? 저는 강의 중에 학교 그만두라는 말, 직장 사표내라는 말 한 적이 없습니다.
그런데 T는 자신의 꿈을 더 이상 감춰두고 있을 수 없었고, 결국 일을 저지르고(?) 말았습니다.
경력자도 아니고, 미술을 전공한 처지도 아니다 보니 저 맨 바닥서부터 시작해야 하는 일이었지요.
불경기에 취업도 어려운 세상이라 용기가 필요했을 것입니다.
4.
T는 안정된 직장에 다니고 있었습니다. 공공기관에서 일을 했지요.
오래 다니면 남들 그렇게 부러워하는 바로 그 연금을 받을 수 있는 직장이었습니다.
T와 약속을 잡고 식사를 함께 했습니다. 궁금한 것이 많았지요.
이미 자퇴하고 새로운 직장에서 견습생으로 일할 준비를 하는 T는 의욕에 넘쳤습니다.
이야기는 지난 과거에서 시작해서 미래의 계획으로 흘러 갔었습니다.
어려서 미술을 너무나 좋아했고 주위에서 인정 받았지만 가정 형편으로 자신의 꿈을 미리 접어야 했던 일,
어찌 보면 편안하고 무사태평 지낼 수 있지만 의미를 찾기 어려웠던, 그래서 다니기 싫었던 직장,
늦게 대학을 들어오면서 가졌던 기대들이 1년 만에 시들해졌던 것,
커스텀 페인팅의 현황과 나름 생각하고 있는 시장전망...
앞으로 도전하고 싶은 업체에 대한 동경과 향후 커리어를 쌓으며 도전해 갈 계획들...
확실한 비전이 있더군요. 곁에서 듣는 것만으로도 설레임이 찾아왔습니다. 본인의 마음은 어땠을까요?
5.
새로운 우여곡절이 있었거든요.
T가 견습생을 알아보면서 여기저기 노크 했던 이야기를 했었지요?
그 결과로 그 업계에 있는 많은 분들이 T에 대해 관심을 갖게 된 것입니다.
사실 T는 정작 가고 싶었던 업체가 있었지만 스스로 그 곳에 가기엔 자격이 안된다고 생각했다고 합니다. 그래서 좀 더 작은 업체에서 경험을 쌓고 1년 후 그 업체에 도전을 하려 했다고 하지요.
그런데 T에 대한 이야기를 들은 '바로 그' 업체 대표가 T를 불렀다고 합니다. 면접을 본 것인데요. 면접을 보고는 견습생을 하려면 본인 밑에서 하라며 바로 현장에서 채용을 했답니다. 조건도 매우 좋은 조건으로요. 일을 처음부터 배우느라 몸은 힘들겠지만 마음은 날아갈 것 같겠지요? 함께 일 하기로 했던 곳에는 사실 미안한 일이 되었지요. 양해를 구해야 했을 것입니다.
"정말 최고인것은....업체 측에서 저 미술학원에 보내준다고 합니다. 그만큼 열심히 하라는 뜻이겠죠... 저 진짜 정말 열심히 할꺼에요.근데 이번에 이사하면 미술공부도 좀 해야하니깐 컴퓨터랑 프린터도 제공을 해준다고 하네요...진짜 교수님이 말씀해 주신대로 제가 가려고 했던 길은 제가 만들어낸 안개 때문에 쉽게 다가가지 못했던 것 같습니다!!"
6.
신기할 정도로 잘 풀린 경우일까요? 그냥 운이 좀 좋았을 뿐일까요?
저는 T를 만난 사람들마다 왜 T와 함께 일 하고 싶어했는지 어렴풋하게나마 그 이유를 알고 있습니다.
그것은 T를 만나 그의 이야기를 직접 들어본 사람들만이 알 수 있는 것입니다.
답은 그의 눈빛입니다. 작고 당찬 체구 내부를 온통 설레는 꿈이 가득 채우고 있었지요.
그 꿈이 넘치고 넘쳐 눈으로 뿜어져 나왔습니다.
차와 바이크 이야기 할 때의 그 모습이란! 열정은 전염되는 것입니다.
그리고 그것을 마주한 사람은 누구라도 알 수 있습니다. 그것으로 채운 사람은 절대 놓쳐선 안된다는 것을요.
학교를 그만둔다는 T의 메일을 받았을 때 가졌던 염려는 이미 접어서 휴지통에 버린지 오래입니다.
그리고는 저를 돌아보게 되었지요. 제 마음 속에도 T가 담고 있는 만큼의 열정이 있는 것일까...
많은 핑계와 변명을 짊어지고 가느라 꿈과 열정이 납작하게 눌리고 있는 것은 아닐까...
T는 자동차 튜닝의 본 고장 미국에도 도전을 하고 싶다고 했습니다.
그 곳을 누비며 코쟁이들에게도 열정을 전염시키는 모습을 상상을 해보는 것은 그것만으로도 기분 좋은 일이 아닐 수 없네요.
T가 어느새 제 스승이 되어 있습니다.
2010년 10월 8일 금요일
퇴근길 라디오에서 들은 이야기
라디오에서 들은 이야기 :
Q:
괴로워서 소주를 마시면 잊을수 있으리라 생각했습니다.
하지만 마시고 다음날에는 더 후회했습니다.
지금은 잘살고 있습니다.
A:
인생은 서핑과 같다.
파도를 무서워하면 물만 먹을 뿐이고
파도를 타고 넘어야 즐거움이 밀려온다.
외로움을 타고 넘어 잘 극복하기 바랍니다.
----------------------------------------
인생의 위기는 파도처럼 끊임없이 밀려옵니다.
두려워하고 피하면 물만 먹고 쓸려갈 뿐이고
겸허히 받아들이고 타고 넘으면 파도를 정복하는
기쁨과 즐거움이 밀려 오게 됩니다.
저는 오늘도 파도에 얻어맞고
파도에 쓸리다가 결국 타 넘기도 합니다.
언제쯤 좀 잠잠해질수 있을까요;;
잠시라도 유유히 떠있고 싶네요
2010년 10월 7일 목요일
[100903] 시작하기
http://msdn.microsoft.com/en-us/library/ff402531(v=VS.92).aspx
윈폰 개론
- 윈도우 7 폰은 MS의 3 Screen 전략의 일환이다. MS 플랫폼을 사용하는 것끼리는 모두 통할수 있다. (정말?)
- 윈도우 7 폰은 사용자보다 좀더 개발자를 위해 신경쓰여 개발되었다.
- 윈도우 7 폰은 클라우드를 지원하도록 만들어졌다. (PUSH)
- 결국 MS 정책은 윈도우 + 닷넷 플랫폼 기반의 제품으로 천하통일 하겠다는 거임.
- 잘?만든 플랫폼 열 자식 안부럽다.
아키텍쳐
- W7P 을 지원하기 위해서 4종류의 아키텍쳐가 사용된다.
Runtime on Screen
- Runtime on Screen은 폰에 들어가는 아키텍쳐다. 폰에 필요한건 여기 다있다.
-
- 특이점 - Framework가 2개 : 실버라이트는 보통 UI를 위한 것이고 XNA는 게임에 특화된 프레임웍이다.
-
공통점 : 두 프레임웍 다 공통 베이스 라이브러리를 사용한다. (요 아랜 바로 OS 커널과 드라이버들이다. - 나중에 다루겠음)
-
Common Base 라이브러리는 그냥 컴팩트 .NET 으로 보인다. (실버라이트 / 윈모6.5 같은)
-
- 하지만 지원 안되는 것들이 좀 많다 : http://msdn.microsoft.com/en-us/library/dd470087(VS.95).aspx
- Socket 안된단다.. 이런 (2010-09-03현재): http://msdn.microsoft.com/en-us/library/ff426931(v=VS.95).aspx
- 비디오와 오디오도 제한적으로 지원 : http://msdn.microsoft.com/en-us/library/ff426928(v=VS.95).aspx
- 실버라이트와 XNA 는 어느정도는 서로 호환은 된다. (XNA 에서 더 많이 실버라이트를 가져다 쓸수 있다. -> 이러면 XNA 하는게 나을지도?)
참조: http://msdn.microsoft.com/en-us/library/ff402528(v=VS.92).aspx - 실버라이트 코어 라이브러리들 : http://msdn.microsoft.com/en-us/library/cc838194(VS.95).aspx <- 빡시게 공부하면 보통 이것들로 공부를 시작한다.
- XNA는 엑박삼돌에서 만든걸 재활용할수 있다고 밀고 있다. 실제로 되는걸 한번 보긴 봤는데 지금은 잘 모르겠다.
-
센서 : 폰이니까 당연히 센서지원한다. 터치와 가속도계를 지원한다.
- 실버라이트에서 터치 : http://msdn.microsoft.com/en-us/library/dd894494(VS.95).aspx
- XNA에서 터치 : http://msdn.microsoft.com/en-us/library/bb203899(XNAGameStudio.40).aspx
-
가속도계 API : http://msdn.microsoft.com/en-us/library/ff431809(v=VS.92).aspx (그냥 덜렁 이벤트 핸들러 하나 이용하면 된다.)
Microsoft.Devices.Sensors.AccelerometerReadingEventArgs
Tools
- 툴은 개발툴이다 그냥 VS2010으로 개발하면 된다.
-
하지만 에뮬레이터가 Vista SP3 이상에서만 돌아가기 때문에 XP에서는 개발 못한다. 그냥 Win7에서 개발하라.
- WDF 드라이버 모델을 XP에서 지원 못하기 때문인 것으로 사료됨
클라우드
- 윈폰에서의 클라우드란 폰에게 정보를 제공해주는 PaaS 적인 것이다.
- 푸쉬 서비스 (정보를 폰으로 밀어 넣는 서비스) : http://msdn.microsoft.com/en-us/library/ff402537(v=VS.92).aspx
- 위치 찾기서비스 : http://msdn.microsoft.com/en-us/library/ff431803(v=VS.92).aspx
- 피드, SNS 및 맵 서비스 : http://msdn.microsoft.com/en-us/library/ff637518(v=VS.92).aspx
- 윈도 Azure 기반 SW (윈도 애저 기반의 SW와 REST 또는 SOAP으로 통신 하는 것을 지원하는듯)
포털 (윈폰 마켓플레이스)
- 포털은 그냥 앱을 배포하고 판매하고 마케팅 정보를 얻거나 이용하기 위한 수단이다.
- 안드로이드와 다르게, 앱 인증과 검증을 거쳐야 한다. (엑티브 엑스의 과오를 범하지 않기 위해서라나...)
- CRM을 제공한다고 한다. (요점 사업아이템으로 주목할 만함)
- 돈 받는게 제일 까다롭다... 법적인 문제가 해결되었는지 모르겠음 (2010-09-03)
- 우리나라에는 왜 안들어올까요?
앱 개발 라이프사이클
- (SE에서 항상 이야기 하지만) 대다수의 App은 계획->개발->테스트 및 디버깅->배포->유지보수의 과정을 거치게 된다.
-
아래는 윈폰의 라이프 사이클임
- 대다수의 타 플랫폼 앱 시장과 동일하다.
라이프사이클
1) Windows Live ID를 만든다. 이걸로 개발자 포털에 가입하고 개발자 인증을 받는다.
2) 인증 툴킷을 다운받고 개발에 이용할 폰을 등록한다.
3) 개발->디버깅
4) 배포는 마켓 플레이스에 XAP 파일을 업로드 하여 진행한다. (빌드하면 .XAP이 생성된다.)
개발자 포탈에 가입하여 앱을 올린다. - 사이트의 인증 및 테스트 과정을 통과해야만 앱을 올릴수 있다.
5) 마켓 플레이스에서는 유지보수 및 마케팅에 필요한 자료를 제공한다.
이 글은 스프링노트에서 작성되었습니다.
2010년 10월 6일 수요일
고도원의 아침편지 : 무르익을 때까지
창조적 작업은
생산되는 동안 훼손될 수도 있는 매우 연약한 것이다.
그래서 비밀이 필요하다. 창조적 작업은
아직 무르익기도 전에 공개되면
추진력과 확신을 잃고
사그라질 수 있다.
- 폴 투르니에의《비밀》중에서 -
* 숲속 밤톨 하나도
무르익을 때까지 기다릴 줄 알아야 합니다.
익기 전에 따면 토실한 알밤을 얻을 수 없습니다.
모든 이치가 그러합니다. 큰 일도, 작은 일도
무르익을 때까지 기다려 주어야 합니다.
특히 이 세상에 처음 선보이는
'창조물'일수록 묵묵함이
필요합니다.
2010년 10월 5일 화요일
사내강의 요약 : 아인슈타인과 피카소가 만나다.
이미지출처 : www.nemopan.com
이미지출처 : kr.blog.yahoo.com

이미지출처 : www.wisia.com

이미지출처 : rami86.com.ne.kr

이미지출처 : blog.chosun.com
이미지출처 : aliceon.tistory.com
2010년 9월 30일 목요일
2010년 9월 29일 수요일
정의란 무엇인가 : 우리는 우리를 소유하는가?
2010년 9월 28일 화요일
2010년 9월 25일 토요일
Processing 외부 library 설치 장소: Sketchbook
대부분의 언어가 그렇듯이, Processing 도 독자 라이브러리를 지원합니다.
오늘 처음으로 TRAER.PHYSICS 라는 외부 라이브러리를 사용했습니다.
프로세싱은 외부 라이브러리를 Sketchbook 폴더 아래에 두라고 합니다.
그래서,
C:\Processing\libraries
(C:\Processing\ 은 프로세싱 실행파일이 있는 폴더)
밑에 두면 되는 줄 알았는데 그게 아니네요.
아래 주소가 정확합니다.
C:\My Documents\Processing\libraries\
(in Windows)
/Users/Username/Documents/Processing/libraries
(in Mac OS X)
참조 링크:
http://www.learningprocessing.com/tutorials/libraries/
2010년 9월 17일 금요일
Lenovo thinkpad synaptics utilities
Lenovo Thinkpad의 Touchpad 회사인 Synaptics에서 만든 터치패드를 이용한 유틸리티 입니다.
1. SynZMetr

lenovo 드라이버와 기타 유틸리티 설치 시 C:\Program Files\Synaptics\SynTP 경로에 설치 됩니다. 터치패드를 누르는 강도에 따라 빨간 그래프가 그려집니다.
간단한 실험을 해봤는데, 역시 실제 압력 값은 아니군요. 전도성 고무로도 해봤는데요, 아무리 세게 눌러도 오른쪽 그래프가 한계네요. (왼쪽 두개는 손으로 한 것.) 전기가 흐르는 양에 따라 표시되는 것 같습니다.
2. Synaptics Drum Pad

터치 패드를 누르는 위치에 따라, 위 4개 사각형 중 하나에 표시가 되고 동시에 소리가 나오네요. 귀여운 어플리케이션입니다. 그런데 생각보다 인식이 잘 안되네요. 터치패드는 그 위에서 이동하는 손을 인식하기에는 적합하지만, tap을 인식하기에는 적당하지 않은가 봅니다.
3. Theremin
터치패드에서 터치되는 위치에 따라 소리가 나는 유틸리티입니다. 너무 높은 소리도 나서 듣기 힘드네요. ㅎㅎ
4. Touch Pad Says
2번과 같은 UI지만, 터치패드가 내는 소리를 따라서 치는 간단한 게임입니다.
위 2~4번 유틸리티는 Synaptics 홈페이지에서 다운로드 할 수 있습니다.
http://www.synaptics.com/support/utilities
lenovo 사용자라면 한번 시도해 보세요~ ^^
+ 친절하게 라이브러리도 제공하네요.
http://www.synaptics.com/developers/archive 에서 "MepLib Porting Guide" 란을 참고해보세요. 터치패드를 응용한 프로그램도 재미있을 것 같네요. ^^
2010년 9월 16일 목요일
Moon walk: gesture recognizing keyboard -- sensor test
졸업 연구 중인 Moon walk (잠정적 이름 ^^;) 센서 테스트 영상입니다.
2010년 9월 13일 월요일
WPF Study -- Data Binding and Style
2010년 9월 10일 금요일
오토마우스 오토키보드 소스
푸 요청으로 올립니다.
옛날에 짠 소스인데... 아래 SendInput 이라는 API 로 마우스/키보드 흉내를 낼수 있습니다.
오토 마우스/ 키보드가 가능하다는 것이지요...
굳이 복잡한 후킹기술 안써도 아래 소스로 충분합니다.
[code csharp] using System; using System.Runtime.InteropServices; namespace AutoKeyMouseExample { internal class Win32APIs { [DllImport("user32.dll", SetLastError = true)] public static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); [DllImport("user32.dll")] public static extern IntPtr GetMessageExtraInfo(); [StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public int dx; public int dy; public uint mouseData; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public ushort wVk; public ushort wScan; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct HARDWAREINPUT { public uint uMsg; public ushort wParamL; public ushort wParamH; } [StructLayout(LayoutKind.Explicit)] public struct INPUT { [FieldOffset(0)] public int type; [FieldOffset(4)] //* public MOUSEINPUT mi; [FieldOffset(4)] //* public KEYBDINPUT ki; [FieldOffset(4)] //* public HARDWAREINPUT hi; } /***************************** * EVENT CONSTANTS * *****************************/ public const int INPUT_MOUSE = 0; public const int INPUT_KEYBOARD = 1; public const int INPUT_HARDWARE = 2; public const uint KEYEVENTF_EXTENDEDKEY = 0x0001; public const uint KEYEVENTF_KEYUP = 0x0002; public const uint KEYEVENTF_UNICODE = 0x0004; public const uint KEYEVENTF_SCANCODE = 0x0008; public const uint XBUTTON1 = 0x0001; public const uint XBUTTON2 = 0x0002; public const uint MOUSEEVENTF_MOVE = 0x0001; public const uint MOUSEEVENTF_LEFTDOWN = 0x0002; public const uint MOUSEEVENTF_LEFTUP = 0x0004; public const uint MOUSEEVENTF_RIGHTDOWN = 0x0008; public const uint MOUSEEVENTF_RIGHTUP = 0x0010; public const uint MOUSEEVENTF_MIDDLEDOWN = 0x0020; public const uint MOUSEEVENTF_MIDDLEUP = 0x0040; public const uint MOUSEEVENTF_XDOWN = 0x0080; public const uint MOUSEEVENTF_XUP = 0x0100; public const uint MOUSEEVENTF_WHEEL = 0x0800; public const uint MOUSEEVENTF_VIRTUALDESK = 0x4000; public const uint MOUSEEVENTF_ABSOLUTE = 0x8000; /***************************** * VIRTUAL KEYS * *****************************/ public enum VK : ushort { /* * Virtual Keys, Standard Set */ VK_LBUTTON = 0x01, VK_RBUTTON = 0x02, VK_CANCEL = 0x03, VK_MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */ VK_XBUTTON1 = 0x05, /* NOT contiguous with L & RBUTTON */ VK_XBUTTON2 = 0x06, /* NOT contiguous with L & RBUTTON */ /* * 0x07 : unassigned */ VK_BACK = 0x08, VK_TAB = 0x09, /* * 0x0A - 0x0B : reserved */ VK_CLEAR = 0x0C, VK_RETURN = 0x0D, VK_SHIFT = 0x10, VK_CONTROL = 0x11, VK_MENU = 0x12, VK_PAUSE = 0x13, VK_CAPITAL = 0x14, VK_KANA = 0x15, VK_HANGEUL = 0x15, /* old name - should be here for compatibility */ VK_HANGUL = 0x15, VK_JUNJA = 0x17, VK_FINAL = 0x18, VK_HANJA = 0x19, VK_KANJI = 0x19, VK_ESCAPE = 0x1B, VK_CONVERT = 0x1C, VK_NONCONVERT = 0x1D, VK_ACCEPT = 0x1E, VK_MODECHANGE = 0x1F, VK_SPACE = 0x20, VK_PRIOR = 0x21, VK_NEXT = 0x22, VK_END = 0x23, VK_HOME = 0x24, VK_LEFT = 0x25, VK_UP = 0x26, VK_RIGHT = 0x27, VK_DOWN = 0x28, VK_SELECT = 0x29, VK_PRINT = 0x2A, VK_EXECUTE = 0x2B, VK_SNAPSHOT = 0x2C, VK_INSERT = 0x2D, VK_DELETE = 0x2E, VK_HELP = 0x2F, /* * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) * 0x40 : unassigned * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */ VK_LWIN = 0x5B, VK_RWIN = 0x5C, VK_APPS = 0x5D, /* * 0x5E : reserved */ VK_SLEEP = 0x5F, VK_NUMPAD0 = 0x60, VK_NUMPAD1 = 0x61, VK_NUMPAD2 = 0x62, VK_NUMPAD3 = 0x63, VK_NUMPAD4 = 0x64, VK_NUMPAD5 = 0x65, VK_NUMPAD6 = 0x66, VK_NUMPAD7 = 0x67, VK_NUMPAD8 = 0x68, VK_NUMPAD9 = 0x69, VK_MULTIPLY = 0x6A, VK_ADD = 0x6B, VK_SEPARATOR = 0x6C, VK_SUBTRACT = 0x6D, VK_DECIMAL = 0x6E, VK_DIVIDE = 0x6F, VK_F1 = 0x70, VK_F2 = 0x71, VK_F3 = 0x72, VK_F4 = 0x73, VK_F5 = 0x74, VK_F6 = 0x75, VK_F7 = 0x76, VK_F8 = 0x77, VK_F9 = 0x78, VK_F10 = 0x79, VK_F11 = 0x7A, VK_F12 = 0x7B, VK_F13 = 0x7C, VK_F14 = 0x7D, VK_F15 = 0x7E, VK_F16 = 0x7F, VK_F17 = 0x80, VK_F18 = 0x81, VK_F19 = 0x82, VK_F20 = 0x83, VK_F21 = 0x84, VK_F22 = 0x85, VK_F23 = 0x86, VK_F24 = 0x87, /* * 0x88 - 0x8F : unassigned */ VK_NUMLOCK = 0x90, VK_SCROLL = 0x91, /* * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. * Used only as parameters to GetAsyncKeyState() and GetKeyState(). * No other API or message will distinguish left and right keys in this way. */ VK_LSHIFT = 0xA0, VK_RSHIFT = 0xA1, VK_LCONTROL = 0xA2, VK_RCONTROL = 0xA3, VK_LMENU = 0xA4, VK_RMENU = 0xA5, VK_BROWSER_BACK = 0xA6, VK_BROWSER_FORWARD = 0xA7, VK_BROWSER_REFRESH = 0xA8, VK_BROWSER_STOP = 0xA9, VK_BROWSER_SEARCH = 0xAA, VK_BROWSER_FAVORITES = 0xAB, VK_BROWSER_HOME = 0xAC, VK_VOLUME_MUTE = 0xAD, VK_VOLUME_DOWN = 0xAE, VK_VOLUME_UP = 0xAF, VK_MEDIA_NEXT_TRACK = 0xB0, VK_MEDIA_PREV_TRACK = 0xB1, VK_MEDIA_STOP = 0xB2, VK_MEDIA_PLAY_PAUSE = 0xB3, VK_LAUNCH_MAIL = 0xB4, VK_LAUNCH_MEDIA_SELECT = 0xB5, VK_LAUNCH_APP1 = 0xB6, VK_LAUNCH_APP2 = 0xB7, /* * 0xB8 - 0xB9 : reserved */ VK_OEM_1 = 0xBA, // ';:' for US VK_OEM_PLUS = 0xBB, // '+' any country VK_OEM_COMMA = 0xBC, // ',' any country VK_OEM_MINUS = 0xBD, // '-' any country VK_OEM_PERIOD = 0xBE, // '.' any country VK_OEM_2 = 0xBF, // '/?' for US VK_OEM_3 = 0xC0, // '`~' for US /* * 0xC1 - 0xD7 : reserved */ /* * 0xD8 - 0xDA : unassigned */ VK_OEM_4 = 0xDB, // '[{' for US VK_OEM_5 = 0xDC, // '\|' for US VK_OEM_6 = 0xDD, // ']}' for US VK_OEM_7 = 0xDE, // ''"' for US VK_OEM_8 = 0xDF /* * 0xE0 : reserved */ } } } [/code]
2010년 8월 26일 목요일
IT업계 여성으로 행복하게 살아가기 위한 노하우 세미나 (#1 우미영 퀘스트소프트웨어코리아 대표님편)
오늘 데브멘토에서 주최하는 'IT업계 여성으로 행복하게 살아가기 위한 노하우 세미나'에 참석하였습니다. 정원이 100명이었는데 20명 정도 왔습니다. 세미나 시간이 오후 2시라 직장에 계신 분들이 신청해놓고 많이 못 오신 것 같아요.
강연자 분은 우미영 퀘스트소프트웨어 지사장님과 박남희 MS 상무님이셨습니다. 두 분 다 정말 좋은 강의를 해주셔서 여성으로서의 인생과 커리어를 고민하고 있는 저에게 많은 도움이 되었습니다. 아래는 두 분 프로필입니다.

이번 글에서는 우미영 퀘스트소프트웨어코리아 대표님의 강의를 나름 요약하겠습니다. 캐주얼하게 ^^
커리어
졸업당시 커리어에 대한 고민을 별로 하지 못했다. 당시 친구들은 준비를 잘해서 대기업에 취업하거나 공무원, 교사가 되었다. 나는 준비를 잘 못했기 때문에 졸업하고 나서 할 일이 없었다. 그래서 선배들이 만든 벤처기업에 들어가게 되었다. 당시에는 벤처기업이라는 말도 생소했다. 중소기업이었다. 실제로는 5-6명이 있어 소기업이라고 불릴 정도였다. 전공이 영문과였기 때문에 IT기업이었던 선배네 회사에서는 잡다한 일을 주로 하게 되었다. 번역, PR, 고객 교육, 메뉴얼 작성, 그리고 개발,... 8년 동안 열심히 일했다.
그런데 IMF가 오고나서 월급도 넉넉히 받지 못한 회사에서 1년 동안 무급으로 일한 후, 결국 회사를 그만두게 되었다. 중소기업에서 너무 고생하였기 때문에 이제 죽어도 중소기업으로 가지않겠노라, 결심하고 대기업인 삼성 SDS의 문을 두드리게 되었다. SDS의 아는 분께 이력서를 보여드렸지만, 돌아오는 말은 "미영씨를 쓰고 싶은데, 미영씨가 회사에 어떤 밸류를 줄 수 있는 지 모르겠어요."라는 말이었다. 경력관리를 소홀히 한 탓이었다.
실패한 인생이라고 생각되었다. 8년 전으로 돌아가 다시 시작하고 싶은 마음 뿐이었다. 그래서 지금이라도 공무원이나 교사 준비를 할까, 라고도 생각했다. 그러나 아이들도 있고, 사정이 여의치 않아 결국 막 창업한 start up 회사로 다시 입사하게 되었다. 하지만 이번에는 커리어에 대해 고민을 하고, 포지션에 대한 결정을 하였다.
결정은 pre-sales 이었다. (지금의 technical sales) 지금도 그렇지만 그때는 영업에 대한 편견이 더 강했다. 방문판매를 하거나, 물건을 팔기위해 사람을 속이고, 문전박대를 당하기도 하는 이미지였다. 부모님의 반대도 거셌다. 하지만 나에게 맞는 일이라 생각하였기 때문에 마음을 굳게 먹고 선택을 하였다.
pre-sales 일을 하다보니 영업 쪽에 욕심이 생겼다. 영업 일을 하고 싶어서 사장과 영업사원 몰래 1년 동안 두 회사에 영업 활동을 하였다. 그 회사가 대전에 있어 일주일에 두 번은 대전에 갔다. 개발도 해봤으니 기술적인 것을 물어보면 알려주고, 모르면 공부해서라도 그 다음주에 알려줬다. 그렇게 1년을 하니 어느날 수억의 수주가 떨어졌다. 계약서를 가지고 사장님께 가서 영업직으로 옮겨달라고 요청했다.
그렇게 영업직으로 옮겼지만, 술도 잘마시고 고객과 노는 것도 잘 했지만, 남자 영업사원과의 격차는 좁혀지지 않았다. 남자들만의 관계를 넘어설 수는 없었다. 차별화가 필요했다. 그래서 하게 된 것이 기술책 (당시 유행하던 자바언어) 번역이었다. 영문과 출신이니 할만 하다고 생각해서 시작했고, 그래서 받은 돈이 겨우 200만원이었다. 그 돈으로 내가 번역한 책을 사서 만나는 고객마다 드렸다. 그랬더니 고객들이 나를 다르게 받아들이기 시작했다.
나는 단순한 영업사원이 아니라, 전문가가 되어있었다. 기술 강의도 하게 되었고, 남성 영업사원과는 다른 강점을 갖게 되었다. 차별점을 갖게 된 것이다.
필살기
그렇게 열심히 공부하며 열정적으로 고객을 만나니 3년 동안 2800명의 고객을 만나게 되었다. 한번이라도 만난 사람은 그날그날 엑셀에 정리했다. 그렇게 만시간 정도 투자하니, 이제는 내가 연락하지 않아도 고객한테서 저절로 연락이 오게 되었다. 나를 찾는 사람이 생긴 것이다.
물론 시간 투입만이 능사는 아니다. 방법론이 중요하다. 10년, 15년 영업하던 사람만의 노하우를 배우기 위해 따로 책을 사서 공부했다. 당시에는 IT 관련 영업에 대한 책이 번역되지 않아 아마존에서 책을 구매해서 공부했다. 아직도 적용할 내용이 많아 현재 번역본을 가지고 스터디 그룹을 운영하고 있다. 따로 공부한 것이 많은 도움이 되었다.
이 모든 것은 내가 영업을 좋아하기 때문에 가능했던 것이다. 나는 고객을 만나는 것을 정말 좋아했다. 어떤 고객을 만나고 일주일이 지나면 그 고객을 다시 보고 싶어 안달이 난다. 내가 좋아하는 것을 알고 선택했기 때문에, 이렇게 까지 올 수 있다. 현재는 지사장이 되어 고객을 직접 만날 일이 많지 않지만 일부러라도 고객을 만나려 하고 있다.
10년 후는 보이지 않는다. 그러니 현재 좋아하는 일에 집중하는 것이 중요하다.
여성만의 강점
직급이 올라갈 수록 일희일비하지 않고, 다양한 분야에 대한 리더십을 갖는 것이 중요하다. 그것보다 더 중요한 것은 청렴함이다. 첫째도 청렴, 둘째도 청렴이다. 나는 여성이 이것에 대해 강하다고 생각한다. 오락실가자고 해서 따라가지 않지 않는가? ^^
직장생활은 가정생활에 도움이 된다.
배우자는 직장동료와 같아 서로 직장에서의 고충을 이해할 수 있다. 자녀는 팀원과 같아 내가 칭찬하고 동기부여해야할 대상이고, 나와 다른 독립체이다. 다른 가족, 도우미아줌마, 경비아저씨는 협력사와 같다. 내가 잘하면 그만큼의 신뢰를 받아, 안심하고 나의 팀원을 맡길 수 있다.
인맥관리
나는 인맥관리를 따로 하지 않는다. 따로 인맥을 만드는 모임에 나가봤는데, 먼 인맥 때문에 가까운 인맥을 소홀히 하게 되는 것 같았다. 그래서 오래 직장생활을 하다 자연스레 생긴 주변의 친구, 동료가 나의 진정한 인맥이라고 생각하고 소중하게 관계를 유지하고 있다.
써놓고 나니 요약이 아니네요. ^^; 다른 내용도 있었지만 다음에 따로 정리하겠습니다.
정말 재밌고 푸근한 강의여서 한 시간이 후딱 지나갔습니다. 다음은 Q&A에요. ^^
Q. 성공한 인생이란?
A. 자신이 좋아하는 것을 찾아가는 인생이 성공한 인생이라고 생각합니다. ^^
Q. 어떤 배우자를 만나는 것이 좋은가요? (제가 한 질문이에요 ^^;)
A. 첫째 화목한 가정에서 자란 사람, 둘째 건강, 셋째 성실함이라고 생각합니다. 인물도 좋으면 좋지요. ^^
질문하고 머니클립 선물 받았어요~ 매우 고급스러워서 기분이 좋았답니다. ^^ 강의 끝나고 명함도 받았어요~

내일 메일 보내려구요. 멘토가 필요하면 연락 달라고 하셔서 감동받았습니다. ㅎㅎㅎ
다음으로 박남희 상무님 편도 곧 올리겠습니다.
2010년 7월 19일 월요일
삼성전자 W7P 모습

2010년 7월 17일 토요일
윈모데브 Win7폰 스터디 2일차 정리
Windows 7 phone WinMoDev 세미나 2일차
스터디용 까페 트위터로 조별 회의 진행
과제: Hello world 한번씩
찍어볼 것
자기 조원들을 기준으로 해서 조 정보들을 에뮬레이터에 띄워보기 (List App으로 만들어 볼 것!)
조원: 모다, 불곰, 휘파람, 수야 (4조)
- 8월 14, 24일 스터디 예정 (이번달은 1주일에 1회 스터디)
-
오후 2시로 Study
고정
Windows Marketplace
-
99불 등록비
-
DreamSpark 에서 지원 예정
-
Hoff test를 통과해야만 업로드 가능
-
Market place requirements 문서
참고할 필요가 있음
Namespace Study
- 모바일 위치 정보 관련: System.Device.Location
- 패턴 카드놀이 식으로 네임스페이스를 학습하자.
- 제안: 초시계를 두고 스피드 게임을 하자
- 추가 창의적 제안 (커뮤니티 올릴것) : 가족 오락관 처럼 스무고개, 스피드게임, 귓속말 전달
- 게임으로 공부하는데 필요한 것들 : 벌칙, 규칙, 준비물 - 장점 : 좀더 재밌게 빨리 배울수 있다.
단점 : 오래못하고 피곤하다.
2010년 7월 9일 금요일
조절
2010년 7월 8일 목요일
Introduction to XAML
2010년 7월 1일 목요일
Say Radio 추가


2010년 6월 21일 월요일
3D Webbrowser
프로그램 안에 웹 브라우저 기능을 넣어야 하는 일이 있습니다. 근데 다음의 기존 웹 브라우져들의 기능이 영 시원치 않아서 다른걸 찾아보았습니다.
- System.Windows.Forms.Control.WebBrowser
닷넷에서 웹브라우저를 사용하기 위해서 사용할수 있는 브라우져 입니다. IE를 호스트 하여 만들어져 있습니다. - System.Windows.Control.WebBrowser
위 윈폼 브라우저를 WPF에서 사용하기 쉽게 하기 위해서 3.5 부터 지원하는 브라우져라 합니다.
하지만 위 브라우저를 WPF용으로 만든것 이상도 이하도 아닙니다.
위 2개는 비주얼 캡쳐도, 위치 변형도 안되는 그런 컨트롤이라
그래서 발견한것이 아래 링크의 컨트롤입니다.
http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/
그냥 집어넣고 크기 변경하고 회전시키고 변형시키는거 모두 다 되네요 ㅋㅋ

게다가 3D 효과도 ㅋㅋ

배경 투명도 ㅋㅋㅋ

터치가 될런지 모르겠지만;;; 조금 손보면 괜찮을지도?
이 글은 스프링노트에서 작성되었습니다.
2010년 6월 19일 토요일
VisualBrush와 RenderTargetBitmap
WPF에서 쓰이는 화면에 보이는 UIElement들은 제 각각 Visual 이라는 객체를 상속받아 만들어지는데 이들은 스스로 자신을 화면에 그릴수 있는 기능이 있다. 따라서 Visual의 이 기능을 이용하여 다음과 같이 재밌는 일을 할수 있다. (미리보기등을 이러한 방법으로 만들수 있다.)
Clone 화면 만들기
VisualBrush를 이용하면 Visual의 화면 이미지를 실시간으로 복제하여 Brush를 필요로 하는 위치에 그려주게 된다. 내부적으로 브러시의 원본 객체의 surface 를 복제함으로서 이루어진다.
- VisualBrush brush = new VisualBrush(this.DrawingCanvas);
- Rectangle rect = new Rectangle();
- rect.Width = this.DrawingCanvas.ActualWidth;
- rect.Height = this.DrawingCanvas.ActualHeight;
- rect.Fill = brush;
Window wd = new Window(); - wd.Content = rect;
마치 클론 화면을 쓰는 것처럼 쉽게 복제된 화면을 여러개 만들수 있다. 원본 화면에서 뭔가 일어나면 다른 화면에서도 똑같이 발생한다.

화면의 특정부위 스샷찍기
화면을 복제하는 것보다, 그때 스샷을 찍고 싶을때가 있다. 특히 원하는 컨트롤 또는 부위에 대해서. 이런때엔 RenderTargetBitmap을 이용하면 간단히 해결된다. 이때엔 별도의 Bitmap이미지를 생성한후 객체의 Visual 화면을 BitBlt 하여 복제한다. 단, 이때엔 새로만들어지는 비트맵의 색상 또는 dpi를 지정해 줄수 있는데 이를 이용하여 성능을 조절할 수 있다.
- RenderTargetBitmap rtb = new RenderTargetBitmap((int)this.DrawingCanvas.ActualWidth, (int)this.DrawingCanvas.ActualHeight, 100, 100, PixelFormats.Default);
rtb.Render(this.DrawingCanvas);
Window testWin = new Window();
testWin.Width = this.DrawingCanvas.ActualWidth;
testWin.Height = this.DrawingCanvas.ActualHeight;
(testWin.Content as Image).Source = rtb;
testWin.Show();
현재 화면을 복제하고, 원본 화면이 바뀌더라도 현재 화면을 유지한다.


이 글은 스프링노트에서 작성되었습니다.
2010년 6월 14일 월요일
요즘 푸우의 생각

저의 일상은 이런 느낌 이었습니다. 출근하는 제 표정이 바로 저 여성분의 표정이었어요.

2010년 5월 20일 목요일
HTC의 Windows 7 Phone ROM 유출?
HTC에서 유출된 Phone ROM에 windows 7 Phone OS로 보이는 데이터가 담겨 있었답니다. 이걸로 봐서 올 하반기엔 HTC에서 Mondrian 등의 차기 단말로 Windows 7 Phone이 등장할 확률이 높아졌군요. 다른 제조사의 행보가 주목됩니다. (LG에서 해외를 대상으로 Windows 7 Phone을 샘플로 선보였다고 하는데... 자세한건 두고봐야겠죠?)
http://www.engadget.com/2010/05/17/htc-mondrian-with-1-3ghz-snapdragon-detailed-in-leaked-windows-p/

Blend & Windows 7 Phone 동영상 한점.
Microsoft Blend로 App을 만드는 방법에 대한 90초 짜리 동영상입니다.
간단해보이는군요... 시간나는대로 바로 해서 포스팅 해보겠습니다.
개인적으로 이제부터 화면전환이용이 가능하다는게 좋군요.
2010년 5월 18일 화요일
트위터 케이스스터디: 베스트바이
Innov8 경영시뮬레이션

인력 배치 시뮬레이션

결과 피드백 (KPI와 보스의 말)

시뮬레이션 결과 (KPI, 보스의 말, 시각적 효과)
INNOV8은 인터랙티브, 3-D 비즈니스 시뮬레이터로서, 비즈니스 프로세스 관리의 기초를 가르치고, 한 조직 내의 비즈니스 리더와 IT 팀들간 이해의 차이를 좁히기 위해 기획되었습니다. 이러한 유형의 다소 진지한 게이밍 – 게임의 룩앤필을 갖고 있지만, 비즈니스 오퍼레이션 같은 게임이 아닌 이벤트 또는 프로세스를 다룸 - 은 학생들과 사원들을 교육하고 새로운 기술을 개발할 수 있는 성공적인 방식으로 대두되고 있습니다.