Magic Mouse 移动慢的解决方法

Microsoft Designer Mouse的滚轮如网上传说的那样断了,忍了一个月,实在受不了了,咬牙新入手了Magic Mouse 2,结果发现移动特别慢,即使在偏好设置中设成最快,也还是慢的无法接受。

解决方法只需控制台执行如下命令:

defaults write -g com.apple.mouse.scaling 7

这个值可以任意设置,最大值多少不清楚,不过自己测下来7刚刚好

可以用以下命令来获取当前值:

defaults read -g com.apple.mouse.scaling

MegaCli用法总结

网上的都不全,还是得自己来
1. 获取物理盘的信息,这里只拿了enclosure device id, slot, model,size, interface type 5个最主要的属性,并以空行分割每一个盘,显的清晰很多

MegaCli -PDList -aAll -NoLog | grep -Ei "(enclosure device|slot|raw size|Inquiry|pd type|^$)"|awk '!NF {if (++n == 2) print; next}; {n=0;print}'

输出效果:

Enclosure Device ID: 21
Slot Number: 3
Drive's position: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 1
PD Type: SAS
Raw Size: 2.728 TB [0x15d50a3b0 Sectors]
Inquiry Data: HGST HUS724030ALS640 A280P9JEAYEW

Enclosure Device ID: 21
Slot Number: 5
Enclosure position: 1
PD Type: SATA
Raw Size: 167.680 GB [0x14f5c830 Sectors]
Inquiry Data: CVTR622300Y1180BGN INTEL SSDSC2BF180A5H RSED LUDi

2. 获取所有虚拟磁盘,即已经做为RAID 成员的磁盘信息

MegaCli -LdPDInfo -aAll -NoLog | grep -Ei "(enclosure device|slot|raw size|Inquiry|pd type|s position|^$)"|awk '!NF {if (++n == 2) print; next}; {n=0;print}'

输出效果,其中drive’s position表明了该磁盘所在的磁盘组ID:

Enclosure Device ID: 21
Slot Number: 3
Drive's position: DiskGroup: 0, Span: 0, Arm: 0
PD Type: SAS
Raw Size: 2.728 TB [0x15d50a3b0 Sectors]
Inquiry Data: HGST    HUS724030ALS640 A280P9JEAYEW

Enclosure Device ID: 21
Slot Number: 9
Drive's position: DiskGroup: 0, Span: 0, Arm: 1
PD Type: SAS
Raw Size: 2.728 TB [0x15d50a3b0 Sectors]
Inquiry Data: HGST    HUS724030ALS640 A280P9JGL2KW

3. 点亮和熄灭位置灯

MegaCli -PdLocate -start -PhysDrv [21:3]
MegaCli -PdLocate -stop -PhysDrv [21:3]

4. 创建logic drive

MegaCli -CfgLdAdd -r0[21:3,21:9] -Hsp[21:12] WB RA Direct Cached CachedBadBBU -strpsz64 -a0 -NoLog

-r{int}[{devices}] 代表RAID level, 后面的表示成员全用E:S,E:S的形式组合
-Hsp[{drives}] 非必须 代表热备盘,格式也是E:S,E:S的形式组合
WB 代表write back, 非必须 也可以是WT代表write though
RA 代表read ahead, 非必须 也可以是NORA,ADRA
Cached 代表缓存策略,非必须 也可以是Direct

5. 修改logic drive的RAID level

MegaCli -LDRecon -Start -r5 -L0 -a0

-L{int} Logic ID
-r{int} 转为的RAID Level

由于容量会发生变化,因此需要重新rescan一下,如果已有文件系统则需要同步扩

echo 1 > /sys/block/sda/device/rescan

6. 扩客(加盘)

MegaCli -LDRecon -Start -r5 -Add -PhysDrv[21:13] -L0 -a0

-L{int} Logic ID
-r{int} RAID Level
-PhysDrv[{drives}] 添加的磁盘,格式也是E:S,E:S的形式组合

使用docker-compose快速搭建安全的私有Secure Registry

