2011년 9월 30일 금요일

Electronic muscle stimulation의 활용

http://www.ehow.com/about_5339682_information-electronic-muscle-stimulation.html

1. 물리치료: 손상된 근육을 자극, 근육기능을 강화함
2. 의료: 혈액순환, 고통완화
3. 광고 등에서 주장된 효과: 근육뭉침완화, 근육에 긴장주어 운동효과 증대
4. 부작용: 화상, 타박상, 피부염증, 통증, 감전 등. 이러한 이유로 FDA가 규제하고 있음.

2011년 2월 27일 일요일

현영의 자개소개

http://www.slideshare.net/phoooo/expecting-to-see-you

http://www.slideshare.net/phoooo/expecting-to-meet-you






2011년 1월 5일 수요일

[WEB] WEB 서비스 3분짜리 개념잡기 - Applet, Servlet, JSP

 

WEB 서비스 3분짜리 개념잡기

 

JAVA 웹 어플리케이션엔 3 종류가 있다.

Applet: 위젯같이 독립적으로 Client에서 실행되는 자바 어플리케이션, Applet은 보통 웹페이지에 껴서 넣거나 실행파일처럼 따로 돌릴수도 있다. 보통 그래픽, GUI등을 요구하는 앱에 사용된다.

Servlet: Applet이 클라이언트에서 수행되는 자바 앱이면 서블릿은 서버에서 실행되는 앱이다. 보통 서버에서 요구하는 기능 = DB 관련 작업, 기타 작업 등을 수행한다. 

JSP: Java로 구성된 웹 페이지로서 서버에서 수행되고 그 결과는 HTML로 클라이언트에 다운되어 보이게 된다. 보통 MVC 모델의 View 등으로 사용되며, 서블릿과 HTTP로 통신한다.

 

PHP는 보통 JSP와 비교되는데 JSP는 HOTSPOT기술등으로 네이티브로 컴파일되어 수행되므로 PHP보다 빠르지만 PHP는 스크립트이기 때문에 컴파일이 필요하지 않는 편의성이 있다. 

 

화면에 뭘 보여주는 일을 하는 View에 해당하는 JSP, 중간에서 로직을 처리하는 Controller에 해당하는 Servlet 그리고 데이터를 공급하는 Model인 DB 로 보통의 WEB 서비스는 구성된다. 이를 Model2 라고 부르기도 하고 MVC 패턴 방식이라고도 부르기도 하고 3-Tier라고 부르기도 한다.... JSP와 Servlet은 일반적으로 HTTP Request 를 통하여 통신을 수행한다. 통신하는 프로토콜은 여러가지를 사용할수 있는데 보통 XML 로 보내고 JSON등으로 받거나 JSON으로 모두 처리한다. JSON은 객체를 스트링 스트림으로 보내기 위한 전송 규약인데 매우 쉽고 간편하고 XML을 사용하는 SOAP등에 비해 가벼워서 종종 사용된다. (구글 맵, 페이스북 등등의 서비스가 JSON을 지원한다.)

 

Servlet은 JSP에서 들어온 요청을 적절히 서버에서 처리하여 결과를 반환하는데 이 과정은 성능을 위해 모두 멀티쓰레드로 병렬적으로 이루어진다. 따라서 서버로 요청이 들어오면 쓰레드가 만들어져 이 안에서 서블릿이 초기화 되고 실행된다. 서블릿 객체는 소스가 재 컴파일 되지 않는한 성능을 위해서 서버에 캐싱되어 있다. 따라서블릿을 한번 실행해두면 초기화를 다시 하지 않아도 된다. 하지만 서버가 꺼지거나 소스가 바뀌면 파괴되었다가 처음부터 다시 수행된다. http://blog.naver.com/dhc9902?Redirect=Log&logNo=40118027312

 

서블릿의 실제 코드와 생명주기에 대한 이해는 아래 글을 참고한다. http://yellowvirus.tistory.com/53

 

