QT 디자이너와 QT크레이아터 디자이너 연동 문제

QT SDK는 MinGW로 빌드되어서 배포하고있고

QT Creator는 MSVC 2008로 빌드되어 배포하고있어

위젯을 만들어 디자이너에 추가할때 Creator에서 제대로 불러올수없음.


http://www.qtforum.org/article/34938/compile-qtcreator-with-mingw.html

참고하여 QT Creator를 MinGW로 빌드하면 해결.

by 프레야 | 2011/05/17 11:59 | 트랙백 | 덧글(0)

64bit windows programming

http://serious-code.net/moin.cgi/64bitProgramming

나중에 필요할때 참고하자.

by 프레야 | 2010/07/01 16:50 | 트랙백 | 덧글(1)

Directshow vmr9 renderless mode 샘플 소스 multivmr 소스가 없다!

최신 DirectX 9.0 SDK 나

Windows SDK를 받아봐도 multivmr 샘플소스를 찾을수가없다.

vmr9 multi renderless mode를 참조하고싶은데

샘플소스도없고 다른사람이 공개한 소스도없으니 앞이 깜깜!

Directx9 (Summer 2004)버젼을 다운받고

샘플소스만 설치하자. 이곳에 포함되어있다.

컴파일할때 에러몇개나는데 간단히 잡을수있는것들이다.

by 프레야 | 2010/05/11 19:50 | DirectShow | 트랙백 | 덧글(0)

윈도우 버젼 가져올때.

구글링후 windows 7, windows server 2008 버젼확인하는 코드 추가
//-----------------
unit
 GetWinVersionInfo;
interface

uses
  Windows, Registry, SysUtils;

type
  _OSVERSIONINFOEX = record
    dwOSVersionInfoSize : DWORD;
    dwMajorVersion      : DWORD;
    dwMinorVersion      : DWORD;
    dwBuildNumber       : DWORD;
    dwPlatformId        : DWORD;
    szCSDVersion        : array[0..127] of AnsiChar;
    wServicePackMajor   : WORD;
    wServicePackMinor   : WORD;
    wSuiteMask          : WORD;
    wProductType        : BYTE;
    wReserved           : BYTE;
  end;
  TOSVERSIONINFOEX = _OSVERSIONINFOEX;
 
  function GetVersionExA(var lpVersionInformation: TOSVersionInfoEX): BOOL;
        stdcall; external kernel32;
 
const
  VER_NT_WORKSTATION    :Integer = 1;
  VER_SUITE_ENTERPRISE  :Integer = 2;
  VER_NT_SERVER         :Integer = 3;
  VER_SUITE_DATACENTER  :Integer = 128;
  VER_SUITE_PERSONAL    :Integer = 512;
 
const
  PRODUCT_BUSINESS                      = $00000006; {Business Edition}
  PRODUCT_BUSINESS_N                    = $00000010; {Business Edition}
  PRODUCT_CLUSTER_SERVER                = $00000012; {Cluster Server Edition}
  PRODUCT_DATACENTER_SERVER             = $00000008; {Server Datacenter Edition
(full installation)}
  PRODUCT_DATACENTER_SERVER_CORE        = $0000000C; {Server Datacenter Edition
(core installation)}
  PRODUCT_ENTERPRISE                    = $00000004; {Enterprise Edition}
  PRODUCT_ENTERPRISE_N                  = $0000001B; {Enterprise Edition}
  PRODUCT_ENTERPRISE_SERVER             = $0000000A; {Server Enterprise Edition
(full installation)}
  PRODUCT_ENTERPRISE_SERVER_CORE        = $0000000E; {Server Enterprise Edition
(core installation)}
  PRODUCT_ENTERPRISE_SERVER_IA64        = $0000000F; {Server Enterprise Edition
for Itanium-based Systems}
  PRODUCT_HOME_BASIC                    = $00000002; {Home Basic Edition}
  PRODUCT_HOME_BASIC_N                  = $00000005; {Home Basic Edition}
  PRODUCT_HOME_PREMIUM                  = $00000003; {Home Premium Edition}
  PRODUCT_HOME_PREMIUM_N                = $0000001A; {Home Premium Edition}
  PRODUCT_HOME_SERVER                   = $00000013; {Home Server Edition}
  PRODUCT_SERVER_FOR_SMALLBUSINESS      = $00000018; {Server for Small Business
Edition}
  PRODUCT_SMALLBUSINESS_SERVER          = $00000009; {Small Business Server}
  PRODUCT_SMALLBUSINESS_SERVER_PREMIUM  = $00000019; {Small Business Server
Premium Edition}
  PRODUCT_STANDARD_SERVER               = $00000007; {Server Standard Edition
(full installation)}
  PRODUCT_STANDARD_SERVER_CORE          = $0000000D; {Server Standard Edition
(core installation)}
  PRODUCT_STARTER                       = $0000000B; {Starter Edition}
  PRODUCT_STORAGE_ENTERPRISE_SERVER     = $00000017; {Storage Server Enterprise
Edition}
  PRODUCT_STORAGE_EXPRESS_SERVER        = $00000014; {Storage Server Express
Edition}
  PRODUCT_STORAGE_STANDARD_SERVER       = $00000015; {Storage Server Standard
Edition}
  PRODUCT_STORAGE_WORKGROUP_SERVER      = $00000016; {Storage Server Workgroup
Edition}
  PRODUCT_UNDEFINED                     = $00000000; {An unknown product}
  PRODUCT_ULTIMATE                      = $00000001; {Ultimate Edition}
  PRODUCT_ULTIMATE_N                    = $0000001C; {Ultimate Edition}
  PRODUCT_WEB_SERVER                    = $00000011; {Web Server Edition}
  PRODUCT_UNLICENSED                    = $ABCDABCD; {Unlicensed product}


  function GetOSInfo: string;
