Blogs
dart中html转换为文本的输出
Submitted by hubdog on Tue, 2019-04-23 23:36dart里面没有现成的html转为text的功能,jsoup有现成的功能,可是无法移植到ios上,而且比较重,实在不值得折腾,基于dart的html库,手撸了一个html转换为text的处理
class PlaintextVisitor extends TreeVisitor { final StringBuffer _str; PlaintextVisitor() : _str = StringBuffer(); String toString() => _str.toString(); visitDocument(dom.Document node) { visitChildren(node); } visitDocumentType(dom.DocumentType node) { visitChildren(node); } visitText(dom.Text node) { if (node.text=="\n") return; writeTextNodeAsHtml(_str, node); } visitElement(dom.Element node) {
迁移老的flutter程序支持AndroidX
Submitted by hubdog on Sat, 2019-04-20 22:14Android Studio 3.2之前创建的老的flutter程序不支持AndroidX.需要迁移,参考下面的处理
https://medium.com/@swhussain110/how-to-migrate-your-flutter-app-to-andr...
吐槽Webrtc的IOS编译支持
Submitted by hubdog on Sat, 2019-04-20 13:56XCode都已经10.2了,webrtc的ios编译甚至不能支持到xcode9,默认需要用xcode8编译,无F可说
参见类似的错误:
http://myblog.emhct.net.cn/index.php/archives/1940
无奈只好强行修改ios sdk的header file. 把uuid的api的_Nonnull属性删除才能编译通过.我之前还误以为是我的xcode版本太低导致的,将Xcode从9.2升级到10.2,结果同样的错误.而且类似的错误完全google不到,让我怀疑都没有人自己去编译webrtc ios库.
2019/4/23 追记
好像是我的webrtc的master branch没有更新到最新的toolchain,虽然head 已经sync了,应该不是google的问题
vmware安装OSX mojave的坑
Submitted by hubdog on Sat, 2019-04-20 11:55要注意,必须将vmware升级到最新的15,12的话不支持apfs文件系统,升级后启动不了.
docker 性能还是不太行
Submitted by hubdog on Fri, 2019-04-19 00:05最近尝试了一下把应用在docker里面执行,发现tomcat经常性超时.放到docker外运行就没有问题,看来性能还是不太行
Flutter中ListView的性能优化窍门
Submitted by hubdog on Thu, 2019-02-28 08:34Flutter的listview显示几千条的列表时,性能会很差,性能改善的方法是
1.使用ListView.builder来动态创建要显示的项目
2.如果列表中每一项都是定长的话,可以设定itemExtent属性,这会极大的改善列表的滚动性能.
Opencv仿射和透射变换的坐标变换
Submitted by hubdog on Fri, 2019-02-22 09:15OpenCV里面通过getAffineTransform或者findTransformECC获取变形矩阵的饿时候会得到一个2x3或者3x3的变形矩阵,分别对应仿射矩阵和透视矩阵.
变形的时候如果想要算出原始图像坐标到目标图像的坐标的时候,可以使用下面方法计算
if (matrixSize == 3) { //计算透视变换坐标 double w= warp_matrix.at<float>(2, 0)*orgX + warp_matrix.at<float>(2, 1)*orgY + warp_matrix.at<float>(2, 2); targetX = (warp_matrix.at<float>(0, 0)*orgX + warp_matrix.at<float>(0, 1)*orgY + warp_matrix.at<float>(0, 2))/w; targetY = (warp_matrix.at<float>(1, 0)*orgX + warp_matrix.at<float>(1, 1)*orgY + warp_matrix.at<float>(1, 2))/w; } else { //计算仿射变换坐标
