전체273 싱글톤(Singleton) 패턴 이해하기 인스턴스를 오직 한개만 제공하는 클래스 1. 간단한 싱글톤 구현 package me.likelen.study.singleton; public class Settings1 { private static Settings1 instance; private Settings1() { } public static Settings1 getInstance() { if (instance == null) { instance = new Settings1(); } return instance; } } 질문 1. 생성자를 private 으로 만든 이유는 무엇인가요? 오직 한 개의 인스턴스에만 접근하기 위해 생성자의 노출을 막기 위해서입니다. 2. getInstance() 메소드를 static으로 선언한 이유는 무엇인가요? 글로.. 2022. 2. 6. gradle 에서 apply from: xxx 은 무슨 의미이지? apply from: xxx 을 이해하기 위해서는 gradle 의 Plugin 을 알아야 합니다. Gradle 의 Plugin 은 무엇을 하는 걸까요? 프로젝트에 플러그인을 적용하면 플러그인이 프로젝트의 기능을 확장할 수 있습니다. 다음과 같은 작업을 수행할 수 있습니다. - Gradle 모델 확장(예: 구성할 수 있는 새 DSL 요소 추가) - 규칙에 따라 프로젝트 구성(예: 새 작업 추가 또는 합리적인 기본값 구성) - 특정 구성 적용(예: 조직 리포지토리 추가 또는 표준 적용) 프로젝트 빌드 스크립트에 논리를 추가하는 대신 플러그인을 적용하면 많은 이점을 얻을 수 있습니다. 플러그인 적용: - 재사용을 촉진하고 여러 프로젝트에서 유사한 논리를 유지 관리하는 오버헤드를 줄입니다. - 높은 수준의 모듈.. 2022. 2. 6. gradle 기반의 여러 모듈에서 공통으로 쓰인 스크립트가 있다면? 멀티 모듈 시스템에서 공통으로 쓰인 Gradle Script 가 있다면 어떻게 해야 될까? RootProject | | - SubProjectA | -- build.gradle | - SubProjectB | -- build.gradle | - SubProjectC | -- build.gradle | - build.gradle 여기서 `SubProjectA` , `SubProjectB`, `SubProjectC` 가 build.gradle 에서 공통으로 사용되는 내용이 있다고 가정하자. 약 모듈이 5개정도 만들어지면서 반복되어지는 스크립트를 발견되었고, 코드 복사/붙여넣기가 불편하다고 느꼈다. 어떻게 해야될까? `base.gradle` 을 하나 만들어 전체 프로젝트에 공유하면 되지 않을까? 걱정되는 마음.. 2022. 2. 6. [나는 왜 이일을 하는가?]을 읽고나서 🧾 트레바리라는 서비스를 통해 이 책을 읽을 수 있었다는 것은 큰 행복이였다. 사실 몃 년전에 구매를 해놨지만 읽지 않았기 때문이다. 이 책은 단순히 사이먼사이넥이 말하는 골든서클(Why, How, What)의 이론을 증명하기 위한 내용만 포함되어 있다고 생각하지 않는다. 내가 하고 있는 이 일을 왜 해야되는 걸까? 라는 질문에 대해서 여러 방향의 정답 찾기 를 도와주는 책이라 생각한다. 현 트레바리 CTO인 완수형과 대화하던 중 이런 얘기를 했었다. "형이 생각하기에 아마추어와 프로의 차이가 무엇인것 같은가? 주니어 개발자와 시니어 개발자의 차이는 무엇인거 같은가?" 라는 질문을 했던 적이 있었다. 이 때 완수형이 말한 얘기중에 인상깊었던 것은 이 부분이였다. "자신의 가치관을 중심으로 코드를 작성했는가?.. 2022. 1. 31. 개발자들이 문서화를 하는 이유는 뭘까? 왜 하는거지? 개발 조직에는 많은 개발 문서가 있다. 그리고 그 중 90%는 폐기 대상이다. - 트레바리 CTO 누군가 트레바리 CTO에게 이런 질문을 했습니다. "쿠팡에 계실 때 개발조직은 문서화를 어떻게 하셨나요?" 문서화... 오늘은 이 문서화에 대해서 이야기해보려 합니다. 이전 근무하던 회사에서도 트레바리와 같은 atlassian의 Confluence를 사용했다. 그 때 사용되었던 형태를 살펴보면 다음과 같은 상황에 사용되었던 것 같아요. - 개발 가이드 - 메인 서비스의 아키텍쳐 - 백엔드 개발자가 프론트엔드 개발자에게 공유할 API - 특정 도구에 대한 사용법 - v1, v2.., deprecated 릴리즈 가이드 - 프로젝트의 계획 및 회고 ... 이전 직장의 서비스는 약 10년동안 숨셨던 서비스였던 만큼.. 2022. 1. 24. 놈이 기다리네요. 끈덕이게. - '아이디어 불패의 법칙' 놈이 기다리네요. 끈덕이게. 틀림없이 금세 먹잇감을 찾아낼 겁니다. 늘 그래왔으니까. 저 이빨을, 저 촉수를 누구도 벗어나지 못합니다. 이렇든 저렇든 실패라는 야수가 우리 모두를 덮칠 겁니다. 제대로 만들기 전에, '될 놈'을 만들어라 트레바리 스타텁-시리즈A 3번째 모임의 책으로 읽게 되었다. 마치, 학교에서 주최하는 특강 세미나에 앉아 "너희가 만약 사업을 해야 한다면?" 이라는 주제의 강의를 듣고온 것같은 착각이 드는 책이였다. 이 책에서 말하고자 하는 것은 글의 마지막 부분에 요약본으로 남기며, 이 책을 읽으며 흥미로웠던 점에 대해서 먼저 적어보려 한다. ✅ 우리가 자주 활용되는 프로토타입과 프리토타입은 무엇이 달랐을까? 연구소에 근무하던 시절 Proof of Concept(PoC)라는 명목하게 .. 2022. 1. 2. 현실을 마주할 용기 - '10년 후 세계사 두 번째 미래' 책을 다 읽어 갈 때 즈음 '닫는 글'에서 공감되는 구절이 있다. '어쩌면 우리는 역사를 통틀어 낙관에 의지해 생존해왔는지도 모른다. 이성이 온통 비관적이라고 말해도 의지로 낙관하면서 말이다' 나도 같은 마음으로 살고 있는건 아닐까? 더 나아가 현실을 마주할 용기가 있는가? 나 자신조차도 '1부 기계와 일 > 인간을 배우는 기계, 기계를 배워야 하는 인간'에서 말하는 흐름 속에서 밀접하게 있음에도 불구하고 이 흐름을 부정적으로 바라보고 있는 내 모습을 발견했다. 나의 직업만큼은 결코 기계에 내어줄 수 없어! 라고 말하곤 하지만, 나의 행위를 지켜보면 이미 기계에 많은 것을 내어주고 있다. 커피숍의 키오스크, 구글의 추천뉴스, 유튜브 등 나보다 나를 더 잘 아는 시스템이 나에게 하는 메시지에 집중하고 있다.. 2021. 12. 19. Life of Game 을 아시나요? Life of Game 이라는 어플리케이션은 많은 개발자들에게 사랑을 받았다고 합니다. 인생게임이라 불리는 이 게임은 겉으로보면 복잡해 보인다고 느껴지지만, 찬찬히 살펴보면 이런게임이 있을까 싶은 게임이다. 콘웨이에 의해서 만들어진 게임으로 격자가 있는 판에서 시작된다. 규칙 다음 세대로 넘어갈 때 세포들의 생사가 결정되는데, 인접한 8개의 칸을 기준으로 하며 그 기준은 다음과 같다. 죽은 칸과 인접한 8칸 중 정확히 3칸에 세포가 살아 있다면 해당 칸의 세포는 그 다음 세대에 살아난다. 살아있는 칸과 인접한 8칸 중 2칸 혹은 3칸에 세포가 살아 있다면 해당 칸의 세포는 살아있는 상태를 유지한다. 그 이외의 경우 해당 칸의 세포는 다음 세대에 고립돼 죽거나 혹은 주위가 너무 복잡해져서 죽는다. 혹은 죽.. 2021. 12. 7. 잠시 창업자의 마음으로 - '디커플링' 마지막장의 디커플링 책을 내려놓고, 잠시 지금까지의 책 내용을 되돌아 보며 생각한 첫번째 행위는 잠시 나를 내려놓고 창업자의 마음으로 주변 서비스를 둘러보는 것이였다. 책에서 말하는 디커플링이란, 말 그래도 분리하기, 해체하기, 끊어내기이다. 기존의 기업이 고객에게 제공하는 소비 활동 사이를 끊어내는 것을 말한다. 이런 행위를 통해 특정 시장에 파괴적인 혼란을 불러일으켜 혁신적으로 시장을 장악하는 것을 말한다. 책에서 말하는 디커플링의 5단계는 아래와 같다. 1단계: 타킷 세그먼트의 고객 가치사슬을 파악한다. 2단계: 고객 가치사슬을 재정의한 비즈니스 모델에서 말한 가치 유형로 분류한다. 3단계: 고객 가치 사슬 중 약한 부분을 찾는다. 4단계: 약한 사슬을 분리한다. 5단계: 경쟁기업의 반응을 예측한다.. 2021. 11. 28. AWS Simple Queue Service(SQS) 예제 코드로 다가가기 - #2 이전 글 - AWS Simple Queue Service(SQS) 이론적으로 다가가기 - #1 이번에는 예제코드로 SQS 를 사용하는 방법에 대해서 알아보려고 합니다. 만약에 SQS 를 스프링부트에서 사용한다는 가정하에 2가지 예제를 남겨드릴려고 합니다. 순수한 AWS-SDK 를 사용한 SQS 예제코드 awspring 에서 제공하는 SQS 예제 코드 1. 순수한 AWS-SDK 를 사용한 SQS 예제코드 공식문서 예제코드 자세한 내용은 공식문서에 잘나와있어 해당 내용을 참조하면 된다. 간단하게 몇개만 공유해보면 아래와 같습니다. @GetMapping(value = "/getQueueUrls") public ResponseEntity getQueueUrls() { ListQueuesRequest build .. 2021. 11. 20. AWS Simple Queue Service(SQS) 이론적으로 다가가기 - #1 공식 문서 - https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dg.pdf#welcome SQS? 왜 사용해야하는가? 대기열(Queue)을 제공하여 이를 활용해 분산 소프트웨어 시스템과 구성요소를 통합 및 분리할 수 있게 해주는 도구이다. 마이크로서비스를 구축하는 과정에서, 메세지를 전달하는 용도로 적합하다. SQS 특징 보안 server side encryption 를 제공하며, SQS 를 Publish 하고 Consume 을 할 수 있는 건 오직 권한을 가진 AMI만이 가능하다. 내구성 SQS 메세지를 안전하게 보호하기 위해 이를 여러 서버에 저장 최소 1회 전송를 보장합니다. 가용성 Amazon .. 2021. 11. 14. #2 스터디 할래 - 2주차 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var --- 프리미티브 타입 종류와 값의 범위 그리고 기본 값 자바는 사용할 수는 자료형을 크게 2가지로 나눕니다. 1. Primitive Type 2. Referance Type 1. Primitive Type 은 쉽게 우리가 알고 있는 int, long, double, boolean, byte 등이 있습니다. 각각의 타입에 대한 범위는 어떻게 될까? 아니 이 범위를 왜 알아야할까부터 고민.. 2021. 11. 14. DNS record & CNAME 학습 내용 > https://opentutorials.org/course/3276/20313 dns4u.ga 라는 도메인을 가진 상태에서, 52.231.13.22 를 dns4u.ga 로 연결하게 하고 싶다. 그래서 등록대행자에서 이를 등록한다. 이때 등록대행자는 cloudflare 와 같은 서비스이다. DNS record 란, 도메인에 대한 IP 주소가 기록되어 있는 것이다. 다시말해, dns4u.ga 의 관리 네임서버는 NS ns01.freenon.com nslookup trevari.co.kr https://en.wikipedia.org/wiki/List_of_DNS_record_types A 와 CNAME 의 차이점은 A 는 IP 주소를 맵핑하는 것 CNAME 도메인 도메인을 맵핑하는 것 2021. 11. 13. 스타텁-시리즈A: 세상에 없던 새로움을 꿈꾸며 [트레바리 독서 모임 후기] 트레바리 독서모임 참여 후기 약 한달 전에 스타텁-시리즈A 를 신청했다. 이 모임을 신청했던 계기는 이번에 대기업에서 스타트업으로 이직하게 되면서, 스타텁의 자세? 스타텁에서 내가 지녀야할 마음에 대해서 알 수 있었으면 좋겠다 라는 마음으로 신청하게 되었다. 첫 모임의 책은 '절대 성공하지 못할 거야' 으로 북리뷰는 여기서 찾을 수 있다. 약 한달 동안 책을 읽고, 강남에 위치한 트레바리 모임에 참여했다. 스타텁 이라는 주제덕분인지, 모임에 참여했던 분이 다양한 분야의 사람들로 채워졌다. 대기업에 다니며 스타텁 회사에 근무를 희망하는 사람, 갤러리 큐레이터, 특정 회사의 인사팀, 순수예술 화가, 스타텁 개발자, 그리고 많은 창업자분들이 참여했다. 작은 공간에 큰 동그란 책상에 모여 '절대 성공하지 못할 .. 2021. 11. 7. Java LocalDateTime.toString()은 JavaScript에서 어떻게 호환될까? 폴리글랏으로 프로그래밍하며, 여러 언어로된 도메인끼리 메세지를 보내다보니 파일 포맷에 대한 이슈가 있었다. LocalDateTime.now() 를 외부에 전송하게 되면 "2021-11-02T00:05:03.128" 이런식의 String 으로 발송된다. Javascript 에서 이를 호환된 포맷으로 전송하기 위해서는 moment 를 사용할 경우에는 아래와 같은 포맷으로 작성하면 된다. moment.tz('Asia/Seoul').format('YYYY-MM-DD[T]HH:mm:ss.SSS') 참고자료 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns DateTimeFormatter (Java Pl.. 2021. 11. 2. 여기가 한국이지 미국이 아님 - [절대 성공하지 못할 거야] 북 리뷰 '리드가 영화 [아폴로 13] 비디오를 늦게 반납하는 바람에 비디오 대여업체 블록버스터에 연체료 40달러를 냈고, 그리고 랜돌프와 리드가 넷플릭스의 사업을 구상해냈다.' 약 한달간 이 책을 읽으며 넷플릭스가 창업하고, 기업공개까지 하는 과정을 살펴볼 수 있었다. 그 과정에 대해서 책을 덮고 생각해보니- 넷플릭스라는 회사는 전세계에서 가장 유명한 실리콘밸리라 하는 곳에 위치해있다, 그럼에도 불구하고 부딪히는 일련의 장애물은 우리나라에 존재하는 어느 스타트업과 크게 다르지 않다는 생각이 들었다. 우리나라의 스타트업도 자금문제와 인력문제로 어려운 나날을 보내는 곳이 많다. 똑같이 넷플릭스도 그런 문제를 겪었다는 사실에 '여기가 미국인가, 한국인가' 라는 생각이 들기도 했다. 특히 빌 클린턴 대통령의 섹스 스캔.. 2021. 11. 1. #1 스터디 할래 - 1주차 1. JVM이란 무엇인가? JVM 은 Java Virtual Machine 의 약자로서, Java 가 동작될 때 동작될 수 있는 플랫폼을 제공해준다. 이는 즉 다시 말하면 Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시킬 수 있는 가상머신이다. JVM 의 가장 큰 특징으로는 Write one, Run anywhere 라는 모토이다. 이는 어떤 OS의 제약에도 해당되지 않는 것과 같다. JVM의 컴파일러가 .java 소스파일을 컴파일하면 .class 클래스 파일을 JVM에게 건네주게 되면 JVM이 클래스파일을 메모리에 로드하여 실행할 수 있다. 여기서 컴파일러는 프론트엔드에 속하고, JVM은 백엔드에 속한다. 이말은 위에서 말한것과같이 .java 를 Compiler 를 통해 Compi.. 2021. 10. 30. 한번에 단계를 뛰어넘어 버리는 비약적인 코드를 피하자. SqsNameMapping 를 구현하는 과정에서 비악이 일어나는 코드를 작성하게 되었습니다. 비약이란? 비약은 논리나 사고방식이 '중간과정을 건너 뛰었다'는 뜻으로, 상대방의 논지전개에 있어 허구성을 지적하거나, 실현가능성이 희박한 내용을 과장하는것을 지적하는 말 입니다. 아래 코드는 2단계를 뛰어 넘어서는 비약된 코드이다. @Component @ConfigurationProperties(prefix = "aws.xxx") public class XxxNameMapping implements Mapping { private Map queue; @Override public String get(String type) { return queue.get(type); } } 왜일까? 1단계 XxxNameMapp.. 2021. 10. 29. 메세지와 이벤트의 차이점은 무엇인가? 들어가기 트레바리에서는 도메인주도설계를 실천하고 있습니다. 도메인주도설계라는 것은 말 그대로 도메인을 중심으로 복수의 도메인이 책임,역할, 협력을 할 수 있도록 개발하는 것을 말합니다. 실제로 동작되는 코드로서 도메인주도설계를 실천하며 우리는 메세지와 이벤트라는 용어를 자주사용했습니다. 이미 횟수로 귀로 많이 들어왔지만- 깊이있는 고찰을 하지 못했습니다. 헷갈릴 수 있는 두 용어에 대한 이해를 정리해보려 합니다. 본문 도메인주도설계는 잠시 잊어버리고 메세지란 무엇일까? 흔히 우리는 '메세지를 전달한다' 라고 말합니다. 이 말은 즉슨, A → B 에게 의미있는 내용을 전달하기 위한 행위라 볼 수 있습니다. 그럼 도메인주도설계에서는 어떤 의미를 가질까요? 여기서 USER, MEMBER 는 AGGREGATES.. 2021. 10. 23. MAC OS 에서 Icon 이 Bouncing 하지 않도록 하는 방법 https://howchoo.com/mac/disable-mac-icon-bounce 2021. 9. 26. 이전 1 2 3 4 5 6 7 8 ··· 14 다음