代码 > 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.中文环境稳定性存疑
留个记录,看最后怎么选的。
代码 > 使用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指定进来。
其他没啥问题,接下去就要进行稳定性测试了。
代码 > Godot到导出wasm过大问题
2022-05-04
研究了下,这个基本无解。
标准是20mb左右
进行功能裁剪后重新打包也有16mb+
通过预压缩可以到4mb左右。
所以,还是只适合大型场景,不适合小场景。
毕竟 Godot功能太强大了吧。
在网络流量和带宽大幅度提速下降之前。
应用godot还是有一定的成本的。
代码 > godot导出为web/html5后与Javascript交互
2022-05-02
继续研究godot
找到了godot与js交互的方式
https://godotengine.org/article/godot-web-progress-report-9
具体API见
https://docs.godotengine.org/en/stable/classes/class_javascript.html
很明显,可以通过:
Javascript.Callbacks 方法,常见可以供js调用的全局方法作为回调接口,可以传入数据
可以通过
Javascript.get_interface 调用封装在js全局域的api
双休调用很容易
很明显,godot可以代替原来Flash领域的大部分工作。
代码 > godot真的不错
2022-04-29
今天测试了下godot,不得不说,真是个好东西。
简单如当年flash的用法,linux原生支持,晚了下自带的骨骼系统做了个简单的骨骼动画,别说在PC浏览器上,连微信浏览器都能使用。
大爱大爱啊。
代码 > golang pprof记录
2021-07-07
mud 客户端有内存泄露,调试了一把,记录一下。
首先,引入 profile库
import "net/http/pprof"
然后合适的地方引入
runtime.SetBlockProfileRate(int(10 * time.Second))
runtime.SetMutexProfileFraction(int(10 * time.Second))
Router.Handle("/debug/pprof/").HandleFunc(pprof.Index)
Router.Handle("/debug/pprof/cmdline").HandleFunc(pprof.Cmdline)
Router.Handle("/debug/pprof/profile").HandleFunc(pprof.Profile)
Router.Handle("/debug/pprof/symbol").HandleFunc(pprof.Symbol)
Router.Handle("/debug/pprof/trace").HandleFunc(pprof.Trace)
SetBlockProfileRate是设置记录block的代码的值,单位是纳秒
SetMutexProfileFraction是设置记录锁起效代码的值。
然后打开debug/pprof页面
allocs 4 block 0 cmdline 17 goroutine 232 heap 0 mutex 0 profile 21 threadcreate 0 trace
其中重点关注的是 goroutine,heap,block几块
goroutine是看实时的goroutine数量和发起位置。如果不停增长,可能是泄露
heap是堆,数值是一直增长的。点入后看到的数据,建议加上gc=1参数强制gc一次
第一行的数字大概是
2: 58368 [2474: 8919408] @ heap/1048576
第二个数字58368是当前堆内存大小,最后一个数字1048576是最大使用的堆内存
然后是按当前使用内存大小的堆信息,大概是
1: 57344 [1: 57344]
第一个57344是当前使用的堆内存
方括号内的57344是最大使用过的堆内存。