분류 전체보기 126

또 한 해가 간다.

또 다시 1년이란 세월이 흘렀다. 12월 31일에서 1월 1일로 넘어가는 날은 사실 지구 입장에서는 늘 같은 하루이다. 우리들이 단지 숫자놀음으로 점수를 남겼을 뿐. 올 해가 가면서 나는 내년의 나를 맞이하겠다. 어떤 삶이 기다리고 있을까? 생각해보면 내 인생은 꽤나 뜻대로 된 적이 없다. 중학교 때는 기억도 안나고 고등학교 , 대학교, 군대, 사회에 나와서도 모든 것들이 내가 원했던 계획대로 그려진 적은 없었다. 하지만 어느 순간 시간이 지나고 뒤를 돌아보았을 때엔 그것들이 충분히 긴 선으로 연결되어 있었기에 오늘의 내가 있다. 오늘의 내가 쓰는 이 글도 결국 시간이 지나 선이 되어 훗날의 나를 만드는 곳 까지 닿아있겠지. 사람, 상처, 사랑, 만족, 증오, 이 모든 것들이 뭉쳐낸 나라는 피조물은 하나..

일상/생각 2023.12.22

선택의 중요성

최근에서야 삶에서의 선택이 주는 영향을 경험하고 있다. 선택이 중요하다. 라는 말은 통념처럼 소모되는 문장이며 이를 반박할 수 있는 개인이나 집단은 존재하지 않을 가능성이 99.9% 라고 주장한다. 다만 이것이 가지는 실효성에 대해서는 우리가 끊임없이 의문을 품지 않았나 싶다. 나 또한 마찬가지이며 말이다. 내가 어제 오랫만에 연락한 지인, 내일 사람들과의 대화 주제, 주어진 업무 등 모든 것들을 점으로 보았을 때 어떠한 선택을 하느냐에 따라 우리의 삶은 매우 노선이 달라진다. 하지만 나는 이것의 실체를 겪어보지 못했다. 왜 나는 최근에서야 그 이질감을 느꼈을까? 그것은 바로 직접적인 영향이 나타나는 시기가 되어버렸기 때문이다. 청소년기의 선택은 내 삶에 영향을 많이 주지 못한다. 대학을 가는 것도 내 ..

일상/생각 2023.11.26

2023.11.04 시간

20년 전과 오늘, 인류의 삶은 정말 달라졌을까? 10년 전과 오늘은? 나는 왜 창업을 하려고 했을까? 나의 행복? 인류의 발전? 창업을 통해 정말로 많은 사람들의 삶에 긍정적인 영향력을 줄 수 있었나? 만약 그렇다면 20년 후의 사람들의 삶은 바뀌어있는가? 기술적 진보를 이루었는가? 그리고 그것이 우리의 삶에 파괴적인 혁신을 가져왔는가? 아이폰은 인류의 삶을 혁신했다. 네이버는 검색을 통해 한국사람의 삶을 혁신했다. 보편적인 집단을 대상으로 직접적인 혁신을 하고 있는가? 테슬라처럼, 스페이스엑스처럼, 오픈에이아이처럼

순 자산 기준 인구 비율

2021년 기준 순자산 상위 0.1%는 76억8000만원 이상, 상위 1%는 29억2010만원 이상을 가진 것으로 나타났다. 순자산 상위 5%는 13억3500만원 이상, 상위 10%는 9억원 이상을 갖고 있었다. 순자산이란 자기 재산에서 빚이나 차입금 등을 빼고 남은 집, 차, 현금 등으로 가진 재산을 말한다. 상위 1%에 속한 가구는 모두 20만9000여 가구였다. 평균 가구원 수는 2.8명으로 모두 58만6000여명인 것으로 추정됐다. 상위 1% 가구의 연평균 소득은 2억1571만원으로, 일반 가구 연평균 소득인 6125만원보다 3.5배가량 많았다. 이들 가구의 최소 생활비는 월 359만원, 적정 생활비는 월 522만원으로 나타났다. 결국 사람들이 사는데 생활비는 연간 5000만원 정도면 풍족하게 유..

일상/생각 2023.08.30

👉[Java] JWT 검증방식 Interceptor 구현

기존에 Java/Spring-boot 활용한 백엔드 코드를 정리하던 중 불편한 코드를 발견했다. 지금 돌이켜 보니 문제점이 많아보여, 공부도 할겸 리팩토링을 시도해본 과정이다. Spring 진영의 경우 Request에 대해 검증하는 방식을 크게 Filter와 Interceptor 두가지로 볼 수 있다. 모두 중간에서 값을 하이재킹하여 검증 로직을 구현한다. 아래 그림처럼 말이다. 기존의 코드는 Filter 인터페이스의 구현체가 중간에서 URL 매칭을 통해 검증하는 구조이다. 두 가지 접근 방식에는 각각 장단점이 있다: Interceptor: Spring의 Interceptor는 Controller로 들어오는 요청을 가로채서 처리할 수 있는 기능을 제공. Interceptor는 Spring의 Applica..

컴퓨터 공학 2023.06.01

👉 [Java] JVM 메모리 관리는 어떤 원리로 돌아갈까?

JVM 이 메모리를 관리한다는 것은 알겠는데, 실제로 GC가 어떻게? 동작하는 것인지 궁금해졌다. Garbage ? = 유효하지 않은 메모리 주소를 말한다. Unreachable Object 라고도 부른다. 아래 예시를 보자. //Java String talk = "Hello"; talk += " World"; 좌측 그림처럼 String 객체인 talk는 Heap 내 "Hello" 라는 주소값을 가리키고 있다. 그러나 += 연산을 통해 새로운 객체를 할당하여 "Hello World" 라는 주소값을 가리키도록 변경된다. 해당 부분은 String의 불변성 특성 때문에 차이가 발생한다. 주제에서 살짝 벗어나니 해당 부분은 생략한다. 우측과 같이 talk 가 가리키는 주소값이 변경되었다면, 기존의 0x10 주소..

컴퓨터 공학 2023.05.13

👉 [Python] GIL은 왜 탄생했을까?

GIL(Global Interpreter Lock)은 파이썬 인터프리터가 한 번에 한 스레드만 수행할 수 있도록 제한하는 메커니즘이다. 다시 말하자면, 파이썬은 멀티쓰레딩을 처리해도 병렬적인 동작이 불가능하다는 것이다. 파이썬 진영에서는 왜 이러한 불필요한 리소스낭비를 하면서까지 GIL을 도입했을까? 그 이유를 알아보기로 했다. What Is the Python Global Interpreter Lock (GIL)? 위 글에서는 다음과 같이 표현했다. The problem was that this reference count variable needed protection from race conditions where two threads increase or decrease its value simu..

컴퓨터 공학 2023.05.03

Green Day - Last night on earth

I text a postcard sent to you 네게 엽서 한장을 써 보냈어. Did it go through? 잘 갔을까? Sendin' all my love to you 너를 향한 내 모든 사랑을 다해서. You are the moonlight of my life 넌 내 삶의 달빛이야. Every night 매일 밤마다. Givin' all my love to you 내 모든 사랑을 네게 주고 있어 My beatin' heart belongs to you 뛰고 있는 내 심장도 네거야 I walked for miles 'til I found you 널 찾기까지 오래 걸었어. I'm here to honour you 나는 당신을 추앙하려고 여기 있어. If I lose everything in th..

👉 [CS] Python 은 정말로 인터프리터 언어일까?

뜬금 없이 궁금해진 Python 동작 방식에 대해 알아보던 중... "파이썬 컴파일 과정에서, 실제로 기계어로 바로 번역되는 단계는 없다. 대신, 최종적으로 실행되는 것은 바이트코드(bytecode)이며, 이는 미리 컴파일된 파이썬 모듈(.pyc 파일)에 저장된다. 이렇게 저장된 바이트코드는 나중에 같은 모듈이 다시 로드될 때 재사용된다. 따라서, 같은 모듈이 두 번째로 로드될 때는 컴파일 과정을 거치지 않고 바이트코드를 즉시 실행한다." 파이썬은 Byte-code 형태 파일로 컴파일 된다고 이해하였다. 그렇다면 파이썬을 과연 인터프리터 언어라고 봐도 되는건가? Byte-code로 컴파일 되는데? 라는 의문이 생겼다. 기계어로 번역되어야만 컴파일 언어라고 표현하지 않으니 말이다. 분명 대학 새내기 시절을..

컴퓨터 공학 2023.04.13

👉 [DB] B+Tree 인덱스는 왜 LIKE 연산시 Full Scan을 할까?

LIKE 연산은 Indexing 걸린 column 이라도, Full Scan을 한다! 라는 말은 올바른 답일까? 정확하게는 아래와 같은 명제가 참이다. LIKE 연산은 Indexing 걸린 column 이라도, Full Scan 할수도 혹은 Index Scan 할수도 있다. 실제로 아래와 같은 3가지 방식의 코드는 각각 Full-Scan 과 Index Scan의 결과를 초래한다. /* Full Scan */ SELECT * FROM table_name WHERE column_name LIKE '%X%'; SELECT * FROM table_name WHERE column_name LIKE '%X'; /* Index Scan */ SELECT * FROM table_name WHERE column_name..

컴퓨터 공학 2023.04.03