본문 바로가기

전체 글 237

🏠 한국 리츠, ETF로 투자하기 🏠 한국 리츠, ETF로 투자하기 리츠 (REITs)가 뭐임?부동산을 투자하고 거기서 나는 수익을 배당하는 회사 보통은 세재 혜택을 받기 위해 이익의 90%를 모두 배당하고, 일반적인 상장 회사처럼 주식 시장에 상장 돼 있기 때문에 쉽게 거래할 수 있습니다.자세한 건 한국리츠협회에서 쉽게 설명하고 있습니다! 한국리츠협회Korea Association of Real Estate Investment Trustskareit.or.kr한국 리츠에 투자하는 이유,  투자하지 말아야 할 이유🐜 소액주주 이익 침해 이슈가 상대적으로 적음한국 주식의 고질적인 문제는 소액주주에 대한 보호가 매우 약해서 이사회에서 특정 대주주(재벌)들에게만 유리한 결정을 일방적으로 한다는 겁니다. 리츠는 상대적으로 이런 문제에서 자연스럽습니다. 법적으로 이익의 90%를.. 2024. 7. 31.
📖 UI/UX의 10가지 심리학 법칙: 디자인에 근거 가지기 📖 UI/UX의 10가지 심리학 법칙: 디자인에 근거 가지기 🐜 평점  : 1 / 5 (★☆☆☆☆)책 소개는 굉장히 흥미로웠음. 심리학적 내용으로 UI/UX에 근거를 주는 내용일까나?근데 막상 읽어 보니 UI/UX 법칙을 나열하고 관련 심리학적 이론을 나열하는 느낌...기대했던건 심리학 법칙과 UI/UX가 어떻게 연결되는지에 대한 통찰을 얻고 싶었는데 그거랑은 거리가 멈.UI/UX를 잘 모르는 사람은 가볍게 읽어 봐도 좋겠지만 개인적으로는 뻔한 얘기로 들렸음.🐜 UI/UX의 10가지 심리학 법칙를 읽게 된 이유서버 개발자로 일하고 있지만 유저분들이 실제로 쓸 수 있는 제품을 만들고 싶다면 UI/UX를 피할 수 없습니다. 여태까지는 제 눈에 보기 좋게 적당히 만들거나, 간단한 법칙들을 생각하면서 만들어 왔는데요. 법칙이라고 해도 복잡한건 아니고 상식적으로 생각할.. 2024. 7. 29.
🍎 XCTest로 Swift에서 Unit Test 하기 🍎 XCTest로 Swift에서 Unit Test 하기 단위 테스트 (Unit Test)가 뭐임?코딩에서 개발 그 자체만큼 중요한게 테스트입니다. 버그를 1개도 만들지 않으면서 코딩할 수 있는 개발자는 없기 때문에 테스트를 하지 않으면 버그가 많은 질 낮은 소프트웨어를 만들어내는 뱃 개발자 입니다. 💦보통은 가장 기초적인 테스트는 내가 작성한 소프트웨어를 실행해 보면서 요구사항이 맞는지 확인하는 겁니다. 하지만 이 방법에는 치명적인 단점이 있습니다. 노가다라는 겁니다...요구사항이 엄청 많아지면? 100개가 된다면 수정할 때 마다 이 100개의 요구사항이 모두 맞는지 확인해야 합니다.위의 이유로 테스트를 자주할 수 없습니다.재현이 어려운 경우는 테스트 하기가 힘듭니다.여기서 단위 테스트가 나옵니다. 단위 테스트는 소프트웨어를 테스트할 수 있는 가장 작은 단.. 2024. 7. 28.
서버에 API Key를 하드코딩 하면 안 될까? 서버에 API Key를 하드코딩 하면 안 될까? 문제가 되는 부분과 일반적인 해결책일반적으로 API를 호출할 때는 API Key라는 거를 같이 넘겨야 합니다. 아무나 제한없이 API를 호출할 수 있으면 기업 입장에서는 여러 단점이 있기 때문입니다.호출제한을 할 수 없음디도스 (DDos) 공격의 대상이 될 수 있음수익화를 하기 어려움 당장 네이버의 API 문서만 봐도 호출제한이 있고, API를 호출하기 위해서는 회원가입을 한 후 API Key를 발급 받아야 합니다. 문제는 API Key를 어떻게 관리해야 할까입니다. 호출제한 정도만 있으면 API Key가 유출돼도 귀여운 정도에서 끝나지만, 만약에 쓴 만큼 과금되는 API거나 개인정보를 많이 담고 있는 API라면 API Key가 유출되는 거 자체가 너무 큰 위험입니다! 😨이를 위해 애플리케이션이 실행 .. 2024. 7. 27.
🎹 피아노를 효과적으로 연습하기 위해 반드시 지켜야 할 것들 (손가락 번호, 집중연습, 레슨 등) 🎹 피아노를 효과적으로 연습하기 위해 반드시 지켜야 할 것들 (손가락 번호, 집중연습, 레슨 등) 피아노를 다시 시작하며...감수성이 풍부하던 고등학교 때 생전 쳐 본 적 없는 피아노에 갑자기 꽂혀 집 앞 작은 피아노 학원에서 피아노를 시작하게 됐습니다. 그리고 대학에 가기 전 3년 동안 꽤 열심히 꾸준히 피아노를 쳤습니다. 당연히 바이엘부터 시작했기 때문에 엄청 잘 치지는 않지만 그래도 원하던 곡들을 치니 상당히 행복했습니다.그러다 대학생이 되고 타지에 가다 보니 피아노가 없기도 하고, 대학 생활에 집중하고 싶어 피아노는 잊고 살았습니다.하지만 최근 직장인이 되고 다시 피아노를 쳐 보고 싶어 생전 처음으로 새로운 야마하 전자 피아노를 사고 피아노를 다시 치게 됐습니다. (근데 회사 생활을 하면서 피아노를 치는게 쉽지는 않아 사실 방치 중입니다. 😂) 하지만 피아노를 다시 치기 전에 그 동안 피아노.. 2024. 7. 22.
🍎 SwiftUI에서 숫자 입력하면 실시간으로 구분자(,) 붙이기 🍎 SwiftUI에서 숫자 입력하면 실시간으로 구분자(,) 붙이기 하려는 것숫자가 길어지면 읽기가 힘듭니다.1000000000와 1,000,000,000가 있다면 전자는 일십백천만... 하면서 1개씩 세야 겠지만 숫자를 자주 다루신 분들이면 후자가 10억이라는걸 바로 알 수 있습니다.,를 붙여서 보여주는건 간단합니다. 문제는 유저가 숫자를 입력할 때 입니다. 입력할 때는 어떻게 ,를 넣을 수 있을까요?문제를 나눠서 생각해 보자우선, 유저가 입력하는 값은 모두 숫자일지 모르겠지만 보여야 되는 값은 숫자 뿐만 아니라 ,를 포함하기 때문에 문자입니다.가장 단순한 해결책은 유저가 보는 값을 저장하는 변수와 유저가 입력하는 값을 저장하는 변수를 따로 두고, 각자 업데이트를 하면 됩니다. 유저가 입력하면 입력값 저장하는 변수 업데이트 -> 필요하면 , 삽입  후 유저가 보는 값 .. 2024. 7. 21.
📖 우리가 싸우는 이유: MZ 세대 같은 게으른 담론에 지친 사람들을 위한 세대와 갈등에 관한 진지한 고찰 📖 우리가 싸우는 이유: MZ 세대 같은 게으른 담론에 지친 사람들을 위한 세대와 갈등에 관한 진지한 고찰 🐜 평점  : 3 / 5 (★★★☆☆)🐜 우리가 싸우는 이유를 읽게 된 이유인터넷이 발달하고 익명성이 강력히 보장되면서 전세계적으로 갈등이 심화되고 있습니다. 하지만 그 중에서 유독 한국이 갈등이 심하다는 생각을 종종했습니다. 그래서 어쩌다 한국인 같은 유독 한국이 무엇이 다른가에 대한 고찰을 담은 여러 책들을 읽기도 했습니다. 어쩌다 한국인에서는 심리학자 허태균님이 한국인이 보편적으로 공유하고 있는 여러 심리에 대해 고찰하는 내용인데, 어느정도 납득도 되고 궁금증이 해소되기도 했습니다.하지만 갈등 그 자체에 집중한 책은 아니다 보니 여전히 해결되지 않은 궁금증이 남았습니다. 그러던 와중에 서점에서 이 책을 우연히 보고 제 궁금증을 해결해 줄 책이란 확신이 들어 구입하게 됐습니다.🐜 요약한국 사회는.. 2024. 7. 14.
Scale-out이 Scale-up보다 효과적인 이유 Scale-out이 Scale-up보다 효과적인 이유 주의점해당 내용은 100% 검증된 정설이라기 보다는 제가 궁금해서 혼자 고민해 보고 이것 저것 찾아보며 얻은 결론입니다. 평소에 스캐일 아웃 (Scale-out)이  왜 더 효과적인지 의문을 품으셨던 분들이 조금이라도 궁금증이 해소됐으면 좋겠습니다.틀린 내용이나 다른 인사이트가 있으시면 언제든 댓글로 달아 주시면 적극 반영하겠습니다!Scale-Out? Scale-Up? 그게 뭔데 트래픽이 늘어나면 서버를 늘려야 합니다. 여기서 서버를 늘리는 2가지 방법이 있습니다.Scale-up (Vertical Scaling)은 서버 1대의 성능을 늘리는 겁니다. 메모리를 늘리고, CPU를 더 좋은 걸로 바꾸고, 네트워크 대역폭을 늘리고... 등등이 모두 Scale-up이라 할 수 있습니다.Scale-out (Hori.. 2024. 7. 10.
토스에서의 첫 팀 회고 (🏠 주담대팀) 토스에서의 첫 팀 회고 (🏠 주담대팀) 회고를 하는 이유/마음가짐똑같이 회고라 불려도 마음가짐은 굉장히 다를 거라 생각합니다.어떤 회고는 형식적이고, 어떤 회고는 솔직하고, 어떤 회고는 남에게 보여주기 위해 합니다.저는 이 회고가 솔직하고, 객관적이고, 더 나은 사람 (개발자)이 되기 위해 하는 반성의 성격을 띠기를 바랍니다.배경23년 9월 서버 개발자로 토스에 입사해 1달간의 온보딩 기간 후 23년 10월부터 24년 5월까지, 약 8개월간 주담대팀에서 업무를 진행했습니다.개발자로서 첫 활동이기도 했고, (회사 내에서는 적은 편이라고는 해도) 대규모 대고객 트래픽을 처음 받아보는 경험인 만큼 느낀것, 배운 것, 후회하는 것이 넘칩니다.또, 굉장히 드물다 할 수 있는 새로운 제품을 여러 개 출시하면서도 기존 제품을 유지보수하는 경험을 해서 굉장.. 2024. 7. 5.
🍎 WidgetKit 이용해서 애플 위젯 개발하기 🍎 WidgetKit 이용해서 애플 위젯 개발하기 WidgetKit이 뭐야iOS, iPadOS, MacOS 등에 제공할 Widget을 개발할 수 있는라이브러리 Extension?WidgetKit은 사실 원래 앱에 Library 처럼 단순히 추가되는 추가 기능이 아닙니다. Extension이라는 형태로 추가되는데, 같은 앱이지만 앱과 상호작용할 수 있는 곳을 추가로 제공해 주는 개념이라고 생각하시면 됩니다. Widget 외에도 Siri나 Appclip 같이 앱을 실행하고 상호작용하는 형태 외의 여러 형태의 extension을 사용할 수 있습니다. 문제는 Extension은 애플의 정책상 Sandbox화 돼 있어 다른 앱 처럼 취급 돼 원래 앱의 여러 Class나 데이터를 접근할 수 없다는 겁니다. 이건 뒤에서 자세히 알아보겠습니다. 위젯은 앱이 아니다애플.. 2024. 6. 22.
스마트 전등 스위치, 원리 이해해서 교체하기 스마트 전등 스위치, 원리 이해해서 교체하기 문제의 발단... 두둥!새로운 집에 이사 가면 항상 걱정이 스마트 제품들 세팅입니다.기존에 있던 스마트 제품들을 가서도 잘 쓸 수 있을까?새로 사야 하는게 있으면 이거 사면 이 집에서만 쓸까 앞으로도 쓸 수 있을까?특히 조명의 경우 전기 배선이랑 연결 돼 있어 설치도 힘들고, 조명 형태가 워낙 다양해서 항상 걱정이었습니다. 그러던 중... 새로 이사온 거실의 조명을 뜯어보니 아래와 같이 돼 있었습니다.일단 여기서 멘붕이 왔습니다. 여태까지 제가 살던 집은 원룸이라 선 구조가 이렇게 복잡하지 않았습니다. 그런데 취직을 하면서 오피스텔로 오면서 거실이 생겨 이렇게 복잡한 배선 구조를 처음 보게 됐습니다.게다가 제가 가지고 있는 스위치들은 1구~3구까지 있었는데 저거는 4구짜리 스위치였습니다. 2구짜리 스위치.. 2024. 6. 4.
자주 쓰는 Kotlin Live Template 공유 자주 쓰는 Kotlin Live Template 공유 Live Template이 뭐임Jetbrains 계통의 IDEA에서 쓸 수 있는 Code Snippets 코딩을 하다보면 반복되는 패턴을 많이 마주하게 됩니다. 여기서는 거창하게 디자인 패턴 같은 거를 말하는건 아니고, 아래와 같이 사소한 것들을 말한 겁니다.for 문으로 같은 동작 n번 반복하기if 문으로 null 확인하기이런 자주 쓰이는 언어의 패턴을 짧은 단축키로 바로 칠 수 있게 해 주는 걸 Code Snippets이라고 합니다. 가장 유명한 Code Snippets이라면 Emmet이 있겠네요.Emmet은 HTML에서 쓰는 Code Snippets인데, 특히 반복해서 타이핑해야 하는 일이 많은 HTML에서 유용합니다. 예를들어 아래와 같은 HTML 코드를 .. 2024. 6. 2.
Spring에서 DB 예외 처리하는 법 알아보기 Spring에서 DB 예외 처리하는 법 알아보기 기존 DB Exception의 문제점Spring이 있기 전에 DB에서 오류가 나면 크게 3가지 문제가 있었습니다.특정 기술에 종속된 에러가 터짐 (JDBC, JPA, Hibernate, JDO)모두 CheckedException이라 불편함특정 에러를 처리하고 싶으면 에러 코드를 직접 다뤄야 함 🐜 1 - 특정 기술에 종속된 에러가 터짐 (JDBC, JPA, Hibernate, JDO)JDBC를 열심히 쓰고 있어서 코드 곳곳에 SQLException을 처리하고 있었는데 갑자기 JPA를 도입하고자 하면 어떻게 될까요? JPA는 SQLException을 던지지 않고 PersistenceException을 던집니다. 그럼 SQLException을 쓴 모든 곳에 이걸 PersistenceException으로 바.. 2024. 5. 7.
Spring에서 Transaction 관리하는 법 알아보기 Spring에서 Transaction 관리하는 법 알아보기 기존 Transaction의 문제점🐜 Transaction을 위한 코드가 너무 많이 필요함사실 Transaction은 핵심 Business Logic이 아니기 때문에 알아서 해 줬으면 좋겠는데, Transaction을 직접 관리할 경우 이것만을 위한 코드가 너무 많이 필요합니다. public void placeOrder(Order order) { // Transaction의 속성을 만들고 TransactionDefinition transactionDefinition = new DefaultTransactionDefinition(); // 새로운 Transaction을 시작하고 TransactionStatus transactionStatus = transactionManager.ge.. 2024. 5. 6.
JDBC, 필요한 만큼만 알아보기 JDBC, 필요한 만큼만 알아보기 JDBC, 뭐 하는 거야?JDBC (Java Database Connectivity)는 Java에서 DB에 연결하기 위한 API입니다. 조금이라도 복잡하고 유용한 Application을 만들려면 DB에 연결하는게 필수인데 이를 위해서는 크게 다음과 같은 과정을 따릅니다.DB와 연결 (TCP/IP를 맺고, 암호화 정보 전달하고 등)SQL문 전달(필요하다면) Transaction 처리결과를 받아서 처리 문제는 이 과정이 DB 마다 모두 조금씩 다르다는 겁니다... 새로운 DB를 쓸 때 마다 각 DB의 특성을 공부해서 이 과정을 진행해야 한다면 지옥이 따로 없겠죠? 그렇기 때문에 JDBC라는 표준 API를 제공하고, 각 DB가 이 JDBC를 구현해서 개발자는 JDBC의 사용법만 알면 Application에서 .. 2024. 5. 5.
도메인 모델 풍부하게 만들기 도메인 모델 풍부하게 만들기 문제의 근원 : Fat Service애초에 왜 도메인 모델을 풍부하게 만들어야 할까요? 도메인 모델을 풍부하게 만든다가 절대선이라는 생각은 일단 내려놓고 생각하면, 프로그래밍 설계에서 대부분 무언가를 해야 한다면 2가지 이유가 있습니다.더 이해하기 쉽게 만들기 위해변경에 유연하게 하기 위해 그렇다면 도메인 모델을 풍부하게 만들어야 하는 이유는 왜 때문일까요? 🤔 이건 도메인 모델이 풍부하지 않은 경우 그 로직이 어디에 가는지 생각해 보면 됩니다. 요구사항을 만족시키는 로직은 결국 어딘가에는 있어야 합니다. 보통 도메인 모델에 로직이 없다면, 서비스 계층에 있겠죠? 사실 처음에는 서비스 계층이 통통해도 괜찮습니다. 괜히 이해하기 어려운 패턴이나 아키텍처를 도입하면 이해하기만 어렵고 이득보다 손해가 많습니.. 2024. 5. 4.
형식주의 (Formalism), 수학의 모든건 현실에 있지 않은데, 그렇다면 수학은 뭘까? 형식주의 (Formalism), 수학의 모든건 현실에 있지 않은데, 그렇다면 수학은 뭘까? 수학적 형식주의 소개형식주의는 수학의 이론이라기 보다는 철학적 입장입니다. 일반 철학에서 말하는 형식주의는 다른 뜻이 있는거 같은데 (검색해 보니 칸트나 윤리학이 나오더라구요 🫠) 수학철학에서는 약간 다른 의미를 가지고 있습니다.처음 초등학교 떄 수학을 배우면 실세상의 센다라는 개념을 추상화 한걸 숫자라고 한다고 배웁니다. 실제로 숫자는 고대에서 일상생활에서 자주하는 세는 행동을 추상화한 거에서 나왔을 수 있습니다. 하지만 이렇게 생각하면 이상한게 몇 개 생깁니다. 음수는 센다라는 개념에서는 나올 수 없습니다. 꼭 센다에서 벗어나서 음수가 일상생활에 쓰이는 곳이 많다면 허수는 어떨까요?실수나 초월수도 정확한 해당 값이 정말로 현실에 있다고 말할 수 있을까요? 즉, 수라는 개념을 떠올리는데는 현실의 어떤.. 2024. 5. 2.
Spring의 @Controller, @Repository, @Service, @Component 등 알아보기 Spring의 @Controller, @Repository, @Service, @Component 등 알아보기 스테리오타입 어노테이션 (Sterotype Annotation) 이란?Spring에서는 @로 시작하는 Annotation을 굉장히 많이 사용합니다.Annotation을 많이 사용하기 때문에 여러개를 동시에 쓰는 상황이 반복되거나, 기존 어노테이션의 동작을 약간 수정하면서도 비슷한 역할을 하는 새로운 어노테이션을 만들어야 하는 상황이 발생할 수 있습니다.이 경우에 여러개의 Annotation을 합쳐 스테리오타입 어노테이션 (Sterotype Annotation)을 만들 수 있습니다.스테리오타입 어노테이션 (Sterotype Annotation)을 사용하면 여러 개의 어노테이션을 적용해야 하는 상황을 단순화 하기 때문에 코드의 유지보수성을 높일 수 있습니다. Spring Bean을 만드는 스테리오타입 어노테.. 2024. 5. 1.
트랜잭션 전파 (Transaction Propagation) - Transaction이 서로 만날 때 스프링은 어떻게 처리할까? 트랜잭션 전파 (Transaction Propagation) - Transaction이 서로 만날 때 스프링은 어떻게 처리할까? 트랜잭션 (Transaction)이 뭔지 간단히쉽게 말해서 여러 개의 다른 동작들을 1개로 묶는 역할을 합니다. 그래서 여러 개의 동작 중에 1개라도 실패하면 다 실패해야 해서 성공한 동작도 실패로 되돌릴 수 있는 기능인 롤백 (Rollback)이 상당히 중요한 역할을 합니다.여기서 큰 그림에서 트랜잭션을 바라보면 비즈니스 로직에서 필요한 여러 동작을 하나로 묶는 것처럼 생각할 수 있는데요. 이걸 논리적 트랜잭션 (Logical Transaction)이라고 합니다. 그 반대는 당연히 물리적 트랜잭션 (Physical Transaction)이겠죠? 무슨 말이냐 하면, 송금을 생각해 보겠습니다. 논리적 트랜잭션 관점에서 큰 그림으로 보면 아래의 동작들을 1개의 트랜잭션으로 묶는 것으로 생각할 수 있습니다.송.. 2024. 3. 7.
우리사주? 스톡옵션과 뭐가 다를까 우리사주? 스톡옵션과 뭐가 다를까 우리사주가 애초에 뭐야?우리 사주조합을 통해 가지고 있는 내가 다니고 있는 회사 주식 내가 특정 회사의 직원인데, 그 회사의 주식을 소유하고 있으면 그 주식이 우리사주입니다. 그렇다고 그냥 주식앱을 켜서 다니고 있는 회사 주식을 산다고 우리사주인건 아니고, 우리사주조합이라는 회사 내 단체가 내 주식을 가지고 있고 나는 그 주식을 간접적으로 갖고 있는 형식입니다.당연히 내 주식이기 때문에 퇴사할 때는 돈으로든 주식으로든 돌려받고, 퇴사를 하지 않더라도 원하면 돌려받을 수 있습니다. 그럼 굳이 왜 이렇게 할까요? 2가지 이유가 있습니다.우리사주는 주식 시장에서 그냥 사는 것보다 할인된 가격으로 살 수 있다.우리사주조합이 임직원들의 주식을 다 가지고 있으니 주주총회에서 임직원들의 목소리를 1번에 낼 수 있다... 2024. 3. 1.
인터넷, VPN, 전용선… 금융권에서 하는 통신 방식 정리 인터넷, VPN, 전용선… 금융권에서 하는 통신 방식 정리 금융권의 통신방식은 뭐가 다를까?보통은 HTTPS만 써서 통신하는 방식도 매우 안전하기 때문에 회사끼리 어떤 정보를 주고받는다고 해도 HTTPS에 방화벽 정도만 하는 경우가 매우 많습니다. 하지만 금융권은 규제도 많고 민감하고 보수적이기 때문에 다양한 통신 방식을 씁니다. 처음 금융 도메인에 오면 이게 너무 낯설고 헤매는 경우가 많아 간단히 정리해 봤습니다.네트워크가 애초에 뭐야?컴퓨터와 컴퓨터를 연결한 것 상상하기 힘들지만 네트워크라는건 컴퓨터와 컴퓨터를 연결한 것입니다. 이 말은 방구석에서 컴퓨터 2대를 사서 연결하면 그게 네트워크가 된다는 겁니다. 물론 방구석 컴퓨터 2대를 연결한다고 해서 그렇게 유용하지는 않겠지만 중요한 건 우리가 인터넷에 접속한다는 건 어떤 형태로든 다른 컴퓨터와 통신을 한다는.. 2024. 2. 29.
반응형