분류 전체보기 466

객체지향 개발 5대 원리 : SOLID

객체지향 개발 5대 원리 : SOLID 책에서 본 내용, 인터넷에서 본 내용을 정리해 보려고 일단 작성하고 저장하고 있어 아직 완성 상태가 아닙니다. 5. DIP(Dependency Inversion Principle : 의존성 역전의 원칙) : A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS. : B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTIONS. : 상위 레벨 모듈은 하위 레벨 모듈에 의존하지 말아야 한다. 두 모듈는 추상에 의존해야 한다. : 추상은 상세(deta..

Engineering/Etc 2019.09.27

CompletableFuture 기능 살펴보기

Java 5 에 추가되었던 Future 는 다음과 같은 제한 사항이 있다. 1. 수동(manually)으로 완료시킬수없다. 예를 들어 remote API 로 이커머스 상품의 가장 비싼 상품을 가져오는 기능을 작성하는데 스레드를 분리해서 해당 기능에서 Future 로 반환하고자 한다. 이때 리모트 API 서비스가 down 이 되면 Future 를 수동으로 완료시킬 수 없다. 2. Future 의 결과값을 블럭킹 없이 더 이상의 행동(action) 을 수행할 수 없다. Future 는 완료를 공지하지(notify) 않는다. 그래서 get() 메소드로 결과가 나올때까지 블럭(block)해야한다. 3. 멀티 Future 들이 서로 묶을(chain) 수 없다. 시간이 긴 연산을 실행해야하고 그 연산이 끝났을때 다..

Engineering/Java 2019.08.23

java 8 stream API 실행시간 비교

java 8 에 포함된 stream 을 사용해서 foreach 문과 비교해서 수행 시간이 얼마나 차이 나는지 비교를 해보았다. ※ 환경은 i7-4790 3.6GHz, 16GB, 윈도우 머신에서 테스트했다. 30 만개의 랜덤한 수열에서 (i % 2) == 0 조건을 만족하는 숫자들의 갯수을 구해보았다. @Test public void streamExecutionTimeTest() { List list = new ArrayList(); Random random = new Random(); for (int i = 0; i < 300000; i++) { list.add(random.nextInt()); } StopWatch stopWatch = new StopWatch(); stopWatch.start(); S..

Engineering/Java 2019.08.22

putty 에서 깨진 한글 보기

putty 에서 한글로 작성된 파일이 깨져서 보일 경우, locale 명령어로 로케일을 확인해서 다음과 같이 "euc_KR" 로 보일 경우에는 아마도 LANG 도 ko_KR 일겁니다. 요즈음 설치하는 리눅스들은 UTF-8 을 기준으로 많이들 하는데, 옛날에 설치한 장비들은 euc_kr (완성형)을 선호하는 곳이 있네요. $ locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or..

Engineering/Linux 2019.04.12

dhcp 인터페이스를 static 으로 변경

동적(dhcp) IP 로 사용중인 인터페이스를 고정(static) 으로 변경(in CentOS) 1. IP 주소 및 gateway 확인# ip route default via 172.25.50.1 dev enp2s0 proto static metric 100 172.25.50.0/23 dev enp2s0 proto kernel scope link src 172.25.51.123 metric 100 172.25.252.252 via 172.25.50.1 dev enp2s0 proto dhcp metric 100 -> IP 주소가 172.25.51.123, netmask 는 255.255.254.0 (172.25.50.0/23) 이고, default gateway 는 172.25.50.1, 인터페이스 명이 ..

Engineering/Network 2018.11.23

MsgPack 을 이용해서 직접 write 구현하기

MsgPack 을 이용해서 직접 write 구현하기 MsgPack 를 이용해서 직접 byte 배열에다가 쓸 경우 다음 규칙을 지키자. 1. 객체 타입일 경우 멤버 변수의 갯수가 몇개인지 write 한다. - writeArrayBegin(N) 2. list(또는 array) 타입일 경우 list 의 size 를 write 한다. - writeArrayBeging(N) 2.1 list(또는 array) size 만큼 loop 를 돌면서 각 element 를 write 한다. 2.2 list(또는 array) 의 element 가 primitive 타입이 아닌 객체형일 경우에는 1 번에 해당하므로 객체 멤버 변수 갯수를 write 한다. 2.3 list(또는 array) element 의 size 가 0 일 ..

Engineering/Etc 2018.11.22

Sublime Text 에서 ColorPicker 가 동작하지 않을 때 해결 방법

Sublime Text 에서 ColorPicker 가 동작하지 않을 때 해결 방법 Sublime Text 툴에서 html 파일을 작성하다가 #FEFEFE 같은 컬러 코드를 눈으로 확인하고 싶을때 도움이 되는 플러그인이 "ColorPicker" 이다. "Best of Sublime Text 3: Features, Plugins, and Settings" 라는 글에서 보고 참고해서 설치해보았다. "Package Control: Install Package" 에서 "colorpick" 로 검색하면 두개가 나오는데, "ColorPicker : A multi-platform color picker plugin weslly.github.com" 으로 설치하자. 어쨌든 설치를 한거 같은데, 컬러 코드에서 Shift ..

Engineering/Etc 2018.11.01

AWS S3 에 presigned url 로 파일 업로드할때 실패 해결

AWS S3 에 presigned url 로 파일 업로드할때 실패 해결 프로젝트에서 AWS S3 에 파일을 업로드를 하는데, 서버에서 파일을 직접 올리는 경우가 아니라 클라에서 파일을 올려야 하는 경우가 있다. 보통 인증키를 노출하지 않기 위해서 인데, 이럴때 서버에서 업로드 하려고 하는 파일에 대해서 접근 유효 시간이나 전송 메소드(PUT/POST), 해쉬값 같은거를 포함해서 미리 사인(presign)을 받은 url 을 얻을 수 있다. (AWS API 요청에 서명) 그럼 이 presigned url 을 유효 시간내에 아무나 올릴 수 있게 되고 클라에서 이 url 을 가지고 파일을 업로드 한다. 클라에서 파일을 업로드하는 시나리오는 이렇게 진행하면 되는데, 다음과 같은 url 에서 https 가 시작할때..

Engineering/Etc 2018.10.26

AWS S3 설정

AWS S3 설정 AWS 에서 S3 설정을 위한 과정을 정리해보았다. AWS S3 콘솔에 접속한다. (https://s3.console.aws.amazon.com/s3 또는 https://aws.amazon.com/ 에서 콘솔에 로그인후 서비스 에서 S3 선택) 현재 사용중인 버킷 리스트를 확인할 수 있다. 버킷 생성"+ 버킷 만들기" 로 클릭해서 버킷 생성을 한다. (1) 이름 및 리전 "버킷 이름" 은 고유한 값을 위해 DNS 형식의 이름을 입력한다. ex) test.abc.com "리전" 을 선택한다. ex) 아시아 태평양(서울) 선택 "기존 버킷에서 설정 복사" 는 기존 버킷 설정을 복사할 수 있다. 기존 버킷이 있을 경우에 선택해서 "다음" 을 클릭한다. 최초 생성은 "다음" 을 선택한다. (2..

Engineering/Etc 2018.10.19

네트워크 설정 on CentOS 6

네트워크 설정 on CentOS 6 예전에 설치된 CentOS 6 장비에서 인터페이스 설정을 변경하려고 UI 프로그램을 찾아보았다. CentOS 7 이상에서 GNOME 에서 Preference 에서 찾아보면 바로 Network 아이콘이 보이는데, CentOS 6 에서는 보이지가 않는다. Network 가 있긴한데, 무언가 많이 비어져 있는 듯한 모습이다. Edit 으로 수정하는거는 가능한데, 인터페이스가 내려갔을때는 어떻게 해야거지? 물론 command 라인에서 직접 /etc/sysconfig-networkscripts/ifcfg-eth0 파일을 바로 수정하면 되겠지만, 그보다는 그래도 UI 인터페이스가 낫겠지 싶어서 찾아본게 "system-config-network-tui" 또는 "system-conf..

Engineering/Linux 2018.09.20