Nginx设置目录密码认证访问

添加nginx地址匹配规则

location ^~ /encrypt/{
        auth_basic "Authorized users only";
        auth_basic_user_file /home/.htpasswd;
}

安装apache2-utils以使用htpasswd命令来生成哈希密码文件
apt install apache2-utils

htpasswd -bdc .htpasswd username password

大功告成,记得 nginx -s reload

ubuntu16 安装 phantomjs 给网站截图

安装无头浏览器
apt install phantomjs

模拟窗口终端

运行phantomjs报错

QXcbConnection: Could not connect to display

PhantomJS has crashed. Please read the bug reporting guide at

<http://phantomjs.org/bug-reporting.html> and file a bug report.

Aborted

因为无头浏览器需要窗口渲染,使用QT_QPA_PLATFORM=offscreen虽然可以,但是却会无法渲染字体。
所以需要安装xvfb,使用xvfb-run来运行phantomjs

apt install xvfb

安装/上传字体

mkdir /usr/share/fonts/xpfonts

然后用scp把windows的字体上传上去

simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式

我只传了前5个。就可以显示中文了。

更新字体缓存

cd xpfonts
mkfontscale
mkfontdir
fc-cache

截图
新建一个snapshot.js文件,内容为

var page = require('webpage').create(),
    system = require('system'),
    address, filename;

if (system.args.length !== 3) {
    console.log('Usage: loadspeed.js <some URL> <Filename>');
    phantom.exit();

}

address = system.args[1];
filename = system.args[2];

page.open(address, function (status) {
    if (status !== 'success') {
        console.log('FAIL to load the address');
    } else {
        window.setTimeout(function () {
            page.render(filename);
            phantom.exit();
        }, 200);
    }
});

大功告成,运行xvfb-run phantomjs snapshot.js http://www.baidu.com baidu1.jpg
然后查看效果即可

linux自动挂载USB设备

通过给linux下的设备管理服务udev添加规则配置文件,可以实现命令行下USB存储设备自动挂载。

编辑文件/etc/udev/rules.d/10-usbstorage.rules

输入

KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_options}="relatime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" 
LABEL="media_by_label_auto_mount_end"

保存退出,再次插入usb存储设备会自动挂载到/media目录下面的目录 并且支持utf8格式的中文文件名。

参考:
树莓派USB存储设备自动挂载 | 树莓派实验室
添加Udev规则,让Linux自动挂载U盘(转载) - 陈建的专栏 - CSDN博客

如何匿名开发软件

这篇文章是从英文机器翻译,以消除我们的写作风格,这可能用于弄清楚我们是谁。

如何匿名开发软件

可能有些人会希望以尽可能匿名的方式开发和发布软件。我们不会指出特定的情况,但你可以明白我们在说什么。特别是在最近发生的事情之后。

有成功的案例,人们以完全匿名的方式发布了颇受欢迎的软件。直到今天,没有人知道BitCoin的父亲Satoshi Nakamoto是谁。在2012年,有人接管了三万台设备并扫描了整个IPv4地址空间,没有人知道是谁做的。然而,随着近年来数据科学的发展,这样做日益困难。但我们认为这仍然是可能的。这里有一些技巧。

如果您认为我们错了,或者错过了一些点,请随时指出。

(当然,我们在这里谈论开源软件)

基础

无论您是匿名还是不匿名,这都是您应该做的事情:让您的帐户安全。

你应该确保没有人能够黑入你的帐户。这包括:

使用强密码
不要重复使用密码
始终使用安全连接(例如HTTPS)。
尽可能使用双因素身份验证。
还有更多,但我们不会列出所有这些。既然这是常识。

创建新账户

不要使用您现有的帐户!即使你认为你现在的帐户是匿名的。

相信我们,你错了。

使用新的电子邮件帐户创建一个新的GitHub帐户。如果可以,请使用Tor创建这些帐户。这也是我们的下一个观点。

您需要记住将此帐户与所有其他帐户分开。不要使用通常的电脑登录到这些帐户。

使用Tor

至少使用代理。首选公共代理。如果可以,请使用Tor。我们知道,Tor在一些国家被阻止,但总是有办法。

在使用代理时,请记住始终使用HTTPS。

安排你的活动

为了开发和发布软件,您需要执行大量的公共活动。推送提交,合并拉请求,关闭问题等。通过看每小时的活跃程度,至少可以看出你的时区很简单。你不希望发生这种情况。

安排您的操作(如果不存在,请自己制造工具),以便它们在一天内均匀分布。

不要与您的用户沟通

这可能听起来很极端,但你说的越多,泄漏的信息越多。所以不要和你的用户沟通。社交网络肯定是出局的。甚至不回复GitHub上的问题。如果你必须,请使用短语,如“已修复”,“不会修复”。

当你需要写一个发行说明时,用另一种语言编写,机器翻译成你想要的语言。就像我们在这里做的一样

不要自己成为你的第一个用户

如果您正在开发的软件是面向网络,请不要成为您自己的第一个用户。偏执狂始终假设所有的网络流量将被记录。您的软件的网络流量可能是可识别的。如果有人发现您的电脑是第一个产生这种流量的电脑,他们会找到你。

结论

记住,你必须要小心所有的时间。 即使是一个错误也可以暴露你的身份。

我们从来没有说过这将很容易。

参考:a.md - gist.github.com

开启TCP BBR拥塞控制算法

1 下载最新内核 4.9+
Kernel/LTSEnablementStack - Ubuntu Wiki
更新完内核如果 uname -r 看见没有变化,说明需要 reboot 一下

2 开启bbr
执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行以下代码添加内核模块

modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存生效

sysctl -p

执行以下命令来验证

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有 bbr, 则证明你的内核已开启 bbr

执行 lsmod | grep bbr, 看到有 tcp_bbr 模块即说明 bbr 已启动

另外,阿里云的专用网络,因为网卡是nat的内网,所以bbr不会有效果。ip addr 看到的只是内网地址的话,就是专用网络

参考:开启TCP BBR拥塞控制算法 · iMeiji/shadowsocks_install Wiki