분류 전체보기
-
[Android] Compose - Lifecycle 정리Android 2024. 3. 15. 17:09
본 포스팅은 Android developer 가이드를 기반으로 작성되었습니다. Lifecycle composition의 수명주기는 시작, 재구성(Recomposition, 0회 이상), 종료로 구성. composition이란, composable을 실행하여 생성된 UI 구성 요소 Recomposition UI 상태가 변경될 때 composable을 다시 실행하고 변경 사항을 반영하는 것을 recomposition이라고 한다. 대체로 State 객체가 변경되면 트리거되며 해당 State를 읽는 모든 컴포저블을 실행한다. 이전 호출에 호출했으나 입력이 변경되지 않은 composable은 recomposition을 건너 뛸 수 있다. call site composable이 호출되는 소스 코드의 위치 compo..
-
[Java] subList 사용시 주의점 - ConcurrentModificationException 발생 이슈JAVA 2024. 2. 27. 14:21
LeetCode를 풀다가 ConcurrentModificationException가 발생했다. 원인을 찾다가 subList를 잘못 사용하고 있다는 것을 깨달아서 정리해본 오늘의 이슈. subList(int fromIndex, int toIndex) subList 메서드는 리스트 컬렉션의 메서드로, 일정 범위(fromIndex부터 toIndex - 1까지의 요소)까지 리스트 요소로 구성된 리스트를 반환한다. 간단하게 원하는 범위만큼 리스트를 반환한다고 생각하면 된다. 그렇다면 ArrayList 클래스의 subList를 구현부를 한번 살펴보자. public List subList(int fromIndex, int toIndex) { subListRangeCheck(fromIndex, toIndex, size..
-
Monorepo 관리를 위한 Lerna 살펴보기Etc 2024. 2. 7. 10:56
Lerna란? Lerna란 JavaScript를 위한 Monorepo의 구성과 관리를 도와주는 툴. npm 기반으로 패키지의 버전관리, 배포, 모듈 종속성 관리 등을 할 수 있으며, 작성일 기준으로 7.4.2 버전까지 출시되었다. 각 기능에 대해서는 아래 Lerna 주요 명령어에서 정리. Lerna v5부터는 빌드 툴인 오픈소스 빌드 시스템인 nx가 도입되어 스크립트 병렬 실행, 캐싱 작업을 추가적으로 지원하고 있다. Lerna 적용 방법 기존 혹은 새 프로젝트에서 아래와 같이 init 명령어를 통해 Lerna를 적용한다. $npx lerna init init 명령어 실행시 lerna를 사용하기 위한 설정 파일(lerna.json)과 npm 설정 파일들이 생성된다. 기존 프로젝트에 적용한다면 존재하는 패..
-
[Kotlin] Backing Fields & Backing propertiesKotlin 2024. 1. 30. 15:34
이번 포스팅은 Backing Fields와 Backing properties에 대해 정리해볼까한다. 개발하면서 너무 자연스럽게 사용하고 있었는데도, “그래서 한문장으로 정리하면?” 라고 묻는다면 대답하기 어려울 것 같았다. Backing Fields와 Backing properties의 정의, 왜 그리고 어떻게 작성하는지에 대해 정리해보자. Field와 Property 자바에서 필드(field)는 클래스에 선언된 멤버 변수를 말한다. 코틀린에서의 멤버 변수는 프로퍼티(property)라고 하는데, 자바의 필드와는 다르게 멤버 변수와 접근자(getter, settter)를 통틀어서 지칭한다. 코틀린에서 프로퍼티를 선언할 경우 접근자를 따로 정의하지 않더라도 자동 생성되고, 명시적으로 선언할 수도 있다. (..
-
2021 - 2023 회고 및 2024 목표Etc 2024. 1. 19. 16:26
감자 스터디로 블로그를 다시 시작해봅니다… 이전에는 정보 제공 느낌의 글을 쓴 것 같은데, 이제 그냥 내가 느낀 것, 배운 것 위주로 정리하는 느낌으로 적어볼까 한다. 원래는 작업하던 리액트 네이티브 SDK 관련한 글을 포스팅을 하려고 했다. 근데 이미 써놨던 글을 띡 하고 포스팅하는건 스터디 취지에 맞지도 않는 것 같고, 업무 관련 코드도 많은 것 같아서 나중에 다시 정리해서 올려야 할 것 같다. 그래서 올 해 첫 포스팅은 입사한 2021년부터 2023년까지의 회고, 그리고 올 해 목표! (1fe 블로그 보고 자극 받은 거 초큼 맞음) 회고는 당장 생각나는 큼직한 키워드 위주로 작성해본다. 입사, 그리고 4년차 2021년도에 지금 회사에 들어와서 벌써 4년차가 되었다. 빠밤! 신입 교육 받고 팀 배치 ..
-
실용주의 프로그래머 43 - 46Study/실용주의 프로그래머 2022. 1. 5. 19:16
43. 가차 없는 테스트 일찍 테스트하고, 자주 테스트하라. 자동으로 테스트하라. 코드를 작성하자마자 테스트를 해야하고, 버그는 빨리 발견될수록 고치는 비용이 적어진다. 모든 테스트가 통과하기 전엔 코딩이 다 된 게 아니다. 테스트를 통과했다는 것은 코드가 완료되었다고 말할 수 있는 확신을 갖게 된다. 프로젝트 범위에서 무엇을, 어떻게, 언제 테스트해야 할지 살펴보아야 한다. 소프트웨어 테스트에는 주로 단위 테스트, 통합 테스트, 유효성 평가와 검증, 자원 고갈과 에러 그리고 복구, 성능 테스트, 사용 편의성 테스트로 유형을 나눈다. 44. 결국은 모두 글쓰기 문서가 애초부터 전체의 일부가 되게 하고, 나중에 집어넣으려고 하지 말라. 문서화의 중요성을 다루고 있다. 내부 문서에는 소스 코드, 주석, 설계..
-
실용주의 프로그래머 22-28Study/실용주의 프로그래머 2021. 12. 8. 15:44
22. 죽은 프로그램은 거짓말을 하지 않는다 일찍 작동을 멈추게 하라 이번 장에서는 문제되는 코드가 계속 동작을 하는 것보다 일찍 종료되는 것이 낫다는 내용을 담고 있다. 대다수의 프로그래머가 성공 케이스와 몇가지 정상 실패 케이스만을 생각하기 때문에 예상치못한 에러를 만날 수 있다. 에러가 발생했을 때는 프로그램은 더이상 유효하지 않다고 보며, 잘못된 코드가 다른 문제를 일으키 전에 빠르게 멈추는 것이 최선이다. (자바 언어와 라이브러리에서는 이 철학을 포용하여 RuntimeException을 던져 시스템을 멈춘다. ) +) 책에서는 이 내용을 "죽은 프로그램이 입히는 피해는 절름발이 프로그램이 끼치는 것보다 훨씬 덜한법이다" 라고 한줄로 정리한다. 23. 단정적 프로그래밍 단정문을 사용해서 불가능한 ..
-
실용주의 프로그래머 15 - 21Study/실용주의 프로그래머 2021. 12. 1. 14:05
15. 조개 놀이 명령어 셸(Shell)의 힘을 사용하라 15장인 조개 놀이는 명령어 셸 에 대한 내용을 다루고 있다. GUI 인터페이스는 사용하기 훨씬 편리하지만, 책에서 나오는 것처럼 설계자의 의도에 다른 제약이 있다. 명령어 프롬프트에서 작업한다면 자신이 원하는 기능을 결합하여 만들어 사용할 수 있으니, 셸을 잘 다루도록 하자. +) 아무리 셸(Shell)이라지만, 장 이름이 조개 놀이라니 번역이 문제인지, 저자의 유머감각인지, 원래 그렇게 부르는데 나만 모르는 건지 잠깐 고민했다. 16. 파워 에디팅 하나의 에디터를 잘 사용하라 에디터 하나를 골라서 완전히 마스터하여 사용해야 한다고 조언한다. 난 안드로이드 개발로 IDE는 안드로이드 스튜디오를 사용하기 때문에 다른 IDE를 사용하더라도 확실히 J..