프로젝트를 만든지 얼마 되지 않았고, Web 소스를 만든적도 없는데 아래와 같은 로그인 페이지가 떠서 당황스러울 수 있습니다. 내가 이런 페이지를 만들었었나? 생각 할 수 있지만, 이는 스프링 부트에서 만들어낸 자체적인 기능으로, 보안설정 때문에 아이디, 패스워드를 입력받는 페이지입니다. 이렇게 아이디 패스워드가 나오는 것이 보기 싫을 경우, 해제하는 방법이 있지만 우선 이번에는 아이디 패스워드를 입력하는 방법부터 알아보도록 하겠습니다. Using generated security password: 라고 콘솔창에 띄워져 있는 것을 볼 수 있는데요. 해당 부분의 값이 Password입니다. 그리고 id는 user가 됩니다. 위와 같이 입력을 하면, 정상적으로 넘어가는 것을 확인할 수 있습니다. 그리고..
Spring Boot에서 application.properties와 application.yml은 모두 어플리케이션의 구성 설정을 위한 파일이며, 둘간의 주요 차이점은 파일 형식과 구문에 있습니다. 둘간의 차이점을 알아보고, 각각에서 mysql과 mongodb 세팅의 차이점을 알아보도록 하겠습니다. 파일 형식 application.properties - 전통적인 프로퍼티 형식을 사용하며, 설정은 키 밸류 형태로, key=value 형식으로 표현됩니다. application.yml - YAML(Yet Another Markup Language 혹은 YAML Ain't Markup Language) 형식을 사용하며, 계층적이고 가독성이 높은 방식입니다. 구문 application.properties에서는 동..
여태까지 Spring-boot를 사용했던 케이스는 STS(Spring Tools Suite)을 사용하여 개발을 했었는데요. Java 어플리케이션은 IntelliJ로 개발을 하다보니, 어느덧 IntelliJ로 Spring-boot를 개발을 해봐야 겠다라는 생각을 가지게 되었습니다. 15년 가까이 Eclipse를 사용했지만, 이제는 놔줘야 될때가 온 것도 같습니다. 아직도 많은 SI 사이트들은 전자정부프레임워크를 사용할테지만, IntelliJ와 성능 차이가 너무 심하게 나서 저는 도저히 못쓸 것 같네요. 그럼 IntelliJ로 Spring 설정하는 법을 설명하도록 하겠습니다. Spring Boot 프로젝트 생성 IntelliJ를 실행한 후, New Project를 선택합니다. New Project 탭이 뜨면..
이모지(Emoji)는 웹페이지나 어플리케이션 같은 곳에서 감정이나 아이디어를 표현하는데 사용되는 작은 그림이나 아이콘입니다. 일본에서 개발되었으며 전 세계적으로 널리 사용되고 있습니다. 이모지는 웃는 얼굴, 눈물 흘리는 얼굴, 동물, 식물, 날씨 현상, 심볼 등 다양한 사물이나 감정을 표현하며 텍스트 대화에서 감정을 전달하는 데 유용합니다. 이모지는 유니코드 표준의 일부로, 다양한 디지털 플랫폼과 운영 체제에서 공통으로 인식하고 표현할 수 있습니다. 이모지는 텍스트 기반의 커뮤니케이션을 더 풍부하고 즐겁게 만드는 동시에, 문맥에 따라 다르게 해석될 수 있는 문제도 갖고 있습니다. 이모지는 위의 설명과 같이 유니코드(Unicode) 표준의 일부입니다. 이모지를 만들기 위해서 여러개의 유니코드가 필요하며, ..
MySQL에서는 sha256_password으로 비밀번호 컬럼을 저장하는 기능이 최근 버전에서 탑재되어 있지만, 여기서는 직접 SHA256 모듈을 호출해서 비밀번호를 저장해보도록 하겠습니다. Maven, pom.xml mysql mysql-connector-java 8.0.27 우선 MySQL에 연결하기 위해서 MySQL Connector/J 라이브러리를 Maven Pom.xml 파일에 Dependency로 추가합니다. Sha256, Java Code import java.security.MessageDigest; public class TestMain { public static void main(String[] args) { String password = "패스워드"; String hashedPas..
Java에서 JSON을 파싱하는 방법을 보통 많이 하겠지만, Map을 JSON으로 변환해야 되는 때도 있습니다. 예를 들어, POST로 데이터를 전송해야 할 때 JSON으로 String 값을 변환해서 전송하게 되면, 쉽게 처리가 가능한 장점등이 있기 때문이죠. 그리고 Java에서 Map을 JSON으로 변환하는 방법 또한 많이 있습니다만, 대부분 라이브러리를 사용해서 변환을 하는 것이기 때문에 여기서는 대표적인 라이브러리를 하나 소개하고 변환을 시켜보도록 하겠습니다. Jackson 라이브러리 만약 이 방식을 스프링부트(Spring boot)로 만든다면, Jackson 라이브러리는 별도로 설치하지 않아도 되는 경우가 많습니다. 하지만 라이브러리가 존재하지 않을 경우 아래와 같이 라이브러리를 추가하시면 됩니다..
Java에서 뭔가를 계산할 경우 NaN이 발생할 수 있습니다. 특히 공식이 복잡해지고 데이터의 예측이 힘들 경우 발생할 가능성이 높아지는데요. NaN은 왜 발생하고 어떻게 대처를 해야 하는지 알아보도록 하겠습니다. NaN의 뜻 우선 NaN이 무슨 뜻인지를 알아야 되겠죠. NaN은 영어로 Not a Number를 뜻합니다. 한마디로 숫자가 아니라서 숫자로 표현을 할 수 없는 상태를 말합니다. NaN 발생원인 NaN이 발생하는 경우는 값이 아닌 것을 계산할 때 발생하는데요. 0의 값을 0으로 나눴을 때 자주 발생되곤 합니다. NaN 발생 케이스 System.out.println(0.0f / 0.0f); System.out.println(Math.sqrt(-1.0f)); System.out.println(Ma..
자바(Java)에서는 스트링(String) 형태의 변수의 경우 값이 비었는지 체크하기 위해서 isEmpty라는 메소드를 지원합니다. 이 값은 언제 사용을 하면 좋은지 그리고 어떤 부분에 대해서 조심을 하는게 좋은지 알아보도록 하겠습니다. isEmpty isEmpty() 메소드는 문자열이 빈 값이면 true, 비어있지 않으면 false를 리턴하는 메소드입니다. 아래의 예제를 보면서 이해를 해보도록 하겠습니다. 값이 비어있을 경우 String test = ""; System.out.println(test.isEmpty()); // true 값이 있을 경우 String test = "111"; System.out.println(test.isEmpty()); // false 위와 같이 test라는 String ..
제곱과 루트(제곱근)을 구하는 방법은 수많은 언어(Language) 프로그램들이 내장 라이브러리들로 제공이 됩니다. 마찬가지로 자바 역시 제곱과 루트를 구하는 방법을 제공해주고 있습니다. Math 클래스 자바에서 수학과 관련된 메소드를 활용하기 위해서는 내장 라이브러리인 java.lang.Math 클래스를 활용하면 됩니다. Math 함수는 기본 지수, 로그, 제곱근 및 삼각 함수와 같은 기본 숫자 연산을 수행하기 위한 메소드들이 포함되어 있습니다. 제곱, Math.pow() 자바에서 제곱을 구하기 위해서는 Math 클래스의 pow 메소드를 사용하면 됩니다. pow() 사용법 pow(double a, double b) 첫번째 인수인 a 값을 b 만큼 곱하며 리턴값은 double 입니다. pow() 예시 p..
프로젝트를 하다보면, 소스를 다이렉트로 직접 컴파일(Compile)해야 하는 경우가 종종 있다. 예를 들어 소스를 옮기기 힘든 상황인데 리눅스나 유닉스와 같은 서버에서 vi 편집기 등을 활용하여 직접 프로그램을 수정한 상황에서 직접 컴파일을 한다든지, 아니면 간단한 프로그램을 짜서 뭔가를 알아야 한다든지 IDE(이클립스, IntelliJ)와 같은 프로그램을 쓰지 않고 직접해야 하는 상황이 올 수 있다. Javac Javac는 자바 코드를 컴파일 시켜주는 프로그램으로 커맨드에서 직접 컴파일을 할 수 있다. public class Test { public static void main(String[] args) { System.out.println("Hello World!!"); } } 위와 같은 샘플 클래..
자바(Java)의 경우 컴파일(Compile)이라는 개념이 들어갑니다. 파이썬(Python)과 같은 언어는 컴파일 언어와 다르게 인터프리터 언어로 별도의 컴파일 과정이 없이 소스 코드를 한줄 한줄 읽어가면서 실행을 하게 되지만, 자바의 경우 컴퓨터가 읽기 전에 컴파일 과정이 우선 적용된 후 컴퓨터가 이해를 하는 방식입니다. 컴파일 언어의 장점 컴파일 언어의 장점은 대척점에 있는 인터프리터의 단점과 같습니다. 소스 코드라는 것은 사람이 읽기 쉬운 언어의 모음이며, 컴퓨터의 경우 한줄 한줄 해석을 하다보면 시간이 오래 걸리는 단점이 존재합니다. 컴파일은 바로 사람이 읽기 쉬운 소스 코드를 컴퓨터가 읽기 쉽게 변환해주는 개념입니다. 컴퓨터의 언어도 Language 이기 때문에 결국 통역이라는 과정이 필요하게 ..
내 서버의 아이피(IP)를 몰라서 코딩을 하는 경우는 없겠지만, 간혹 IP를 기반으로 프로그램을 다르게 하는 경우가 있습니다. 이럴 때 사용하는 자바 클래스로 InetAddress가 있는데 이를 통해 내가 현재 사용하는 컴퓨터의 IP를 알 수 있거나, 다른 사이트의 IP를 확인할 수 있습니다. InetAddress InetAddress는 인터넷 프로토콜(Internet Protocol, IP) 주소를 나타냅니다. IP 주소는 UDP 및 TCP와 같은 프로토콜이 구죽되는 하위 수준 프로토콜인 IP에서 사용하는 32bit 또는 128bit의 부호 없는 숫자입니다. INetAddress의 인스턴스는 IP 주소와 가능한 해당 호스트 이름으로 구성됩니다.(호스트 이름으로 구성되었는지 또는 이미 역 호스트 이름 확..