5/7일 실시한 안드로이드펍 개발자 컨퍼런스에 다녀왔습니다.


개발자 팁 위주의 강연이 

꽤나 마음에 들었습니다.


물론 중간에 -_- 거침없는 취침폭풍을 취해서 미친듯이 아쉬운 부분도 있습니다. (이놈의 저질 체력... )




아래는 간략한 설명. + 강의중에 몇 기록한것들


세션1 - 안드로이드 다양한 스크린 디바이스를 위한 UI처리 : 박성서 ( 회색님 )
- Pixel을 사용하지 말아라, DIP를 사용하라.
- Abs Layout을 사용하지 말아라 (1.5부터 Deprecated 되었다고는 하는데 -_- 실제 사용해보면 작동은 하죠? ;; )
- 이미지는 고해상도 이미지를 사용해라 (res/HDPI 경로 이용 )

세션2 - 안드로이드 인터넷 서비스 연동 애플리케이션 개발 ( 강순권 )
 - 인터넷 작업이 들어간 애들은... 전부 
 Cache, Async를 유지하라 + 음영지역에 대한 대비를 하라.


HVGA - 16MB
WVGA - 24MB 의 어플 할당 공간..


NDK 세션에서는 -_-; 빠른 속도를 보장한다는게 주였습니다.
여기서 고민했었던것이...

어플 개발하라고.. SDK가 있는 것인데. 속도를 위해서 NDK로 가야한다그러면.. 전부 NDK로 가야하는것 아닌가?

하는 생각이 들었습니다.

발표자(이제현)님이 말씀하신대로.. 안드로이드 베이스에서 300p이상의 PDF리더는 NDK로 작성한 애들뿐이다.. 라고 말씀하시는게..

앞으로 NDK도 공부좀 해둬야되겠더군요 ㅠ.ㅠ..

+ 강조하신 포인트는...

일반 어플 UI의 구현에..

가속을 받아서 구동해야하는 부분만 NDK로 구현하는 구조로 가야한다고 말씀하시더군요..

좋은 정보 인거 같아 기록에 남깁니다 :) - 다시한번 감사의 말씀 드립니다. 



OK JSP 의 허광남님은... 말투가.. 완전 유쾌하시더군요.

이클립스 사용에 Short Cut위주의 설명이라 ..

쉬운 주제였으나, 알면알수록 개발속도 향상에 큰 도움을 주는 것들?

저역시 단축키 매니아라서;;

저보다 많이 알고 계시더군요 ( --);



세션 6의 AR부분은 SurfaceView 에 대한 설명 부분이 유독 기억에 남는군요.. 
배터리 잡아먹는 귀신! 사용은 해라 그렇지면 UX에 긍정적인 결과를 미치지는 않을것이다.. 라는 놀라운 발언과 함꼐...



이상 대략적인 후기였습니다.


아래는 
컨퍼런스 전리품(?) 응?








내 PC를 서버로 둔 상태에서

안드로이드 에뮬로 작업을 하는도중..



URL targetUrl = new URL("http://127.0.0.1:8888/test.jsp");


이런 URL로 Request 를 날렸더니

접근이 거절되었습니다.

라고 나오길래;


뭔가 문제 인가.. 하고..

뒤적거려보니..

잘 생각해보니..

에뮬 자체로 저 방향(Localhost or 127.0.0.1)이 설정됨을 알수가 있었습니다...

Localhost나 127.0.0.1 같은 녀석은.

안드로이드 AVD자신을 가리키므로..

내 PC의 IP를 직접 기록해주어야


원할한 테스트를 진행할수가 있습니다.




Java에서 오늘 날짜 출력하기..

TimeStampMillis 를 사용해도 되지만..


바로바로 뽑아서써야할 필요가 있을때에

이만한 메소드가 따로 없다;;



public String getDateTime()
    {
     Calendar oCalendar = Calendar.getInstance( );  

        return "" + oCalendar.get(Calendar.YEAR) + "."
        + (oCalendar.get(Calendar.MONTH) + 1) + "."
        + oCalendar.get(Calendar.DAY_OF_MONTH) + " "
        + oCalendar.get(Calendar.HOUR_OF_DAY) + ":"
        + oCalendar.get(Calendar.MINUTE) + ":"
        + oCalendar.get(Calendar.SECOND);
    }



이상 끝...


키보드 반복 입력 속도에 대한 조절



제어판의 키보드 옵션에서 변경하는 것은 한계가 있다고 합니다.

그래서 아래와 같이 설정..

제어판 / 접근성 센터 / 필터키 설정 ( 활성화 해주셔야해요 )

반복키 및 느린키 설정(U) 클릭



이후에 레지 편집.




레지스트리 정보도 Flags값을 제외한 그대로 설정..

HKCU / Control Panel / Accebility / Keyboard Response 항목입니다.



Windows 7 아래에서 테스트 했으며

작업이후 로그오프 -> 로그인

광속 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 를 입력해주세요 :)


한라산에 다녀왔습니다.


몸과 마음을(?) 정화시켜준 중요한 계기였지요

정상에 서기전에 촬영한 파노라마 사진입니다.


50% 크롭(용량떄문에 ㅠ.ㅠ.) 사진입니다.











Coming Soon..


On March 2010.

얼마전 구입한

Tara LCD 15 인치...


AS를 두번이나 보내고 나서야

17인치로 교환을 결정..(물론 유료; )



하여 도착하여

오늘 수령하였다.



잡설을 여기까지.




모니터를 수령후 전원을 연결했는데


BURNING 메시지와 함게 화면을 마구마구 돌아다니시더라는..

+ 전원 부가 빨간불 파란불...

+ OSD 메뉴에 BURN 메시지가 깜빢 깜빡..



.......... 이런 샹;; -_-+


또 AS?




하기전에 검색 좀 디지게 했더니.

OSD 초기화 한방에 모든 문제는 해결.





뭔가 테스트 상태로 배송이 된거 같은 느낌.

뭐 그래도 튼튼한게 왔으니 좋다..

전에 사용하던 15인치와는 다르게

LG 패널 특유의 번들거림(?)도 없고.

완전 나이스!;





고장만 나지 마렴. 횽이 아껴써줄께;;

#1.


집에서

왕십리를 바라보고 찍은 사진..




비오는 날이라서 그런가..



마음이 울적하야 그런지..



기분은 좋다.


#2.







#3.

요즘들어

올 캐릭터 오픈을 위해

종종 하고있는 스파 4..

어린시절(?)의

유흥과 즐거움을 떠올리며

즐거이 플레이중..

물론 난이도는 Easy


