Android Java Button Background Color 변경하는 방법

안드로이드 자바에서 버튼 색상을 변경하는 방법이다. 보통의 방법으로 하면 마진이나 라운드 등이 적용되지 않는다. 1. 먼저 기존 배경을 저장한다. Drawable d = button.getBackground(); 2. 저장된 변수를 새로운 색상으로 변경한다. d = DrawableCompat.wrap(d); DrawableCompat.setTintList(d, getResources().getColorStateList(R.color.enableButton)); 3. 수정된 색상을 버튼에 저장한다. button.setBackground(d);

GADInvalidInitializationException The Google Mobile Ads SDK was initialized without AppMeasurement 오류 조치 방법

이미지
 XCode 업데이트 하고 난 후 발생하는 오류인거 같다. 일단 AdMob 의 앱 ID 를 확인하라고 해서 애드몹 사이트에서 확인했다. 그래도 같은 오류가 났다. 혹시나 해서 Cocoapods 도 업데이트를 했다. 그래도 같은 오류가 난다. 해결 방법은 info.plist 다음과 같은 값을 추가하면 된다. 애드몹 광고를 추가할 때 플래그가 하나 더 추가된거 같다.

swift 에서 mp4 파일 bundle 에 추가하고 url 로 가져올 때 nil 값이 나올 경우

이미지
 아이폰 앱에서 사용할 데모 영상파일을 추가하였습니다. 이 파일을 가져오는 버튼 이벤트에 다음과 같이 추가하였습니다. 실제로 실행해보니 가져오지 못하는 겁니다. 프로젝트엔 파일이 있는데요. 이 경우 프로젝트 파일로 갑니다. 그런 다음 타켓을 선택합니다. 상단 탭에 Build Phases 가 있어요. 이 부분에 파일이 없으면 추가합니다. 제 경우엔 여기에 파일이 없어서 추가했더니 잘 나옵니다. 아마도 처음 추가할 때 복사가 잘 안되었던거 같아요.

Xcode 11.7 업데이트 후 iPhone not available 오류 조치 방법

이미지
 Xcode 11.7 로 업데이트를 하였다. 하지만 오류가 생겼다. 오류 화면 - 1 컴파일 할 때 이 화면과 같은 오류가 생겼음 몇번을 다시 연결하고 심지어 XCode를 재설치하기까지 했다. 이에 대한 조치 방법은 아래와 같다. 아이폰 13.6 인데 이에 대한 지원파일이 없는거 같다. 1. 엑스코드를 닫는다 2. 이곳에서 해당 지원파일을 다운로드 받는다. https://github.com/iGhibli/iOS-DeviceSupport 3. 다운 받은 파일을 이곳에 복사한다. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/ 4. 이제 XCode 를 다시 연다 이와 같이 하면 해당 오류는 나지 않는다. 혹시라도 다시 연결해도 컴파일 오류가 난다면 디바이스 연결 부분에서 언페어링을 하고 다시 페어링을 해보도록 한다.

Let's Encrypt Expiry Bot 메일 조치

 네이버 클라우드에 우분투 서버를 하나 운영하고 있다. 여기에 가비아에서 도메인을 하나 사서 연결시켰음 API 서비스를 위해 https 필요해서 LetsEncrypt 설정하여 Haproxy로 부하분산을 설정했다. 처음에 잘 설정되었다고 생각했는데 인증서 갱신이 되지 않았나보다. 찾아보니 설명이 부실하여 나름 다시 적용하고 정리한다. 1. 80 과 443 포트가 열려 있는지 확인하고 열려 있으면 닫는다. $ netstat -an | grep ':80' $ netstat -an | grep ':443' 만약 열려 있다면 닫는 방법은 haproxy 를 중지하면 된다. $ sudo systemctl stop haproxy 2. standalone 으로 인증서를 발급한다. $ sudo certbot certonly --standalone -d www.example.com 인증서가 발급되면 /etc/letsencrypt/live/www.example.com/ 폴더에 파일이 생성된다. 3. haproxy 에서 사용할 인증서로 생성한다. $ DOMAIN='www.example.com' sudo -E bash -c 'cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/letsencrypt/live/$DOMAIN/privkey.pem > /etc/haproxy/$DOMAIN.pem' 4. 이제 haproxy 를 다시 기동한다. $ sudo systemctl start haproxy 

Realm Studio 사용할 때 시뮬레이터 연결 안될때

이미지
 Realm 디비를 오랫만에 다시 사용하게 되었다. 시뮬레이터로 디비의 내용을 확인하면서 개발을 해야 하는데 Realm Studio 프로그램으로 이를 연결하고자 하는데  사용자 폴더에서 라이브러리가 보이지 않는다. 1. 파인더를 연다. 2. 왼쪽 사인더 바에서 사용자를 선택한다. 3. 상단 설정 클릭한다. 4. 새로운 창에서 제일 밑의 라이브러리 폴더 보기를 체크한다.

서버용 스위프트에서 MongoDB 와 Perfect 사용해서 Collection 수가 replyInt 로 나와서 처리가 힘들때

서버용 스위프트로 모듈을 만들때이다. 보통 API 를 만들때 사용한다. 데이터베이스는 MongoDB를 사용했다. 웹서버 모듈은 Perfect 를 사용했고 디비연결은 PerfectMongoDB를 사용했다. 문제는 컬렉션의 수를 셀때이다. 결과 값이 replyInt(500) 이런식으로 나온다. 이를 Int 로 변경해야 처리가 편한데....., 검색해보니 나오지 않는다. 어쩐다...., let countResult = collection.count(query: bson) if case .replyInt(let count) = countResult {   // 여기서 count 가 Int 이므로 처리하면 된다.   print("count \(count)") } 이 방법을 사용하면 카운트의 수를 가져올 수 있다. 처음에 이게 안되어서 find 결과를 세었는데  수가 많아지면 너무 오래 걸려서  결국은 count 를 사용할 수 밖에 없다.