
Visual Studio Code에서 돌리는 도커에서는 우분투기반이라 기존의 파일 RUN으로는 컴파일 되지 않는다. 그러므로 C파일을 돌리고 싶으면 GCC로 컴파일해서 결과를 확인할 수 있다. 이번에는 어떻게 내 C파일을 돌릴 수 있는지 알아보겠다.
오늘은 본격적인 5주차의 시작이다.10:30 ~ 12:00우리 팀의 코어 타임은 아침 시간대에 하기로 해서 코어타임을 하고 왔다.코어타임 내용을 대강 정리해보았다. 또한 C언어 포인터와 구조체 개념, GCC등을 학습했다.

포인터는 메모리의 주소값을 저장하는 변수입니다. 함수에서의 값 전달(call by reference)동적 메모리 할당(malloc, free)배열과 문자열 처리구조체와 연결 리스트 구현포인터에서는 크게 두가지의 연산자가 있습니다.
구조체는 여러 개의 변수를 하나로 묶을 수 있는 사용자 정의 자료형이다. 쉽게 말해 JAVA에서의 class의 역할과 비슷하다.(좀 라이트한) 밑에 예시를 보며 이해해보자.

오늘 아침의 코어타임에는 내가 포인터와 구조체에 대한 개념을 팀원분들에게 설명했다. 그외 팀원분들이 설명하는 것을 들으면서 보충할 내용을 살펴보았다. 오늘은 알럼나이(수료자)분들과 대화하고 C언어 첫문제를 분석했다.
오늘은 알럼나이라 불리우는 정글 전기수 수료자분들하고 만나는 시간을 가졌다. 나같은 경우는 임베디드 SW, 특히나 차량 SW에 관심이 많아서 다산 네트워크에 다니시는 분과 대화를 나눴다. 이 포스팅은 다같이 이야기를 나눈 1시간짜리 내용을 간략히 줄인 내용이다.
C언어 링크드 리스트 1번 문제에 대해 정리해보았다. 토요일과 일요일을 걸치면서 학습을 했고, 일요일날 TIL 내용을 대체한다. 앞으로 글올라가는 방식이 살짝 달라질 것 같다.

오늘은 GCC에 대해서 공부해보았다. GCC는 GNU 컴파일러 모음이다. 여기서 GNU는 GNU’s not Unix의 재귀 약자로 리처드 스톨먼이 각종 자유 SW들이 돌아가고 번영할 수 있는 기반 생태계를 구축하기 위해 시작한 프로젝트이다.

B-Tree는 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 균형을 맞추는 트리입니다. 정렬된 순서를 보장하고 멀티레벨 인덱싱을 통한 빠른 검색을 할 수 있기 때문에 DB에서 사용하는 자료구조 중 한 종류라고 합니다.

B-Tree는 정렬된 수에 따라 자녀들이 정렬된다. B-Tree의 계산법이 어려워 그림으로 직접 구현해 봤고, 가르쳐주셔서 학습했다. 이번 포스팅에는 비교적 쉬운 계산법을 포스팅헀다.
아침 중에 코어타임을 가지고, 배운 내용을 바탕으로 GCC에 대해 공부하여 미리 올려놨습니다. 오늘은 C언어 링크드 리스트 2,3,4번 문제를 풀어보았습니다. B-Tree는 별개로 포스팅 해놓았으니 참고하시면 좋겠습니다.
오전 팀원 코어 타임을 가졌습니다. 퀴즈를 진행하는 날입니다. BST, B-Tree 에 대해서 서로 공부한 내용을 공유하는 시간을 가졌습니다. 또한 링크드 리스트 5,6,7번에 대해 풀이를 작성해봤습니다.

저번 포스팅에 이어서 스택 앤 큐에 풀어본 문제에 대해 작성해봤습니다. Stack and Queue 1,2,3,4 번에 대해서 풀이와 코드를 작성해보았습니다.

