분류 전체보기(112)
-
hibernate.hbm2ddl.auto
hibernate.hbm2ddl.auto 위험 헷지JPA를 사용하면서 가장 편한 기능 중의 하나가 hibernate.hbm2ddl.auto 설정을 통해 Java 애플리케이션 단에서 엔티티 객체의 변경 사항이 DB 단에서의 테이블 스키마에 자동으로 반영된다는 점이다.그런데 이는 '개발'의 편리성에 해당할 뿐이고, '운영' 중에는 hibernate.hbm2ddl.auto 설정 때문에 SW 시스템이나 서비스 분야에서 겪을 수 있는 가장 큰 규모의 장애를 마주하게 될 수도 있다. 바로 데이터가 몽창 사라지는 것이다.. 이보다 더 위험한 설정이 있을 수 있을까.. ㄷㄷㄷ문제 상황결론부터 말하면 여러가지 상황이 짬뽕되어 hibernate.hbm2ddl.auto의 값이 의도하지 않게 create로 적용되어서 Drop..
2018.07.07 -
Notification
/** * android 8.0 oreo의 경우 알림채널 설정해야 알림이 옴 * - targetSDKVersion이 26버전보다 아래라면 문제없이 알림이 옴(version < 26) * - 채널은 한번만 만들면 되기때문에 Notification이 올때마다 만들어줄 필요가 없다. * Application Class에서 만들어 줘 되고 SharedPreference를 이용해서 한번 만든적이 있다면 * 그다음부터는 만들지 않도록 해주어도 된다. */private void sendNotification(String title, String message) { int messageId = Integer.parseInt(PushUtils.getId()); Intent intent = new Intent(this, ..
2018.07.07 -
FCM 서버(Spring) 연동
1. 앱 구동시 FCM SDK에서 토큰 발행 및 서버에 저장(android) public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { private static final String TAG = MyFirebaseInstanceIDService.class.getSimpleName(); // 토큰 재생성 @Override public void onTokenRefresh() { // Get updated InstanceID token. String token = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "token = " + token); sendTokenToServer..
2018.07.07 -
FCM 푸시알림시 화면깨우기
1. AndroidManifest.xml 2. PushUtils.class public class PushUtils { private static PowerManager.WakeLock mWakeLock; public static void acquireWakeLock(Context context){ PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock( PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "WAKEUP" ); mWakeLock...
2018.07.07 -
FCM(Firebase Cloud Messaging)
1. Firebase Console에서 프로젝트 생성2. AndroidStudio ㅇ Firebase Console에서 프로젝트 생성시 'google-services.json' 파일 다운로드 및 app 하위 경로에 붙여넣기 ㅇ build.gradle(Project 수준)에서 다음 내용 추가dependencies { classpath 'com.google.gms:google-services:3.3.1' } ㅇ build.gradle(app 수준)에서 다음 내용 추가 후 sync now 선택하여 sync 맞춤dependencies { implementation 'com.google.firebase:firebase-messaging:15.0.2' } apply plugin: 'com.google.gms.goo..
2018.07.06 -
개선된 로딩 화면 (Splash Screen)
예전에 안드로이드 로딩 화면 구현하기에 대해 포스팅한 적이 있다. 같은 내용에 대해 다시 글을 작성하는 이유는 보다 나은 방법을 알게 되었기 때문이다.기존의 구현위의 포스팅을 확인해보면 알겠지만, 기존에 사용했던 방법은 핵심은 로딩 화면에서 Handler.postDelayed를 이용하여 일정 시간의 지연을 주는 것이다. 이러한 구현 방법에 대해 사용자의 입장과 개발자의 입장에서 다시 한번 고민할 필요가 있다.1. 일정 시간의 기준?로딩 화면 지연을 위한 ‘일정 시간’의 기준은 없다. 사용자는 로딩 화면이 띄어질 때 무엇을 하고 있는지 알 수 없으며 알고 싶지 않을 수도 있다. 즉, 앱을 실행할 때마다 ‘일정 시간’을 로딩 화면을 보면서 시간 낭비한다고 생각할 수도 있겠다.2. 안드로이드 앱의 Cold S..
2018.07.02