컴퓨터 사이언스/개발 상식

컴퓨터 사이언스/개발 상식

복잡도(BigO, 시간, 공간)

알고리즘이란 알고리즘이란 어떠한 문제를 해결하기 위한 여러 동작들의 모임을 말한다. 알고리즘은 유한성을 가지며, 언젠가는 끝나야하는 속성을 가지고 있다. 좋은 알고리즘을 작성하기 위해서는 항상 효율성을 고려해야 한다. 이때, 알고리즘의 복잡도를 판단하는 척도로 공간복잡도와 시간복잡도를 계산하게 된다. 그 중 시간 복잡도는 알고리즘 내 연산의 횟수와 밀접한 관계가 있다. 시간 복잡도 시간 복잡도는 알고리즘의 수행시간을 말한다. 공간 복잡도 공간 복잡도는 알고리즘 실행에 필요한 메모리의 양을 말한다. 사실 위 2가지 복잡도 중 좀 더 주안점을 두고 보는 것은 시간복잡도인데, 공간에 대한 부분은 하드웨어의 발달로 인해 상대적으로 비중이 줄었기 때문이다. 또한 시간복잡도와 공간복잡도는 일반적으로 반비례하는 성질..

컴퓨터 사이언스/개발 상식

반복문, 재귀함수

반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다. 파이썬에서 사용되는 대표적인 반복문으로는 while문, for문 등이 있다. 재귀란 어떠한 이벤트에서 자기 자신을 포함하고, 다시 자기 자신을 사용하여 정의되는 경우를 말한다. 그럼 재귀 함수는 무엇일까? 재귀 함수는 내부적으로 자기 자신을 호출하는 함수를 말한다. 또한 반드시 종료 조건이 필요하다는 특징을 가지고 있다. 단, 재귀 호출을 너무 많이 하게되면 스택 메모리 영역에 너무 많은 공간을 할당하게 되어 Stack Overflow가 발생할 수 있다는 점을 주의해야 한다. 따라서 재귀 함수를 구현할 때는 최악의 경우 얼마나 많은 재귀 호출이 발생하는지를 잘 살펴보아야 한다. 또한 재귀 함수에 대한 이해도가..

컴퓨터 사이언스/개발 상식

html - div, article, section 의 차이

모두 block 요소로 div 만으로 제작되던 시절에 article, section 태그가 추가되었다. 즉, 어떤 영역에 태그를 사용한다면 그 태그는 외형적으로는 별 차이가 없어보여도 의미가 맞아야 한다는 것이다. article 태그 : 문서 혹은 요소가 독립적으로 존재할 수 있을때, 사용한다. section 태그 : 논리적으로 관계있는 문서 혹은 요소를 분리할 때 사용한다. div 태그 : 요소간 논리적 관계와는 상관없이 요소를 나눠야 할 필요가 있을 경우에 사용한다.

컴퓨터 사이언스/개발 상식

API remind

같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 달리 처리하는 것처럼, 클라이언트가 요청할 때도 방식이 존재한다. 즉, HTTP 라는 통신 규약을 따르는데, 클라이언트는 요청할 때 HTTP request method를 통해서 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려준다. HTTP request method GET, POST, PATCH, PUT, DELETE 등 여러 방식이 존재하고, 그 중 가장 많이 쓰이는 GET, POST 방식에 대해 리마인드해본다.. GET 통상적으로 데이터 조회를 요청할 때 사용 데이터를 전달하기 위해서 URL 뒤에 물음표를 붙여 key=value 형태로 전달한다. POST 통상적으로 데이터 생성, 변경, 삭제시에 사용한다. 예) 회원가입, 회원탈퇴, 비밀번호..

컴퓨터 사이언스/개발 상식

크롬 개발자도구 이용한 디버깅

✏️ Eelments 화면에 관련한 HTML, CSS를 고쳐보고 싶을 때 HTML과 CSS는 소스 코드 가기전에 Elements 창에서 수정한다. (debug) ✏️ Console Javascript와 관련된 내용을 보고싶을 때 ✏️ Network api 요청에 관련한 에러를 보고싶을 때

컴퓨터 사이언스/개발 상식

API에 관하여

❓ API란? API란 HTTP 요청을 Back-end 컴퓨터에 보냈을때 실행되는 백엔드 기능이다. 프론트엔드에서 백엔드로 요청을 보낼때, 여러개의 HTTP 요청이 보내지고, 각각의 요청마다 API가 필요하다. 프론트엔드에서 API에 요청할 때 보내는 데이터가 API 함수로 들어갈 인자이다. API에서 응답으로 받게되는 데이터가 API함수의 반환값이다. 🆚 API 종류 ( rest-API vs graphql-API ) API의 종류는 크게 rest-API, graphql-API 2가지 있다. graphql은 페이스북에서 발생하는 수많은 데이터를 처리하기 위해 페이스북 개발팀에서 만들었으며, facebook, airbnb, github 등 유명한 사이트에서 사용중인 통신 방법이다. 그럼에도 불구하고 res..

컴퓨터 사이언스/개발 상식

Git 기초 사용법

📌 git branch 사용하기 git branch란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있다. 📌 branch 변경 및 사용하기 % git checkout -b myfolder % git branch main * myfolder % git status On branch myfolder Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git rest..

컴퓨터 사이언스/개발 상식

Git stash

❓ Git stash 란? git pull 명령어를 사용하여, 원격 리포지토리의 최신본을 로컬 리포지토리와 동기화 해야할 때, 로컬에서 아직 마무리되지 않은 작업을 그대로 commit - push 할 수 없는 상황이 생긴다. 이때 '임시저장' 용도로 stash가 필요하게 된다. stash는 계속 진행할수록 stack의 원리로 더 아래 순번으로 가게되며, 더 큰 index 숫자를 갖게 된다. stash는 apply했다고 해서 자동으로 지워지지 않는다. 그래서 stash를 가지고 온 후에도 계속해서 stash list에 남아있는 것을 확인할 수 있다. 따라서 stash apply해서 가지고 온 작업들을 마무리하여 commit했다면, stash drop 혹은 stash clear로 지워주는 것이 좋다. 🔎 G..

컴퓨터 사이언스/개발 상식

CQS ( Command Query Separation )

CQS 란? 어떠한 메서드를 호출했을 때, 내부에서 변경(side effect)가 일어나는 메서드인지, 내부에서 변경이 전혀 일어나지 않는 메서드인지 명확히 분리하는 것이다. 전자를 상태를 변경시키는 Command, 후자를 조회의 기능을 하는 Query라고 한다. 이 원칙을 지킴으로써 얻는 점 데이터 변경 관련 이슈가 발생했을 때, 변경이 일어나는 메서드만 찾아보면 되므로 유지보수가 좋아진다. 개발 시 권장 방법 insert - id만 반환한다. update - 아무것도 반환하지 않는다. 조회 - 내부의 변경이 없는 메서드로 설계한다.

kimjingyu
'컴퓨터 사이언스/개발 상식' 카테고리의 글 목록