동시성 프로그래밍에서 발생하는 경쟁 상태, 교착 상태에 대해 알아보자

동시성 프로그래밍(Concurrent Programming) 동시성 프로그래밍은 여러개의 계산들을 연속적으로 하는 것이 아닌 병행 처리하는 프로그램을 말한다. 이러한 동시성 코드를 제대로 작성하는 것은 쉽지 않다. 하지만 동시성 코드 작성을 통해 성능 향상을 기대할 수 있는 경우가 많기 때문에 현대 프로그래밍에서는 필수적인 요소다. 동시성 코드를 작성할 때 발생할 수 있는 공통된 문제점들에 대해서 더보기…

동시성과 병렬성의 차이

동시성(Concurrency)과 병렬성(Parallelism)은 다르다 동시성 동시성은 적어도 두 개의 스레드가 진행 중일 때 존재하는 조건이며, 가상 병렬 처리의 한 형태로 시간 분할(time-slicing)을 포함한다. 우리가 흔히 ‘동시’라고 이야기 하지만 컴퓨터(코어)는 한번에 하나의 명령어만 처리할 수 있다. 즉, 두개 이상의 알고리즘이 하나의 코어내에서 스레드간에 빠르게 교차되면서 실행되기 때문에 ‘동시’라고 느끼는 것이다. 위의 그림은 더보기…

글쓴이 Charlezz,

Stackful 과 Stackless 코루틴의 차이

Stackful Coroutines vs Stackless Coroutines Stackful Coroutines 먼저 스택풀 코루틴(Stackful Coroutine)은 함수 호출시에 사용되는 분리된 스택을 가지고 있다. 코루틴이 어떻게 동작하는지 정확하게 이해하기 위해서 로우레벨 관점에서 간단히 함수 프레임과 함수 호출에 대해서 살펴볼 것이다. 하지만 먼저 스택풀 코루틴의 특성에 대해서 알아보자. 스택풀 코루틴은 자신만의 스택을 가지고 있다. 스택풀 코루틴의 수명은 더보기…

젠킨스에서 build.gradle의 versionCode 및 versionName 수정하기

Motivation 다른 부서와 긴밀히 협업을 하다보면 요청에 의해 버전코드(versionCode) 및 버전명(versionName)을 빈번하게 바꿀 필요가 있다. 개발중에 이런 요청을 받으면 작업하던 내용을 Stashing하고, 버전코드를 수정하고 커밋&푸시한 뒤 다시 Unstashing… “아.. 어디까지 했더라?” 개발자들은 공감할 것이라 의심치 않는다. 개발중에 인터럽트가 들어오면 컨텍스트 스위칭 비용이 발생하게 되고, 이는 결국 생산성 저하 및 퇴근시간 더보기…

운영체제의 Process와 Thread 이야기

Process와 Thread 이야기 프로세스(Process) 다음과 같이 위키에서 프로세스의 정의를 발췌했다. In computing, a process is the instance of a computer program that is being executed by one or many threads.   컴퓨터 분야에서 프로세스는 컴퓨터 프로그램의 인스턴스로, 하나 이상의 스레드를 통해 실행된다.   프로세스라는 명칭은 낯설수 있는데, 프로그램은 친숙하리라 생각된다. 더보기…

글쓴이 Charlezz,

보일러플레이트 코드란?(Boilerplate code)

보일러플레이트란? 컴퓨터 프로그래밍에서 보일러플레이트 또는 보일러플레이트 코드라고 부르는 것은 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다. 보일러플레이트의 어원 보일러플레이트 코드의 어원은 신문사업에서 나왔다. 1890년대에 광고나 컬럼과 같이 계속 사용되는 텍스트 인쇄판은 부드러운 납 대신 강철로 찍기 시작했다. 이를 Boilerplate라고 불렀다. 1950년대까지 수천 개의 신문이 미국 최대 공급업체인 더보기…

macOS vs Windows 빌드 시간 테스트

테스트 목적 동일한 기기의 동일한 개발환경에서 macOS와 Windows의 빌드시간의 차이를 알아본다. 테스트 환경 테스트 기기 : 13인치 Macbook 2015 중급형 테스트 OS : macOS Mojave, Windows10 (부트캠프환경) 빌드 환경 : 안드로이드 스튜디오 버전 3.5.3, SDK Platform 29, build-tools 29.0.2 빌드 대상 프로젝트 : FinalArchitecture/JavaApp 테스트 빌드 시간 측정은 프로젝트 클린 더보기…

테스트 더블

테스트 더블(test double) 테스트 작성시, 테스트 대상 코드와 상호작용하는 객체   테스트 더블의 역할 테스트 대상 코드를 격리한다. 테스트 속도를 개선한다. 예측불가능한 실행 요소를 제거한다. 특수한 상황을 시뮬레이션한다. 감춰진 정보를 얻어낸다.     테스트 더블의 종류 1. Dummy 가장 기본적인 테스트 더블 유형. 구현이 포함되어 있지 않고, 주로 매개 변수 값으로만 더보기…

글쓴이 Charlezz,

[패스트캠퍼스] iOS 세미나

섹션 1. RxSwift, 오진성 – 카카오 데이터의 흐름에 따라 코딩을하며, 코드의 길이와 로직이 명령형 프로그래밍에 상대적으로 간결해집니다. 반응형 프로그래밍을 해야하는 이유. 예를 들어 서버로부터 두가지 이상의 API를 호출하여 결과를 받아서 처리를 해야한다면 어떻게 할까요? 보통 생각하는 방법 : 1번 API호출 -> 1번 응답 성공 -> 2번 API 호출 -> 2번 더보기…

글쓴이 Charlezz,

자바 버전 다운그레이드 9->8 for mac only

회사에서 쓰는 아이맥 Android Studio에서 gradlew 커맨드를 쓰려고 하니, java 9.0.x에서는 알아들을수 없는 커맨드라고 나온다… 난 자바를 업데이트한적이 없는데…   왜 인지 모르겠지만 다운그레이드 하기로 맘먹고 자바8을 설치했지만 여전히 9.0.x버전이 건재하다.   그래서 다음 순서대로 셋팅했다.   Step 1: Install Java 8 다운로드: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Step 2: 자바8을 설치한뒤, 모든 설치된 자바 더보기…

글쓴이 Charlezz,