일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HTML
- github
- 플러터
- gitlab
- c언어
- 유니티
- docker
- 깃
- 다트 언어
- Unity
- jupyter lab
- Python
- C++
- c# 윈폼
- 포인터
- Houdini
- dart 언어
- Flutter
- 도커
- C언어 포인터
- c#
- git
- c# 추상 클래스
- C# delegate
- c# winform
- jupyter
- vim
- 구조체
- Algorithm
- Data Structure
- Today
- Total
목록Python (13)
nomad-programmer
Ruff는 Rust로 작성된 매우 빠른 린터 및 포매터이다.https://github.com/astral-sh/ruff GitHub - astral-sh/ruff: An extremely fast Python linter and code formatter, written in Rust.An extremely fast Python linter and code formatter, written in Rust. - astral-sh/ruffgithub.compip install ruffRuff와 Black과의 차이점Ruff와 Black은 모두 Python 코드 품질 개선 및 유지보수성을 높이는 도구들이다. 허나 이들의 목적에는 차이가 있다.Ruff (Linter)기능코드 스타일 검사를 통해 PEP8 등 스타일..
코루틴의 이점은 무엇인가? 보통 두 루틴이 동시에 실행되는 멀티태스킹은 하나의 변수에 값을 동시에 쓰면(write) 동기화 문제가 발생한다. 따라서 크리티컬 섹션, 세마포어, 뮤텍스 등 동기화를 위한 락(lock)이 필요하다. 하지만 코루틴은 시분할 방식 멀티태스킹이라 동기화를 위한 락이 필요하지 않다. 함수를 호출한 뒤 함수가 끝나면 현재 코드로 다시 돌아왔다. 예를 들어 다음의 코드를 보자. def add(a, b): c = a + b print(c) print('add func') def calc(): add(1, 2) print('calc func') 이 소스 코드에서 calc함수와 add 함수의 관계를 살펴보자. calc가 메인 루틴(main routine)이면 add는 calc의 서브 루틴(s..
ETF(상장지수펀드)는 기초지수의 성과를 추적하는 것이 목표인 인덱스펀드로, 거래소에 상장되어 있어서 개별주식과 마찬가지로 기존의 주식계좌를 통해 거래를 할 수 있다. 그 구성종목과 수량 등 자산구성내역이 투명하게 공개되어 있고, 장중에는 실시간으로 순자산가치(NAV)가 제공되어 거래에 참고할 수 있다. ETF는 1좌를 거래할 수 있는 최소한의 금액만으로 분산투자 효과를 누릴 수 있어 효율적인 투자수단이며, 펀드보다 운보수가 맞고 주식에 적용되는 거래세도 붙지 않는다. ETF의 장점은 종목 선정 및 분산투자에 익숙하지 않은 상태에서도 안정적으로 자산을 운용하기에 적합하며, 또한 가격 변동이 그렇게 크지 않기 때문에 주식 초고가 투자하기에도 좋다. NAVER FINANCE ETF ITEM LIST http..
conda로 설치한 모듈을 pyistaller를 이용해 exe파일로 만들경우 엄청난 용량을 가진 파일이 생성된다. 이러한 문제를 해결하려면 conda install 모듈이 아닌 pip install 모듈로 설치한 파일이어야 한다. 281MB 파일이 pip install로 설치한 모듈로 exe파일을 만드니 84MB로 줄었다.
pyinstaller를 이용해 exe파일 생성 후 실행시키니 ModuleNotFoundError: No module named 'pkg_resources.py2_warn' 라는 오류가 발생했다. 구글링 결과 hiddenimports 메뉴 부분에 추가하면 된다고 한다. 그래서 아래처럼 추가하여 해결하였다. 만약 OpenCV를 사용하였는데 "cv2" 임포트 에러가 발생하면, 아래와 같이 binaries에 dll을 추가해준다. a = Analysis(['main.py'], pathex=['D:\\workspace\\python\\test', 'D:\\workspace\\python\\test\\widgets\\preference', 'D:\\workspace\\python\\test\\widgets\\scre..
간단한 DB를 쓸 때면 SQLite를 사용한다. 그런데 그냥 사용하게되면 DB가 그대로 노출되는 위험에 있다. 그래서 이것저것 알아보던 중 SQLCipher 라는 것을 알게됐다. 이것은 SQLite 데이터를 인간이 알아볼 수 없도록 암호화하여 관리해준다. SQLite에 접근하려면 Key 값을 알고 있어야 가능하다. 아래의 링크를 통해 SQLCipher를 빌드하였다. https://github.com/sqlitebrowser/sqlitebrowser/wiki/Win64-setup-%E2%80%94-Compiling-SQLCipher sqlitebrowser/sqlitebrowser Official home of the DB Browser for SQLite (DB4S) project. Previously ..
python 파일을 컴파일하는 방법. Cython을 사용하는 방법과 Nuitka를 사용하는 방법을 소개한다. Cython을 이용하면 .pyd 라이브러리 파일을 만들 수 있다. 아래는 nuitka의 홈페이지이다. https://nuitka.net/ Nuitka Home Hi all! :) My name is Taofeng Li and I go by the nickname of Tommy, github handle tommyli3318. I'm a Computer Science major at the University of California, Irvine in the United States. I am very excited to announce that I'll be contributing to Nui..
qdarkstyle, qtmodern 을 이용하면 테마를 바꿀 수 있다. # qdarkstyle 설치 conda install -c conda-forge qdarkstyle # qtmodern 설치 conda install -c conda-forge qtmodern QDarkStyle https://pypi.org/project/QDarkStyle/ QDarkStyle The most complete dark stylesheet for Python and Qt applications pypi.org QtModern https://github.com/gmarull/qtmodern gmarull/qtmodern PyQt/PySide Widgets Modern User Interface. Contribute ..
만약 Python 패키지들을 USB 저장 공간에 넣고 다니고 싶다면? 아래와 같이 실행해서 저장하면 된다. # example conda create python=[파이썬 버전] -p [파이썬 패키지 저장 디렉토리] [설치하고자하는 패키지] conda create python=2.7 -p c:/Users/scii/miniconda2/portable Anaconda 삭제는 아래와 같다. conda env remove -p [설치한 디렉토리] conda env remove -p c:/Users/scii/miniconda2/portable # 혹은 conda env remove -p c:/Users/scii/miniconda2/portable --all
함수를 만들어서 넘길 때 lambda보다는 partial을 자주 사용한다. 간단한 예) from functools import partial def sum(a, b): print(a + b) f = partial(sum, 55) f(1) # 결과 56 lambda와 partial의 차이점 lambda와 partial은 비슷하지만 차이점이 있다. 람다의 경우 연산이 모두 끝난 후 코드가 생성된다. 반면 partial은 연산 도중 코드가 생성된다. lambda 예) # lambda의 예 funcs = list() for i in range(5): funcs.append(lambda: print(i)) for f in funcs: f() # 결과 4 4 4 4 4 partial 예) # partial의 예 f..
Python, C#, JavaScript 등은 쉽게 소스로 환원 시킬 수 있기 때문에 원 소스 자체의 로직은 변경되지 않지만 사람이 읽기에 아주 어렵게하는 것이 난독화라고 한다. 또한, 소스코드의 무단 도용, 아이디어나 알고리즘의 무단유출을 막기 위함이 주된 목적이라 할 수 있다. JavaScript 같은 경우에는 악성코드나 시그니쳐 등을 회피하기 위해 난독화 기법을 이용한다. 코드 난독화는 크게 보았을 때, 필요 이상으로 복잡한 코드를 만들거나 무의미한 코드를 삽입하여 난독화하는 방법과 데이터를 인코딩하여 가독성을 떨어트리는 방법이 있다. C언어 소스코드를 대상으로 코드 내에서 사용 중인 변수의 이름을 바코드 조합('l', 'i', 'I', '1'의 조합)으로 바꾸어 코드를 난독화 시킨다. 코드 내의 ..
Python 메뉴얼 컴파일 자료 py_compile 이용하는 방법 https://docs.python.org/3/library/py_compile.html py_compile — Compile Python source files — Python 3.8.1 documentation py_compile — Compile Python source files Source code: Lib/py_compile.py The py_compile module provides a function to generate a byte-code file from a source file, and another function used when the module source file is invoked as a script. ..
# 터미널에서 (base) 가 자동으로 들어가는 옵션 끄는 법 // base 끄기 conda config --set auto_activate_base false // base 켜기 conda config --set auto_activate_base true # 버전 확인 사용중인 conda의 버전을 확인한다. conda --version # 업데이트 사용중인 conda 패키지를 업데이트한다. conda update --all # 가장환경 생성 packege_spec을 명시하여 필요한 패키지를 가상환경 생성시 한번에 설치 가능하다. 아래의 가상환경 생성 예제는 특정한 python 버전을 명시하고, 머신러닝 툴킷인 tensorflow, keras를 설치하는 예이다. conda create --name pyt..