Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

최근 글

전체 글 목록

엑셀 수식 복잡도 통제

어느 날 타임라인을 보다가 무서운 글을 봤습니다. 정확히는 글이 무섭다기보다는 그림이 무서웠는데 웃기긴 하지만 또 한편으로는 마냥 웃을 수는 없었는데 이 그림은 단순한 형식에 근거해 약간 과장된 모양이고 실제 일하는 데는 이보다 복잡도는 더 높고 길이는 비슷하거나 약간 짧은 수식이 종종 사용되기 때문입니다.

프로그래머가 아니어서 프로그래머들이 코드를 작성할 때와 비슷한 느낌일지 잘 모르겠지만 엑셀 수식은 분명 만들 때는 수식의 구성을 잘 이해하고 제한을 잘 파악하고 수식의 동작을 잘 설명할 수 있지만 시간이 조금만 지나면 이 수식은 그저 의미 없는 셀과 사칙연산자와 함수와 괄호의 의미 없는 나열에 불과해집니다. 수식은 분명 강력한 도구이기는 하지만 복잡도 관리에 실패하면 유지보수가 불가능해지고 심지어는 결과의 의미를 파악하지 못하거나 결과가 올바른지 확인할 수 없게 될 수도 있기 때문에 복잡도를 잘 관리해야 합니다. 오늘은 이 이야기를 해보겠습니다. [계속]

이마트 앱은 꽤 괜찮을지도 몰라요

지난번 혹시 이 앱 게임 아닐까?에서 이마트 24 앱이 혹시 게임일지도 모른다는 관점으로 이야기를 했습니다. 게임이 아니라면 아무런 문제도 없지만 만약 게임으로 정의한다면 게임 업계가 받고 있는 규제를 받아야 할 수도 있습니다. 가령 인게임에서 받은 보상을 오프라인에서 사용해서는 안되고 또 모바일 게임이 받는 자율심의의 규제를 해야 합니다. 한편 게임이 아니라면 경품 관련 규제로부터 자유로워지기 때문에 게임을 통해 얻은 보상을 오프라인에서 사용하는데 큰 문제는 없을 것 같습니다. 다만 그렇다면 이 앱처럼 생긴 게임이 같은 동작을 하더라도 규제를 받지 않아야 하지 않는지 의문이 생기기는 하지만 이건 법률 전문가가 아닌 사람이 이야기해 봐야 의미는 없습니다. [계속]

개인 작업에서 만들어진 바이너리 파일 버전관리 방법 소개

아무리 위키를 편하게 사용하고 있어도 컴퓨터를 사용하며 생산한 모든 정보를 위키 모양으로 저장할 수 있지는 않습니다. 표만 생각해도 위키로 만들 수 있는 표는 이전 시대에 비해서는 아주 조금 더 정교해졌지만 여전히 셀을 조금만 병합하면 편집할 수 없는 상태에 빠지기 쉽습니다. 또 작은 플로우차트 하나만 넣으려고 해도 위키만으로는 아무 것도 할 수 없습니다. 더군다나 현대에는 크로스플랫폼을 지원한다며 웹 기반으로 동작하는 앱이 많아 작업 결과를 문서 중간에 첨부하기 쉽지 않습니다. 가장 전통적인 접근은 그림으로 만들어 붙여 넣는 거지만 이러면 나중에 편집하기 어려워지고 또 노션이나 컨플루언스 같은 웹 기반 도구는 같은 웹 기반 앱의 작업 결과를 임베드 할 수 있기는 하지만 썩 안정적으로 동작하지 않기도 합니다. [계속]

스타일 기반의 문서작성

...

Info

kono.pub 마스토돈 서버

...

트위터를 사용해 오면서 뉴스에 트위터의 자금 문제가 보도되면 ‘트위터야 아프지마’라고 생각했지 트위터를 떠야겠다고 생각하지는 않았습니다. 트위터를 어떻게 사용하고 있는지, 또 얼마나 의존하고 있는지 생각해본 다음 여기에 한 달에 얼마까지 낼 수 있을지 생각해 보곤 했습니다. 하지만 재정적인 어려움이 잇달아 보고되는데도 불구하고 트위터는 딱히 최종 사용자들에게 돈을 받지는 않아 왔습니다. 한번은 억지로 돈을 낼 방법을 찾아본 적도 있었는데 광고가 아니면 딱히 돈을 낼 방법이 없었고 저는 광고할 만한 것이 없었습니다. 결국 돈을 낼 방법을 찾는데 실패합니다. [계속]

분리수거에 대한 잘못된 신호

