Skip to content

Instantly share code, notes, and snippets.

## BadValueError: Property user must be a User
系統出現了大量的 `BadValueError: Property user must be a User` 錯誤。我們追查後發現在 `2025-03-23T13:59:18+08:00 ~ 2025-03-24T08:00:00+08:00` 區間「更新」或「新增」的 UserProperty 欄位,皆缺少了 `meaning=20`
只要對損壞的 entity 進行 `google.appengine.ext.db.get()`,即會發生此 Exception。
我們有許多 Kind 用到 UserProperty,在這段期間也都有更新,但有問題的資料只發生在 ProblemLog (使用者答題記錄)這個 Kind,頗為不解。但由於我們不會去改動 UserProperty 的 meaning,它屬於 Datastore 底層的實作,因此仍懷疑為 Datastore server 方的問題導致。
@youchenlee
youchenlee / gov.uk.html
Last active August 8, 2023 05:33
progressive enhancement - gov.uk
<!DOCTYPE html>
<html class="govuk-template show-global-bar" lang="en"><!--<![endif]--><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="govuk:analytics:organisations" content="<OT1056>">
<meta name="govuk:primary-publishing-organisation" content="Government Digital Service">
<meta name="govuk:public-updated-at" content="2023-06-28T09:32:34Z">
<meta name="govuk:updated-at" content="2023-07-21T14:29:48Z">
<meta name="govuk:first-published-at" content="2016-02-26T11:53:52Z">
<meta name="govuk:content-id" content="f3bbdec2-0e62-4520-a7fd-6ffd5d36e03a">
<meta name="govuk:schema-name" content="homepage">
// input: "12 / 3", output: 4
// map
(() => {
const split = str => str.split('/')
const divide = arr => arr[0] / arr[1]
const input = [
# Rime default settings
# encoding: utf-8
patch:
schema_list:
- schema: cangjie5
- schema: cangjie5_express
- schema: bopomofo_tw
- schema: luna_pinyin
- schema: luna_pinyin_fluency
- schema: luna_pinyin_simp

Keybase proof

I hereby claim:

  • I am youchenlee on github.
  • I am youchenlee (https://keybase.io/youchenlee) on keybase.
  • I have a public key whose fingerprint is 62DC D621 9C62 0C81 F29F 0F72 C04B 76CA 6346 B185

To claim this, I am signing this object:

@youchenlee
youchenlee / gist:5c0262e73c780cff9c37
Created November 25, 2014 15:56
高雄市登革熱每日確診病例 - 分區人數 (2014-07-01 - 2014-11-24) - JSON
[
{
"date": "2014-07-01",
"data": [
{
"count": "4",
"area": "\u5927\u5bee\u5340"
},
{
"count": "1",
@youchenlee
youchenlee / gist:bb3e4449b5268e1eec83
Created November 25, 2014 09:47
高雄市登革熱每日確診病例 - 分區人數 (2014-10-01 - 2014-11-24)
[2014-10-1]
var AREA = new Array('三民區', '前鎮區', '苓雅區', '小港區', '左營區', '新興區', '鳳山區', '前金區', '大寮區', '仁武區', '鳥松區', '林園區', '大樹區', '六龜區', '鼓山區', '旗山區');
var NUMB = new Array(39, 26, 7, 9, 7, 6, 19, 3, 3, 3, 3, 3, 1, 1, 2, 1);
[2014-10-2]
var AREA = new Array('三民區', '前鎮區', '鳳山區', '小港區', '苓雅區', '新興區', '左營區', '旗山區', '林園區', '大寮區', '鼓山區', '楠梓區', '橋頭區', '鹽埕區', '六龜區');
var NUMB = new Array(35, 31, 20, 20, 7, 3, 8, 1, 1, 3, 2, 1, 1, 1, 1);
[2014-10-3]
var AREA = new Array('小港區', '三民區', '鳳山區', '苓雅區', '前鎮區', '岡山區', '大樹區', '鼓山區', '新興區', '前金區', '林園區', '旗山區', '楠梓區', '鳥松區', '鹽埕區', '左營區', '大社區', '大寮區', '仁武區');
var NUMB = new Array(18, 40, 17, 11, 20, 1, 1, 2, 6, 3, 1, 3, 4, 1, 1, 3, 1, 1, 1);
[2014-10-4]
@youchenlee
youchenlee / gist:9646428
Created March 19, 2014 17:10
選專案主題 FAQ
Q: 主題太大做不完怎麼辦
A:
1. 不用擔心做不完,但要讓自己做的事情有意義。在迭代式軟體開發 (Iterative and incremental development) 的方法下,軟體發展從來都不是一次到位的,而經過不斷地討論、實驗、演進,不會因為專案的大小而有不同。
2. 要做到什麼算是「完成這學期的使命」由各位自行定義,各位下星期的簡報內容就是你們的承諾,請完成承諾。
3. 學期結束後,鼓勵你們繼續參與開發。
Q: 我不知道如何開始
A: 直接上 IRC 詢問吧,相信許多困難的問題可以迎刃而解。
Q: 主題很小可以嗎?