도 어려워서



Easiest 였떤가. 여튼 제일 쉬운거 -_-;;

......




아래는 너무나도 많이 돌아다니는 스샷 몇장..



직샷;




다.. 다들 인조이 >.<




너무 즐겁게 플레이 중인지라..






왜 1주일만에 질린거지;

Finding Optimal Apache Conf.

아파치 튜닝 정리 

--------------------------------------------------------------------------------

아파치 튜닝 정리

1. 웹 페이지 로딩시간 확인
#time -pa lynx -source http://www.gwise.com > /dev/null
real 0.74
user 0.16
sys 0.09
-------------
실제 접속시간 : 0.74-(0.16+0.09)=0.49초


2. 아파치 벤치 마킹 
#man ab 사용법 보기
-n requests 요청을 수행할 개수
-c concurrency 요청을 만들 개수로 동시 사용자 개념으로 이해하면 되겠다.
-v verbosity 얼마나 자세한 정보를 화면에 출력해 줄 것인지 결정
-w HTML 문서형식으로 테이블로 만들어 결과를 화면에 출력
-k HTTP 프로토콜의 지속연결 (KeepAlive) 기능을 사용

#./ab -n 100 -c 10 http://www.gwise.com:80/ 
10 명의 유저가 동시에 http://www.gwise.com/index.html 을 요청하는 것을 모의 실험.
각각의 시뮬레이트 유저는 요청을 10 번씩 하게 됩니다

# ab -n 1500 -c 50 http://www.apache.kr.net:80/
요청을 30 x 50 (50 명의 사용자가, 각각 30 번의 요청)

Requests per second: 80.48
초당 80.48개를 요청 했음.

'MaxRequestsPerChild’ 는 메모리 누수현상(?) 등이 발생하지 않는다면 가능한 이 값을 높게 설정하시고요(파라미터의 값을 0 으로 설정해 무한대로 하실수도 있습니다) StartServers’ 는 프로세스가 active 되어 있는 경우가 적을 경우 값을 낮게 설정하시고, 접속량이 아주 많을 경우는 MaxClients 에 가깝게 조절하시기 바라며, MaxSpareServers 를 MaxClients 와 같게 설정합니다. MaxClients 는 너무 낮게 설정하지 않도록 주의하시기 바라며, 그렇다고 또 너무 크게 잡으셔도 안됩니다


3. 웹 서버 삽질 막기
BrowserMatch "WebZip" go_out
BrowserMatch "Teleport" go_out
BrowserMatch "GetRight" go_out



....
Deny from env=go_out


4. 아파치 튜닝
일반 서버에서는 다른것은 그냥 Default 값으로 둔다.
(대형 서버의 경우 말고는 특히 쓸 일어 없을 것이다.)

증가 시킬 경우 배수로 한다. 꼭 이렇게 해야 한다가 아니라
이렇게 하면 좋다.

Timeout 300
클라이언트의 요청에 의해서 Server와 연결 되었을때
클라이언트와 서버간의 아무런 메시지가 발생하지 않았을때
오류로 처리하는 시간
네트워크 속도가 나쁠수록 수치값을 높게 한다.

KeepAlive on
지속적인 접속, 즉 서버 연결에 대하여 한번 이상의 요청을 허용 여부.

MaxKeepAliveRequests 100
클라이언트가 접속된 시간동안 아파치 서버에 요청할 수 있는 처리 process 개수

StartServers 5 X ? =20 -> 초반에 뜰 process 그 이상 그이하의 의미도 없다.
MinSpareServers 5 X ? =20 -> Spare 프로세스가 이것 이하 일때 끌어 올려 준다.
MaxSpareServers 10 X ? =40 -> Spare 프로세스가 이것 이상 일때 진정(?)시켜 준다.
말 그대로 Spare.... 언제 있을지 모를 요청에 대해서 컴퓨터 스스로가 
조절해 준다.

MaxClients 150
클라이언트들이 동시에 최대로 접속했을때 가능한 최대 서버이 수를 지정.
Ulimit -a ~~~ max process...이 수치 이상 증가 못함.
httpd.h
HARD_SERVER_LIMIT=250 조정해서 다시 컴파일 가능

MaxClient 150 -> 동시에 떠 있을수 있는 최대 process
더 많은 수를 원할시 httpd.h 소스 파일의 
HARD_SERVER_LIMIT 값을 수정 한 다음 다시 컴파일 해야 한다.

#ulimit -a
core file size (blocks) 0
data seg size (kbytes) unlimited
file size (blocks) unlimited
max memory size (kbytes) unlimited
stack size (kbytes) 8192
cpu time (seconds) unlimited
max user processes 2048
pipe size (512 bytes) 8
open files 1024
virtual memory (kbytes) 2105343
-----------------------
위의 max user processes 의 수를 초과 할 수 없다.

MaxRequestPerChild 100
한 프로세스가 몇 번의 서비스를 하고 소멸될 것인지 정한다.
M$계열에서는 별 의미가 없으므로 0을 한다.
하지만 Unix 계열은 0을 사용하지 않는 것이 좋다.

가장 중요한 것은Timeout 설정입니다. 위에서 keep-alive 를 설정해 놓은 
경우, 하나의 connection에서 계속해서 다음 request를 처리할 수 있기 때문에 효율적
이라고 하지만, 실제로는 그렇지 않습니다. keep-alive 를 허용하고 그 timeout을 
5초로만 설정해도, 하나의 request를 처리한 후 적어도 5초동안은 그 httpd가 다른 
작업을 하지 못하고 다음 request를 기다리게 됩니다.

보통 웹브라우저들은 서버로 동시에 4개의 connection을 만들게 됩니다. 한 페이지를 
보는데 이미지 등등 해서 보통 4개의 connection을 만드는 것은 기본이죠. 이렇게 되면 
httpd가 100개 떠 있다고 해도, 실제로는 동시에 25명의 방문자밖에 처리하지 못합니다.

그리고 keep-alive timeout이 5초인 경우, 한 명의 방문자를 처리한 후 적어도 5초동안은 
계속해서 기다리면서 httpd가 놀게 됩니다.(그렇다고 해서 httpd의 수를 늘여주면 앞의 
문제 때문에 load가 몰릴 때 순간적으로 부하가 지나치게 많이 걸리게 됩니다. 어떤 
request는 수초가 지난 후 답을 받는 등 quality of service가 많이 떨어지죠.)

결국 한 명의 방문자를 처리하는데 4개의 httpd가 5초동안 작업한다는 뜻이고, 100개의 
httpd를 띄워봐야 1초에 5명의 방문자밖에 처리하지 못하는 셈입니다. ( 1 명 / 5 sec / 
4 httpd = 5 / 1 sec / 100 httpd )

