최근 출퇴근 길에 아이패드로 백준 알고리즘 문제를 한번 풀어보고 싶어 스마트폰 핫스팟을 켜고 백준에 접속해서 코딩을 해보니, 여간 불편 한 것이 아니었다. 출퇴근 시간대라 사람이 많이 몰려 인터넷 속도는 기가 막히게 느릴 지경이었고, 백준의 제출 란은 IDE가 아니기에 코딩하기에 좋은 환경은 아니었다. 그래서 나름의 대안을 찾아보다가 Pythonista라는 어플을 발견했다. 앱스토어에 들어가 보면 이 어플에 대한 찬사도 자자하다. 나름대로 평가가 좋은 어플인 것 같아서, 12,000원의 돈을 주고 바로 다운로드 받아 직접 코딩을 해봤다. 직접 사용해보니, 사람들이 입을 모아 칭찬하는 것에는 다 이유가 있는 듯 하다. 내가 사용해보면서 느꼈던 장접들을 꼽아보자면 다음과 같다. 1.오프라인으로도 컴파일해서 실행해보는 것이 가능하다(!) 2.어떤 부분에서 문제가 발생했는지 메시지로 띄워준다. 3.중단점, 변수 목록 등의 디버깅 환경을 지원해준다(!) 물론 이 외에도 강력한 기능들은 제법 많다. UI 개발 환경이라던지, 여러가지 프레임워크를 문제없이 지원하는 등..iOS에서 이런 앱이 있다는 게 신기할 정도. 하지만 나는 파이썬을 주력 언어로 다루는 사람이 아니고, 내가 원하는 것은 출퇴근 길에 알고리즘 문제 하나 풀 정도의 수준이면 충분하기 때문에, 저 세 가지 장점으로 얻을 수 있는 효용이 크다. 가장 마음에 드는 것이 컴파일과 실행에 인터넷 연결이 필요치 않다는 점. 실행 화면. 간단한 퀵 정렬 코드를 작성해보았다. 줄 단위로 선택해서 들여쓰기/내어쓰기가 가능하다.개인적으로 편리하다고 느끼는 기능. 문자열을 입력하고 있으면 키보드 위로 드롭다운 목록을 띄워주기도 한다. 실행 화면. 오류 메시지를 출력해주고, 변수 목록과 오류를 표시해준다. 사용해본 것은 잠깐이지만 돈을 주고 산 것이 전혀 아깝지 않은 앱이라고 생각한다. 무엇보다도 출퇴근 길에 서서 아이패드로 알고리즘 문제를 풀 수 있다는 것이 가장 좋다! iPad를 구매한지 어연 3년이 되어간다. iPad 구매 전에는 어딜 가도 항상 무거운 노트북을 들고 다녀야 했지만, iPad 구매 후에는 노트북으로 하던 상당히 많은 일을 iPad로 대체하게 되어 노트북을 들고 다니지 않는 경우가 많아졌다. 그러나 코딩을 할 땐 어쩔 수 없이 노트북을 써야 했다. 만약 iPad에서 코딩마저 가능하다면 무거운 노트북을 안 들고 다녀도 될 거란 기대에, 필자는 iPad에서 코딩을 할 수 있는 방법을 정말 다각도로 연구해 보았다. 본 문서는 필자의 연구 결과(?)를 정리한 문서이다. 그러나 결론부터 말하자면, 필자가 찾은 방법들은 모두 아쉬운 부분들이 있다. 제대로 된 코딩을 해야 한다면 적어도 아직까진 노트북을 들고 다녀야 할 것 같다. 만약 개선할 아이디어나 다른 좋은 방법이 있다면 댓글로 알려주기 바란다. 네이티브 환경에서 코딩하기iPad는 네이티브 환경에서 코드 컴파일 및 실행이 거의 불가능하다. iPadOS도 UNIX-like OS니까 GCC 같은 컴파일러를 깔 수 있을 법 한데, 보안 정책 때문에 컴파일러 설치는커녕 쉘 접근도 막혀있다. 그나마 실행이 되는게 Pythonista 3을 이용한 파이썬 코딩이다. 근데 iPad와 같은 모바일 장치는 성능이 별로 좋지 못하기 때문에, 이 앱을 이용해 코드 몇 줄 돌리는 수준이 아닌 제대로 된 코딩을 하는 것은 많이 힘들다. 일단 필자의 iPad에는 Pythonista 3이 설치되어 있긴 하다. 근데 사실 파이썬 코드는 원격 서버에 설치한 Jupyter Lab에서 돌리는게 훨씬 편하고 강력하기에 이 방법은 거의 안쓴다. 원격 데스크탑[+ 22.02.09] 원격 데스크탑 프로그램을 사용하면 원격에 있는 PC에 접속하여 코딩을 할 수 있다. 진짜 PC에 접속하는 것이므로(iPad는 화면을 출력하고, 입력을 전송하는 터미널 역할만 한다) 코딩뿐만 아니라 한글(hwp) 문서 편집 등 PC에서 할 수 있는 모든 일들을 다 할 수 있다! 성능과 기능의 관점에서 봤을 때, 이 방법이 이 문서에 있는 그 어떤 방법보다 강력한 방법일 것이다. 필자는 3가지 종류의 프로그램들을 사용해 보았다.
TeamViewer의 경우 사용자 층이 많고 강력하다는 장점이 있으나, PC에 별도의 프로그램을 깔아야 해 시스템이 조금 더러워지고, 기업의 경우 유료로 사용해야 하고, 개인 사용자의 경우에도 정해진 시간이 지나면 연결이 강제적으로 끊긴다는(물론 나갔다 다시 들어가면 되긴 한다) 단점이 있다. Chrome Remote Desktop은 Chrome만 설치되어 있으면 별도 프로그램이 없어도 사용 가능하고 무료라는 장점이 있으나, 시스템 설정같은 창은 이를 통해 조작할 수 없다는 단점이 있다(보안 문제 또는 권한 문제 때문으로 보인다). Remote Desktop Mobile은 Microsoft에서 만든 것으로, 셋 중 가장 안정적이과 깔끔하나, Windows Pro를 사용해야 사용할 수 있다는 단점이 있다. 필자가 제일 처음 시도한 방식이 이 방식이었다. 처음에는 TeamViewer를 사용하다가, Chrome Remote Desktop으로 넘어갔다가, 현재는 (Windows Pro를 지른 후) Remote Desktop Mobile을 사용하고 있다. 사용해보니 이 방법에는 다음과 같은 단점이 있었다.
그래서 필자는 안정적인 Wi-Fi 연결이 보장된 환경에서만 이 방식을 사용한다. GitPC 또는 서버에서 작업하던 코드를 GitHub 등에 올린 후, Git Client 앱을 이용하면 iPad에서 코딩을 진행할 수 있다. 원래 Git이 이러라고 만들어 진 물건이 아니던가. 이 방법을 쓰면 심지어 오프라인에서도 코드 작업을 할 수 있다. 필자는 Working Copy라는 앱을 이용하고 있다. Working Copy는 무료 앱으로서 commit, push, pull, fetch 등 대부분의 Git 동작을 수행할 수 있는 좋은 Git Client이다. 몇몇 고급 기능들은 유로 업그레이드가 필요하나, GitHub Student Developer Pack에 가입되어 있다면 무료로 사용할 수 있다(Verify 링크). 이 앱은 Git Client로도 훌륭하지만, 이때까지 사용해 본 iPad용 텍스트 편집기 중 가장 좋아 특히 추천한다. 그러나 이 방법에도 단점이 있다.
그래서 필자는 이 방식을 오프라인 환경일 때만 제한적으로 사용한다. SSH 터미널원격 서버에 SSH로 접속한 후, vim 등을 이용해 코딩하는 방법이 있다. 어떻게 보면 가장 컴공스러운 방법이라 할 수 있겠다. 장점은 당연히 SSH를 사용하니 가볍고, 빠르고, 안전하다. 단점은 사용성이 개판이다. 만약 당신이 vim 마스터라면 고려해 볼 만한 방법이겠지만, 아쉽게도 필자는 vim에 그리 익숙하지 않아 이 방법은 사용하지 않는다. 개인적으로 iPad에서 가장 쓰기 좋은 SSH 터미널 앱은 Termius라 생각한다. Termius에서는 무료로 SSH 연결을 할 수 있다. 그러나 연결 유지(다른 앱을 실행해도 SSH 세션을 유지하는 기능), 다중 연결(여러 개의 SSH 세션을 만드는 기능), 포트 포워딩(LocalForwarding) 등의 기능을 쓰려면 유료 업그레이드가 필요하다. 그러나 이 역시 GitHub Student Developer Pack에 가입되어 있다면 무료로 사용할 수 있다(Verify 링크). 필자는 이 앱을 정말 자주 사용하고 있다! 이 앱으로 코딩을 하진 않지만, 코드 실행, 포트 포워딩 등 서버 관련 작업을 많이 하고 있다. SSH Text Editor사실 필자가 최고로 치는 방법은 VSCode의 "Remote SSH"와 같은 방법이다. VSCode의 Remote SSH는 SSH 연결을 통해 안전하게 원격 서버에 접속해 마치 네이티브 환경에서 코딩하는 것처럼 코딩을 할 수 있게 해 준다. 이 방법은 Git처럼 중간 과정을 거칠 필요도 없고(내가 작업하던 코드에 바로 접근 가능하다), 충돌이 날 염려도 없고, 가볍고, 보안성도 좋고, 빠르다. 그러나 2021년 3월 현재 아무리 찾아도 SSH로 원격 접속해 사용할 수 있는 텍스트 에디터는 앱스토어에 없다. 딱 하나 Buffer Editor라는 앱이 있긴 한데, 개인적으로 사용성이 많이 아쉬웠다. 코드 하이라이팅도 제대로 안되고, 글씨도 너무 작아 보기 불편했다. 일단 필자의 iPad에 이 앱이 설치되어있긴 하지만, 거의 한 번도 안 썼다. [+ 21.06.17] Koder라는 앱도 SSH Text Editing 기능을 지원한다! 이 앱은 Buffer Editor보다 사용성도 좋아서, 현재 가장 주력으로 쓰고 있는 SSH Text Editor이다. 다만 이 앱에도 약간의 단점이 있다.
웹 기반 Editor원격 서버에 웹으로 접근 가능한 개발 환경을 구축하고, iPad에서 웹 브라우저를 통해 접근하는 방법이 있다. 2021년 3월 현재 가장 그럴 듯한 방법이다. 유명한 것으로는 Jupyter Lab, Code-Server가 있다. Jupyter LabJupyter Lab은 파이썬 코드를 실행할 수 있는 일종의 웹 IDE이다. 필자는 원격 서버에 Jupyter Lab 서비스를 등록해 원격 서버가 켜지면 자동으로 Jupyter Lab이 켜지도록 해 놨다. 자세한 설정 방법 및 사용법은 해당 문서를 참고하기 바란다. Code-ServerCode-Server는 웹 상에서 VSCode를 실행하는 프로그램이다. Github 링크 Code-Server는 시스템에 바로 설치할 수도 있지만 Docker를 이용해 설치할 수도 있다. 필자는 Docker를 사용해 Code-Server를 설치하였다. Docker를 사용한 이유는 다음과 같다.
물론 Docker를 사용했을 때의 단점도 있다.
다행히 필자는 Docker에 대한 지식이 조금은 있고, 딱히 Code-Server를 열심히 조작해 쓸 것도 아니고, 쉘은 Code-Server의 것이 아닌 시스템의 쉘을 그냥 바로 사용하면 되기에(대신 웹 페이지(VSCode)에서 한 번에 할 수는 없다) 계속 진행했다. 설치법Docker가 설치되어 있지 않다면 우선 Docker를 설치한다.
원하는 곳에서 바로 Code-Server를 실행할 수 있도록
적당한 디렉토리(필자는
이 스크립트에 실행 권한을 주고, 스크립트가 들어 있는 디렉토리(
사용법iPad에서, SSH Shell(ex. Termius)을 이용해 작업하고자 하는 디렉토리에 가서 위에서 만든 스크립트를 실행한다.
이제 다음 URL에 접속하면 웹 상에서 VSCode 환경을 띄우고 그 안에서 코딩을 할 수 있다.
만약 코딩 중 코드를 실행해 보고 싶다면 SSH Shell에서 실행하면 된다(위에서 설명했듯이 Docker로 Code-Server를 설치했기 때문에 Code-Server의 터미널에는 시스템에 설치된 프로그램들이 없어 실행하기 어렵다). 실행 중인 Code-Server를 종료하고 싶다면 (마치 Jupyter Lab 처럼) 그냥 Code-Server는 VSCode와 거의 동일한 환경이므로 텍스트 편집, 환경설정, 테마 설정 뿐만 아니라 심지어 확장 설치까지 가능하다! 근데 확장의 경우 라이선스 문제 때문에 VSCode의 확장들을 바로 가져올 수 없다고 한다. 그래서 Code-Server 개발진들은 같은 역할을 하는, 라이선스 문제 없는 확장들을 열심히 개발 중에 있다! 2021년 현재 상당히 많은 확장들이 사용 가능하므로, 아마 필요한 웬만한 확장은 사용할 수 있을 것이다(심지어 한국어 팩 확장까지 사용 가능하다). 문제점이렇게 완벽해 보이는 Code-Server도 한 가지 문제점이 있다. 현재 한글을 입력하면 더듬더듬 입력되는 현상이 관찰되었다(예를 들어 "사랑"을 입력하면 "ㅅ사라랑랑" 이런 식으로 입력된다). Github Issues에 의하면 이 문제는 Code-Server의 문제가 아닌, VSCode가 가지고 있는 문제라 한다. 이것이 패치되려면 최소 다음 VSCode 패치가 나올 때까지 기다려야 할 것 같다. 즉 현재는 영어로만 코딩해야 한다. 결론22.02.09. 현재 필자가 찾은 최고의 방법은 다음과 같다.
|