본문 바로가기

전체 글

(135)
[Android] WhiteBox Android 에서 사용하는 WhiteBox라고 불리는 것은 무엇이며, 어떻게 동작, 사용하는지 알아봅시다. 먼저 WhiteBox에 대해 알아보기 전에 암호키 탈취 공격 유형에는 어떠한 것들이 있는지 알면 좋습니다. 암호키 탈취 공격의 유형 먼저 암호키를 탈취하려는 공격 기법을 보면, 아래 3가지 기법으로 구분하고 있다 Black-box(블랙박스) 공격 : 암호문과 평문을 가지고, 비대칭알고리즘인 경우는 공개키(Public-key)를 가지고, 암호키(Secret-key 또는 Private-key)를 유추해 내는 공격이다. 즉 암호 알고리즘이 동작되는 내부 정보 및 과정을 볼 수 없기 때문에 Black-box란 용어를 사용한다. 보안 강도는 사용되는 "암호 알고리즘"과 "암호키 길이"에 따라 결정되어지는데..
Android KeyStore 와 Keystore 의 차이 Android KeyStore 와 Keystore 의 차이? KeyStore 와 Keystore 는 한글로 읽으면 둘 다 '키스토어'이기 때문에, 동일한 단어로 들리지만, 실제로 다른 의미를 가지고 있다. Android KeyStore Service 안드로이드 앱을 Google Play에 배포하기 위해서는 해당 앱을 서명하여 생성한 APK를 업로드하여 배포해야 하는데, 이 때, 서명에 사용되는 키 및 키저장소를 KeyStore라 한다. 해당 KeyStore는 AndroidStudio tool에서 생성 할 수 있으며, Google Play에 배포를 하게되면 같은 패키지로 업데이트를 진행 할 때, 반드시 최초에 APK를 서명했던 키스토어로 서명한 APK를 업로드 해야합니다. 만약, 최초에 서명한 키스토어를 ..
[Android] 캘린더 속성정리 // // 기본적으로 현재날짜와 시간으로 설정된다.// Calendar today = Calendar.getInstance(); // System.out.println("이 해의 년도 : " + today.get(Calendar.YEAR));// System.out.println("월(0~11, 0:1월): " + today.get(Calendar.MONTH));// // (today.get(Calendar.MONTH) + 1)) 이런 형식으로 하면 다음월을 받아 올 수 // // 있다. today.get(Calendar.MONTH) + 1로 하면 이상한 값이 나온다. (괄호유무)// System.out.println("월(0~11, 0:1월): " + (today.get(Calendar.MONTH) +..
[Spring Boot] json response할 때 Enum 객체 전체 보여주기 문제 발생Enum@AllArgsConstructor @Getter public enum Foo { A("에이", "a"), B("비", "b"), C("씨", "c"); private String korean; private String small; } Controller@RestController public class EnumController { @GetMapping("/enum/{code}") private RestResponse showFoo(@PathVariable String code){ return new RestResponse(true, Foo.valueOf(code)); } } Response 객체@Getter public class RestResponse { private boolea..
[Swagger]OpenAPI 3.0을 이용한 Spring REST API 문서화 1. 개요라이브러리가 OpenAPI 3.0 스펙에 맞는 JSON을 자동으로 만들어 주면, Swagger UI는 만들어진 JSON을 바탕으로 화면에 표시 해줍니다.Spring Boot 2.0.9.RELEASE로 테스트 하였습니다.2. 문제 해결messageconverter가 설정되어 있어서 Swagger UI가 /v3/api-docs/ end-point로 접근시 String으로 감싼 JSON 형으로 리턴됨.HttpServletRequest 객체의 getRequestURI 메소드를 사용하여 요청한 Uri를 가져옴.Uri가 /v3/api-docs/ 또는 /v3/api-docs/swagger-config 인지 확인하여 원본 내용을 리턴하게 예외처리. (e.g. json이면 json으로)3. build.gradl..
[Android] ScrollView 자동 스크롤 애니메이션 이번 포스트에서는 스크롤뷰(ScrollView)의 자동 스크롤 방법에 대해 알아 보도록 하겠습니다. 맨 위 / 아래로 ScrollView 자동 스크롤ScrollView 의 맨 위/아래로 자동 스크롤 하는 방법은 fullScroll을 사용하는 방법입니다.인자값으로는 ScrollView.FOCUS_DOWN 과 ScrollView.FOCUS_UP 이 있습니다.final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview)); scrollview.post(new Runnable() { @Override public void run() { scrollview.fullScroll(ScrollView.FOCUS_DOWN); } }); ScrollVi..
[Android] RecyclerView에 대해 설명하시오. 1. 구성요소1) 기본 구성요소1–1)LayoutManager*리스트, 그리드, 스태그드 그리드 등의 배치를 담당하고 *동시에 스크롤도 담당한다. *아이템의 focus담당 (리스트를 내릴때 새로운 아이템을 추가해야하는지도 알려준다)1–2) Adapter*view, viewHoler생성 *item과 viewHolder를 bind *RecyclerView에게 changes를 notify *아이템 클릭등의 interaction 핸들링 *viewTypes 분기 *onFailedToRecyclerView를 통해 Recycler복원2) 내부 구성요소2 . Recycle 방법1) 레이아웃 매니저가 getViewForPosition으로 view를 요청2) RecyclcerView는 캐시에 getViewForPositi..
[Android] Multi Thread 환경에서의 올바른 Singleton은 무엇인가? 일반적으로 하나의 인스턴스만 존재해야 할 경우 Singleton 패턴을 사용하게 된다. 물론 Single Thread에서 사용되는 경우에는 문제가 되지 않지만 Multi Thread 환경에서 Singleton 객체에 접근 시 초기화 관련하여 문제가 있다.보통 Singleton 객체를 얻는 static 메서드는 getInstance()로 작명하는 게 일반적이다.그렇다면 어떻게 코드를 작성해야 Singleton 객체를 생성하는 로직을 thread-safe 하게 적용할 수 있을까? 정말 단순하게 별로 신경 쓰고 싶지 않다면 메서드에 synchronized 키워드만 추가해도 무방할 것이다. 그렇지만 좋은 개발자가 되기 위해선 효율적인 코드에 대해서 고민을 해 봐야 한다. 메서드에 Singleton 클래스의 ge..