그래서 검색엔진 서비스 등 traffic이 많은 사이트에서는 keep-alive 옵션을 반드시 꺼 
놓게 됩니다. 그리고 connection timeout도 상당히 짧게 설정해 놓죠. 4~5초 이내로 말입니다


5. 아피치 튜닝-2(로그기록 로테이트로)
/home/apache/conf/httpd.conf
CustomLog /home/apache/logs/access_log common
TransferLog "|/home/apache/bin/rotatelogs /home/apache/logs/access_log 86400"
TransferLog "|/home/apache/bin/rotatelogs /home/apache/logs/error_log 86400"
--------------
24시간 마다 로그 화일을 갱신해 준다.
24X60X60=86400초


6. 아파치 에러 메시지 바꾸기
httpd.conf
Customizable error response (Apache style)
2) local redirects
ErrorDocument 404 /cgi-bin/missing404.pl

missing404.pl
---------------
#!/usr/bin/perl
print<<"(END_HTML)";
Content-type: text/htmlnn

요청하신 http://www.gwise.com$ENV{'REQUEST_URI'} 이 존재 하지 않습니다.
서버관리자 에게 문의 바랍니다.

(END_HTML)
exit;
---------------


7. 아파치 에러 코드 
HTTP 1.1 status codes [TOP] 
100 : Continue 
101 : Switching protocols 
200 : OK, 에러없이 전송 성공 
201 : Created, POST 명령 실행 및 성공 
202 : Accepted, 서버가 클라이언트 명령을 받음 
203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부만 전송 
204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음 
205 : Reset content 
206 : Partial content 
300 : Multiple choices, 최근에 옮겨진 데이터를 요청 
301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음 
302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시 
303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음 
304 : Not modified 
305 : Use proxy 
400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음 
401 : Unauthorized, 클라이언트의 인증 실패 
402 : Payment required, 예약됨 
403 : Forbidden, 접근이 거부된 문서를 요청함 
404 : Not found, 문서를 찾을 수 없음 
405 : Method not allowed, 리소스를 허용안함 
406 : Not acceptable, 허용할 수 없음 
407 : Proxy authentication required, 프록시 인증 필요 
408 : Request timeout, 요청시간이 지남 
409 : Conflict 
410 : Gone, 영구적으로 사용할 수 없음 
411 : Length required 
412 : Precondition failed, 전체조건 실패 
413 : Request entity too large, 
414 : Request-URI too long, URL이 너무 김 
415 : Unsupported media type 
500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시) 
501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함 
502 : Bad gateway, 서버의 과부하 상태 
503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태 
504 : Gateway timeout 
505 : HTTP version not supported

////////////////////////////////////////////////////////////////////
이부분은 트래픽 양이 큰 곳에서 사용하시면 좋습니다.
설정파일에서 참고할 부분들을 적은 것이니, 꼭 이렇게 바꾸실 필요는 없습니다.

MaxKeepAliveRequests 100 -> 10000 
웹서버 프로세스가 지속적으로 접속을 유지하면서 처리할 수 있는 요청 개수입니다.
KeepAliveTimeout 15 -> 30
서버에 접속시에 웹페이지 객체들의 전송시 새로운 프로세스를 생성하지 않고 지속적으로 접속을 유지하고 담당하며, 
이 클라이언트의 요청에 대한 타임아웃에 대한 값입니다.
StartServers 5 -> 20
MinSpareServers 5 -> 20 
MaxSpareServers 10 -> 40
폭주하는 서버일 경우 SpareServer가 많으면 빨리 대처할 수 있습니다.
스탠드얼론 방식일 경우 새로운 접속 요청을 받으면 기존의 Spare Child Process를 포크해 새로운 자식 프로세스를
만들어 내므로 적당히 있어주면 좋습니다.
MaxRequestsPerChild 0 -> 1000
웹서버 프로세스가 일정 횟수의 클라이언트 요청을 처리하고 종료되는 수치입니다.
※ MaxClients 256 -> 1024
동시에 실행될 수 있는 최대 프로세스 수를 제한 하는 것입니다.
하지만 옵션을 1024로 확장하려면 소스레벨에서 
아파치 설치전에 apache/src/include/httpd.h 파일에서
HARD_SERVER_LIMIT 256 으로 된것을 1280 으로 변경한후 컴파일 하여야 사용 가능하다.




Tomcat에서 세션 타임아웃 설정은 적용 우선순위 순서로 다음 세 곳에서 가능합니다. 

(1) 프로그램안의 session.setMaxInactiveInterval() 

(2) 웹어플리케이션의 WEB-INF/web.xml 

(3) Tomcat의 conf/web.xml



 "세션에 접근한 시간을 기준으로" 란 말은 session.setAttribute() 또는 session.getAttribute() 를 했을때 인가요?? 
--> 제가 오해하기 좋게 적었네요.  
Tomcat은 session cookie를 가진 request가 전달되면 해당 session 사용여부와는 관계없이 해당 세션의 last access time을 갱신합니다.
 즉 마지막 http 요청을 받은 시간이 기준이 됩니다.






클량에서 퍼온글..



나는 아니한가....


반성하자.


J2 SE 1.4 이후론 Default Package에 대한 접근이 불가.
(여러 글에서 스펙에 나와있다 하였으나 정확하게 파악하지는 못한상태.)

다음과 같은 방법으로 가능은 함.;


 Class fooClass = Class.forName("FooBar");
 Method fooMethod = fooClass.getMethod("fooMethod", new Class[] { String.class });

String fooReturned =
      fooMethod.invoke(fooClass.newInstance(), new String[] { "I did it"}).toString();

출처.



뭐 여튼 한가지 배웠으니 :)


# 추가.

Sun 홈페이지에서 다음과 같은 문서 발견.



160 페이지에 보면

 It is a compile time error to import a type from the unnamed package



라는 문구..


unnamed package = default package 



찾았다.. 하악하악;


09년 2월 24일 졸업.
(아직은 예정.)


집으로 날아들어온

고지서를 닮았던

총장님의 편지....



 02년도 입학해서..

 09년 2월 졸업..

 7년간 몸담고 있었던 대학교

 허구언날 총장 총장 이러면서 욕했던 어린날이

 지금의 나. 라는 사실에 ..

 오늘 우편물로 날아온 인쇄된 총장님의 편지가

 평소같으면, 쓰레기 하나 추가요~ 겠지만서도

 요즈음의 '나' 로서는, '나'를 다시금 되돌아보게만든다.




