본문 바로가기

분류 전체보기

(65)
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가 처리하는지 궁금하실겁니다. 이러한 프로세스와 스케줄러를 관리하는 스케줄러에 대해서도 알아보겠습니다. 스케줄링 알고리즘에도 여러 종류가 있는데, 그 중에서 한 가지 방법을 골라서 구현에 적용해보았습니다. 다시 본론으로, 프로세스와 스레드에 대해 알아보겠..
함수형 프로그래밍 기초 - 재귀, 카테고리 이론, 모나드(Monad), 고차 함수(Java) 함수형 프로그래밍 기초 저번 포스팅에서 함수형 프로그래밍이란 무엇인지, 함수형 프로그래밍의 주요 개념인 불변성, 참조 투명성 등을 알아보았구요, 람다 함수의 기반을 이루는 람다 대수가 무엇인지 알아보았습니다. 그리고 JAVA에서 함수형 프로그래밍을 구현하는 방법인 함수형 인터페이스에 대해서도 간단히 살펴보았습니다. 자세한 내용은 아래 포스팅을 확인해주세요. https://porolog.tistory.com/19#comment17080166 함수형 프로그래밍 입문 with 람다 대수, 함수형 인터페이스 (Java) 함수형 프로그래밍? 오늘은 함수형 프로그래밍에 대해 알아보겠습니다. 함수형 프로그래밍? 함수로 만들면 함수형 아닌가? 절차지향형 프로그래밍에서는 함수를 사용하니까 지금껏 해왔던게 porolog...
오토마타 이론과 Parser의 원리 - HTML Parser 만들기 (Java) 이번 포스팅에서는 비교적 간단한 HTML, XML 문서가 어떻게 파싱되는지 알아보겠습니다. 그 전에 XML, HTML이 무엇인지부터 알아야합니다. XML, HTML을 파싱한 결과물인 DOM의 구조에 대해서도 살펴보겠습니다. HTML, CSS, Javascript 코드는 웹 페이지를 구성하는데요, HTML을 파싱하여 생성된 트리 자료구조를 DOM, CSS를 파싱하여 얻은 자료 구조를 CSSOM, JS 코드는 AST라고 합니다. DOM, CSSOM, AST로 웹브라우저에 화면이 렌더링되는 과정을 살펴보면서 컴파일링 이론을 왜 배워야하는지 생각해보겠습니다. 좀 더 나은 이해를 돕기위해 위의 DOM, 그리고 컴파일러 이론의 기반을 이루는 오토마타 이론을 간단히 알아보고, 이를 바탕으로 간단한 HTML Parse..