内网外穿tailscale
https://tailscale.com/pricing/ 个人用户20设备以内免费
之前用的frp,但是需要自己在外网架设服务器, 好处是完全自主可控了.
https://tailscale.com/pricing/ 个人用户20设备以内免费
之前用的frp,但是需要自己在外网架设服务器, 好处是完全自主可控了.
搞了个6盘位的星际蜗牛NAS,下面是记录。
本质上就是一个多盘位的电脑,但用起来和电脑有很多不同。只需要插网线和电源就行。
如果插HDMI开机,只会显示4行字就卡在那儿不动了。
Booting `RedPill DS918+ v7.1.0-42661(USB, Verbose)`
Loading Linux...
Loading initramfs...
Loading kernel with USB boot
_
这就是正常的了。
网线和有网口的电脑直连,不需要开DNS或者配置电脑IP,用默认的169.x.x.x的IP就可以。
准备一个空白SATA硬盘(或者是数据已经备份的),插入NAS,这个硬盘将被格式化。
王航卖家说已经装好了群晖 DS918+的固件,也就是在内置一个SSD上装的img文件。需要用启动盘来装。网上有卖,也可以自己做。
在群晖网站下载.pat系统,需要和硬件以及固件系统一致,如DS918+和v7.1.0-42661
下载Synology Assistant并安装,点击搜索,会搜索出来网线直连的NAS,点击进入管理主页,选择.pas进行安装。
后面都会在浏览器中操作。
填写用户名和密码,要记牢。这是以后的网页登录、ssh登录、smb登录的用户名密码。
跳过自动更新(一定要选手动更新)和注册群晖账号。
装好以后,先修改一个和路由器同网段的静态IP、网关、DNS,注意不要和已有IP冲突。
等待设置完毕,把网线连回路由器,电脑也连上路由器,浏览器访问刚才的设置的IP地址进行管理。
可以开启ssh和文件共享。
加入NAS的硬盘,如果使用在存储管理器>存储空间中创建存储空间的方式增加,则硬盘必须被格式化,以便设置为群晖的硬盘类型。群晖基于ext4或者btrfs磁盘格式组建RAID。为便于后期增加磁盘扩展,又有几种扩展格式,即SHR、Basic、JBOD。建议Basic类型。
如果是从Windows系统过来的数据盘,一般是NTFS格式的,则不能用上面的方式加载,而是需要用linux的mount命令,使用root权限加载。
这时候需要知道什么磁盘加载到什么位置。
存储管理器>存储空间中可以看到什么磁盘,如磁盘1,磁盘2等等,这与linux的磁盘有对应关系,即sda sdb等等
群晖磁盘名|linux磁盘名
--|--
磁盘1|sda
磁盘2|sdb
磁盘3|sdc
磁盘4|sdd
磁盘5|sde
磁盘6|sdf
分区则对应是数字,如sdd1则是1号分区,sdd2则是2号分区。但是分区有时候并不连续,最好可以通过ssh username@ip的方式登录上去看看。
查看当前有哪些磁盘分区:
ls /dev/sd*
查看每个分区的大小和格式化类型
sudo fdisk -l
查看已经挂载的分区的情况
df -h
如上,比如发现了sde2 sde5使我们需要挂载的分区,这一步结束
回到web页面:
控制面板>共享文件夹,增加共享文件夹,如T2,设置名称并取消回收站功能。File Station选择刚才创建的T2,新建文件夹,普通文件夹即可,如C D,对应C盘和D盘。右键看下文件夹属性,应该是/volume1/T2/C和/volume1/T2/D这样的。这一步结束。控制面板>最下面的任务计划,新增》触发的任务》用户定义的脚本,用户账号改为root,事件为开机,用户设置的脚本写mount命令:mount -t ntfs /dev/sde1 /volume1/T2/C
mount -t ntfs /dev/sde2 /volume1/T2/D
保存。因为是root权限,会有一条警告,确认即可。这样开机就可以运行了。点右键可以立刻运行一次。然后到File Station里查看T2/C和T2/D就能看到了。
在控制面板>文件服务中可以启用SMB协议。
但问题是通过mount挂载的硬盘会从smb共享中消失,umount以后又会出现。所以SMB只能看到通过存储管理器增加的RAID盘。
在安卓手机端的CX文件管理器中发现支持WebDAV文件共享,不过DSM默认没有安装webdav服务,需要在套件中心中下载并安装启用。
webDAV中能够看到所有共享的硬盘资源,包括ntfs mount的硬盘。并且视频文件不需要下载就可以观看。推荐!复制粘贴的体验也和一般文件夹无异。
Windows 10端WebDAV需要修改注册表和开启服务。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel键值为2net stop webclient, net start webclientwebclient服务添加一个网络位置或者映射网络驱动器,链接位置写http://IP:Port, webdav http端口默认5005, https端口5006,不过实测5006打不开不知道为啥windows 10 home版本不支持,需要专业版才有nfs服务功能。第三方的nfs客户端几乎没有能用的。
很奇怪,FTP在默认21端口上无法访问;开启SFTP使用Winscp才解决。
另外,windows 11 通过添加一个网络位置的方式对SFTP的支持有问题,会导致文件管理器窗口死机,且无法删除这个创建的网络连接
参考:https://phoenixnap.com/kb/sshfs
Windows 11 完美解决的方式是SCP,不过需要安装开源的第三方插件 winfsp和sshfs-win. 可选装sshfs-win-manager来进行GUI管理
安装完后,在添加一个网络位置中输入\\sshfs[.option]\<remote user>@<remote host>[!port][\path], 例如:
\\sshfs\user@192.168.3.3,然后输入用户名和密码。
需要打开bios修改。NAS插上HDMI显示、接上USB键盘,开机狂按F11或者F7可以进入bios设置。修改对应设置即可。
需要在控制面板>硬件和电源>常规>电源自动恢复勾选启用局域网1的网络唤醒
需要知道NAS的IP和MAC地址。IP是自己设置的,可以在控制面板>网络>网络界面中查询到。MAC地址可以找一台局域网内的电脑,在命令行输入arp -a查询对应IP的mac地址。如果没有,可以ping 对应IP后,再次arp -a来获取mac地址。
mac上可以在mac商店里搜索wol或者直接下载WakeOnCommand。新增并填入IP/MAC地址即可。
谷——歌——商店下载wake on lan,也是增加IP/MAC即可。
下载Nirsoft WakeMeOnLan软件,增加IP、MAC即可。
有三个盘是旧盘,其中一个盘数据最少,备份出来,在安装群晖pat系统时候格式化为btrfs,作为系统安装用盘. 另外两个盘用原ntfs系统, 原数据,通过linux脚本mount命令挂载在文件夹中, 另外再买了两块4T紫盘组成RAID1作为最安全的数据存储.买4T的原因仅仅是因为现在(2022/12)4T最划算. 机械硬盘容量这几年似乎没有很大增长, 我八年前就买了3T盘, 十几年前就买了2T盘, 现在容量主流居然才是4T. 价格也没有很大下降, 似乎早已脱离的摩尔定律的制约了.
从来没有把硬盘用到完全挂掉,但小米路由器成功地做到了。
以前硬盘最多是用到有坏道,而且是可以提前感知的。硬盘反复读取、吱吱作响,但不至于无法挂载或者文件系统坏掉。
而这次小米硬盘内置的1T三星2.5寸硬盘完全无法挂载、文件系统完全丢失了。
虽然网上对小米R1D路由器早有批评之声,说把路由器这个可能随时断电的系统放在硬盘上本来就很不可靠,而且会导致硬盘损坏数据丢失,但我却一直有侥幸心理,直到被现实暴击的这一天。个人数据非常重要但不会频繁读取,而系统数据却是会频繁读取导致硬盘寿命缩减。小米路由确实应该在发现硬盘读写存在问题前早点通知用户更换硬盘的。
话说,今年我已经因为SSD盘提示SMART故障换了一次了。
说说发现的过程和恢复的方法。
cx文件管理器,开始还以为是这个app的问题,安装了讨厌的广告巨多无比的ES文件管理器发现现象一样。我还重启了手机,还是不行。由于smb协议本身不稳定的传说,我第二天再次尝试,还是不行。此时才想到登录到路由器上看看。GParted,找了个U盘,用GParted推荐的软件Unetbootin安装LiveCD AMD64版本。我是Intel CPU但是i686版本运行不起来,很奇怪,也可能是U盘有问题。启动后,发现虽然找硬盘要一两分钟,但是还能够发现这个硬盘的正确型号、容量,也识别出来了分区类型是Ext4。一共四个分区,前三个都很小,不到1G,最后一个分区占用了绝大多数空间,应该就是数据分区了。并且后两个分区有个黄色三角感叹号,表示读取有问题。尝试对分区Check,发现Super Block不能读取,Super Block是挂载分区必须的文件,有多个备份,按照这篇文章尝试恢复super block以及从备份的super block直接挂载,都失败了。再用Gparted里面的Device → Attempt Data Rescue选项尝试救援,但被告知无法读取file system文件系统。至此GParted恢复失败,但知道了Super Block, File System都不能指望了。文件系统是文件名和文件树存储的地方,丢了这个意味着文件名也都丢掉了。下面只能尝试绕过文件系统恢复文件了。Free/Whole这一步的时候,默认选项Free是用来找回手动删除的文件的,这儿需要选择Whole,从全盘找回文件。PhotoRec恢复时间非常长,几个小时也才恢复了几十M而已, 这样下去不得恢复个好几年。网上搜索PhotoRec恢复时间的,确实有人说要恢复好几年。。。水能载舟,亦能覆舟. 鲧堙洪水水复患, 禹开导河灾始平.
硬件产品(除了PCB以外)有些问题是最让人担心的, 一旦发生, 就可能导致产品部分或者推翻重来:
干涉的问题并不总在设计阶段能发现. 导致干涉难以发现的原因包括:
PCB与产品结构干涉包括:
干涉还可以在组装环节发现, 包括结构样机组装和T0开模样机的组装.
产品较重或者有配重/旋转机构的时候, 需要注意:
表面处理是在某一指定材质上, 展现指定颜色/图案/光洁度的工作. 所指定的颜色/图案/光洁度都受到材质本身和工艺的影响. 错误的设计导致指定效果完全不能达到或者成本极高, 导致产品失败.
设计师要明白, 在特定材质上能实现的颜色/图案/光洁度都是有限的, 并非什么颜色都能做, 什么图案都能印, 什么光洁度都能实现.
看到央视转发腾讯医典的文章,确实这些年都用错了. 当然也可能是医学不断有新知, 跟计算机一样,旧的知识过期很快.
参考: https://mp.weixin.qq.com/s/ynM7asQa445TbMG9vgnEIg
现在开放伤口消毒的唯一推荐就是碘伏. 伤口冲洗推荐是清水.
| 类型 | 成分 | 用途 | 禁忌 |
|---|---|---|---|
| 医用酒精 | 乙醇+水 | 皮肤消毒 | 不可用于开放性伤口消毒 |
| 碘伏 | 碘络合物+水 | 伤口消毒 | 碘过敏和甲亢禁用 |
| 碘酒 | 碘/碘化钾/乙醇 | 皮肤消毒 | 碘过敏和甲亢禁用 |
| 双氧水 | 过氧化氢 | 伤口冲洗 | 对组织高毒性,结痂期禁用 |
| 红霉素软膏 | 1%红霉素/液蜡/凡士林 | 治疗和预防皮肤感染 | 超过1周使用会耐药 |
另外,百多邦喷雾中主要有效成分是苯扎氯铵, 杀菌效果很好,但长期大量使用(如消毒巾中使用)会导致哮喘等过敏性疾病, 孕妇使用导致胎儿畸形 参考文档
已禁用的消毒剂:
如题。
参考文献:
https://blog.csdn.net/u013014254/article/details/122045331
https://blog.csdn.net/qq_29654777/article/details/122903558
国内替代如下,以vuetify资源搜索为例:
bootcdn, 问题是不知道怎么找历史版本
字节cdn,虽然界面简陋了点但是很好用,速度快且支持历史版本
基于七牛的staticfile,搜索比较慢,也找不到历史版本
ban了以后才知道jsdelivr有GitHub加速功能。
参考: https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code
http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
示例如下:
#pragma GCC diagnostic error "-Wuninitialized"
foo(a); /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
foo(b); /* no diagnostic for this one */
#pragma GCC diagnostic pop
foo(c); /* error is given for this one */
#pragma GCC diagnostic pop
foo(d); /* depends on command line options */ 参考文档
speechSynthesis是浏览器自带的功能,甚至都不需要单独去安装。当然也有可能有的浏览器不支持。
最简单的三行代码:
var msg = new SpeechSynthesisUtterance();
msg.text = "你好,世界!"; //直接支持中文
window.speechSynthesis.speak(msg); pip install pyttsx3
我在MacOSX上安装的,是python2, 有很多语音,需要找到对应的语音。
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
if voice.languages == [u'zh_CN']:
engine.setProperty('voice', voice.id)
break
engine.say(u'The quick brown fox jumped over the lazy dog.中华人民共和
国。')
engine.say(u'我爱北京天安门,天安门上太阳升。')
engine.runAndWait() 用js的netcat库写的, 很简单, 只是记录一下收到的消息, 用了一个很不常见的socket. 开了半年多, 发现几乎每天都能收到一点攻击.如下:
GET /nice%20ports%2C/Tri%6Eity.txt%2ebak HTTP/1.0 Malicious request intercepted by springOPTIONS sip:nm SIP/2.0 Via: SIP/2.0/TCP nm;branch=foo Just a Reminder, SIP is a Popular Scanning Targetwindows上我用bat做编译,烧录, 复制文件等等操作. 所以好奇make和bash(Linux上更强大的bat)究竟有什么区别?
参考这篇文章, 高赞回答似乎是说make主要是能节省完全重编译的时间, 方法是通过检测编译所需要文件的更新日期, 并且只编译其中较新的文件.这在有成千上万个文件需要重新编译的时候会很节省时间.
所以大体上来说, makefile文件和bash脚本文件功能差不多, 只是makefile多了上面的能力.
当然, 据说makefile的语法非常令人讨厌,不如bash语法那么爽。
make与cmake的区别
参考这篇文字, cmake是与make配合使用的,它其实是生成makefile的工具,不止如此,还能visual studio工程或其他工程, 简单来说就是跨平台的工程文件生成工具。所以,make是编译系统(build system),而cmake是编译系统的构建器(build system generator).
ninja与make的区别
ninja是一个make的替代产品, 主要是解决make启动缓慢和功能复杂(过于强大)的问题
三十年河东三十年河西。兔国初代目追求平等社会三十年,搞钱实在不太行。次代目让有条件的兔子先搞钱,政策至今也四十多年了,基尼系数大得不行。如今大概新的三十年又要开始了,基尼这玩意儿得要降,理想是最好没有。这个怎么搞?是不是学习初代目?兔子们很平等,一样有钱也一样没钱。当然初代目手里没多少底牌,当代目手里底牌要多一些,是不是可以实现?比如按需分钱?太有钱的还不服管的兔子,是不是坚决干掉?如何让普通兔子都同样有钱?