아래는 그 편지 80%.  (일부 삭제 ( --); 불필요한 내용이라 생각되기에. )

졸업생을 위한 당부

어느덧 봄의 문턱인 입춘이 지나고 경칩이 다가옵니다.
 하지만 사회에 첫발을 내딛는 청년들에겐 이 봄이 유난히 춥게 느껴집니다. 미국의 금융 위기로 촐발된 세계적인 경제 위기 탓에 취업 시장이 그 어느때보다 꽁꽁 얼어 있기 떄문입니다.
 청년 실업 100만 시대, 젊은 꿈과 희망이 한없이 찬바람 부는 언덕으로 내몰리는 기막힌 현실 앞에서 저는 대학의 총장으로서 안타까움과 더불어 무거운 책임감을 느낍니다.
 내가 취업할 수 있을까? 내가 사회에 나가서 힘찬 출발을 할 수 있을까?
 취업을 고민하는 여러분 모두가 떠올리는 궁금증입니다.
 하지만 모든 일이 그렇듯 취업에도 왕도는 없습니다. 처음부터 자질을 타고난 사람은 없으며, 누구든 노력하는 사람에게 길은 열리게 마련입니다.
 우선, '반드시 할 수 있고, 해야 한다'는 마음가짐을 가지십시오.
 취업은 젊은 시절 한 떄의 문제가 아니라 삶 전체에 절대적 영향을 미치는 인생의 가장 중요한 관문입니다. 구직 실패의 가장 큰 원인은 바로 자포자기입니다.
 안 되면 다른 방향으로 눈을 돌려 생각해보고, 그래도 안 되면 눈을 조금 낮춰 새 길을 찾으십시오. 그에 맞춰 자신을 가꾸고 정성을 들인다면 언젠가는 본래 원했던 커다란 성공을 이루게 될 것입니다. 준비도 없이 처음부터 커다란 성공만을 기대하는 것은 무모한 일입니다.
 크든 작든 많은 기회를 가지려면 정보망을 넓히고 체계적인 준비와 노하우를 쌓아야 합니다. 기업이 선호하는 구직자 유형은 '가능성을 지닌 성실한 사람'입니다.

-  일부 생략  -

아무쪼록 용기 잃지 마시고 끝까지 노력해서 주어진 기회를 십분 활용하시기 바랍니다.
젊은 시절의 하루는 노년의 십년보다 중요합니다.
 여러분 모두가 원하는 직장의 문을 통과하는 행운을 누리시길 빕니다.

2009년 2월
OO대학교 총장 OOO.
뭔가 이클립스에서 

아름다운 정렬 기능을 보다보니..




VS에도 있을꺼다..

하면서


샛길에서 발견한

단축키 목록;;


무려 PDF 파일로

지원해준다.






 

조수미 - 마왕을 검색하다가...

끌리는 유튭 영상을 겟.





혹시 난중에라도 볼려 ( --);

기록에 남겨둔다.





목소리 완소 >.<!!!!!!!1


NFS Under Cover..

레이서즈 클럽에서 모 분의 글을 인용하자면..

유리바닥위에서 모형카가 이동하는듯 하다...



꼭 그 느낌;

처음 시작했을때에..

옵션 메뉴를 못찾고 -_-

ESC를 눌러도 상위 메뉴 혹은 이전 메뉴로가 활성화되지 않고 무조건 백스페이스를 눌러야한다거나..

여튼 이래저래 문제점이 속속 보이긴하지만.

나름 NFS의 느낌은 잘 살린듯...



NFS의 진가는 후반부에 나온다고 철썩같이 믿고 있는데..
300km 를 넘는 속도 감을 어찌 표현해줄까?

기대기대..

(이제 150 넘어서 좋아하는중 ( --)    );


간만에 가볼까나...


http://www.cyworld.com/cizix

삽질 개발왕님 ㅠ.ㅠ.

진정 두손 두발 다 들고..


인정 ( --)

리얼포스101은 순수 ps2...


ㅠ.ㅠ...


USB 연결을 위해선

단순 PS2 - USB 잭을 연결해서는

안됩니다!(내 1500원 ㅠ.ㅠ. )

마우스 끝에 끼는 식으로 생긴녀석으로는 안되고



아래 제품과 같은 녀석은

잘됩니다. :)


이녀석이 그 유명한 KNCU 20
가격도 그만큼 ... 2.5만 정도... 구입시 1순위이긴하지만 다른 녀석이 있으면 낼름 ( --);


리얼포스와 약간의 딜레이를 가지고있는 Netmate 사의 제품..
가격이 얼마건 뒤로 슬쩍 미뤄두고..


싼녀석 없나 하고 검색하더준

뒹구르르님 블로그에

http://coin.egloos.com/1721930
 ( '') 그분 링크...

이녀석이랑 리얼포스랑 끼니깐 잘된다는데

가격도 놀랄만큼싼 3500원!!!.... 배송비가 배꼽보다 위로 올라와있는 녀석인데.

이거이거...

고민되는군요.



일단 이 글의 작성 목적은

잊지 않을려고 ( --);



이런게 있었네..


Address Off
set
After HeapAlloc() After
malloc()
During
 free()
