文章13
标签6
分类2

微博图床进入noreferer防盗链时代

微博图床长期以来都是中国大陆访问线路质量高、图片质量高的存在。

2022年12月29日左右,微博图床图片出现了大规模403的情况。事实上,微博图床早已有防盗链手段,但极易通过html noreferer标签进行规避。

所谓防-盗链,是指通过请求Header中的Referer地址判断访问来源,仅让白名单域名访问资源的一种手段,可以降低流量成本。通常的,网站不会对noreferer防盗链开启防盗链,所以新浪和盗链用户暂且相安无事,而本次对noreferer开启防盗链,才致使出现大规模403。

很不幸,本站的图片API和部分内容都使用了微博图床,因此,一场紧急“救图”行动开始了。

临时措施

如果很不幸没有备份存在图床里的图片,我们可以选择修改referer的方式临时下载。

curl --referer可以伪装来路,从而解决403错误无法下载图片的问题,但这样未免太不方便;

Chrome浏览器安装 Header Editor ( https://chrome.google.com/webstore/detail/eningockdidmgiojffjmkdblpjocbhgh),参考下图添加修改请求头的规则,匹配规则与使用域名相符即可。

待下载图片后重新上传至其他处,替换网页上的链接即可。

掩耳盗铃

经测试,tva1.sinaimg.cn等微博图床域名已开启noreferer防盗链无疑,但tvax1.sinaimg.cn等域名似乎仍可以通过noreferer访问,如果不想将图片迁移,可以将图床域名进行替换(内容不会改变)

有二次压缩——
加前缀:https://i0.wp.com/tvax4.sinaimg.cn/large/ (第三方反向代理,风险自负)
加前缀:
https://image.baidu.com/search/down?url=http://tvax4.sinaimg.cn/large/
(百度搜索,风险自负)

个人非常不推荐这样做

如果你想稳定地提供图片,还是使用其他公共图床/对象储存吧。

一点感慨

从良心云年末促销力度明显削减,到微博图床防盗链,大家的裤腰带似乎勒得越来越紧了。

希望疫情早日过去,经济早日恢复。

2022年终总结

Flag

虽然因为各种原因,今年一整年都没发过什么blog(沉默是一种迫不得已的、相对可行的选择),

自己也到了写年终总结——未来展望的年纪,虽然文书水平比不过ChatGPT,也算代表了一些个人愚见吧(笑

生存还是毁灭

中学时代没想过自己会来到青岛这座城市,没想到会读海洋相关专业,

直到去年也没把”2019年是未来十年最好的一年“当回事,

但时至今日,桀骜不驯的我终究要面对并不光明的未来。

多年后,我们或许会将这段经历归结于经济环境的整体下行和自身的不求上进。

与其如此,不如在新的一年到来之际抛出这个问题,与君共勉。

关于高考

记忆中,高考前燥热的教室,有时代特色的健康承诺书,24h、48h核酸阴性证明,还有静止在高考生物答题结束的那一刻,内心涌出的那一句

终于结束了

虽然可能并不是圆满的句号,但也正式与我的高中生活作别了。

随后的一切,让我明白那不是结束,而只是开始——

是离开这个我生活了十八年城市的开始,

是与家人聚少离多的开始,

是独立生活的开始

在中国注定是没有gap year的,这三个月可能是我几十年内最放松的生活了,

纵使有对成绩和录取结果的担忧,有对复读和专业的考虑,我仍难以释怀那段随心所欲的日子。

关于学习

欢迎来到大学,一个被称作“象牙塔”的地方。虽然学习并不是大学的全部,但绝对是最重要的部分。

可能大多数新生都会经历想象与实际大学的落差,都曾梦想在新的环境能够有所改变,现在的培训机构更是极力制造“大一考研”的焦虑,但到头来宏大的计划往往又单停留在口头上。(印象中TED有一篇叫做“不要告诉别人你的计划”的演讲)

我也不例外,唯一不同的可能是 我对自己的学习和执行力认知还是比较清楚的,以至于没有对速成、捷径的幻想(“成功学”的核心)(笑)。

这里展开聊一下:

假设某个高价值的技能/能力存在“速成”的方法,那么这个方法必定流传开来,并被足够多的人掌握。根据经济学原理,一旦足够多的人具备,那么该技能/能力就不可能再保持高价值。

同样的,如果你知道某个捷径,通常意味着别人也知道。而捷径如果被足够多的人知道,竞争人数激增后将不再成为捷径。

这两点基本打破了对成功可复制性的幻想。

不论是高考的结果,还是在大学的短暂学习,都算不上让我满意。但我非常享受学习给我带来的便利:词汇的学习大大提高了原著和论文阅读的效率,口语和听力的提升也为交流留学提供了更好的基础;数理基础让我得以更加简洁地描述我的想法,相关知识结构的建立带来了无数“灵光乍现”。我将其看作学习的动力,我相信它会将我带向更远的远方。

我想做一个纯粹的人,但现实的复杂让我远远做不到纯粹。

对AI未来的展望

首先感谢一年来,一路上的贵人相助和诸多专家的精彩演讲,才让我得以在这里对AI进行展望

Large-scale落地应用给人的震动是很大的:

CLIP恐怖的泛化能力逐渐扩展到多模态;

Diffusion生成模型大有作为,泄露的novelai模型开启了AI出图热潮;

ChatGPT等一众语言模型让人们正视NLP领域的突飞猛进

这标志着AlphaGo、AlphaFold颠覆围棋界、分子生物学的故事将会在我们生活中不断重演,这是生产力的发展,背后是足以改变千万人命运,冰冷的浮点运算。从这一点来说,完全不会被AI替代的职业是不存在的,正如施一公教授所言,我更倾向于将AI作为一种辅助。

除了CV、NLP、SD,Transformer和图神经网络依旧是值得关注的发展方向。

对自己未来的展望

独立思考:人类之所以能够从众多动物中脱颖而出,关键在于人类更擅长于思考;同样的,某个人之所以能从社会中脱颖而出,善于思考往往是重要因素。

做好自己的工作:我不能忍受黑暗,因为我曾见过光明,我不想成为一个圆滑的人。在结束一天忙碌后的深夜,我常因我觉得我还可以做得更好而自责,我希望2023的我也是如此,尽管这可能会很累。

不要告诉别人你的计划:遵循这一原则,我并不在这里给出具体的计划和目标。同时,计划往往是“多元化”的,“往往因“价值取向”和“人生追求”而不同。我只希望能成为自己想成为的人,比昨天的自己更加卓越,能真正有所作为。

去旅行吧:三年来,不知多少旅行计划因疫情而搁置取消。旅行让我们的祖先在此定居,是刻在DNA里的本能。随着防疫政策的优化,境内旅游、出境游都有序恢复,希望自己在2023年能够去很多很多地方,见很多很多人。

新年的钟声敲响后,你又会梦到什么呢?

Intel DevCloud海量CPU核数内存试用与rootless玩法

Intel DevCloud

官方说法:在一个由最新的英特尔®硬件和软件组成的集群上免费学习、制作原型、测试和运行您的工作负载。

网上的教程大多是对devcloud的线上IDE进行试用,比如wzfou认为英特尔Intel DevCloud是一个限制10小时80H256G的WebIDE。

在经过研究后发现oneAPI具有更多的玩法

警告⚠:Intel DevCloud是一个学习平台,请严格遵守ToS,使用proot和挖矿行为(甚至内网穿透)会导致账号被封禁!

传统玩法

注册账号:https://www.intel.com/content/www/us/en/forms/idz/simple-registration.html?tgt=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fforms%2Fidz%2Fdevcloud-enrollment%2Fedge-request.html

官网:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/overview.html

服务器:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/build.html 

注册部分可以参考 英特尔Intel DevCloud免费云服务器和AppOnFly免费试用Windows Server服务器 - 挖站否-挖掘建站的乐趣 (wzfou.com),这里不再赘述。

至此,你获得了一台平平无奇的“小鸡”

重头戏

10小时的单次运行限制和Jupyter环境未免不够极客,我们能否让它更加极客呢?

答案是可以,而且就写在oneAPI的文档里(不知道为什么网上几乎没有相关的介绍,可能rootless和时限减少了滥用)。

首先我们要透过ssh与Intel login-2堡垒机建立连接,在https://devcloud.intel.com/oneapi/documentation/connect-with-ssh-linux-macos/ 页面里,下载包含账号私钥信息的setup-devcloud-access-xxxxxx.txt,然后执行网页上给出的命令,不出意外的话,就可以与login-2的终端进行交互了。

这个堡垒机只有10H16G,完全不符合我们的性能需求,我们要通过qsub来提交任务请求,获得集群中的高性能机器供我们使用。

在login-2终端中输入pbsnodes,我们可以获取到所有的节点状态。这样呈现的数据可能比较乱,我们可以使用pbsnodes | sort | grep properties | uniq,仅展示关键数据properties.

properties呈现了各种关键参数“core/xeon”、“Tiger Lake/Coffee Lake/Comet Lake/Skylake/Ice Lake”、内存大小、GPU等,我们提交任务请求时需要通过它指定机型。

我使用 qsub -I -l nodes=1:ramgb:ppn=2,walltime=24:00:00,cput=100:00:00 -d . 进行演示,其中ramgb可以替换成其他参数,这样我们就得到了100小时CPU时间,24小时单次运行时间的128H256G的节点。除了没有root权限,与其他机器无异。

rootless玩法

Intel DevCloud自带完整的运行库和编译链,而且我们拥有不俗的性能,理论上借助编译安装我们可以运行绝大多数user mode软件。

但是如果不借助包管理软件,这依然是一件头大的事情,而且我们可能要维护不同的工具链和glibc...这里,笔者尝试使用homebrew进行包管理,安装代码如下:

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"

除此以外,我们还要在.bash_profile中加入

export HOMEBREW_PREFIX=~/homebrew
export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"

以确保下次可以直接使用homebrew,brew install 即可安装(当然是存在很多坑的,自己解决啦)

其他问题

  1. Intel DevCloud 网络带宽配置相当低,网络需求比较大的应用可以不用试了
  2. brew install screen 应该是基本操作,你可以自定义lock的路径到userhome来持久化screen子进程;
  3. 有了homebrew,为什么不试试 Modern Unix 呢?
  4. 请按需使用DevCloud,把资源留给需要的人

我的现状——摘录自ATRI

开端

夏生:“无所谓了,反正早晚都会葬身海底。没有必要诞生新的历史”
只在于如果迎接最后的结局

ATRI:“……”
ATRI:“这就是解脱(救い)吗?”

夏生:“是吧,我现在的心情就就释然了”
至少在失去右腿的那一天后,今夜就是我最平静的时光。

ATRI:“接受灭亡,坐以待毙就是解脱吗?”
ATRI:“乐园和墓地是同义词吗”
ATRI:“如果还有时间,就应该挣扎到最后”

ATRI的一番话,把沉浸在幻想中的我拉回了现实
……

夏生:“ATRI,我也可以问个问题吗”
ATRI:“请说”
夏生:“在船上的时候还没有说完。我的幸福究竟是什么?”

ATRI说现在的我并不幸福

所以我反问幸福是什么,她回答时却被龙司打断。
ATRI:“是未来”
ATRI:“你和我不一样,还剩下漫长的生命,还能创造许许多多的东西”

ATRI:“请不要舍弃自己的未来”

我不曾舍弃自己的未来

我没有一个聪明的头脑,也很难有什么称得上能成为机遇的事情。

这并不是在某日午后闲暇的EMO,而是我在写下这段文字时的真情流露。我是平庸的,是的,我最终还是接受了自己的平庸。

也许就这样盖棺定论对于尚未步入“象牙塔”的我来说为时尚早,但是于我来说,这样可能更有好处。从小到大,我在树莓派上初识嵌入式开发;在除夕夜里发行Altcoin追逐币圈热潮;也曾一瞥机器学习的强大立志助力强人工智能……但一切终成过眼云烟,什么都没有留下。

运气就是,机会恰好撞上了你的努力。
(这是班主任在whitebroad上的一句motto)

也许我有过好的运气,但运气过后便再无下文,这是多少运气都无法弥补的。

或许也是我的宿命。

何为未来

......

(亚托莉)“夏生先生,你刚刚说死到临头还学习是白费力气。你应该已经察觉到我活不了多久。短短几天的恋爱就有意义吗?”
(亚托莉)“我不认为这是浪费时间。与夏生先生成为情侣的时间,比以往更有意义。现在也一样。和你相互依偎在一起的时间,比以往有意义得多。”


那一天,就留给未来吧

骁龙845吃上Windows on ARM后

背景资料

何为骁龙845(Snapdragon 845/850, Refer Wikipedia):

2017年5月5日,高通官网公布新处理器的命名方案SDM845,为首个采用ARMv8.2指令集的Cortex-A75和A55修改后的Kryo 385 Gold / Silver 核心的CPU的骁龙800系列的系统单片机,CPU部分特别新增了三级缓存,搭配的存储器也多了系统缓存。Geekbench4跑分的部分,单核部分约2500分,多核部分为8500分。

2018年6月,高通于台北国际电脑展览会发表骁龙850,为设计给Windows系统的笔记本电脑处理器,规格大致上为845的高频版本。比起之前采用高通骁龙835处理器的Windows系统笔记本电脑有不少的性能提升。骁龙850相较于手机的骁龙845运算速度再快上30%,且使用时间将高达25小时,人工智能性能同时也成长三倍,最高支持网络将达到1.2 Gbps,将为准5G连网速度。骁龙850移动平台可以让用户体验更轻薄、携带便利的无散热风扇设计。同时骁龙850芯片可支持设备内置的AI体验,而用户能体验到相机、语音、电池续航力等方面的提升。高通本次携手微软Windows 10打造的骁龙850芯片,也可支持微软人工智能语音助理Cortana。

何为 Windows on ARM Refer Wikipedia

2016年12月7日,微软在中国深圳的Windows硬件工程大会上宣布与移动技术公司高通开展合作。微软宣布其在ARM架构设备上使用虚拟机运行Win32应用程序的计划。进行展示的特里·迈尔森在演讲中提到,这一项目将提高基于骁龙处理器的Windows移动设备的生产力,使其能直接运行大多数既有的Windows应用程序,同时这些设备的无线连接、能源消耗方面相比搭载英特尔硬件的设备更优。

2017年12月,微软与高通正式发布了Windows 10 on ARM以及搭载Snapdragon 835处理器"Always Connected PC"系列的电脑产品。

2018年5月,微软发布了Windows 10 on ARM的操作系统对程序集的支持情况以及目前存在问题的帮助:

2020年,受到苹果电脑M1处理器Mac Mini影响开发仿64位版本已经可以运行64位的程序。

1.硬件驱动仅支持针对ARM64平台编写的驱动程序。
2.针对虚拟机运行的Win32应用程序仅支持仿32位版本,2020年受到苹果电脑M1处理器影响开发仿64位版本已经可以运行64位的程序。
3.使用OpenGL1.1之后的游戏或程序,以及部分使用DRM/反作弊系统的游戏或程序不能运行。
4.输入法、系统辅助软件、以及云存储应用程序可能不能正常工作。
5.不支持针对移动设备开发的APP。(如Windows Phone/Windows Mobile应用)
6.不支持Hyper-V虚拟机。

可行性研究

由上述背景资料可知,骁龙850规格大致上为845的高频版本,且市面上早已有骁龙850的量产机。因此,驱动和ACPI问题我们可以照葫芦画瓢来解决。另外,由于其他SoC没有这种得天独厚的条件(仍有部分7系SoC有类似条件),运行Windows的可行性并不大,但仍可以尝试运行mainline kernel。

事实上,项目 Renegade Project 就致力于完善UEFI和WOA的驱动适配。该post也着重讲这个有趣的项目。
目前该项目主要适配了机型:

OnePlus 6 (enchilada)
OnePlus 6T (fajita)
Xiaomi MIX 3 (perseus)
Xiaomi PocoPhone F1 (beryllium)
Meizu 16th (m1882)
Meizu 16th Plus (m1892)
Smartisan R1 (trident)
BlackShark One (skr-a0)
OPPO Find X (pafm00)
Xiaomi MIX 2S (polaris)
LG G7 (judyln)
Samsung Galaxy S9+ (star2qltechn)
Xiaomi MI 7 (dipper-old)
Xiaomi MI 8 (dipper)
Nubia X (nx616j)
Nokia9 PureView (olympic)
ASUS ZenFone 5Z (draco)
Vivo NEX Dual Display (pd1821)


成果展示

我是在设备Oneplus 6T上运行WOA的,目前一加系与小米系支持相对完善,均支持GPU和蜂窝数据流量的使用,且Synaptics机型触控已进行适配。

首先我针对散热系统进行了改良,选用了主流的半导体制冷片方案,顺便还能作为支架一用。oneplus6T

我的其他工作:驱动签名(时间戳不受信任,合并注册表方可使用):https://github.com/xqymain/WOA-Drivers-signed

进入系统:LoadingTaskmgr

一切就绪后,进行了 DiskMark、Geekbench 和 Cinebench R20的测试,其中Cinebench运行在x86模拟环境下,结果如下:DiskMarkCinbenchR20

此外,日常的使用场景也基本能满足:
WebPageMusicPhotoshopPowerpoint

使用指南

大部分主流软件对WOA的支持不佳。下面列举一些原生支持ARM64的软件:7-zip、Bandizip、Putty、VS Code、MS Office(64位预览版支持较好)、Firefox、VLC。更详细的清单参见这个表格(已废弃)。

关于指令集的支持部分,Windows 11(22000.120)下可以模拟至SSE3。AVX指令集已实测无法调用,其他指令集并没有一一测试。日常使用并没有很大问题。AVXTEST

关于运行和开发环境,目前已测试Native WSL1、Python3.x、Go1.7、OpenJDK16、17和转译 VS2022rc、转译VC++2005-2019运行库,支持情况良好。