본문 바로가기

분류 전체보기

(890)
[Java] Stream in depth : Stream & Pipeline 스트림의 내부 구조 및 원리를 확인하다 두서없이 정리해두었다. 스트림의 사용에 대한 내용이라면 자바 기본서에 있는 것을 보는 것이 좋을 것이다. BaseStream 인터페이스 BaseStream 인터페이스는 위의 다이어그램에 적혀있는 메서드들을 가지고 있는 인터페이스이다. try with resource에 유용하게 사용가능한 AutoCloseable 인터페이스를 상속하고 있다. public interface BaseStream extends AutoCloseable 또한 제너릭 인자 두 개를 갖는데 하나는 스트림 원소들의 타입(T)이고 나머지는 BaseStream을 구현하는 또 다른 타입(S)이다. S는 BaseStream - 즉 자기자신을 bounded 하였기 때문에 BaseStream을 상속하고 있는..
[IntelliJ IDEA] Run 설정: Gradle로 실행될 때 IntelliJ IDEA 업데이트를 했더니 기본으로 그레이들이 동작한다. 버전은 아래와 같다. control-shilt-r을 누르면 실행을 할 수 있는데 그레이들로 돌면 메세지도 섞여있고 실행속도도 느리다. 환경설정으로 가서 Gradle을 찾아본다. 해당 설정을 IntelliJ IDEA 로 바꾸어주면 된다. 이제 금방 실행이된다.
[ux] v3의 디폴트 버튼: Daum과의 모종의 관계? 윈도우를 안쓰다보니 v3를 볼 일이 없다. 어쩌다 아내가 윈도우 PC를 켜는 경우가 있어서 우연히 보게 되었는데 새로운 V3가 나왔으니 업데이트 하라는 알람이었다. 오랫만에 윈도우 경험(?)을 위해 업데이트를 하겠다고 허락을 얻어 해보았다. 맨 마지막에 있는 클로징 화면이 눈에 띄었다. "Daum을 시작페이지로 설정" 이라는 체크박스가 체크가 되어 있었다. 여기서 마침 버튼을 눌렀으면 브라우저의 시작페이지가 daum.net 등으로 인스톨러가 설정을 했을 것이다. 아내에게 물어보니 "절대 하지말라"고 한다. 결국 아래와 같이 체크를 해제하고 마침 버튼을 눌렀다. 그런데 궁금한 것은 "V3 Lite를 설치하는 것과 Daum을 시작페이지로 설정하는 것은 무슨 관계가 있을까?" 였다. 별 생각없이 추측을 해보면..
[Sonarqube] Functional Interfaces should be as specialised as possible 함수형 인터페이스는 가능하면 스페셜한 놈을 찾아써라... Core Java SE 9 For the impatient (가장 빨리 만나는 코어자바9)책에도 한 페이지지만 분명 언급되어 있었다. (158쪽) 기본 타입 int, long, double에 특화된 함수형 인터페이스 34개... 이것을 사용을 하면 오토박싱을 줄일 수 있어서 성능에 향상을 줄 수 있다. Current Interface Preferred Interface Function IntFunction Function LongFunction Function DoubleFunction Function DoubleToIntFunction Function DoubleToLongFunction Function LongToDoubleFunction Fu..
[Spring] Bean 생성시 필드주입 시점은? 객체의 생성은 프레임워크가 해준다. 문제는 프레임워크가 JVM을 넘어 마술을 부리는 줄 아는 경우가 있다. 아래 글을 읽어보면 결국 프레임워크도 JVM이 제공해주는 리플렉션 도구들을 이용해서 객체를 만들고 private 필드에 값을 설정함을 알 수 있다. 질문 import org.springframework.stereotype.Service; @Service public class TestService { public void print() { System.out.println("TestService - print"); } } import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype..
[Java8] toggle상태를 겸하는 함수를 함수형 인터페이스로 바꾸기 한번씩 경험해본 토글 함수가 있을 것이다.(참고로 토글이란 on/off 를 번갈아가는 상태를 가지는 것을 이야기한다.) 예를들면 윈도우가 사용가능(enable)과 사용불가능(disable) 두 가지 상태를 가질 수 있다. 이것을 EnableWindow(handle)과 DisableWindow(handle)로 만드는 대신 EnableWindow(handle, boolean)으로 해서 두 번째 인자가 true이면 enable로 만들고 false이면 disable로 만드는 식이다. Win32의 EnableWindow 함수도 그렇게 설계가 되었다. BOOL EnableWindow( HWND hWnd, BOOL bEnable ); 오늘 개발을 하다가 이런 유혹에 살짝 빠졌다가 다른 방법으로 처리를 해서 정리해둔다..
[Swift] Hours 5 - v1.2.1 : viewDidAppear 희찬님 환경에서 버전 정보가 여러개 붙는 버그를 발견했다. 그런데 나한테는 재현이 안된다. 처음에는 High Sierra에서만 발생하나 생각했다. 그러다가 원인을 찾았다. 앱버전을 붙이는 것을 viewDidAppear에서 수행하고 있었다. override func viewDidAppear() { super.viewDidAppear() let beforeTitle = self.view.window?.title let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String self.view.window?.title = "\(beforeTitle!) (v\(appVersion!))" } 문제는 애플리케이션이 Hide 상..
[IntelliJ IDEA] properties : resource bundle 지원(i18n) 자바에는 프로퍼티 파일로 다국어를 지원할 수 있다. 이클립스에서도 다국어를 쉽게 편집할 수 있는 플러그인이 있었다. 인텔리제이도 있을 것이라 생각했는데 단순히 그룹핑만 해주지 따로 별다른 기능이 없어 보였다. 딱히 컨텍스트 메뉴에는 관련 기능이 없다. 플러그인: Properties 혹시 플러그인을 설치해야 해서 Marketplace에서 검색을 해보니 JetBrains에서 제공하는 플러그인이 기본으로 설치되어 있었다. 단축키: F4 알고보니 단축키를 눌러야 했다. 자세한것은 Resource bundles 를 참고한다. 코드로 보이는 경우 혹시 한글이 위와 아래와 같이 코드로 보이는 경우 Transparent native-to-ascii conversion 를 체크해준다. ref