몇 년 전에 터널 안에 들어가면 주의를 환기하기 위해 마치 사고가 난 것 같은 무서운 소리를 내기도 하는데 이런 행동이 중요한 신호를 평소에 소모 시켜 이 소리가 실제로 나는 상황이 올 때 충분히 주의를 환기 시키지 못할 지도 모른다는 이야기를 한 적이 있습니다. 사이렌 소리와 반짝이는 경광등, 호루라기 소리, 아래위로 움직이는 감속 신호 등은 분명 각각이 강한 주의 신호이기는 하지만 이들이 동시에 나타나는 상황을 터널에 진입할 때마다 마주하다 보면 실제 상황에서 이 신호들이 동시에 주어질 때 이 상황을 실제 상황으로 인식할지 아니면 평소와 똑같은 여느 터널 안이라고 생각할지 걱정스러웠습니다. 터널에 진입할 때 분명 주의를 환기해야 하는 것 까지는 맞지만 그 방법이 이런 식이어야 할지는 잘 모르겠음. 장기적으로 안전한 방법은 아니라고 생각합니다. [계속]

나는 왜 백업 소프트웨어 Arq 사용을 그만뒀나

지난 2011년 경부터 백업 소프트웨어로 Arq라는 백업 소프트웨어를 꽤 오랫동안 사용해 왔습니다. 맥에는 타임머신이라는 백업 기능이 있었지만 당연히 맥을 지원할 뿐이어서 사용하는 기계에 맥과 윈도우가 섞여 있는 입장에서는 맥 전용 백업을 유지할 생각을 하기 어려웠습니다. 또 타임머신은 지금은어떤지 모르겠지만 당시에는 직접 연결된 스토리지나 로컬 네트워크에 있는 스토리지를 직접 지원할 뿐이어서 외부에 있을 때는 백업 할 수 없었습니다. 그래서 여러 소프트웨어를 고민하다가 당시 AWS에 Glacier라는 비용이 굉장히 낮은 스토리지가 추가되었고 이를 사용할 수 있었던 Arq라는 백업 소프트웨어를 사용하기 시작했습니다. Arq는 당시에 여러 가지 요구사항을 꽤 단순한 방법으로 충족했습니다. 일단 로컬 스토리지 뿐 아니라 Glacier 같은 클라우드 스토리지를 지원했습니다. [계속]

공동현관 RFID 태그 복사 경험

오래된 아파트 공동 출입구에는 출입카드를 사용해야 열리는 문이 있습니다. 이사 올 때 관리사무소에서 출입카드를 받았는데 이걸 잊어버리면 미래에 이사 나갈 때 돈을 물어내야 한다는 안내를 받았습니다. 출입카드는 다른 신용카드와 비슷한 크기였는데 두께도 그리 두껍지 않아 휴대하기에 그리 나쁘지는 않았습니다. 하지만 시간이 흐르며 지갑에 카드와 현금을 가지고 다니기보다는 카드를 카드 지갑에 넣어 핸드폰 뒤에 붙여 다니게 됐습니다.

카드 지갑은 카드를 두 장 까지 넣을 수 있었지만 아주 얇게 만들어져 카드 두 장을 넣으면 좀 뚱뚱해 보였을 뿐 아니라 애플페이가 안 되는 이상 신용카드를 자주 꺼내야만 했는데 그럴 때 공동현관 출입카드도 같이 빠져나와 잃어버릴 수 있었습니다. 자칫 이사 가는 날 그렇잖아도 신나게 돈을 토해 내고 있을 마당에 이런 돈까지 토해내야 할 수 있었고요. [계속]

트위터 서드파티 서비스의 API 제한에 어느 정도 동의

2023년 초 트위터가 서드파티 앱의 API 접근을 차단합니다. 덕분에 오랜 시간에 걸쳐 유용하게 사용하던 트윗봇이 하루 아침에 못 쓰게 되어 황망했습니다. 한편으로는 트윗봇에서 지원하지 않는 기능이 필요할 때만 사용하던 트위터 앱을 이제 트위터를 사용해야 할 때마다 항상 사용해야 했는데 기초적인 가독성부터 시작해서 마음에 안 드는 부분이 한 둘이 아니었습니다.

현대의 트위터 앱은 지난 2008년에 처음 출시되어 ‘당겨서 새로고침’을 처음으로 소개한 트위티를 인수해서 개발한 것입니다. 지금은 너무 많은 곳에서 아무렇게나, 또 맥락 없이 사용하는 방법이지만 이 사용 방법이 처음 등장했을 때 타임라인을 당겼다 놓을 때 경험은 정말 대단했습니다. 또 당겼다 놓지 않고 계속해서 당기면 그 자리에 제작사 로고가 나타나는 동작들도 재미있었고요. 트위티는 당시 난립하던 트위터 앱 중 가장 진보한 앱이었지만 트위터에 인수되고 나서 세월이 흐르면서 그저 트위터의 리퍼런스 앱 정도의 역할을 하게 되었습니다. [계속]

