Computer Science35 배열과 연결리스트 배열(Array) 배열은 가장 기본적인 자료구조로, 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스(index)로 해당 원소에 접근할 수 있고, O(1)의 시간만에 해당 원소에 접근할 수 있다. 하지만 원소를 삽입, 삭제하는 경우에는 뒤의 원소들을 한칸씩 shift 해줘야하기 때문에 O(n)의 시간이 걸린다. 연결리스트(Linked List) 연결리스트는 원소 각각이 자기 자신 다음 순서가 어떤 원소인지만 기억한다. 그래서 어떤 특정 인덱스의 원소에 접근하기 위해서는 첫번째 원소부터 순차적으로 검색해야 하므로 O(n)의 시간이 걸린다. 어떤 특정 원소의 주소를 알고 있을 때 그 원소를 삭제하던가 삽입하는 시간은 O(1)의 시간이 걸리지만, 주소를 모르고 몇번째 원소인지(인덱스)만 알고 있.. 2021. 9. 29. MVC패턴이란 무엇인가? MVC는 Model, View, Controller로 나눠져서 서버를 구성하는 모델을 말한다. 그렇다면 Model은 무엇이고, View는 무엇이고, Contoller는 무엇인가? Controller 클라이언트의 요청을 받았을 때, 그 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출한다. 또한 클라이언트가 보낸 데이터가 있다면, 모델에 전달하기 쉽게 데이터를 가공한다. 모델이 업무를 마치면 그 결과를 뷰에게 전달한다. Model 컨트롤러가 호출할 때 요청에 맞는 역할을 수행한다. 비즈니스 로직을 구현하는 영역으롤 응용프로그램에서 데이터를 처리하는 부분이다. 비지니스 로직이란 업무에 필요한 데이터처리를 수행하는 응용프로그램의 일부라고 할 수 있다. DB에 연결하고 데이터에 대한 CRUD 작업을 수행한.. 2021. 9. 29. TDD란 무엇인가? TDD는 Test-Driven Development의 약자로 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성한다. 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다. 테스트가 코드 작성을 주도하는 개발방식인 것이다. 테스트를 작성하기 위해서, 개발자는 요구사항과 명세를 분명히 이해하고 있어야 한다. 이는 개발자가 보다 요구사항에 집중할 수 있도록 도와준다. 한번에 좋은 코드를 작성하기는 쉽지 않기에 계속해서 리팩토링을 해줘야한다. 이 때 TDD를 해왔다면 간단한 테스트를 통해 리팩토링을 신뢰성있게 진행할 수 있다. 결국 리팩토링의 속도와 코.. 2021. 9. 29. RESTful한 API란 무엇인가 REST란 REpresentational State Transfer의 약자이다. RESTful이란 REST의 기본 원칙을 성실히 지킨 서비스 디자인을 말한다. REST는 하나의 아키텍처로 볼 수 있다. REST는 Resource Oriented Architecture이다. API 설계의 중심에 자원(Resource)가 있고, HTTP Method를 통해 자원을 처리하도록 설계하는 것이다. REST 6 가지 원칙 Uniform Interface Stateless Caching Client-Server Hierarchical system Code on demand RESTful하게 API를 디자인 한다는 것은 무엇을 의미하는가? 1. 리소스와 행위를 명시적이고 직관적으로 분리한다. 리소스는 URI로 표현되는.. 2021. 9. 28. 좋은 코드란 무엇인가? 좋은 코드란 도대체 무엇일까? 검색해봐도 여러가지 기준이 있지만 대표적인 기준을 뽑아보자. 읽기 쉬운 코드 중복이 없는 코드 테스트가 용이한 코드 등등... 을 좋은 코드라고 칭한다고 한다. 주석을 쓰면 읽기 쉬운 코드가 될 수는 있지만 주석이 메타데이터이기 때문에 주석의 내용과 함수의 실제 동작이 일치한다고 보장할 수 없다. 오히려 잘못된 주석이 코드 이해, 수정을 방해할 수도 있다. 읽기 쉬운 코드가 필요한 이유는 팀과의 협업을 위해, 또는 코드를 작성하고 시간이 지나서 다시 코드를 보고 수정해야할 때 용이하게 하기 위함이다. 중복이 없어야 하는 이유도 비슷하게, 코드 수정시 용이함을 위해서이다. 또한 에러 발생시 에러를 찾는 작업도 쉬워질 것이다. 참고 https://github.com/JaeYeo.. 2021. 9. 24. 이전 1 ··· 3 4 5 6 다음