Home
디피의 개발일지
Cancel

Git

Git GIT의 개발 목표 빠른 속도 단순한 구조 비선형적인 개발(수천 개의 동시다발적인 브랜치) 완벽한 분산(DVCS) 대형 프로젝트에도 유용할 것 Inside of Git Git은 기본적으로 파일시스템의 스냅샷을 저장한다.(커밋 당시의 GIT 디렉터리의 모든 파일 정보를 저장) 또한 파일 및 스냅샷을 해시하여 바뀐 버전...

MVC 패턴

MVC 컴포넌트의 역할 Model 컨트롤러가 호출했을때, 요청에 맞는 역할을 수행한다. 비즈니스 로직을 구현하는 영역으로 응용프로그램에서 데이터를 처리하는 부분이다. DB에 연결하고 데이터를 추출하거나 CRUD 등의 작업을 수행한다. 상태의 변화가 있을때, 컨트롤러와 뷰에 통보해 후속 조치 명령을 받을 수 있게 된다. 뷰나 컨트롤러...

TDD

TDD 란? Test-Driven Development의 약자로, 테스트가 코드 작성을 주도하는 개발방식이며, 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고, 해당 테스트를 통과하는 가장 간단한 코드를 작성한다. 일단 테스트를 통과하는 코드를 작성하...

RESTful API

REST란, REprensentational State Transfer의 약자이다. 따라서, RESTful API는 REST의 기본 원칙을 잘 지킨 API를 의미한다. REST는 하나의 아키텍쳐로, Resource Oriented Architecture이다. API 설계의 중심에 자원(resource)가 있고, HTTP Method를 통해 자원을 처...

9935 문자열 폭발

매우 어렵게 구현하여 풀긴하였으나, 스택을 사용하면 매우 직관적으로 편하게 구현할 수 있었다. 스택을 사용하여 문제를 푼 경험이 적어서 스택을 떠오르지 못한 것 같다 스택을 사용한 문자열 문제를 몇문제 풀어봐야할 것 같음 내 풀이 : 빡센 구현 알고리즘 앞에서부터 검사하다가 폭발문자열과 일치하는 문자열이 발견되면, 그 문자열을 폭파시키고...

함수형 프로그래밍

부수 효과가 없는 순수함수를 1급 객체로 간주하여 파라미터로 넘기거나 반환값으로 사용하는 것을 가능하도록 하여, 참조 투명성을 지키도록 하는 프로그래밍 패러다임 순수 함수형 프로그래밍만으로 개발을 하기에는 무리가 있다. 따라서 적절히 조절해가면서 개발을 해나가자. 요약 함수형 프로그래밍의 가장 큰 특징 두 가지 immutable data ...

알고리즘 팁(WIP)

구조 관련 정렬된 배열의 앞 뒤로 새로운 요소를 삽입 해야되는 경우 필요한 길이의 2배길이의 배열을 선언한 다음, (start, to)로 인덱스를 트래킹해가면서 넣는다. 이때 start, to의 초깃값은 2배 길이의 배열의 딱 중간이어야함(그래야 최솟값만 들어가거나, 최댓값만 들어갈때도 배열이 터지지 않음) 소수판별 floor(...

Object Oriented Programming

OOP는 너무 거대한 개념이라 다 다루지는 못하지만 간단히만 알아보자 간단한 설명 OOP : 중심적 프로그래밍 패러다임. 현실 세계의 사물들을 객체라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍하는 것(추상화) 장점 OOP로 작성한 코드는 재사용성이 높다. ...

React v18 주요 변경점

React v18의 정식 출시가 코앞에 있고, 가장 큰 변경점 중 하나가 서버사이드 렌더링에 관한 내용이라는 소식을 듣고 마침 SSR 에 대해 흥미가 있던 터라 한번 React v18의 주요 변경점이 뭔지 공부해보기로 했다. 먼저 기존의 React v17을 v18로 마이그레이션 하는 것은 문제 없다고 한다. 리액트 팀에서 이 부분을 특히 신경써서 만...

좋은 코드란 무엇인가?

좋은 코드란 무엇일까? 일반적으로 좋은 코드라고 하면 다음 세가지를 얘기한다. 읽기 좋은 코드 테스트가 용이한 코드 중복이 없는 코드 그럼 왜 위 세가지가 갖춰진 코드를 좋은 코드라 하는 걸까? 그리고 어떻게 이 세가지를 지키며 코드를 작성할수 있을까? 왜 좋지 않은 코드가 생산되는가? 우리는 항상 좋은 코드를 작성하기 위해 노...