var
{$EXTERNALSYM GetProductInfo}
  GetProductInfo: function (dwOSMajorVersion, dwOSMinorVersion,
                            dwSpMajorVersion, dwSpMinorVersion: DWORD;
                            var pdwReturnedProductType: DWORD): BOOL stdcall = NIL;

implementation

function GetOSInfo: string;
var
  NTBres, BRes: Boolean;
  OSVI: TOSVERSIONINFO;
  OSVI_NT: TOSVERSIONINFOEX;
  tmpStr: string;
  dwOSMajorVersion, dwOSMinorVersion,
  dwSpMajorVersion, dwSpMinorVersion,
  pdwReturnedProductType : DWORD;
begin
  Result := 'Error';
  NTBRes := FALSE;
  try
    OSVI_NT.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFOEX);
    NTBRes := GetVersionExA(OSVI_NT);
    OSVI.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
    BRes := GetVersionEx(OSVI);
  except
    OSVI.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
    BRes := GetVersionEx(OSVI);
  end;
  if (not BRes) and (not NTBres) then
    Exit;
  Move( OSVI, OSVI_NT, SizeOf(TOSVersionInfo) );
 
  case OSVI_NT.dwPlatformId of
     VER_PLATFORM_WIN32_NT:
       begin
         if OSVI_NT.dwMajorVersion <= 4 then
           Result := 'Windows NT ';
         if (OSVI_NT.dwMajorVersion = 5) and (OSVI_NT.dwMinorVersion = 0) then
           Result := 'Windows 2000 ';
         if  (OSVI_NT.dwMajorVersion = 5) and (OSVI_NT.dwMinorVersion = 1) then
           Result := 'Windows XP ';
         if (OSVI_NT.dwMajorVersion = 6)  then
         begin
           if (OSVI_NT.dwMinorVersion = 0) then
           begin
            if OSVI_NT.wProductType = VER_NT_WORKSTATION then
              Result := 'Windows Vista'
            else
              Result := 'Windows Server 2008';
           end
           else if OSVI_NT.dwMinorVersion = 1 then
           begin
            if OSVI_NT.wProductType = VER_NT_WORKSTATION then
              Result := 'Windows 7'
            else
              Result := 'Windows Server 2008 R2'
           end
           else
              Result := 'After Windows 7 Version. Not Supply this version';

           if Assigned(GetProductInfo) then
           begin
             GetProductInfo( dwOSMajorVersion, dwOSMinorVersion,
                             dwSpMajorVersion, dwSpMinorVersion,
                             pdwReturnedProductType );
             case pdwReturnedProductType of
               PRODUCT_BUSINESS:
                 tmpStr := 'Business Edition';
               PRODUCT_BUSINESS_N:
                 tmpStr := 'Business Edition';
               PRODUCT_CLUSTER_SERVER:
                 tmpStr := 'Cluster Server Edition';
               PRODUCT_DATACENTER_SERVER:
                 tmpStr := 'Server Datacenter Edition (full installation)';
               PRODUCT_DATACENTER_SERVER_CORE:
                 tmpStr := 'Server Datacenter Edition (core installation)';
               PRODUCT_ENTERPRISE:
                 tmpStr := 'Enterprise Edition';
               PRODUCT_ENTERPRISE_N:
                 tmpStr := 'Enterprise Edition';
               PRODUCT_ENTERPRISE_SERVER:
                 tmpStr := 'Server Enterprise Edition (full installation)';
               PRODUCT_ENTERPRISE_SERVER_CORE:
                 tmpStr := 'Server Enterprise Edition (core installation)';
               PRODUCT_ENTERPRISE_SERVER_IA64:
                 tmpStr := 'Server Enterprise Edition for Itanium-based Systems';
               PRODUCT_HOME_BASIC:
                 tmpStr := 'Home Basic Edition';
               PRODUCT_HOME_BASIC_N:
                 tmpStr := 'Home Basic Edition';
               PRODUCT_HOME_PREMIUM:
                 tmpStr := 'Home Premium Edition';
               PRODUCT_HOME_PREMIUM_N:
                 tmpStr := 'Home Premium Edition';
               PRODUCT_HOME_SERVER:
                 tmpStr := 'Home Server Edition';
               PRODUCT_SERVER_FOR_SMALLBUSINESS:
                 tmpStr := 'Server for Small Business Edition';
               PRODUCT_SMALLBUSINESS_SERVER:
                 tmpStr := 'Small Business Server';
               PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
                 tmpStr := 'Small Business Server Premium Edition';
               PRODUCT_STANDARD_SERVER:
                 tmpStr := 'Server Standard Edition (full installation)';
               PRODUCT_STANDARD_SERVER_CORE:
                 tmpStr := 'Server Standard Edition (core installation)';
               PRODUCT_STARTER:
                 tmpStr := 'Starter Edition';
               PRODUCT_STORAGE_ENTERPRISE_SERVER:
                 tmpStr := 'Storage Server Enterprise Edition';
               PRODUCT_STORAGE_EXPRESS_SERVER:
                 tmpStr := 'Storage Server Express Edition';
               PRODUCT_STORAGE_STANDARD_SERVER:
                 tmpStr := 'Storage Server Standard Edition';
               PRODUCT_STORAGE_WORKGROUP_SERVER:
                 tmpStr := 'Storage Server Workgroup Edition';
               PRODUCT_UNDEFINED:
                 tmpStr := 'An unknown product';
               PRODUCT_ULTIMATE:
                 tmpStr := 'Ultimate Edition';
               PRODUCT_ULTIMATE_N:
                 tmpStr := 'Ultimate Edition';
               PRODUCT_WEB_SERVER:
                 tmpStr := 'Web Server Edition';
               PRODUCT_UNLICENSED:
                 tmpStr := 'Unlicensed product'
             else
               tmpStr := '';
             end;{ pdwReturnedProductType }
             Result := Result + tmpStr;
             NTBRes := FALSE;
           end;{ GetProductInfo<>NIL }
         end;{ Vista }

         if NTBres then
         begin
           if OSVI_NT.wProductType = VER_NT_WORKSTATION then
           begin
             if OSVI_NT.wProductType = VER_NT_WORKSTATION then
             begin
               case OSVI_NT.wSuiteMask of
                 512: Result := Result + 'Personal';
                 768: Result := Result + 'Home Premium';
               else
                 Result := Result + 'Professional';
               end;
             end
             else if OSVI_NT.wProductType = VER_NT_SERVER then
             begin
               if OSVI_NT.wSuiteMask = VER_SUITE_DATACENTER then
                 Result := Result + 'DataCenter Server'
               else if OSVI_NT.wSuiteMask = VER_SUITE_ENTERPRISE then
                 Result :=  Result + 'Advanced Server'
               else
                 Result := Result + 'Server';
             end;
           end{ wProductType=VER_NT_WORKSTATION }
           else
           begin
             with TRegistry.Create do
               try
                 RootKey := HKEY_LOCAL_MACHINE;
                 if OpenKeyReadOnly('SYSTEM\CurrentControlSet\Control\ProductOptions') then
                   try
                     tmpStr := UpperCase(ReadString('ProductType'));
                     if tmpStr = 'WINNT' then
                       Result := Result + 'Workstation';
                     if tmpStr = 'SERVERNT' then
                       Result := Result + 'Server';
                   finally
                     CloseKey;
                   end;
               finally
                 Free;
               end;
             end;{ wProductType<>VER_NT_WORKSTATION }
           end;{ NTBRes }
         end;{ VER_PLATFORM_WIN32_NT }
     VER_PLATFORM_WIN32_WINDOWS:
       begin
         if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 0) then
         begin
           Result := 'Windows 95 ';
           if OSVI.szCSDVersion[1] = 'C' then
             Result := Result + 'OSR2';
         end;
         if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 10) then
         begin
           Result := 'Windows 98 ';
           if OSVI.szCSDVersion[1] = 'A' then
             Result := Result + 'SE';
         end;
         if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 90) then
           Result := 'Windows Me';
       end;{ VER_PLATFORM_WIN32_WINDOWS }
     VER_PLATFORM_WIN32s:
       Result := 'Microsoft Win32s';
  else
    Result := 'Unknown';
  end;{ OSVI_NT.dwPlatformId }
