SW Engineering41 [Pattern] 옵저버 패턴 (Observer Pattern) by Kotlin [Pattern] 옵저버(Observer) 패턴 굉장히 유명한 디자인 패턴이다. 꼭 알고 넘어가야한다. 이벤트를 관찰하는 패턴 옵저버 패턴은 한 클래스가 다른 클래스의 상태 변화를 관찰(Observe)하고자 할 때 구현하는 패턴이다. 예를 들어 클래스 A가 클래스 B를 인스턴스화 한 객체를 가지고 있고, 이 객체의 상태변화(Event)를 감지하여 그 데이터를 활용하고자 할 때 쓰인다. 이때 A클래스는 옵저버가 되기위해 옵저버를 구현(implement)하고, 그 옵저버는 B클래스에 등록(register)이 되어있어야 상태변화의 전달이 가능하다. Java의 Swing 라이브러리나 안드로이드를 사용해 봤다면 다양한 영역에서 이벤트 리스너를 사용해 보았을 것이다. 이것이 대표적 사례로 거의 모든 GUI 툴킷에 .. 2022. 3. 28. [Medium/C++] Minimum Time Required [Medium] Minimum Time Required 백준 기준 실버1~골드5 문제정도 될 것 같다. 한줄 요약 : 이분 탐색 문제. 문제 문제는 다음과 같다. 우선 이 문제는 Search 카테고리의 문제이다. 물건을 만드는 기계들이 있다. 이 기계들은 동시에 작동하며 각 기계는 물건 하나를 생산하는데 몇 일이 걸린다. 예를 들어 machines = [2,3,2] 로 주어진다면, 3개의 기계가 각각 물건 하나를 생산하는데 걸리는 시간이 2일, 3일, 2일 이다. 물건을 10개 만드는 것이 목표라면, 아래와 같은 스케줄을 가지면서 최소 8일 후에 10개를 생산할 수 있다. 물건하나를 생산하는데 몇일이 걸리는지 나열된 배열과 목표 물건의 개수가 주어졌을때, 최소 몇일이 걸리는지 맞추는 문제이다. 솔루션 우.. 2022. 3. 22. [Language] Dart 언어 연습 사이트 : DartPad [Language] Dart 언어 연습 사이트 (feat. Flutter Sample) Flutter 개발에 필수 언어인 Dart를 공부할때 매우 유용한 웹기반 연습 프로그램이다. 주소는 아래와 같다. https://dartpad.dartlang.org/ DartPad dartpad.dartlang.org 기본 문법 연습이 가능 플러터 샘플 코드와 실행결과를 확인가능 끝 2022. 3. 4. [Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 [Kotlin] 코루틴 (Coroutine) #2 - 기본기 2 첫 번째 코루틴 포스트에서 코루틴 빌더 중 launch만 살펴보았다. launch에 대한 더 자세한 내용과 또다른 빌더인 async를 알아보고 루틴의 작업(Job), 그리고 코루틴의 문맥에 대해 알아보겠다. 복습 1. 코루틴 스코프 : 루틴 작업이 정의되는 코드 영역 ex ) GlobalScope, CoroutineScope 2. 코루틴 빌더 : 코루틴 스코프를 생성하는 빌더 ex ) launch, async, runBlocking 이 포스트에서 공부할 것 1. 코루틴 빌더 : async 2. 작업(Job) 3. 코루틴 빌더 매개변수 코루틴 빌더 : async async는 launch 처럼 코루틴 스코프를 생성하는 코루틴 빌더이다. laun.. 2022. 2. 24. [Kotlin] 스코프 함수(Scope Functions) #1 [Kotlin] 스코프 함수(Scope Functions) #1 코틀린 표준함수 중에는 리팩토링 또는 자원 낭비를 방지할 수 있도록 돕는 스코프 함수 몇 가지가 있다. 이 함수들은 확장함수로 구현된 함수로 람다식을 이용해 접근하는 것이 일반적이다. 이 함수들의 가장 큰 목적은 블록 내의 코드를 각 객체의 문맥(Context) 내에서 실행하도록 한다. 스코프 함수는 크게 5가지가 있다. 여기서 let, run, apply, with는 제네릭 확장함수 형태이므로 어디서든 적용이 가능하다. let : 주로 Null 검사 생략 용도 주로 해당 객체가 Null이 아니면 어떠한 코드 블록을 실행하고, Null이면 실행하지 않도록 구현할 때 사용한다. 람다의 매개변수는 호출한 객체 자신이며 it으로 참조 가능하다. .. 2022. 1. 17. [Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 [Kotlin] 코루틴 (Coroutine) #1 - 기본기 1 개념 코루틴은 동시성 프로그래밍을 위해 탄생하였으며, 일명 '루틴(Routine)' 이라고 불리는 논블로킹(Non-Blocking) 작업(Job)들을 정의한 뒤, 이것들을 조화롭게 활용하여 멀티태스킹을 수행하는 것을 말한다. 그래서 여러 루틴들의 협력한다하여 코(Co)루틴이다. (코틀린의 'Ko'도 아니고, 코틀린만의 개념도 아니다!) 논블로킹(Non-Blocking)은 현재 작업을 수행중인 메인스레드를 중단(Blocking)하지 않고, 백그라운드에서 작업을 수행하여 현재 스레드를 종료하지 않도록하는 비동기적 작업 수행을 말하는데, Java 에서는 쓰레드(Thread, Runnable)을 통해 이러한 작업 구현이 가능했다. 그러나 이런 비동.. 2022. 1. 10. [Linux] 리눅스 사용자 추가 및 VS Code SSH 원격 개발 환경 구축 [Linux] 리눅스 사용자 추가 및 VS Code SSH 원격 개발 환경 구축 개발 인력이 늘어나면, 리눅스 서버 관리자는 각 유저에게 계정과 권한을 할당해야한다. 우선 그 방법을 알아보고 ssh 기반의 원격 개발 환경 구축까지 알아보도록 하자. 우선 기본적인 리눅스 서버가 하나 있다고 가정하겠다. 작성자는 AWS EC2의 ubuntu 환경에서 진행했다. 진행 순서 1. 사용자의 Open SSH 공개키 생성 2. 리눅스 유저 생성 및 권한 할당 3. Visual Studio Code 로 원격 접속 1. 사용자의 Open SSH 공개키 생성 사용자는 먼저 아래 주소로 접속한 뒤, 현재 개발하고 있는 OS에 맞는 putty를 다운 받는다. 설치 후 PuTTYgen 을 실행한다. https://www.put.. 2021. 12. 30. 이전 1 2 3 4 5 6 다음