오늘 코어타임에는 각 문항에 대해 서로의 풀이 방식을 공유했습니다. 오늘은 목요일이 바로 다음 날이므로 문제들 위주로 풀어보는 시간을 가졌습니다. 스택 앤 큐 5,6,7번 문제를 풀어보았습니다.

오늘은 바이너리 트리 1,2,3,4 번 문제를 풀었습니다. 내일은 5주차의 마지막날로 코드 리뷰와 팀별 발표가 있기 때문에 팀원들과 함께 발표자료를 구상했습니다.

오늘은 5주차의 마지막 날로 코드 리뷰와 조별 발표를 하는 날입니다. C언어 주차의 마무리 날이 어떤식으로 일정이 진행 되는지 써보았다. 문제를 푸는 것 보다 일주일간의 내용들을 정리하는 시간을 가졌다.

시간이 좀 됐지만, 5주차의 마무리를 해야하므로 퀴즈 내용을 복습해봤다. B-Tree를 설명할 정도로 능숙했지만, 문제를 잘 못 읽어 1, 2번 문제 틀린게 아직까지 마음이 아프다…

사실상 코어타임을 하면서 가상화(도커, 하이퍼 V), malloc 에 대해 개념을 학습했어야 했는데, 못했다. 다음에 다시 알아보는 것으로 하고 시현님이 설명해주신 BST에 대해 재정리를 해보고자 한다. BST란? 모든 원소는 유일한 key 값을 갖는다 (중복 없음)

강의를 들었지만, 아직 개념이 모호한 것이 있다. 이해하고 새롭게 알게된 내용 위주로 적었다. 내용상 부족한 부분이 있을 수 있어 참고용으로 보면 좋을 것 같다.

새로운 주차가 시작되었습니다. 새로운 팀원분들과 일주일에 코어타임에 어떤 내용을 공부할지 이야기 했습니다. 컴퓨터 시스템 같은 경우 저는 8장 예외처리 부분을 맡아서 월요일 설명하기로 했습니다.

AVL 트리는 스스로 균형을 잡는 이진 탐색 트리입니다. 균형 이진 탐색 트리(Self-balancing Binary Search Tree)의 일종으로, 트리의 높이를 항상 일정하게 유지하여 탐색, 삽입, 삭제 연산에서 O(log n)의 성능을 보장하는 자료구조입니다.

오늘의 목표는 코어타임 이전에 RB 트리의 삽입 이론을 노션에 정리하고 코드를 구현하는 것입니다. 가능하다면 EC2까지 구축하려고 합니다. 일요일날 있었던 내용들을 정리해 올려보았습니다.

오늘은 오랜만에 즐기는 정글에서의 일요일인만큼 늦잠을 잤습니다. 그런데 본의아니게 3시 30분에 일어났습니다. 큰일났군요.기상 및 샤워, 출근, 식사화장실 청소와 방 청소를 했습니다.금요일부터 밀렸던 벨로그 TIL을 작성했습니다.

오늘의 목표는 다음과 같습니다. 삭제 과정 이론 정복하기삭제과정 코드로 구현하기그외의 max, min,array 등 코드 구현하기컴퓨터 시스템 한 번 훝고 8장 보기내일이 퀴즈 시행일인 관계로 CS와 트리들의 종류들을 알아보겠습니다.

[오늘의 목표] RB 트리 삭제 완벽 이해 및 주석, 퀴즈 대비 각종 트리 이론 및 특징들 차이 확인,RB 트리 C언어 코드 확인, 컴퓨터 시스템 공부, 퀴즈 오답 노트

모든 C언어 코드들은 정상 구현됩니다!포스팅을 읽기에 앞서... 굉장히 구현하기도 이해하기도 까다로운 트리라고 생각됩니다. 그래서 해당 포스팅 내용이 완벽하다곤 생각하지 않습니다. 수정해야될 부분이 있다면 계속 수정할 예정입니다.
[목표] RB 트리 삭제 완벽 이해 및 주석(마무리작업) 컴퓨터 시스템 공부(8장) 퀴즈 오답 노트 발표자료 준비 시간이 된다면 우분투 18.04 어케할건지 생각하자.