Servlet과 DB의 통신은 일반 SQL을 사용하는데 어느 DB를 사용하느냐에 따라 성능이나 다른 목적을 위해 그 DB를 위한 전용 SQL문을 사용할수도 있다. 이러한 이유로 ORACLE등의 엔터프라이즈 DBMS는 SQL표준과 다른 전용 명령어 셋이 있다. 

 

서블릿은 서버 내에 컴파일된 자바 파일로 여러개 존재한다. (이들을 보관하는 Container 엔진을 Catalina 라고 부른다.) 서블릿의 호출은 POST/GET 요청시 들어가는 URL의 패턴에 따라 호출되는데 이의 지정은 서블릿과 같이 있는 web.xml 파일에 정의할수 있다. 이 설정파일의 내용에 따라 서블릿을 실행하는 웹서버인 WAS = 톰캣, 아파치 등은 요청이 들어올때 적절한 서블릿을 호출하여 작업을 처리한다. 

 

서블릿은 여러 Server OS에서 수행 가능하지만, 보통 기본적인 서블릿 서버는 리눅스 + 아파치 + 톰캣 의 조합으로 구성한다. 그리고 서블릿은 J2EE로 만드는데 일반 이클립스가 아닌 J2EE용 이클립스를 깔아서 IDE 환경에서 개발 가능하다. 

 

 


이 글은 스프링노트에서 작성되었습니다.

2010년 12월 12일 일요일

안드로이드에서 쉽게 AVD 경로롤 바꾸는 방법


한글 계정에 안드로이드 SDK를 깔면 AVD를 만들어도 경로가 이상하다면서 실행이 안됩니다.
이는 안드로이드 SDK가 한글 경로를 인식 못해서 생기는 문제인데요
초기 설치시 간단한 방법으로 쉽게 AVD를 추가하실수 있습니다.

일단 기존에 만든 AVD를 전부 삭제하고
컴퓨터의 환경변수에 ANDROID_SDK_HOME를 추가하고 원하는 위치로 다시 지정한 후
AVD를 다시 만들면 새로 설정된 위치로 AVD가 만들어지네요.

제어판 -> 시스템 -> 환경변수 설정 에 시스템 환경변수에 ANDROID_SDK_HOME 을 추가하고
여기에 AVD가 위치할 디렉토리를 지정해 주면 이후 생성되는 AVD는 해당 경로에 나오게 됩니다.

대신 기존의 AVD는 삭제해야 합니다. ;;

2010년 12월 10일 금요일

c# SendInput (Simulating Keyboard & Mouse)

http://homeofcox-cs.blogspot.com/2008/07/c-simulate-mouse-and-keyboard-events.html

.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일 월요일

워드에서 이미지 퀄리티 줄이지 않고 저장하기

워드나 파워포인트에 이미지를 첨부했다가 나중에 열어서 이미지를 확대하면 이미지 퀄리티가 매우 떨어지는 안타까운 일을 발견합니다. 열심히 그린 그림 다시 그릴 수도 없고,... 저도 요즘 논문을 쓰고 있는데, 인쇄할 수준의 이미지를 사용해야 해서 이미지 퀄리티에 민감합니다. 그래서 이미지 크기를 줄여서 저장했다가 다시 키우는 실험을 했습니다. (test.pdf 첨부파일 참조)

 

결론부터 말하면 '이미지 압축' 메뉴의 대상출력에서 '문서 해상도'를 지정하면 안됩니다. (저는 지금까지 '문서 해상도'가 가장 좋은 것으로 생각했네요. -_-;) 반드시 '인쇄'를 선택해주십시오. 간혹 이미지 해상도가 낮아서 '인쇄'가 선택 불가한 경우가 있습니다. 그러면 그 다음 메뉴인 '화면'이나 '전자 메일'을 선택해주시면 됩니다.

 

이런 지정이 귀찮으신 분들은 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년 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 키워드를 이용한 루프-데이터 반환 최적화

