본문 바로가기

분류 전체보기

(121)
자바 비밀번호 암호화 (SHA256,SHA512) + Salt SHA (Secure Hash Algorithm, 안전한 해시 알고리즘)은 해시 함수들의 모음이라고 보면 되요. 복호화가 불가능한 단방향 암호화 기법으로 데이터를 안전하게 저장할 수 있습니다. SHA256과 SHA512도 그 중 하나이며 가장 많이 쓰이는 함수이므로 구현해보도록 할게요. SHA256 String raw = "1111"; MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(raw.getBytes()); String hex = String.format("%064x", new BigInteger(1, md.digest())); SHA512 String raw = "1111"; MessageDigest md = MessageDi..
Vue 프로젝트 생성, 튜토리얼 (vue-cli) npm이 설치되어 있어야 해요. 설치되어있지 않다면 아래 링크를 먼저 참고해주세요. https://gofnrk.tistory.com/32 NVM 설치, Node 버전 관리 (Windows / Mac) NVM이란? (Node Version Manager) 말그대로 노드 버전 관리자에요. 마땅히 설명할게 없네요. 어떠한 도구로 개발하다보면 버전을 교체하거나 여러 버전을 관리해야 하는 경우가 생겨요. node도 마찬가지에요. nvm.. gofnrk.tistory.com 1. vue-cli 설치 npm install -g vue-cli 2. vue 프로젝트 생성 현재 디렉토리에 생성합니다. vue create project명 입력하면 폴더 안에 소스가 생성될거에요. vue create . 3. vue route..
Java Stream 기초 설명 (코딩 테스트 예제로) 최근에 어떤 기업의 경력직 코딩테스트를 보면서 Stream 기초 문제가 나왔어요. 예전에는 자바 디자인 패턴을 강조하는데, 요새는 Optional이나 Stream을 얼마나 잘 활용할 수 있냐를 보는 것 같아요. 문제를 약간 수정해서 공유해드리자면 이런 식이였어요. String[] array = { "carrot", "apple", "banana", "egg", "meat", "apple" }; - 다음 배열 요소의 중복을 제거하고, 다섯 글자 이상의 단어만, 내림차순으로 정렬하여 출력하라. - 다음 배열 요소에서 사전 상에 가장 앞에 나오는 단어 하나를 출력하라. ※ Stream을 이용할 것 그전에 Stream의 기초 사용법을 알아볼게요. Stream 생성 String[] array = { "carrot..
자바 팩토리 메소드 패턴 (Java Factory Method Pattern) 팩토리 메소드 패턴에 대해서 알아볼게요. 굉장히 많이 쓰이는 패턴이고, 익혀두면 나름 유용하게 쓸 수 있어요. 자바 소스 안에서도 많이 볼 수 있구요. 저도 때때로 사용하는 것 같습니다. 예제로는 패스워드를 암호화하는 기능을 구현해볼거에요. 실제 암호화 로직은 뺄거구요. 최대한 완성도 높게 구조를 만들겠습니다. 1. 인터페이스 만들기 Password라는 인터페이스를 만들었고, 클래스에서 세부 구현할 encode라는 메소드를 추가했어요. 혹은 추상클래스를 만들어서 추상 메소드를 추가하셔도 상관없습니다. public interface Password { String encode(String str); } 2. 구현체 작성 라이트하게 암호화하는 SimplePassword 클래스 강하게 암호화하는 SuperPa..
자바 파일 복사 (+ Spring) Java에서 파일을 복사하는 코드에요. Java 기존 java.io File in = new File("C:\\Temp\\abc.txt"); File out = new File("C:\\Temp\\def.txt"); try (InputStream fis = new FileInputStream(in); OutputStream fos = new FileOutputStream(out)) { int bytesRead = 0; while ((bytesRead = fis.read()) != -1) { fos.write(bytesRead); } fos.flush(); } catch (Exception e) { e.printStackTrace(); } java.nio Path in = Paths.get("C:\\Tem..
Spring Boot JUnit 5 MockMvc Test 스프링 부트에서 테스트 코드를 작성해볼거에요. 굉장히 많은 방법들이 있어요. 그 중에 가장 기본적인 방법으로 알려져있는 JUnit Framework를 사용해보겠습니다. 아마 대부분 스프링 부트로 개발을 하고 있다면 개발한 Controller를 테스트하고 싶을거에요. Controller를 테스트하는 방법 역시 여러가지가 있지만 그 중에 기본으로 알려진 MockMvc를 사용하겠습니다. AbstractControllerTest src/test/java 소스 폴더 밑에 패키지를 만들어서 넣어주면 됩니다. 테스트할 때 필요한 공통 설정 파일이구요. 설정하는 방법은 대표적으로 두 가지에요. AutoConfiguration Customizing AutoConfiguration 아주 간단하게 테스트할 때는 아래와 같이..
Spring Boot 내장 WAS 종류와 특징 스프링 부트 내장 WAS의 종류와 특징입니다. 최대한 쉽게 적어봤어요. Tomcat ~7버전까지 대규모 트래픽에서 불안정하다 vs 아니다 등의 의견이 분분했고, 8버전은 폭망했지만, 8.5버전으로 대응하여 안정화시켰고, 9버전이 나와 안정화되었고 이후로도 꾸준히 업데이트 중입니다. 강력한 커뮤니티, 다양한 성공 사례 등... Java 진영에서 실제로 가장 널리 사용되는 WAS에요. Spring Boot에서도 기본 내장 WAS는 Tomcat이구요. 저 역시도 아직까지는 기본 WAS를 사용하고 있습니다. org.springframework.boot spring-boot-starter-web implementation('org.springframework.boot:spring-boot-starter-web')..
Docker MongoDB 설치, 접속 Docker로 MongoDB를 설치해보겠습니다. 1. Mongo 이미지 가져오기 docker pull mongo 2. 신규 컨테이너 생성 2-1. Mongo Standalone docker run --name mongo-container -p 27017:27017 mongo Docker 컨테이너 자동으로 재시작하고 싶다면 아래와 같이 실행하면 되요. docker run --name mongo-container -p 27017:27017 -dit --restart unless-stopped mongo 2-2. Mongo Replica Set Standalone이 아닌 하나의 ReplicaSet으로 구성하고 싶다면 아래 옵션을 추가해주면 되요. docker run --name mongo-container -..