qrs_detector——Flutter应用中的心电心率识别
公司的纯 Flutter 应用近期要添加一个根据 BLE 心电设备采集到信息实时显示使用者心率的功能,简单研究后发现需要实现一个 QRS波检测算法,记录下研究和实现的过程。
window.onload = function () {
document.querySelectorAll('.hide_code').forEach(function (div) {
var is = div.querySelectorAll('i');
is[0].click();
});
}
DEMO效果演示
var bili1 = document.querySelector('#bili1');
var container = document.querySelector('#article-container');
bili1.height = (container.clientWidth * 3 / 4) + 'px';
前期调查
由于 App 已经实现了 ...
批量转换图片为webp格式
愈发感受 webp 格式的强大,在博客里大部分用例下使用 webp 可以使图片占用的空间降低一个数量级,所以目前所有的图片资源都要转成 webp 后使用,一个一个转换效率太低,于是写了个脚本,可以批量将本目录下的常见格式图片转换为 webp 格式。
1234567891011121314#!/usr/bin/env bash# 创建备份文件夹mkdir "bak"# 利用ls和正则获取当前目录下的所有图片路径存入数组images=$(ls *.{png,jpg})for image in $imagesdo # -q 90 指定转换质量,经试验这个值效果和压缩率都不错 cwebp $image -q 90 -o ${image%.*}.webp mv $image ./bak/$imagedone
更新(2023-07-04)
下面的脚本可以实现当原始图片尺寸超出指定大小时,自动对其进行缩放
1234567891011121314151617181920212223242526272829303132333435#!/usr/bin/env bash# 设置宽高的最大值M ...
不满新版深度终端的动画速度,动手修改编译一个版本
作为 Deepin Linux 的老用户,一直重度依赖老王的深度终端,尤其钟爱其系统级别随时可以一个快捷键从屏幕顶端呼出下拉式终端的所谓雷神模式。最近更新了新版终端,给雷神模式的显示加入了一个长得离谱的动画,非常不爽:目前终端的雷神模式动画有点太慢了吧 ,找到源码对应位置之后决定自己编译一个自用
var bili1 = document.querySelector('#bili1');
var container = document.querySelector('#article-container');
bili1.height = (container.clientWidth * 5 / 8) + 'px';
步骤(可选)安装虚拟机
因为不想在日常使用的机器上安装过多无用的开发依赖包,所以使用最新deepin镜像安装了一个全新的虚拟机,具体方法可以参考我之前的这篇建议Linux用户尝试下kvm虚拟机
下载源码新版本终端的源码位置在:linuxdeepin / deepin-terminal
查看当前系统的终端版本:
所以就 clone 这 ...
重译《百恋歌》
一首很喜欢的歌。但是不很满意所有现有的歌词翻译,这么多年了一直心存芥蒂。今次趁着想给博客撸一个歌词显示组件的功夫,终于决定试着自己翻一版 💩
注:点击下面的开关按钮可以控制对应歌词面板的显示与隐藏
.lrc {
height: 5em;
display: flex;
flex-direction: column;
align-items: center;
background: repeating-linear-gradient(45deg, black, transparent 100px);
border-radius: .5em;
}
.lrc_line {
display: block;
line-height: 1rem;
}
.lrc_line:empty:before {
content: "\200b"; // unicode zero widt ...
优雅地管理国际化资源——i18n-manager
项目开发中国际化多语言的需求非常常见,最近这两年工作项目中都是人工手动管理翻译文件的方式,感觉非常麻烦且容易出错。做 Android 开发的时候,Android Studio 中有一个非常好用的 Translations Editor,那么有没有一个类似的通用工具呢?然后,我找到了 i18n-manager 这个项目
使用方法
var bili1 = document.querySelector('#bili1');
var container = document.querySelector('#article-container');
bili1.height = (container.clientWidth * 5 / 8) + 'px';
下载下面是我加入了免费翻译 API 的版本:https://github.com/debuggerx01/i18n-manager/releases/tag/free_translateFeel free ~
这些年,我与Flutter……
2017年12月
为公司规划中的新项目调研跨平台方案可行性,在尝试了包括React Native、 ionic、 Cordova、 Cordova、 Weex 等在内几乎当时所有流行的方案之后,竟没有一个能够让人满意的。直到发现了当时还在 alpha 版的 Flutter,被其优秀的开发体验、精妙的架构设计和惊艳的流畅度表现所折服,于是开始正式研究该框架。
2018年1月
加入了当时(直至今日仍是)人数最多的 Flutter 技术交流群(Flutter 中文用户组 qq:482462550)。
发现当时没有用于将 json 解析生成数据类模板代码的工具,于是在GsonFormat的启发下,用3天时间撸出了JSONFormat4Flutter的第一版,并分享在交流群内供群友使用,获得了最初的好评。
该工具也成为了目前我 GitHub 上 Star 数最多的项目,虽然在易用性上我确实花了一些心思,但是就代码质量而言这就是一坨💩,能够获得这么多的关注更多的是因为当时没有更好的选择,俗话说“来的早不如来的巧”,这个工具就是出现的时机又早又巧,占了大便宜😂
2月
开始尝试编写公司项目 ...
GitLab CI/CD (二) :自动编译部署Web项目
书接上文《GitLab CI/CD (一) :自动打包部署Flutter项目》,这次继续记录用 GitLab CI/CD 自动部署项目中 H5 部分到测试环境的方法。
项目说明这个 H5 的项目主要是作为上篇中 Flutter 项目的补充存在的,因为 APP 中有些页面有复杂图表、动态更新,后续还有可能需要能够方便地分享到主流社交平台进行引流的需求,所以这部分选择用 Web 的方式实现。具体技术选型是 Next.js + TypeScript + Material-UI,通过 Next.js 自带的 Node.js 服务服务器部署,并使用 pm2 做进程管理。
注册 Runner安装方法参考上篇,这次以 shell 作为执行器注册 Runner,如下图:配置方法很简单,只要在输入 executor 时输入 shell 即可,其他选项也都和上篇中的一样。
编写 CI 配置文件配置如下:
12345678910111213141516stages: - deploydeploy_project: stage: deploy variables: GIT_STRATEGY: ...
学院派Academia:赛博已来——控制论革命的残酷真相
针对赛博朋克文化的讨论,大量的解析内容仍然停留在赛博朋克所呈现的五光十色的文化符号和美学表征之上,或仅是浅尝辄止地将赛博朋克视为某种纯粹的“未来幻想”或者“文学体裁”,而无意识地削弱了这个题材的历史性和现实性。这种去深度的、空虚的文化拟像矩阵轰炸,在泛商品化的消费社会,已经模糊了批判文学的焦点,哪怕《赛博朋克2077》这样的作品已经及其有意识地将赛博朋克世界表述为一个不值得向往的反乌托邦,玩家仍然将这个世界看作一个类迪士尼的游乐场,而其中尖锐的深刻性也被暗暗消解了
var bili1 = document.querySelector('#bili1');
var container = document.querySelector('#article-container');
bili1.height = (container.clientWidth * 3 / 4) + 'px';
观看指南为节省您的时间,以及获得更佳的观看体验,建议先阅读以下内容——下面视频主题一节的内容来自视频的开头,如果阅读后对其所述内容感有兴趣,并能接受其学术化的表 ...
GitLab CI/CD (一) :自动打包部署Flutter项目
在做的项目最近终于接近了第一个里程碑 ,挤了些时间把一直没做的 CI/CD 利用现有的资源和 GitLab 实现了,记录下大概的过程。
CI/CD 是什么,为什么需要 CI/CD什么是 CI/CD ?持续集成与持续交付上面这篇文章已经总结得不错了,我这边主要也是利用 CI/CD 确保每次 push 的代码都是完整可编译的,从而减少错误的发生,同时自动部署,免去手动发布 APP 测试版本和登陆测服人工部署网站更新的麻烦,提高工作效率。
相比于原始的编写自动化脚本(shell/python等),yaml 格式的 CI/CD 配置方式简化了流程,提供了很多便捷的功能。但是相对应的,需要查阅相关配置文档,而且需要更强的 shell 命令编写能力
Flutter 项目(目前仅限 Android 端)安装 GitLab Runner如上图,进入项目的 GitLab 主页,导航至[设置]-[CI/CD]-展开[Runner]选项卡,可以看到简易教程.
这里我他妈被误导了😤,看到那个大大蓝底的“在 Kubernetes 上安装 Runner”按钮,以为是 Runner 必须安装在 K8s上 ...
《现代CSS布局 —— Grid》 by Una from Google
CSS 布局发生了很大的变化。 现在,具有适用于所有现代浏览器的 CSS Grid 交互操作性工具,让开发能力变得更强大。 本次将由来自 Google 的 Una 分享一些 CSS Grid 建议和技巧,将复杂的布局仅需几行代码即可完成。
function reLayout() {
document.querySelector('html').dataset.theme = "light";
var iframe = document.querySelector('#iframe');
var bili = document.querySelector('#bili');
var container = document.querySelector('#article-container');
bili.height = (container.clientWidth * 3 / 4) + 'px';
if (window.innerWidth < 600) {
iframe.height = '10200px ...