본문 바로가기

전체 글

(67)
[Thymeleaf] Ids Utility Objects의 내부 동작 방식 정리 Ids: 반복될 수 있는 id attribute를 처리할 수 있는 유틸리티 메소드들을 가지는 클래스 Thymeleaf tutorial에 따르면 내부에 사용할 수 있는 메소드들에 대해 다음과 같이 설명합니다. /* * 일반적으로 th:id attributes 에서 사용하며 지정한 id 값 뒤에 카운터를 붙힌다. * 따라서 반복 과정에 관여할 때 고유성을 유지할 수 있다. */ ${#ids.seq('someId')} /* * 일반적으로 태그에 th:for attributes에서 사용한다. 그래서 label들은 * #ids.seq(...) function을 통해 생성된 ID를 참조할 수 있다. * * 은 #ids.seq(...) function을 가진 요소의 앞 또는 뒤에 있는지 여부에 따라 달라진다. * "..
[Jenkins] 원격 배포에 사용되던 Publish Over SSH Plugin의 보안 이슈와 대체 방법 jenkins의 원격 배포에 대해 검색하면 대부분의 포스팅들이 SSH를 통해 build artifacts를 전송하는 Publish Over SSH Plugin을 사용한다. 하지만 2022년 1월 12일, Jenkins에서 제공하는 제품(플러그인)의 취약점에 대한 보안 권고가 올라왔다. 그리고 Publish Over SSH plugin은 권고문을 발행한 시점에서 해결책이 없어서 더 이상 플러그인을 사용할 수 없게 되었다. 이 글에서는, 보안 권고 사항에 올라온 플러그인 중 Publish Over SSH Plugin의 취약점과, 이 Plugin을 사용하지 않고 scp를 이용한 배포 방식에 대해 포스팅한다.(해석에 문제가 있거나, 수정해야할 부분 말씀해주시면 감사하겠습니다!🙏🏻) Jenkins EC2 Serv..
[Effective-Java] Item 84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라 여러 스레드가 실행 중이면 운영체제의 스레드 스케줄러가 어떤 스레드를 얼마나 오래 실행할지 결정하는데, 구체적 스케줄링 정책은 운영체제마다 다를 수 있다. 따라서 정확성이나 성능이 스레드 스케줄러에 따라 달라지는 프로그램은 다른 플랫폼에 이식이 어렵다. 이식성이 좋은 프로그램을 작성하는 방법 실행 가능한 스레드의 평균적인 수를 프로세서 수보다 지나치게 많아지지 않도록 하자 실행 준비가 된 스레드는 맡은 작업을 완료할 때까지 계속 실행되도록 만들어야한다. 이렇게 한다면 os의 스레드 스케줄링 정책이 상이한 시스템에서도 동작이 크기 달라지지 않는다. 단, 여기서 알아야할 점은 전체 스레드 수와 실행 가능한 스레드 수는 다르다. 전체 스레드 수는 훨씬 많을 수 있고 대기 중인 스레드는 실행 가능하지 않으니까...
[Effective-Java] Item 83. 지연 초기화는 신중히 사용하라 지연 초기화(lazyinitialization): 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법 값이 전혀 쓰이지 않으면 초기화도 결코 일어나지 않고 정적 필드와 인스턴스 필드 모두 사용할 수 있다. 최적화 용도와 클래스와 인스턴스 초기화 때 위험한 순환 문제도 해결해준다. 하지만 가능한 필요할 때 까지는 하지말자. 지연초기화도 트레이드 오프가 발생한다. 클래스 혹은 인스턴스 생성 시의 초기화 비용은 줄지만, 지연 초기화하는 필드에 접근하는 비용은 커진다. 지연 초기화 하려는 필드들 중 초기화가 이뤄지는 비율, 실제 초기화에 드는 비용, 초기화된 각 필드를 얼마나 빈번히 호출하냐 따라 지연 초기화가 실제로는 성능을 느려지게할 수 있다. 즉, 해당 클래스의 인스턴스 중 그 필드를 사용하는 ..