본문 바로가기

분류 전체보기274

Pangram인지 판단하기 Pangram인지 판단하기 Pangram 이란? 팬그램 (그리스어: παν γράμμα 판 그람마[*], '모든 글자'라는 뜻)은 알파벳의 모든 글자들을 사용해서 만든 문장을 뜻한다 - https://ko.wikipedia.org/wiki/%ED%8C%AC%EA%B7%B8%EB%9E%A8 kotlin test 코드를 통해서 Pangram인지 아닌지 판단해보자! testcode@Test fun emptySentence() { assertFalse(Pangram.isPangram("")) } @Test fun perfectLowercasePangram() { assertTrue(Pangram.isPangram("abcdefghijklmnopqrstuvwxyz")) } @Test fun lowercasePan.. 2019. 2. 23.
데이터바인딩 - 리스너바인딩하기 데이터바인딩 - 리스너바인딩하기버튼을 클릭했을때나 리스너들은 모두 뷰모델에서 처리할 수 있습니다. onClick 처럼 이름이 정해져 있는 것들은 다르게 쓰면 안되고 그대로 써야합니다.ex ) android:onClick="@{(v)->viewModel.clickEvent()}" 다른 컴포넌트 들은 setOn~Listener에서 set을 빼고 O를 소문자 o로 바꿔쓰면 작동합니다.ex) setOnNavigationSelectListener - >app:NavigationItemSelectedListener="@{viewModel::NavigationItemSelectedListener}"ex)onRangeSelectListener-> app:onRangeSelectedListener="@{calendarD.. 2019. 2. 21.
안드로이드 디버그 - 중단점 걸기 중단점 걸기우선 확인하고 싶은 라인에 중단점을 걸어 앱 실행을 일시 중지합니다. 중단점을 거는 방법은 라인 옆의 빈공간을 클릭 하거나 단축키 (Command+F8 / Control+F8)를 클릭합니다. 아래 이미지의 라인 옆의 빨간 점이 중단점입니다. 앱이 실행 중일 때 오른쪽 상단의 Attach debugger to Android process를 클릭해 디버깅 모드를 실행할 수 있습니다. 앱이 실행 중이지 않을 때 Debug ‘app’ 버튼 또는 단축키(^D)를 클릭해 디버깅 모드를 실행합니다. 앱이 실행되다가 단점을 만나면 아래와 같이 앱은 일시중지될 겁니다. 이때 디버깅 탭의 도구들을 사용해서 앱의 상태를 확인할 수 있습니다. 만약 Variables 영역이 보이지 않으면, 1번 영역에서 Restor.. 2019. 2. 13.
GIt 명령어 배우기 -3 cherry-pick,인터렉티브 리베이스 GIt 명령어 배우기 -3 cherry-pick,인터렉티브 리베이스 cherry-pick 체리픽은 이 일은 여기에 저일은 저기에 두고싶어 할때 사용할 수 있습니다. 현재 위치(HEAD) 아래에 있는 일련의 커밋들에 대한 복사본을 순서적으로 만듭니다. git cherry-pick 인터렉티브 리베이스체리-픽은 원하는 커밋이 무엇인지 (각각의 해시값)을 알떄 아주 유용합니다하지만 원하는 커밋을 모르는상황에는 어떻할까요 ?이럴때 인터렉티브 리베이스를 사용합니다일련의 커밋들을 검토할 수 있는 가장 좋은 방법입니다. git rebase -i HEAD~4-> head 부터 위로 4개만큼을 인터렉티브 리베이스 창으로 엽니다. -i 옵션을 추가하면 리베이스의 목적지가 되는곳 아래에 복사될 커밋들을 보여주는 텍스트편집기(.. 2019. 2. 11.
GIt 명령어 배우기 -2 커밋트리[Commit tree]에서 이동하는 방법( branch -f , reset, revert , ^, ~) Git 커밋트리(Commit tree)에서 이동하는 방법 HEAD란 ?HEAD는 현재 체크아웃 된 커밋을 가리킵니다. 즉 현재 작업중인 커밋입니다. HEAD는 항상 작업트리의 가장 최근 커밋을 가리킵니다.작업트리의 변화를 주는 git 명령어들은 대부분 HEAD를 변경하는것으로 시작합니다. 일반적으로 HEAD는 브랜치의 이름을 가리키고 있습니다 .커밋을 하게되면 브랜치의 상태가 바뀌고 이 변경은 HEAD를 통해서 확인이 가능합니다 HEAD분리하기HEAD를 분리한다는 것은 HEAD를 브랜치 대신 커밋에 붙히는 것을 의미합니다. HEAD -> master ->C1 이였다면 git checkout C1 HEAD ->C1 명령후에는 이처럼됩니다. (master는 브랜치고 C1은 커밋입니다 ) 상대참조상대참조로 기.. 2019. 2. 7.
안드로이드 타이틀바와, 스테이터스바 없애기( FULL SCREEN) ,WindowManager 안드로이드 스테이터스바 없애기( FULL SCREEN) 안드로이드앱에서는 아래처럼 상태바와 타이틀바가 있습니다 . 상태바는 최상단에 위치하며, 상태를 나타내는 바입니다.푸시알림, 소리, 와이파이, 시간등등 안드로이드 폰 자체내의 App상태는 나타냅니다. 타이틀바는 자신이 만든 앱의 제목을 나타내는 바입니다.색상도 자유롭게 선택 가능하고 버튼도 넣을수 있습니다 . 이러한 타이틀바와 스테이터스바를 없앨려면 어떻게 해야할까요 ? 1) 타이틀바 없애기 styles.xml @color/colorPrimary @color/colorDarkBlue @color/colorAccent false true \AppTheme은 기본 스타일입니다 .여기에 windowActionBar false와 windowNoTitle tr.. 2019. 2. 4.
GIt README 작성하기 GIt README.md 작성하기깃 저장소에 리포지토리를 추가하면 README.md 파일이 생성됩니다.README.md 파일에는 프로그램에 대한 설명 및 개발과정 등을 작성하여 어떤 프로젝트인지 한눈에 알 수 있습니다. 마크다운 언어README.md 파일의 확장자 md, 즉 markdown으로된 파일입니다.마크다운 언어 문법 0. 다음줄로 넘기기1. 글자크기2. 강조하기3. 기울임체4. 취소선5. 코드넣기6. 인용7. URL 링크 git 문서에서 확인하기https://github.com/sejong-interface/Interface_Manual/wiki/Git-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0%233-README.md-%ED%8C%8C%EC%9D%BC-%EC%9E%91%.. 2019. 2. 1.
안드로이드 multidex 문제 해결하기 안드로이드 multidex 문제 해결하기 안드로이드에서 앱 개발을 하다 규모가 커지게 되면 코드도 많아지고 라이브러리도 많아지게 됩니다.이럴때 빌드시 오류가 발생하게 됩니다. trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option. 이 오류는 65536(64K)개 이상의 함수(Method)를 초과할 경우에 발생 합니다. 안드로이드에서는 JAVA의 class 를 사용하지 않고 class -> dex로 변환하여 사용하고 있습니다. 즉, java에서는 MainActivity.java를 컴파일 하면 MainActivity.class 생성되는데 이를 다시 MainActivi.. 2019. 2. 1.
GIt 명령어 배우기 -1 (commit, branch, checkout, merge, rebase) GIt 명령어 배우기git 명령어 종류commitbranchcheckoutcherry-pickresetrevertrebasemerge commitcommit은 git 저장소에 내 디렉터리의 모든 파일에 대한 스냅샷을 기록하는 것입니다.git은 가능한 커밋을 가볍게 유지하고자 하기 때문에, 커밋할 때마다 디렉토리 전체를 복사하진 않습니다. 각 커밋은 저장소의 이전 버전과 다음 버전의 변경내역("delta"라고함)을 저장합니다.그래서 대부분의 커밋이 그 커밋 위의 부모 커밋을 가리킵니다 저장소를 복제(clone)하려면 모든 변경분(delta)를 풀어내야 하는데, 이 때문에 명령행 결과로 아래 문구를 볼수 있습니다 .resolving deltas commit은 매우 가볍고 커밋 사이의 전환도 매우 빠릅니다! .. 2019. 1. 31.
안드로이드 앱런처 만들기 안드로이드 앱런처 만들기안드로이드 런처(Launcher)란 안드로이드 OS환경에서 홈 화면의 인터페이스를 관리하는 하나의 앱이라고 정의할 수 있습니다. 앱런처를 만드는방법은 간단합니다실행되는 처음 액티비티에android:launcMode="singleTask"intent-filter에내용을 추가해주면 작성한 앱이 앱런처로 작동하게 됩니다. 예) 2019. 1. 29.
gitignore 적용하기 .gitignore이란?Project에 원하지 않는 Backup File이나 Log File , 혹은 컴파일 된 파일들을 Git에서 제외시킬수 있는 설정 File이다.1. .gitignore Android Studio 용파일 만들기항상 최상위 Directory에 존재해야합니다# built application files*.apk*.ap_ # files for the dex VM*.dex # Java class files*.class # built native files (uncomment if you build your own)# *.o# *.so # generated filesbin/gen/ # Ignore gradle files.gradle/build/ # Local configuration file.. 2019. 1. 29.
gitlab 기존 프로젝트 올리기 Bash에서 gitlab에 기존 프로젝트 올리기 1. 프로젝트가 있는 디렉터리로 이동하기 2. 초기설정//아이디 닉네임 설정$ git config --global user.name "gitlab닉네임"$ git config --global user.email "gitlab이메일" 3. init하기 $ git init 4. remote 생성git remote add origin https://gitlab.com/beomseok95/soccerting.git https:// 부분은 gitlab에서 HTTP를 복사하여 넣어줍니다origin이란 이름의 remote를 생성합니다 5. 현재 디렉터리 add, commit//현재 디렉터리 모두 내용 모두 add하기$ git add .//commit $ git comm.. 2019. 1. 29.
안드로이드 MVVM 패턴 안드로이드 MVVM 패턴 MVVM의 기본 구조MVVM의 기본 구조를 그림으로 표현한 것입니다. View는 ViewModel에게 클릭 이벤트, 필요한 데이터 요청등을 명시적으로 하고, viewModel이 notify 할때까지 기다리게 됩니다. 그와 동일하게 ViewModle은 통해 데이터를 요청하고 기다리게 됩니다. 각각의 컴포넌트 간 레퍼런스를 갖지 않고 단방향(View -> ViewModel -> Model)의 디펜던시만을 갖게 됩니다. ViewModelView와 Model 사이의 매개체 역할을 합니다. 즉 Model 에서 제공받은 데이터를 UI에서 필요한 정보로 가공한 뒤 View가 가져갈 수 있게 데이터 변경에 대한 "이벤트"를 보내게 됩니다 ViewModel과 View는 MVP패턴과 다르게 Man.. 2019. 1. 26.
Kotlin List, Map 출처 - https://brunch.co.kr/@mystoryg/28 List & Map 이번에는 대표적인 콜렉션(Collection)인 list와 키와 값을 가지는 저장 클래스인 map를 살펴보겠습니다. 코틀린에서는 Java를 포함한 다른 언어들과 다르게 list와 map을 읽기 전용(read only) 객체와 수정 가능한(mutable) 객체 두 가지로 형태로 나누어 제공합니다. List 리스트를 만들 때 사용하는 함수는 listOf 입니다. 이렇게 생성 시 읽기 전용 모드가 됩니다.읽기 모드로 생성 시 어차피 변경이 불가능하기 때문에 val로 선언해주는 것이 좋을 것 같습니다. fun main(args: Array) { val name = listOf("Kim", "Hong", "Park") for.. 2019. 1. 23.
Kotlin enum과 when Kotlin enum과 when enumenum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다.enum은 아래와 같이 사용합니다. enum class Color{ RED,ORANGE,YELLOW,GREEN,BLUE,INDIGO} 위는 기본적인 형태이고, 흔히 자바에서 사용할땐 enum값 내부에 멤버 변수를 설정하기도 합니다.enum class Color{ RED(255,0,0),ORANGE(255,165,0),YELLOW(255,255,0),GREEN(0,255,0),BLUE(0,0,255),INDIGO(75,0,130) fun rgb()=(r*256+g) *256+b} fun main(args:Array){ println(Color.BLUE... 2019. 1. 23.
Kotlin 기본 클래스(생성자,오버로딩,상속,오버라이딩,open,abstract,companion object, sealed class Kotlin 기본 클래스Kotlin의 기본 클래스를 정리해 보겠습니다 생성자 class ClassName(name:String){} 생성자의 class ClassName constructor(name: String) { // constructor 생략가능 =constructor를 생략하여 간단하게 class ClassName(name:String) 초기화//init 블럭에서의 초기화class ClassName(name: String) { init { println("Initialized with value ${name}") }} //init 블럭을 사용하지 않고, 변수에 바로 넘겨 class ClassName(name: String) { val upperName = name.toUpperCase()} i.. 2019. 1. 23.
Retrofit 사용하기 출처 - Retrofit 한글문서 http://devflow.github.io/retrofit-kr/ Retrofit은 HTTP API를 자바 인터페이스 형태로 사용할 수 있습니다.public interface GitHubService { @GET("/users/{user}/repos") Call listRepos(@Path("user") String user); }Retrofit 클래스로 GitHubService 인터페이스를 구현하여 생성합니다.Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com") .build(); GitHubService service = retrofit.create(GitHubService.clas.. 2019. 1. 23.
Gson 라이브러리 사용하기 Gson 라이브러리 사용하기Gson은 java Object를 JSON 표현으로 변환하는데 사용할 수 있는 java 라이브러리입니다. JSON 문자열을 java객체로 변환하는데도 사용할 수 있습니다. 주요기능기본형 변환 지원클래스 변환 지원제네릭 지원, List , Map 등 콜렉션을 변환 할 때 유용멀티스레드 지원, Gson 내부 상태를 갖지않아 Thrad-safe이다빠르고 가볍다. Serialize보다 좋음 생성하기//JavaGson gson=new Gson()//Kotlinvar gson=Gson() 형변환 (Java->Json)gson.toJson(short, int, long, float, double, String, Object) 형변환 (Json->java)gson.fromJson(json문자.. 2019. 1. 22.
개발을 빠르게하는 안드로이드 단축키 개발을 빠르게하는 안드로이드 단축키 1)Find Action (검색)[CTRL]+[SHIFT]+[A]안드로이드 스튜디오의 거의 모든 기능을 검색할 수 있습니다. 2)자동완성[CTRL]+[SPACE]문자열을 바탕으로 예측하는 기본적인 자동완성 기능입력한 문자열을 보고 자동완성 후보를 예측해 보여줍니다. 3)현재 위치 자료형을 바탕으로 자동완성[CTRL]+[SHIFT]+[SPACE]자료형을 이용한 자동완성 기능.인수를 입력할때 자동완성을 통해 인수 자동완성 4) 오류수정 Quick Fix[Alt]+[Enter] 5)현재 구문 완성[CTRL]+[SHIFT]+[ENTER]현재 구문을 완성할 수 있습니다. 코드를 정렬하면서 세미콜론이나 {}를 입력해주고 다음에 입력해야 하는 곳까지 이동합니다. 6) 매개변수 정보.. 2019. 1. 20.
Firebase - 푸시알림 보내기 (2) 앱 실행중 알림 받기 Firebase - 푸시알림 보내기 (2)앱을 실행중일때 푸시알람을 받는 방법에대해서 알아보겠습니다. 푸시 알림을 보내기 위해서는 토큰이 있어야 합니다. 또한 안드로이드 푸시를 사용하기 위해서는 라이브러리가 있어야 합니다.안드로이드 라이브러리를 build.gradle(module)의 dependencies에 추가합니다.12 //firebase 푸시알람 라이브러리 implementation 'com.google.firebase:firebase-messaging:17.3.4'cs 그리고 푸시아이콘을 drawable에 등록해줍니다(ic_push로 등록)그리고 manifest에 아래 내용을 추가합니다. Manifest 설정 = Build.VERSION_CODES.O) { val channel = Notifica.. 2019. 1. 15.
Firebase - 푸시알림 보내기 (1) 콘솔로 푸시알림보내기,백그라운드 푸시알림 Firebase - 푸시알림 보내기푸시 알림을 보내기 위해서는 토큰이 있어야 합니다. 또한 안드로이드 푸시를 사용하기 위해서는 라이브러리가 있어야 합니다.안드로이드 라이브러리를 build.gradle(module)의 dependencies에 추가합니다. //firebase 푸시알람 라이브러리 implementation 'com.google.firebase:firebase-messaging:17.3.4' 그리고 푸시아이콘을 drawable에 등록해줍니다(ic_push로 등록)그리고 manifest에 아래 내용을 추가합니다. pushToken = instanceIdResult.token map["pushtoken"] = pushToken!! FirebaseFirestore.getInstance().colle.. 2019. 1. 15.
Firebase 프로젝트 생성 및 연동하기 Firebase 프로젝트 생성 및 연동하기 Firebase의 인증(Authentication) 연동하기 [Tools]->[Firebase]를 클릭해줍니다 우선 로그인 부분을 구현하기위해 Authentication의Email and Password authentication 클릭 Connect to Firebase를 클릭하여 Firebase와 안드로이드 프로젝트를 연결합니다. 구글 계정을 입력해주고 안드로이드 스튜디오(IDE)에게 구글 아이디 권한을 주게되면 안드로이드 스튜디오는 Firebase에 접근할 수 있게됩니다. 안드로이드 스튜디오와 Firebase 연동완료(Success) Firebase Project를 생성하면 Firebase console이 만들어지게 되니다. 안드로이드 스튜디오의 Fireba.. 2019. 1. 11.
Firebase - FirebaseStorage Firebase - FirebaseStorageFirebaseStorage는 일종의 문서, 사진, 파일, 동영상을 저장하는 저장소라고 생각하면 됩니다. 과거 FirebaseStorage가 없었을 때에는 직접 리눅스 서버에 vsFTPd를 설치해서 파일서버를 만들어주거나 아니면 아마존 s3나 Azure의 block을 사서 써야 했습니다. 금액을 떠나서 과정이 복잡하고 까다로워서 따로 서버 개발자가 아니면 구축하기가 힘들었습니다 . 하지만 FirebaseStorage라이브러리를 설치하여 이용하면 손쉽게 FTP 서버를 구축할 수있습니다. Firebase 콘솔에 내앱 추가하기, 프로젝트에 라이브러리 추가하기먼저 https://console.firebase.google.com/ Firebase 콘솔창에 접속해 Pr.. 2019. 1. 10.
Firebase -데이터베이스(4) update,delete Firebase - 데이터베이스 수정하기(Update),삭제하기(delete) 데이터베이스 수정하기(Update) map을 사용한 Update 형식collection(Collection 이름).document(Document 이름).update(입력할 데이터) .addOnCompletelistner{ task -> } Collection의 소괄호 안에는 Collection 이름을 넣어주고, document()안에는 Document 이름을 넣어줍니다. 그리고 수정할 데이터를 MutableMap으로 세팅해주면 데이터베이스 수정하기가 작동하게 됩니다. 그리고 정상적으로 값이 수정되었는지 확인하기 위해서는 addOnCompleteListener를 이용합니다. 물론 이 부분은 생략 가능한 부분입니다. 사용 예)p.. 2019. 1. 9.