2020년 8월 30일 일요일

자동 출첵 파이썬 프로그램 cron 등록

 개인적으로 시놀로지를 사용하고 있다. 이전에 만든 자동 출첵 프로그램을 주기적으로 실행하기 위해 시놀로지에 도커를 사용해 centos를 설치했다.

centos를 설치 하고 나서는 파이썬 환경을 설치했다.

스크립트 실행은 cron을 사욯했다.

파이썬 환경 설치가 생각만큼 쉽지는 않지만 크게 어렵지도 않은 정도이다.

일단 사이트 2개만 스크립트 만들어서 사용중인데, 조금 더 늘어나면 구조화 시켜야 할 듯 하다.


2020년 8월 28일 금요일

파이썬으로 지마켓 자동 출석 체크

 파이썬을 어디다 쓸까 생각하다 보니, 자동 출석 체크가 역시 만만했다.

예전에 casperjs를 통해 11번가 자동 출첵을 만들었었는데, 지금은 지마켓을 이용하고 있어서 새로 만들었다.

지마켓의 룰렛을 클릭하는 데, NoSuchElementException 아래와 같은 에러가 났다.

확인해 봤더니, 룰렛만 iframe으로 되어 있어서 찾지 못하는 현상이 있었다.

그래서 iframe으로 바꿔줘야 한다.

iframe 이름이 'AttendRulletFrame'이고, //*[@id="wrapper"]/a 이 룰렛 클릭 버튼의 xpath다.


  
  WebDriverWait(driver, 10).until(
    EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@id='AttendRulletFrame']")))

roulette_btn = driver.find_element_by_xpath('//*[@id="wrapper"]/a')
roulette_btn.click()


iframe으로 바꾸면 잘 된다.

2020년 8월 26일 수요일

행복한 삶

 사람은 왜 사는 가에 대한 질문은 사춘기 시절 이후부터 마음 한쪽에 남아있던 오래된 질문 중 하나이다. 그것에 대한 법륜스님의 답변이 꽤 마음에 들었다.

'사람은 그냥 사는 것이다'. 저기 굴러다니는 돌멩이와 내가 하등 다를 바가 없는 존재라고 한다. 이런 이야기에 동의하지 못하는 사람도 있겠지만 나에겐 큰 깨달음으로 다가왔다. 이 말씀은 큰 우주를 보면서 느끼는 감정과 꽤 닮아있다.




보이저 1호가 태양계를 벗어나며 찍은 지구의 모습을 '창백한 푸른 점'이라고 부른다. 이 사진을 보면 지구는 단지 하나의 희미한 푸른 점의 모습을 띠고 있다.

우주에는 관측 가능한 은하로만 약 1,700억 개가 있고 하나의 은하에는 1,000억 개의 항성이 존재한다고 한다. 그중 하나의 은하에 태양계라는 작은 변두리에 우리가 사는 지구가 있다.

사람은 저 큰 우주의 시선으로 보면 정말 티끌보다도 작은 존재란 것을 느낀다. 그러나 사람은 티끌보다도 작은 지구에서 치열하게 살아간다. 사람은 그냥 산다는 말에는 산다는 것은 아무 목적이 없다는 뜻이 있다. 사람은 아무 목적 없이 살 수 있다. 그러나 또 한편으로는 살아가는 의미조차 자신이 만들 수 있는 자유가 있다. 내가 사는 동안 나만의 삶을 내가 만들 수 있는 자유가 있다.


예전에는 행복이라는 의미를 너무 크게 두었다. 기쁜 일이 있을 때만 행복하다고 생각했었다. 그러나 어느 순간 불행하지 않은 삶이면 행복한 삶이란 것을 알게 되었다. 행복의 기준을 낮추면 하루하루가 행복이라는 것을 느낄 수 있다.

많은 사람이 자유롭고 행복한 삶을 꿈꾼다. 행복하게 사는 삶은 걱정이 없다. 과거에 연연하지 않으며, 미래를 걱정하지 않고 오롯이 현재에 충실한 삶을 살 때 행복은 있다.


2020년 8월 24일 월요일

뜨는 언어 파이썬

최근 구직사이트를 열심히 보고 있다. 그중 의외로 많이 보이는 언어가 node.js와 파이썬이다.
그 중 파이썬과는 조금 인연이 있었다. 서버 관리를 하던 시절 서버 프로그래밍으로 잠깐 펄과 파이썬을 살펴보았다. 그러나 펄이나 파이썬은 대부분 필수로 설치가 되어 있지 않아, 고객사 서버에 함부로 설치하기가 어려웠다. 그래서 대부분 쉘스크립트로 처리했었다.
2020년 파이썬은 Java, C 다음으로 인기있는 언어 3위라고 한다. 파이썬을 공부해보기로 했다. 
파이썬을 조금 배우고 느낀점은 굉장히 쉽다는 거다. 기본적인 프로그래밍을 아는 사람이면 쉽게 배울 수 있다. 초보자가 배우기에도 적당한 것 같다.
그리고 파워풀하다. 웬만한 라이브러리는 대부분 다 있다. 자동로그인 후 자동출첵, 엑셀 제어, 파일 제어등 내가 원하던 기능들을 단 몇 줄이면 개발이 가능하다.
나는 유틸성 프로그램을 만드는 걸 좋아한다. 반복되는 업무는 웬만하면 프로그램으로 만들어 쓰길 좋아한다. 그런데 파이썬이 이런 면에서는 딱 맞은 것 같다.

