본문 바로가기

전체 글

(67)
Git의 내부 - 파일 상태와 Git 객체 알아보기 이번 포스팅에서는 Git의 내부에 대해서 살펴보겠습니다. 본 포스팅에 서술된 내용은 아래 내용을 참고하여 정리한 내용입니다. https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-%EA%B0%9C%EC%B2%B4 Git - Git 개체 여러분이 사용하는 쉘이 어떤 것인가에 따라 master^{tree} 표현식이 오류를 일으킬 수도 있다. Windows 에서 CMD는 ^ 문자는 이스케이프 기호로 사용한다. ^ 문자를 제대로 사용하려면 git cat-file -p master git-scm.com Git에서는 변경된 파일의 상태를 식별하고, 변경된 내용을 스냅샷의 형태인 커밋에 담아서 기록합니다. 파일에서 어떤 부분을 수정했는지 컴퓨터가 어떻..
mySQL 컨테이너로 JDBC 프로그래밍 (Java) 오늘은 저번에 Docker에서 띄운 mySQL 컨테이너에 연결해서 DB에 데이터를 저장하고 가져오는 간단한 JDBC 프로그래밍을 해보았습니다. JDBC 프로그래밍은 DB에 접근할 수 있도록 해주는 JDBC API를 이용하여 데이터의 추가, 삭제, 수정, 검색 등을 할 수 있는 자바 응용프로그램을 작성하는 것인데요, 한 마디로 mySQL 등의 DB를 사용하는 응용 어플리케이션을 작성하는 것입니다. JDBC에 대해 알아보기 앞서, 데이터베이스와 SQL에 대해서 간단하게 살펴보겠습니다. 데이터베이스 데이터베이스(Database)는 데이터를 저장하고 관리하기 위한 체계적인 방법을 제공하는 시스템입니다. 데이터베이스는 일반적으로 테이블(Table)이라는 구조를 사용하여 데이터를 저장하고, SQL(Structure..
Docker와 mySQL 컨테이너 만들기 안녕하세요, 이번 포스팅에서는 Docker가 무엇인지에 대해 먼저 알아보겠습니다. Docker는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 쉽게 개발, 배포 및 실행할 수 있도록 지원합니다. 그리고 Docker를 활용하여 MySQL 컨테이너를 만드는 방법에 대해 알아보겠습니다. DockerCon에 가다. 아래 대화는 Docker에 대한 이해를 돕기 위한 가상의 인물 간 대화 내용입니다. (차차와 브루니는 DockerCon 2023을 소개하는 전광판 옆을 걸어갑니다.) 차차 : 어, 브루니. 이게 뭐죠? DockerCon 2023?🤣 브루니 : 아, DockerCon요? Docker란 가상화 기술이에요. 이제 많은 개발자들이 이걸 이용해서 애플리케이션을 배포하고 운영하고 있어요. Docker를 잘 ..
HTTP 요청 전송 및 분석 - 소켓 프로그래밍, TCP 전송의 원리 (Java) 안녕하세요, 저번 포스팅에서 HTTP에 대해서 알아보았습니다. 다시 한번 정리하자면, HTTP는 인터넷에서 데이터를 주고받기 위한 프로토콜 중 하나로, 웹 브라우저와 웹 서버 간의 통신을 담당합니다. HTTP는 클라이언트가 서버에 요청(request)을 보내고, 서버는 클라이언트에 응답(response)을 보내는 구조로 동작합니다. 이러한 구조를 바탕으로 웹 사이트를 방문하거나 파일을 다운로드하게 됩니다. 자세한 내용은 아래 포스팅을 참고바랍니다. https://porolog.tistory.com/25 HTTP 요청 전송 및 분석 with HttpRequest (Java) 이번 포스팅은 브라우저에 URL을 입력했을 때, 일어나는 일 중, HTTP로 요청을 보내고, 그 결과를 서버로부터 받는 http 프로..
HTTP 요청 전송 및 분석 with HttpRequest (Java) 이번 포스팅은 브라우저에 URL을 입력했을 때, 일어나는 일 중, HTTP로 요청을 보내고, 그 결과를 서버로부터 받는 http 프로토콜의 작동을 프로토타입으로 구현해보는 것에 대한 내용입니다. 그 전에 앞서 네트워크에 대한 간단한 내용을 소개하고, HTTP란 무엇인지에 대해 살펴보겠습니다. 먼저, HTTP가 무엇인지에 대해 알아보기에 앞서, HTTP를 '왜' 알아야하는지 알아야겠죠? HTTP가 네트워크에서 어느 부분에 사용되고, 실생활과는 어떤 연관성이 있는지 궁금할 것입니다. 우리 근처에서는 바로 주소창에 URL을 입력할 때가 있겠습니다. (이는 논외로 인터뷰 단골 질문이라고 합니다..) 주소창에 URL을 검색하면 일어나는 일 웹 브라우저의 주소창에 URL(Uniform Resource Locator..
비동기와 동기화 - 비동기 카페 주문 구현 (Java) 안녕하세요, 이번 포스팅은 생소하지만 아주 중요한 내용인 비동기/동기의 개념, 그리고 동기 처리 대비 효율적이라는 비동기 처리의 장점과 그렇지만 공유된 자원에 동시 접근하기 때문에 생길 수 있는 부작용에 대해 알아보겠습니다. 그리고 비동기 처리의 부작용을 해결할 수 있는 동기화(Synchronization) 방법에 대해서도 알아보겠습니다. 내용을 살펴보면 처음보신다면 좀 생소하고 헷갈립니다. 프로그래머들이 편하게 비동기와 동기화를 사용할 수 있도록 자바에서도 묶어서 구현해놓은 인터페이스가 존재하는데요, 바로 CompletableFuture라는 API입니다. 이에 대해서도 중요한 메서드들과 내부 구현을 살펴보겠습니다. 마지막으로 API를 사용해서 비동기로 주문을 처리하는 카페를 구현해하면서 실제로 어떻게 ..
객체지향 설계, UML 다이어그램 - 콘솔 체스 구현하기 (Java) 이번 포스팅의 주제는 콘솔 체스 구현하기입니다. 복잡한 체스 룰을 조금 간략화시켰고, UI부분은 콘솔 출력으로 대체했습니다. 들어가기 앞서서, 설계의 중요성은 말 안해도 누구나 다 아실겁니다. 저도 마찬가지로 일단 돌아가게만 구현을 했다가 리팩토링 과정에서 한줄한줄 찾아가면서 코드를 고치면서 생산성이 많이 떨어진다는 느낌을 받았던 경험이 있는데요, 그래서 저도 이번에는 설계를 가능한 범위까지하고, 구현을 하면서 설계를 보완해나간다는 목표를 잡았습니다. 설계를 잘 할 수 있도록 도와주는 툴이 있는데요, 테스트 코드 작성과 UML 모델링 언어입니다. 흔히 TDD라고도 말하는, 테스트 주도 개발 방법론입니다. 테스트 코드 작성을 선행으로 전체적인 그림을 그린 후에 구현하는 방법인데, 이 방법은 사실 저도 실천..
프로세스와 스레드의 개념과 이해 - CPU 스케줄러 구현하기 (Java) 이번 주제는, CPU 스케줄러를 구현하면서 프로세스와 스레드의 개념을 이해해보는 것입니다. 프로세스와 스레드의 개념에 대해서는 제 블로그의 반효경 운영체제 시리즈에 정리해두었으므로, 이번 포스팅에서는 간단히 개념을 짚어보면서 관련된 구현의 내용을 설명해드리겠습니다. 이번 포스팅에서 구현할 것은 프로세스와 스레드를 관리하는 스케줄러의 프로토 타입입니다. 프로세스, 스레드의 개념을 먼저 학습하고, CPU는 한 개인데 어떻게 수많은 프로세스와 스레드들을 CPU가 처리하는지 궁금하실겁니다. 이러한 프로세스와 스케줄러를 관리하는 스케줄러에 대해서도 알아보겠습니다. 스케줄링 알고리즘에도 여러 종류가 있는데, 그 중에서 한 가지 방법을 골라서 구현에 적용해보았습니다. 다시 본론으로, 프로세스와 스레드에 대해 알아보겠..