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

분류 전체보기

Android/Kotlin(Java)

[Kotlin/Java] 얕은복사 vs 깊은복사, Collection의 방어적 복사

[이 글은 NextStep Kotlin TDD, Refactoring, Clean Code 수업 중 공부한 것을 복습하고자 정리한 글입니다.] 얕은 복사란? 주소값 자체를 복사하는 것이다. 복사된 객체의 인스턴스는 원본 객체의 인스턴스와 같은 메모리주소를 참조합니다. -> 따라서, 같은 메모리 주소값을 참조하기 때문에 복사된 객체의 값이 변경되면 원본 객체의 값도 변경됩니다. 깊은 복사란? 새로운 메모리 공간에 객체의 모든 값을 복사하는 것이다. 원본 객체는 그대로 두고, 새로운 메모리공간에 원본 객체의 값들을 모두 복사합니다. -> 따라서, 다른 메모리 주소값을 참조하기 때문에 복사된 객체가 변경되어도 원본 객체는 영향을 받지 않습니다. 얕은복사의 문제점 자바(코틀린)에서는 기본적으로 '='를 사용하여..

DevOps/Linux

[Linux] mv 명령어로 파일/디렉토리 이동하기

이번 포스트에서는 mv 명령어로 파일을 이동시키는 방법을 정리하겠습니다. mv 명령어 mv 명령어를 이용하면 이동 / 시킬 수 있습니다. $ mv [옵션(options)][이동할 파일 혹은 디렉토리(source)] [이동시킬 파일 혹은 디렉토리(destination)] mv 명령어의 옵션 -b -> 이동 위치에 파일이 있을 경우 백업파일을 생성합니다. -f, --force -> 파일이 이미 존재할 경우 묻지 않고 강제로 덮어쓰기 하는 옵션입니다. -i, --interactive -> 파일이 이미 존재할 경우 덮어쓸지 물어보는 옵션입니다. -n, --no-clobber -> 파일이 이미 존재할 경우 덮어쓰지 않는 옵션입니다. -i, -f, -n 옵션 중 둘 이상을 지정하면 마지막 옵션만 지정됩니다. --s..

Android/Kotlin(Java)

[Kotlin] Kotlin 예외처리 - require(), requireNotNull(), check(), checkNotNull()(feat. IllegalArgumentException, IllegalStateException)

Kotlin 예외처리 함수 require(), check() require(), requireNotNull() 함수 require() : 매개변수의 값이 참인지 체크, 거짓이라면 throw IllegalArgumentException requireNotNull() : 매개변수의 값이 null이 아니면 value를 반환, null이면 throw IllegalArgumentException * 일반적으로 IllegalArgumentException은 적절하지 않은 인자를 전달했을 때 발생시키는 Exception 함수 원형 // 참이 아니라면 throw IllegalArgumentException("Failed requirement.") public inline fun require(value: Boolean..

Android/TDD

[Kotlin/TDD] 프로젝트에 ktlint를 적용하기

NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code에서 배운 ktlint 설정 법을 정리해보고자 합니다. 린트 검사로 코드 개선 테스트를 빌드하여 앱이 기능적 요구사항을 충족하는지 확인하는 것 외에도 린트를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것이 중요하다. ktlint를 프로젝트에 적용하기 Kotlin Coding Convention과 Android Kotlin Style Guide를 기본으로 따르고 있다. Gradle Groovy 설정 (build.gradle) buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { class..

Flutter/Widgets

[Flutter/Widgets] 키보드 위에 떠있는 버튼 만들기(ButtonAboveKeyboard) 만들기(feat. MediaQuery.of(context).viewInsets)

이번 포스트는 플러터에서 키보드 위에 떠있는 버튼 만드는 방법을 정리하겠습니다. 위와 같은 화면에서 TextField를 클릭해서 Keyboard가 올라가면 아래와 같은 화면과 에러를 만나실 수 있습니다. ======== Exception caught by rendering library ===================================================== The following assertion was thrown during layout: A RenderFlex overflowed by 276 pixels on the bottom. 에러가 발생한 이유는 resizeToAvoidBottomInset 때문입니다. resizeToAvoidBottomInset는 Scaffold의 ..

DevOps/Linux

[Linux] 명령어 cd와 파일경로(절대경로, 상대경로)

cd cd는 change directory의 약자로, 디렉토리로 이동하는 명령어입니다. cd / /는 루트(root) 디렉토리를 의미합니다. 또한, 절대경로를 사용할 때 사용합니다. 그러므로, cd / 를 입력할 경우 root 디렉토리로 이동을 합니다. ex. 현재 workspace가 /Users/seunghwan/Documents 일 때, workspace의 위치를 /Users/seunghwan/Documents/Android/Project로 이동시키고 싶다면 cd Android/Project를 사용하면 되고, Android/Project는 현재디렉토리 밑에있는 Android 밑에있는 Proejct로 이동시키라는 의미입니다. 하지만 위의 방법은 현재디렉토리가 Documents라는 보장이 있을 경우에만 ..

DevOps/CI CD

[CI/CD] CircleCI - Private Repository에 접근하는 방법

안녕하세요. 이번에는 CircleCI에서 Private Repository에 접근하는 방법을 정리하겠습니다. 에러 내용 Submodule 'SHLibrary' (https://github.com/abcd/efgh.git) registered for path 'efgh' Cloning into '/home/circleci/project/efgh'... ERROR: Repository not found. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. fatal: clone of 'https://github.com/aaaa/efgh.g..

Android/Basic

[Android] Service 정리

1. Service 란? Service는 안드로이드 4대 컴포넌트 중 하나이며 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행됩니다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있습니다. 2. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 나타내줍니다. 대신, 시스템에 의해서 강제종료 당하지 않습니다. 백그라운드 서비스: 사용자에게 보이지 않고 작업을 수행합니다. 대신, 시스템에서 리소스가 부족할 경우 강제종료 당할 수 있습니다. (API ..

Android/UI & Animation

[Android] CustomView 알아보기

CustomView를 만드는 이유 Android에는 UI를 구성하는 데 사용할 수 있는 미리 빌드된 기본 클래스인 View 및 ViewGroup과 다양한 서브클래스(위젯 및 레이아웃)가 있습니다. 어플리케이션의 UI 요구사항에 요청하는 위젯의 기능과 UI가 안드로이드에서 기본으로 제공하는 위젯이 제공을 한다면 위젯을 골라서 사용하면 되겠지만, 기본으로 제공하는 위젯이 요구사항에 맞지 않다면 CustomView를 직접 만들어야 합니다. CustomView의 장점으로는 매번 레이아웃으로 일일히 만드는 것 보다 CustomView를 만드는 것이 앱의 생산성에 도움이 됩니다. CustomView를 만들기 위해서는 View 및 ViewGroup 혹은 안드로이드에서 제공하는 위젯을 상속받고 메소드와 레이아웃을 상속..

DevOps/CI CD

[CI/CD] CI/CD란? - 지속적 통합(Continuous Integration)/지속적 배포(Continuous Deployment) 기본개념

매번 개발자가 코드를 수정하고 빌드와 테스트를 하고 배포까지 한다면 상당히 많은 시간이 소요됩니다. 하지만 git에 코드를 올리는 것만으로도 누군가가 빌드와 테스트, 배포까지 해준다면, 쓸데없는 시간을 단축시키고 개발에 더 많은 시간을 투자할 수 있을겁니다. 이번에는 CI, CD의 개념에 대해 정리하겠습니다. CI란? CI는 간단히 요약하자면 빌드/테스트 자동화 과정 과정입니다. CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌..

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