분류 전체보기
-
2021.1.10 기록일상, 생활 기록 2021. 1. 10. 14:33
시스템이나 프로그램 구현에 앞서서 탄탄한 설계가 먼저 되야한다. 탄탄한 설계는 앞으로 진행할 구현에 있어서 이정표가 된다. 이러한 설계에는 요구사항 분석, 테스트 케이스 작성, 아키텍처 분석 등이 있겠다. 생산성에 대한 고민을 더 해보기. 주어진 시간은 누구에게나 같다. 이러한 한정된 시간 안에 무엇을 할 것인지, 무엇을 학습하고, 작업할 지에 대해서 명확하게 해야한다. 도메인 지식을 알아야한다. 영상 서비스와 관련된 개발을 한다면 영상 서비스에 대한 용어, 트렌드, 기술에 대해서 알고 자주 사용해봐야한다.
-
2020년 회고일상, 생활 기록 2021. 1. 2. 15:26
벌써 2021년이 시작됐지만 2020년을 회고해본다. 2020년엔 참 많은 일들을 이뤄낸 한 해였다. 본격적으로 프로그래밍을 시작했으며, 안드로이드 개발에 집중했다. 개발이라고는 아무것도 해본적 없던 내가 처음했던 건 책이나 튜토리얼을 보면서 클론 코딩을 해보는 것. 이 코드가 무슨 의미인지 어떤 기능을 가지는건지도 모르는체 무작정 시작했었다. 다행히도 주변에 배울만한 사람들이 있었다는 것이 빠른 성장에 도움이 됐었다. 과제를 받으면서 피드백 받고, 무엇이 부족한지, 또 궁금한 것에 대해서 물어볼 수 있었다. 당시 겨울 방학 인턴십으로 작은 법률회사에서 기획 및 영상 편집을 담당하고 있었다. 개발과는 전혀 관계없는 일을 하면서 퇴근 후 틈틈히 개발 공부를 해나갔었다. 독학으로 공부하는 것에 대해 한계를 ..
-
Java에서 동시성 관리 - SynchronizationJava 2020. 12. 29. 22:35
개요 최근 출시되는 하드웨어는 거의 대부분 멀티 코어가 가능하도록 설계됩니다. 코어란 CPU 안에서 연산 처리를 하는 장치입니다. 이러한 코어를 최대한 활용하는 것이 프로그램의 성능에도 당연히 좋겠죠. 그러려면 여러 스레드나 프로세스를 동시에 실행시켜서 처리해야합니다. 여기서 발생하는 문제가 동시성 문제입니다. 은행 통장 입출금 예제를 통해 동시성 문제에 대해 살펴보겠습니다. 프로그램은 계좌 클래스, 스레드의 Task를 수행할 ThreadTask 클래스, 그리고 이를 토대로 두 개의 스레드를 생성시켜 은행 계좌를 잔고가 0원이 될때까지 출금을 하는 메인 함수로 구성되있습니다. 출금은 100, 200, 300원 중 랜덤한 값으로 출금합니다. public class Main { public static vo..
-
Two-way Binding 사용법Android 2020. 12. 22. 23:18
개요 데이터 바인딩은 MVVM에서 없어서는 안되는 요소입니다. MVVM에서 뷰와 뷰모델을 느슨하게 결합하는데 데이터 바인딩이 반드시 필요하기 때문입니다. 반드시 뷰모델의 데이터와 결합한다기보다는 앱의 데이터 요소 자체를 UI 요소에 결합시키는 것이 데이터 바인딩인데, 일반적으로는 뷰모델의 데이터가 변경되면 XML의 데이터도 갱신되게 되는 로직을 많이 구성합니다. 일반적으로 뷰모델의 데이터가 변경되면 XML의 데이터가 갱신되는 단방향적인 데이터 바인딩과 반대로 XML의 데이터가 변경되면 뷰모델의 데이터가 갱신되는 데이터 바인딩은 없을까요? EditText에서 값이 입력됨에 따라 뷰모델의 데이터가 알아서 변경되는 로직은 구성하기 어려울까요? 양방향 데이터 결합인 Two-way Binding이 해답이 될 수 ..
-
onBackPressed와 finish의 차이Android 2020. 12. 4. 11:28
시작하기 전 최근 프로젝트를 진행하면서 한가지 궁금한 사항이 생겼습니다. 뒤로가기 아이콘을 눌러서 콜백이 호출됐을 때 엑티비티를 종료하고 뒤로가기 이벤트를 실행시키고 싶었습니다. 엑티비티를 종료하는 방법은 대표적으로 두가지가 있습니다. onBackPressed()와 finish(). 저는 습관처럼 onBackPressed를 사용하려고 하다가 갑자기 finish와는 어떤 차이가 있고 어떤걸 쓰는게 좋은지 궁금해졌습니다. 그래서 짧지만 한번 정리해보려고 합니다. Back버튼 이벤트를 처리할 수 있느냐 없느냐의 차이 Class SomeViewModel { _onBackClick: PublishSubject = PublishSubject.create() _close: MutableLiveData = Single..