본문 바로가기

전체 글

커스텀 키보드 키 매핑 vial 프로그램 사용(Liminkey75) 8~9년 전 처음으로 10 만원대의 기계식 키보드를 사용한 이후부터 현재까지 무접점 키보드나 기계식 키보드를 몇 차례 구매하여 사용하였다.(레오폴드 65배열을 주로 사용) 유튜브에 커스텀 하는 분들 정도는 아니지만 그래도 1~2년에 한번은 새로운 키보드를 구매하여 써봤고 풀윤활이나 흡읍재를 넣어 조금 타건감 및 타건음을 좋게 해본 경험이 있는 정도의 수준이지만 키보드에 욕심이 좀 있는 편이다. Space65를 구매하여 조립후 사용하고 싶으나 구매가 어렵기도 하고 현재는 품절이라 구매할 방법이 없다. 중고로도 굉장히 비싸고 커스텀 키보드를 구매해서 조립하기엔 실력도 모자라기 때문에 고민하다가 완성형 제품인 루민키75를 구입했다. 65배열을 좋아히지만 루민키는 75가 더 이쁜것 같아서 75 베이지로 선택하였.. 더보기
java 열거형 enum 업무활용 Enum 이란? Enum은 열거형 상수이다. 연관된 상수의 집합을 뜻한다. 기존에 final static int .. 등으로 사용하던 상수를 enum을 활용하여 사용할 수 있다. 장점. 일반 클래스의 경우 상수값 변경시 상수를 참조하는 소스를 재 컴파일 해야함. 열거형 상수는 참조하는 소스를 재 컴파일하지 않아도 된다. 열거형 상수간 비교는 == 를 사용할 수 있음. equals 가 아닌 == 로 비교가능한건 그만큼 빠르다는 것임. 하지만 비교연산자 >, cs enum역시 class이고 class로 표현시 아래와 같음. class CoffeeMenu { static final CoffeeMenu AMERICANO = new CoffeeMenu("AMERICANO"); static final CoffeeM.. 더보기
Java Functional Interface BiPredicate 활용. BiPredicate : boolean test(T t, U u) : input 2개 return boolean BiPredicate는 funtional 인터페이스중 하나이다. 기본사용법은 Predicate와 동일하지만, 인자값이 하나더 있다. 외에도 매개변수가 2개인 함수형 인터페이스로는 BiConsumer, BiFunction 등이 있다. BiPredicate는 Predicate interface와 사용법이 거의 비슷하여, 대략적으로 이해만 하고 있었는데 실제로 활용을 해보려고 하니 어떠한 경우에 사용해야할지 감이 잡히지 않았다. 그래서 인터넷의 다른소스들을 참고하여 비슷하고 간단한 예제를 하나 만들어보도록 하겠다. 만약 사용자들의 정보가 담긴 List가 있다고 가정한다. List에는 이름(name).. 더보기
FlatMap 사용 스트림의 스트림을 스트림으로 변환 Stream -> Stream flatMap은 Array 또는 Object로 감싸져 있는 모든 원소를 단일 원소 스트림으로 반환해준다. List 안의 요소에 Collection 값을 가지는 경우 flatMap을 이용하여 간단히 Collection 값을 가져올 수 있음. 테스트를 위해 다음과 같은 객체를 생성한다. User Class public class User { private String name; private int age; public User(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void .. 더보기
Map에서 값을 가져올때 Optional을 이용한 Null처리 Old Version Map map = new HashMap(); if (null != map) { String nameOld = StringUtils.defaultString(map.get("NAME")); System.out.println("nameOld:" + nameOld); } Optional 이용하여 Null처리 String nameNew = Optional.ofNullable(map).map(v -> v.get("NAME")).orElse(""); System.out.println("nameNew:" + nameNew); String 값 Null처리시 보통 StringUtils를 사용했지만, Optional로 처리해봄. String apprType = null; String optionalS.. 더보기
Interface java8에서 추가된 기능 Interface도 method body를 가질수 있게 되었다. default 메소드와 static 메소드. interface 에서 default 메소드 구현가능.(N개) - implements 하여 상속받은 하위 클래스에서 호출가능. - implements 하여 상속받은 하위 클래스에서 메소드 재정의 가능. - 참조하는 변수로 함수를 호출가능. interface 에서 static 메소드 구현가능.(N개) - 인터페이스명으로 호출가능. - 메소드 재정의 불가능. @FunctionalInterface public interface Java8Interface { public int add(int a, int b); default void defaultMethodA() { System.out.println(".. 더보기
이클립스 문자열 검색시 검색 문자열에 줄내림 또는 공백문자열이 포함된 경우 검색방법 예를들어 USER_TABLE 이라는 테이블의 INSERT 문을 모두 검색하고자 할때 이클립스 검색창에 검색어를 INSERT INTO USER_TABLE 으로 검색하면 될것이다. 하지만 INTO 와 USER_TABLE 사이에 공백이 있거나 줄내림이 있는 경우는 검색되지 않았다. (쿼리에 공백과 줄내림을 남발한경우ㅡㅡ;;) 이때 공백과 줄내림을 포함하여 검색하는 방법이다. 예로 아래의 4가지 파일을 생성하였다. query1.sql 기본적인 INSERT QUERY query2.sql 검색하고자 하는 문자열 사이에 공백문자열 N개 존재 query3.sql 검색하고자 하는 문자열 사이에 줄내림과 공백문자열 N개 존재 query4.sql 검색하고자 하는 테이블만 검색이 되는지 확인하기 위해 다른 테이블 INSERT.. 더보기
이클립스 Git Branch 생성, 삭제 및 Stash 사용법 1.이클립스에 프로젝트가 하나 있다고 가정합니다. 이름은 [MSProject] 현재 Branch 는 master branch 만 존재한다. MSProject 프로젝트에 새로운 Branch를 생성해보자. 2.이클립스 좌측에서 MsProject 에서 마우스 우클릭 > Team > Switch To > New Branch 선택한다. 3.새로 생성할 Branch 명을 입력후 [Finish] 버튼을 클릭한다. 필자는 workingBranch 라는 Branch 명을 입력하여 생성하였다. 4.아래 그림(오른쪽 참고) master Branch 하위에 workingBranch 가 새로 생성 되었다. 5.아래 그림과 같이 Git Repositories 에서 workingBranch 을 클릭 후 마우스를 우클릭하여 Remo.. 더보기