반응형

저는 티스토리 뿐만 아니라 네이버 블로그도 운영했고 요새 정신이 없어서 포스팅을 그만 둔 상태였습니다. 

오랜만에 네이버 블로그를 들어 갔는데 아래와 같이 네이버측에 경고를 받았습니다.

하나가 아니라 여러 글에 대해서 경고를 받음...

네이버 블로그 서로 이웃을 추가해주는 프로그램을 버전 별로 정리해서 포스팅했는데 그걸 전부 비공개 처리가 된 것.

작년에 만든 프로그램이지만, 만들어 놓은게 아까워서 티스토리에 올리기로 했습니다.

 

 

네이버 블로그 서로이웃 추가 프로그램 ver1.2

로컬을 찾아보니 초기 버전을 찾을 수 있었음.

QT를 이용해 오밀조밀하게 한 레이아웃에서 전부 처리할 수 있게 만들었었음.

저 때는 사용안하는 네이버 계정으로 테스트했던 것을 알 수 있음.

 

 

네이버 블로그 서로이웃 추가 프로그램 ver2.0


2.0 버전이 최종 버전인 것 같음.

코드를 살짝 분석해보니, 1.2 버전과 다른 것은 총 네 가지임.

1. 코드 간략화

목적은 잘 모르겠으나, 프로젝트의 기능들을 객체화 하여 코드를 간략화 시킴. 아무래도 새로운 기능들을 추가하고 유지보수를 위해 그런 것으로 보임.

2. GUI 변경

테스트를 위해 블로거들에게 한 번 사용해보라고 했을 때, 어려워 함. 설명하기 귀찮아서 GUI를 좀 더 순차적으로 만들고 간략화 한 것으로 보임.

 

3. 쓰레드 추가

1.2 버전을 돌려보니 네이버 매크로가 기동중 일 때는 GUI가 멈추는 현상이 발생하여 쓰레드를 추가해 GUI가 멈추는 것을 방지함.

4. 랜덤 딜레이 추가

매크로를 돌리다 보면 반복적인 동작과 동일한 시간을 네이버가 이를 매크로로 감지하기 때문에 랜덤으로 딜레이를 추가한 것으로 추측함.

 

데모 영상

https://www.youtube.com/watch?v=9MyQLyCm4Qo 

 

728x90
반응형
반응형

파이썬을 누구보다 좋아하고 애용하는 사람이지만 파이썬이 최고의 언어가 될 수 없는 10가지 이유를 이야기해보려 한다. 하지만 치명적인 10가지 단점이 있음에도 불구하고 전 세계 널리 사용되는 걸 보면 대단한 언어임에 틀림없다.

1. Indentation 

주의할 점은 Python에서는 Indentation이 선택사항이 아니라는 것이다. 이는 If문, for문 사용 시 문제를 일으킨다. 또한 함수가 어디에서 끝나는지 잘 보이지 않는다. 

2. Multiple version

Python에는 Python 2와 Python 3의 두 가지 버전이 있다.대부분의 경우 Linux에서 서로 나란히 설치되어 있기 때문에 많은 Linux distribution에서 Python 3으로 변환하는 데 시간이 걸리므로 두 가지 버전의 Python이 포함되어 출하된다. 

3. 런타임 오류

Python은 인터프리터 언어로 먼저 컴파일된 후 실행되지 않는다.정확히는 실행할 때마다 컴파일되므로 실행 시 코딩 오류가 나타난다. 이 모든 것이 결국 성능 저하, 시간 소비 및 많은 테스트의 필요성으로 이어진다. 특히 주피터 노트북에서 개발을 할 때 잦은 실수를 발생시킨다.

4. White space

Python에서는 white space는 다양한 코드 수준을 나타내기 위해 광범위하게 사용된다. 단, 중괄호와 세미콜론은 시각적으로 더 매력적이고, 초보자 친화적이며, 유지보수가 용이하며, 직관적으로 이해할 수 있다.

5. ㅍLambda

Python에서 lambda사용하는 것은 다소 제한적이기 때문에 문제가 있다. Python에서 lambda는 표현식일 뿐 statement가 될 수 없다.

