Skip to content

KYankee6/kuemho23

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

kuemho23

금호 2-3가 동주민센터에서 근무하며 만든 자동화 도구들

1. 도서관 스캐너(GUI)

  • 만든 이유?
    당시 2층 서가에 약 8000 권 되는 도서가 있었다. 이게 서가 정보 시스템과 연동이 되어있었으나, 실제로 일치하는지 수기 로 작업을 해야 했다.
    처음엔 내 업무가 아니었으나, 도서관에 있으며 자원봉사자께서 책을 일일히 꺼내 확인하는 모습에 경악을 금치 못했다.
    8000권을 하루에 100권씩해도 최소 80일이 걸린다. (Ω(8000) = 80) 100권씩 확인하는데에도 N시간이 소모됐다. (N이 충분히 컸다!!! 책 꺼내기 - 확인(O(N)) - 다시 집어넣기) 기존 방법은 엑셀에서 ISBN 순으로 정렬하여 책들을 인쇄하고 있으면 체크, 없으면 없음 표시했다.
    그래서 기계가 노동을 해방해주리라 라는 생각과 python으로 GUI 프로그램을 만들고 싶어서 도서관 스캐너를 만들었다.

  • 아이디어 (기획)
    먼저 도서관엔 도서 스캐너가 이미 존재하였고, 이를 통하여 바코드를 읽을 수 있었다.
    스캐너는 바코드를 읽고, 바코드값이 책을 구별해주는 어떤 유니크한 값(Serial No.)이라면, 엑셀을 다운로드 받아 이 책이 정보 시스템에 존재하는지를 확인 할 수 있었다.
    그러므로 정보시스템내 모든 도서를 엑셀로 반출하고, 이를 메모리에 올려놓고, 스캐너로 받은 값을 읽어들여 엑셀에 존재하는지 확인하면 됐다!

  • 해결 과정

  1. PyQt5로 GUI 제작 (GUI 제작 툴이 있었다.)
    1.1 시리얼 입력 칸입력 버튼
    1.2 집계 현황 (해당 시리얼 번호가 존재하는지)
    1.3 엑셀화 (현재까지 작업을 저장하고 엑셀화) -> 구현안된듯
    1.4 (우측하단) 현재 시리얼 번호 표시
  2. 반출된 엑셀을 메모리에 올리기
  3. 맞다면 파랗게 존재합니다! 없으면 빨갛게 존재하지 않습니다! 출력

image

  • 성과, 피드백
    먼저 소장자료 확인 시간이 거진 1/10 ~ 1/100으로 줄어들었다.
    사람이 일일히 해당 자료가 존재해야 하는지 확인 할 필요가 전혀 없었기에, 스캐너를 노트북에 꽂아놓고 이동하며 바코드만 찍었으면 됐다.
    해당 스캐너를 만들고 한 500권정도 테스트해보며 소장자료를 확인했는데, 시리얼 번호가 똑같거나 하는 문제가 가끔 있었긴 했다.
    이를 해결하려면 시리얼 번호를 확인하여 새로운 바코드를 부착하면 됐다.

2. 대형생활폐기물 정산 프로그램(python)

  • 만든 이유?
    사회복무요원 (Agent.. 큭큭) 을 하며 대형생활폐기물 창구에서 일명 딱지를 떼어주는 업무를 했다.
    그리고 딱지를 끊으면 돈을 받고(카드, 현금) 정산하여 합계가 맞는지 확인하였다.
    기존 확인 프로세스는 이러했다.
  1. 대형생활 폐기물 관리자 홈페이지 접속
  2. 엑셀 반출
  3. 엑셀의 필터 기능 이용하여 카드, 현금 합계 계산
  4. 실제 현금과 카드 정산가격이 맞는지 확인

