본문 바로가기

분류 전체보기358

FPC 오브젝트(object) 형 최초 객체지향 프로그래밍(OOP)이 소개되었을 때, 터보 파스칼(TP)은 record 를 확장한 object 형을 사용하였습니다. 현재 델파이의 경우 class 를 주로 사용하지만 여전히 object 형을 지원하고 있으며 이는 프리 파스칼(FPC) 도 마찬가지입니다. 다음은 레퍼런스 문서에 있는 내용을 제 개인적 기준으로 요약 정리해 보았습니다.^^ 매뉴얼에서는 멤버 변수를 field 로 지칭하고 있습니다. 1. Declaration type TObj = object private Caption: ShortString; public constructor Init; destructor done; procedure SetCaption(AValue: String); function GetCaption: Str.. 2014. 4. 17.
FPC 로 OS 커널 만들기... - 2 - 오늘 포스팅은 작업 일지에 가까울 거 같습니다. 아무래도 제게 주어진 시간이 많지 않은 관계로 최대한 빨리 작업을 진행하고 있거든요. 말 그대로 닥치는대로 하고있습니다. ^^ 정석대로라면 부트로더를 통해 보호 모드로 진입하고 이후, 인터럽트, 디바이스, 태스크 스위칭, 페이징 등 거의 정해진 절차처럼 커널 개발을 하게 됩니다. 수많은 OS 개발자들이 해왔던 일이고 저도 그 중 한명이 되는 겁니다. 하지만 기왕지사 조금 무리를 하며 일을 진행하는 것인만큼 뭔가 의미가 있어야하지 않을까란 생각이 들었습니다. 즉, 이 일을 해야하는 이유 혹은 가치를 정할 필요가 생겼습니다.(코딩을 하며 멀티 태스킹으로 고민했습니다. ㅋㅋ) 유산의 발굴 2년전 파스칼과 관련한 글을 포스팅한 적이 있습니다. 2012/09/07 .. 2014. 4. 11.
FPC 2.6 지원 CPU 및 OS user.pdf 문서 앞부분 1.2 About the compiler 의 내용입니다. 자꾸 찾아보게 되서... ^^ CPUIntel i386 및 i486, 펜티엄 계열과 상위 버전AMD64/x86_64PowerPCPowerPC64SPARCARMm68k OSDOSLINUXAMIGA (0.99.5 버전만)WINDOWSMac OS XOS/2FREEBSDBEOSSOLARISNETBSDNETWAREOPENBSDMorphOSSymbian 다음은 rtl 소스 디렉토리의 서브 디렉토리 입니다. 정말 다양합니다.ㅎㅎ 일단 당분간 목표는 여기에 개인적으로 작업하고있는 자작 OS 를 추가하는 겁니다. FPC 아니었다면, 컴파일러까지 만들겠다고 생난리를 쳤을텐데 그나마 다행이네요. 아직은 아이디어 단계이긴하지만 자바의 조상이.. 2014. 4. 10.
FPC 로 OS 커널 만들기... - 1 - 예전부터 파스칼 OS 제작을 꿈꿔오고 있었는데요. 현실적인 제약 때문에 그냥 은퇴하면 해야겠거니...하고 생각했습니다. 그러다 최근 시간적 여유가 생겨 미뤘던 작업을 하나 둘 해보고 있습니다.(얼마나 갈런지요? ㅠㅠ 먹고 살아야하니...) 일단, Intel 계열 CPU 의 경우~ 처음 부팅시 리얼 모드에서 동작하다 보호 모드로 전환하는 과정을 거쳐야하는데... 리얼 모드는 16비트 기계어로 동작합니다. 따라서 부팅의 시작을 담당하는 부트로더의 경우, 16비트 기계어 코드가 필요한 것이죠. 약간의 결벽증이 있던 저는 2006년경 TP(Turbo Pascal)로 관련 작업을 해보았습니다. 2012/04/09 - [프로그래밍/OS] - 파스칼로 만든 부트로더... - 1 - 당시에는 TP 와 델파이로만 OS .. 2014. 4. 9.
CodeTyphon 으로 FPC 크로스 컴파일러 생성하기... 수동으로 크로스 컴파일러를 생성하는 방법은 2014/04/04 - [프로그래밍/OS] - FPC 64비트(x86_64) 리눅스에서 32비트(i386) 크로스 컴파일러 생성하기... 를 참고해 주세요. 먼저, CodeTyphon 을 다운로드합니다. http://www.pilotlogic.com/sitejoom/index.php/downloads/finish/30-codetyphon/123-codetyphonins-zip 윈도우, 리눅스 모두 상기 파일을 다운로드하면 됩니다. 아울러 Vista 이후 윈도우의 경우 관리자 권한을 사용하여 설치 과정을 진행하면 되겠습니다. 다운로드한 압축파일을 적당한 곳에 해제한 후, install.bat 를 실행합니다. 아참 아래 스샷에서처럼 CodeTyphon 이라는 디렉토.. 2014. 4. 8.
2014년 3월말 함허동천 그리고 마니산 - 3 - 오전 7시 40분경 출발하여 오전 9시 30분경 정상 도착... 대략 두 시간 가량 걸려 참성단에 도착하였습니다. 헬기장 주변에서 잠시 휴식을 취한 후, 작년 저를 좌절케했던 입구로 향했습니다. 개방시간이 10시인데 벌써 열려있네요. @@ 그리고 올라가는 나무계단... 조금씩 음미하며 올라갑니다. 자세히보시면 새 한마리가 보일겁니다. ^^ 거의 다 올라왔습니다. 정상 도착! 그리고 왔던 능선을 돌아봤습니다. 여전한 안개~ 생각보다 조촐한 공간이더군요. 오른쪽엔 소사나무가... 여흥을 즐길 요량으로 여기 저기 봤던 곳을 계속 돌아봤습니다. 이렇게 저렇게... ^^ 들어가지는 못하니까 최대한 붙어서... 자세히보시면 기러기떼가 보입니다. ^^ 헬기장 쪽... 놓친 곳은 없나... 두리번거리며 적혀있는 글들도.. 2014. 4. 8.
2014년 3월말 함허동천 그리고 마니산 - 2 - 안개가 자욱한 상태로 보아 마니산을 오르는게 불가능해보였지만, 매사 모든 것이 잘 맞아떨어지는 경우가 얼마나 될까란 생각이 들었습니다. 최적의 조건을 찾다 결국 아무것도 못하게 될 것이 뻔하기에... 힘들겠지만 산을 오르기로 결심하였습니다. 다행히 비가 올 분위기는 아니었습니다. 시작 지점... 비가 와서 그런지 아주 조금 계곡물이 늘었습니다. 참성단까지 1.6km 지점... 안개가 정말;;; 길이 애매할 때는 이렇게 등산회 등에서 묶어둔 끈을 참고합니다. 아니면 이런 나무 계단을 찾기도 하구요. 하지만 점점 올라갈수록 길이 어려워집니다. 함허동천에서 마니산 가는 등산로는 생각보다 힘듭니다. 제가 작년에 아주 고생을 했거든요. ^^ 얼마 올라가지 않아 계단을 만났습니다. 분명, 작년엔 못봤는데... 왠지.. 2014. 4. 7.
2014년 3월말 함허동천 그리고 마니산 - 1 - 지난 3월 27일(목) 1박 2일로 강화도 함허동천을 다녀왔습니다. 작년 4월, 5월에도 갔다왔는데요. 5월에 갔을 때는 어마무시한 날파리떼와 캠핑족들로 고생했던 기억이 납니다. 하여 함허동천과 마니산은 3월이나 겨울이 적기이지 않을까 싶습니다. 계곡이있다고는 하지만 발목조차 담그기 민망할 정도로 깊이가 얕거든요. ^^ 오전 10시 15분 정도에 부평시장역에서 90번 버스를 타고 11시 52분에 강화 터미널에 도착하였습니다. 여기서 함허동천으로 갈 때는 순환버스를 이용하게 되는데, 갈때는 2번 버스를~ 올때는 1번 버스를 타고 돌아오면 됩니다. 배차 간격은 한시간 이구요. 강화터미널에서의 출발 시간은 다음과 같습니다.(우측 위가 1번, 아래가 2번) 12시 50분 차를 타야하는데, 시간이 많이 남은 관계.. 2014. 4. 7.
FPC 64비트(x86_64) 리눅스에서 32비트(i386) 크로스 컴파일러 생성하기... CentOS 에서 라자루스를 설치하였다면, /usr/share/fpcsrc/2.6.2 와 같은 디렉토리에 fpc 의 소스가 설치되어있을 겁니다. 해당 디렉토리 아래 compile 디렉토리로 이동한 후, 아래의 명령어를 입력합니다. cd /usr/share/fpcsrc/2.6.2/compiler make cycle CPU_TARGET="i386" 어차피 리눅스에서 실행하고 32비트 리눅스 컴파일러이기 때문에 OS_TARGET 은 생략하였습니다. 끝에 오류 메시지가 나오는데, compile 디렉토리에 ppcross386 이 무사히 생성되어있길래 그냥 무시하였습니다.(ㅡㅡㅋ) 심볼링 링크를 생성해줍니다. ln -s /usr/share/fpcsrc/2.6.2/compiler/ppcross386 /usr/bin .. 2014. 4. 4.
GRUB Legacy 를 이용한 부팅가능한 CD 이미지 만들기 GRUB 2 와 달리 기존의 GRUB 1 의 경우 GRUB Legacy 로 칭합니다. 먼저, CentOS 에서 관련 패키지들을 설치합니다. 저 같은 경우에는 그냥 설치되어있더군요. yum install genisoimage grub 작업 디렉토리(여기서는 isofiles)를 생성한 후, boot/grub 디렉토리도 생성합니다. mkdir -p isofiles/boot/grub 생성한 grub 디렉토리에 기설치된 grub 패키지의 El Torito 파일들을 복사합니다. 참고로 El Torito 는 CD-ROM 부팅 관련 표준으로 이해하면 되겠습니다.(64비트 CentOS 인 관계로 경로가 x86_64-redhat 이 붙습니다.) cp /usr/share/grub/x86_64-redhat/stage2_elt.. 2014. 4. 3.
라자루스(Lazarus) 한글 주석 입력하기...(뻘팁) 아시다시피 현재 라자루스 IDE 상에서 한글 입력이 직접적으로 되지 않습니다. 특히 주석을 작성할 때, 여러모로 곤란한데요. 이를 극복할 수 있는 방법으로 뭐가 있을까요? 어차피 코딩의 95%는 영문이니까... 기왕지사 100% 로 만들어버린다. 아울러 영문작문법 서적을 구입한다.소스가 제공되니까 라자루스 IDE 를 아주 손쉽게 수정해 버린다.(설마 저한테 이런 걸 기대한 건 아니죠? ㅡㅡa)주석은 필요없다. 코드가 이야기를 한다.다른 에디터에서 한글 주석을 작성한 후 복사하고 이를 붙여넣는다. 저는 인간적인 사람이라 4 의 방식을 선호하는 편인데요. 저처럼 4 에 해당하는 분들을 위한 꼼수입니다. 그냥... Ctrl + Shift + T 를 뙇~ 하고 누르십시요. 네네~ ToDo 입력창이 뜹니다. 후후.. 2014. 3. 24.
라자루스(Lazarus) 자동 완성 기능, 대입 연산자(:=) 앞 뒤 공백 삽입하기.. 라자루스 사용 관련 팁을 짧더라도 그때 그때 포스팅하도록 하겠습니다. ^^ 라자루스에서 코딩을 하다보면 IDE 의 자동 완성 기능이 기존 사용하던 습관과 조금 맞지 않을 때가 있습니다. 물론 사람들 마다 차이가 있을 텐데요. 저는 대입 연산자가 항상 거슬리더군요. 앞 뒤를 꼭 띄어 써야 뭔가 불안(?)하지 않다고 할까요? 다행히 라자루스에는 관련 세부 옵션들이 존재합니다. 먼저, Tools > Options... 메뉴를 실행합니다. 그리고 Codetools 의 Space 항목으로 이동합니다. 그리고 아래 이미지처럼 Symobol 항목을 체크하고 적용합니다. Preview 에 해당 옵션 반영시 나타나는 코드가 샘플로 나오니 꼭 확인하시기 바랍니다. 사실 Codetools 의 옵션값들만 잘 통일 시켜도 프로.. 2014. 3. 24.
라자루스(Lazarus) 파일명 대소문자 혼용 사용하기 라자루스에서 파일을 저장할 때 파일명이 자동으로 소문자로 변경되는 경우, Tools > Options > Environment > Naming 설정을 확인합니다. 만약, Auto rename file lowercase 가 선택되어있다면 자동으로 파일명을 소문자로 변경합니다. 대소문자 혼용으로 사용하실 경우라면 No automatic renaming 을 선택하면 됩니다. 별거 아니지만 은근 신경 쓰이던 부분인데... 찾아보니 역시 관련 옵션이 존재하는군요.^^ 2014. 3. 21.
CentOS GitEye 설치하기 SmartSVN(2014/03/19 - [프로그래밍/서버관리] - CentOS SmartSVN 설치하기) 에 이어, 이번엔 리눅스에서 쓸만한 Git GUI 클라이언트를 찾아보았습니다. 이름하여 GitEye... 다운로드 받을 수 있는 URL 은 http://www.collab.net/downloads/giteye 입니다. 저는 64비트 CentOS 인 관계로 64비트 파일을 다운로드하였습니다. 이상하게 크롬 브라우저(리눅스 브전)에서 다운로드가 완료되지 않는 현상이 발생하였습니다. 일단, URL 을 복사하여 wget 으로 그냥 다운로드한 후, /usr/share/GitEye 아래에 압축을 풀었습니다. 그리고 압축을 푼 디렉토리의 GitEye 를 실행합니다. cd /usr/share/GitEye./GitE.. 2014. 3. 20.
CentOS 패키지 강제 설치하기 보통 yum 을 사용하여 패키지를 설치하는데요. 의존성 문제 등으로 꼬이는 경우가 있습니다. rpm 은 이럴때 강제설치 옵션이 있는데 yum 은 마땅한 방법이 없습니다. 이럴때 사용하는 방법.... yum install yum-downloadonly yum 플러그인 중 downloadonly 를 설치합니다. 이 플러그인을 사용하면 설치대신 특정 경로에 패키지를 다운로드할 수 있습니다. 추가된 옵션은 --downloadonly 와 --downloaddir 이 있습니다. 다음과 같이 사용합니다. yum install ffmpeg ffmpeg-devel --downloadonly --downloaddir=/usr/local/src/ffmpeg 설치과정은 동일하지만... 다운로드한 후에 더 이상 진행하지 않고 .. 2014. 3. 19.