
耗时半天,我用 Kotlin 实现了 helang 何语言
耗时半天,我用 Kotlin 实现了 helang 何语言 起因 事情是这样的:一天下午,我偶然看到了这个仓库 […]
耗时半天,我用 Kotlin 实现了 helang 何语言最先出现在HikariLan's Blog。
耗时半天,我用 Kotlin 实现了 helang 何语言 起因 事情是这样的:一天下午,我偶然看到了这个仓库 […]
耗时半天,我用 Kotlin 实现了 helang 何语言最先出现在HikariLan's Blog。
解决 Argon 主题浏览时页面滑动过快的问题 问题发现 Argon 这个主题也用了不短的时间了,在使用的过程 […]
解决 Argon 主题浏览页面时滑动过快的问题最先出现在HikariLan's Blog。
众所周知,Windows 11 内置了 HDR(高动态色域) 支持,当我们的显示设备支持 HDR,并启用 HDR 时,我们便可以看到比平常(SDR)更细腻的颜色。但是,默认情况下,当我们在 HDR 模式下试图使用任何截屏工具(甚至录制工具)截取 Edge 浏览器界面时,你会愕然地发现截图(录制)出来的画面会突然过曝:
这其实是由于 Edge 使用了错误的颜色档案导致的,我们可以通过修改默认颜色档案配置来修复这个问题。
访问 edge://flags/
,搜索 Force color profile
,并按照你的 HDR 颜色档案进行配置:
作为参考,我的联想 R9000P 2021H 笔记本在 启用 HDR(Dolby Vision)时,将 Force color profile
设置为 Display P3 D65
档案可以完美解决这个问题。设置完成后,截图便不会再过曝:
如果你不清楚什么颜色档案是适合你的,你可以一个一个试试,注意,这有可能会导致你的 Edge 浏览器无法正常显示内容(例如内部全黑,全白),因此,建议你新开一个 Edge 浏览器档案单独测试,以免无法 rollback。
解决 Windows 11 在 HDR 模式下截图 Edge 浏览器界面时画面过曝的问题最先出现在HikariLan's Blog。
面试经历 – Troph(北京时代传浮科技有限公司) 在 August 9, 2022 和 Aug […]
面试经历 – Troph(北京时代传浮科技有限公司)最先出现在HikariLan's Blog。
第五天早上: 凤凰古城瞎转悠
然后,从十一点开始,做了八个小时的车回长沙
晚上,恰了个饭。
在这里点名批评长沙的核酸检测机构,单检窗口比混检窗口多三个,结果混检那边排了一堆人,最后排了好久没办法只能花 16 块钱做单检。
第六天: 大早上去橘子洲头逛逛~
时间过得真快啊,下午六点就坐飞机返回西安啦~
六星级酒店的早饭也是这么的「端着」呢:
今天主要的观景地就是云台山。
坐缆车上山,很快,也很长,半个小时才到山上。
过玻璃栈道的时候偶然看到绿色,很喜欢。
山上的景色也十分不错。
接下来,就是四五个小时,前往凤凰古城的车程(车上一直在写前几天的游记,一直写到凤凰古城的游客中心,呜呜)
晚上:蹦迪古城
大晚上不睡觉来这是我做过的最错误的决定。
虽然但是,世界树挺好看的(bushi
DLC: 蹦迪古城珍贵视频
Tips: 原文著于 July 23, 2022,对应时间实为 July 22, 2022
先是去了个玻璃栈道,本来没啥意思,结果底下有人蹦极,吸引了一堆人来看,还挺有意思:
接下来,前往张家界国家森林公园,风景很好:
最后,今天晚上住了个度假酒店,似乎是六星级酒店,十分豪华(附本来是给班里同学发的介绍视频):
Tips: 原文著于 July 23, 2022,对应时间实为 July 21, 2022
来到长沙的第二天!早上六点半起来,匆匆吃完早饭后,七点半左右就出发前往景区了。
行程过程中路过的橘子洲头:
上午前往了韶山,参观了毛主席故居。由于个人不太感兴趣,因此过多拍照(题外话,里头收费有够恶心的)
正当我以为长沙之行也就这样的时候,晚上前往的「黄龙洞」震撼了我,让我觉得不虚此行:
黄龙洞外景
进入黄龙洞
奇山怪石:
实在是拓展眼界(就是有点废脚,逛了俩小时,爬来爬去,回程的时候走一步腿抖三步,hhh)
Tips: 原文著于 July 23, 2022,对应时间实为 July 20, 2022
经过多天的筹划,终于决定了本次前往长沙旅游的行程,为了不留下遗憾,特此撰写游记记录下来这次旅程(其实本来打算去成都的,结果恰恰成都爆发了疫情,最后只得换成长沙)
早上十点左右,收拾好行李,吃好早餐(吃了碗糊辣汤,味道不错),站在路上等待接机师傅的车。
前往机场ing…
到达 T3 航站楼!
虽然这不是我第一次来机场,但是确实是我第一次坐飞机,所以心情十分激动!
经过安检
拍一些大飞机ing…
其实本来是两点的航班,结果由于前序航班晚点,导致我们的航班也延迟了两个小时,煎熬ing…
登机咯
等待起飞…
飞行中…
经过了两小时的飞行,终于到达了长沙!
第一天并没有安排什么行程,因此我们研究过后决定去扬帆夜市整点吃的。冰粥和生蚝很好吃!(臭豆腐一般
最后晒一张酒店房间照片
就是这样,晚安啦~
行程简表:
如果你玩过工业 2,你应该知道“锻造锤”这个物品,它可以通过消耗耐久值来将矿物锻造成矿物片,但是实际上“消耗耐久值合成”这个功能在原版是不受支持的,那么,应当如何实现这个功能呢?
环境:Minecraft 1.18.2, Forge 40.1.0, Mapping ‘parchment’ 2022.03.13-1.18.2
首先我们肯定还是要按照正常的情况(直接消耗整个物品,而不是消耗耐久值)将 recipe 的数据包 json 制作好的,接下来,我们要想办法让他消耗耐久值:
通常我们会想到用数据包直接实现,但是这个上面说了是不受支持的;
然后我们可能会想到用事件来捕获,但是 PlayerEvent.ItemCraftedEvent
被触发时合成已经结束了,因此我们是无法获知合成信息的;
然后我们可能会想到覆盖 Item.onCraftedBy
方法,但是这个方法的和上面的事件一样,被触发时合成也已经结束;
事实上,我们可以先退一步,看看看原版有什么东西是可以在合成时保留原来的物品的,诸如水桶这样的容器,都拥有这样的属性,经过查看,我们发现 Item
事实上存在一个 craftingRemainingItem
属性,代表的就是合成剩余的 Item
,应该在初始化时通过 Item.Properties
传入。
但是我们不能按通常的办法向 Item.Properties
传入 Item
:在对象初始化期间传入 this
显然是不可能的,传入一个新的对象实例则会直接导致无限递归调用。
这时,我们就需要退而求其次,看看 craftingRemainingItem
属性是否存在访问方法,然后通过 override 这些访问方法,间接的传入 craftingRemainingItem
。恰巧,我们可以看到 IForgeItem
的 ItemStack getContainerItem(ItemStack itemStack)
和 boolean hasContainerItem(ItemStack stack)
方法提供了这些功能,接下来,只需要编写代码,便可以完成我们要的效果了:
package io.hikarilan.examplemod.items
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Rarity
import kotlin.random.Random
import kotlin.random.asJavaRandom
class ExampleItem : Item(
Properties()
.stacksTo(1)
.durability(10)
) {
override fun getContainerItem(itemStack: ItemStack): ItemStack {
return itemStack.copy()
.apply { hurt(1, Random.asJavaRandom(), null) }
.let { if (it.damageValue >= it.maxDamage) ItemStack.EMPTY else it }
}
override fun hasContainerItem(stack: ItemStack): Boolean = true
}
简单来说,首先覆盖 hasContainerItem
方法让 Minecraft 知道,craftingRemainingItem
字段应该是存在的(即使实际上它是空的),然后,覆盖 getContainerItem
方法,当每次需要的时候,就复制一份 itemStack
,然后令其耐久减少,当减少到 0 的时候返回空物品(也就是物品消失)
从毕业进有赞之后,有赞发了一台13寸的MBP作为工作机,我就开始用MacOS作为开发环境了。后续发的机器性能实在不够用,就在16款touchbar MBP发布后,买了15款顶配的MBP。MacOS开箱即用的桌面环境和靠谱的命令行工具链确实非常吸引人,当时还没有WSL,Windows底下各种魔法的bug着实有些让人头秃。
即使离开有赞后,MBP依旧是我的主力开发环境,家里的Windows基本只用来打
作为文献大户专业,心理学需要阅读的文献量巨大。但众所周知,CAJViwer 这玩意的响应速度实在不行,而且处理文献十分不便。虽然其内置了导出 PDF 的功能,但是其导出的为没有大纲的纯图片 PDF。
又不是不能用.jpg
好在 Github 上有这样一个项目:caj2pdf。
然而这并不是一个标准的 Python 包,我不能一个 pip install caj2pdf
直接开跑,然后我又不会别的了。
行吧,感谢 Eter 雪中送炭(
所以,这是一篇傻瓜式指南,旨在给像我一样没有任何编程基础(其实还是有那么一点点)但是又需要用这玩意的同志提供帮助。
这里就不讲了,参考:Python 3 环境搭建 | 菜鸟教程
caj2pdf
包在其 Github 项目页上下载其完整源码。该项目处于持续更新状态,所以其实可以考虑时不时回来更新一下。
下载后解压,记住存放路径备用。
根据其指引文件,该程序需要 mutool 才能运行,因此前往下载:https://www.mupdf.com/downloads/index.html
解压之后,记住存放路径备用。
PyPDF2
打开命令行,输入:
pip3 install PyPDF2
如果你 Python 装得没问题的话,这一步应该会成功。
根据指南,需要把 mutool 设置为 Python 运行的环境变量,以便程序调用。
右键“此电脑”——属性——高级系统设置——环境变量,编辑如下键值:
点击编辑,出现如下界面,点击新建,将 mutool 的路径填进去。
打开命令行(CMD),cd 到你解压 caj2pdf
的目录,然后运行:
# 转换文件
python caj2pdf convert [CAJ文件的完整目录(包含输入文件名)] -o [你准备输出文件的目录(包含输出文件名)]
# 从 CAJ 文件中提取大纲信息并添加至 PDF 文件
## 遇到不支持的文件类型或 Bug 时,可用 CAJViewer 打印 PDF 文件,并用这条命令为其添加大纲
python caj2pdf outlines [CAJ文件的完整目录(包含输入文件名)] -o [你准备输出文件的目录(包含输出文件名)]
拿我自己的举个例子:
python caj2pdf convert D:\Documents\BNU\文献\中英字幕对中国英语专业大学生附带词汇习得影响的实证研究_马超.caj -o D:\Documents\BNU\文献\中英字幕对中国英语专业大学生附带词汇习得影响的实证研究_马超.pdf
python caj2pdf outlines D:\Documents\BNU\文献\中英字幕对中国英语专业大学生附带词汇习得影响的实证研究_马超.caj -o D:\Documents\BNU\文献\中英字幕对中国英语专业大学生附带词汇习得影响的实证研究_马超.pdf
一切正常的话,你的文件已经输出了。
这个运行方式说实话非常不优雅,显然不是为外行设计的(
原计划自己写个批处理,但是我 CMD 语法早八百年忘干净了,正在我重新捡起来的过程中 Eter 给我发来了一段代码:
这段代码有 bug,我不会修,不是很好用,大家还是自己手动算了(
@echo off
for /f tokens^=* %%i in ('where .:*.caj') do python [替换成caj2pdf路径] convert ^%%~dpi^%%~nxi -o %%~dpi^converted^\^%%~ni^.pdf
for /f tokens^=* %%i in ('where .:*.caj') do python [替换成caj2pdf路径] outlines ^%%~dpi^%%~nxi -o %%~dpi^converted^\^%%~ni^.pdf
把路径填进去,保存成一个 .bat
文件,然后把这个脚本放进你有 CAJ 文件的目录里运行,高效快捷全自动。就是其实也不是很优雅(
但是我水平就到这了(
原作者本人表示,该软件仍然无法处理全部的 CAJ 文件,但是应付日常应该是够用了。
总之就是这样,也没什么技术含量也没什么别的,纯属帮帮像我这种小白(
DDL 越多越想摸鱼,十篇文献摘要还没写,然后我花了半个小时写了个这个,溜了(
原本是一段24小时自动删除的说说,想了想可以归档到这里
稍微看了一些文章
感想是
没有任何剧情向RPG游戏应该被称作“第二个Undertale”。
所有以剧情为导向的游戏,其故事内核必定是独特的、不可替代的。像这样简简单单将其和别的游戏作比是在否定作者的独创能力。
Undertale在游戏史上一定是浓墨重彩的一笔,但这不代表后来的作品一定是步其后尘。
Undertale是独特的,其他优秀的剧情类RPG游戏也是独特的,独一无二的。
以下为Nitrome吧整理的相关文献资料:
【中文翻译】专访Nitrome创始人Mat Annal: Flash小游戏的消亡与未来
Indie Spotlight: Nitrome's Matthew Annal on coming back from the brink
Nitrome Lead Programmer Interview: Romain Macré
Interview: Why Poki is partnering with Nitrome and more to preserve the Flash games of old
Why Yacht Club is Handing Shovel Knight Dig to Nitrome
其实重开博客是 2020 年 12 月就在考虑的事情了,结果拖到了现在。
下载之类的就不在赘述了,直接从配置开始
首先在服务器上最重要的需求之一就是尽量不要影响到服务的流量性能,所以和家用代理会有一些细微的规则调整。
我的网关机器上原始是没有dns服务的,直接转发给114,所以现在要让clash接管53端口,但是又不希望clash进程跑在root用户下,所以需要给特殊权限
setcap 'cap_net_admin,cap_net_bind_servic
最近在写nestjs-bunyan的时候,想要实现decorator自动创建childLogger,记录当前class的功能,最初的实现也很简单粗暴,在decorator上记录当前类名,然后给每个类名创建一个Provider。
但是这样做缺点也很明显,在应用启动后,没法创建新的日志模块,也不能手动添加日志模块。正好最近公司基建在做日志改造,就决定优化一下这个逻辑。
经过一阵深思,觉得nestjs的
...曾几何时,我也以为雷电3传输数据,能跑出标称的40Gbps带宽,不过仔细翻了翻文档,我才发现只传输数据,最大带宽是22Gbps。这个“40Gbps”的标称值,有点类似于电信的“3000M宽带”(1000M家庭宽带+千兆无线+千兆5G)
第一次发现这个说法,是在一篇知乎专栏中发现看到的
但是文章中并没有给出这个数据的出处,所以一开始内心也表示怀疑,于是搬出Google
Goo
这个问题已经有一阵子了,最初是WebStorm启动的时候报端口占用,本来以为是WebStorm的问题,所以问了jetbrains。回复是重置winsock,好了一段时间。
不过好景不长,接着是Shadowsocks-win启动的时候又报1080端口被占用。
而用"netstat -ano|findstr 1080"命令却找不到任何占用这个端口的程序,网上一阵搜索也没找到相关的修
单日请求量已经快两千万次了,高峰期也超过了600QPS
请求的文件其实也挺集中的,基本上就是最近几个版本的asset和libraries补全。其实根据这些特征,可以考虑下一步openbmclapi根据热度区分节点文件优先级了
本数据包括MCBBS源
今天你贡献流量了吗
最初开始做BMCLAPI的时候只是因为对BMCL的下载速度不满意,有些启动器在我之前是通过多线程分段下载加速的。至于我,就发挥老本行,自己做镜像。最初的BMCLAPI其实还没有名字,我只是用我自己的网页服务器+ftp上传文件。1.2.5时代的资源文件还很简单,游戏内F3+S就可以下载。下载完之后我再手动上传到服务器上,于是这就是最初的BMCLAPI。
最近在升级到windows 10 1903时遇到了驱动错误,具体报错如下图
之后我发了条微博吐槽这件事情https://weibo.com/1457585272/HFKVVzYaa
结果发现不少人也有同样的问题,而且Google和百度也并没有找到靠谱的方案。我来记录一下我的解决过程,希望能帮助到有同样报错的人吧。
不过我也不确定我的方法能够适用于所有情况,不过据微博的反应来看应该似乎是可以的,由
自从bmclapi赞助开始用起爱发电,就一直在手动维护赞助名单,随着名单越来越长,每次维护名单的时候都要手动添加然后人肉去重。问了一下官方,也暂时没有打算做webhook。
每次手动维护名单实在好烦,于是花几分钟研究了一下赞助名单接口,又花了几分钟糊了个脚本,来自动生成赞助名单的markdown。
以下代码只要打开爱发电的网页,登陆后打开开发者工具,粘贴执行即可得到对应的赞助名单
!async f
很久以前我就在寻找一款靠谱的todo list应用,但是一直没有找到一个彻底满意的。
在此之前也陆陆续续跟朋友一起用过Habitica。但是Habitica有一些缺陷,以至于一直无法让我把它作为一款生产力工具对待。比如
中间也考虑过自己动手丰衣足食,但是自己搞还要
...厂里有一个推送服务,负责网页推送和数据同步,基于socket.io。
网页推送通过rabbitmq监听队列实现组织成员变化和对应socket.io房间用户的同步。
新建一个组织后,立即邀请一个用户B,则当前用户A(不是被邀请的,是邀请别人的)用户也会收到目标用户的邀请通知推送,但是由于A并不是这个通知的接收人,所以点开会丢出403。
正常情况下用户A根本不应该收到这
最近看到了LWL的https://blog.lwl12.com/read/mta-of-the-elite.html
于是也计划了一下自己的邮件服务器,由于饱受各类垃圾邮件骚扰,所以一直想要一个支持wildcard收信的邮件服务。
而国内各类公开的邮件服务,无论是付费的也好,收费的也罢,似乎都并没有退出这个功能的计划,于是就想趁这个机会一起搞定。
最近有个朋友问我nginx反代什么都变成了下载。
第一反应当然是content-type的问题,于是用命令行访问先检查一下返回的content-type到底是啥,结果
难道是httpie的问题,于是又试了试curl
这就很尴尬了
查看一下返回的hexdump,基本和httpie的报错是一样的
那让我们回退最原始的telnet
结果依旧令人崩溃,而且nginx的access log以及err
今天新上线一个项目的时候用到了一个上传的接口,在本地测试和内网环境下都正常,上服务器以后一直504,应用log显示文件没有被上传上来,而浏览器log却显示文件正常上传。
初步推断是tengine上没把请求转发完全,导致后端一直在等待剩下的body,直到90s超时。
于是在服务器上架起了ssh隧道,通过本地直传服务器,就能够正常上传,于是将问题确定在了反代的tengine上
最初以"ng
...这两天翻nodejs的api文档时发现了两个新API,v8.serialize和v8.deserialzie,官方给出的说明是这样的
...The serialization API provides means of serializing JavaScript values in a way that is compatible with the HTML structured clone alg
最近我厂准备招人,所以我也搞了个BOSS直聘准备看看人选。
不过在准备BOSS认证的时候,发现输完姓名和身份证号后点击下一步没反应了
在与客服一阵交流后,我觉得效率太低了,等他们修好我再用都要过年了,于是拎起logcat先看看报错
有趣的是,报错没找见,却发现
有个js文件的log,打开这个文件,简单看了一下内容(没混淆),刨除格式验证的代码后,就是拿着用户名和身份证号请求后端,后端返回了一个
首先是某伟大的的防火墙问题,需要给kubeadm和docker都套一层代理
kubeadm只需要在命令行前面加HTTP_PROXY即可,docker需要编辑/etc/systemd/system/docker.service.d/http-proxy.conf
文件
[Service]
Environment="HTTP_PROXY=http://10.9.96.169:8118/&quo
...
ss突然连不上服务器,ping也不通,ssh也连不上,但是走国外服务却能够正常ping通和连接,看了一下mtr
从国内出发的mtr,是一直到机器前一跳才丢包
从服务器出发的mtr,在国际入口丢包,很典型的gfw认证了
换个IP重新做人吧
...最近厂里的项目在做全文搜索,于是上了elasticsearch,顺带还要折腾一下中文分词的问题
首先拿出两个插件
第一个是用了ik分词器的中文分词插件,第二个就是转换为拼音索引的插件了
...