구직사이트를 보던 중 RPA(Robotic Process Automation) 개발자를 구한다는 구직을 보게 됐다. RPA가 뭔가 싶어 검색을 해보니, 반복되는 작업을 자동화해주는 솔루션이다. 내가 반복되는 업무가 싫어서 개발했던 프로그램을 솔루션의 차원으로 승화시킨 것 같았다. 나한테 잘 맞는 업무라 생각해서 나도 모르게 지원을 했다. 그러나 내 경력이랑 다르므로 연락 올 일은 없을 것 같다. 어쨌든 이런 솔루션이 있다는 것을 알게 된 것만으로도 큰 소득이다. RPA 역시 한 번쯤 공부해 두면 좋을 것 같다.

2020년 8월 21일 금요일

팀장의 어려움

경력이 10년을 넘다 보니, 최근에는 팀장 자리를 많이 제시한다. 팀장은 첫 회사에서 한번 해봤다.

당시 회사는 전체 직원 6명인 업체였고, 내 위가 다 나가서 내가 팀장을 맡게 됐다. ㅡ.ㅡ;

팀장 자리를 맡긴 했지만, 아주 어렵지는 않았다. 주간 업무를 보고, 업무를 배정하고, 기술적 부분을 조언해주는 게 다였다.

팀원은 2명이었다. 팀장이라 봤자 밑에 팀원과는 1년 여정도 밖에 차이가 나지 않았기 때문에 격의 없이 지냈다.



그러던 어느 날 사건이 발생했다. 멀쩡하던 서버가 갑자기 다운됐다. 급히 살리긴 했지만, 서버가 다운됐다는 건 매우 심각한 사건이다.

그때 당시 마침 팀원 A가 IDC에서 작업 중에 있었다. IDC에서는 작업하던 도중 간혹 실수가 발생하기도 한다. 혹시나 해서 A 직원에게 실수가 있었는지 물었지만, 아무것도 잘못한 것이 없다고 했다.

어찌 됐든 서버가 다운된 원인을 알기 위해서 로그를 분석하던 결과, A 직원의 잘못으로 볼 수 있는 로그를 확인했다.

로그를 보여주며 다시 한번 물었다. 그랬더니 한다는 소리가 "제가 그랬나 보죠. 뭐." 였다.

순간 솟아오르는 분노를 감추기 어려웠다. 살면서 그렇게 화가 났던 경우는 처음이었다. 내가 화가 나면 말이 없어진다는 것도 그때 처음 알았다.

그 사건 다음 날 이후로 나는 A 직원과 거리를 두었다. A 직원과는 나이도 같았기 때문에 말도 편하게 하던 사이였다. 그것도 하지 않도록 했다. 서로 존대하는 사이가 됐다.



팀장이라는 자리는 팀원들과 너무 멀어도 안 되지만 너무 가까워도 안 되는 것 같다. A 직원과는 나중에 풀게 되었지만, 그 사건은 아직도 팀장이라는 직책의 어려움을 느끼게 되는 계기가 되었다.

개발 문화

잘 다니고 있던 직장을 그만두고 스타트업 회사로 이직한 이유는 반복되는 개발이 지겨워졌기 때문이다. 새로운 기술이 나오면 혼자서 따라하기를 해 봤지만, 맛보기에 지나지 않았다. 갈증은 채워지지 않았다. 실제 프로젝트에 써먹고 싶었다.
대규모 프로젝트의 대부분은 스프링(전자정부프레임워크) 기반에 mybatis를 사용한다. 어떤 프로젝트이냐에 따라 다르겠지만 적어도 내 기준에는 그랬다.
어떻게 보면 당연하다. 개발자 구하기도 쉽고, 기존에 성공 사례가 많은 안정적인 환경이기 때문이다.

