본문 바로가기

개발일지26

개인용 스트리밍 서버 프로그램 개발에 앞서... 2007년 7월 이후, 지금까지 기억에 남는 프로젝트를 떠올려보니 대략 20여개 정도의 과제를 진행한 것 같습니다. 4개월에 하나씩 끊임없이 프로젝트를 완료해온 셈인데요. PC 어플리케이션 개발자로서 이 정도 수량이면, 과제에 연속성이 없었다라고 보시면 되겠습니다. 걔중에는 잘만 키워보면~ 어디에 내놔도 손색없는 아까운 놈들이 몇몇 있었는데요. 중소 규모의 회사 사정(?)상 당장 돈되는 일에 투입되며 버려지는 경우가 대부분이었습니다. 돌이켜보면 상용 프로그램을 개발하기 시작한 2001년 이후 지금까지 늘 이런식이었고... 이대로라면 앞으로도 나아지지 않을 것이란 참담함에 가슴이 시렸습니다. 하고 싶은 일(Job)을 하지만 정작 하기 싫은 일(Work)을 하고 있는 자기 모순... 어릴적 꿈은 이런게 아니.. 2013. 12. 3.
윈도우 hosts 파일 수정 프로그램 v0.5 (Windows Hosts Editor) 새 버전은 실행 파일 외 DB 파일(저장소)이 하나 더 추가되었습니다. 기능상 추가된 주요 내용은 다음과 같습니다. 1. 읽기전용 hosts 파일 수정 기능 2. hosts 파일이 존재하지 않는 경우 신규 생성 기능 3. hosts 파일 내용의 저장소 저장 및 불러오기 기능 이전 기능들은 예전 글들을 참고해주세요. 2013/10/25 - [삭신의 도구들/삭신 hosts] - 윈도우 hosts 파일 수정 프로그램 v0.2 2013/10/20 - [삭신의 도구들/삭신 hosts] - Windows Hosts 파일 수정 프로그램 v0.1 다운로드는 아래 링크를 클릭하시면 됩니다.(SakSinHosts.exe 와 SakSinHosts.db 파일은 반드시 같은 폴더에 위치하고 있어야합니다.) 추가된 기능의 스크린.. 2013. 12. 2.
윈도우 hosts 파일 수정 프로그램 v0.2 기존 Windows hosts 수정 프로그램(2013/10/20 - [삭신의 도구들/삭신 hosts] - Windows Hosts 파일 수정 프로그램 v0.1)에서 몇 가지 기능을 추가하였습니다. 1. 저장 단축키(Ctrl+S) 기능2. 저장시 DNS flush 적용(브라우저 창을 닫지 않아도 변경된 hosts 정보 적용)3. 구글 DNS 를 이용한 IP 조회 및 추가4. URL 표시 연동 기능 일부 개선5. 드래그 영역 수정 다운로드는 바로 아래 링크를 클릭해주시고~ 다운로드 페이지 추가된 기능 스크린 샷은 다음과 같습니다. 원래, 유튜브 스트리밍 속도 개선법으로 알려져있는 hosts 파일 수정(http://www.parkoz.com/zboard/view.php?id=my_tips&no=13885) 기.. 2013. 10. 25.
Windows Hosts 파일 수정 프로그램 v0.1 서버 연동 작업시 테스트를 위하여 Windows hosts 파일을 수정하는 경우가 종종있는데, 작업할 때도 귀찮고 누군가에게 설명할 때는 더더욱 귀찮았다.ㅠㅠ 하여 블로그에 관련글(2012/04/20 - [프로그래밍/서버관리] - Windows 7 hosts 파일 수정)을 작성하여 전달하였는데... 이노무 uac 문제 때문에 또 한번 호출이 오는 경우가 빈번하였다. 그래서 아예 2000 이후 현재까지 윈도우즈에서 hosts 파일을 수정할 수 있는 간단한 어플을 만들었다. 다운로드 페이지 상기 첨부파일을 다운로드 받아, 아무 폴더에나 넣고 압축을 푼 후 실행만 하면 된다. 만약, uac 권한이 필요하다면 알아서 경고창이 뜬다. 백신 등의 프로그램에 의해 차단되지 않는 이상 보통 아래처럼 hosts 파일을 .. 2013. 10. 20.
파스칼(Pascal) 비난과 멸시, 그 원형을 찾아서... - 1 - 지금은 많이 줄었지만, 과거 1970, 1980년대에는 파스칼 언어에 대한 공격적인 분위기가 있었습니다. 그리고 그런 이야기들은 확대 재생산되어 전후사정을 잘 모르는 이들에게 막연한 편견을 형성하는 역할을 하게 됩니다. 따라서 한 세대라고 할 수 있는, 30 ~ 40 여년이 지난 오늘날 당시의 상황과 그들의 이야기를 역사적 관점에서 판단해보고자 합니다.(물론, 저의 주관적 견해도 꽤 관여하고 있음을 밝힙니다.) 먼저, 파스칼이 등장한 70년대 초반 분위기를 살펴볼까요? 컴퓨터 : 대형 고가의 장비, 일부 대학 및 기업의 연구소에 설치 대표 컴퓨터 언어 : 시스템 프로그래밍을 위한 어셈블리어, 수치연산을 위한 포트란(FORTRAN) 프로그래밍 관련자 : 대학 석박사 및 대기업의 연구원 당시 컴퓨터란 오늘날.. 2013. 1. 29.
파스칼(Pascal) 연서(戀書) - 3 - after 1980, by Hejlsberg 시작하기 전, 다시 1970년대와 Apple 의 이야기를 하여야할 것 같습니다. ^^ 1970년대의 컴퓨터라고하면 개인이 소지할 수 없는 고비용 빅사이즈의 괴물이었습니다. 이러한 컴퓨터에 대한 개념이 바뀌는 일대 사건이 일어나는데 그것은 바로 Apple I(1976년)과 같은 개인용 컴퓨터(PC, Personal Computer) 혹은 가정용 컴퓨터(Home Computer)의 등장입니다. 실제 제품 사진은 다음과 같습니다. 천재 스티브 워즈니악의 작품이자 스티브 잡스의 돈냄새 감각에 의하여 세상에 등장합니다. 이 당시에는 이렇게 키트 형태로 판매하였고, 본체 및 키보드와 모니터를 겸비하여 판매하는 것은 Apple II 부터입니다. 왜 이 이야기를 하느냐? 크게 두 가지 이유가 있겠습니다. 첫째는 Ras.. 2012. 9. 11.
파스칼(Pascal) 연서(戀書) - 2 - after 1980, by Apple 주의!! 이 글은 파스칼 혹은 델파이 개발자들 외에는 읽기 어려울 수 있습니다. 1980년 이전 파스칼은 Pascal-Px 시리즈와 Pascal-P2 계열인 UCSD Pascal 에 의해 발전됩니다. 특히, UCSD Pascal 은 1980년 이후에도 지속적으로 영향을 주는데요. 바로 1980년대 초반, 베이직 언어의 부족한 부분을 메우기 위하여 Apple II 와 Apple III 컴퓨터에 UCSD Pascal 이 포팅됩니다. 이것을 토대로 애플은 자체 파스칼 컴파일러를 개발하게되는데, 1982년 Lisa 컴퓨터의 Lisa Workshop 에 Lisa Pascal 이라는 이름으로 내장됩니다.(스티브 잡스와 관련한 이야기는 하지 않도록 하겠습니다. 다만, 제 개인적인 입장은 스티브 워즈니악은 칭송받아 마.. 2012. 9. 11.
파스칼(Pascal)의 예약어 중 가장 오래된 놈은? 페이스북의 여러 델피언들을 당황하게 만들었던 바로 그 문제~ 다음 중 파스칼의 reserved words 중에 가장 나이가 오래된 놈은? outabsolutepackedobjectclass 정답은 class 입니다.^^ 이전 글, 2012/09/07 - [프로그래밍/주저리주저리] - 파스칼(Pascal) 연서(戀書) - 1 - before 1980 에서 이 내용을 추가한다는 것을 깜박하였네요. 다음은 1972년 개정된 문서 그러니까 적어도 1970년부터 1972년까지 사용된 파스칼 문법입니다. 그리고 1973년 문서에서는 빠집니다. ^^ 그러니 아무도 모를 수 밖에~ ㅋㅋㅋㅋ 이후, 객체지향(OOP)을 수용하면서 class 는 다시 재등장하게됩니다. 2012. 9. 7.
파스칼(Pascal) 연서(戀書) - 1 - before 1980 컴퓨터 언어 중 파스칼(Pascal) 이라는 놈이 있습니다. 저와 20년 이상 함께한 지기인데요. 긴 시간을 함께한 반면 누군가에게 제대로 소개해본 적은 없는 것 같네요. 물론 언어에 대한 우월을 논하고자 하는 것은 절대 아닙니다. 오히려 한국의 프로그래머들이 간과하고 있는 부분을 이 녀석을 통해 이야기할 수 있을 것도 같고... 또한, 기존 Pascal 을 사용하고있는 여타 프로그래머들에게 잘 몰랐던 녀석의 새로운 면을 알려주고 싶다는 생각도 들었구요. 자자~ 그럼 파스칼의 창시자를 만나 볼까요? Niklaus E. Wirth 1934년 스위스 출생으로 전자 공학과 컴퓨터 과학이 전공입니다. 여러 경력이 있는데~ 1968년에 취리히 스위스 연방 연구소(ETH 취리히)의 정보학 교수가 되었으며 이후 19.. 2012. 9. 7.
Delphi 투게더의 Observer 패턴 소스 오류 최근 XE2 에서 패치되었는지 모르겠지만, 투게더가 Delphi 에 포함되고 난 이후(2006부터~) 지금까지 이 소스 버그는 사라지지 않고 있다. 나야 UML 작성시 투게더를 사용하고 있지 않아 그냥 수정한 소스를 쓰고있지만, 만약 Pattern Organizer 에 등록된 Observer 패턴을 사용하여 소스를 생성하는 경우라면 네이티브 환경에서 사용시 AV 에러가 발생한다. 패치한 소스는 다음과 같다. IObserver = interface procedure UpdateObserver(ASubject: TSubject); // 폼에서도 사용할 수 있게 메소드명을 변경함 end; TSubject = class strict private var FObservers: TList; strict protec.. 2012. 4. 19.
POSA2, Double-Checked Locking Optimization 패턴 이 녀석도 그렇게 대단한 놈은 아니지만, 멀티 스레드 환경에서 Singleton 을 사용하는 경우라면 꼭 기억해 둘 필요가 있겠다. 내 경우 Delphi 에서 보통 다음처럼 Singleton 을 작성한다. TSingleton = class protected class var Instance: TSingleton; constructor Create; destructor Destroy; override; public class function GetInstance: TSingleton; class procedure ReleaseInstance; end; { TSingleton } constructor TSingleton.Create; begin inherited; end; destructor TSinglet.. 2012. 4. 9.
POSA2, Scoped Locking, Strategized Locking 패턴 POSA2 의 동기화 관련 패턴들 중 가장 기본이라고 할 수 있는 Scoped Locking 은 사실 별 거 없다. 이런걸 굳이 패턴으로 불러야하나....싶은 부류 중 하나이다. 닥치고 소스~ TGuard = class protected FLock: TSynchroObject; FOwner: Boolean; public constructor Create(ALock: TSynchroObject); destructor Destroy; override; procedure Acquire; procedure Release; end; { TGuard } procedure TGuard.Acquire; begin if Assigned(FLock) then begin FLock.Acquire; FOwner := True.. 2012. 4. 5.
Proactor with EPOLL, SELECT IOCP 를 사용한 Proactor 구현( 2012/02/13 - [프로그래밍/OOP] - Proactor with IOCP )은 비교적 많은 곳에서 소개가 되고있지만, EPoll 과 같은 놈을 Proactor 로 구현하는 경우는 거의 없어 보인다.;; 아무튼 앞으로 사용할 통신 프레임워크에 멀티플랫폼이라는 사치품(?)을 달 계획을 추가하다보니 EPoll 이나 KQueue 혹은 기존 POSIX 류의 Select 디스패치도 같은 구조 속에 녹일 필요가 생겼다. Proactor 냐? Reactor 냐? 잠시 고민했지만~ 아무래도 개인적으로 아직까지 메인 개발은 윈도우즈인지라 IOCP 와 최고의 궁합을 보여주는 Proactor 기반으로 설계해보았으며~ 개발 작업은 기본적인 에코 서버를 구현 & 테스트하는 형태.. 2012. 3. 15.
Delphi 에서 Leader-Follower 패턴 구현 POSA2 에서 Leader-Follower 패턴의 경우 pthread 기반으로 구현하여 설명하고 있다.( 2012/03/09 - [프로그래밍/Lazarus] - FPC 에서 Leader-Follower 패턴 구현 ) 이를 Windows 기반으로 작성해보았다. unit DLNA.Thread; interface uses Winapi.Windows, System.SysUtils, SyncObjs; const NO_CURRENT_LEADER = 0; type TGuard = class protected FMutex: TMutex; FOwner: Boolean; public constructor Create(AMutex: TMutex); destructor Destroy; override; procedure A.. 2012. 3. 14.
FPC 에서 Leader-Follower 패턴 구현 FPC 에서 pthread 기반 Leader-Follower 패턴을 구현하였다. Unbound thread set 이며, 사용 용도는 Worker Thread Pool 정도~ 예외 처리 등 많이 다듬어야하지만~ 일단 관련 소스 첨부~ unit DLNA_Thread; {$mode objfpc}{$H+} interface uses Classes, SysUtils, BaseUnix, pthreads; const NO_CURRENT_LEADER = 0; type TPThreadParameter = record Mutex: ppthread_mutex_t; Condition: ppthread_cond_t; Terminated: Boolean; Suspended: Boolean; Owner: TObject; end;.. 2012. 3. 9.