전체 글 141

postman json 형식으로 post 요청하는 법

매우 간단하지만 안쓰면 까먹는 것 중 하나 postman에서 json 형식으로 post 요청을 보내려면 Body > raw 탭을 선택하여 json 형식으로 전송하면 된다. 참고로 [Send] 버튼으로 요청을 보내면 되지만, [Send] 버튼을 펼쳐보면 [Send and Download] 버튼이 있어서 만약 응답 결과가 이미지 같은 파일이라면 이 기능으로 내 PC에 파일을 저장할 수 있다.

스프링부트 EnvironmentPostProcessor로 사용자 정의

이번 프로젝트에서 Spring Boot 애플리케이션 구동시 실행되는 기능을 만들어야 했다. EnvironmentPostProcessor 인터페이스를 활용하여 커스터마이징 환경으로 구현할 수 있었다. 이 인터페이스는 Environment 애플리케이션 컨텍스트가 올라가기 전에 애플리케이션을 사용자 정의할 수 있게 해주는 기능이다. 실제 예시를 살펴보자.사용자 정의 클래스 생성EnvironmentPostProcessor 인터페이스를 구현한 사용자 정의 클래스를 작성한다.import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.Environmen..

STS 4에서 war 파일로 쉽게 배포하는 방법 (배포 및 실행까지)

STS 4에서 Spring boot와 Maven으로 개발한 애플리케이션을 war 파일로 배포하려고 한다. 이클립스에서는 간단히 war 파일을 만들 수 있지만, STS 4에서는 Export - war file 탭 항목이 아예 뜨질 않는다. Stackoverflow에서는 플러그인(Eclipse Enterprise Java and Web Developer Tools)을 설치하면 된다고 하지만, 굳이 플러그인을 설치하지 않아도 Maven을 통해 war 파일을 생성할 수 있다.Maven으로 war 파일 생성하기STS에서 war 파일로 만드는 방법은 생각보다 간단하다. 아래 2개만 하면 된다.프로젝트 폴더 우클릭 > Run As > Maven clean프로젝트 폴더 우클릭 > Run As > Maven instal..

Java에서 jsoup을 이용하여 HTML parsing 하기

자바에서 jsoup 라이브러리는 HTML 문서를 파싱 하여대부분의 사이트의 원하는 정보만 뽑아낼 수 있는 라이브러리이다. 파이썬의 BeautifulSoup와 비슷한 기능이다.jsoup 라이브러리 추가(pom.xml) org.jsoup jsoup 1.15.3 파싱할 대상 페이지 찾기w3schools 사이트에서 상단 메뉴에 나열된 프로그래밍 언어 목록을 파싱 하여 가져오려고 한다. F12로 개발자도구를 열어 메뉴를 선택해서 가져올 selector 키워드를 찾는다. 태그로 감싸져 있는 목록을 가져올 것이다. 참고로 홈페이지가 리뉴얼되어 모양이 바뀌면 selector 역시 바뀔 수 있다. Parser 클래스HTML을 파싱 하여 페이지 정보를 가져올 클래스를 작성하자. selector 변수는 CSS selecto..

프리랜서 개발자가 되면서 느낀 점 (2)

정규직에서 프리랜서 개발자로 전향하면서 알게 된 점을 정리해 둔 포스팅입니다.개인적으로 느낀 바를 정리한 것이므로, 정확하지 않는 내용이 있을 수 있습니다. 혹시 틀린 내용이 있다면 댓글 남겨주세요. 1편에 이어서 작성합니다.과거 프리랜서 월급계산법예전에는 프리랜서 개발자의 월급 계산법은 매우 쉬웠다. 계약서상 월급에서 3.3% 원천징수 세금을 떼면 끝이었다. (3.3% = 소득세 3% + 지방소득세 0.3% 원천징수)실수령액 = 월급 - (월급 * 0.033)실수령액 = 월급여 * 0.967예를 들어, 상호협의된 급여가 500만 원이라면 5,000,000 - (5,000,000 * 0.033) = 4,835,000원이 실수령액이다. 정규직일 때는 어마무시하게 떼가던 세금을 3.3%만 떼고 받으니까 상대..

