之前在 macOS 上开发 electron 跨平台应用时,因为手头上没有趁手的 linux、windows机器,所以只能通过虚拟机来测试 electron 跨平台效果(具体见在 macOS 的 linux 虚拟机上开发环境配置 ).
很早之前心头一热买了一台 surface-go 平板电脑,想着当 windows 用.但实际效果嘛…后来又刷了 fydeos 用了一段时间,结果这个 fydeos surface 系列是要付年费的.就又折腾刷了 tiny11 系统,用 sketchbook 来画画.又要但是了,非常卡,windows太吃资源了.想着要不刷台 android x86 吧,搜索了下还在适配更新的 android x86 surface 就是 BlissOS 了,结果试了两个版本都无法安装上😭.索性直接装 linux 吧,选择的是我正在熟悉的 nixos.具体如何刷机配置见后续文档.
linux 确实优秀,丝滑流畅,而且有 waydroid 这个基于 lxc 的大杀器,可以运行 android x86 应用,瞬间解锁了生产力!
那引出本文的原因是: nixos 是基于配置文 ...
自从在 macOS 上使用 nix 管理配置文件和软件后,感觉比 HomeBrew 技高好几筹.多台电脑之间同步环境配置只需要一行命令即可.
而 devenv 就是基于 nix 配置开发环境的工具. 可以确保在不同电脑上开发环境保持一致.
1、首先安装 devenv2、初始化 devenv
1devenv init
可以安装 direnv 自动激活环境3、配置 nodejs、rust 环境
添加 nix、rust 源12345678inputs: nixpkgs: url: github:cachix/devenv-nixpkgs/rolling fenix: url: github:nix-community/fenix inputs: nixpkgs: follows: nixpkgs
需要使用 fenix, 否则 nix source 里的 rust 版本太低,不满足 tauri 1.82.0+ 的要求
配置 devenv1234567891011121314151617181920212223242526272829303 ...
之前的个人博客是在本机上使用 hexo 搭建的.每次编辑文章,都要打开电脑先写 markdown, 然后执行 hexo 命令发布到 github page.这样的操作很难发挥个人积极性,毕竟要写笔记、还要写博客.最近正在看 obsidian dateview, 然后就想如果笔记 obsidian 和 hexo 结合起来,那不就完美了.
所以本文就是在 obsidian 中写 markdown 文章,然后交由 github action 执行 hexo 发布到 github page.
1、hexo 生成站点这一步省略,之前我的站点已经生成好了,使用的 anzhiyu 主题,看着还不错.
2、github action 配置以下是之前配置的 github action
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051name: Hexo CI CDon: workflow_dispatch: push: branches: - ma ...
flutter ffi plugin 开发有3种模式:
有 ffi 源码, flutter 可以直接打包构建
没有 ffi 源码,只有预购建好的库或者二进制文件
有 ffi 源码,也有二进制其中1和3都比较简单,因为 flutter ffi plugin 模版默认都把构建打包脚本生成好了,只需要修改一下即可用.模式2在全网搜了没有找到先例. 本文就是主要讨论如何在 flutter ffi plugin 项目中构建打包预编译二进制文件而不需要胶水代码.
这里以我自己写的 flutter js engine 为例.
社区已经有一个 flutter_js 引擎, 但是在使用过程中发现其在同时运行多个 JSContext 时会被顺序执行,无法并行执行.所以借鉴这个项目,实现了一个基于 JavaScriptCore 和 Quickjs 引擎的 flutter 库.支持 Android/iOS/MacOS/Windows/Linux(后续计划通过基于 quickjs-wasm 支持 Web).flujs
1、依赖库打包
依赖的 JavaScriptC ...
这里是为了 flutter ffi plugin android 端可以直接使用动态库,所以将 so 打包到 aar 然后发布到 maven central
1、在 Maven Central 中注册账号https://central.sonatype.com/
不要使用第三方 github/google 注册,因为后面配置发布时需要填写密码
2、注册完成后创建一个 namespace. namespace 需要配置dns解析才能生效
3、配置 gradle 插件, maven central 官方 现在还不支持 gradle,所以使用第三方插件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081buildscript { dependencies { classpath "com.van ...
xmake 是一个国人 waruqi(ruki)[https://github.com/waruqi] 基于 lua 脚本语言实现的跨平台够看工具.对标 CMake, 但是远优于它. 以下是两者的简单对比.
Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache
Xmake ≈ Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache
特性
CMake
xmake
说明
跨平台
✅
✅
配置简单
❌
✅
配置文件格式
lua
自定义脚本语言
易上手
❌
✅
构建产物缓存
✅
✅
远程仓库
❌
✅ xrepo
语法简单
❌
✅
文档详细
✅
❌
自动依赖管理
✅
✅
IDE 集成
✅
✅
编译器支持
GCC, Clang, MSVC, ICC等
GCC, Cla ...
相比较 create-react-app 这么笨重的武器,parcel 是一个开箱即用的开发打包工具,在小项目、简单测试时用起来就非常得心应手了。
依赖12345678910111213"devDependencies": { "@babel/core": "^7.21.0", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "babel-plugin-transform-react-jsx-source": "^6.22.0", "parcel": "^2.8.3&quo ...
当前的个人主页是运行在 docker nginx 上的。为了安全起见,把所有的 http 请求已经转发到了 https, 免费的 SSL 证书过期了,所以使用了 letsencrypt 的免费证书来签名。但是它默认的是 3 个月有效期,所以必须得定期去更新。否则就会导致 nginx 服务不可用了。以下为如何在 docker 上更新 letsencrypt 证书.
部署架构众所周知,docker 的命令配置大都很长,一般是通过shell 脚本或者 docker-compose.yaml 文件来进行管理的。而我采用的就是后者。
如果一台主机上运行了多个 docker 容器,那么这个 docker-compose.yaml 就可能会很大。每次调用 docker-compose up/down 时都会导致所有的容器被销毁重建。所以这里采用了 sidecar 的模式,既可以保证各个容器的配置文件各自保存,又能保证容器之间可以互相访问。
以下以 nginx 和 couchdb 为例.
couchdb/docker-compose.yaml
12345678910111213 ...
关于如何在 macOS Monterey 12 上开启 smdba 文件共享的步骤
1、添加共享用户
打开用户与群组, 点击 + 新建用户, 新账户选择: 仅限共享
2、共享
进入设置 -> 共享, 1、打开文件共享选项 2、添加共享文件夹 3、添加刚才新建的共享用户
接下来点击选项,勾选共享用户,即可通过 smdba 和共享用户访问共享文件夹了.
environment
未读VirtualBox + Ubuntu
VirtualBox 新建虚拟机
虚拟机挂载 share folder
打开终端,配置环境
1234567891011121314151617181920# ----- 配置代理# <bash 代理># export http_proxy=http://dev-proxy.dev.com:8080# export https_proxy=http://dev-proxy.dev.com:8080# 或者 http://web-proxy.humphrey.com:8080 或者 http://r.humphrey.dev.com:8080# <apt 代理># /etc/apt/apt.conf# Acquire::http::proxy "https_proxy=http://dev-proxy.dev.com:8080";# Acquire::https::proxy "https_proxy=http://dev-proxy.dev.com:8080";sudo apt-ge ...