분류 전체보기151 2022-10-10 클라이언트 vs 서버 오늘 집터뷰를 카카오 로그인을 개발하기 위해 준비를 하려 했지만 또 서버와 의견대립이 발생했다. 아래의 사진을 보자 위의 사진은 우리 카카오 로그인 을 하기위해 내가 정리해 놓은 홈터뷰 로그인 방식을 flowLogic을 도식화하였다. 의견 대립 내가 들었던 서버의 요구사항은 아래 사진이다. 서버가 요구한 요구사항은 LoginActivity에서 카카오 로그인을 할때 카카오 token을 넘겨주고 JWT token을 받는 행위와 해당 유저가 가입되어있는 유저인지 아닌지 판별하는 로직을 나누는 형태이다. 나는 이 로직에서 왜 두가지를 나누어서 통신을 두번하는지에 대해 이해가 되지 않는다.(뭐 로직은 한번에 하나의 기능만 하는것이 좋다고 하지만 재사용을 하지만 않는다면 굳이 나눌필요가 있을까?) 다음으로 내가 생.. 2022. 10. 10. 안드로이드 최신버젼 오류 잡는법 나는 요 며칠 돌핀으로 업데이트하고 xml이 뜨진 않는 현상이나 Logcat이 이상하게 뜨는 현상을 직면하고 말았다.... 이래서 진짜.........함부러 업데이트 하면 안되는데.....안드로이드는 자꾸 최신버젼을 업데이트 시키게 한다...!!!^^ 그래서 버젼을 내리고 싶어도 바로 직전이 아닌 작년꺼를 추천해줘서 그것도 그거대로 문제다....진짜 왜그러냐 진짜...!! 나의 안드센세에게 이 사실을 말했고 안드센세는 이러한 문제를 겪고 있는 한 블로그를 알려주어 해결해주었다. 자 이제 하는 방법에 대해서 알려주겠다. 1. 버젼 정보 복사하기 아래 JetBrain 사이트에서 확인하면 모~~~든 Release 리스트가 나온다. 여기에서 다운로드 할 버전 번호를 복사해둔다. https://plugins.je.. 2022. 10. 9. 디버깅 찍는 법 나는 예전 프로젝트를 할때 오류를 잡기 위해 Log.d 와 같은 방법으로 찾아갔다. 그러나 이번에 취업을 하면서 사수가 "디버깅 할 줄 아세요??"이런 식으로 묻자 말문이 막혔다. 역시.....실무자는 달라도 달라.... 어쨌거나 지금 디버깅을 마스터하여 사수에게 이쁨을 받아보자!! 브레이크 포인트(BreakPoint) 찍기 모든 동작을 할 때 일일히 디버깅을 하는 것은 불가능합니다 특정 동작을 할 때 프로그램을 멈춰서 한 단계씩 실행을 시켜야합니다 그러기 위해서는 소스코드에 디버깅 포인트를 찍어야합니다 아래처럼 디버깅 찍을 코드에서 왼쪽 줄 번호의 빈 공간을 클릭하면 브레이크 포인트가 찍힙니다. 이렇게 찍으면 다음으로 넘어가지 않고 기다립니다. 브레이크 포인트가 다이아몬드로 찍힌다면 이 부분은 메소드 .. 2022. 10. 8. 안드로이드 자주 쓰이는 단축키 설명 단축키(Window) 단축키(Mac) 들여쓰기 취소 shift + Tab 뒤로가기 comment + option + 2022. 10. 8. Stnc Android SDKs 경고창 안드로이드 스튜디오에서 프로젝트를 받을시 다음과 같은 경고창이 발생한다. 이유는 받아올 프로젝트의 지정한 경로가 로컬 컴퓨터에 지정한 경로가 다르다고 하는것이다. 그러기 때문에 해당경로를 로컬 경로로 알아서 재설정하는다는 메세지이다. 2022. 10. 8. 디버깅 방법에 대해서 알아보자 안드로이드 개발을 하면 에러가 났을때 도저히 원인을 못 찾는 경우가 있습니다. 특정 동작을 할 때 프로그램을 멈춰서 한 단계씩 실행을 시켜야 합니다. 그러기 위해서는 소스코드에 디버깅 포인트를 찍어야 합니다. 아래처럼 디버깅 찍을 코드에서 왼쪽 둘 번호의 빈 공간을 클릭하면 브레이키 포인트가 찍힙니다. 브레이크 포인트가 다이아몬드로 찍힌다면 이 부분은 메소드 브레이크 포인트입니다 메소드 브레이크 포인트를 사용하면 속도가 많이 느려진다 하니 왠만하면 그 밑에 코드에 브레이크 포인트를 찍어줍니다 메소드 브레이크 포인트를 찍으면 아래처럼 디버깅모드로 실행할 때 메시지가 나타납니다 디버깅모드로 실행하기 첫 번째 방법은 상단 메뉴 바의 "벌레"아이콘을 선택하여 디버깅모드로 실행할 수 있습니다 마우스를 올리면 단축.. 2022. 10. 6. 다국어 엑셀시트 추출 팁 Android Studio Plugins Marketplace 에서 AndroidStringsTool 을 검색한다 https://plugins.jetbrains.com/plugin/14444-androidstringstool AndroidStringsTool - IntelliJ IDEs Plugin | Marketplace AndroidStringsTool is plugin for Convert android multilingual to excel or convert excel to android multilingual. plugins.jetbrains.com 원하는 버젼의 압축 파일을 받는다. 이때 저장 위치를 기억해 두자. 안드로이드 스튜디오에서 Plugin을 설치하기위해 File - Setting-.. 2022. 10. 6. 10/2 성장하는 안드로이드 개발자가 되는 길 나는 다음주 첫출근을 한다. 이 회사가 나를 성장시킬 수 있는지 걱정이 많다.(SI 기업이라는 말이 있던데.....) 여러 글들을 보며 확신이 들었던건 내가 회사를 선택함에 있어서 지금은 복지가 좋은 회사보다는 나를 성장시킬수있는 회사여야 한다라는 결론을 내렸다. 그래도 서비스만큼은 마음에 든다.(뭔가 잘 될 수 있을 거 같은 서비스) 만약 회사가 나를 성장시킬 수 없다라는 판단이 들면 어떻게 해야할까? 여러 글들을 보며 나만의 규칙을 세우는게 중요하다고 느꼈다. 규칙을 정리하면 다음과 같다. 1. 공식 문서는 무조건 영어로 보기 2. 각종 weekly 구독하기 3. 나만의 멘토 찾기 4. 주기적으로 라이브러리 감시하기 5. 개발자 행사 참여하기 6. 여러 커뮤니티 활동하기 7. 블로그 작성하기 1. 공.. 2022. 10. 2. Thread VS Coroutine 나는 코틀린을 사용하다보니 코루틴을 사용하는데 이를 가지고 비동기 처리를 했다. 하지만 쓰레드와 비슷한 동작을 하지만 다르다고 한다. 그 차이점을 작성해보고자 한다. 그전에 잠깐 기본 CS에 대해 알아보도록 하자. Process : 보조기억장치의 '프로그램'이 메모리 상으로 적재되어 실행되면 '프로세스'가 된다. Thread : 같은 Process 내에서 실행되는 여러 작업 (흐름)의 단위 동시성 (Concurrency) 동시성 프로그래밍은 말 그대로 동시에 여러 작업을 수행하는 것이다. 하지만 눈으로 보기에 동시에 실행되는 것이지, 사실 시분할(Interleaving) 기법을 활용하여 여러 작업을 조금씩 나누어서 번갈아가며 실행하는 것이다. 위 예제를 살펴보면, Task 1 과 Task 2 를 잘개 쪼.. 2022. 9. 29. Item4 - inferred 타입으로 리턴하지 말라 코틀린 타입 추론을 사용할 때는 몇 가지 위험한 부분이 있는데, 이러한 위험한 부분을 피하려면 할당 시에 inferred 타입은 정확하게 오른쪽에 있는 피연산에 맞게 설정된다는 것을 기억해야함 절대 수퍼 클래스 또는 인터페이스로는 설정되지 않음 예시 open class Animal class Zebra: Animal() fun main() { var animal = Zebra() animal = Animal() } 명시적으로 지정 open class Animal class Zebra: Animal() fun main() { var animal: Animal = Zebra() animal = Animal() } 그러나 직접 라이브러리를 조작할 수 없는 경우에는 이런 문제를 간단하게 해결할 수 없고 이러한 .. 2022. 9. 24. item3 - 최대한 플랫폼 타입을 사용하지 마라 코틀린은 null-safety 매커니즘으로 인해 NPE를 거의 찾아보기 힘듬 null-safety 매커니즘이 없는 자바, C 등의 프로그래밍 언어와 코틀린을 연결해서 사용할 때는 NPE 예외가 발생할 수 있음 public class JavaTest{ public String giveName() { ... } } 위 자바 코드로 반환된 타입을 사용할때에 @Nullable 어노테이션이 붙어 있다면 nullable로 추정하고 String?으로 변경하면 되는데 만약 붙어 있지 않다면 자바에서 모든 것이 nullable일 수 있으므로 최대한 안전하게 접근하기 위해 nullable로 가정하고 접근해야 함 제네릭 타입 public class UserRepo { public List getUsers() { ...} }.. 2022. 9. 24. item2 - 변수의 스코프를 최소화하라 상태를 정의할 때는 변수와 프로퍼티의 소코프를 최소화하는 것이 좋음 프로퍼티보다는 지역 변수 사용 최대한 좁은 스코프를 갖게 되는 변수 사용 요소의 스코프라는 것은 요소를 볼 수 있는 컴퓨터 프로그램 영역 코틀린의 스코프는 기본적으로 중괄호로 만들어지며, 내부 스코프에서 외부 스코프에 있는 요소에만 접근할 수 있음 //안좋은 예시 val a = 1 fun fizz() { val b = 2 println(a + b) } val buzz = { val c = 3 println(a + c) } //변수 스코프를 제한하는 예 val users = listOf() var user: User // 외부/내부 모두 사용할 수 있는 변수 사용 for (i in users.indices) { user = users[i].. 2022. 9. 24. 깃허브를 200% 사용해보자~(2. 작업의 과정을 맞춰보자) 다음으로는 브랜치를 관리하는 방법에 대해 작성해보자. 이 포스팅은 작업을 하는 동안에 commit하는 방법등도 작업에 순서에 맞춰 작성되고 있으니 찬찬히 읽어보시길. 또 혹시 이것을 보는 사람은 develop브랜치의 역할, main 브랜치의 역할, 등등 아주 기초적인 설계가 모르는 사람이 읽을경우가 있을 수 있으니 먼저 간단하게 거기서 부터 정리하면서 이어나가겠다. 처음에 프로젝트를 생성하면 main(master)라는 브랜치가 만들어진다. (참고로 master라는 이름은 주인과 노예를 연상케 해서 만약 master라고 자동 생성이 되었다면 main으로 바꾸도록 하자) 이 브랜치는 우리가 구글 플레이스토어나 앱 스토어 등에 출시가 되었을때 이 곳에 최종으로 모인 후 이 코드로 출시를 하는것이기 때문에 마지.. 2022. 9. 9. 깃허브를 200% 사용해보자~(1. 이슈관리를 해보자) 나는 안타깝게도 개발 경력에 비해 혼자 개발한 시간이 길다.....(친구가 없는건가..??) 그래서 인지 협업경력이 짧아 깃허브컨벤션에 자료들이 없었다ㅜㅜ 그래서 최근에 한 프로젝트에서 배웠던 깃허브에 관련된 협업 버젼 관리하는 방법에 대해 정리해보도록 하자 1. GitHub에서 이슈 관리하기 이슈관리란 모든일에는 목표가 있고 모든것이 하나의 이슈이다. 새로운 추가될 가능, 개선 해야할 가능, 버그 등등 모든것이 이슈라고 볼 수 있다. 모든 활동 내역에 대해서 이슈를 등록하고 그 이슈기반으로 작업을 진행하는 것이 협업의 첫번째라 볼 수 있다. 이슈를 등록하기 위해 New issue로 추가하면 아래와 같은 형태가 보이게 된다. 아래의 사진은 본문의 템플릿, 담당자, 분류, 프로젝트(칸반보드), 직업 소속 .. 2022. 9. 9. 클린아키텍쳐에 대해서 정리해보자~ 먼저 클린 아키텍쳐에 대해 한마디로 설명하면 소프트웨어의 관심사를 계층별로 분리하는 소프트웨어 디자인 철학이다. 나는 이것을 알기 위해 MVP , MVVM , MVI, 구글 아키텍쳐 가이드 등등... 정말 많은 것을 찾아 봤지만 수많은 자신들의 아키텍쳐가 널려 있었다...(진짜 너무 헷갈려....) 그래서 이번에 정리를 해보려고 한다. 먼저 로버트C 마틴 아저씨가 정리한 것을 그림으로 표현한것이다. 위의 그림처럼 Domain Layer, Data Layer, Presentaion Layer(난 UI Layer라고도 부른다.) 총 세가지의 레이어로 나뉘어 분리시킨다. 셋의 관계는 Domain레이어는 아무에게도 의존하지 않고 언어(Java,Kotlin)의 형태로 되어 있다. Data레이어는 Domain레이어.. 2022. 9. 8. 이전 1 ··· 7 8 9 10 11 다음