google/baidu上上有很多快速搭建Docker Registry的文章,都无法绕开认证问题,解决方法其实都是work around的采用–insecure-registry选项,也就是通过不使用安全的HTTPS-TLS方式来暂时绕过这个问题。

完美主义者不能接受这样的结果。我们要么不搭private registry要搭建就是得是完整的直接可以push的。

1,获取证书
Let’s Encrypt 是目前我觉得最好的免费证书。申请也十分容易直接命令行操作即可。要求就是有公网的IP,liunux系统,有域名,这些个我相信对于大多数想将retistry暴露在公网来使用的人来说不是问题。

获取证书

git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt
sudo ./letsencrypt-auto certonly

这里使用certonly代表我们只是去获取证书而不安装。
这是一个交互的过程

./letsencrypt-auto certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Plugins selected: Authenticator standalone, Installer None
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel): domain.com

第一处选择standlone,代表没有实际的网站在运行,80和443端品是非服务状态。
第二处写自己的域名,在后面的过程中letsencrypt会访问这个域名的80和443端口,如果有response则会报错。

生成的证书文件会在/etc/letsencrypt/archive/[domain]/
共生成4个文件

ls /etc/letsencrypt/archive/domain.com/
cert1.pem chain1.pem fullchain1.pem privkey1.pem

2,搭建registry

mkdir -p registry/data
mkdir -p registry/certs

首先把刚生成的证书文件fullchain1.pem和privkey1.pem复制出来,并重命令到registry的certs目录

cp /etc/letsencrypt/archive/domain.com/fullchain* registry/certs/domain.com.crt
cp /etc/letsencrypt/archive/domain.com/privkey* registry/certs/domain.com.key

编写docker-compose.yml

version: "3.7"
services:
  registry:
    image: registry:2.7.1
    restart: always
    container_name: registry
    environment:
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.com.crt
      - REGISTRY_HTTP_TLS_KEY=/certs/domain.com.key
    ports:
      - "5000:5000"
    volumes:
      - $PWD/registry/data/:/var/lib/registry:rw
      - $PWD/registry/certs:/certs:ro

执行docker-compose创建image和container

docker-compose up -d

3,验证

openssl s_client -showcerts -verify 32 -connect domain.com:5000

没有任何error字样即为OK

然后就可以push了~ ^_^

Mac OSX清除dns缓存

每当更新dnspod中的域名解析信息后,macbook ping的返回总还是原IP,但发现的机器已经解析正常了,原因是osx有dns缓存

使用以下命令可以解决:

sudo killall -HUP mDNSResponder;say DNS cache has been flushed

Raspberry PI中创建基于蓝牙的个人区域网络PAN

使用树莓派有一个需求: 在新环境中当树莓派还没有连接到无线网络时,如何通过蓝牙连接设备并进行管理,从而可以配置Wifi。

网上有好多关于 TCP/IP over Bluetooth 的文章,但都有一些问题,经过中践,总结如下配置方法

1,安装bluez-tool

sudo apt-get install bluez-tools

2,配置,我这边写了个简单的shell,主要就是生成几个unit-file并Enable 一些命名可以自定义修改,IP也可以修改.

#!/bin/sh

cat > /etc/systemd/network/pan0.netdev <<EOF
[NetDev]
Name=pan0
Kind=bridge
EOF

cat > /etc/systemd/network/pan0.network <<EOF
[Match]
Name=pan0

[Network]
Address=172.20.1.1/24
DHCPServer=yes
EOF

cat > /etc/systemd/system/bt-agent.service <<EOF

[Unit]
Description=Bluetooth Auth Agent

