-
记一次 arm64 非法内存访问调试
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近工业软件组的小朋友在移植程序到arm64下的时候碰到了一个比较难调诡异的问题,花了几个小时帮忙调试了一下,将过程记录一下。防止以后踩坑。问题分析程序执行到某一个分支的时候内存飞了。用gdb分析dump文件,提示非法内存访问。提示cannot access memory at address 0xxxxxxxx这种错误。由于软件代码比较庞大(几十万),没有第一时间去检查编译配置,编译日...…
-
Xenomai 安装部署
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org简介Xenomai 主要由三部分组成: cobalt: 内核空间的实时内核。 dovetail: 类似 ADEOS的实现,管理分发中断。Liunx 5.4以前的代码这部分工作由 ipipe处理。 libcobalt: 用户空间的实时库。cobalt 和 libcobalt 随 xenomai 源码提供,dovetail与具体的硬件架构和Linux 版本相关,以Linux补丁的形式提...…
-
Go 使用 sqlite3 数据库
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org目前常用的 Go 的sqlite 的驱动有以下几个: https://github.com/mattn/go-sqlite3 基于cgo实现,支持database/sql接口。 https://github.com/feyeleanor/gosqlite3 基于cgo,不支持database/sql接口。 https://github.com/phf/go-sqlite3基于cgo...…
-
Go 项目的静态编译方式
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org默认 go 语言是静态编译的, 比如:$ cat hello.go && go build hello.go && file hello && ldd hellopackage mainimport "fmt"func main () { fmt.Println("hello")}hello: ELF 64-bit LSB execu...…
-
Glib 的事件机制
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgGLIB 的事件机制比较复杂,设计好多概念和模块,网络上相关的介绍也比较乱,最好的理解方式就是自己动手敲一遍相关代码,然后做一个总结。GLib 事件机制介绍GLib 的事件框架主要有以下组件: GMainLoop : 管理所有可用事件源,添加初始事件源后,会不断检查来自每个事件源的新事件并分派相关函数处理. GMainContext : 每个时间源创建之后都需要关联到一个 GMain...…
-
K3S 快速安装体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgk3s是经CNCF一致性认证的Kubernetes发行版,专为物联网及边缘计算设计。架构包含server节点,agent节点。在生产环境中部署,需要部署多server节点保证高可用。这里只是为了快速体验k3s, 采用单节点 server 和多agent节点的方式。架构如下:部署前工作 系统更新 网络配置:包括主机名配置,时区配置,软件源等 关闭防火墙,selinux 关闭交换分区...…
-
QT Designer 使用未显示在工具箱中控件
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在 QT 项目开发的时候,使用 QT Designer 进行 UI设计的时候,有时候想用的控件 不在 Designer 工具箱里面,比如QWebEngineView 之类的控件就没有,会感到很别扭。 在 QT官方文档上查询了一下,可以通过 promote widget 的方式解决这个问题。首先,拖动一个 widget 到放置控件的地方,右键这个 widget,选择提升为最后在弹出的 pr...…
-
重启声卡服务
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org随着时间的变迁,我的老古董 Mac Air又遇到新的问题,联系播放几小时电影之后,或者频繁地进行快进等操作的时候,画面突然会暂停,以为是显卡什么的坏了,进行一番排查之后,才发现罪魁祸首原来是名为 coreaudiod 的服务出现了 bug.找到问题之后解决就很简单了. 重启该服务即可。PS: 在 Mac上重启很多系统服务 只需要杀死该服务即可,如 Finder 等。$ sudo kill...…
-
使用 Jekyll 和 Github 搭建个人博客
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org晕晕乎乎了两年,准备把停更的 blog更新一下。但是时过境迁,很多技术方法都已 经成为古董了,之前的blog是在vps 上用 wordpress 搭建的,我在电脑上写好 emacs-org格式的文章后,用脚本转换为 html 然后用 wordpress 的 API 发表的。现在不想太折腾了,简单研究了一番,发现用 Jekyll 和 github的组合最方便省心。大体思路为,文章还是在本地...…
-
搭建 windows 的 go vscode 开发环境
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近由于一些原因,只能用 windows电脑,记录一下用windows开发go语言相关项目开发环境搭建情况。安装配置 go安装 go从 https://golang.google.cn/dl/下载windows的安装包,双击安装。结束后打开 PowerShell,输入以下指令验证PS C:\Users\HP> go env | Select-String "gopath|goroo...…
-
释放 Mac 上不用的硬盘空间
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org ~/Library/Developer/Xcode/DerivedData 存放 Xcode 项目编译过程中的临时文件, 可以安全的删除。 ~/Library/Developer/Xcode/Archives 编译的目标文件存放处,删除之。 /Library/Developer/Xcode/iOS DeviceSupport Xcode 用来...…
-
TensorFlow Note (1) - 环境搭建
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org由于 tensorflow 采用 python 开发,是一个 python 的 library, 因此借助于pip, 在各个平台上安装 tensorflow 都非常方便, 不过要想取得更高的性能,需要安装 gpu 的版本(包括安装 CUDA 相关包等).安装 CUDACUDA 是 NVIDIA提供的并行计算平台和编程模型, 应用程序可以利用 CUDA, 进行高性能的并行计算.CUDNN ...…
-
Numpy 杂记
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgArrays(矩阵) 定义a = np.array([[1, 2, 3]]) # 1行3列矩阵np.array([[1], [2], [3]]) # 3行1列矩阵np.array([[1,2,3],[4,5,6]]) # 2行3列矩阵a.ndim # 矩阵的维度a.shape # 各维度大小a.size # 矩阵元素个数a.dtype # 矩阵元素类型np.zeros((2,2)) # ...…
-
TensorFlow 杂记
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org初体验基本概念TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op(operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0个或多个 Tensor.一个 TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在会话里被启动.会话将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时...…
-
Magit 笔记
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org介绍基本使用M-x magit-status RET(global-set-key (kbd "C-x g") 'magit-status)(global-set-key (kbd "C-x M-g") 'magit-dispatch-popup)工作 Buffermagit-status 输出的 buffer 即为工作 buffer。快捷键 g 刷新 git 状态 s 将变动区...…
-
在 Emacs 内部运行 Shell
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在专注工作时候,上下文切换是一件非常低效的。无论是对人类还是对计算机来讲。对于前者,不断的在不同的任务间切换,不但会造成时间的浪费,而且会造成大量的错误,比如边打电话边发邮件。后者就更不用说了,为了解决上下文切换造成的开销,各种技术被开发出来,携程,多核并行等等。对我日常工作来讲,我用到最多的软件是 Emacs 和Shell。前者用来做几乎 90%的 日常工作,后者一般用来登录远程 ss...…
-
OpenStack Magnum 初体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgOpenStack 的容器历史自容器技术变为目前云计算最火热和最前沿的技术以来,OpenStack作为一个云计算管理平台(亦或是云计算生态系统),怎么将容器管理纳入到其内,成为了近两年 OpenStack 发展的一个热门方向。OpenStack 的容器整合之路先后经历了以下几种历程:目前 Magnum 和Murano 是 OpenStack中血统最正的容器项目。可以通过 gitstatu...…
-
OpenStack Selin Note
架构术语 集群(Cluster) 集群 节点(node) 比如虚拟机 配置(profile) 集群的规格, 类似于虚拟机的 flavor, 比如有 nova server, heat stack 策略(policy) 集群的更新策略,比如自动伸缩,负载均衡,高可用,我理解策略决定了集群是什么样的集群,单个集群可以附加不同的策略basic创建 profile$ cat senlin_basic.yamltype: os.nova.serverversion: 1.0prope...…
-
lxde 桌面屏幕截图配置
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org在 Mac 或者 Windows 下使用微信截图工具很方便,hack 一个到 lxde.这里选择 scrot 作为后端截图的引擎修改 $HOME/.config/openbox/lxde-rc.xml 文件, 增加以下一个配置项:<keybind key="Print"> <action name="Execute"> <execute>scr...…
-
RabbitMQ 学习
BasicRabbitMQ 是AMQP的一种实现.基本概念: Producer 发送消息方 Consumer 消费者 Queue 消息队列 Message Connection Channel Exchange Binding Routing key 消息的一个属性(消息的地址), exchange使用该属性来决定将该消息发往哪个 queue AMQP Users Vhost, virtual hostExchangesTypes of exchanges Dir...…