전체 글 182

[PLAYLINKS] 나의 코드가 하나도 들어가지 않은 게임을 출시했다. 💎 (사내 GEM 구축 기록)

1. 개요 올해 중반, Gemini를 사내 임직원들이 무료로 사용할 수 있다는 사실을 발견하였다. 그리고 그 안에서 GEM이라는 서비스를 보았다. 찾아보니 'Gems는 반복적인 작업을 처리하거나 새로운 분야에 대한 심층적인 전문 지식을 얻는 데 도움이 되는 Gemini의 맞춤형 버전'이라고 한다... 나의 슬롯 알고리즘 개발 업무에 AI를 접목하지 않은 것은 아니다. 다만 그 양이 너무 방대하고 사내에서만 사용되는 여러 규약과 라이브러리가 있기에 쉽지 않았다. 사실 초반에 몇 개발자 분들은 AI가 슬롯 알고리즘을 아직은 대체하지 못할 것이라고 말씀하시기도 했다. 나도 약간의 헬퍼 함수를 개발하는 정도로 AI를 활용하고 있었지만 그렇다고 AI의 접목을 포기한 것은 아니었다. 다시 본론으로 넘어가 GEM..

기록지/PLAYLINKS 2025.09.15

[PLAYLINKS] 드디어 새로운 업무가 주어졌다! 🔥 (CS 데이터 수집 파이프라인 구축하기)

1.개요 슬롯 개발 업무만을 맡고 (가끔 문서화랑 git 관련 업무도 함...) 있던 와중에 새로운 업무가 주어졌다. 나도 이제 다른 중요한 일을 한다는 사실에 좋았다. 그래서 집에 가서도 구현하기도 했다... 물론 쉽지 않았지만 그 과정을 적어보고자 한다. 2.본론나의 임무는 'CS 응답 시간에 따른 유저의 결제 횟수와 관련된 상관관계를 분석하기 위해 데이터 수집 파이프라인을 구축'하는 것이다. 무슨소리인가 했다... ㅋㅋ 담당 데이터 분석가 님과 대화를 나눈 내용은 아래와 같다.데이터 분석가님: 팀장님이 바쁘셔서 부탁할 사람이 길동(가명)님 밖에 없다고 하셔서 왔습니다...길동: ㅈ.. 제가 무엇을 해드려야 하나요...?데이터 분석가님: 목적은 CS 응답 시간에 따른 유저의 결제 횟수를 분석하는 것이..

기록지/PLAYLINKS 2025.08.06

오만과 편견 - 제인 오스틴

1. 개요 명작 소설의 기준은 '그 소설을 읽고 깊은 생각을 할 수 있는 것'이라고 한다. "오만과 편견"이라는 작품은 우리 어머니 아버지께서 그런 관점에서 바라봤을 때 충분히 명작이라고 나에게 확신적인 말투로 항상 말씀하셨고, 책을 다 읽은 나도 그 분들의 생각에 동의할만큼 이 작품은 여러 시사점을 독자에게 던져준다. 여러 등장인물들의 생각이 아주 자세하게 묘사되는 과정에서 나 또한 그들과 같은 생각을 한 적도 많고 가끔은 그들의 생각을 이해할 수 없던 적도 많았다. 문화권 자체가 달라 중간중간 이해가 안 가는 부분이 많았지만(사촌끼리의 결혼이라던가... 신부측의 집안이 신랑측의 집안에 매달 돈을 보내는 현상이라던가... 사귀지 않고 결혼을 한다던가...) 비슷한 시대상을 다룬 넷플릭스의 '브리저튼..

독서록 2025.06.05

[백준 알고리즘] 1644번 - 소수의 연속합 (투포인터, 정수론)

1. 개요오랜만에 풀어본 정수론 문제이다. 사실 풀이 방법은 투포인터에 더 가깝다... 소수를 구하는 방법인 에라토스테네스의 체가 기억이 잘 나지 않았지만 그래도 어찌저찌 기억해서 풀었다. 아마 최선의 방법이 아니었을 수 있다. 출처: https://www.acmicpc.net/problem/16442. 본문- 문제 나누기1. 필요한 범위의 소수를 전부 구한다. (나는 그냥 입력값까지 구했다.)2. 투 포인터 탐색 진행.- 값이 크다면 left를 올린다.- 값이 작다면 right를 올린다.투 포인터 알고리즘을 생각해낸다면 코드는 쉽다. - 정답 코드 #include #include #include #include using namespace std;int prime_number_tmp[4000005] =..

악의 - 히가시노 게이고

