본문 바로가기

분류 전체보기 237

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.
CTR, CPC, ROI? 중요한 마케팅/제품 지표와 대표적인 숫자들 정리 CTR, CPC, ROI? 중요한 마케팅/제품 지표와 대표적인 숫자들 정리 IT 기업에 다닌다면 알면 좋은 지식들!저는 IT 기업이라 할 수 있는 토스에 다니고 있는데요. 회사에 처음 가서 당황한 것들 중 하나가 대화에 끊임없이 나오는 마케팅/제품 지표 관련 줄임말들과 용어들이었습니다. ROAS가 너무 낮아서 ROI가 안 나와요라던가,CPC 방식에서 CTR 방식으로 바꿨어요라던가,CTR이 얼마에요? 라던가, 처음에는 외계어처럼 들렸던 말들을 1개 1개 찾아가면서 공부하니 어느새 자연스럽게 받아들이게 됐습니다. IT 기업들은 데이터를 바탕으로 의사 결정 하는 경우가 많아서 구성원들이 이런 용어들을 잘 안다는 전제로 얘기하는 경우가 많아 자주 쓰는 지표들을 정리하고 각 지표마다 어느 정도 숫자가 적정한 숫자인지를 알면 좋을 거 같아서 추가적으로 공부해 봤습니다! 😄본질로 돌아가서.. 2024. 12. 27.
📖 아파트 속 과학: 아파트에 관한 궁금증 해소하기 📖 아파트 속 과학: 아파트에 관한 궁금증 해소하기 🐜 평점  : 4 / 5 (★★★★☆)아파트에 살면서 한 번쯤 궁금했던 거나 엉뚱한 실험들을 소개해 줘서 호기심이 충족돼서 좋았음정말 아파트의 과학에만 집중해서 좋았음. (이상한 사회학이나 정치 내용 없음)소개된 과학도 전혀 어렵지 않아서 좋았음.  🐜 요약아파트에 살면서 궁금했던 것들을과학적으로 호기심 해결! 제목에 충실한 책입니다. 아파트에 관련된 여러 가지 사실들을 과학의 힘을 빌려 소개해 줘서 궁금증을 해결시켜 줍니다. 언뜻 들었지만 정확히 어떤 뜻인지는 몰랐던 도시가스, 개별난방, 중앙난방 같은 용어의 뜻이나, 왜 한국의 아파트는 성냥갑 같이 지어졌는지 같은 분석까지 말 그대로 아파트에 관련된 다양한 내용이 들어 있습니다.이런 사실들 소개 뿐만 아니라 가장 기억에 남았던 건 난방에 관련된 내.. 2024. 12. 26.
Chrome Extension 개발하기 Chrome Extension 개발하기 Google Chrome Extension의 구조Google Chrome Extension의 구조는 엄청 간단합니다. 사실 Google Chrome Extension은 크게 3가지 기능 밖에 안 하는 간단한 프로그램입니다.웹 사이트의 HTML, CSS, JS를 조작사용자의 크롬을 조작 (탭, 테마 등)Extension을 클릭했을 때 나오는 UI 제공이 3가지는 모두 HTML, CSS, JS와 Chrome에서 제공해 주는 간단한 API들을 사용하면 개발할 수 있습니다. 그래서 manifest.json에 이 각각의 것들을 어떤 파일이 하는지 명시해 주고, 필요한 API들을 명시해 주면 끝납니다.아래는 제가 개발한 간단한 Chrome Extension의 manifest.json입니다.name, descript.. 2024. 12. 21.
🍎 SwiftUI에서 Local Notification URL 처리하기 🍎 SwiftUI에서 Local Notification URL 처리하기 뭐 하려는 거야?APN을 통해 서버로 알림을 보내는 게 아닌, Local에서 UNNotificationCenter를 써서 알림을 보낼 수 있습니다. 이 경우 알림을 등록하는 시점에 이 알림이 언제 가야 하는지를 미리 알아야 하는 단점이 있긴 하지만 라마인더나 타이머 같은 앱들은 알림을 보내고자 하는 시점에 언제 알림을 보낼지 다 알 수 있기 때문에 Local Notification을 사용합니다.  1번째 사진와 같이 알림이 와서 클릭하면 기본적인 동작은 2번째 사진처럼 앱의 메인 화면에 가는 겁니다. 하지만 3번째 사진처럼 원하는 특정 화면에 가고 싶다면 어떻게 해야 할까요?전체적인 그림일단 이 기능은 SwiftUI에서 자체적으로 지원하지 않습니다. 그래서 UIKit을 끌고 와야 하는데요.이를 위해 UN.. 2024. 12. 7.
☁️ AWS에서 무중단 배포 구현하기 ☁️ AWS에서 무중단 배포 구현하기 목표Cloud의 편리함은 최대한 누리면서 AWS에는 종속되지 않게무중단 배포를 구현한다 사실 무중단 배포를 구현하는 거 자체는 간단합니다. 새로운 버전의 서버를 미리 띄워 두고, Health Check를 해서 괜찮으면 트래픽을 전환한다... 하지만 이걸 구현하기 위해 내려야 할 여러 기술적인 결정은 단순하지 않습니다.오늘은 진작에 접었어야 했지만 접지 못 해 계속 하고 있는 제 포트폴리오 사이트 책잇아웃의 무중단 배포를 AWS와 Github Actions로 구현하는 과정에서 했던 여러 기술적인 결정들과 배운 것들을 기록해 보겠습니다.현재상황 (시작점)🐜 AWS 구조현재 상황은 ELB (Elastic Load Balancing)가 가장 앞단에 있어 트래픽을 받는 구조입니다. ELB에는 Public IP .. 2024. 11. 22.
🇨🇳 듀오링고에서 6개월 동안 중국어 공부한 후기 🇨🇳 듀오링고에서 6개월 동안 중국어 공부한 후기 Duolingo 소개🐜 언어 공부 앱 무료로 외국어를 배우세요.게임을 통해 다양한 언어를 배워보세요. 100% 무료로 제공되는, 게임처럼 재미있고 과학적으로 효과가 검증된 언어 학습 앱입니다.www.duolingo.com 듀오링고 (Duolingo)는 퀴즈를 풀면서 언어를 배우는 앱/웹 사이트입니다. 매일 들어와서 1개의 퀴즈를 다 풀면 1씩 스트라이크가 늘어나고, 이거 때문에 매일 들어와서 공부하게 됩니다. 🐜 게임하는 것처럼 재밌음듀오링고는 분명 언어 공부 앱인데, 여러 면에서 재밌습니다. 우선 듀오링고 마스코트가 매일 들어와서 공부하지 않으면 협박하며 찾아온다(?)는 밈이 있습니다.듀오링고 마스코트는 밈으로도 굉장히 유명하답니다 🤗 앱 구성 자체가 문제를 풀면 경험치나 포인트를 주고, 매주 랭.. 2024. 11. 3.
반응형