博客园 - 半山th
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=136785
2022-04-08T02:52:58Z
半山th
https://www.cnblogs.com/xdao/
feed.cnblogs.com
https://www.cnblogs.com/xdao/p/seafile_onlyoffice.html
Seafile搭建以及onlyoffice在线办公 - 半山th
部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSW
2022-04-08T01:42:00Z
2022-04-08T01:42:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSW <a href="https://www.cnblogs.com/xdao/p/seafile_onlyoffice.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/golangci-lint.html
golangci-lint简要手册 - 半山th
简介 golanci-lint 集成了多种静态语法插件,有许多 linter,可以同时执行,是golang静态检查的集大成者。 可以官网直接下载二进制,或者用go安装 # Go 1.16+ go install github.com/golangci/golangci-lint/cmd/golang
2022-03-17T06:29:00Z
2022-03-17T06:29:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】简介 golanci-lint 集成了多种静态语法插件,有许多 linter,可以同时执行,是golang静态检查的集大成者。 可以官网直接下载二进制,或者用go安装 # Go 1.16+ go install github.com/golangci/golangci-lint/cmd/golang <a href="https://www.cnblogs.com/xdao/p/golangci-lint.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/go_cgo_tips.html
cgo遇到的几个坑 - 半山th
1、替换c的动态库后还是运行的以前的版本 感觉像是动态库缓存,解决方案,删除动态库,运行程序,ldconfig,再替换试试。还不行就重启 2、直接替换c的动态库后,正常运行,但是重新编译后,再替换反而失败 重新编译的时候,把头文件也替换一下 3、如何调用cpp的动态库 用c包装一下
2021-09-27T06:03:00Z
2021-09-27T06:03:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】1、替换c的动态库后还是运行的以前的版本 感觉像是动态库缓存,解决方案,删除动态库,运行程序,ldconfig,再替换试试。还不行就重启 2、直接替换c的动态库后,正常运行,但是重新编译后,再替换反而失败 重新编译的时候,把头文件也替换一下 3、如何调用cpp的动态库 用c包装一下 <a href="https://www.cnblogs.com/xdao/p/go_cgo_tips.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/mediastream_03.html
流媒体服务新手入门教程03--音视频基础 - 半山th
对于简单的接入摄像头等硬件或者推送视频流、录制文件,那么直接下载m7s官网编译好的二进制文件即可。 如果要做二次开发,那么就需要了一些基础的音视频基础,及m7s代码了,我们先了解一些音视频基础。 视频基础 视频帧 对于视频来说,我们可以把其想象为一幅一幅图片组成的,当把这些图片连续快速播放时,由于人
2021-08-05T14:03:00Z
2021-08-05T14:03:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】对于简单的接入摄像头等硬件或者推送视频流、录制文件,那么直接下载m7s官网编译好的二进制文件即可。 如果要做二次开发,那么就需要了一些基础的音视频基础,及m7s代码了,我们先了解一些音视频基础。 视频基础 视频帧 对于视频来说,我们可以把其想象为一幅一幅图片组成的,当把这些图片连续快速播放时,由于人 <a href="https://www.cnblogs.com/xdao/p/mediastream_03.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/mediastream_02.html
流媒体服务新手入门教程02--m7s环境搭建 - 半山th
m7s后端采用golang语言开发,并提供了前端页面。前端采用vue开发,在2.x的时候是开源的,3.x则闭源了。 但是其接口简单友好,可以根据自己的业务开发自己的前端。借助golang良好的跨平台环境,m7s也能在多个系统和 CPU平台下运行。你甚至可以跑在openwrt的路由器上,接入家中的摄像
2021-07-25T14:59:00Z
2021-07-25T14:59:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】m7s后端采用golang语言开发,并提供了前端页面。前端采用vue开发,在2.x的时候是开源的,3.x则闭源了。 但是其接口简单友好,可以根据自己的业务开发自己的前端。借助golang良好的跨平台环境,m7s也能在多个系统和 CPU平台下运行。你甚至可以跑在openwrt的路由器上,接入家中的摄像 <a href="https://www.cnblogs.com/xdao/p/mediastream_02.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/mediastream_01.html
流媒体服务新手入门教程01--什么是流媒体服务及m7s介绍 - 半山th
什么是流媒体服务? 流媒体是指采用流式传输的方式传播多媒体文件。比如现在常见的直播应用抖音、快手以及视频网站,它们的背后都是流媒体服务支撑着。 和播放硬盘上的视频文件不同,流媒体在播放前不会下载整个文件,只是将当前数据发送给客户端。流媒体数据流随时传送随时播放,只是在开始时有些延迟,至于如何减少延迟
2021-07-18T13:14:00Z
2021-07-18T13:14:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】什么是流媒体服务? 流媒体是指采用流式传输的方式传播多媒体文件。比如现在常见的直播应用抖音、快手以及视频网站,它们的背后都是流媒体服务支撑着。 和播放硬盘上的视频文件不同,流媒体在播放前不会下载整个文件,只是将当前数据发送给客户端。流媒体数据流随时传送随时播放,只是在开始时有些延迟,至于如何减少延迟 <a href="https://www.cnblogs.com/xdao/p/mediastream_01.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/go_mod_gitlab_private.html
go mod 使用私有gitlab群组的解决办法 - 半山th
由于go对私有gitlab的仓库支持不好,得使用下面这些步骤 设置git使用 ssh协议 git config --global url."git@gitlab.com:".insteadOf "https://gitlab.com/" 添加ssh key 到gitlab ssh-keygen 会生
2020-12-22T02:53:00Z
2020-12-22T02:53:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】由于go对私有gitlab的仓库支持不好,得使用下面这些步骤 设置git使用 ssh协议 git config --global url."git@gitlab.com:".insteadOf "https://gitlab.com/" 添加ssh key 到gitlab ssh-keygen 会生 <a href="https://www.cnblogs.com/xdao/p/go_mod_gitlab_private.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/go_accessor.html
golang自动生成setter和getter - 半山th
做了一个简单的go generate工具,从go官方工具stringer修改而来,为结构体生成setter和getter。 结构体中字段首字母大写默认可读可写,小写则默认只读。 可以添加access的tag,控制访问属性r表示读,w表示写,用逗号分隔。 用法 go get gitee.com/dwd
2020-11-12T03:04:00Z
2020-11-12T03:04:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】做了一个简单的go generate工具,从go官方工具stringer修改而来,为结构体生成setter和getter。 结构体中字段首字母大写默认可读可写,小写则默认只读。 可以添加access的tag,控制访问属性r表示读,w表示写,用逗号分隔。 用法 go get gitee.com/dwd <a href="https://www.cnblogs.com/xdao/p/go_accessor.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/cgo-function-pointer-callbacks.html
cgo中调用有函数指针参数的C函数 - 半山th
最近同事接一个设备的sdk,是使用的C的动态库,需要用cgo方法。 其中有一个函数,参数需要函数指针,读了一下cgo的官方文档,发现不支持这种调用方式。 按照官网的方法,需要用C写个gateway 函数,在C里再封装一下,提供没有函数指针参数的函数供go调用。 本来想着有空了,写个C包装器,后来同事
2020-11-02T03:22:00Z
2020-11-02T03:22:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】最近同事接一个设备的sdk,是使用的C的动态库,需要用cgo方法。 其中有一个函数,参数需要函数指针,读了一下cgo的官方文档,发现不支持这种调用方式。 按照官网的方法,需要用C写个gateway 函数,在C里再封装一下,提供没有函数指针参数的函数供go调用。 本来想着有空了,写个C包装器,后来同事 <a href="https://www.cnblogs.com/xdao/p/cgo-function-pointer-callbacks.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/golang_compile_windows.html
ubuntu下交叉编译go sqlite到windows - 半山th
sudo apt-get install mingw-w64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build main.go
2020-08-24T00:59:00Z
2020-08-24T00:59:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】sudo apt-get install mingw-w64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build main.go <a href="https://www.cnblogs.com/xdao/p/golang_compile_windows.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/php_ffi_golang.html
PHP FFI调用go,居然比go还快 - 半山th
上一篇文章中用PHP的FFI成功了调用了cjieba,但是速度实在是慢,4个函数循环调用20次,用了居然1分50多秒,而且C版本只比PHP快一点点,看来是cjieba本身慢了。 这次发现了一个golang的分词库gse,试试导出为动态库,用FFI加载。 碰到的问题 不能导出go指针 由于之前对cgo
2020-08-12T12:50:00Z
2020-08-12T12:50:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】上一篇文章中用PHP的FFI成功了调用了cjieba,但是速度实在是慢,4个函数循环调用20次,用了居然1分50多秒,而且C版本只比PHP快一点点,看来是cjieba本身慢了。 这次发现了一个golang的分词库gse,试试导出为动态库,用FFI加载。 碰到的问题 不能导出go指针 由于之前对cgo <a href="https://www.cnblogs.com/xdao/p/php_ffi_golang.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/php_ffi_jieba.html
PHP使用FFI调用CJieba分词 - 半山th
phpjieba_ffi 使用PHP 7.4的 FFI 测试直接调用cjieba分词的动态库 选用CJieba的原因是FFI使用的是C的调用约定,如果用Cpp,还得自己包装一下,然后extern C,让编译器生成标准C的动态库。 碰到的问题 段错误 C变量没有初始化 直接调用了C的函数,没有通过FF
2020-07-31T10:49:00Z
2020-07-31T10:49:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】phpjieba_ffi 使用PHP 7.4的 FFI 测试直接调用cjieba分词的动态库 选用CJieba的原因是FFI使用的是C的调用约定,如果用Cpp,还得自己包装一下,然后extern C,让编译器生成标准C的动态库。 碰到的问题 段错误 C变量没有初始化 直接调用了C的函数,没有通过FF <a href="https://www.cnblogs.com/xdao/p/php_ffi_jieba.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/drone_ci_cd.html
drone实践记录 - 半山th
drone组成: 1、drone server 主服务,对接git server的 webhook ,解析流水线配置yml,web管理界面,路由并管理runner 2、drone runner 运行流水线,有多种runner,docker,裸机,k8s 3、drone plugin 插件,改变默认的
2020-03-20T07:56:00Z
2020-03-20T07:56:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】drone组成: 1、drone server 主服务,对接git server的 webhook ,解析流水线配置yml,web管理界面,路由并管理runner 2、drone runner 运行流水线,有多种runner,docker,裸机,k8s 3、drone plugin 插件,改变默认的 <a href="https://www.cnblogs.com/xdao/p/drone_ci_cd.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/php_yapi.html
PHP拆分YAPI导出的swagjson文件 - 半山th
项目采用了 "Yapi" 做为文档管理工具,可是由于之前没有划分好模块,结果文档都写到一起了,导致查看文档不方便。 研究Yapi,发现不能移动分组,而且只能导出项目下的所有接口,于是导出文件,研究后发现文档里的文件夹是使用tag来表示的,于是想到可以把按照tag,导出成单个json文件,然后新建项目
2020-02-17T07:50:00Z
2020-02-17T07:50:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】项目采用了 "Yapi" 做为文档管理工具,可是由于之前没有划分好模块,结果文档都写到一起了,导致查看文档不方便。 研究Yapi,发现不能移动分组,而且只能导出项目下的所有接口,于是导出文件,研究后发现文档里的文件夹是使用tag来表示的,于是想到可以把按照tag,导出成单个json文件,然后新建项目 <a href="https://www.cnblogs.com/xdao/p/php_yapi.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/pydantic.html
pydantic验证器Validator - 半山th
title: pydantic验证器Validator date: 2020 01 17T01:20:38.127Z tags: python,pydantic categories: python 最近学习Python的fastapi框架,发现使用了pydantic来做输入参数。看了一下pydan
2020-01-17T02:20:00Z
2020-01-17T02:20:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】title: pydantic验证器Validator date: 2020 01 17T01:20:38.127Z tags: python,pydantic categories: python 最近学习Python的fastapi框架,发现使用了pydantic来做输入参数。看了一下pydan <a href="https://www.cnblogs.com/xdao/p/pydantic.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/notion_read_template.html
利用notion打造读书追逐系统 - 半山th
读书追踪模板 一、该模板仅供参考,分类中的选项说明 1. 时间划分,分为了四大块,早上、中午、晚上、碎片 2. 日期划分,因为不想连续每天都读一本书,划分为了 奇(只在奇数天读)、偶(只在偶数天读)、全(不受奇偶影响) 二、先 "利用Mermaid Live Editor制作甘特图" 比如下面的例子
2020-01-06T09:47:00Z
2020-01-06T09:47:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】读书追踪模板 一、该模板仅供参考,分类中的选项说明 1. 时间划分,分为了四大块,早上、中午、晚上、碎片 2. 日期划分,因为不想连续每天都读一本书,划分为了 奇(只在奇数天读)、偶(只在偶数天读)、全(不受奇偶影响) 二、先 "利用Mermaid Live Editor制作甘特图" 比如下面的例子 <a href="https://www.cnblogs.com/xdao/p/notion_read_template.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/opencv_mosaic.html
opencv马赛克python实现 - 半山th
最近要实现opencv视频打马赛克,在网上找了一下基本是C++的实现,好在原理一样,下面给出python实现。 原理和注意点,我都写在注释里了 原图为: 效果如下: 图片来自网上,如有侵权,联系删除。
2019-05-20T01:15:00Z
2019-05-20T01:15:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】最近要实现opencv视频打马赛克,在网上找了一下基本是C++的实现,好在原理一样,下面给出python实现。 原理和注意点,我都写在注释里了 原图为: 效果如下: 图片来自网上,如有侵权,联系删除。 <a href="https://www.cnblogs.com/xdao/p/opencv_mosaic.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/10674848.html
kafka调试工具kafkacat的使用 - 半山th
一、 安装 kafkacat 是基于kafka C语言的librdkafka库的 kafka客户端,不依赖java,小巧轻便,支持主流系统。在高版本的debain、Ubuntu下可以直接apt-get install kafkacat,maxos下可以用brew install kafkacat也可
2019-04-09T01:13:00Z
2019-04-09T01:13:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】一、 安装 kafkacat 是基于kafka C语言的librdkafka库的 kafka客户端,不依赖java,小巧轻便,支持主流系统。在高版本的debain、Ubuntu下可以直接apt-get install kafkacat,maxos下可以用brew install kafkacat也可 <a href="https://www.cnblogs.com/xdao/p/10674848.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/go_mod.html
go mod代理和小技巧 - 半山th
代理 go mod的代理比较出名的有阿里的goproxy,可以基于它搭建一个私有的代理,管理内部的私有代码,而且微软提供了一个公共的代理,我们可以直接使用 Linux export GOPROXY="https://mirrors.aliyun.com/goproxy/" export GO111M
2019-01-16T02:24:00Z
2019-01-16T02:24:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】代理 go mod的代理比较出名的有阿里的goproxy,可以基于它搭建一个私有的代理,管理内部的私有代码,而且微软提供了一个公共的代理,我们可以直接使用 Linux export GOPROXY="https://mirrors.aliyun.com/goproxy/" export GO111M <a href="https://www.cnblogs.com/xdao/p/go_mod.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xdao/p/idea_add_git_push.html
idea系列ide给git增加push按钮 - 半山th
第一步 打开设置 Appearance & Behavior Menus and ToolBars,选中VscNavBarToolBarActios,然后点击“+”添加 第二步 在弹出的对话框里 搜索push,找到git后确定即可 该方法对pycharm,phpstorm,goland,clion等
2018-12-26T14:05:00Z
2018-12-26T14:05:00Z
半山th
https://www.cnblogs.com/xdao/
【摘要】第一步 打开设置 Appearance & Behavior Menus and ToolBars,选中VscNavBarToolBarActios,然后点击“+”添加 第二步 在弹出的对话框里 搜索push,找到git后确定即可 该方法对pycharm,phpstorm,goland,clion等 <a href="https://www.cnblogs.com/xdao/p/idea_add_git_push.html" target="_blank">阅读全文</a>