end;{ GetOSInfo }

initialization
   @GetProductInfo := GetProcAddress(GetModuleHandle('KERNEL32.DLL'),
                                     'GetProductInfo');

end.

by 프레야 | 2010/05/11 19:42 | Delphi | 트랙백 | 덧글(0)

델파이 몇개 간단한 팁들

사용자 이름 얻기
nSize :=  MAX_COMPUTERNAME_LENGTH + 1;

SetLength(szBuffer,NSize);

GetUserName(Pchar(szBuffer),nSize);

컴퓨터 이름 얻기
GetComputerName(Pchar(szBuffer),nSize);

2009이후로 사용못해봤으나 2007까지는

Pchar에서 string은 형변환이 자유롭다.

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

프로그램 추가삭제에서 뜨는 목록 보기
const
  UNINST_PATH = 'Software\Microsoft\Windows\CurrentVersion\Uninstall';
var
  Reg : TRegistry;
  SubKey: TSTringList;
  I : Integer;
  sDisplayName : String;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly(UNINST_PATH) then
    begin
      SubKey := TStringList.Create;
      try
        Reg.GetKeyNames(SubKey);
        Reg.CloseKey;
        for i := 0 to subKey.Count - 1 do
        begin
          if Reg.OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKey[i]])) then
          begin
            try
              sDisplayName := Reg.ReadString('DisplayName');
              if  ((sDisplayName) <> '') and
                  (Pos('업데이트',sDisplayName) = 0) and
                  (Pos('HOTFIX',UpperCase(sDisplayName)) = 0) and
                  (Pos('핫픽스',sDisplayName) = 0) then
              begin
                    //-------TODO--------
                    //---------------------
              end;
            finally
              Reg.CloseKey;
            end;
          end;
        end;
      finally
        SubKey.Free;
      end;
    end;
  finally
    Reg.CloseKey;
    reg.Free;
  end;
