Line and Circular Interpolation on XY Plane

Tips: This is my homework of “Computer Control System” course, so mistakes do happen.

This article will discuss an interpolation algorithms for line and circular. And it provides an implement of C language.

Interpolation Algorithms

Many numerical control machines are powered by stepping motors. When a pulse is sent to a stepping motor, the stepping motor alters its position by a unit step. Two motors can be used to control the XY movements of an arm or tool over a working plane.

If the pulse are generated by a device which can remember or generate a specified train of pulses, repetitive operations such as grinding, painting, or cutting can be performed hunderds of times with virtually no variation. A microcomputer is an obvious choice to gernerate and remember the pulse.

Since stepper motors can move only in discrete steps, we must approximate the actual curve by a series of small XY motions. Many algorithms rely upon parametric functions such as sine and cosine to perform the necessary calculations. Parametric functions, however, typically require a high degree of numeric precision. Calculating sine and cosine values with a microcomputer can be too time-consuming to be useful in a realtime application.

The following two algorithms require no parametric functions. This makes them ideally suited to the
computation and memory capacities of microcomputers. Since these algorithms do not require a large amount of complex mathematical calculation, they are fast enough to be used in real-time applications.

Read More

Kali Linux 以 root 用户运行 Chrome 和 VLC

需要了解的信息

  1. 有些应用之所以在 Kali Linux 下无法启动,是因为它们不允许以 root 用户的身份运行,通常,我们可以直接修改相应的二进制文件,将 getuid 改为 getppid,来达到我们的目的。不过这样破坏了安全性,也会因为软件的反复更新,而需要每次做重复的操作。

  2. 我们可以使用 gksu -u <username> <bin> 的方式来在终端以其他用户的身份启动应用。

  3. usr/share/applications 路径下陈列着应用菜单里相应的 .desktop 文件。其中 Exec 参数定义了执行的命令。

综述,我们可以创建一个普通的用户,并修改应用菜单执行命令,来达到在 root 桌面环境下方便地以其他用户身份运行应用的目的。

例:使用 Chrome

添加一个名为 normaluser 的用户:

1
useradd -m normaluser

此时,便可以用此用户运行 Chrome:

1
gksu -u normaluser google-chrome-stable

此外,编辑 /usr/share/applications 下的 google-chrome.desktopExec 参数改为:

1
gksu -u normaluser /usr/bin/google-chrome-stable %U

这样,我们便可以通过桌面图标启动 Chrome 了。

Read More

CentOS 7 下编译并安装 shadowsocks-libev 并启用 obfs 混淆

本文以 Vultr 购买的 CentOS 7 主机为例,详细介绍了编译并部署 shadowsocks-libev的方法,并分别说明了不使用 obfs 和使用 obfs 混淆的安装配置方法。建议以密钥的方式绑定主机并以此登录,注意保护好自己的密钥。注:示例命令均是在 root 用户下执行的。

准备工作

首先,更新系统:

1
yum update

为了防止被人暴力扫描破解登录密码,我们先对 Vultr 自动生成的密码进行重置:

1
passwd root

这里我个人使用了 256 位随机密码,包含特殊字符。

另外也可以安装 fail2ban 来禁止掉反复尝试登录的ip地址:

1
yum install fail2ban

启用 fail2ban :

1
systemctl enable fail2ban

Read More

搭建利用 obfs4 混淆的 Tor Bridge 的过程

本文最后更新于 2020 年 4 月 9 日


本文以 Debian 10 和 Ubuntu 18.04 为例,说明如何搭建 Tor Bridge。

请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,进行 Tor bridge 的搭建,并默认已按初始化配置文章对服务器进行了必要的安全配置。


Tor 的目的在其匿名性,众所周知,如果在特殊的网络环境下,想连接到 Tor 网络可能需要一个网桥,一般的网桥还不行,因为会被检测到 Tor 流量,ip 直接被 ban 掉。

Tor 的节点分为三种

  1. 作为出口节点,Exit Relays 。出口节点实际上是暴露于互联网的,相当于最后真正去访问站点的那个人。

  2. 在 Tor directory 中列出的中继节点,叫 Middle Relays 。IP 很可能被检测到,很可能被屏蔽。

  3. 在 Tor directory 中不列出的中继节点,叫 Bridges ,也就是我们这篇文章重点介绍的节点。它可以帮助你绕过网络运营商对于 Tor 的封锁。

混淆插件

在过去的几年中,审查者开始可以屏蔽即使使用了 Bridges 的 Tor clients 。故,在严格审查的环境下,我们应该使用混淆插件进行规避,比如 meek,比如 obfs4,在这里,将着重介绍如何使用 obfs4 。

VPS 对于 Tor 的支持

并非所有 VPS 商都允许使用 Tor,所以应该事先了解政策支持情况,下面表格列出了常用的 VPS 支持情况:

VPSBridgesRelayExit
DigitalOceanYESYESNO
VultrYESYESNO
LinodeYESYESAmbiguous

获取更多信息,可以参考支持 / 封禁列表

Read More

树莓派定时控制散热风扇开关

硬件上

一、思路: GPIO 给三极管基极信号

使用三极管组成开关电路。以 S9013 为例,S9013 是 NPN 型三极管。关于 NPN 型三极管,S9013 的特性如下:

NPN 基极高电压,极电极与发射极短路。低电压,极电极与发射极开路。也就是不工作。

二、接线

相关电路图如下:

S9013

连接电路图

连接引脚图

软件上

一、GPIO 简单使用

首先看一些例程:

1.GPIO 输出

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-  
import RPi.GPIO as GPIO
import time
# BOARD 编号方式,基于插座引脚编号
GPIO.setmode(GPIO.BOARD)
# 输出模式
GPIO.setup(11, GPIO.OUT)

while True:
GPIO.output(11, GPIO.HIGH)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
time.sleep(1)

Read More