본문 바로가기
반응형

분류 전체보기549

[FastAPI] 비밀번호 암호화, JWT 사용하기 비밀번호 암호화 라이브러리 설치 pip install "passlib[bcrypt]" 우선 비밀번호 hash / verify 하는 예제 코드 입니다. from passlib.context import CryptContext pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") def get_password_hash(password): return pwd_context.hash(password) def verify_password(plain_password, hashed_password): return pwd_context.verify(plain_password, hashed_password) print(get_password_hash('he.. 2023. 8. 15.
[AWS] Python 으로 CloudWatch Log 쓰기 (Feat. FastAPI) BackEnd 로 FastAPI 를 사용하는데, AWS 에 서비스를 올릴거라서 로깅은 CloudWatch 를 사용해보기로 했습니다. 로그 저장부터 검색, 삭제까지 너무 편한 기능이 다 있어서, 로깅에 대해서 내가 귀찮은 작업을 안해도되는..ㅎㅎ; 우선 dev 환경인 로컬에서도 aws 의 서비스를 사용하기 위해서 aws 사용자를 추가해야합니다. 사용자 생성 IAM 으로 가서 사용자를 생성합니다. 사용자 > 사용자추가 클릭 다음 > 사용자 생성 생성이 완료되면, 생성된 사용자를 클릭, 액세스 키 만들기 클릭 액세스 키가 생성되면 복사해서 잘 보관해야합니다. 또는 csv 다운로드해서 보관. watchtower 추가 pip install watchtower Logger 에 Handler 추가 import wat.. 2023. 8. 14.
Python 실행 파일의 경로를 환경 변수에 추가하기 import sys from pathlib import Path sys.path.insert(0, Path(__file__).parent) 2023. 8. 13.
AWS - RDS - MySQL 사용해보기 (외부접속 설정) AWS MySQL 사용해보기 AWS 콘솔에 로그인 서비스 : RDS 검색 [데이터베이스 생성] 클릭 표준 생성은 많은 옵션을 설정해야되서 "손쉬운 생성" 으로 테스트나 개인 프로젝트 용도라면 MySQL 과 프리티어 DB 이름, root 계정이름, 암호입력 마스터 사용자 이름과 비밀번호는 잘 기억해두세요. 생성이 완료되면, 외부에서 (로컬 workbench 나 datagrip 같은 곳에서) 접근하기 위해 설정을 더 해줍니다. 데이터베이스를 선택하고 우측 상단에 [수정] 클릭 스크롤 다운 하다보면, 중간 쯤, 연결의 추가구성 클릭 "퍼플릭 액세스 가능" 으로 선택합니다. 수정을 누릅니다. 꽤 오래 걸리네요.. 아직 끝난게 아닙니다.. db 식별자를 누르고 나오는 연결&보안 탭에서 VPC보안 그룹을 클릭합니다.. 2023. 8. 12.
[Selenium] Scroll to Element # element 를 찾음 element = driver.find_element(By.ID, 'hello-bryan') # javascript를 실행해서 element 로 이동 driver.execute_script("arguments[0].scrollIntoView();", element) 2023. 8. 12.
[Kotlin] SQLiteDatabase 기본적인 사용 방법 우선 DbTestActivity 를 Empty Activity 로 생성. ViewBinding 으로 설정 class DbTestActivity : AppCompatActivity() { private lateinit var binding: ActivityDbTestBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityDbTestBinding.inflate(layoutInflater) setContentView(binding.root) } } layout 의 root layout 을 LinearLayout 으로 변경하고, 4개의 버튼과 1개의 TextView.. 2023. 8. 10.
Git SSH 사용해서 clone 하기 (ssh key) ssh-keygen -t ed25519 -C "com.bryan.oh@gmail.com" -C 다음엔 아무 문구나 괜찮음. 이렇게 뭐라뭐라 입력하라고 나오면 그냥 Enter키 ㄱㄱㄱ key 가 만들어진 위치로 이동 cd ~/.ssh 파일 내용 확인 후 복사 (아래 명령어 날리면 나오는 텍스트 복사) cat id_ed25519.pub github 으로 이동 title 임의로 입력하고 Key 에 위에서 복사한 값 붙혀넣기 위에꺼 복사해서 git clone {복사한거 붙혀넣기} 2023. 8. 8.
_update_by_query (부분 업데이트) _update_by_query 아래와 같은 document 가 있을 때, { "user_name": "hello-bryan", "site_url": "https://hello-bryan.tistory.com", "language": "python" } language 필드의 값만 바꾸고 싶다면 POST your_index/_update_by_query?conflicts=proceed { "script":{ "source": "ctx._source.language = 'java'" }, "query": { "query_string": { "query": "_id: 123456" } } } query 필드로 documents 를 검색해서 검색된 결과를 모두 업데이트 합니다. 위는 간단한 값을 변경하는 예제이.. 2023. 8. 7.
[selenium] 선택된 노드의 바로 아래 자식 노드만 가져오기 아래와 같이 id="search_area" 의 바로 아래 있는 div 는 두개 입니다. 저 두개의 div 만 가져오고 싶을 때 driver.find_elements_by_css_selector('#search_area div') 이렇게 한다면 ... 안에 있는 수많은 div 들도 같이 가져오게 됩니다. 그럴 땐 아래와 같이 area = driver.find_element_by_id('search_area') div_list = area.find_elements_by_xpath('./child::div') # div_list 는 두개의 div 만 포함합니다. 2023. 8. 6.
[selenium] 부모 노드 중 검색 예) some_element 의 상위 태그 중 a 태그를 찾음 some_element.find_element_by_xpath('ancestor::a') 일단 여기까지, 나중에 정리.. 2023. 8. 6.
728x90
반응형