Recent Posts
Rust vs C/C++
一个现代化语言所应具备的特性大体如下 首要条件,图灵完备
有统一安装源的第三方包管理平台与集成工具,可以自动解决各种依赖与版本管理,ruby、js、python等都有现成的案例,linux的apt与yum也都属于这种工具。
友好的单元测试编写与运行环境。 代码风格自动格式化工具
与ide集成的静态类型检查(language server)
方便快速的编译命令 良好设计的模块分隔规则 异步/多线程处理
良好设计的错误处理模式 方便的注释与代码文档化提取工具
方便的内存管理,自动GC或其他更好的方式,手动内存管理对于业务开发太耗费人工并且引入更多bug。
跨平台运行、编译表现的一致性。
rust安装与版本升级都用rustup
cargo默认添加依赖得手动添加,想达到’npm
insall’这种自动安装依赖,需要安装cargo-edit
安装的过程中报了个错误X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR,需要先安装libssl-dev
read more
Manning.Electron.in.Action
《manning electron in action》 electorn的优势
集成最新的chromium,不用被浏览器兼容性托后腿
可同时访问浏览器与本地api,没有任何浏览器开发程序的限制
主要特性 分为主进程与0个或多个renderer进程
学的时候正赶上electron7的安装bug,由于配置了内网远程安装路径上少了个v,总是安装失败
后来自己在node_modules/@electron/get中自己改了一下代码去掉路径中的v,然后再手动执行node
node_modules/electron/install.js。
这个bug在cnpm的issues中已经有人提了,之后不久应该会有修正。
前几章用存储并展示markdown文件与操作clipboard的小例子讲解了main与renderer之间如何通信。
但目前版本中在renderer进程中目前已经默认关闭了nodeIntegretion。
比较好的方式是在创建BrowserWindow的时候使用参数,使用 {
webPreferences: { preload: __dirname + ‘./preload.js’, } }
在指定的preload.js中将ipc模块负值到全局window上。
前面的例子都是比较原始的开发流程,开发,编译,看看效果
直到第11章,引入了其他类型脚本编译,开发环境livereload,开始精彩起来,示例工程为Jetsetter,一个管理收拾履行物品打包的小应用。
13章,测试,使用spectron,底层仍然调用selenium,selenium用过当时感觉api不太友好没太深入。
不过spectron里面可以使用async
await,和puppeteer非常像,比较友好,而且更好的是可以直接访问ui层,这个比puppeteer好像还强点
不知道在当今是否可以与puppeteer结合
说到底spectron仍然是黑盒测试,而非单元测试。 14章 打包
electron-packager 与 electron-forge 15章 错误收集,使用
minidump读取错误二进制文件
程序内更新升级,这个功能封装的很方便。 16章 发布苹果的app
store,呃,没苹果产品,跳过 appendix 之前的所有例子详解
read more
ubuntu下录屏
今天为了写个教程,需要录制屏幕来辅助讲解
之前一直用recordmydesktop生成ogv文件,突然发现上传到github之后ogv是不能播放的
没关系,反正也不需要声音,转成gif吧,后来查了一下,ubuntu有ffmpeg工具可以直接完成这项工作。
网上的教程比较老,还得自己添加ppa源,马上ubuntu20都要出了,官方源就带,直接装ffmpeg就行不需要外部源。
但还是麻烦,需要先录制屏幕,再手动转图,中间步骤还没法自动化
再找吧,找到了peek,真是好东东,直接录屏到gif呢。需要添加安装源。
sudo add-apt-repository ppa:peek-developers/stable
等等,peek的选项里好像有其他几个图片支持,apng和webm都是个什么,赶紧查一下。
apng是png的一种扩展,既有png的优势,又能动。
webp用过,chrome支持,有技术优势,也能动,如果可以直接生成的话,是最佳选择,但peek的生成选项里没有这个。
webm是视频格式,对标的是mp4,属于视频和音频流。
试了一下推送github,webm不能显示,apng没问题。
最终选定apng。
read more