전체 글 (83) 썸네일형 리스트형 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.. 헤드퍼스트 디자인패턴 - Facade 패턴 퍼사드 클래스를 구현함으로써 복잡한 서브클래스에 메소드를 건드리지 않고 필요한 기능만 간단하게 골라서 이용 할 수 있다. 1-1. 서브클래스 앰프 기능 Onpackage ch02.sec02; public class Amplifier { String description; Tuner tuner; StreamingPlayer player; public void on() { System.out.println("앰프가 켜졌습니다"); } } 1-2. 서브클래스 팝콘 주문접수 기능package ch02.sec02; public class PopcornPopper { public void order() { System.out.println("팝콘 821번 주문접수 완료"); } public void done() {.. 헤드퍼스트 디자인패턴 - 커맨드패턴 요청 리시버 Light.javapackage ch01.sec01; // 리시버 public class Light { String location =""; public Light(){ this.location = location; } public void on() { System.out.println(location + " light is on"); } } 커맨더 인터페이스 package ch01.sec01; public interface Command { public void excute(); } 커맨더 인터페이스를 구현한 "LightOnCommand" 클래스가 가지고 있는 "execute()" 메서드 내에서 "Light" 객체의 메서드를 호출하고 있다. 이렇게 "execute()" 메서드 내에서 호출되.. 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="유효하지.. FASTAPI와 mongoDB ODM을 활용한 CRUD , SEARCH 엔드포인트 구축 fastapi엔드포인트에 mongodb 비동기 ODM으로 사용할 beanie CRUD 구축 1. Question모델의 answers필드가 Answer의 모델을 참조하고 빈객체를 넣어 질문에 답변들을 달수 있게 구성하였다. # 모델 정의 class Answer(Document): id:str content: str class Question(Document): id:str title: str description: str answers: List[Answer] = [] 1-1. pydantic의 BaseModel을 상속받아 데이터 유효성검사를 위해 모델의 스키마를 정의한다. 생성스키마, 업데이트 스키마를 따로 구분하였다. 여기서 스키마란 데이터의 구조와 명세를 의미한다. # Pydantic을 이용한 질문,.. 리액트 노드 socket.io를 활용한 실시간 영화예매시스템 구축 서버에서 socket.emit 이벤트함수를 발신하고 클라이언트에서 이벤트를 발생시켜 socket.on 함수로 수신하면 실시간으로 양방향 통신이 가능하다. server.jsio.on("connection", (socket) => { console.log("A user connected"); // 클라이언트가 'requestData' 이벤트를 보내면 데이터베이스 조회 socket.on("requestData", () => { const query = "SELECT * FROM seats"; // 데이터베이스 조회 실행 db.query(query, (err, results) => { if (err) { // 에러가 있다면 클라이언트에 에러 전송 socket.emit("dataResponse", { status.. react-query 실무 백엔드에 저장된 데이터를 변경하면 Tanstack쿼리는 자동으로 변경이 이루어진다. 리액트쿼리는 응답 데이터를 캐시 처리한다 이전 useEffect와 fetch를 이용할때는 새요청을 전송해서 모든 데이터를 다시 가져왔어야 했는데(화면에 로딩 스피너가 뜨면서 1초후에 데이터를 보여준다.) 리액트 쿼리를 사용하면 그전에 했던 수고를 덜고 데이터를 즉각적으로 제공되면서 로딩중 로딩 스피너가 뜨지 않고 바로바로보여준다. slow 3g로 설정을 하고 화면에는 업데이트된 데이터가 즉각 표시된다. import { useRef, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { fetchEvents } from "../.. 이전 1 2 3 4 5 6 ··· 11 다음