After HeapFree() Comments
0x00320FD8 -40 0x01090009 0x01090009 0x01090009 0x0109005A Win32 heap info
0x00320FDC -36 0x01090009 0x00180700 0x01090009 0x00180400 Win32 heap info
0x00320FE0 -32 0xBAADF00D 0x00320798 0xDDDD
DDDD
0x00320448 Ptr to next CRT heap block (allocated earlier in time)
0x00320FE4 -28 0xBAADF00D 0x00000000 0xDDDD
DDDD
0x00320448 Ptr to prev CRT heap block (allocated later in time)
0x00320FE8 -24 0xBAADF00D 0x00000000 0xDDDD
DDDD
0xFEEEFEEE Filename of malloc() call
0x00320FEC -20 0xBAADF00D 0x00000000 0xDDDD
DDDD
0xFEEEFEEE Line number of malloc() call
0x00320FF0 -16 0xBAADF00D 0x00000008 0xDDDD
DDDD
0xFEEEFEEE Number of bytes to malloc()
0x00320FF4 -12 0xBAADF00D 0x00000001 0xDDDD
DDDD
0xFEEEFEEE Type (0=Freed, 1=Normal, 2=CRT use, etc)
0x00320FF8 -8 0xBAADF00D 0x00000031 0xDDDD
DDDD
0xFEEEFEEE Request #, increases from 0
0x00320FFC -4 0xBAADF00D 0xFDFD
FDFD
0xDDDD
DDDD
0xFEEEFEEE No mans land
0x00321000 +0 0xBAADF00D 0xCDCD
CDCD
0xDDDD
DDDD
0xFEEEFEEE The 8 bytes you wanted
0x00321004 +4 0xBAADF00D 0xCDCD
CDCD
0xDDDD
DDDD
0xFEEEFEEE The 8 bytes you wanted
0x00321008 +8 0xBAADF00D 0xFDFD
FDFD
0xDDDD
DDDD
0xFEEEFEEE No mans land
0x0032100C +12 0xBAADF00D 0xBAAD
F00D
0xDDDD
DDDD
0xFEEEFEEE Win32 heap allocations are rounded up to 16 bytes
0x00321010 +16 0xABABABAB 0xABAB
ABAB
0xABAB
ABAB
0xFEEEFEEE Win32 heap bookkeeping
0x00321014 +20 0xABABABAB 0xABAB
ABAB
0xABAB
ABAB
0xFEEEFEEE Win32 heap bookkeeping
0x00321018 +24 0x00000010 0x00000010 0x00000010 0xFEEEFEEE Win32 heap bookkeeping
0x0032101C +28 0x00000000 0x00000000 0x0000
0000
0xFEEEFEEE Win32 heap bookkeeping
0x00321020 +32 0x00090051 0x00090051 0x00090051 0xFEEEFEEE Win32 heap bookkeeping
0x00321024 +36 0xFEEE0400 0xFEEE
0400
0xFEEE
0400
0xFEEEFEEE Win32 heap bookkeeping
0x00321028 +40 0x00320400 0x00320400 0x00320400 0xFEEEFEEE Win32 heap bookkeeping
0x0032102C +44 0x00320400 0x00320400 0x00320400 0xFEEEFEEE Win32 heap bookkeeping




원본글
http://www.nobugs.org/developer/win32/debug_crt_heap.html

뤀군이 필사적으로


눈팅 하고 있는 클리앙 사이트에서


심심할라치면 한번씩

대세가 되는

MyHeritage :)



자신의 사진을 업하면

닮은 꼴을 찾아주는..

뭐 그런 신기한 서비스랄까요.




61% 의 근접률이 떳습니다.

잘생기신분들의 얼굴에

제 얼굴을 닮은꼴로 찾으니

저리 나오는건

당연하겠지요 :)

결과 공개!



사용자 삽입 이미지



저 안닮은 사람 많습니다!


제 얼굴 궁금하십니까?!!!

분명...

제 얼굴 아는사람만 댓글달꺼 뻔하니. ( --);





사이트 :)

http://www.myheritage.co.kr/celebrity-collage


한국어 입니다 맘껏 :0

e-Test .................

http://www.e-test.co.kr/jsp/index.jsp


시행처 삼성 SDS 의 컴퓨터 활용능력 시험이랄까..

워드 엑셀 PPT의 3종 세트를 상큼하게

처리해서

총 1000점 만점의 점수를 측정하여

920점 이상 취득시 전문가(? , 1급 정도로 이해하면 간단할듯. )

레벨에 들어가고,

 ㅂㄼㄼㄹ ... 뭐 그런시험이지요..

이것저것 준비 하다가..

메인 페이지에 존재하는.


재미로 보는
정보활용 능력 평가.



재미로? 그렇다면 재미로 응해주지.

!!



사용자 삽입 이미지



어라.. 1개 틀렸네 -_-;;;




일단 2급인가 ( --);


그런데 다 풀고나서 좀 즐거움을 줬던 부분이.

주소표시줄을 잘 보면..

fundo ....

ㅋㅋㅋㅋㅋㅋ! 간만에 자음 연타좀 해보았습니다.

정말 재미로 보는 시험이었군요  ( --); 후후...



eTest 1급 딸때까지... ㄱㄱ....


놀자..응?
평소 광속 타이핑을 즐기는 뤀군은..

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ <= 따위를 쓸때에도

느리면 분노가 극도로 치밀어 오르는 편입니다;;;


이러한 부분을 설정하는 부분이

제어판의 키보드 부분..( Win XP & Vista 기준.)


XP에서 사용하다가

Vista로 넘어왔는데...

XP만큼의 속도를 못올려주는거 같기에...


레지스트리 수정 돌입!

[HKEY_CURRENT_USER\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2"
"KeyboardDelay"="0"
"KeyboardSpeed"="48"


이녀석중..

맨 아래

키보드 스피드!..

제어판에서 설정시 최대 속도 31...( XP에서는 잘 모르겠습니다; )


누군가의 댓글에 48 카트하기 제일 좋은 속도.. 라고 써뒀길래
(본인은 카트를 즐기지 않습니다 ^^:)

48정도면 딱 좋겠군 하고 수정 완료;..


혹시 나중에 또 까먹을까. 블로그에 기록..



:)





필요에 의해 STL을 부문부문 사용하다기보단

선배의 한마디 덕에

for_each의 사용법에 대해 궁금해하여

구글링을 통해 msdn 샘플을 사용해 보았다.




샘플 소스 전문


// foreach.cpp
// compile with: /EHsc
//
// Functions:
//   for_each  - Calls function F for every element in a range.
//
//   begin     - Returns an iterator that points to the first element
//               in a sequence.
//
//   end       - Returns an iterator that points one past the end of
//               a sequence.

// disable warning C4786: symbol greater than 255 characters,
// okay to ignore
#pragma warning(disable: 4786)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// prints the cube of integer n
void PrintCube(int n)
{
    cout << n * n * n << " " ;
}

int main()
{
    const int VECTOR_SIZE = 8 ;

    // Define a template class vector of integers
    typedef vector<int > IntVector ;

    //Define an iterator for template class vector of integer
    typedef IntVector::iterator IntVectorIt ;

    IntVector Numbers(VECTOR_SIZE) ;   //vector containing numbers

    IntVectorIt start, end, it ;

    int i ;

    // Initialize vector Numbers
    for (i = 0; i < VECTOR_SIZE; i++)
        Numbers[i] = i + 1 ;

    start = Numbers.begin() ;   // location of first
                                // element of Numbers

    end = Numbers.end() ;       // one past the location
                                // last element of Numbers

    // print content of Numbers
    cout << "Numbers { " ;
    for(it = start; it != end; it++)
        cout << *it << " " ;
    cout << " }\n" << endl ;

    // for each element in the range [first, last)
    // print the cube of the element
    for_each(start, end, PrintCube) ;
    cout << "\n\n" ;
}



소스전문 끝


실행 결과


Numbers { 1 2 3 4 5 6 7 8  }