end;
//---------아웃룩으로 이메일 보내기---------------
    try
      OutlookApp := GetActiveOleObject('Outlook.Application');
    except
      OutlookApp := CreateOleObject('Outlook.Application');
    end;

    try
      MailItem := OutlookApp.CreateItem(olMailItem);
      MailItem.Recipients.Add(메일주소);

      MailItem.Subject := edt_User.Text + '  Program List';

      MailItem.Body := '내용'
      MailItem.Attachments.Add(경로);
      MailItem.Send;
      //MailItem.Display(True);

    finally
      myAttachments := VarNull;
      OutlookApp := VarNull;
    end;


//------------------------------------------------

by 프레야 | 2010/05/11 19:41 | Delphi | 트랙백 | 덧글(0)

Delphi 2007에서 firebird를 사용하자.

1. 일단 firebird를 받자. 
    2.5버젼을 다운받았음.

2. FlameRobin GUI 프로그램을 다운받자.

3. localhost에 마우스 우클릭하고 create new data base를 하면 DB가 생성이된다.
   이곳에 테이블생성하고 펑션생성하고 프로시져 생성하면된다.
   Oracle만 사용해봐서 varchar2때문에 에러나는걸 찾질못했었다.

4. 테이블을 생성하고 ER DIAGRAM을 그리고싶다.

