본문 바로가기

아는 만큼 보인다

안드로이드폰 잠금 해제시 홈화면에 뜨는 전면광고 제거 잘 쓰던 스마트폰에서 언제 부턴가 잠금화면을 해제했을 때 전면광고가 뜬다. "광고 게재 거부"라는 것을 해봐도 몇 번 잠잠했다가 다시 같은 현상이 나타난다. 없애고 싶은데 인터넷을 찾아봐도 명쾌한 방법을 찾을 수 없다. 누구냐? 넌! 해당 광고화면이 떴을 때 하단에 있는 느낌표를 눌러보면 특정 광고 게재에 대한 안내문이 나온다. 읽어보니 어이없다. 광고를 보는 건 공짜 앱 사용자의 의무?라는 식의 가르침을 주신다. 그 광고가 앱안에서만 떴다면 그냥 저냥 쓰겠다. 하지만 광고를 홈화면에까지 무단으로 띄우는 앱은 참고 쓰기 힘들다. 이건 침해이고 악성코드 아닌가! 해당 안내문에 있는 문의처를 보니 애드머시기로 시작한다. 구글의 안드이드로 착각할 뻔~ 자꾸 뜨는 광고때문에 짜증이 밀려와 인터넷을 검색 해봤다... 더보기
AWS Certified Developer – Associate 준비 노트 - Limits LIMITSS3- 5T : maximum size of an object- 5G : can be uploaded in a single PUT- 100M : consider using Multipart upload capacity- 100: buckets for an account- 3~63: length of a bucket name SQS- 30s : default visibility timeout- 256K : maximum message size- 14day: maximum retention period for messages- no limit: number of queues Cloud Formation- no limit : templates- 200: stacks- 60: max parameter.. 더보기
Executors.newCachedThreadPool()의 TIMED_WAITING 스레드 정적 팩토리 메소드 Executors.newCachedThreadPool() 는 스레드를 재사용할 수 있는 스레드풀을 만들어준다.이 스레드풀 안에서 수행이 완료된 스레드는 바로 소멸되지 않고 풀 안에서 (기본값을 바꾸지 않았다면) 60초 동안 TIMED_WAITING 상태로 재사용되기를 기다린다. 재사용되지 않고 60초가 지나면 풀에서 제거된다. 직접 확인해보자.public class Hello {public static void main(String[] args) throws IOException, InterruptedException {Executor pool = Executors.newCachedThreadPool();// 풀 안에 스레드 생성 및 실행pool.execute(new Runnable(.. 더보기
라즈베리 파이로 아마존 에코만들기 라즈베리파이3 - 아마존 에코 시연 그리고 ...(Alexa 목소리 좋네요.) 이제, 실습 과정을 정리해보겠습니다. 준비물1. 라즈베리 파이3 (Raspberry Pi 3 Model B Essential Kit) 구입정보: http://mcuboard.com/shop/goods/goods_view.php?goodsno=8786 구입비: 63,200 원2. USB 마이크 구입정보: http://shopping.interpark.com/product/productInfo.do?prdNo=4329050615&dispNo=008001 구입비: 10,000원 (배송비포함)3. 스피커 집에 있던 것 사용4. 오디오 케이블 구입정보: http://shopping.interpark.com/product/productI.. 더보기
AWS IoT Button 으로 LIFX 스마트 전등 제어하기 결과 영상제어 흐름도실습 의의LIFX bulb가 제공하는 자체 모바일용 앱을 사용하는 것 만으로, 전등의 색, 밝기, 효과 등을 재미나게 적용할 수 있습니다. 예약 기능까지 제공하여 모바일 앱을 유용하게 사용가능합니다.그럼에도 굳이 AWS IoT Button 연동하려는 이유는모바일 폰 없을 때 버튼 동작으로 간단하게 on/off아마존 IoT 서비스 적용 방법 학습 사전 준비물AWS IoT Button (구입 https://www.amazon.com/AWS-IoT-Button-Limited-Programmable/dp/B01C7WE5WM)LIFX Smart Light Bulb (구입 https://www.amazon.com/LIFX-Adjustable-Multicolor-Dimmable-Required/d.. 더보기
AWS SDK 사용해 다른 계정의 Lambda 함수를 일반화하고 호출하기 java용 SDK를 사용해 타 계정의 AWS Lambda function를 호출하고자 합니다. 그런데,호출하려는 AWS Lambda 함수를 일반화하고 싶습니다.AWS Lambda 함수가 추가될 때마다 인터페이스를 추가하고 빌드하고 싶지 않은 것입니다. 하나의인터페이스로 이후에 추가되는 AWS Lambda 함수들을 모두 커버하고 싶은 것입니다. 이를 시도한 예제 코드입니다. 1. 대상 Lambda 함수 정보 제공용 Interface public interface HelloMyLambdaService { @LambdaFunction //@LambdaFunction(functionName="arn:aws:lambda:ap-northeast-1:xxxxxx") Object invokeAwsLambda(Map i.. 더보기
enum 자료형 흉내내기 아래와 같은 enum 자료형이 있다 두 개의 enum 상수가 있다. 멤버 변수 symbol 을 하나 갖고, 추상 메소드도 하나 선언되어있다 enum MyEnum {PLUS("+") {double apply(double x, double y){return x+y;}},MINUS("-") {double apply(double x, double y){return x-y;}};private final String symbol; // 불변MyEnum(String symbol){this.symbol = symbol;}// 추상 메소드abstract double apply(double x, double y);} 위 enum 자료형을 일반 클래스로 흉내내 보자 열거형의 각 상수는 public static final 로.. 더보기
Java HotSpot VM Options 몇 가지 아래 설명된 option들은 jdk7과 그 이전 releases에 적용되는 option임 (jdk8부터는 다를 수 있음) -XX Options 표기법 Boolean options -XX:+ means to turn on -XX:- means to turn off Numeric options -XX:= String options -XX:= -XX Options (비표준 Options) Behavioral options -XX:+UseConcMarkSweepGC Old generation (Heap area)을 GC할 때 concurrent mark-sweep 방식으로 하도록 설정한다. Garbage First(G1) Garbage Collection options Performance tuning opti.. 더보기
Java 메모리 누수(memory leak) obsolete reference(쓸모 없어진 참조), unintentional object retention(의도하지 않은 객체 보유) 더 이상 쓰일 일 없는 객체를 garbage collection 하지 못하는 오류 코드 예제 class MyStack { private static final int MAX_SIZE = 16; private final E[] elements; private int position = 0; public MyStack() { elements = (E[]) new Object[MAX_SIZE]; } public void push(E e) { if(position == MAX_SIZE) throw new IllegalStateException("Full Stack"); ele.. 더보기
Singleton pattern 원소가 하나인 enum 자료형이 가장 좋은 singleton 구현방법이다. 왜? 리플렉션의 prive 생성자 접근을 통한 공격(추가 객체 생성)에 안전하다. Serializable 구현시 deserialize 될 때 마다 새로운 객체가 생성되는 일이 없다. (이를 방지하기 위해 readResolve 메소드를 추가할 필요 없다.) 코드가 간단한다. 코드 public enum MySingleton { INSTANCE; publc someMothods() { ... } } 출처 : Effective Java 2판, 규칙3. Singleton pattern 더보기