전체 글 245

프로그래머가 되다.

최근 취직을 해서 안드로이드 프로그래머로 일하고 있다. 점점 같이 일하는 사람들과도 익숙해지고 적응해가고 있는거 같다. 좋은 동료들과 내가 하고 싶은 일을 할 수 있는 환경에서 멋진 일들을 해나가는 하루하루가 즐겁다. 일을 하면서 느끼는거지만 아직도 정말 배울게 많고 나는 부족한 점이 많다. 포스팅 할 것도 엄청나게 밀렸는데.. 주말에 각잡고 일하면서 생겼던 궁금증이나 새로 알게 된 것들 그리고 공부해봐야겠다고 생각든 것들을 정리하는 시간을 가져야겠다. 그럼 꼭 이번 주말에는 내가 포스팅을 하길 바라며..

잡담 2021.03.04

MVVM 패턴 - 설명(1) (View)

MVVM 패턴은 사용하는 사람들마다 조금씩 만드는 방식이 달랐다. 여러 방식들을 보고 그 중에서 가장 개인적으로 마음에 드는 방식의 예제를 보고 따라하며 이해했다. 이번 공부에는 LiveData , RxJava , Retrofit2, Databinding 이 사용되었다. 사전 지식이 없다면 이해하기 힘들 수 있다. 먼저 View 파트부터 설명 해보겠다. View 는 전에도 말했듯 유저가 클라이언트랑 소통하는 화면을 의미한다. 안드로이드에서는 Activity 를 말하겠다. MVVM 패턴에서의 View는 ViewModel에서 변경되는 값들을 Observer 패턴으로 관찰하며(이 프로젝트에서는 LiveData가 이를 쉽게 해결한다.) 변경되는 값들을 그대로 바꿔서 보여준다. 일단 나의 경우는 모든 Activi..

Android 2021.02.11

말그대로 잡담.

가고 싶다고 생각한 회사에 취업하게 되어서 타지에 방을 구하고 왔다. 이것저것 많이 찾아도보고 하면서 고르고 골라서 나름 괜찮다고 생각하는 방을 찾았다. 여기저기 돌아다니는게 피곤하긴 했지만 제대로 보는게 앞으로도 나한테 좋을테니까 어쩔 수 없지 뭐.. 군대를 다녀온거 말곤 타지생활이 처음이다. 딱히 사는거에 대해선 걱정은 안되는데 일에 빨리 적응하고 싶은게 지금 제일 큰 고민거리다. 나를 좋게 평가해준 회사에 잘 적응하고 일을 빨리 습득해서 의미있는 역할을 하고 싶다. 직접 가보기전까진 정확히 어떤걸 만들게 될지는 모르겠지만 대충 예상되는것들을 찾아보고 공부해보며 입사전까지 시간을 보내고 있다. MVVM 패턴에 대해서도 자세하게 블로그에 포스팅하고 싶은데 머릿속에 아직 완전히 정리된게 아니라 글로 풀어..

잡담 2021.02.06

자바 generic

generic 에 대해서 개념만 알고 실제 프로젝트에 적용해보지는 않았는데 좀 더 확실하게 개념을 공부하고 상세한 예를 통해서 어떻게 사용되는지 찾아보았다. generic 은 뭘까 - 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법, 또는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 라고 하는데 나의 경우는 후자의 표현이 더 와닿았다. 제너릭을 그럼 왜 사용할까? 모든 기술들이 그런거 처럼 꼭 사용할 필요는 없다. 그러나 만약 배열에 값을 추가하고 가져오는 함수를 포함한 클래스가 있다고 치자. 이 배열은 integer 형으로 쓰일수도 있고 string 형으로 쓰일수도 있는데 제너릭을 배제하고 생각한다면 두가지 형을 가진 클래스를 각..

Java 2021.01.30

안드로이드 하드웨어 모듈과 TCP/IP 소켓 통신

소켓 통신은 대학교때도 프로젝트로 진행했던 기억이 난다. 라즈베리파이로 온도센서, 습도센서를 이용해서 소켓 통신을 하여 경보기를 만들었는데 그때는 c언어로 소켓통신을 만들었기에 어렵게 어렵게 완성했던 기억이 있다. 지금은 안드로이드 개발에 큰 관심을 가지고 있기도 하고 정리해두고 싶어서 이렇게 글을 쓴다. 직접 혼자서 만들어보면 좋겠지만 당장 라즈베리파이나 아두이노도 없어서 인터넷글을 보고 사용법에 대해서 공부하고 있다. 공부하다보니 Android Things 라는것도 있던데 기회가 되면 이것도 알아보고 싶다. 열심히 공부하며 글을 쓰고 있었는데 정말 소개가 잘 된 블로그가 있었다.아래 내용은 해당 출처에 있는 글이다. 출처 :ddangeun.tistory.com/31 TCP/IP 소켓 통신 TCP/IP..

