很多朋友希望能一次排版多张不同的证件照。现在,这个功能已经上线了:
- 在第 5 步选择 多照片模式
- 可以上传多张照片,并为每张照片设置打印份数
- 所有处理都在本地完成,照片不会上传,安全又快捷
适合全家办证、多个用途照片一次搞定。
另外,这次更新里我顺便把输出分辨率提高到了 600 DPI,打印出来会更清晰。
欢迎大家体验,并把使用反馈告诉我!
很多朋友希望能一次排版多张不同的证件照。现在,这个功能已经上线了:
适合全家办证、多个用途照片一次搞定。
另外,这次更新里我顺便把输出分辨率提高到了 600 DPI,打印出来会更清晰。
欢迎大家体验,并把使用反馈告诉我!
我常年在国外生活,喜欢在喜马拉雅上听有声书、广播剧放松一下。但有些资源在海外受限,不能直接收听,挺不方便的。 反过来,每次回国探亲时,我日常使用的 Gmail、Google Docs、YouTube、ChatGPT 等服务又经常无法访问,生活和工作都受到影响。
尝试过一些付费 VPN 或加速服务,但要么价格不低,要么稳定性不佳。于是我开始研究一些网络优化方案,自己动手搭建「双向访问」环境,既能在国外用国内的应用,又能在国内访问常用的国际网站。
这篇文章算是我的经验记录,分享一些技术思路和工具,帮助有类似需求的人少走弯路。所有方法仅用于个人学习和网络优化,请勿用于违反平台政策的用途。
提示: 不需要备案,因为这里只是跑代理服务。
SSH 登录服务器:
ssh root@<你的ECS公网IP>
更新系统并安装 Shadowsocks:
sudo apt update && sudo apt upgrade -y
sudo apt install shadowsocks-libev -y
配置 /etc/shadowsocks-libev/config.json
:
{
"server":"0.0.0.0",
"server_port":8388,
"password":"<your_password>", // 请替换为自己的密码
"timeout":300,
"method":"aes-256-gcm"
}
启动 Shadowsocks:
sudo systemctl enable shadowsocks-libev
sudo systemctl restart shadowsocks-libev
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw enable
从 App Store 下载 Shadowrocket(付费应用,价格合理)。
添加服务器:
导入“回国规则”:
config.yaml
文件:port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info
proxies:
- name: "CN-SS"
type: ss
server: <你的ECS IP>
port: 8388
cipher: aes-256-gcm
password: <your_password>
proxy-groups:
- name: "Proxy"
type: select
proxies:
- "CN-SS"
- DIRECT
rules:
- DOMAIN-SUFFIX,ximalaya.com,Proxy
- DOMAIN-SUFFIX,bilibili.com,Proxy
- GEOIP,CN,Proxy
- MATCH,DIRECT
TLS 可以伪装成普通 HTTPS 流量,避免被拦截。域名与证书让服务更稳定、安全。
sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com
cat /proc/sys/kernel/random/uuid # 复制UUID
bash <(curl -Ls https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
编辑 /usr/local/etc/v2ray/config.json
并替换 <your-uuid>
。
配置 /etc/nginx/sites-enabled/default
:
location /ray {
proxy_pass http://127.0.0.1:10000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
proxies:
- name: "US-V2Ray"
type: vmess
server: your_domain.com
port: 443
uuid: <your-uuid>
tls: true
network: ws
ws-opts:
path: /ray
通过这套方案,我在国外能用喜马拉雅、Bilibili;回国时 Gmail、Google、YouTube 也能正常访问。如果你有疑问或建议,欢迎在留言区分享你的想法!
这件事一直在我的计划里,今天终于把「证件照片排版在线生成器 2.0」正式发布啦!
新版采用了纯客户端实现,所有照片都在本地设备上处理,无需上传到服务器,更好地保护了隐私,速度也更快。同时,还新增了一个很多用户一直在提的功能:可以自由选择生成的照片数量,使用起来更加灵活。
欢迎大家试用!如果有任何问题或建议,欢迎随时反馈。项目的源代码也已经开源到 GitHub,欢迎 star 或贡献!
另外,我还用 Google 的 NotebookLM 生成了一段介绍,分享了这个工具的设计思路和一些用户的真实反馈评论,感兴趣的话可以一起看看。
EcoFlow River 3 Plus 是一款便携式电源,除了常规的户外电源功能外,它也可以作为 UPS 使用。相比传统铅酸电池 UPS,EcoFlow 具有以下优势:
然而,在将其连接到 Synology NAS 作为 UPS 使用时,很多用户会发现系统无法识别该设备,即使已经安装了 EcoFlow 官方的 Power Manager for NAS 套件也无济于事。本文将详细分析原因,并提供可行的解决方案。
在调试过程中,我发现出现兼容性问题的主要原因如下:
USB 无法识别:Synology DSM 内置的 NUT(Network UPS Tools)版本较旧,可能无法识别 EcoFlow 作为 USB UPS。
端口不一致:EcoFlow Power Manager 使用端口 3496
提供 UPS 服务,而 Synology 默认监听端口为 3493
。
设备命名不同:Synology 假设远程 UPS 名为 ups
,但 EcoFlow 默认使用的设备名是 nutdev1
。
为了解决上述兼容问题,我们可以通过手动修改 EcoFlow Power Manager for NAS 套件中的部分配置文件来实现对 Synology UPS 服务的兼容。
以下是核心修改:
nutdev1
修改为 ups
⚠️ 操作前请备份相关文件,确保有基本的 SSH 操作能力。以下路径基于默认安装位置。
前往 EcoFlow 官网下载安装: https://www.ecoflow.com/us/support/download/index
路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/run.sh
将以下内容:
output=$(sudo $BASE_DIR/bin/upsc nutdev1@127.0.0.1:3496 2>&1)
修改为:
output=$(sudo $BASE_DIR/bin/upsc ups@127.0.0.1:3493 2>&1)
路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/etc/upsd.conf
将以下内容:
LISTEN 0.0.0.0 3496
修改为:
LISTEN 0.0.0.0 3493
路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/script/eco_shutdown.sh
将以下内容:
status=$(/var/packages/PowerManagerNUT/target/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/bin/upsc nutdev1@localhost:3496 ups.status 2>/dev/null)
修改为:
status=$(/var/packages/PowerManagerNUT/target/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/bin/upsc ups@localhost:3493 ups.status 2>/dev/null)
你可以通过“套件中心”手动重启 Power Manager NUT。
你也可以在终端中运行以下命令验证:
upsc ups@localhost:3493
如果你在设置过程中遇到问题,欢迎在评论区留言交流,也欢迎分享你使用其他便携电源作为 UPS 的经验。
自从去年购买了特斯拉的Model 3,我和我的妻子都非常喜欢开特斯拉。一方面,这样我们可以省下不少汽油费用;另一方面,相比我们家里的传统燃油车,特斯拉确实更加好开。
目前,特斯拉已经重新启动了推荐码计划。如果你在购买特斯拉时使用了我的推荐码,你可以节省500-1000美元,而我也将获得积分,可以用来兑换礼物,实现双赢的局面。
以下是我的推荐码链接:https://ts.la/jian860588。如果有任何问题,请在留言中告知我。
非常感谢您的支持!
今天把网站从Azure迁移到了AWS,操作系统从Ubuntu 18.04升级到了22.04, WordPress也升级到了最新。大家使用的时候遇到什么问题请给我留言, 谢谢。
Mint 5200曾经是我家任劳任怨的擦地机器人, 自从买了她之后,我就从繁重的擦地劳动中解脱出来了。 她是由 Evolution Robotics公司生产。 该公司于2012年被iRobot公司收购, Mint系列机器人更名为 iRobot Braava机器人。 她不同于iRobot的吸尘器机器人, 可以像聪明的一休一样,用湿抹布把地板擦干净。
突然有一天, Mint 5200在工作的时候红灯亮起, 并发出嘟嘟声, 她也并没有被东西卡住,就是无法再工作了。 之后我自己拆开机器人试图理解故障的原因, 完全没有头绪。 后来我有找到了一个更有经验的朋友一起拆开查看,对各个传感器查看, 故障太诡异了, 有时觉得是轮子速度传感器的问题, 有的时候觉得是楼梯悬空传感器的问题。
这个时候伟大的人物出现了, 我这个朋友的老婆, 先找到了一篇帖子 将了如何解读故障灯。 帖子在这里 。 简单说一下,故障之后红色故障灯会闪烁, 闪烁的次数有一定的含义:
接着说我的机器人的问题, 我们反复实验, 发现奇怪了, 她有时闪6次, 有时闪5次, 有时又闪14次。 而且完全就没有楼梯嘛, 我们完全懵了。这时候, 伟大的人物再次出手, 她找到了Mint在中国代购工厂的一个工人的电话。 我打电话过去咨询, 对方在了解情况之后,得出结论是因为电池的问题, 我的Mint已经使用2年, 电池容量已经不行了, 电力的问题导致各种奇怪的传感器故障。
后来, 我从淘宝上买了新的电池, 装上后果然所有问题都消失了, Yeah~~
最后不得不说, Mint在设计各种传感器上非常仔细, 可以判断各种问题, 不过在电池的设计上却留下了破绽。 首先电池选用的是镍氢电池, 而且电池上没有充电保护电路。 镍氢电池有很容易导致容量记忆的问题。 其次, 没有增加电路来检测电力的故障, 反而是其它的各种传感器失灵, 报出奇怪的故障。
希望写了这些文字, 能够对大家有帮助。
最后谢谢我的朋友以及他伟大的老婆:)
一般提到Linux上抓包, 大多能想到tcpdump或者wireshark, 这两个工具功能强大, 几乎所有需求都可以做到。 不过如果就是想把HTTP Header抓下来看看, 这些工具就显得太过复杂了, tcpdump的参数总是记不住, wireshark也不方便在远程的linux主机上运行。
前两天终于发现了简单好用的工具: ngrep . 捕捉HTTP数据用以下命令即可:
# 捕捉所有HTTP流量
ngrep -q -d any -W byline port 80
# 捕捉到www.baidu.com的流量
ngrep -q -d any -W byline port 80 and host www.baidu.com
今天看到一篇文章可以把git更新时间提高5~50倍。链接在这里: Speed Up Git (5x to 50x)
看了之后,发现其中第一个办法不仅可以提高git还可以提高所有ssh的建立连接速度。
你可以在 ~/.ssh/config
中增加以下内容:
ControlMaster auto
ControlPath /tmp/%u-%r@%h:%p
ControlPersist yes
设置这个配置之后, ssh就会把多个ssh session共享一个tcp连接, 而且当你退出ssh之后, 这个连接依然会保持, 下次再连接的时候就直接可以用了。
配置ControlPath是为每个用户+每个服务器设置一个唯一的socket文件, 我修改了原文中的值, 增加了%u,这样在共享的服务器上使用也就没有问题了。
今天遇到了小问题, 我有两个文件
第一个文件:
Medical Terminology
Narrative
RTL coding
Regional Planning
第二个文件:
医疗术语
叙述
RTL编码
区域规划
我想将两个文件合并到一起, 看起来这样:
Medical Terminology,医疗术语
Narrative,叙述
RTL coding,RTL编码
Regional Planning,区域规划
我想当然我可以写一个简单的python脚本搞定, 不过应该有更简单的办法吧, 就google了一下, 果然找到了。 答案就是一个叫做paste的命令。
用法:paste [选项]... [文件]...
将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分隔。
如果没有指定文件,或指定文件为"-",程序将从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-d, --delimiters=列表 改用指定列表里的字符替代制表分隔符
-s, --serial 不使用平行的行目输出模式,而是每个文件占用一行
--help 显示此帮助信息并退出
--version 显示版本信息并退出