프로그래밍 290

이펙티브 코틀린 2장 가독성

## 2장 가독성 ### 아이템11 가독성을 목표로 설계 하라 ```kotlin if (person != null && person.isAdult) { view.showPerson(person) view.hideProgressWithSuccess() } else { view.showError() view.hiseProgress() } person?.takeIf { it.isAdult } ?.let { view.showPerson(person) view.hideProgressWithSuccess() } ?: run { view.showError() view.hideProgress() } ``` A/B 코드 중에 A 코드가 명확하고, 이해하기가 더 쉽다. B 코드는 코틀린 스러워 보이지만, 오히려 디버깅을 ..

이펙티브 코틀린 1장 안정성

1장 안정성 아이템 1: 가변성을 제한하라 코틀린은 모듈로 프로그램을 설계 한다. 모듈은 클래스, 객체 ,함수, 타입 별칭, Top-level property 등 다양한 요소로 구성 된다. 아래의 코드를 살펴 봅니다. class NumberSum { suspend fun sumNumber() { var num = 0 coroutineScope { for (i in 1..1000) { launch { delay(10) num += 1 } } } println(num) // 실행 마다 다른 값이 나온다. } } 코루틴은 경량 쓰레드라고 생각하면 되고, 위의 코드에서는 쓰레드 간의 동기화가 되어 있지 않기 때문에, 값을 마음 대로 변경 하게 되는 이슈가 있고, 우선 num 변수 자체가 가변적인 변수라 이를 불..

vite build 오류

최근에 이직한 곳의 플랫폼은 admin 환경이 spring boot + vite(vue3)를 쓰고 있었는데, 빌드가 안되는 케이스가 발견 됐다. 로컬 머신이 m1이라서 이슈가 되는 것 같기도 한데, 아래처럼 하면 이슈가 해결 된다. The package "esbuild-darwin-arm64" could not be found, and is needed by esbuild가 발생한다. 이상해서 찾아보니, 아무래 모듈들을 설치해도 동작을 하지 않는다. npm install -g esbuild-darwin-arm64 npm install -g esbuild 해도 안되는데, 특정 링크를 보고 아래 명령어를 실행하니 수정 되었다. npm i -D esbuild ref. https://github.com/evan..

Error computing cache key - CircleCi

Circle Ci상에서 아래와 같은 오류를 만날 수 있다. error computing cache key: template: cacheKey:1:30: executing "cacheKey" at 대충 package-lock.json이 없어서 발생하는데, 추가해주면 해당 오류를 수정 할 수 있다. ref. https://stackoverflow.com/questions/64311553/error-computing-cache-key-on-circle-cl-when-i-setup 혹은, circleCi 설정 파일에서 pkg-manager를 yarn으로 바꿔서 하면 될 것 같기도 한데, 테스트 해보진 않았다.

프로그래밍 2022.08.03

코드스피츠 77 - ES6+ 기초편 6회차 (Generator, Promise, Async/Await)

Generator const infinity = (function*() { let i = 0; while(true) yield i++; }) console.log(infinity.next()) yield를 이용하면 블록을 중간에 끊어주는 효과가 발생 => JS에서는 하나의 문들을 Record로 만들어 주고, 해당 레코드를 실행 할지 말지를 결정 하게 됨. suspension, generator, command pattern등 여러 가지 개념들이 설명 되어 나오는데, 각각을 잘 이해하는게 중요하다. gererator + async + executor generator => 흐름을 멈춰준다. const profile = function*(end, next, r) { const userid = yield $...

반응형