일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 안드로이드
- ORM
- HTTP
- node.js
- Spring
- 자바
- 장고
- 스프링 부트
- db
- 웹
- Spring Boot
- 데이터베이스
- 파이썬3
- django
- Python
- java
- 스프링
- mysql
- python3
- 개발
- 파이썬
- 자료구조
- 디자인 패턴
- JPA
- bytecode
- rabbitmq
- 웹 개발
- 보안
- BCI
- 스프링부트
- Today
- Total
목록안드로이드 (7)
semtax의 개발 일지
개요 이번 포스팅에서는 안드로이드 split, 그리고 universalApk 옵션과 그에 따른 빌드 중간 파일 위치에 대해 다뤄 보도록 하겠습니다. (사실 회사에서 버그잡는걸로 삽질하다가 알아낸 내용입니다..) 까먹지 않게 올려봅니다. Android gradle splits, universalApk 안드로이드에서, universalApk 옵션은 splits 블록에 포함되어 있으며, 다양한 타깃머신(arm, x86)에 대한 apk, 즉 다중 머신 빌드를 위해 존재합니다. 해당옵션을 이용해서 타깃 머신별로 빌드 파일 또는 프로젝트를 따로 만들 필요 없이 다양한 환경을 지원하는 apk를 만들 수 있습니다. 보통 아래와 같이 설정합니다. android { splits { ab..
개요 이번에는, 생성 패턴 중 하나인 싱글톤 패턴에 대해서 알아보도록 하겠습니다. 왜 나오게 됬는가? 싱글톤 패턴은, 여러 객체에서 데이터를 공유해서 써야하는데 단 1개만 생성해서 써야할때 어떻게 해야할까 라는 고민에서 나오게 된 패턴입니다. (OOP의 전역변수 라는 느낌으로 생각하시면 됩니다.) 주로, 여러곳에서 쓰이는 설정 정보나, 다른곳에서도 공통적으로 쓰이는 데이터베이스 설정 객체와 같은 정보들을 공유할 때 사용되게 됩니다. 문제 상황 먼저 아래의 상황을 한번 가정 해봅시다. 당신이 앱을 개발한다고 가정을 해봅시다. 그런데, 앱에 있는 여러 클래스에서 앱에서 전역으로 쓰이는 설정정보를 읽고 써야하는 상황이 닥쳤습니다. 이럴때 당신은 어떻게 하겠습니까? 위와 같은..
개요 이번 포스팅에서는, 안드로이드에서 String.format을 쓸 때, 발생했던 문제점을 정리해보고자 한다. 문제점 보통, 특정 서식으로 이루어진 문자열을 만들때, 자바와 같은 경우 String.format 메서드를 써서 포매팅을 수행하게 된다. 하지만, 안드로이드에서는, String.format를 이용해서 부동소수점을 문자열 포맷팅 할때, 일부 디바이스에서 문제가 발생하게 된다. 대략적으로 아래와 같은 예외가 발생하게 된다. Fatal Exception: java.lang.NullPointerException Attempt to get length of null array java.util.Formatter$FormatSpecifier.addZeros (Formatter.java:3505) java..
개요 이번 포스팅에서는 Gradle 플러그인을 디버깅하는 방법에 대해서 알아보도록 하겠습니다. 굳이 적는 이유 Gradle 플러그인 과 같은 경우에는, 일반 자바 코드 디버깅 하듯이 브레이크 포인트를 걸고 하면 제대로 디버깅이 되지 않는다. 따라서, 일반적인 디버깅 방법과는 다르게, 원격으로 디버깅을 해줘야 된다. 어떻게 하는가? 1. 먼저, 디버깅하려는 플러그인 소스코드가 있는 프로젝트에 들어간다. 2. 메뉴에 있는 Run > Edit Configurations... 를 들어간다. 3. "+" 버튼을 클릭하고, Remote Configuration 을 생성하고, 확인을 누른다. 4. 다음으로, 플러그인을 사용하는 프로젝트에 들어가서 아래 명령어를 입력 해준다. ./gradlew --no-daemon -..
개요 회사에서 Gradle 과 관련된 솔루션 버그를 잡다가 막힌 내용이 있었는데, 까먹기전에 그 내용을 간략하게 정리해서 올리려고 한다. 내용 Gradle은, groovy 또는 코틀린을 이용해서 프로그래밍 하듯이 빌드 스크립트를 코딩해서 제작이 가능하다. 따라서, 빌드할 내용이 복잡해지면 마치 코드 리팩토링을 하는것처럼 빌드 스크립트도 리팩토링을 해야하는 일이 생긴다. 또한, 일반적인 build.gradle 파일 1개만으로 감당이 안되는 복잡한 작업을 (예를 들어, 코드 난독화 솔루션이나, 컴파일된 클래스를 변경해서 성능 모니터링을 하는 솔루션) 하는 경우를 대비해서, Gradle은 플러그인을 만들 수 있는 기능을 제공한다. 보통 저러한 Gradle 플러그인..
개요 이번 포스팅에서는 크롬 브라우저에서 안드로이드 디버깅을 할 수 있는 stetho에 대해서 알아보도록 하겠습니다. Sthetho? Sthetho는 페이스북에서 개발한 크롬 브라우저에서 안드로이드를 디버깅 할 수 있게 해주는 안드로이드 라이브러리입니다. 보통 이러한 것들을 보고 디버그 브릿지(Debug Bridge) 라고 합니다. 설치 & 사용방법 먼저 안드로이드 gradle 파일에 아래 내용을 넣어 줍니다. implementation 'com.facebook.stetho:stetho:1.5.1' 만약 retrofit이나 okhttp 등의 http 통신 내용도 보고싶은 경우 아래내용을 추가해줍니다. implementation 'com.facebook.stetho:stetho-okh..
1. JVM은 어떻게 클래스 파일을 실행하는가? 일단 자바가 어떠한 방식으로 컴파일된 클래스 파일을 실행하는지 알아보자. 먼저, JVM(자바 가상 머신)이 컴파일된 클래스파일을 읽어서 메모리에 로딩을 한다. 그 다음에, JVM이 클래스 파일에 있는 바이트코드를 순차적으로 읽으면서 그에 맞는 동작을 수행한다(사실 요즘에는 JVM이 속도를 위해서 자주 사용하는 부분을 파악해서 Just in time 방식을 이용해서 해당 부분을 미리 Native Code로 변환을 해서 실행을 한다). 이때 자바에서는 이러한 바이트코드들을 실행하는 기본 단위가 스레드(Thread)이다. 또한, 자바에서는 각 스레드 별로 Execution Stack(JVM Stack)을 1개씩 가지고 있다. 또한 각 스레드에서 함수를 호출할시 ..