본문 바로가기

IT

(51)
Flask, Streamlit 함께 사용하기 Streamlit이란, Python 으로 데이터 앱을 빠르고 쉽게 만들 수 있도록 돕는 오픈소스 앱 프레임워크이다. HTML, CSS, JavaScript에 대한 깊은 지식이 없어도 멋진 UI를 만들 수 있다. 빠른 프로토타입을 구현하는데 이만한 도구가 없을 정도로 장점 가득한 아이다. Streamlit의 단점도 있다. 1. 접근제어 한계 기존 웹프레임워크에서 기본적으로 제공하는 SSO연결, 세션연결, 권한관리, 페이지 Redirection 등의 기능이 부족하며, 2. 커스터마이징 한계 HTML, CSS, JavaScript에 대한 자유도가 떨어지다보니 UI를 디자인하는데 커스터마이징에 한계가 있다. 3. 많은 메모리 사용 데이터를 한번에 불러와서 필터링을 거는 방식으로 데이터를 활용하다보니 메모리 사용..
ElasticSearch ValueError: tls options require scheme to be ‘https’ 에러 0. https 에러 문제 발생python에서 elasticsearch 를 실행할때 vlaueError: tls options require scheme to be ‘https’ 에러가 발생했다. 에러원인을 찾아서 이것저것 실행해보았는데도 계속되는 오류들… 1. 내가 시도해본 방법은 다음과 같다. *  verify_certs=False 설정 -> 해결안됨 Elasticsearch( ELASTICSEARCH_HOST, verify_certs=Fasle, ca_certs=False,.. ) 2. 새로운 환경에서 실행을 하는것여서 우선 버전확인을 해봤다. * pip list 로 elasticsearch 버전확인하기 elasticsearch 8.13.0 - 최신버전이 설치되어 있었고 해당 버전 릴리즈 일자를 보..
Python으로 cx_Oracle 실행 시 파라미터 전달하기 - Bind Variable 1. 쿼리를 실행할 때 변수 값을 전달하는 방법1. cx_Oracle에서 권장하지 않는 방법 이유는 데이터 확장성과 보안 문제가 있음 보안 문제는 무엇인지 알겠는데, 확장성은 어떤이유 때문에 하지 말라는건지 잘 모르겠다. did = 280 dnm = "facility" sql = f"""select * from dual where a={did} and b={dnm}""" cursor.execute(sql) 2. cx_Oracle 에서 권장하는 방법 sql = "select * from dual where a = :0 , b= :1" cursor.execute(sql, [280 , 'facility']) : 콜론으로 전달할 파라미터를 지정해주고 , execute 실행 시 쿼리와 함께 전달해주는 방법을 사용..
SSO(Single Sign On) 이란? 어디에다 쓰는거임? 1. SSO 란, Single 하나 Sign 계정 On 로그인한다! 요즘 어떤 웹사이트를 가도 카카오로그인, 네이버로그인, 구글로그인을 본적이 있는가? 이처럼 하나의 계정으로 여러개의 사이트에 접속하는 방법이 바로 SSO 이다. 2. 이걸 쓰면 뭐가 좋아? * 사용자 : 여러개의 아이디,패스워드 기억할 필요 없어! 하나로 다 로그인 할 수 있으니까 따로 회원가입 할 필요도 없고, 기억할 필요도 없고, 비밀번호 찾을 필요도 없고, 너무 편해 * 시스템관리자 : 사용자들이 하나의 암호를 사용하는게 보안에 취약할 수도 있지만, 하나의 암호를 강력하게 설정할 수 있기도해! 그리고 사용자의 접근성이 편해지니 사용자 유입도 쉽게 늘고, 시스템별로 일일히 관리할 필요가 없으니 편해 3. 이거 진짜 안전한거 맞아? S..
[Python] Mac 에서 아나콘다 활용방법 - 가상환경 생성, 필요한 라이브러리 설치 1. 아나콘다 설치 2. pycharm 설치 3. pycharm 프로젝트 생성 4. terminal 실행 5. 아나콘다 버전확인 conda --version 6. 아나콘다 가상환경 생성하기 conda create -n 가상환경이름 python=3.6 y 두번 입력하기 ** 삭제하기 conda env remove -n 가상환경이름 7, 가상환경 생성 확인하기 conda env list 방금생성한 가상환경 확인합니다. 8. 가상환경 활성화하기 source activate 가상환경이름 9. pycharm 프로젝트 인터페이스와 가상환경 연결하기 pycharm > preference > project interface > add > conda environment > existing environment > ....
[Python] 딕셔너리에 키 값 확인하고 자동으로 값 생성하기 Dictionary에 key를 확인하는 다양한 방법을 알아보고, 없을 경우 default 값으로 지정하는 방법에 대해 알아 보겠습니다. 0. 샘플딕셔너리 생성하기 우선 샘플 딕셔너리를 생성하도록하겠습니다. dic = {‘red’:5, ‘blue’:3, ‘green’:’’} print(dic) 1. key 를 리스트로 확인하기 dic.keys() key_list = list(dic.keys()) print(key_list) if ‘balck’ in key_list: print(True) else: print(False) if ‘black’ not in key_list: print(False) 리스트로 변환하지 않고 단순히 dic.keys() 로 실행하면 dict_keys 객체 결과값이 나온다. 따라서 리스..
[Python] 흔한 파이썬 리스트 복사 오류 , 제대로 파이썬 리스트 복사하기 흔하게 발생하는 리스트 복사 오류에 대해 알아보고 제대로 복사하는 방법은 무엇인지 알아보자. 1. 흔하게 발생하는 리스트 복사 오류 - 초급 리스트를 = 이렇게 할당하게 되면 리스트가 복사가 되는것이 아니라 리스트가 저장된 메모리 주소가 복사가 되는것이다. 이말은 집열쇠를 복사하는 것과 똑같은데, 집열쇠를 복사한다고 해서 집이 2개가 되는게 아닌것 처럼말이다. 예시를 통해서 왜 잘 못되었는지 알아보자. a = [1, 2, 3] b = a # b 에 요소를 변경해보자. b[0] = 0 print(a, b) # [0, 2, 3], [0, 2, 3] print(id(a), id(b)) # a.b의 메모리 주소가 동일 a와 b의 변수는 동일한 메모리주소를 가지고 있어서, b의 요소를 변경했을때 a 도 변경된 것..
[python] 특정 문자 위치 찾기, 특정 문자 개수 찾기 문자열에서 특정 문자의 위치를 찾는 방법에 대해 알아보도록 하겠습니다. find()와 index() 두가지 함수를 이용하는 방법과 이를 응용하여 문자열에 특정문자가 몇 개가 있는지에 대한 문제를 풀어보도록 하겠습니다. 1. index(vlaue, start, end) 이용하여 특정 문자열 위치 찾기 Hello my python world 라는 문장에서 python 이라는 단어의 위치를 찾도록 하겠습니다. str2 = “Hello my python world!” idx = str2.index(“python”) print(idx) # 9 인덱스 부터 시작함을 알 수 있습니다. 만약 문장에 python이 2개 라면 어떻게 찾을까? str2 = “Hello my python world! My name is py..