본문 바로가기 메뉴 바로가기

엘키의 주절 주절

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

엘키의 주절 주절

검색하기 폼
  • 분류 전체보기 (360)
    • BlahBlah (40)
    • Book review (44)
    • C++ (62)
      • boost (2)
      • General (41)
      • network (0)
      • Debugging (9)
      • Rendering (5)
      • Visual Studio (5)
    • Java (0)
    • C# (2)
      • Unity (1)
      • General (1)
      • Winform (0)
    • Web (15)
      • General (1)
      • Django (3)
      • Ruby on Rails (10)
      • Node.js (1)
    • Network (23)
    • Scripts (13)
      • Python (1)
      • Ruby (9)
      • JavaScript (2)
      • Batch (1)
    • General (43)
      • Parerell (8)
      • Algorithm (0)
      • DataStructure (0)
      • AI (1)
      • Multimedia (1)
      • XML (1)
      • Profiling (2)
      • Environment (8)
      • Hardware (1)
      • Utility (18)
      • Etc (3)
    • OS (14)
      • Windows (7)
      • Linux (7)
    • Software Engineering (46)
      • Unittest (4)
      • Design Pattern (19)
      • Develop Theory (9)
      • Knowhow (14)
    • Database (19)
      • General (7)
      • PostgreSQL (2)
      • MS-SQL (8)
      • MySQL (0)
      • SQLite (2)
      • Redis (0)
    • Reverse Engineering (14)
    • Open source (25)
      • Game (9)
      • EzShortcut (11)
      • Libraries (5)
      • Light (0)
  • 방명록

Software Engineering (46)
좋은 프로그램 개발을 위한 원칙

