본문 바로가기

전체 글358

Delphi XE2 에서 DataSnap REST Application Cross Domain 처리 기껏 REST 서버를 구축하여도 만약 해당 서버 어플리케이션의 API를 또 다른 서버에서 호출하여 사용할 경우, 접근 권한 문제가 발생한다.(대충 그려보았다.) 이를 해결하는 다양한 방법들이 존재하는데... 익스플로러 및 어지간한 예전 웹브라우저들까지 모두 지원하려면 JSONP 를 사용하여야 한다.(서버에서 access-control-allow-origin:* 을 헤더에 싣는 방법도 있지만, 최신 웹브라우저에서만 올바르게 동작하며 익스플로러에선 제대로 동작하지 않는다.) 일단, JSONP 에서 요구하는 형태로 결과를 반환하여야하는데 XE2 에 추가된 TDSHTTPWebDispatcher 의 FormatResult 이벤트 메소드를 아래와 같이 만지작거려야한다. procedure TWebModule1.DSH.. 2012. 6. 20.
DataSnap REST Application ISAPI 배포 - IIS 7.5 1. IIS 에서 ISAPI 사용 설정 IIS 관리자의 ISAPI 및 CGI 제한을 더블클릭한다. 기능 설정 편집... 을 클릭한 후, 지정하지 않은 ISAPI 모듈 허용을 선택한다. 2. IIS 가상 디렉토리 설정 별칭(Alias)을 지정한다. 해당 실제 경로에는 빌드된 파일들이 위치하고 있다. 추가된 Alias 를 선택한 후 응용 프로그램으로 변환을 실행한다. 응용 프로그램 추가 창이 뜨면 확인 버튼을 클릭한다. 3. 응용 프로그램 풀 검사 응용 프로그램 풀을 선택하고 DefaultAppPool 을 선택한 다음, 고급 설정을 클릭한다. 빌드한 DLL 이 32 비트인 경우, 일반 탭의 32비트 응용 프로그램 사용을 True 로 변경한다. 프로세스 모델의 ID 를 선택하고, 지정된 값이 Applicati.. 2012. 6. 5.
Delphi XE2, dbExpress Oracle 10g 연동 오라클 연결시 필요한 라이브러리가 있는데, 이를 위해 오라클 클라이언트를 별도로 설치하는 것은 아무래도 배포시 거추장 스럽다. 일단, http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 에서 해당하는 instant client 를 다운로드 받는다. XE2 dbExpress 가 지원하는 데이터베이스와 해당 버전은 다음과 같으니 참고하면 된다. InterBase XE, 2009, 2007, 7.5.1, 7.1*, 8.0*, 6.5* (All) (Driver dbxINT.dll, Client GDS32.DLL)Firebird 2.5, 2.1, 1.5 (Ent/Ult/Arch) (Driver dbxfb.dll, .. 2012. 5. 30.
행운목 뿌리가 나오다. 죽어가던 행운목을 살린지 어느덧 7개월이 지났고 드디어 뿌리가 나오기 시작하였다.(2011/09/28 - [일상생활] - 행운목 되살리다. ^^) 벌써 7개월이라니... 이렇게 나무의 성장을 보다보면 느린 시간의 미학을 느낄 수 있어 좋다. 아무튼 이 상태로 좀 더 뿌리가 많아지면 화분에 옮겨 심을 생각이다. 그리고 한 10 년 정도 키우다보면 꽃을 피울 날이 오겠지... 나이가 들어감이 아쉬울때가 있지만 이렇듯 나무의 성장을 생각하다보면 또 그것이 기다려지는게 사람 마음이 아닐까? 2012. 5. 20.
5월 23일 노무현 대통령 3주기를 즈음하여... 이제는 쓰지않는 옛폰에서 그의 편린들을 꺼내본다. 벌써 3년전인가? 나는 죄인처럼, 혼자 남겨진 죄인처럼 불도 켜지못하고 휩쓸렸다. 머릿속이 온통 혼란스러웠다. 나는 그냥 잘 살아왔다. 정치는 혐오하면 그 뿐이고, 투표에 대한 거부 행위는 누가 뭐라든 나의 확신이었다. 애초 찍을 사람이 없는데... 어떤식으로든 동참하는 건 차라리 기만으로 느껴졌다. 그랬던 내가 처음으로 가족 아닌 타인을 위해 눈물을 흘려야했다. 창 하나 넘어 보아오던 그가 폭력에 죽은 것이다. 현실에 깨지더라도 치열하게 살던 그가, 나의 또 다른 모습같기조차했던 그가 무기력하게 무너진 것이다. 이것은 불의였고, 분노는 나 자신을 향했다. 그럴 수 밖에... 그의 영정이 점점 가까워질수록 지난날 나의 확신은 궤변이 되고 초라한 자기합리화.. 2012. 5. 14.
더리버사이드 호텔 따뚱, 베이징덕 ~ 몇 달전 티몬에서 구매한 베이징덕 한마리 SET~ 미루고 미루다 거의 종료일에 맞춰 방문하게 된 더리버사이드 호텔(이름 참 거창하네..;;) 2층 중식당, 따뚱... 오후 1시 예약이었지만 30분 일찍 도착하였고 걱정과는 달리 바로 자리 안내를 받았다. 점심 시간이었지만 비교적 한산한 분위기였고 안쪽 자리에 착석. 오른쪽 벽면은 대충 이런 느낌... 초록색이 왠지 촌스럽게 느껴지지만 사진과 달리 분위기는 나쁘지 않았다. 기본 세팅은 오이, 대파, 땅콩(껍질째 볶았는데 맛있었음), 짜사이... 그리고 세트 메뉴, 탕수육도 괜찮았고 새우요리도 맛있었다. 이윽고 오리 등장, 한마리를 직접 손질해주는데 모두 3접시로 나눠 담아준다. 뭐, 자주 먹는 요리도 아니고 그냥 월남쌈 싸먹듯 먹었다. 일단, 전병... 한.. 2012. 5. 2.
Windows 2008 원격데스크탑 설정 제어판, 시스템에서 원격설정을 클릭한다. 클라이언트 윈도우가 XP SP3, Vista, 7 이상일 경우 3번째 항목을 선택한다.(정품이 아닐 경우 접속이 안될 수도 있다.) 방화벽 및 절전모드 관련한 경고창이 뜨는데 관련 설정을 확인한다. 허용되는 프로그램을 확인한다. 전원관리 옵션을 서버운영이라는 이름으로 새로 만들어 적용하였다. 이 글은 원격 접속시 사용할 사용자 계정으로 Administrator 를 사용하였는데, 만약 별도 사용자를 추가하는 경우이고 소속 그룹이 Administrators 가 아니라면 원격 접속 권한을 가지고 있는 Remote Desktop Users 그룹을 지정하여야한다. 2012. 4. 26.
MS Lync Server 2010 설치하기 #1 1. 설치 환경 MS Lync Server 2010 을 설치하기 위한 OS 환경은 다음과 같다. 64비트 Windows Server 2008 R2 Standard, Enterprise, Datacenter 64비트 Windows Server 2008 SP2 Standard, Enterprise, Datacenter 2. 설치시 필요 구성 PowerShelll 에서 아래의 명령을 실행하여 설치시 필요한 항목들을 모두 설치한다. PS C:\> Import-Module ServerManager PS C:\> Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Static-Content,Web-Default-Doc,Web-Http-Errors,Web-Http-.. 2012. 4. 25.
Windows 2008 Server, Active Directory Domain 으로 그룹 변경 먼저, 이 글은 2012/04/24 - [프로그래밍/서버관리] - Windows 2008 Server, Active Directory 도메인 생성 에서 설정한 서버가 포리스트 루트 서버인 경우에 대한 설명이다. DNS 설정을 Active Directory 포리스트 루트의 IP 로 지정한다. 내 컴퓨터의 속성으로 들어간 후, 설정변경을 클릭한다. 소속그룹을 도메인으로 변경한 후, 포리스트 루트 서버의 netbios 이름을 입력한다. netbios 이름은 Active Directory 도메인 서비스 설치시 고급모드 설치로 하였다면, 설치시 직접 입력하거나 디폴트로 표시된 이름을 입력하면 된다. 만약, 그냥 설치하였다면 포리스트 루트 도메인의 FQDN 에서 입력한 도메인이 abcd.com 이라면 abcd 를 .. 2012. 4. 25.
Windows 2008 Server, Active Directory 도메인 생성 파워쉘에서 dcpromo 를 입력하고 실행한다. 고급 모드 설치 사용을 선택하지 않고 다음 버튼을 클릭한다.(netbios 명을 직접 입력할 경우 고급 모드 설치 사용을 선택한다.) 새 포리스트에 새 도메인 만들기를 선택하고 다음 버튼을 클릭한다.(이 부분은 Active Directory 에 대한 이해가 필요하다.) 포리스트 루트 도메인을 지정한다. 포리스트 기능 및 도메인 기능 수준을 지정한다.(일단 2003 으로 맞추었다. 높은 버전일수록 다양한 최신 기능을 지원하고, 낮은 버전일수록 지원할 수 있는 서버의 범위가 커진다.) 설치하고있는 PC 의 TCP/IP 네트워크 설정이 유동으로 잡혀있는 경우, 고정으로 변경하여야한다. DNS 서버를 자기 자신으로 잡았다. 다시 중지된 설치창으로 돌아가 다음 버튼.. 2012. 4. 24.
Windows 7 hosts 파일 수정 백만년 전부터 사용해온 팁인데... 개발환경을 구축하다 보면 서버 환경의 영향을 많이 받게된다. 만약, 인터넷에 공개되고 도메인으로 접근 가능한 서버라면 해당 도메인 신청 과정이나 개발 서버와 상용 서버간 스위칭에 따른 영향이 복잡한 변수를 야기시킨다. 이 경우 자신의 개발 컴퓨터 환경의 hosts 파일을 수정하여 개발 서버 접근시 추후 사용할 도메인 정보로 접근할 수 있도록 해볼 수 있다.(Windows XP 도 마찬가지이며, System 디렉토리 아래 \drivers\etc\hosts 파일이다.) System 디렉토리이므로 UAC 권한 문제가 발생하니, 에디터를 관리자 권한으로 실행한 후에... 해당 파일을 불러와 수정한다. 붉은색으로 표기한 부분을 추가하였고, 이 후 lyncphilsys.com 으.. 2012. 4. 20.
인천 연수동 현대옥, 돼지국밥? 이건 아니잖아. ㅠㅠ 부산 사람이면 술마시고 담날 어김없이 찾게되는 돼지국밥... ㅠㅠ 전국 어디서나 먹을 수 있을 줄 알았던 이 녀석이 사실 특별한 놈일 줄이야. 객지생활 10년이 넘었고 이젠 가족들도 모두 올라와 인천에 정착하게 되었지만, 불현듯 향수병이 되어 머리속을 떠나지 않는 돼지국밥이랑 태종대 조개구이, 그리고 자갈치 시장에서 먹었던 살아있는 꼼장어 구이... 흑흑... 그러다 인천 연수동에 돼지국밥 집이 있다하여 반신반의하며 주말에 찾아가 보았다. 사실, 엉터리 돼지국밥 집을 많이 보았던 터라 기대하지 않았는데... 역시, 입구 간판이 나를 불안하게 했다. 전주콩나물국밥 집에서 돼지국밥을...?? 흑... 전라도에선 돼지국밥을 안먹는 걸루 아는데... 그래도 혹시나 하고 들어가봤다. 실내 분위기는 깔끔하고 괜찮았.. 2012. 4. 19.
Delphi 투게더의 Observer 패턴 소스 오류 최근 XE2 에서 패치되었는지 모르겠지만, 투게더가 Delphi 에 포함되고 난 이후(2006부터~) 지금까지 이 소스 버그는 사라지지 않고 있다. 나야 UML 작성시 투게더를 사용하고 있지 않아 그냥 수정한 소스를 쓰고있지만, 만약 Pattern Organizer 에 등록된 Observer 패턴을 사용하여 소스를 생성하는 경우라면 네이티브 환경에서 사용시 AV 에러가 발생한다. 패치한 소스는 다음과 같다. IObserver = interface procedure UpdateObserver(ASubject: TSubject); // 폼에서도 사용할 수 있게 메소드명을 변경함 end; TSubject = class strict private var FObservers: TList; strict protec.. 2012. 4. 19.
Interface 요약 #7 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 10. Interface Delegation IInterface1을 구현한 TObject1이 있다고하자. 만약, IInterface1 과 IInterface2 를 모두 사용하는 TCombinedObject의 경우 이미 TObject1에 의해 구현된 IInterface1를 소스카피와 같은 방법으로 다시 구현하여야할까? -> No. :) Delegation: 어떤 클래스가 다른 클래스의 포인터를 가지고 있음을 의미함. 델파이는 다른 클래스에 인터페이스의 구현부를 위임(delegate)할 수 있는 방법을 제공한다. type IInterface1.. 2012. 4. 19.
Interface 요약 #6 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 9. 클래스 내(內) 다중 인터페이스 구현 Object Pascal의 경우 C++ 과 같은 클래스의 다중상속은 지원하지 않는다.(다중상속 시 조상 메쏘드의 이름이 중복될 경우 애매한 상황이 연출되는 등의 문제가 있다.) 다중 인터페이스의 구현은 다음과 같다. type TMyMultiplyInterfacedClass = class(TInterfacedObject, IInterface1, IInterface2) 다중 인터페이스는 다중 상속과는 다르다.(상기 클래스의 조상 클래스는 TInterfacedObject 뿐이다.) type IInter.. 2012. 4. 19.