1 8 27 64 125 216 343 512





for_each(start, end, PrintCube) ;

대충 이렇게 사용하는거군;




설정부.
    // Define a template class vector of integers
    typedef vector<int > IntVector ;
   
    //Define an iterator for template class vector of integer
    typedef IntVector::iterator IntVectorIt ;
  
간단한게 사용하기 위해 템플릿(정수 벡터형, 이터레이터)을 선언하고.

    IntVector Numbers(VECTOR_SIZE) ;   //vector containing numbers

정수형 벡터를 선언한다음.

    IntVectorIt start, end, it ;

이터레이터로 시작과 끝, 이터레이터를 설정.
// 최후 it는 for_each를 위해서는 구지 필요하지 않다;



포인트는 이녀석

    start = Numbers.begin() ;   // location of first
                                // element of Numbers

    end = Numbers.end() ;       // one past the location
                                // last element of Numbers

Numbers 의 시작과 끝을 start 와 end에 설정.



for_each(start, end, PrintCube) ;

start에서 시작해서 end에서 종료

각 스텝마다 PrintCube를 실행

인자는 자동으로 PrintCube 뒤에 추가된다.

그리하야 PrintCube(*it) 이런식으로 기록하지 않아도 된다;



정확한 설명은 아래 영문이 설명


The for_each algorithm calls Function F for each element in the range [First, Last) and returns the input parameter F. This function does not modify any elements in the sequence.


대중의 의미는.

for_each 는  first, last범위안에 있는 각 요소를  함수 F의 인자로 호출한다.

이 함수는 일련의 요소에 대해서 수정을 하지 않는다.







저 영문을 읽지 않고 뭔가 멋진 방법을 고민하다가.(결론은 쓸대 없는 방법이 되었지만.)

for_each(start,end,PrintIT(it));

이런문장이나.

void PrintIT(iterator n){
 cout << *n << endl;
}

이런함수가 등장해버렸다..

실행결과 유한개의 오류를 뱉어내주어서.

뭔가 하고 msdn참조 역시!...

뻘짓 :)






역시나 이런녀석 한번 알고나면.

어디에 써먹을까 한참 고민만 하다가

다음에 사용하지 않게된다.. ;;;



이러다보면 언젠간 늘겠지 ( --);

LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR 의 의미는 다음과 같다.




LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR
뭔가 다 비슷 비슷해보이죠?

원래 c와 c++은 string이라는 똑똑한 자료구조형을 compiler차원에서 지원하고 있지 않습니다.

그대신 가장 많이 사용하는 string을 어떻게 저장해야 할지에 대해 고심한 결과...
결국 배열의 끝에 '\0'또는 0 또는 NULL값을 넣어 string을 표현하도록 했습니다.
결국 가장 적은 용량의 string처리와 가장 골치아픈 string처리가 탄생하는 순간이였죠.

어쨌거나 요점은...
Windows에서는 이런 string처리를 위해서 char* 형을 그대로 쓰기 보다는 LPCSTR등의 표현으로 대치해 사용함으로써, 개발의 편의성을 돕고 있습니다.

자... 그럼 서론이 길었고...
위의 골치아픈 형을 살펴보면..

같은 글자들이 여러번 반복해 나옴니다.

LP, C, STR 등이 거의 자주 반복되고,
어떤놈들은 T 나 W를 사용하기도 하죠.

글자를 하나씩 살펴볼까요.

LP는 long pointer를 나타내는 약어로서 16bit시절의 윈도우의 유산입니다.
과거 windows3.1까지의 시절에는 포인터는 모두 16bit였고, 24bit 메모리를 long pointer라는 것을 통해서 extended memory라는 이름으로 관리했었거든요..
현재 LP(long pointer)는 .Net에서는 64bit pointer를, VC++6.0과 그 이전 버전에서는 32bit pointer를 나타냅니다.

C는 constant, 즉 함수의 내부에서 인자값을 변경하지 말라는 뜻입니다.

STR은 말그대로 string자료가 될것이라는 뜻으로 내부적으로는 char형 배열에 null값 종료를 의미하고 있죠.

자... 그럼 해석해 봅시다..
LPSTR = long pointer string = char *
LPCSTR = long pointer constant string = const char *
결과적으로는 맨 마지막과 같은 형이라는 거죠.

그런데...
LPCTSTR!! 요넘은 무었이냐!!
LPCTSTR = long pointer constant t_string = const tchar *
앗! 오타입니다. t라는 놈이 들어갔네요..
오타일까요? ^^ 아닙니다. t라는 놈은 우리나라를 위해 아주 중요한 역할을 하는 놈이죠.. 이것은 잠시 이후에 살펴보겠습니다.

그럼 먼저..
W라는 넘을 살펴보죠...

W 이넘은 wide char를 나타냅니다. 쉽게 말하면 unicode죠..
win9x에서 사용하던 multibyte와는 다릅니다. 물론 한글 조합형 코드도 아니고...
unicode를 나타냅니다.

자 그럼 다시 해석을 해보죠.
LPWSTR = long pointer wide string = w_char *
LPCWSTR = long pointer constant wide string = const w_char *

위와 같이 해석됩니다.


그런데 t_char('티캐릭터'라고 읽습니다.)는 무었이냐!!

마이크로소프트가 세계 각국에 제품을 판매하면서..
각국의 언어에 맞추어 개발하는 것에 환멸을 느끼다가..
드디어 windows를 unicode기반으로 개발하는 작업에 착수했습니다.

그런데... 문제는 char는 1Byte이고 wide char는 2Byte이므로..
포인터 연산을 많이하는 c, c++코드는 호환성에 치명적인 문제가 있었죠.
그래서 컴파일러가 precompile option을 보고. 환경에 맞게 동작하는 코드를 작성할 수 있는 새로운 변수 모양의 Macro를 선언하게 되었습니다.
그것이 바로 TCHAR, t_char라는 변수죠.
이놈들은 자신의 운영체제가 multi-byte환경이면, char형으로,
unicode환경이면, w_char, wide char형으로 type casting됩니다.

그래서... 보통 windows 9x, 2000계열의 환경이라면,
LPTSTR = LPSTR = char *
LPCTSTR = LPCSTR = const char *가 됩니다.

그런데..
아마 저 코드에서..
(LPSTR)(LPCTSTR) 형변환을 할때 자세히 보면..
const 라는 키워드만 떼내는거지요...
그러니까 사실은 (char *)(const char *)와 같은 말입니다.
웃기는 형변환이죠..
그럼 없어도 될까요?
^^