Open-Close 원칙 - 객체는 수정(modification)에는 닫혀있고(Close), 확장(extension)에는 열려있어야(Open) 한다. 중복을 제거하라 - 같은 기능을 하는 코드를 묶어, 중복을 제거하자는 원칙. 메소드 간소화 - 메소드는 두가지 일을 하게 만들지 말아라. - 메소드의 이름에서 벗어나는 일을 하지 말라. - 큰 규모의 행동이 필요하다면, 더 큰 범위의 단어로 메소드 명을 짓고, 그 큰 동작을 완성 시키기 위한 메소드의 연결만으로 구현하라. 직교성 - 클래스 끼리의 의존도를 낮춰, 해당 클래스가 변화를 국소화 시키고, 재사용을 촉진하라 가역성 - 변하지 않는 것은 없다. 코드도, 설계도 변화에 대비하라. 계약에 의한 설계 - 이 함수에 들어오기 전에 기대하는 선행 조건(Pre..

Software Engineering/Develop Theory 2010. 8. 20. 02:16
CppUnit 세팅하기

Gui를 지원하고 테스트를 선택할 수 있는 멋진 테스트 프레임워크인 CppUnit을 사용해봅시다. CppUnit 미디어 위키 http://sourceforge.net/apps/mediawiki/cppunit CppUnit 다운로드 페이지 http://sourceforge.net/projects/cppunit/ 위 다운로드 페이지에서, CppUnit을 다운로드 받으세요.CppUnit은 MSVC 6.0의 프로젝트 파일인 dsw로 작성이 되어있습니다. 기본적으로 MSVC 6.0의 프로젝트 파일은 업그레이드 시 큰 문제가 없기 때문에, (CppUnit은 표준을 잘 지켰기에 ) VS7.x 버전 이상에서도 무리 없이 사용 가능합니다. 압축을 푸신 후에, ".\src\CppUnitLibraries.dsw" 를 컨버팅..

Software Engineering/Unittest 2010. 1. 21. 21:11
문제 해결 노트

나의 리팩토링 기준 및 리팩토링 방법 정리 1. 중복을 제거하라. (DRY. Don't Repeat Yourself)같은 일을 하는 클래스, 혹은 메소드 등이 한 곳에만 존재하도록 하라. 2. 메소드가 존재해야 할 클래스는 명확해야 한다. (직관성)기본적으로 어떤 동작을 행하는 쪽에 메소드를 만들어라. (그 일을 하는데에 필요한 멤버도 포함)예를 들어, 밥을 먹는다면 밥을 먹는 주체는 사람이다. 그렇다면 사람 클래스에 무언가를 먹는다는 메소드(Eat)가 있어야 할것이다. 3. 메소드 이름에 해당하는 일만 해야 한다. (직관성)다른 일을 하게 될 일이 생길 경우 메소드를 분리한다.단어의 포괄적인 의미에 속하는 일을 하게 될지라도 메소드를 하나 더 만들고, 그 메소드를 호출하게 해 Function per m..

Software Engineering/Knowhow 2009. 2. 3. 10:34
CPPUnit 2005에서 발생하는 error C3505 해결 방법

CPPUnit: error C3505: cannot load type library ‘{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}’ - What’s it? I just tried to compile CPP Unit Under Visual C++ 2008. Compiler. There was one problem When I tried to compile MFC Test Runner. MsDevCallerListCtrl.cpp .\MsDevCallerListCtrl.cpp(67) : error C3505: cannot load type library ‘{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}’ .\MsDevCallerListCtrl.cpp(67) : f..

Software Engineering/Unittest 2008. 6. 24. 14:19
조엘 테스트

1. 소스코드 관리 시스템을 사용하고 있습니까? 2. 한방에 빌드를 만들어 낼 수 있습니까? 3. 일일 빌드를 하고 있습니까? 4. 버그 추적 시스템을 운영하고 있습니까? 5. 코드를 새로 작성하기 전에 버그를 수정합니까? 6. 일정을 업데이트 하고 있습니까? 7. 명세서를 작성하고 있습니까? 8. 조용한 작업환경에서 일하고 있습니까? 9. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까? 10. 테스터를 별도로 두고 있습니까? 11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까? 12. 무작위 사용편의성 테스트를 수행하고 있습니까?

Software Engineering/Develop Theory 2008. 2. 24. 12:28
나의 로그 기준

1. 비정상적인 상황에서 남기는 로그. 비정상 적인 상황을 만든 값들과, 주변 정보를 모두 기록하도록 한다. 이런 경우는 무조건 로그를 남겨야 한다. 그래야 기록된 정보를 토대로 발생한 원인을 추적해 수정하기 쉬워진다. 로그를 남기고 처리를 멈추었을 때, 해당 처리가 요청 되기 전으로 모든 상황을 되돌려야 한다. 복원을 수동으로 하려는 것은 좋지 않다. 만들기도 어렵고 모든 상황마다 만드는 것은 시스템을 복잡하게 만든다. 그래서 throw로 예외를 발생시키고, 스택 되감기 하는 것이 더 좋은 선택이 되기도 한다. 물론 그렇게 하기 위해서는 소멸자에서 예외가 발생하지 않도록 하고, 생성자에서 예외가 발생했을 때도 메모리가 새지 않도록 하는 것을 잊지 말아야 할 것이다. 2. 비정상적인 입력 서버라면 클라이..

Software Engineering/Knowhow 2008. 2. 23. 00:28
코드 읽기에 대해서

문득 코드를 작성하던 중 이런 생각이 들었다. "과연 지금 내가 작성한 이 코드가 분석하기 쉬운 코드일까?" 생각해보면 아마추어 일때를 제외하고는 새 코드 작성보다 다른 사람의 코드 분석하는 시간이 더 잦았고, 새 코드를 작성하더라도 다른 코드와 어울려야 했기 때문에 코드 분석은 늘 필요했다. 심지어 내 코드를 분석해야 되는 일도 잦았다. 기억력에는 한계가 있고, 시스템의 전체적인 이해도는 높을 수록 좋겠지만 세세한 코드 하나 하나가 하는 일까지 외울 필요는 없다고 생각한다. 그렇기에 내 코드를 내가 몇달이 지나고, 심지어 몇년 후에 봤을 때도 읽기 쉽고 유지보수하기 쉬운 코드를 만들기 위해 노력해야 한다. 그래서 우리는 디자인 패턴, 리팩토링 등을 통해서 좋은 코드를 만들기 위해 노력하고, 표기 법을 ..

Software Engineering/Develop Theory 2008. 2. 13. 18:54
데코레이터 패턴 (Decorator)

프로그램을 작성하다보면, 객체간에 동적으로 결합이 필요한 경우가 많습니다. 객체간에 동적으로 결합/해제를 통해서 기능을 추가/제거 하는 것을 데코레이터 패턴이라고 합니다. 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..

Software Engineering/Design Pattern 2008. 2. 9. 14:12
이전 1 2 3 4 5 6 다음
이전 다음
공지사항
  • 나에 대해서~
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
  • I am Not Okay
  • Jacking
  • Flexible Gameserver
  • 아름다운 네트웍 세상 since 1996.
  • 애자일 이야기
  • 류광의 번역 이야기
  • Joel on software
  • B-612
  • 디지털 보단 아날로그
TAG
  • 루비 온 레일즈
  • SDL
  • TraceRoute
  • 조엘 온 소프트웨어
  • 리버스 엔지니어링
  • CppSQLite
  • 엘키
  • EasyExec
  • 임백준
  • TDD
  • ftp
  • c언어
  • ruby
  • 디자인 패턴
  • 좋은 프로그래머
  • 게임데브포에버
  • 게임개발포에버
  • RoR
  • 디버깅
  • Rails
  • Ruby on Rails
  • SQLite Spy
  • 바로가기 프로그램
  • 멀티스레드
  • EzShortcut
  • MS-SQL
  • svn
  • 루비
  • perfmon
  • NDC2013
more
«   2025/05   »
일 월 화 수 목 금 토
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 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바