반응형

분류 전체보기 509

동작 파라미터화

동작 파라미터화를 사용하는 방법을 배워보려고 합니다. 어떤 문제를 해결하기 위해서 A 함수를 작성했다고 가정합니다. 그런데 A 함수에 대한 요구가 많아지면서, A 함수 내부에 조건문도 추가되고, 인자도 늘어나게 되는 경우가 있습니다. 이때 요구사항이 추가되더라도 기존 A 함수와 거의 비슷하다면 코드를 추상화할 수 없을까요? 구체적인 예시를 보겠습니다. 특정 과일을 골라내야 하는 문제가 있어서 이를 해결하기 위해서 아래 코드를 작성했습니다. busket에 담겨진 과일들 중에 '배'가 있으면 필터링해서 따로 담았습니다. public static List chooseFruits(List busket){ List chosenFruits = new ArrayList(); for (Fruit fruit : busk..

IT/Java 2022.08.13

전략 패턴

디자인 패턴 중 하나인 전략 패턴에 대해서 알아보겠습니다. 회사에서 리팩토링도 하고 새로운 서비스를 개발하기 위해서 알아보던 중에 전략 패턴이 적절한 것 같아서 조사하게 되었습니다. 전략 패턴 ( Strategy Pattern ) 객체들이 할 수 있는 행위를 클래스로 정의하고, 유사한 행위들은 캡슐화하는 인터페이스를 정의합니다. 객체의 행위를 바꾸고 싶은 경우에는 직접 행위를 수정하지 않고 전략을 바꿔주어 유연한 확장이 가능하도록 설계하는 것을 말합니다. 전략 패턴 사용하는 이유 사용하는 이유를 알기 위해서 문제점을 발견해 보겠습니다. Season이라는 인터페이스가 있고 이를 구현한 Summer와 Winter 클래스가 있습니다. 그리고 Summer와 Winter를 사용하는 Person도 있습니다. 위 구..

IT/Others 2022.08.13

자바 8 등장

자바 8이 등장하면서 프로그래머가 좋아할 내용을 알아보겠습니다. 자바 8로 오면서 편리한 기능을 제공하게 되었습니다. 스트림, 비동기 논블로킹, 함수형 프로그래밍 등을 제공합니다. 왜 이런 기능을 자바 8에서 도입 했을까요? 프로그래머는 대용량 데이터를 다루어야 하는 도전에 직면했기 때문입니다. 이른바 빅데이터! 대용량 데이터는 단일 코어로 다루기에는 턱없이 부족했습니다. 그래서 코어의 수를 늘리기 시작합니다. 코어가 늘어나니 작업을 병렬로 처리할 수 있게 됩니다. 이후 자바 8에서는 비동기 논블로킹 그리고 함수형 프로그래밍을 도입하게 됩니다. 자바 8에서 제공하는 기능 몇 가지를 살펴보겠습니다. 메서드에 메서드를 인수로 전달이 가능해졌습니다. 이를 동작 파라메타화(behavior parameteriza..

IT/Java 2022.08.13

Super 주니어 개발자

개발자 컨퍼런스라는 것을 처음으로 신청해서 참여했습니다. 입사하고 1년이 다 되어가는데, 취업을 열심히 준비할 때의 '개발자'와 지금 생각하는 '개발자'가 다르게 느껴습니다. 나태해진 건지 무뎌진 건지 모르겠지만 어떠한 동기가 필요했고 개발자 컨퍼런스만한게 없지 않을까 생각했습니다. 멋진 사람들을 보면 그렇게 되고 싶은 생각이 듭니다. 총 9명의 개발자가 9가지의 이야기를 들려주었습니다. 주니어 개발자로서 갖추어야 하는 마음과 태도를 충분하게 배울 수 있었습니다. 정말 저에게 필요했던 것을 찾은 기분이었습니다. 제가 가져온 키워드는 자동화, 코드리뷰, 회고 이렇게 3가지 였습니다. 자동화는 업무 능률을 향상시키고 노력 대비 좋은 성과를 낼 수 있다고 생각했습니다. 코드리뷰는 업무의 이해를 돕고 근본적인 ..

Career/Conference 2022.07.31

HashiCorp Strategy Day

회사에서 클라우드 환경으로 MSA를 전개하면서 클라우드 인프라에 대해서 알아야 할 필요가 있었습니다. 해외에 MSA 전개를 시작하면서 클라우드 인프라에 대해서 공부하게 될 기회가 생겼습니다. 마침 PM님께서 하시코프에서 진행하는 멀티/하이브리드 크라우드 운영 전략에 대해서 발표가 있다고 해서 참석하게 되었습니다. 7월 19일, 화요일, 서울 코엑스의 Grand Ballroom에서 진행되었습니다. Agenda는 Terraform, Vault, Consul, Nomad 솔루션을 차례대로 다루었습니다. 키노트는 하시코프의 부사장인 James Conway가 해주었습니다. 하시코프는 코드형 인프라(IaC : Infrastructure as Code)를 통해서 멀티 클라우드 인프라를 자동화할 수 있다고 했습니다. ..

Career/Conference 2022.07.31

[리액티브 API] WebClient 개요와 사용법

리액티브 방식으로 응답 데이터를 사용하기 위해서는 Flux나 Mono 타입으로 데이터를 래핑해야 합니다. 스프링 3.0에서 소개된 RestTemplate의 리액티브 대안으로 스프링 5에서는 WebClient를 제공하고 있습니다. Webclient는 스프링 Webflux 라이브러리에 속해 있고, HTTP 프로토콜에서 동작하고 있습니다. WebClient는 웹 요청을 수행하기 위한 인터페이스로, 요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용합니다. WebClient를 사용하는 일반적인 패턴은 다음과 같습니다. WebClient 인스턴스 생성(또는 빈으로 주입) -> HTTP 메소드 지정 -> URI와 헤더 지정 -> 요청 보내기 -> 응답 받기 몇 가지 예시로 WebClient 사용법을 살펴..

IT/Spring 2022.07.26

[리액티브 API] 비동기 웹 프레임워크, WebFlux

스프링 MVC와 같은 Servlet 기반의 웹 프레임워크는 요청이 처리될 때 스레드 풀에서 작업 스레드를 가져와서 해당 요청을 처리하고, 작업 스레드가 종료될 때까지 요청 스레드를 블로킹합니다. 따라서 블로킹 웹 프레임워크는 요청량의 증가에 따른 확장이 어렵습니다. 요즘 같이 사람들이 빈번하게 컨텐츠를 소비하고, IoT가 끊임없이 API 통신을 하게되면 확장성이 부각됩니다. 비동기 웹 프레임워크는 적은 수의 스레드로 높은 확장성을 성취합니다. 이벤트 루핑(event looping) 기법으로 한 스레드당 많은 요청을 처리할 수 있습니다. 이벤트 루프에서는 모든 것이 이벤트로 처리됩니다. 이벤트 루프는 요청 작업의 콜백을 등록하여 병행으로 처리하게 하고 다른 이벤트 처리로 넘어갑니다. 그리고 작업이 완료되면..

IT/Spring 2022.07.26

[리액터] 리액터 사용하기

일련의 작업 단계를 기술하는 명령형 프로그램과 달리, 리액티브 프로그래밍은 데이터가 전달될 파이프라인을 구성하는 것입니다. 그리고 이 파이프라인을 통해 데이터가 전달되는 동안 어떤 형태로든 변경 또는 사용될 수 있습니다. 명령형 프로그래밍과 리액티브 프로그래밍의 차이를 예시로 알아보겠습니다. 명령형 프로그래밍 예시부터 보겠습니다. 과일의 이름을 가져와서 모두 대문자로 변경한 후 하나의 문장을 만들어 출력해보겠습니다. 이 경우는 각 줄의 코드가 같은 스레드에서 한 단계씩 차례대로 실행됩니다. 그리고 각 단계가 완료될 때까지 다음 단계로 이동하지 못하게 실행 중인 스레드를 막습니다. String fruit = "Apple"; String capitalFruit = fruit.toUpperCase(); Str..

IT/Spring 2022.07.11

[리액터] 리액터 개요

애플리케이션 코드를 개발할 때는 명령형(imperative)과 리액티브(reactive)의 두 가지 형태로 코드를 작성할 수 있습니다. 명령형은 순차적으로 연속되는 작업이며, 각 작업은 한 번에 하나씩 그리고 이전 작업 다음에 실행됩니다. 리액티브형은 데이터 처리를 위해 일련의 작업들이 정의되지만, 이 작업들은 병렬로 실행될 수 있습니다. 그리고 각 작업은 부분 집합의 데이터를 처리할 수 있으며, 처리가 끝난 데이터를 다음 작업에 넘겨주고 다른 부분 집합의 데이터로 계속 작업할 수 있습니다. 리액티브 프로그래밍은 순차적으로 수행되는 작업 단계를 나타낸 것이 아니라, 데이터가 흘러가는 파이프라인이나 스트림을 포함합니다. 그리고 리액티브 스트림은 데이터 전체를 사용할 수 있을 때까지 기다리지 않고 사용 가능..

IT/Spring 2022.07.11

emulator 라디오 끄기

음악을 들으며 앱 개발을 하고 싶을 때가 있습니다. 그런데 emulator를 켜면, 음질이 그다지 좋지 않게 변합니다. 그래서 emulator의 라디오를 끄는 방법을 소개합니다. 1. 아래 경로로 가시면, emulator 파일이 있습니다. ~/Library/Android/sdk/emulator/ 2. emulator 파일의 이름을 emulator-original로 변경합니다. 3. bash script 텍스트 파일을 만들어 줍니다. 내용은 아래와 같습니다. #!/bin/bash ~/Library/Android/sdk/emulator/emulator-original $@ -qemu -no-audio 4. 생성된 bash script에 권한을 넣어 줍니다. chmod +x emulator 이제 Android..

IT/Android 2022.06.04
반응형