오늘은 6주차 총 발표, 운영진 티타임, 새로운 7주차 발제, 퀴즈 복습, kernal 학습, 버즈빌 특강, 가상 메모리 코어 타임 등 다양한 것들을 했다.

6주차 퀴즈에 대해서 복습겸 정리해보았습니다. 트리 관련된 문제는 전에 포스팅한 내용을 참고해주세요

새로운 7주차가 되었습니다. 자리 이동을 하고 새로운 팀원 분들과 인사를 나눴습니다. 이번주 키워드는 말록랩, 시스템 콜, 데이터 세그먼트, 메모리 단편화, SBRK/MMAP 입니다.

프로세서에 전원을 처음 공급한 시점부터 전원을 끌 때까지 프로그램 카운터(실행할 기계어 코드 위치 지정)는 연속된 값들을 가정한다. 보통의 경우→ 점진적인 순서로 두개의 메모리가 서로 나란히 있는 경우이다. 변화가 생기는 경우→ jump, call 리턴 같은 프로그램

주말 2일 간 있었던 내용을 짧게 작성하였다. 토요일은 팀원들과 코어타임을 가지며 CSAPP의 9장 가상메모리에 대해 학습했다. 일요일은 외할머니의 팔순잔치가 있어 오랜만에 친적분들과 만나는 시간을 가졌다. 주말간 먹었던 사진들을 같이 올려본다

내가 개인적으로 정글 깃허브에 올린방법을 확인해보고자 포스팅해본다.사실상 WEEK01 주차에 작성한 내용이지만, 깃허브 관련해서는 계속해서 사용하므로 참고하면 좋을 것 같다.

해당 글은 말록랩 실습과 리스트 종류, 배치 정책 등에 관한 내용을 다룹니다. malloc lab을 ubuntu 18.04에서 실행시켜보는 방법을 알아봅니다. 실습 시 사용할 구현 방법 또한 알아봅니다.

저번 포스팅에 이어서 앞으로 우리는 mm.c 라는 파일만을 수정하여 Malloc을 구현합니다. 밑에 내용은 Malloc에 들어가야하는 요소들을 정리한 것입니다. CSAPP에 나오는 제일 기본의 Malloc Lab 방식입니다.

오늘 배운 내용들은 직전 포스팅 2개에 작성해 두었다. 참고하면 좋을 것 같다. 오늘 목표인 malloc lab을 결정 짓는 리스트, 배치정책에 대해 공부했다. 또한 malloc lab 기본 코드를 분석하고 주석을 달아 팀원들과 이야기했다.

오늘은 7주차 퀴즈를 진행하는 날입니다. 빠르게 Malloc을 심화적으로 공부해보겠습니다. 퀴즈와 Malloc 구현과 관련된 내용은 따로 작성하겠습니다.
기본적으로 전체틀은 바뀌지 않습니다.First Fit에서 Next Fit으로 바꾸려면, 기존의 코드에서 find_fit 함수만 바꾸면 됩니다. 그러나 이게 끝이 아니었습니다.

오늘은 98점짜리 코드에 대해 공부를 했다. 생각보다 복잡한 방식이 들어가서 놀랐다. reallmalloc을 바꿀 생각을 한다는 것이 특이한 점 같다. 내일은 7주차 발표가 있어 발표자료를 만들고 집에 돌아갔다.

오늘은 7주차 퀴즈 내용에 대해 복습을 했습니다. 이번 주 퀴즈 내용은 난이도가 좀 있었습니다. Malloc 공부도 하고 힙 정렬이랑 DMA 개념도 같이 공부하려니 시간이 배분을 잘 못했던 것 같습니다.

