분류 전체보기

    [JPA] repository.save()의 반환값이 안 들어올 때

    | 상황 - repository.save()를 하면 Entity타입의 객체가 반환되어야 하는데 아래와 같이 null이 반환됐다. /*Q14*/ // 트러블 슈팅 : 어? 뭐지? 데이터가 저장은 됐는데, Response값이 안온다. // -- 원인 ) Entity 인스턴스 비교(equals)를 위해 equals, hashcode 필요 @PostMapping("/api/notice4") public Notice addNotice4(@RequestBody NoticeRegister noticeRegister){ return noticeRepository.save( Notice.builder() .title(noticeRegister.getTitle()) .contents(noticeRegister.getCon..

    RDBMS 종류 및 사용법 아카이빙

    H2 database https://yjkim-dev.tistory.com/m/3 https://lob-dev.tistory.com/m/entry/H2%EC%9D%98-LocalIn-Memory-%EC%99%80-ServerTCP-%EB%AA%A8%EB%93%9C - 인메모리란 ? https://www.sap.com/korea/insights/in-memory-database.html - 인메모리 컴퓨팅 https://m.blog.naver.com/gkenq/10183400845 - 인메모리 DB란? 데이터를 하드디스크가 아니라 메인메모리에 저장하는 데이터베이스

    [HTTP] User IP와 Agent(Device) 정보 가져오기

    | User IP와 User Agent 정보란? - 클라이언트가 HTTP를 통해 어떤 요청을 보내면 HTTP header에 사용자 IP주소와 기기정보(Agent)가 담기게 된다. - User IP 주소는, 다양한 종류의 proxy를 고려하여 각 header를 전부 확인하는 것이 필요하다. - 만약 IPv4 형식으로만 IP주소를 얻길 원한다면 [Run]-[Configuration] Arguments VM에 설정을 걸어줄 수 있다. -Djava.net.preferIPv4Stack=true - 사이트 정책 : 로그인 시 히스토리 내역 저장한 후 메인화면으로 이동한다. - 위 정책에 따라 1) 히스토리를 저장할 Entity를 만들고, 2) 스프링 시큐러티를 이용해 로그인 성공시 사용자 IP주소와 Agent정보를..

    [클린코딩] 예외 처리하기 - 용어, 올바른 예외 핸들링 (feat. AOP)

    | 용어 종류 내용 오류(error) OutOfMemory Exception 시스템 상 메모리 부족 StackOverflow Exception 스택 오버플로우 발생 예외(exception) checked Exception Compile 시 체크 : type, syntax 에러 unchecked Exception Runtime 시 확인 : 다양함 | 올바른 예외 핸들링 방법 - 예외 핸들링 : 런타임 시에 발생하는 예외에 대한 핸들링 - 올바른 예외 핸들링이란? (1) 예외 상황이 발생할 때, return을 하지 말고 throw를 해라 (2) try - catch 문을 통해 잡은 예외는 꼭 처리하여 사용자단에 안내한다. (3) 예외 상황일 때만 예외를 던지고, 아닐 경우, 남발하지 않는다. (4) 최상위 ..

    문자열 알고리즘 - KMP와 Robin-Karp 알고리즘

    | 관련 강의 영상 https://www.youtube.com/watch?v=UcjK_k5PLHI - KMP나 Robin-Karp를 사용하면 O(n)의 시간복잡도로 문자열에서 패턴 문자열을 찾을 수 있다. - KMP는 어려워서 일단 Robin-karp 부분만 찾아서 적용해보았다. | Robin-Karp 알고리즘 사용해보기 https://joomn11.tistory.com/111?category=900637 [알고리즘] 라빈 카프(Rabin-Karp)(문자열 탐색)(Rolling Hash) 문자열 탐색 알고리즘 Rabin-Karp는 Hashing을 이용하여 문자열에서 특정 패턴과 일치하는지 찾는 알고리즘이다. 문자열에서 찾고자 하는 패턴의 길이만큼 hash값으로 변환하여, 패턴과 hash값이 같은 joom..

    [클린코딩] 가독성 높이는 습관

    보호되어 있는 글입니다.

    [클린코딩] 좋은 코드란 무엇인가?, 레거시 코드

    | 개발의 과정에서 : 코드를 작성할 때 풀어야 하는 문제와 처한 상황을 함께 고려해야 한다. ex. 어드민에 특정 기능 하나를 추가하는 것. --> 끔찍한 코드 + 하루의 기간. (if문을 하나 추가한다.). 어떤 것이 가장 효율적일까? | 처한 환경이란? : 시스템 및 비즈니스 환경 속에서 현재 내가 풀어야 하는 문제를, 어느 시점까지 처리해야하는 가를 고려해야한다. : 빠른 시간 내에 처리를 해야할 경우, 레거시 코드가 더 효과적일 수 있다. - 저사양 임베디드 시스템 : 용량이나 RAM등 성능 자체가 이슈. 최적화가 가장 중요. - 고성능 서버군(ex. AWS) : 성능에 대한 제한 보다는 확장성 있고 안정성 있는 시스템을 구축. 모니터링 - 성장 중인 초..

    [LMS 만들기] 회원 탈퇴, 강좌 관리, 파일 업로드

    [LMS 만들기] 회원 탈퇴, 강좌 관리, 파일 업로드

    | Today I Leanred 1. 회원 탈퇴 - 정책에 따라 탈퇴회원의 정보를 특정 기간 동안 가지고 있을 수 있다. - 오늘 수업에서는 아래와 같이 회원을 초기화하되, 아이디 정보만 가지고 있는 식으로 만들었다. - 회원 정책으로는, 보통 아래처럼 아이디를 쌩으로 다 보여주지 않고 마스킹 처리를 하는 게 일반적이고, 약관에 따라 데이터를 저장하는 기간도 기억상 아마도 1년 정도였던 것 같은데, 개인정보보호법에 따라 정해진 기간 이상은 탈퇴 회원 정보를 가지고 있을 수 없다. 비밀번호 갱신에 대한 안내도 정기적으로 이루어지는데, 오늘 배운 내용보다 실제 서비스 로직은 훨씬 복잡할 것 같다. 2. BindingResult - 모델을 통한 데이터 바인딩 시 타입 미스매치와 같은 오류를 감지하는 역할 - ..

    [LMS 만들기] 회원정보 수정 - 우편번호 찾기, ajax와 Rest API

    [LMS 만들기] 회원정보 수정 - 우편번호 찾기, ajax와 Rest API

    | Today I Learned 1. 회원 정보 수정을 할 때 중요하게 볼 사항 회원 정보 수정 (1) 화면에 보여주지 않을 정보 (x) (2) 화면에만 보여줄 정보 (수정 불가) - readonly (3) 수정 가능한 정보들 2. 우편번호 찾기 - 여러 api들이 있지만, 가장 많이 사용되는 것은 다음 api이다. https://postcode.map.daum.net/guide - 위 링크에 들어가면 다양한 사용법들이 있는데, - 수업에서는 [ iframe을 이용하여 레이어 띄우기 ] 방법을 사용했다. - [예제 코드 보기]를 누르면 각 요소들에 자바스크립트를 사용해서 우편번호를 가져오는 법을 알려주는데, 긁어 와서 요소 id명이나 실행 함수명을 고쳐쓰면 된다. 3. ajax를 통한 처리 : 비동기식 ..

    [LMS 만들기] @Controller 와 @RestController 정확히 알기, AJAX로 Json 데이터 전송하기, Principle(로그인 정보)

    [LMS 만들기] @Controller 와 @RestController 정확히 알기, AJAX로 Json 데이터 전송하기, Principle(로그인 정보)

    | Today I learned 1. @Controller와 @RestController의 차이 - 앞에서는 내가 @Controller와 @RestController에 대해 차이를 정리할 때, 잘못된 정보를 가지고 있었다. - @Controller로도 @RestController처럼 Json 타입의 데이터를 보내는 건 가능하다. - 그럼에도 굳이 둘을 나눠서 쓰는 건, 사용 목적에 따라 쓰임새를 나누어두기 위함으로 보인다. * 아래 내용 원본 출처 : https://mangkyu.tistory.com/49 (1) @Controller : 주로 View를 반환한다. Model로 Data-binding 가능 @Controller View를 반환할 때 Data를 반환할 때 목적 @Controller는 주로 V..