본문 바로가기

데이터 엑세스

FCM 전송 구현하기 - 앱 서버 프로토콜 사용 메시지 전송 FCM 메시지 수신하는 방법은 다음 링크를 참고하세요.[데브기어 테크] Firebase 안드로이드 앱 푸쉬 알림 - 10.3.2에서 FCM 수신 설정하기 이 글에서는 FCM 메시지를 전송하는 방법 설명과 푸시 서버 아키텍처를 제안합니다.FCM 전송하기푸시 서버 아키텍처 제안FCM 전송하기FCM 전송은 v1 HTTP 프로토콜(Admin SDK 이용)과 기존 앱 서버 프로토콜 방식을 제공합니다. 이 글에서는 기존 앱 서버 프로토콜을 이용해 FCM 전송하도록 진행합니다.[Firebase 문서] 기존 앱 서버 프로토콜을 사용하여 메시지 보내기 FCM 전송 API위 링크의 문서에는 다음과 같은 요청으로 FCM을 전송합니다. 주요 항목은 다음과 같습니다. URI https://fcm.googleapis.com/fc.. 더보기
FireDAC 자동증가필드 적용 및 갱신 대부분 DBMS는 테이블에 자동증가필드를 설정할 수 있습니다. 자동증가필드는 테이블에 새로운 데이터 입력 시 필드의 값을 자동으로 증가해 유효한 값을 갖도록 하는 것이 목적입니다. 자동증가필드 설정은, SQLServer(MSSQL)은 필드에 IDENTITY 속성을 설정, MySQL은 필드에 auto_increment 속성을 설정해 지원합니다. 오라클과 인터베이스는 필드의 속성을 설정하는 방식을 지원하지 않습니다. 오라클은 Sequence, 인터베이스(그리고 Firebird)는 Generator 생성 후 트리거(Before Insert)와 연동해 자동증가 필드를 적용할 수 있습니다. 인터베이스 데이터베이스와 테이블 생성 - 하단 "기본 키 자동증가 설정" 참고 이 글에서는, 인터베이스 테이블의 자동증가필드.. 더보기
CEF4Delphi(크로미움 기반 웹브라우저) 컴포넌트 설치 및 실행하기 REST API 관련 컨설팅 중 학습한 내용을 공유합니다. 고객사의 요청으로 VendHQ 사의 REST 서비스와 연동을 진행했습니다.OAuth 2.0 연동 중 웹브라우저 이슈가 있어 해결방안을 공유합니다. OAuth 2.0 인증 시 크게 3가지 단계로 진행합니다.1) 서비스의 인증페이지에 로그인 해 인증코드를 받는다.2) 인증코드를 이용해 엑세스 토큰을 취득한다.3) 엑세스 토큰을 이용해 서비스에 접근한다. 이슈는 1)번 과정에서 발생했습니다.델파이 내장 웹브라우저 컴포넌트(TWebBrowser)가 vend사의 로그인 페이지를 정상 출력하지 않아 다음 단계로 진행되지 않습니다.(vend사에서 표준을 지키지 않고 페이지를 만든것으로 예상됩니다.) 다음과 같이 스타일이 적용되지 않고, 허용 버튼(Allow .. 더보기
[REST API] MAC(Message Authentication Code)/HMAC 델파이로 구현하기 REST API 관련 컨설팅 중 학습한 내용을 공유합니다. 한 고객사의 요청으로 Unleashed 사의 REST 서비스와 연동을 진행했습니다. 그 과정 중 HMAC(해시 기반 메시지 인증 코드) 구현 과정을 공유합니다. HMAC은 Unleashed 사 뿐아니라 AWS의 REST API 연동에도 사용되는 등 많은 REST 서비스에 구현되는 내용입니다. MAC과 HMAC먼저 MAC(Message Authenticate Code: 메시지 인증 코드)를 살펴봅니다. (출처: https://ko.wikipedia.org/wiki/메시지_인증_코드) MAC는 발신자(Sender)와 수신자(Receiver) 사이에 메시지 변조 여부를 확인하기 위한 메시지 인증 방식입니다. 위 그림을 통해 설명하면, Sender는 보.. 더보기
OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) 업데이트 내역 2019-10-23 : [3. 엑세스 토큰 취득] 버튼 클릭 시 Accept 속성 추가 이 글에서는 OAuth 2.0을 이용해 카카오 API와 연동하는 방법을 델파이를 통해 알아봅니다.이 글을 통해 카카오톡 프로필 정보와 사진을 델파이 애플리케이션에서 불러오는 예제를 작성할 수 있습니다. OAuth 2.0API(또는 서비스) 이용 시 인증(Authentication)과 리소스(제공 서비스)에 대한 권한부여(Authorization)는 필수사항입니다. 인증과 권한부여의 대표적인 방법 중 하나가 OAuth입니다. OAuth는 서버와 클라이언트 사이에 인증을 완료 시 권한부여의 결과로 엑세스 토큰(Access Token)을 발급하고, 이 엑세스 토큰을 이용해 클라이언트는 API(또는 서비스)에 .. 더보기
BLOB 컬럼에서 (이미지 등의)데이터 읽고 쓰기 (해당 내용은 모든 데이터셋(TDataSet을 상속받은 컴포넌트) 즉, FireDAC, dbExpress, dbGo(ADO) 등에 적용할 수 있습니다.) 대부분의 DBMS에서 Blob(Binary Large object) 타입의 컬럼을 만들 수 있습니다. 이 컬럼에는 이미지등의 큰 바이너리 데이터를 취급할 수 있습니다. 아래 코드는 Blob 컬럼에서 이미지를 읽고, 쓰는 델파이 예제입니다. Blob 컬럼에 이미지 데이트 쓰기var wic: TWICImage; // Microsoft Windows Imaging Component Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try Image1.Picture.SaveToStream(Stream).. 더보기
[팁] 파라메터 값이 포함된 쿼리 문자열 만들기 SQL 작성 시 아래와 같이 파라메터를 많이 이용합니다. SELECT * FROM EMPLOYEE WHERE EMP_ID = :EMP_ID 하지만, SQL을 로그로 기록할 경우 파라메터 명(:EMP_ID) 대신 파라메터 값이 들어가야 할 경우 아래와 같이 파라메터 값이 적용된 SQL을 만들어 사용할 수 있습니다. procedure TForm1.Button1Click(Sender: TObject); var I: Integer; SQLStr, ParamName, ParamValue: string; begin Query1.Close; Query1.ParamByName('Name').AsString := '홍길동'; Query1.ParamByName('JUNHYEONG').AsString := '2'; Quer.. 더보기
[FireDAC MergeDataSet] 여러 데이터셋을 병합해 하나의 데이터셋을 구성할 수 있습니다. FireDAC의 TFDDataSet.MergeDataSet 메소드를 이용해 구조가 같은(또는 확장된) 데이터셋을 병합해 하나의 데이터셋을 구성할 수 있습니다. 제가 테스트한 목적은, 데이터스냅으로 데이터량이 많은 데이터 중 일부분 데이터만 가져오고, 필요한 경우 추가로 가져와 병합(페이징 기능 구현) 할 목적으로 테스트 진행해 봤습니다.TFDDataSet.MergeDataSet지정된 데이터 셋(ASource)의 데이터와 메타데이터를 현재 데이터셋과 병합합니다.procedure MergeDataSet(ASource: TFDDataSet; AData: TFDMergeDataMode = dmDataMerge; AMeta: TFDMergeMetaMode = mmNone); TFDMergeDataMode데이터셋 .. 더보기
[FireDAC Skill Sprints] 8. TFDMemTable: 메모리 기반 데이터셋 사용하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 8회차에서는 메모리 기반 데이터셋인 TFDMemTable에 대해 알아봅니다.TFDMemTable(메모리테이블) 은?TFDMemTable은 메모리 기반 데이터셋입니다. 즉, 데이터베이스 연결 없이 파일 데이터나 코드로 추가한 데이터를 메모리에 올려 데이터셋의 기능(필터링, 정렬 등)을 사용할 수 있습니다. TFDMemTable은 아래 기능을 할 수 있습니다.디자인타임과 런타임 시 파일 불러오기(Load File),.. 더보기
[FireDAC Skill Sprints] 9. LocalSQL: DB에서 가져온 데이터(데이터셋)를 대상으로 다시 SQL쿼리 실행하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 9회차에서는 쿼리 결과에서 검색하고, 조인할 수 있는 Local SQL에 대해 알아봅니다. Local SQL이란?Local SQL은 DB로부터 애플리케이션의 메모리 상으로 가져온 데이터(데이터셋: TDataSet을 상속받은 객체)를 대상으로 다시 SQL 쿼리를 할 수 있는 기능입니다. Local SQL은 아래와 같이 사용할 수 있습니다.여러 이기종 DB들에 대한 쿼리 : 다양한 DB에서 가져온 여러 데이터셋을 대.. 더보기
[FireDAC Skill Sprints] 1. FireDAC 동영상과 샘플로 고급기능 활용하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 1회차에서는 FireDAC을 소개하고 연결하는 과정으로 진행합니다.FireDAC 소개FireDAC은 델파이와 C++빌더에서 멀티-디바이스 데이터베이스 애플리케이션을 개발할 수 있는 범용(Universal) 데이터 엑세스 컴포넌트입니다. FireDAC은 통합 API를 사용해 다양한 데이터베이스를 동일한 코드로 제어할 수 있습니다. 그렇기 때문에 개발자는 데이터베이스를 신경쓰지 않고 애플리케이션 개발에 집중할 수 있.. 더보기
[따라하기] FireDAC으로 오라클 연결하기 여러분의 FireDAC 애플리케이션에서 DBMS와 접속하기 위해서는 DBMS 제조사에서 제공하는 네이티브 클라이언트 드라이버를 설치해야 합니다. 네이티브 클라이언트 드라이버는 각 제조사 홈페이지를 통해 다운로드 받아 설치할 수 있습니다. 오라클 서버에 접속하기 위해서는 오라클 클라이언트 소프트웨어를 설치해야 합니다.오라클 클라이언트 소프트웨어오라클 클라이언트 소프트웨어는 아래 2가지 방식으로 제공합니다."Fat" 오라클 클라이언트 - 설치형 오라클 클라이언트 프로그램. 기본 오라클 홈경로에 설치된 오라클 드라이버 이용합니다."Thin" 오라클 클라이언트 - 파일형 오라클 클라이언트 프로그램. 윈도우 PATH 또는 실행파일과 동일한 경로에 아래 라이브러리 복사해 사용합니다.oci.dlloraocci11.d.. 더보기
[FireDAC Skill Sprints] 6. 전처리: SQL문을 유연하게 작성할 수 있는 Param와 Macro 사용하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 6회차에서는 커맨드 텍스트 전처리에 관한 내용으로 진행합니다. 커맨드 텍스트 전처리란?커맨드 텍스트 전처리는 SQL 명령을 데이터베이스에 전달하기 전 파라메터를 치환하고, FireDAC 매크로 함수를 DBMS에 맞도록 치환하는 기능입니다. FireDAC 은 커맨드 텍스트 전처리 작업할 수 있는 3가지의 매크로 명령을 지원합니다.대체변수(Substitution variables) : 파라메터 확장을 위해 SQL 문.. 더보기
[FireDAC Skill Sprints] 5. Cascading Options: 고급기능을 활용 할 수 있는 FireDAC 옵션 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 5회차에서는 FireDAC의 캐스캐이딩 옵션에 대해 소개하고 살펴봅니다.FireDAC 캐스캐이딩 옵션FireDAC에는 5종류의 옵션 그룹을 제공합니다.FetchOptions : DBMS에서 데이터를 어떻게 취득할지 제어하는 검색 옵션입니다.FormatOptions : DBMS의 데이터형식을 FireDAC 데이터 형식으로 또는 반대로 매핑하는 방법을 제어하는 형식 옵션입니다.(자세한 내용은 "Data Type Ma.. 더보기
[FireDAC Skill Sprints] 4. ArrayDML로 30배 빠르게 데이터 입력하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 4회차에는 Array DML에 대한 내용으로 진행합니다.Array DML 이란?Array DML은 실행에 필요한 매개변수(Parameters) 배열을 이용한 한번에 DBMS 명령을 실행하는 기능입니다. 이 방법은 DBMS와 애플리케이션 사이의 통신비용을 줄이고 DBMS 명령 요청을 줄입니다. 그 결과 실행 속도가 향상됩니다. 다음 그림에서 이 프로세스를 보여줍니다. 동영상을 보셨다면 아시겠지만 1만건의 데이터를 .. 더보기
[FireDAC Skill Sprints] 3. 캐쉬를 이용한 업데이트와 자동증가필드(Identity) 적용 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 3회차에서는 FireDAC의 Cached Updates와 Auto-Inc Fields에 대해 진행했습니다.캐쉬를 이용한 업데이트캐쉬 업데이트는 애플리케이션의 메모리 영역(즉, 데이터셋)에 업데이트 내역을 기록하고, DBMS에 한번에 업데이트하거나 일괄취소할 수 있는 기능입니다.캐쉬 업데이트를 사용하면 작업내용을 로컬에서 관리하므로 DBMS와의 트래픽을 줄일 수 있고, 사용자는 인터넷속도와 관계없이 빠르게 작업할 .. 더보기
[FireDAC Skill Sprints] 2. FireDAC으로 DBMS 사용 내역 추적, 모니터링 하기 엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다. 이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다. 2회차에서는 FireDAC의 추적과 모니터링에 대한 내용으로 진행합니다.FireDAC 추적과 모니터링FireDAC의 추적기능을 이용하면 애플리케이션과 데이터베이스 사이의 통신내용을 상세하게 보거나 기록할 수 있습니다. 이 추적 정보에는 이벤트 발생시간, API 호출내역, DB로 전송된 SQL, 파라메터와 필드 값, 오류와 경고 등이 기록되어 여러분의 DB 애플리케이션으 문제점을 디버깅하고 해결하는데 유용하게 사용.. 더보기