2020년 9월 6일 일요일

변기 배관 막힘

 변기가 막혔다. 음식물 쓰레기를 잘못 버린 게 문제였다. 혼자 사는 지인의 집에 갔을 때, 음식물 쓰레기를 변기로 처리하길래 좋은 방법이라고 생각했다. 멍청한 생각이었다.

나흘 동안 변기를 뚫기 위해 온갖 방법을 다 동원했다. 그간의 노력을 기록으로 남긴다.


1. 페트병

예전에 한 번 뚫었던 적이 있어서 시도했으나, 이번에는 잘 안 됐다. 막힘의 정도가 달랐다.


2. 뚫어펑

다이소에서 샀다. 1,000원이다. 안된다. 뚫어뻥은 고무가 얇은 게 잘 뒤집어지지 않아 좋다고 한다. 다이소에서는 한 가지밖에 없었다.


2. 뚫어펑 액체

액체를 붓고 30분 정도 지나 물을 내려 확인했으나 그대로였다. 자기 전 부어 넣고, 아침에 확인했으나 역시 그대로였다.

0.5L를 넣으라는 걸 1L로 넣은 거였는 데도 그렇다.


3. 철사 옷걸이

절대 안 된다. 이걸로 된다는 사람들은 도대체 어떻게 했다는 건지 모르겠다.


4. 세제와 뜨거운 물

역시 안된다.


5. 미스터 펑

거금 5만 원을 주고 샀다. 이전 버전이 3만 6천 원 정도인데, 나중을 위해 올인원이라는 신형을 샀다. 택배를 받은 후 기쁜 마음으로 도전했다.

참패다. CO2가 2박스가 같이 오는데, 한 박스에 10개가 들어 있다. 11개를 썼지만, 안됐다. 댓글 간증을 너무 믿었다.

구멍을 막는 고무가 작다. 물이 튄다. 한 박스를 다 써도 안되니 더는 시도해 볼 용기가 나지 않는다. 한 박스면 6천 원이다.

중고나라 행 결정이다.


6. 관통기

나의 구세주. 철물점에서 9천 원에 샀다. 온라인에서는 5천 원 정도다. 배송비 생각하면 비슷한 가격이다. 관통기 역시 처음에는 안됐다. 땀을 삐질삐질 흘리며 힘써 봤지만, 안됐다.

거의 자포자기였다. 업체에 예약을 하고 혹시나 하는 마음으로 다시 시도했다. 됐다. 물이 내려가는 게 믿기지 않았다.

다시 한번 확인했다. 물이 잘 내려간다. 이때의 카타르시스는 뚫어 본 사람만 안다. 모든 방법을 다 동원하고 자포자기하고 있을 때 뚫리는 순간의 기쁨을 모를 것이다.


변기 막힘으로 인한 검색으로 참 많은 걸 알게 되었다. 대표적인 게 비데용 물티슈라는 거다. 물에 분해 되는 성분으로 만들었다고 한다. 이게 다 마케팅이다. 내가 쓰고 있는 물티슈 역시 물에 녹는 재질이라고 했다.

실험해 봤다. 컵에 수돗물을 받고 물티슈를 넣고 1시간을 기다렸다. 티슈는 전혀 분해 되지 않았다. 믿을 게 하나도 없다.

얼마나 많은 사람이 변기에 음식물 쓰레기를 버리는지 알게 됐다. 음식물 쓰레기는 쉽게 분해 되지 않기 때문에 배관이 막히는 원인이 된다. 변기에는 변과 휴지만 넣기로 다짐했다.

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을 설치했으니 같이 쓰면서 소스 관리를 하자고 했지만, 들어 처먹지 않았다. 강제성이 없었다. 팀장부터가 형상 관리를 하지 않았으니 말 다 했다.
반복되는 것 같은 개발이 싫어서 이직했는데, 만족도가 그 전보다 더 나아지진 않았다.

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

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