vlmcsd service in Linux

vlmcsd 是一个 KMS 服务端软件,用于 M$ 产品的激活与授权. 安装 自己去官网下载源码编译打包.Arch Linux 用户可以去 AUR 找现成的 PKGBUILD 脚本打包. 启动服务 Arch Linux 的 AUR 中的 vlmcsd 包有提供一个 systemd unit,内容如下: [Unit] Description=KMS Emulator [Service] Type=forking User=nobody ExecStart=/usr/bin/vlmcsd [Install] WantedBy=multi-user.target 可以根据上述内容自己创建一个,然后复制到合适的路径.启动并设置开机启动服务: systemctl start vlmcsd systemctl enable vlmcsd vlmcsd 的默认端口为 1688,如果有防火墙的请修改防火墙设置. 使用方法 Windows 打开 cmd,使用命令安装批量授权 key: slmgr /ipk xxxxx-xxxxx-xxxxx-xxxxx 其中批量授权 key 可以从这里根据 Windows 版本选择对应的 key. 设置 KMS 服务器地址: slmgr /skms IP 其中 IP 为你的 vlmcsd 服务的 IP.然后激活:

more...

一个简单而又相对完整的 Qt Charts 例子

不想说太多,请直接看代码.这个例子相对比较简单,但是绘图所需的各种元素都尽量涉及到了,以期给出一个完整的参考例子. 参考 补充一些很有用的参考文章. 这篇 Qt Charts入门指南 提供了使用 Qt Charts 的两种方法的例子,QChartView + QChart 以及 QGraphicsScene + QChart. 这篇 Qt Charts 基本组成 介绍了 Qt Charts 的主要类,有利于从全局把握. 最后,还是建议多看 Qt 的官方文档,它们的文档应该可以说是开源项目里写得最好的那一批了.

利用 cURL 分块下载大文件

缘起 自己的 VPS 是个小家伙,硬盘只有 10G,装完系统,能用的空闲空间也不过 7G 左右.但是我需要从国外的服务器下载一些数据,文件都比我的硬盘大.直接下载到本地速度不够快,而且下载链接有时效,只能考虑先下载到 VPS 上,然后再转移到本地.自然而然的想到一个办法就是分段下载文件到 VPS 上,最后转移到本地之后再拼接起来. 前提 使用本文的方法需要服务器支持 HTTP Range Request,否则只能老老实实地买个硬盘大的 VPS 进行下载.至于怎么确认服务器是否支持,我首先想到的是从服务器分段下载一个较小的文件,然后拼接,对比直接下载完整的文件是不是一致. 其实也可以用 cURL 查看返回的请求头.例如: curl -I http://mirrors.ustc.edu.cn/debian-cd/current/amd64/iso-cd/debian-mac-9.3.0-amd64-netinst.iso 返回结果 HTTP/1.1 200 OK Server: openresty Date: Sun, 21 Jan 2018 13:45:58 GMT Content-Type: application/octet-stream Content-Length: 307232768 Last-Modified: Sat, 09 Dec 2017 13:04:52 GMT Connection: keep-alive ETag: "5a2bdf74-12500000" Accept-Ranges: bytes 看到了 Accept-Ranges: bytes,说明这个服务器是支持 HTTP Range Request 的.如果返回结果中不含 Accept-Ranges,则很有可能是不支持 HTTP Range Request 的.有的服务器会显式返回 Accept-Ranges: none 表示不支持 HTTP Range Request.

more...

XRPD 相关的一个小问题——关于 `thinclient_drives` 目录的错误

关于 XRPD 是什么,我就不废话了.它会在远程 Linux 主机的用户家目录下创建一个 thinclient_drives 目录,用于驱动器的映射.这个目录实际上应该是用 fuse 挂载的.但是有的时候会遇到该目录的权限错误,如下: d????????? ? ? ? ? ? thinclient_drives/ 它的权限位全部变成了问号.这个是因为挂载出现了问题.如果你尝试使用 fuser thinclient_drives 去分析它,会得到提示: 无法分析 /home/user/thinclient_drives: 传输端点尚未连接 或者 Cannot stat /home/user/thinclient_drives: Transport endpoint is not connected 实际上就是挂载出现了错误.如果你使用 XFCE 的文件管理器 Thunar,你甚至会无法打开文件管理器.解决方法很简单,只需要将其正确卸载即可: fusermount -u thinclient_drives Over. 参考:FUSE error: Transport endpoint is not connected

