목록전체 글 (149)
Taking baby-developer steps
오늘 목표 gnlTest 테스터 Mandatory Part통과 부분함수로 나누기 SIGSEGV 잡기 KO 뜨는 케이스 잡기 메모리 누수는 다 잡았으니, 이제 하나로 만들었던 get_next_line 함수를 부분 함수로 나누고, 부분 함수들의 name으로 break포인트를 잡아서 SIGSEGV를 먼저 잡고, KO 케이스를 잡으면 될 것 같다. - SIGSEGV : 현재 SIGSEGV가 나는 테스트 케이스들의 공통점은 파일의 끝(eof)직전에 개행문자'\n'가 온다는 공통점이 있다. - KO : 구현 때부터 우려했던 stdin에서 난다. stdin에서 eof(cntrl + d)를 어떻게 탐지할지가 계속 고민이다. 오늘 한일 SIGSEGV 잡기 get_next_line 함수를 만들기 시작할 때, static ..
오늘 목표 디버거(lldb) 사용법 익히기 [->printf()문으로 메모리 주소 찍다가 지침] gnlTest 테스터 Mandatory Part통과 SIGSEGV 잡기 KO 뜨는 케이스 잡기 get_next_line.c 메모리 누수 잡기 오늘 한일 get_next_line.c 메모리 누수 잡기 -> 메모리 누수는 다 잡았는데 할당한 메모리를 중복으로 free하는 구간이 있다. (pointer being freed was not allocated) ->LLDB 사용법 익혀서 메모리 누수 확인하려고 했는데, 결국 LLDB도 메모리 누수가 일어난 메모리 주소정도 알려주는거 같아서, 테스터에 나온 주소 및 printf()문으로 찍은 버퍼들 주소랑 비교해가면서 메모리 누수를 잡았다. 디버거(lldb) 사용법 익히..
app.get("/", function(req, res){ const url = "https://api.openweathermap.org/data/2.5/weather?q=London&appid=abaf6b7affaaf80dc46cf5afd8ac3545"; https.get(url, function(response){ console.log(response); response.on("data", function(data){ const weatherData = JSON.parse(data); const temp = weatherData.main.temp; console.log(temp); }); }); res.send("Server is up and running"); }); app.get 과 https.g..
키워드 : Start tag(=opening tag), End tag(=closing tag), Content, Self-closing tag, HTML element, HTML attribute, 코멘트 10분 정리 : HTML 파일은 괄호 사이에 태그 네임을 넣는 방식으로 작성된다. 그리고 대부분의 경우, content(내용물)을 앞 뒤로 start tag 와 end tag가 감싸고 있다. 이전에 소개한 개발 학습에 도움 되는 사이트에서도 HTML의 태그를 다음과 같은 분류로 나눠 놓은것을 볼 수 있다. https://devdocs.io/html/attributes#accept-attribute 이 주소를 참고 해도 좋다. +코멘트는 브라우저에게 무시하라고 표시하고 작성하는 멘트이다. 대부분 스스로의..
키워드 : 브라우저의 목적, HTML = 웹사이트의 뼈대, , headings, , 개발 학습시 검색 키워드 추천 10분 정리 : 어떤 브라우저든, 목적은 단 하나이다. HTML, CSS, JS 파일을 웹사이트 화면으로 보여주는 것이다. HTML은 웹사이트의 뼈대(foundation)이다. CSS나 JS만으로 만들어진 웹페이지는 없으나, HTML만으로는 충분히 만들 수 있다. HTML은 HyperText Markup Language의 약자인데, 이중 "Markup"이라는 단어가 HTML의 성격을 잘 보여준다. Makeup languges에는 흔히 XML, GML 등이 있는데, 이 모든 Markup 언어들은, 인쇄 전 에디터들이 교정을 보던 것에서 유래한것으로 이와 유사한 성격을 가진다. + 개발자로서 가..
키워드 : Code Editer, Atom 10분 요약 : 이제 HTML 학습에 들어가기 전, 개발환경을 구축한다. 현 강의에서 사용하는 응용프로그램은 2가지이다. 1. 크롬 브라우저 2. Atom( Code Editer) Atom은 코드 에디터로, VS Code나 심지어 메모장으로도 대체 가능하다. Atom의 큰 장점은 Package 이다. 다른 사용자들이 미리 만들어 공유해둔 설정을 다운받아 쉽게 개발환경을 구축할 수 있다.
키워드 : 브라우저, 웹페이지 구성 요소, HTML, CSS, JavaScript 10분 정리 : 클라이언트가 웹페이지에 접근하려면 브라우저가 필요하다. 브라우저는 클라이언트가 원하는 주소에 대응하는 "IP 주소"를 찾고, 이 주소를 가진 서버에 클라이언트가 원하는 "데이터를 요청하고 받는다". 브라우저의 예로는 크롬, 사파리, 파이어 폭스 등등이 있다. 이때 브라우저가 서버로 부터 받는 웹페이지 데이터 파일은 일반적으로 3종류 파일로 구성되어있다. HTML, CSS, JS 이다. HTML은 웹페이지의 "구조"를 결정한다. structure를 담당한다. CSS는 웹페이지가 "어떻게 보일지"를 결정한다. styling을 담당한다. JS(JavaScript)는 웹페이지가 실제로 "동작"하게 한다. to ac..
키워드 : 인터넷, 서버, 클라이언트, ISP(인터넷 서비스 제공자), DNS 서버(도메인IP/거대한 전화번호 부), 인터넷 백본 10분 정리 : 인터넷은 "거대한 전선(a giant wire)"이다. 이 전선으로 연결된 컴퓨터들은 서로 데이터를 주고 받을 수 있다. 전선(인터넷)에 연결된 컴퓨터들 중 특별한 역할을 하는 컴퓨터를 "Server"라고 부르는데, 이 컴퓨터는 다른 컴퓨터들이 요구하는 데이터를 보내주는 역할을 한다. 일반적으로 개인들이 쓰는 컴퓨터들은 데이터를 요구, 요청하는 "Client"이다. Client(클라이언트)가 웹브라우저에 구글 도메인을 칠 경우(www.google.com), ISP(인터넷 서비스 제공자)가 해당 도메인에 대응하는 IP주소를 DNS서버에 요청하고, DNS 서버가 ..
이진 탐색 트리(Binary Search Tree) 이진 탐색 트리란, 이진 탐색이 항상 동작하도록 구현해서 탐색 속도를 극대화 시킨 자료구조이다. 이진 탐색 트리의 동작 방식 이진 탐색 트리에서는 항상 부모 노드가 왼쪽 자식보다는 크고, 오른쪽 자식보다는 작다. 위의 이진트리에서 37이라는 원소를 찾는 다면, 37이 루트노드(30)보다 큰 값이기 때문에, 루트노드의 왼쪽자식들은 탐색할 필요가 없다. 따라서 오른쪽 자식 중 48보다 작으므로 48의 왼쪽 자식만 탐색하면 된다. 이진 탐색 트리의 탐색 위의 예제에서 볼 수 있듯이, 이진 탐색 트리에서는 한번 확인할 때마다 탐색해야하는 원소의 개수가 절반씩 줄어든다는 점에서, O(logN)의 시간 복잡도를 가진다. 이진 탐색 트리에서, 찾고자 하는 값이 부모..
너비 우선 탐색(BFS) 너비 우선 탐색은 너비를 우선으로 해서 탐색을 수행하는 탐색 알고리즘이다. DFS와 마찬가지로 맹목적으로 전체 노드를 탐색하고자 할 때 자주 사용되며, 큐(Queue) 자료구조에 기초한다. 너비 우선 탐색은 고급 그래프 탐색 알고리즘에서 자주 활용되므로, 잘 숙지해야 한다. 너비 우선 탐색 처리 순서 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드들을 모두 큐에 삽입하고, 방문처리 한다. 2의 과정을 더 이상 수행할 수 없을 때 까지 반복한다. ex) 너비 우선 탐색 처리 과정 탐색 시작노드(1번)을 큐(왼쪽 테이블)에 삽입하고 방문처리 한다. 1번과 인접한 노드 2,3,8번을 큐에 모두 삽입하고 1은 빼낸..