2024년 12월 31일 화요일

rust : lifetime

Rust 라이프타임(Lifetime) 쉽게 이해하기

Rust 라이프타임(Lifetime) 쉽게 이해하기

Rust에서 라이프타임(Lifetime)이란, “참조가 실제로 유효한 기간”을 의미합니다. 이 개념이 있는 이유는, Rust가 메모리 안전성을 보장하기 위해서에요. “값이 살아있는 동안만, 그 값을 참조할 수 있다”는 조건을 엄격하게 지키기 위해서는, “참조가 언제까지 유효한가?”를 Rust 컴파일러가 추적할 수 있어야 합니다.

라이프타임 없이 생기는 혼란

간단한 함수나 로직에서는 라이프타임 표기를 자주 쓰지 않아도 됩니다. 하지만 여러 개의 참조를 인자로 받고, 그 중 하나를 반환하는 함수는 이야기가 달라져요.

fn longest(x: &str, y: &str) -> &str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

이 함수가 최종적으로 내보내는 참조가 언제까지 살아 있을지를 컴파일러는 명확히 알 수 없습니다. 특히 xy의 라이프타임(“참조가 유효한 기간”)이 서로 다르거나, 함수 호출 이후에 어떤 식으로 사용되는지에 따라 달라지면 컴파일러로서는 “어느 쪽 라이프타임에 맞춰야 하지?”라는 문제가 생기거든요.

좀 더 구체적으로 왜 혼란이 생길까?

  1. 컴파일러의 역할
    Rust 컴파일러는 참조가 유효한지(= 값이 아직 안 죽었는지) 항상 검사해야 해요. 값(owners)과 빌려 쓰는 참조(borrowers)가 있는데, 빌려 쓰는 동안 원본 값이 사라져버리면 안 되니까요.
  2. 함수 반환 시, 참조의 라이프타임 판단
    우리가 x 또는 y 중 하나를 반환한다고 했을 때, 컴파일러 입장에서는 “반환된 참조는 x의 라이프타임에 따라야 하나, y의 라이프타임에 따라야 하나?”라고 고민을 해야 해요.
    • 만약 x의 라이프타임이 y보다 짧은데 함수가 y를 반환한다면?
    • 그 반대 상황이라면?
    이처럼 어느 한 쪽으로도 결정하기 애매해서, 컴파일러는 에러를 낼 수밖에 없습니다.

명시적 라이프타임으로 해결

그래서 우리가 직접 함수 선언에 <'a>를 붙이고, 파라미터와 반환값에 'a를 지정해 주면 문제가 해결돼요.

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

이렇게 “둘 다 'a라는 동일한 기간(또는 그 이하)만큼만 유효해!”라고 컴파일러에게 확실히 알려주면, 컴파일러 입장에서는 “어떤 값을 반환하든, 'a라는 라이프타임 범위 내에서만 참조가 사용되는구나!” 하고 안심할 수 있게 됩니다. 결과적으로 컴파일러가 “라이프타임이 모호하다”는 이유로 에러를 내지 않는 것이죠.