6. 속도

Python은 동적 타입, 인터프리터 언어이므로 속도가 느리다. 곧 배포될 예정인 Python 3.11에서 성능 향상이 많이 된다고 한다. 그래도 느릴 수밖에 없다. 

7. 메모리

Python은 동적 타입 언어로, 어떤 변수로든 변할 수 있다. 하지만 그 만큼 많은 메모리를 차지하므로 메모리 낭비가 심하다.

8. 범위

Python은 동적 범위 지정과 관련이 있다. 모든 표현은 가능한 모든 컨텍스트에서 테스트해야 한다.

9. 정적 범위 설정 문제

동적 범위 지정으로 인해 발생하는 문제를 고려하여 파이썬은 정적 범위 지정으로 전환하려고 시도했지만 실패한 것 같다...

10. App development

크로스 플랫폼의 종류는 리엑티브 네이티브, 현재 주력으로 공부 중인 flutter, python으로 개발하는 kivy가 있다. 말도 아깝다. Kivy 맛보기 도전을 했는데, 바로 손절했다. 많이 사용하지 않는 데는 이유가 다 있다. 

728x90
반응형
반응형

Pyinstaller는 python 코드를 exe 파일로 변환하는 라이브러리이다.

사용법은 아래와 같다.

# main.py
from pyfiglet import Figlet


f = Figlet(font='slant')
print(f.renderText('Python'))

결과

# pyinstaller -w -F --icon {icon.ico} main.py

pyinstaller -F .\main.py
  • -w : 콘솔창 출력하지 않음
  • -F : 실행파일 하나만 생성
  • -icon : icon 모양

위 명령어를 실행하면 No module named 'pyfiglet.fonts' 오류가 발생하면서 콘솔창이 자동으로 종료된다.

오류를 해결하기 아래처럼 수행하면 해결된다.

pyinstaller --add-data " .\{Python 경로}\Lib\site-packages\pyfiglet;./pyfiglet" main.py

PyInstaller 명령 옵션에서 시스템의 Pyfiglet 폴더 경로를 제공하면 생성된 dist에 파일이 복사 된다.

728x90
반응형
반응형

많은 사람들이 VSCode를 사용하는 이유는 무료, 가벼운 개발 환경과 다양한 확장 프로그램 지원이 있다.

Visual studio code, Pycharm pro, Android studio, Eclipse, Vi 등 많이 사용해 봤지만 VSCode가 가장 사용하기 좋았다. 당연히 디버깅 기능에 있어서는 Visual studio code나 Pycharm을 이길 수는 없지만, 그럼에도 확장 프로그램을 잘 사용한다면 어느 정도 해결할 수 있다.

이번에 소개하는 확장 프로그램은 Error Lens이다.

Error lens는 파일 작업을 하거나 새 프로젝트를 열 때 실시간으로 모든 오류와 경고를 보여주는 Visual Code의 확장 프로그램이다.

이 확장 프로그램은 많은 프로그래밍 언어 기술에서 사용할 수 있습니다. Python, Javascript, flutter 등으로 이 확장 프로그램을 사용해 볼 수 있습니다.

사용 방법은 간단하다. 설치만 하고 VSCode를 껐다 켜면 된다.

오류와 경고가 포함되어 있는 Python 코드 예시를 보겠다.

 

예시
from urllib import parse
import nump as np            

