본문 바로가기

portfolio

(17)
파이썬 셀레니움을 통한 웹스크래핑 자동화(1. 스크롤기능, 2. 페이지네이션기능) 1. 픽셀을 더하면서 스크롤을 통해 자동으로 수직으로 내려간다. 파이썬에서 자바스크립트를 제어하려면 execute_script() 메서드를 사용해야한다.# 스크롤기능 모듈화 def scroll_next(): scroll_pixels = 500 # 각 스크롤 단계마다 스크롤할 픽셀 수 current_scroll_position = 0 # 처음 픽셀수0에서 시작 여기서 500씩 더해진다 while True: # 스크롤 실행 # window.scrollTo(0.500) x,y 수직 스크롤 #execute_script 메서드는 주어진 JavaScript 코드를 브라우저에서 실행 driver.execute_script("window.scrollTo(0, {});".format(current_scroll_posit..
HTML, CSS , image slider js웹디자인 포트폴리오 사진 출저 - 쿠팡 사이트 연두색으로 칠한 부분 1번이 dt 태그이고 나머지 번호들은 dd 태그이다 모두 dl태그로묶어서 그룹을 지었다. 4번 부분은 grid를 쓰는 줄알았는데 float:left로 지정하고 overflow:hidden으로 되어있었다.(추후에 grid로 수정하였다.) 그리고 마진과 패딩은 0으로 지정했다. 쿠팡 사이트를 보고 크롬웹개발자 도구를사용해 html,css일일이 체크해서 제작하였다. 3번부분 이미지 슬라이더는 7초동안 딜레이를 줘서 자동으로 넘기게 설정하였다. // "promotion" 클래스를 가진 요소 안에 있는 모든 img 요소를 선택합니다. const slides = document.querySelectorAll(".promotion img"); // 슬라이드 인덱스를 0..
Django + Postgresql (트라이그램 유사성을 이용하여 유사한단어 검색하기) 예를들어 내용검색 중 검색 단어를 "리눅스 명"을 오타로 "리늑스 명"이라고 검색하면 "리눅스 명"과 "리늑스 명"은 유사한 단어이지만, 하나의 글자만 다르기 때문에 트라이그램은 세 개의 유사한 연속된 문자열을 찾을 수 있다. 예를 들어, "리눅스 명"은 '리눅', '눅스', '스 명'과 같은 트라이그램을 가지며, "리늑스 명"도 '리늑', '늑스', '스 명'과 같은 트라이그램을 가진다.   1. form.py # 검색을 위해 검색 form을 만든다class SearchForm(forms.Form):  query = forms.CharField()   2. view.py # 검색 요청 viewdef post_search(request):    form = SearchForm()    # 쿼리와 결과는 ..
Django + Postgresql (ORM에서 searchVector를 이용하여 모델의 여러 필드검색), RSS feed 제작 1.SearchVector 객체를 이용해 제목 및 내용에 포함된 단어를 검색 할 수 있다.    1-1. 명령어 python manage.py shell  orm으로 'django'를 검색하고 있다. 이때 searchVector를 이용하여 여러필드를 검색할 수 있다.      2. RSS feed 웹피드는 최근 업데이트 된것을 보기좋게 보여주는 XMLimport markdownfrom django.contrib.syndication.views import Feedfrom django.template.defaultfilters import truncatewords_htmlfrom django.urls import reverse_lazyfrom .models import Post class LatestPos..
Django 템플릿페이지에서 form태그 제출로 이메일보내기(게시글공유) -정보처리기사 실기공부에서 배운내용 SMTP - 로컬에서 이메일을 보내기위한 프로토콜, 기본포트번호는 25번 SSL/TLS - 클라이언트와 서버간의 웹데이터를 암호화해주고 무결성을 보장해주는 암호화프로토콜 0. settings.py 설정해준다EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'ID' EMAIL_HOST_PASSWORD = 'PASSWORD' EMAIL_PORT = 587 EMAIL_USE_TLS = True 1. MVT패턴으로 코딩(모델은 여기서 생략) 1-1클라이언트 요청 view에서 form 필드 값을 is_valid()를 통한 유효성검사를 한다. 유효성검사를 통과한 cd 데이터는 f스트링으로 데이터와 문자열을 합쳐서 send_mail()안에 데이터..
Django 댓글 비활성화 클라이언트 요청 view에서 activate를 Ture값을 주어서 댓글을 표시한다. activate모델 값은 Boolean형식이라 False이거나 admin페이지에서 댓글을 수정하여 비활성화체크를 하면 부적절한 댓글을 숨길 수 있다.def post_detail(request, year,month,day,post): post = get_object_or_404(Post, status=Post.Status.PUBLISHED, slug=post, publish__year=year, publish__month=month, publish__day=day) comments = post.comments.filter(activate = True) form = CommentForm() return render(reque..
FASTAPI OAUTH2.0 인증, 인코딩 디코딩을 통한 JWT 생성과 검증, 리프레시 토큰 생성 먼저 OAUTH2.0인증을 위한 변수를 만든다.# 엑세스 토큰검증을 위한 의존성 주입 oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") jwt를 생성하는데는 헤더.페이로드.시그니처가 필요하다 헤더는 자동으로 생성된다 { "alg": "HS256", "typ": "JWT" } 페이로드는 서비스에서 공통적으로 사용하는 클레임으로, 만료시간 exp를 설정했다. 그리고 시그니처는 jwt.encode함수안에 자동으로 생성된 헤더(알고리즘 HS256)와 사용자 정보가 담긴 페이로드, 시크릿키를 합쳐져서 만들어진다 = 헤더+ 페이로드+ 시크릿키 인코딩(Encode) 과정에서는 사용자 정보가 담긴 데이터 페이로드와 클레임을(여기서 토큰 만료시간을 나타내는 exp를 설정)..
FASTAPI 정적 토큰헤더를 통한 인증 동적토큰 JWT가 아닌 정적토큰 X-Token에 고정된 값을 사용하여 토큰헤더인증을 구현해 보겠다. POST, PATCH, GET에 대한 토큰 헤더를 넣음으로써 토큰헤더인증을 통해 요청을 완료한다. 1. 토큰 생성 fake_secret_token = "hongsun" 2. 질문생성 POST요청 # 질문 생성 @app.post("/questions/", response_model=QuestionCreate) async def create_question(question: QuestionCreate, x_token: Annotated[str,Header()]): if x_token != fake_secret_token: raise HTTPException(status_code=400, detail="유효하지..