반응형

전체 글 161

8.24 Dev.Feedback (시간 복잡도)

시간 복잡도 문제를 해결하기 위한 알고리즘의 로직을 코드로 구현할 때, 시간 복잡도를 고려해야 한다라는 말을 보게 된다. 그건 무슨 의미일까? 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?를 뜻한다. 이 말인 즉 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘을 구성하는 것이 시간 복잡도를 고려한 알고리즘 작성이라는 것이고, 효율적인 코드를 작성하는 방식이라는 것이다. 시간 복잡도를 나타내는 방법(표기법)도 있는데 Big-O(빅-오) : 상항 점근 (가장 최악의 경우 파악) Big-Ω(빅-오메가) : 하한 점근 ( 가장 효율적인 경우 파악) Big-θ(빅-세타) : 둘의 평균( 평균 값 파악) 이 세가지가 있다. 이중에서 가장 많이 사용되는 표기법이 ..

개발 R.I.P. 2021.08.24

8.08 Dev.Feedback (Request properties)

서버 관련한 공부를 하던 중 정확하게 알지 못해 어영부영 알고 있었던 것들을 정확하게 정리하고자 한다. Request.body(본문) 본문은 요청의 마지막 부분에 들어간다. 모든 요청에 본문이 들어가지는 않는다. GET, HEAD, DELETE , OPTIONS처럼 단순히 리소스를 가져오는 요청은 보통 본문이 필요가 없어서 없는 경우가 대다수이다. 업데이트를 하기 위한 요청(POST, PUT)을 할 때 본문을 작성하여 서버에 데이터를 전송한다. 보통 (HTML 폼 데이터를 포함하는) POST 요청일 경우에 많이 사용된다. XML, JSON, Multi form 등의 데이터를 담고있다. 주소에서 확인할 수 없다. 본문에 어떤 내용이 담겨있는지 확인하고 싶을 때는 개발자 도구를 통해 확인하면 된다. 일반적으..

개발 R.I.P. 2021.08.08

8.05 Dev.Feedback (스프린트 Test Server, Client 작동)

내 머릿속에서 제대로 정리가 되지 않아 짧게 포스팅을 하면서 정리하려고 한다. 아직도 마음을 제대로 잡지 못하고 둥둥 떠다니고 있는 내 자신이 한심해서도 최대한 명확하게 현재 지금 내가 하는 스프린트 테스트를 어떻게 진행해야 하는지 글로 적어보려고 한다. 현재 나는 원하는 데이터를 Get요청을 통해 얻고, Put을 통해 업데이트를 해주려고 한다. 먼저 스프린트의 제목을 보자. -----server라고 한다. 즉, 내가 해야하는 일은 서버가 해주는 일을 해줘야 하는 것이다. 즉 Client에서 HTTP 상의 메소드를 이용하여 (Get, Post, Push, Delete 등등) 어떤 액션을 요청할 것이고, 나는 그 요청에 따라 데이터를 변경하거나, 아니면 요청하는 데이터 그 자체를 전달을 해주면 되는 것이다..

개발 R.I.P. 2021.08.05

8.03 국거리 돼지고기

국거리 돼지고기를 살 때, 뒷다리 살보다 앞다리 살로 사는 것이 좋다. 그리고 거세된 돼지의 앞다리 살보다 암퇘지의 앞다리 살이 더 좋은데 그 이유는 식감에서 드러난다고 한다. 암퇘지의 앞다리 살은 씹으면 고소한 맛이 난다고 한다. 거세된 돼지의 앞다리 살은 씹으면 느끼한 맛이 난다고 한다. (고기집 사장님의 말씀이긴 한데, 대량으로 김치찌개를 만들거나 할 때는 거세된 돼지의 앞다리와 암퇘지의 앞다리를 반반 섞어서 하는 편이 많다고 한다.) 가격의 차이가 좀 많이 나서 그런걸까? 그리고 고기집에서 거세된 수퇘지의 앞다리를 암퇘지의 앞다리인 마냥 팔 때가 있다고 한다. 그때는 식감의 차이를 통해 어느정도 구분하고, 그 고기집의 양심을 파악하면 된다고... ㅋㅋㅋ 그리고 돼지고기도 맛있는 때가 있다고 한다...

8.03 Dev.Feedback (Package.json)

여러 과제들을 진행할 때 매번 보게되는 파일이었지만, 이 파일이 어떤 역할을 하는지, 그리고 각 코드가 어떤 의미인지 정확하게 알지 못했다. 이게 무엇인지 물어봤을 때, 어떤 역할을 하는지 전혀 모르고 있다는 것을 알게되어 정리한다. package.json 노드로 확장 모듈을 작성하면 npm을 통해 중앙 저장소로 배포할 수 있다. package.json 파일은 배포한 모듈 정보를 담고자 만들어졌지만, 노드로 작성하는 애플리케이션도 package.json 파일을 사용하여 관리할 수 있다. 꼭 확장 모듈 형태로 배포하기 위한 것이 아니더라도 애플리케이션을 개발할 때 package.json 파일을 이용하면 사용하는 확장 모듈에 대한 의존성 관리가 가능하기 때문에 편리하다. 즉 package.json은 우리가 ..

개발 R.I.P. 2021.08.03