전체적인 로직은 Segregated List 과 동일합니다. 원래 해당 리스트는 85점 정도가 나옵니다. 그러나 우리가 해당 코드에서 주목해야될 점은 재할당 정책과 태그를 사용한다는 점입니다. 이 방법을 통해 98점이라는 높은 점수를 받을 수 있습니다.

오늘은 7주차 말록랩 마지막 날이다. 마지막 날이니, 발표를 진행하였고 8주차 새로운 웹 서버 만들기 발제를 했다. 코드리뷰도 진행하였다. 오늘은 주간 운영진 티타임이 아닌 이동석 코치님의 웹 기술의 진화 강의가 있어 유익한 시간을 보냈다. 빨리 마무리하겠다.

오늘은 이동석 코치님께서 8주차 웹서버를 시작하기 전에 웹 기술의 진화라는 강의를 해주셨습니다. 강의 내용은... 프로토콜은 컴퓨터끼리 통신하기 위한 규약입니다. 컴퓨터끼리 데이터를 주고받을때 지켜야합니다.
이번 주차는 목요일부터 시작하게 되어서 목요일 내용을 조금만 작성해보았다. 금욜날은 전체적인 내용의 흐름을 파악하고, 무엇을 중점적으로 볼지 생각해보았다. 나는 파일 디스크럽터와 12장 쓰레드 내용을 중점적으로 공부해보겠다.
정글에서 배포한 자료에는 echo 서버 파일이 없습니다. 그래서 제 개인적으로 echo 서버를 돌렸던 경험에 대해 작성해보았습니다. 참고로 Synology를 통한 SSH 연결로 구현했습니다.

모든 언어의 런타임 시스템은 입출력을 수행하기 위한 고급 기능들을 제공한다. C는 버퍼를 통해 I/O를 수행하는 printf, scanf 같은 함수들을 표준 I/O 라이브러리에서 제공한다.

주말간의 일상을 작성해보았다. 집에 갔다왔다. 복귀해서는 echo 서버를 분석했지만 따로 포스팅하기로 하겠다.

echo는 서버와의 연결을 수립한 이후에 클라이언트는 표준 입력에서 텍스트 줄을 반복해서 읽는 루프에 진입하고, 서버에 텍스트 줄을 전송하고, 서버에서 echo 줄을 읽어서 결과를 표준 출력으로 인쇄합니다.

정글에선 공휴일도 쉬는 날이 아닙니다. 그래서 오늘은 주말간 쉰 죄책감으로 다시 힘내서 나아가보겠습니다. 오늘 목표는 11장 완독하기(정리는 나중에), (echo 이후)퀴즈를 위한 키워드 개념 정리, tiny 서버 구현(진행중) 입니다.

국제 표준화 기구에서 개발한 모델입니다. 네트워크의 제일 기본적인 개념이라고 생각합니다.계층명(프로토콜)의 형식으로 설명합니다.

인터넷에서 쓰이는 프로토콜들의 모음이다. HTTP, TCP, UDP, IP 등이 속합니다. 위의 사진은 OSI 7 Layer와 비교한 사진입니다. 간단히 설명합니다.

클라이언트 - 서버 모델은 모든 네트워크 응용 프로그램은 해당 모델을 기초하고 있다. 한 개의 서버에서 프로세스와 한 개 이상의 클라이언트 프로세스로 구성된다.

일반적으로 Socket이라고 하면 BSD 소켓을 말합니다. (POSIX 기준으로 버클리에서 만든 네트워크 인터페이스)TCP / IP 프로토콜을 기반으로 개발된 소켓 인터페이스이다.
리눅스/유닉스 계열 OS에서 열린 파일, 소켓, 파이프 등의 리소스를 식별하기 위한 정수형 번호이다.
Datagram Socket vs Stream Socket 에 대해 다뤄봤습니다. 전체적인 흐름은 UDP와 TCP 연결의 특성과 비슷합니다.