없으면 당연히 오류가 나게됩니다.
왜냐면...(LPSTR)CString을 하면.... CString형 자료의 맨 처음 주소부터 char * 형으로 형변환하기 때문이죠.
CString형은 앞의 16Byte를 자료형을 표현하기 위해서 사용하기 때문에, 여기서부터 형 변환을 해주면 엉뚱한 값이 표현되게 됩니다.

따라서 MFC에서 지원하는 CString class는 LPCTSTR라는 함수를 통해서 일단 안전하게 const char * 형으로 바뀐 자료형을 얻어오게 하는거죠.

CString myString;
(LPCTSTR)myString;이라고 해주면..
myString내부의 string 값을 꺼내오게 도와주는 연산자 또는 함수를 사용하게 된겁니다.
즉 (LPCTSTR)이란 놈이 반환값이 const char* 인 함수입니다.
정확하게 표현하면 operator overloading이라는 거지요.

결과적으로 (LPSTR)(LPCTSTR)myString은
myString의 내부 string 자료를 함수를 통해 자료를 꺼내온뒤에, char* type으로 안전하게 바꾸어주는 역할을 하게 되는 거지요.

참고로, 함수의 인자가 char * 인곳에 const char* 형을 넣으면 컴파일 오류가 발생하기 때문에 (LPSTR)을 한번더 앞에 써주어서 강제 type casting을 한 것입니다.

--------------------

무단으로 퍼왔지만 출처는 남깁니다 :)

http://rmsg.tistory.com

잘쓸게요 ㅠ.ㅠ.

사용자 삽입 이미지
하아..


2주지난 일을 이제야 작성하는군요

위 사진처럼

햇빛 쩅~~ 한날에 WIS에 다녀왔습니다.

뭐.. 별건 없습니다 ^^;


사용자 삽입 이미지

즉석 드로잉...

이분 앞에서 좀 시간 기다리며 쭊 봤습죠..

신기신기;





사용자 삽입 이미지

배컴 폰이라는 그녀석인가요?

이쁘긴하던데;;;;;

V9M 이던가. V9M le 던가..



사용자 삽입 이미지
이것역시!




사용자 삽입 이미지
배송 대기중인

M480 미라지 입니다.

제가 미라지 예약 판매 줄서있는 이유도..


WIS덕이 아닌가 하는 생각도 되는군요

블랙잭 1보다 키패드가 작아지고..

궁시렁 궁시렁...



어서 오너라;;



사용자 삽입 이미지

가장 눈에 띄는건 역시 차량!

LOTUS!!!!

귀엽고 깜찍하게~~~ 완소!




사용자 삽입 이미지
가서 좀 놀랍게 본녀석이 이녀석입니다.


무장 가볍고 -_-;

그래픽카드 좋고..

(배터리 오래가는지는 모르겠씁니다.)

지인 HSR군이 다음학기에 질러올지도 ( --);







사용자 삽입 이미지

햅틱!

넌! 실망이였어;;;


주관적인 평입니다.

그냥.. 별거 없었어요 ;;



사용자 삽입 이미지


행사장에서 가장 맘에 들었던. 조형물...

90도 돌아간 사진입니다. :)

그냥 전 이런게 좋더라구요 ^^;





사용자 삽입 이미지

200nm 512mb One Dram 이라고 써있네요..

무엇인지는 저도 잘 ....


저거 잘라서 램 만드는거 같은데..

:)

자.. 잠깐. 200nm면.. -_-;; 구형 가져다 논건가..?




그냥 살다보면


깜딱 놀랬때가 있다..



이분때문에 ㅡ_ㅡ;


사용자 삽입 이미지



나랑 동명이인... 서점에가도 책이 한가득

가끔씩 온라인상에서도 이팩트 있는 한방씪 날려주신다.



나랑은 완전 따른 판의 얼굴을 소유하고 계시지만 -_-

이름이 같으니. 영... .느낌이 ..


싱숭생숭..




방학도 시작됐고.


뭔가 할게 산더미 같은 여름방학이 되어서..


그렇네 ㅡ_ㅡ;

음. 그렇쿤.

그런거야.. 흑흑.. ㅠ.ㅠ.
사용자 삽입 이미지



다녀온지 3일 되었지만

가슴 뭉클어올랐던 그날의 감정이 사라지기 전에

몇가지 기억의 흔적을 기록하려 합니다.


1. 대한민국.
2. 단결력.
3. 영향력...




대한민국의 한 일원으로서.

몇년이 지난후.. 지금일어나는 일들이 그냥 지나가는 일.. 사소한 일처럼 이야기될때..

08년도 진짜 힘들었어... 그렇지?

..... 응... 너도 함께 했구나..

라는말....



단결력..

02년도.. 2002 korea japan world cup 이후로..

온 국민이 .. 수많은 시민들이 거리로 나가 거리응원을 펼치던.

다 같이 한가지 염원으로 바라던. 그 순간..

승부차기 5번재 홍명보의 골이 들어가는 그순간.. 그 찰나까지..

우리들의 마음은 단 하나였습니다.



이렇게 행동한다고 뭐가 달라질까?

현 정부에 대해 어느정도 반대 의견이 날이 갈수록 늘어만 갑니다.


정말 귀를 닫고 사는걸까..

윗사람들은. 왜 그리 보수적일까?

단지 내가 보수적이라고 생각하는걸까..

윗사람들간의 알수없는 눈치 싸움인걸까...






사용자 삽입 이미지

수많은 시민들이 거리로 나왔습니다.

바라고 있습니다.

건강을..

개인의 이익을 위해서 나오는 자리라면 이리 나오지는 않을겁니다.

가족, 형제들의 건강...

그 하나의 건강을 지키고자.. 많은 사람들이 거리로 나왔습니다.





더 길게 작성치는 않겠습니다.

블로그에서 정치 논쟁이 벌어지는걸 원하지도 않고

쥐색히 찍찍뭐 이런소리 조차 듣고 싶지는 않습니다.


저에게는 오직 저에게 있어서 만큼은...


대한민국은 민주주의 국가이고.

대한민국 국민은.. 자랑스러운 국가의 주인이라는것..


이 두가지가 더 크게 다가오는 하루였던것 같습니다.



사용자 삽입 이미지

오직 누구 한명떄문에

이런 팜플렛이 돌아다니는것은 아닐 것입니다.


종이컵이. 까맣게 그을릴때까지

그리 오랜시간이 걸리지 않았습니다.


그 짧은 시간마져도...

제 바램은...

그곳에 참석하시는 모든분들의 바램은...

한결같습니다.




종이 컵이 다 타버린이후에도...








