Home
Hyeonsu Lim
Cancel

02. 팀워크 이끌어내기

이번 장의 핵심 주제는 소프트웨어 개발은 팀의 단합된 노력의 결실이라는 점이다. 그래서 엔지니어링팀이 성공하려면 겸손, 존중, 신뢰라는 핵심 원칙에 맞게 자신의 행동을 바로잡아야 한다. 2.1 내 코드를 숨기고 싶어요 사람들은 자신이 진행 중인 작업물을 다른 사람이 보고 판단하는 걸 두려워 한다. 이러한 불안감은 소프트웨어 개발에서의 더 큰 문제의 ...

01. 소프트웨어 엔지니어링이란?

프로그래밍과 소프트웨어 엔지니어링의 가장 큰 차이는 시간, (규모)확장, 실전에서의 트레이드오프 이다. 소프트웨어 엔지니어링 프로젝트에서 엔지니어는 시간의 흐름과 언젠가 변경될 가능성에 더 신경 써야 한다. 만들어낼 소프트웨어 자체뿐 아니라, 제작하는 조직까지 양 측면 모두에서의 확장과 효율에 더 집중해야 한다. 소프트웨어 엔지니어링은 흐르는 시간 ...

01.문자찾기, 대소문자 변환, 문장속 단어

1-1. 문자 찾기 설명 : 한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요. 대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다. 입력 : 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다. 출력 : 첫 줄에 해당 문자의 개수를 출력한다....

05. 전체탐색

전체 탐색과 시뮬레이션의 차이 시뮬레이션은 수행해야 하는 과정이 모두 나와있는 문제 전체 탐색은 모든 패턴을 조사해야 하는 것과 그것을 필요로 하는 문제 전체 탐색의 형태로 다음과 같은 것이 있다. 모든 패턴을 찾고 가장 좋은 답을 찾는 것 모든 패턴을 찾고 조건을 충족하는 패턴이 몇 개인지 찾는 것 답이 같은 두 문제여도 어...

04. 시뮬레이션

시뮬레이션은 프로그래밍 대회에서 가장 쉬운 문제이며 초기 상태와 어떤 작업을 수행할지 제공하고 최종 결과가 어떻게 될지 답하는 문제이다. 이런 문제는 무엇을 해야할 지 문제에 모두 쓰여있다. 4-1. 키위 주스 타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라는 이름을 붙인 N개의 병에 키위주스를 넣었습니다. 이때 i번째의 병의 용량...

03. 기본 프로그래밍 지식

3-1. 반드시 필요한 프로그래밍 지식 if-else for 배열 /* 문제 : int 형의 매개변수 a, b가 주어질 때 a+b를 리턴하세요 class : AplusBProblem method : public int calc(int a, int b) */ public class AplusBProblem { public...

8장 성능 향상을 위한 인프라 구조

8.1 응답과 처리량 8.1.1 성능 문제의 두 가지 원인 시스템 성능을 가리킬 땐 응답과 처리량이라는 지표가 자주 사용된다. 응답은 처리 하나당 소요시간을 의미하며 처리량은 단위 시간당 처리하는 양을 의미한다. 편의점을 예로 들면 계산대가 두 개 있고, 고객이 균등하게 계산대에 줄을 섰을 때, 이때 줄의 끝에 선 후 계산이 끝나기까지 걸리는 시간이...

7장 무정지를 위한 인프라 구조

7.1 안정성 및 이중화 7.1.1 안정성이란? 상용 웹 시스템에서는 미들웨어 기능이나 구조로 이중화, 감시, 백업의 세 가지 수단을 구현해서 목표를 실현하고 있다. 7.1.2 이중화란? 하나의 기능을 병렬로 여러 개 나열해서 하나의 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있는 것을 가리킨다. H/W 컴포넌트 계층 : 일반...

6장 시스템을 연결하는 네트워크 구조

6.1 네트워크 구조 서로 다른 장비 간 데이터를 교환할 때 기본적으로는 네트워크를 경유해서 데이터를 송수신할 필요가 있다. 실제 네트워크 구조를 구체적으로 도식화하는 것은 어려울 것이다. 그 이유중 하나로 현재 네트워크 자체가 그 구조를 알지 못해도 사용할 수 있도록 돼 있기 때문이다. 네트워크에서 발생하는 데이터 처리나 교환에는 다양한 구조가 존재...

5장 인프라를 지탱하는 응용 이론

5.1 캐시 5.1.1 캐시란? 캐시(cache)는 숨기는 장소 라는 의미를 가지고 있다. 컴퓨터 세계에서 캐시는 사용 빈도가 높은 데이터를 고속으로 액세스할 수 있는 위치에 두는 것을 의미한다. CPU의 1차캐시나 2차캐시, 저장소 캐시, OS 페이지 캐시, 데이터베이스 버퍼 캐시 등 광범위하게 캐시 기술이 사용되고 있다. [특징] 일부 ...