스타트업으로 가고 나서 개발 대부분을 위임했기 때문에 mongodb나 spring webflux 등 신기술을 실제 프로젝트에서 사용해 볼 수 있었다. 이 부분은 스타트업의 장점인 것 같다. 하지만 스타트업에서 정작 중요한 건 개발 문화였다. 형상 관리 툴을 전혀 사용하지 않고, 소스를 개발자 본인이 가지고 있었다. 업데이트할 때면 ftp를 사용하였다. 팀장님이 개발자 출신이셨지만, 형상 관리나 CI/CD의 중요성을 전혀 인지 하지 못하고 계셨다. 대부분의 다른 개발자 역시 그냥 되는 대로 일하고 있다는 느낌을 지울 수 없었다.
그나마 같이 일했던 분께서 이런 부분의 중요성을 인지하고 계셨고, 그분과 프로젝트를 할 때는 gitlab을 설치하여 소스를 관리했다. 다른 개발자에게도 gitlab을 설치했으니 같이 쓰면서 소스 관리를 하자고 했지만, 들어 처먹지 않았다. 강제성이 없었다. 팀장부터가 형상 관리를 하지 않았으니 말 다 했다.
반복되는 것 같은 개발이 싫어서 이직했는데, 만족도가 그 전보다 더 나아지진 않았다.

신기술을 적용해 볼 수 있는 환경이 중요한 게 아니였다. 정작 중요한 건 개발 문화였다. 어떤 이슈가 있을 때, 열린토론을 할 수 있으며, 이슈를 해결하는 데에 최적으로 해결 할 수 있는 기술이 있다면 도입하는 데, 주저 하지 않는 문화가 필요했던 거다.

정작 중요한 건 개발 문화였던 것이다.

2020년 8월 18일 화요일

제주도에서 같이 일해 보지 않을 래?

 예전에 같이 일했던 형이 오랜만에 연락이 왔다. 현재 구직 중이라고 하니 자기가 다니는 회사에서 같이 일하자고 제안을 줬다. 그런데 지역이 제주도다. 제주도... 제주도에서 일하는 건 생각도 안 해 봐서 이틀만 생각할 시간을 달라고 했다. 제주도에서 일하는 상황에 대해 검색을 해 봤다. 나름대로 장단점이 있었다. 장점이라면 역시 제주도의 자연 친화적인 환경이었다. 누구나 한 번쯤은 꿈꿔봤을 것이다. 출근길 혹은 퇴근길 푸른 바다와 상쾌한 공기를 마시며 주말에는 집 앞에 나가는 것만으로도 휴가를 온 것 같은 상상 말이다. 또 하나의 장점으로는 기본적으로 일과 삶의 균형이 잘 지켜진다고 한다. 그러나 직종 특성상 그러한 것은 별 믿을 게 못 된다고 생각했다. 단점은 평균적으로 낮은 임금이다. 이것은 미리 알려줬다. 희망 연봉만큼은 못 챙겨주겠지만 그만큼 힘들지 않다고 했다. 힘들지 않다는 건 일 해봐야 아는 것이지만 연봉은 고정된다. 연봉이 높지 않다는 건 지방으로 가는 특성상 어쩔 수 없이 감당해야 하는 것 같다. 다른 하나는 꽤 높은 물가이다. 섬 지역이다 보니 육지에서의 배송비가 꽤 많이 든다. 그렇다 보니 일반적인 생필품은 모르겠지만 온라인 쇼핑으로 주문은 배송비가 비싸다고 한다. 배송비가 비싸면 어쩌면 온라인 쇼핑을 잘 안 할지도 모르겠다. 비싼 배송비를 생각하며 한 번 더 생각하지 않을까. 집을 구하는 문제도 있지만 이건 기숙사를 제공한다고 했으니 상관이 없었다.

결론적으로는 제주도로 가는 것은 무리인 것 같다고 알렸다. 한 번쯤 제주도에서 일하는 것도 나쁘지는 않은 것 같다. 그런데 그런 로망은 나에게 아직 큰 의미가 없다고 생각됐다. 또 하나는 지금 가지고 있는 짐의 처분 문제가 걸렸다. 제주도로 이사하기는 어려워서 대부분 처분하고 거의 몸만 가는 형태가 돼야 하는 데, 이게 힘든 일이 될 것으로 생각됐다.

결국에는 거절했지만, 제안해 줘서 고마웠다. 같이 일해보자는 제안만으로도 힘이 되었다. 최근 이력서를 조금씩 내기 시작하면서 약간 조바심이 났던 것 같다. 그러나 아직은 나를 알아주는 사람이 있다는 사실 하나만으로도 힘이 났다.

직장에서의 관계는 비즈니스 그 이상도 이하도 아니라는 글을 어디서 읽은 적이 있다. 나는 그렇게 생각하지 않는다. 매우 힘든 업무를 할 때도 같이 일하는 사람이 누군가에 따라서 업무가 재미 있어진다. 야근하더라도 힘들지 않다. 반면에 아주 간단한 일도 합이 잘 맞지 않는 사람과는 아주 괴롭고 힘든 일이 된다. 직장 관계를 단지 비즈니스로 본다면 사회생활은 매우 삭막할 것 같다.