문득 코드를 작성하던 중 이런 생각이 들었다. "과연 지금 내가 작성한 이 코드가 분석하기 쉬운 코드일까?" 생각해보면 아마추어 일때를 제외하고는 새 코드 작성보다 다른 사람의 코드 분석하는 시간이 더 잦았고, 새 코드를 작성하더라도 다른 코드와 어울려야 했기 때문에 코드 분석은 늘 필요했다. 심지어 내 코드를 분석해야 되는 일도 잦았다. 기억력에는 한계가 있고, 시스템의 전체적인 이해도는 높을 수록 좋겠지만 세세한 코드 하나 하나가 하는 일까지 외울 필요는 없다고 생각한다. 그렇기에 내 코드를 내가 몇달이 지나고, 심지어 몇년 후에 봤을 때도 읽기 쉽고 유지보수하기 쉬운 코드를 만들기 위해 노력해야 한다. 그래서 우리는 디자인 패턴, 리팩토링 등을 통해서 좋은 코드를 만들기 위해 노력하고, 표기 법을 ..
1. ARP (Address Resolution Protocol) IP주소를 물리 주소(Mac주소)로 변환하기 위해 사용되는 프로토콜입니다. 2. ICMP (인터넷 제어 메시지 프로토콜, Internet Control Message Protocol) 네트워크 내에 발생할 수 있는 여러가지 문제를 제어하기 위한 프로토콜입니다. 대표적인 ICMP 패킷으로는 ping 패킷이 있습니다. 3. IGMP (인터넷 그룹 관리 프로토콜, Internet Group Management Protocol) 멀티 캐스트를 위해 존재하는 프로토콜. 멀티 캐스트 그룹에 가입/탈퇴 등의 관리를 위한 프로토콜 입니다. 4. IP IP는 비연결 지향적이며, 신뢰성이 없기에 목적지까지 패킷을 전달하기 위해 노력하지만 패킷이 유실 될 수..
1. 호스트 (Host) 일반적인 PC나, 서버, 또는 WIFI등을 이용한 소형 무선 기기가 될 수도 있습니다. 2. NIC (Network Interface Card) 네트워크 카드라 불리는 이 장치는, 단말기에 연결되어 데이터를 송수신 하는 역할을 합니다. 흔히 랜카드(이더넷 카드)라 불리는 장비입니다. 3. 중계기 (Repeater 또는 Regenerator) 중계기란 잡음등으로 약해진 신호를 원래의 비트로 재생하는 역할을 해주는 장치입니다. 특정 거리마다 중계기가 존재해야만 신호가 유실되지 않고 전송될 수 있습니다. 4. 브리지 (Bridge) 브리지는 네트워크를 작은 단위로 분할 할 때 사용 됩니다. 5. 라우터 (Router) 네트워크 주소(IP)를 이용해서 데이터를 최적의 경로로 찾아가게 해..
프로그램을 작성하다보면, 객체간에 동적으로 결합이 필요한 경우가 많습니다. 객체간에 동적으로 결합/해제를 통해서 기능을 추가/제거 하는 것을 데코레이터 패턴이라고 합니다. class LogDecorator { public: void Log(char *str, ...); }; class Game { LogDecorator *m_pLogDecorator; public: void Start() { if(m_pLogDecorator) m_pLogDecorator->Log("Game::Start() ..."); //게임시작처리 } void End() { if(m_pLogDecorator) m_pLogDecorator->Log("Game::End() ..."); //게임종료처리 } void SetLog(LogDec..
객체의 내부 동작 하나 하나보다, 어떤 동작을 한다는 것 자체가 중요할 때가 있습니다. 캐릭터에게 행동을 시킬 때, 어떤 행동을 하는지는 중요하지 않고, 행동을 한다는 그 자체만 중요할 때가 바로 그렇습니다. 이렇게 행동을 일반화하는 것을 커맨드 패턴이라고 부르고, 캡슐화의 구현이라고 보셔도 좋습니다. 다만 일반 캡슐화와는 조금 다른것이, 커맨드 패턴은 한 클래스당 한가지 일만 시키는 경우가 많다는 것입니다. 동작 하나를 하나의 클래스로 관리함으로써, 다양한 동작을 관리하기 쉽게 하겠다는 것이지요. class ICommand { public: virtual void Act() = 0; }; class CharacterParent : public ICommand { protected: virtual Cha..
동일한 종류의 객체 끼리는 중복된 정보를 가지게 될 가능성이 높습니다. 그래서 같은 종류의 객체끼리 중복되는 정보를 공유하는 것이 메모리 관리 측면이나, 중복을 제거하는 측면이나 이롭습니다. 중복되는 정보를 공유 하는 방법을 플라이 웨이트 패턴이라고 합니다. class ImageData { int m_nIdx; int m_nWidth, m_nHeight; char *m_pData; public: char *GetData(){return m_pData;} int GetWidth(){return m_nWidth;} int GetHeight(){return m_nHeight;} }; class ImagePool // ImageData의 객체 소유권은 ImagePool에 있다. { public: ImageDat..
- Total
- Today
- Yesterday
- 디자인 패턴
- TraceRoute
- 좋은 프로그래머
- NDC2013
- 멀티스레드
- TDD
- Rails
- perfmon
- c언어
- SQLite Spy
- 루비 온 레일즈
- 리버스 엔지니어링
- EasyExec
- Ruby on Rails
- 게임개발포에버
- 바로가기 프로그램
- 게임데브포에버
- 엘키
- RoR
- 조엘 온 소프트웨어
- MS-SQL
- 디버깅
- ruby
- ftp
- SDL
- CppSQLite
- 루비
- EzShortcut
- 임백준
- svn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |