본문 바로가기

전체 글 267

📖 넥서스: 역사에 대한 신선한 관점으로 본 AI와 인류의 미래 📖 넥서스: 역사에 대한 신선한 관점으로 본 AI와 인류의 미래 평점: 5 / 5 ( ★★★★★) 최근 2년간 읽은 책 중에 가장 좋았습니다. 처음에는 역사학자가 무슨 AI에 관해서 얘기하나 싶었지만, 막상 다 읽고 나니 인류의 복잡한 역사를 일리 있고 재미있는 통찰로 바라보고, 이를 바탕으로 AI와 AI가 바꿀 사회를 풀어내서 재밌었습니다.저는 무엇보다 큰 그림에 대한 통찰을 주는 책을 굉장히 좋아했는데 넥서스가 이런 제 취향을 저격했습니다. (유발 히라리의 책은 여태까지 다 취향 저격이긴 했지만...)요약정보에 대한 순진한 관점에서 벗어나서 복잡한 정보관으로 인류의 역사를 바라보면,AI가 여태까지의 기술과는 근본적으로 다르고 조심하지 않으면 민주주의/권위주의 정부를 가리지 않고 인류의 멸망을 불러 올 수 있다! 저를 포함한 많은 사람들, 특히 기술 분야에 종사하는.. 2025. 4. 7.
📖 은여우 길들이기: 과학적 발견이 이루어지는 과정의 드라마 📖 은여우 길들이기: 과학적 발견이 이루어지는 과정의 드라마 평점: 5 / 5 ( ★★★★★) 사실 5점으로도 부족한 느낌입니다. 비문학을 읽으면서 이렇게 감정적인 동요가 일어나고 몰입하는 경험은 처음이었습니다. 우리가 과학책에서 가볍게 읽고 넘기는 1줄의 사실을 밝혀내기 위해 인생을 바치고 현실의 여러 고난들을 이겨내며 연구를 하는 과학자들의 모습에서 왠지 모를 감동이 느껴집니다.요약먼 옛날 인간의 선조들이 늑대를 가축화 시켜서 개로 진화했듯,여우도 육종을 통해 가축화 시키는 걸 관찰하면가축화 과정의 여러 비밀을 발견할 수 있지 않을까? 늑대와 여우는 공통 조상을 가지고 있고, 그리 먼 관계도 아니기에 여우의 가축화가 가능하지 않을까 생각했던 소련의 과학자 드미트리 벨라예프의 실험에 관한 책입니다. 사실 과학적인 내용은 별로 안 나오고, 실험에 엮인 여러 인물들.. 2025. 3. 30.
IntelliJ 디버거 사용하기 IntelliJ 디버거 사용하기 디버거 (Debugger)란?프로그래밍을 하다 보면 점점 새로운 기능을 만드는 시간보다 버그를 찾는 시간이 많아집니다. 처음에는 print를 하거나 console.log를 찍는 등 원시적인 방법으로 해도 충분하지면 점점 복잡한 프로그램과 복잡한 버그들을 다루면서 이런 단순한 기능으로는 충분하지 않게 됩니다.이럴 때 버그를 찾기 위해 편한 여러 기능을 제공해 주는 걸 디버거 (Debugger)라고 합니다. 보통은 IDE에 내장 돼 있고, 흔히 제공되는 기능들이 정해져 있습니다.Breakpoints: 프로그램 코드의 특정 부분에서 일지정지 하는 기능Step Through: 코드를 1줄 1줄 차례대로 실행하는 기능프로그램의 특정 순간에서 여러 변수들의 값을 볼 수 있는 기능특정 시점에서 여러 코드를 직접 실행.. 2025. 3. 22.
📖 우리는 미국을 모른다: 한반도 천동설을 벗어나서 세계 정치와 안보 보기 📖 우리는 미국을 모른다: 한반도 천동설을 벗어나서 세계 정치와 안보 보기 평점: 3 / 5 ( ★★★☆☆)외교 무대에서 미국의 생각과 입장을 이해할 수 있는 좋은 책입니다. 하지만 책을 저술할 당시의 사건의 취재나 문건을 다루는 경우가 많아 시간이 지나면서 점점 바뀔 (바뀐) 미국의 입장은 반영하지 못할 거 같습니다.추가로 미국의 외교나 정치를 전반적으로 이해한다기 보다는 한국 입장에서 알아야 할 미국의 입장을 다룬 책이라 이미 평소에 외교나 정치 이슈들에 관심이 없거나 기본적인 외교/정치의 문법들을 모르면 이해하기 어렵지 않을까 싶습니다. 요약한국의 외교나 언론은 지나치게 한국의 관점만 생각하는 경향이 있는데미국 입장에서는 한국의 외교와 정치를 어떻게 보고 있을까? 저자인 김동현님은 한국 언론에서 기자 생활을 하다가 좀 더 국제적인 관점에서 한국을 보고 싶어 VOA의 기자로.. 2025. 3. 1.
📖 스타트업은 어떻게 유니콘이 되는가 📖 스타트업은 어떻게 유니콘이 되는가 평점: 4 / 5 ( ★★★★☆)오랜만에 앉은자리에서 책을 펴고 쉬지 않고 끝까지 읽었습니다. 굉장히 몰입감 있는 내용입니다. (스타트업이나 기업에 관심이 있으시다면... 😅)다만 기업에 관한 인사이트를 얻고 싶었는데 유동성 넘치는 시기에나 등장할 수 있는 너무 말도 안 되는 운영 방식을 가진 기업이 당연히 망할 만해서 망했다는 느낌이어서 큰 교훈은 없었습니다.요약쿠팡 다음으로 한국의 2번째 유니콘은 옐로 모바일은 어떻게 망했는가 유니콘은 주식 시장에 상장하지 않은 비상장 기업인데 1조원 이상의 기업가치를 가진 기업을 말합니다. 80% 이상의 기업이 창업하고 5년 안에 망하는데, 이 중에서 살아남아서 1조 원의 기업 가치를 찍는 건 유니콘을 보는 것처럼 어렵다고 해서 지어진 이름입니다.한국에 유니콘 기.. 2025. 2. 23.
취업하고 나서도 사이드 프로젝트 1년 동안 한 후기 취업하고 나서도 사이드 프로젝트 1년 동안 한 후기 사이드 프로젝트?보통 개발자로 취업하기 위해 취준생들이 모두 하는 절차 중에 하나가 포트폴리오용 프로젝트를 만드는 겁니다. 대부분의 경우 기술적으로는 몰라도 제품으로서는 흥미롭지 않고 주변 지인을 제외하고는 사용하는 사람도 없기 때문에 취업 후에는 자연스럽게 버려지고는 합니다. 저의 경우 책잇아웃이라는 독서에 관한 웹 사이트를 포트폴리오로 만들었는데요. 여러 이유로 취직하고서도 꾸준히 개발을 진행했습니다.전공도 컴퓨터 과학이 아니고, 경력도 없는 입장에서 포트폴리오로 최대한 많은 기술적 경험을 하기 위해 여러 기능을 고민하고 개발에도 꽤 많은 시간을 들였는데 그냥 버리기에는 아까웠습니다.다른 사람은 안 쓰더라도 제 자신은 잘 쓰는 제품이였습니다.평소에 제품 개발에 관심이 많은데 회사에서는 내 마음대로 이.. 2025. 2. 22.
Gradle 기반 프로젝트에 Ktlint 적용하기 Gradle 기반 프로젝트에 Ktlint 적용하기 Ktlint란?Kotlint에서 코딩 스타일을 자동으로 통일시켜 주는 도구 컴퓨터는 똑같이 인식해도, 사람마다 여러 코딩 스타일이 다를 수 있습니다. 대표적으로는 대괄호가 있습니다.# 1번째 스타일fun main(){ println("Hello World!")}# 2번째 스타일fun main() { println("Hello World!")} 1~2명이서 작업한다면 이런 스타일의 차이가 크게 상관없지만 여러 명이서 작업하면 큰 문제가 됩니다. 이건 여러 이유가 있는데요. 제가 느낀 이유 3가지는...누가 작성했느냐에 따라 스타일이 너무 다르면 일관성이 떨어져 코드 읽기가 힘들어짐같은 부분을 수정하면 Git에서 Conflict이 나서 이걸 해소하느라 불필요한 시간을 소모하게 됨내가 작성한 코드라.. 2025. 2. 15.
Brilliant 구독 후기 Brilliant 구독 후기 Brilliant가 뭐야?brilliant.org라는 사이트는 설명을 보고 문제를 풀며 수학/과학/컴퓨터 과학을 사이트입니다. 영어로만 돼 있기 때문에 번역기를 쓸 수는 있지만 기본적으로 영어를 어느 정도 잘해야 쓸 수 있는 사이트입니다.장점: 확실히 이해하지 않고는 넘어갈 수 없다보통 교과서를 읽을 때는 집중력이 점점 떨어지는 것도 있고, 내가 정말로 이해가 가지 않아도 그걸 알기가 쉽지 않아 계속 읽는 경우가 많습니다. 이렇게 읽다 보면 전의 내용을 완벽하게 이해하지 않아 어느 순간 진행이 안 되고, 그럼 또 돌아가서 읽고... 사실 굉장히 고통스럽습니다.하지만 Brilliant는 계속 문제를 내 줍니다.이 문제를 풀지 않으면 넘어갈 수 없기 때문에 강제로 집중하게 되고, 잘못 이해하면 문제를 틀리기.. 2025. 2. 1.
📖 불안세대: 스마트폰과 SNS가 Z세대의 정신병을 유발한다! 📖 불안세대: 스마트폰과 SNS가 Z세대의 정신병을 유발한다! 평점: 5 / 5 ( ★★★★★)많은 사람들이 문학을 좋아하는 이유는 깨달음을 주는 스토리를 아름다운 언어로 풀어내기 때문입니다. 비슷하게, 제가 특정 비문학을 좋아하는 이유는 여러 수치와 과학적 근거를 바탕으로 하나의 주장과 그에 대한 해결책을 논리적으로 탄탄하게 풀어내기 때문입니다. 물론 모든 비문학이 이렇지는 않습니다. 게다가 제가 모든 비문학적 주제에 흥미를 가지고 있지도 않습니다. 이 모든 교집합이 성립해야 제가 5점을 줄 수 있는 비문학이 나오는데, 불안세대가 바로 그런 책이었습니다.번역도 잘 돼 있습니다. 간혹 단어를 이상하게 번역하는 경우가 있었는데, 그럴 경우에는 예외 없이 영어 단어도 같이 병기했습니다. 번역가 분도 특정 단어를 어떻게 번역할까 많이 고민하셨는데 학계에서 자주 쓰이는 표.. 2025. 1. 31.
@FunctionalInterface란? @FunctionalInterface란? 어떤 때 쓰는 걸까?interface인데 Abstract Method가 딱 1개 있는 경우 Abstract Method가 1개인게 왜 중요할까요? Abstract Method가 1개이면 interface를 구현하는 class를 직접 만들지 않고 여러 간결한 문법들을 써서 변수에 interface를 구현하는 값을 바로 할당할 수 있기 때문입니다. 예를 들면...Lambda 식Method Reference 실제로 유용한 예시는 아니지만 String을 조작하기 위해 interface를 만든다고 해 보겠습니다.@FunctionalInterfaceinterface StringTransformer { String transform(String input);}🐜 Lambda 식@FunctionalInterfa.. 2025. 1. 30.
Duolingo Max 구독 후기 Duolingo Max 구독 후기 Duolingo Max란? 구독하면 얻을 수 있는 혜택?Duolingo는 언어를 무료로 배울 수 있는 앱입니다. 근데 광고가 너무 많이 나와서 사실상 구독을 해야 하는데요. 구독 요금제는 2가지가 있습니다. 간단히 정리하면 아래와 같습니다.무료 버전-광고 있음틀릴 때 마다 하트 깎이고 5번 틀리면 기다렸다 해야 함Duolingo Super1달에 7,250원 (1년 구독 기준)광고 없어짐하트 없어짐Duolingo Max1달에 약 20,000원 (1년 구독 기준)광고 없어짐하트 없어짐AI 캐릭터랑 대화할 수 있는 기능틀린 거 AI가 설명해 주는 기능 저는 처음에는 Duolingo Super를 구독했다가 지금은 Duolingo Max를 구독하고 있습니다. 구독한 이유제가 구독한 이유는 크게 2가지가 있습니다... 2025. 1. 29.
컴파일러가 기본적으로 하는 최적화를 알아보자 컴파일러가 기본적으로 하는 최적화를 알아보자 컴파일러는 실제 코드에 어떤 최적화를 할까?사람이 작성한 코드는 컴퓨터 입장에서 그대로 실행하면 비효율적인 경우가 많습니다.당장 여러 좋은 설계 원칙에서는 코드를 함수나 객체로 분리하라는 경우가 많은데 분리할수록 컴퓨터 입장에서는 함수를 찾고 호출해야 하기 때문에 분리되지 않은 것에 비해서는 비효율적입니다.또, Clean Code에서 말하는 Magic Number를 쓰지 말고 명확히 변수로 분리하라는 원칙도 그렇습니다. // 구의 부피를 계산하는 프로그램: 효율적인 버전fun calculate(radius: Double): Double { return 4.18666667 * radius * radius * radius}// 구의 부피를 계산하는 프로그램: 조금 비효율적이지만 읽기 쉬운 버전fun c.. 2025. 1. 28.
토스 연말 별자리 기부 길드 회고 토스 연말 별자리 기부 길드 회고 연말 별자리 기부란?토스는 보통 연말에 기부 이벤트를 합니다. 2023년도에는 산타 기부 이벤트를 했고, 2024년에는 별자리 기부 이벤트를 했습니다. 별자리 기부 제품에서는 여러 별자리를 보여 주며 장애인 분들이 쓰는 접근성 기능을 소개합니다. 그리고 기부를 받는 제품입니다. 토스, 세계 장애인의 날 맞아 ‘나만의 별자리 찾기’ 이벤트 실시 - 금융이 알고 싶을 때, 토토스가 세계 장애인의 날을 맞아 ‘나만의 별자리 찾기’ 이벤트를 진행한다.나만의 별자리 찾기는 소리를 따라 모바일 화면을 손으로 쓸어서 별자리를 찾고 토스의 간편결제 서비스인 ‘토blog.toss.im길드란?길드 (Guild)는 토스에 있는 조직 구조 중 1개입니다. 토스의 조직 구조는 에자일 구조에서 유래된 거 하지만 애자일 조직 구.. 2025. 1. 27.
(Spring 위주로) AOP 용어 정리 (Spring 위주로) AOP 용어 정리 AOP란?코딩을 하다 보면 공통적으로 해야 하는 작업들이 있습니다. 대표적으로 로깅 (Logging)입니다. 프로그램에 문제가 생겼을 때 문제를 찾게 해 주는 단서가 로깅입니다. 그래서 당연히 중요한 것들을 최대한 자세히, 많이 남기는 게 좋습니다.처음 요청이 시작할 때가 몇 시 몇 분이고 어떤 Payload가 담겨져서 왔는지,중간중간 어떤 함수들을 호출했는지,끝날 때는 몇 시 몇 분이고, 어떤 Response가 나갔는지등등 다양합니다. 문제는 로깅 프레임워크나 라이브러리를 만들지 않는 이상 로깅은 애플리케이션의 핵심 기능이 전혀 아니라는 겁니다. 하지만 꼭 중요하고 필요한 것이기 때문에 빼먹을 수는 없습니다. 이걸 수기로 하게 되면 문제가 2가지 있습니다.코드에 핵심 기능이 아닌 여러 부수 기능들을 위.. 2025. 1. 26.
1Password 사용 후기 1Password 사용 후기 1Password, 뭐 하는 거야?아이디/비밀번호를 관리하는 프로그램 아이디/비밀번호를 관리하는 건 생각보다 힘든 일입니다. 일단 많은 웹 사이트에서 어떤 아이디/비밀번호를 썼는지 할지 기억하기가 너무 어렵습니다. 특히 오랜만에 방문하는 사이트는 아이디/비밀번호를 기억하느니 그냥 계정을 새로 만들거나 비밀번호 재설정을 하는 게 빠른 정도입니다. 이런 이유 때문에 대부분의 사람은 같은 아이디/비밀번호를 공통으로 사용합니다. 하지만 이렇게 하면 내 비밀번호가 1곳에서만 유출되도 내 모든 웹 사이트의 비밀번호가 유출되기 때문에 보안적으로 굉장히 위험한 방식입니다.요즘에는 특히 아이디/비밀번호 입력 외에도 여러 로그인 방식이 있어 (Passkey, 소셜 로그인 등) 점점 이런 정보들을 관리하는 게 힘들어지고 있.. 2025. 1. 25.
MDC로 풍부한 로그 쉽게 남기기 MDC로 풍부한 로그 쉽게 남기기 기존 로깅의 문제점로깅 (Logging)은 문제가 발생했을 때 원인을 찾아내고 해결하기 위해 애플리케이션 곳곳에 남기는 정보들입니다. 당연히 이 정보들은 많으면 많을수록 좋습니다. 일반적으로 로그에 남기면 좋은 정보들은 다음과 같은데요.HTTP 요청 1개 1개를 구별할 수 있는 고유한 값(MSA 환경인 경우) 여러 MS 같의 요청을 묶을 수 있는 값(유저가 시작한 요청인 경우) 그 유저의 고유 값 (PK 등)요청 시작 시간애플리케이션의 버전개발 환경 (Live, Dev, Staging 등)이건 극히 일부의 정보들을 나열한 것 뿐입니다. 문제는 이걸 수기로 남기게 되면 많은 문제들이 있습니다. 일단 로그를 남길 때마다 저 정보를 다 포함해야 한다면... 얼마나 짜증 날지 상상이 되시나요?private va.. 2025. 1. 12.
📖 ADHD 농경시대의 사냥꾼: ADHD에 대한 진화 심리학적 관점 📖 ADHD 농경시대의 사냥꾼: ADHD에 대한 진화 심리학적 관점 평점: 4 / 5 ( ★★★★☆)이 책 자체가 얼마나 좋은 책인지는 솔직히 모르겠습니다. 과학적으로 엄밀하지 않은 부분도 많은 거 같고, 최신 연구 결과를 정확하게 반영하고 있는지도 의문이 듭니다.하지만 이 책은 ADHD에 대한 제가 생각해 보지 못했던 새로운 관점을 제공해 줘서 굉장히 유용했습니다.요약통계마다 차이는 있지만, ADHD를 가지고 있는 사람들은 전체 인구의 최대 20%까지 된다고 합니다. 근데 좀 이상하지 않으신가요? ADHD는 확실히 현대 사회를 사는데 굉장히 불리한 "병"입니다. 오죽하면 ADHD의 대부분이 기분장애를 (우울증, 조울증 등) 앓고 있다고 합니다. 근데 이런 병이 20%나 되는 종이 생존한다는 게 진화론적으로 말이 안 되는 얘기입니다. 그래서 저자는 ADHD가 왜 인간의 .. 2025. 1. 11.
4️⃣ 2024년 회고, 2025년 목표 4️⃣ 2024년 회고, 2025년 목표 1년 동안 이룬 것들 정리어린 왕자에 나온 것처럼 어른들은 숫자를 참 좋아합니다. 1년 동안의 성과를 숫자로 요약하면 뭔가 그 숫자를 만들면서 했던 노력이나 즐거움, 힘듦이 다 사라지는 듯한 느낌이 들기도 합니다. 애초에 이 숫자들을 회고에 쓰기 위해 만든 것도 아닙니다. 하지만! 그럼에도 숫자가 가지는 강력한 힘이 있어서 정리해 봤습니다.🐜 업무새로운 팀에서 잘 적응별자리 기부 서버 개발자로 혼자 참여해서 잘 운영함 토스, 세계 장애인의 날 맞아 ‘나만의 별자리 찾기’ 이벤트 실시 - 금융이 알고 싶을 때, 토토스가 세계 장애인의 날을 맞아 ‘나만의 별자리 찾기’ 이벤트를 진행한다.나만의 별자리 찾기는 소리를 따라 모바일 화면을 손으로 쓸어서 별자리를 찾고 토스의 간편결제 서비스인 ‘토blog.tos.. 2025. 1. 1.
📖 훅 (Hooks): 습관이 되는 제품 만드는 법 📖 훅 (Hooks): 습관이 되는 제품 만드는 법 🐜 평점: 4 / 5 ( ★★★★☆)성공적인 IT 제품을 만들기 위해 필요한 기초 역량을 쌓은 느낌입니다.이걸 제가 실제 체득하기에는 많은 시간이 걸리겠지만 시작 지점으로 좋은 책입니다.여러 재미있는 사례로 풍부해서 읽는데 지루하지 않았습니다.🐜 요약IT 제품을 성공시키기 위해서는 사람들이 습관적으로 쓰는 제품을 만들어야 한다.그걸 위해서는 이렇게 해야 한다! 사람들이 습관적으로 쓰는 제품들은 바꾸기 힘듭니다. 카카오톡이 라인이나 페이스북 메신저보다 압도적으로 좋을까요? 물론 많은 좋은 기능이 있고, 내 친구들이 카카오톡에 있으니깐 쓰는 것도 있겠지만 많은 부분 처음에 습관이 잡히니깐 쓰는 게 큽니다. 구어빌 교수님의 주장에 따르면 새로운 제품이 성공하기 위해서는 기존 제품보다 9배 뛰어나야 한다고 .. 2024. 12. 31.
사이드 프로젝트 장애 회고 사이드 프로젝트 장애 회고 발단...틈틈이 주말마다 제가 출시한 앱들을 업데이트하고 있는데요. 어느 때와 다름없이 주말에 업데이트를 하고 편하게 쉬고 있었습니다. 그런데 다음날 이런 메일이 왔습니다.그리고 앱에 들어가서 확인해 보니 정말로 그랬습니다! 🥲 💀프로그래밍적 원인원인은 의외로 간단했습니다. 제가 새로 추가한 기능이 이미 추가된 구독을 UI에 표시해 주는 기능이었는데요.그런데 추가됨을 판단하는 로직이 생각보다 복잡해서 (미리 이 기능을 고려해서 데이터에 추가하지 않았기 때문에) 이걸 Main Thread에서 돌리니 앱의 반응성이 너무 느려진다는 것이었습니다. 속도를 개선하기 위해서 여러 가지를 시도해 봤습니다.Lazy 하게 하기도 하고UserDefaults에 저장해서 Cache를 쓰기도 하고계산 결과를 UI 진입 전에.. 2024. 12. 30.
📖 공정하다는 착각: 능력주의에 대한 반박 📖 공정하다는 착각: 능력주의에 대한 반박 🐜 평점: 2 / 5 ( ★★☆☆☆)몇 년 전에 읽었으면 굉장히 충격을 받으며 신선하게 읽었을 거 같은 책입니다. 하지만 지금 시점에서는 뻔한 얘기 한다고 생각했습니다.그래도 생각하지 못 했던 인사이트 몇 개를 건지긴 했습니다.생각보다 관심 없는 특정 사례 얘기나 역사 얘기가 엄청 많습니다.번역이 별로라고 느꼈습니다. 영어 특유의 표현이나 관용어를 공식처럼 그대로 번역하는 느낌? 한국어의 문장 구조나 표현에 막게 번역하지 않아서 가독성이 낮아 읽는데 힘들었습니다. 🐜 요약사회적, 경제적으로 성공한 많은 사람들이 성공의 원인은 자신의 능력이라고 말합니다. 이러한 태도나 생각을 능력주의라고 합니다. 이 책은 능력주의는 사실이 아닐 뿐만 아니라 도덕적으로도 잘못됐다고 말합니다. 그 이유는 여러 가지가 있지.. 2024. 12. 29.