본문 바로가기

프로그래밍131

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.
Interface 요약 #4 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 7. Interface의 포인터 획득하기 var MyInteger: TFormattedInteger; MyNumber: IFormattedNumber; begin MyInteger:= TFormattedInteger.Create(12); MyNumber:= MyInteger; end; 컴파일시 정적으로 할당됨(만약, 객체가 해당 인터페이스를 지원하지 않으면 컴파일시 에러발생) var MyObject: TObject; MyNumber: IFormattedNumber; begin MyObject:= TFormattedInteger.Create.. 2012. 4. 19.
Interface 요약 #3 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 5. TInterfacedObject IUnknown 인터페이스의 실행부가 작성되어 있음(따라서, TInterfacedObjet를 상속하면 QueryInterface, _AddRef, _Release를 구현해줄 필요가 없음.) system.pas 에 정의됨 TInterfacedObject = class(TObject, IUnknown) protected FRefCount: Integer; function QueryInterface(const IID: TGUID; out Obj): HResul; stdcall; function _AddRef.. 2012. 4. 19.
Interface 요약 #2 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 4. GUID(Globally Unique Identifier) GetInterface 와 as 연산자를 사용하기 위해선 필요함(따라서 COM외에도 사용됨) Ctrl + Shift + G 로 생성 혹은 CoCreateGuid (Win API) 함수 호출 유일한 값임(현재 시간, 현재 프로세스 번호, MAC Address 등으로 생성) TGUID = record D1: LongWord; D2: Word; D3: Word; D4: array[0..7] of Byte; end; MyGuid:= ['{2DE825C1-EADF-11D2-B39F-0.. 2012. 4. 19.
Interface 요약 #1 지금으로부터 무려 10년전인 2002년 5월경, 델마당 개인게시판에 올렸던 총 9회의 글입니다. 유실된 줄 알았는데 싸이월드 게시판에 있는 걸 확인하고 복구합니다.;; 현재, 틈틈이 COM 공부를 하고 있는 중입니다. 해서 interface에 대해 이것저것 살펴보고 있는 중인데요. ^^ '사람은 아는 만큼 본다'라는 말을 절감하고 있습니다. 두어 달 전에는 볼 수 없었던 것들이 지금은 보이는 군요. 처음엔 아래 한글을 띄우고 공부한 것들을 강좌형태로 만들 생각이었는데 2페이지 가량 진행하다가 포기하였습니다. 아무래도 시간이 많이 부족하네요. 일단은 추후 문서화 작업을 하기로 하고... 급한대로 여기 게시판에다가 생각나는 부분을 요약할 생각입니다. 1. 추상 클래스 일반적인 클래스와 차이는 없으나, 거기에.. 2012. 4. 19.
파스칼로 만든 부트로더... - 1 - 2006년경 OS 제작에 한창 관심을 가지고 있던 무렵, Turbo Pascal 과 Delphi 로 모든 걸 제작해보고자 마음 먹고 이리저리 머리를 굴린 결과~ TP 로 부트로더를 만드는데 성공했다. { 000h~3FFh : Interrupt Vector Table 400h~4FFh : BIOS 500h~5FFh : DOS Parameters 1000h~7BFFh : unusable 7C00h~7DFFh : Boot Sector 7E00h~8FFFh : FAT Table 9000h~ABFFh : Directory Entry Table 10000h~1FFFFh : Stack 64 KBytes 20000h~2FFFFh : Boot Loader 64 KBytes 30000h~9FFFFh : Useable 44.. 2012. 4. 9.
PPP - Point to Point Protocol PPP 는 OSI 참조모델(2012/01/09 - [프로그래밍/서버관리] - OSI 7계층) 중 데이터링크(2계층)에서 동작한다. PPP Frame 은 다음과 같다. 상기 그림에서 Information 영역을 Protocol + Data 로 세분화하지 않으면 HDLC 의 프레임과 동일하다. 프로토콜에 따라 다음과 같은 값을 가지게된다. 간략하게 보면 다음과 같다. LCP(Link Control Protocol) 는 링크의 수립, 유지, 종료를 담당한다. PAP 와 CHAP 는 인증프로토콜이다. PAP 의 경우 clear text 로 계정과 암호를 보내기 때문에 보안상 취약하다. 따라서 MD5 로 해싱하여 처리하는 CHAP 방식이 많이 사용된다. NCP 는 서로 다른 망계층 프로토콜로 데이터를 전달할 수 .. 2012. 1. 11.
OSI 7계층 이젠 기억도 잘 안나는 OSI 7계층...ㅠㅠ 인터넷에 돌아다니는 이미지들을 참고하여 정리해보았다. 먼저, 각 층별 데이터 단위를 살펴보면 다음과 같다. 1계층 물리 계층: Bit 2계층 데이터링크 계층: Frame 3계층 네트워크 계층: Packet 4계층 트랜스포트 계층: Message, Segment 5계층 세션 계층: Message, Data 6계층 표현 계층: Message, Data 7계층 응용 계층: Message, Data 각 층은 아래 층의 데이터가 되며(Data Encapsulation), TCP/IP 에서 이러한 층간 관계를 나타내면 다음과 같다. HTTP 의 경우라면 다음과 같다. 각 층이 헤더와 바디로 구성되었다고 볼때 바디 즉, 직전 층에 해당하는 부분을 Payload 라고 부른.. 2012. 1. 9.
HTTP 1.1 규격 참고 링크 기본 규격 RFC 2616, HTML, TXT, PDF RFC 2617, HTML, TXT, PDF 그 외 유용한 관련 규격 인터넷 텍스트 메시지 구조: RFC 822, HTML, TXT, PDF URL/URI 정의: RFC 2396, TXT, PDF MIME 및 MIME types 정의: RFC 1521, HTML, TXT, PDF 관련 뉴스 및 업데이트 W3C 2012. 1. 4.
GStreamer 빌드하기 - Visual Studio 2008 Express 관련 소스를 http://ossbuild.googlecode.com/svn/trunk/ 에서 체크아웃 한다. Windows Installer XML (WiX) 3.5 이상 버전을 다운로드 받아 설치(Wix35.msi)한다. http://wix.sourceforge.net/downloadv35.html DirectX SDK November 2008 이상 버전이 깔려있지 않으면 설치한다. 다운로드 PyGobject 를 다운로드 받아 설치한다. 이때 설치되어있는 해당 파이썬 버전에 맞는 설치 파일을 선택한다. http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.28/ 이때, 파이썬이 설치되어있는 경로를 지정해준다. 끝으로 Visual Studio 2008 E.. 2011. 12. 23.
tsyntax 사용시 hooker.js 스크립트 버그패치 소스 하이라이트와 관련하여 많이 사용되고 있는 것은, 자바스크립트로 된 SyntaxHighlighter 이다. http://alexgorbatchev.com/SyntaxHighlighter/ 이러저러 검색해보니 티스토리에 간단하게 붙여쓸 수 있게끔 작업된 Syntaxhighliter for Tistory Blog 라고 만들어진 것이 있어 설명된 방식대로 붙여보았다. 사용 방법은 정말 단순하다. 아래 태그를 태그 직전에 추가해준다. ###html 그런 후 인용구를 추가하고 그 상태에서 다음과 같이 입력(위의 소스 하이라이트의 경우)하면 된다. ###html ### 이후 언어 지정은 Syntaxhighliter 를 참고하면 되겠다. 일단, 문제는 ### 를 지정하지 않은 일반 인용구인 경우~ 화면에 출력되지.. 2011. 12. 16.
AndEngine - 7 - Drawing a Sprite 스프라이트를 출력하는 예제인데 기존 AndEngine-Example 에서 이미지를 가져와 사용한다. assets 디렉토리 아래 gfx 디렉토리(다른 이름이어도 상관없다.)를 생성한 후 face_box.png 이미지를 복사하여 넣는다. Activity 의 onResume() 이 호출될 때, 즉, 최초 실행시 this.mGameLoaded 가 false 일때 onLoadResources() 메소드와 onLoadScene() 메소드가 호출된다. 이 메소드에서 스프라이트를 불러오는 작업을 처리한다. 먼저, 이전 사각형을 그리던 소스의 onLoadScene() 메소드와의 차이점을 살펴보자. @Override public Scene onLoadScene() { this.mEngine.registerUpdateHan.. 2011. 12. 12.
AndEngine - 6 - Drawing Rectangles Drawing Rectangles 예제 소스는 Drawing Lines 예제( 2011/12/02 - [프로그래밍/안드로이드] - AndEngine - 5 - Drawing Lines )와 큰 차이는 없다. 다만, onLoadScene() 에서 터치 관련 리스너를 등록하여, 사용자가 해당 씬을 터치할 경우 현재 화면을 캡춰하는 기능이 추가되어있다.(아래 anonymous class 영역) scene.setOnSceneTouchListener( new IOnSceneTouchListener() { @Override public boolean onSceneTouchEvent(final Scene pScene, final TouchEvent pSceneTouchEvent) { ... 생략 ... return .. 2011. 12. 6.
AndEngine - 5 - Drawing Lines 당분간 AndEngine Examples 에 있는 예제 소스들을 하나하나 살펴볼 생각인데, 관련 프로젝트를 계속해서 생성하는 것 보다 기존 샘플 프로젝트(2011/12/01 - [프로그래밍/안드로이드] - AndEngine - 2 - 샘플 프로젝트 생성)를 수정하고 지우는 식으로 테스트해볼까한다. 사실, 이렇게 블로그에 포스팅하는 것은 누군가를 가르치기 위한~ 거창한 목표 때문이 아니고, 일종의 호사스런 학습일지라고보면 된다. 그 말인 즉슨~ 자바도 잘 모르고, 안드로이드도 잘 모르고 심지어 OpenGL 도 잘 모른다는 뭐 그런 얘기다.(내 전공은 Object Pascal & VCL...) 일단, Jude Community 등을 통하여 AndEngine 의 자바소스들을 Import 하여 클래스 다이어그램.. 2011. 12. 2.
AndEngine - 4 - Examples AndEngine Examples 의 소스를 다음 경로에서 체크아웃한다. https://code.google.com/p/andengineexamples/ 이전 글 (2011/12/01 - [프로그래밍/안드로이드] - AndEngine - 3 - Extensions 추가하기) 과 같은 절차로 프로젝트를 Import 한다. Extension 들이 정상적으로 연결되었는지 확인한다. 정상적으로 모두 빌드되었으면 에뮬레이션 또는 안드로이드 폰에서 apk 를 설치하고 실행한다. 다음은 갤럭시 S2 에서 Examples 를 실행하였을때 모습이다. Benchmarks 의 Sprite Benchmark 를 실행한 화면~ 상세한 개발 문서는 존재하지 않지만, 예제만으로도 충분히 학습이 가능할 것으로 판단된다. 2011. 12. 1.