因为阿里云的ECS开了性能限制,博客有几个访问就挂掉,索性整体迁移一下系统,于是把dnmp整个文件夹备份到本地,然后停机,换镜像,启动,再scp把文件放回去(这里其实应该打包下载和上传,会快很多)。然后用dnmp里面的一键启动命令恢复环境,最后docker compose up -d启动网站。
不过这中间因为周末玩耍耽误了几天,幸好这个博客也没有多少人。
收获爱
因为阿里云的ECS开了性能限制,博客有几个访问就挂掉,索性整体迁移一下系统,于是把dnmp整个文件夹备份到本地,然后停机,换镜像,启动,再scp把文件放回去(这里其实应该打包下载和上传,会快很多)。然后用dnmp里面的一键启动命令恢复环境,最后docker compose up -d启动网站。
不过这中间因为周末玩耍耽误了几天,幸好这个博客也没有多少人。
岳父大人的慢阻肺一直是一个高危因素,自过年加重一次之后一直没有恢复,走走路就掉氧浓度,不到90%,吃了衡水中医院的中药也不见起色,于是约了中日友好医院的床位,等着来个全面检查。期间,到了广安门中医院开了中药,大夫看到他的现状对其是否需要用制氧机和呼吸机做氧疗有所怀疑,似乎没有那么重。等到在中日友好医院住了几天,做了肺功能和其他各项检查,终于给岳父确诊了糖尿病,并调整了心脏的药,把他的血糖和心律控制下来了,于是血氧也很神奇的转好了,这着实让岳父感到意外,我们也是。
于是,我又一次对地方医院和北京重点医院的诊疗水平差距有了进一步的认识。看上去似乎没有特别的手段,但是北京的大夫规范细致的诊治确实有效,而衡水的大夫虽然救了急,却对具体的康复方法没有任何指导。
有一个典型的例子,用于治疗慢阻肺的吸入药用到最好的,衡水也是这么开的,但是吸入方法却没有告知,也没有观察用的对不对,在北京问了之后,才发现之前几乎是无效吸入。而血压对血氧的影响之大,也不在之前的感知之内。
在我想象中,这些都是照手册就能学会的东西,医生应该完全可以自学掌握。
本文仅以个人非医学专业了解到的产品和医疗信息分享,不能替代医学治疗方案。
据医嘱,吸氧需要达到4L/min的流量才有效,但这个指标的前提是制氧机或者气瓶出氧的浓度要在90%以上,虽然国标要求医用制氧机必须达到90%,而目前市场上的制氧机普遍宣称符合这个标准,但从评论以及个人非严格检测来看,这个标准似乎没有那么容易实现。
这里列出制氧机的几个关键指标,请逐一核实:
测试成本很高,自己搞不定,网购的氧气检测仪也不一定精度就很高,但如果氧气浓度检测仪和制氧机自身的氧气浓度值都不可靠,那还有什么可靠的产品呢?
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue'
import { useMousePressed, useMouseInElement } from '@vueuse/core'
const containerRef = shallowRef()
const dividerRef = shallowRef()
const { pressed } = useMousePressed({ target: dividerRef, touch: false })
const { elementX } = useMouseInElement(containerRef)
const asideWidth = ref('300px')
watch(elementX, (newVal) => {
console.log(newVal, pressed.value)
if (!pressed.value) return
if (newVal < 300) {
asideWidth.value = '300px'
return
}
asideWidth.value = `${Math.floor(newVal)}px`
})
</script>
<template>
<ElContainer v-show="panel === 'tree'" ref="containerRef" class="container">
<ElAside class="aside"
></ElAside>
<div ref="dividerRef" class="divider"></div>
<ElMain class="main">
</ElMain>
</ElContainer>
<ElContainer v-show="panel === 'card'"> <BookCard :book="currentBook" /></ElContainer>
</template>
<style scoped lang="less">
.aside {
width: v-bind('asideWidth');
}
.divider {
flex: 0 0 4px;
&:hover {
background-color: var(--el-border-color);
cursor: col-resize;
}
&:active {
background-color: var(--el-border-color);
cursor: col-resize;
}
}
</style>
在flex容器(container)中横向排布侧边栏(aside)、分隔线(divider)和主要区域(main)通过useMousePressed获取分隔线上的鼠标按压状态,通过useMouseInElement获取容器内的鼠标移动状态,这些状态是响应式的侦听鼠标横向移动距离,仅当鼠标在分隔线按下(即拖拽)时,同步修改侧边栏宽度。
参考:流烨(链接:https://juejin.cn/post/7384242126429405225),相比调整了一下动态设置宽度的方式,改为width: v-bind(‘asideWidth’),同时,优化.divider的样式,增加hover,让它平时隐藏,鼠标滑过时显示更容易寻找。
正如tests/storage/annotations/OpenApi/L5SwaggerAnnotationsExampleServer.php所示:
<?php
namespace Tests\storage\annotations\OpenApi;
/**
* @OA\Server(
* url=L5_SWAGGER_CONST_HOST,
* description="L5 Swagger OpenApi dynamic host server"
* )
*
* @OA\Server(
* url="https://projects.dev/api/v1",
* description="L5 Swagger OpenApi Server"
* )
*/
class L5SwaggerAnnotationsExampleServer
{
}
L5_SWAGGER_CONST_HOST是作为一个变量直接引用的,这个变量在.env中设置,在实际项目中,尤其是多实例部署的产品,优先考虑用这种方法,而其中第二个是直接写死的地址,这种更适合相对固定的内部测试或者官方接口站点作为对照。实际上,api/doc还会依据L5_SWAGGER_BASE_PATH自动加载一个相对的接口地址,这个更适合用在调试环境,启动端口有可能会变,而且多个开发者的配置也不一定一致。L5_SWAGGER_CONST_HOST和L5_SWAGGER_BASE_PATH之间是相对独立的,可以搜索一下l5-swagger源代码看看逻辑,可惜这一点在l5-swagger的文档中说的并不清楚。
过年期间deepseek吵得很热闹,不过就我看到的信息,更像是一次冲喜,毕竟要过除夕了。我不太相信惊喜,二十年前在武汉的某博士沙龙上我突发灵感得到的结论,一切惊喜都可视作异常。回京后,做了下简单的测试,拿一个简单地问题去问这几个模型,这个问题还不算很苛刻,只是想看看训练时的语料审查有多么严重。
按结果的省略程度排序依次是:
拿出版行业来说,尽管审查也是一个很重的任务,但这个任务是由编辑来承担的,大模型没有权力直接来操刀,否则很容易造成失真,编辑就没法干活了。即使有deepseek无审查版也不行,因为那个无审查只是推理时无审查,并不能解决训练阶段的语料审查。
所以,这个可以当作出版行业大模型的一个选择条件,如果是2C我没有什么意见,安全第一,但是从编辑专业角度而言,必须选择一个中立的大模型来作为基础模型。这几个里面,没有哪个合适的,勉强选择的话只有mistral可以考虑,但这家伙中立的过分了,其实作为专业模型,我们不需要大模型给出态度和立场。
所以,行业模型还要从更基础的模型来做。
年前把公司网站的服务器换到了caddy上,今天想写一篇博客,发现证书过期了,之前用了certbot但是配置自动任务还是比较麻烦的,尤其是用了docker。索性一起换掉。
docker-compose.yml中的配置如下:
caddy:
image: registry.cn-beijing.aliyuncs.com/futuremeng/caddy:1.1
container_name: caddy
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
volumes:
- ./services/caddy/config:/config
- ${DATA_DIR}/caddy:/data
- ${SOURCE_DIR}:/www/:rw
- ${LOGS_DIR}/caddy:/var/log/caddy
ports:
- "80:80"
- "443:443"
networks:
- default
其中的env变量请自行脑补。
caddyfile:
https://WordPress.com {
root * /www/WordPress
php_fastcgi php80:9000 {
trusted_proxies private_ranges
}
file_server
encode gzip
@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}
rewrite @disallowed '/index.php'
}
详情可见:
在mac上打开终端:
cd /Users/mengfanyong/Pictures/照片图库.photoslibrary
接下来参照https://immich.app/docs/features/command-line-interface/
首先需要安装immich客户端,如果没有node或者版本太低,请跳转到:https://nodejs.org/en/download
npm i -g @immich/cli
首先向 Immich 服务器进行身份验证。
immich login-key [instanceUrl] [apiKey]
开始批量上传
immich upload --recursive directory/
二级目录部署vue3的Caddyfile
https://domain.com {
redir /portal /portal/ 308
handle /portal/* {
uri strip_prefix /portal
root * /www/domain.com/portal #打包后的静态文件
try_files {path} /index.html
file_server
encode zstd gzip #开启zip
}
}
在根目录部署laravel的Caddyfile
https://api.domain.com {
root /www/api.domain.com/my-laravel/public
encode gzip
# PHP-FPM Configuration for Caddy use docker php80
php_fastcgi php80:9000
file_server
}
如果laravel的接口需要开启跨域访问,则可以参考以下的Caddyfile,此外laravel也要根据版本,选择相应的开启cors的方法,此处不展开。
(cors) {
@cors_preflight{args.0} method OPTIONS
@cors{args.0} header Origin {args.0}
handle @cors_preflight{args.0} {
header {
Access-Control-Allow-Origin "{args.0}"
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers *
Vary Origin
Access-Control-Max-Age "3600"
defer
}
respond "" 204
}
handle @cors{args.0} {
header {
Access-Control-Allow-Origin "{args.0}"
Access-Control-Expose-Headers *
defer
}
}
}
https://api.domain.com {
import cors {header.origin} # 允许任意来源的跨域访问
root /www/api.domain.com/my-laravel/public
encode gzip
# PHP-FPM Configuration for Caddy use docker php80
php_fastcgi php80:9000
file_server
}
写在最前面,前阵子收了一台笔记本电脑,sony的,固态盘还是触摸屏,小惊喜了一把,结果这个电脑的系统是win,每天自动更新,但是更新失败回退。搜了一些方法,但都不解决问题,终于找到下面这篇最全的。
前言:
Windows10的自动更新给工作带来很多不便,想关闭更新很难,我们经过多次尝试,基本找全了与更新有关的条目。
1、与更新有关的Windows服务,大致就这三个服务。
Windows update
Update Orchestrator UsoSvc(更新Orchestrator 服务)
Windows update medic service(更新医生服务)
2、组策略
计算机配置 – 管理模板 -Windows组件 -Windows更新
3、计划任务
Microsoft -Windows -WindowsUpdate
以下内容(一、二、三)
一、禁用三大服务(三种方法)
1、手工操作停止禁用服务。
进入服务的方式很多,从此电脑右键属性-管理-可以找到。也可以从控制面板进入。
可以运行services.msc直接进入。
(1)、先停止Windows Update,后禁用。如图
找到【恢复】页,改为无操作
(2)、关闭 禁止 Update Orchestrator UsoSvc服务 更新适配Orchestrator服务
(3)、停止 禁用 Windows update medic service 更新医生服务
这个服务有时会拒绝访问或改不了。你就要参考下面注册表修改了。
2、注册表修改。(如果上面的修改的很顺利,就不必要再做这项的内容,手工修改和注册表修改是异曲同工,互相验证的关系)
打开注册表,开始 运行 regedit
(1)、禁用 Windows update(第一个图是禁用更新,第二个图修改恢复里面的“无操作”)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv
(2)、关闭 禁止 Update Orchestrator UsoSvc服务 更新适配Orchestrator服务
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsoSvc
这项的改的地方同(1)。只是注册表位置不一样。【UsoSvc】
(3)、停止 禁用 Windows update medic service 更新医生服务
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc
这项的改的地方同(1)。只是注册表位置不一样。【WaaSMedicSvc】
3、运行命令修改。(这个要求稍微专业点的知识,高手可采用。但要先检查三个FailureActions的值你有没有特殊设置再用。)
net stop wuauserv
net stop UsoSvc
net stop WaaSMedicSvc
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv” /v “Start” /t REG_DWORD /d 4 /f
rem ******** 停止 禁用 Windows update
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv” /v “FailureActions” /t REG_BINARY /d 80510100000000000000000003000000140000000000000060ea000000000000000000000000000000000000 /f
rem ********“改服务里面恢复,00-无操作,01-重新启动服务 03-运行一个程序 02 -重新启动计算机 14后面00 00 00 XX”
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsoSvc” /v “Start” /t REG_DWORD /d 4 /f
rem *******停止 禁用 Update Orchestrator UsoSvc服务 更新适配Orchestrator服务
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsoSvc” /v “FailureActions” /t REG_BINARY /d 805101000000000000000000030000001400000000000000c0d4010000000000e09304000000000000000000 /f
rem *******“改服务里面恢复,00-无操作,01-重新启动服务 03-运行一个程序 02 -重新启动计算机 14后面00 00 00 XX”
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc” /v “Start” /t REG_DWORD /d 4 /f
rem *******停止 禁用 Windows update medic service 更新医生服务
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc” /v “FailureActions” /t REG_BINARY /d
840300000000000000000000030000001400000000000000c0d4010000000000e09304000000000000000000 /f
rem ******“改服务里面恢复,00-无操作,01-重新启动服务 03-运行一个程序 02 -重新启动计算机 14后面00 00 00 XX”
复制做成BAT文件,以管理员身份运行。
二、配置组策略:gpedit.msc
Windows10家庭版没有gpedit.msc,需要配置一下。首先要新建一个txt文件,打开,在里面输入以下内容并保存:
@echo off
pushd “%~dp0”
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in (‘findstr /i . List.txt 2^>nul’) do dism /online /norestart /add-package:”C:\Windows\servicing\Packages\%%i”
pause
将文件后缀改bat,随后右键点击以管理员身份运行,等待加载完成,就可以启用组策略了。
成功打开组策略编辑器后,在组策略编辑器中,按顺序点开:计算机配置 – 管理模板 -Windows组件 -Windows更新 ,在右侧配置自动更新设置中,将其设置为已禁用并点击下方的确定保存即可
三、计划任务关闭windows更新:taskschd.msc
在打开的计划任务的界面中,按顺序点击 任务计划程序库 – Microsoft -Windows -WindowsUpdate,把里面的项目都设置为禁用,能删除也可以删除。
注【高手可操作】:计划任务删除命令是:schtasks /delete /tn “任务名称”
终于写完了,测试通过。作者:众嘉软件