有助于延年益寿的事 |
2024-10-18 |
来源:https://domofutu.substack.com/p/these-18-things
以下是我目前认为较易实现的事项清单,仅供参考。
请根据个人情况灵活采纳,并注意适量实践。
请注意,这些建议不包含任何形式的保证。
此外,我已根据主观判断,按照效益从高到低进行了排序。
- 补充维生素E、维生素C、多酚,有助于减少 DNA 的氧化损伤
- 减少接触污染物和紫外线辐射,避免吸烟
- 保持规律的睡眠、早晨的阳光照射、补充褪黑素有助于调节睡眠周期
- 补充维生素D、锌,增强免疫功能
- 有氧运动、阻力训练、高强度间歇训练(HIIT)
- 冥想
- 桑拿
- 间歇性禁食,有助于修复蛋白质/促进衰老细胞的清除
- 减少糖和精制碳水化合物
- 补充富含欧米伽-3 脂肪酸(如鱼油)、槲皮素和鱼黄素
- 乳酸杆菌、双歧杆菌、菊粉和抗性淀粉等膳食纤维
- 生酮饮食(高脂肪高蛋白低碳水)
- 长期禁食可刺激干细胞再生,尤其是在免疫系统中
Rails的helper_method和Concern |
2024-10-12 |
今天在做用户认证时,在控制器中一直用authenticated?
来判断用户是否登陆,但一直不成功。
查了下,发现authenticated?
是Authentication Concern的helper_method方法,
而helper_method是暴露给view层使用的,在其它控制器中是不能直接使用的,
需要在控制器的class下include Authentication
才可以使用
Conern是Rails非常有用的一个概念,在以前,我经常会写多重继承的代码,
比如“大象”类继承“哺乳动物”类,而“哺乳动物”类又继承自“动物园”类,
这时候为了兼容,很容易出现“动物园”类里有很多“大象”类和“哺乳动物”类所不需要的方法,
这就造成代码重用性的问题,而且也不容易维护。
而Conern允许将共享的代码逻辑封装到单独的可重用的模块中,通常存放在 app/models/concerns
或 app/controllers/concerns
目录下,
然后在需要使用这个 Concern 的类中,使用 include
关键字导入就行了
class SomeController < ApplicationController
include Authentication
# 现在可以使用 Authentication 中定义的方法和回调
end
比如“哺乳动物”类就可以作为一个Conern,“大象”类直接继承自“动物园”类,但可以在“大象”类里include “哺乳动物”类来使用需要的方法。
有点像 接口/协议 的概念,但接口/协议主要是定义/签名,不一定有方法的实现,而Conern直接提供方法的实现,更注重代码的重用性,其它不用考虑
Rails 8的Authentication模块 |
2024-10-11 |
如果你像我一样刚开始学习Rails,则建议直接开始使用Rails 8.0.0.beta版本,因为该版本更新优化了很多功能,最重要的是加入了身份验证模块抽象层,不用像7之前的版本那样麻烦。
在这里记录下我的相关笔记
- 一键生成身份验证系统:
bin/rails generate authentication
该命令会创建User、Current、Session三个模型,并且会在app/controllers/conerns
下添加Authentication模块 - 只有认证模块,没有注册模块
- 默认使用邮箱和密码进行认证
- Authentication模块的方法,建议直接打开该模块文件,就55行代码,非常的简洁明了
- 查看三个模型对应的的controller文件,也非常简洁明了。。。
- 认证流程(via):
- 重置密码流程(via):
-
添加注册流程
-
创建Users Controller:
bin/rails g controller Users
# File: app/controllers/users_controller.rb class UsersController < ApplicationController allow_unauthenticated_access only: %i[ new create ] def new end def create @user = User.new(user_params) if @user.save redirect_to root_path, notice: "User was successfully created." else render :new end end private def user_params params.require(:user).permit(:email_address, :password, :password_confirmation) end end
- 创建view文件
#File: app/views/users/new.html.erb <%= tag.div(flash[:alert], style: "color:red") if flash[:alert] %> <%= tag.div(flash[:notice], style: "color:green") if flash[:notice] %>
Sign Up
<%= form_with(model:User) do |form| %> <%= form.email_field :email_address, required: true, autofocus: true, autocomplete: "username", placeholder: "Enter your email address", value: params[:email_address] %>
<%= form.password_field :password, required: true, placeholder: "Enter your password", maxlength: 72 %>
<%= form.password_field :password_confirmation, required: true, placeholder: "Confirm your password", maxlength: 72 %>
<%= form.submit "Sign up" %> <% end %> - 添加route
#File: config/routes.rb resources :users
-
params.fetch和params.require的区别 |
2024-10-11 |
这两种方式用于在 Rails 控制器中处理参数,但它们的用法和目的有所不同:
params.fetch(:article, {})
- 功能:fetch 方法尝试从 params 中获取 :article 的键值对。如果 :article 存在,它返回对应的值;如果不存在,则返回一个空的哈希 {},而不会抛出异常。
- 用途:这种方式通常用于你不确定参数是否存在的情况,并且你希望在参数缺失时提供一个默认值。
params.require(:articles).permit({})
- 功能:require 方法确保 :articles 参数存在于 params 中。如果不存在,Rails 将抛出 ActionController::ParameterMissing 异常。permit({}) 方法用于指定哪些属性是允许的(在这个例子中,没有任何属性被允许)。
- 用途:这种方式用于强制性地确保某些必需的参数存在,并用于强参数(Strong Parameters)以指定允许的属性,从而防止批量赋值漏洞。
总结
- fetch 用于在找不到参数时提供默认值,而不会引发错误。
- require 是用于确保参数存在,并与 permit 结合使用以过滤允许的参数。
在实际开发中,如果你需要控制和验证输入参数的存在和安全性,通常使用 require 和 permit 组合。而 fetch 常用于需要灵活处理参数的情况。
说说我的最近状况 |
2024-10-10 |
好久没写博客了。。。。。因为最近太忙了,期间看到好多篇督促写博文的文章,都没动笔起来。。。
还是说说做的事吧,首先是在忙上海居住证积分的事,然后筹备居转户,因此需要筹备考中级职称。。。呵呵。。。逃不过
还有最近一直在重构我的RSS翻译器, 但不顺利,
先是用reflex重写,但模型方面,这个框架很不成熟
接着fastapi,sqlmodel也不成熟,sqlachemy + pydantic又很麻烦
然后正在学习Ruby和Rails,准备使用Rails试一试。。。目前看起来很方便,希望一切顺利。。。。
本来8月份开始重构,预计2025年初能完成,,,转眼就10月份了,好快
然后还想写一个博客系统,当前的WP还是不舒服,太重了,这次想用Rails试一试
噢,还有我的PKM系统,笔记系统转到了Apple Note,,,是的,兜兜转转了一大圈又回来了,不得不说,简单且协作系统很好用,又免费,不折腾。。。。。。
先到这吧,起码留点痕迹,吹吹灰尘
docker文件清理 |
2024-09-30 |
一键清理Docker无用的文件,释放磁盘空间:docker system prune -a
删除所有未使用的本地卷: docker volume prune -a
Time Machine服务内网分享小记 |
2024-08-05 |
当使用Mac mini在局域网内分享Time Machine服务时,一定要关闭系统的防火墙,即使系统会自动添加分享服务到规则里,但客户端依旧会添加失败或者stuck在连接状态。
如果客户端添加后,一直无法完成初始备份,可以尝试在服务端(mac mini)的“安全和隐私”里,全盘访问权限勾选smbd服务,然后重启即可
系统版本:macOS 14.6
install命令 |
2024-08-02 |
在shell脚本中,如果要安装一个应用或者添加配置,一般是这样的:
mkdir -p ~/.config/app
cp conf ~/.config/app/conf
chmod 755 ~/.config/app/conf
实际上,这些命令可以用install
命令就能完成:
install -D -m 755 conf ~/.config/app/conf
如果需要设置权限,可以使用-o
和-g
参数
install -D -m 644 -o root -g root seed.db /var/lib/app/seed.db
谈谈我的家庭保障计划 |
2024-07-30 |
前言
对于中低收入的家庭来说,保险其实是非常重要的,因为家庭承担风险的能力太弱了,所以越没钱越要买保险。
但怎么买一直是阻碍我的主要因素,毕竟谁也不想当韭菜,买一堆没用的"理财产品"。
所以花了几周时间,做了很多功课,基本了解了目前的主要险种,最后根据自身家庭情况购买了一些保险。
为了避免以后忘记整个决策过程,所以写了这篇博文,供参考。
声明:
- 这是一篇保险购买指南,但不会推荐任何保险产品
- 这不是理财指南
- 内容主要是我的决策过程
第一步:确定险种
必买:意外险和重疾险
建议买:医疗险
按需买:寿险和其它
第二步:确定保费和保额
每年投入的保费,建议是家庭年收入的5%-10%,最多不超过20%。
比如年收入20万,则建议的保费是1-2万左右,不超过4万
保额主要看意外险和重疾险,每个险种保额最好是年收入的3倍,即20万X3=60万,保障3年左右的生活
第三步:确定优先级
首先确保每个家庭成员都有社保
先买大人的,后买小孩的
着重家庭顶梁柱
第四步:了解各个险种
意外险:因意外身故/残疾而赔付的险种
注意点:
- 一次性赔付保额
- 10周岁以下意外身故,最多赔付20万(叠加),所以小孩的意外险保额20万就够了
- 10-17周岁,最多赔付50万(叠加)
- 小孩最好有个人第三者任险,即因小孩过失造成第三者身故/残疾/损失等的赔付
- 成人最好有猝死保险金
- 不建议买长期险,一年一年买就行
重疾险:因患重大疾病而赔付的险种
注意点:
- 一次性赔付保额
- 建议买长期的,即终身或定期
- 重疾有分轻/中/重症,赔付的比例和次数均不同,一定要看详情
- 一般重疾同种病组只赔付一次,比如肿瘤和红斑狼疮是同组病,如果先得肿瘤后得红斑狼疮,只赔付一次
- 一般重疾对于同次就医的不同病种,只赔付一次
- 一定要看细则
医疗险: 因生病/住院/产生治疗费用而赔付的险种
- 先垫付后赔付,即花多少赔多少
- 一般医疗险都会有免赔额(1万左右),即当年所有医疗费扣除社保报销外,再扣除1万免赔后,赔付剩下付出的钱
- 0免赔额的,一般会阶梯百分比赔付,比如2万以上,100%比例报销,2万以下的80%比例报销
其它注意点:
- 普通险种的保费会随着年龄的增长而增加,所以一定要看下所购买保险的保费计价表。同时该类保险正常是按年买,但不一定之后每年都能买到
- 长期险种的每年保费是固定的,可保障到60岁/70岁/终身,但会比普通险种贵,只要不断续,就能保证一定能买到
- 如果保额写“最高赔付XX万”,则表示会分情况按比例赔付,所以一定要看细则
- 多人共享保额类的产品,一般是均分保额,比如总保额100万,最多保9人,则每个人保额11万左右
- 最好在一家平台上购买,不要多家,比如微信或者支付宝
- 购买后一定要打印保单,并保存好告知家人,否则出险后没人知道买了保险就玩完了
2024-07-18 00:37:10 UTC |
2024-07-18 |
这周又发烧喉咙痛,今年已经是第3次了都,自从新冠以后,身体变得很差,之前好几年都不会发烧一次

