분류 전체보기
-
Java) 비트연산자 정리 feat) 백준 1740Java 2021. 8. 31. 16:31
비트 연산자 비트 연산자는 low-level의 연산자이며, 논리 연산자와 비슷하지만, 비트 단위로 논리 연산을 할 때 사용하는 연산자. 비트 단위로 왼쪽, 오른쪽으로 전체 비트를 이동하거나, 1의 보수를 만들 때도 사용. 실수(Double), Boolean, 배열(Array), 객체(Object)에는 사용할 수 없다. 만약 boolean 연산자를 사용하고 싶다면 |, &, ^ 연산 등을 사용해야 한다. &(AND 연산자) - 대응되는 두 비트가 모두 1일 때만 1을 반환, 다른 경우 0 반환. 각 비트와 연산을 하기 때문에 아래의 예제처럼 각 비트가 모두 1인 경우 1을 반환한다. int a = 2; int b = 3; System.out.println(Integer.toBinaryString(a)); ..
-
Android) 테스트 코드 왜 작성 해야 할까? 예제로 알아보자Android 2021. 8. 29. 12:29
안드로이드에서 테스트 코드 "왜" 작성해야 할까? 코드를 작성하여 기능을 구현하고, 그 기능이 제대로 작동하는지 에뮬레이터 혹은 디바이스에서 직접 결과를 정성스럽게 확인 -> 에러가 발생하면 로그를 찍어 파악 -> 다시 수정하고 테스트 반복. 위와 같은 방법으로 기능의 결함을 체크해도 문제없지 않을까? 하지만 이러한 작업은 규모가 작을 경우 문제 되지 않을 수 있지만, 앱의 규모가 커진다면 빌드하는 시간 + 테스트를 UI로 직접 입력하는 시간 등으로 시간이 점점 길어질 것입니다. 즉 테스트하기 위해 전체 앱을 매번 빌드하는 것은 비효율적인 작업이 되버립니다. 그래서 테스트 코드는 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증과 신뢰성 높은 코드의 생산성을 높이기 위해 작성한다고 생각이 듭니..
-
Kotlin) 정규 표현식 정리Kotlin 2021. 8. 17. 00:10
정규 표현식 정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어. 어떤 문자열에서 특정한 조건의 문자열을 찾고 싶을 때, 그 조건이 복잡한 경우 유용. 예를 들어 비밀번호 설정(최소 8자리에 숫자, 문자, 특수문자 각각 1개 이상 포함 등) 정규 표현식 문법 ^ : 문자열의 시작을 의미. $ : 문자열의 끝을 의미. . : 문자 한 개를 의미. '.'이 위치한 곳에 어떤 문자든지 1개의 문자가 들어감. [ ] : 대괄호에 있는 문자 중 한 개를 의미. [abc]는 a, b, c 중 하나를 선택. [^] : not의 의미로, 대괄호에서 쓴다면 [^abc] : a, b, c 제외하고 나머지를 의미. | : or을 의미. a|b : a 또는 b. () : 공통되는 ..
-
Android) 안드로이드 네트워크 프로파일러 사용해보기 feat) 웹 파싱 방법Android 2021. 8. 11. 11:43
오늘은 안드로이드에서 웹 페이지를 파싱 할 때 도움이 될 수 있는 내용을 소개하려고 합니다. Network Profiler 실시간 네트워크 활동을 표시하며 송수신된 데이터 및 현재 연결 수를 보여주는 기능을 합니다. 네트워크 프로파일러를 사용하여 네트워크 활동이 급증하는 부분 등을 파악하여 앱의 성능을 개선시킬 수 있습니다. View -> Tool Windows -> Profiler를 클릭하거나 안드로이드 하단 툴바에서 Profiler 아이콘을 클릭하여 열 수 있습니다. Usage 프로파일러에서 NETWORK 부분의 아무 영역에 클릭을 해주면 네트워크 프로파일러로 이동합니다. 네트워크 프로파일러를 실행하면 위와 같이 타임라인에 표시됩니다. 1번처럼 드래그하여 구간을 선택할 수 있습니다. 2번에서는 좀 더..
-
Android) KAPT를 대체할 KSP(Kotlin Symbol Process) 소개 with Kotlin DSLAndroid 2021. 7. 17. 19:18
What is KSP KSP의 탄생 배경은 Kotlin 빌드 속도를 더 빠르게 하기 위함에 있습니다. 컴파일에 있어, Kotlin이 자체적으로 Annotation Processing 시스템을 갖추고 있지 않는 것이 문제가 되었습니다. KSP는 KAPT와 비슷한 기능을 제공하지만, 속도가 최대 2배 더 빠르고 Kotlin 컴파일러 기능에 직접 액세스 및 호환성을 가진 도구입니다. Kotlin Symbol Processing(KSP)이 공식적으로 알파 버전이 발표되었으며, Kotlin 버전 1.4.30 이상과 호환됩니다. KSP는 Kotlin 코드를 직접 Parsing하기 위한 강력하고 간단한 API를 제공합니다. KSP vs KAPT 안드로이드에서 많이 사용되는 Room, Dagger, Retrofit과 ..
-
Android) 이미지 로딩 라이브러리 자세히 알아보자Android 2021. 7. 11. 20:32
안드로이드에서 ImageView에 이미지를 로딩할 때 자주 직면하는 문제 Out of Memory Slow Loading of Image into the View UI becomes unresponsive. Not Smoothing Scrolling Out of Memory 종종 고퀄리티의 이미지 등을 로딩하거나 많은 이미지를 사용할 때 OOM 에러를 만날 수 있습니다. Google에서 권장하는 이미지 로딩 라이브러리인 Glide는 이를 해결하기 위해 다운 샘플링을 해줍니다. 다운 샘플링이란 분류에 속하는 데이터가 많은 쪽을 적게 추출하는 방법인데, Bitmap을 실제 View가 요구하는 사이즈로 줄여주는 것을 의미. 예를 들어 2000 x 2000 사이즈 이미지가 있고, View 사이즈는 400 x 4..
-
Android) WebView 정리Android 2021. 7. 8. 12:19
WebView 웹 탐색과 웹 브라우저는 Android, iOS, PC 모두 가진 기능입니다. WebView는 웹 브라우저를 구성하는 HTML과 같은 요소들을 받아들여 이를 브라우저와 동일한 형식으로 해석해서 표현해주는 뷰입니다. 그래서 WebView는 PC의 서버에서 response 한 웹 파일을 받아서 Android에서도 똑같이 보여주고 다룰 수 있고, 디바이스 상관없이 정보 공유가 가능한 하이브리드 앱을 쉽게 구현할 수 있도록 도와줍니다. URL 웹 페이지 요청 단순히 WebView를 참조하고 loadUrl로 웹 브라우저를 실행하여 해당 url을 로드하는 방법입니다. loadUrl 메소드를 사용해서 해당 주소에 요청을 보내고, 응답받은 html 파일을 사용하여 웹 화면을 표시합니다. WebView에 ..
-
Android) Coroutine Exception Handling 어떻게 처리 할까Android 2021. 6. 27. 19:31
예외 처리에는 다양한 방법들이 존재하겠지만, 몇 가지 방법을 알아보려 합니다. 1. try / catch 일반적으로 많이 사용하는 try-catch 블록을 사용하는 것입니다. try 블록에서 예외를 던질 수 있는 코드를 작성하고, 예외가 발생하면 catch 블록에서 잡힙니다. 추가로 finally에서는 예외와 상관없이 해야 하는 코드를 작성해야겠습니다. (메모리 해제 등..) // ViewModel private val _images = MutableLiveData() val images : LiveData get() = _images fun fetchImages(query: String?, page: Int, size: Int) = viewModelScope.launch { val result = da..