1. 개요 초등학교 때 역사 탐방 프로그램에 매주 참여한 기억이 있다. 엄마가 나가라고 해서 억지로 나갔지만 생각보다 재미있어서 나중에는 기대까지 하면서 기다렸던 기억이 난다. 토요일마다 작은 셔틀버스를 타고 초등학생 10명정도 되는 인원이 박물관이나 역사적으로 의미있는 곳에 방문하면서 선생님의 설명을 듣는 방식으로 진행되었다. 시험공부하러 가는 기분이 아니라 그냥 재밌는 이야기 듣는 시간이라고 생각하니 오히려 편안했다. 물론 지금 기억나는건 별로 없다. 하지만 역사 탐방의 마지막날은 아직도 생생하게 기억이 난다. 마지막날은 서대문형무소역사관에 방문했다. 내 집은 거기서 버스로 약 10분거리였다. 9시까지 가야했지만 그날은 다행이도 늦게 일어날 수 있었다. 날짜는 기억이 나지 않지만 거실에서 할머니가..

독서록 2025.04.23

용의자 X의 헌신 - 히가시노 게이고

1. 개요 수요일은 재택근무가 있는 날이어서 좋다. 집에서는 절대 집중이 안되는걸 알기에 일할 거리를 챙겨서 헬스장 근처 카페에서 업무를 처리한다. 아침에 운동을 끝내고 카페에 가면 오후 8시 40분쯤이어도 생각보다 카페안에는 사람들이 많다. 대부분은 대학생이나 사무실에서 잠시 나온 직장인들일 것이다. 자주 가는 카페는 8시에 문을 여는데, 오픈 준비를 끝내고 문을 열지 않고 문을 여는 순간 오픈준비를 하는 것 같았다. 카페에 들어갈 때면 항상 재고가 문 옆에 있어서 그렇게 생각하곤 했다.  항상 가는 구석자리에는 테이블 두개와 소파가 있었다. 내가 앉았을 때 테이블의 높이가 가슴까지 와서 코드를 짜기에는 불편하지만 글을 쓰거나 책을 읽기에는 너무 좋다. 그날도 똑같은 자리에서 똑같은 아이스아메리카노를..

독서록 2025.03.26

[Effective Java] Chapter 5

Chapter 5 제네릭 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때마다 형변환을 했다. 그래서 누군가 실수로 엉뚠한 타입의 객체를 넣어두면 런타임에 형변환 오류가 나곤 했다. 반면, 제네릭을 사용하면 컬렉션이 담을 수 있는 타입을 컴파일러에게 알려주게 된다. 그래서 컴파일러는 알아서 형변환 코드를 추가할 수 있게 되고, 엉뚱한 타입의 객체를 넣으려는 시도를 컴파일 과정에서 차단햐여 더 안전하고 명확한 프로그램을 만들어 준다.Item 26 로 타입은 사용하지 말라제네릭 클래스, 제네릭 인터페이스: 클래스와 인터페이스 선언에 쓰이는 타입 매개변수제네릭 타입: 제네릭 클래스와 제네릭 인터페이스를 통틀어 칭한다 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 먼저 클래스 이름이 나오고, 이어서..

[Effective Java] Chapter 4

Chapter 4 클래스와 인터페이스 클래스와 인터페이스는 자바 언어의 심장과도 같다. 그러니까 열심히 하자.item15 클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트롤부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다.  정보 은닉의 장점은 다음과 같다.시스템의 개발 속도를 높인다.시스템 관리 비용을 낮춘다.정보 은닉 자체가 성능을 높여주지는 않지만, 성능 최적화에 도움을 준다.완성된 시스템을 프로파일링해 최적화할 컴포넌트를 정한 다음 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화할 수 있기 때문이다.소프트웨어의 재사용..

[Effective Java] Chapter 3

Chapter 3 모든 객체의 공통 메서드 Object에서 final이 아닌 메서드는 모두 재정의를 염두에 두고 설계된 것이라 재정의 시 지켜야하는 일반 규약이 명확히 정의되어있다. 메서드를 잘못 구현하면 대상 클래스가 이 규약을 준수한다고 가정하는 클래스를 오동작하게 만들 수 있다.Item 10 equals는 일반 규약을 지켜 재정의하라 아래의 상황에서는 재정의를 최대한 피하도록하자!각 인스턴스가 본질적으로 고유하다.값을 표현하는 게 아니라 동적하는 개체를 표현하는 클래스가 여기 해당한다.인스턴스의 '논리적 동치성(logical equality)'을 검사할 일이 없다.논리적 동치성을 원하지 않다면 재정의하지 않아도 된다.상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다.대부분의 Se..

[Effective Java] Chapter 2

Chapter 2Item 1 생성자 대신 정적 팩터리 메서드를 고려하라정적 팩터리 메서드가 생성자 보다 좋은 장점 다섯가지.- 이름을 가질 수 있다.  정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. // 생성자BigInteger(int, int, Random)//정적 팩터리 메서드BigInteger.probablePrime  - 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 이는 인스터스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불피요한 객체 생성을 피할 수 있다. 대표적인 예인 Boolean.valueOf(boolean) 메서드는 객체를 아예 생성하지 않는다. (?)  반복되는 요청에 같은 객체를 반환하는 식으로 정적 팩터리 방식의 ..