이런 이야기를 굳이 남겨야 하나 싶지만, 누군가에게는 몰랐던 이야기가 될 수 있어서 몇 자 남겨둔다. 서비스 개발시 도메인은 충분히 많이 상위 도메인 하나로 모든 개발환경을 사용하는 팀들이 있다. 개발환경을 sub 도메인으로 분리라도 하면 다행인데, uri의 일부 prefix 정도로 구분하는 경우도 있다. 이런 경우 몇 가지 상황이 발생한다. 하나, 각종 브라우저 및 여러 인터넷 관련 도구들은 도메인 정확히는 eTLD - https://developer.mozilla.org/en-US/docs/Glossary/eTLD 혹은 Public Suffix를 기준으로 각종 정책을 적용한다. 대표적인 예는 브라우저의 쿠키다....
강남역에서 부산역으로 가려면 서쪽으로 가야 하나 동쪽으로 가야 하나?
강남역에서 부산역으로 가려면 서쪽으로 가야 하나 동쪽으로 가야 하나? 이런 질문을 받는다면 어떻게 답할 것인가? 쉽게는 경부고속도로를 타기 위해서 서쪽으로 간다고 말할 수도 있다. 혹은 동쪽으로 가서 중부 고속도로를 타는 것이 낫다고 말할 수도 있다. 동도 서도 아닌 일단 남쪽이라고 말하는 사람도 있겠고 서울역쪽으로 가서 기차를 타겠다고 말하는 사람도 있을 것이다. 하지만, 누군가 한겨울에 반팔에 자전거를 타고 이런 질문을 한다면 조금 다른 것들을 답하게 될 것이다. 지금 바로 출발할 것인지, 왜 부산에 가려고 하는지, 예산은 어떻게 되는지 등 더 많은 질문과 현황을 파악한 다음에야 답을 하게 될 것이다....
점찍기 (혹은 제사 지내기)
쉬는 시간이 다시 찾아왔다. 이번 휴식기엔 3d 프린터를 이용해서 스도쿠 푸는 것을 만들었다. 어떻게 지내냐고 묻는 사람들에게 로봇의 동작하는 영상을 보여줬었다. 어떤이들은 ‘오오’하며 놀래는 반응을 보이고 어떤이들은 탄식에 가까운 그러니깐 또 쓸데없는걸 열심히 만들었구나 하는 반응이었다. 사실 내가 만든 것은 기존의 방식으로 테스트할 수 없는 앱을 테스트하기 위한 도구를 만든 것이었고, 수도쿠를 푸는 것은 예시중 하나였다. 해외에는 관련 서비스를 서비스하는 회사도 있고, 사실 몇몇은 이런 포인트를 이해해서, 가볍게 이야기 하기도 했었다....
레시피: 하드웨어 기반의 저비용 모바일 앱 테스트 자동화
Table Of Contents Introduction Background 3D프린터 / plotter G-code 터치 디스플레이 3D 프린터를 이용한 테스트 준비 예시 닫는 글 Introduction 모바일 앱을 테스트하고 버그를 찾는 것은 어렵습니다. 모바일 환경 특성상 변수가 많고, 폐쇄적이기 때문입니다. 물론, 각 제조사들은 테스트를 위한 다양하고도 적극적으로 디버깅을 위한 도구와 API를 제공하고 있습니다. 또, 이를 더 쉽게 활용가능하게 해주는 appium과 같은 자동화 framework의 개발과 활용도 활발히 진행중입니다. 그러나 이러한 UI 자동화 테스트에는 한계가 있습니다. 우선 보안과 저작권 침해와 같은 시스템의 악용과 같은 다양한 이유로 모든 제어 방식에 대해서 API가 제공되는 것은 아닙니다....
슬랙으로 에어컨을 켜고 끄는 것의 의미
계절이 바뀌면 글을 좀 올려야지 했는데, 계절이 이렇게 한바퀴라 돌 줄은 몰랐다. 오래간만에 2017년 여름 facebook에 올렸던 글을 조금 손봐서 올린다. 그때 만든 IR LED with Raspberry PI 며칠 전에 오래간만에 또 원격으로1 에어컨을 켜고 끄는 장치를 만들었다. 여름이 오는 소리가 들리면 누구는 매실을 담그고 누구는 여름옷을 살 텐데 내게는 에어컨 리모컨을 만드는 것이 여름을 맞는 행동이 된 거 같다. 2년 만에 만들고 나서 보니 왜 내가 처음 채팅으로 에어컨을 켜고 끄는 것을 만들었는지 이제는 이야기해도 될 것 같다는 생각이 들어서 이렇게 몇 마디 남긴다....
버스와 사람
버스 팩터는 사람이 갑자기 자리에서 빠지는 경우 몇 명이 동시에 빠져야 인원의 부재가 팀에 문제가 되는가에 대한 지표이다. 보통의 1인 기업은 모든 면에서 버스 팩터가 1이고, 미국 대통령직은 승계 제도가 있으니 17 정도 될 것 같다. 이 단어의 어원1을 그리 좋아하지는 않지만, 그렇다고 복권 팩터2라고 적으면 왠지 느낌이 살지 않는다. 버스 팩터가 크다는 것은 그만큼 팀이 유연하다는 것이다. 하지만 버스 팩터를 늘리는 데는 비용3이 들고, 보통은 원하는 버스 팩터가 크면 클수록 더 많이 들어간다....
좋은 코드
기준과 현실 좋은 코드에 대한 다양한 기준이 있지만, 나는 좋은 코드를 논할 때 가장 기본이 되어야 하는 것은 문제 해결의 여부라고 생각한다. 문제를 정의한 다음 해결을 위한 방법을 논한 프로그램의 구조와 구현에 대해서 논해야 한다. 그렇지 않으면 단순한 코드의 미에 대한 평가 그 이상은 힘들다. 문제를 해결 못하는 코드가 나오는 대표적인 이유 중 하나는, 문제 정의가 부실하기 때문이다. 책이나 과제와 달리, 현실에서는 문제 정의가 없거나, 부분만 되어 있거나, 문제가 변하는 속도를 고려하지 않거나, 협업자들이 같은 정의를 공유하지 못하는 일 들이 생긴다....
사소함에 사로잡히지 않게
시간관리 이야기 돌, 자갈, 모래 그리고 항아리에 대한 이야기가 있다. 자료가 충분하니 또 적지는 않겠지만, 구글링을 해보면 한국어로도 영어1로도 분야를 가리지 않고 인용되는 이야기인데 어째선지 원전을 찾기는 어려운 그런 이야기다. 이 이야기의 결론은 간단하다. 중요하고 큰 일부터 해라. 작고 사소한 일을 하다 보면, 큰 일을 할 기회를 놓치게 된다. 스티븐 코비의 성공하는 사람들의 7가지 습관에 나오는 ‘시간관리 매트릭스’에도 비슷한 개념이 있는데, 결론은 급하고 중요한 일을 했다면, 다음은 급한 것보다 중요한 것을 먼저 하라는 것이다....
개발자 - 조금씩 사라지고 있는 직업
한 줄 요약: 직업의 소멸은 전문성이 사라지는 것을 의미하고, 코딩이라는 개발자의 전문성은 사라지고 있다. 타자기와 타이피스트 타자기가 개발된 19세기 말 이후 20세기까지 타이피스트는 오랫동안 유망하고 선망되는 직업이었다. 타이피스트에 대한 이야기를 정확하게 하려면 여성의 노동참여와 산업혁명, 2차 세계대전과 같은 역사적인 배경을 다 이야기 해야겠지만, 범위가 너무 넓으므로 이 직업에 대한 모든 내용을 다루지는 않을 것이다. 다만, 꼭 이야기 해야하는 사실은 타이피스트가 이제 직업으로 의미 있게 분류되지는 않는다는 것이다.1 타이피스트가 하나의 전문직으로 구분되던 시절도 있었다....
코딩은 쉽고 소프트웨어를 만드는 것은 어렵다
이야기를 시작하기에 앞서 이 분야 용어들은 명확한 것을 선호하지만 정작 명확하게 무언가를 만드는 법은 잘 없는 이 분야 사람들을 닮아서인지 명확하게 정의되어 있지 않다. 용어의 모호함을 해결하기 위해서 사용한 정의를 우선 적어둔다. 각 용어의 정의는 일반적인 정의보다 넓거나 좁을 수 있다. ‘알고리즘’1은 수학적으로 잘 정의된 작업, 절차의 목록이다. ‘코드(소스코드의 줄인 형태)’는 알고리즘을 프로그래밍 언어로 적어둔 것이다. ‘프로그램’은 명령어(컴퓨터가 실행할 수 있는)의 모음이다. 이러한 명령어 모음은 컴퓨터가 처음 나왔을 때는 직접 작성하기도 했지만, 현재는 대부분 코드를 변환하여 만들어 낸다....