나는 동영상 업로드기능을 구현하면서, 백그라운드 스레드 관리의 중요성에 대해서 알게 되었다.왜 백그라운드 스레드를 관리해야 할까?메인 스레드로 하면, 개발자 입장에서 코드 짜기도 쉬운데...바로 '사용자 경험' 때문이다.예를들어, http 레트로핏 요청으로 서버에 동영상 파일을 업로드 하면 짧게는 20초~1분 가량 시간이 걸렸다.이런 경우에 http요청은 응답이 올때까지 기다리는 특성이 있어서, 액티비티에서 http 요청을 보낸 경우엔 계속 대기를 해야 한다.사용자 입장에서는 언제까지 기다려야 하는지 알길이 없기 때문에앱을 끄고 싶어진다... 따라서, 멀끔한 앱이 될 수 있도록(1)동영상 업로드 요청을 비동기적으로 처리(요청을 보낸 후 응답과 관계없이 다음 동작을 실행)하고, (2)동영상이 잘 업로드 되..
더보기 ubuntu@ip-172-31-46-103:/var/www/html$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer..
s3란? aws s3는 스토리지 서비스(Storage Service)이다. 쉽게 말하자면 특정한 사진,동영상 등의 파일을 저장하기 위해 사용할 수 있는 서비스이다. s3에서 객체(Object)란 저장되는 파일을 의미하고, 버킷(Bucket)은 파일이 저장될 프로젝트를 의미한다 s3는 키(고유 식별자)와 값(데이터 자체)로 구성된 데이터 조각인 개체의 개념을 기반으로 한다. 개체는 텍스트 파일에서 이미지 및 비디오 같은 멀티미디어 콘텐츠에 이르기까지 무엇이든 될 수 있다. 크기는 최대 5TB가 될 수 있다. 동영상 업로드 시간을 줄여보고자, 동영상 파일을 ffmpeg로 압축하여, s3 bucket에 업로드 했다. 220MB => 13.5MB로 확실히 압축되긴 했지만 압축하는데 시간이 너무 오래 걸린다. /..
우리가 php server에서 fcm server로 알림 데이터를 보낼때는, php server에서 server key를 첨부해서 데이터를 보내줘야 한다. server key는 모두가 알듯이 파이어베이스 콘솔에서 발급받은 후 확인할 수 있다 다음 링크는 서버키 발급이 완료된 후, 확인할 수 있는 링크이다. https://console.firebase.google.com/project/tiki-taka-22f76/settings/cloudmessaging 로그인 - Google 계정 이메일 또는 휴대전화 accounts.google.com 그런데, 이 링크에서 서버키를 확인할 수 없는 경우가 있다.... 서버키를 파일로만 가지고 있고, 홈페이지에 따로 서버키가 안뜨는 경우이다. 해결방법 Cloud Mess..
public class FirebaseCloudMessageService { // 알림 메시지와 데이터 페이로드 포함 public static void sendMessage(String registrationToken, String content, int messageId, int roomId, String name, String userProfile) throws Exception { // 데이터 메세지 // 포그라운드, 백그라운드에서는 직접 일관되게 처리 Message message = Message.builder() // 메시지 구성을 시작할 수 있는 Builder 객체가 반환 .putData("title", name) // 알림 제목을 데이터 페이로드에 추가 .putData("userProfile..
fcm을 사용하려고 여러 세팅을 하던 도중에, 새로운 토큰은 발급 받았으나 새 토큰이 불러와지지 않는 문제가 발생했다. public class MyFirebaseMessagingService extends FirebaseMessagingService { String CHANNEL_ID; String CHANNEL_NAME; int userId; ChatApiService service; private static final String TAG = "FCM Service"; // 서비스가 생성될 때 호출되며, 여기서 FCM 토큰을 요청하는 것이 좋습니다. @Override public void onCreate() { super.onCreate(); userId = SharedPreferencesHelper..
다음은 로버트 C. 마틴 Clean Code(클린 코드)를 읽고, 정리한 내용입니다. 적절한 행 길이를 유지하라 500줄을 넘어가지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다는 사실이다. 반드시 지킬 엄격한 규칙은 아니지만, 바람직한 규칙으로 삼았으면 좋겠다. 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. 수직거리 서로 밀접한 개념은 세로로 가까이 둬야 한다. 물론 두 개념이 서로 다른 파일에 속한다면 규칙이 통하지 않는다. 하지만, 타당한 근거가 없다면, 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 이게 바로 protected 변수를 피해야 하는 이유 중 하나다. (protected 변수 : 자식 클래스가 부모 클래스의 멤버(변수나 메서드)에 접근하거나 수정해야 할 ..
EXPRESSIONS SENTENCE DEFINITION make it up to So I thought of a few ways you guys can make it up to me. 보상해주다 hard drugs