깃허브 링크 : https://github.com/minseokLim/wanted-job-search

 

필자는 잠시 휴식 기간을 가지고 이제 다시 구직 활동 중이다. 원티드를 주로 이용하는데, 필터 조건이 너무 마음에 들지 않았다. 나는 Spring + Java or Kotlin 기반의 개발을 해왔고, 다음 회사에서 프레임워크와 언어를 바꾸고 싶은 마음이 아직은 없었다. 근데 원티드에서 제공하는 필터링 기능을 이용해서 검색을 하면, 프론트엔드, PHP, Node.js 공고가 섞여서 나왔다....-_- 그 밖에도 온갖 걸려야할 것들을 일일히 누르면서 거르고 있자니... 너무 단순 반복 작업이고 개발자스럽지 않았다. 그래서 Python selenium을 이용하여 이를 자동화해보기로 했다!!

참고로 필자는 파이썬에 대해 거의 아는 게 없다. 그래서 파이썬 개발자가 보기엔 코드가 매우 우스워 보일 수도 있다;;

그리고 원티드에서 UI를 개편하거나 화면 구조를 살짝 틀어도 제대로 동작하지 않을 수 있다^^;;;

 

사용법은 다음과 같다.

 

1. 필요한 라이브러리 설치 : 터미널에서 다음 명령어를 쳐서 필요한 라이브러리를 다운 받는다. 크롬 기반으로 동작하므로 크롬은 반드시 설치되어 있어야 한다.

python -m pip install --upgrade pip
pip install selenium
pip install webdriver-manager

 

2. 깃의 소스 코드를 클론 받는다.

3. 소스 코드 상의 상수 4개를 자신의 상황에 맞게 변경한다.

  • FILTERED_RECRUITMENT_URL : 원티드에서 제공하는 필터링 기능을 사용한 이후의 URL이다. 필자의 경우, 경력 3년, 개발 > 서버개발자, 자바개발자를 선택하였다.
  • FILTERING_POSITION_REGEX : 필터링할 채용 공고 제목의 정규식이다. 이 정규식에 매칭되는 채용 공고들은 대상에서 제외된다.
  • FILTERING_COMPANY_REGEX : 필터링할 회사명의 정규식이다. 이 정규식에 매칭되는 회사명들은 대상에서 제외된다. 필자의 경우 바로 직전 회사와 면접을 본지 몇 달 지나지 않은 우아한형제들을 제외시켰다.
  • JOB_DESCRIPTION_REGEX : 채용 상세 페이지에서 JD(Job Description)에 반드시 포함되었으면 하는 내용에 대한 정규식이다. 이 정규식에 매칭되는 채용 공고들만 북마크가 된다.

4. 실행 : 터미널에서 아래와 같이 실행한다. 첫번째 인자는 자신의 이메일 주소이고, 두번재 인자는 비밀번호이다.

python main.py test@test.com testpassword

 

5. 기다린다. 꽤 오래걸린다. 각자의 네트워크 상황에 따라 조금씩 다르겠지만 필자의 경우 대략 1시간이 소요되었다...^^;;

 

이제 필터링된 채용 공고들이 나의 북마크에 추가되었다. 근데 북마크된 것만 500건이 넘는구나...-_- 1700건 -> 500건으로 줄었으니 잘한 일이라고 봐야할까...?;; 좀 더 손을 봐야하겠지만, 아무튼 셀레니움을 사용해보는 재밌는 경험이었다.

 

 

※ 참고 : https://greeksharifa.github.io/references/2020/10/30/python-selenium-usage

너무 잘 정리해놓은 페이지가 있어서 기록용으로 남겨놓는다.

https://antennagom.com/1020

 

노션 페이지 자신의 도메인으로 연결하는 방법 (2021년 11월 기준)

노션 페이지를 자신의 도메인으로 연결하는 방법 - 에버노트 대신 노션으로 갈아타서 주요 노트앱으로 사용하시는 분들이 많은데요. 에버노트와는 다른 노션만의 장점이나 기능이 있죠. 메모장

antennagom.com

 

 테스트 코드를 작성할 때, 보통 아래와 같이 given, when, then 이라는 주석을 관례로 추가하곤 한다. 

 근데 매번 저걸 타자로 치고 있자니... 뭔가 개발자스럽지 않은 것 같았다. 그래서 인텔리제이에서 제공하는 커스텀 템플릿 기능을 활용해보았다.

 