여기서 많이 검색해봤는데 기업용 프리라이센스 위주로 검색을하려다보니

쓸수있는것이 얼마없더라.

그래서 선택한 DBDesignerFork  Firebird를 지원한다해서 설치했는데 db connect에서

파이어버드는 눈씻고 찾아봐도 찾을수가없더라.

결국 firebird odbc driver 2.0을 설치하고

제어판-관리-odbc 관리에서 추가를해주고

Firerbird ODBC Setup 이 뜬다. 아 다시 난감한 상황.

Data SOurce Name 에는 보여질 이름을 입력한다.

database에는 생성한 파일 주소를 입력한다.

database account에는 아이디 password에는 pw를 입력한다. 이상태로 ok하면 끝.

이제 DBDesignerFork에서 ODBC를 이용해 파이어버드DB에 접속할수있다.

이제 ER-DIAGRAM까지 그렸다.

이제 코딩을 클라이언트를 만들어야하는데 주로 사용하는 델파이를 켯는데..

이걸 어떻게 해야하나. ODBC로 연결할수도있고 INTERBASE를 선택할수도있다.

어디선가 ODBC로 연결하면 성능저하가있다는 말을보고 INTERBASE 컴포넌트를 이용한 접속방법을 선택했다.

TIBDatabase 컴포넌트를 폼에디트 창에 올려놓고

소스코드에 접속해줘야할 부분에서