아틀라시안 때문에 cloak.ist 드랍

cloak.ist’는 커스텀 도메인을 지원하지 않는 웹 서비스를 대상으로 커스텀 도메인으로 랩핑 해 주는 서비스입니다. 전에 CLOUD-6999에 대해 이야기하면서 커스텀 도메인의 필요성을 언급했는데 아틀라시안 제품 말고도 기업용 제품이면서도 커스텀 도메인을 지원하지 않는 서비스가 많아진 상황입니다. 그럼에도 여전히 커스텀 도메인을 필요로 하는 사람들이 있고 장점도 있기 때문에 등장한 서비스인 것 같습니다.

DNS가 이 서비스를 가리키도록 해 놓고 이 서비스에서 커스텀 도메인으로 랩핑할 주소를 지정하면 도메인을 요청할 때 이 서비스가 중간에서 실제 주소를 읽어 커스텀 도메인을 통해 접근할 수 있게 해 줍니다. 중간에서 데이터를 가로채는 역할을 하므로 로그인이 필요한 위치에는 적용할 수 없습니다. 기술적으로 적용이 불가능하지는 않을 것 같지만 중간에서 모든 것을 보고 있는 이 서비스의 특성 상 보안 문제를 일으킬 수 있어 아예 지원하지 않는 모양입니다. [계속]

‘CLOUD-6999’의 미래에 대한 암울한 생각

아틀라시안 제품군은 크게 서버, 데이터센터, 클라우드 제품군으로 나뉩니다. 서버 제품군은 중소규모로 아틀라시안 제품을 사용할 때 언프레미스 환경에서 사용하는데 몇 년 전부터 판매가 중단되었고 작년에 지원이 중단되었습니다. 이전에 경험한 몇몇 조직에서는 보안 문제로 컨플루언스 서버 제품을 사용하기 시작해 메이저 버전업 때마다 라이선스 비용을 추가로 지불하고 싶지 않아 오래된 서버 버전을 유지해 사용자(직원)들로부터 컨플루언스에 낡은 사용 경험을 주기도 했습니다. 데이터센터 제품군은 대규모로 아틀라시안 제품을 사용할 때 온프레미스 환경에서 사용하는 제품으로 컨플루언스 기준 최소 계약 단위가 500명 부터입니다. 연간 소프트웨어 이용 요금으로만 몇 만 달러를 지불해야 하는데 여기에 데이터센터 환경에 별도로 지출할 수 있는 수준의 기업에서 사용할 수 있을 겁니다. 서버 버전의 판매와 지원이 종료되었지만 데이터센터 버전은 여전히 구입할 수도 있고 개발과 지원도 계속 되고 있습니다. [계속]

요구사항 자체에 매몰되지 않기

어느 날 게임에 탈것을 넣고 싶어졌습니다. 이전에 여러 MMO 게임에 탈것을 넣던 생각이 스쳐 지나갑니다. 중세 배경 게임에서는 흔히 동물을 불러서 탈 수 있습니다. 처음 게임을 시작한 주인공은 가난한 나머지 탈것이 없어 걸어 다니지만 시간이 지나면 말을 사고 말을 성장 시키고 다른 더 좋은 말을 사기를 반복해서 멀리서 봐도 눈에 확 띄는 강력하고 멋진 탈것을 소유하게 됩니다.

탈것은 주로 수집 대상입니다. 실제 세계에서는 탈것을 유지하기 위해 상당한 노력과 비용이 필요합니다. 실제 세계에서 자동차를 구입했다면 일단 자동차 자체가 비쌀 뿐 아니라 연료, 보험, 자동차 자체의 유지관리, 세금, 주차비 등등을 지불해야 합니다. 반면 가상 세계에서 탈것은 이런 비용이 필요하지 않으므로 탈것을 한번 구입하면 세계 어디에 있든 탈것을 순식간에 부를 수 있고 따로 유지보수 할 필요가 없으며 연료를 채울 필요도 없고 또 보험료나 주차비를 지불할 필요도 없습니다. [계속]

풀소유와 분할소유 사이의 감정

