文章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,把资源留给需要的人