본문 바로가기

반응형

분류 전체보기

(36)
나만의 Docker Cheat Sheet 초창기 Docker 명령어들은 docker --help 입력 시 그룹화 없이 쭉 나열해 보여줬다. 때문에 처음 봤을 때 보기 어려울 뿐만 아니라 내가 사용한 명령어임에도 불구하고 기억에 잘 남지 않았다. Docker 개발자들도 이를 인지했는지 Docker 1.13 버전부터 Management Commands라는 것을 발표했다. Docker Command가 제공하는 기능들을 conatiner, image, network, service, volume, system 등으로 Top-Level에서 분류하고, 각 하위 명령어가 관련 명령어들을 포함하는 기능이다. 기존 사용자를 위해 예정 명령어들도 그대로 유지하는 것 같다. 그러나 실제로 사용해보니 Management Commands를 사용한 지 얼마 안 되었음에..
스트림(Stream) 활용 스트림을 활용하면 외부 반복 을 내부 반복 으로 바꿀 수 있어 좀 더 직관적인 코드를 작성할 수 있습니다. 또한 병렬로 수행할지 여부를 결정할 수 있습니다. 본문에서는 스트림 API를 활용하는 방법을 정리합니다. 필터링과 슬라이싱 filter() distinct() limit() skip() // ** 프레디케이트로 필터링 ** // 스트림 인터페이스의 filter 메서드는 Predicate를 인수로 받고, // 일치하는 모든 요소를 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); // ** 고유 요소 필터링 ** // distinct 메서드로 중복을 제거한다. List numbers = Ar..
스트림 (Stream) 스트림이란? 스트림이란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 로 정의할 수 있다. 스트림을 사용하면 선언형(즉, 데이터를 처리하는 임시코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있다. 따라서 데이터 컬렉션 반복을 멋지게 처리할 수 있으며, 별도의 멀티 스레드 코드를 구현하지 않더라도 데이터를 병렬로 처리할 수 있게 된다. 다음은 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 정렬하는 로직을 Java7과 Java8로 비교하는 예시이다. // Java7 List lowCaloricDishes = new ArrayList(); // 컨테이너 역할만 하는 Gabage 변수! for (Dish d : menu) { if(d.getCalories() < 400) { lowCalo..
람다 표현식 (Lambda Expression) 람다란 무엇인가? 람다 표현식 (Lambda Expression) 은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다를 사용하면 더 쉽게 동작 파라미터 형식의 코드를 구현할 수 있으며, 이에 따라 코드가 더 간결하고 유연해진다. 람다의 특징 익명 : 람다는 익명 메서드 처럼 이름이 없다. 함수 : 람다는 메서드처럼 특정 클래스에 종속되지 않기 때문에 함수라고 부를 수 있다. 하시만 메서드처럼 "파라미터 리스트", "바디", "반환 형식", "가능한 예외 리스트"를 포함한다. 전달 : 람다 표현식을 메서드의 인수로 저장하거나 변수로 지정할 수 있다. 간결성 : 익명 클래스처럼 자질구레한 코드 구현이 필요 없다. 람다의 구성요소 // Before class LengthCompara..
동작 파라미터화 (Behavior Parameterization) 동작 파라미터화 (Behavior Parameterization) 는 "다양한 동작을 수행할 수 있는 코드 블럭을 메서드 파라미터로 전달"함으로써 자주 변경되는 요구사항에 효과적으로 대응할 수 있는 방식을 의미합니다. 여기서는 자주 변경되는 요구사항의 예시를 기반으로 동작 파라미터화를 한 후 Java8에서 추가된 Lambda로 코드를 간소화하는 과정을 보여줍니다. 요구사항 우리는 농장 재고 애플리케이션을 개발합니다. 농부는 녹색 사과 만 필터링 하는 기능을 추가하길 원했습니다. 시도 1 : 녹색 사과 필터링 아래와 같이 녹색 사과만 필터링하는 메서드를 구현했습니다. 그런데 농부가 빨간 사과 를 필터링하는 기능을 추가하길 원했습니다. public static List filterGreenApples(Lis..
Private 메소드 단위 테스트하기 2가지 방식으로 Private 접근자를 가진 메소드를 단위테스트하는 예제입니다. Reflection 활용 Spring Framework의 RelectionTestUtils Reflection을 활용한 private static 메서드 단위 테스트 Relection으로 특정 클래스에서 테스트 할 메서드를 불러온 후 accessible 필드를 true로 설정합니다. 그리고 invoke() 메서드를 사용해 테스트 할 Private 메서드를 실행합니다. @Component public class Validator { private static boolean checkLength(String str) { if (str.length() > 10) { return false; } return true; } } @Ru..
일반 계정으로 docker 명령어 사용하기 콘솔에서 docker 명령어는 root 권한을 가진 사용자만 사용할 수 있습니다. 그래서 docker 명령어 실행시 항상 sudo를 붙여야 합니다. 만약 일반 계정으로 sudo를 붙이지 않고 docker 명령어를 실행하면 다음과 같은 메세지를 출력합니다. Cannot connect to the Docker daemon. Is the docker daemon running on this host? 그러나 docker 그룹을 생성한 후 일반 사용자를 포함하면 일반 계정도 sudo를 붙이지 않고 docker 명령어를 사용할 수 있습니다. $ sudo groupadd docker $ sudo usermod -aG docker ${USER} 또는 sudo gpasswd -a ${USER} docker
OAuth 2.0과 Authorization Grant 소개 OAuth2는 사용자가 HTTP 서비스 상에서 어플리케이션의 제한된 접근을 허용하기 위한 인가(Authorization) 프레임워크 입니다. 인증은 사용자 계정을 소유한 서비스로 위임하고, 사용자 계정에게 Third-Party 어플리케이션 접근 권한을 부여합니다. OAuth2는 웹, 데스크톱 어플리케이션, 모바일 디바이스 등을 위한 인가 플로우(Flow)를 제공합니다. OAuth 2.0 Specification 은 Access Token을 발급 받으려는 클라이언트에게 다양한 Grant("Method")를 제공하는 유연한 인가 프레임워크 입니다. Access Token은 API Endpoint로의 요청을 인증하는데 사용되며, 클라이언트의 데이터에 접근하기 위한 권한을 표현합니다. 명세서에서는 Acce..

반응형