8.02 Dev.Feedback (OSI 7Layers & 1,2Layers)

OSI 7 Layers OSI 7계층 서로 다른 컴퓨터 기기 간에 네트워크를 형성할 수 있도록 규정한 네트워크 모델 표준안이다. 예를 들어보면, 우리가 만일 자동차를 샀는데, 그 자동차가 고장이 났다고 생각해보자. 그 자동차가 고장이 났다고 우리가 자동차 전체를 바꾸지 않는 것은 당연하다. 타이어가 고장났다면 타이어만 바꿔주면 되고 범퍼가 찌그러졌다면 범퍼만 고쳐주면 된다. 이렇게 할 수 있는 이유가 무엇일까? 바로 각각의 자동차에 대한 어떤 규정을 정해놨기 때문이다. 그 규정에 따라 부품들을 모듈화 시켜놔 다른 기업의 타이어를 쓸 수도 있고, 다른 업체에서 범퍼를 고칠 수도 있는 것이다. OSI 7계층도 이런 개념과 비슷하다. 네트워크 프로토콜이 통신하는 과정을 7개의 계층으로 분리한 것이다. 각 계층..

개발 R.I.P. 2021.08.02

7.29 Dev.Feedback (자료구조 Graph, Tree, DFS, BFS)

오늘은 다양한 자료구조중 Graph, Tree 그리고 DFS, BFS를 정리한다. 그래프와 트리는 다양한 복잡한 문제를 해결하는데 사용되는 비선형 데이터 구조이다. 두 구조의 차이점을 정확히 이해하고 넘어가야 할 것 같다. 먼저 그래프는 방향, 무방향 그래프 두 가지가 존재한다. 그 말은 어떤 정점과 정점 사이의 관계를 나타내는데 포인트가 있다는 것이다. 트리는 수 많은 그래프중의 하나인데, 특징은 방향 루트에서 아래로 내려가는 방향 그래프만 가능하다는 것이다. 이런 특징때문에 트리가 계층을 잘 보여주는 그래프로 표현된다. 그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(Depth-First Search)과 너비 우선 탐색(Breadth-First Search)이 있다. BFS(너비 우선 탐색) 최대한 ..

개발 R.I.P. 2021.07.29

7.28 Dev.Feedback (Promise 에러처리)

그렇게 비동기, Promise, Async await을 정리하고 정리해도, 모르는 부분들이 하나씩 튀어나온다. 당황스럽다... 바로 정리 시작 Promise 에러 처리 비동기 처리 결과에 대한 후속 처리는 Promise 객체가 제공하는 후속 처리 메서드 then, catch, finally를 사용하여 수행한다. 비동기 처리 시에 발생한 에러는 then 메서드의 두 번째 콜백 함수로 처리할 수 있다. 기본적으로 then은 두 개의 콜백 함수를 인수로 전달받는다. 첫 번째는 fulfilled 상태(비동기 처리시 성공한 상태)에서 호출하고, 두 번째는 rejected 상태에서 호출하는 실패 처리 함수다. then 메서드는 언제나 프로미스를 반환한다. 만약 then 메서드의 콜백 함수가 프로미스를 반환하면 그 ..

개발 R.I.P. 2021.07.28

7.27 Dev.Feedback ( forEach)

자료구조 및 알고리즘은 내가 개발자로 일하기 위해 그리고 정말 뛰어난 실력을 갖기 위한 컴퓨팅적 사고를 갖기 위해 꼭 이해해야만 하는 영역이라 생각한다. 그 중 인접행렬 생성하기 알고리즘을 풀며 forEach 메소드에 대해 다시 생각하는 계기가 생겨 포스팅해본다. 인접행렬 생성하기 알고리즘 먼저 인접행렬 생성하기 알고리즘은 Number 타입의 방향/무향인 간선들의 목록이 담긴 배열을 입력 받아 [ [0, 3, "directed"], [0, 2, "directed"], [1, 3, "directed"], [2, 1, "directed"], ] [ [0, 2, "directed"], [2, 4, "undirected"], [1, 3, "undirected"], [2, 1, "directed"], ] 위의 간..

개발 R.I.P. 2021.07.27

7.26 Dev.Feedback ( 검색 알고리즘 선형검색, 이진검색)

저번주부터 귀에 염증이 심하게 생겨서 제대로 된 공부를 하지 못했다. 포스팅도 당연히... 조금씩 컨디션을 챙겼고, 조금이라도 괜찮을 때마다 정리하려고 한다. 검색 알고리즘 먼저 우리가 어떤 데이터를 다룰 때, 검색은 당연히 필요한 경우이다. 이 데이터들은 무분별하게 나열이 된 경우가 있을 것이고, 혹은 차곡차곡 순서에 맞게 정렬(sorted)된 경우가 있을 것이다. 어떠한 경우든 나열된 데이터 중에서 우리가 원하는 데이터를 찾아내는 것은 매우 중요하다. 선형검색(Linear Search) 나열된 어떤 데이터 구조의 처음부터 검색을 하는 방법이다. 예시를 들어 설명해보면 let arr = [2, 4, 7, 20, 12, 6, 21, 692, 3]; function findNumb(arr) { for (l..

개발 R.I.P. 2021.07.26
반응형