분류 전체보기

· SpringBoot
보안에 있어서 Salt를 쓰면 좋다길래 나도 한번 만들어볼까 했다. 그런데 Spring Security의 BcryptPasswordEncoder에는 이미 Salt가 사용되고 있다고 한다 그래서 Salt를 어떻게 만들고 사용하는지, Salt를 쓰는게 도대체 왜 의미가 있는지 이해해보고자 노력했다 그 내용을 정리한 글 해시 함수란 보통 비밀번호는 해시함수를 한번 거쳐서 저장한다. 문자를 해시 함수에 넣으면 해시 알고리즘을 통해서 요상한 값(출력 해시)을 출력해준다. 위 표와 같은 함수들이 있다고 한다 해시 함수의 특징 함수별로 알고리즘이랑 출력 해시(Digest)가 달라서 계산 속도나 보안에 차이가 있다 단방향 암호화라서 복호화 할 수 없다 비밀번호 >> 해싱된 값 : 가능 해싱된 값 >> 비밀번호 : 불가..
· Java
대충 개념만 알고있는 것들 블로그 글을 보면 오~ 싶은데 안보고 설명하라면 제대로 설명 못할 것들 1. SQL Mapper SQL문을 이용하여 RDB에 접근, 데이터를 오브젝트(객체)화 시켜준다. 다른 블로그를 보면 다들 저렇게 써놨다. 저 `객체화` 라는 말이 이해가 어렵다 쉽게 말하자면, 쿼리를 매핑해서 DB에 쿼리를 날리고, 거기서 나온 결과를 우리가 만든 Application에서 사용할 수 있게 해준다는 것. Application에서 DB를 직접 다루도록 도와주는 친구...라고 생각하면 될거같다 말그대로 SQL로 RDBMS와 Application을 연결(Mapping)해주는 친구 개발자가 직접 쿼리를 작성해서 해당 DB에서 결과를 가져옴 >>>> 직접 DB 데이터를 조작 SQL 따로, 비즈니스로직..
HttpUrlConnection으로 HTTP 관련 정보를 받아올 수 있다 Header정보, Body정보 이 때 Body같은 경우는 HttpUrlConnection의 getInputStream으로 받아서 BufferedReader랑 StringBuilder로 쌓아올리고 출력한다. HttpURLConnection con = (HttpURLConnection) obj.openConnection(); BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); StringBuilder sb = new StringBuilder(); String output; while ((output = br.readLine()) != n..
무려 1년만에 여행기를 다시 쓰게 되었습니다 그 당시의 정확한 감정이나 감상은 조금 흐려졌겠지만 제 추억을 되돌아보는 느낌으로 작성하려 합니다 올 해 안에 미국 여행기를 다 작성할 수 있으면 좋겠네요 2022-07-09 이번 글은 0.5일치 짧은 여행기입니다 24시간동안 기차를 타고 샌프란시스코에 도착했습니다. 호스텔 체크인까지 시간이 약간 남았길래 슈퍼두퍼에서 점심을 먹고 레고전시회를 가보았습니다. 샌프란시스코 슈퍼두퍼(Super Duper Burgers) 점심 메뉴를 고민하던 중 이름을 들어본 적 있는 슈퍼두퍼가 보여서 들어가봤습니다. 오픈 직후였는데 사람들이 은근 있었습니다. 주문은 키오스크로 했습니다. 버거 + 밀크쉐이크 주문해서 택스까지 20불 조금 안되게 나왔어요. 제 굉장한 사진 실력에 지금..
프로젝트 빌드할 때 Packaging으로 선택하는게 있길래 뭔 차이인가 궁금했다 정리 Jar, War 둘 다 Application을 쉽게 배포하고 실행시킬 수 있도록 패키징 한 파일 Jar은 Class, 라이브러리를 포함 War은 Jar 파일 + 웹 관련 정보(JSP, Servlet, Javascript) 도 포함한다 별도의 웹 서버나 WAS가 필요함 Springboot는 기본적으로 Jar를 권장. Jar을 쓰면 됨. Jar이란 Java Archive Java Application이 동작할 수 있게 자바 프로젝트를 압축한 파일 Class, 라이브러리 등을 포함 JRE만 있으면 실행 가능 BOOT-INF 개발자가 작성한 Class와 의존성 주입을 통한 lib으로 구성 META-INF 프로젝트 매니페스트 파..
정리 Maven과 Grable은 빌드관리도구 이다 Maven은 Java 전용 프로젝트 관리 도구이며 pom.xml을 이용해 필요한 라이브러리를 정의한다 Gradle은 Groovy를 기반으로 한 빌드관리도구이고 biuld.gradle을 사용한다 Maven보다 100배나 빠르단다 빌드관리도구 소스코드의 빌드 프로세스를 자동화 하기위한 프로그램. 종속성 다운로드 소스코드를 바이너리코드로 컴파일 바이너리 코드를 패키징 테스트 실행 프로덕션 시스템에 배포 이러한 정해진 프로세스를 통해 빌드를 스크립팅, 자동화 한다. 대표적으로 Ant, Maven, Gradle 이 있다 Ant는 오래돼서 레거시 프로그램에만 쓰인다고 한다. Maven 내가 사용하는 수많은 라이브러리를 관리해주고, 사용하는 라이브러리가 필요로 하는 ..
java.sql.SQLException: Access denied for user 'nobody'@'172.17.0.1' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] at com.mysql.cj.jdbc.ConnectionImpl.createNe..
URL에 접속해서 상태 코드가 200번대가 나오는지 확인하는 로직 작성 중, 잘못된 URL 입력 테스트를 해봤다. POSTMAN에서 끝없이 연결하려고 하다가 상당히 시간을 쓰고 Error 처리를 한다. 이 경우를 시간을 단축하기 위해서 setConnectTimeout() 과 setReadTimeout() 을 사용한다고 해서 적용해봤다. int TIMEOUT_VALUE = 2000; // 2초로 설정 try { URL obj = new URL(verificationUrl); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setConnectTimeout(TIMEOUT_VALUE); con.setReadTimeout(TIMEOUT_..
1. java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but no colon was found java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but no colon was found at okhttp3.HttpUrl$Builder.parse$okhttp(HttpUrl.kt:1260) ~[okhttp-4.9.1.jar:na] at okhttp3.HttpUrl$Companion.get(HttpUrl.kt:1633) ~[okhttp-4.9.1.jar:na] at okhttp3.Request$Builder.url(Request.kt:184) ~..
Postman에서 POST 할 때 Json형식으로 body를 넣어줬는데 JSON parse error 가 나왔다. 검색해보면 어노테이션을 바꾸네 뭐 하네 말이 많았는데 나의 경우 생성자가 문제였다. 에러 원인 @RequestBody를 사용하기 위해서는 기본생성자가 필요하다 기본생성자가 필요한 이유는 RestController가 바인딩을 하기 위해서 ObjectMapper를 사용하는데, 이 때 기본 생성자로 DTO를 생성하기 때문이다. 난 기본 생성자가 없었다. 에러 해결 간단하게 기본 생성자를 만들어줬다. 잘 써졌다. 추가 Post에서는 requestDTO에 기본 생성자가 없었는데 요청이 잘 들어갔다. 왜인가.. 찾아보니 '기본 생성자가 없고 인자를 받는 생성자(인자 2개 이상)가 있다면 괜찮다' 라고 ..
산디딤
'분류 전체보기' 카테고리의 글 목록