반응형

매우 자주 사용하는 위젯 중 하나인데, 사용하면서 한가지 문제를 발견했다.

ListView에 담긴 내용에는 텍스트, 여러 사진들, 구글 지도 등이 포함되어 있었다.

그런데 문제는 예를 들어, 사진이 보이지 않는 곳까지 스크롤을 했다가 다시 돌아오면 사진이 다시 로딩되는 경우가 발생한다.

지도의 경우도 지도가 안보이는 영역까지 스크롤했다가 빠르게 돌아오면 지도가 다시 로딩되는 경우가 발생한다.

일단 이것의 원인은 리스트뷰 위젯이 메모리 관리를 위해 보이는 부분과 일부 주변 영역에 대해서만 불러오고 표시하기 때문이다.(캐싱을 하지 않는 것이다.)

그래서 느리게 천천히 스크롤하면 해당 문제가 없는 것처럼 보인다.

이 문제를 해결하기 위해 스크롤 하여 안보이는 곳으로 이동한다해도 그 공간의 내용들을 캐싱해놓는 것이다.

다행히도 ListView에 cacheExtent라는 속성이 존재한다. 이것은 보이는 영역으로부터 얼마만큼의 주변 영역까지 캐싱해놓을지 지정하는 속성이다.

 


픽셀 값이므로 자신이 필요한 만큼 지정해서 사용하면 된다. 무조건 크게 해놓으면 해당 문제는 발생하지 않겠지만 메모리 관련하여 문제가 발생할 수 있으므로 상황에 맞게 적용하는 것이 좋을 것 같다.

 

반응형
반응형

 

EC2를 처음 세팅하고 SSH로 접속하여 date 명령을 실행해보면 시간이 한국 시간과 다르게 표시되어있다.

UTC라고 하는 세계 표준 시간을 사용하기 때문인데 한국 시간에서 9시간을 빼주면 해당 시간이 된다.

좀 더 편하게 시간을 관리하기 위해 시간을 바꾸는데, 보통 여기서 실수를 많이 할 것 같다.

 

sudo date -s "2021-04-07 20:10:36" 

위와 같이 date명령을 이용해서 날짜와 시간을 변경할 수 있지만 위와 같이 한국 시간으로 바로 변경하면 문제가 된다.

EC2 타임존이 기본적으로 UTC(세계 표준시)로 지정되어있으니, 시간 기준은 세계 표준시로 되어있고 날짜와 시간 값만 한국 시간으로 바뀌게 되는 것이다. 이렇게 되면 다른 서비스와 시간 동기를 맞출 경우 시간이 다르다고 판단하여 인증 등의 문제가 발생할 수 있다.

 

즉, 제대로 변경하기 위해서는 타임존을 한국 시간으로 변경하면 별도의 시간을 지정하지 않아도 된다.

 

sudo cat /etc/localtime

 

위 명령어로 읽어보면 UTC0라는 텍스트가 보일 것이며 이것이 UTC 기준으로 시간이 지정된다는 의미이다.

 

sudo rm /etc/localtime

sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

위 두 명령을 차례로 입력해준다.

기존의 UTC기준 타임존 세팅 파일을 제거하고, 서울 기준 타임존 세팅 파일을 적용하는 것이다.

 

sudo cat /etc/localtime 명령으로 확인해보면 KST-9라는 문구가 확인이 된다.

date 명령으로 바로 날짜와 시간을 확인해보면 한국 시간 기준으로 변경된 것을 확인할 수 있다.

 

반응형
반응형

Error: Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: invalid_grant (Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim.)". There are two likely causes: (1) your server time is not properly synced or (2) your certificate key file has been revoked. To solve (1), re-sync the time on your server. To solve (2), make sure the key ID for your key file is still present at https://console.firebase.google.com/iam-admin/serviceaccounts/project. If not, generate a new key file at console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk.  

 

AWS EC2에 노드JS 서버를 올려서 푸시 서비스를 사용하고 있는데 어느 순간 푸시를 보낼 때마다 위와 같은 메세지가 뜨면서 푸시 서비스가 제대로 작동하지 않았다. 위에 의심되는 원인이 나열되어있듯이 나의 문제는 (1)번에 해당했다. 

내가 서버의 시간을 실수로 전혀 다른 시간으로 변경하면서, 푸시를 위해 파이어베이스 인증하는 과정에서 OAUTH 토큰의 유효 시간 체크에 대한 문제가 발생한 것이었다. 이 문제는 다시 서버의 시간을 정상적으로 돌리면서 해결되었다.

위와 같은 문제가 발생했을 때 서버의 시간을 확인하여 실제 시간과 오차가 많이 발생하지 않는지 확인해보도록 한다.

 

반응형

+ Recent posts