[Java] IPinfo API 사용해 IP 위치 조회 기능 구현하기
·
JAVA
1. 들어가며국가별, 지역별 방문자 통계 기능을 만들기 위해 이것저것을 조사하던 중 `GeoLite2`를 사용해 테스트를 진행한 결과 무료로 사용하기 좋으나 위치가 정확하지 않고 업데이트가 번거롭다는 진실을 마주했다. GeoLite2를 테스트해 본 이전 글https://greathyeon.tistory.com/56 [Java] GeoLite2 사용해 IP 위치 조회 기능 구현하기1. 들어가며방문자 통계 기능을 만들어야 하는데 국가별, 지역별 접속자 통계를 구현해 달라는 요청이 있었다.무료인 것을 찾다 보니 GeoLite2라는 게 나오길래 한 번 테스트 삼아 이용해 봤다.GeoLigreathyeon.tistory.com다른 대안으로 IPinfo api를 사용해 IP위치 조회 기능을 구현해 보자. 2. 준비..
[Java] GeoLite2 사용해 IP 위치 조회 기능 구현하기
·
JAVA
1. 들어가며방문자 통계 기능을 만들어야 하는데 국가별, 지역별 접속자 통계를 구현해 달라는 요청이 있었다.무료인 것을 찾다 보니 GeoLite2라는 게 나오길래 한 번 테스트 삼아 이용해 봤다.GeoLite2 Free API와 DB파일을 다운 받아서 사용하는 2가지 방법을 발견했다.api의 경우 하루 1000건의 제한이 있지만, DB파일은 무제한으로 이용이 가능하다고 해서 DB파일을 이용하는 방법을 사용해 봤다.스프링 부트 환경에서 테스트를 진행했다. 2. MaxMind 접속 후 mmdb 파일 다운로드귀찮지만 회원가입이 필요하다. 까다로운 것이 없으니 필요하다면 가입해야겠다.가입 후 로그인하게 되면 위 스크린샷의 화면이 보이게 되는데 왼쪽메뉴의 GeoIP2 / GeoLite2 하단의 Download F..
[Java] 자바로 엑셀 다루기 - Apache POI 라이브러리 사용법
·
JAVA
1. Apache POI란?Apache POI(Poor Obfuscation Implementation)는 자바에서 MS Office 문서(Excel, Word, PowerPoint 등)를 읽고 쓸 수  있게 해주는 라이브러리다. 컴퓨터 앞에 앉아서 일하는 사람들중에 엑셀을 사용하지 않는 사람이 있을까?나는 어디서 일하든 엑셀을 사용하지 못하면 일의 난이도가 굉장히 상승했었다.개발자가 되면 엑셀을 사용하지 않을줄 알았지만 오히려 엑셀이라는 프로그램의 짜임새에 감탄하며 더 잘 사용하게 되었다. 특히 데이터를 다룰 때 많이 사용하게 된다. 코딩을 할 수 있다면 그런 excel을 더 효율적으로 활용할 수 있으며, excel과 관련된 기능을 만들 수도 있으니 굉장히 유용한 라이브러리라 할 수 있겠다. 2. Ap..
[Java] JVM(Java Virtual Machine)은 무엇이며 왜 좋은가?
·
JAVA
1. JVM이란?자바 공부를 시작하면 가장 먼저 왜 자바를 사용하는지를 배우게 된다.그것은 결국 자바의 장점이 무엇인가를 배운다는 것인데, 그곳에서 항상 JVM을 만나게 된다.JVM(Java Virtual Machine)을 우리말로 직역하면 자바 가상 기계 되겠다. 왜 이런 것이 필요할까?여러 이유가 있겠지만 근본적으로는 우리가 사용하는 언어를 컴퓨터가 이해할 수 없기 때문이다.컴퓨터는 0과1밖에 모르는 바보이지만 우리의 언어는 상당히 고급지고 복잡하기 때문에 서로 간의 적절한 합의가 필요한데, 그것이 바로 프로그래밍언어인 것이다. 그러면 JAVA를 작성해서 던져주면 바로 이해할 수 있느냐 하면 또 그것도 아니다.운영체제가 자바 프로그램을 바로 실행할 수 없기 때문이다.자바는 완전한 기계어가 아닌, 중간..
[Java] diamond operator is not supported 에러
·
JAVA
IntelliJ로 프로젝트를 새로 세팅하다가 오류가 발생했고, 해결과정을 기록했습니다. 1. 에러내용java: diamond operator is not supported in -source 1.5(use -source 7 or higher to enable diamond operator) 다이아몬드 연산자()가 Java 7 이상에서 지원되는데, 현재 java 1.5로 되어있으니 더 높은 버전이 필요하다는 오류였습니다. 기본값에서 변경해주지 않아 발생하는 것으로 보입니다.확인해야 할 곳이 여러곳이라 전부 확인해봐야 합니다. 2. 해결2-1 Project Structure - Project Settings - ProjectFile > Project Structure > Project `mac 단축키` : ..
[Java] Math.random()의 취약성과 시큐어 코딩
·
JAVA
현재 진행 중인 프로젝트에서 `Sparrow`를 사용해 웹 취약점 진단을 실시했다.Math.random() 사용이 지적을 받았다. 왜 Math.random()이 보안에 취약한지 정리해 보자. 1.Math.random()1.1 Math.random()의 정의`Math.random()`은 `java.lang.Math` 클래스의 정적(static) 메서드로, `0.0 이상 1.0 미만`의 범위에서 균등하게 분포된 난수를 생성하여 반환한다. 1.2 Math.random()의 특징1) 반환 타입 : `double`2) 특징 : 생성되는 값은 `균등 분포(uniform distribution)`를 따르기 때문에 모든 값이 동일한 확률로 생성된다. 1.3 예제(주사위 게임)코딩을 처음 배울 때 배웠을만한 주사위 게임..
[Java] replaceAll() - 자바 특정 문자 변경 함수
·
JAVA
replaceAll() 문법String newStr = originStr.replaceAll(String regex, String replacement);`regex` : 변경하고 싶은 문자열에 해당하는 정규 표현식(혹은 그냥 문자열)을 넣어주면 된다.`replacement` : 대체할 문자열을 입력하면 된다. `originStr` 문자열에서 `regex`와 일치하는 부분을 모두 `replacement`로 바꿔준다.replaceAll() 예시public class ReplaceAllExample{ public static void main(String[] args){ String str = "나랑드 사이다 우리는 이제 그런 사이다"; str = str.replaceAll("사이다", ..
[자바 디자인 패턴]의 싱글톤 패턴이란?
·
JAVA
자바의 기본적인 문법을 익히고 나서 개발을 하다 보면 조금 더 높은 수준을 갈망하게 되는데, 그때쯤 뭘 더 배워야 할지 고민하다 보면 정말 많은 것들을 공부해야 된다는 것을 알고 절망에 빠지게 된다. 정말 행복한 고민이 아닌가? 올라갈 수 있는 길이 있다는 사실에 기뻐하며 오늘도 공부해보자. 그중에 하나는 바로 디자인 패턴이다. 내가 만나본 자바 고수들은 모두 디자인 패턴을 중요하게 생각했다. 그들은 이러쿵저러쿵 설명하기보다는 '이 패턴을 사용해 보세요...' 같은 전문가 같은 대화를 나눌 수 있는 사람을 선호했다. 물론 나의 수준은 팩토리 메서드 패턴이요? 들어는 봤는데...? 헤헿..ㅎ 1. 싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴은 자바와 같은 객체 지향 프로그래밍 언어에서 ..
[JAVA] VO(DTO) LIST를 특정 필드값으로 정렬하기 + 형변환
·
JAVA
나는 VO(DTO)로 이루어진 List를 List 각 객체의 특정 값으로 정렬해야 했다. 검색으로 알아낸 코드는 이렇다. List list = list.stream() .sorted(Comparator.comparing(CodeVO::getCnt).reversed()) .collect(Collectors.toList()); java stream을 활용한 정렬 방법이다. 정렬하고자 하는 list를 stream()을 이용해 정렬sorted()하는데 정렬 조건이 (Comparator.comparing(CodeVO::getCnt).reversed())인 것이다. CodeVO의 cnt값을 기준으로 내림차순 정렬하는 것이다. 오름차순 정렬을 원한다면 reversed()를 생략하면 되겠다. 여기 까지는 검색으로 빠르..
그레이트현
'JAVA' 카테고리의 글 목록