현실 세계에서 물건을 소유하는 개념을 생각해봅시다. 지금 제 전 재산 뿐만 아니라 미래의 수입 일부까지 저당 잡는 신용카드라는 마법의 도구를 사용해 심호흡을 한 번 하고 어깨를 당당히 편 다음 외향인들이 판치는 애플스토어에 걸어 들어가 아이폰을 구매할 작정입니다. 미래의 수입을 저당 잡은 할부거래계약을 마친 다음 아이폰의 소유권을 넘겨 받아 상자를 열고 기계를 꺼내 전원을 켭니다.

어쩌면 처음 등록할 때 나오는 도저히 읽을 수 없는 기나긴 약관에는 제 손에 든 아이폰의 모든 부분이 온전한 제 소유가 아니며 내가 아이폰에 기록한 모든 정보 역시 온전히 제 소유가 아니라는데 동의해야만 기계를 사용할 수 있음을 나타내고 있을지도 모르지만 일단 표면적으로 할부거래계약이 성사된 이상 이 기계는 저 한 명의 소유입니다. 내가 아이폰을 소유하고 있다는 말의 의미는 이제 제가 집에 돌아가는 길에 폰을 떨어뜨려 박살을 내더라도 온전히 제 스스로 책임을 지며 반대로 아이폰을 활용한 부가가치 역시 적어도 부가가치가 생성된 그 순간만큼은 가치가 온전히 제 소유라는 의미일 것입니다. [계속]

혹시 이 앱 게임 아닐까?

이전에 멀티 유틸리티 토큰 모델, NFT화된 인게임 자원과 법률 준수, 그리고 크립토 게임의 법률 및 플랫폼 정책에 따른 설계 과제 같은 생각을 하면서 전통적인 게임 경제에 블록체인에 기반을 둔 토큰을 도입하는 것은 재미있기도 하고 또 도전적인 과제임과 동시에 약간은 모호한 법률을 위반할 소지가 있음을 알게 되었습니다. 법률 상 블록체인에 기반한 토큰을 도입해서는 안된다고 명시하지는 않고 있지만 경품을 제공해서는 안된다는 법률의 해석에 따라 약관 상 소유권이 사용자에게 있는 데이터가 발생하는 특징을 경품으로 해석해 법률을 위반하게 됩니다. 그래서 게임에 블록체인에 기반한 토큰을 도입하려 한다면 게임 안으로는 인게임 경제가 게임 외부의 경제 여건 변화에 따라 쉽게 고장 나지 않도록 설계해야 하는 과제가 있고 또 게임 밖으로는 이런 경제 체계를 도입한 게임을 정상적으로 서비스 하기 위한 법률적 대비가 필요합니다. [계속]

영혼이 없이 개발해야만 임무를 완수할 수 있을 때가 있다.

복제를 강요받는 환경에서 일하다 보면 그래도 그저 복제하는 대신 내 스스로 옳다고 생각하는 뭔가를 더하거나 빼고 싶을 때가 있습니다. 그래서 복제를 강요받는 환경에서 살아남기 위한 방법으로 관리자 입장에서는 복제를 정확히 지시하고 또 복제해야 하는 이유를 설명하며 복제 하는 입장에서는 이 시스템이 게임 전체에 어떤 역할을 하는지 정확히 이해해야 한다고 이야기했었습니다. 복제를 수행하는 자세에 있어 이처럼 자신의 의지를 포함해 복제를 할 때도 있지만 가끔은 영혼 없이 복제해야만 프로젝트를 완수할 수 있는 상황이 있다고 생각합니다. [계속]

움직이는 엘리베이터 안에서 움직일 수 있는 사례

지난번에 '레버를 돌리면 움직이는 엘리베이터 사례'를 소개하면서 목적에 따라 선택할 수 있는 엘리베이터의 특징에는 자동으로 움직이는가와 버튼을 눌러야 움직이는가, 그리고 엘리베이터 안에서 플레이어를 움직일 수 있는가 그렇지 않은가에 따라 달라진다고 설명했습니다. 이때 소개한 사례는 레버를 돌려야 움직이기 시작하는 엘리베이터였는데 이 엘리베이터는 동시에 엘리베이터가 움직이는 동안 조작할 수 없었습니다.

한 게임에 엘리베이터를 사용하는 여러 장면이 나오더라도 모두 같은 메커닉을 사용하지 않습니다. 필요에 따라 다른 엘리베이터를 사용하기도 하고 게임을 긴 기간에 걸쳐 개발한다면 처음 개발한 엘리베이터와 나중에 개발한 엘리베이터가 서로 다른 메커닉을 사용하게 됐는데 처음 개발한 부분을 고치자니 비용이 높아 그대로 두기도 합니다. [계속]

NPC가 문을 못 지나갈 상황을 귀엽게 해결한 사례

