일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Django REST framework
- livedata
- dart
- android push
- C++
- Flutter TextField
- kodility
- 프로그래머스
- Android
- Python
- 코틀린
- Django REST Android
- Android P
- RxJava
- android architecture component
- NDK
- C/C++
- 안드로이드 구글맵
- mfc
- RxAndroid
- 안드로이드
- C
- FLUTTER
- UWP
- Rxjava2
- 알고리즘
- flutter firestore
- Java
- Kotlin
- Django REST
- Today
- Total
목록전체 글 (217)
개발하는 두더지
AWS 프리티어 만료기간이 거의 다되가서 안쓰는 AWS 어플리케이션들을 삭제하는 도중 S3 bucket들이 삭제가 안되는 이슈가 발생했습니다.검색해보니 권한이 없어서 생긴 문제였는데요. 아래 사진과 같이 Elasticbeantalk S3 Bucket이 삭제가 안된다면 버킷 정책에서 권한을 직접 줘서 삭제해야 합니다. 권한이 없다고 나오는 문제.. 버킷을 하나 클릭하면 페이지가 하나 나오는데 권한 - 버킷 정책 - Effect 값을 Allow로 변경 후 저장을 눌러줍니다. 이제 어떤 장소에서도 이 버킷에 접근하고 수정할 수 있는 권한이 생겼습니다.프리티어가 만료되어서 다신 안쓸 것 이므로 과감하게 권한을 주고 바로 삭제해줍니다. 이제 다시 삭제를 시도하면 정상적으로 삭제가 됩니다.저 같은 경우엔 프리티어고..
[Effective Java 규칙71] 초기화 지연은 신중하게 하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 초기화 지연(lazy initialization)은 클래스, 필드 등을 사용하는 시점에 초기화를 하는 기법입니다. 대부분의 경우에는 초기화 지연보다는 일반적으로 클래스를 생성하면서 초기화 하는 것이 좋습니다. 초기화 비용이 크고, 내부적으로 필드 사용 빈도가 적다면 초기화 지연이 적절합니다. 초기화 지연을 위해 안정적인 방법을 사용해야 합니다. 1.초기화 지연 담당 클래스 숙어( lazy initialization holder class = Initialization-on-demand holder idiom ) 는 스레드에 안전하고 동시..
[Effective Java 규칙69] wait이나 notify 대신 병행성 유틸리티를 이용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 자바 1.5부터 고수준 병행성 유틸리티 포함되어있어서 wait과 notify를 사용해서 구현해야될 일들을 대신하게 해준다. 제목처럼 wait과 notify를 정확하게 사용하는 것이 어렵기때문에 고수준 병행성 유틸리티를 반드시 사용해야 한다. java.util.concurrent에 포함된 고수준 병행성 유틸리티들은 실행자 프레임워크(executor framework), 병행 컬렉션(concurrent collection), 동기자(synchronizer) 이다. 이미 사용하고 있는 것일 수도 있지만 이번 규칙에..
[Effective Java 규칙68] 스레드보다는 실행자와 태스크를 이용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 작업을 순차적으로 처리하는 작업 큐가 있다고 하자. 스레드 + 큐 조합으로 만든다면 스레드에 안전하지 않게 만들어질 가능성이 높다. 이를 해결하기 위해 자바 1.5부터 java.util.concurrent 패키지에 Executor Framework라는 유연성이 높은 인터페이스 기반 태스크 실행 프레임워크라는 것이 생겼다. ExecutorService executor = Executors.newSingleThreadExecutor(); 를 만들고 실행자에 Runnable을 넘겨 실행만하면 동기화가 끝난다. executor.exe..
[Effective Java 규칙67] 과도한 동기화는 피하라 Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 동기화를 너무 과도하게 적용하면 성능저하, 교착상태 문제가 생길 수 있다. 예를들어 옵저버 패턴에서 0~100인 값을 발행하고 전파한다고 생각해보자.동기화 블록안의 순환문에서 등록된 옵저버에 순차적으로 값을 등록하고 전파한다. 특정 인덱스에서 전파를 받는 콜백 인터페이스 함수에서 만약 옵저버를 삭제한다면 어떻게 될까? 리스트 순회가 이루어지는 상황에서 리스트에서 원소를 삭제하려하기 때문에 ConcurrentModificationException이 발생한다. executor service를 이용하여 다른 스레드에서 구독해제를 시도한다면 어떻게..
[Effective Java 규칙66] 변경 가능 공유 데이터에 대한 접근은 동기화하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 변경 가능한 데이터를 공유할 떄는 해당 데이터를 읽거나 쓰는 모든 스레드는 동기화를 해야 합니다. 동기화를 하지 않으면 스레드간 변경 사항이 적용될 거라고 보장할 수가 없기 때문입니다. 이런 오류들은 디버깅하기 까다롭고, 간헐적으로 발생하며, 타이밍에 민감합니다. 또한 어떤 VM이냐에 따라서 극도로 다르게 동작하기도 합니다. 메서드나 변수에 synchronized 키워드를 이용해 스레드간 동기화를 시켜서 data의 thread-safe를 시켜줍니다. 현재 data를 사용하고있는 스레드를 제외하고 나머지 스레드들은 da..
[Effective Java 규칙60] 표준 예외를 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 프로그래밍 전문가는 코드 재사용을 위해 많은 노력을하고, 높은 수준으로 코드를 재사용 한다.; 코드를 재사용하면 좋다는 일반 규칙은 예외에도 어김없이 적용된다. 이미 있는 예외들을 재사용하면 좋은 점이 많다. 가장 중요한 장점은, 배우기 쉽고 사용하기 편리한 API를 만들 수 있다는 것이다. 왜냐하면 다른 프로그래머들도 친숙한, 널리 퍼진 관습을 따르기 떄문이다. 또 다른 장점은 그렇게 구현된 API는 가독성이 높다는 것이다. 아무래도 잘 모르는 예외가 뒤섞여있지 않기때문에 한 눈에 내용이 보인다. 마지막으로 예외 클래스 개수를 줄이면 프로그램..
[Effective Java 규칙54] 네이티브 메서드는 신중하게 사용하라 Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 자바 네이티브 인터페이스 ( JNI, Java Native Interface )는 C, C++ 등의 네이티브 프로그래밍 언어로 작성된 네이티브 메서드를 호출하는데 사용하는 기능이다. 네이티브 메서드에 계산하는 기능이 있다면 계산은 네이티브 언어로 실행되며 자바 언어로 전달되는 과정을 통한다. 전통적으로 네이티브 메서드는 3가지 용도로 사용되었다.1. 네이티브 메서드를 이용하면 레지스트리나 파일 락 같은 특정 플랫폼에 고유한 기능을 이용할 수 있었다.(자바 플랫폼이 발전하면서 특정 플랫폼에 고유한 기능들도 제공되어서 이젠 장점이 ..