直接上代码,一个函数搞定。
1 |
|
直接上代码,一个函数搞定。
1 | #include <stdio.h> |
通过 apt 安装的 Nginx 可以通过系统服务的方式进行启动,相当便捷,但 Nginx 目前还不可以后期动态添加模块的,所以只能通过编译安装了。
更新,及安装必要工具。
sudo apt-get update
sudo apt-get install -y dpkg-dev
创建一个干净的目录,用于后面的编译工作。
mkdir build && cd build
获取 nginx 源码。执行以下代码后,会在当前目录将 nginx 的源码下载至 nginx-* , * 是版本号。
apt-get source nginx
获取 nginx-rtmp-module 源码。通过 git 获取,或者直接下载。
git clone https://github.com/arut/nginx-rtmp-module.git
cd nginx-rtmp-module
git checkout $(git describe --abbrev=0 --tags)
从Windows商店安装Ubuntu。
从开始菜单打开 Ubuntu。
通过 cmd 切换默认用户为 root:
> ubuntu config --default-user root
重新打开 Ubuntu。
从 Arch Linux Downloads或镜像站 下载一个 archlinux-bootstrap.tar.gz, 并解压:
# wget https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2018.05.01/archlinux-bootstrap-2018.05.01-x86_64.tar.gz
# tar -zxvf archlinux-bootstrap-2018.05.01-x86_64.tar.gz
修改 ~/root.x86_64/etc/pacman.d/mirrorlist
, 选择需要的服务器,取消注释。
让WSL自动生成 /etc/resolv.conf:
# echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." > ~/root.x86_64/etc/resolv.conf
退出所有 Ubuntu Shell, 在资源管理器中打开 %localappdata%\Packages
, 并找到 CanonicalGroupLimited.UbuntuonWindows_
开头的文件夹,删除 %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs
中的 bin, etc, lib, lib64, sbin, srv, usr 和 var 等 8 个文件夹。
然后,移动 rootfs\root\root.x86_64
中的 bin, etc, lib, lib64, sbin, srv, usr 和 var 到 rootfs
中。
在另一个 Arch Linux 系统中构建 fakeroot-tcpAUR 和 glibc-wslAUR , 然后复制到你的 Windows 电脑。 (通过 --nocheck
选项可以在 makepkg
编译 glibc-wsl 时跳过一个非常耗时的测试套件) glibc-wsl 用于解决 这个bug。 而直到 System V IPC 被完全实现之前 fakeroot-tcp 都是必需的。 (详情)
在另一个 Arch Linux 系统中构建 fakeroot-tcpAUR , 然后复制到你的 Windows 电脑。直到 System V IPC 被完全实现之前 fakeroot-tcp 都是必需的。 (详情)
重新打开 Bash 以安装 Archlinux:
# pacman-key --init
# pacman-key --populate archlinux
# pacman -Syy
# pacman -U fakeroot-tcp-1.22-2-x86_64.pkg.tar.xz
# pacman -Syu base base-devel
注意:在安装 base 和 base-devel 时,需要取消 glibc 和 fakeroot 。
最后,增加一个普通账号。
# useradd -m -G wheel -s /bin/bash username
# passwd root
# passwd username
并通过 cmd 设置该账号为默认账号:
> ubuntu config --default-user username
Nginx 一般都是编译安装,不过它本身也提供了通过yum安装的方式,比如在CentOS 7中需要先安装 Yum 源:
1 | rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
之后就是常规的 yum -y install nginx
。
通过这一方式安装的Nginx已经可以通过系统服务的方式进行启动,相当便捷,但是很多有趣的第三方插件并没有能够加入,比如header-more-nginx-module,Nginx目前看来不像Tengine是可以后期动态添加模块的,所以解决的方案出了编译安装似乎没有其他的方式了。
不过Nginx编译只生成一个二进制文件,那么,如果获取yum安装的Nginx编译参数,之后使用同一版本的源代码进行编译,之后替换生成文件就可以了。
在 Winforms 中, 所有的控件都包含 InvokeRequired
属性, 如果我们要更新UI,通过它我们可以判断是否需要调用 [Begin]Invoke
.
delegate void SetTextCallback(string text);
public void SetText(string text)
{
if (InvokeRequired)
{
var d = new SetTextCallback(SetText);
this.textBox1.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
直接调用 SetText
即可。
sudo apt update
sudo apt install mysql-server mysql-client
sudo apt install php-{cli,fpm}
安装PHP插件
sudo apt install php-{mcrypt,mbstring,curl,gd,mysql,xml}
sudo apt install nginx-full
配置Nginx, 使之支持PHP, 编辑/etc/nginx/sites-enabled/default
, 在server段中找到以下一段并解除部分注释,使其如下:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
简单记录一下 ffmpeg 获取 DirectShow 设备数据的方法。本文所述的方法主要是对应Windows平台的。(由于 ffmpeg 输出编码为 UTF-8, 所以这里使用 Git Bash )
$ ./ffmpeg -list_devices true -f dshow -i dummy
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.3.0 (GCC)
[dshow @ 00000000001c23c0] DirectShow video devices (some may be both video and audio devices)
[dshow @ 00000000001c23c0] "Integrated Webcam"
[dshow @ 00000000001c23c0] Alternative name "@device_pnp_\\?\usb#vid_0c45&pid_6448&mi_00#7&2645f9e4&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 00000000001c23c0] "screen-capture-recorder"
[dshow @ 00000000001c23c0] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}"
[dshow @ 00000000001c23c0] DirectShow audio devices
[dshow @ 00000000001c23c0] "麦克风 (High Definition Audio 设备)"
[dshow @ 00000000001c23c0] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{E26AD2BE-B335-41EC-BED5-40F982F21FF7}"
[dshow @ 00000000001c23c0] "virtual-audio-capturer"
[dshow @ 00000000001c23c0] Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}"
dummy: Immediate exit requested
video
$ ./ffmpeg -list_options true -f dshow -i video="Integrated Webcam"
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.3.0 (GCC)
[dshow @ 0000000000ea23e0] DirectShow video device options (from video devices)
[dshow @ 0000000000ea23e0] Pin "捕获" (alternative pin name "0")
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=352x288 fps=10 max s=352x288 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=352x288 fps=10 max s=352x288 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=320x240 fps=10 max s=320x240 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=320x240 fps=10 max s=320x240 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=176x144 fps=10 max s=176x144 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=176x144 fps=10 max s=176x144 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=160x120 fps=10 max s=160x120 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=160x120 fps=10 max s=160x120 fps=30
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=1280x720 fps=11 max s=1280x720 fps=11
[dshow @ 0000000000ea23e0] pixel_format=yuyv422 min s=1280x720 fps=11 max s=1280x720 fps=11
[dshow @ 0000000000ea23e0] vcodec=mjpeg min s=1280x720 fps=10 max s=1280x720 fps=30
[dshow @ 0000000000ea23e0] vcodec=mjpeg min s=1280x720 fps=10 max s=1280x720 fps=30
video=Integrated Webcam: Immediate exit requested
audio
$ ./ffmpeg -list_options true -f dshow -i audio="麦克风 (High Definition Audio 设备)"
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.3.0 (GCC)
[dshow @ 00000000024d24a0] DirectShow audio only device options (from audio devices)
[dshow @ 00000000024d24a0] Pin "Capture" (alternative pin name "Capture")
[dshow @ 00000000024d24a0] min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100
Last message repeated 22 times
audio=麦克风 (High Definition Audio 设备): Immediate exit requested
TeamTalk 是蘑菇街开源的一款企业办公即时通信软件,最初是为自己内部沟通而做的 IM 工具。
支持的平台:
Gethub: https://github.com/mogujie/TeamTalk