IBDatabase1.Params.Clear;
IBDatabase1.SQLDialect := 3;
IBDatabase1.Params.Add('user_name=sysdba');
IBDatabase1.Params.Add('PASSWORD=PW);
IBDatabase1.DatabaseName := '경로';
IBDatabase1.LoginPrompt := false;
IBDatabase1.Connected := True;


를 해주면 접속 성공!

by 프레야 | 2010/05/11 19:34 | Delphi | 트랙백 | 덧글(0)

vs2005 에서 필터 제작시 \refclock.h(80) : error C2146: 구문 오류 : ')'이(가) 'pName' 식별자 앞에 없습니다.

refclock.h(80) : error C2146  에러.

refclock.h

에 #inlcude <Schedule.h> 를

#include "Scehdule.h" 로 변경한다.

by 프레야 | 2010/04/19 16:30 | DirectShow | 트랙백 | 덧글(0)

qedit.h 포함시 dxtrans.h 에러

Remove anything to do with "dxtrans.h" and "IDXEffect" .

Say, for file "qedit.h"

//#include "dxtrans.h" -- Line 498

// IDxtCompositor //: public IDXEffect -- Line 837
// IDxtAlphaSetter //: public IDXEffect -- Line 1151
// IDxtJpeg //: public IDXEffect -- Line 1345
// IDxtKey //: public IDXEffect -- Line 1735




-msdn 포럼에서 퍼옴.


확인결과 잘돌아감 DX9 2010년 3월버전에서 잘돌아감

by 프레야 | 2010/04/15 11:22 | 트랙백 | 덧글(0)

델파이 컴포넌트 만들기 강좌.

   가. 기초
1.  콤포넌트 개발 기초
http://www.acrosoft.pe.kr/lecture/component1.htm
2.  프로퍼티
http://www.acrosoft.pe.kr/lecture/component1-3.htm
3. 프로퍼티 카테고리
http://www.acrosoft.pe.kr/lecture/component1-4.htm
4. 메소드와 이벤트
http://www.acrosoft.pe.kr/lecture/component1-5.htm
5. VCL
http://www.acrosoft.pe.kr/lecture/component1-7.htm
6. 윈도우 메시지 처리
http://www.acrosoft.pe.kr/lecture/component1-8.htm

   나. 컴포넌트 제작
1. 컴포넌트 개발 실전
http://www.acrosoft.pe.kr/lecture/component2-1.htm
2. 3차원 레이블 컴포넌트 제작
http://www.acrosoft.pe.kr/lecture/component2-3.htm
3. 데이터 연동 콤포넌트(Data-Aware Component) 개발
http://www.acrosoft.pe.kr/lecture/component2-5.htm
4. 패키지
http://www.acrosoft.pe.kr/lecture/component2-6.htm
   다. 컴포넌트 제작 고급
1. 콤포넌트 개발의 고급 기술
http://www.acrosoft.pe.kr/lecture/component3-1.htm
2. 프로퍼티 에디터
http://www.acrosoft.pe.kr/lecture/component3-3.htm
3. 콤포넌트 에디터(Component Editor)
http://www.acrosoft.pe.kr/lecture/component3-4.htm
4. 도움말 만들기
http://www.acrosoft.pe.kr/lecture/component3-5.htm

by 프레야 | 2008/10/05 00:37 | Delphi | 트랙백 | 덧글(1)

[08.07.29] 넷째날. 어느덧 자전거 여행 마지막날

아침에 눈을 떠서 시간을 보니 5시 30분.

피로가 쌓였는지 4시 30분에 알람을 맞추어 일정을 보려했는데 늦잠을 자고 말았다.

그리고 어제 오버페이스를 해서 그런지 허벅지에 알이 배기고 무지하게 땡긴다 ToT

일단 짐을 바리바리 싸들고 성산 일출봉으로 갔다.

성산 일출봉에 도착하니 날이 오늘도 구름이 껴서 날이 어둑어둑하다.  내려오는 사람들이 많았는데 과연 일출을

보았을까? 못보았을까??  올라가 보고싶긴한데 허벅지가 너무 땡겨서 올라갈 엄두가 나지않는다.

사실 높이를 보니 올라가보고 싶지가 않다 ㅡㅡ;   다음에 체력좀 보강해서 다시한번 여행할때 올라가봐야겠다

옆에 편의점에서 감각김밥과 레몬음료를 마시고 자전거 페달을 밟는다.

우도로가는 유람선 승선장에 도착했다. 새벽이라 그런지 아직 하는것같지는 않고 한바퀴 둘러보았다.

피로가 쌓이긴 쌓였나보다. 난생 처음 자전거를 타고 이렇게 여행하니 엉덩이와 허벅지 사이도 눌렸는지 너무아프다.

그래도 타다보면 무감각이되어서 다시 탈만 해진다^^

오늘도 어제와 마찬가지로 쭈욱 해변도로로 달리고있다. 달리는 동안 바다가 계속 옆에있다.

어제만 해도 바다의 짠내가 약간 이상하게 느껴졌으나 몸이 익숙해졌는지 그마저도 나지 않았다.

바다를 보면 미역인가 다시마 같이 생긴것들이 있는데 저걸 겉어서 우리의 식탁으로 올라오는걸까??

다른곳과 다르게 이곳을 다니면서 제주도의 옛 집 환경을 조금이나마 느낄수가있었다.  담장을 모두 돌로 쌓아서

만들어 놓았다. 더 신기한건 사진에는 없지만 밭들도 모두 돌을 쌓아서 테두리를 만들었다는점. 저많은 돌로

넘어지지않고 곧게 쌓아논것을 보면 신기하다 @.@

세화리에와서 앉아서 음료수를 마시면서 쉬었다. 오늘도 다행이 구름이 껴서 라이딩하기에 선선한 날씨다.

하지만 이날 방심을 하는 바람에 얼굴이 엄청나게 탔다. ㅡㅜ. 바닷바람과 구름을 뚫고 나오는 자외선 떄문일까..

배가 아침에 고기잡으러 떠나는줄 알았으나 대화내용을 듣고있다보니 고기잡아온것을 경매하기 시작한다.

티비로 보던걸 직접 보니 신기하기만 하다 ㅎ.


얼굴이 안보이는 소심한 셀카 한번 찍어본다~  다행이도 오늘 타는곳은 오르막도 그리없고 내리막도 별로없는

평지가 대부분이다. 그래서 체력이 쪽쪽빨리지 않고 탈만하다.^^

사실 만장굴에 들릴려고 마음먹었었는데 역시 온길을 다시 되돌아가야해서 겁이 났다.. 몸도 지친지 오래이고 오늘 비행기를

타고 제주를 떠나기에 그냥 지나쳤다.  나중에 제주공항에서 만장굴 사진을 보고 엄청 후회한다.. 아.. 그곳을 왜 안갔을까 ㅡㅜ

생각해보니 제주도와서 동굴을 한번도 관광하지 못했다. 저 멀리 풍력발전시범단지가 눈에 보인다. 벌써 반정도 왔다는 생각에

실제 저곳까지 갈때까지 상당히 많이 쉬었다가 간다.

좀더 가까이가서 한컷^^
지금 까지 온길을 배경으로 자전거를 놓고 사진을 찍어본다^^ 사실 자전거 펑크가 날까봐 펑크 패치 도구와

예비용 튜브 2개까지 챙겨왔는데 아직까지 펑크 한번없이 잘 달려주기만한다. 아무 말성 안부리고 지금까지

잘 달려주는 자전거가 고맙다.

멀리서 보이던  풍력발전 시범단지가 눈앞에 보인다^^ 제주도가 바람이 많이 불긴 많이부나보다.

팽글팽글 잘돌아가는 풍차들.


지나가면서 찍어본다. 날씨가 좋았다면 상당히 멋진 사진이 되었을텐데 참 아쉽다.

편하게 라이딩을 했으니 멋진 사진은 포기를 해야하는건가 ㅡㅜ.

어떤것 하나를 얻으면 다른것 하나는 포기해야된다는걸 다시 한번 느낀다.

다시 자전거를 타기 시작해서 도착한 김념 해수욕장이다. 사람도 적당히 있고 해수욕하기 좋은곳같다.

약간 에메랄드 빛을 띄는게 제주도의 해수욕장은 참 좋다는걸 느낀다.


제주도에서만 맛볼수 있다는 아이스크림이다. 한라설인가를 이용해서 만들었다는것같은데 정확히 기억은 안난다.

맛은 백년초맛.  실제 맛은 요구르트 아이스크림 비슷한 맛이다.  땀을 많이 흘려서 그런지

남기지도않고 맛있게 다 먹었다.
아~ 투명한 바닷물~ 제주와서 투명한 바닷물을 너무 많이봐서 나중에

서해안이나 그런곳에 놀러가면 바닷물을 보면 실망할것같다. 이제 슬슬 다음 목적지를 향해서 다시 이동을 했다.


떠나면서 아쉬어서 사진 한장 떠 찍어보았다. 
다음은 협재해수욕장, 중문해수욕장과 함께 더불어 제일 유명하다는 함덕해수욕장으로 가는길. 이곳을 가다가

대단하신 부부 라이더를 본다. 남편되시는 분은 뒤에 유모차를 자전거에 달고 아이가 타고있어요 라는 글을 써논뒤

부인분과 함께 라이딩을 하고 계신다. 워낙 바삐가셔서 말은 못걸어보고 자전거 타면서 위험하게 찍어본 사진.

어린 아이를 대리고 가족이 제주도 한바퀴를 도는 모습을 보면서 저분들의 마음을 생각해보니 뭔가 표현하기 힘든것들이

느껴진다.  길을 가다가 보니 어제 보았던 까페 회원 여성분 중에 한명을 만난다.

오늘 하루종일 말한마디 못해봐서(물건살때 빼고 ㅡㅜ) 급반가움에 자전거를 세우고 이런저런 대화를 나누었다.

어제 우도까지 가서 우도에서 숙박하셨다고 한다. 이번에 와서 체력문제도있고해서 못보고 가는곳도 상당히 많은것같다 ㅡㅜ

그분과 함께 함덕해수욕장 까지 같이가다가 여성분과 어제 같은 숙박에서 잔분들로 보이는 남자분 2분도 만나게 되어 같이

함덕 해수욕장 까지 간다. 5박 6일 일정으로 왔고 친구와 여행중이라고 한다.

같이 함덕해수욕장에 도착했다. 도착하면서 해수욕장 풍경을 구경하였다. 와 멋있다. 협재는 밤에 도착하고 아침에 출발하여

제대로 볼수없었지만 이곳은 날씨가 안좋은 오늘임에도 불구하고 상당히 멋있었다. 꿈꾸는 에메랄드빛 바다에 투명한

바다색깔.. 와와..

투명한 바다색을 표현해보려고 세로로 사진도 찍어보고^^


이 바닷물에 발한번 못담궈 보고가면 후회할것같아서 역시 신발만 벋고 살짝 들어가본다!!

ㅋ 시원한 이느낌.



같이 라이딩하고 오신 여성분 1명, 그리고 남자분 2명과 이걸 같이 타보았다. 카우(?)인가 뭔가 라고하는데

우리나라에서 이것을 탈수있는곳은 이곳밖에 없다고 하신다.  약간의 설명을 듣고나서 타는데.

레프팅을 좋아하는데 레프팅은 물살에 따라 혼자 가기도하지만 이것은 순전히 자기힘으로 가야한다.

첨에는 재밌었는데 체력이 많이 떨어져있는 상태라서 그런지 20분정도 타다가 반납하고 샤워한다.

샤워 하고 쉬고있으니 주인 아저씨께서 수박먹으라고 수박을 주신다. 우와우와. 감사하다는 말을하고

두조각을 먹고. 여성분 1명과 남자분 1명은 해수욕하러 가고 남은 한분에게 저는 오늘 비행기를 타야해서 먼저 출발해본다고

말하고 남은길 수고하시라는 이야기와 함께 먼저 출발을 했다.

계속 라이딩하다보면 신촌리 입구가 나오는데 그곳에서 왼쪽으로가면 오르막이 심하다는 말을 아까 아저씨분께들어서

오른쪽으로 해안도로를 타고 갔다(검문소가 있다) 오른쪽으로 가니 오르막도 없고 별 무리 없이 마지막 해수욕장인

삼양 해수욕장에 도착을 했다. 이곳에서 누워서 10분정도 쉬고 물은 마시면서 사람들 해수욕하는것을 구경했다.

삼양 해수욕장을 떠나서 용두암까지 오는데 시내에 입성하게된다. 시내에서 길을 정말 많이 해메고(원래 좀 길치라서;;)

드디어 다시 용두암에 도착을했다. 우와.. 우와.. 드디어 완주!!

체력의 한계도 군대 이후로 오랫만에 맛보고 여러가지 추억과 볼거리들도 함께한 3박 4일의 라이딩이 끝나는 시점이다.

성취감이 느껴지고 괜히 뿌듯해진다^^ 괜히 웃음이 히죽히죽 나온다. 실성한것도 아닌데 ㅎㅎ.

다시 바라본 용두암. 잠깐 용두암을 구경하고 용두암 하이킹으로 향하였다.  김기사님하고 같이 일하시는분이신지 처음

출발할때는 못보았던 분이 손수 자전거까지 포장해주셨다. 너무 감사하다^^ 몸이 지쳐 포장하기에도 막막했었는데..

그리고 김기사님이 포장한 자전거를 차에 실고 공항까지 태워다 주셨다.. 아 이번 여행에 여러모로 정말 도움을 많이 주셨다.

근처에 찜질방추천을 해달라하니 해수랜드 찜질방을 추천해주셨다. 용두암 하이킹에서 왔다고 하면 천원 할인 해준다고

하셨다. 비행기 출발 시간까지 약 4시간 30분정도 남았다.  비행기 표를 받고 자전거를 화물로 붙이고 다시 용두암 해수랜드로

가서 지친몸을 샤워를 하고 찜질방에 가서 편하게 쉬면서 비행기 출발시간이 될때까지 시간을 보냈다.



완주 기념으로 셀카도 찍고^^ 출발한 용두암 하이킹에서 찍어야했는데 깜빡잊고 못찍어서 아쉽지만 찜질방에서.

얼굴이 정말 많이 탔다. 나중에 대전에 돌아가서 사람들이 왜이리 깜해졌냐고 놀란다.

이게 제주도 하이킹 완주의 훈장인데 말이다. ㅎㅎ


비행기 출발시간이 다되어서 다시 공항으로 이동..

마지막으로 제주시 사진을 찍으니 왠지 모르게 너무 아쉽다. 3박 4일의 일정이 너무 짧고 아쉽게만 느껴진다.

그리고 짧은 시간에 너무 많은 추억을 만들어가게한 제주도. 힘들었지만 보람있었고 나중에 꼭 다시 오겠다는 다짐을

하고..


비행기 타는 곳까지 가는 버스를 타고.


비행기에 탑승하며 제주를 떠났다.



여행에 많은 도움을 주신 용두암 하이킹 김기사님과  일정표를 만들어 까페에 공개 해주신 별이셋님에게 감사의 인사를 드리고

여행기를 마무리합니다.

by 프레야 | 2008/08/01 18:12 | 트랙백 | 덧글(0)

◀ 이전 페이지다음 페이지 ▶