하드웨어적 서버에 접속한 사용자에게 웹 서비스를 제공하기 위해 사용되는 소프트웨어 서버의 한 종류입니다. 저희가 웹 개발을 할 때 웹 서버를 구현하기 위해 아파치를 쓰는 것과 같습니다.

MIME 타입은 웹과 이메일 등에서 파일이나 데이터의 종류를 식별하기 위한 표준 포맷입니다. 초기에는 이메일 첨부파일의 타입을 구분하기 위해 개발되었으나 발전되어 웹과 API 등 다양한 곳에서 쓰이게 되었습니다.‘데이터가 어떤 형식인지’를 나타내는 문자열로 웹 서버와

웹서버에서 동적인 페이지를 보여 주기 위해 임의의 프로그램을 실행할 수 있도록 하는 기술 중 하나입니다. 서버를 통해 들어온 웹 브라우저에서 넘겨진 요청을 프로그램에 적절히 넘겨줍니다.

하이퍼 텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로, 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지 정해 놓은 규칙이다. Request, Response 로 구성되어 있고 80번 포트를 사용합니다.

IP 주소는 일반적으로 비부호형 32비트 이진수로 표현되지만, 사람이 읽기 쉬운 형식으로는 8비트씩 4부분으로 나누어 10진수로 표현하며, 각 부분은 점으로 구분합니다. (192.168.0.1)

TCP는 연결 지향적 프로토콜로, 안정적인 통신을 보장합니다. 이를 위해 헤더가 매우 복잡하며 다양한 제어 정보를 포함합니다.

기본적으로 인터넷 클라이언트와 서버는 서로 통신할 때 IP주소를 사용합니다. 그러나 사람들이 기억하기 어려워서 IP 주소를 도메인 이름(문자, 숫자)으로 매핑하여 정의를 했습니다.

오늘은 tiny 서버를 구현하고 분석하는데 많은 시간을 투자했다. 하루종일 하다보니 어떤 느낌인지 감이 오기 시작한 것 같다. 아쉽지만, Proxy까지 구현해야해서 빠르게 이해하고 넘어가야겠다.

tiny서버는 소형 웹서버입니다. HTTP 요청을 처리하고 정적 또는 동적 콘텐츠를 클라이언트(주로 웹 브라우저)에 전달하는 기능을 수행합니다.

오늘은 URI, URL, URN 개념정리, Proxy 개념 정리, Proxy 서버 구현, 발표자료 구성을 목표로 했다.

URI (Uniform Resource Identifier)인터넷 서비스(웹 서비스 등)을 전제로 하여, 인터넷 응용 정보자원(텍스트, 비디오, 음향, 이미지, 기타 서비스 등)에 대한, 통일적 식별 체계를 지칭하는 개념적 용어 입니다. → 네트워크의 리소스를 식별할

클라이언트(사용자)와 인터넷 사이에 위치한 중계 서버입니다. 사용자가 웹사이트에 직접 접속하지 않고, 프록시 서버를 통해 접속하게 함으로써 다양한 기능과 이점을 제공합니다.

해당 포스팅은 Proxy 서버 C언어 구현에 대한 분석 내용을 설명합니다. 앞의 포스팅을 통해 Proxy의 개념과 특성을 알고 넘어오시길 추천드립니다.클라이언트(사용자)와 인터넷 사이에 위치한 중계 서버입니다.

오늘의 목표느 8주차 오답 노트 작성, 8주차 전체 정리(노션, 벨로그 등)입니다. 오늘은 8주차 마지막 날로, 팀별 발표를 진행하고 9주차 발제를 했습니다. 또한, 스파르타 코딩 교육의 채용 설명회를 들었습니다.

오늘 8주차 퀴즈를 복습해보았습니다. 네트워크 관련 내용, 포인터 개념 등 다양한 내용이 문제로 나왔습니다.

IT 메이커 교육 (PM, 디자인, 개발), 게임 개발, 스튜디오, 아웃소싱, 글로벌까지쌍방향으로 흐르는 정보(모든 직원이 모이는 시간을 가진다)