자동화의 열망...
on
자동화라고 하니까 참 뭐 거창한 것 같지만, 별 것 아닌 생활의 일부를 자동화하는 것인데 그래도 내겐 거창하다.
생각해보면 소규모의 그룹으로 엄청나게 많은 일을 하던 시절이 있었는데, 그때 참으로 자동화란 것을 열심히 했던 기억이있다.
이를테면 어떤 앱을 켜고 마우스 커서를 어디서 어디로 옮긴 뒤에 어떤 것을 클릭하고 하는 것들 따위를 기억해놓고 재생시키고 특정 스크립트를 실행해서 하는 등의 일을 하는 거다. 물론 처음엔 그 노가다를 수동으로 하다가 마침내 ‘도’를 깨친 것이 ‘자동화’다.
그러니까 사람에게 쓸데없는 똥개훈련 따위를 자꾸 시키면 뇌가 정상 동작하는 인간이라면 자동화를 어떻게든 하게 된다. 나처럼 머리가 느린 사람 조차도. 그래도 뇌가 포도당을 착실히 소비하며 돌고 있는지라.
최근의 그 ‘똥개훈련’은 회사의 전기차 충전소에 줄을 서는 것이다. 한정된 개수의 충전소에 수많은 전기차들이 충전을 원하고 있는지라 어쩔 수 없이 줄을 서야 되는데 이걸 폰 아니면 웹을 통해서 해야 한다. 그래도 착하게시리 내가 원하는 충전기를 골라서 프리셋을 만들어 놓고 여기에 졸을 설 수 있게 되어서 귀찮게 폰을 만지작 거릴 필요가 없다. 그냥 웹사이트에 로그인해서 해당 사이트에서 줄서기를 클릭만 시키면 된다. 다만 문제는 정해진 시간에 이 짓을 꼬박 꼬박 해줘야 된다는 거다.
이를테면 9시 반쯤 출근을 할 것 같은데, 도착하자 마자 차를 물려놓으려면 그 전에 미리 줄을 서 있어야지 9시만 넘어도 수십대의 차들이 줄을 서버리는 불상사가 발생해서 이 때는 잘 해야 그날 3시가 넘어서야 겨우겨우 충전을 할 수 있게 된다. 이런 똥개훈련이 따로 없는 거다.
웹 브라우저를 리모트로 움직이는 방법은 puppeteer라는 nodejs module (python도 있는 것 같다)을 가져다 쓰는 방법이 잘 알려져 있는데, 이걸 오랜만에 써보려니 생각보다 쉽지 않았다. 사실 팬대믹 시절에 어딘가에 규칙적으로 파일을 업로드하는 똥개훈련을 자동화하려고 만져봤던 건데, 이번엔 복병으로 웹 사이트가 쿠키를 써서 접속을 제한하고 있는 거다. 그러니까 로그인 몇 단 계를 지난 상태에서 다 받아놓은 쿠키를 가져다가 미리 셋업하고 스크립트를 돌려야 문제 없이 동작하고 그렇지 않으면 ‘너 휴먼이냐?’ 하는 테스트에 걸리게 된다. 이런 고난이도의 테크닉을 내가 단시간에 만들어 낼 방법은 없으니 다른 방법을 강구해야 된다.
그러니까, 내가 맨날 쓰던 브라우저, 거기엔 이미 여러 번 로그인한 경력이 있으니 원하는 쿠키들이 다 받아져있기 때문에, 정해진 시간에 스크립트로 원격 조정해야 되는 거다. 윈도우즈를 보니 예전에 무료로 쓰던 툴들이 다 유료화 되어있고 스크립트로 다루기가 뭐해서 어쩔 수 없이 내 Mac에서 applescript를 돌렸다.
말이 applescript지 이것은 뭐랄까 딱 정해진 형식이 있고 딱딱한 느낌이긴 한데, 사파리와 시스템이벤트를 불러내서 원하는 페이지를 열고 자바스크립트를 실행하고 키를 누르는 등의 일만 한다. 구체적인 웹에서 일어나는 일들은 자바스크립트로 한다. 사실 로딩된 페이지에 자바스크립트를 또 실행해서 뭘 한다는 게 좀 재밌는데 어쨌든 그러하다.
그렇게 해서 cron으로 평일 오전에 무조건 예약을 걸어두도록 했다. 줄서기가 필요없으면 나중에 해지하면 되니까 어떻게든 아침에 걸어놓기만 하면 된다. 너무 일찍 걸어놓으면 곧바로 당첨! 이 되니 적당한 시간대를 알아내는 것이 중요하다고 본다.
이젠 뭘하려면 컴퓨터 언어도 다국적(?)으로 구사해야 한다. javascript도 쓰고 python도 쓰고 perl도 쓰고 C/C++도 쓰고 shell script도 쓰고 groovy도 쓰고 rust도 쓸 줄 알아야 되고 R도 쓸 줄 알아야 되고, … 이젠 applescript까지. windows의 batch는 안녕이고. FORTRAN/COBOL 그런 원시시절 언어는 다 어디 간 것 같고.