본문 바로가기

전체 글

(83)
리액트 불필요한 랜더링 방지 1. 변경전 const AdditonalInfo = () => { return Some Information }; const Component1 = ({count, setCount}) => { return ( {count} {() => setCount((c) => c+1)} Increment Count1 ); }; const Component2 = ({ count, setCount }) => { return ( {count} setCount((c) => c + 1)}>Increment Count2 ); }; const Parent = () => { const [count, setCount] = useState(0); return ( ); }; 버튼 카운트가 발생할때 마다 AdditonalInfo컴포넌트도..
장고(DRF) + 리액트 REACT.JS 포트폴리오 2 이전에 이어지는 내용들입니다. https://devttaemppang.tistory.com/2 장고(DRF) + 리액트 REACT.JS 포트폴리오 1백엔드 Django rest framework + 프론트 React.js 그리고 디자인은 부트스트랩5를 사용하여 서점 사이트를 구현해 보았다. 또 찜하기 기능도 만들어보았다 (Context API를 통해 전역 값으로 데이터를 뿌려주devttaemppang.tistory.com 장고 API 데이터 요청을 리액트 비동기로 받아오려면 async-await를 사용해야하고 try-catch로 묶어줘야 에러핸들링이 되면서 콘솔로 에러원인을 파악할 수 있다. 상세페이지 동영상
장고(DRF) + 리액트 REACT.JS 포트폴리오 1 백엔드 Django rest framework + 프론트 React.js 그리고 디자인은 부트스트랩5를 사용하여 서점 사이트를 구현해 보았다. 또 찜하기 기능도 만들어보았다 (Context API를 통해 전역 값으로 데이터를 뿌려주었다) 하지만 찜하기 했던것들이 새로고침하면 사라져서 localstorage를 사용해서 브라우저에 저장해 보았다. 앞에 작업과 이어지는 내용입니다 https://devttaemppang.tistory.com/3 리액트 try-catch, 리액트+장고(DRF) 작업물 완성장고 API 데이터 요청을 리액트 비동기로 받아오려면 async-await를 사용해야하고 그리고 try-catch로 묶어줘야 에러핸들링이 되면서 콘솔로 에러원인을 파악할 수 있다. 상세페이지 동영상devttaem..
python GPT3.5 turbo모델을 사용하여 데이터베이스 객체 조회하기 from openai import OpenAI client = OpenAI(api_key='') def find_product(sql_query): # 쿼리 실행 results = [ {"name": "pen", "color": "blue", "price": 1.99}, {"name": "pen", "color": "red", "price": 1.78}, ] return results sql_query데이터베이스에서 가격이 2.0미만의 제품을 조회하려고 한다. 1. 먼저 함수객체의 세부정보를 정의한다.# 함수 객체 세부정보 정의 functions = [ { "name": "find_product", "description": "sql 쿼리에서 제품 목록 가져와", # 함수 인자에 전달 될 매개변수 정의 ..
웹 보안 HTTPS 설정 https://www.yes24.com/Product/Goods/124156282 프런트엔드 개발을 위한 보안 입문 - 예스24지금이라도 알아두면 쓸데 있는 취약성 관리 대책프런트엔드 분야의 발전으로 다양한 기능과 UI를 개발할 수 있게 됐지만, 그만큼 프런트엔드와 관련된 보안 문제도 많아졌다. 이 책은 보안 관www.yes24.com 1. HTTP통신은 보안과 관련해 세가지 취약점이 있다. - 통신 데이터 도청이 가능하다 -> 은닉하는 구조가 필요하다. - 통신 상대의 진위 여부 확인이 어렵다 -> 통신 상대의 진위 여부를 검증하는 구조가 필요하다. - 통신 과정에서 데이터 수정 여부가 확인이 안된다.... -> 해커의 통신 과정에서의 수정을 막기위해서는 데이터의 결함이나 무결성을 보장할 수 있는 구조..
내장과 상속은 다르다 내장은 구조체를 다른 구조체 안에 내장하는 방법이고 상속과는 별개이다 예제코드를 보면 Bark 메서드를 오버라이드를 하여 상속한것처럼 보이지만 Dog객체를 인수로 받는 DogVoice메서드에 다른 객체인 BullDog, ShibaInu객체를 변수로 대입할 수 없다. 왜냐하면 내장은 상속과 다르기 때문이다.package main import "fmt" type Dog struct{} func (d *Dog) Bark() string {return "Bow"} type BullDog struct{Dog} type ShibaInu struct{Dog} /*오버라이드*/ func (s *ShibaInu) Bark() string {return "멍"} /*Dog객체를 인수로 받아 나중에 DogVoice()메서드..
채널 SELECT 활용 1. 중단알림이 올 때까지 case문을 만나서 여러 채널들을 동시에 실행한다 여러 채널을 동시에 반복하고 싶으면 for문을 넣는다. package main import ( "fmt" "sync" "time" ) /*sync.WaitGroup 모든 작업이 완료될때까지 기다린다.*/ func square(wg *sync.WaitGroup, ch chan int, quit chan bool) { for { select { case n :=
파이썬 객체생성 초기화__init__ , SELF 매개변수 1. 클래스 객체를 만들때 __init__ 인스턴스를 초기화해야한다.def __init__(self): self.switchIsOn = False 1-1. 매개변수 self는 클래스 객체 스코프에 속한 모든 메서드에 접근이 가능하다 그리고 모든 객체 메서는 반드시 매개변수 self가 있어야한다.class LightSwitch(): # 클래스 객체를 만들때 인스턴스를 초기화해야한다. # 매개변수 self는 클래스 객체 스코프에 속한 모든 메서드에 접근이 가능 def __init__(self): self.switchIsOn = False def turnOn(self): self.switchIsOn = True def turnOff(self): self.switchIsOn = False # turn on,of..