Coding Groot
최근 데브옵스 및 인프라 글
-
TLS 1.3 with Wireshark
TLS 1.3 with Wireshark
2025.03.20TLSHTTPS 복습 with TLS 1.2 feat. RSAHTTPS(HTTP Secure)는 HTTP 프로토콜에 SSL/TLS 암호화를 추가하여 보안성을 강화한 프로토콜이다.HTTPS는 웹 브라우저와 웹 서버 간의 통신을 암호화하여 제3자가 통신 내용을 도청하거나 조작하는 것을 방지하기 위한 장치이다.이미지 참고: https://prod-files-secure.s3.us-west-2.amazonaws.com/da29a764-c3f4-4c2d-a877-3d3f432b361e/42d68503-260d-4659-8aef-77cac8893bb2/image.png글 참고: https://blog.bytebytego.com/p/how-does-https-work-episode-6HTTPS에서는 데이터가 어떻게 .. -
IPC
IPC
2025.03.20IPC(Inter-Process Communication)IPC란 여러 프로세스가 서로 데이터를 주고 받으면서 협력할 수 있도록 하는 방법이다.프로세스는 독립적인 실행 객체이기 때문에 서로 통신하기 어렵다는 문제가 있다.다른 프로세스간 통신을 하려면 커널단에서 제공되는 IPC를 사용해야 한다.여러 IPC 방법들에 관해 알아보자!1. Shared Memory프로세스가 공유 메모리 할당을 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해준다. 그 메모리를 어떤 프로세스건 커널의 관여 없이 접근할 수 있다.장점데이터 전송 속도가 빠르다.단점데이터를 읽어야 하는 시점을 알기 어렵다쓰레드와 비슷하게 동시에 같은 메모리에 접근할 수 있기 때문에 동기화 문제를 해결해야 한다.from multiprocessing .. -
Mac Sequoia - multipass timed out waiting for response 해결법
Mac Sequoia - multipass timed out waiting for response 해결법
2024.10.14Mac Sequoia부터 오류가 나기 시작한 multipass 고치기최신 MacOS 15 Sequoia 사용자 주목!최신 Mac OS 15 Sequoia를 사용하고 있으면 현재(24년 10월 기준) 최신 릴리즈인 1.14.0 버전은 문제가 있어서 사용하지 못합니다.multipass lauch를 해도 "timed out waiting for response"라고 뜨며 실패할 것이고 예전에 실행한 인스턴스의 State도 전부 unknown으로 뜰 겁니다.원인원래는 인스턴스들의 IP를 가져오기 위해서 /var/db/dhcpd_leases 파일을 읽을 때 문제가 발생한다고 합니다. 저는 실제로 열어보니 잘 열렸는데 예전에 생성한 인스턴스 정보랑 최근에 생성되며 오류난 인스턴스 정보의 길이부터가 차이나는 것을 확..
최근 프로그래밍 글
-
프로세스 맛보기
프로세스 맛보기
2025.03.20PCB와 Context SwitchingProcess Control Block (PCB)PCB는 OS에서 특정 프로세스에 관한 정보를 담고 있는 자료구조이다. OS 프로세스는 PCB로 표현되고 OS는 PCB를 사용해서 이러한 프로세스를 추적하고 관리한다.PCB로 표현된 프로세스에 관한 정보를 우리 Context라고 부른다.구성 요소- 프로세스 상태: 프로세스의 현재 상태(예: 실행 중, 대기 중, 준비 완료 등)- 프로세스 Number(PID): 각 프로세스를 고유하게 식별하는 ID- 프로그램 Counter: 프로세스가 실행할 다음 명령어의 주소- CPU 레지스터: 누산기, 인덱스 레지스터, 스택 포인터 등 다양한 CPU 레지스터를 포함하며, 프로세스 실행 중 임시 데이터 및 중간 결과를 저장하는 곳- .. -
시스템 콜
시스템 콜
2025.03.20System call왜 필요할까?가장 단순하게 어떤 프로세스든지 I/O나 다른 장치에 관한 여러 작업을 원하는 대로 두면 어떨끼?모든 프로그램은 디스크 전체를 덮어쓰거나 파일에 접근할 수 있게 된다. 파일 권한 확인하는 코드도 높은 가능성으로 무용지물이 되어버릴 가능성이 크다. 그래서 우리는 제한된 모드인 User mode와 kernal 모드로 프로세서의 모드를 나눠서 사용한다!User modeUser mode는 실행되느 코드가 할 수 있는 것이 제한된 모드이다. 예를 들어, I/O 요청을 할 수 없다. 만약 User mode에 있는데 I/O 요청을 날리면 프로세서가 예외를 발생시키고 OS가 프로세스를 종료시킬 가능성이 높다.Kernal mode커널 모드는 OS(Kernal)이 실행되는 모드이다. 여기서.. -
꼬리 재귀
꼬리 재귀
2025.03.20면접을 준비하며 남긴 노트를 발행해보고 있습니당꼬리 재귀에 관해 알아봅시당.Tail call optimization (TCO)def foo(): return bar() def bar(): pass 꼬리 재귀(tail recursion)꼬리 재귀 함수의 마지막 단계에서 자기 자신을 호출할 때 추가 연산 없이 바로 호출하는 경우를 의미한다. 꼬리 재귀는 일부 컴파일러에서 최적화를 통해 반복문처럼 처리되어 스택 오버플로우의 위험을 줄일 수 있다. 일반 재귀 함수public class FactorialExample { // Normal recursive function to calculate factorial public static int factorial(int n).. -
캐시
캐시
2025.03.20취준하며 남긴 노트를 글로 발행해봅니당.캐시의 계층 구조메모리는 빠를수록 제조 비용이 높아진다. 하지만 우리의 돈은 한정되어 있지만 더 좋은 성능을 원하기 때문에 컴퓨터는 보통 계층적인 캐시 구조를 가진다.가장 비싸고 빠른 캐시 메모리인 L1을 CPU에 가까이 두고 그 다음으로 빠른 메모리를 배치한다. 자주 사용하는 데이터는 가장 빠른 L1에 저장되어 매우 빠르게 접근 된다. 이렇게 배치하면, 성능을 타협하며 전체적인 비용을 매우 낮출 수 있다.성능적으로 보면 어떨까? 계층 구조를 사용하면 여러 단계에서 캐싱을 할 수 있어서 CPU가 캐시에서 데이터를 찾을 확률이 높아진다. L1에서 못찾더라도 L2에서 발견할 가능성이 높다.출처: https://ocw.mit.edu/courses/6-004-computa..
최근 프로그래밍 언어 글
-
[Kotlin] 클로저(Closure)
[Kotlin] 클로저(Closure)
2025.01.30최근에 Refactoring2를 읽으며 자바로 1장을 그대로 실습하려고 했지만 중첩 함수가 지원되지 않아서 따로 클래스, static 함수, 람다로 빼다 보니 책의 흐름과 다소 달라져서 그냥 코틀린으로 실습해보았다. 코틀린은 중첩함수와 Closure가 지원되기 때문에 중첩함수를 자주 활용하는 JS 예제도 비슷하게 따라할 수 있어서 좋았다~!클로저란 뭘까?클로저(Closure)는 함수가 정의될 때의 환경을 기억(Capture)하고 유지하는 개념이다. 클로저는 자신이 선언된 범위(scope)의 변수를 계속해서 유지하고 이후(그 당시에 환경이 소멸됐더라도!)에도 변경할 수 있다.예제 코드먼저 코드부터 봐보자fun incrementFrom(start: Int): (Int) -> Int { // 외부 함수 .. -
서로 닮아 보이는 Decorator, Composite Pattern - 1편
서로 닮아 보이는 Decorator, Composite Pattern - 1편
2025.01.15디자인 패턴을 처음 학습할 때 구조적으로 비슷한 다이어그램을 가진 패턴들이 서로 다른 이름과 목적을 가지고 있어 혼란스러웠던 경험이 있습니다. 이러한 혼란은 단순히 "어떻게 구현되는가?"에 초점을 맞출 때 발생하곤 했습니다.요즘 다시 이전에 디자인 패턴을 펼쳐보고 "왜 이런 패턴이 필요한가?", "이 패턴이 어떤 상황에 써라고 만든 것인가?"라는 질문을 던지며 패턴의 의미와 어떻게 문제 해결했는지 다시 한번 살펴보고 있습니다.특히, 데코레이터(Decorator)와 컴포짓(Composite) 패턴은 겉보기에는 매우 유사해 보이지만, 각각의 목적과 활용 방식에서 큰 차이가 있습니다. 이번 글에서는 두 패턴의 구현과 의도를 비교하고 다른 개발 선배들에게 얻은 해석하는 Tip 등을 공유해보고자 합니다.Decor.. -
IntelliJ 자주 쓰는 단축키 모음
IntelliJ 자주 쓰는 단축키 모음
2024.10.23IntelliJ IDEA요즘 인텔리제이를 자주 쓰는데 자주 쓰거나 혹은 자주 활용하면 좋아보이는 단축키를 정리해보았습니다.읽을 때기능단축어함수 시그니처 보기cmd + PQuick Docs 보기F1선언 보기 (변수, 함수, ...)cmd + B구현 보기cmd + opt + BUsage 보기opt + F7다음 Error 보기F2Symbol로 이동cmd + opt + O편집용기능단축어New Lineshift + enterJoin Linectrl + shift + JSurround Withcmd + opt + TLast Edit Locationcmd + shift + backspaceCaret to ... (커서를 움직이는 법)기능단축어일치하는 bracectrl + MBlock 시작 / 끝ctrl + opt +.. -
Rye로 파이썬 프로젝트 세팅해보기!
Rye로 파이썬 프로젝트 세팅해보기!
2024.07.15어떤 언어로 프로젝트를 하다보면 언어 버전부터 시작해서 Dendency와 Package 관리는 뭐로 할 것인지? 가상환경은 어떤 것으로 관리할 것인지? 나중에 어떻게 패캐지를 배포할 것인지? 등을 고민해야 합니다. 파이썬도 마찬가지로 여러 도구들이 돌아다닙니다.주로 사용한 도구주로 저는 간단하게 제일 아무런 설치가 필요없는 pip와 venv로 프로젝트를 관리를 합니다. 그런데 이번에 팀원들과 FastAPI로 프로젝트를 하면서 운영체제별로 하위 버전에 대한 이슈가 몇 번 생겨서 pip freeze를 저장한 requirements.txt에 한계를 느꼈습니다. 말고도 venv에서 환경을 불러오는 방식과 요즘 많이 채택하여 쓰는 pyproject.toml로 관리하고 싶은 마음도 들어서 다른 것을 찾아보았습니다...