정리하자면

  • 라이프타임은 참조(예: &str)가 언제까지 유효한가를 나타내는 개념입니다.
  • 함수 반환 시 여러 참조 중 어느 것을 반환하는 로직이 들어가면, 컴파일러가 정확한 라이프타임을 추론하기 어려워집니다.
  • 명시적 라이프타임(<'a>)을 써서 “함수의 파라미터와 반환값 사이의 라이프타임 관계”를 직접 명시해 주면, 컴파일러가 모호함 없이 판단할 수 있습니다.
  • 결국 무효 참조(Dangling Pointer)를 방지하고, Rust가 메모리 안전성을 컴파일 타임에 보장하도록 돕는 핵심 장치가 라이프타임이에요.

라이프타임은 Rust가 제공하는 강력한 메모리 안전 장치이지만, 처음에는 생소해서 어렵게 느껴질 수 있어요. 그래도 위 예시처럼 “왜 필요한지, 컴파일러가 어떤 혼란을 느끼는지”를 이해하면, 보다 쉽게 다가갈 수 있을 것입니다!

2024년 10월 17일 목요일

(가상) 등산로에서 만난 리더십

등산로에서 만난 리더십

등산로에서 만난 리더십

1막: 흐린 정상 (안개 속의 현실)

주인공 민서는 회사의 중간 관리자입니다. 어느 날, 회사 단합대회로 등산을 가게 됩니다. 산 정상을 향해 가는 길, 민서는 앞서가는 CEO를 바라봅니다.

민서: (속으로) '와, 대표님 정말 빠르게 올라가시네. 근데 왜 저 방향으로 가시지?'

동료: "민서 씨, 저기가 정상 아닌 것 같은데..."

민서: "글쎄... 대표님을 믿어야겠죠. 분명 특별한 이유가 있으실 거예요."

안개가 자욱해지면서 일행은 점점 희미해집니다.

2막: 갈림길에서 (현실을 마주하다)

한 시간 후, 일행은 갈림길에 도착합니다. CEO는 잠시 망설이다 왼쪽 길을 선택합니다.

민서: (조심스럽게) "대표님, 혹시 오른쪽 길은 어떨까요? 지도를 보니..."

CEO: "민서 씨, 난 20년째 등산을 해왔어. 내 직감을 믿으세요."

민서는 말을 멈추고 따라갑니다. 하지만 마음 한 구석이 불편합니다.

동료: (작은 목소리로) "저기, 우리 길을 잘못 들어선 것 같은데..."

민서: "쉿! 대표님이 들으실라. 어, 저기 버섯이 특이하네요?"

3막: 예상치 못한 발견 (새로운 시각)

결국 일행은 정상 대신 아름다운 계곡에 도착합니다. 모두 놀랍고 황홀한 풍경에 감탄합니다.

CEO: "여러분, 이게 바로 제가 찾던 곳입니다! 때론 목표를 바꾸는 것도 중요하죠."

민서: (깨달음을 얻으며) "와, 정말 아름답네요. 이런 곳이 있는 줄 몰랐어요."

그때 민서는 CEO의 배낭에서 살짝 보이는 지역 가이드북을 발견합니다.

민서: (미소 지으며) '아, 그래서 그렇게 자신 있어 하셨구나...'

일행은 계곡에서 즐거운 시간을 보내고, 회사로 돌아가는 길에 민서는 생각합니다.

민서: (속으로) '때로는 길을 잃는 것 같아 보여도, 새로운 기회를 발견할 수 있구나. 하지만 다음엔 지도도 좀 볼 수 있으면 좋겠어...'

그렇게 민서는 리더십의 다양한 면을 배우고, 자신의 역할에 대해 새롭게 고민하게 되었답니다. 물론 다음 등산 때는 은근슬쩍 자신이 지도를 들고 가겠다고 자원했다는 후문도...

2024년 10월 16일 수요일

(가상) AI 시대의 개발자들: 한 사무실의 좌충우돌 이야기

AI 시대의 개발자들: 한 사무실의 좌충우돌 이야기

AI 시대의 개발자들: 한 사무실의 좌충우돌 이야기

등장인물

  • 김코딩: 40대 중반, 고전적인 코딩 마니아 개발자
  • 이설계: 30대 후반, 분석과 설계를 중시하는 개발자
  • 박AI: 20대 후반, AI 도구에 능숙한 신입 개발자
  • 최팀장: 50대 초반, 팀의 리더이자 중재자

장면 1: 사무실 아침 풍경

(김코딩이 컴퓨터 앞에서 열심히 타자를 치고 있다. 이설계가 들어온다.)

이설계: (놀란 듯) 어머, 김 대리. 아침부터 무슨 일이에요? 타자 대회라도 나가나요?

김코딩: (자랑스럽게) 후후, 이 과장. 난 지금 우리 프로젝트의 핵심 알고리즘을 코딩 중이라고. 벌써 3000줄째야!

이설계: (한숨) 아, 그렇군요. 근데 혹시... 설계 문서는 보셨나요?

김코딩: 설계 문서? 그게 뭐죠, 먹는 건가요?

이설계: (한숨을 더 깊게 쉬며) 아... 괜찮아요. 그냥 계속하세요.

(박AI가 느긋하게 들어온다)

박AI: 안녕하세요, 선배님들!

김코딩: (뭔가 잘못됐다는 듯) 어라? 박 주임, 지각 아닌가?

박AI: (당황) 네? 아닌데요. 9시 정각이에요.

이설계: 맞아요. 근데 박 주임, 어제 맡긴 업무는 다 끝냈어요?

박AI: (자신 있게) 네, 다 했죠. AI의 도움을 받아 30분 만에 끝냈어요.

김코딩&이설계: (동시에, 놀라서) 뭐라고요?!

장면 2: 팀 회의실

최팀장: 자, 오늘은 새 프로젝트 킥오프 미팅입니다. 각자 준비한 내용 발표해보죠.

김코딩: (자신만만하게) 저는 벌써 코드의 기본 뼈대를 다 짰습니다. 객체 지향의 정수를 보여드리겠습니다!

이설계: (말을 끊으며) 잠깐만요. 저는 사용자 요구사항 분석과 시스템 아키텍처 설계를 완료했습니다. 이걸 먼저 검토해야...

박AI: (큰 소리로) 잠깐만요! 제가 AI를 이용해서 요구사항 분석부터 초기 프로토타입까지 다 만들어봤어요!

(모두 경악)

최팀장: (당황하며) 어... 그럼 박 주임 것부터 볼까요?

김코딩: (불만스럽게) 흥, AI가 뭘 안다고...

(박AI가 프로젝트를 시연한다. 모두 감탄)

이설계: 이건... 우리가 한 달은 걸릴 일을 하루 만에...?

김코딩: (충격 받은 듯) 내 청춘이... 내 새벽 3시 커피가... 다 어디로 간 거지...

최팀장: (감탄하며) 박 주임, 정말 대단해요. 그런데 이거... 합법적인 거 맞죠?

박AI: (당황) 네? 아... 그건 잘 모르겠어요. AI한테 물어볼까요?

장면 3: 점심 식사 후 카페

김코딩: (우울하게) 내가 그동안 자부심 가졌던 내 코딩 실력이... 이제 쓸모없어지는 건가...

이설계: (위로하며) 아니에요. 우리의 경험이 있어야 AI의 결과물도 제대로 검증할 수 있는 거예요.

박AI: 맞아요, 선배님들. AI는 도구일 뿐이에요. 그걸 어떻게 쓰느냐가 중요한 거죠.

김코딩: (갑자기 눈빛이 반짝) 그렇군! 내가 AI를 이용해서 더 많은 코드를 짤 수 있다는 거잖아?

이설계&박AI: (동시에 한숨) 아...

최팀장: (커피를 마시다 말고) 자네들, 이제 좀 알겠나? 우리에게 필요한 건 코드의 양이 아니라 비즈니스 가치를 만들어내는 거라네.

김코딩: (혼란스러워하며) 비즈니스요...? 그건 또 뭔가요, 새로운 프로그래밍 언어인가요?

모두: (폭소)

장면 4: 한 달 후, 사무실

(모두 화기애애한 분위기로 일하고 있다)

최팀장: 여러분, 정말 수고 많았습니다. 우리 팀이 AI를 활용해 개발 기간을 단축시키고, 고객의 요구사항을 정확히 반영한 덕분에 대형 프로젝트를 수주하게 되었어요!

모두: (환호)

김코딩: (부끄러워하며) 제가 고집을 부렸었네요. 이제 저도 AI의 도움을 받아 일하고 있어요.

이설계: 저도 요구사항과 설계에만 집중하지 않고, 비즈니스 가치 창출에 대해 더 고민하게 됐어요.

박AI: 저는 선배님들께 우리 분야의 깊이 있는 지식을 배우고 있어요. AI만으로는 부족하더라고요.

최팀장: (감격) 다들 정말 많이 성장했네요. 이제 우리는 AI 시대에 걸맞은 최고의 팀이에요!

(갑자기 정전이 된다)

모두: (당황) 어? 이게 무슨 일이지?

김코딩: (장난스럽게) 누가 AI한테 전기 아끼는 법도 좀 물어볼걸 그랬나봐요?

(모두 폭소하며 막이 내린다)

2024년 9월 12일 목요일

AI 없는 시대의 사람들

제목: **"AI 없는 시대의 사람들"**

**장면 1:**

(무대에 오래된 컴퓨터와 함께 등장하는 등장인물, 90년대 복고 패션)

**MC**: (들뜬 목소리) "자, 여러분! 오늘은 AI 시대에 들어서기 전에, 대체 사람들은 어떻게 살았는지 알아보는 시간입니다. 우리 인류는 AI 없던 시절, 대체 무슨 고생을 했을까요?"

**캐릭터 1:**

(타자기를 두드리며) "아이고, 편지 하나 쓰는데 왜 이렇게 힘들어! 요즘 애들은 '디프런트폰트' 어쩌구 한다던데, 우리 때는 말이야, 한 글자 틀리면 처음부터 다시 써야 했어!"

**캐릭터 2:**

(옆에서 고개를 끄덕이며) "맞아, 그때는 ‘자동 맞춤법’ 그런 거 없어. 맞춤법 틀리면 뭐다? 창피함 3년간 보관! 하하!"

**MC**: "그럼 AI 없던 시대에 사람들은 어떻게 길을 찾았을까요?"

**캐릭터 1:**

(종이 지도 펼치며) "이걸로 찾았지! 근데 문제는... 접힌 부분이 더럽게 안 맞아! 지도를 펴면 어디가 위고 아래인지 몰라! 겨우 찾으면, 거리에서 아저씨한테 물어봐야지."

**캐릭터 2:**

(웃으며) "그럼 아저씨가 이러지, ‘아, 저쪽으로 가면 한 5분 거리야!’ 근데 그 ‘5분’이 50분이지!"

**MC**: (웃으며) "그리고 길을 물어봤는데, 그 아저씨도 모른다는 거!" (관객들 웃음)

**캐릭터 1:**

(허리 아프다는 듯이) "나 때는 말이야, 물건 살 때도 AI 추천 없었어. 그냥 '카운터에 있는 사람이 좋다고 한 거' 샀지."

**캐릭터 2:**

(비웃으며) "그게 왜 문제냐면, 카운터에 있는 사람이 ‘유통기한 임박’ 상품을 추천했다는 거지!"

**MC**: (웃음) "AI 없던 시절에 맛집 찾기도 쉬웠을까요?"

**캐릭터 1:**

(고개를 절레절레) "무슨 소리! 그냥 줄 서 있는 곳 가는 거야. 사람 많으면 맛집이라고 믿고 먹는데, 알고 보니 그 사람들이 그냥 화장실 줄 서 있었던 거!"

**캐릭터 2:**

"그때도 후기가 있었지! 근데 후기가 뭐냐면, 그냥 ‘김씨 아저씨’가 지나가면서 ‘거기 괜찮아’ 한마디면 끝!"

**MC**: "이제는 AI가 추천해주는 거 아니면 아무것도 못 하겠지?"

**캐릭터 1**: (의기소침하게) "맞아... 나 AI한테 반찬 뭐 고를지도 물어봐..."

**캐릭터 2**: (의기양양하게) "그게 무슨 소리야! 나 AI 없던 시절엔 내 인생 다 내가 결정했지! ...결과는? 내가 결정하면 맨날 라면이지!"

**MC**: (웃으며) "결국 AI 없는 시대의 사람들은... 고생 많이 했군요. 근데 지금은 어떻습니까?"

**캐릭터 1**: "지금은 다 좋아졌지. AI가 다 알아서 해 주거든. 근데 이상하게, AI가 늘 옳다고 하는데도… 내가 하는 거랑 왜 똑같이 라면이 나오냐?"

**캐릭터 2**: (고개 끄덕이며) "결국 우리 문제였네... AI가 문제가 아니었어!"

(관객들 웃음)

**MC**: "결국 AI 시대건, 없던 시대건, 사람은 변하지 않는다는 결론으로 마무리하겠습니다!" (모두 박수)

---

이렇게, AI 없는 시절을 돌아보며 웃음을 자아내는 에피소드입니다. AI와 관련된 현재의 편리함과 과거의 불편함을 비교하며 유머를 더한 것이죠!

2024년 9월 8일 일요일

미움같은 사랑 그만하자.

'미움 같은 사랑 그만하자'


서울의 어느 아파트 단지, 밤 11시가 조금 넘은 시간. 김현우(48)는 피곤한 발걸음으로 집 문을 열었다. 거실은 어둡고 조용했다. 아내 정미영(46)과 딸 수연(18)은 이미 각자의 방에 들어간 듯했다. 현우는 한숨을 내쉬며 넥타이를 느슨하게 풀었다.


"다녀왔습니다," 그의 말은 공허하게 울렸다.


대답은 없었다. 늘 그랬듯이.


현우는 주방으로 향했다. 식탁 위에는 미영이 남겨둔 밥과 반찬이 있었다. 차갑게 식은 음식을 보며 그는 씁쓸한 미소를 지었다. 한때는 따뜻한 저녁 식사와 함께 가족들과 대화를 나누던 시간이 그리웠다.


식사를 마치고 설거지를 하던 중, 수연의 방에서 소리가 들렸다.


"엄마, 제발요! 내일 시험인데, 지금 교회 갈 시간 없어요!"


"하나님을 무시하는 거니? 네가 그렇게 살면 어떻게 될 줄 알아?"


현우는 눈을 감았다. 또 시작이었다.


미영의 목소리가 날카롭게 울렸다. "너희 아빠 좀 봐. 교회도 안 다니고 돈만 벌려고 하니까 우리 가정이 이 모양이지!"


현우는 주방 싱크대를 꽉 잡았다. 가슴 속에서 분노가 끓어올랐지만, 그는 참았다. 싸움은 언제나 상황을 악화시킬 뿐이었다.


수연의 방문이 쾅 하고 닫혔다. 미영이 거실로 나왔다.


"당신, 들었죠? 우리 딸이 얼마나 하나님을 무시하는지?"


현우는 깊은 한숨을 내쉬었다. "미영아, 수연이도 힘들어. 내일 중요한 시험이..."


"시험? 시험이 뭐가 중요해요? 영혼의 구원이 더 중요하다고요!"


"그래, 알아. 하지만 지금은..."


미영은 현우의 말을 자르고 외쳤다. "당신도 마찬가지예요! 교회에 가봤자 겉으로만 신자인 척하고. 진짜 하나님을 만났다면 이렇게 살지 않았을 거예요."


현우는 말을 삼켰다. 그는 정말로 하나님을 만났다고 믿었다. 하지만 그의 신앙은 미영의 기준에 한참 미치지 못했다.


"나는... 최선을 다하고 있어." 현우의 목소리는 작았다.


미영은 비웃듯 말했다. "최선? 당신의 최선이 이거예요? 밤늦게 들어와서 가족은 안중에도 없고?"


"난 우리 가족을 위해 일하는 거야. 수연이 과외비도 내야 하고..."


"과외비? 하나님의 말씀을 듣는 게 더 중요해요! 당신은 돈만 알아, 돈!"


현우는 입술을 깨물었다. 그는 가족을 위해 열심히 일했다. 하지만 최근 경제 상황이 좋지 않아 회사에서의 스트레스가 더 커졌다. 게다가 수연의 과외비로 인해 가계는 적자 상태였다. 하지만 이런 걱정을 미영과 나눌 수 없었다.


"난... 미안해." 현우는 겨우 말을 이었다.


미영은 고개를 저었다. "미안하다고? 그 말로 뭐가 변해요? 당신이 변해야 해요. 진정으로."


현우는 대답하지 않았다. 무슨 말을 해도 소용없다는 걸 알았다.


미영은 한숨을 쉬며 방으로 돌아갔다. 문이 닫히는 소리와 함께 거실은 다시 침묵에 잠겼다.


현우는 소파에 앉아 머리를 감쌌다. 언제부터 그들의 관계가 이렇게 되었을까? 신혼 때는 달랐다. 미영은 상냥했고, 현우는 열정적이었다. 하지만 시간이 지나면서 모든 것이 변했다.


수연이 태어나고 얼마 지나지 않아 미영은 산후 우울증을 겪었다. 그때 미영은 교회에 의지하기 시작했다. 처음에는 현우도 함께 다녔다. 하지만 점점 미영의 신앙은 강박이 되어갔고, 현우는 그런 미영을 이해할 수 없었다.


일에 몰두하는 것은 현우의 도피처였다. 집에 있을 때마다 미영의 불만과 비난을 들어야 했기 때문이다. 하지만 그렇게 멀어질수록 가정은 더욱 삐걱거렸다.


수연의 방에서 훌쩍이는 소리가 들렸다. 현우는 일어나 딸의 방문 앞에 섰다. 노크를 하고 싶었지만, 손이 떨어지지 않았다. 그는 무력감을 느꼈다. 자신의 딸을 위로할 수 없다는 사실이 가슴을 아프게 했다.


다음 날 아침, 현우는 평소보다 일찍 일어났다. 수연의 시험 날이었다. 부엌에서 간단한 아침 식사를 준비하고 있을 때, 수연이 나왔다.


"아빠..." 수연의 눈은 붉어져 있었다.


현우는 미소 지었다. "잘 잤니? 오늘 시험이지?"


수연은 고개를 끄덕였다. "네..."


"걱정 마. 넌 잘 할 거야." 현우는 토스트와 우유를 수연 앞에 놓았다.


수연은 잠시 머뭇거리더니 물었다. "아빠... 우리 가족이 왜 이렇게 됐어요?"


현우는 숨을 들이켰다. 그는 대답을 찾지 못했다.


"난... 모르겠다, 수연아." 그의 목소리는 떨렸다. "하지만 우리 모두 서로를 사랑한다는 건 알아."


수연은 고개를 저었다. "사랑? 이게 사랑이에요? 엄마는 항상 화만 내고, 아빠는... 아빠는 여기 있지도 않아요."


현우의 가슴이 아팠다. 그는 수연에게 다가가 안아주고 싶었지만, 어색하게 서 있을 뿐이었다.


"수연아... 미안해."


수연은 고개를 숙였다. "됐어요, 아빠. 그냥... 시험 보고 올게요."


현우는 수연이 나가는 모습을 바라보았다. 그의 딸이 이렇게 성장했는데, 그는 아무것도 해주지 못했다.


미영이 방에서 나왔다. 그녀는 현우를 보지도 않고 주방으로 향했다.


"미영아..." 현우가 불렀다.


미영은 돌아보지 않았다. "뭐예요?"


"우리... 이렇게 살면 안 돼."


미영은 천천히 고개를 들었다. 그녀의 눈에는 피로와 분노, 그리고 슬픔이 뒤섞여 있었다.


"그럼 어떻게 살아요? 당신이 뭘 바꿀 수 있나요?"


현우는 깊은 숨을 내쉬었다. "난... 모르겠어. 하지만 우리 모두 불행해. 수연이도, 너도, 나도."


미영의 눈에 눈물이 고였다. "난... 난 그저 우리 가족이 하나님의 사랑 안에서 행복하기를 바랐어요. 그게 그렇게 잘못된 거예요?"


"아니, 그게 아니라..." 현우는 말을 잇지 못했다.


둘 사이에 무거운 침묵이 내려앉았다.


미영이 먼저 입을 열었다. "우리... 이제 어떻게 해야 할까요?"


현우는 고개를 숙였다. "나도 모르겠어. 하지만 이렇게는 안 돼. 우리 모두를 위해서..."


미영의 눈에서 눈물이 흘러내렸다. "당신... 정말 우리를 사랑하나요?"


현우는 고개를 들어 미영을 바라보았다. "그럼. 항상 사랑했어. 지금도..."


미영은 고개를 저었다. "그럼 왜 이렇게 됐을까요? 우리가... 어디서부터 잘못된 걸까요?"


현우는 대답하지 못했다. 그들의 사랑은 언제부터인가 미움으로 변해버렸다. 서로를 이해하려 노력하지 않고, 각자의 상처만 키워왔다.


"미영아..." 현우가 조심스레 말을 이었다. "우리, 이제 그만하자. 이런 미움 같은 사랑... 서로에게 상처 주는 이 관계..."


미영의 눈이 커졌다. "당신... 헤어지자는 거예요?"


현우는 고개를 끄덕였다. "어쩌면... 그게 우리 모두를 위한 길일지도 몰라."


미영은 잠시 말이 없었다. 그녀의 눈에서 눈물이 멈추지 않았다.


"그동안... 정말 힘들었어요." 미영이 작은 목소리로 말했다. "당신을 미워하면서도, 사랑한다고 믿으면서... 이렇게 사는 게 옳은 건지 모르겠어요."


현우는 미영에게 다가갔다. 그는 조심스럽게 그녀의 어깨에 손을 얹었다.


"우리 둘 다 실수했어. 서로를 이해하려 하지 않고, 각자의 방식대로만 살려고 했지."


미영은 고개를 끄덕였다. "수연이... 수연이는 어떡하죠?"


"수연이를 위해서라도, 우리가 행복해져야 해. 이렇게 살면... 수연이도 계속 아플 거야."


둘은 오랫동안 말없이 서 있었다. 20년 넘게 함께한 시간, 그 속에 쌓인 추억과 상처들이 스쳐 지나갔다.


"당신..." 미영이 흐느끼며 말했다. "정말 미안해요. 난... 당신을 이해하려 노력하지 않았어요."


현우도 눈물을 참으며 대답했다. "나도 미안해. 네 마음을 몰라줬어."


두 사람은 서로를 바라보았다. 그들의 눈에는 미움보다는 슬픔과 후회가 가득했다.


"우리... 정말 끝내는 거예요?" 미영이 물었다.


현우는 깊은 숨을 내쉬었다. "어쩌면... 이게 새로운 시작일지도 몰라. 우리 모두를 위한..."


미영은 천천히 고개를 끄덕였다. "그럴지도 모르겠네요..."


둘은 잠시 침묵 속에 서 있었다. 20년이 넘는 세월 동안 쌓아온 관계가 이렇게 끝나는 것이 믿기지 않았다.


"수연이에게는 어떻게 말할까요?" 미영이 물었다.


현우는 깊은 숨을 내쉬었다. "함께 말하는 게 좋을 것 같아. 수연이가 우리 둘 다 사랑한다는 걸 알게 해줘야 해."


그때, 현관문이 열리는 소리가 들렸다. 수연이 시험을 마치고 돌아온 것이다.


"다녀왔습니다..." 수연의 목소리가 작게 들렸다.


현우와 미영은 서로를 바라보았다. 둘 다 눈가에 눈물이 맺혀 있었다.


"수연아, 이리 와볼래?" 현우가 부르자 수연이 거실로 들어왔다.


수연은 부모의 표정을 보고 뭔가 심상치 않음을 느꼈다. "무슨 일 있어요?"


미영이 먼저 입을 열었다. "수연아... 엄마, 아빠가 할 말이 있어."


수연은 불안한 눈빛으로 부모를 번갈아 바라보았다.


현우가 조심스럽게 말을 이었다. "우리가... 엄마랑 아빠가 많이 생각해봤어. 그동안 너에게 많은 상처를 줬지?"


수연의 눈에 눈물이 고였다. "아빠..."


미영이 수연의 손을 잡았다. "미안해, 수연아. 엄마가 너무 강압적이었어. 네 마음을 이해하려 하지 않고..."


"우리가 결정한 게 있어." 현우가 말을 이었다. "엄마랑 아빠가... 헤어지기로 했어."


수연의 눈이 커졌다. "뭐라고요? 이혼... 이혼한다고요?"


미영이 고개를 끄덕였다. "응... 우리 모두를 위해서야. 이렇게 서로 상처 주며 사는 건..."


수연은 갑자기 울음을 터뜨렸다. "싫어요! 제발... 제발 그러지 마세요!"


현우는 수연을 안아주려 했지만, 수연은 뿌리쳤다.


"이게 다 제 탓이에요? 제가 공부 열심히 하지 않아서? 교회에 열심히 다니지 않아서?"


미영이 고개를 저었다. "아니야, 수연아. 네 탓이 아니야. 이건 엄마, 아빠의 문제야."


현우도 말을 보탰다. "우리가 너를 위해 최선을 다하지 못했어. 하지만 이제... 우리 모두 행복해질 수 있는 길을 찾고 싶어."


수연은 흐느끼며 말했다. "그럼 왜 지금까지... 왜 이제야..."


미영은 눈물을 흘리며 수연을 안았다. "미안해, 정말 미안해..."


가족 세 사람은 한동안 울며 서로를 안고 있었다. 그들의 눈물 속에는 후회와 미안함, 그리고 새로운 시작에 대한 두려움이 섞여 있었다.


시간이 얼마나 흘렀을까, 수연이 먼저 입을 열었다.


"그럼... 앞으로 어떻게 되는 거예요?"


현우가 대답했다. "우선 엄마랑 아빠가 따로 살게 될 거야. 하지만 네가 원한다면 언제든 둘 다 만날 수 있어."


미영이 덧붙였다. "수연아, 우리가 헤어지더라도 너에 대한 사랑은 변하지 않아. 알겠지?"


수연은 고개를 끄덕였다. 그녀의 눈에는 여전히 혼란스러움이 가득했지만, 조금은 안도의 빛도 보였다.


"저... 제가 원하는 대로 살아도 돼요? 교회도, 공부도..."


미영은 잠시 망설이다 대답했다. "그래... 네가 원하는 대로 살아. 엄마가 너무 강요했던 것 같아."


현우도 고개를 끄덕였다. "우리가 네 선택을 존중할게. 다만, 네 미래를 위해 열심히 노력하길 바랄 뿐이야."


수연은 두 부모를 번갈아 바라보았다. 그녀의 눈에는 여전히 눈물이 고여 있었지만, 작은 미소가 번졌다.


"고마워요... 엄마, 아빠."


세 사람은 다시 한 번 포옹을 나눴다. 이번에는 조금 더 따뜻하고 편안한 느낌이었다.


몇 주 후, 현우는 새로운 아파트로 이사를 했다. 미영과 수연은 기존 집에 남기로 했다. 이혼 절차는 시작되었지만, 그들은 서로를 배려하며 진행하기로 약속했다.


수연의 방에서 짐을 정리하던 현우는 문득 책상 위에 놓인 성경책을 발견했다. 그는 조심스럽게 성경을 들어 펼쳤다. 첫 페이지에는 미영의 글씨로 쓰여 있었다.


"사랑하는 우리 수연에게, 하나님의 사랑 안에서 항상 행복하길. - 엄마가"


현우는 잠시 그 글귀를 바라보았다. 그의 마음에 복잡한 감정이 교차했다. 후회, 미안함, 그리고 새로운 시작에 대한 희망.


그때 수연이 방에 들어왔다.


"아빠, 뭐 해요?"


현우는 미소를 지으며 성경을 수연에게 건넸다. "네 엄마가 써준 글이구나."


수연은 성경을 받아들고 잠시 글을 바라보았다. 그녀의 눈에도 복잡한 감정이 스쳐 지나갔다.


"수연아," 현우가 조심스럽게 말을 꺼냈다. "앞으로 우리 가족이 어떻게 변할지 모르겠지만, 한 가지는 확실해. 우리 모두 서로를 사랑한다는 거야."


수연은 고개를 끄덕였다. "알아요, 아빠. 저도... 엄마도 아빠도 사랑해요."


현우는 수연을 안아주었다. 이제 그들의 삶은 새로운 국면을 맞이하게 될 것이다. 과거의 상처를 완전히 치유하기까지는 오랜 시간이 걸릴 것이다. 하지만 그들은 이제 서로를 이해하고 존중하며, 진정한 의미의 사랑을 찾아가는 여정을 시작했다.


미움 같은 사랑은 끝났다. 이제 그들은 새로운 형태의 가족, 그리고 새로운 사랑을 만들어갈 것이다.

2024년 8월 15일 목요일

OQ 10년 후 ( 가상 )

 # 한 명의 팔로워가 만든 기적: OQDQ의 10년


*2034년 8월 16일*


오늘은 우리 회사 'OQDQ'의 창립 10주년 기념일입니다. 이 자리에 오기까지, 수많은 도전과 위기가 있었지만, 지금 돌이켜보면 그 모든 순간이 값진 경험이었습니다. 특히, 우리의 첫 번째 팔로워였던 지현이 없었다면, 오늘의 우리는 없었을 것입니다.


## 운명적인 만남


2024년, 저와 동료 민우는 'AI로 실시간 맞춤형 메뉴판을 만들자'는 아이디어를 가지고 있었습니다. 당시에는 많은 사람들이 의아해했죠. "그냥 키오스크 아니야?", "AI를 굳이 왜 써?"라는 반응이 대부분이었습니다.


그러던 어느 날, 우리는 한 스타트업 네트워킹 이벤트에서 신입 개발자 지현을 우연히 만났습니다. 우리의 아이디어를 들은 그녀의 반응은 달랐습니다. "와, 이거 정말 혁명적일 수 있겠어요! 개인 맞춤형 메뉴 추천부터 식당 재고 관리까지 다 가능하겠는데요?"


## 첫 번째 팔로워의 등장


지현의 열정적인 반응에 우리는 깜짝 놀랐습니다. 그녀는 단순히 아이디어를 칭찬하는 데 그치지 않았죠. "제가 이 프로젝트에 참여할 수 있을까요? 제 기술을 이 아이디어에 쏟고 싶어요!"라고 말하며 적극적으로 동참 의사를 밝혔습니다.


## 위기의 순간


초기 개발 단계에서 우리는 큰 기술적 난관에 부딪혔습니다. AI 모델의 정확도가 낮아 실용화가 어려워 보였죠. 투자자들은 하나둘 발을 빼기 시작했고, 민우와 저는 거의 포기할 뻔했습니다.


그때 지현이 나섰습니다. 그녀는 자신의 정규직을 과감히 그만두고 우리 프로젝트에 전념했습니다. 밤을 새워가며 AI 모델을 개선했고, 심지어 자신의 적금을 깨서 우리에게 6개월의 시간을 벌어주었습니다. "이 기술은 반드시 성공할 거예요. 저는 그걸 믿어요."


## 책임감의 무게


지현의 헌신은 우리에게 엄청난 책임감을 안겨주었습니다. 그녀의 믿음에 보답하기 위해, 우리는 더욱 열심히 일했습니다. 포기하고 싶을 때마다 "적어도 지현이를 위해서라도 해내자"라는 마음으로 버텼죠.


## 새로운 시각


지현은 단순한 개발자가 아니었습니다. 그녀는 음식에 대한 깊은 애정과 요리 경험을 가지고 있었죠. 이 경험은 우리의 AI 메뉴판에 실용성을 불어넣었습니다. 고객의 취향, 식단 제한, 심지어 그날의 날씨까지 고려하는 추천 시스템은 지현의 아이디어에서 시작되었습니다.


## 끊임없는 에너지의 원천


스타트업의 일상은 고됐지만, 지현의 열정은 우리 팀 전체에 에너지를 불어넣었습니다. "우리가 식당 문화를 바꿀 수 있어요!"라는 그녀의 말은 우리의 슬로건이 되었습니다.


## 10년 후의 오늘


이제 'OQDQ'는 전 세계 100만 개 이상의 식당에서 사용되는 서비스가 되었습니다. 우리의 AI 메뉴판은 단순한 주문 시스템을 넘어, 식당의 재고 관리, 고객 데이터 분석, 심지어 새로운 메뉴 개발까지 돕는 종합 솔루션으로 발전했습니다.


## 교훈: 팔로워의 가치


이 모든 성공의 시작에는 지현이라는 한 명의 열정적인 팔로워가 있었습니다. 그녀의 존재는 우리에게 용기와 책임감, 새로운 시각과 끊임없는 에너지를 주었습니다.


창업자로서 우리는 종종 '리더십'에만 집중하곤 합니다. 하지만 진정한 리더는 팔로워의 가치를 아는 사람입니다. 여러분의 꿈을 믿고 따라오는 그 한 명을 소중히 여기세요. 그들의 존재가 여러분의 꿈을 현실로 만드는 결정적인 힘이 될 것입니다.


오늘, 우연한 만남으로 시작되어 우리의 첫 번째 팔로워가 되었고, 이제는 우리 회사의 CTO가 된 지현에게 특별한 감사를 전합니다. 그리고 여러분 모두가 누군가의 '지현'이 되어주길 바랍니다. 그것이 바로 혁신의 시작입니다.


( Inspired by https://x.com/wdshin/status/1823460698535625149 , Written By Claude )

삥 치다가 올인한다.


https://x.com/wdshin/status/1772413090832748589?s=46&t=RbV5FM5cUArlZj7K8N2d0w

내 트윗을 클로드를 통해 블로그화 시켜 봤다.

 

# 포커와 인생의 올인: 승부의 순간


우리는 종종 인생을 도박에 비유합니다. 그중에서도 포커는 삶의 여정과 놀라울 정도로 닮아있습니다. 단순히 운에만 의존하는 게임이 아니라, 전략과 심리, 그리고 결단력이 필요한 게임이죠. 오늘은 포커를 통해 인생의 중요한 교훈 하나를 이야기해보려 합니다.


## 시작은 작지만...


"삥만 내고 치고 승부 보는 포커가 있으면 좋겠지만, 그렇지 않다."


인생도 마찬가지입니다. 우리는 종종 큰 위험 없이 큰 보상을 얻길 원합니다. 최소한의 노력으로 최대의 결과를 얻는, 이른바 '로또 당첨' 같은 일이 일어나길 바라죠. 하지만 현실은 그렇게 녹록지 않습니다.


## 점점 커지는 판돈


"베팅엔 더 큰 후속 베팅이 필요해진다."


포커에서 게임을 계속하려면 점점 더 많은 돈을 걸어야 합니다. 인생의 도전도 이와 비슷합니다. 처음에는 작은 결정으로 시작하지만, 점점 더 큰 결단을 내려야 하는 순간이 찾아옵니다. 새로운 직장에 지원할 때, 처음에는 이력서를 보내는 것으로 시작하지만 최종 면접에 가서는 현재의 안정된 직장을 포기할 준비를 해야 할지도 모릅니다.


## 희망과 고뇌 사이


"가능성이 더 커지는 희망고문 같은 것."


포커 핸드가 좋아질수록 승리의 희망은 커집니다. 하지만 동시에 잃을 수 있는 것도 많아지죠. 인생의 큰 기회들도 이와 비슷합니다. 성공의 가능성이 보일 때 우리는 더 많은 것을 투자하고 싶어집니다. 시간, 돈, 노력을 쏟아붓죠. 하지만 이 과정이 항상 쉽지만은 않습니다. 희망과 불안이 교차하는 시간을 겪게 되죠.


## 올인의 순간


"결국 올인해야 하는 상황이 생긴다."


포커에서 가장 극적인 순간은 올인을 선언할 때입니다. 모든 것을 걸고 승부를 보는 거죠. 인생에서도 이런 순간이 옵니다. 새로운 사업을 시작하기 위해 안정된 직장을 그만두는 것, 사랑하는 사람과의 결혼을 결심하는 것, 또는 전혀 새로운 분야에 도전하는 것 등이 이에 해당할 수 있습니다.


## 깨달음의 순간


"승부를 보려면 결국 올인해야 하는 상황이 생길 수 있다는 것을 인지해야 하는 것이다."


이것이 바로 포커와 인생이 우리에게 주는 중요한 교훈입니다. 진정한 성공과 성취를 위해서는 때로는 모든 것을 걸어야 한다는 것. 이는 두려운 일이지만, 동시에 우리를 성장시키는 과정이기도 합니다.


## 마치며


삶은 포커 게임과 같이 불확실성으로 가득합니다. 하지만 우리가 꿈꾸는 승리를 위해서는 때로 과감한 결단이 필요합니다. 모든 판에서 올인할 수는 없지만, 정말 중요한 순간에는 주저하지 말고 올인할 준비가 되어 있어야 합니다.


여러분의 인생에서 '올인'이 필요한 순간은 언제일까요? 그리고 그 순간이 왔을 때, 여러분은 준비되어 있나요?

2024년 2월 16일 금요일

변수 네이밍 #1 - 상태 변수 - status vs state

 

프로그래머의 중요한 역량 중에 하나가 이름짓기(네이밍)라고 생각한다.

프로그래밍 월드 내에서의 개념들을 만들고,

객체를 만들고, 

그들간의 관계를 만들고,

동작하게 한다.

객체를 지칭하는 네이밍이 와닿지 않으면 혼동하기 쉽고 오류에 빠지기 쉽다.


코딩 할 때에는 영어를 써야 한다.

단어의 미묘한 차이가 개념의 혼동,혼란,적확성을 결정하기 때문에, 영어를 잘 해야 한다. 


status, state 는 객체의 상태를 나타내는데 인기 있는 단어이다.

status 는 상하로 움직이는 사회적인 지위를 나타내는 경우에 쓰이고,
state 는 state machine 에서의 상태, 전이 상태를 나타내는 경우에 쓰인다고 생각한다.
대부분 state 로 쓰면 더 맞다.

그 외의 상태를 나타내는 단어들을 더 조사해서, 이 글을 업데이트 해 봐야겠다.

2024년 2월 12일 월요일

잡 꿈

 

잡꿈


간만에 여러 생각을 하게 하는 꿈을 꿨다.


첫사랑이 나한테 이제라도 대학을 다시 들어가라는 조언을 해 주고,

친구가 나와서 우리 이제 새로운 꿈을 갖고 일해보자라는 말을 해 주고,

구상 하던 사업 아이템 관련 아이디어가 구현되는 모습도 보이고...


아쉬움과 욕망

한마디로, '아쉬움과 욕망'의 잔재물이 내 마음속에 남아 있다는 말이다.


인생을 반바퀴 돌면서 정말 많은 생각을 하고 산다.

사회화가 아닌 반사회화, 개인화가 이제 더 중요해지는 것 아닌가 싶고,

아쉬움을 떨치거나 가볍게 이루거나 평화롭게 살고 싶다는 생각을 한다.


지난 두어달은 아이디어를 다듬는 고독한 시간 


지난 두어달을 게임을 하며 게임 기획을 하려고 폐인처럼 지냈는데,

게임 기획도 쉬운 일은 아니다.

코딩과 같은 개발에 집중해 있을 때도 행복했었지만,

다른 차원의 고민을 해야 한다.

실마리를 찾아야 하는 고민들을 한다.

개발에는 대부분 답이 있는데, 기획에는 답이 없어보이고, 점점 미궁으로 빠져든다.

다른 사람들에게 경력 10년,20년이면 (나처럼) 답을 찾을 수 있어야 하지 않냐고 질타했던 내가 부끄러워진다.

과연 기획 아이디어를 잘 찾는 방법들을 경력자들은 갖고 있을까?


개발을 오래 했던 탓에 이제는 개발이 재미가 없고, 기획이 더 재밌고, 의미있게 느껴진다.

그러나 기획의 어려움은 구현이 된 완성체를 빨리 확인하기 어렵다는데에 있다.

업무를 하던 동안에는 숙련된 프로토타입 개발팀이 유능한 기획자를 보조할 수 있는 시스템이 되어 있어야 한다고 생각했었다.

혼자서 아이디어를 다듬고 방향성이 일관된 기획을 하고 스스로 검증하는 고독한 과정이 필요하긴 하다.

그런 과정에서 아이디어를 토론할 수 있는 상대자는 엄청난 즐거움이자 효율책이 될 것이다.


앞으로는 어떻게 할까?


폐인모드로 지내다보니, 루틴의 중요성을 다시 한번 실감한다.

너무 하나에만 매몰되서 하루를 지내는 것보다는

하루에 30분짜리 반복적이고 생산적인 일정들을 소화 했었더라면, 지금은 좀 더 나은 상태였을 것이다.

무너진 생활을 다시 다잡아야 한다.


인생도 문제 해결의 과정


아무것도 모르고 태어나 세상에 던져져서 살았다.

부모님과 선생님들,친구들의 사랑이 아니었으면 나는 아무것도 아니었을 것이다.

사람들이 돈 벌고 사는 방식을 가만히 보면,

결국 문제를 해결해주는 것이다.

사소하고 반복적인 문제부터, 그것들이 합쳐져 큰 문제를 해결하는 회사까지...

결국 가치 있는 문제를 해결하면 된다.

예전에 어르신들이 '그걸 하면 떡이 나오냐 밥이 나오냐 헛소리 마라' 했던 일들이

이제는 사람들이 각광하는 일들이 되어 있는 경우가 있다.

'노래와 춤'이라던지, '게임'이라던지...

나는 어떤 문제를 찾고 해결 할 수 있는 사람인가?

인생 3막에서 이제 스스로 다시 묻고 꾸준히 갈 수 있어야 한다.









Through the ages

 

문명 게임


지인의 추천을 받고, 문명(Civilization) 게임의 축소판인 '쓰루 더 에이지스'를 해 봤다.


보드게임이었는데, 앱으로 나와 있다.

보드게임은 안 해 봤는데, 튜토리얼을 통해서 룰을 대강 익힐 수 있었고,

몇시간만에 도전과제를 클리어할 수 있었다.


빌드 오더


이 게임의 핵심은 '빌드 오더'이다.

문명 게임의 핵심 재미 중의 하나인, 결정에 따라서 문명의 운명이 바뀌는 

문명의 축소판이다.

'선택의 재미'인 증명된 재미를 핵심만 더 파고들어서 새로 만든 게임이라고 볼 수 있다.



턴마다 할 수 있는 액션 수의 제한이 있고,

액션 수보다 3배 많은 카드 중에서 액션을 선택하여 수행하여 문명의 경쟁력을 키우고, 다른 경쟁자를 견제하고 전쟁하기도 한다. 

전쟁구현은 4X 게임이 아니기 때문에, 간단한 공격력 방어력 수준으로 구현하고, 일방적으로 밀려서 괴멸되지는 않도록 적절히 밸런싱 되어 있다.

고대 시대부터 현대 시대까지 시대마다 영웅 리더를 적절히 채용해서 그 특성을 활용해야 한다.

처음에 하면 Easy Mode 도 Easy 하지 않다. 

아직 베스트 빌드 오더를 찾지를 못했다.

몇시간 한 상태에서 개인적으로 끌리는 순서는 

아리스토텔레스 -> 징기스칸 -> 나폴레옹 -> 처칠로 이어지는 전쟁 위주의 진행이다.

정치적인 행위에는 약탈,전쟁,조약 등이 있는데 세력 차이가 많이 나야 약탈,전쟁에서 효과적이기 때문에 이득을 크게 볼 수는 없지만, 아드레날린 나오는 조합은 역시 전쟁위주의 진행인 듯 하다. ㅎㅎ

영웅들의 특성은 해 보면 쉽게 알 수 있는 수준이지만, 잘 활용 하기는 힘들다.

여간해서 Medium 이상 레벨에서의 챌린지를 이기기는 쉽지 않다.




2,3,4 인 플레이어까지 할 수 있다.

위의 그림은 2인용에서 첫 승리를 한 기념 샷이다.


육성 시뮬레이션에 적용 가능?


하다보니, 내가 기획하고 있는 게임에도 적용할 수 있는 로직이 있을 것 같다.

육성 시뮬레이션 게임에 빌드 오더를 이런 식의 로직으로 적용할 수 있지 않겠는가?

선형적인 육성 시뮬레이션은 재미가 떨어지기 때문이다.

이 게임에서의 1차,2차,3차 산업에 대한 성장 선택 과정은 어떤 육성 시뮬레이션에도 적용할 수 있는 로직일 듯 하다.


예를 들어, 걸그룹 육성 시뮬레이션이라면,

보컬, 댄스, 매력의 분야에 맞춰서 

다양항 액션(어떤 액션들이 있을까?) 카드로서 육성을 시키고,

영웅적인 트레이너에 의해서 육성이 영향을 받고,

다른 연습생 경쟁자와 겨룰 수 있는 구도로 하고, 

1위를 해야만 서바이벌 하는 게임으로 만들면 될 듯 하다. 

ㅎㅎㅎ


즐겜.





2024년 1월 3일 수요일

나는 솔로 - "이상형이 뭐에요?"

 

SBS Plus 채널의 프로그램인 '나는 솔로'를 즐겨본다.

1기부터 지금까지 다 봤다. ㅎㅎㅎ

눈물도 웃음도 인생도 들어있다. ㅋㅋㅋ

16기에 너무 피곤해서 멀리하게 되긴 했는데, 

최근 기수에서 희한한(?) 여성을 보게 되서 적어본다.


썸타거나, 소개팅 할 때 흔히 묻는 말

'이상형이 어떻게 되세요?'

대개 그 답들은 예측가능하고 정해져 있는 편 아닌가?

그런데,

한 여성 출연자가

'야망 있는 남자'라고 말하더라.


우와~ 

난 그런 남자 이상형을 원하는 여성이 있을 수 있다는 것에 너무 놀랐다!

역시 나의 뇌에 세상을 가두고 사는 것이다.

그런 이상형이 있을 수 있다는 것을 알았다면,

나는 그런 이상형을 찾는 여성을 찾았을 것 같다. 푸학학~

다시 말하자면, 그런 이상형이 있을 수 있다는 것 자체를 생각을 못했었다.

보통은 그저 내가 생각하는 여성들의 이미지 중에서 

제일 끌리는 사람과 함께 하게 되지 않는가?


커플 매칭 서비스를 만든다면, 

내 이상형이 어떤 것인가?

나는 어떤 사람인가?

그런 나를 원하는 사람들이 얼마나 되는가?

을 핵심으로 만들어볼 수 있을 것 같다.

뻔한 이야기로 들리겠지만...

그걸 잘 구현하는 것은 다른 일일 것이다.


겪어봤을지도 모르겠지만,

내가 좋아하는 이상형, 내가 이상형인 그대는 훨씬 아름답고, 설레인다.


나와 맞는 사람과 산다는 행복.

그게 얼마나 소중한 가치인가?

인생에서 제일 소중한 가치일지도 모른다.





2024년 1월 2일 화요일

기술적으로 아직도 포기 못하겠는 일

 

30년을 엔지니어로 일했지만, 아직도 혼자라도 해보고 싶은 것들이 있다.

한마디로 말하면, 정말 좋은 게임 서버 만들기.


rust , go, c++, c# , python 등을 혼합하여 만들 것 같고,

대용량 트래픽 처리는 기본이고, 계정 관리, 게임 객체의 저장, 관리, 분산 액터로서의 역할, 로그 관리, 요즘 필요한 AI 서버, 온라인 게임에서 필수적으로 필요한 게임 클라이언트와의 동기화를 쉽게 구현할 수 있는 게임 서버가 되어야 할 것이다.

간단한 모바일 게임 서버부터, 메타버스까지 모두 아우르며 만들 수 있는 게임 서버가 되어야 하겠지.

내가 엔지니어로서 가장 잘 할 수 있는 일이니까, 마무리는 해 놓고 싶다.


틈날때마다 설계하고, 한땀한땀 하다보면 어느 순간 다 되어 있지 않을까?

10년전에도 20년전에도 생각만 하고 하지 못하지 않았는가? ㅎㅎㅎ


게임 서버 말고도, 사실 게임 엔진도 만들고 싶은데, 이번 생은 200살까지 살지 않는 한 힘들 것 같기도 하고... ㅎㅎ 틈틈히 좋은 게임 엔진을 공부하며 잘 쓰기만 해도 좋겠네. 


다짐만 이렇게 쓰다가, 나중에 이 글을 보면 부끄럽겠지? 

실천합시다! 실천! 

2024년을 맞이하며

 

2023년 회고는 못 했지만, 2024년 포부를 써 보고자 한다.


추진력이 필요하다.


결론부터 말하자면, 매우 불안하지만, 더 건강해지고 추진력을 갖추면 가능성이 있다.


지난 2년간 사업의 본질에 대해서 많이 고민 했던 것 같다.

사업의 진행은 본질에 대한 깨우침, 니치 마켓을 찾아 목표 세우기, 목표에 따른 계획 세우기, 실천의 과정을 거쳐야 하는 듯 하다.

작년에는 본질과 목표에 대해서만 생각 했던 것 같다.

나 자신이 너무 나태해서 계획도 못 세우고, 실천도 제대로 못 했다.

다행히 아직도 추진하고 싶은 목표가 있고, 그 시장은 아직 유효해 보인다.

그래서, 2024년은 추진해야 한다!

추진하기 위해서는 건강해야 한다! 그리고 매일 매일의 의미를 부여하며 보람차게 살아야 한다.

놀만큼 놀았고, 방황할만큼 방황했다.

더 이상 좌고우면하며 방황하고 탐험하는 것이 재미가 없다.

추진하는 것만이 재미가 있는 상태가 되었다.


핵심 가치


내가 만들고 싶은 프러덕트인 게임의 핵심 가치를 정했다.

1. 인재의 숨은 스탯을 AI(LLM)으로 말하고, 유추하여 좋은 팀원을 구하는 구인 게임.

2. 팀원들을 좋은 포지션에 맞춰서 팀을 구성하여, 좋은 퍼포먼스를 내도록 튜닝하고, 경쟁시키는 매니징 게임

3. 실제 인물과 매칭이 되는 인재로 가상의 목표를 이뤄가며 돈 버는 시뮬레이션 게임


이렇게만 말하면 뭐가 뭔지 잘 모를 것이지만, 더 정확히 말하긴 어렵다.

이 정도만 말해도 알 사람들은 알 것 같다.

어쨌든 AI First Game 이다!!! 

잘 만들어서 투자 받고 날아올랐으면 좋겠다!


버티고 개척하자


사업을 영유하는 일은 매우 어려운 일이다.

돈 벌며 유지하고, 회심의 새로운 프러덕트나 서비스를 출시하여, 새로운 시장을 개척해야 의미가 있을 것이다.

시간을 아끼고 의미있게 써야 한다.

버티려면, 알바나 외주도 해야 할 것이고, 소소하게 돈 버는 일들도 마다하지 말아야 할 것이다. 

그럼에도 메인 업무의 일정이 흐트러지지 말아야 할 것이다.


기술을 연마하고, 좋은 사람들을 만나는 것도 게을리하지 말아야 할 것이다.


화이팅!


2023년 12월 19일 화요일

권태로움 극복하기

 

지난 2년 동안 나를 괴롭힌 '권태로움'에 대해서 이야기 해 보고자 한다.


또 해야해?


나는 오랫동안 정말 치열하게 열심히 살았고, 그 결과 번아웃으로 2년간 고생했다.

발버둥 쳐봤지만 잘 안되었다.

그러나 진짜 이제는 회복해야한다.

회복하려고 더 더 더 발버둥치려고 하고 있다.

그러다 보니, 그 원인을 규명해야 제대로 치유가 될 거라 생각하게 되었다.

여러가지 원인들로 복합적으로 작용했겠지만, 

'이것저것 다 해 봤어!! 또 해야해?' 라는 '권태로움'이 나를 괴롭혔다고 생각한다.

그래서, 전진이 두렵고, 재미없고, 의미없고, 가치없고, 부질없고, ... 그런 감정들이 나의 뒤통수를 끌어당기고 있었다.

부디 나처럼 되지 않길 바란다.

하지만 이미 그렇게 되었다면, 내가 어떻게 진단하고, 극복하는지 참고하면 좋을 듯 하다.


마음의 치유


마음을 치유 한다는 방법들도 시도 해 봤지만, 잘 통하지 않았다.

치유를 위해서, 니체가 말한 '위버멘쉬'가 되고 싶었고, 헤밍웨이의 '노인과 바다'의 '산티아고'처럼 묵묵히 살고 싶었고, 나를 구원해 주신 하나님을 믿고 의지하며 소시민적으로 겸손하게 살고 싶다.

그 마음으로 살려고 하지만, 논리가 되야 통하는 나같은 사람에게는 100%로 통하는 방법은 아니다. 

나는 진취적이고 열정을 좇던 사람이었고, 진취적이지 않으면 에너지가 안 생기는 사람라는 것을 알 수 밖에 없었다.

30년을 그렇게 살았는데, 갑자기 어떻게 사람이 변하겠나?!

그래도 남은 인생 더 성숙한 사람으로 천천히 변해가겠지.

작은 좋은 습관들을 쌓아가는 것은 좋은 방향이다. 남은 인생이라도 그렇게 잘 살아야 한다. ㅎㅎ 


과거를 톺아보자


자~ 내가 어떻게 살았는지 다시 더듬어 보자.


나는

1. 많이 일했다. 

  - 게임에 대해서 뜻을 세우고, 30년이상을 게임과 관련된 일을 하고 주로 기술 지원과 개발을 했다. 

  - 18년을 동료들을 믿고 큰 회사의 CTO 로서 일했다. 기술과 엔지니어들에 대한 인사이트와 경험이 있다.

 - 게임, 커머스, 모바일 서비스 등의 분야에서 규모 있는 것들을 만들고 출시 해 봤다. 그 중에서 큰 성공 한 것도 있고, 실패 한 것들도 많다. 왠만한 것들은 다 해 본 느낌이다. 

 - 비젼과 목표를 끊임없이 쫓고, 1세대 게임 개발자로서의 사명감, 선배로서의 책임의 중압감에 시달렸다.

2. 모든 것에 1순위로 업무를 생각하며 살았다. 

  - 2순위 이하에는 에너지를 거의 안 썼다.

3. 건강한 취미 활동을 잘 하지 못했다. 

4. 좋은 규칙적인 습관을 적립하지 못했다. 운동, 독서, 토론과 같은...

5. 주말을 잘 지내지 못했다. 평일에 에너지를 다 써버려서 주말엔 누워있었다.


그 결과 번아웃이 왔었던 것이다.

완벽하게 행복한 은퇴를 위해서 일했었다.

그치만 이제는 미래에 대한 생각을 줄이고, 지금을 행복하게 살고 싶다.


역전된 직무 - 기술 >>> 게임


사람들을 만나보면, 사람들이 나한테 기대하는 키워드는 '게임과 관련된 기술'이다. 

'기술' >>> '게임' 이다.

그런데, 나는 더 이상 그걸 하기가 싫었다. 

애초에 나는 게임을 만들고 싶었지, 기술을 하고 싶었던 것은 아니었기 때문이기도 하다.

그리고, 이제는 젊고 더 재능있는 사람들이 해야 하고, 나는 조그만 통찰력을 가졌을 뿐이다.

예전처럼 빠르게 개발할 수 있는 날카로운 예리함과 빠른 실행력을 잃어버렸다.

그렇지만, 그 통찰력에 대한 근거없는 자부심이 있다. 

여러가지 분야들을 둘러봤지만, 그럼에도, 나는 '게임'을 만들고 싶다.

벗어날수가 없다.

벗어나더라도 잠깐의 '외도'일뿐이다.

평생 나는 나의 마음을 뛰게 하는 일을 해오면서 살아왔는데, 그렇지 않는 것을 할 수가 없다.

그렇지 않는 것을 하려고 하면 도파민 분비가 안된다. 

그렇게 열정적이던 내가 몸이 움직이지 않는다. 

게임이 아니어도 상관없는데, 여전히 마음 설레는 일을 하고 싶다.

그래서, 도파민이 분비되는 일을 찾으려고 애쓰고 있었다.


설레는 일


돈버는 일을 찾고 있었고, 기술적으로, 사업적으로 설레는 일을 찾고 있었다.

분야적으로는 블럭체인과 관련된 '온체인 게이밍'에 대해서 고민했었고, 그 이후에는 'AI aided Service' , 'AI First Game'에 대해서였다.

기술적으로는 내가 좋아하는 언어로만 구현된 프로젝트를 하는 일일 것이다.

구체적으로는 rust + erlang(elixir) + golang 로 된 프로젝트를 만드는 일일 것 같다. 

유지보수가 잘 될 수 있고, 낭비없이 만들 수 있는 프로젝트를 만들고 싶은 마음이 엔지니어의 마음 아닌가?! 

사업적으로는 스타트업으로서 시장에 진입할 수 있는 신박한 사업 아이템을 찾고 싶었다. 

에너지가 있는 사람들이랑 하고 싶었다. 그러나 내 뜻과 거리가 있으면 함께 하기 어렵다는 것을 새삼 깨달았을 뿐이다. 


고독


정말 정말 정말 고독하다.

나를 담아줄 누군가를 만나기 전까지는 누구가를 따를 수도 없다.

나는 가치가 있는 사람이고, 그걸 증명해 왔던 사람인데, 이제는 나를 모르는 사람들에게 처음부터 다시 증명해야만 한다.

그래서, 글을 쓰기로 했다. 

표현하지 않으면 아무도 모르는 거 아닌가?!

나의 생각들을 정리하는데에도 도움이 되고, 사람들을 설득하는데에도 도움이 되고, 내 자취를 남기는 의미있는 일일 것이다.

나는 이러저러한 것들을 사랑하면서 살고 있어!! 라고 말하며 살려고 한다.


승부


포기하지 않고 잘 버티고 싶다.

포기하지 않을 방법을 찾으면서 가고 싶다.

뭔가를 이룰려면 '리스크'를 피할 수는 없다!?

직면하고 해내야 하고, '승부'지점에서 만나고 결과를 받아들여야 한다.

좋은 습관들을 적립하면서,

여전히 승부지점을 향하여 도전하지 않으면 안된다.





2023년 12월 1일 금요일

Text2Music


게임에서 쓰일 음악과 노래를 생성하고 싶다.


내가 기획한 가상의 K-POP 스타가 생성된 노래를 부르고, 춤도 춘다면 얼마나 멋질까?


Text-to-Music 관련해서, 세개의 업체를 찾아보았다. 

음악을 생성해주는데, 노래를 부르지는 않는다.

간략히 비즈니스를 위해 비교해본다.


SoundRaw

  • 일본인 출신 회사
  • 2020년 창업
  • 월 30$ 구독 모델, 30개/month
  • Test API 제공하는데 , contact 를 해야 함.
  • API Document 제공함. 


AIVA 

  • UCL 출신 유럽(룩셈부르크) 회사
  • 2016년 창업
  • B2B는 contact 를 해야 함. 개인용 제공하는 듯.
  • $33 , 300개/월 

MixAudio

  • KAIST 후배님들이 만든 카카오벤쳐스 스타트업 neutune
  • 2020년 창업
  • 아직 베타, 라이센스 정책 미정인 
  • 퀄리티 기대가 된다.



모두 게임에 바로 쓰기엔 미흡해보이긴 하다.

API를 쓰면 바로 다운로드 되는지, 처리 시간이 얼마나 걸리는지 확인을 해야 하고,

음악 기획을 하고, 그에 맞게 MAX만큼 다운로드 해서, 사용해야 할 듯 하다.

K-POP에 특화된 것이 없는지 알아봐야 한다.

배경 음악에 맞게 보컬 생성 AI와 합쳐서 쓸 수 있는지, 어떻게 해야하는지 알아봐야 한다.


Text-to-Song 관련해서 찾아보았다.


이 글을 참고하였다.

5 Best Text to Song Generators for Digital Music Creation (audiocipher.com)

A Complete Guide to AI Music Generators in 2023 (audiocipher.com)


VoiceMod


이 정도 이상으로(?) 게임에서 구현할 수 있으면 좋겠다. 




JukeBox ( OpenAI )




기타 참고할 만한 것들


ChatGPT Music


ChatGPT Music: How to Write Prompts for Chords and Melodies (audiocipher.com)


Uberduck


Using Uberduck AI Voice Generator to Make Music (audiocipher.com)




2023년 11월 29일 수요일

풋볼매니져의 재미를 구현하려면?

 

풋볼매니져는 정말 훌륭한 게임이고, 내가 좋아했던 게임이다.

1997년 도스시절의 챔피언쉽매니져 2부터 시작했던 기억이 난다.

( 스샷 ) 



최근에 FM24 Mobile 을 하면서 다시 접했다. 무려 27년만이다.


강한 중독성의 풋볼 매니져


중독성이 강한 탓에 당시에도 게임을 개발하고 있었는데, 일정이 매우 밀렸었고, 선배한테 꾸중을 들었던 기억이 난다. 웃긴 건, 내가 임원으로 일하던 게임회사에서 부하직원이 풋볼매니져에 빠져 일을 못했던 적이 있었는데, 내 손으로 그 친구에게 경고도 주고, 다른 회사 알아보라고 했었던 기억이 난다. 

그 중독성은 정말로 유명하다.

축구 자체가 인기있는 아이템이기도 하지만, 위닝 일레븐이나 피파 시리즈의 인기에 못지않게, 축구팬이라면 종아하는 축구게임이 풋볼 매니져이기도 하다.

풋볼 매니져는 시뮬레이션 게임이다.

감독이 되어, 팀을 이끌어, 우승을 시키는 게임이다.

컴퓨터 게임이기 때문에 save/load 신공을 이용해서 지지 않고 우승을 하는 방법도 있지만, 정말 잘 하는 사람들은 시뮬레이션 결과를 인정하고, 팀을 점점 향상 시켜 우승에 이르게 된다.

그 뽕맛과 같은 성취감은 정말 대단하다. 그래서, 또 하게 된다.  할 때 마다 다른 진행과 결과가 나오고, 정답이 없고, 정답이 있을지언정 다른 도전할 수 있는 과제는 너무나 많다.

무명 3부리그에서 시작해서 프리미어팀으로 만든다던지, 변방의 팀을 이끌어서 우승시킨다던지, ...

공이 둥글기 때문에 예측할 수 없고, 축구선수의 스탯에 정말 많은 변수가 있고, 그 변수들이 어우러져 한 경기 한경기를 치르게 되는 것이다.

내가 시뮬레이션 베이스 게임을 좋아하고 동경하는 이유이다.

이 게임은 축구를 잘 모르던 사람이 축구를 좋아하게 만들거나, 축구 선수들에 대해서 더 잘 이해하게 된다거나 하면서 교육효과도 있고, 축구팬을 찐팬으로 만드는 역할까지 한다.

FM24 Mobile 을 하면서, 다시금 그 재미를 느꼈는데, 게임 개발을 하는 입장에서 다시 생각해 보게 된다.

이런 게임을 정말 만들고 싶기 때문이다.

그 핵심 재미를 축구가 아닌 다른 분야에서 구현하거나, 복잡한 시뮬레이션을 구현하지 않고도 그 재미를 구현할 수 있는지에 대해서 연구해 볼 분야이다.

아마도, 많은 사람들이 고민해 봤을 것이고, 이미 답이 있을지도 모르겠다.

여기서 논문을 쓰는 것도 아니고, 그냥 개인적인 추측과 논리로 풀어보고, 가설로 결론을 낼 수 있어야 한다.


특징을 분석해 보자.


1. 게임의 목표는 간단한 편이다. 공을 골대 안에 더 많이 넣으면 이기는 것. 제한된 무대에서 룰에 의한 플레이가 이뤄진다. ( 이외의 디테일한 축구 룰들이 있지만 )

2. 공은 둥글다. 어디로 갈지 예측하기 어렵다. 그러나, 축구 선수의 제한적인 능력에 의해서 통제 된다.

3. 축구 선수는 많고 다양하다. 어떤 선수인지 수치화하긴 했지만, 어떤 선수가 어떤 포지션에서 잘 해낼지 알기 어렵다. 그러나, 축구 감독의 제한적인 통찰과 지휘를 통해서 통제된다.

4. 축구는 사람들이 좋아하는 소재이다.

5. 축구 감독을 경험할 수 있는 기회는 현실에 거의 없다.

6. 축구 감독으로 해보고 싶던 재미난 일을 할 수 있다. 선수 트레이드 해오기, 포지션 선정, 포메이션 선정, .... 

7. 구현된 룰을 알아내기 매우 어렵지만, 액션이 부정적 또는 긍정적인 영향인지 게임의 결과를 바로 알 수 있고, 그런 누적을 통해 학습하게 되고, 자신만의 게임 플레이 스타일을 만들어가면서 이기는 방법을 연구한다.

8. 알수 없는 액션들을 했을지도 모르겠지만, 작은 노력들이 모여 승리를 성취할 경우에 감격적이다. 나름 이것이 정답이야라는 판단들이 모이면 그 성취감은 정말 대단하다.

9. 스탯이 좋으면 이긴다. 하지만, 스탯이 어느 정도 차이이하에서도 이길 수 있는 방법이 존재한다. 


지난번  Gen AI 를 이용한 시뮬레이션 게임 글을 통해 시뮬레이션 위에 AI First 게임을 만들면 가능성이 있다고 하였는데, 풋볼 매니져는 이미 시뮬레이션 자체가 AI 보다 더 정밀하게 구현되어 있다. 

AI 를 이용한다면, 보조하는 코치가 좀 더 똑똑하게 보좌해주는 역할을 한다면, 게임이 더 플레이할 만해질 것 같다. 또는, 축구 선수와의 심리 상담을 통해 사기 진작을 하는 플레이가 있다면, 다른 게임이 될 수도 있겠다.

감독이라는 역할 자체가 결정과 리더쉽의 게임이기 때문에 말로 하는 게임에 적합할테니까...

하지만, 이미 지금도 충분히 재미있다. AI 로 이 게임을 다른 게임으로 더 재밌게 할 방법이 있을까?

풋볼매니져를 후순위로 미룰만큼의 재미를 기획하고 구현할 수 있을까?

본질적으로 매니징 게임이라는 큰 틀을 벗어나기 힘들기 때문에, 그 핵심 재미를 더 잘 구현하기 어려울 것이다.

결국 축구가 아닌 다른 소재를 찾을 수 밖에 없다.

축구가 아닌 농구나 미식 축구나 야구나 다른 구기 종목 게임을 구현할 수는 있겠다.

실제로 그런 아이디어로 만든 게임들이 꽤 있는 것으로 안다.

그런데, 그 게임이 풋볼 매니져보다 인기는 없는 것으로 안다.

단지 축구보다 인기가 덜 한 종류의 스포츠 게임이기 때문에? 그렇다고 말할 수 있는 것인가?

구현을 더 잘 했더라면 결과가 다르지 않았을까? 더 재미를 잘 구현 못 한 것 아닌가?

대중적인 장르가 아닌 나름 매니아 장르의 게임이기 때문에 함정에 빠지지 말아야 한다.


과제 : 핵심 플레이를 지키는 다른 소재는? 핵심 플레이를 미니멀하게 변형한다면?


위의 특징들에서 키워드만 추출한다면,

단순한 목표의 게임 + 복잡계의 시뮬레이션 + 리더쉽 역할 재미

이 키워드가 맞을까?


맞다면, 거기에 맞는 다른 소재가 있다면?

경영 시뮬레이션 게임?

시뮬레이션 게임이 매니악한 장르인데, 경영은 더 매니악한 소재이라서 쉽지 않다.

애플,구글이라는 회사를 많은 사람들이 아니까, 그런 회사의 경영 시뮬레이션이라면?

스타트업 회사 경영 게임을 기획한다면? 직장인은 스타트업이나 창업을 꿈꾸지만, 차마 그 어려움을 모르기 때문에, 해보고 싶은 역할이 아닐까?

스타트업이라는 게임이 잘 모르는 사람들에게는 어려운 게임이지만, 혹시 알기만 하면 너무 뻔한 게임은 아닐까? 축구는 알아도 이기기 어렵다! 

스타트업 분야도 많은데, 사람들이 해 보고 싶은 쪽은 어디일까? 

그런 소재내에서 핵심 게임 플레이가 그것(풋볼매니져)의 재미에 견줄 만한 것이 있을까?


아직은 더 생각해 봐야겠다.

결론이 나면 여기에 다시 업데이트 하겠다.

























2023년 11월 28일 화요일

LllamaPack

 

llama index


https://x.com/llama_index/status/1729303619760259463?s=20


⭐️ Hybrid Fusion (vector + keyword search + reranking)

⭐️ Query Rewriting + Fusion

⭐️ Retrieval with embedded tables (using @UnstructuredIO)

⭐️ Auto-merging Retriever

⭐️ Sentence Window Retriever (retrieve on sentences, expand into chunks)

⭐️ Node Reference Retriever (retrieve on smaller chunks, expand into parent chunks)

⭐️ Multi-Document Agents (handles advanced queries)

LllmaPacks

https://github.com/run-llama/llama-hub/tree/main/llama_hub/llama_packs


평가:


RAG 를 쓰다보면, Retrieval 을 어떻게 하는지 궁금해진다. 필요한 문서를 넣었는데, 질문에 맞게 가져오질 못하는 경우가 꽤 있기 때문이다. 

결국, DB 에서 Query Optimization 하는 식으로, 어떤 질문이냐에 따라서, 문서를 넣고 인덱싱하고 가져오는 방식도 달라져야 하는 것이다.

그림으로 각 케이스가 어떻게 달라지는지 직관적으로 와 닿지는 않는다.

질문을 했을 경우 어떻게 질문이 해석되고, 어떤 과정을 통해 조회되는지, 어떻게 응답이 합쳐지는 지를 아는 것은 매우 중요하다.

나의 도메인에서 자주 쓰는 질문에 대입해 보고, 맞는지를 미리 확인해 볼 수 있을 것이다.

7가지 경우의 패턴에 따라서 트라이 해보고, 좋은 결과를 얻을 수 있는지 테스트 해보면 될 것이다.

각 케이스에 최적화된 유스케이스가 궁금해진다.





Gradient AI


오늘부터 AI 관련 뉴스를 읽으며 주목할 만한 기사 또는 좋은 내용의 기사를 한국어로 소개하는 글들을 써보고자 한다.
읽어야 할 글들이 너무 많은데, 그 중에서 하루에 한가지 정도만 알고 가면 좋을 것이다.
좋은 내용도 너무 많지만, 강조해서 알아야할 몇가지 개념들만 숙지하면 좋을 것이다.


Jerry Liu


llama index의 CEO 이신 Jerry Liu 님이 좋은 글들을 많이 포스팅 해주신다. 

https://x.com/jerryjliu0/status/1729204727072903360

Gradient AI 에서 블로그를 하나 썼는데, RAG 중심으로 개념적으로 잘 정리해서 설명해주었다.


RAG


💡 Open vs. closed-source LLMs ( 오픈 소스 LLM 과 클로즈드 소스 LLM )

💡 Prompt engineering vs. fine-tuning vs. RAG ( 프롬프트 엔지니어링, 파인 튜닝, RAG )

💡 Optimizing RAG: chunking, embeddings, reranking, and more. ( RAG 최적화, 청킹, 임베딩, 리랭킹, ... )


LLM 이 모든 일에 최적화 되어 있지 않기 때문에, 특정 작업을 위하여 최적화 작업이 필연적으로 필요할 수 밖에 없다.

프롬프트 엔지니어링, 파인 튜닝, RAG 사용 세가지의 방법이 있다.


RAG란 LLM의 내부 정보 표현을 보완하기 위해 외부 지식 소스에 모델을 기반으로 LLM 생성 응답의 품질을 향상시키는 데 사용되는 AI 프레임워크이다.

RAG 를 통해 고객 지원 챗봇, 향상된 검색, 컨텐츠 검색, 재무 분석, 개인화 추천등을 만들 수 있다.

기업 입장에서는 모르는 내용에 대한 환각(Hallucination)을 최소화할 수 있고, 변하는 데이터에 대한 적응, 최신 정보 적용으로 환각을 줄이고, 개인 정보를 바탕으로 적합한 응답을 할 수 있게 된다.


Gradient AI Cloud


프롬프트 엔지니이링 최적화, 즉 프롬프트를 사용하면 모델을 제공하는 입력을 디자인하고 개선하고 보고 싶은 출력 종류에 영향을 줄 수 있다. 처음에 시도하는 최적화 시도이다.

그러나, 곧 한계에 곧 부딪히는데, RAG 를 써야 할지, Fine Tuning 을 해야할지 혼동할 수 있다!

그런데, 도메인 전문 LLM 과 도메인 지식 RAG 을 함께 써야 안정성과 성능이 향상된다고 주장한다.

( 그래도 그 둘을 언제 해야 하는지에 대한 조언이 있었으면 더 좋은 글이 되었을 것 같다.)

그리고, 그 일들이 전문적으로 꽤 많다고 주장한다.

그러면서, gradient AI cloud platform에 대한 설명이 쭈욱~ ㅎㅎ 



LLM 은 llama2 , bloom 560은 기반으로 한다는 것이 인상적이다.

bloom 560은 왜 쓰는 것일까? https://huggingface.co/bigscience/bloom-560m 

Embedding 방식도 Nightingale, Albatross 등을 쓴다는 것.

llama index 와 통합이 되었다는 것으로 마무리.

자세한 내용은 여기에 Gradient Blog: RAG 101 for Enterprise


개인적인 평가


Gradient AI 의 말대로라면 특정 문제를 해결하기 위한 RAG, Fine Tuning 이 된 AI Application 을 만들기 쉬워지고 비용도 좋을 것이다.

https://docs.gradient.ai/docs/quickstart

을 방문하여 현재 구현된 상태를 가늠해 볼 수 있는데, 아직 초기 상태로 보인다.

하지만, 앞으로 개선이 기대된다!

이와 같은 RAG , LLM Finetuning 솔루션을 구축하려는 업체가 벤치마킹할 수 있을 것 같다.

이걸로 사업에 도전할 수 있다니 신기할 뿐이다.

단지 AI Application 백엔드를 좀 쉽게 구축해주는 일인데... 아마도, 큰 기업에서 더 잘 최적화한 툴들을 제공할텐데...

langchain , llama index 개발자를 위한 사용 인터페이스도 제공하니, 개발자들은 써볼 수 있을 것 같다.










2023년 11월 24일 금요일

아버지에 대한 기억 - 5


아버지에 대한 기억을 쓰기 시작한 이유는 돌아가시고 문득 문득 생각나는 그 분을 추모하기 위함이다. 외롭고 쓸쓸할 때마다 나타나시는 것 보면 신기하기만 하다. 아버지에 대한 그리움이지 아버지를 우상화하는 것은 절대 아니다. 아버지를 떠나 보내는 마음이다.


초등학교 6학년 FC-100 ,애플 II 와 첫 만남


내가 초등학교 6학년때였다.

서울에서 학교를 다녔었다.

당시 개인용 컴퓨터 보급 사업이 있었나보다.

1984~1985년도 시절이었으니 집에 브라운관 컬러티비가 있던 시기였지만, 개인용 컴퓨터가 집에 있던 시기는 아니었다.

초등학교 CA(특별활동)으로 컴퓨터 반이 생겼다.

간단한 영어 알파벳 시험을 보고 입반 시험에 합격하여 그 신기한 컴퓨터를 손으로 만져보게되었다.

FC 100 이라는 컴퓨터였다. 금성사에서 나온 8비트 컴퓨터였다. 



너무나 신기했었다.

그런데, 아버지가 전주에 직장을 얻으신지 꽤 되었는데, 기러기 아빠처럼 지방에 홀로 지내셨었다. 결국 우리 가족은 전주로 이사갔다.

덕분에 나는 신기해하던 컴퓨터를 접할 기회를 잃어버렸다.

부모님에게 투덜거렸다.

서울에서는 컴퓨터반에서 컴퓨터도 배웠는데, 배울 수 없게 되었다면서 ㅎㅎ

아버지는 전주에 있는 컴퓨터 학원을 끊어주셨다. 전주컴퓨터학원.


아마도 내가 되게 불만을 토로했었나보다.

그 컴퓨터 학원에서 BASIC을 3개월 정도 배웠다. 

FOR 문과 PRINT 문으로 별표(*)를 찍으면서 삼각형도 그리고, 여러가지 신기한 것들을 그렸다.

화면에 나온 것을 프린터로 뽑아 보기도 했다.

컴퓨터 학원 한켠에는 ASCII 문자로 찍은 모나리자가 매우 자랑스럽게 붙어있었다.

너무 신기했었다. 문자로 찍은 그림이 정말 모나리자처럼 보였으니 말이다.



그리고 신기한 게임들도 했었다. 

MSX 컴퓨터에는 게임이 엄청 많았는데, 애플 컴퓨터에는 많지는 않았지만, 그래도 재밌는 게임들이 많았다.

기억나는 게임으로는 '로드러너', '엑스리온' 같은 게임이 생각난다.



정말 컴퓨터 배우는 재미에 푹 빠져지냈던 것 같다.

3개월 정도 배운 가을 쯤에 전라북도에서 열리는 1회 컴퓨터 경진대회가 열렸는데, 학원에서 나가보라고 해서, 같이 배우던 친구들과 참가했었는데, 무려 대상을 타버렸다.

대상 상품은 기억나기로 그냥 앨범이었고, 전라북도 도지사님에게 직접 표창을 받았던 기억이 난다.

그 길로 더 컴퓨터에 빠져버렸다.

애플 호환기종 컴퓨터를 배웠었는데, 나중에는 6502 어셈블리어도 배우고, 학원에 있는 다른 코스도 배웠었다. 



베이직을 다 배워 더 배울게 없어지자, 포트란(FORTRAN), 코볼(COBOL)도 배웠었는데, 또 다른 세상이 열렸었다.

당시 컴퓨터 학원에 대형(?) 컴퓨터가 있었는데, 이름이 MV-4000(?) 이었다. 항온항습실에 모셔져 있었고, 엄청난 덩치를 자랑하던 컴퓨터였다.

엄청 큰 테이프가 돌았고, 라인 프린터로 한 번에 한 줄씩 찍어버리는 엄청 멋진 기능을 갖고 있었다.

포트란,코볼을 배울 때 코딩 내용을 적어 제출하면, 펀치카드로 변환하여 입력한 코드가 실행되어, 결과를 다음 날에 받을 수 있었다.

당시 키펀쳐라는 직종도 있었던 기억이 난다. 즉, 코딩 내용을 펀치 카드에 실수 없게 입력하는 것이 직업인 직종이었다.




애플II 오너

1년후 쯤에 아버지가 거금을 들여 애플 II 컴퓨터를 사주셨다. 당시 학원에서 컴퓨터도 팔았었다. 배우던 컴퓨터와 똑같은 기종이었다. 당시 애플 클론, 애플 호환기종들이 많았었는데, 애플 II 컴퓨터랑 성능이 더 좋았던 기억이 있다. 오리지널 애플 II는 가격이 비쌌는데, 오리지널의 멋짐은 있었던 것 같다. ㅋ 

당시 40만원주고 샀던 것 같다. 1986년도? 물가로 계산하면 얼마 정도 일까? 짜장면이 500원 정도 했었던 것 같은데.  짜장면 800 그릇? 800만원으로 봐야 할까? ㅎㅎ

아버지가 엄청 무리하셨던 것 같다. ㅎ

자식이 빠져들었던 그것을 위해서 아낌없이 돈을 쓰신 그 분에 대한 DNA 가 나에게도 남아있다.

가족에게 돈 걱정 안하게 하고 싶고, 후배들에게는 정말 잘 해주려고 하고, 조언해주고 싶고, 투자하고 싶고 그렇다.


네이티브 컴퓨터 프로그래머?


컴퓨터가 생기자 더 빠져들었다. 

그렇게 내가 네이티브 컴퓨터 프로그래머 키즈 1세대 정도 되었다고 봐야 할까? 

이후 중학교 때,고등학교 때도 컴퓨터 경진대회에 나갔지만 전국 규모에서는 큰 성과를 내지는 못했다. 공부가 나름 재밌어져서 컴퓨터 프로그래밍은 약간 멀어졌었던 것 같다.

당시 영문법책을 그대로 베껴 영문법 학습 프로그램을 만들기도 했었는데, 출시를 못했다. 

기억나는게, 첫 화면에 로고를 뿌리는데, 멋지게 영문법책 이름과 내 싸인을 출력한다.

당시 고해상도 그래픽 모드가 가로 480 정도 크기였던 것 같은데, 모눈 종이에 그림을 그리고, 벡터처럼 라인의 좌표를 하나씩 따서, 그걸 베이직 코드로 일일이 코딩해서 그렸던 기억이 난다. 라인을 그리는 속도가 빠르지 않아서, 마치 애니메이션 되듯이 로고를 그려졌었는데, 의외의 효과가 나서 나쁘지 않았다. 

한글 폰트가 예쁘지 않아서, 폰트 에디터를 어디서 구해와서, 문장에서 쓰이는 글자들을 코드화해서 일일이 찍어서 화면을 구성했었던 것 같다. 지금 생각하면 완성형 코드같은 개념? ㅎㅎ

마이크로소프트웨어라는 잡지에서 신기한 컴퓨터 소프트웨어들도 접했었다.

고등학교때는 터보씨를 배워서 C언어로 하는 것으로 경진대회에 나갔었던 기억이 난다.

임인건님의 터보씨 정복이라는 엄청 두꺼운 책을 봤던 기억이 난다.

나중에 기억나는데 당시 권모 선배가 대상을 탔는데, 나중에 대학 선배가 되어 계셨다. 그 분은 모르시겠지. 


아버지가 많은 배려를 해 주셨다는 것은 틀림이 없다.

제대로 갚지도 못했는데, 송구한 마음 뿐이다.

아직도 내가 더 잘 살길 바라시겠지.

 


아버지에 대한 기억 - 4 

아버지에 대한 기억 - 3 

아버지에 대한 기억 - 2 

아버지에 대한 기억 - 1