Tiny Star

ABOUT DEV 186

[❌삽질과 해결 그 사이]An invalid form control with name='content' is not focusable.

ckeditor5를 적용하고 생긴문제.게시글 작성하고 글 작성하기 버튼을 누르면 콘솔창에 해당 에러와 함께 아무 반응을 하지 않는다.  게시글 입력받는 곳의 html코드는 이 상태  결론적으로 이 에러가 나는 원인은  요소가 required 속성을 가지고 있는데,  CKEditor가 적용되면 해당 요소가 숨겨지기 때문에 발생하는 에러라고한다.CKEditor가 적용된 후에는 실제 가 숨겨져 있으므로 브라우저는 이를 유효한 입력 요소로 인식하지 못하기때문에 의 required 속성을 제거하거나 CKEditor가 빈 값을 허용하지 않도록 설정이 필요하다. 1. 쿨하게 required 삭제하기 2. 굳이 js로 false처리해줘서 똑똑한 척 코드 몇줄 더쓰기 3. 서버 측에서 빈 값 검사하는 로직을 만들기폼 제..

[CS STUDY INTERVIEW] 11주차 - Error & Exception

CS 스터디 11주차  Error & Exception Error & Exception  프로그래밍에서 "Error"와 "Exception"은 코드 실행 중 발생할 수 있는 문제들을 지칭하는 두 가지 주요 용어이다.이러한 문제들은 프로그램의 흐름을 방해하고, 예상치 못한 결과를 초래하기 때문에 예외처리 등 다양한 방법으로개발자가 오류를 명시적으로 던지거나 잡아주기도 한다. 두 용어는 종종 혼용되기도 하지만, 각각의 특성과 처리 방식에는 분명한 차이가 있다. Throwable 클래스 Java에서 Throwable 클래스는 예외 처리 체계의 최상위 클래스로, 모든 오류(Error)와 예외(Exception)의 슈퍼클래스이다.Throwable 클래스는 Java의 java.lang 패키지에 속해 있으며, 이 클..

[❌삽질과 해결 그 사이] TypeError: exceptions must derive from BaseException

View에서 예외처리(?)를 하는 도중에 생긴 오류TypeError : exception must derive from BaseException. 이 에러 메세지를 그대로 해석하면 예외는 BaseException에서 파생되어야 한다는 이야기인데,이게 뭔 이야기인고 하니 파이썬3에서는 BaseException 내장 클래스에서 파생된.즉, 상속받는 클래스만 예외클래스로 인식되어 이 익셉션 조상클래스를 상속받지 않은 건 예외처리로 인식하지 않는다.구글에 쳐봐도 예외메세지만 던진 경우에 뜨는 오류라는데, 나는 그렇게 무책임하게 던지지 않았다.한참 씨름하다 뭐가문제냐!?싶어 선임님께 질문한 결과는? return이 아닌 raise로 던져줬기 때문! return은 Response를 던지는거지만 raise는 예외를 발..

[❌삽질과 해결 그 사이] alembic upgrade head 이후 테이블 생성이 안될 때

이번에 새로 신규 기능을 진행하면서 테이블 설계를 마쳤다. 이제 이 models.py 마이그레이션을 통해 DB에 등록을 할 차례. 프레임워크로는 Django를 사용하지만 ORM은 Django의 내장ORM이 아닌SQLAlchemy ORM을 사용하고 있어서 모델을 Python 클래스로 정의하고,이를 Alembic을 사용하여 마이그레이션을 관리하고 있었다. migration 폴더 내 env.py안에 새로 등록 할 models를 import하고터미널에  alembic upgrade head 명령어 입력하면 마이그레이션이 진행이 되어야하는데..??? 마이그레이션 진행이 안되고 그러니 당연히 DB에 테이블이 생기지 않는다. 그 이유가 바로 Django 내장 ORM이 SQLAlchemy 마이그레이션을 방해하고 있기 ..

[❌삽질과 해결 그 사이] alembic : 'alembic' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.

신나게 새로운 기능에 대해 테이블 설계를 마친 뒤 .... SQLAlchemy migrate 차례..... migrateion 폴더 내 env.py 내에 model import도 마쳤으니터미널에 alembic upgrade head 명령어 복붙!  ?복붙이 잘못됬나 차근차근 직접 하나하나 써보자 ? 아~~~~~ 또 왜그래! 이유는 터미널이 PowerShell로 되어있어서 발생한 문제라고 한다 터미널 제일 상단으로 가보면...당당하게 PowerShell이 터미널을 실행시키고 있는 것을 볼 수 있다^^.. 대부분 VS에서 발생하는 문제같은데 인텔리제이를 쓰고 있는 나는 실행 터미널을 cmd로 바꿔줘봤으나? 안 ㅋ 댄 ㅋ 다 ㅋ아예 명령어가 안먹는뎁쇼.... 이유는요 네...from alembic import..