역시나 또 Pgr21.com에서 퍼왔네요

하만님의 글입니다.


종교에 관련해서 굉장히 민감하게 반응하시는 많은분들..


좋은글입니다 ^^ 다시한번 생각해보자구요


------------------------------------------------


1) 아는 형 동네의 스님과 목사님의 이야기


그 동네는 수도권쪽이긴 하지만 약간 산쪽에 있어 농사를 지으시는 분들이 많이 있습니다.

그 마을 주민들이 밭을 일구어 쓰는 산이 있는데,

제가 말할 바로 그 스님이 그 산의 소유주(정확히는 땅)입니다.

원래 그 스님의 부모님이 그 동네의 유지였는데,

부모님이 돌아가신 후 몇년간 동네를 떠나있다가 돌아올때 스님이 되어 돌아오신거죠.

자신의 땅에 조그마한 사찰을 짓구요.
(XX사의 스님이 아니라 세속스님인가 하는 스님이라고 하는거라더군요.)

몇년간 그 스님이 그 동네는 떠난 후 주인없는 땅에 마을사람들이 밭을 일구어놓은거죠.

스님은 세상사를 초월하셔서(세속에 관심이 없는건가...) 그런건지는 모르겠지만 마을사람들이 밭을 일구어 쓰는데에 대해

그냥 자기땅인것처럼 쓰라고 하시곤 가끔 "나 이 상추 좀 가져갈게" 하시곤 밭농작물을 조금씩 얻어 가곤 했습니다.

그 스님의 어릴적 친구가 그 동네의 목사님였는데

목사님 또한 마을사람들에게 굉장한 신뢰를 얻고 존경받는 분입니다.


어느 날 아는 형이 집에 가다 우연히 두 성직자님들의 대화를 듣게 되었습니다.

목사님 "넌 하루종일 할 일도 없으면서 왜 남의 농작물을 얻어가냐, 직접일해."

스님 "내가 그렇게 안하면 더 많이 가져오니까 그렇게 하는거야."

목사님 "그러니까 니가 땡중소리를 듣는거야. 부처님께 죄송한 마음도 없냐?"

스님 "부처님은 다 이해하셔."

목사님 "너 죽을때 연락해. 내가 너 대신 기도해줄게."

스님 "왜 지옥에 알바할데 있대?"
--------------------------------------------------------------------------------------------------

물론 어릴적 친구라서 그런건 있겠지만...
각 종교를 대표하는 성직자 두 분이 서로를 인정하고 재미나게 사시는 이야기가 너무 보기 좋았습니다.
이외에도 종교가 다름에도 불구하고 말로는 티격태격하면서 서로 종교를 존중해주는 모습을 자주 보여주신다고 합니다.

저만 저 두분이 굉장히 좋은분으로 보이는건 아니겠죠?
저는 종교가 없어서 사실 실제 성직자분들의 모습이 어떤지는 잘 모릅니다.
하지만 저런 일화 하나하나 듣게 되면 종교의 이미지가 굉장히 좋아집니다.

목사님에 대한 설명이 짧은건 그 형은 종교가 없어 자주 모습을 볼 수 있는 스님을 더 많이 알기 때문이니
그런 것에 대한 논란은 자제를 좀 해주세요 ㅜㅜ;




2) 시골 성당 신부님 이야기


어렸을 적 저희 동네 교회 전도하시는 어른들이 항상 하는 말이  '예수님 믿으면 천국가고, 예수님을 믿지 않으면 지옥을 갑니다'

라는 말이었습니다.

호기심이 굉장히 많았던 저는 항상 그런분들에게 묻고 싶은 것이 있었기에 어느날 제가 물었지요.

"그럼 부처님은 죽어서 어디로 갔어요?"

대부분의 어른들은 대답을 못하셨고, 대답을 한 어른들도 유쾌한 설명을 해주시진 못하셨지요.


그리고 여름방학때 시골에 내려가게 되었습니다.

경남 하동이라는 지방인데 저희 시골집 근처엔 보기드물게 성당이 하나 있었습니다.

일요일마다 친구들과 함께 어울리기 위해 교회를 자주갔던 저는

교회가 없는 시골집에서 교회대신 성당에 가게 되었습니다.

그 성당은 신부님 한분 밖에 없었습니다. (제 기억엔 그랬습니다.)

시골이라 사람이 없어서 그런지

교회에서 수십 수백명의 사람앞에 계신 목사님이 아닌

겨우 10명 남짓한 사람 앞에 신부님이 계시니까

굉장히 친근한 느낌이 들어서인지

말씀 중간에 "부처님은 죽어서 어디 갔나요?" 라고 묻게 되었습니다.

신부님은 갑작스런 질문에 잠시 생각을 하시더니

"아마 부처님은 지옥에 가지 않았을까?"

라고 하시더군요.

사실 그때 살짝 실망했습니다. 하지만 이어지는 대답이 아직도 기억에 남는 명언이었습니다.

"그 분은 천국에서 편하게 생활하실 분이 아니라 직접 지옥에서 불쌍한 중생을 구원하실테니까"
-----------------------------------------------------------------------------------------

제가 만약 종교를 믿게 되었다면 성당에 다니지 않았을까 하는 생각을 하게 될정도로
저에게 굉장히 크게 인식된 신부님이었습니다.
어릴땐 그다지 크게 와닿지 않았지만
커가면서 (머리가 커지면서?) 정말 멋지다라는 생각을 하게 되었거든요.

사실 굉장히 어릴적이었고 (초등학교 저학년 2~4학년때쯤의 일이니까요)
저희동네는 나름대로 큰동네였기 때문에 동네교회(한번 예배할때마다 100명은 넘었죠.)에서는
목사님께 그런 질문을 드릴 기회가 없었습니다.
사람들이 많으면 부끄럼을 타는 성격이기도 했구요.
만약 물었더라면 목사님들도 저 신부님에 못지않게 좋은 말씀을 해주셨을꺼라고 생각합니다.




제가 종교에 대해 들은 말 중 가장 공감이 가는 말은
'모든 사람들이 예수님, 부처님 같았으면 교회나 성당, 절을 가지 않아도 천국에 갈 수 있다.
하지만 사람은 그럴수 없기에 그 분들을 믿고 의지한다.' 라는 말입니다.
종교문제에 대해 이게 진리다. 아니다. 는 없다고 생각합니다.
어느 종교를 믿든 결국 선한 사람은 천국에 간다고 생각하니까요.

P.S. 이 글에서 만큼은 종교 관련 다툼은 일어나지 않았으면 좋겠네요.

+ Recent posts