各种中文教科书或百科上对向量空间 (Vector Space) 的解释都比较晦涩,尝试着写一篇通俗点的。 有初等数学基础的都能看懂。尽量避免使用线代术语。参考

向量空间干啥用的 (Why we need vector spaces)

它是一个数学概念,用来描述定理的。我们知道数学语言需要精确简洁,想象一下有这么个问题:

假设有一组数学对象——可以是单列向量、多项式、函数或者任何能相加或乘以一个数的东西并且这东西满足交换律结合律。现在要解关于这些对象的参数方程,我们可以用 blablabla 方法.....

显然这种描述方法既不精确也不简洁,不符合数学语言的基本要求。如果改用

设 V 是一个向量空间,要解关于 V 的参数方程可以.....

就好多了。

于是「向量空间」就成了替换前面那堆带着啰里吧嗦定语的数学对象的专用概念。

向量空间应用举例

Read more »

在自组 NAS 上备份安卓相册的办法

按照 自组NAS教程 成功搭建家用 NAS 存储以后,备份手机相册和媒体库的需求非常普遍。虽然各种商业 NAS 往往会提供各种网页端 gui 或手机 app 作为完善其生态的重要组成部分,但仅就「备份」这个需求来说,简单的一个 termux 就完全足够了。

Read more »

NAS 可以用来做什么?

写一些我个人搭建NAS后的主要用途。已经买了NAS可以看下有没有哪方面能拓展自己的应用。或者有购买或搭建NAS意向的可以看着参考一下自己是否真的有这方面的需求,避免盲目跟风导致吃灰。

本人的配置 Intel N6005/16G内存/512G固态/12T RAID1(4T*6) 系统Archlinux。 网络300M宽带,动态公网IP+DDNS。

远程存储及读取

Read more »

探测器常见问题解答

气体探测器(布控球)的常见问题, 主要是接入商和平台提供商的疑问解答。咨询技术支持前可以先看一下。


主界面上的实时浓度数据为什么不显示了?

我们的最新系列布控球采用分体设计:气体传感器部分安装在手持式设备里,方便现场工人随身携带着进入作业现场。而数据接收、传输、视频录像等功能放在球机内,用于跟外部平台通讯。在只有球机开机,手持设备关闭的情况下球机上是没有数据显示的。

所以球机主界面没数据时可以先看手持设备是否开机,如果开机了检查一下手持设备跟球机距离是否过远,并且确认手持设备跟球机是否是正确的配对,不要拿错。

Read more »

TongjiAI Media Service Instruction

Realtime Streaming

1. Request streaming from devices.

Devices are designed to be accesed via socket.io. By default a device gets itself registered at the official socket.io server once it is connected to the internet, either via wirelss LANs(aka Wifi) or 4G/5G cellular networks. Clients who are willing to request the realtime video streaming should connect themselves to the socket.io server and join the same room with the target devices, which is followed by the steps below:

Read more »

  • 将以下脚本作为库文件导入前端项目中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { io } from "socket.io-client";
import playRecord from "./playRecord";

const socketIOInit = async (sio_url,setRmoteStream, setRecList) => {
const socketio = io(sio_url);
let pc;
let heartbeat_timer;

socketio.on("connect", () => {
console.log("connected");
});

socketio.on("create", () => {
socketio.emit("auth");
socketio.emit("heartbeatping");
console.log("created");
});
socketio.on("bridge", async (pathid) => {
setTimeout(() => {
setRemoteStream(
`https://live.tongjiai.cn/channel/${pathid}/index.m3u8`
);
}, 3000);
});
socketio.on("join", () => {
socketio.emit("auth");
socketio.emit("heartbeatping");
socketio.emit("getRecList");
console.log("joined");
});

// client-side custom heartbeat check with an interval of 10 seconds.
socketio.on("heartbeatpong", () => {
if (heartbeat_timer) {
clearTimeout(heartbeat_timer);
}
heartbeat_timer = setTimeout(() => {
socketio.emit("heartbeatping");
socketio.emit("getRecList");
}, 10000);
});

// recList handler
socketio.on("recList", (list) => {
console.log("list:",list);
setRecList(list);
});

socketio.on("hangup", () => {
console.log("hangup");
});
return socketio;
};
Read more »