1. 설정 방법

 1) Preferences > Editor > Live Templates 로 이동한다.

 2) 아래의 이미지에서 처럼 + 버튼을 눌러서 Template Group을 추가한다. Group 명은 적당한 것으로 한다. (필자는 other로 했다)

 3) 왼쪽에 추가된 Template Group을 선택한 뒤 아까와 동일한 + 버튼을 누른 후 Live Template을 누른다.

 4) Abbreviation에 단축키로 사용할 단어를, Description에 이 템플릿에 대한 간단한 코멘트를 적는다. Template text에는 템플릿의 내용을 적으면 된다.

 5) 마지막으로 이 템플릿이 적용될 언어를 아래와 같이 선택한다. 여기에선 Java를 선택한다.

 

 이제 단축키를 누르면 아래와 같이 자동 완성 기능을 사용할 수 있다.

일반적으로 intellij와 같은 IDE를 통해 파일명을 변경하게 되면, 아래와 같이 '이름 바꿈'으로 GIT이 인식하도록 IDE가 알아서 처리를 해준다. 이는 IDE가 일반적인 리네임 방법인 mv가 아니라 git mv 를 사용하기 때문이다.

헌데 필자는 현재까지의 작업 상황을 잠시 stash 한 후 다시 pop하여 사용할 일이 생겼다. 그랬더니 아래와 같은 상황이 벌어졌다-_-

이렇게 되니, 현재까지의 작업 내용을 확인할 때 이름만 변경한 건 무엇이고 실제로 새로 추가한 파일은 무엇인지 파악하기 힘들어졌다. 구글링 끝에 아래와 같은 명령어를 이용하면 된다는 걸 알게 되었다.

git commit --dry-run -a

 

여담으로, git status를 통해 새 파일과 삭제한 파일로 인식되던 것도 git add를 하게되면 알아서 다시 이름 바꾼 상태라는 걸 git이 인식하게 된다. 따라서 위 명령어는 add 하기 이전에 작업 상황을 파악하는데 사용하면 좋을 것 같다.

 

- 참고 : https://stackoverflow.com/questions/2641146/handling-file-renames-in-git

MS word에서 글을 작성하고 이를 에디터로 붙혀넣으면, mso-ascii-font-family, mso-pagination 등의 mso를 prefix로 가지는 css 프로퍼티들이 딸려온다.

헌데 이러한 프로퍼티는 브라우저에서는 인식이 되지않고 때에 따라서 오류를 발생시키기도 한다.

따라서 붙혀넣는 이벤트를 가로채서 mso를 prefix로 가지는 css 프로퍼티를 삭제하는 로직을 만들었다.




실무에서 다른 업체의 라이브러리를 사용하다보면 라이센스가 각 서버의 hostid를 기준으로 발급이 될 때가 있다.

따라서 도커를 사용해서 개발한다면, 도커의 hostid도 도커 컨테이너가 실행되고 있는 호스트의 hostid와 동일해야할 필요가 있다.


아주 간단한 옵션을 통해 해결이 가능하다.


docker run 이미지 --net=host

Spring boot를 이용해 개발한 소스를 도커 이미지로 빌드하는 과정에서 발생한 이슈다.


maven-resources-plugin의 copy-resources 기능을 이용해  dockerfile 및 이미지 빌드에 필요한 파일들을 target/dockerfile로 복사한 후에 도커이미지를 빌드하려고 했다. 



복사하는 파일에는 tar.gz 파일도 포함되어있었다. 헌데 도커이미지가 빌드되는 과정에서 자꾸 tar.gz파일이 gzip파일이 아니라는 에러 메시지가 나왔다.

하지만 아무리 확인해봐도 파일에는 이상이 없었는데, 원인은 filtering 옵션 때문이었다.



이 옵션을 false로 바꾸니 잘 동작하였다. 아마도 저 옵션으로 인해 압축파일에 변형이 생긴 것으로 보인다. 다만 저걸 false로 하였기 때문에 아래처럼 dockerfile내에 모든 내용을 명시적으로 적어줘야하는 불편함이 따르긴 했다.


개인프로젝트를 할 때는 도커 이미지를 도커 허브에 올린 후, 그 이미지를 서버에서 다시 다운받아서 배포를 진행했다.

근데 회사에서 도커를 사용할 때는 어떻게 하지? 회사 소스를 도커 허브에 올릴 수는 없는 노릇이었다.


아래와 같이 도커 이미지가 있다.


이 중에 나는 제일 위의 이미지를 서버에 올리고 싶다.

이 때는 아래의 명령어를 쳐서 tar 파일을 만든다.


생성된 tar파일을 scp를 통해 서버로 전송한다.


서버에 ssh로 접속한 후에 아래의 명령어를 입력한다.



이제 서버에서도 docker images 명령어를 통해 업로드한 이미지를 확인할 수 있다.

+ Recent posts