okcaros移植到红米note8及体验
最近okcaros开放第三方移植了,我就简单试了一下,有点惊喜
okcaros官网 https://www.okcaros.com/zh ,实现原理是通过更改usb协议,欺骗carplay来映射安卓手机的内容,思路还是挺好的
适配过程比较简单,给kernel“打个补丁”,引入一下okcar代码,编译就完事了(实际是在AMD r7-5800上面,16G内存的虚拟机上,要跑12+小时😂
上两张图
最近okcaros开放第三方移植了,我就简单试了一下,有点惊喜
okcaros官网 https://www.okcaros.com/zh ,实现原理是通过更改usb协议,欺骗carplay来映射安卓手机的内容,思路还是挺好的
适配过程比较简单,给kernel“打个补丁”,引入一下okcar代码,编译就完事了(实际是在AMD r7-5800上面,16G内存的虚拟机上,要跑12+小时😂
上两张图
香橙派5是一款使用瑞芯微rk3588的开发板,有3个usb接口(1个type-c和type-a公用,虽然4个其实3个),一个hdmi接口,一个千兆网口,等等
废话不多说,下面是如何安装flowpilot
这里我使用的是 https://github.com/Joshua-Riek/ubuntu-rockchip
如果你是用sd卡,那么只需要把系统dd进去即可
其他的参考官方的烧录方法,此处不赘述
这里基本是按照 https://github.com/flowdriveai/flowpilot/wiki/Installation 方法进行的,除此之外还要安装一些额外的包
1 | sudo apt install ffmpeg libavformat-dev libavcodec-dev libswscale-dev \ |
源码可以参考我更改的fork https://github.com/0312birdzhang/flowpilot ,主要修改了一些兼容性,以及替换了opencl为系统自带的,还有就是编译了aarch64上面的几个libraries
配置摄像头和车型,更改 launch_flowpilot_new.sh
,进入flowpilot的目录下,运行pipenv shell
,然后执行launch_flowpilot_new.sh
即可
总体来说只能说跑起来了,离日常使用还比较遥远,例如设备发热严重(没有用到rknpu,使用tnn跑性能差点,需要写JNI来调用rknpu跑,暂时没精力研究这部分了)、还没有驾驶员监控、上游进度缓慢等等,所以我也转向原生openpilot上了。
在网上找了很多方法,按照传统的思路,在cmd里面设置如下命令然后启动
1 | set HTTP_PROXY=http://127.0.0.1:1081 |
结果并不行,然后我发现了这个 https://github.com/signalapp/Signal-Desktop/pull/1855
1 | set HTTPS_PROXY=http://127.0.0.1:1081 |
然后将Signal.exe拖进cmd,enter后就可以正常了。
Tomcat实现多实例session共享的方案还挺多的,up主使用了三种,最终选择了tomcat自带的Cluster集群方案。下面来说一下这三种方案的优缺点。
up主用的tomcat7,至于为什么还是7这么老的版本,因为高版本的对get请求有一些字符校验
另外,这些都是不用改java代码的,其他的没做研究
这个应该是最常见的方案了,我们随便一搜就是这个,但是代码有些坑。。。
如: 这个 还有这个 等等,还有两个致命的bug,一是session保留时间过长,里面有一段代码 session.setMaxInactiveInterval(getMaxInactiveInterval() * 1000);
,这里多保留了1000倍的时间。二是每次访问都会有一条session记录保留,非常的耗费redis内存。
虽然上述俩bug本up主已经修复了,但是发现还会丢session,估计是redis的驱逐问题,也懒得去调试了。
本up主发现这个的时候以为终于得救了,看一下人家的官网 https://redisson.pro/ ,还有商业版,就觉得很靠谱。事实证明还是too young too naive啊
因为突然有一天,同事说你这个接口好慢,然后我发现整个机器负载都很高了,访问网站直接卡成狗,看了一下日志,jvm崩溃了 java.lang.OutOfMemoryError: GC overhead limit exceeded
上面那个不管是丢session还是保留时间太长,但是不至于把tomcat搞死。好家伙,这个直接把jvm干崩溃了,OOM可还行
这里有一个很详细的教程 http://xstarcd.github.io/wiki/Java/tomcat_cluster.html ,我就不赘述了。
注意,我直接贴他的tomcat配置发现有看不见的空行还是啥的,可以去tomcat网站复制。
注意2,一定要在web.xml中添加<distributable />
使用两天了,暂时没发现问题,有待后续观察。
最近这一年过的挺快的,对我来说真的是一眨眼的工夫。作为一个住在郊区的打工人,每天固定时间起床、坐地铁、上班、下班、坐地铁、回家、睡觉,一天就这么结束了。日复一日的没有什么差别,所以感觉每天都一个样。要说没差别嘛,其实也有,后面会讲到。好了,也不废话了,下面分解一下,按5部分进行总结一下。
这个其实是最好“处理”的了,特别是对于我这只老社畜来说,不能说如鱼得水吧,只能是游刃有余。(夸张了😂
其实在一家公司待了几年,而且是我这个岗位的来说,事情不多,大多数都是小的需求,基本上都是一周码2-3天就能码完的。剩下的时间就自己安排了,摸鱼、学习新技术等。时间长了也是挺无聊的,也没有太多的挑战(除非突然几个bug一起来😰)
还好薪水能勉强说的过去,不然早就跑路了,感觉待的时间越久越费,现在年龄在这里摆着,也不知道下一份工作如何是好。你们年轻人应该没这些烦恼吧~
人除了睡觉、工作,剩下的时间寥寥无几,也就是我们的生活了。
作为一个有娃的社畜,生活基本上是围绕着娃的,父母、妻子、娃和我自己,这几种元素组成了每天的生活。
生活需要磨合,需要心平气和,需要耐心,需要理解。还是那句话,懂得都懂
这部分就不继续展开讲了,其实就一个字:忍。
这里的学习是宏观上的,不是像学校里那种拿着书本和笔,在教室中的那种,这也是我一直想给身边人普及的一个认知,我们随时都可以学习,活到老学到老。
对于我来说,移植sailfish几乎占据了我在工作、娱乐外的时间,转眼一看我都已经做了4年了,目前也在移植第四台设备,希望能早日有进展。
工作时间的学习,很多是在Java的深度上和Linux的一些盲区,这是一条无止境的路。
不得不说,dota2和电影填充了我的娱乐时间,其他的几乎为0。
为什么有了生活部分还有感情部分呢? 我也不知道怎么形容才好,怎么说才会有人懂,但是懂得都懂吧😓
人生就是一座围城,里面的人想出来,外面的人想进去。
结了婚的羡慕谈恋爱的,有娃的羡慕单身没有束缚的,单身的羡慕有男女朋友的,谈恋爱的羡慕…没有,恋爱应该是最美好的。
人一旦到达一个新的阶段,总会想保持现有的,还会努力去够一下新的目标,同时也会有些怀念当初拥有的更“纯粹”的阶段。
如果有那么一个机会、一个时刻,你可以去回到当初那个“纯粹”的阶段,可以出去围城看一看,但是要冒一些风险,理性的我们一般不会去越过这条线,保持自己在围城里面。
但是,这颗种子种下后,它会在你的内心生根发芽。总有一天,这颗种子长大到可以伸出到城墙外面,那时你可以选择砍掉这根树枝,或者狠下心把这颗树彻底根除。
选择,是一个非常有趣的话题。有些人会凭感觉去选,有的人靠计算收益去选择,有的人不做选择,有的人想选择两者。黑客帝国中,尼奥第一次见先知,就探讨过选择的问题。
对错,也是一个非常有趣的话题。何为对,何为错,真的有人能说这件事永远都是对的吗?古人有塞翁失马焉知非福,几千年前的思想家就已经在讨论这个哲学的问题了,自然这个话题是没有答案的。
好了,扯了太多了,夜也深了,该睡觉了。毕竟,明天还要做打工人呢,哪里会有时间思考呢。
水了几天终于水完了,懒得不香写了,就这样吧。
链接文件a.txt内容如下
1 | http://example.com/123.txt |
日志文件为从cdn下载的或者nginx的压缩日志,gz格式
思路:循环zcat压缩文件,然后两个文件都做一个处理,去掉重复的部分,然后对这俩文件进行重复统计,有的话说明链接有访问
简单的示例
1 | #!/bin/bash |
由于Gitlab社区版是不提供高可用等方案的,只能定时备份出来然后出问题了再导入,有时候会丢失数据,而且耗时随着备份文件大小增加,后期维护成本高。
在搜索了大量的方案之后,只有使用drbd的才是靠谱的,而且比较容易跟现有的结合,值得尝试。
这里都是参考了 csdn博主的 https://blog.csdn.net/allway2/article/details/102478719
# setenforce 0
1 | [root@localhost ~]# cat /etc/selinux/config |
1 | systemctl stop firewalld.service #停止firewall |
1 | hostnamectl set-hostname drbd1 |
1 | # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org |
1 | # mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig |
1 | # pvcreate /dev/sdb |
1 | # drbdadm primary drbd0 --force |
1 | # lsblk |
1 | # watch drbdadm status |
1 | # drbdadm resize drbd0 |
# watch drbdadm status
# umount /mnt/
1 | # mount /dev/drbd0 /mnt |
1 | # mount /dev/drbd0 /mnt |
如果已经在运行了,那可以在运行的机器上挂载另外一块硬盘,新开一台机器,这俩作为drbd的主备,将运行的gitlab data数据rsync到drbd管理的那块盘上即可
然后改一下gitlab的data位置,重启一下或者reconfigure一下即可。
来源: https://stackoverflow.com/questions/6780035/how-to-run-ps-cax-grep-something-in-python
将proc1的输出当作proc2的输入来实现
1 | import subprocess |
在使用 https://github.com/yavijava/yavijava 创建虚拟机的过程中,默认会将虚拟机的兼容性自动设置为ESXI的版本,如在ESXI 6.5上创建的虚拟机,其兼容性则为 ESXi 6.5 及更高版本 (虚拟机版本 13), 这样导致迁移的时候不能将这个虚拟机迁移到小于ESXI 6.5版本的主机上。
在查询很多资料之后,确认可以通过 https://www.altaro.com/vmware/4-ways-to-downgrade-the-vm-hardware-version/ 文中的方法,将虚拟机先从清单中删掉,更改虚拟机的vmx文件,将virtualHW.version
改为需要的版本,重新注册虚拟机即可。
在已知了这些方法之后,进行尝试, 发现在初始化虚拟机之后是无法再进行更改的,只有创建的时候设置好才行,如下即可。
1 | vmSpec.setVersion("vmx-10"); # 10 表示 esxi 5.5 |
不管是默认的源还是ustc的都直接提示 Connection failed,但可以ping通。1
2
3
4
5
6
7
8
9
10
11
12
13root@77ec78c7b3b7:/# printf "deb http://mirrors.ustc.edu.cn/debian/ buster main contrib non-free\n#deb-src http://mirrors.ustc.edu.cn/debian/ buster main contrib non-free\ndeb http://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free\n#deb-src http://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free\n#deb http://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free\n#deb-src http://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free" > /etc/apt/sources.list
root@77ec78c7b3b7:/# apt update
Err:1 http://mirrors.ustc.edu.cn/debian buster InRelease
Connection failed [IP: 202.141.176.110 80]
Err:2 http://mirrors.ustc.edu.cn/debian buster-updates InRelease
Connection failed [IP: 202.141.176.110 80]
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
W: Failed to fetch http://mirrors.ustc.edu.cn/debian/dists/buster/InRelease Connection failed [IP: 202.141.176.110 80]
W: Failed to fetch http://mirrors.ustc.edu.cn/debian/dists/buster-updates/InRelease Connection failed [IP: 202.141.176.110 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.
更改apt的默认UA
printf 'Acquire\n{\n http::User-Agent "Mozilla/5.0 (Windows NT 5.1; rv:25.0) \nGecko/20100101 Firefox/25.0";\n};' > /etc/apt/apt.conf
未知。。。,在另一个网络环境下就可以,也是神奇。
P.S. 感谢公司大数据部门的同学,让我又可以水一篇了 xD (划掉划掉)