[쿠키와 세션] 쿠키/세션 특징 및 사용방법

지난 포스팅에서 다룬 인증과 인가.그 중 쿠키와 세션은 인증과 인가의 개념으로 웹 애플리케이션에서 사용자의 상태를 관리하는데 사용되는 중요한 메커니즘으로웹 개발에서 사용자의 상태를 관리하고, 웹 사이트와 사용자 간의 상호작용을 보다 개인화하고 유지하기 위한 기술이다.쿠키-세션 방식은 결국 서버가 '특정 유저가 로그인 되었다'라는 상태를 저장하는 방식이다.쿠키(Cookies) 쿠키는 클라이언트 측에 데이터가 저장 될 목적으로 생성한 정보가 담긴 파일로,웹 서버가 HTTP 응답 헤더를 통해 사용자의 브라우저에 데이터를 전송하고, 브라우저는 이 데이터를 로컬에 작은 파일 형태로 저장한다.이후 같은 서버에 대한 모든 요청에 이 쿠키 정보를 HTTP 요청 헤더에 포함시켜 서버로 전송하게 된다. 쿠키의 동작 방식을..

[Web Security] 인증과 인가

요즘 어쩌다보니 토큰으로 인가처리를 하는 로직을 많이 짜게 되었다.자바할 때 토큰으로 게시판 등 권한 처리를 몇번 했었지만 완전히 내가 짠 코드가 아니기도 하고시간에 밀려서 대충? 짜다보니 토큰의 자세한 처리방법 등에 대해 많이 미숙했던 것 같다. 그런의미에서 토큰에 대해 정리를 해보려다가 기왕 하는거 웹 보안관련해서 카테고리를 하나 만들었다.첫 글은 역시 기초 개념부터 시작해야 제 맛인지라 인증과 인가. 웹 보안에 가장 기본적인 개념부터 정리를 좀 해볼까한다.인증과 인가인증과 인가는 보안 및 접근 제어 관점에서 중요한 개념으로, 처음 접할 땐 비슷한 두 단어의 차이가 명확하지 않을 거라고 생각한다.두 개념의 차이를 한 문장으로 정리하자면 로그인 기능 자체는 인증이고, 회원/비회원 여부에 따라 다른 권한..

[CS STUDY INTERVIEW] 10주차 - GC(Garbage Collection)

CS 스터디 10주차  GC(Garbage Collection)GC(Garbage Collection) 이름 그대로 쓰레기 수집을 하는데, 메모리 관리 방법 중 하나이다.프로그램이 더 이상 사용하지 않는 메모리 영역을 자동으로 찾아내어 재활용하는 과정으로이 기술은 메모리 누수를 방지하고 프로그램의 안정성을 높이는 데 크게 기여한다. 개발을 하다보면 사용하지 않는 객체들로 인하여 불필요한 메모리가 사용이되면서 메모리 누수가 발생한다.C/C++언어의 경우는 개발자가 직접 사용하지 않는 객체들에 대해서 free()함수를 이용하여메모리를 해제하면서 직접 관리해줘야하지만 Java에서는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문에명시적으로 객체를 해제할 필요가 없다. 즉, 사용하지 않는 객체..

[❌삽질과 해결 그 사이] ImportError : cannot import name 'b64encode' from 'jwt.utils'

나같은 무지랭이가 코드를 짜다보면 아무거나 import하고그러다보면 이상한게 설치가 되기마련....^^ 잘되던게 갑자기 import오류가 나면서 순환참조(?)가 걸려버림..ㅋ 정확히 이 오류는 jwt.utils 모듈에서 b64encode를 import할 수 없다는 것으로보통 jwt 모듈의 버전 문제나 설치가 올바르게 되지 않았을 때 발생한다고 한다. 가장 먼저 확인할 점은 jwt 모듈의 버전과 해당 모듈의 문서를 참조하여 해당 메소드나 기능이 지원되는 버전인지 확인하는 것어쩌고 저쩌고 다 필요없고 잘되던게 안되면서 저런문제 생기면 삭제-재설치가 답임 삽질하지말고 쿨하게 재설치하세요. pip uninstall jwt //삭제pip install jwt //설치