목표

  • 50MB가 넘어가는 엑셀 파일 두 개를 join시키는 것
  • 기준이 되는 column은 유동적이며, 사용자가 직접 고를 수 있을 것
  • 프로그래밍에 대한 지식이 없는 사람도 간단하게 사용할 수 있을 것.
  • 한 프로세스 내에서 끝날 것
  • 엑셀 제공 함수보다 속도가 빨라야 함(이건 무리일수도)

 

openpyxl은 쉽고 간단하나 속도가 느림 제대로 된 merge함수가 없는 것 같음아니면있나?

read_only로 불러오면 속도는 다소 빨라지나 iter_col 사용이 불가능하다. 열만 조회하는 것도 불가능

몇만 row 이상은 데이터 읽다가 세월이 끝나겠음 이러면 툴을 짜는 의미가 없다.

검색이 가능하면 좋겠으나 무작위 데이터의 산더미라 딱히 깔끔한 탐색 방법이 떠오르지않는다

 

pandas를 사용할 것, openpyxl보단 xlrd가 좋으나 1M행이 넘으면 열리지 않는다(넘는거같은데..)

엑셀파일을 그대로 불러오는 것보다 csv파일 형태로 불러오는 게 훨씬훨씬 빠르다

분단위를 초단위로 개선시킬 수 있다

 

한줄로 끝날 줄 알았더라면 진작에 pandas를 썼을텐데 ㄱ-

self.df2.columns.difference(self.df1.columns) -> 겹치는 열 날릴때, 조인에는 쓸수없다만

result_df = pd.merge(self.df1, self.df2on=self.col_select.get(), how="inner")

 

의문점

  • 함수를 사용한 경우 함수를 유지시켜야 하는가?
  • 기타 서식을 유지시키는 방법은?
  • 느린 건 내 컴퓨터의 문제가 아닌가?

그냥 별 건 없고 레트로에 꽂혔는데 적당한 테마가 없어서 윈98 컨셉으로 작업.

아이콘을 제외하고 최대한 이미지를 배제하였음. 대부분 CSS로 처리했다.

status bar에 있는 냥캣은 그냥 기믹. 누르면 랜덤으로 음악이 재생된다.

 

간단한 미디어 스트리밍 api를 만들었는데, 월에 최최최대 45~60기가 가까이의 트래픽이 발생할 예정이다.(보통은 하루에 1기가 이하가 아닐까) 10메가 전후의 파일을 post로 업로드하면 파일에 대한 id값(md5해시)을 받고, 그 값을 통해 액세스하는 아주 원시적이고 위험하다 싶은 방식이다. 이 때 파일 자체의 위치는 겉으로 드러나지 않는다. 대신 무식하게 파일 전체를 response한다... php초보라 어쩔 수 없다. 잘 모른다. 되면 그만. ddos를 막기 위해 리퍼러 제한을 걸어두긴 했지만 리퍼러 째로 위조하면 그만이고...ㅡㅡ

기능 특성상 웬만한 호스팅 업체의 약관에 위배되는 탓인지(외부 트래픽, 미디어 스트리밍 등등) 수많은 해외 무료 호스팅 서비스를 이용해 보았으나 대부분 실사용하기 전 테스트 과정에서 곧바로 밴당하는 결말을 맞았다ㅡ.ㅡ 트래픽 제한값이내에서만 활용해도 약관 위배 여지가 있다면 칼같이 계정을 날려버린다. 어떠한 언질도 없이...

그래서 어쩔 수 없이 현재 유료로 사용중인 호스팅에 남는 트래픽을 이용할 겸 돌려볼까 싶다가도 어떤 불이익을 받게 될지 도무지 알 수 없어져 막막하기만 했다. 무엇보다 각종 기능이나 설정에 제한이 걸려 있어 내가 원하는 기능을 완벽하게 구현할 수 있는 호스팅 서비스가 생각보다 없었다. 그나마 찾은 곳들도 약관이 깐깐하거나 트래픽 문제가 심각했다. 원치않는 기싸움은 덤이다.

헌데 안드로이드 기반 휴대폰 굴러다니는 것 꽤 많지 않은가. 이걸 이용해도 되겠다는 생각이 들었다. 하루에 1~2기가는 흔히들 쓰니까 가정집에 부담가는 트래픽도 아니다. 무엇보다 내마음대로 원하는 환경을 구축할 수 있는 게 좋다.


여기까지가 일대기였고, 이후는 세팅에 대한 메모.

남는 폰과 공유기를 이용하면 간단하게 구축할 수 있다.

공유기는 네티스나 iptime제품이면 되는데, 다른 회사 제품도 가능한 모델은 있을 것 같다.

ddns설정으로 공유기 자체적으로 도메인을 연결시킬 수 있다.

보통 일반 가정에선 통신사에서 할당받는 ip를 쓰기 때문에 그때그때 ip 주소가 바뀌기 일쑨데, 알아서 따라가게끔(? 설정할 수 있다.

그 후 공기계로 같은 와이파이에 접속한 뒤 공유기 설정 페이지에 들어가 내부 ip를 고정시킨다. ddns설정을 해도 내부적으로 ip가 바뀌면 말짱 도루묵이기 때문이다.

이후 포트포워딩을 통해 휴대폰 ip의 특정 포트로 연결되도록 설정한다.

이 때 유의할 점은 통신사에 따라 포트 자체가 막혀있기도 하다는 점. 80이 막혀있다면 8080을 쓰고, 뭐 그렇게 하면 된다.

그리고 서버 역할을 수행해줄 휴대폰은 적당히 원하는 서버 앱을 받아서 깔도록 한다 ,, ,, 다양한 서드파티 프로그램이 제작되어 있다. 필자는 php서버가 필요해서 오픈소스 php 서버 앱을 찾아 깔았다.

그 뒤엔 그냥 일반 서버 이용하듯 하면 된다. 뒤에 포트 적는 것도 잊어선 안 된다.

끝.

+ Recent posts