ECMAScript6 Promise
PromisePromise 对象是一个等待处理结果的占位符。它具有三个互斥状态:fulfilled, rejected, pending 。
12345678910111213141516171819const resolve = (res) => { console.log('resolve: ' + res);};const reject = () => { console.log('reject: ' + res);};const fn = (flag) => { return new Promise((resolve, reject) => { if (flag === true) { resolve(); } if (flag === false) { reject(); } }).then(resolve, reject);};fn(tru ...
QtApplication 国产化适配
安装 QT Creator官方下载地址:https://download.qt.io/archive/qt/
代码兼容添加平台兼容代码:
12#ifdef Q_OS_LINUX#endif
编译源码对修改后的兼容性代码进行编译。
程序打包将编译好的文件复制到打包目录进行打包。
1dekg -b ./path
测试运行测试程序是否正常启动。
功能检测对即时通讯客户端的功能进行检测。
输入法修复为继承 QWidget 类的类添加:
123this->setAttribute(Qt::WA_InputMethodEnabled, true);this->setAttribute(Qt::WA_KeyCompression, true);this->setFocusPolicy(Qt::WheelFocus);
安装 extra-cmake-modules, libxkbcommon-dev。
克隆 fcitx-qt5 到本地:
1git clone https://github.com/fcitx/fcitx-qt5.git
Qt Creator 打开 fcitx- ...
使用 Clipboard API 复制图像
最近在美化博客的右键菜单,其中有复制图像到剪贴板到需求。需求实现逻辑比较简单:
判断触发右键菜单的目标元素是否为图像
1event.target instanceof HTMLImageElement
通过 fetch API 请求图片资源,获取图像的二进制数据(blob: Binary Large Object)
12345const blob = await fetch(event.target.src).then((blob) => { return res.blob();}).catch((err) => { throw new Error(err);});
无法通过 JavaScript 的方式获取有防盗链的图像。
利用 Clipboard API 将二进制数据写入剪贴板
1234const clipboardItem = new ClipboardItem({ [`${blob.type}`]: blob});window.navigator.clipboa ...
卷不动了,原来前端要学那么多东西
现代网络技术的浏览器支持表.
https://caniuse.com/
TypeScript是一种基于JavaScript的强类型编程语言,为您提供任何规模的更好工具。
https://www.typescriptlang.org/zh/
jQuery是一个快速、小巧且功能丰富的JavaScript库。它使HTML文档遍历和操作、事件处理、动画和Ajax等内容更加简单,并具有易于使用的API,可以跨多个浏览器运行。通过多功能性和可扩展性的结合,jQuery改变了数百万人编写JavaScript的方式。
https://jquery.com/
Pug 是一个用 JavaScript 实现的高性能的模板引擎,支持 Node.js 和浏览器运行环境。
https://www.pugjs.cn/
高效的嵌入式 JavaScript 模板引擎。
https://ejs.bootcss.com/
易学易用,性能出色,适用场景丰富的 Web 前端框架。
https://cn.vuejs.org/
一个原生支持 Vite 的测试框架。
https://cn.vitest.dev/
由 Vite 和 V ...
终于割掉了那坨肉
从高中到现在得痔疮已有十几年了,发展到现在已经十分严重 —— 环形混合痔,最严重的痔疮发展阶段。医生都感概,为何才二十六岁的我,年纪轻轻就有了这么严重的痔疮。我只能说 “没办法,搞 IT 的嘛”。
我是三月二十三日周六来协和东西湖医院做的检查并办理的入院,当天回去了一趟,第二天周日才正式搬着行李入住,陪着我的还有我的女朋友。
周日入住前与医生讨论了一下手术方案和风险,并签了字,家属签的是我女朋友的名字。手术前还做了几项基本检查:验血、胸透、尿常规、便常规、血压、呼吸频率等,各项数据都正常。
手术前不能吃饭,只能吃流食。因为术前需要进行灌肠,“吃得多,灌得多”,这是医生的原话。所以我当天也就只吃了一块德芙巧克力、一个小的凤梨。不过,到了当天晚上七点多还是进行了两次灌肠。同病房的病友说,灌两次是正常的,一般也就灌两次。其实,我第二次灌肠也还有一点点凤梨的残渣,不过护士说不用灌了,如果再次解大便,记得拍照给她看即可。之前查小红书和知乎,别人都说灌肠很容易当众蹿稀,起初搞的我还很忐忑。但实际上也没有网上说的那么夸张,就是胶管塞进去时有一种异物感,然后灌进去时的确会有想要拉肚子的冲动,不过也不至 ...
Butterfly 主题修改:增加波浪效果
Butterfly 主题的可配置度很高,但主题界面上比较朴素。Butterfly 原有的文章页面显得有些生硬,于是想着给页面添加一些动态效果。波浪效果在大多数博客页面都有使用到,个人也比较喜欢,主要是因为波浪动效不会让人感觉到浮躁,还增加了页面的生动性。
新增模板在 themes/butterfly/layout/includes/header 下新增 wave.pug 文件:
1234567891011<svg class="waves-svg" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"> <defs> <path id="gentle-wave" d="M ...
GitHub Actions 自动部署 Hexo 博客
在 GitHub Pages 上部署 Hexo
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950name: Pageson: push: branches: - main # default branchjobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} # If your repository depends on submodule, please see: https://github.com/actions/checkout submodules: recursive - name: Use Node.js 20 ...
图片懒加载
懒加载 是一种资源延时加载技术。它的具体实现表现为: 在满足某种条件时才加载资源。
lazy loading attr
Can I use loading lazy attr?
在现代浏览器中,img 标签支持 loading 属性,它具有两个可选枚举值:
值
描述
lazy
当某种条件满足时加载资源
eager
立即加载资源,默认状态
用法如下:
1<img src="https://source.unsplash.com/random/1126x260" loading="lazy" alt="Unsplash random image" />
注意:不同浏览器的具体实现方式不一样(加载资源需要满足的条件不一样),基于 chromium 实现的浏览器会比 Firfox 更早的加载资源。可以前往 stack overflow 查看相关问题讨论。
其它可参考文献
https://issues.chromium.org/issues/40577771
https://developer.mo ...
GitHub Pages | 创建自己的网站
GitHub Pages
GitHub Pages 可以通过 GitHub 创建个人/组织网站,也可以为 GitHub 项目单独创建网站。
项目网站这里以创建个人简历项目为例。
Github 新建项目 resume.
为项目添加 index.html 文件
配置 GitHub Pages 站点的发布源
访问 https://ultravires.github.io/resume/