在以前用的 MD5 算法,现在充其量也就只是一个摘要算法。 上面的图片显示来看已经不够安全了。 目前存储用户密码使用更多的会向 Bcrypt 算法转移。 https://www.isharkfly.com/t/topic/15619
在以前用的 MD5 算法,现在充其量也就只是一个摘要算法。 上面的图片显示来看已经不够安全了。 目前存储用户密码使用更多的会向 Bcrypt 算法转移。 https://www.isharkfly.com/t/topic/15619
如有一个 Laravel 项目,在配置好 PHP 版本和运行环境后,可以直接在项目下直接运行: php artisan serve 来启动你的项目。 通过浏览器查看 当项目运行后,默认的启动端口为 8000,可以通过浏览器来进行查看运行的 Laravel 项目。 https://www.isharkfly.com/t/laravel/15614
Jean Talon Market 集市,这也是让当地人最离不开这个街区的原因之一是赫赫有名的让塔隆集市。 如果要问在蒙特利尔这边有那个地方能让你感觉到集市的味道,那么非这个莫属了。 有过一种在国内集市的感觉,如果非要说有那么一点点不同的话,可能也就是相对更加整洁一点点吧。 但需要的烟火气息是一点都没有少,在这里你可以点上现吃的生蚝,你也可以随便拿上一杯咖啡边走边逛。 如果你在美国,大概率的重量单位都是磅,在这个集市你能够看到久违的公斤计量单位。 来到蒙特利尔有人说和去了一趟巴黎差不多,对中国人来说却能感受到久违的集市气息。
Composer 的下载地址为:Composer 1 2024-04-06_16-46-401108×840 50.9 KB 运行安装程序 当启动安装程序后单击下一步继续。 选择 PHP 路径 如果你的计算机上没有安装 PHP 的话,Composer 的安装无法继续。 你需要选择你本地安装的 PHP 路径。 配置代理地址 默认的情况下,可以不用配置代理地址。 确认安装路径 在这个界面中确定需要进行的安装路径。 当安装路径确定后,下一步继续。 安装进程 安装的过程很快,一会就会完成。 设置路径 这个步骤就是给你的的一些提示。 下一步继续就行。 完成安装 当能看到这个界面的时候,说明安装已经完成。 单击完成,结束安装。 查看运行版本 运行命令 composer -V 来查看当前 composer 运行的版本。 需要注意的是 V 是大写的。 https://www.isharkfly.com/t/composer-windows/15600
Packing 的用途就是把一堆通常放一起的数据打包的意思。 这样做的目的就是降低交互。 还是用姓名这个间的的例子,为了我们能够拆分姓和名,我们通常有 Item 姓和 Item 名。 为什么这样,英文和中文其实差不多的,中文有复姓,比如说欧阳。 用名字:欧阳锋来举例。 那么我们针对姓名,我们在姓字段存储欧阳,名字段存储 锋。 如果我们需要获得完整的姓名,那么我们就可以把这 2 个 Item 打包在一起,给一个新的 Item 叫做 姓名。 这个与 SQL 数据库中字符串拼接函数有点类似,我们通常不会把姓名再存储一遍,如果需要从 SQL 数据库中查姓名的话,我们会用字符串拼接的方式把姓和名加在一起。 SuperItem SuperItem 上面定义的姓名就被称为 SuperItem。 SuperItem 就是 Item Packing 后的结果。 SuperItem 有自己的 Item ID SuperItem 会被系统指派一个自己的 Item ID Add Type 和数据类型 Packing 的 item 必须要有相同的 Add Type。 对于不同的 Add Type,我们是不能 Packing 在一起的。 对于具体存储的数据来说,我们对数据类型或者 Response Type 不做要求,可以相同也可以不同。 limited‐line / unlimited‐line limited‐line 使用格式 (Single, Multiple, Related) unlimited‐line 使用格式 (Multiple, Related) 对于使用 Related‐Multiple 的 Item 是不能够 Packing 的。 https://www.isharkfly.com/t/iris-chronicles-packing/15564
Discourse 是可以修改用户名的,但用户修改自己的用户名会有时间的限制。 这是因为根据官方的说法就是当用户修改用户名后可能会导致内容的失效等问题。 在默认的安装配置下,用户可以在完成注册后的 3 天自己对用户名进行修改。 3 天以后,用户就不可以自己对用户名进行修改了。 管理员配置 当然管理员是可以对 用户名进行修改的。 用户需要告诉管理员他自己希望修改的用户名是什么,管理员可以在后台帮助用户之间进行修改。 如果管理员允许自己对用户名进行修改的话,管理员可以把上面的参数设置为足够大。比如说 3650。 上面参数的限制为天。 https://www.isharkfly.com/t/discourse/15578
和 DISCUZ 不同,DISCUZ 可以允许分类下面还有分类,再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话,系统会提示错误: 意思就是子分类不能再分子分类。 Discourse 尽量采取了扁平结构,所以标签的作用比分类更大。 https://www.isharkfly.com/t/discourse/15577
Response Type 在关系数据库中可能没有这个选项,我们对关系数据库表中的数据返回的数据就是是数据,通常不再做过多定义。 但是 IRIS 会对返回的数据也做一些定义,这个就是我们说的 Response Type。 Single (单一) 这个好说,就是返回一条数据。 这个就和我们的关系数据库差不多,你返回的数据就是数据,不管你这个数据是多少行。 Multiple (多条) 这里就好像有一个映射关系了。 类似于关系数据库中的 1 对多的关系。 比如说感冒症状,这里可能会有咳嗽,发烧,肌肉酸疼等症状,所以在这里需要返回多条。 如果我们对应关系数据库,把上面的症状全部存储到一个表中,那么这里不就是 1 对多的关系了。 Related 这个就有点绕了。 Related 首先和 Multiple 类似,是可以有多条记录。 但这里需要注意的是,数据的组成是通过 2 个或者多个 Item 打包在一起的。 举例来说,电话,我们首先有一个 Item 定义的是电话类型,另外一个 Item 定义的是电话号码,在实际上我们会把这 2 个 Item 放在一个 Group 里面,这个叫做 Packing。 如果我们有一个数据 需要同时返回这个 Group 中的这 2 个,同时这个 Group 中的数据又是一一对应的,我们就可以说这个返回的数据是 Related。 Related‐multi 相对 Related 更进一步。 Related 是一行对应的一行的数据,Related‐multi 在 Related 的基础上每一行对应多行的数据。 上面的图片就比较好的说明了我们对返回的数据的限制。 这里有个坑,就是 200 和 210 的关系。 如果 210 对应过敏的反应只有一种的话,那么 200 和 210 都是 Related。 但实际上对过敏的反应可能有多钟,比如说对于 Thyme(百里香)的过敏反应有昏睡和发烧。 那么实际上我们就把 200 和 210 拆分开了,200 还是 Related,我们把 210 细化成了 Related‐multi。 https://www.isharkfly.com/t/iris-chronicles-response-type/15562
根据我们前面说的 Item 中的 Add Type 属性,这个主要用来标识输入的数据是不是随着时间的变化而变化,有下面 3 种选项。 No‐Add 这个就是当数据输入后,是不会再变化了,不会随着时间的变化而变化。 Response Each Time 这个就是每次在数据在创建的时候都有可能会变化。 比如说体重,当你每次和医生见面的时候,你的体重都有可能会发生变化。 Lookback 从字面上来看这个就是查找时间。 这个 Response Each Time 对比起来的不同就是修改的频率。 还是用体重来说,每次你重新去看医生你的体重都有可能会变化,但是可能你还是看的是同一个医生。 为了节约存储空间,对医生这个字段我们就可以设置为 lookback,这样的话只要和上次看的医生相同,那么数据显示的就是上次的医生名字,虽然我们这里什么都没有输入。 如果上次看的医生没有的话,那么这里就会显示为 NULL。 针对上面的情况,在 Lookback 中又细分了 2 类:with 和 without deletion。 Lookback with deletion 这种约束允许 Lookback 中的字段内容为空。 用实例来说,就是每次你去医院看医生的时候,可能这次和上次的医生是不一样的。或者说上次你来医院的时候没有看医生,只是做了一个 CT 检查,这个时候医生的字段是空的。 那么我们的 Lookback 的时候,上面有关医生的关联数据就删除了,那么数据在查询的时候就会显示为 Null,我们用 “” 来表示。 Lookback without deletion 这种约束不允许 Lookback 中的字段内容为空。 用一个例子来说明的就是对于个人的婚姻状况,这个状况是可能随着时间的变化而变化的,但是不管是那种婚姻状态,这种状态必须会保持,不能说婚姻状况为空的情况。 当然病人是可以拒绝提供婚姻状态的,哪怕是这种情况,我们也会设置为状态为拒绝提供,从数据的角度来看,这个数据是不可能为 Null 的。所以我们可以设置为 Lookback without deletion。 https://www.isharkfly.com/t/iris-chronicles-item-add-type/15561
IRIS 的数据类型比较少,也就 4 个数据类型:字符串,数字,时间,分类。 在这里分类有点像我们的下拉选择框,其实对应 Java 或者其语言中的数据来说可以说是枚举类型。 只是 IRIS 的枚举类型是定义在数据库中的,并且是事先定义好的。 String 这个好说,就是字符串。 因为 M 语言的限制,所以 String 字符串中可以存储的字符最多为 32KB、 Number 数字,这个数字可以是整数也可以是浮点数。 IRIS 对存储的数据库如果有没有意义的 0 的话,数据库会对这个数字进行处理,删除掉没有意义的 0。 例如数据 “0900.0100” 将会被实际存储为 “900.01”。 时间 时间中我们有 3 个子分类,分别为日期,时间和时间戳。 Date 日期 在 Date 日期中,IRIS 只会存储当前的日期,这个日期是没有时间的。 Time 时间 Time 这个字段只能存储时间,这个时间包括小时和分钟和秒等。 Instant 时间戳 这个时间戳包括有日期,时间和时区。 这个是系统自动生成的系统时间,通常不需要我们认为的手动输入。 Category 分类 这个就是我们说的分类了,在这个分类中我们可以想象为数据库中预先存储的枚举类型。 比如说人的性别,我们通常会预定义好。 https://www.isharkfly.com/t/iris-chronicles-data-type/15559