여기서 4는 자동화 하려면 돈 세는 기계가 필요했기 때문에 불가능하다고 생각했다.
그러면 1~3을 자동화 해보자고 생각했다.

  • 해결 과정
    먼저 실패한 해결 과정이다.
    웹사이트를 접속하여 크롤링하여 정산하는 것이었다. 그러나 당시 DOM에 대해 잘 몰랐었기에 실패했다.(지금은 잘 아는척)
    뭔가 계속 가져와야하는데 class이름이 같아서 forEach문을 돌릴줄 몰랐던거 아닐까? 생각한다.
    성공한 해결 과정
  1. 크롬을 키고 대형생활 폐기물 관리자 페이지에 로그인한다. (크롬 드라이버 이용)
  2. 오늘 날짜를 받아와 웹 페이지에 입력한다.
  3. 웹사이트의 엑셀반출 기능 이용
  4. python excel library를 이용하여 엑셀을 읽는다.
  5. 프롬프트 창에 카드, 현금 합계를 출력한다! 정산 끝!
  • 해결 중 마주친 문제
  1. 먼저 크롬드라이버를 사용하려면 웹 사이트를 켜야하는데 안켜진 경우 예외가 생겼다.
    -> pyautogui라는 입력 라이브러리를 사용해서 win+숫자키로 크롬을 켰다! 잔머리
  2. 인터넷으로 접수한 사람도 전산에 뜨는데 나는 인터넷에 접수한 사람에게 결제를 받은 적이 없다.
    -> 인터넷 접수 flag를 찾아(동접수) 이를 제외하고 정산하였다.
  • 추가 기능
    정산 끝나고 항상 프린터로 뽑아 인쇄물 형태로 저장했어야 했는데, 정산하는김에 같이 추가했다.
    SRP를 아주 제대로 어겼던 샘이다

  • 성과, 피드백
    실제 성과는 이 프로그램 돌려놓고 잠시 담배타임 가지는 여유가 생겼다는 정도다.
    그렇지만 이 역시도 내가 개발자로서 실생활 문제를 해결할 능력이 있구나!라고 생각되어 뿌듯했다.
    실생활의 문제를 직접 푸는게 나에겐 중요했다.
    많은 기업에 자소서에 성장과정이나, IT 업계에 들어온 이유를 적으라면 항상 적는 구절이 있는데,
    TV나 영화속 공학자/개발자들이 세상의 문제를 해결하는게 멋있어 보인다!라고 적었다.
    문제를 해결한다는 매력적이고 세상의(실제)문제를 해결하는 것은 더욱 매력적이다!
    그러나 실제로 컴공과에서 배운건 실생활의 문제를 해결하는 것과는 죄금 거리가 있었다.
    그렇지만서도, 컴공과에서 배운 지식들 + 조금의 구글링으로 실생활 문제를 풀었음에 큰 의미를 둔다.

먼저 크롬 드라이버를 사용하느라고 크롬을 키고 로그인하는 장면까지 보였기에 여러가지 문제가 있었을 것 같다.(이용자 입력 등)
애초에 디버그 한다고 excel, web 페이지를 전면에 보이게 했기 때문에,, 그렇게 좋은 UI/UX는 아닐 것이다.
지금 문제를 다시해결한다하면 아무래도 ajax 요청을 보내 엑셀을 다운로드 받아 해결 했을 것 같다.(그때도, 지금도 DB접근이 안되기에)


마치며..

도서관 스캐너 프로그램

물론 UI/UX가 훌륭하진 않지만, 당시에 빠르게 만들 수 있는 솔루션이었다.
뭔가 SW로 내가 문제를 해결했다는 생각에 매우 뿌듯했고, 담당하셨던 봉사자 분도 자녀를 컴공에 보내고 싶어하셨다 😎
image
이렇게 일상에 SW로 문제를 해결 할 수 있다는 것에 매우 기뻤다!

정산기

반복되는 일을 하기 싫어한다는 것은 개발자의 숙명 아닐까? (큭..큭큭.. 반복되는,, 숙명,, 큭큭)
이때부터 자동화를 돌리려는 노력을 했다니 대견하기도 하면서 뿌듯하기도하면서 그렇다.

종합해보자면 참 좋은 토이프로젝트였다.
어떤 심오한 알고리즘이나 큰 문제점은 없었지만(PyQt5 GUI 만드는 법 정도?) 실생활의 문제를 풀었다는 것이 매우 뿌듯하다.
그리고 개발자로써 가져야하는 소양같은 것도 보여줄 수 있다고 생각한다. (귀찮으면 코딩해라)
문제를 효율적으로 해결하기, 반복되는 작업은 자동화하기
앞으로의 커리어 개발에도 이 두가지는 빠지지 않을 것 같다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages