- 09:30~09:49 PSMD: [machines model](#20240801093000)

- 14:00~14:39	raw: [设计新版raw.js架构。](#20240801140000)
- 14:30~14:59	raw: [新版raw.js的子命令-营养成分详情](#20240801143000)
- 16:00~16:59	learn: [schema in ipld,coding time.](#20240801160000)
This commit is contained in:
黄勇刚 2024-08-01 17:29:43 +08:00
parent 5cb266921e
commit 8fb72d8cc8
2 changed files with 461 additions and 42 deletions

View File

@ -1,27 +1,446 @@
# 2024.08.01.
计划
小结
<a id="top"></a>
根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md)今天绑定模版1(1b)。
| 时间片 | 时长 | 用途 | 手稿 |
| --- | --- | :---: | --- |
| 05:20~05:34 | 15 | 休整 | |
| 05:35~06:34 | 60 | 备餐、运动 | |
| 06:35~07:19 | 45 | 早餐 | |
| 07:20~08:04 | 45 | 会议、自习 | |
| 08:05~09:28 | 84 | 休整 | |
| 09:30~10:59 | 90 | 静默工作 | PSMD:machines model [在线](http://simp.ly/p/j1SspP) [离线](../../draft/2024/08/20240801093000.md) <a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[PSMD:machines model]任务&body=日期: 20240801%0D%0A序号: 5%0D%0A手稿:../../draft/2024/08/20240801093000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[想法]</a> |
| 11:00~13:59 | 180 | 备餐、午餐午休 | |
| 14:00~14:29 | 30 | 静默工作 | raw:设计新版raw.js架构。 [在线](http://simp.ly/p/8t3vlk) [离线](../../draft/2024/08/20240801140000.md) <a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[raw:设计新版raw.js架构。]任务&body=日期: 20240801%0D%0A序号: 7%0D%0A手稿:../../draft/2024/08/20240801140000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[想法]</a> |
| 14:30~14:59 | 30 | 静默工作 | raw:新版raw.js的子命令-营养成分详情 [在线](http://simp.ly/p/5k9gJy) [离线](../../draft/2024/08/20240801143000.md) <a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[raw:新版raw.js的子命令-营养成分详情]任务&body=日期: 20240801%0D%0A序号: 8%0D%0A手稿:../../draft/2024/08/20240801143000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[想法]</a> |
| 15:00~15:59 | 60 | 休整 | |
| 16:00~16:59 | 60 | 静默工作 | learn:schema in ipld,coding time. [在线](http://simp.ly/p/4QDThK) [离线](../../draft/2024/08/20240801160000.md) <a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[learn:schema in ipld,coding time.]任务&body=日期: 20240801%0D%0A序号: 10%0D%0A手稿:../../draft/2024/08/20240801160000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[想法]</a> |
| 17:00~18:59 | 120 | 晚餐 | |
| 19:00~19:59 | 60 | 讨论、整理提交 | |
<a id="index"></a>
- 09:30~09:49 PSMD: [machines model](#20240801093000)
- 14:00~14:39 raw: [设计新版raw.js架构。](#20240801140000)
- 14:30~14:59 raw: [新版raw.js的子命令-营养成分详情](#20240801143000)
- 16:00~16:59 learn: [schema in ipld,coding time.](#20240801160000)
---
season stat:
- 09:30~10:59 PSMD: [machines model](../../draft/2024/08/20240801093000.md)
- 14:00~14:29 raw: [设计新版raw.js架构。](../../draft/2024/08/20240801140000.md)
- 14:30~14:59 raw: [新版raw.js的子命令-营养成分详情](../../draft/2024/08/20240801143000.md)
- 16:00~16:59 learn: [schema in ipld,coding time.](../../draft/2024/08/20240801160000.md)
| task | alloc | sold | hold | todo |
| :---: | ---: | ---: | ---: | ---: |
| total | 17700 | 6427 | 11273 | 3600 |
| PSMD | 7000 | 1472 | 5528 | 555 |
| ego | 4000 | 1472 | 2528 | 765 |
| infra | 2000 | 90 | 1910 | 0 |
| xuemen | 1500 | 165 | 1335 | 450 |
| raw | 500 | 390 | 110 | 120 |
| learn | 1500 | 1485 | 15 | 1110 |
| js | 1200 | 1353 | -153 | 600 |
---
waiting list:
- 30分钟时间片
- raw的第1号事项新版raw.js的子命令-营养成分详情
- raw的第2号事项新版raw.js的子命令-营养成分排序
- learn的第6号事项linkml, yaml-ld, coding time.
- learn的第7号事项Decentralized Identifiers
- 60分钟时间片
- learn的第1号事项IPLD DSL sample
- js的第1号事项learn Orbitdb
- ego的第2号事项eventemitter sample
- learn的第2号事项learn IPLD Codes, https://ipld.io/docs/data-model/node/
- 90分钟时间片
- PSMD的第1号事项machines model
- PSMD的第2号事项整理新版本term的manifest code
- learn的第3号事项learn IPLD ADLs https://ipld.io/docs/advanced-data-layouts/
- PSMD的第4号事项以1406为例检查知识图谱和blawx的语法
- 195分钟时间片
- ego的第1号事项新版ego, instance or model, any manifest
- xuemen的第1号事项kernel模型升级
- xuemen的第2号事项重新设计S2状态下的学门基本管理制度
- PSMD的第3号事项term + COM matedata -> deploy metadata -> deploy view
---
<a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[machines model]任务&body=日期: 2024.08.01.%0D%0A序号: 5%0D%0A手稿:../../draft/2024/08/20240801093000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[email]</a> | [top](#top) | [index](#index)
<a id="20240801093000"></a>
## 09:30~10:59
PSMD: [machines model]
- readme: |
- a sample instance of machine,FPM,FSM in manifest code
- read D:\huangyg\git\draft\2024\07\20240723160000.md
- read 2024.07.24. 09:30, 2024.07.25. 09:30, 2024.07.26. 09:30 draft
- 实现FPM+FSM
- 从FSM、FPM中抽象出统一的mechine
- 实现joint、split机制
- machine和event listener的对比
- machine适合处理event+相关背景情况,再决定行为。
- event listener适合event直接决定行为。
- 它们根据情况组合使用,不同地方嵌套上的内外关系不同。
---
<a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[设计新版raw.js架构。]任务&body=日期: 2024.08.01.%0D%0A序号: 7%0D%0A手稿:../../draft/2024/08/20240801140000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[email]</a> | [top](#top) | [index](#index)
<a id="20240801140000"></a>
## 14:00~14:29
raw: [设计新版raw.js架构。]
- readme: |
- 增加子命令和参数。
- 划分独立模块。
- 时间段可以作为独立的参数food、health作为子命令。
- raw的目标
- 提供更多的优质时间片
- 为上一个目标积累知识
- health
- 不断细化身体换季的外部条件:室外温度、湿度,室内温度、湿度。
- 积累更多身心状态的指标,弹性的增加、减少指标。
- 更准确的判定当天的身心状态,调整最合适的任务种类和时间模版。
- food
- 食材的消化率
- 差异化设定不同身心状态下的DRIs
---
<a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[新版raw.js的子命令-营养成分详情]任务&body=日期: 2024.08.01.%0D%0A序号: 8%0D%0A手稿:../../draft/2024/08/20240801143000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[email]</a> | [top](#top) | [index](#index)
<a id="20240801143000"></a>
## 14:30~14:59
raw: [新版raw.js的子命令-营养成分详情]
- learn js object factory, constructor first
- '60': learn factory, constructor, prototype
readme: |
- https://juejin.cn/post/6844903653774458888
- https://segmentfault.com/a/1190000019054466
- https://www.javascripttutorial.net/javascript-factory-functions/
-https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes
---
<a href="mailto:huangyg@mars22.com?subject=关于2024.08.01.[schema in ipld,coding time.]任务&body=日期: 2024.08.01.%0D%0A序号: 10%0D%0A手稿:../../draft/2024/08/20240801160000.md%0D%0A---请勿修改邮件主题及以上内容 从下一行开始写您的想法---%0D%0A">[email]</a> | [top](#top) | [index](#index)
<a id="20240801160000"></a>
## 16:00~16:59
learn: [schema in ipld,coding time.]
- readme: |
- https://www.npmjs.com/package/@ipld/schema
- https://github.com/ipld/js-ipld-schema
- read 2024.07.22 14:00 draft
- D:\huangyg\git\js.sample\ipld
- npm i @ipld/schema
- "type": "module" -> D:\huangyg\git\js.sample\ipld\package.json
```
D:\huangyg\git\js.sample\ipld>node from-dsl.js
{
SimpleStruct: {
struct: {
fields: {
foo: { type: 'Int' },
bar: { type: 'Bool' },
baz: { type: 'String' }
},
representation: { map: {} }
}
},
MyMap: { map: { keyType: 'String', valueType: 'SimpleStruct' } }
}
D:\huangyg\git\js.sample\ipld>node to-dsl.js
type SimpleStruct struct {
foo Int
bar Bool
baz String
}
type MyMap {String:SimpleStruct}
```
```
D:\huangyg\git\js.sample\ipld>node to-typed
Typed form: {
name: 'Home',
width: 460,
depth: 200,
plants: [
{ species: 'Murraya', height: 30 },
{ species: 'Murraya', height: 28 },
{ species: 'Murraya', height: 29 },
{ species: 'StarJasmine', height: 10 },
{ species: 'StarJasmine', height: 11 },
{ species: 'Lemon', height: 140 },
{ species: 'Camellia', height: 230 },
{ species: 'Camellia', height: 200 }
]
}
D:\huangyg\git\js.sample\ipld>node from-typed
Modified representation data: ["Home",460,250,[[1,32],[1,30],[1,30],[2,10],[2,11],[3,140],[4,230],[4,200],[2,5]]]
```
- npm i @ipld/schema -g
- 用dsl写一个ipldsch文件
```
D:\huangyg\git\js.sample\ipld>ipld-schema validate dsl.ipldsch
Validated dsl.ipldsch ...
D:\huangyg\git\js.sample\ipld>ipld-schema validate dsl.ipldsch
Could not validate dsl.ipldsch: Error parsing schema @ line:5 col:4: Expected "#", "advanced", "representation", "type", [ \t\n\r], or end of input but "," found.
D:\huangyg\git\js.sample\ipld>ipld-schema to-js dsl.ipldsch
/** Auto-generated with @ipld/schema@v5.0.0 at Thu Aug 01 2024 from IPLD Schema:
*
* type SimpleStruct struct {
* foo Int
* bar Bool
* baz String
* }
* type MyMap { String: SimpleStruct }
*/
const Kinds = {
Null: /** @returns {undefined|null} */ (/** @type {any} */ obj) => obj === null ? obj : undefined,
Int: /** @returns {undefined|number} */ (/** @type {any} */ obj) => Number.isInteger(obj) ? obj : undefined,
Float: /** @returns {undefined|number} */ (/** @type {any} */ obj) => typeof obj === 'number' && Number.isFinite(obj) ? obj : undefined,
String: /** @returns {undefined|string} */ (/** @type {any} */ obj) => typeof obj === 'string' ? obj : undefined,
Bool: /** @returns {undefined|boolean} */ (/** @type {any} */ obj) => typeof obj === 'boolean' ? obj : undefined,
Bytes: /** @returns {undefined|Uint8Array} */ (/** @type {any} */ obj) => obj instanceof Uint8Array ? obj : undefined,
Link: /** @returns {undefined|object} */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID === obj ? obj : undefined,
List: /** @returns {undefined|Array<any>} */ (/** @type {any} */ obj) => Array.isArray(obj) ? obj : undefined,
Map: /** @returns {undefined|object} */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID !== obj && !Array.isArray(obj) && !(obj instanceof Uint8Array) ? obj : undefined
}
/** @type {{ [k in string]: (obj:any)=>undefined|any}} */
const Types = {
Int: Kinds.Int,
Bool: Kinds.Bool,
String: Kinds.String,
SimpleStruct: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
if (Kinds.Map(obj) === undefined) {
return undefined
}
const entries = Object.entries(obj)
/** @type {{[k in string]: any}} */
let ret = obj
let requiredCount = 3
for (let i = 0; i < entries.length; i++) {
const [key, value] = entries[i]
switch (key) {
case 'foo':
{
requiredCount--
const v = Types.Int(obj[key])
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.foo = v
}
}
break
case 'bar':
{
requiredCount--
const v = Types.Bool(obj[key])
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.bar = v
}
}
break
case 'baz':
{
requiredCount--
const v = Types.String(obj[key])
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.baz = v
}
}
break
default:
return undefined
}
}
if (requiredCount > 0) {
return undefined
}
return ret
},
MyMap: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
if (Kinds.Map(obj) === undefined) {
return undefined
}
const keys = Object.keys(obj)
for (let i = 0; i < keys.length; i++) {
let v = obj[keys[i]]
v = Types.SimpleStruct(v)
if (v === undefined) {
return undefined
}
if (v !== obj[keys[i]]) {
/** @type {{[k in string]: any}} */
const ret = {}
for (let j = 0; j < keys.length; j++) {
if (j < i) {
ret[keys[j]] = obj[keys[i]]
} else if (j === i) {
ret[keys[j]] = v
} else {
let v = obj[keys[j]]
v = Types.SimpleStruct(v)
if (v === undefined) {
return undefined
}
ret[keys[j]] = v
}
}
return ret
}
}
return obj
}
}
/** @type {{ [k in string]: (obj:any)=>undefined|any}} */
const Reprs = {
Int: Kinds.Int,
Bool: Kinds.Bool,
String: Kinds.String,
SimpleStruct: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
if (Kinds.Map(obj) === undefined) {
return undefined
}
const entries = Object.entries(obj)
/** @type {{[k in string]: any}} */
let ret = obj
let requiredCount = 3
for (let i = 0; i < entries.length; i++) {
const [key, value] = entries[i]
switch (key) {
case 'foo':
{
requiredCount--
const v = Reprs.Int(value)
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.foo = v
}
}
break
case 'bar':
{
requiredCount--
const v = Reprs.Bool(value)
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.bar = v
}
}
break
case 'baz':
{
requiredCount--
const v = Reprs.String(value)
if (v === undefined) {
return undefined
}
if (v !== value || ret !== obj) {
if (ret === obj) {
/** @type {{[k in string]: any}} */
ret = {}
for (let j = 0; j < i; j++) {
ret[entries[j][0]] = entries[j][1]
}
}
ret.baz = v
}
}
break
default:
return undefined
}
}
if (requiredCount > 0) {
return undefined
}
return ret
},
MyMap: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
if (Kinds.Map(obj) === undefined) {
return undefined
}
const keys = Object.keys(obj)
for (let i = 0; i < keys.length; i++) {
let v = obj[keys[i]]
v = Reprs.SimpleStruct(v)
if (v === undefined) {
return undefined
}
if (v !== obj[keys[i]]) {
/** @type {{[k in string]: any}} */
const ret = {}
for (let j = 0; j < keys.length; j++) {
if (j < i) {
ret[keys[j]] = obj[keys[i]]
} else if (j === i) {
ret[keys[j]] = v
} else {
let v = obj[keys[j]]
v = Reprs.SimpleStruct(v)
if (v === undefined) {
return undefined
}
ret[keys[j]] = v
}
}
return ret
}
}
return obj
}
}
export const SimpleStruct = {
toTyped: Types.SimpleStruct,
toRepresentation: Reprs.SimpleStruct
}
export const MyMap = {
toTyped: Types.MyMap,
toRepresentation: Reprs.MyMap
}
```
- 还挺顺手的比linkml、json schema都精简、灵活。下一步用raw项目试试
- '60': IPLD DSL sample
readme: |
- read 2024.08.01. 16:00 draft
- make schema sample use raw\food

View File

@ -6,57 +6,57 @@
如果绑定模版2a可能安排以下任务
- 07:45 新版ego, instance or model, any manifest -ego[0]
- 14:00 整理新版本term的manifest code -PSMD[0]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 14:00 machines model -PSMD[0]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版2b可能安排以下任务
- 09:30 整理新版本term的manifest code -PSMD[0]
- 14:00 learn IPLD ADLs https://ipld.io/docs/advanced-data-layouts/ -learn[1]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 09:30 machines model -PSMD[0]
- 14:00 整理新版本term的manifest code -PSMD[1]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版2c可能安排以下任务
- 14:00 整理新版本term的manifest code -PSMD[0]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 14:00 machines model -PSMD[0]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版1a可能安排以下任务
- 07:45 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 09:30 整理新版本term的manifest code -PSMD[0]
- 14:00 新版raw.js的子命令-营养成分排序 -raw[0]
- 14:30 linkml, yaml-ld, coding time. -learn[4]
- 07:45 IPLD DSL sample -learn[0]
- 09:30 machines model -PSMD[0]
- 14:00 新版raw.js的子命令-营养成分详情 -raw[0]
- 14:30 新版raw.js的子命令-营养成分排序 -raw[1]
- 16:00 learn Orbitdb -js[0]
---
如果绑定模版1b可能安排以下任务
- 09:30 整理新版本term的manifest code -PSMD[0]
- 14:00 新版raw.js的子命令-营养成分排序 -raw[0]
- 14:30 linkml, yaml-ld, coding time. -learn[4]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 09:30 machines model -PSMD[0]
- 14:00 新版raw.js的子命令-营养成分详情 -raw[0]
- 14:30 新版raw.js的子命令-营养成分排序 -raw[1]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版1c可能安排以下任务
- 14:00 新版raw.js的子命令-营养成分排序 -raw[0]
- 14:30 linkml, yaml-ld, coding time. -learn[4]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 14:00 新版raw.js的子命令-营养成分详情 -raw[0]
- 14:30 新版raw.js的子命令-营养成分排序 -raw[1]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版1d可能安排以下任务
- 14:00 新版raw.js的子命令-营养成分排序 -raw[0]
- 14:30 linkml, yaml-ld, coding time. -learn[4]
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 14:00 新版raw.js的子命令-营养成分详情 -raw[0]
- 14:30 新版raw.js的子命令-营养成分排序 -raw[1]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版1e可能安排以下任务
- 16:00 learn IPLD Codes, https://ipld.io/docs/data-model/node/ -learn[0]
- 16:00 IPLD DSL sample -learn[0]
---
如果绑定模版1f可能安排以下任务