처음, 그의 순수한 웃음에 놀랐다. 적지않은 나이에도 그런 순수한 웃음을 지을 줄 아는 사람이라니..
둘, 계속 보다가 나온 그의 말.
"어떤 사람이 성공했다는 건 분명히 그 사람이 재능도 있고, 열심히 했고, 운이 좋아서 성공했겠죠.
근데 그 것 말고도 사회가 그사람에게 준 기회는 인정을 해야 되거든요. 그 기회 때문에 또 다른 사람들은 그 기회를 못 가졌을 수도 있으니까요. 100% 성공을 개인화하는 건 문제가 있다. 그런 생각을 개인적으로 하고 있습니다."
나는 저런 생각은 해보지도 못했다. 와.. 순간 소름이 돋으면서 온 몸에 전류가 흐르는 듯한 기분.. 그래. 맞다. 재능, 실력, 운 모두 갖춘 사람이 성공한다는 말까지는 이해했지만 그 사람에게 주어지는 기회, 그 것이 사회가 준 것이었음을 왜 나는 알지 못했을까. 다른 사람의 내가 알지 못하던 새로운 생각에 전율한 것은 이번이 처음이다. 짜릿하고, 감동적이다.
셋, 다시금 보다가 다시한번 감동하고 공감했던 그의 말.
"어떤 회사를 만들고 싶습니까?"
"...제가 해야 될 일은 영혼을 불어넣는 일이라고 생각했어요. 만약에 서로 다 다른 사람들이 모여서 있지만, 이 사람들이 공통적으로 믿는 가치관이 있으면, 그래서 만약에 조직의 영혼을 만들 수 있으면, 그건 제가 죽고 없어도, 또는 구성원들이 바뀌더라도 그건 변하지 않고 계속 갈 수 있거든요. 그런 회사를 만들고 싶었죠."
팀이라던가 회사라던가 그 공통된 가치관을 만드는 일. 가슴으로 우러나는 조직을 만드는 일. 나 역시 해보고 싶다. 그의 바람이 이루어졌는지 혹은 이루어질런지는 차치하고라도 이런 바람을 갖는다는 일에 정말 동경하고, 존경한다.
안철수, 그의 이름에 참된 경의를 표하고 싶다. 존경이란 말은 이럴 때 쓰는 것이 아닐까 한다.
'2009/06'에 해당되는 글 9건
- 안철수. 황금어장 무릎팍도사를 보고.. (6) 2009/06/29
- 포인터 이해에 대한 글 2009/06/17
- 자주쓰는 Perl 구문들.. 2009/06/10
- Windows Batch 파일(.BAT)에서 프롬프트 입력받기 2009/06/07
- Windows Batch 파일(.BAT)에서 IF 문에서 수식 사용 2009/06/07
- java.lang.OutOfMemoryError: Java heap space 2009/06/05
- Windows Shell Extension 개발 참고자료 2009/06/03
- Unicode string를 MBCS string으로 바꾸는 방법 2009/06/02
- 원격 데스크톱 연결 - XP3 에서 윈도우즈 키 안먹힐 때.. 2009/06/01
RSS 리더로 나는 KLDP Geek forum 을 보곤 한다.
보다보면 재밌는 것들이 많단 말이지.. 글들에 글들을 따라가다보면 몰랐던 혹은 어렴풋이 알았던, 애매한 것들에 대해서 다시한번 생각해보게 되고 알게 된다. 언젠가 적었듯이 이게 KLDP의 묘미가 아닌가 한다.
그 중 하나로 오늘은 cinsk님의 "포인터 이해란 글에 대해."란 글을 보게 되었다. 글들에 링크되어 있는 글들의 덧글들을 보라.
세상은 넓고, 난 너무 미약하다.
보다보면 재밌는 것들이 많단 말이지.. 글들에 글들을 따라가다보면 몰랐던 혹은 어렴풋이 알았던, 애매한 것들에 대해서 다시한번 생각해보게 되고 알게 된다. 언젠가 적었듯이 이게 KLDP의 묘미가 아닌가 한다.
그 중 하나로 오늘은 cinsk님의 "포인터 이해란 글에 대해."란 글을 보게 되었다. 글들에 링크되어 있는 글들의 덧글들을 보라.
세상은 넓고, 난 너무 미약하다.
시작은
#!/usr/bin/perl -w
STDIN 입력은 간단히 <>
$input = <>;
입력에서 마지막 \n 없애기
chomp($input);
문자열을 나눠서 리스트로 만들기
@list = split(/구분자/, 문자열);
파일을 쓰기 모드로 열기
open(HANDLE, '>filename');
그냥은 filename, 추가 쓰기는 >>
파일에 뭘 쓰고 싶을 때는
print HANDLE '쓸 내용';
파일 닫기는
close(HANDLE);
sprintf
$string = sprintf '%s', 'string';
printf
printf '%d', 2
찾을 문자열의 시작 인덱스 구하기
$i = index(string, substring, startIndex = 0);
시간 구하기
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
시간 만들기
use POSIX;
$time_t = POSIX::mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1);
$time_t = POSIX::mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1);
문자열 연결은 '.' 으로..
'string1'.'string2'
환경변수 접근은
$ENV('env1')
더 많은 정보는 http://perldoc.perl.org
SET 에서 /P 옵션을 주면 환경변수에 입력값을 넣을 수 있다.
형식은 다음과 같다.
SET /P 변수=[promptString]
실행 예제
> SET /P DASOMOLI=DASOMOLI에 넣을 값을 입력하세요)
DASOMOLI에 넣을 값을 입력하세요) haha
> set dasomoli
DASOMOLI=haha
DASOMOLI에 넣을 값을 입력하세요) haha
> set dasomoli
DASOMOLI=haha
IF 문에서 수식을 사용하고 싶을 때, 예를 들면, 에러 체크를 위해 루프를 도는 개수등을 카운트하고 싶다면 SET 에서 /A 옵션을 사용하고 IF에서 비교 연산자를 사용하면 된다. IF 문의 비교 연산자는 다음과 같다
다음은 start 로 3가지 일을 동시에 처리한 후 goto와 label을 이용, cygwin의 delay로 일정 시간 체크한 후 그 후 에러로 처리하는 bat 파일의 예다.
EQU - 같음
NEQ - 같지 않음
LSS - 보다 작은
LEQ - 작거나 같음
GTR - 보다 큰
GEQ - 크거나 같음
NEQ - 같지 않음
LSS - 보다 작은
LEQ - 작거나 같음
GTR - 보다 큰
GEQ - 크거나 같음
다음은 start 로 3가지 일을 동시에 처리한 후 goto와 label을 이용, cygwin의 delay로 일정 시간 체크한 후 그 후 에러로 처리하는 bat 파일의 예다.
@echo off
SET /A LOOP_COUNT=1
SET /A LOOP_MAX_COUNT=5
SET CYGWIN_DELAY=[Cygwin 경로]\delay.exe
SET DELAY_TIME=5m
rem WORK1, 2, 3를 동시에 돌린다. 다음 작업에 dependency 가 있는 작업에
rem start의 /W 옵션을 주어 기다리도록 한다.
start WORK1.bat
start WORK2.bat
start /W WORK3.bat
goto CHECK
:DELAY
rem if LOOP_COUNT >= LOOP_MAX_COUNT
IF %LOOP_COUNT% GEQ %LOOP_MAX_COUNT% (
SET /A LOOP_COUNT=1
SET /A LOOP_MAX_COUNT=5
SET CYGWIN_DELAY=[Cygwin 경로]\delay.exe
SET DELAY_TIME=5m
rem WORK1, 2, 3를 동시에 돌린다. 다음 작업에 dependency 가 있는 작업에
rem start의 /W 옵션을 주어 기다리도록 한다.
start WORK1.bat
start WORK2.bat
start /W WORK3.bat
goto CHECK
:DELAY
rem if LOOP_COUNT >= LOOP_MAX_COUNT
IF %LOOP_COUNT% GEQ %LOOP_MAX_COUNT% (
echo ERROR!
exit 1
)
rem Delay 한다.
%CYGWIN_DELAY% %DELAY_TIME%
rem LOOP_COUNT += 1
SET /A LOOP_COUNT+=1
:CHECK
echo Checking...
IF [WORK1 실패조건] (
rem Delay 한다.
%CYGWIN_DELAY% %DELAY_TIME%
rem LOOP_COUNT += 1
SET /A LOOP_COUNT+=1
:CHECK
echo Checking...
IF [WORK1 실패조건] (
echo Work 1 is Failed!
goto DELAY
)
echo Work1 is success!
IF [WORK2 실패조건] (
echo Work1 is success!
IF [WORK2 실패조건] (
echo Work 2 is Failed!
goto DELAY
)
echo Work2 is success!
IF [WORK3 실패조건] (
echo Work2 is success!
IF [WORK3 실패조건] (
echo Work 3 is Failed!
goto DELAY
)
echo Work3 is success!
call WORK4.bat
echo Work3 is success!
call WORK4.bat
java.lang.OutOfMemoryError: Java heap space 에러 시 다음 두 부분 중 원인이 되는 부분을 고친다.
이 것 말고도 여러 원인들이 있을 수 있다.
java -vmargs -XX:MaxPermSize=128m -Xms128m -Xmx512m
이 것 말고도 여러 원인들이 있을 수 있다.
MSDN : Creating Shell Extension Handlers
The Complete Idiot's Guide to Writing Shell Extensions
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Shell Extension Context Menu Sample
Registry에 등록하는 건 Post-Build Step 에서 Regsvr32를 이용해서 등록한다. 커맨드는 다음과 같다.
Registry에 등록을 해제하는 건 다음과 같은 커맨드로 가능하다.
Registry 등록 관련 절차는 ShellExtReg.cpp 내의 RegisterFileMenu() 와 UnregisterFileMenu() 내부를 참고하면 좋다.
The Complete Idiot's Guide to Writing Shell Extensions
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Shell Extension Context Menu Sample
Registry에 등록하는 건 Post-Build Step 에서 Regsvr32를 이용해서 등록한다. 커맨드는 다음과 같다.
regsvr32.exe /s /c $(OUTDIR)\CtxMenu.dll
Registry에 등록을 해제하는 건 다음과 같은 커맨드로 가능하다.
regsvr32.exe /s /u $(OUTDIR)\CtxMenu.dll
Registry 등록 관련 절차는 ShellExtReg.cpp 내의 RegisterFileMenu() 와 UnregisterFileMenu() 내부를 참고하면 좋다.
1. WideCharToMultiByte() API를 호출하는 방법
2. CRT 함수 wcstombs() 를 호출하는 방법
3. CString 생성자나 assign을 통한 방법(MFC만 가능)
4. ATL string 변환 매크로를 이용하는 방법
WideCharToMultiByte
wcstombs
CString
ATL Macro
참고 : Introduction to COM - What It Is and How to Use It. by Michael Dunn
2. CRT 함수 wcstombs() 를 호출하는 방법
3. CString 생성자나 assign을 통한 방법(MFC만 가능)
4. ATL string 변환 매크로를 이용하는 방법
WideCharToMultiByte
// Assuming we already have a Unicode string wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, // ANSI code page
WC_COMPOSITECHECK, // Check for accented characters
wszSomeString, // Source Unicode string
-1, // -1 means string is zero-terminated
szANSIString, // Destination char string
sizeof(szANSIString), // Size of buffer
NULL, // No default character
NULL ); // Don't care about this flag
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, // ANSI code page
WC_COMPOSITECHECK, // Check for accented characters
wszSomeString, // Source Unicode string
-1, // -1 means string is zero-terminated
szANSIString, // Destination char string
sizeof(szANSIString), // Size of buffer
NULL, // No default character
NULL ); // Don't care about this flag
wcstombs
wcstombs ( szANSIString, wszSomeString, sizeof(szANSIString) );
CString
// Assuming we already have wszSomeString...
CString str1 ( wszSomeString ); // Convert with a constructor.
CString str2;
str2 = wszSomeString; // Convert with an assignment operator.
CString str1 ( wszSomeString ); // Convert with a constructor.
CString str2;
str2 = wszSomeString; // Convert with an assignment operator.
ATL Macro
#include <atlconv.h>
// Again assuming we have wszSomeString...
{
char szANSIString [MAX_PATH];
USES_CONVERSION; // Declare local variable used by the macros.
lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}
// Again assuming we have wszSomeString...
{
char szANSIString [MAX_PATH];
USES_CONVERSION; // Declare local variable used by the macros.
lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}
참고 : Introduction to COM - What It Is and How to Use It. by Michael Dunn
윈도우즈 XP SP3로 오면서 Remote Desktop Connection tool(RDP Client)인 mstsc가 Ver. 6.0.6001로 업그레이드되면서 몇 가지 변경이 있다.
1. /console 옵션 대신 /admin 옵션을 사용한다는 것
2. 원격 접속된 컴퓨터에서의 Windows-key나 Alt-key 조합이 먹지 않는 것
1 번은 그렇다쳐도 2 번은 정말 불편하다-_-
업그레이드된 버전으로 어떻게 안되나 많이 시도해보았지만 결론은 안되는 듯 하다.
이를 위해 기존 5.2 클라이언트를 사용하기로 결정하고 검색해보았더니 프리웨어로 TSplus Portable RDP 5.2 client가 있다. 이를 이용해서 사용하면 된다.
1. /console 옵션 대신 /admin 옵션을 사용한다는 것
2. 원격 접속된 컴퓨터에서의 Windows-key나 Alt-key 조합이 먹지 않는 것
1 번은 그렇다쳐도 2 번은 정말 불편하다-_-
업그레이드된 버전으로 어떻게 안되나 많이 시도해보았지만 결론은 안되는 듯 하다.
이를 위해 기존 5.2 클라이언트를 사용하기로 결정하고 검색해보았더니 프리웨어로 TSplus Portable RDP 5.2 client가 있다. 이를 이용해서 사용하면 된다.




이올린에 북마크하기