본문 바로가기

전체 글

(37)
[FastAPI] PassLib와 Bcrypt를 활용한 패스워드 해싱 How to Password Hashing in FastAPI?In FastAPI Official docs, it recommand "PassLib" Python package to handle password hashes. The recommended algorithm is "Bcrypt".if you use poetry, then follow this command.poetry add "passlib[bcrypt]"we can encrypt plaintext passwords to use PassLib, and create module that validate encrypt string is from the received plaintext.from passlib.context import Cryp..
[Clean Python] Docsting 사용하기 1. Python에서의 Docstring파이썬에서 코드를 문서화하는 강력한 방법이 바로 Docstring이다. docstring은 해당 객체의 __doc__ 특수 속성이 된다.공식 언어에서는 docstring을 작성하기 위해 """삼중 큰따옴표(Quotes Marks)"""를 사용하는 것을 권장한다.이와 관련된 모범 사례를 살펴보자.독스트링을 작성하는 방법은 여러가지가 있지만 파이씬의 정의한 몇 가지의 공통 규칙은 다음과 같다.- 문자열이 한 라인에 있어도 triple quotes(삼중 큰따옴표)가 사용된다.- triple quotes의 문자열 전후에 빈 라인이 없어야한다.- period(.)를 사용해 docstring에서 구문을 종료한다.마찬가지로 파이썬 multiline docstring 규칙을 적용..
[Clean Python] 코드 작성을 위한 파이써닉 방법의 수용 PEP8에서 권고하는 파이선 코드 작성법에 대해 살펴보자.1. In-place 문자열 결합 대신 Join()을 사용한다.a +=b 또는 a = a+b와 같은 인플레이스 문자열 결합 대신 join() 메소드로 결합하는 것이 다양한 파이썬 구현에서 더 적은 시간 연계를 보장한다.문자열을 연결하면 파이썬 문자열은 불변이기 때문에 각 연결에 대해서 새로운 메모리를 할당해야하지만,join을 사용하면 파이썬이 결합된 문자열에 메모리를 한 번만 할당하기 때문에 Join()을 사용하는 것이 적합하다.first_name = "Json"last_name = "smart"# Not a recommended way to concatenate stringfull_name = first_name + " " + last_nam..
[OpenAI] OpenAI Realtime API에 대해 뉴스 빅데이터 해커톤에 참가하여 VoiceRAG를 구현하는 AI 고도화 제안하게 되면서 핵심 기술로 사용된 OpenAI의 Realtime API에 대해 정리하고자 한다.Realtime API는 지난 2024년 10월에 OpenAI에서 공개된 최신 기술로, 네이티브 음성을 통해 사람과 대화하듯이 모델과 상호작용할 수 있으며, 안정적이고 빠른 실시간 대화 경험을 사용자에게 제공해줄 수 있는 API이다. 사용자에게 멀티모달(시각, 청각을 비롯한 여러 인터페이스를 통해서 정보를 주고받는 것) 경험을 제공해줄 수 있다는 것이 가장 핵심이다. Q. 기존에 보편적인 STT or TTS 기능이란 뭐가 다른건지? 기존의 음성 기반 AI 대화 구현 방식에는 Whisper와 같은 자동 음성 인식(ASR) 모델로 오디오를 텍..
[Clean Python] Python 코드 표현과 구문 영리한 코드를 작성하는 것은 가독성과 단순성에서 또 다른 문제를 야기할 수 있다.users = [ {"first_name": "Helen", "age": 39}, {"first_name": "Buck", "age": 10}, {"name": "anni", "age": 9} ]users= sorted(user, key=lamda user: user["first_name"].lower()) 위 코드는 한 라인에서 람다를 이용해 중첩 딕셔너리를 first_name으로 정렬하고 있으므로 루프를 사용하는 대신 딕셔너리를 정렬하는 영리한 방법으로 보이지만, 이 코드는 문제점이 있다. 물론 람다로 딕셔너리를 정렬할 수 있으므로 라인 수를 줄일 수 있었지만, 람다는 애시당초 쉬운 개념이 아니기에 ..
[Clean Python] 파이썬에서의 underscore(_, __)에 대해 파이썬 프로그래밍에서 Zen of Python이라는 철학은 복잡성보다 단순함을 강조한다.이번 포스팅에서는 파이썬 코드를 작성하는 동안 따라야하는 명명 규칙들에 대해 알아보면서, 조금 디테일한 부분들도 작성하려고 한다.  1.1 변수와 함수name = "James"my_job = "Software Programmer"populated_member_list = []소문자로 함수와 변수의 이름을 밑줄(_)로 구분된 안어로 지정하면 가독성을 향상시킬 수 있다.여기서 사용되는 Under Score는 Snake case로 네이밍을 할 때 외에도 다른 사용처가 있는데, 클래스 내부에서만 사용되는 Private 멤버를 정의할 때 사용된다. Non-Mangling 메소드 이름을 사용하는 것과 한 개의 밑줄과 2개의 밑줄..
[Python] Mac에서 default Python 버젼 변경하기 특정 라이브러리가 3.12를 지원안해서 python 버젼을 다운그레이드해야하는 상황이다. Check your python versionpython3 -VPython 3.12.3Search python paththen you can check where is the python file installed.which python3/opt/homebrew/bin/python3Change default python pathalias python3=/opt/homebrew/bin/python3.9recheck changed python versionpython3 -VPython 3.9.19
[GIS] Postgresql DB에 PostGIS Extention 설치 시, 만날 수 있는 에러상황 [58P01] ERROR: could not open extension control file "/opt/homebrew/share/postgresql@14/extension/postgis.control": No such file or directoryMac 환경에서 Postgresql 데이터베이스에 GIS 확장라이브러인 postgis를 설치하려고 할 때, 만날 수 있는 에러이다.로컬 환경에 PostGIS가 설치되어 있지 않기 때문에 발생한다. homebrew로 postgis를 설치해보자. brew install postgishttps://postgis.net/documentation/getting_started/install_macos/ Installing on MacOSA popular distrib..