지난번 ‘NPC가 지나가면 닫히는 문 사례’를 소개하면서 고약한 문 문제에 대해 소개했습니다. 게임에 일상적으로 등장하는 문이 사실은 그걸 만드는 사람들을 심각하게 괴롭힌다는 내용인데요, 시간이 흐르면서 문을 거슬리지 않게 처리하는 방법들이 고안됐습니다. 그럴듯한 문을 만들기에 이전만큼 어렵고 복잡하지는 않습니다. 하지만 싱글플레이에서 문과 멀티플레이에서 문은 또 완전히 다른 이야기입니다. 서양에서 싱글플레이 환경에서 동작하는 문을 발달시켰다면 동양에서는 멀티플레이 환경에서 동작하는 문을 발달시켰는데 특히 던전 안에서 몬스터가 문의 여닫힘에 따라 달리 행동해야 했기 때문에 동양의 문은 문과 그 문에 의해 다른 행동을 해야 하는 몬스터 제어와 함께 발달했습니다.

갓오브워는 플레이 하면 할수록 이런 게임을 여러 차례에 걸쳐 개발한 경험 있는 제작사가 개발했다고 하기엔 아쉬운 부분이 많이 눈에 띄는데 그 중 하나가 NPC와 문 문제를 가장 싼 방법으로 해결한 점입니다. 이 게임에서 문은 스테이지를 구분하고 레벨디자인의 완결성을 외부 요소로부터 격리하고 새로운 챕터를 구분하는 등 여러 상황에 사용됩니다. 이는 다른 게임에 문을 도입하는 이유와 다르지 않습니다. [계속]

왜 현대 게임에 그렇게 많은 종류의 재화를 사용하나요?

종종 서양에서 디아블로 이모탈 같은 게임을 처음 접해 스무가지가 넘는 재화가 등장하는 구조를 보고 소위 ‘독성 게임’이라며 열을 올리는 영상을 보며 동양에서 게임의 성장 구조와 경제 구조 설계가 어떤 식으로 다르게 발전하고 있는지 생각해볼 수 있는 계기가 되어 의미 있기도 하고 또 한편으로는 웃기기도 합니다. 아니 선생님들은 그럼 MMO 게임이 겪는 온갖 경제 문제를 어떻게 해결하고 있느냐고 묻고 싶었지만 영상을 만드는 분들은 주로 게임을 만드는 분들은 아닌 것 같아 물어볼 수는 없었습니다.

여튼 현대 게임에 여러 종류의 재화를 사용하는 이유를 설명하겠습니다. 게임에 이렇게나 많은 재화가 필요한 이유는 크게 두 가지입니다. 첫째. 게임 경제 어느 한 곳에 발생한 문제가 다른 곳으로 전파되지 않도록 하기 위한 안전장치. 마치 큰 배가 더 작은 여러 구획으로 구분되어 있고 각 구획 사이를 필요에 따라 차단할 수 있도록 설계한 것과 비슷합니다. [계속]

경험

현재

  • 리드시스템디자인, UNOPND (2022 ~ 현재)

이전

...

리드시스템디자인스마일게이트알피지 (2019 - 2021)

  • 로스트아크모바일 프로젝트 참여.

...

게임디자인 및 UI디자인, 넷게임즈 (현 넥슨게임즈) (2017 - 2018)

  • 오버히트 프로젝트 개발 및 라이브서비스.

    • UI설계, 시스템디자인, 이벤트 설계 및 집행, UITF 참여.

...

리드시스템디자인, 블루홀스튜디오 (현 크래프톤) (2015 - 2016)

  • ‘Project T2' 참여.

    • 리드시스템디자인, 코어루프 시스템디자인 및 UI설계

...

시스템디자인엔씨소프트 (2010 - 2014)

  • 리니지 이터널 프로젝트 참여.

    • 엔드컨텐츠 디자인, 인하우스툴, 랜덤던전 개발에 시스템디자인 역할로 참여.

  • 명인장기, 미션아르피아 개발 및 라이브서비스.

    • 플래시 기반의 미니게임 게임디자인, 명인장기 모바일 개발.

...

게임디자인넥슨 (2008 - 2009)

시스템디자인그라비티 (2005 - 2007)

라그나로크 온라인 2 개발 및 라이브서비스.

...

kono.pub이라는 자유 주제 마스토돈 서버를 운영하고 있습니다. 서버에 대한 소개와 여러 가지 정보는 docs.kono.pub을 참고해 주세요. 혹시 마스토돈을 사용해볼 생각이라면 이 서버를 고려해 주세요. (smile)

전체 글 목록