STUDY 114

디자인 패턴 51개의 한줄 요약 모음

소프트웨어 설계에서 특정 문제를 효율적으로 해결하는 데에 자주 사용되는 설계 구조나 틀을 의미한다. 코드의 재사용성, 유지보수성, 읽기 쉬움 등을 향상시킬 수 있다. 디자인 패턴의 수는 고정되어 있지 않고, 다양한 패턴이 존대한다. 널리 알려진 건 "Design Patterns: Elements of Reusable Object-Oriented Software" 책에 의해 공식화된 23개의 디자인 패턴이라고 한다. 이 책의 4명의 저자를 GoF라고 부르는데, GoF의 디자인패턴은 크게 생성, 구조, 행위의 3가지 카테고리로 분류한다. 이 외에도 찾아보니 서브, 애플리케이션 도메인, 아키텍쳐, 모듈화 패턴가 있더라. 일단 쭉 노션에 정리를 하던 중인데.. 50개가 넘더라.. 신나서 찾다보면 더 나오길래 일..

STUDY 2023.08.22

Django REST Framework 소셜로그인

개인 프로젝트 중에 소셜로그인기능을 구현하고자 링크와 장점을 찾아 적어봄 Python Social Auth: GitHub 링크: https://github.com/python-social-auth/social-app-django 이 라이브러리는 다양한 소셜 인증 방식을 지원하며 Django와 잘 통합됩니다. Python Social Auth는 다양한 OAuth 제공 업체를 지원합니다. Google, Facebook, Twitter, Kakao 등과 같은 서비스를 통해 인증을 처리하려는 경우 이 라이브러리를 사용할 수 있습니다. Django Allauth: GitHub 링크: https://github.com/pennersr/django-allauth 이 라이브러리는 간단하게 다양한 소셜 로그인을 구현할 ..

STUDY/Python 2023.08.07

Django REST Framework 소셜로그인

개인 프로젝트 중에 소셜로그인기능을 구현하고자 링크와 장점을 찾아 적어봄 Python Social Auth: GitHub 링크: https://github.com/python-social-auth/social-app-django 이 라이브러리는 다양한 소셜 인증 방식을 지원하며 Django와 잘 통합됩니다. Python Social Auth는 다양한 OAuth 제공 업체를 지원합니다. Google, Facebook, Twitter, Kakao 등과 같은 서비스를 통해 인증을 처리하려는 경우 이 라이브러리를 사용할 수 있습니다. Django Allauth: GitHub 링크: https://github.com/pennersr/django-allauth 이 라이브러리는 간단하게 다양한 소셜 로그인을 구현할 ..

STUDY/Python 2023.08.07

navigator.mediaDevices.getUserMedia() | 오디오/비디오 제어

Http 서버만 다루다가 이번에 (WebSocket -> SocketIO)를 사용해 채팅과 화상채팅을 만드는 미니 프로젝트를 진행 중에 비디오와 오디오 제어를 하기위해 사용한 navigator.mediaDevices.getUserMedia() 기록이다. 음 미디어 컨텐츠, 비디오, 오디오, 인스턴스 키워드를 사용해 검색해보니 mozilla에서 MediaStream을 찾았다. MediaStream객체를 반환하는 메서드를 찾아보니 `navigator.mediaDevices.getUserMedia()` 바로 나오더라. 이 메서드는 이름 그대로 User의 Media에 접근할 수 있게 해준다. 기본적으로 사용시 접근을 원하는 미디어의 값을 `{ audio: true, video: true }`처럼 설정한다. 미디..

Trailing slash 사용 | URL에 GET parameters를 사용할때는?

"Trailing slash"는 웹 URL의 끝에 위치한 슬래시(/)를 지칭한다. "https://www.example.com/"에서 마지막에 있는 슬래시! 이것이 중요한 이유는 서버에 따라 URL의 마지막에 슬래시가 있는 경우와 없는 경우에 다르게 반응할 수 있고, 중복 컨텐츠로 간주하는 등등의 이유로 웹사이트 구축 시에는 URL 설계를 일관성 있게 유지하는 것이 중요합니다. 또한, 웹서버 설정이나 프로그래밍 언어에서 디렉토리 경로를 지정할 때도 trailing slash는 중요한 역할을 합니다. 예를 들어, 파일시스템에서 trailing slash는 디렉토리를 가리킵니다. "/home/user/"는 "/home/user" 디렉토리를 가리키는 반면, "/home/user"는 파일이나 디렉토리 모두를 가..

STUDY/Python 2023.07.31

JWT와 JWK의 차이

