본문 바로가기

Category

(23)
2023년 12월 회고 결국 2024년을 맞이하고 나서야 2023년 12월 회고 글을 쓴다🙃 2023년의 11월 중순부터 참여한 한화시스템 BEYOND SW 캠프 덕분에 2023년의 마지막 두 달인 11월과 12월은 정말 밀도 높게 시간을 보낼 수 있었다. 1년이란 전체 시간 중 가장 몰입했던 두 달이었고, 몰입했던 만큼 정말 순식간에 지나갔다. 한번 빠르게 정리해 보자! 자바와 함께한 12월 12월 초 데이터베이스 미니 팀 프로젝트를 종료함과 동시에 바로 자바 수업에 들어갔다. 자바를 본격적으로 활용한 지는 대략 2년이 조금 안 된 것 같은데 항상 자바에 대한 확신이 없었다. 계속 사용은 하고 있지만 어딘가 비어있는 듯한 느낌을 많이 받았고, 그렇다고 해서 다시 처음부터 꼼꼼하게 복습하기에는 상당한 시간이 걸릴 것 같아 엄두..
MySQL의 ENUM 타입 최근 데이터베이스 설계 프로젝트를 진행하면서 ENUM 타입에 대해 잘못 알고 있던 부분이 있어서 기록을 해두려고 한다. 설계 프로젝트는 MariaDB로 진행했지만 MySQL과 큰 차이가 없을 것이라고 보고 MySQL 기준으로 내용을 작성하려고 한다. MySQL의 ENUM 타입 MySQL에는 ENUM 타입이 존재하는데, SET타입과 마찬가지로 내부적으로 숫자 값으로 매핑해서 관리하는 타입이다. 테이블 자체를 설계하면서 그 구조에 나열된 목록 중에 하나의 값을 가질 수 있다. 글로 설명하는 것보다 SQL 쿼리문 자체를 바로 확인해 보자. CREATE TABLE jdm ( engine ENUM ('B16B', 'RB26DETT', '2JZ-GTE') ); INSERT INTO jdm VALUES ('B16B'..
2023년 11월 회고 어느덧 2023년도 1달 남짓 남았고, 11월도 이제 마무리되어 가는 시점에 나의 첫 번째 회고글을 작성해보려고 한다. 11월에는 나에게 뚜렷한 가시적인 성과는 없었지만, 그럼에도 변화의 기회가 된 순간들이 많았다. 우아한 테크코스 프리코스 작년에도 지원하고 싶었지만, 졸업 작품 완성에 조금 더 집중하고 싶다는 생각에 작년에는 지원을 포기했었다. 졸업 작품 개발과 동시에 함께 지원했던 창업 프로그램의 최종 발표도 앞두고 있었기 때문에 여러모로 바쁘게 시간을 보냈던 것 같은데 시간이 지나고 생각을 해보니 "졸업 작품에 집중"이라는 이유는 핑계에 불과했던 것 같다. 좀 더 솔직해져 본다면 당시 익숙하지 않았던 자바와 어설프게 알고 있는 스프링 프레임워크를 가지고 웹 백엔드 개발을 하면서 어쩌면 스스로 한계를..
클라이언트 서버 시스템에서 프로세스 간 통신 방법 Interprocess communication의 방법으로 살펴본 message passing system과 shared memory system은 프로세스 간 통신 뿐만 아니라 client-server system을 포함한 다른 시스템에서도 사용할 수가 있다. 한편, 이번 포스트를 통해서 살펴볼 방법들은 client-server system에서 주로 활용되는 프로세스 간 통신 방법이다. 클라이언트-서버 통신에는 클라이언트와 서버라는 두 구성요소가 포함되며 클라이언트는 서버에 요청을 보내고 서버는 클라이언트의 요청에 응답하는 형태를 띈다. 1. 소켓(Sockets) 소켓은 클라이언트-서버 시스템에서 통신을 위해서 사용되는 전략 중 하나로, 통신을 위한 endpoint로 정의된다. 따라서 네트워크를 통해서..
프로세스 간 통신 Part2 지난 포스트에서 다루었던 communication link의 논리적 구현 방법 중 하나인 direct/indirect communication에 이어서 이번 포스트에서는 남은 synchronous/asynchronous communication과 automatic/explicit buffering을 다룬다. 그리고 2가지의 논리적 구현 방법은 각각 동기화에 대한 이슈와 버퍼링에 대한 이슈가 있다. 1. Synchronization Message Passing System에서 프로세스 간 통신은 커널에 send()와 receive() 동작에 대한 호출을 통해서 이루어진다. 그리고 프로세스가 이러한 동작을 하려고 할 때 그 동작이 차단(block)된다면 사용하려는 리소스에 접근할 수 있게 되거나 I/O 작업..
프로세스 간 통신 Part1 1. 개요 프로세스는 독립적인 주소 공간을 가지기 때문에 원칙적으로는 다른 프로세스의 주소 공간을 참조하는 것이 불가능하다. 따라서 운영체제에서는 서로 다른 프로세스들이 데이터를 주고 받을 수 있도록 프로세스 간의 자원 접근을 위한 매커니즘인 프로세스 간 통신(IPC, Inter-Process Communication)을 제공한다. 그리고 이 IPC 방식은 공유메모리 모델과 메시지 전달 모델 2가지 모델로 나누어 볼 수 있다. 공유 메모리 모델은 프로세스들이 주소 공간의 일부를 공유하고 해당 영역에 읽기/쓰기 작업을 통해서 통신한다. 그리고 메시지 전달 모델은 커널을 통해서 send와 receive 연산을 통해 데이터를 전송한다. 1.1. 공유 메모리 모델 개요 위의 이미지를 보면 서로 통신을 하려는 프..
프로세스와 쓰레드 1. 개요 운영체제 과목 수업을 들을 때 전체 내용에서 빠짐없이 등장하는 중요한 키워드를 골라보라고 한다면 프로세스와 쓰레드를 고를 수 있을 것 같다. 이번 포스트에서는 프로그램 실행을 제어하는 기본 개념임과 동시에 프로그램이 여러 작업을 동시에 실행할 수 있도록 허용하는 역할을 담당하는 프로세스와 쓰레드에 대해서 정리해보려고 한다. 2. 프로세스 노션이나 카카오톡과 같이 우리가 컴퓨터에 어떠한 프로그램을 설치할 때를 떠올려 보면 .exe라는 확장자가 붙은 파일을 항상 마주하게 된다. 이처럼 프로그램은 .exe와 같은 확장자를 가진 하나의 실행파일로 컴퓨터의 저장매체(하드디스크, SSD 등)에 존재하고 있다. 이 프로그램이 메모리에 올려지고, CPU에 의해 실행되는 것이 바로 프로세스이다. 즉, 프로그램..
이진 탐색 트리 1. 개요 트리(Tree) 는 추상 자료형으로 루트 값과 부모-자식 관계의 서브트리로 구성되어 있는 자기 참조(Self-Referential) 자료구조이다. 그리고 이진트리와 이진 탐색 트리는 트리 중에서도 가장 널리 사용되는 트리 자료구조이지, 트리 자체를 대변하는 것은 아니다. 이진 탐색 트리는 정렬된 트리로 다음의 조건을 만족해야 한다. 노드의 왼쪽 서브 트리에는 현재 노드의 값보다 작은 값을 가진 노드가 온다. 노드의 오른쪽 서브 트리에는 현재 노드의 값보다 큰 값을 가진 노드가 온다. 왼쪽과 오른쪽 서브 트리 모두 이진 탐색 트리여야 한다. 2. 이진 탐색 트리의 특징 이진 탐색 트리는 시간복잡도 측면에서 강점을 가지고 있다. 연산 시간복잡도(평균) 시간복잡도(최악) 삽입 $O(\log n)$ ..