요즘은 간편 로그인(구글 로그인과, 네이버 로그인 등을 이용한 외부 서버 인증 방식)으로 처리하는 곳이 많지만해외 거주자가 있거나, 서비스의 고객층에 따라 간편 로그인이 낯설고, 예전 방식의 ID와 PW를 선호하는 사람들도 있기 때문에요구사항에 따라 ID와 PW 방식의 회원가입을 구현해야 하는 경우도 존재한다. 우리는 종종 DB가 털려서, 개인정보가 유출 됐다는 뉴스를 접하곤 한다. 일반적으로 사람은 ID와 PW를 대다수의 사이트에 동일하게 사용하곤 한다.하나의 사이트가 털려버리면, 내가 가입한 대다수의 사이트도 털려버릴 수 있기 때문에 큰 문제가 된다. 이 때문에 암호화에 관심이 생기게 되었고, 이번 포스팅에서는 어떻게 패스워드를 암호화해야 안전한지, 어떤 이유로 암호화 방식이 발전해 왔는지암호화에 ..
ExtJS는 JavaScript기반의 웹 ui 프레임워크 입니다. 요즘은 React, view가 강세를 보이고 있어 ExtJs의 사용이 많이 줄어든 추세이지만, 공부 삼아서 본 강의 내용을 정리해보았습니다. ExtJS 6 정리 미리 정의 되어있는 패키지들의 이름을 선언하여 사용하는 개념 ExtJS 소개 자바스크립트 프레임워크 화면개발은 Json구조를 가짐 (key : value) 다양한 플랫폼 환경 지원 ExtJS(웹) / Sencha Touch(테블릿, 모바일) 수치를 이미지화 하는데 장점 3버전까지만 해도 무겁고 느렸으나, 버전업이 되면서 문제해결 사용처 SI 프로젝트, 기업용 솔루션 무료 오픈 웹 어플리케이션 ㅤ 초기설정 sencha, extjs 설치 명령어로 설치 확인: cmd → sencha 설..
해당 포스팅 글은 n-puzzle을 풀기 위한 문제 분석과 접근 방법에 대한 글이다. 문제를 해결하기 위한 알고리즘 풀이에 대한 내용이 아니다. 이미 알고리즘에 대한 내용은 인터넷에 많으니 이번 글에서는 문제를 해석하고 접근하는 과정을 알아보자. 문제 문제 내용 슬라이딩 퍼즐이 있다. 다음과 같은 수가 주어질 때 오른쪽 가장 끝 칸은 비어있는 칸이다. 1 2 3 4 5 6 7 8 0 어떤 수와 인접해 있는 네 개의 칸 중에 하나가 비어 있다면, 수를 그 칸으로 이동시킬 수 있다. 물론 표 바깥으로 이동할 수 없다. 우리의 목표는 초기 상태가 주어졌을 때 최소의 이동으로 위와 같은 정리된 표를 만드는 것이다. 다음 예를 보자. 1 0 3 4 2 5 7 8 6 1 2 3 4 0 5 7 8 6 1 2 3 4 ..
특정 페이지에 들어 갔을때 랜덤하게 데이터를 구성하고자 했다.(like 로또) Querydsl과 페이징 처리 되어 있는 조건으로 구글링을 해보는데 예제가 많이 없고, 현재 버전에서는 제공하지 않는 utils들을 활용하는 글들이 대부분이라 해당 글을 작성하게 되었다. 로직 Controller @ApiOperation(value = "(팀 찾기) 팀 리스트 가져오기", notes = "팀 이름 혹은 팀 고유번호를 입력해야한다. ") @GetMapping("/teams") public CommonResponse teams (@RequestParam int pageNum, @RequestParam int pageSize, @RequestParam String pageSort ) { return teamServi..
스프링시큐리티와, webconifg에 두가지 설정법을 다룬다. 토이 프로젝트를 진행 중에 CORS 문제를 만나게 되어 글을 작성하게 되었다. 우리 팀은리액트(3000 포트)와 스프링부트(8080 포트)를 이용해 개발 중에 있다. 토요일 주말, 쉬고 있던 중 한 팀원으로 부터 다음과 같은 연락을 받았다. "localhost:3000/api/find/team API에서 응답값이 나와요!" 응??? 나는 순간적으로 localhost:3000은 리액트 포트인데 무슨 소리지? 하면서 당황했다. 뭔가 착각한거 아니야?라는 마음으로 포스트맨에서 토큰 값과 localhost:3000/api/team/find에 파라미터 값을 넣고 실행해 보니 정말 응답 값이 나왔다. 자 그러면 localhost:3000으로 API 요청..
토이 프로젝트 게시판을 구현하면서 CRUD의 Update를 구현할 일이 있었다.update를 구현하면서 내가 원하는 동작은 테이블에서 하나의 컬럼만(이름) 수정하는 것이었지만, update query가 나갈 경우 이름을 제외한 다른 값들이 null처리가 되었다.이에 따라 공부를 하던 중 더티체킹(변경감지), 벌크연산의 차이에 의해 발생한 부분이었고, 이 둘의 차이점과 더 나은 코드 퀄리티를 유지하는 방법에 대해 작성하게 되었다. [들어가기에 앞서]update 할 데이터를 설정하는 경우, builder 패턴과 setter 사용법 중 나의 경우 @Builder 패턴을 즐겨 사용했지만, 변경감지일 경우만 @Setter를 사용했다. 다음은 Builder와 Setter에 대한 인프런 서포터즈님의 의견이다.JPA..
JPA 엔티티 사용 시 발생한 에러에 대해 다루고, @JsonIgnore이 아닌 DTO와 @Projection을 활용한 해결방법을 제시한다. 에러내용 serializer found for class -org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer..... 엔티티[엔티티]...-> [엔티티]... 블라블라~.. 오류 발생원인 순환참조로 인한 오류 JPA에서 엔티티 매핑을 하는 경우 엔티티 파일이 서로 참조하는 대상이 서로 물려 있어서 참조할 수 없게 되는 현상을 말한다. 순환참조가 발생하는 이유 Spring Boot는 @ResponseBody를 선언 할시 O..
JPA + S3 조합으로 S3에 파일 올리는 것은 예제가 많이 있는데 JPA + S3 + DB에 저장한 값 불러와서 실제로 사용할 수 있는 예제는 많이 없었다 그래서 글을 작성하게 되었다. 나의 경우는 팀 프로필 변경 건에 대한 API를 만들어보았다. 1. 코드 예제에서 import는 생략하니 실제로 사용하려면 import선언정돈 직접 하자 2. AMI랑 S3이용해서 만드는건 구글 검색하면 엄청 나오니까 이건 다른 포스팅 참고 Application.yml의 기본설정 # ------- 파일 업로드 시작 ---------- spring: servlet: multipart: enabled: true # 임시 저장경로 - 파일 확장자 체크 max-request-size: 100MB max-file-size: 1..
- Total
- Today
- Yesterday