Archive for the ‘Indy’ tag
Indy에 SSL 사용하기
Indy 라이브러리는 자체적으로 SSL을 지원하지 않습니다. Third party로 SSL IO Handler를 지정해줘야하는데 OpenSSL을 이용하는 방법은 다음과 같습니다.
- Indy SSL에서 미리 컴파일된 OpenSSL DLL을 다운로드 한다. 여기서는 fulgan의 DLL을 다운 받았다.
- 파일중에서 필요한 2개의 파일(libeay32.dll, ssleay32.dll)을 실행파일이 위치할 곳에 푼다.
- TIdHttp로 이용하는 코드는 다음과 같다.
FHTTP := TIdHTTP.Create(nil);
FOpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(FHTTP);
FHTTP.IOHandler := FOpenSSLHandler;
FHTTP.Get('https://mail.google.com');</pre>
Indy로 form submit하기 삽질
- TIdMultipartFormDataStream를 이용하면 될 것 같아서 열심히 했다.
- 근데 UTF8 인코딩이 필요하다. AddFormField로 추가하면 될 것 같았다. AddObject도 안된다.
- TIdMultipartFormDataStream는 유니코드를 전혀 지원하지 않는다.
- 그냥 TStrings로 했다. 잘된다.. ㅡㅜ
Drupal에서 삽질
- WebForms에서 만들 폼에다가 넣는 중이있다.
- 잘 넣는데 가끔 폼에 적은 내용이 전달이 되지 않는다. 흠… 한참 삽질하다 다시 보니 WebForms의 필드 타입이 textfield인 곳에 여러줄 넣으면 안된다. 아마 여러줄에 이상한 문자가 있었나?.. 하여간 가끔안되다가 되다가.
- 여러줄 필요한 곳의 타입을 textarea로 변경하니 잘 된다.
시간 동기화하기
월요일 아침엔 회의가 있습니다. 컴퓨터 시간으로 확인하고 가보니.. 헉. . 지각입니다. 이놈의 컴퓨터 시간이 늦어진거죠. 뭔 이런 일이.. 저기 있는 아날로그 시계는 정확한데, 항상 앞에두고 보는 시계가 부정확합니다.
그래서 시간 동기화하는 툴 만들었습니다. Indy를 이용하니 소스도 23줄 밖에 안됩니다. 뭐 Indy가 다하니깐요.
program TimeSync;
uses
Windows,
SysUtils,
IdSNTP;
{$R *.res}
begin
try
with TIdSNTP.Create(nil) do
try
Host := '2.kr.pool.ntp.org';
SyncTime;
finally
Free;
end;
except
on E: Exception do
MessageBox(0, PChar(E.Message), 'Error', MB_ICONEXCLAMATION);
end;
end.
시작 프로그램에 등록해야겠습니다.
추가: 10.11.02
Window Vista, Windows 7에서는 동작하지 않습니다. MSDN에 보면 SetLocalTime이 SE_SYSTEMTIME_NAME 권한이 필요하다고 되어있지요. 그래서 그렇게 해주고 했는데 안됩니다. ㅡㅡ, 그래서 Indy 소스도 뒤져봤는데 Indy도 SE_SYSTEMTIME_NAME 권한을 획득하고 처리하고 있습니다. 그래도 안됩니다.
결국 관리자 권한에서 실행하는 수 밖에 없군요.
찾아보면서 본 글중에 하나는 “도데체 일반 사용자가 시간을 조종할 필요가 뭐가있냐?”라는 건데, 해주고픈 말은 야 이눔아 내 컴퓨터 시간이 잘못되어있다니깐!!!! 그래서 정확한 시간으로 맞추고 싶다고!!!!