본문 바로가기

프로그래밍130

ArcGIS 측지기준계 공부삼아 한국 ESRI 에서 배포한 "세계측지계와 ArcGIS를 이용한 좌표변환" 문서의 내용을 요약 & 발췌해보았습니다. 측지기준계: 지구상에서의 위치를 경도와 위도로써 나타내기 위한 기준체계 및 지구의 형상을 나타내는 타원체 한국측지계: 천문관측에 의해 결정된 경도/위도값 및 원방위각을 기준으로 하고 Bessel 타원체를 적용한 측지기준계로 1910년대 이래 동경측지계로 불리었으나 1985년 표준명칭으로 한국측지계로 명명됨. 세계측지계: 세계에서 공통으로 이용할 수 있는 측지기준계. 기준과 적용타원체의 구분에 따라 ITRF계, WGS계, PZ계 등이 있다. 우리나라는 2001년 측량법 개정을 통해 ITRF계 세계측지계를 근간으로 한 세계측지계를 도입하였다. ITRF 세계측지계: 지구의 질량중심을 3차.. 2013. 7. 11.
갤럭시S2 젤리빈 펌웨어 업그레이드 수행기~ 간단요약1. KIES 를 미리 업데이트 할 것.2. 폰에 외장 메모리가 존재한다면 미리 제거하고 진행할 것. 3. S다이어리를 실행하거나 위젯을 등록하지 말 것.(무한 터치위즈 다운 발생함) 오랫동안 기다려왔던 갤럭시S2 를 젤리빈으로 업그레이드하였다. 먼저, KIES 를 통해서 젤리빈 업그레이드를 진행한다. 대충 내용을 보니 백업 -> 펌웨어 업그레이드 -> 복원 순인 것으로 보인다. 조금 시간이 걸리지만 백업이 진행된다. 하지만 이어지는 펌웨어 업그레이드 단계에서 바이너리 파일이 등록되지 않았다는 요상한 메시지와 함께 업그레이드 과정이 실패한다. 대충 찾아보니 KIES 를 최신 버전으로 업데이트하란다.(미리 경고를 날리던가.ㅡ,.ㅡ) 제길... 그래서 이번엔 KIES 업데이트를 시도~ 하지만, 업데이.. 2013. 2. 11.
Turbo Vision #1 Turbo Vision 1.0 (아마도...)에 대한 개인적인 감상 or 기록입니다. 공부하길 원한다면 도움말을 살펴보거나, http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/PasHTM3/pas/pasles03.html 의 글을 참고하기 바랍니다. 터보 비전 객체의 계층도는 다음과 같다. 최고 조상님은 TObject 가 되시겠고, 모든 Visible 객체는 TView 를 상속받는다. 보통 TView 를 인스턴스화하여 사용하지는 않는다.(상속용) 멤버 변수와 메소드는 다음과 같다. 각각에 대한 상세 설명은 도움말을 참고하면 되겠고... 프로그램의 기준이 될 놈들은 TGroup 을 상속받은 것 중 TProgram, TApplication 이 되시겠다... 2012. 11. 12.
Turbo Pascal 6.0 소스 컴파일 하기... 이래저래 구글링하다보면 TP 6.0 소스를 찾을 수 있다. 그 놈을 가지고 컴팔을 해보기로 결정~ 먼저 DOS 환경을 구축하고, Turbo Assembler 3.0 과 Turbo Pascal 5.5 를 준비하였다. 하지만, 컴파일 실패... 우습게도 돌아다니는 소스를 컴파일하려면 Turbo Assembler 3.0 과 Turbo Pascal 6.0 (으응?) 이 필요하였다. 또한, 빌드를 하는 과정에서 메모리 부족 오류가 뜰 수 있으니 CONFIG.SYS 에서... DOS = HIGH, UMB 상위메모리 처리를 해주고, 한글 관련 기능을 주석처리한다. rem DEVICE=C:\DOS\HBIOS.SYS AUTOEXEC.BAT 에서는 PATH 지정을 한다. 이때 Turbo Assembler 는 C:\TASM.. 2012. 10. 30.
Turbo Pascal 6.0 README 파일 가끔 필요할 때가 있어 정리해둡니다. WELCOME TO TURBO PASCAL 6.0 --------------------------- This README file contains important, last minute information about Turbo Pascal 6.0. In addition to this file, there are several .DOC files in the \TP\DOC directory that you should browse. The HELPME!.DOC file answers many common Technical Support questions. The FIXES.DOC file provides corrections to the printed documen.. 2012. 10. 24.
XE2 에서 Custom VCL Style 을 리소스로 포함하여 사용하기 다음은 직접 제작한 vsf 파일을 리소스로 포함하여 사용할 경우이다. 먼저, Project > Resources and Images.. 를 실행한다. Add... 버튼을 클릭하여 제작한 vsf 파일을 선택한 후, Resource type 을 VCLSTYLE 로 입력한다. Resource identifier 에는 리소스를 불러올때 사용할 이름을 지정한다. 프로젝트에 생성된 RC 파일을 추가한다. 끝으로, 프로젝트 소스에 리소스로부터 스타일을 불러오도록 아래의 코드를 CreateForm 이전에 추가한다. 이때 반드시 uses 에 Vcl.Themes 와 Vcl.Styles 를 추가하여야한다. TStyleManager.SetStyle(TStyleManager.LoadFromResource(HInstance, '.. 2012. 8. 9.
FieldByName 사용팁 FieldByName 의 소스를 보면 다음과 같다. function TDataSet.FieldByName(const FieldName: string): TField; begin Result := FindField(FieldName); if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], Self); end; 3행의 FindField 메소드의 소스는 다음과 같다. function TDataSet.FindField(const FieldName: string): TField; begin Result := FFields.FindField(FieldName); if (Result = nil) and ObjectView then Result := F.. 2012. 7. 25.
ISAPI 기반 어플리케이션 서버의 데이터베이스 커넥션 처리 DataSnap REST Application Server 또는 SOAP Application Server 를 ISAPI 로 개발할 수 있다. 이때 해당 모듈을 데이터베이스 미들 티어로 사용할 경우라면 DB 커넥션에 대하여 몇 가지 작업을 해주어야한다. 1. 커넥션 관리 Wizard 에서 기본 생성되는 코드를 사용할 경우, 세션이나 요청별로 데이터베이스 커넥션이 발생하여 무수한 TIME_WAIT 를 발생시킨다. 물론 잦은 쿼리가 발생한다면 해당 쿼리당 커넥션 요청이 재발생하여 응답이 느려질 것이다. 다음은 데이터베이스 커넥션을 하나 생성해서 사용하는 방법이다. 물론, 풀링을 구현해서 사용하여도 좋을 것이다. 웹서비스로 개발되었다면, Service activation model 을 Global 로 해준다... 2012. 7. 20.
Delphi XE2 에서 DataSnap REST Application Client 프로젝트에서 New Item 을 실행한 후, DataSnap REST Client Module 을 추가한다. REST Application Server 가 다른 서버에 위치하는 경우엔 Remote Server 를 선택한다. 해당 서버가 단독 실행형이 아닌 IIS 에서 동작한다면, IIS module 을 선택한다. Host name 에 서버의 주소를 입력하고, Port 는 IIS 의 포트를 입력한다. 각종 테스트로 인하여 예제를 든 서버의 경우 9090 포트를 사용하고 있다. URL path 에 어플리케이션 서버가 위치하고 있는 경로를 입력한다.(예로 든 IIS 설정은 2012/06/05 - [프로그래밍/Delphi] - DataSnap REST Application ISAPI 배포 - IIS 7.5 의 .. 2012. 7. 13.
dbExpress MySQL 5.1 한글 테이블명 사용 최근 대부분의 플랫폼에서 유니코드를 지원하는 관계로 자연스레 한글 사용이 늘고 있는데, DBMS 의 테이블명이나 칼럼명도 한글로 사용하는 경우가 있다. MySQL 5.1 에서 기본 문자열을 utf8 로 정의한 후 이를 확인한다. SHOW VARIABLES LIKE 'char%'; 이후 델파이에서 TSQLConnection 설정 후, TSQLQuery 를 실행하거나 TSQLTable 을 사용할 경우 Syntax 오류 또는 ???? 로 테이블명이 나타날 것이다.(아참, libmysql.dll 은 32비트 버전을 구하여 시스템 폴더에 넣어야한다. 64비트 윈도우즈에서도 마찬가지이니 주의할 것.) 해결 방법은 간단하다. TSQLConnection 의 Params 에서 ServerCharSet 을 지정해주면 된다.. 2012. 6. 26.
Delphi XE2 에서 DataSnap REST Application Cross Domain 처리 기껏 REST 서버를 구축하여도 만약 해당 서버 어플리케이션의 API를 또 다른 서버에서 호출하여 사용할 경우, 접근 권한 문제가 발생한다.(대충 그려보았다.) 이를 해결하는 다양한 방법들이 존재하는데... 익스플로러 및 어지간한 예전 웹브라우저들까지 모두 지원하려면 JSONP 를 사용하여야 한다.(서버에서 access-control-allow-origin:* 을 헤더에 싣는 방법도 있지만, 최신 웹브라우저에서만 올바르게 동작하며 익스플로러에선 제대로 동작하지 않는다.) 일단, JSONP 에서 요구하는 형태로 결과를 반환하여야하는데 XE2 에 추가된 TDSHTTPWebDispatcher 의 FormatResult 이벤트 메소드를 아래와 같이 만지작거려야한다. procedure TWebModule1.DSH.. 2012. 6. 20.
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.
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.
Interface 요약 #5 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 8. 객체 모델과 인터페이스 모델을 혼용하지 말 것. procedure DoSomethingWithInterface(Intf: IFormattedNumber); begin ShowMessage(Intf.FormattedString); end; procedure CreateAndUseObject; var MyInteger: TFormattedInteger; begin MyInteger:= TFormattedInteger.Create(12); DoSomethingWithInterface(MyInteger as IFormattedNumber);.. 2012. 4. 19.