From 9a402bde78c00b594127fa27139ecc2d15e3498e Mon Sep 17 00:00:00 2001 From: lifeadventurer Date: Mon, 4 Mar 2024 00:12:44 +0800 Subject: [PATCH 1/6] fix: pwa support install fail --- fortune_generator/{json => }/manifest.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename fortune_generator/{json => }/manifest.json (100%) diff --git a/fortune_generator/json/manifest.json b/fortune_generator/manifest.json similarity index 100% rename from fortune_generator/json/manifest.json rename to fortune_generator/manifest.json -- 2.49.1 From 59f9ffaa999dc680dd3a28c0c9dd96386a376d23 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Wed, 6 Mar 2024 22:29:03 +0800 Subject: [PATCH 2/6] docs: add docs about distribution of fortune item --- docs/bad_fortune_statistics.png | Bin 0 -> 30535 bytes docs/fortune_status_statistics.md | 8 + docs/good_fortune_statistics.png | Bin 0 -> 34046 bytes docs/main.js | 272 ++++++++++++++++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 docs/bad_fortune_statistics.png create mode 100644 docs/good_fortune_statistics.png create mode 100644 docs/main.js diff --git a/docs/bad_fortune_statistics.png b/docs/bad_fortune_statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..947761906424f983bde20c10591c6027ec5747e0 GIT binary patch literal 30535 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
b@$CgW^()k8DL#iUFt;ytxEe7G1 ze8lV;!tmR3#E)C~E6cM6Kj=90<~k8y)3bHAQzCJGep>Q?B}Alxd(}~uFyxeDOYW@Jld>D6Lj9+ zT56Tx&aTRgojtY`ZWO7JMFOm=;ytGh>GwYt&;8p=0n{Z)ifXItw5 zxtRFqFEJd?Jh_wh)n5ljYqLc~-{|+hJ=%Do5M8tE=(y%Kg#TTnL2;;zk}=I>M=$Ti zkL*l*W~OEiYLUe+UxiIP=1DpFiKRVlzL;$aj$bPsh&W{U#STuv!~-RK)vq$3%w2xc z!P!ixRp_k23&VKdC#%_D2c+H=@V36xlsaVCXBEGxJk5z1zIQB@3vjxvs8f_) zX4~iHp!upd*|PBegs(vMp46M;9m^&<&3EOptV4MC(4&sAOzKC1v3z1F)cjqxxLSxQ z5e9rnlRpRRX{L`sYVH0KBm$8}PA!w^>(pfKZf%7Zkllc|;cEhq6oTcP(ekr3y3N6f$*KB5Xr9=(na}Vti%o24cU3$)zg<>D#PhDt zIpY_(yV*QxP>5f5Q;?fYFyN%6)iA%eR7mA@KDuwsDn>rPmtcItPq>#Xa?>;1%X?qQE8b(2 zdlQRk&0AZ{5>QvI3A;x~qjR`OWi2>kyG { + console.log(err); +}); + +function check(n1, n2, n3, n4) { + if (n1 > 255 || n2 > 255 || n3 > 255 || n4 > 255) return false; + + + if (n1 === 10) return false; + + if (n1 === 127 && n2 === 0 && n3 === 0) return false; + + if (n1 == 169 && n2 == 254) return false; + + if (n1 === 172) if (n2 >= 16 && n2 <= 31) return false; + + if (n1 === 192) { + if (n2 === 168) return false; + if (n2 === 0 && n3 === 0) return false; + if (n2 === 0 && n3 === 2) return false; + if (n2 === 88 && n3 === 99) return false; + } + + return true; +} + +function run(year, month, date, day, ip) { + let num = ip; + let index = `${ip[0]}.${ip[1]}.${ip[2]}.${ip[3]}`; + let d = new Date(year, month, date); + + let hashDate = Math.round(Math.log10(year * ((month << (Math.log10(num[3]) + day - 1)) * (date << Math.log10(num[2] << day))))); + let seed1 = (num[0] >> hashDate) * (num[1] >> Math.min(hashDate, 2)) + (num[2] << 1) * (num[3] >> 3) + (date << 3) * (month << hashDate) + ((year * day) >> 2); + let seed2 = (num[0] << (hashDate + 2)) * (num[1] << hashDate) + (num[2] << 1) * (num[3] << 3) + (date << (hashDate - 1)) * (month << 4) + (year >> hashDate) + ((date * day) >> 1); + + // decide the status + let status_index = ((seed1 + seed2) % statusLen + statusLen) % statusLen; + // buckets[index][Math.max(status_index - parseInt(day / Math.PI), 0)]++; + // buckets[index][status_index]++; + + let set = new Set(); + let l1 = (seed1 % goodLen + goodLen) % goodLen; + let l2 = (((seed1 << 1) + date) % goodLen + goodLen) % goodLen; + + while (l1 == l2) { + l2 = (l2 + 1) % goodLen; + } + + set.add(goodFortunes[l1].event); + set.add(goodFortunes[l2].event); + + let r1 = (((seed1 >> 1) + (d.getMonth() << 3)) % badLen + badLen) % badLen; + while (set.has(badFortunes[r1].event)) { + r1 = (r1 + 2) % badLen; + } + set.add(badFortunes[r1].event); + let r2 = ((((((seed1 << 3) + (d.getFullYear() >> 5) * (date << 2)) % badLen) * seed2) >> 6) % badLen + badLen) % badLen; + while (set.has(badFortunes[r2].event)) { + r2 = (r2 + 1) % badLen; + } + + // write l1, l2, r1, r2 + buckets[index][0] = l1; + buckets[index][1] = l2; + buckets[index][2] = r1; + buckets[index][3] = r2; +} -- 2.49.1 From 6ad51a1b8d99c550251fa5c2f171193b750542c0 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Wed, 6 Mar 2024 23:04:28 +0800 Subject: [PATCH 3/6] remove unused loop --- docs/main.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/docs/main.js b/docs/main.js index b0439f4..92adabc 100644 --- a/docs/main.js +++ b/docs/main.js @@ -172,16 +172,6 @@ const badFortunes = [ const badLen = badFortunes.length; const goodLen = goodFortunes.length; -for (let n1 = 1; n1 <= 255; n1++) { - for (let n2 = 1; n2 <= 255; n2++) { - for (let n3 = 1; n3 <= 255; n3++) { - for (let n4 = 1; n4 <= 254; n4++) { - - } - } - } -} - while (cnt != 2000) { let n1 = parseInt(Math.random() * 255 + 1); let n2 = parseInt(Math.random() * 255 + 1); -- 2.49.1 From ecc924b02bb0601a4e4962dc05af428c0bfd4a49 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Wed, 6 Mar 2024 23:11:58 +0800 Subject: [PATCH 4/6] docs: add description of statistics method --- docs/fortune_status_statistics.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/fortune_status_statistics.md b/docs/fortune_status_statistics.md index 2858782..db7d40b 100644 --- a/docs/fortune_status_statistics.md +++ b/docs/fortune_status_statistics.md @@ -22,6 +22,8 @@ # 當天宜忌出現分佈統計 ### 2000個IP 共兩組 +統計方法:隨機2000個IP在同一天內出現的宜忌項目總數和 + ![宜](./good_fortune_statistics.png) ![忌](./bad_fortune_statistics.png) -- 2.49.1 From ca4d039ce83e096e6f8679c6c991d3e91a3c2462 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Wed, 6 Mar 2024 23:35:58 +0800 Subject: [PATCH 5/6] style: add comment and format code --- docs/main.js | 82 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/docs/main.js b/docs/main.js index 92adabc..4d6939d 100644 --- a/docs/main.js +++ b/docs/main.js @@ -1,12 +1,5 @@ var fs = require('fs') -let num = [26, 236, 238, 27]; -const dates = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 30]; -const statusLen = 8; -var buckets = {}; -let day = 0; -var cnt = 0; - const goodFortunes = [ { "event": "睡覺", @@ -171,68 +164,97 @@ const badFortunes = [ const badLen = badFortunes.length; const goodLen = goodFortunes.length; +let num = null; +const dates = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 30]; +const statusLen = 8; +var buckets = {}; +let day = 0; +var run_cnt = 0; -while (cnt != 2000) { - let n1 = parseInt(Math.random() * 255 + 1); - let n2 = parseInt(Math.random() * 255 + 1); - let n3 = parseInt(Math.random() * 255 + 1); - let n4 = parseInt(Math.random() * 255 + 1); +while (run_cnt != 2000) { + let n1 = parseInt(Math.random() * 255 + 1); + let n2 = parseInt(Math.random() * 255 + 1); + let n3 = parseInt(Math.random() * 255 + 1); + let n4 = parseInt(Math.random() * 255 + 1); - if (!check(n1, n2, n3, n4)) continue; + if (!check_ip_valid(n1, n2, n3, n4)) continue; - // buckets[`${n1}.${n2}.${n3}.${n4}`] = [0, 0, 0, 0, 0, 0, 0, 0]; - buckets[`${n1}.${n2}.${n3}.${n4}`] = [0, 0, 0, 0]; - for (let i = 1; i <= 12; i++) { - for (let j = 1; j <= dates[i - 1]; j++) { - day %= 7; - run(2023, i, j, day, [n1, n2, n3, n4]); - day++; - } + let index = `${n1}.${n2}.${n3}.${n4}`; + // buckets[`${n1}.${n2}.${n3}.${n4}`] = [0, 0, 0, 0, 0, 0, 0, 0]; + buckets[`${n1}.${n2}.${n3}.${n4}`] = [0, 0, 0, 0]; + for (let i = 1; i <= 12; i++) { + for (let j = 1; j <= dates[i - 1]; j++) { + day %= 7; + run(2023, i, j, day, [n1, n2, n3, n4]); + day++; } + } - cnt++; + run_cnt++; } fs.writeFile('./res.txt', JSON.stringify(buckets), err => { console.log(err); }); -function check(n1, n2, n3, n4) { +function check_ip_valid(n1, n2, n3, n4) { if (n1 > 255 || n2 > 255 || n3 > 255 || n4 > 255) return false; - + // private network if (n1 === 10) return false; + // Carrier-grade NAT + if (n1 == 100 && n2 == 64) return false; + + // localhost if (n1 === 127 && n2 === 0 && n3 === 0) return false; + // link-local address if (n1 == 169 && n2 == 254) return false; + // private network if (n1 === 172) if (n2 >= 16 && n2 <= 31) return false; if (n1 === 192) { - if (n2 === 168) return false; - if (n2 === 0 && n3 === 0) return false; - if (n2 === 0 && n3 === 2) return false; - if (n2 === 88 && n3 === 99) return false; + if (n2 === 168) return false; // private network + if (n2 === 0 && n3 === 0) return false; // IANA RFC 5735 + if (n2 === 0 && n3 === 2) return false; // TEST-NET-1 RFC 5735 + if (n2 === 88 && n3 === 99) return false; // 6to4 } + if (n1 == 198) { + if (n2 == 18) return false; // RFC 2544 + if (n2 == 51 && n3 == 100) return false; // TEST-NET-2 RFC 5735 + } + + if (n1 == 203 && n3 == 113) return false; // TEST-NET-3 RFC 5735 + + // class D network + if (n1 == 224) return false; + + // class E network + if (n1 == 255) return false; + return true; } +// calculate hash and write result function run(year, month, date, day, ip) { let num = ip; let index = `${ip[0]}.${ip[1]}.${ip[2]}.${ip[3]}`; let d = new Date(year, month, date); + // original hash function let hashDate = Math.round(Math.log10(year * ((month << (Math.log10(num[3]) + day - 1)) * (date << Math.log10(num[2] << day))))); let seed1 = (num[0] >> hashDate) * (num[1] >> Math.min(hashDate, 2)) + (num[2] << 1) * (num[3] >> 3) + (date << 3) * (month << hashDate) + ((year * day) >> 2); let seed2 = (num[0] << (hashDate + 2)) * (num[1] << hashDate) + (num[2] << 1) * (num[3] << 3) + (date << (hashDate - 1)) * (month << 4) + (year >> hashDate) + ((date * day) >> 1); // decide the status let status_index = ((seed1 + seed2) % statusLen + statusLen) % statusLen; - // buckets[index][Math.max(status_index - parseInt(day / Math.PI), 0)]++; - // buckets[index][status_index]++; + // buckets[index][Math.max(status_index - parseInt(day / Math.PI), 0)]++; // old hash + // buckets[index][status_index]++; // current hash + // make sure the events won't collide let set = new Set(); let l1 = (seed1 % goodLen + goodLen) % goodLen; let l2 = (((seed1 << 1) + date) % goodLen + goodLen) % goodLen; -- 2.49.1 From 693d778d05126cc0ef48d735f6de68bb9eea7d6f Mon Sep 17 00:00:00 2001 From: Moon <108756201+LifeAdventurer@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:42:30 +0800 Subject: [PATCH 6/6] refactor: fortune_status_statistics.md Use tables to better display statistical results --- docs/fortune_statistics.md | 26 ++++++++++++++++++++++++++ docs/fortune_status_statistics.md | 30 ------------------------------ 2 files changed, 26 insertions(+), 30 deletions(-) create mode 100644 docs/fortune_statistics.md delete mode 100644 docs/fortune_status_statistics.md diff --git a/docs/fortune_statistics.md b/docs/fortune_statistics.md new file mode 100644 index 0000000..03136c7 --- /dev/null +++ b/docs/fortune_statistics.md @@ -0,0 +1,26 @@ +# Distribution of fortune +### 2000 IPs for 365 days, two groups in total + +| Fortune Status | Percentage (1st time) | Percentage (2nd time) | +|-----------------|------------------------|------------------------| +| 大吉 | 20.33% | 20.30% | +| 中吉 | 14.37% | 14.34% | +| 小吉 | 10.57% | 10.59% | +| 吉 | 14.49% | 14.44% | +| 末吉 | 10.14% | 10.24% | +| 中平 | 14.29% | 14.40% | +| 凶 | 8.64% | 8.60% | +| 大凶 | 7.17% | 7.09% | + +# Distribution statistics of daily fortune events + +Statistical method: The sum of the number of fortune events that occurred for 2,000 random IPs on the same day. + +The x-axis is the index value and the y-axis is the number of times. + +| 宜 (Good Fortune) | 忌 (Bad Fortune) | +|------------------------------------------------|----------------------------------------------| +| ![Good Fortune](./good_fortune_statistics.png) | ![Bad Fortune](./bad_fortune_statistics.png) | + + +[Statistics code](./main.js) diff --git a/docs/fortune_status_statistics.md b/docs/fortune_status_statistics.md deleted file mode 100644 index db7d40b..0000000 --- a/docs/fortune_status_statistics.md +++ /dev/null @@ -1,30 +0,0 @@ -# 運勢出現分佈 -### 2000個IP 365天 共兩組 - -大吉: 20.33% -中吉: 14.37% -小吉: 10.57% -吉: 14.49% -末吉: 10.14% -中平: 14.29% -凶: 8.64% -大凶: 7.17% - -大吉: 20.30% -中吉: 14.34% -小吉: 10.59% -吉: 14.44% -末吉: 10.24% -中平: 14.40% -凶: 8.60% -大凶: 7.09% - -# 當天宜忌出現分佈統計 -### 2000個IP 共兩組 - -統計方法:隨機2000個IP在同一天內出現的宜忌項目總數和 - -![宜](./good_fortune_statistics.png) -![忌](./bad_fortune_statistics.png) - -[統計程式](./main.js) -- 2.49.1