2024
- 28 Jul [Python] asyncio 파헤치기 - ④ 동시성을 지원하는 애플리케이션 구현하기
- 15 May [Python] Coroutine이 Thread 보다 가벼운/빠른 이유
- 03 May [Python] Thread-Local과 Context-Local
- 29 Apr [Python] Singleton을 사용하는 다섯 가지 방법
- 23 Apr [Python] 메타클래스(Metaclass)
- 16 Apr [Algorithm] Quick Select: K 번째 원소 찾기
- 27 Mar [Python] 파이썬의 반올림은 사사오입? 오사오입? (+ 부동 소수점, Decimal)
- 25 Mar [Python] 간편하게 행렬 뒤집기 & 회전하기 (+ zip(), [::-1])
- 18 Mar [Algorithm] Undirected & Directed Graph의 Cycle Detection
- 15 Mar [Python] list와 dict의 내부 구현과 시간 복잡도 (+ 동적 배열, 해시 충돌)
- 04 Mar [Python] asyncio 파헤치기 - ③ 동시성이 달성되지 않는 상황
- 02 Mar [Python] asyncio 파헤치기 - ② 코루틴, 태스크, 퓨처, Awaitable
- 28 Feb [Python] asyncio 파헤치기 - ① 배경 지식 정리
- 17 Feb [Python] pyproject.toml 파일의 역할 (+ poetry, 파이썬 패키징)
- 05 Feb [Python] 클래식 코루틴(Classic Coroutine)
- 30 Jan [Python] 동시성(Concurrency): 쓰레드, 프로세스, 코루틴 (+ Spinner 예제)
- 20 Jan [Python] 파이썬은 왜 느릴까?
- 19 Jan 토익 스피킹 갱신 후기 및 실전 압축 꿀팁 (기록용)
- 08 Jan [Python] GIL(Global Interpreter Lock, 전역 인터프리터 락)
- 04 Jan [OOP] DI(Dependency Injection, 의존성 주입)
2023
- 30 Dec [Effective Python] 모아보기
- 30 Dec [Better Way #54] 스레드에서 데이터 경합을 피하기 위해 Lock을 사용하라
- 29 Dec [Better Way #53] 블로킹 I/O의 경우 스레드를 사용하고 병렬성을 피하라
- 28 Dec [Better Way #52] 자식 프로세스를 관리하기 위해 subprocess를 사용하라
- 22 Dec [Algorithm] 유클리드 호제법(Euclidean Algorithm): 최대공약수(GCD)와 최소공배수(LCM) 구하기
- 20 Dec [OOP] SOLID 원칙
- 17 Dec [Better Way #51] 합성 가능한 클래스 확장이 필요하면 메타클래스보다는 클래스 데코레이터를 사용하라
- 16 Dec [Algorithm] Kadane’s Algorithm: 연속 부분 수열의 최대 합 구하기 (+ DP의 Space Complexity 최적화하기)
- 15 Dec [Python] Sequence에서 홀수 번 등장하는 원소 찾기 (w/ Hash Table)
- 15 Dec [Python] Bitwise & 연산을 이용하여 홀수 판단 하기
- 15 Dec [Algorithm] Floyd’s Cycle Detection: Linked List에 Cycle이 존재하는지 판단하기
- 14 Dec [OOP] 추상화(상속, 다형성, 추상 타입)와 재사용
- 14 Dec [Better Way #50] __set_name__으로 클래스 애트리뷰트를 표시하라
- 13 Dec [Better Way #49] __init_subclass__를 사용해 클래스 확장을 등록하라
- 12 Dec [Better Way #48] __init_subclass__를 사용해 하위 클래스를 검증하라
- 11 Dec [Python] Bitwise & 연산을 이용하여 여러 Dictionary 간 교집합 구하기
- 11 Dec [Better Way #47] 지연 계산 애트리뷰트가 필요하면 __getattr__, __getattribute__, __setattr__을 사용하라
- 10 Dec [Better Way #46] 재사용 가능한 @property 메서드를 만들려면 디스크립터를 사용하라
- 09 Dec [Python] heapq 우선순위 큐에서 최솟값 추출하기
- 09 Dec [Python] 파이썬의 동작 원리: 인터프리터 언어, 컴파일 언어, 그리고 CPython
- 08 Dec [Better Way #45] 애트리뷰트를 리팩터링하는 대신 @property를 사용하라
- 07 Dec [Better Way #44] 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라
- 28 Nov [OOP] 객체지향의 장점과 특징
- 28 Nov [Better Way #43] 커스텀 컨테이너 타입은 collections.abc를 상속하라
- 24 Nov [Better Way #42] 비공개 애트리뷰트보다는 공개 애트리뷰트를 사용하라
- 23 Nov [Better Way #41] 기능을 합성할 때는 믹스인 클래스를 사용하라
- 22 Nov [Better Way #40] super로 부모 클래스를 초기화하라 (+ MRO)
- 21 Nov [Better Way #39] 객체를 제너릭하게 구성하려면 @classmethod를 통한 다형성을 활용하라
- 20 Nov [Better Way #38] 간단한 인터페이스의 경우 클래스 대신 함수를 받아라
- 19 Nov [Better Way #37] 내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라
- 17 Nov [Network] 5. 애플리케이션 계층
- 14 Nov [Python] 숫자의 각 자릿수 구하기
- 13 Nov [Python] 10진수를 n진수로 변환하는 함수
- 12 Nov [Python] match-case 문, else 절
- 10 Nov [Python] 문자열 내 다중 공백 하나로 줄이는 방법
- 05 Nov [Python] 컨텍스트 매니저 프로토콜(Context Manager Protocol)과 with 문
- 02 Nov [Network] 4. 트랜스포트 계층
- 30 Oct [Python] 이터러블(Iterable), 이터레이터(Iterator), 제너레이터(Generator)
- 23 Oct [Network] 3. 네트워크 계층
- 20 Oct [Python] 데코레이터(Decorator)
- 18 Oct [Network] 2. 데이터링크 계층
- 12 Oct [Python] 스코프(Scope)와 클로저(Closure)
- 11 Oct [Network] 1. 네트워크 기초
- 10 Oct [OS] 8. 디스크 관리
- 09 Oct [OS] 7. 가상 메모리
- 07 Oct [OS] 6. 메모리 관리: ③ 세그멘테이션 기법 (Segmentation), 페이지드 세그멘테이션 기법 (Paged Segmentation)
- 07 Oct [OS] 6. 메모리 관리: ② 페이징 기법 (Paging)
- 06 Oct [MySQL] 테이블 내의 데이터 개수 구하기 (+ DISTINCT)
- 06 Oct [OS] 6. 메모리 관리: ① 개요
- 05 Oct [Python] 정렬 기준 커스터마이징 하기
- 05 Oct [Python] 추상 기반 클래스(Abstract Base Class), collections.abc 모듈
- 05 Oct [MySQL] 두 테이블의 Cartesian Product를 구하는 세 가지 방법
- 05 Oct [OS] 5. CPU 스케줄링
- 04 Oct [OS] 4. 프로세스 (Process)
- 03 Oct [OS] 3. 프로그램의 구조와 실행
- 02 Oct [MySQL] FROM 절에 중첩 SELECT 문 사용하는 예제
- 02 Oct [MySQL] SELECT 결과가 비어있을 때 NULL을 반환하는 방법
- 02 Oct [MySQL] GROUP BY 후 조건에 부합하는 값들의 개수 및 비율 구하기
- 02 Oct [OS] 2. 컴퓨터 시스템의 동작 원리
- 02 Oct [OS] 1. 운영체제 개요
- 30 Sep [Python] 타입(Type): 덕 타이핑(Duck Typing), 이름 기반 타이핑(Nominal Typing)
- 20 Sep [Python] Data Class Builder: collections.namedtuple, typing.NamedTuple, @dataclass
- 06 Sep [Python] 가비지 컬렉션(Garbage Collection): 객체를 삭제하려면?
- 02 Sep [Python] 가변성(Mutability)과 불변성(Immutability): 튜플은 항상 불변일까?
- 01 Sep [Python] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)
- 28 Aug [Python] ==와 is의 차이점
- 20 Aug [Python] First-Class Object, Higher-Order Function, 그리고 함수형 프로그래밍
- 09 Jul [Better Way #36] 이터레이터나 제너레이터를 다룰 때는 itertools를 사용하라
- 09 Jul [Better Way #35] 제너레이터 안에서 throw로 상태를 변화시키지 말라
- 08 Jul [Better Way #34] send로 제너레이터에 데이터를 주입하지 말라
- 02 Jul [Better Way #33] yield from을 사용해 여러 제너레이터를 합성하라
- 02 Jul [Better Way #32] 긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라
- 01 Jul [Better Way #31] 인자에 대해 이터레이션할 때는 방어적이 돼라
- 29 Jun [Better Way #30] 리스트를 반환하기보다는 제너레이터를 사용하라
- 29 Jun [Better Way #29] 대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라
- 29 Jun [Better Way #28] 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라
- 29 Jun [Better Way #27] map과 filter 대신 컴프리헨션을 사용하라
- 28 Jun [Better Way #26] functools.wraps을 사용해 함수 데코레이터를 정의하라
- 28 Jun [Better Way #25] 위치로만 인자를 지정하게 하거나 키워드로만 인자를 지정하게 해서 함수 호출을 명확하게 만들라
- 27 Jun [Better Way #24] None과 독스트링을 사용해 동적인 디폴트 인자를 지정하라
- 27 Jun [Better Way #23] 키워드 인자로 선택적인 기능을 제공하라
- 27 Jun [Better Way #22] 가변 위치 인자를 사용해 시각적인 잡음을 줄여라
- 26 Jun [Better Way #21] 변수 영역과 클로저의 상호작용 방식을 이해하라
- 26 Jun [Better Way #20] None을 반환하기보다는 예외를 발생시켜라
- 26 Jun [Better Way #19] 함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라
- 22 Jun [Better Way #18] __missing__을 사용해 키에 따라 다른 디폴트 값을 생성하는 방법을 알아두라
- 22 Jun [Better Way #17] 내부 상태에서 원소가 없는 경우를 처리할 때는 setdefault 보다 defaultdict를 사용하라
- 21 Jun [Better Way #16] in을 사용하고 딕셔너리 키가 없을 때 KeyError를 처리하기보다는 get을 사용하라
- 21 Jun [Better Way #15] 딕셔너리 삽입 순서에 의존할 때는 조심하라
- 20 Jun [Better Way #14] 복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라
- 13 Jun [Better Way #13] 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라
- 13 Jun [Better Way #12] 스트라이드와 슬라이스를 한 식에 함께 사용하지 말라
- 13 Jun [Better Way #11] 시퀀스를 슬라이싱하는 방법을 익혀라
- 13 Jun [Effective Python] 파이썬의 딕셔너리(dict) 타입
- 11 Jun [Better Way #10] 대입식을 사용해 반복을 피하라
- 11 Jun [Better Way #09] for나 while 루프 뒤에 else 블록을 사용하지 말라
- 11 Jun [Better Way #08] 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라
- 09 Jun [Better Way #07] range 보다는 enumerate를 사용하라
- 09 Jun [Better Way #06] 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라
- 09 Jun [Better Way #05] 복잡한 식을 쓰는 대신 도우미 함수를 작성하라
- 09 Jun [Better Way #04] C 스타일 형식 문자열을 str.format과 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라
- 31 May [Better Way #03] bytes와 str의 차이를 알아두라
- 31 May [Better Way #02] PEP 8 스타일 가이드를 따르라
- 31 May [Better Way #01] 사용 중인 파이썬의 버전을 알아두라
- 25 Mar NAVER DEVIEW 2023에 다녀오다! (Day 2)
- 25 Mar [DEVIEW 2023] 값비싼 Diffusion Model을 받드는 저비용 MLOps (Symbiote AI) 정리
- 25 Mar [DEVIEW 2023] SNOW AI Filter (SNOW) 정리
- 25 Mar [DEVIEW 2023] ML/AI 개발자를 위한 단계별 Python 최적화 가이드라인 (NAVER Cloud) 정리
- 25 Mar [DEVIEW 2023] WebtoonMe 개발기 (NAVER WEBTOON) 정리
- 17 Mar [Paper] ArcFace: Additive Angular Margin Loss for Deep Face Recognition
- 23 Feb [Paper] Siamese Neural Networks for One-shot Image Recognition
- 18 Jan [Paper] Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection
2022
- 30 Nov [Docker] Container 내 Shared Memory /dev/shm 메모리 관리
- 18 Nov [Docker] Container 내 Shell에서 한글 입력이 안 되는 문제 해결
- 16 Nov [Paper] Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships
- 13 Oct [Linux] 파일 시스템에서 사용 중인 용량 확인하기
- 13 Oct [Linux] scp를 이용하여 로컬에서 원격 서버로 파일 전송하기 (+ 파일명 검색)
- 12 Oct [Blog] Chirpy Theme GitHub Actions Deploy 오류 해결
- 12 Oct [Tips] SSH를 통해 원격 서버 내 Docker Container의 Shell에 곧바로 접속하기
- 12 Oct [Tips] Vim 에디터에 Syntax Highlighting 적용하기
- 12 Oct [Tips] 내가 사용하는 Shell 설정 모음 (.zshrc)
- 11 Oct [Error] Visual Studio Code Remote-SSH 접속 시 무한 Password 문제 해결
- 06 Oct [Paper] Active Learning for Convolutional Neural Networks: A Core-Set Approach
- 05 Oct [Docker] Container 내부에서 사용 중인 포트 번호 확인하기
- 20 Sep [Paper] Crowdsourcing Annotations for Visual Object Detection
- 27 Jun [Tips] 사용 중인 포트 번호 확인하기 (for Mac)
- 25 May [Git] Local에서 작업하던 디렉토리에 Remote 디렉토리 파일 합치기
- 25 May [Git] Git Commit 메시지 에디터 Vim으로 설정하기
- 21 May [Tips] 원격 서버의 Bash Highlighting 설정 및 한글 깨짐 문제 해결 방법
- 16 May [Tips] 원격 서버에서 GUI를 실행하기 위해서 X11 설치하기
- 04 May [Tips] Jupyter Lab에 가상 환경 추가하기
- 04 May [Git] GitHub과 Slack 연동하기
- 26 Apr [Paper] Face, Body, Voice: Video Person-Clustering with Multiple Modalities
- 16 Apr [Tips] Visual Studio Code에서 원격 서버에 접속하기
- 15 Apr [Tips] 터미널로 원격 서버에 접속하기
- 07 Apr [Git] Issue 기반 GitHub 협업 매뉴얼 (w/ Git Flow)
- 21 Mar [Week 10 / Day 041] 학습 기록
- 18 Mar [Week 09] 주간 회고
- 18 Mar [Week 09 / Day 040] 학습 기록
- 17 Mar [Week 09 / Day 039] 학습 기록
- 16 Mar [Week 09 / Day 038] 학습 기록
- 15 Mar [Week 09 / Day 037] 학습 기록
- 14 Mar [Week 09 / Day 036] 학습 기록
- 11 Mar [Week 08] 주간 회고
- 11 Mar [Week 08 / Day 035] 학습 기록
- 10 Mar [Week 08 / Day 034] 학습 기록
- 08 Mar [Week 08 / Day 033] 학습 기록
- 07 Mar [Week 08 / Day 032] 학습 기록
- 04 Mar [Week 07 / Day 031] 학습 기록
- 03 Mar [Week 07 / Day 030] 학습 기록
- 02 Mar [Week 07 / Day 029] 학습 기록
- 01 Mar [Week 07 / Day 028.5] 학습 기록
- 28 Feb [Week 07 / Day 028] 학습 기록
- 25 Feb [Week 06] 멘토링
- 25 Feb [Week 06 / Day 027] 학습 기록
- 24 Feb [Week 06 / Day 026] 학습 기록
- 23 Feb [Week 06 / Day 025] 학습 기록
- 22 Feb [Week 06 / Day 024] 학습 기록
- 21 Feb [Week 06 / Day 023] 학습 기록
- 21 Feb [Git] GitHub 파일 삭제 관련 Pull 오류 해결 방법
- 18 Feb [Week 05] 주간 회고
- 18 Feb [Week 05 / Day 022] 학습 기록
- 17 Feb [Week 05 / Day 021] 학습 기록
- 16 Feb [Week 05] 멘토링
- 16 Feb [Week 05 / Day 020] 학습 기록
- 15 Feb [Week 05 / Day 019] 학습 기록
- 14 Feb [Week 05 / Day 018] 학습 기록
- 11 Feb [Week 04 / Day 017] 학습 기록
- 10 Feb [Week 04 / Day 016] 학습 기록
- 09 Feb [Week 04] 멘토링
- 09 Feb [Week 04 / Day 015] 학습 기록
- 08 Feb [Week 04 / Day 014] 학습 기록
- 07 Feb [Week 04 / Day 013] 학습 기록
- 04 Feb [Week 03 / Day 012] 학습 기록
- 03 Feb [Week 03 / Day 011] 학습 기록
- 28 Jan [Week 02 / Day 010] 학습 기록
- 27 Jan [Week 02 / Day 009] 학습 기록
- 26 Jan [Week 02 / Day 008] 학습 기록
- 26 Jan [Week 02] 멘토링
- 25 Jan [Week 02 / Day 007] 학습 기록
- 24 Jan [Week 02 / Day 006] 학습 기록
- 21 Jan [Week 01 / Day 005] 학습 기록
- 20 Jan [Week 01 / Day 004] 학습 기록
- 19 Jan [Week 01 / Day 003] 학습 기록
- 18 Jan [Week 01 / Day 002] 학습 기록
- 17 Jan [Week 01 / Day 001] 학습 기록
- 14 Jan 나만의 토익 스피킹 꿀팁 (기록용)
- 14 Jan 나만의 토익 꿀팁 (기록용)
2021
- 20 Feb [Blog] Text and Typography
- 20 Feb [Blog] Writing a New Post