string_original = '34'fdv       
string_encoded = parse.quote(string_original)
string_decoded = parse.unquote(string_encodedd)
print(string_encoded

Error Lens가 적용되면 아래와 같이 실시간으로 오류와 경고를 보여준다.

별거 없다고 볼 수 있지만 사용하다 보면 굉장히 편하다.

Flutter도 당연히 잘 된다.

Error Lens에는 구성 설정 섹션도 있다. 지연을 설정하여 오류를 표시하고 각 오류 유형에 대한 색상을 변경할 수 있다.

github 주소

https://github.com/phindle/error-lens

 

GitHub - phindle/error-lens: Visual Studio Code extension which enhances the display of errors and warnings.

Visual Studio Code extension which enhances the display of errors and warnings. - GitHub - phindle/error-lens: Visual Studio Code extension which enhances the display of errors and warnings.

github.com

 

728x90
반응형

'VSCode' 카테고리의 다른 글

[VScode] Visual Studio Code Theme 추천  (0) 2021.02.25
[VSCode] VSCode JAVA 세팅.  (0) 2021.01.18
[VSCode] VSCode에서 Jupyter Notebook 사용!  (0) 2021.01.09
[VSCode] Python Pylance 자동완성  (0) 2021.01.09
[VSCode] Python pylint  (0) 2020.12.08
반응형

안녕하세요.

 

제가 통신 전공으로 프로토콜 등도 중요하지만 정확한 센서 데이터 수집하는 것도 굉장히 중요하다고 요즘 느낍니다.

 

정확한 데이터를 기반으로 머신러닝, 딥러닝, 필터링이 가능하기 때문에 정확한 데이터를 모으는 것은 가장 중요합니다. 

 

UART Serial 통신(9600, 115200bps)을 통해 가장 심플한 CSV형식이 현재 구글에서 가장 돌고 있습니다. 

 

매번 데이터  수집을 위해 데이터 짜는 것이 귀찮기 때문에 저를 위해 메모장 느낌으로 코딩을 기록했습니다. 

 

파이썬 공식 문서를 보면 쉽게 알 수 있지만, 번역기에 돌린 한국말이 약간 이상합니다. 

https://docs.python.org/ko/3/library/csv.html

 

csv — CSV 파일 읽기와 쓰기 — Python 3.9.7 문서

소위 CSV (Comma Separated Values – 쉼표로 구분된 값) 형식은 스프레드시트와 데이터베이스에 대한 가장 일반적인 가져오기 및 내보내기 형식입니다. CSV 형식은 RFC 4180에서 표준화된 방식으로 형식을

docs.python.org

 

import os

path_ = './data/test.csv'
fieldnames = ['device_name','f_port', 'ucnt', 'dr', 'rssi', 'snr', 'channel', 'lat', 'long_', 'alt']


if __name__ == '__main__':
	file_exists = os.path.isfile(path_)
	
    while(1):
    """
    Do something ex) serial.read, post, parsing...
    """
        with open(file_name, 'a', newline='\n') as csvfile:
            wr = csv.DictWriter(csvfile, delimiter=',', fieldnames=fieldnames)
            if not file_exists: wr.writeheader()
            wr.writerow({
                'device_name' :device_name,
                'f_port':f_port,
                'ucnt' : ucnt, 
                'dr' :dr, 
                'rssi':rssi, 
                'snr':snr, 
                'channel':channel, 
                'lat':lat, 
                'long_': long_, 
                'alt': alt})

 

1. with문을 사용한 이유 :

우선 파이썬 공식문서는 with문을 쓰기 권장한다. 파일 쓰기 위해선 파일을 열어야 합니다. 그리고 쓰기가 완료되면 닫아야 합니다. 하지만 파일 쓰기가 완료되었지만, 파일이 열려 있으면 파일이 깨지거나, 제대로 된 데이터가 아닐 수 있습니다. with문은 이를 방지 위해 파일 열기, 닫기를 자동으로 해줍니다. 

 

2. 위 csv 저장하는 코드는 데이터를 이어 저장하는 형식이며, 만약 파일 이름(path_)이 지정한 경로(./data/) 내에 이름이 같은 파일이 없다면, csv header(fieldnames)를 추가한다. 파일 이름이 지정한 경로 내에 이름이 같은 파일이 있다면, csv header를 추가하지 않고, 데이터를 그대로 이어 저장한다.

    

csv 형태를 잘 만들어 놓으면 나중에 pandas 혹은 matlab가지고 놀기 편합니다. 

 

이런 느낌의 코드를 전에 짜놓고 또 못찾아서 새로 짜고를 3번 정도 반복할쯤 그냥 블로그에 올리기로 했습니다.

728x90
반응형

+ Recent posts