2021/10 6

[Code Complete 2] 구현 설계 - 1

설계란? 소프트웨어에 대한 명세를 동작 가능한 소프트웨어로 변환 하기위한 계획에 대한 구상을 뜻한다. 훌륭한 상위 수준 설게는 여러 개의 하위 수준 설계를 무리 없이 담을 수 있는 구조를 제공한다. 훌륭한 설계는 규모가 큰 프로젝트에서는 꼭 필요한 작업이며 작은 프로젝트에서도 유용하다. 설계는 사용자의 요구사항에 따라 계속 바뀐다. 그래서 어렵다. 설계의 어려움 1. 설계란는 절충과 우선순위의 문제다. 설계자의 주요 업무중 하나가 서로 상충하는 설계 특징을 비교하여 그 특성들 사이에 균현을 맞추는 일이다. 빠른 응답 속도가 개발 시간을 최소하는 것보다 중요하다면 설계자는 그에 맞는 설계를 선택 할 것이다. 2. 설계에는 제약이 따른다. 설계의 핵심은 어느 정도는 가능성을 만들고 어느 정도는 가성능성 제한..

[Code Complete 2] 구현시 결정해야 할 핵심 사항

언어 프로그래밍의 목적에 따라 언어를 잘 골라야 하지만 대부분 고수준의 언어가 생산성이 좀더 좋다. 그리고 생성성이 비슷 하다면 익숙한 언어를 사용하는게 효율 성이 훨씬 좋다고 한다. 마지막으로 모든 프로그래밍 언어에는 장단점이 있다. 그걸 알고 모르고는 개발 생산성에 큰 영향을 미친다고 본다. 프로그래밍 규약 품질이 우수한 소프트웨어는 아키텍처의 개념적 무결성과 저수군 구현 사이의 관계가 명확하다. 구현은 반드시 아키텍처와 일관성을 유지해야 하며 내 부적으로도 일관선을 유지해야한다. 그것이 바로 변수 이름과 루틴 이름, 형식 규약, 주석 규약에 대하나 가이드라인의 핵심이다. - 아키텍처 가이드라인을 통해서 프로그램 구조적인 균형을 유지 - 구현 가이드라인을 통해서 각 클래스가 전체 적인 설계의 구성원으..

[Code Complete 2] 프로젝트 절차 (architecture 설계에서 할일)

프로젝트의 절차 1. 문제 정의 - 해결책에 대해서는 언급하지 않고 문제가 문엇인지 정의한다. - 사용자의 언어로 작성 한다. 2. 요구 사항 - 소프트웨어 시스템이 무엇을 수행해야 하는지에 대해서 상세하게 기술한다. - 해결책을 구현하기위한 첫 번째 과정 이다. - 명시적 요구사항의 필요성. - 사용자가 시스템의 기능을 주도하게 하는데 도움이 된다. - 요구사항을 명시적으로 정의함으로써 사용자가 원하는 것이 무엇인지를 알 수 있다. 3. 아키텍쳐 - 시스템 전반에 적용되는 설계상의 제약 사항을 명시한다. - 모든 설계에는 타당한 이유가 있어야 한다. - 모든 주요 결정사항에 대한 동기를 기술 해야한다. - 아키텍쳐에서 해야 할 일 1) 프로그램 구조 설계 - 프로그램 내의 중요한 빌딩 블록 을 정의 해..

[실전 무료 AWS] 6. ELB (Elastic Load balancer)

[실전 무료 AWS] 목차 ELB란? Elastic Load Balancer란 트래픽을 분산시켜주는 서비스입니다. 왜 쓰나? 서비스의 안정성을 위해서 사용합니다. 서버가 과도한 트래픽으로 인해서 서비스를 못하게 되는 상황을 막기 위해서 사용합니다. 일반 적으로 서버를 구축할 때는 서버가 죽는 것을 가정하여 동일 한 기능을 하는 2대 이상의 서버를 구축합니다. 그런데 서버를 2대를 구축하게 되면 사용자 입장에서는 어느 서버에 접속해야 할지 난감합니다. 그래서 이때 ELB 사용하여 사용자가 접속하는 통로를 한 개로 만들어주는 것입니다. ELB 동작상 특징 1. IP가 지속 적으로 바뀜 - 분산처리 방식과 성능에 따라서 네트워크가 바뀌기 때문, 그래서 도메인 방식으로 사용해야 함. 2. Health check..

프로그램 중복 실행 확인 코드

개발 방향 pid와 symbolic link를 사용하여 프로그램의 중복 확인을 확인 한다. 개발 절차 1. 현재 process의 process 이름과 pid와 현재 실행 절대 경로를 구함 2. ps -ef 를 통하여 prceess 이름과 동이란 process의 pid를 구함 3. 2번에서 구한 pid를 /proc/ 및에서 찾아서 실행 파일의 경로를 찾아냄 3. 찾은 경로와 1번에서 경롸 3번에 찾은 경로를 비교하여 중복 실행을 확인 코드 #include #include #include #include bool CheckDuplicatiedProcess(std::string process_name) { FILE *fp = nullptr; char run_pid[64] = {0, }; char cur_pat..

[C++개발자되기]23. 문자열 다루기

문자열 대문자로 변경 #include #include std::string str = "Hello World"; std::transform(str.begin(), str.end(),str.begin(), ::toupper); 문자열 parsing #include std::string s = "ITEM=this is value"; std::string value = s.substr(s.find("=") + 1); argv to vector string #include #include int main(int argc, const char** argv) { std::vector arguments(argv + 1, argv + argc); } 문자열 비교 #include int main(int argc, con..

ProgrammingLang/c++ 2021.10.07