第三方模块编译及使用
背景这是以前编译及使用模块的一些记录,现在编译基本都是使用Buildroot,能很好的解决依赖问题。
zlib & madplay报错:audio: /dev/dsp: No such file or directory: madplay是基于以前的oss建构的
<*>OSS Mixer API
<*>OSS PCM (digital audio) API
编译:
export CC=arm-linux-gcc
./configure --prefix=/home/xxx/dd/madpalyer/out
#libid3tag libmad madplay:
./configure --host=arm-linux --prefix=/home/xxx/dd/madpalyer/out --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/home/xxx/dd/madpalyer/out/include LDFLAGS=-L/home/xxx/dd/madpalyer ...
CIFS与SMB与samba
概念
SMB: Server Message Block即服务(器)消息块,是 IBM 公司在 80 年代中期发明的一种文件共享协议
CIFS: Common Internet File System即通用因特网文件系统。CIFS 是 SMB 协议的衍生品,即 CIFS 是 SMB 协议的一种特殊实现,由微软开发
Samba是一组不同功能程序组成的应用集合,它能让 Linux 服务器实现文件服务器、身份授权和认证、名称解析和打印服务等功能。与 CIFS 类似,Samba 也是 SMB 协议的实现,它允许 Windows 客户访问 Linux 系统上的目录、打印机和文件(就像访问 Windows 服务器时一样)。
NFS: Network File System即网络文件系统。由 Sun 公司面向 SMB 相同的功能(通过本地网络访问文件系统)而开发,但它与 CIFS/SMB 完全不兼容。NFS 用于 Linux 系统和客户端之间的数据共享。而 Windows 和 Linux 客户端混合使用时,就应该使用 Samba
问题
权限问题当挂载CIFS文件系统(如samba)时,挂载目录的o ...
Flutter状态管理之StreamBuild
如果使用setState方法去刷新,会重新build一遍,会比较耗资源,可能会卡顿。局部刷新效果,主要的状态管理有Provider、Bloc、StreamBuild等。小项目使用StreamBuild就够了。
步骤1:初始化一个StreamController<可以是 int string… 一般是model> final StreamController<String> _streamController = StreamController<String>();
步骤2.dispose()函数中关流,不关流会消耗资源,同时会引起内存泄漏 _streamController.close();
步骤3.使用StreamBuilder构造器 StreamBuilder<String>( // 监听Stream,每次值改变的时候,更新Text中的内容
stream: _streamController.stream,
initialData: _str,
builder: (BuildContext context, A ...
Linux主机间拷贝文件
需求需在2台或多台Linux主机之间拷贝数据文件
方案挂NFS需安装配置NFS
nc+tar适合大量小文件拷贝,无需安装软件包,nc+tar默认Ubuntu都自带 接受方 nc -l 7788 |tar -C file_path -zxvf - 发送方 tar -zcvf - file |nc 192.168.5.254 7788
rsync无需安装软件包,默认Ubuntu都自带
scap无需安装软件包,默认Ubuntu都自带
从本地复制到远程:scp local_file remote_username@remote_ip:remote_folder/remote_file或scp local_file remote_ip:remote_folder/file
从远程复制到本地:scp remote_username@remote_ip:remote_folder/remote_file local_file
报错:scp: not a regular file复制的为文件夹,需加参数 -r
RAID初遇
背景部门最近新进了一台服务器,来做内部服务器用。配置挺高的,至强处理器,64G内存,4块硬盘带RAID。这是第一次接触RAID,以前只是听说过。
概念以下来自百度百科:
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 7 八种基本的RAID 级别。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。RAID级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。
方案我使用的是RAID5,新服务器的硬盘阵列组成为:1块SSD+3块HDD,SSD装系统,3块HDD组成RAID来做数据存储
参考:服务器较稳妥的磁盘阵列方案:RAID5+热备盘
使用lenovo服务器ThinkSystem配置RAID参考:https://blo ...
安装Gitea
背景为部门搭建Git服务器,以前搭建过GitLab(https://notes.z-dd.online/2019/04/24/Ubuntu-server18-04%E4%B8%8A%E6%90%AD%E5%BB%BAGitlab-docker%E6%96%B9%E5%BC%8F/),觉得比较臃肿,这次选择了比较轻量的Gitea。
安装使用的是Docker的方式
Docker安装及相关操作:请见https://notes.z-dd.online/2021/01/13/Docker%E7%9B%B8%E5%85%B3/
安装
获取官方docker镜像 sudo docker pull gitea/gitea:latest
运行容器 如果要将git和其它数据持久化,你需要创建一个目录来作为数据存储的地方:sudo mkdir -p /mnt/gitea sudo docker run -d --name=gitea --restart=always -p 10022:22 -p 10080:3000 -v /mnt/gitea:/data gitea/gitea:latest
然后 容器已 ...
Docker相关
环境
Ubuntu18.04/20.04 X64
安装使用自动化安装脚本安装curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
使用官方仓库安装
卸载旧版本的docker:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
安装相关apt包:
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
添加Docker官方GPG key:
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
设置稳定版的Docker仓库
$ sudo add-apt-repository "deb [arch= ...
Android之UVC调试
背景前段时间在Android机器上调试了UVC摄像头,最近又调试了HDMI转USB模块,它本质上也是虚拟成了一个UVC,和UVC的处理是一样的相关东西记录下
UVC预览及与本地摄像头动态切换测试代码:package com.example.myapplication;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import andr ...
RNDIS
背景因某些不可描述的特殊原因,需要将Android机器上的WIFI的网络通过USB共享到PC机步骤:
使用USB数据线连接PC的USB口和Android机器的USB主USB口,
打开Android机器设置里面的网络共享与便携式热点,打开USB网络共享开关,正常情况下(主流的Android手机),在Win10的设备管理器或者网络连接中,会新增一块网卡设备。但有些Android设备(比如RK3399的主板),USB插上去连接之后会显示一个未知的设备–RNDIS什么是RNDIS呢?又怎么装驱动?
概念RNDIS(Remote Network Driver Interface Specification) ,既是RemoteNDIS,既是远程网络驱动接口规范。基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,实现USB网卡功能
Win10上RNDIS驱动安装使用操作系统的”自动搜索更新的驱动程序”并安装RNDIS驱动会提示失败
选择第二项 “浏览我的计算机以查找驱动程序”–>选择 “让我从计算机上的可用驱动程序列表中选取”–> ...
Win双网卡配置路由
背景接上一篇,使用RNDIS将Android机器虚拟成一个网卡,现在电脑就有了双网卡。那么现在问题来了,有时候打开内网的一些地址无法打开,包括SVN、禅道等。一想肯定是路由问题,那在Win10上怎么配置路由呢?
Win10配置路由以前只有在Linux配过,后面发现Win10上其实差不多,都使用差不多的命令
首先以管理员权限打开CMD或PowerShell,
ipconfig -all 查看自己所有网卡的信息
使用route命令配置、查看路由信息 以下是route help获取的route命令的帮助文档
操作网络路由表。
ROUTE [-f] [-p] [-4|-6] command [destination]
[MASK netmask] [gateway] [METRIC metric] [IF interface]
-f 清除所有网关项的路由表。如果与某个
命令结合使用,在运行该命令前,
应清除路由表。
-p 与 ADD 命令结合使用时,将路由设置为
在系统引导 ...
Hello,2021!
新年新气象在2020的最后几天,把博客版本升级了下,更换了新的主题。
2020,不论是个人生活,工作,还是整个社会,都是不平凡的一年~
Goodbye 2020! Hello 2021!
记一次漏洞修复
背景最近产品被扫出一些中高级漏洞:
[ 高风险 ] jQuery < 3.4.0 Object Extensions 漏洞
[ 中风险 ] jQuery < 3.0.0 跨站脚本攻击漏洞
[ 中风险 ] Lighttpd < 1.4.51多个安全漏洞
[ 中风险 ] Lighttpd < 1.4.50 多个漏洞
[ 中风险 ] 支持SSH弱加密算法
进行了相关模块的升级:
lighttpd v1.4.39 ==>v1.4.58
jQuery(jquery.min.js ) v1.11.1==>v3.5.1
jquery.easyui.min.js v1.4.5==>v1.9.10
dropbear(ssh) port=22 ==> port=2222
中间遇到了一些问题,特此记录。
升级lighttpd
下载最新版本,交叉编译:
make distclean
./configure --prefix=/home/xxx/lighttpd-1.4.58/out --host=arm-poky-linux-gnueabi --bui ...