목록전체 글 (122)
기록
https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 방식 - lottos 리스트의 요소가 win_nums 리스트 요소 안에 몇개 있는가? - 0의 경우 어떻게 처리할 것인가? class Solution { fun solution(lottos: IntArray, win_nums: IntArray): IntArray { var answer = intArrayOf(0, 0) for(l in lottos) { if(win_nums.contain..
import kotlinx.coroutines.launch import kotlinx.coroutines.* fun main() { val api = NamesApi() val namesJson = api.getNames(); println("----- ORIGINAL JSON NAMES:") println(api.getNames()); val names = nameFromJson(namesJson); println(); println("----- CONVERTED NAMES:") println(names); } fun nameFromJson(namesJson: List): List { return namesJson.filter { nameJson -> nameJson.lastName[0] == 'K' ..
1. 생성자 문법 class SongListAdapter : ListAdapter(SongDiffCallback()) { ... } class SongDiffCallback : DiffUtil.ItemCallback() { ... } SongListAdapter 클래스 안에 SongDiffCallback이라는 클래스가 ListAdapter 클래스의 생성자로 들어갔다. 그런데 SongListAdapter 코드 블럭 안에 SongDiffCallback가 쓰이지 않았다. 왜 들어간 것인가? ListAdapter 클래스 안에서 쓰였기 때문! 이해를 돕는 예제 코드를 첨부한다. fun main() { //val korean = Human(Korean()) val korean = KoreanPerson() kore..
사용자가 Android Trivia 앱 내에서 게임 결과를 공유하려면 먼저 코드가 한 조각에서 다른 조각으로 매개 변수를 전달해야 합니다. 이러한 트랜잭션의 버그를 방지하고 유형 안전을 위해 SafeArgs라는 Gradle 플러그인을 사용합니다. 플러그인이 NavDirection 클래스를 생성하고 이러한 클래스를 코드에 추가합니다. In later tasks in this codelab, you use the generated NavDirection classes to pass arguments between fragments. SafeArgs 플러그인이 필요한 이유 종종 앱은 조각들 사이에 데이터를 전달해야 합니다. 한 Fragment에서 다른 Fragment로 데이터를 전달하는 한 가지 방법은 번들 ..
안드로이드는 원하는 View를 찾을 때 까지 런타임에 Root에서 시작하여 View 계층을 탐색한다. 때문에 앱의 View 계층 구조가 복잡한 경우, findViewById()는 비용이 많이 들고 앱의 속도를 느려지게 한다. 다행히 이를 개선하기 위한 방법이 있고, 이것이 데이터 바인딩이다. View에서 데이터를 보이기 위해 string resources를 사용하고 Activity/Fragment에 데이터를 선언한다. 데이터 바인딩은 View가 데이터에 대해 미리 알고있게 하여 이를 더욱 효율적이게 해준다. 데이터 바인딩 기술은 전체 앱에서 사용할 수 있는 각 View에 대한 참조가 포함된 바인딩 개체를 만드는 것이다. 앱에 대한 바인딩 개체를 만든 후에는 View 계층을 이동하거나 데이터를 탐색할 필요..
https://cishome.tistory.com/226
임시 브랜치를 만들어 합치기 git checkout -b 임시브랜치 (새로운)임시 브랜치 만들어 체크아웃 git checkout 정착할 브랜치 정착할 브랜치(보통 master)로 이동 git merge 임시브랜치 정착할 브랜치에 임시브랜치 머지 git branch -d 임시브랜치 필요없다면 임시브랜치 삭제 기존 브랜치에 커밋 붙이기 git reflog로 둥둥 떠다니는 커밋의 id를 확인 git checkout 기존브랜치 기존 브랜치로 이동 git cherry-pick 커밋id 떠다니던 커밋 기존브랜치에 붙이기 참고 : https://www.devhak.com/blog/git-detached-head
Android Studiod의 레이아웃 편집기를 사용하여 다양한 종류의 사용 및 리소스와 이를 화면에 정렬하는 방법을 알아보자. View Groups & View Hierarchy Android에서 화면을 구성하는 모든 시각적 요소들은 모두 View 클래스의 자식이다. 레이아웃을 구성하는 View는 View의 계층구조로 구성된다. 기본 작업이 다른 View를 포함하는 View를 ViewGroups라고 한다. ViewGroups : LinearLayout, ConstraintLayout, ScrollView ... View : EditText ... 때때로 각 View의 크기, 위치, View가 겹치는 방법 등을 고려하여 모든 View가 어디로 이동하는지를 여러번 계산한다. 일부 앱의 경우 이 View 계..
'비동기'로 여러개의 루틴을 동시에 처리하는 법을 알아보자. '여러 개의 루틴'을 동시에 실행하여 결과를 내고싶다면 어떻게 해야할까? 비동기 처리를 지원하는 코루틴을 사용하게 된다. 코루틴은 메인이 되는 루틴과 별도로 진행이 가능한 루틴으로, 개발자가 루틴의 실행과 종료를 마음대로 제어할 수 있는 단위이다. 코루틴을 사용할때는 kotlin extention의 coroutines 패키지를 모두 import 해야 한다. import kotlinx.coroutines.* 코루틴은 제어범위 및 실행범위를 지정할 수 있다. 이를 코루틴의 Scope 라고 한다. 기본적으로 GlobalScope와 CoroutineScope를 지원한다. GlobalScope 프로그램의 어디서나 제어, 동작이 가능한 코루틴의 기본 범위..
비트연산 하는 법을 알아보자. 비트연산은 정수형 변수를 2진법인 비트단위로 연산할 수 있는 기능이다. 실무에서 비트연산은 거의 계산에는 사용하지 않는다. (2진법을 이용한 연산 최적화가 필요하다면 컴파일러의 기능을 사용하는 경우가 대부분이다.) 정수형의 값을 비트단위로 나누어 데이터를 좀 더 작은 단위로 담아 경제성을 높이기 위한 용도로 사용된다. 변수 하나에 여러개의 값을 담아 사용할 수 있는 것이다. 비트연산을 사용하는 부하도 무시할 수 없으므로 주로 플래그 값*을 처리하거나 네트워크 등에서 프로토콜의 데이터 양을 줄이기 위해 자주 사용된다. (* 여러개의 상태값을 0과 1로 담는 방법) 코틀린은 아직까지 모든 정수형이 부호를 포함하므로 최상위 비트를 양수, 음수를 표시하는 부호 비트로 사용하기에 이..