.NET 2.0 부터 있던 키워드이나, 사실상 잘 이용 안되고 있었던 키워드가 있었으니 바로 yield 이다.
yield는 원래 Ruby 에 있던 개념이었는데 제한적으로 C#에서 언어용으로 차용하게 되었다.
하지만 MSIL 수준에서의 지원은 아니고  컴파일시 C# 컴파일러가 자동으로 Code를 생성해준다.
 
 
yield는 return, break 과 같이 사용하며,  yield를 쓰면 루프에서 원하는 조건에 맞는 데이터들의 리스트를 IEnumerable 형태로 얻어올수 있다.
그러니까, 만일 루프를 돌면서 어떤 목록에서 특정 아이템들을 뽑아 따로 리스트를 만들고 싶다면 루프 이전에 컬렉션을 하나 만들고 이 컬렉션에 값을 넣는 코드를 삽입해야 한다.
하지만 yield는 이를 단 한줄로 해결해 준다.

[code csharp]
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);
               }
        }
}
[/code]


 Yield의 구현은 다음 아티클을 참조 : 내부적으로 루프 코드를 State 머신 형태로 변경하여 데이터를 뽑아낸다.
 
Yield는 동일한 기능을 구현하는 코드보다 성능이 더 좋은편이다.
 
 
 
이 글은 스프링노트에서 작성되었습니다.

윈7폰에서 SQLLite쓰기

모바일에서 자주 사용했었던 SQLLite가 윈7폰에는 빠져 있지요
안드로이드는 내부 DB가 있는데 윈7폰은 빠져서 여기에 불만인 사람들이 많습니다.
MS에서는 자사의 클라우드 서비스를 사용하라고 이야기 합니다만 개발자들이 꼭 시키는대로 따르지는 않죠.

그래서 SQLLite 소스를 C#으로 완전 포팅하여 IsolatedStorage를 사용할수 있게 한게 나왔습니다. (혹 뒷북인가요?;;)
프로젝트에 DLL을 추가하고 약간 잡다한 설정하나 해주면 끝납니다. 단 주의할것은

1) 에뮬레이터 재부팅 하면 DB가 날아갑니다. 에뮬에서는 IsolatedStorage를 리부팅 할때마다 날려버리는듯..
2) IsolatedStorage가 일반 파일 IO보다 매우 느리기 때문에 성능을 기대하긴 어렵습니다.

간단한 DB 트랜잭션이 꼭 필요하다면 사용할만 합니다. 다운로드는 아래에...

WP7 Sqlite

2010년 10월 22일 금요일

윈도우즈 라이브 라이터 테스트

윈도우즈 라이브 라이터로 글을 매우 쉽게 쓸수 있다!

2010년 10월 12일 화요일

어제출시된 따끈한 윈7폰 테스트 (삼성,LG)

출시된 폰들 비됴입니다.

보신분은 패스

 

안보신 분은 함 대충 느껴보세요

손이랑 크기를 비교해보시면 대략 감이 오실것 같습니다.

 

급하신 분들위한 종합버전 ->

 

 

 

 

 

 

 

 

 


 

 

1) 슬쩍 버벅? 대는 옴니아 7폰...

 

 

2) 옵티머스 7

 

3) 포커스 .. 요건 좀 성실히 테스트 해줬네요

 

2010년 10월 9일 토요일

펌글 : 대학 자퇴하고 안정된 직장도 그만둔다는 제자 이야기


 

http://innovative.kr/248

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:

인생은 서핑과 같다.

파도를 무서워하면 물만 먹을 뿐이고

파도를 타고 넘어야 즐거움이 밀려온다.

 

외로움을 타고 넘어 잘 극복하기 바랍니다.

 

 

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

 

인생의 위기는 파도처럼 끊임없이 밀려옵니다.

두려워하고 피하면 물만 먹고 쓸려갈 뿐이고

겸허히 받아들이고 타고 넘으면 파도를 정복하는

기쁨과 즐거움이 밀려 오게 됩니다.

 

 

저는 오늘도 파도에 얻어맞고

파도에 쓸리다가 결국 타 넘기도 합니다.

 

언제쯤 좀 잠잠해질수 있을까요;;

 

잠시라도 유유히 떠있고 싶네요