[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple

[Install]
WantedBy=multi-user.target
EOF

cat > /etc/systemd/system/bt-network.service <<EOF

[Unit]
Description=Bluetooth NEP PAN
After=pan0.network

[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple

[Install]
WantedBy=multi-user.target
EOF

systemctl enable systemd-networkd
systemctl enable bt-agent
systemctl enable bt-network
systemctl start systemd-networkd
systemctl start bt-agent
systemctl start bt-network

3,匹配连接

discoverable设为1,当然你也可以使用bluetoothctl来进行初次配对。

sudo bt-adapter --set Discoverable 1

成功后即可加入到PAN,并获得相应的IP对PI进行管理,SSH,FTP等等就随意了

Windows环境中升级希捷硬盘固件

这里有一个前提就是你的磁盘不能是你的系统盘哦~~

步骤如下:

1,你需要知道你当前硬盘的固件版本和序列号

可以使用诸如CrystalDiskInfo这样的工具

2,去希捷官网找到对应的固件

访问https://apps1.seagate.com/downloads/request.html,输入上一步获得的序列号等信息

并确认有新的固件且比当前固件新

3,下载该固件并解压,可以看到有三个目录

bootable tools

command line tools

firmware

既然我们是windows上直接刷,那么也就只会用到后两个目录

4,使用管理员方式打开控制台

D:\ConstellationES3-Megalodon-STD-SATA-512N-SN07\command line tools\SeaChest>SeaChest_Firmware_232_1132_32.exe --scan

这里的文件位置需改为你的路径,command line tools里面会有SeaChest_Firmware_232_1132_32.exe和SeaChest_Firmware_232_1132_64.exe,我明明是64位系统不知道为什么只能运行32位的

这一步是为了确认你的磁盘的Handle号,输出如下:

===============================================================================
 SeaChest_Firmware - Seagate drive utilities
 Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved
 SeaChest_Firmware Version: 2.3.2-1_13_2 X86
 Build Date: Mar  8 2017
 Today: Sat Oct 06 23:27:29 2018
===============================================================================
Vendor   Handle       Model Number            Serial Number          FwRev
SATA     PD0          PLEXTOR PX-128M6S       XXXXXXXX           1.01
SATA     PD1          ST31000528AS            XXXXXXXX               CC44
SATA     PD2          ST4000NM0055-7ZZ231     XXXXXXXX               SN04
Seagate  PD3          Expansion               XXXXXXXX               0707

我们需要确认的就是你所想升级的磁盘的Handle号,后面会用到

5,升级firmware固件

D:\ConstellationES3-Megalodon-STD-SATA-512N-SN07\command line tools\SeaChest>SeaChest_Firmware_232_1132_32.exe   -d PD2 --downloadFW D:\ConstellationES3-Megalodon-STD-SATA-512N-SN07\firmware\xxxx.lod

注意这里的handle千万不能输错哦

===============================================================================
 SeaChest_Firmware - Seagate drive utilities
 Copyright (c) 2017 Seagate Technology LLC, All Rights Reserved
 SeaChest_Firmware Version: 2.3.2-1_13_2 X86
 Build Date: Mar  8 2017
 Today: Sat Oct 06 23:29:49 2018
===============================================================================

.......................................................
Firmware Download successful
Firmware Download time (s): 21.86
Average time/segment  (ms): 397.23
Activate Time          (s): 10.33
New firmware version is SN07

到这里就完成了,之后你再用CrystalDiskInfo查看就会发现你的硬盘已经升级成功了。

是不是噪音变小了,是不是性能快了,谁知道呢!

使用awk命令,并设定分割符为2个或以上的空格

因为要parse smbstatus的输出

117873  nobody       nobody       myhomepc (ipv4:192.168.199.2:62084)  SMB3_02

因为myhompc (ipv4:192.168.199.2:62084) 归属于同一项machine, 如果简单用awk会将其分割为两列

如果-F 直接指定为’  ‘则会产生多个多余的列,因为前面nobody之间,有多个空格

因此我们的分割条件就变为了两个或以上的空格

本以为只能通过脚本来实现,结果一查发现awk竟然直接支持

awk -F '[[:space:]][[:space:]][[:space:]]*'

 

在Flask/Jinja2 的template 中调用公共的函数

python :

@main.context_processor
def utility_processor():
    def mytest(text):
        return "<b>%s</b>" % text
    return dict(mytest=mytest)

template:

{{ mytest('123') }}

但你会发现页面显示的是包含tag的123,并没有转化为我们想要的加粗效果

修改为:

{{ mytest('123') | safe }}

搞定收工