joonas-yoon / boj-extended

백준 온라인 저지(BOJ)를 확장된 기능과 함께 사용해보세요. 기능 요청과 버그 제보는 언제나 환영합니다.
https://chrome.google.com/webstore/detail/boj-extended/mfcaadoifdifdnigjmfbekjbhehibfel
MIT License
118 stars 18 forks source link

주기적으로 설정이 리셋되는 오류 #132

Closed NFlight11 closed 1 month ago

NFlight11 commented 1 year ago

What happens

대략 7~10일을 주기로 테마, 외부 폰트, 결과 바꾸기 등의 설정이 리셋됩니다. 매번 다시 설정하는 게 상당히 귀찮은데 빠르게 해결이 되기를 희망합니다.

Operating System

Windows

환경

No response

확장 프로그램 버전

1.9.3.1

joonas-yoon commented 1 year ago

음.. 이 이슈는 원인을 전혀 감을 잡을수가 없네요 ;;

여러 컴퓨터에서 여러 버전의 크롬 브라우저로 BOJ Extended를 설치해서 사용하고 있는데, 제 환경에서는 적어도 1.9.3.1 버전은 30일 이상 설정이 유지되고 있네요.

말씀하신 "테마, 외부 폰트, 결과 바꾸기" 는 브라우저 API로 제공되는 Sync Storage 를 사용하고 있습니다. 브라우저에 어떤 계정으로 로그인이 되어있다면, 다른 컴퓨터에서도 같은 계정이라면 동기화를 지원하는 storage 인데요, 지원되지 않는 경우에는 동기화를 하지 않고 local storage를 사용하도록 구현했습니다.

혹시 사용하고 계신 브라우저랑 버전이 어떻게 되나요?

NFlight11 commented 1 year ago

Avast Secure Browser, 버전 108.0.19667.125(공식 빌드) (64비트)입니다. 대체 왜 이러는지 모르겠네요...

joonas-yoon commented 1 year ago

음.. Avast Secure Browser도 Chromium 계열과 동일한 Blink, V8 엔진을 사용하는 것으로 보이는데 브라우저 API 정책이 어떻게 되는 지 모르겠네요.

현재 코드들은 최대한 브라우저 표준 API를 따르도록 작성하고 있고, 배포 버전은 Babel로 트랜스컴파일도 하고 있어서 대부분의 브라우저를 커버할 수 있도록 해둔 상황이기는 합니다.

Avast Secure Browser가 Can I Use 사이트의 호환성 테이블에도 보이지가 않아서 파악하기가 어렵네요..

현재까지 문제 없이 동작하는 것을 확인한 브라우저로는 Google Chrome, NAVER Whale 입니다. 다른 브라우저를 사용하셔도 동일한 현상이 반복되는 지 확인해주실 수 있을까요?

NFlight11 commented 1 year ago

며칠 동안 사용하면서 큰 문제가 없어서 리포팅할 생각이 들지 않았는데, 어제 설정이 리셋됐습니다... Avast Secure Browser 상의 문제인지 아니면 프로그램의 문제인지 분간이 안 가서 뭐라고 할 수가 없네용......

사용하는 브라우저가 Chrome, Whale, Avast 이 세 가지라서 무엇이 원인인지는 잘 모르겠습니다.

joonas-yoon commented 1 year ago

브라우저간에는 스토리지가 독립적이라서 문제를 일으킬 것 같지는 않구요, 크롬 브라우저에서도 동일하게 세팅이 초기화되었나요?

d0h000n commented 1 year ago

저도 동일한 버그를 경험하고 있습니다.

'채점 현황'의 경우 [문제 번호 보기], '문제 난이도'의 경우 [색상 표시], '그룹 목록의 링크'의 경우 [보지 않기], '유저 티어'의 경우 [보기] 로 초기화되고,

'결과 바꾸기'의 '적용할 포맷'은 전부 사라지는데, [사용함]은 그대로입니다.

위와 같은 옵션으로 두 번째 초기화 버그가 일어났고, 제보자 분과 비슷한 일주일 주기입니다.

파이어폭스를 사용했을 때는 '문제 난이도'의 색상 표시 옵션이 없어서 이 부분을 제외하고 똑같은 셋팅을 했었는데 버그가 없었습니다. 크롬으로 최근에 넘어온 뒤부터 이 옵션만 더 선택했고, 버그가 발생 중입니다.

joonas-yoon commented 1 year ago

확실히 이상한 증상이네요. 상세하게 작성해주셔서 감사합니다. 별도로 저장하는 데이터에 수명을 걸지도 않았는데, 비슷한 시간에 초기화 되는 것부터 원인을 찾아봐야겠습니다.

같은 증상을 겪고 계시는 분들도 이 곳에 증상과 백준 사용 빈도, 브라우저 종료 주기를 공유해주시면 감사하겠습니다.

d0h000n commented 1 year ago

저는 백준을 매일 사용하고, 브라우저는 1~2주에 한 번 꼴로 닫는 것 같습니다. 맥을 사용하고요.

joonas-yoon commented 1 year ago

원인을 파악하고 있습니다. 기록을 위해 코멘트로 남깁니다.

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync#storage_quotas_for_sync_data

확장 프로그램의 manifest에 "unlimitedStorage" 권한을 붙였기 때문에 제한 없이 저장할 거라 생각했는데, 그건 storage.local 에 대한 내용이었네요.

https://github.com/joonas-yoon/boj-extended/blob/1868413a65b464eab3a2a065285c46d36ce707b7/src/manifest.json#L71-L76

여러 컴퓨터에서 설정을 동기화된 채로 사용하실 수 있게하려고 storage.sync를 사용하고 있었는데, 위 내용대로라면 합쳐서 100KB 까지만 저장이 가능할 듯 합니다.

그런데 100KB 정도면, 지금의 BOJ extended의 설정들을 저장하기엔 꽤 넉넉한 크기라서 다른 이유도 생각해봤습니다.

  1. 설정만 전체 100KB 를 넘겼다.
    -> set이 불가능한거고, get은 가능할 것임
  2. 다른 브라우저에서 설정을 변경한다면, 두 storage.sync 끼리 병합 시 충돌을 일으킬 수 있다.
    -> 기존 설정을 get 하고 나서 그 값을 변경하고 다시 set을 하게 되어있는데, 그럼 (1)과 같은 상황.
  3. storage.sync에 저장 만료 기간이 있는가?
    -> storage.local은 무한으로 알고 있는데, storage.sync는 확인 필요
joonas-yoon commented 5 months ago

1.9.5.1 버전에서도 동일 증상을 겪고 계신가요?