파이썬을 하는 사람들이라면 필수적인 라이브러리인 판다스(Pandas)는 다양한 데이터의 핸들링이 가능한데 자바 개발자라면 기겁을 할만큼(대다수 파이썬 라이브러리들이 대개 그렇지만) 사용방법이 매우 쉽다. 각자 엑셀 데이터가 있겠지만, 혹시나 원활한 실습을 원하는 분들도 있을테니 그런 분들은 아래의 엑셀 파일을 다운로드 하면 된다. 키움증권과 카카오뱅크 FAQ 위 파일은 아래와 같이 2개의 시트(Sheet)로 구성되어 있고, 첫번째 시트는 4개의 키움증권 FAQ 데이터, 두번째 시트는 2개의 카카오뱅크 FAQ 데이터이다. 데이터구조 엑셀 읽기 코드 import pandas as pd excel_data = pd.read_excel('c:/project/faq.xlsx') # print를 하면, sheet ..
불현듯, 자바에서 제공하는 랜덤함수의 속도 차이가 있을까 궁금해서 테스트를 해보기로 했다. 자바는 기본적으로 java.util.Random 클래스와 Math 클래스에서 제공하는 random이 있는데 둘의 차이점은 Math는 별도로 import를 할 필요가 없고, Random은 import하는 대신 좀 더 자유롭게 커스터마이징 할 수 있다는 정도가 있을 수 있겠다. Random 클래스로 1000만번 nextInt 호출하기 우선 가장 많이 사용되는 Random 클래스의 nextInt를 1000만번 호출해보도록 한다. 다만 예제에서 nextInt값을 total로 담은 후, 최종적으로 total값을 뿌린다. 이렇게 한 이유는 보편적으로 Random을 사용할 때 정수값을 많이 호출하기 때문이다. import ja..
개발을 하다보면 개발환경, 로컬환경, 운영환경 등 환경에 따라 환경변수를 달리줘야 하는 경우가 있다. 예를 들어, 최근 마이크로 아키텍처로 흐름이 전환되었기 때문에 Rest를 자주 활용하게 되는데 개발서버에서 사용하는 rest url과 운영서버에서 사용하는 rest url이 다를 것이기 때문에 이럴 경우 운영환경에 따라 url 경로를 자연스럽게 바꿔주면 될 것이다. 환경별 설정은 빌드툴(Maven 등)을 이용해서 할 수도 있고 사실상 상당히 많이 있으나 여기서는 Was의 파라미터를 이용한 매우 간단하게 설정할 수 있는 방법을 공유해보도록 한다. Was 설정(Configuration) 이클립스 기준으로 설명을 하며, 추후 운영환경이나 개발환경의 톰캣(tomcat) 등 was에서 deploy할때에 실행명령어..
Properties를 읽는 방법이야 무궁무진하겠지만, 스프링으로 프로퍼티를 읽을 때 자주 사용하는 방법으로 value annotation을 이용하기도 한다. 사실 필자는 properties를 xml로 설정하여 map에 담아 get형태로 읽는 것을 선호하지만 요즘 워낙 어노테이션이 대세니 코드가 올드해보이지 않기 위해 일정 부분은 어노테이션을 섞는다. 사용방법은 매우 간단하다. 우선 resource 위치에 properties 파일을 생성한다. 예를 들기위해서 이 포스팅에선 test.properties라는 설정파일을 생성하였다. test.properties test=테스트입니다. @Value 예제 import egovframework.rte.fdl.property.EgovPropertyService; imp..
필자는 전자정부프레임워크(EgovFramework, egov)로 개발을 많이하다보니 최근에 유행하는 RestController나 기타 여러가지 방식보다 jsonView 방식을 선호하고 있다. jsonView 설정은 2010년초부터 사용하여 지금까지 잘 이용하고 있으며 대국민 서비스에서도 이상없이 빠른 속도로 response되기에 불편함도 없을 뿐더러, 오히려 메소드 모양이 통일되어 선호하는 방식이다. jsonView는 controller 단에서 return 값을 string으로 통일 시켜 주기 때문에 모든 controller가 string으로 선언되어 일관된 모습을 보일 수 있다. 필자가 설정한 프레임워크는 전자정부프레임워크 3.9 버전(현재 최신버전)이고 스프링은 4.3.22 버전이다. 이 방식은 어떤..
포조(Plain Old Java Object, POJO) 개념 스프링(Spring)을 공부 하거나, 자바를 공부하다보면 POJO(Plain Old Java Object)라는 용어를 자주 보게 될 것이다. 그때마다 뭔말이야? 하면서 넘어가는 경우가 많을텐데 왜냐하면 정말 별 말이 아니기 때문이다. 포조는 Java EE 등으로 인해서 점점 무거워지는 객체에 대해서 반발하며 나타난 개념이다. 2000년 9월에 마틴 파울러(Martin Fowler), 레베카 파슨(Rebecca Parsons), 조쉬 맥킨지(Josh MacKenzie) 등이 시작하였으며 그 기원에 대한 내용은 마틴 파울러가 다음과 같이 말했다. "We wondered why people were so against using regular ob..
기존에 작성했던 아나콘다 설치 방법이 변경돼서 빠르게 재포스팅을 하고자 한다. 변경된 아나콘다 내 기억이 정확한지는 모르겠지만, 기존에 아나콘다는 선택하는 것이 많지 않았다. 마치 완벽한 오픈소스처럼 보였고 상업 라이센스가 존재하지 않는 것마냥 보였던 것으로 기억한다. 그러나 엘라스틱도 그렇고 아나콘다 역시나 최근 들어서 라이센스가 다양화 되었기 때문에 함부로 설치하면 안될 것으로 보인다. https://www.anaconda.com/products/individual 아나콘다의 제품은 현재, 개인, 팀에디션, 엔터프라이즈 에디션, 프로페셔널 서비스로 나뉘며 무료로 쓰는 제품은 individual(개인) 제품을 선택하면 된다. 위 링크는 개인 제품 링크이니 들어가서 다운로드 받으면 된다. 본인의 OS와 ..
Math.round 방식 double a = 12.3456789; System.out.println(a*100); 1234.56789 System.out.println((double)Math.round(a*100)); 1235.0 System.out.println((double)Math.round(a*100)/100); 12.35 자바의 대표적인 수학모듈인 Math는 다양한 소수점을 처리하는 기능도 제공한다. Math.round를 쓰게 되면, 소수점 위치에 반올림하게 되는데 원하는 위치를 반올림을 하기 위해서는 별도의 인자값을 넣는 것이 아니라 위 소스처럼 그만큼의 소수점을 Shift해야 한다. 즉 2자리까지 보여주고 반올림을 하고 싶을 경우 우선 현재 값에 100을 곱하고, Math.round를 쓰면 ..
R은 데이터분석을 위해서 태어난 언어이다보니 다양한 통계 함수들이 별도의 라이브러리를 호출하지 않아도 기본적으로 내장이 되어 있다. 통계 함수가 잘 돌아가는지 쉽게 이해하기 위해서, 아이리스같은 분석용 데이터셋을 사용하지 않고 별도의 데이터셋을 생성하여 진행해보고자 한다. 실험 데이터 > korean sum(korean) [1] 1530 모든 벡터를 더한다. 평균(mean) > mean(korean) [1] 153 모든 벡터를 더한 수 벡터 수로 나눈 값이다. 중앙값, 중위수(median) > median(korean) [1] 67.5 중앙값과 평균의 차이를 설명하기 위해서 1000이라는 값을 넣어봤는데 중앙값은 평균이 아니라 값을 정렬했을 때 중앙에 위치하는 값이 어딘지를 뜻한다. > sort(kore..
데이터 정렬을 위해 아이리스(Iris) 데이터를 이용하여 정렬을 해보고자 한다. 아이리스는 이제는 매우 잘 알겠지만 > head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 이와같이 꽃받침(Sepal)과 꽃잎(Petal)의 넓이, 길이로 구성이 되어 있다. 정렬 실습을 위해서 "Sepal.Length" 즉, 꽃받침 길이만 가지고 정렬을 해보고자 한다. 오름차순하기 오름차순..
케라스(Keras)와 텐서플로우(Tensorflow)로 구현한 시퀀스투시퀀스(Seq2Seq) 모델로 챗봇을 구현하고 있는데 예전 tensorflow에서는 Java에서 tensorflow를 지원해서 호출하였지만 현재 tensorflow 2.0은 Java에서 호출이 지원되지 않는다. 이를 해결하기 위해 자바에서 모델을 호출하는 방식이 아닌 python에서 자체적으로 웹서버를 띄우기로 하였고, Flask 라이브러리를 사용하였다. 라이브러리설치와 선언 > pip install flask-restful (python) E:\Project\universe\source-python>pip install flask-restful Collecting flask-restful Downloading Flask_RESTful..
R의 버전을 업데이트하기 위해서 사이트에서 R을 다운로드하여 인스톨을 하는 등의 작업을 할 필요 없이 R 명령어를 몇개 입력하여 최신 버전으로 Install 할 수 있다. Step 1. install.packages("installr")> install.packages("installr") WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding: https://cran.rstudio.com/bin/windows/Rtools/ Installing package into ‘C:/U..