区域生长算法的一种实现

算法流程 选取种子点 QPoint seed(x, y),用栈来保存种子点区域,将种子点 push 到栈中. 将栈中的种子点 pop 出来,以该点为中心,遍历其八邻域. 判断邻域像素是否已经在种子区域中,若否则判断该像素是否满足生长条件,满足则将其作为新的种子点 push 到栈中. 重复步骤 2-3,直到栈为空. 代码实现 // seed 为种子点坐标 // threshold 为一个阈值,若邻域像素与种子点的灰度值之差小于这个阈值 // 则判定其满足生长条件 // // 这里默认使用了 Qt 的栈 QStack,图像的读写使用 CImg.h 库 void regionGrowth(const QPoint &seed, const int &threshold) { // 输入图像 CImg<int> img("test.png"); // 输出结果图像 // 这是一个全白的图片 CImg<int> result(img.width(), img.height(), img.depth(), img.spectrum(), 255); int T = threshold; // 用于存储坐标值的临时变量 int x, y; // 种子栈 QStack<QPoint> seeds; // 用于存储 pop 出来的种子的临时变量 QPoint currentSeed; // 将原始的种子压栈 seeds.

more...

什么是颜色相关直方图

正文 记 \( I \) 为一幅 \( n \times n \) 的图像,\( I \) 中的颜色可以量化为 \( m \) 种:\( c_{1}, c_{2}, \ldots, c_{m} \).对于一个像素 \( p = (x, y) \),记 \( I(p) \) 为他的颜色.记 \( I_{c} \triangleq \{ p \mid I(p) = c \} \),这样子的话,记号 \( p \in I_{c} \) 就等价于 \( p \in I, I(p) = c \).为了简单起见,作者使用无穷范数来度量两个像素之间的距离,即像素 \( p_{1} = (x_{1}, y_{1}), p_{2} = (x_{2}, y_{2}) \) 的距离为 \( \lvert p_{1} - p_{2} \rvert \triangleq \max \{ \lvert x_{1}, x_{2} \rvert, \lvert y_{1} - y_{2} \rvert \} \).记集合 \( \{ 1, 2, \ldots, n \} \) 为 \( [n] \).

more...

Linux 系统状态日志记录

初衷 就是服务器今天早上意外关机了.查看系统日志也没有查找到具体的原因.猜测可能是温度过过高导致的自动关机.结果日志里并没有记录 CPU、GPU 或者硬盘的温度之类的信息.看来还是要自己动手,丰衣足食. CPU 温度 比较常用的就是 lm_sensors 这个包了.不过为了方便将 CPU 温度记录到系统日志文件中,我们需要安装的是 sensord 这个包.有些发行版将两者打包到了一起,也有一些是将他们分开,但是安装 sensord 也会同时安装 lm_sensors 的.对于 Ubuntu/Debian 系统,直接安装即可: sudo apt install sensord 然后运行一下: sudo sensord sensord 就会每隔一段时间将 CPU 温度写入到系统日志文件里,一般是 /var/log/syslog 里. 硬盘温度 这个可以安装 hddtemp 包,安装好之后运行一下: sudo hddtemp --syslog=1200 --unit=C /dev/sda 上面的命令表示每隔 1200 秒,也就是 30 分钟,将硬盘 /dev/sda 的温度信息写入到 /var/log/syslog 里,单位为摄氏度. GPU 这里只考虑 Nvidia 的 GPU,它提供的 nvidia-smi 命令就可以将 GPU 信息保存为日志. sudo nvidia-smi daemon 这样就可以开启一个守护进程,将 Nvidia GPU 的信息保存到日志里.默认的保存路径为 /var/log/nvstats.Windows 系统下也可以使用这个命令,相应的默认保存地址为 C:/Program Files/NVIDIA Corporation/NVSMI

more...

几行命令在 Arch Linux 下为本地局域网搭建一个 git server

