전체 글

척척석사

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석 - (1) 파이썬 스레드, GIL

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석 - (1) 파이썬 스레드, GIL

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석 을 위한 분석 게시글 1편입니다. 아래의 카테고리에 정리했습니다. [Python 뜯어보기] 3. 파이썬 Thread 와 GIL [Python 뜯어보기] 3. 파이썬 Thread 와 GIL [파이썬 쓰레드와 GIL] 굉장히 좋아보이는 자료 출처: http://www.dabeaz.com/python/UnderstandingGIL.pdf - 파이썬을 실행시키면 => 하나의 프로세스, 하나의 인터프리터 - 파이썬 쓰레드는 real system(os).. letsmakemyselfprogrammer.tistory.com

    [SpringBoot] 6. ManyToMany 를 "일대다/다대일"로 풀어서 사용하기 (+ 영속성 전이 문제)

    1. 배경 인가 시스템을 고민하면서, 수직적인 권한과 수평적인 권한을 분리했다. 수직적 권한 : (비회원->미승인회원->일반회원->회장단->회장->관리자) 수평적 권한 : 부서 (IT 부, 운영부, 총무, 홍보부 등) 수평적 권한을 처리하기 위해 Team 이라는 도메인을 추가하기로 했다. 지금 동아리 운영 상황을 보자면, 두 부서에서 동시에 활동하는 사람은 없지만 한 부서에서 다른 부서로 이동하는 경우, 중간에 임시로 동시 활동하는 경우 등이 있었고, 꼭 한 부서만 속해있으리라는 법은 없으니까. Member 와 Team 을 다대다 관계로 설정했다. 2. 다대다의 문제 jpa 에서 ManyToMany 관계를 지원하고 있어서, 해당 어노테이션을 사용해 풀어내면 정말 쉽다. 하지만 두 엔티티 사이의 관계가 그..

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정 (2022-03-14~15) (문제상황) - 소셜로그인을 통해서만 로그인이 가능하도록 구현되어있다. - OAuth2 인증 후 제공받는 사용자의 이메일 정보와, 회원가입 시 기재한 프로필 정보를 매핑해서 보관하고 있었다. - (로 letsmakemyselfprogrammer.tistory.com 위 작업 중, 소셜 계정 추가 연동 부분에서 보안처리를 변경할 때 했던 고민을 찾아봤다. 1. 상황 [기존 방식] - 단방향 md5 로 사용자id 를 암호화하여 넘김. => 복호화를 할 수 없으니 모든 사용자를 순회하면서 일치하는 확인했어야했다. [수정 방식] - key 를 이용하여 signature 를 생성하고 id 를 제외한 signatur..

    [Java의 정석] 09. java.lang 패키지

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.1 Object 클래스 hashCode() : 객체의 주소값을 이용해서 해시코드를 만들어 반환한다. str 클래스는 문자열 내용이 같으면 도일한 해시코드를 반환하도록 오버라이딩되어 있다 toString() : 클래스이름 + @해시코드 값이 기본으로 설정되어있다. clone() : 객체의 값을 복사한다.. 참조타입의 경우에는 주소값을 복사하므로, 얕은복사문제가 있다. Cloneable 인터페이스를 상속받아 오버라이딩해야한다. 1.2 String 클래스 생성자를 이용한 경우에는 항상 새로운 String 인스턴스가 생성된다. 리터럴은 클래스가 메모리에 로드될 때 미리 생성되어있다. 따라서 같은 리터럴로 초기화되는 변수들은 모두 같은 주소의 문자열 리터럴을 갖는다..

    [Java의 정석] 08. 예외 처리

    [Java의 정석] 08. 예외 처리

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.1 프로그램 오류 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 1.2 예외 클래스 : Exception 은 checked Exception 과 unchecked Exception 으로 나뉜다. unchecked Exception 은 보통 프로그래머의 실수에 의해 발생하고, checked Exception 은 어플리케이션 외적인 요인으로 발생한다. 1.3 메서드에 예외 선언하기 main 에서도 예외가 처리되지 않으면, 프로그램이 종료된다. 1.9 자동 자원 반환 try with resources 문 try (FileInputStream fis =..

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정  (2022-03-14~15)

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정 (2022-03-14~15)

    (문제상황) - 소셜로그인을 통해서만 로그인이 가능하도록 구현되어있다. - OAuth2 인증 후 제공받는 사용자의 이메일 정보와, 회원가입 시 기재한 프로필 정보를 매핑해서 보관하고 있었다. - (로그인 과정) OAuth2 로그인 시도 => 이메일 받아서 db 에 프로필 정보와 매핑되어 있는지 확인 => 로그인 처리 - 네이버는 OAuth2 를 통해 제공하는 이메일이 달라질 수 있다. => 연락처이메일이 달라져서 로그인이 안되는 경우 발생 - 또 처음부터 정보제공 동의를 하지 않더라도, 로그인이 진행되어 필수로 받아야하는 이메일 값이 넘어오지 않는 경우 발생 - 이슈 : https://github.com/InhaBas/Inhabas.com/issues/102 (해결방안) provider 와 uid 값으로..

    [Java의 정석] 7.2 메소드 오버라이딩 시 예외 선언

    책에서는 예외 부분을 굉장히 간단하게 설명이 되어있는 것 같아, 더 구체적인 자료를 찾아봄 "예외는 조상 클래스이 메서드보다 많이 선언할 수 없다." 라고 적혀있지만, 엄밀히 말하면 checked Exception 에만 해당하는 내용이다. unchecked Exception 에 대해서는 자식 클래스에서 추가로 선언해도 상관없다. (case 1) 부모 메서드가 checked exception 던질 때, class Parent{ void method1() throws SQLException { //checked exception } } class Child extends Parent{ void method1() { } } (case 2) 부모 메서드가 unchecked exception 던질 때, class..

    [Java의 정석] 07. 클래스 상속 & 인터페이스 상속

    [Java의 정석] 07. 클래스 상속 & 인터페이스 상속

    모르는 것만 짧고 빠르게 정리한 노트입니다. 2.2 오버라이딩의 조건 조상 클래스이 메서드를 자손 클래스에서 오버라이딩 할 때, 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 예외는 조상 클래스이 메서드보다 많이 선언할 수 없다. 인스턴스메서드를 static 메서드로 또는 그 반대로 변경할 수 없다. 책에서는 예외 부분을 굉장히 간단하게 설명하는 것 같아, 따로 더 정리했다. [Java의 정석] 7.2 메소드 오버라이딩 시 예외 선언 책에서는 예외 부분을 굉장히 간단하게 설명이 되어있는 것 같아, 더 구체적인 자료를 찾아봄 "예외는 조상 클래스이 메서드보다 많이 선언할 수 없다." 라고 적혀있지만, 엄밀히 말하면 checked letsmakemyselfprogrammer.tisto..