.gitignore 간단하게 만들기 (.gitignore 샘플 예시)

1. 처음부터 .gitignore 파일을 만들 경우 프로젝트 디렉토리로 이동한 뒤 아래의 명령어를 쳐보자. vim .gitignore 그러면 아래와 같이 보일것이다. 이제 [입력모드]로 들어가서 Git 에게 무시할 정보(확장자, 폴더 등)를 입력해보자. a, i, o 중 아무거나 누르면 입력모드로 전환된다. a : 다음 글자 i : 현재 커서 o : 윗줄 Git에서 무시하려는 정보를 입력했다면 파일을 저장해야 한다. [Esc] 키를 누른뒤, :wq를 입력하여 나가면 된다. ESC : 입력모드 나가기 :wq : 저장 후 나가기 정상적으로 설정이 되었는지 확인하기 위해 실제 저장한 곳에 가서 파일을 확인해볼 수 있다. 보통 C:\Users\사용자명\프로젝트명 내부에 .gitignore 파일이 있다. 또는 c..

해시함수와 암호화 비교하기(feat. 솔팅과 키스트레칭)

해시함수와 암호화 비교해시(Hash)와 암호화(Encryption)의 가장 큰 차이는 '방향'이다. 해시 : 단방향 암호화이므로 복호화는 불가능하다. 데이터 보안에 중점을 둠.암호화 : 양방향 암호화이므로 복호화 가능하다. 통신에서 보안에 중점을 둠.암호화의 목적은 반드시 복호화하는 것은 아니기 때문에, 각자 관점에 따라 둘 다 암호화라고 부르기도 한다. 예를 들어 암호화 해시 함수(cryptographic hash function)라는 개념이 있듯이 말이다. 그래서 해시를 암호화가 아니라고 할 필요는 없는 것 같다(?)암호화개인키 (Symmetric key)다른 말로 대칭키, 비공개키, 비밀키라고 부른다. 암호화와 복호화할 때 같은 비밀키를 공유한다. 따라서 키가 유출되면 해킹 당할 수도 있다. 하나의..

Java에서 Generator 규칙에 따라 거래코드 만들기 (SecureRandom 난수 생성)

거래코드 생성 규칙이 아래와 같다고 가정하자. => 거래날짜yyyyMMdd(8)+난수(10) Generator 파일을 만들어서 타 서비스에서 거래코드를 쉽게 가져다 쓸 수 있도록 소스를 만들어보았다. 이때 난수는 SecureRandom 클래스를 이용해서 알파벳, 숫자내에서 랜덤으로 10자리 생성된다.Generator.javaimport java.security.SecureRandom; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Generator { private final static String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr..

프로세스(Process)와 스레드(Thread)의 차이

프로그램 (Program) 우리가 흔히 말하는 프로그램이란 명령어들의 집합이다. 사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 올바른 수행절차를 표현해 놓은 명령어를 말한다. 프로세스 (Process) 프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 실행 중인 프로그램이다. 프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 프로세스가 된다. 이때, 각각의 프로세스는 서로 메모리 공간을 독자적으로 갖기 때문에 서로 메모리 공간을 공유하지 못한다. 따라서 다른 프로세스의 메모리에 접근하려면 IPC(InterProcess Communication)과 같은 방식이 필요하다. 멀티프로세싱 : 여러 프로세스를 사용하는 것 멀티태스킹 : 같은 시간에 여러 프로그램을 띄우는 ..

Github를 트리 구조로 볼 수 있는 Octotree 플러그인

Github에서 꽤 유용한 Octotree라는 크롬 플러그인을 알게 되었다. 이 플러그인으로 GitHub 저장소의 디렉토리를 한 눈에 파악할 수 있다. Octotree Octotree는 아래 사진과 같이 사이드바에서 트리 형식으로 저장소의 디렉토리 구조를 보여준다. 개인 저장소(Private repository) 또는 Enterprise GitHub에도 Access Token만 설정하면 사용이 가능하다. References Octotree GitHub