Install yaml plugin to logstash

In fact, the easiest way to install yaml filter plugin is to run:

sudo -u logstash ./bin/logstash-plugin install logstash-filter-yaml

But because of the network problem, I can’t connect to ruby-gems site, whether I use a proxy or not, the command always shows the warning below:

So I have to build the plugin by myself then install the plugin. If you meet with the same problem with me, you can following the instruction below.

Download the latest release from github: https://github.com/logstash-plugins/logstash-filter-yaml/releases

Copy the link of the zip file, download to your server… Read the rest

CSS秘密花园:磨砂玻璃效果

CSS Secrets》是@Lea Verou最新著作,这本书讲解了有关于CSS中一些小秘密。是一本CSSer值得一读的一本书,经过一段时间的阅读,我、@南北@彦子一起将在W3cplus发布一系列相关的读后感,与大家一起分享。

CSS Secrets

问题

半透明颜色的一种应用是,使用它们作为背景。在照片或者颜色比较复杂的背景下,通过降低对比度,提高文本的可读性。结果非常有效,但是阅读起来仍然不是那么好,特别是非常低透明度的颜色或非常杂乱的背景的情况下。比如说,看看下图效果:

磨砂玻璃效果

其主要元素有一个半透明的白色背景,HTML如下:

<main<blockquote“The only way to get rid of a temptation[…]”
        <footer—
            <citeOscar Wilde,
                The Picture of Dorian Gray
            </cite</footer</blockquote</main

CSS代码如下(不相关的内容就不再赘述):

body {
    background: url("tiger.jpg") 0 / cover fixed;
}
main {
    background: hsla(0,0%,100%,.3);
Read the rest

mongodb 版本升级后数据兼容

mongodb 升级需要在两个相近版本之间进行。如 3.2 无法直接升级到 4.0,需要从 3.2 到 3.4,从 3.4 到 3.6,从 3.6 到 4.0 之间逐个升级。

相邻版本逐个升级,需要多次安装、卸载 mongodb 版本,安装卸载可能需要比较繁琐的操作。所以我推荐使用 docker 挂载数据目录进行升级。

mongodb 典型的数据被配置在 /var/lib/mongodb 目录下。在数据升级前,记得首先备份数据:

cp -R /var/lib/mongodb /tmp/mongdb

安装 docker 的方法可以参考这篇文章:

使用 Docker 安装 mongodb

可以使用下面的命令安装某个版本的 mongodb。可以安装的版本号可以参考 https://github.com/docker-library/mongo 中的几个版本号。

docker pull mongo:3.6.0

mongodb 从 3.4 升级到 3.6

运行如下命令,使用当前已有的数据启动 mongodb 3.4:

docker run -p 27017:27017 -v /var/lib/mongodb:/data/db --rm mongo:3.4.0

开启另一… Read the rest

ubuntu 安装 cuda 支持 GTX 1080ti

安装显卡驱动

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install nvidia-driver-418

安装后运行 nvidia-smi 可以检测是否安装成功。如果现实 Failed to initialize NVML: Driver/library version mismatch,可以尝试重启计算机。

安装 cuda

下载 cuda 安装包 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64 。在其中选择 linux ubuntu 使用的版本,下载 .deb(local) 包。

选择安装包后,页面下方会显示安装指导,如:

如果运行 apt-get install cuda 时显示匹配的 nvidia 驱动版本不对,则需要安装指定版本的显卡驱动。… Read the rest

ubuntu 挂载 exfat 分区

在 ubuntu 挂载 exfat 分区时,会出现如下错误:

sudo mount /dev/sdd1 /mnt/u1                                                                                
mount: /mnt/u1: unknown filesystem type 'exfat'.

这时,需要运行以下命令,安装可以让 mount 程序识别 exfat 格式的程序:

sudo apt install exfat-fuse exfat-utils

Read the rest

privoxy 通过 sslocal 提供 http 代理

配置 sslocal 服务

安装 shadowsocks:sudo pip install shadowsocks。运行 shadowsocks 会常出现错误,这时候找到报错对的文件 openssl.py,按下述修复文件。

打开 site-packages/shadowsocks/crypto/openssl.py,将文件中的 cleanup 单词改成 reset。

创建服务脚本 /etc/systemd/system/sslocal.service,内容为:

[Unit]
Description=shadowsocks client

[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/anaconda3/bin/sslocal -c /etc/shadowsocks/client.json
Restart=always
WorkingDirectory=/

[Install]
WantedBy=multi-user.target

运行 sudo systemctl start sslocal.service

配置 privoxy 服务

sudo apt install privoxy
echo 'forward-socks5
Read the rest

使用多进程加速 make 的编译过程

make 默认会以单进程执行 gcc 编译程序,但是编译的代码文件稍微多一些,编译的速度会很慢。如果运行的机器有多个 CPU 多个核,就可以借助多个进程同时编译来减小编译时间。

很简单,在 make 是,加上 -j10 的参数即可,其中 10 为编译进程数量,一般设置为 CPU 核数一样。

仅仅知道这些是不够的,对于一些没有直接运行 make 的场景,如 Dockerfile 在 build 过程中,调用了其它脚本,其中包含 make 命令,但是又不方便修改脚本,这时,可以在 Dockerfile 运行时,添加环境变量 MAKEFLAGS=-j10,在 make 时,就会自动加上 -j10 的参数了。

从 docker-compose.yml 传入环境变量到 Dockerfile 可以参考:

Read the rest

Squid 缓存相关配置和日志查看

在 ubuntu 18.04 中,squid 的配置文件默认位置为:/etc/squid/squid.conf,访问日志默认保存在 /var/log/squid/access.log

缓存配置

cache_dir aufs /var/spool/squid 100000 16 256
cache_mem 1024 MB
maximum_object_size_in_memory 2 MB
maximum_object_size 80 MB

cache_dir 后面的参数非常重要,其中 100000 说明可以分配硬盘上 100GB 的空间用于保存缓存。默认情况下只有 100MB,所以会发现之前的缓存没有生效,因为超出 100MB 后,会用 LRU 的策略清除缓存。

maximum_object_size 参数也比较重要,有时候文件没有缓存,是因为这个值太小了,导致稍微大一些的文件就没有被缓存,需要重新下载。

权限配置

squid 默认只限本地访问,如果需要其它机器访问,需要指定可访问的机器的 IP。首先,需要找到 http_access deny all 这一行,在这一行前面添加:

acl permittedips src 192.168.0.0/16
acl permittedips
Read the rest