brunch

You can make anything
by writing

C.S.Lewis

by 반병현 Dec 24. 2018

수 천 개의 텍스트 파일을 1초 안에 합쳐 보자 (1)

반복문, 텍스트 입출력

  이 매거진은 컴퓨터공학을 전공하지 않은 일반인들을 위한 업무 자동화 강좌입니다. 반드시 첫 화부터 순차적으로 글을 읽으실 필요는 없지만 파이썬 3 프로그래밍을 위한 개발 환경을 컴퓨터에 세팅하는 과정이 필요하므로 아래 글을 읽지 않으신 분은 읽고 오시기 바랍니다.




  살아가다 보면 마주하고 싶지 않은 현실을 마주해야만 하는 때가 있다. 항거할 수 없는 폭력에 전신이 노출되는 좌절감을 느껴본 적 있는가? 스스로의 자유의사와는 상관없이 원치 않는 일을 견뎌야 하는 굴욕감을 말이다. 아마 우리는 경제활동을 지속하는 한 이러한 폭력을 끊임없이 감내해야 할 것이다.


  사회생활이라는 마법의 단어는 인간을 나약하게 만든다. 잘못된 것을 잘못이라 말할 수 없으며 더 뛰어난 의견을 목구멍 아래로 삼키게 만드는 불합리한 상황은 사회생활이라는 미명 아래 정당화되고, 당연시된다. 가해자도 사라지고 피해자도 사라진다. 오로지 상황과 조직, 그리고 관습만이 주체가 된다. 개인이 폭력에 노출된 상황에서 사회생활이라는 키워드를 들이대는 순간 상황의 입장에서도, 조직의 입장에서도, 관습의 입장에서도 불합리란 존재하지 않는다. 불합리란 개인에게만 존재하는 것일 텐데 그 개인의 의사가 배제되기 때문이다.

 

  그러므로 우리는 직장에서 아래와 같은 지시를 거부 없이 수용한다.


  "병현씨, 여기 있는 자료 4천 개를 하나의 파일로 합쳐 오세요."


  인간의 존재 가치는 파일을 합치는 단순 노동에 소비해버리기에는 너무나도 귀하고 소중하다. 조직의 입장에서는 반드시 필요한 업무일지 모르겠으나 이는 한 사람의 가치를 단순 반복이라는 틀로 규정하여 더욱 창조적이고 아름다운 가치를 생산할 기회를 앗아가는 폭력이다.


  그러므로 우리는 단순 업무를 컴퓨터에게 하청을 줘 버리고 그동안 더욱 현명한 방식으로 우리의 소중한 시간을 소모하며 인간 본연의 감수성을 해방하는 작업에 몰두하는 것이 옳다. 이를 위한 수단으로는 웹툰, 드라마, 영화, 모바일 게임 등을 추천한다. 실적과 승진에 욕심이 있다면 그동안 다른 업무를 처리하는 유능한 직원이 될 수도 있을 것이다.



n명의 사람의 개인정보를 합쳐서 하나의 문서로 통합하는 과제 예시


  이번 강좌에서는 여러 개의 파일을 하나로 합치는 과정을 어떻게 자동화할 수 있는지 실습해 보도록 하겠다. 위 그림과 같은 상황이라 생각하면 되겠다. 총 n명의 사람이 각각 작성해 제출한 개인정보를 하나의 파일로 통합하는 과제이다.


  n이 충분히 작은 상황을 가정해 보자. 예를 들어서 5명으로 구성된 부서가 있는데, 부서원들이 각각 제출한 파일을 단순히 합치는 작업이라면? 5명 정도면 사람이 직접 합쳐도 충분히 짧은 시간 안에 목표를 달성할 수 있을 것이다.


  하지만 n이 커지면 커질수록 우리가 직접 작업을 처리하는 것은 현명하지 못한 일이 된다. 여러분의 직장에서 이벤트를 열었고, 이 이벤트에 참여한 사용자의 숫자를 n으로 둬 보자. 이벤트가 매우 성공적이어서 10만 명의 고객이 개인정보를 제출했다고 생각해 보자. 이 정도 규모의 숫자를 한 개의 파일로 합치는 작업을, 한 사람이 수행하는 것이 가능하기는 할까? 그리고 이벤트가 너무 성공적이어서 일 년에 4번씩 이벤트를 개최하기로 결정했다면?


  단순 반복 업무이면서 한 번에 처리할 데이터의 양이 굉장히 많은 업무는 코딩이 가성비가 좋다. 위에서 본 사례와 같이 합쳐야 될 데이터가 10만 개쯤 된다면 어차피 한 달 만에 못 할 업무이므로 차라리 한 달 동안 학원에서 코딩을 배워 오는 게 더 빠를 수도 있다. 그리고 그런 업무가 정기적으로 발생한다면? 더더욱 코딩의 위상이 높아진다. 코딩은 한 번만 해 두고 업무가 발생할 때마다 클릭만 한 번씩 해 주면 되기 때문이다.


  이번 강좌를 준비하는 과정에서 사소한 문제가 하나 있었다. 실습에 사용할 개인정보 데이터를 제조하는 것 또한 단순 반복 작업이기 때문이다. 그래서 오늘 실습은 총 두 개다.


  (1) 실습에 사용할 가짜 개인정보 2천 건을 생성한다.

  (2) 2천 건의 개인정보를 합쳐서 하나의 파일로 합친다.


  2천 건이라 표현했지만 원한다면 숫자 하나만 바꾸는 것으로 2천만 건의 가짜 개인정보를 생성하는 것도 가능하다. 자, 그러면 지금부터 실습을 시작하겠다.



  예제 코드 다운로드 방법

  실습에 앞서 오늘 사용할 예제 코드를 다운로드하는 방법을 가르쳐주도록 하겠다. 한 번 다운로드하는 것으로 끝나는 게 아니라, 필자가 교육을 위하여 만든 일종의 작업실을 여러분의 컴퓨터와 연동시키는 것이다. 쉽게 비유하자면 필자의 온라인 강의실을 여러분의 컴퓨터에 연결한다고 생각하면 된다. 여기에 필자가 새로운 교육자료를 계속해서 올릴 것이다. 여러분은 필요할 때마다 강의실에 올라온 새로운 자료를 받아볼 수 있게 된다.


이어지는 내용은 아래 링크에서 감상하실 수 있습니다.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari