VSCode调试Go程序

有点麻烦...要使用go-delve

还有配置launch.json 啥的

...

2020/11/8 posted in  Go

iOS 音频录制和播放实现

2020/11/6 posted in  音视频

音频相关参数扫盲

采样率

采样率(也称为采样速度或者采样频率)定义了每秒从模拟信号中提取并组成数字信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数叫作采样周期或采样时间,它是采样之间的时间间隔。

采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规则限制

Read more   2020/11/6 posted in  音视频

数据加解密传输

在音视频数据加密传输过程中,遇到的问题依次记录。

背景:

  • 数据大小基本在2M以内
  • 加密方式使用对称加密 AES-CBC-128
  • 数据使用分段加密
  • iv 以及一些业务信息放在数据头部
Read more   2020/11/6 posted in  音视频

群辉删除 download station 缓存的方法

2020/10/21 posted in  硬件折腾

使用Docker搭建Golang开发环境

2020/10/16 posted in  Go

Voip PushKit 初探

按照苹果的知道文档进行配置后,使用Xcode 12 跑程序遇到了如下的错误:

PushKit apps that use VoIP push must link either CallKit or IncomingCallNotifications frameworks.

出现此错误是因为 iOS 13 的SDK对PushKit使用进行了更新,要求一定要使用CallKit处理PushKit的通知:

https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry?language=objc

当与iOS 13 SDK或更高版本链接时,你对该方法的实现必须通过调用你的应用程序的CXProvider对象的reportNewIncomingCallWithUID:update:completion:方法,向CallKit框架报告PKPushTypeVoIP类型的通知。当你调用该方法时,除非发生错误,否则系统会向用户显示标准的来电界面。例如,如果用户启用了 "请勿打扰",系统就会报告一个错误。你可以在通知CallKit的同时建立与VoIP服务器的连接。

使用 CallKit 处理 PushKit 的通知:

https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit?language=objc

2020/10/16 posted in  iOS

诶..重签名

codesign --force --deep --sign - /Applications/(请把你的应用图标直接拖放到终端窗口)

用途自寻

2020/10/10 posted in  技术杂谈

Gorm操作记录

2020/10/9 posted in  Go

Go 服务部署

Go程序可以进行交叉编译,使得可以在MacOS上进行开发并直接生成在Linux上可执行的文件。

编译linux上执行的程序:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
Read more   2020/10/9 posted in  Go

Golang Gin使用记录

2020/10/9 posted in  Go

k8s ? k3s

k3s[1]是rancher®开源的一个Kubernetes发行版,从名字上就可以看出k3s相对k8s做了很多裁剪和优化,二进制程序不足50MB,占用资源更少,只需要512MB内存即可运行。

Read more   2020/10/7 posted in  Docker

使用Go 操作Excel的实践

2020/9/29 posted in  Go

VSCode 修改设置支持Go单元测试支持日志输出

VSCode的配置分为两个高度:

User Settings - 全局配置, 适用于所有的打开的实例
Workspace Settings - 储存在工作区之下并仅适用于本工作区的配置
显然工作区配置优先级会高于用户配置, 在冲突是会重载用户配置

Read more   2020/9/29 posted in  Go

MacOS上使用launchctl对Service进程守护

plist example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jake.service.frpc</string>
     <key>ServiceDescription</key>
    <string>frpc service</string>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/jakehu/Service/frp_0.33.0_darwin_amd64/frpc</string>
      <string>-c /Users/jakehu/Service/frp_0.33.0_darwin_amd64/frpc.ini</string>
    </array>
    <!-- 标准输入文件 -->
    <key>StandardInPath</key>
    <string>/Users/jakehu/Service/frp_0.33.0_darwin_amd64/frpc/log/run-in-frpc.log</string>
    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/jakehu/Service/frp_0.33.0_darwin_amd64/frpc/log/run-out-frpc.log</string>
    <!-- 标准错误输出文件 -->
    <key>StandardErrorPath</key>
    <string>/Users/jakehu/Service/frp_0.33.0_darwin_amd64/frpc/log/run-err-frpc.log</string>
</dict>
</plist>

Read more   2020/9/27 posted in  Linux_UNIX

WWDC 20 `@StateObject` 和 `@ObservedObject` 区别

在WWDC 20 新增了 @StateObject , @StateObject 基本上来说就是一个针对 class 的 @State 升级版

他们的区别简单而言就是:

使用 @ObservedObject 修饰的属性会随着View更新重新创建,而 @StateObject 修饰的属性不会随着 View 更新被重新创建。

Read more   2020/9/27 posted in  SwiftUI

利用群辉搭建旁路由

2020/9/24 posted in  硬件折腾

【转】基于AVPlayer封装的播放器细节

一个播放器需要解决的技术点:

基本功能

  1. 支持本地视频、网络视频播放

  2. 支持横、竖屏切换

  3. 左侧1/2位置上下滑动调节屏幕亮度

  4. 右侧1/2位置上下滑动调节音量

  5. 左右滑动调节播放进度

  6. 拖动slider控制进度,显示视频的预览图

其他功能

  1. 支持在TableviewCell播放视频

  2. 断点下载功能

  3. 切换视频分辨率

Read more   2020/9/24 posted in  音视频

沙盒中的图片数据格式

写了图片data数据到沙盒,又想保留图片格式?

Read more   2020/9/21 posted in  iOS

斯坦福大学 SwiftUI 教程

2020/9/15 posted in  SwiftUI