Deprecation warning about the classic extension.
我还没想到classic extension是什么,就点下了更新,后来才想到应该是浏览器的依赖桌面端的插件。
1Password真的非常好用,如果不想付费其实还可以一直白嫖,我用上的时候是1Password7,已经是订阅制了,如果不付费可以在移动端添加更新条目,然后在桌面端使用。为了更好的体验还是建议订阅,和别人组车队,加上折扣一年也就五十人民币左右,非常的便宜。
1Password7支持云存储,还有第三方云存储,比如Dropbox,或者本地存储。但是升级到1Password8之后只剩下云存储了,那我感觉和LastPass来比较就没有什么差别了。
LastPass使用的云存储,有多次数据泄露的事件,我依然认为还是本地加云存储的方式会更好一些,需要自己管理好自己的Vault文件。可以放到本地,用云盘来同步,或者直接用Dropbox。如果需要浏览器插件的支持是需要安装Classic版本的,也就是Desktop required的版本。最新更新的1Password7.9.10是不在支持了,所以要使用旧版本,可以直接下载1Password7.9.9的版本。浏览器插件也需要手动下载安装一下。
官方有下载地址,下载后最后留存一份备份,以免官方不再维护。直接在 https://app-updates.agilebits.com/product\_history/OPM7 这个网址下载7.9.9的版本。插件在 https://app-updates.agilebits.com/product_history/OPX4 这里下载。其他版本直接在 https://app-updates.agilebits.com/ 这个页面寻找。
]]>搜索算是互联网时代必备的技能了,文字,音频,视频本质上是媒介的转变,并不是技术上的革新。ChatGPT应该就是革新,它已经改变了搜索这种形式,就好比马车和内燃机的区别,提升了效率。
ChatGPT已经火了很久了,微软开始把它慢慢融合到各个服务里,来改变我们之前的使用方式。我们需要知道一个问题的答案,在没有互联网的时候,可能要通过各种方式去寻找答案,归纳总结比如神农尝百草,查阅文献,做实验,还有更懂得人(交流)。有了互联网就提高了找到问题答案的效率。GPT又把效率提高了一大截。
简单的问题,可能通过Google就能搜索到答案,但是比较复杂的问题,互联网上没有的,那我们可能要分好几步去搜索了。ChatGPT基本上可以一次得到比较不错的答案,就好比我们去问了一个行业的专家,他已经学了很多知识了,我们可以直接得到结果一样,不过专家也有犯错的时候。
微软已经在很多领域融入进了人工智能,在最早的Github Copilot,到New bing,体验上也在不断变好,人工智能很早就有,微软给了我们另一种可能。在这之后各个公司也开始学着一起做了,毕竟蛋糕还是要早点分一块才好。
比较敏感的人,已经在用ChatGPT做很多事情了,新的事物出现总有一批人能抓住先机,能做出更多有创造性挑战性的事情。AutoGPT就是,能够更好的利用AI,将一件事情拆分出小的任务,再依次解决。ChatGPT也会不停地更新自己,能够处理更多地文字,效率也会越来越高,效率的提升肯定会让一部分人失业。现在AI也只是通过文字,图像来交互,随着发展,可能会到制造,科研等,再以各种形式接入到我们的生活。在我看来,这已经是一种革命了。资本也会持续的加码AI,促进它的快速发展,在未来的某一天也许我们会被他取代掉。
新的事物总会带来一些新的问题,隐私问题,安全问题等等。ChatGPT 刚出一段时间就有出逃问题,如果出逃之后入侵一些军事设施,问题还是很严重的。还有一些公司使用会不会泄露重要信息,我自己会使用Github Copilot,这就没有办法避免让它来扫描我的代码,也就会有一定的风险。就和互联网出来之后一样,也带来了很多的问题,这些问题也需要一点点来解决。
总而言之,在目前像GPT这样的大语言模型,确实是未来一段时间的风口,在资本的加码下,可能会发展的越来越好,我们能做的也只是要学习它驾驭它,未来才不会被淘汰掉。
]]>我有用过小米的手机,总体体验来说一般,但是智能家居,小米还是挺能打的。上手简单,软硬件齐备,价格嘛,真的很便宜。这东西真的能挣钱?相比一些高端品牌(不考虑国外品牌)那么便宜能赚几个钱?
我们家刚装修完,用了全套的小米智能家居。价格吧,比起非智能确实贵了些,比如插座好一些的十块一个,小米卖到六十,加一些传感器要卖这么多?那可能没有,贵应该是贵在整个生态上,毕竟开发设计都是要钱的。那比起高端一些的又便宜很多,我猜硬件肯定不会高出那么多成本的。我在Aqara(绿米)的线下体验店看过,有一百多的开关,有三百多的开关,差在哪?在设计上,材质上,贵的摸上去看上去都高端,你买个房子几百万几千万,那不得好好设计一下。只有我们这种不在乎设计的会选择更加亲民的小米,那丑是真的丑。当时挑选的时候,想挑一些生态比较好的,东西多,玩法多,肯定是小米必选。好看一些的,如影,一个中控面板卖你2000+甚至更高,太贵,超出了预算。只能考虑红米的智能音响了,三百左右,还有小爱智能屏幕,难用是真的难用,还有状态同步慢等等问题,MIUI Home还在发展中,体验上还是不如中控好,毕竟一分钱一分货。
除了米家还有苹果的HomeKit,也是很好的选择,也包括小米的一些智能设备可以接入HomeKit,选择的时候可以注意。小米生态链的Aqara,Yeelight也都做了自己的智能家居平台,还有不容小觑的美的美居,现在美的的设备都带着智能,玩法虽然都是借鉴的,智能家居还是需要用心搞搞的。还有就是涂鸦,我老家用的涂鸦,感觉线下用的会多,他们貌似自己不做产品,制作生态,没有统一定价,线下就更好赚钱了。
说了那么多,米家到底怎么赚的钱呢,我感觉这一切都要从网关说起
网关到底是什么?可以把他理解成一个路由器,让智能设备连接的路由器。一般来说智能家居都是用的Zigbee和蓝牙,蓝牙Mesh(BLE 5.0),这些协议我就不展开讲了。如果用WiFi的话,可以直接连接路由器,如果其他的就需要专门的网关了。
小米网关种类非常多,光买网关就可以赚你的钱了。网关可以分为以下三个种类。
从协议分也有三种
可以看下我们家里的网关
盲网关是需要连接WiFi的,所有场景和自动化执行必须从互联网走一圈,而且不受中枢网关的控制,只要一断网家里的智能基本上就趴窝了。像吸顶灯,小爱音响或者一些摄像头都会带一个网关,基本上都是盲网关,无法变成从网关。从网关在没有中枢网关的时候也是盲网关,小米多模网关就可以变成从网关,接受中枢网关的调度,多模是支持通信协议(包括蓝牙、蓝牙Mesh、Zigbee),也是需要从互联网走一圈的。如果想要断网依旧可以设备互联,这时候就要有一个中枢网关了,当中枢网关搭建起来,可以将云端执行的场景转换到本地执行,并且多模网关会变成从网关。为了有更好的体验,最好把其他盲网关关掉。
这些网关就很赚钱了,我最初买了多模网关,不能本地执行,有时候会很慢(多模网关是WiFi连接),就买了中枢网关,买完后多模网关就上新款了,变成了有线连接。
当你买了网关,就可以接入更多的设备,设备之间也可以联动,为了有更多的玩法你就会买更多的智能设备。场景米家会给你推荐一些,但是更多的玩法也是根据自家环境来探索的。智能家居体验上还是挺好的,米家也大大减少了入门门槛,只需要简单学习一下就可以。
当然家里的电器也可以换成支持米家的,总体体验会好很多,油烟机洗碗机、冰箱洗衣机,小米也开始渗透到生活家电的各个方面,价格优惠,产品质量也说得过去。
除了电器,智能窗帘的价格也不便宜,电机加轨道基本上也快要上千了。还有中央空调控制器,绿米的那个大概在2500元左右(太贵了到现在还没有装)。
钱是被赚走了,体验变好了,双赢。
]]>我自己就用的开源Wiki软件TiddlyWiki5,部署在家里的NAS里面。
使用简单,功能丰富,支持插件。
直接使用npm安装,使用起来就几个简单命令。
初始化
tiddlywiki mywiki –init server
运行
tiddlywiki mywiki –liste
官方已经自带了很多插件了,具体可以看https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki。修改配置文件tiddlywiki.info
,将需要的插件写入配置文件,运行服务就可以了。
使用起来非常简单,目录结构基本上都是通过tag实现,当然也可以看官方给的样例来学习如何使用。
官方样例看:https://tiddlywiki.com/
]]>brew在M1和x86有不同的家目录,详细可以看brew介绍,接下来看如何操作。
1 | Install x86 brew |
想要尝试其他方法,可以看我引用的链接。
一般文字排版都是CSS的text-align属性控制的,当调整text-align属性时,文字会相应的使用不同的对齐方式。但上面这种是因为英文单词截断方式导致的,纯汉字或者纯英文一行不会发生这样的问题,而且换行位置正好是有连接符的,这就让我猜想应该是英文字符截断有关。直接通过chrome调试,更改连接符位置,果然会重新换到连接符的位置换行。那这时候就应该调整word-break了。
但纯的调整text-align不能达到美化的效果,会导致每行行数不一。所以调整word-break到break-all就可以了,具体的也可以根据不同浏览器适配来调整。
因为网站大多是自适应排版,除非固定post-body的宽度,才能做到比较好看的排版。也或者hexo有自动截断英文单词并且添加连接符的插件,这种插件当然我没有找到,如果有人知道可以告诉我。现在的排版已经好很多了,不会再出现非常难看的超宽字距了,况且也不能和专业排版软件比。
vultr 的美国线路要比 digital ocean 更好,而且有日本可选,新加坡基本抢不到,如果选美国最好使用美西服务器,如果电脑系统是 MacOS,可以安装 BestTrace 软件看下线路,vultr 提供了测试的 IP 地址,在他们官网可以找到。
如果是 vultr 的新用户可以网上搜下优惠码,这样你可以获得 100 美金的试用金,一个月内有效。vultr 可以使用支付宝和加密货币支付,这点还是挺厉害的。
我选的系统是 Debian 11,接下来可以直接跟着步骤操作。vultr 需要在后台设置下安全组,放开 80 和 443 就可以了。使用 trojan 需要一个域名,并且使用ssl加密。如果想了解更多,可以看p4gefau1t trojan的文档。
1 | systemctl disable ufw.service |
1 | apt install tmux unzip nginx |
1 | mkdir trojan |
配置文件要把域名和密码修改成自己的。
我们使用 certbot 申请证书,也可以使用自己购买的证书。(或者使用acme.sh)
1 | apt install snapd |
1 | tmux new -s trojan-server |
1 | certbot renew --dry-run |
我推荐使用ClashX,是一个小猫咪的图标,有 MacOS、Windows、Android 版本,配置可以根据https://github.com/Hackl0us/SS-Rule-Snippet/blob/master/LAZY_RULES/clash.yaml自行修改,配置可以托管在服务器上,多端共用一套配置即可。iOS可以使用shadowrocket,兼容Clash的配置,可以直接添加。
1 | System: MacOS 10.15 |
我在家里电脑启动一个 gunicorn 服务时,出现 worker 无法的情况,但是并没有任何保存,只有 worker 重启日志,因为没有报错,排查起来就比较麻烦了。我使用的 pipenv 启动的,软件依赖问题可能性很小。当我尝试使用 ipython 运行的时候,则会报错 Abort trap
。
这时候会发现服务并没有抛错,而我还没办法定位哪里出现的异常,并且吞掉了错误信息。如果使用 pdb 这种工具,定位错误是很费力的。想要快速定位 Abort 位置,可以使用 PYTHONVERBOSE
环境变量。
将 PYTHONVERBOSE 设置为 3 再启动服务,会打印加载模块时的日志,闪退后最后输入的日志,就是我们要定位的地方。通过这种方式我知道是 pycoin 加载 openssl 动态链接库的时候报错了,因为使用了 pycoin 的 ecdsa 模块,并且还是用了 openssl 加速,找不到动态链接库才闪退的。
我们可以将 /usr/local/Cellar/openssl
下的动态链接库拷贝到 /usr/local/lib/
下,并且再做软连接。
1 | brew install openssl |
安装 flow-cli,MacOS 需要下载最新版本的二进制文件,brew 只能安装旧版本。具体安装方法见文档 Install the Flow CLI,该文档使用版本是 v0.25.0。
1 | flow keys generate --sig-algo=ECDSA_secp256k1 |
访问页面:Flow Testnet Faucet ,创建地址。填入生成的 public key,选择ECDSA_secp256k1签名算法和SHA3_256(和 ETH 哈希算法相同)哈希算法。
创建成功后得到地址:0x25470ac6e0585a62,也可以跳过该步骤,直接使用生成好的地址。
1 | mkdir flow-example; cd flow-example |
我们将配置里的地址 f8d6e0586b0a20c7 修改为 25470ac6e0585a62。
在构造 flow 的交易时,我们需要先使用 Cadence 语言编写执行脚本,代码如下:
1 | cat > tx.cdc <<EOF |
在 testnet 网络上,FlowToken 的合约地址是 0x7e60df042a9c0868。如果使用主网或者是 emulator,需要替换成对应的合约地址,具体查询:Flow Core Contracts。
我们 cdc 代码中定义了 transaction 方法,并且包含两个参数 amount 和 to,我们构造交易时,也要传入对应参数。
我们使用 flow-cli 来构造交易,可以将 flow 发送到 0x72aeca95731d54e5(必须是一个真实创建的地址)。
1 | flow transactions build ./tx.cdc \ |
我们只保存 payload,我们的接下来对 payload 进行签名,生成签名后的哈希。
1 | flow transactions sign ./built.rlp --signer emulator-account \ |
广播签名后的交易。
1 | flow transactions send-signed --network testnet ./signed.rlp |
广播后如果 Status 为 SEALED 则发送成功。
]]>现在已经切换到了vercel,部署更加简单,配置也更方便,也没有遇到过netlify构建异常。我怀疑是netlify的node版本过低,是8.x的版本。vercel能识别项目使用的框架,非常友好。
去中心化是非常好的选择,如果使用的是ipfs,博客要使用相对路径,修改hexo配置中的relative_link就可以实现。当然也可以配置上ipns,ipns是基于dnslink实现,配置一下dnslink的txt记录即可。当你浏览器装了ipfs-companion的插件后,访问你的博客域名,就会自动重定向到ipfs的资源了。除了ipfs.io,现在cloudflare和infura也提供了ipfs的gateway,当然你也可以下载一个ipfs的软件,运行在本地来充当gateway。
2021四月我将博客迁移至cloudflare的pages服务上,这是cloudflare刚上不久的服务,目前还是beta阶段,和vercel的配置是一样的,非常简单,vercel比较麻烦的地方是,需要通过命令行设置一下主域名,这样每次自动构建的页面才会部署在自定义域名上。
当然也可以安装ipfs的浏览器插件,直接访问我的博客,ipfs的gateway推荐使用cloudflare-ipfs.com。
]]>我讲pyenv-proxy部署在了Cloudflare上,json数据存储在了Cloudflare KV,用了Cloudflare workers 作为Web服务,不依靠我个人的服务器,保证服务的稳定。
新的配置如下:
1 | export PYTHON_BUILD_MIRROR_URL="https://pyenv.ibeats.top" |
workers代码请查看项:pyenv-proxy
参考文章:如何加速Pyenv
]]>这两个服务,国外加速效果都非常好,国内访问高峰期,有时会慢到让人无法接受,如果公司使用还是要对国内访问进行加速的,国内加速我更推荐使用CloudFront,虽说Cloudflare有很多黑科技,比如argo之类加速功能,但是比起CloudFront逊色不少。
由于国内特色的网络环境,想要解析到国内的服务器,一定要做网站备案,这就导致Cloudflare和CloudFront在国内并没有加速节点。不过Cloudflare有Partner曲线救国的方式,设置起来就比较麻烦了,而且最终还是逃不过备案。
我最终选择的方案是GeoDNS区域解析,因为域名的NS在Cloudflare托管,所以我优先选择使用Cloudflare的Load Balance,可以根据区域进行自定义解析,从使用体验上讲,该服务收费而且中国IP识别准确率也很低,划分区域相对简单,是根据大陆板块划分,没有根据国家划分区域,所以只好放弃Cloudflare。在一番对比后,国内的DNSPod,AliyunDNS准确率都很高,最后我还是选择了AWS的route53服务。
服务器可以考虑使用Alibaba Cloud的OSS服务,香港的OSS对于国内访问速度还是非常快的,而且比较稳定。将中国的解析执行OSS就可以了。当然这只是前端页面加速,如果是其他业务,也可以使用HAProxy或者Nginx做转发,就可以实现更多特殊的需求了。
]]>1 | System: MacOS 10.15 |
下面是简化过的代码。
1 | import aiohttp |
1 | from base import b |
这时候执行 main.py 就抛出了异常
RuntimeError: Timeout context manager should be used inside a task
打断点查看,确实是在 with timer 抛出的错误,这情况很有可能是没在事件循环内实例化 session。代码少还是很容易看出来,运行事件循环前导入了 http,并且实例化了 session。
所以从根本上上解决问题就是导入http时不要初始化 session,然后代码可以改成这样。
1 | import aiohttp |
这样就可以就可以放心的在任何地方初始化了。
运行事件循环前也可以实例化 session。但是不要使用 asyncio.run 方法,可以自己创建一个loop来运行事件循环。
1 | async def main(): |
为什么会这样,我们要进入 asyncio 内部看一下了,CPython 有用 Python 实现的 asyncio 代码,就不用直接看C了。在看过 aiohttp 代码后,aiohttp 初始化 session 时,使用的是 asyncio.get_event_loop() ,asyncio.run() 是自己创建的事件循环。那么我将代码简化后写出来再分析一下。
1 | from events import * |
1 | class _RunningLoop(threading.local): |
aiohttp使用get_event_loop,就是说如果不调用 set_event_loop,当执行 asyncio.run 时,会重新创建一个事件循环,导致事件循环不是同一个,运行事件循环时,aiohttp 里抛出,所以启动事件循环时,也使用 get_event_loop 就能保证最后使用的是同一个事件循环,当然还是不建议这么做,稍微控制不好就会耽误很长的时间找问题所在,最后得不偿失了。
又一年过去了,我自己的搬瓦工也到期了,一年中维护服务也是比较麻烦的,时不时端口被屏蔽,也有封IP的风险。现在已经换到JustMySocks了,搬瓦工自己的服务,比较稳定,线路也不错,多人开车还是挺划算的,当然用别的机场就要放弃一些安全,建议买$9.88/M的,五条线路无限设备。如果购买可以使用我的推荐链接https://justmysocks.net/members/aff.php?aff=20643
2021年03月12日更新
目前已经换到了搬瓦工,AkkoCloud毕竟是小服务商,虽然说线路不错,但是没事断个网也是很难受的,非重度用户不影响。如果使用搬瓦工也可以使用我的推荐链接https://bandwagonhost.com/aff.php?aff=59518,非常感谢。
之前聊过如何科学上网,如果不了解可以先看一下《如何科学上网》。科学上网要有一个好的服务器,所以我推荐AkkoCloud,这也是我在使用的服务器,如果想购买可以使用我的推荐链接https://www.akkocloud.com/aff.php?aff=256注册购买,非常感谢。
这家服务商还比较新,知道的人也比较少,所以不会像搬瓦工那样,便宜的服务器经常处于售空的状态,即便补货你也是抢不到。
翻墙肯定是要稳定,推荐美国圣何塞CN2 GIA,如果你不知道什么是CN2 GIA可以谷歌搜索一下,CN2线路还是很稳定的,高峰期基本不会丢包。更重要的是,三网优化。
带宽最低是50mbps,双向600G流量,油管2k基本无压力,最大是150mbps,1500G流量。当然越大的价格越贵。
比较不错的是,AkkoCloud基本上是可以解锁流媒体的,可以看Netflix、HBO和Disney+,亲身体验是没问题的,但是官方不保证可以解锁流媒体服务,如果需要换IP,也可以加钱更换。
支持支付宝支付,最便宜的50元一个月。不时会推出一个活动,打个八折,还是非常优惠的。建议买75元一个月的,带宽能达到100mbps。
手机号可以不填,邮箱最好填真实的,虽然说不会验证你的邮箱,但是是用来接收invoice的。
AkkoCloud整体偏向于二次元,所以还提供我的世界服务器托管,10块钱一个月,太良心了。
和世界接轨。
最近发现搬瓦工有个补货监控网站,网站链接https://status.bwgyhw.cn/,他们也有TG群的补货通知,感兴趣的加入。如果有买搬瓦工服务器的,可以点击我的邀请链接https://bandwagonhost.com/aff.php?aff=59518,在此谢过了。
]]>“比特币系统出错,矿工已经四小时没有出块了,后台增发数量造成算力漏洞被攻击,可以双花了。黑客利用这个漏洞凭空造出了一千万个比特币出来”。
虽然说的有头有尾,但是稍微了解比特币的人直接可以确认这是谣言了。那么我们就针对这个谣言来聊聊细节吧。
挖矿在区块链中就是出块的意思,也就是矿机做哈希计算得到合法并且符合预期结果,进而获得更多节点的认可并入区块链。所有的块连接到一起就形成区块链,这就像是链表一样的结构,然后通过共识进而达到无法篡改的目的。那么如果说比特币系统出错,或者算力大幅度减少,后台也不可能增发数量(额,比特币是没有后台的),也不太可能一直不出块(也只有算力暴跌百分之九十才有可能很难出块),或者在一些区块链浏览器看一下谣言也不证自破了。
Target是一个256位的数,在挖矿时,块哈希必须小于或等于网络当前的Target。Target越小就越难计算。Target每2016个块调整一次难度(大概两周的时间),每个比特币客户端将生成2016块的实际时间与两周的目标(2016*10分钟)进行了比较,并通过百分比差异修改了目标,单次调整Target永远不会向下降低(增加难度)超过4倍,向上升高(降低难度)超过0.75倍。目标中的变化也叫做Difficulty adjustment
(难度调整),
在2017年8月从BTC分叉之前,都是2016个块重新计算一次难度。由于早期一个版本的BUG,调整了算法,变成了每2015个块调整一次难度。
区块链以Bits的形式存储Target,十六进制有固定的公式来计算,比如区块在存储的值为0x1b0404cb
(以小阶数排序存储:CB 04 04 04 1B),十六进制标识为:
0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000
比特币定义创世纪块中使用的目标为Difficulty Level 1(难度就是difficulty_1_target),Bits值为0x1d00ffff,十六进制也就是:
0x00ffff * 2**(8 * (0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
哈希计算出来的值,哈希值前面的0
越多,计算出来的难度就越大。也就是一个计算难度的衡量标准。
Target用十六进制来表示,Difficulty就可以这样计算:
difficulty = difficulty_1_target / current_target
比如在0x1b0404cb
的难度就是
1 | 0x00000000FFFF0000000000000000000000000000000000000000000000000000 / |
也可以
1 | 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / |
还有一种就是,btc.com通过算例推算出的难度。
在挖矿时,谁计算的快,也就是谁的算力大,就有更大机会得到挖矿奖励,目前大概是12.5个比特币奖励,区块包括矿工费所以一般大于12.5个。下次奖励减半时间大概是2020年5月14日。具体可以看https://btc.com/stats/halving。
为了保持每十分钟一个块,比特币每2016个块重新计算一次网络的难度。如果说上一个2016个块的周期时间大于两个星期,那么就要降低难度,反之亦然。这样我们就可以通过时间比率来调整难度了。
可以看我的实现github.com/ciknight/microchain/blob/master/microchain/chain.py#L76,我使用比率来计算,并且规定比率在4到1/4之间。
可以看一下《Mastering Bitcoin》这本书,想了解更多技术相关可以看比特币的开发手册和Bitcoin wiki。当然比特币只是区块链技术的一种,还有其他的链可以学习,他们互相取长补短,不知道在未来的某一天,区块链会不会改变我们的生活。
也可以使用hexo-renderer-markdown-it引擎解决这个问题,不过我还是建议使用标准,而不是利用引擎来解决这个问题。
花了几十分钟写完,代码如下。
1 | #!/usr/bin/env python |
当然代码依然有一些问题,没有覆盖到所有的 markdown 语法,所以很多问题手动修改了。不过使用 Python 编写脚本确实能提升不少的效率,所以Python 是很值得学习的一门语言。
]]>接下来就是恶心,反胃,腹泻,无力,发热,没有食欲,全都对上了,我这不完了。最后还是听了父亲的话,吃了点挂面后,吃了消炎药和退烧药,开始消热。一个小时后,不在那么难受了,我妈给我煮了面,吃过之后继续消热,终于体温降到了37度,这才舒服一些。
看过人民日报的安抚文章之后,其实想想,这些也都会流感的症状,如果贸然去发热门诊,也加大了感染的风险,不如先自诊隔离的好。虽然退烧了,也要观察两天才好。虽然可能虚惊一场,但是仔细想想,恐慌才是人群的致命弱点。这些天微信群各种谣言四起,不明白为什么会有这些谣言,但是这些谣言只会让人们更加慌乱,这时候,更应该万众一心对抗肺炎。我也并不推崇国外的个人主义,更喜欢人们万众一心对抗肺炎。
这段时间,肺炎盖过了很多的热点新闻,不过人们并没有忘记。红三,故宫,伤医,隐瞒疫情,我们并没有忘记,更希望能够秋后算账。在没有言论自由的社会,还能做些什么呢,只能希望会越来越好,也许现在就是最适合的。
还有武汉加油,今天真的感受到了他们的恐惧感,希望不要传播谣言,多多鼓励他们,为他们加油。
]]>科学上网就需要有自己的代理服务器,不管是买的也好,还是自己自己搭建的也好,需要一个代理服务器(媒介)帮你跨越防火墙,那么我们聊一下有哪些方式。
提前说一下,我不推荐购买私人贩卖的代理,因为有蜜罐和跑路的风险。所以最好是自己搭建。
VPN我指的是像OpenVPN这样的服务,或者使用更简单的PPTP来实现的VPN。不推荐使用和购买,因为防火墙可以精准查封。
都是很注明的反向代理软件,这两种协议有很多种实现版本,但是因为防火墙已精准检测这两种协议,也不推荐使用。
这种问题不大,时间久了也有风险。但是功能较单一,每个域名代理一个,还需要加HTTPS,操作复杂,不推荐。
我曾经看了jsproxy的实现,是利用Service Worker来实现的。感兴趣的可以访问附录1。这种形式体验很好,可以将前端部署在serverless computing上,如cloudflare 的workers,非常简单。当然也有缺点,只能帮助你来浏览网站。如果你是软件开发人员,需要代理像golang这样镜像站很少的语言时,就不可以了(此处只为黑golang)。
使用shadowsock或者v2ray加混淆软件,如simple-obfs、v2ray-plugin。这样能达到隐匿的作用,而且速度也很快。我目前使用的这种方式,我没有介绍SSR软件,是因为我感觉那并没有必要。
搭建需要一台服务器,建议使用Google Cloud的台湾或者香港节点,速度很快。根据线路的不同有一些不同。
申请Google Cloud需要一张国际信用卡(VISA等),注册过程网上有很多。注册成功后创建一个最小的服务器。创建完成之后登录服务器直接执行下面命令。
1 | sudo wget https://raw.githubusercontent.com/Unbinilium/Twist/master/twist -O twist.sh && chmod -x twist.sh && bash twist.sh |
成功后会自动重启,直接使用ShadowSocks扫描二维码即可。
这个是一键安装脚本,脚本会自动安装代理软件和混淆并且优化服务器,保证你的服务器的443端口可以访问。如果需要看源码,请访问Twist的Github https://github.com/Unbinilium/Twist
如果你为路由器翻墙,你连接路由器的设备就都已经翻墙了,包括你的terminal。这种翻墙方式体验最好。路由器我推荐使用话说的,因为话说路由器可以直接上传安装梅林系统(梅林是基于华硕路由器系统魔改,也许是因为国内法律原因才有了梅林)。
我自己买的华硕AC68U,如果需要可以访问梅林社区(KoolShare),下载梅林固件访问梅林firmware。当然也可以使用别的路由器,可能会比较麻烦,不过想省事千万不要买小米。
如果你使用Twist,ShadowSocks软件要使用4.2.0以下,最新版本已经用了v2ray-plugin,Twist依然再用simple-obfs。问题不大,不需要更新。
我感觉我博客离封不远了,请自己享受,不要分享。
pyenv下载python安装包使用的是http协议,那么我们可以使用http proxy来加速,直接设置shell的http_proxy环境变量即可。或者安装shadowsocksX-NG桌面端软件(该软件只适用于MacOS,其他平台在组织的其他项目中)并打开全局代理。
该方法需要你有一个代理服务器,门槛比较高。如果有你有代理服务器,我更推荐将代理部署在路由器中,来获得最好的体验。这些是后话,今后我会花时间来写一下。
搭建代理服务器访问如何科学上网。
这是pyenv支持的环境变量,由于部署在七牛的mirror不在维护,目前只能使用github pages上部署的一个mirror了,不过github也比较慢,所以并没有什么效果。
有条件的可以使用国内的CDN或者服务器部署自己的mirror,项目在yyuu.github.com,需要自己跑脚本更新python的版本。
这种方法成本较高,并且国内没人维护。
国内有python镜像站,像是淘宝源,手动下载相应版本并移动到~/.pyenv/cache/
下,如果没有该文件,请手动创建。
然后使用pyenv进行安装即可,是不是很方便。那么可以自动化吗?
因为之前看过python build,了解过机制后写了一个代理,项目地址:pyenv-proxy
利用这个,就可以直接在淘宝源下载python了,不过pypy和miniconda等目前还不支持。为了大家方便,我在自己的腾讯云搭建了一个代理服务器,可以直接配置使用,接下来我会用WebAssembly部署到cloudflare的workers上。
配置如下:
1 | export PYTHON_BUILD_MIRROR_URL="http://140.143.140.234" |
不过有个小缺憾,目前我只拿出了tar.gz的包哈希,tar.xz的还没支持,所以需要修改源码了,使用vim ~/.pyenv/plugins/python-build/bin/python-build
打开文件,定位到has_tar_xz_support
方法。将返回值置位false就可以使用了。在后续的优化中,我会解决这个问题。
请看最新的加速方案在Cloudflare Workers上部署Pyenv-proxy
]]>最近博客主题出现一些问题,所以将顺便将next-theme升级到了7.7.0的版本,因为之前版本都是改的主题代码,这与一来就要对主题重新做一次美化。新的版本中,可以不再修改主题原文件,而是直接新建一个自定义的文件来做修改。7.x以下版本需要通过修改源码来实现美化或增加功能。仔细读以下hexo的配置,修改配置后就可以实现美化,所以不再赘述。
在hexo目录下创建source/_data/post-body-end.swig
,添加以下内容。
1 | <div style="text-align:center;color: #ccc;font-size:14px;">------ 本文结束 ------</div> |
然后删除主题配置文件custom_file_path
的postBodyEnd
的注释。
在hexo配置文件中添加subtitles
,内容以,
分割,或者自己修改分隔符,如:
1 | subtitles: |
在hexo目录下创建source/_data/header.swig
,添加以下内容。
1 | <script> |
然后删除主题配置文件custom_file_path
的header
的注释。
在hexo目录下创建source/_data/styles.styl
,添加以下内容。
1 | .post-block { |
然后删除主题配置文件custom_file_path
的style
的注释。
为了保证广告能够正常投放,并且产生收益,要禁止广告拦截软件,可以使用第三方代码fuckadblock。
1 | npm install fuckadblock |
在hexo目录下创建source/_data/header.swig
,添加以下内容。
1 | <script> |
检测到广告拦截程序后,会禁用所有的网站样式。
我的博客,除以上自己添加代码外,都是通过修改配置实现,无需修改主题代码,如更新主题,直接git pull
即可。
如需要自定义功能或样式,在source/_data/
下添加即可。