2018년 10월 3일 수요일

태블릿으로 원격 프로그래밍이 하고 싶어요.

미리 이야기 드리지만, 저는 전문적인 프로그래머는 커녕 백날 예제 코드나 타이핑하고 있는 만년 초보 코더입니다.(이리 된데에는 한개 언어 붙잡고서 한개 영역을 꾸준히 파고 들어야 하는데 그러지 않은게 최대 문제였죠)

근데 프로그래머라고 하면 모두가 가지고 있는 희망이 있는데 그건 '누구나 집에 굴러 다니는 태블릿 하나 정도 있잖아요'로 코딩을 하는 문제에 대해서 이야기 해보려고 합니다.

1) 우리는 왜 이 보잘것(?) 없는 걸로 그러 어려운걸(??) 하고 싶은가?
태블릿으로 한번이라도 문서 작업을(심지어 이 블로그 글을 적고 있는 컴퓨터 조차 태블릿이지만) 해본 사람이라면 알겠지만 문서를 생산하는데 있어서 태블릿은 그렇게 좋은 장비는 아닙니다. 화면부터 우선 쬐끄만해서 글을 작성하는게 그렇게 좋지 않은건 물론이고 제일 큰 문제는 뛰어난 성능의 워드프로세서가 없다는 점입니다.
'명장은 붓을 가리지 않는다'라지만 '안'명장한테는 안그래도 악조건에서 붓까지 나쁘면 이것은 통합적 재난 상황이라는 겁니다. 물론 그 이후 구글 문서와 MS  오피스같이 좋은 툴들이 많이 나온건 사실(더군다나 이 툴들의 대부분이 무료)이지만 그러나 여전히 이들툴을 임베트에서 그림 한장을 어울림을 넣는게 얼마나 빡센 일인지 해보신 분들이라면 이해 하실겁니다.

그러나 (이런 저런 문제에도 불구하고) 꼭 싶습니다.

노트북이 처음 태어 났을 때야 가지고 다닐수 있는 컴퓨터 자체가 혁명이었을 지도 모르지만 지금에 와서는 2kg짜리 초경량 노트북 조차 '광고만' 초경량으로 느껴지는게 사실입니다. 그런 상황에서 성능은 미약하지만 장시간 작동 가능(하다고 광고 하는)하고 가벼운(태블릿 기준으로는 1kg도 헤비영역임) 임베드 컴퓨터에 블루투스 키보드라는 것은 마치 신세계처럼 느껴질 정도의 변화로 느껴질 정도입니다.(더군다나 블루투스 키보드는 접거나 말아서 가지고 다닐 수 있는 녀석 조차 있다)

한번 구매하면 키보드의 교체가 불가능한 노트북과 달리 지릴면 새 키보드로 바꿀수 있고 크기를 감당하면 PC에서 사용하는 풀 사이즈 키보드도 넘쳐나고(물론 모빌리티는 희생해야 하지만) 거기에 태블릿의 경우 3G나 LTE를 통해 직접 인터넷이 가능한 제품도 넘쳐나니 노트북과는 비교할수 없는 이동성을 가지고 있으니 가능하다면 이걸로 프로그래밍 하고 싶다는 생각을 하는게 당연한 순서일 것이다.

2)가능한 환경 1 : 터미널 코딩
만약 당신이 터미널 환경에서 'vi'나 'emacs'  혹은 'nano'등의 CUI환경(과연 이런 열악한 환경에서 처음부터 끝까지 코드를 작성하는 하드코어한 프로그래머가 있을지는 일단 제껴두고)에 익숙한 프로그래머라면 당신은 이미 훌륭한 원격 프로그래밍 환경을 가지고 있을 것이다.(당연한가?)
유닉스 계열의 OS는 당연하게 터미널 환경을 제공하고 ssh나 텔넷(이제는 보안 문제로 쓰는 사람 없어야 정상이겠지만)으로 서버에 원격으로 접속해서 작업을 하는게 당연한 사람들이다.
이 글을 적는 나 조차 홈서버에 직접 키보드와 마우스를 연결하는건 리눅스를 처음 설치하는 때 뿐이고 그 이후에는 당연히 세팅은 ssh로 접속해 변경하는걸로 한지 오래이다.
순정 세팅이라면 어마무시하게 빡세고 GUI 같이 타임머신이라도 타고 나타난 인터페이스의 도움 따위는 절대 기대할수 없는 환경이지만 그러나 가장 빠른 퍼포먼스로 코딩을 입력해 보고 자동화 툴의 구축만 끝나면(make 같은) 가장 빠르게 코드의 컴파일과 실행 자동화 테스트까지 해볼수 있는 환경이다.
ios, 안드로이드 계열을 가리지 않고 터미널 프로그램(유료 무료 가리지 않고) 하나 정도는 있고 당신이 할 일은 이 터미널 프로그램 중 하나를 고르기만 하면 된다.

