'분류 전체보기' 카테고리의 글 목록 (5 Page) — SH's Devlog

분류 전체보기

DevOps/GIT

[Git] Git Rebase란? (feat. git-flow 히스토리를 더 이쁘게 만들기)

안녕하세요. 이번에는 Git rebase에 대해 정리하겠습니다! Git rebase란? Git rebase는 두 개의 공통 Base를 가진 Branch에서 한 Branch의 Base를 다른 Branch의 최신 커밋으로 branch의 base를 옮기는 작업입니다. 용어 그대로 베이스를 다시 설정하는 작업입니다. Git rebase의 장점 1. 공유 branch의 최신 변경사항을 즉각 반영할 수 있다. git merge는 공유 branch에 대한 변경사항을 즉각 대응하기 어렵습니다. 반면에 Git rebase를 사용한다면, 동료 개발자들이 올린 commit들의 수정사항을 내가 작업하고 있는 branch에 즉각 반영할 수 있습니다. 즉, 공유 branch에 대한 최신 commit을 반영하면서 작업을 해야할 때..

Android/Kotlin(Java)

[Kotlin] Comparable Interface 상속으로 클래스 비교하기

두 객체를 비교할 때 객체의 특정 원소를 통해 비교를 하려면 compareTo() 메소드를 통해 간단하게 비교할 수 있습니다. 또한, 이 compareTo() 메소드는 단순히 객체간의 비교 뿐만 아니라 List의 정렬에서도 사용됩니다. 자바와 코틀린에서는 이 compareTo() 메소드를 쉽게 사용할 수 있는 Comparable 인터페이스를 제공합니다. Comparable package kotlin /** * Classes which inherit from this interface have a defined total ordering between their instances. */ public interface Comparable { /** * Compares this object with the s..

Flutter/Basic

[Flutter/Basic] 터미널에서 Flavor apk, appbundle 빌드하기

Flutter run flutter run --flavor dev -t lib/main_dev.dart flutter run --flavor stage -t lib/main_stage.dart flavor가 dev/stage 버전인 lib/main_dev.dart를 실행한다. Flutter apk build flutter build apk --flavor dev -t lib/main_dev.dart flutter build apk --flavor stage -t lib/main_stage.dart // Release 버전일 경우 flutter build apk --release --flavor dev -t lib/main_dev.dart flutter build apk --release --flavor ..

Android/Kotlin(Java)

[Kotlin] Collections API - associate(), associateBy, associateWith(), groupBy()

associate associate()를 이용하면 List를 Map 형태로 변형시킬 수 있습니다. 단, groupBy()와의 차이점이 있습니다. associate()는 groupBy()와는 달리, key가 중복이 되면 마지막 요소를 Map의 value로 저장합니다. (groupBy()는 Map 형태로 만들기 때문에 key가 중복이 되어도 List에 전부 담을 수 있습니다.) 1. associate() associate() 함수 public inline fun Iterable.associate(transform: (T) -> Pair): Map { val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16) return associat..

Android/Kotlin(Java)

[Kotlin] Collections API - groupingBy() 와 Grouping

groupingBy groupingBy()를 이용하면 데이터들을 그룹화 시키는 Grouping 객체를 만들 수 있습니다. Grouping 클래스에는 그룹화 되어있는 데이터들에 대한 연산을 수행하는 메소드들을 가지고 있습니다 groupingBy()는 4가지 클래스에서 사용할 수 있습니다. Iterable.groupingBy() Array.groupingBy() Sequence.groupingBy() CharSequence.groupingBy() Grouping의 확장함수 aggregate() 함수 aggregate()는 Grouping의 인자들을 key로 그룹화 하고 각 그룹의 요소에 순차적으로 연산(operation)을 적용하고 누적값(accumulator) 결과를 Map에 저장합니다. @SinceKot..

DevOps/CI CD

[CI/CD] CircleCI(version 2.1)로 통합, 배포 파이프라인 구성하기(+Android 파이프라인 작성하기)

CircleCI란? CircleCI는 VCS(Version Control System)와 연동하여 빌드, 테스트 및 배포를 자동화하는 데 도움이 되는 지속적인 통합(Continuous Integration)을 제공하는 플랫폼입니다. 또한, 캐싱, 도커 레이어 캐싱, 리소스 클래스 등을 사용하여 매우 복잡한 파이프라인을 효율적으로 실행하도록 구성할 수 있습니다. config.yml 설정키 (version 2.1 기준) version version은 CircleCI의 버젼을 나타냅니다. 2.1에서는 orbs, commands, executors를 추가로 사용할 수 있습니다. version: 2.1 jobs: // ... workflows: // ... orbs orbs는 반복되는 프로세스를 자동화하고 설정속..

Flutter/Widgets

[Flutter] SingleChildScrollView의 중앙에 위젯 배치하기

이번 포스트에서는 SingleChildScrollView의 중앙에 위젯을 배치하는 방법을 알아보겠습니다. 의문점 SingleChildScrollView 내부 위젯에 중앙에 배치하는 방법은 Center 위젯과 같이 일반적인 방법으로는 배치할 수 없습니다. 어찌보면 당연한 해결 방법이지만 여러 위젯을 추가해야 하므로 해결 방법을 정리해놓고자 합니다. 해결 방법 LayoutBuilder( builder: (context, constraints) => RefreshIndicator( onRefresh: _onRefresh, child: SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints( minHeight: constraints.m..

Flutter/Basic

[Flutter/Basic] 화면이동 Navigator - Push, Pop 정리

Navigator Push 1. Navigator.push()로 화면 전환 전달할 데이터가 없는 경우에는 Navigator.push() 메소드를 통해 화면전환을 할 수 있습니다. Navigator.push()에 전환할 페이지를 MaterialPageRoute()에 넣어주면 됩니다. Navigator.push(context, MaterialPageRoute(builder: (context) => FirstScreen())); main.dart import 'package:flutter/material.dart'; import 'package:flutter_widgets/screen/button_above_keyboard.dart'; import 'package:flutter_widgets/screen/fi..

Android/RxJava

[RxJava] RxJava retryWhen으로 예외발생시 일정시간 간격으로 재시도 처리하기(retryWithDelay)

Rxjava를 사용할 때 예외처리 과정에서 retryWhen()을 사용하면 재시도를 구현할 수 있습니다. 이번 포스트에서는 retryWhen 메소드에 대해 정리해보겠습니다. retryWhen의 마블 다이어그램 retryWhen의 마블 다이어그램을 해석 먼저, Observable에서 에러가 발생됩니다. 그러면 retryWhen을 타게 되는데 retryWhen에서 데이터가 발행되면 -> upstream을 재실행합니다. retryWhen에서 에러가 발행되면 -> 최종적으로 error를 발행합니다. Flowable의 retryWhen 구현부 public abstract class Flowable implements Publisher { // ... @CheckReturnValue @NonNull @Backpre..

Android/Kotlin(Java)

[Kotlin] 상속(Inheritance)에서 copy()를 사용하고 싶을 때 data class 활용에 대하여

open class 사용 open class Player(open val name: Name) { // ... open fun copy() = Player(name) } data class GamePlayer( override val name: Name ): Player(name) class CopyTest { @Test fun copyTest() { val players: List = listOf(GamePlayer(Name.from("player1")), OtherPlayer(Name.from("player2"))) players.map { it.copy() } // player copy() } } 문제발생 컬렉션에서 방어적 복사를 해주기 위해 부모클래스의 copy()를 사용하고 싶어서 open 메소..

반응형
seunghwaan
'분류 전체보기' 카테고리의 글 목록 (5 Page)