安装 git So easy, pacman -S git 启动 git-daemon.socket systemctl start git-daemon.socket systemctl enable git-daemon.socket 这个 daemon 的实际启动命令为: ExecStart=-/usr/lib/git-core/git-daemon --inetd --export-all --base-path=/srv/git 从这里可以知道我们的 git 仓库放在 /srv/git 目录下.只要在该目录下创建一个 git 仓库,它就会自动被 git server 管理.用户访问该仓库的命令类似这样: git clone [email protected]:/srv/git/repository.git 其中 IP 为 git server 的 IP,repository 为仓库的名称. 其实到这里就已经搞定了,是不是很简单?不是啦,还是需要一些配置的. 添加访问权限 如果你真的使用上面的命令去 clone 一个仓库,肯定是没有权限的.我们需要添加 ssh key.一般我们把 ssh 公钥放到 ~/.ssh/authorized_keys 里去.咦?git 用户的 $HOME 在哪里呢?用这个命令查看 eval echo "~git" 结果是 /.好像直接在根目录下放不太好吧.哦,那就修改一下 git 用户的 home 目录啊.

more...

Vgg Practical Cnn 2016a 笔记

Getting started 代码和数据的下载此处省略,MatConvNet 工具包的编译安装省略.本文使用的环境为 Arch Linux, Matlab 2017a, MatConvNet 1.0-beta25. Part 1: CNN building blocks Part 1.1: convolution 一个典型的神经网络可以用以下公式表示: \[ f(\mathbf{x}) = f_{L} (\ldots f_{2}(f_{1}(\mathbf{x}; \mathbf{w}_{1}); \mathbf{w}_{2}) \ldots), \mathbf{w}_{L}). \] 每一个函数 \( f_{l} \) 接受一个输入 \( \mathbf{x}_{l} \) 和一个参数 \( \mathbf{w}_{l} \),产生一个输出 \( \mathbf{x}_{l+1} \).其中的参数 \( \mathbf{w} = (\mathbf{w}_{1}, \ldots, \mathbf{w}_{L}) \) 是从输入数据中学习到的,目的是为了解决某一特定问题,例如分类. 对于计算机视觉来说,输入数据一般就是 2D 的矩阵.一般来说,每个 \( \mathbf{x}_{i} \) 是一个 \( M \times N \times K \) 的实矩阵,对应着 \( M \times N \) 的像素,每个像素的通道数为 \( K \).因此,前两个维度张成矩阵空间,最后一个张成通道.注意,神经网络的输入 \( \mathbf{x} = \mathbf{x}_{1} \) 表示实际的输入图像,而其他的 \( \mathbf{x}_{i} \) 为中间文件,为特征图像 (feature map).

more...

Automatic Scoring of Multiple Semantic Attributes With Multi Task Feature Leverage a Study on Pulmonary Nodules in Ct Images 阅读笔记

摘要 Computational 与语义特征之间的鸿沟是制约着计算机辅助诊断 (CAD) 在临床上的应用的一个主要因素.文章提出三个多任务学习方案 (MTL) 来平衡从 SDAE, CNN, Haar-like 和 HoG 深度学习模型提取到的异质 computational features,这些 features 对应的是肺部 CT 图像的 9 个语义特征.作者认为,这些语义特征之间存在一定关系,可以利用深度学习方法学习出来.文章使用的数据集为 LIDC 数据集,这个数据集中的 CT 图像由美国几个研究所的 12 名放射科医生进行量化评分.将每个语义特征看作一个单独的任务,MTL 从 LIDC 中随机选取 2400 个结节,然后将异质特征映射到放射科医生的评分.实验表示,利用 MTL 学习得到的语义特征评分,相比于单任务的 LASSO 和 elastic net regression 方法,更加接近放射科医生的评分. 介绍 相关研究 之前的 CAD 研究主要专注于判断肿瘤是良性还是恶性,也就是只做了简单的二分类. CADa 文章新提出的方案称作 CADa,它会有 1-5 的评分范围,从而评分更加具有临床诊断的参考价值. 肺结节的特征 Fig1:Nodule patterns with respect to the annotated degrees of the 9 semantic features 如图 1 所示,从临床上来说,肺结节的一些语义特征,如形状、毛刺、钙化等信息是具有诊断意义的.本文用的 9 个语义特征为:质地 (texture)、细微?(subtlety)、毛刺 (spiculation)、球形 (sphericity)、边缘 (margin),恶性 (malignancy)、分叶 (lobulation)、内部结构 (internal structure) 和钙化 (calcification).需要说明的是 IS 和 Cal 这两个语义特征的评分没有分数大小的关系,也就是说 Cal 的评分分值的大小没有语义上的大小关系,因而后面会对这两个语义特征单独处理.

more...