代码 > flutter感受2
2023-11-13
尝试用Fluttter给Hellclient做桌面/安卓的UI端。
怎么说呢。
flutter感觉挺像react。
用来做mvvm的数据<=>界面映射很不错。
真的要动手在canvas上渲染还是挺蛋疼和麻烦的。
代码 > flutter 感受
2023-08-08
1.和Javascript的Mvvm框架比较接近的开发体验,上手不难。搞清了下state归属,多写几个组件import以后,也没啥嵌套地狱
2.比较蛋疼的语法,特别是字符串里的${},梦回shell
3.组件非常丰富。
暂时感觉还ok,继续使用,看看效果
代码 > 还是决定选择flutter Desktop了
2023-08-04
上一篇日志还在犹豫。
现在基本定下来了。
AvaloniaUI说来说去还是一个缝合技术。
引擎上依赖于被Google收购的skia。
语言上依赖于微软的.net,还和微软的maui竞争。
框架基本上很难在任何一家有话语权。
同时,提供的开发插件仅有jb的rider和vs的。
对于flutter的 VSC和Android Studio支持,对非win平台的模式和技术能力的限制可以说跃然纸上。
最大的有点是.net。
如果有大量.net核心代码的话肯定不错。
但我有吗?并没有。
所以就很简单了。
用Fluttter desktop,学dart。
尽可能学的浅,当vue用。
真的有啥专注性能和系统的需求,说不定号直接上QT了呢?
浅学,易学,才是王道。
代码 > 选型:flutter Desktop or AvaloniaUI?
2023-08-02
面临一个自己的玩具项目的选型。
需要做一个跨平台(Windows/Linux/Android/Ios)的应用程序。
根据实际情况排除的七七吧吧,无非剩下了 Flutter Desktop或者 AvaloniaUI
Fltter Desktop做过一个简单的试手Demo。
优势:
1.大厂支持
2.不少成功案例(企业微信桌面版?)
3.Linux开发工具优秀(android studio/vscode)
缺点:
Dart
AvaloniaUI用过Lunacy。
优势:
1. c#,更好的代码复用
2.桌面方案更稳定
缺点:
1.微软的砍技术恶习
2.中文环境稳定性存疑
留个记录,看最后怎么选的。
Linux > ext4的No Space Left on Device/设备没有足够空间错误
2023-03-16
最近由于有些特殊需求,需要在文件夹中放大量小文件。
放了大约近900万文件后,无法继续mv/cp,报设备没有足够空间 错误。
此时文件系统的空间和inode还有大量富余。
搜了一晚上,基本确定为ext4文件每个目录的目录信息不能超过2g。
mount了一个btrfs数据盘后,文件就能复制过去了。
看来ext4的确有些老了,适应不了新的需求。
Linux > 利用autossh和sshpass快速建立sockes5 proxy
2023-03-15
ssh -D 本身就可以建立proxy,但是缺乏一个稳定的断线重播机制
autossh能建立一个守护程序维护这个连接,命令为
autossh -o ServerAliveInterval=99999999 -N -D [PORT] [USERNAME]@[HOST]
如果服务器是通过密码连接的,需要安装和使用sshpass,命令为
sshpass -p "[PASSWORD]" autossh -o ServerAliveInterval=99999999 -N -D [PORT] [USERNAME]@[HOST]
可以建立一个systemd的service文件来利用systemd托管。文件内容为[Unit]
Description=sshproxy
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=sshpass -p "[PASSWORD]" autossh -o ServerAliveInterval=99999999 -N -D [PORT] [USERNAME]@[HOST]
[Install]
WantedBy=multi-user.target
代码 > 使用musl代替gcc进行go语言的cgo编译
2022-07-29
最近在发布go代码的时候遇到一些问题
主要是集中在linux版本的gcc上的。
总的来说,gcc的问题有以下几点
1.协议问题,mit协议的代码静态编译gpl的库总觉得有点问题
2.libnss问题,由于gcc本身的特殊性,libnss不能静态编译进去,不然会有各种报错(比如dns解析时panic)
3.glibc版本不匹配问题。
所以换使用musl进行编译。
总体来说,musl提供了一个musl-gcc协议,总体更新跟着不多的文档还是很方便的。
就是各种dev包里一般提供的是glibc编译的版本,之间使用会报错
需要用aptitude source下载代码包
然后通过CC="musl=gcc" ./configure的方式手动编译,得到.a文件,再通过编译脚本以的LDFLAGS中 以-L指定进来。
其他没啥问题,接下去就要进行稳定性测试了。