본문 바로가기

Programing

(393)
[JS] ESLint를 썼더라면... 자바스크립트는 유연한 언어이다. 특히 타입에 있어 dynamic typing을 하고 있어 어려움이 많다. 일부 혹자는 타입이 없다는 말도 안되는 주장을 하는 사람도 있지만 말이다. 이런 특성으로 인해 어제 배포시에 버그가 끼어들어간 일이 있었다. 동일하지만 약간 다른 두 시스템에 배포를 했는데, 문제의 Command-C, Command-V 코드가 문제. 하나는 require를 추가했는데 다른 코드는 추가를 안했다. 문제의 util.js IntelliJ IDEA가 보여주는 코드 상에는 특별한 문제가 없어 보였다. 하지만 import를 하는 부분이 빠져 있었다. 옆에 용혁님의 화면에서는 util이 빨간펜 선생님이 밑줄 쫙 하듯이 아래와 같이 표시가 되어 있었다. 혹시 IDE의 차이가 이런 안전망(밑줄쫙)을 ..
[Java] Effective Java : Item 36 EnumSet, 유스케이스 in Java 8 한국어판: 아이템 36. 비트 필드 대신 EnumSet을 사용하라 (6장) Win32 윈도우 프로그래밍을 해본 사람은 알겠지만 비트 연산의 조합으로 만드는 여러가지 윈도우 API를 많이 사용한다. 예를 들면 AnimateWindow 함수는 3번째 인자(dwFlags)로 비트 연산자 OR(|)로 여러가지 조합된 상태를 입력을 할 수 있다. // WinUser.h #define AW_HOR_POSITIVE 0x00000001 #define AW_HOR_NEGATIVE 0x00000002 #define AW_VER_POSITIVE 0x00000004 #define AW_VER_NEGATIVE 0x00000008 #define AW_CENTER 0x00000010 #define AW_HIDE 0x00010000..
[Java] Stream in depth : Stream & Pipeline 스트림의 내부 구조 및 원리를 확인하다 두서없이 정리해두었다. 스트림의 사용에 대한 내용이라면 자바 기본서에 있는 것을 보는 것이 좋을 것이다. BaseStream 인터페이스 BaseStream 인터페이스는 위의 다이어그램에 적혀있는 메서드들을 가지고 있는 인터페이스이다. try with resource에 유용하게 사용가능한 AutoCloseable 인터페이스를 상속하고 있다. public interface BaseStream extends AutoCloseable 또한 제너릭 인자 두 개를 갖는데 하나는 스트림 원소들의 타입(T)이고 나머지는 BaseStream을 구현하는 또 다른 타입(S)이다. S는 BaseStream - 즉 자기자신을 bounded 하였기 때문에 BaseStream을 상속하고 있는..
[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..
[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 상..
[spring] stream 사용 예, 하지만 없어졌지... ControllerAdviceBean#findAnnotatedBeans ~v5.0.9.RELEASE v5.0.9.RELEASE 까지는 enhanced for 로 구성이 되어 있었다. package org.springframework.web.method; public class ControllerAdviceBean implements Ordered { // ... /** * Find the names of beans annotated with * {@linkplain ControllerAdvice @ControllerAdvice} in the given * ApplicationContext and wrap them as {@code ControllerAdviceBean} instances. */ publi..
[javac] 자바 컴파일러: 컴파일 단계 질문: - 질문 제목 : 클래스의 순서는 어떤 기준으로 정하나요?? - 질문 내용 : main메서드에 Time객체를 생성하고 참조변수 t를통해 시간을 호출하는데 Time 객체를 생성하는 클래스가 선언된곳보다 뒤에 있어도 상관 없는건가요??? 코드는 위에서 아래로 진행되는거 아닌가요??? public class Exe5 { public static void main(String[] args) { Time t = new Time(); t.hour = 12; t.minute = 34; t.second = 56; System.out.println(t.hour); System.out.println(t.minute); System.out.println(t.second); } } class Time { int hou..