偶尔发现的简便小技巧随手分享。 使用场景:家庭PC,Windows系统,希望搭网络服务(ssh/transmission/nginx等),或者远程开发平台(go/python/nodejs等)

硬件要求:家用宽带最好有公网ip(包含ddns)且路由器可以转发端口。如果没有的话可以用云服务商那儿买的vps搭frp或ssh tunnel。 如果有需要可以自行设置wake-on-lan方便远程开机(我自己是24小时开机所以没用上这个)。

一、装VMware Player。对,免费的Player就够; 二、新建一个Linux的guest,网络连接选桥接(bridged)。装好server版系统(不需要gui),发行版随意。 三、在guest机上装你需要的服务,设置好systemctl enable。在路由或vps上设好端口转发。

以上三步是常规操作不多赘述详细操作,有疑问查阅之前的文章
Read more »

一、安装 Nvidia SDK manager

根据 Nvidia官网 教程说明,先下载用于 Ubuntu (或者其他当前使用的Linux发行版)的安装包。其中 Ubuntu版的下载地址如下: https://developer.nvidia.com/sdkmanager_deb 注意:使用该地址下载可能需要先注册Nvidia用户,注册步骤请按照官网提示一步步进行,此处不多赘述。 下载完成后打开终端 Terminal,键入以下命令安装sdkmanager(此处假设下载好的.deb安装包位于 ~/Downloads/目录,该目录是大多数浏览器的默认下载目录,如果你手动修改过下载保存目录,请自行替换):

$ cd ~/Downloads
$ sudo apt install ./sdkmanager*.deb -y

等待安装完毕后键入以下命令打开刚安装好的sdkmanager:

$ sdkmanager

二、刷机

进入SDK Manager 的GUI图形界面后取消勾选 HARDWARE CONFIGURATION 栏中的 Host Machine 选勾,再点击 Target Hardware方框右下角的三个点 ...,选择Jetson TX2 models

Read more »

智能监测平台 TJAI-Platform

开发文档

平台结构概述

监测平台(下文简称平台)采用 NextJS 作为开发技术栈。基于 NextJS 的前后端一体化和服务器端预渲染(Server Side Rendering) 特性,可以方便地进行设备端传感器数据上传和客户端页面实时刷新。

NextJS 依赖 Node.js 环境和 ReactJS 前端框架,因此开发环境上需要安装好 Node.js 和 npm 包管理工具。在 Ubuntu 20.04 LTS 版本下安装nodejs 方法如下

1
2
$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt install -y nodejs
Read more »

监测仪数据外发结构概述

监测仪会在有网络连接的前提下定时向预设的网络接口以 HTTP 协议的格式发送 POST 请求,用以向网站传递设备信息以及实时气体浓度数据。

目前设备外发数据的接口有以下五种:

  • token 请求接口: http://[hostname:port]/[apipath]/getToken 用以发送用户名密码验证信息并获取返回的验证 token 。该 token 将被用于以下另四种 api 接口的身份验证。

  • 设备信息上传接口: http://[hostname:port]/[apipath]/deviceInfo 用于上传监测仪的设备名称、序列号、经纬度位置信息以及所属用户。

  • 摄像机信息上传接口: http://[hostname:port]/[apipath]/cameraSource 用于上传摄像机的 camera id、摄像机画面的远程获取 url 和所属设备。

  • 传感器信息上传接口: http://[hostname:port]/[apipath]/sensorInfoUpdate 用于传递设备上气体浓度传感器的名称、代号、类别、上下限阈值和所属设备。

  • 实时气体浓度数据上传接口: http://[hostname:port]/[apipath]/realtimeDataUpload 用于上传设备中所有气体传感器的实时浓度数据。该接口一般会同时上传所有气体浓度数据,因此发送的数据结构是数组形式。

Read more »
0%