분류 전체보기
-
[코틀린을 다루는 기술] Kotlin에서의 재귀 함수 사용Kotlin 2020. 8. 7. 14:31
이 글은 '길벗'사의 '코틀린을 다루는 기술'을 보고 작성한 글입니다. 더 자세한 내용은 해당 책에서 참고하시면 좋을 것 같습니다. 재귀와 공재귀, 꼬리 호출 만약, 팩토리얼 함수를 구현하다고 해볼까요? fun factorial(n: Int): Long = if(n == 1) n.toLong() else n * factorial(n-1) fun main() { val num = 10 val result: Long = factorial(num) println("Factorial: $num -> $result") } 일반적으로 알고 있는 재귀를 통해 팩토리얼을 구현하면 이런 형태가 될 것입니다. 하지만 현재 코드에서 팩토리얼은 10번 호출되고 이 함수의 문맥을 유지하기 위해 프로그램은 팩토리얼 함수가 가진 ..
-
[코틀린을 다루는 기술] 코틀린 함수 정리Kotlin 2020. 7. 31. 15:13
이 글은 길벗 사의 '코틀린을 다루는 기술' 을 읽으면서 정리한 포스팅입니다. 더 자세한 내용은 '코틀린을 다루는 기술' 책에서 찾아보시면 좋을 것 같습니다. 서론 디프만 8기에서 코틀린 스터디를 진행중입니다. 이번 스터디에서는 '코틀린을 다루는 기술'이라는 책을 토대로 코틀린 사용법과 활용도를 높이고자 하는 목표를 가지고 있습니다. 특히 단순히 항상 쓰던 문법만이 아닌, 더욱 '코틀린스럽게', '코틀린답게' 코딩을 하도록 실력을 키우는 것이 중요하다고 생각합니다. 순수 함수 이 책의 초반에서 가장 강조하는 부분은 안전한 프로그래밍을 하는 것입니다. 안전한 프로그래밍을 하기 위한 여러 방법들이 있는데, 3장 함수에서는 계산 시 순수 함수만 사용하는 것과 계산 결과를 외부 세계에서 사용하려면 순수 효과만 ..
-
[안드로이드 9.0 프로토콜 접속 변경사항] CLEARTEXT communication to XXXX not permitted by network security policyAndroid 2020. 7. 24. 00:40
개요 얼마전 국방부 공모전을 나가기 위해 제작한 군인 커뮤니티 플랫폼 서비스인 군머니티를 제작하던 중 예기치 못한 오류가 발생했습니다. 테스트 기기에서는 정상적으로 실행되던 앱이 다른 특정 유저들에게선 버튼 클릭이나 전체적인 앱 실행이 안되는 현상이 발생하는 것이었죠. 급하게 버그를 수정하기 위해 원인을 찾고 있었으나, 저의 테스트 기기에선 방법을 찾을 수 없었습니다. 알고보니, 제 테스트 기기들은 OS 9.0보다 아래였기 때문에 에러가 생기지 않았던 것인데요. 애뮬레이터에서 OS 9.0을 가진 기기를 생성하고 실행했을 때 다음과 같은 에러 문구를 발견할 수 있었습니다. CLEARTEXT communication to XXXX not permitted by network security policy 처음..
-
개인정보처리방침 - 군머니티일상, 생활 기록 2020. 7. 16. 10:11
('https://itandhumanities.tistory.com/'이하 'IT와 인문학')은(는) 개인정보보호법에 따라 이용자의 개인정보 보호 및 권익을 보호하고 개인정보와 관련한 이용자의 고충을 원활하게 처리할 수 있도록 다음과 같은 처리방침을 두고 있습니다. ('IT와 인문학') 은(는) 회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다. ○ 본 방침은부터 2020년 1월 1일부터 시행됩니다. 1. 개인정보의 처리 목적 ('https://itandhumanities.tistory.com/'이하 'IT와 인문학')은(는) 개인정보를 다음의 목적을 위해 처리합니다. 처리한 개인정보는 다음의 목적이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 ..
-
SharedPreference 이야기Android 2020. 6. 19. 17:15
이번 팀플레이 로그인 화면 중 자동 로그인 기능을 구현할 일이 있었습니다. 저희 팀플레이에서 자동 로그인은 AccessToken과 RefreshToken을 이용해서 구현합니다. 여기서 말하는 토큰들은 OAuth 보안체계에서 언급되는 계정과 관련된 중요한 데이터라고 생각하시면 되는데요, 보통 첫 로그인이나 회원가입을 할 때 발급이 됩니다. 하지만 발급 후에 앱을 종료하면 토큰은 어디로 가버리는 걸까요? 따로 저장을 하지 않는다면 당연히 로그인을 다시 해서 받아와야 할 것입니다. 이러한 토큰을 저장하기 위해 팀플레이는 SharedPreference를 사용합니다. 왜 SharedPreference를 사용할까요? 안드로이드 앱 내에서 데이터를 저장하는 방법은 크게 4가지입니다. 내부 파일 저장소, 외부 파일 저..
-
EditText 자동 포커스 기능 막기Android 2020. 5. 25. 12:12
저번과 동일하게 대학생 앱 개발 동아리 YAPP 안드로이드 2팀에서 제작 중인 팀플레이 앱 제작 과정 중 생긴 자잘한 트러블 슈팅 해결 과정에 대해서 정리하려고 합니다. 화면 넘어갔을 때 바로 커서가 On이 되는 EditText 자동 포커스 문제 해결 일단 자동 포커스가 적용되는 화면을 보겠습니다. 화면은 스포츠 경기 신청 리스트를 보여주는 MatchList 화면에서 해당 리스트를 클릭했을 때, 디테일 뷰로 넘어가는 화면을 보여주는데요 아이템을 클릭해서 새로운 엑티비티로 이동하면 바로 EditText가 포커스 되면서 화면이 아래쪽으로 이동하는 것을 알 수 있습니다. 키보드가 바로 올라오고 아래에 있는 화면부터 봐야 하는 것이 당장 봐도 좋아 보이지 않죠. 이를 해결하는 과정은 생각보다 간단했습니다. 바로..
-
프래그먼트와 백스택, 그리고 엑티비티Android 2020. 5. 20. 01:01
안드로이드는 스택과 같다. 실행하면 화면들이 스택과 같이 점차 점차 쌓이는 것이다. 그러니깐 자료구조의 스택처럼 엑티비티가 차례대로 아래에서부터 쌓인다는 것인데 이러한 형태를 백스택이라고도 한다. 그리고 이런 백스택에 쌓이는 엑티비티들은 유저와 상호작용하는 엑티비티들을 모아놓는 태스크에 속한다 정말 일부의 어플리케이션을 제외하면 엑티비티를 하나만 사용할리는 없다. 하나의 어플리케이션에는 다양한 엑티비티와 프래그먼트들이 공존한다. 실제 사용자와 화면에서 상호작용하는 엑티비티나 프래그먼트는 하나일 수 밖에 없다. 위에서 말한 상호작용과 다른 것은 스택의 가장 위에 있는 엑티비티나 프래그먼트만이 사용자의 입력과 이벤트를 입력받을 수 있다. 그래서 어플리케이션 사용 중에는 엑티비티를 실행했다가도 뒤로가기 버튼을..