둘 다 JSON 형태로 정보를 표현하고 전송하는 방식이지만, 그 목적과 사용되는 정보는 다릅니다. JWT는 주로 인증과 권한 부여에 사용되며, 정보를 안전하게 전달하는 역할을 합니다. 반면에, JWK는 암호키를 안전하게 공유하고 전송하는 데 사용됩니다. JWT(JSON Web Token): JWT는 클라이언트와 서버 간에 정보를 안전하게 전달하기 위해 사용되는 작은 정보 단위 주요 역할 : 보통 인증과 정보 교환에 사용됩니다. JWT는 기본적으로 세 부분으로 이루어져 있습니다: Header, Payload, Signature. 예시 웹 애플리케이션에서 사용자 인증에 대한 예를 들어보겠습니다. 사용자가 로그인을 하면, 서버는 사용자의 인증 정보를 JWT로 생성해서 사용자에게 전달합니다. 이 JWT에는 사용..

STUDY 2023.07.25

바닐라 자바스크립트로 심플한 앱 만들기 | 깃헙.io

https://nicesugi.github.io/VanillaJavaScript-Today/ NestJS를 다뤄보고자 했는데 TypeScript를 배워야겠고, 그 전에 JavaScript를 확실히 알고 넘어가야겠고 하다가 만들어보게 되었다. 깃헙io 포멧은 어떻게 보이려나 싶어서 페이지도 생성했다. 음 저번주(17-22일)에 진짜 오랜만에 Django로 서버,프론트 작업을 요구하는 기업과제를 만지다가 잠시 쉬어가는 시간을 갖고자 작업해봤당. 만져보니 여러 D-day 생성도 가능할거같은데 다른건 다 괜찮은데 이상하게.....css..넘 어려움..

Validate 메서드 작성 = 시리얼라이저? 뷰?

Validate 메서드 작성은 어디에 하는게 좋을까? 시리얼라이저에서 검증 로직 처리하고, 뷰에서 데이터베이스에 접근하여 중복검사 등을 수행한다. validate 메서드와 관련된 코드를 시리얼라이저와 뷰에 모두 작성할 수 있다. 대신 각각의 접근 방식의 장단점이 있을테니 찾아봄 1. 시리얼라이저에 validate 메서드 작성 장점 데이터 유효성 검사를 시리얼라이저 수준에서 처리할 수 있음. 시리얼라이저는 입력 데이터를 검증하고 오류가 있을 경우 ValidationError을 발생시킴 -> 즉, 뷰에서 별도의 검증 로직을 작성할 필요가 없어짐 단점 오직 시리얼라이저 내부에서만 사용됨 -> 뷰에서 동일한 검증 로직을 수행하기 위해 시리얼라이저를 직접 호출해야함. 시리얼라이저 내부에서 데이터베이스에 접근하여..

STUDY/Python 2023.07.19

Exception has occurred: improperlyConfigured

오랜만에 장고 과제를 진행중에 발견한 에러다. 서버는 돌아가는데 vscode 디버깅모드시 에러가 뜬다. 관련해서 찾아보니 파이썬 경로설정과 pylint를 많이 써서 해결하더라. 근데도 안되더라. 하다보니 갑자기 잘되다가 모델을 열심히 만들고 urls과 views를 잇던 도중 해당 파일들을 읽지 못하는 상황이 생겼다. 다른 파이썬 프로젝트도 이런가?싶었는데 다 빨간줄 천지. 웃긴건 서버는 돌아간다. 에러 메세지가 친절하지 않다. setting config를 확인하라는데 파이썬 경로 확인해보고 프로젝트 폴더 구조 확인해보고 setting에 앱 추가해주고 가상환경 패키지 확인해보고 다른 구조로 테스트해보고 프로젝트를 새로 구성도 해보고 하는데 일단 안된다. 디버깅 꼭 필요해서 왜인지 찾다 찾다 해결에 힘쓰다보..

STUDY/Python 2023.07.18

이벤트 핸들러 호출 방식 | 함수 사용, 객체 사용

이벤트 발생시 타이틀의 텍스트와 색상을 변경하는 코드를 작성했다. 처음 1번 방법을 작성해보고 수정해서 총 3가지 버전이 있는데, 같은 동작을 수행하지만 코드 구조와 이벤트 핸들러 호출 방식에 차이가 있어서 작성해봄. 코드를 구조화하는 방법이나, 핸들러 함수들을 간편하게 정의하는 방법이나 어느방법이 좋은지 딱 정할 수는 없지만, 지금의 나는 가독성이 좋은 코드가 좋다고 생각하기에 객체를 사용하는 방법이 좋지 않을까 싶다. 1. 각 함수를 직접 호출하는 방법 각 이벤트에 대한 함수를 직접 정의 해당 이벤트가 발생했을 때 함수를 호출 이벤트 핸들러를 등록할 때에는 함수 이름을 전달하는 방식 function mouseenterTitle() { title.innerText = 'The mouse is here!..

반응형