이클립스(Eclipse) C, C++, Java, Python 등 언어를 잘 다루기 위해서는 도구의 역할도 매우 중요하다. 최근에는 성능이 좋고 빠른 인텔리J(IntelliJ)가 국내에서도 트랜드를 따라 많이 쫓아오고 있지만 기본적으로 유료 프로그램이며, 솔루션 및 자사 서비스 개발자가 아닌 사람들은 늘 상 프로젝트 특성에 맞게 커스텀 되어있는 도구를 써야 하다보니 대규모 SI가 많은 한국에서는 무료 프로그램인 이클립스를 사용한다. 한국의 SI에 상당수를 차지하는 정부 기반의 프로젝트(전자정부프레임워크, eGovFramework)도 바로, 이클립스를 베이스로 만들었기 때문에 국내 한정으로 이클립스가 인텔리J보다 사용자 풀이 훨씬 많을 것이다. (물론 상당수는 둘다 상황에 맞게 사용한다) 이클립스는 자바로..
자바(Java)의 세상에 들어가기 위해서는 JDK(Java Development Kit, 자바개발키트)라는 개발환경을 설치하고 JVM(Java Virtual Machine)이라는 가상환경을 세팅해야 한다. (JDK를 설치하면 JVM도 세팅이 된다) JDK는 Java를 개발하기 위한 툴들을 모아놓은 소프트웨어라고 이해하면 되고, JVM은 Java가 어느 OS든지 원활히 돌 수 있게 동일한 환경을 만들어주는 역할을 한다. (JVM에 대해서는 다음 포스팅 참조) 원래 자바는 썬 마이크로시스템즈라는 회사에서 만들어 운영하였지만, 오라클(Oracle)이라는 상업용 DBMS를 만들던 회사가 인수를 한 후 현재 많은 소송과 변형된 JDK들이 존재하게 되었다. 비슷한 케이스로 MySQL을 오라클이 역시 인수하면서 유료..
Tensorflow가 내 GPU를 활용하고 있는지 확인하려면, tensorflow에서 제공하는 device_lib 라이브러리를 활용하면 된다. (mrc) [root@nipa2019-0010 mrc] python Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from tensorflow.python.client import device_lib >>> device_lib.list_local_devices() from tensorflow.python.client import ..
conda create -n [환경명] python=[버전] [root@nipa2019-0010 etc] conda create -n mrc python=3.6.8 Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source. Collecting package metadata (repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists.
Java에서 상당히 빈번하게 사용되는 것이 split인데 아래와 같은 케이스가 있을 경우 문제가 발생할 수 있다. 예시 String[] values = "1,2,3,4,".split(","); 위와같이 할 경우, values의 length를 체크하면 5개가 나올 것이라 생각할 수 있지만 마지막 값이 비어있을 경우 그 값은 처리를 할 수 없다. 조금더 자세히 보자면 String[] test1 = "1,2,3,4,5".split(","); System.out.println("test1=>" + test1.length); test1=>5 String[] test2 = "1,2,3,4,".split(","); System.out.println("test2=>" + test2.length); test2=>4 St..
기존의 많은 언어들이 제공하는 SUM 기능이 자바에는 없지만 최근에 stream으로 구현하는 방법이 나왔다. 기존의 방식은 for문으로 loop을 돌리면서 한건씩 넣는 방식이었으나, stream을 사용하면 매우 람다 함수를 써서 쉽게 구현이 된다. 그러나 람다 함수가 매우 쉽다가 마구잡이로 사용하면 안되는 것이, 속도적인 측면에서 부정적일 수 있다. 그러니 사이트에 맞게 써야 할 것이다. (일반적으로 stream 람다 방식이 loop 방식보다 속도적인 측면에서 부정적이다) List 값을 합치는 방법 integer로 구성된 list는 아래와 같이 stream 기법을 사용하면 된다.리스트.stream().mapToInt(Integer::intValue).sum(); 123456789public static ..
테스트 용도라든지, 아니면 랜덤성 ID를 만든다던지 기타 등등 랜덤 문자열이 필요한 경우가 있다. 랜덤 문자열을 만드는 방법을 여러가지 있지만, 여기서는 간단하게 랜덤 함수를 만들어서 생성하는 것을 포스팅하고자 한다. public static void main(String[] args) {System.out.println(randomAlphaWord(30));System.out.println(randomAlphaWord(25));System.out.println(randomAlphaWord(40));} /** * int를 받아서, 랜덤 알파벳을 출력함 * * @param wordLength * @return */public static String randomAlphaWord(int wordLength)..
간혹 자바에서 소수점이 지수로 표현되어 이쁘게 나오지 않을 경우가 있다. 이럴 경우 간단하게 지수를 제거하는 방법이 있다. 123456789101112package test; public class main { public static void main(String[] args) { double a = 4.6925784541347777E-4; System.out.println(a); } } Colored by Color Scriptercs 위와 같은 지수 값을 출력하면, 역시나 마찬가지로 4.6925784541347777E-4 지수값이 출력이 된다. 현재 지수는 소수점 4자리를 표현했기 때문에, 소수점 4자리를 표현해보도록 하겠다. 12345678910111213141516package test; imp..
Mysql로 개발을 할 때, 다양한 이유로 인해서 캐릭터셋이 깨지는 경우가 발생한다. DB설정의 문제일수도 있고, Table을 생성할 때 문제일수도 있고, 혹은 Web 단에서 파라미터 전송시 캐릭터셋을 제대로 지정하지 않아서 생길 수 있는 문제도 있다. 이러한 다양한 캐릭터셋 문제를 해결하기 위한 팁들을 포스팅해보고자 한다 톰캣(Tomcat)에서 파라미터가 깨질 경우 흔하디 흔한 방법이다. 톰캣에서 8080 포트에서 캐릭터셋을 지정하면 파라미터가 UTF-8로 인코딩 된다. 1 스프링(Spring)에서 캐릭터가 깨질 경우 스프링에서 개발을 할 때, 캐릭터를 위한 필터링을 web.xml에 설정할 수 있다 1234567891011121314151617181920212223242526272829303132 en..
문자열 양끝에 존재하는 공백들을 제거하는 것은 문자열의 처리를 위해서 해야 하는 첫번째, 즉 기본적이고 반드시 해야 하는 단계이다. 어느 데이터가 어떤 모습으로 올지 모른다는 생각으로 문자열의 양쪽 끝의 공백을 제거해야 하는데...일반적으로 2가지 방법이 있다. 1. 직접 양끝을 제거하거나2. 함수를 사용하여 제거하거나 직접 양끝을 제거하는 사람이 있을지 모르겠지만 (ex: substring같은 함수를 사용해서 처음과 마지막의 데이터가 공백과 동일(equal)한지를 체크하여 제거) 공백이 여러개 있을 경우 귀찮을 수 있기 때문에 함수를 사용하여 편하게 제거하는 것을 추천한다. 자바에서 trim()이라는 함수로 제거가 되는데 파이썬은 strip()이라는 내장함수로 제거를 하게 된다. 사용방법 변수.stri..
소스 원문 첨부파일 내용 하는있는으로을를 위와 같은 조사들을 제거하는 형태소 분석기의 심플 버전을 개발 중이었는데, 첨부파일로 읽어 들이니 잘 작동이 되지 않았다.자바에서는 전혀 문제가 없는 것인데 파이썬에서는 내가 생각하지 못하는 무언가가 있는건지 확인 중 개행 문자가 들어간 것으로 판단하여 아래와 같이 조치하였다. # 조사 데이터 매핑f = codecs.open("josa.dic", "r", "utf-8")while True: line = f.readline() line = line.replace("\n", "") if(len(line) > 0): JOSA_DIC.append(line) if not line: break 그러나, len(line)을 해본 결과 조사의 length가 아래와 같이 출력이 ..
Properties 라는 클래스는 응용 어플리케이션을 간단하게 만들 경우 상당히 자주 쓰는 클래스중 하나이다.XML로 변수값을 설정할 수 있지만, 용도가 간단하고 설정이 몇개 존재하지 않는다면, XML보다는 Properties를 사용해서 소스를 최대한 심플하게 만드는 것이 개인적으로 더 좋다고 생각하고 있다. 개발을 하다보면, 사람들이 철학이 없어지는 경우를 종종 보게 된다.어떠한 기술이든 새로나온 라이브러리든...최근에 나온 기술이라고, 예전 기술보다 좋다라는 착각을 하게 된다. 대표적인 것이 바로 XML로 설정을 하는 것이라고 생각한다. 간단히 상수값 몇개를 설정하는 것이라면 굳이 복잡하게 파싱해면서까지 XML을 사용할 필요가 있을까?Properties 클래스를 사용하면, 소스 2~3 라인이면 아주 ..