Android 2021.01.28

안드로이드에서의 Parcelable vs Serializable

안드로이드를 개발하다보면 다른 액티비티로 데이터를 전달할때 그 데이터가 복잡한 클래스의 객체라면 Serializable 또는 Parcelable 를 사용하여 직렬화 하여 인텐트에 추가해야한다. 그럼 직렬화는 뭘까? 직렬화는 1. 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해 byte 코드 형태로 나열하는 것이다. 여기서 메모리 내에 존재하는 정보는 즉 객체를 말한다. 2. JVM 의 메모리에 상주 되어있는 객체 데이터를 바이트 형태로 나타내는 기술 역직렬화 라는 개념도 있는데 말그대로 위의 내용의 반대라고 생각하면 된다. Serializable 부터 뭔지 알아보자. Serializable 는 Java 에서 제공하는 interface다 사용하기도 쉽고 직렬화 또한 잘된다. 그러나! 사용하기..

Android 2021.01.28

안드로이드 DI 라이브러리 Koin 에 대해

DI 가 의존성 주입을 의미하는 단어라는것은 알고 있었다. Spring 공부할때 bean 으로 의존성 주입하고 어노테이션으로 썼던 기억이 난다. 안드로이드에서는 사용해보지 않았는데 Dagger2 라는 라이브러리가 그 역할을 해주고 있다는건 알고 있었다. 그렇게 알고만 있다가 새로 공부하고 프로젝트에 적용해보고 싶은 욕심이 생겨서 찾아보던 중 Dagger2와 성능차이도 나지 않는데 훨씬 쓰기 쉽고 직관적인 라이브러리 Koin 이 있다는걸 알고 사용해보기로 했다. 쉽고 좋은데 쓰지 않을 이유는 없지. 먼저 DI를 왜 쓸까? 사용하면 얻는 이점부터 알아보자. - 의존관계 설정이 프로그램 실행시에 이루어지기 때문에 컴포넌트간 결합도를 낮춘다. - 코드 재사용성이 증가한다. - 단위 테스트의 편의성을 높여준다. ..

Android 2021.01.24

안드로이드 MVVM 패턴 - 개요

얼마전부터 공부하고 있는 MVVM 패턴에 대해 정리하기위해 포스팅을 하기로 마음먹었다. 사실 MVVM 패턴 자체만 두고보면 엄청 어렵고 그런 개념은 아닌데 제대로 만들기 위해서 들어가는 여러가지 따라오는것들이 어려운거 같다. LiveData 라던지 RxJava 라던지.. 이런것들도 다음 포스팅에 적을것이다. 일단 MVVM 패턴에 대해서 먼저 알아보자. MVVM 패턴은 예전 MVP 포스팅에서도 언급했듯 MVP패턴의 View와 Presenter , Model 사이이 양방향 의존성이 심해서 이것을 해결하기 위해 만들어졌다. MVVM 은 크게 View - ViewModel - Model 로 이루어져있고 단방향 의존성을 가진다. VIew는 ViewModel 을 참조하지만 ViewModel 은 View 를 참조하지..

Android 2021.01.24

리액트 네이티브에서 화면이동하기

안드로이드에서는 intent 를 이용해서 쉽게 화면간 이동을 할 수 있었다. React-native 에서는 아쉽게도 intent 는 없는데 이를 쉽게 할 수 있게 만들어준 라이브러리가 있다. 바로 Navigator 라는 것인데 나는 많은 Navigator중에서도stackNavigator를 사용해봤다. 안드로이드의 intent도 Activity 가 stack 형식으로 쌓이는데 이 동작과 매우 유사해서 사용해봤다. 사실 정확한 사용방법이 아닐수도 있다. 정답이 아닌 기록을 위해 적는것이니 참고만 하면 좋을 것 같다. 먼저 App.js 에서 const Stack = createStackNavigator(); function App() { return ( ); } 이렇게 Stack 으로 사용될 요소들을 미리 적..

React 2021.01.19

리액트 네이티브에서 firebase 으로 로그인하기

먼저 프로젝트에 firebase 관련 파일을 설치해야한다. npm 으로 설치하면 되는데 검색하면 금방 나온다. firebase 관련 설정코드를 먼저 작성해줘야한다. const firebaseConfig = { apiKey: '', authDomain: '', databaseURL: '', projectId: '', storageBucket: '', messagingSenderId: '', appId: '' }; 내용이 다 비워져 있는데 넣어야하는 값들은 파이어베이스 콘솔에서 이미지 처럼 프로젝트 설정을 누르면 모두 적혀있다. 관련 값을 위 코드에 다 넣어주면 된다. 설정을 마쳤다면 이제 코드가 어떤 firebase 를 참조해야할지 알게된 상태가 된다. 설정을 해줬으니 그 설정에 맞는 firebase 객체..

React 2021.01.19