본문 바로가기
하지만 졌다는 게 너무 화가 난다! '나는 나다' '자신을 잃어서는 안 된다! 내 바둑이 나를 떠받치고 있다!!' "초조, 안달, 불안, 허세, 긴장, 압박감.... 항상 따라 다니는 감정에 휘둘리면 안 돼. 너한테는 가장 중요한 거다. 돌만 바라봐라. 그건 자각과 훈련으로 가능한 거야. 천성적으로 가지고 있는 성격과는 관계없어. 습득할 수 있는 기술이다." "습득할 수 있는... 기술?!" "아니예요. 변했습니다. 그런 압박감을 받고 있는 제 자신이 제3차처럼 느껴집니다. 그런 또다른 내 자신을 마음 속에 만들면 차분해지거든요." '졌다고 해도 그건 바뀌는 게 아니다' "그러기 위해 내가 있다!" '하지만 졌다는 게 너무 화가 난다!' 홋타 유미/오바타 타케시, 고스트 바둑왕 2021. 12. 26.
오 카자흐스탄 보랏이란 영화를 보다가 카자흐스탄의 가짜 국가가 나왔다. 번역되지 않았지만 내 어설픈 영어 실력으로 들어도 가사가 너무 깨서 웃겼다. 어설픈 실력으로 번역해봤다. 리듬은 꽤 흥겹고 가사도 괜찮은 듯... 물론 카자흐스탄 국민들은 분노했을 것이 틀림없을테지만... 우리나라도 풍자나 우스개에 대한 성역이 사라지는 걸 기대해본다. 허나 법 만능주의에 그런 건 점점 먼 길이 되는 것 같다. 카자흐스탄, 세계 최강대국 다른 나라들은 모두 소녀들 카자흐스탄, 포타슘 최다 수출국 다른 나라들은 저급 포타슘 카자흐스탄, 틴쉐인 풀장의 고향 길이는 30미터, 너비 6미터 여과 장치는 정말 굉장해 인간 고형 폐기물을 80%나 없애지 카자흐스탄, 카자흐스탄, 멋진 나라지 타라섹 평원에서 유대인 마을 북쪽 장벽까지 카자흐스탄.. 2021. 12. 26.
211124 어제는 딸에게 그간 만들었던 게임을 보여주며 자랑하는 시간을 가졌다. 내가 만들었던 게임을 잠시나마 재밌게 하는 모습을 보며 무언가 삶의 목표점을 찾은 느낌이었다. 내가 원한 건 이거 비슷했던 것 같다. 마음에 맞는 사람과 함께 무언가를 같이 해나가는 일... 그런 것이 사회에서 쉽지 않다는 건 잘 알고 있다. 하지만 가장 가까운 가족과 그런 것을 할 수 있다면... 하다못해 같이 그 즐거움을 나눌 수만 있다면... 어려운 일이지만 창작의 즐거움을 느끼는 일. 올해 내에 꼭 하나 쯤은 더 완성하고 싶다. 2021. 11. 24.
우리는 스트레스에 어떻게 대처해야 할까요? 사람은 자신의 삶에 대한 통제권을 지녀야 건강하게 살 수 있습니다. 요양원의 노인들을 대상으로 관찰 조사한 결과, 책임감을 가진 노인들은 그렇지 않은 노인보다 훨씬 오래 살았습니다. 스트레스 해소법이 그렇게 까다롭지만은 않다는 증거죠. 정보를 미리 알고만 있어도 스트레스를 훨씬 줄일 수 있습니다. 그래서 이렇게 확실하게 말할 수 있습니다. 나쁜 일이 생길 때마다 자신을 탓하며 영구적인 불행으로 여길수록 스트레스가 더 심해집니다. 어쩌다 일어난 일시적인 현상으로 생각하는 것보다요. 따라서는 우리는 긍정적인 방향으로 생각하도록 노력하는 것이 좋습니다. "적어도 호랑이한테 쫓기고 있는 건 아니잖아." 만화로 보는 지적이고 오싹한 현대심리학, 대니 오펜하이머 2021. 11. 16.
211115 올해도 많은 일이 있고 즐거운 일도 기쁜 일도 있었다. 목표했던 게임을 만들었고 기대했던 결과까지 얻어낸 것은 참으로 기쁜 일이었다. 내 자존감을 어느 정도 채워주는 일이었다. 반면 안 좋은 일도 있었다. 허나 그 모든 것이 나 자신의 반영이라는 걸 느끼고 조금은 담담해질 수 있었던 것 같다. 이른바 마음의 상처를 치유할 수 있다고 해야할까. 어찌되었든 내가 할 수 있는 일을 당장이라도 관둬야하는 것도 아니고, 어느 책 말대로 호랑이에 쫓기고 있는 것도 아니다. 이제는 몰입이라는 것을 배운 느낌이다. 아이들에 가사에 바쁘지만 그 와중에 미래를 준비하는 일. 결과에 상관없이 그것은 기쁜 일이다. 막연히 다가올 미래에 걱정을 몰아내는 방법으로 말이다. 드래곤볼을 다시 읽으면서 작가 또한 불안감에 시달리는 것.. 2021. 11. 15.
The Grid Search https://www.hackerrank.com/challenges/the-grid-search/problem 빠른 탐색을 위해 2차원 부분합을 사용했는데... 오히려 문제가 있었다. 예를 들면 다음이 같은 결과로 나와서 그랬다. sum([1,0,0]) == sum([0,0,1]) 결국 부분합은 빠른 인덱스 탐색을 위해서만 사용하고, 부분합이 서로 같은 곳을 발견하면 거기서는 문자열 매칭을 통해 일치 여부를 조사했다. 선배들의 사례를 보니 루프만 돌려도 충분한 것 같다... def gridSearch(G, P): grid_sum = [0] * len(G) for i in range(len(grid_sum)): grid_sum[i] = [0] * len(G[0]) for y, row in enumerate.. 2021. 10. 28.
Non-Divisible Subset https://www.hackerrank.com/challenges/non-divisible-subset/problem 이거 실패하고 선배들의 풀이를 봤는데도 이해가 안되어서 3일 끙끙되었는데 예제를 직접 풀어보며 관계를 파악해보니 금방 되었다.... 역시 내 두뇌와 손을 사용해야 한다... import collections def foo(nums, k): ''' 이것은 나머지의 관계를 파악하는 문제이다. 문제에서 k는 나누는수로 주어진다. nums의 숫자들은 k로 나누어 나머지가 같은 것끼리 집합을 만들 수 있다. 이들 중 두 집합을 p, q라고 하자. 집합을 구성한 나머지들은 어떤 관계를 갖고 있다. 각각의 집합을 만들게 한 나머지를 P, Q라 하자. 이들은 P + Q = k라는 관계를 가진다. 이것.. 2021. 10. 25.
211018 어제는 큰딸과 자전거를 타고 안양천을 누볐다. 앞서는 딸의 모습을 보면서 양쪽으로 코스모스 길이 쫙 펼쳐 있었다. 내가 최근에 고민하는 것들 - 그리고 의미없는 것들 - 내가 하는 일이 하찮고 더 나은 것을 할 수 없다는 불만에 대해 잠시나마 잊고 생각해보게 되었다. 사실 좀더 가치있는 일을 하게 된다 하더라도... 그것은 또 어떤 의미를 갖고 있을까? 지금보다 어줍찮은 존경을 받게 되고 보수를 좀 더 받는다고... 예정된 결말 - 고령으로 인한 퇴직을 피할 수 있을까. 결국 고용인의 입장을 벗어날 수 없다. 내가 필수인력이 되지 않는한 말이다. 그러나 그럴 수 없다는 것을 알고 있다. 그렇다면 돌파구는 무엇일까. 내가 피고용인이 되는 길인 것이다. 그런 의미에서 업무 강도가 약한 지금의 업무에 감사해야.. 2021. 10. 18.
211015 올해 만들었던 게임의 플랫폼은 MOD였다. 메이플스토리의 리소스를 기반으로 루아 스크립팅을 통해 게임을 구동시킨다. 이에 대한 공모전이 회사에서 열렸는데, 아쉽게도 사원은 참여 불가였다. 상금도 얼마 되지는 않지만 아쉬웠다. 이제부터 계획을 조금 세웠다. 일단 월, 화, 수는 영어, 코딩 공부를 하는 것이다. 화, 목은 게임을 만드는 것이다. 시간이 조금 부족해보이지만 어느 정도 해볼 생각이다. 아침에는 간단히 운동을 하고 점심에는 산책을 나간다... 어디 한번 조금 해보자 2021. 10. 15.
2110번: 공유기 설치 (acmicpc.net) 2110번: 공유기 설치 (acmicpc.net) 쉬운 문제로 생각했지만 문제 자체를 잘못 이해했다... 잘못 이해한 내용을 쓰는 건 불필요한 일일 것이다. 0,1개의 공유기는 조건에 없다. 2개의 공유기는 무조건 양극단에 배치된다. 그래야 문제의 조건대로 "가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다"를 만족할 수 있다. 3개의 공유기는 예제를 살펴보자. 3개의 공유기를 수평선 위치한 집에 설치한다고 하자. [1] [2] [4] [8] [9] 3개의 공유기 간의 거리가 비슷하게 배치하는 방법은 1,4,8일 것이다. 1,4,9는 일종의 함정이다... 따라서 답은 3이 된다. 이 문제에 실패한 이유는 다음과 같다. 첫째 해석의 실패, 둘째 이진 탐색으로 얻은 값을 맹신한 점이다... 2021. 9. 14.
하노이의 탑 11729번: 하노이 탑 이동 순서 (acmicpc.net) def hanoi(n, frm, to, aux) -> int: if n == 1: print(f'{frm} {to}') return 1 hanoi(n - 1, frm, aux, to) print(f'{frm} {to}') hanoi(n - 1, aux, to, frm) K = int(input()) # K = 20 print(2 ** K - 1) hanoi(K, 1, 3, 2) 재귀는 큰 문제를 분할해서 처리하는 특성 상 작은 문제를 해결하면 큰 문제도 해결된다. 수학적 귀납법처럼 k = 1, 2인 경우만 해결하면 자동으로 처리가 된다. 그를 위해서는 움직이는 방법을 재연할 수 있어야 한다. 일단 k = 1인 경우를 보자. 간단히 from ->.. 2021. 8. 4.
터렛 1002번: 터렛 (acmicpc.net) 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 두 원의 교점이 2개인 경우를 구하는 것만 따져보자. 삼각형 세 변의 길이를 알면 제 2 코사인 법칙으로 모서리의 코사인 값을 얻을 수 있다. 코사인 역함수로 라디안 값을 얻으면 이걸로 삼각함수를 실행해서 다른 변의 길이를 구하여 교점을 얻을 수 있다. 한편 두 원의 중심을 잇는 직선의 각도 탄젠트 역함수로 얻어낼 수 있다. 이를 기준으로 라디안 값을 더하거나 빼서 두 개의 각을 얻는다. 이것이 두 원의 교점이 된다. import math T = int(input()) f.. 2021. 8. 3.
연역 가이드 템플릿 클래스의 인자 연역은 가끔 퍼즐을 푸는 것 같은 느낌을 받을 때가 있다. 처음 본격적으로 템플릿 클래스를 작성했을 때 lvalue 참조가 넘어가는 것을 모르고 며칠을 낑낑댄 적이 있었다. 그래서 타입의 한정자를 제거하기 위해 std::decay_t를 즐겨 사용했다. 그래도 잘 안될 때면 또 다른 템플릿 클래스를 만들어 몸체가 되는 클래스로 유도했다. 허나 이제 연역 가이드의 힘을 빌리면 그런 것을 아주 쉽게 해결할 수 있다. template struct List { template List( ITER&& begin, ITER&& end ) : _list{ begin, end } {} List( std::initializer_list&& v ) : _list{ v } {} private: std::.. 2021. 5. 22.
유치원생의 꿈 첫 아이가 유치원에서 있었던 일. 그날 자신의 꿈을 종이에 그려 발표하는 날이었나 보다. 그런데 한 친구 왈 "서울 대학교 가는 것이 꿈이에요" 했다고... 어디서 무얼 들으면 이런 꿈이 나오는지 몹시 궁금하다. 2021. 5. 20.
자기 인생은 자기가 책임지는 거예요 웩! 또 노숙자야... 역겨워... 쳐다보지 말자... 예의 없는 짓이니까... 하지만 무슨 짓을 할지 모르니 눈을 떼면 안 돼... 그런데 가슴의 이 낯선 감각은 뭐지?? 심장발작인가?? 아아악- 그보다 더 심한... 심한... 동정심이잖아... @#*$?? 내가 왜 이런 기분을 느껴야 하지? 제기랄! 내가 뭘 할 수 있을까?... 그래, 난 알아... 그녀에게 말을 걸어야겠어... 아줌마! 자기 인생은 자기가 책임지는 거예요! 2021. 5. 19.
210519 영어 공부를 할 예정. 회화 수업이 있는 날은 능히 이게 맞을 듯. 어제는 또다른 퇴사자와 만났다. 나는 여기서 뭘 하고 있는 것일까. 나도 포기하지 말고 꾸준히 시도해봐야겠다. 2021. 5. 19.
GPUView를 위한 log.cmd가 실행되지 않을 때 일단 관리자 모드로 콘솔을 실행시킨다. 그리고 log.cmd를 실행시키면 이런 오류가 생길 수 있다. C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\gpuview>log.cmd 4000은(는) 예상되지 않았습니다 배치 스크립트 내부를 보면 오류 원인은 다음에 있다. findstr /sipn /C:"Total Physical Memory" me.txt > me2.txt 더 보면 systeminfo.exe를 실행시켜 메모리 정보를 얻는데 로케일이 한국으로 되어 있을 경우 해당 문자열이 없다. 따라서 오류가 발생한다. 따라서 코드 페이지를 바꿔주고 log.cmd를 실행하면 해결이 된다. chcp 437 2021. 5. 13.
삼성 라이징 한 거대 기업이 빛을 한국에 드리운다. 세계에서 거대 다국적 기업과 견줄 수 있는 몇 안되는 기업이기에 국민들의 사랑은 대단하다. 한편 업적 만큼 과오도 있다. 나는 실패를 더 중요하게 생각한다. 인생이 어찌 도착지에만 뜻이 있겠는가. 그것은 내게 가르침이 되고 작은 이정표가 되어준다. 기업의 실패 또한 내게 중요한데 그건 실패가 기업의 장래에 어떠한 영향을 미칠지 생각해볼 수도 있기 때문이다. 그것은 결국 주가에 영향을 미치고 반등 혹은 하락을 결정한다. 유감스럽게도 언론을 통해서는 삼성을 두둔하는 기사만 보일 뿐이다. 최근에는 상속세 문제가 이슈가 되어서 그런지 그들이 얼마나 국익에 이바지하고, 그러므로 쓸데없는 상속세가 그들에게 피해를 입힌다고 강변하는 기사도 쉽게 볼 수 있다. 그러나 어떻게 상속.. 2021. 4. 29.
티스토리의 문제점 사이버펑크 2077 게시물이 관리자 삭제가 되었다. 조회수 0인데 신고에 의해 삭제되었다고 한다. 어떤 사유로 삭제되었는지 문의하는 메일을 보냈지만 판박이 같은 자동 응답이 왔다. 찾아보니 다른 이들도 알 수 없는 혹은 모호한 이유로 삭제되고 오히려 블로그 폐쇄를 경고하는 답을 받았다고 한다. 나 또한 마찬가지였다. 내 추측에 삭제 이유는 이렇다. 사이버펑크를 하면서 인상적인 스크린샷을 올렸는데, 그 중 하나는 투명 의상이었다. 아마 그것이 이미지 감지 로직에 걸린 것으로 추측된다. 삭제 이유가 그렇다면 이해할 수도 있다. 그러나 왜 지웠는지는 알려줘야하지 않는가? 길게 쓴 글이 아까워 다시 올렸고, 기껏 모은 스크린샷도 그래서 함께 다시 올렸지만 재검열의 두려움으로 주저하는 나를 보게 되었다. 결국 알.. 2021. 4. 24.
사이버펑크 2077 뜻한 바가 있어 한동안 게임을 하지 않겠다고 다짐했었다. 허나 영어 인터뷰에서 보였던 내 미숙함에 대한 충격으로 인해 도피처가 필요했다. 그래서 산 지 몇 달된 게임을 마침내 설치했다. 게임을 하기 위해 몇 주간 새벽에 일어나야 했다. 아이들과 있을 때는 게임을 하지 않는 것이 내 규칙이기에 그 시간 외에는 없었다. 주인공은 길거리 용병이다. 그의 출신을 고를 수 있지만 크게 중요한 것 같지는 않다. 재키라는 사람에게 받은 의뢰가 계기가 되어 그와 용병 활동을 하게 된다. 그러다 거대기업의 후계자가 가진 물건을 훔치라는 의뢰를 받는다. 그 물건은 바이오칩으로 특별한 용기에 보관되거나 사람의 슬롯에 꽂아야 한다. 이 시대는 인체 개조에 대한 거부감이 전혀 없어 팔목에 연결선이 있고 머리 부근에 메모리를 넣.. 2021. 4. 20.
Game Server Performance on Tom Clancy's The Division 2 https://www.youtube.com/watch?v=bcXxyKqgV0c 주제: 서버에서 대규모 사용자 유지하기 코드 아키텍처 퍼포먼스 문제 디버깅, 모니터링위한 툴 프로세스 케이스 스터디 소개 3차원 클라이언트, 서버, 권한 서버 1000명 이상 수용, 20000 NPC 20fps이며, PVP만 30fps로 처리 플레이어가 존에 도달할 때만 로딩 처리 다크존: 플레이어가 집결할 것으로 예상되는 지점 서버 역할 월드 업데이트: AI, 플레이어, 미션, 스킬 싱글 스레드 천개 이상의 월드가 존재 병렬화 작업 짧은 작업: 높은 순위, 월드 업데이트 긴 작업: 저장, 백그라운드 데이터 업데이트 월드는 플레이어가 있을 때만 존재 최대한 병렬화 처리 40 코어 36: 짧은 작업 위해 할당 2: 긴 작업 위해.. 2021. 4. 20.
자연은 최고의 디자이너 바나나는 여러분의 주머니에 쏙 들어갑니다. 바나나는 고유한 위생 포장을 갖추고 있습니다. 또 바나나는 생물분해성을 지니고 있습니다. 그리고 그 색깔은 과일이 익은 시기를 나타냅니다. 이건 직관적입니다. 저는 여러분이 이렇게 먹지 않는다는 걸 알고 있습니다!" 그가 바나나를 옥수수처럼 먹는 시늉을 하면서 농담을 던졌다. "이 껍질은 알맹이를 보호합니다. 그건 위생의 기능입니다." 그는 껍질을 벗기고 한 입 베어 물었다. "칼륨이 들어 있죠! 아주 맛있죠! 쉽게 생산하죠! 바나는 세계 최대의 시장을 지니고 있습니다. 모두가 바나나를 사랑합니다! 이제 여러분이 이와 똑같은 원칙들을 사용하는 제품을 디자인할 수 있다고 상상하십시오." 삼성 라이징, 11장 디자인 탐구, 166쪽 2021. 4. 19.
인구가 줄어들면 경제가 망할까 답은 아니다. 그걸 증명하기 위해 저자는 많은 사실을 언급한다. 요약하자면 국가 경제는 인구 성장으로 뒷받침되지 않았다는 점이다. 그걸로 설명하기에 현대 경제는 과거에 비해 너무나 거대하다는 사실을 밝힌다. 그렇다면 어떻게 가능했을까? 바로 기술로 인한 생산성 향상과 새로운 소비처 창출로 가능했다. 전자는 자동화, 소형화, 모듈화, 신소재 등으로 실현했고 후자는 아이폰, 전기차, 패스트패션 등 신제품으로 가능했다. 아이를 낳아 성장하려 했다면 맬서스의 저주가 실현되었을 것이다. 한편 저자는 새로운 화두도 던진다. 경제 성장의 의미에 대해 던지는 질문은 사뭇 의미심장하다. 끝없이 성장하고 끝없이 재화를 추구하는 삶은 어떤 의미를 가지고 있을까. 물질주의의 끝은 허무주의와 맞닿아 있다. 어쩐지 책의 주제와 .. 2021. 4. 19.
소울 내 마음은 계산을 잘 할 줄 모른다. 나는 의견을 세련된 표현으로 하지 못한다. 그것은 직설적인 표현이 입에서 바로 나간다는 걸 의미하고 어떤 이들과 충돌한다는 의미가 된다. 많은 사람들과 충돌했는데, 팀장도 있고 사장도 있고 동료도 있었다. 20대 후반에 나비야라고 이제는 없어진 회사에 다닌 적이 있었다. 그곳에서 나는 신작 게임의 기획을 맡아 꽤 의욕적으로 일했다. 나는 게임의 모든 부분을 맡았다. 그리고 일종의 배수진을 치고 있었다. 여기서 할 때까지 최선을 다해보고 안되면 프로그래머가 되기 위한 공부를 하기로 말이다. 이것은 아트에서 기획으로 전직한 것보다 더 난폭한 시도였다. 당시 나는 할 수 있겠지 생각만 할 뿐 어떻게 시작해야할지도 모르는 상태였다. 나는 게임이 여성향인 만큼 기획 만큼은 여.. 2021. 4. 17.
버핏 워렌 버핏의 일대기를 그린 책. 스노볼이 버핏의 적극적인 협조 하에 쓰인 자서전이라면 이쪽은 순수하게 작가의 취재로만 완성되었다. 버핏은 도와주지도 않고 방해하지도 않겠다는 말을 작가에게 했다고 한다. 주인공이 같아서 그런지 두 책에서 묘사하는 삶의 궤적은 대충 비슷하다. 기가 질리게 만드는 책 두께도 그러하다. 이 책의 미덕은 그의 삶을 비판적으로도 조명하고 있는 점이다. 스노볼과는 다르게 그의 우상화된 모습을 벗기려는 시도가 보인다. 정확한 숫자를 말하며 비상한 기억력이 있어 보이는 매체에서의 모습과 달리 자신에게 유리하게 기억하고 다른 이의 공적을 가로챈다. 막대한 기부로 빚어진 박애주의자와 같은 모습과 달리 노동자의 기여를 절대 인정하지 않는다. 오직 경영자 만이 그의 총애를 받는다. 낡은 버크셔.. 2021. 4. 12.
오늘의 실수: std::string std::vector values; auto t0 = values.emplace_back( "I would love to do but I have no money. Would you get something to drink?" ).c_str(); auto t1 = values.emplace_back( "A" ).c_str(); // 아래가 실행되면 t1의 포인터가 깨진다 auto t2 = values.emplace_back( "B" ).c_str(); C17부터 method chaining 기법이 도입되어 좀더 편리한 코딩이 가능해졌다. emplace_back()에 삽입하고 즉시 사용할 수 있게 되어 타이핑을 줄일 수 있다. 어쨌거나 values에 std::string 인스턴스를 담고 그것의 문자열 포인.. 2021. 3. 31.
오늘의 실수: auto 데이터 리로드 때 메모리 누수가 있었다. 한참을 찾았음에도 원인을 발견하지 못했다. 그러다가 shared_ptr이 해제되지 않음을 찾았다. 그것의 참조 카운트를 조회해가며 찾다가 마침내 원인을 찾을 수 있었다. 너무나 간단한 문제였는데 그냥 new로 할당된 메모리를 해제하지 않았기 때문이었다. 라이브러리를 통한 할당을 스마트하게 관리하고 싶다. 어쨌든 이걸 찾지 못한 이유는 코드 읽기 만을 했기 때문이었다. auto로 받다 보니 그것의 타입을 놓쳐 버렸다. 주의 주의... 생각해서 코딩을 하자. 그리고 너무 편하면 생각을 안하게 한다... 그렇다고 복잡성이 증가하는 요즈음 구식 방식으로만 개발할 수도 없지만 어쨌든 이런 함정도 주의해야 한다. 2021. 3. 30.