3)가능한 환경 2 : (코딩 윈도우) + (컴파일과 실행만 서버)
조금 보안이나 퍼포먼스 등에 문제가 있는 환경이기는 하지만, 세상에는 x86윈도우 태블릿이라는 변태스러운 물건도 있다. 대부분 아톰 프로세서라는 어딘가 사도스러운 물건으로(혹은 시지푸스의 벌 같은)작동하는 이 물건은 당연히 윈도우 프로그램이 돌아가고 당연히 윈도우에서 사용하는 거의 모든 IDE툴을 사용 가능하다는 뜻이다.(비록 초기 구동이 느리긴 해도 돌아 갈때는 잘 돌아 간다)
즉, 코딩을 윈도우에서 한 뒤, 이 파일들을 서버에 올리고(파일질라 같은 툴에서 시작해 sftp, ftp, samba서버 등등 방법은 넘처난다) 터미널로 자동화 스크립트를 돌려주고서 결과가 터미널에 나타나길 기다리는 방식이다.
윈도우 GUI환경을 거의 그대로 사용 가능하다는 장점이 있고 호환성이 보장되는 자바나 파이썬 같은 언어라면 가벼운 테스트등을 해보고서 서버에 보내는게 가능하다는 장점이 있지만 동시에 라이브러리가 없는 환경이라면 그냥 익숙한 IDE를 사용한다는 것 외에는 장점이 없는 환경이다.(결정적으로 이런 식으로 작업하다 두 저장소의 코드의 동기화가 적절히 이루어 지지 않을 경우는...)

4)브라우져 코딩
본래는 자바스크립트 같은 언어에서나 사용 가능했을 법한 방법이지만 최근  jupyter notebook을 사용한 코딩이 일상화 되면서 사용 가능한 방법인데 쥬피터 노트북 서버를 구축할 경우 로컬이 아닌 원격에서 당신의 브라우져를 통해서 (코딩)+(문서작성)+(결과물 첨부) 가 가능한 혁신적인 코딩 방법이다. 문법을 익혀야 한다는 불편함이 있지만 수식의 입력 또한 가능하며 최근의 많은 학술적 자료(특히 빅데이터 관련)들이 이런식으로 공개되고 있다는 점을 생각하면 확실히 해볼만한 방법일 것이다.

5)임베드용 IDE툴 사용
사람들이 자주 깜빡하는 내용인데, 당신들이 들고 다니는 거의 모든 기기들은 최소 32비트 CPU와 최소 2기가 메모리를 내장한 유닉스 계열 '컴퓨터'라는 점이다. 단지 보통의 유저들이 코딩 따위를 할리 없으니(더군다나 초기의 그 성냥각만한 모니터로) 그런 쓸때 없는 프로그램 따위는 제외하고 최적화 해서 파는 것일 뿐, 컴파일러나 인터프리터만 제작 설치하면 이것은 코딩이 가능한 컴퓨터로 사용 가능하다는 뜻이다.
루팅을 하지 않더라도 단순히 앱을 하나 설치하기만 하면 실제 코딩에 실행까지 가능한 앱들이 마켓에 등록 되어 있으니 가끔 '비행기 안에서 코딩을 하고 싶다는'어딘가 워크 홀릭스러운 사람이라면 하나 정도 설치해 해볼만함 직도 할 것이다.

결론 : 이상이 내가 경험해 본 원격 혹은 임베드 코딩 환경이다. 아직까지는 지옥에 가까운 환경이지만 그래도 선구자라는건 원래 그런 것이다라는 이야기 밖에는 할 이야기가 없으며, 진짜 하고 싶은 이야기는 당신이 그냥 들고 다니는 컴퓨터는 1950년대 나사의 과학자와 기술자들이 인간을 달에 보내기 위해서(러시아는 그것 조차 없이!) 애지중지 해가며 사용한 컴퓨터는 물론이고 내가 코딩을 배우기 위해서 만져본 xt컴퓨터 보다 훨씬 더 뛰어난 성능에 안정적이기 까지한 컴퓨터 들이다. 그런걸 단지 게임만을 위해 쓴다는 것은 조금은 아깝지 않을까?(물론 게임은 재미 있지만)

댓글 없음:

댓글 쓰기