본문 바로가기

Delphi/C++Builder

[REST API] 다음 Kakao > 로컬 > 주소검색 연동하기 다음 등의 포털 사에서는 자사 데이터 일부를 Open API로 공개하고 있습니다.특히 지도나 주소, 검색 등은 직접 데이터를 수집하는 것보다 포털의 데이터를 활용하는 것이 개발 및 유지보수에 유리할 수 있습니다. 오늘은 데브기어 테크게시판을 통해 다음 카카오의 주소검색 API 연동을 문의주셔서 해당 내용을 공유합니다. 아래 샘플을 REST API를 이용해 카카오 주소 검색 Open API와 연동하는 내용입니다.(카카오 Open API의 대부분은 REST API를 제공합니다. ) 해당 내용을 잘 익혀서 다양한 Open API를 여러분의 앱에서 활용하실 수 있습니다. 카카오 개발자 > 로컬 : https://developers.kakao.com/docs/restapi/local 카카오 Open API를 연동.. 더보기
프로세스 메모리 사용량 로그 기록 - 성능 모니터 이용 개발한 프로세스에서 메모리 누수(Leak)이 발생된다 예상되면, 메모리 사용량 추적을 통해 메모리 누수 여부를 검증해야 합니다. 성능 모니터를 이용하면 프로세스의 메모리 사용량을 추적 및 로그 기록할 수 있습니다. 만약, 메모리 누수가 확인된다면, 테스트용 실행파일 등으로, 메모리 누수가 발생할 수 있는 코드의 범위를 줄여가며 반복적으로 테스트 해야 합니다.만약, 특정 기능 수행 시 메모리 누수가 의심된다면 특정 기능을 반복적으로 실행할 수 있는 테스트 프로그램을 만들어 점검할 코드의 범위를 줄여가며 추적하기 바랍니다. 델파이로 개발된 프로젝트라면 메모리 누수 보고 기능을 켜서 메모리 누수 여부를 확인할 수 있습니다.Out of memory 오류 해소 방안 : http://blog.hjf.pe.kr/44.. 더보기
[REST API][실습] 데이터셋 기반 REST API 개발하기 이 글에서는 데이터셋 기반으로 일괄 데이터 처리하는 REST API 엔드포인트를 구현하고, 연동하는 내용을 설명합니다. 데이터셋 기반 REST API데이터셋(TDataSet)은 데이터들의 집합으로, FireDAC의 데이터 셋(TFDDataSet)은 데이터셋의 내용을 JSON 포맷으로 저장하고, 불러오는 기능을 제공합니다. 이 기능을 활용해 REST API의 JSON 포맷을 손쉽게 개발할 수 있습니다. 데이터셋 기반 REST API의 특징(장/단점)은 다음과 같습니다.1) (장점) 매우 신속하고, 손쉽게 REST API 서버, 클라이언트를 개발할 수 있습니다.데이터를 JSON 포맷으로 변환하는 코드가 대단히 짧아 집니다. 2) (단점)JSON 포맷을 직접 설정할 수 없습니다.FireDAC의 JSON 저장 .. 더보기
[REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) 이 글에서는 델파이를 이용해 REST API 서버와 연동하는 클라이언트 기술을 실습합니다.REST 클라이언트 라이브러리 기반으로 실습합니다.REST API 엔드포인트 연동 이 글에서는 REST API 서버의 REST API를 분석하고, 클라이언트에 표시 및 입력데이터를 서버에 저장하는 내용을 실습 위주로 진행합니다.이 글에서는 데이터 처리하는 내용에 집중합니다. 이 글을 참고해 여러분이 만든 멋진 화면과 REST API를 연동하는 기술을 습득하시기 바랍니다. 이 글에 앞서 다음 내용의 이해가 필요합니다. 미리 선행 학습하시기 바랍니다.[REST API] REST API 이해와 구현JSON 데이터 포맷[RAD서버] EMS 패키지 프로젝트 시작하기 이 글에서는 다음 내용을 다룹니다.REST API 분석[실습.. 더보기
[REST API][실습] REST API 서버 개발하기(엔드포인트 구현, RAD 서버 이용) 이 글에서는 델파이를 이용해 REST API 엔드포인트를 제공하는 서버 제작 기술을 학습합니다. RAD 서버의 EMS 패키지 프로젝트로 진행합니다. REST API 엔드포인트 리소스에 HTTP 메소드 별로 구현해 놓은 것을 REST API 엔드포인트라 합니다. REST는 GET, POST, PUT, DELETE 4개의 HTTP 메소드 지원을 원칙으로하며, 그 중 지원할 HTTP 메소드를 지정 및 구현해 REST API를 제공합니다. 즉 리소스에 따라 필요한 HTTP 메소드에 한해 엔드포인트를 제공할 수 있습니다. 이 글에서는 RAD 서버를 이용해 리소스를 생성하고, 엔드포인트를 작성하는 실습을 진행합니다. 실습의 주제는 도서정보를 제공하는 REST API를 개발합니다. 이 글에 앞서 다음 내용을 이해하고.. 더보기
[REST API] REST API 이해하기 이 글에서는 REST 아키텍처를 소개합니다. REST는?REST(Representational State Transfer)는 인터넷 상의 컴퓨터 시스템간 상호 운용성을 제공하는 방법 중 하나입니다. REST는 HTTP 기반으로 필요한 자원에 접근하는 방식을 정해놓은 네트워크 아키텍처입니다.여기서 자원이란, 저장된 데이터(DBMS 등)는 물론, 이미지/동영상/문서(PDF 등)와 같은 파일, 서비스(이메일 전송, 푸쉬 메시지 등) 등을 모두 포함합니다. REST는 HTTP의 주요 저자 중 한사람인 로이 필딩의 2000년 박사학위 논문에서 처음 소개되었습니다.위키백과 - REST : https://ko.wikipedia.org/wiki/RESTREST의 제약조건아래 REST 제약조건을 준수하는 웹서비스를 RE.. 더보기
[RAD서버] EMS 패키지 프로젝트 시작하기 이 글에서는 EMS 서버에 필요한 기능을 추가할 수 있는, EMS 패키지 프로젝트 개발을 시작하는 과정을 안내합니다.EMS 패키지란? EMS 서버는 REST API 기반으로 리소스를 제공하는 미들웨어 서버입니다. EMS 서버가 제공하는 리소스는 기본 제공 리소스(사용자, 그룹, 푸시 등)와 사용자가 직접 개발 후 추가 할 수 있는 사용자 제작 리소스가 있습니다. 사용자 제작 리소스는 RAD 스튜디오(델파이 또는 C++빌더)에서 EMS 패키지 프로젝트를 이용해 개발해, EMS 서버에 플러그인 형태로 추가할 수 있습니다. 이 글에서는 다음 내용을 안내합니다.EMS 패키지 프로젝트 생성EMS 패키지 실행EMS 패키지 배포 방법 추가 학습할 내용 EMS 패키지 프로젝트 생성프로젝트 생성File > New > O.. 더보기
[환경설정] 아마존 EC2 이용해 리눅스 서버 환경 구축하기 이 글에서는 아마존 EC2 기반으로 리눅스 서버 환경을 구축하는 내용을 안내합니다.RAD 스튜디오 10.2 도쿄 버전부터 리눅스 개발을 지원합니다. WebBroker, 데이테스냅, EMS 서버, 소켓 서버 용 테스트 및 서비스에 사용할 수 있습니다. 아마존 EC2아마존 EC2란?아마존 EC2는 클라우드 기반으로 서버 인프라를 제공합니다. 웹 페이지를 이용해 필요한 플랫폼과 용량을 선택해 서버 인스턴스를 실행하고 접속해 테스트 및 서비스 할 수 있습니 - 아마존 EC2 자세히보기 아마존 EC2를 사용하는 이유AWS 프리 티어를 이용해 12개월 동안 무료로 체험할 수 있습니다. - AWS 프리 티어 자세히보기 이 글에서 다루는 내용은 아래와 같습니다.Ubuntu Server 16.04 LTS 인스턴스 생성보.. 더보기
[환경설정] 아마존 EC2 이용해 윈도우 서버 환경 구축하기 이 글에서는 아마존 EC2 기반으로 윈도우 서버 환경을 구축하는 내용을 안내합니다. 데이터 스냅 서버, EMS 서버, WebBroker 서버, 소켓 서버 용 테스트 및 서비스에 사용할 수 있습니다. 아마존 EC2 아마존 EC2란?아마존 EC2는 클라우드 기반으로 서버 인프라를 제공합니다. 웹 페이지를 이용해 필요한 플랫폼과 용량을 선택해 서버 인스턴스를 실행하고 접속해 테스트 및 서비스 할 수 있습니 - 아마존 EC2 자세히보기 아마존 EC2를 사용하는 이유AWS 프리 티어를 이용해 12개월 동안 무료로 체험할 수 있습니다. - AWS 프리 티어 자세히보기 이 글에서 다루는 내용은 아래와 같습니다.Windows 2012 R2 인스턴스 생성보안설정(서버에서 사용하는 포트번호 오픈)원격 데스크탑으로 연결준비.. 더보기
[RAD서버] EMS 서버 운영환경에 설치하기(독립형 실행파일) 이 글에서는 독립형 실행파일(Stand alone) 방식 EMS 서버를 운영환경(윈도우즈 서버)에 설치하는 내용을 설명합니다.EMS 서버EMS 서버란?EMS 서버는 HTTP 기반 REST API를 제공하는 웹서버입니다. REST API란? 다음 링크를 통해 REST API에 대해 자세히 알아볼 수 있습니다.https://ko.wikipedia.org/wiki/RESThttp://bcho.tistory.com/953http://meetup.toast.com/posts/92 델파이 클라이언트 뿐 아니라 대부분의 클라이언트 프로그램은 REST API를 통해 EMS 서버에 접속 해 필요한 데이터(리소스)를 조회하거나 추가, 수정, 삭제 할 수 있습니다. EMS 서버는 자주 사용하는 리소스(사용자 정보, 사용자 .. 더보기
[10.2 도쿄] 델파이로 리눅스 기반 웹서비스 제작하기(WebBroker 이용) 이 글에서는 델파이를 이용해 리눅스 서버에서 구동되는 아파치 모듈을 웹브로커 기술을 이용해 만드는 방법을 소개합니다.(이 글에서는 리눅스 서버 설정과 MySQL 설정 등에 대해서는 자세히 다루지 않습니다.) 델파이로 리눅스 기반 웹서비스 제작하기(WebBroker 이용) RAD 스튜디오 10.2 도쿄버전에서 리눅스 개발을 지원합니다. 이제 델파이로 리눅스 서버용 프로그램을 개발 및 배포, 디버깅 할 수 있습니다. 이 글은 RAD 스튜디오 10.2 도쿄 버전 기준으로 작성되었으며, 리눅스는 Ubuntu 16.04.1(가상머신)에서 동작합니다. 이 글에서 아래의 내용을 진행합니다.콘솔 기반 WebBroker 프로젝트 제작 및 리눅스에서 실행아파치 모듈 기반 WebBroker 프로젝트 제작 및 리눅스에 배포,.. 더보기
[10.2 도쿄] 델파이/C++빌더 리눅스 개발환경 설정하기 RAD 스튜디오 10.2 도쿄버전이 출시되어 해당 내용을 아래 글에서 업데이트 하였습니다.http://tech.devgear.co.kr/delphi_news/430268 곧 출시 예정인 RAD 스튜디오 10.2 도쿄 버전에서는 리눅스 개발 지원을 대기하고 있습니다. 이 글에서는 RAD 스튜디오로 리눅스 개발하기 위한 환경설정 및 개발 절차를 설명합니다. (이 글은 베타버전 기준으로 작성되며, 정식 출시 이후 업데이트하도록 하겠습니다.) 리눅스 개발환경 설정리눅스 개발환경 설정은 아래 절차 순으로 진행합니다.리눅스 OS 설치RAD 스튜디오 설치리눅스 머신에 PAServer 설치 및 실행RAD 스튜디오에서 PAServer 연결 설정 RAD 스튜디오에서 리눅스 SDK 설정코드 작성 및 실행리눅스 OS 설치공식.. 더보기
Out of memory 오류 해소 방안 메모리 부족(Out of memory) 오류 해소 방안을 델파이 기준으로 설명합니다.증상윈도우즈 기반 애플리케이션 시작 또는 실행 중 Out of memory 예외(Exception)이 발생 원인데스크탑 힙 제한에 의한 메모리 부족메모리 누수(Leak)에 의한 메모리 부족과도한 메모리 사용에 의한 메모리 부족 조치방법데스크탑 힙 제한에 의한 메모리 부족데스크탑 힙 제한에 의한 메모리 부족 오류가 발생할 수 있습니다. 마이크로소프트 지원 페이지에서 레지스트리를 수정하는 해결 방법을 안내합니다.https://support.microsoft.com/ko-kr/kb/947246 메모리 누수(Leak)에 의한 메모리 부족프로그램내에서 할당된 메모리를 사용 후 반환하지 않는 메모리 누수가 반복될 경우 메모리 부족이.. 더보기
마우스 이벤트 캡쳐 - SetCapture, ReleaseCapture 마우스 이벤트를 캡쳐해야 하는 경우 SetCapture(Win32 API)를 이용하면 됩니다.다 사용한 경우 ReleaseCapture로 해제합니다. Win32 API: SetCaptureWin32 API: ReleaseCapture 아래 예제는1) 폼위에 패널 위치2) 폼과 패널은 각각 MouseMove 이벤트에서 로그 기록3) 패널에서 MouseDown 시 폼으로 SetCapture 시도 > 이후 패널 및 메모 위의 마우스 이벤트가 폼에서 발생4) MouseUp 시(폼에서 마우스 이벤트를 가져가 폼의 MouseUp이벤트에서 구현필요) ReleaseCapture로 캡쳐 해제procedure TForm2.FormCreate(Sender: TObject); begin FIsCaptured := False;.. 더보기
TWICImage를 이용해 다양한 이미지 포맷의 파일을 불러오고 저장하기. TWICImage는 Microsoft Windows Imaging Component를 캡슐화 한 클래스로 다양한 이미지 포맷을 조작할 수 있습니다. 사용법은 아래 샘플코드와 같이 TImage 컨트롤에서 파일을 로드하기 전에 TWICImage로 먼저 로드한 후 TImage에 할당하면 다양한 이미지 포맷을 TWICImage가 처리해 줍니다. (TWICImage는 RAD Studio 2010 부터 지원합니다.) procedure TForm2.btnImageLoadClick(Sender: TObject); var wic: TWICImage; begin if OpenDialog1.Execute then begin wic := TWICImage.Create; try wic.LoadFromFile(OpenDialog.. 더보기
퀵레포트(Quick Report)에 사진 출력하기 DBMS의 Blob 컬럼의 이미지 데이터를 퀵레포트 보고서에 출력하는 내용입니다. (추가) 2016.09.02 : 미리보기에서 사진이 나오는데, 실제 인쇄 시 사진이 출력되지 않는 이슈해결 방안을 추가했습니다. 쿽레포트에 사진을 출력하려면 TQRImage, TQRDBImage 2개의 컴포넌트를 이용할 수 있습니다.(TQRDBImage는 비트맵 데이터만 출력할 수 있습니다.) 저는 JPEG, GIF, PNG 등을 지원하기 위해 TQRImage를 이용합니다. 아래 델파이 샘플은 BOOK_THUMB(Blob 컬럼)의 데이터를 읽어 TQRImage에 표시하는 내용입니다.Blob 컬럼을 읽기 위해 TBlobField를 사용하고, TWICImage를 이용해 다양한 포맷을 지원합니다.(BLOB 컬럼에서 (이미지 등의.. 더보기
퀵레포트 보고서 엑셀로 내보내기(저장하기) (Quick Report 5.0.6 버전으로 작성된 내용입니다.)퀵레포트(QuickReport)로 작성한 보고서를 저장해야 하는 경우 퀵레포트 필터를 통해 다양한 포맷을 추가할 수 있습니다. 위 필터 중 TQRXLSXFilter를 통해 엑셀로 보고서를 내보내기(저장)할 수 있습니다. 하지만 엑셀로 내보내기 기능을 제공하려면 XLColumn 속성을 설정해야 합니다.XLColumn 속성은 엑셀에 표시되는 컬럼 순서로, 인쇄가능한 퀵레포트 컴포넌트들(TQRLabel, TQRDBText 등의 TQRPrintable 클래스를 상속받는 컴포넌트 들)은 모두 XLColumn 속성을 갖고 있습니다.(다시 말해 대부분의 컨트롤의 XLColumn 속성을 설정해야 합니다.) XLColumn 속성은 다음 특징을 참고해 신중히.. 더보기
VCL 스타일이 적용된 앱을 다른 프로세스에 넣을때 메인메뉴가 클릭되지 않는 이슈 해결방법 다음 글을 참고하면 다른 프로세스의 화면을 특정 영역(패널 등)에 넣을 수 있습니다.[Delphi/C++Builder] - [VCL] 다른 프로세스의 폼을 패널등에 넣기 그런데, VCL 스타일이 적용된 프로세스를 위 방법으로 진행할 경우 메인메뉴가 클릭되지 않는 증상이 발생합니다. 이 경우 VCL 스타일이 적용된 프로젝트에서, 메인폼의 StyleElements 속성의 seBorder 항목을 False로 변경 후 다시 컴파일 하면 메인메뉴 클릭이 정상 동작합니다. 더보기
[라이브바인딩] 콤보박스에 목록표시, 선택 값 반영하기 콤보박스에 목록을 표시하고, 선택한 항목의 키값을 다른 데이터셋에 적용하는 방법입니다.DB Controls의 DBLookupComboBox의 기능을 라이브바인딩으로 구현하는 내용입니다. 아래 라이브바인딩 내용은 사원 테이블(qryMember)의 팀정보(MEM_TEAM_SEQ)를 콤보박스에서 선택하도록 구현한 것입니다. 콤보박스 목록 표시할 내용 - 팀명(DPT_TEAM)을 목록으로 표시콤보박스 선택한 값을 반영 - 선택한 항목을 MEM_TEAM_SEQ에 반영(Item.LookupData와 연결된 필드의 값)목록의 키값(LookupData) - 목록의 키값으로 사용할 필드를 Item.LooupData와 연결)위와 같이 적용 시 콤보박스에 팀정보가 표시되고, 콤보박스를 선택하면 사원정보의 팀정보가 변경됩니다.. 더보기
delphi-markdown(델파이 마크다운 라이브러리) 소개 마크다운 문법을 해석해 html로 반환하는 라이브러리를 발견해 공유합니다. 마크다운(markdown)은 일반 텍스트 문서의 양식을 편집하는 문법이다[1]. README 파일이나 온라인 문서, 혹은 일반 텍스트 편집기로 문서 양식을 편집할 때 쓰인다. 마크다운을 이용해 작성된 문서는 쉽게 HTML 등 다른 문서형태로 변환이 가능하다. - https://ko.wikipedia.org/wiki/마크다운 delphi-markdowndelphi-markdown은 마크다운(평문)을 html로 변환해 반환해주는 델파이 라이브러리로 그래함 그리브(Grahame Grieve)가 공개한 오픈소스입니다.(그래함 그리브는 세계적인 의료정보 표준화 전문가라고 합니다. FHIR 관련 프로젝트도 함께 오픈되어 있으니 의료계 관련자.. 더보기