본문 바로가기

분류 전체보기261

Python chardet 모듈 활용 웹사이트, 문장단위 텍스트 인코딩 타입 확인하기 파이선으로 텍스트 관련 처리를 하다 보면 하나의 파일 안에서도 문장마다 다양한 형태로 인코딩 된 경우를 볼 수 있다. 메모장에서도 한글이 포함돼 있지 않다면 해당 문장은 ascii로, 한글이 포함되면 utf-8로 저장되는 것 같다. 혹은 텍스트 포맷을 일괄 변환해주는 툴들을 활용하면 그런 것 같기도 하다.(추측) 텍스트 분할기를 만들다 보니 일반적으로 메모장으로 생성했다면 나오기 힘든 인코딩 타입들을 접하게 된다. 어떻게 생성된 파일인지는 알 수 없지만 문장별로 인코딩이 다른 경우가 많았다. 따라서, 문서 내 정말 특이한 형태의 인코딩이 있는 경우는 가급적 본 작업을 하기 전에 예외처리를 하거나 알람을 줘야 했다. Python chardet모듈 detect 함수 활용 문장 인코딩 정보 확인 Python .. 2021. 3. 15.
Nikon D750, Lumix GX1, 갤럭시 S10 5G 카메라 별사진 비교 작년 가을 단풍 캠핑에서 DSLR, 미러리스 카메라 챙기는 걸 깜빡했다가 너무 아름다운 밤하늘을 보고 갤럭시 S10 5G 카메라 야간 촬영 모드로 별 사진을 찍어봤다. 그리고 생각보다 놀라운 결과가 나와서 놀라기도 했다. 이후 캠핑에서는 아쉬움이 남지 않도록 최대한 DSLR. 미러리스 카메라를 가지고 다니면서 몇 번 유사하게 별 사진을 촬영해본 결과를 비료 정리해본다. 갤럭시 S10 5G 야간모드 별 사진 미러리스 Lumix DMC-GX1 별 사진 Lumix DMC-GX1, X14-42mm 렌즈킷 / 고화질 활영 후 포토샵 보정 DSLR Nikon D750 별 사진 Nikon D750, 탐론 18-200 / RAW 촬영 후 포토샵 보정 사진 품질 개인적인 생각으로는 아무래도 아직은 DSLR이 우수해 보인.. 2021. 3. 12.
DIY - 아파트 현관문 도어클로저(Door Closer) 셀프 교체하기 지금 사는 집으로 이사올 때 당연하게도 이미 도어클로저가 달려있었다. 게다가 이번에 알게됐지만 나름 도어클로저 점유율이 상당히 높다는 king 도어클로저였다. 그리고 1년이 조금 지난 시점부터 문이 점점 닫히는 속도가 높아지더니, 지난 추운 겨울부터 본체 밑으로 기름방울이 맺히기 시작하면서는 문이 쾅쾅 닫히기 시작했다. 도어클로저 옆의 문 속도조절 나사를 조여보라는 조언도 있어 해봤지만, 끝까지 조여도 변화는 없었다. 역시 기름이 새는건 수명을 다한 거라 방법이 없다는 말이 맞는 것 같다. 에코락 도어클로저 DR-630 원래 달려있던 king 도어클로저로 교체할까도 고민했지만, 소모품이기에 king 도어클로저와 호환이 된다는 로켓 상품으로 주문해서 셀프 교체를 시도해 봤다. 구성품은 매우 간단하다. 도어.. 2021. 3. 9.
캠핑장비 - 고투 블랙인젠트 리빙쉘 텐트 설치방법 지난 1년이 조금 못 되는 기간 동안 13번의 캠핑을 훌륭하게 다녀올 수 있도록 듬직한 보금자리가 되어준 고투 블랙인젠트 리빙쉘 텐트... 듬직하다는 의미는 결국 상당한 덩치가 있다는 이야기와 동일하기에... 매번 제대로된 설치 순서를 잘 기록해봐야지 맘만 먹다가 결국... 시점이 각각 다른 드문드문 찍어둔 사진으로라도 드디어 정리를 해본다. 1단계 - 텐트 펼치기 가장먼저 할 일은 입구와 개방면을 어디로 할지를 결정하고, 그에 맞춰서 방수포를 깐다. 방수포는 국민방수포(?)라는 코스트로 방수포를 사용 중이다. 코스트코 방수포가 워낙에 커서 블랙 인젠트를 거의 대부분 커버하기에 딱 좋은 것 같다. 어차피 이너텐트에 붙은 방수포는 또 따로이기에ㅎㅎ 방수포가 텐트보다 더 넓지만 대신 길이가 더 짧기 때문에 .. 2021. 3. 9.
캠핑장비 - 고투 블랙인젠트 리빙쉘 텐트 주관적인 후기 캠핑장비에 대한 블로그 정리를 하나둘씩 했지만, 정작 가장 기본이 되는 텐트에 대해서는 정리하지 못했다. 여러 가지 이유가 있겠지만, 가장 중요한 건 텐트를 치면서 사진을 찍는 게 생각보다 쉽지가 않아서 한두 번씩 밀리다 보니 어느새 13번의 캠핑을 다녀오기까지 이르렀다. 그리고 이번에 돔타프 조합을 시도하려고 새로운 돔텐트가 들어오면서, 더 이상 미룰 수 없어 그간 우리 가족에게 너무나도 든든한 공간을 마련해준 고투 리빙쉘 텐트에 대해 정리해본다. 고투 블랙인젠트 리빙쉘 텐트 우선 먼저 가장 중요한 포인트... 우리 텐트는 고투 아스트라인 아님. 아스트라인 보다 쪼금 더 큰 블랙 인젠트 리빙쉘 텐트이다. 장비 스펙 우선 사이즈... 매우 거대하다. 4인 가족이 쓰기에 정말 전혀 부족함이 없는 크기이다... 2021. 3. 2.
드롱기 전자동 커피머신(DeLonghi ECAM350.15.B) 석회질 제거하기 지금 사는 집으로 이사를 오면서, 매일 한두 잔씩은 사 먹게 되는 커피... 그래서 매일 만원 이상은 쉽게 깨지기 때문에 비용절감 차원에서 커피머신을 도입하기로 했다. 매일 두잔정도의 커피를 머신으로 내려먹는다고 계산했을 때 1~2년 정도면 초기 구매비용을 충분히 만회할 수 있다고 생각한다.(생각보다 커피맛도 나쁘지 않다) 드롱기 다이나미카(ECAM350.15B) 석회질 제거 표시등 그런데 6개월 정도 사용을 하니 석회질 제거하라는 표시에 불이 들어오면서 바로 커피를 내리는 모드로 진입되지 않는다. 그냥 스팀 표시(ESC)를 누르면 커피를 내릴 수 있게 되지만 암튼 괜히 불편하다. 석회질 제거하기 그래서 매뉴얼대로 석회질을 제거하기로 해본다. 문제는 생각보다 매뉴얼이 복잡해서 좀 더 간단하게 기록해두고 .. 2021. 3. 1.
Python UTF-8 파일 처리 중 BOM 출력 오류 해결 텍스트 분할기를 만들다 보니 역시 텍스트 관련 프로그램에서 늘 접하게 되는 인코딩 오류를 접하게 됐다. 그래서 사실 프로그램에서 파일을 열면 첫 100줄정도를 읽어서 텍스트 첫부분이라도 어떤 형태로 인코딩 된 건지를 알아보도록 기능을 넣기는 했다. UTF-8 BOM 출력 오류 텍스트를 분할하기 위해 원본 파일을 읽어 왔다. 흔히들 많이 쓰이는 코드를 사용했다. with open(filename, mode="r", encoding="utf-8") as file: return file.readlines() 그런데 readlines()로 가져온 결과물들을 처리하는 부분에서 exception 이 발생했었다. UnicodeEncodeError: 'ascii' codec can't encode character u.. 2021. 2. 22.
특정 문자열을 찾아 텍스트 분할하는 어플 - Blice Text Splitter 최근 혼자 하고 있는 Python으로 윈도우 어플 만들기의 시작은 사실 업무와 관련이 있었다. 작년까지 내가 담당하던 업무는 웹소설 콘텐츠를 유통하고 관리하는 플랫폼 PM업무였고, 당시 필요했던 기능중에 하나가 바로 확보한 콘텐츠(Text파일)에서 특정 문자열을 찾아 분할하는 기능이 필요했다. 서버의 기능으로 제공해주면 더욱 좋겠지만 또 아주 일반적으로 널리 쓰이는 기능은 아니다 보니 그냥 어플 형태로 직접 한번 만들어보기로 결심하고 시작하게 됐다. 그리고 UI가 멋스럽진 않지만, 기능에만 충실한... 간단한 어플이 완성되어 정리해본다. 그간 나름 스터디했던 Python으로 윈도우 어플 만들기 관련 각종 필요기술들을 활용해서 특정 문자열을 찾아 각각의 텍스트 파일로 분리해서 저장시켜주는 어플 블라이스 회.. 2021. 2. 15.
Pycharm에서 Github에 Repository생성, 소스 업로드하기 Pycharm에서 작성 중인 소스를 바로 Github에 업로드해보기로 했다. Github Desktop 으로 해도 되지만, 결국 두 번 일을 하는것다보니 Pycharm에서 바로 해보려고 한다. Repository 생성 메뉴의 VCS > VCS Operations Popup 선택 후 Create Git Repository 를 선택하거나 혹은 Import into Version Control > Create Git Repository를 선택하면 Repository를 생성할 수 있다. 생성할 Repository 대상 폴더를 선택하고, Commit 을 해준다. 소스 업로드 Github Desktop에서는 Commit을 하고나서 Push를 해줘야 소스가 업로드된다. 다만 그러려면 미리 Repository가 생성되.. 2021. 2. 10.