DuckDB导入导出Excel数据

DuckDB导入Excel数据

DuckDB支持从Excel导入数据,但只支持.xlsx,不支持.xls。如果原始数据是.xls就需要用excel2007及以上版本打开重新保存为.xlsx格式。

DuckDB导入excel工作表

select语句中使用read_xlsx函数读取excel文件,默认读取第一个sheet。

SELECT * FROM read_xlsx('test.xlsx');

方便的是,可以省略read_xlsx函数,DuckDB也会自适应判断文件类型进行读取。

SELECT * FROM 'test.xlsx';

read_xlsx函数有许多参数可自定义,如sheet参数可指定工作表名称。

SELECT * FROM read_xlsx('test.xlsx', sheet = 'Sheet2');

DuckDB导入excel指定范围数据

下面实例使用range参数,指定A1:B2范围数据,A1为左上角单元格,B2为右下角单元格。

SELECT * FROM read_xlsx('test.xlsx', range = 'A1:B2');

下面实例表示跳过前5行

SELECT * FROM read_xlsx('test.xlsx', range = 'A5:Z');

下面实例表示跳过前5列

SELECT * FROM read_xlsx('test.xlsx', range = 'E:Z');

默认情况下,如果没有指定范围,当遇到空行时,DuckDB将停止读取Excel文件。但是当提供了一个范围时,默认是读取到范围的末尾。

以上行为可以通过stop_at_empty参数来控制:

-- 读取前100行,或直到遇到第一个空行,以先到者为准
SELECT * FROM read_xlsx('test.xlsx', range = '1:100', stop_at_empty = true);

-- 始终读取整个工作表即使它包含空行
SELECT * FROM read_xlsx('test.xlsx', stop_at_empty = false);

DuckDB读取excel并创建新表

以下实例表示读取test.xlsx文件中的Sheet2工作表,并创建名为newtb的新表。

CREATE TABLE newtb AS 
  SELECT * FROM read_xlsx('test.xlsx', sheet = 'Sheet2');

DuckDB读取excel并插入已有表

以下表示读取test.xlsx中的Sheet2并将数据插入oldtb表。

INSERT INTO oldtb
  SELECT * FROM read_xlsx('test.xlsx', sheet = 'Sheet2');

或者使用copy也可以插入数据

COPY oldtb FROM 'test.xlsx' (FORMAT xlsx, SHEET 'Sheet2');

使用COPY语句将Excel文件插入到现有表中时,目标表中列的类型将强制为Excel工作表中单元格的类型。

导入数据时设置是否包含header

SELECT * FROM read_xlsx('test.xlsx', header = true);

默认情况下,如果第一行中的所有单元格都是非空字符,则第一行将被视为header。要禁用此行为,请将header设置为false

数据类型检测

导入数据时,DuckDB会自动检测导入列数据类型。

  • 单元格如果是数字的话,可能匹配为TIMESTAMP , TIME , DATEBOOLEAN 类型。
  • 包含TRUEFALSE 的文本单元格可能匹配为 BOOLEAN 类型。
  • 默认情况下,空单元格的类型为DOUBLE
  • 其他情况,根据单元格的内容推断为 VARCHARDOUBLE

还可以通过设置 empty_as_varchar参数来控制空单元格类型检测方式。

使用Turnkey File Server镜像快速部署NAS文件服务

TurnkeyLinux出了一款File Server的安装镜像,是基于debian的文件服务器系统,通过安装他可以快速部署NAS系统,实现Samba/sftp/WebDAV/NFS/Webshell/Webmin功能。

以下是官方的说明

File Server - 简单NAS网络附加存储

一个易于使用的文件服务器,将兼容Windows的网络文件共享与基于Web的文件管理器相结合。TurnKey File Server 包括对 SMB、FTP、SFTP、NFS、WebDAV 和 rsync 文件传输协议的支持。服务器配置为允许服务器用户管理私有或公共存储中的文件。基于 Samba 和 WebDAV CGI。

安装Turnkey File Server

从这里下载Turnkey File Server镜像文件(ISO),下面是在虚拟机中安装的过程gif

Turnkey File Server安装全过程

磁盘分区我这里选择 Guided-use entire disk,安装完成后按提示设置 Root Password 方便后期访问,最后一步是提示管理访问地址,如下图所示。

服务管理地址

Turnkey File Server服务管理

SSH

使用root@ip登录服务器,首次登录信息如下:

Welcome to Fileserver, TurnKey GNU/Linux 18.0 (Debian 12/Bookworm)

  System information for Tue Jun 03 06:41:21 2025 (UTC+0000)

    System load:  0.13              Memory usage:  12.2%
    Processes:    125               Swap usage:    4.2%
    Usage of /:   30.0% of 9.75GB   IP address for eth0: 172.31.45.211

  TKLBAM (Backup and Migration):  NOT INITIALIZED

    To initialize TKLBAM, run the "tklbam-init" command to link this
    system to your TurnKey Hub account. For details see the man page or
    go to:

        https://www.turnkeylinux.org/tklbam


    For Advanced commandline config run:    confconsole

  For more info see: https://www.turnkeylinux.org/docs/confconsole

Linux fileserver 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
root@fileserver ~#

输入confconsole可以进入系统设置,可配置项如下:

NekoBoxForAndroid配置Hysteria2

服务器安装Hysteria2

root@bwg:~# bash <(curl -fsSL https://get.hy2.sh/)
Checking for installed version ... not installed
Checking for latest version ... v2.1.1
Downloading hysteria binary: https://github.com/apernet/hysteria/releases/download/app/v2.1.1/hysteria-linux-amd64 ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 13.0M  100 13.0M    0     0  15.4M      0 --:--:-- --:--:-- --:--:-- 36.0M
Installing hysteria executable ... ok
Install /etc/hysteria/config.yaml ... ok
Creating user hysteria ... ok
Install /etc/systemd/system/hysteria-server.service ... ok
Install /etc/systemd/system/[email protected] ... ok

Congratulation! Hysteria 2 has been successfully installed on your server.

What's next?

        + Take a look at the differences between Hysteria 2 and Hysteria 1 at https://hysteria.network/docs/misc/2-vs-1/
        + Check out the quick server config guide at https://hysteria.network/docs/getting-started/Server/
        + Edit server config file at /etc/hysteria/config.yaml
        + Start your hysteria server with systemctl start hysteria-server.service
        + Configure hysteria start on system boot with systemctl enable hysteria-server.service

配置文件/etc/hysteria/config.yaml示例如下:

KDE neon live镜像用户密码修改

KDE Neon live镜像默认用户名为neon,密码为空。

但超时锁屏后,neon用户无法使用空密码登录。

这时候可以使用Alt+F3切换sesseion,在cli模式下用空密码登录neon账号,然后使用passwd neon修改密码。

完成后使用Alt+F1切换回桌面session,然后使用修改后的密码登录即可。

修改grub配置文件

对于安装多系统的主机来说,有时需要修改grub配置来进行一些个性化定制。

最新版的grub配置文件位于/etc/default/grub,我们可以对其进行修改,然后再使用grub-mkconfig命令来生成引导配置。

以下是一个/etc/default/grub文件实例

# 启动菜单显示时间,这里是3秒
GRUB_TIMEOUT=3    
# 系统标识名,这里使用sed命令来生成
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
# 默认启动项,这里是3,序号从0开始排,本机0是fedora,3是windows
GRUB_DEFAULT=3
# 禁用子菜单,所有选项同级菜单显示
GRUB_DISABLE_SUBMENU=true
# 输出设备,这里为本机终端console
GRUB_TERMINAL_OUTPUT="console"
# linux内核附带参数
GRUB_CMDLINE_LINUX="resume=UUID=c0821d08-d462-46b9-b56b-40105a046cdf rhgb quiet"
# 禁用显示恢复模式
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

按需修改完/etc/default/grub后,就可以使用grub-mkconfig命令来生成引导配置

bbq@op36:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

有的系统使用的是grub2-mkconfig命令,配置文件为/boot/grub2/grub.cfg

debian修改主机名的几种方法

通过hostname命令修改主机名

使用hostname命令来查看/修改主机名

#查看当前主机名
➜  ~ hostname 
tkvm
#修改为新名字box
➜  ~ hostname box
➜  ~ hostname
box

以上修改的主机名是临时的,重启后还会恢复。如果需要永久修改,还需要编辑/etc/hostname/etc/hosts两个文件。

#将/etc/hostname中的字符改为新名称
➜  ~ cat /etc/hostname
box
#将/etc/hosts中127.0.1.1后面的字符改为新名称
➜  ~ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       box

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

通过如上修改后,主机名将永久变更为新的名称。

通过hostnamectl命令修改主机名

新的debian基于systemd进行管理,systemd提供了一个hostnamectl命令可以方便的进行主机名管理。

#使用hostnamectl查看当前主机信息
➜  ~ hostnamectl
 Static hostname: bbq
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: 5e07831af04e410dbce86f486718a532
         Boot ID: a7b7b947133943c994e7b1bbbee3b95a
  Virtualization: kvm
Operating System: Debian GNU/Linux 12 (bookworm)
          Kernel: Linux 6.1.0-32-amd64
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _i440FX + PIIX, 1996_
Firmware Version: 1.16.2-debian-1.16.2-1

#修改新主机名
➜  ~ hostnamectl set-hostname tkvm
#检查修改结果
➜  ~ hostnamectl
 Static hostname: tkvm
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: 5e07831af04e410dbce86f486718a532
         Boot ID: a7b7b947133943c994e7b1bbbee3b95a
  Virtualization: kvm
Operating System: Debian GNU/Linux 12 (bookworm)
          Kernel: Linux 6.1.0-32-amd64
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _i440FX + PIIX, 1996_
Firmware Version: 1.16.2-debian-1.16.2-1

可以看出使用hostnamectl可以方便的进行主机名更改,省去了手动修改/etc/hostname/etc/hosts两个文件的麻烦。

vps配置jupyterlab远程访问服务

撸了个小鸡鸡,打算用来做jupyter server,在此记录下此次配置全过程。

安装JupyterLab

# 更新系统
apt update&&apt upgrade -y

# 安装python
apt install python3

#安装JpyterLab和中文语言

pip3 install jupyterlab jupyterlab-language-pack-zh-CN

配置jupyterlab

生成配置文件,存放路径为.jupyter/jupyter_lab_config.py

root@hcss-ecs-279f:~# jupyter lab --generate-config
Writing default config to: /root/.jupyter/jupyter_lab_config.py

编辑配置文件vi .jupyter/jupyter_lab_config.py,参考以下配置

# 允许任意IP访问
c.ServerApp.allow_origin = '*'
c.ServerApp.ip = '0.0.0.0'
# 自定义端口号
c.ServerApp.port = 8888
# 允许root运行
c.ServerApp.allow_root = True

下来设置访问密码

root@hcss-ecs-279f:~# jupyter lab password
Enter password:
Verify password:
[JupyterPasswordApp] Wrote hashed password to /root/.jupyter/jupyter_server_config.json

然后就可以使用jupyter lab来运行服务。

root@hcss-ecs-279f:~# jupyter lab
... ...
[I 2025-04-10 10:41:35.533 ServerApp] jupyterlab | extension was successfully loaded.
[I 2025-04-10 10:41:35.536 ServerApp] notebook | extension was successfully loaded.
[I 2025-04-10 10:41:35.537 ServerApp] Serving notebooks from local directory: /root
[I 2025-04-10 10:41:35.537 ServerApp] Jupyter Server 2.15.0 is running at:
[I 2025-04-10 10:41:35.537 ServerApp] http://hcss-ecs-279f:9876/lab
[I 2025-04-10 10:41:35.537 ServerApp]     http://127.0.0.1:9876/lab
... ...

按提示通过IP:9876方式来远程访问JupyterLab服务即可。

screen使用详解

Screen是一个全屏窗口管理器,它在多个进程之间多路复用物理终端。每个虚拟终端都提供DEC VT100终端的功能,此外,还提供 ANSI X3.64 (ISO 6429) 和 ISO 2022 标准的多项控制功能(例如,插入/删除行和支持多个字符集)。

每个虚拟终端都有一个回滚历史缓冲区和一个复制和粘贴机制,允许用户在窗口之间移动文本区域。当screen被调用时,它会创建一个带有 shell(或指定命令)的窗口,以便你可以像往常一样使用该程序。然后,您可以随时创建包含其他程序(包括更多 shell)的新(全屏)窗口、终止当前窗口、查看活动窗口列表、打开和关闭输出日志记录、在窗口之间复制文本、查看回滚历史记录、在窗口之间切换等。所有窗口都完全独立于彼此运行其程序。

安装screen

screen是默认的gun utils,很多linux系统默认都安装了,如果没有可使用如下命令安装

# debian based
apt install screen 
# redhat based
yum install screen
# or
dnf install screen

# 检查screen版本
root@hcss-ecs-279f:~# screen -v
Screen version 4.09.00 (GNU) 30-Jan-22

使用screen

使用screen命令不带任何参数即可新建打开一个session。

每个session都有如[pid.sessionname]的命名,其中pid为唯一生成的id,而默认生成的sessionname由tty和host名组成。

session有两种状态:

  • Attached 正在使用的激活态
  • Detached 后台运行的非激活态

如下,使用screen -ls查看session列表,会发现一个pid为1489名为pts-3.hcss-ecs-279f的session,状态为Attached。

root@hcss-ecs-279f:~# screen -ls
There is a screen on:
        1489.pts-3.hcss-ecs-279f        (04/09/2025 04:45:13 PM)        (Attached)
1 Socket in /run/screen/S-root.
root@hcss-ecs-279f:~#

命名session

为了便于管理,可以使用-S选项来指定session名称,如下新建了一个名为toby的session

Debian12安装fail2ban加固服务器安全

fail2ban 是一款用于保护服务器免受暴力破解攻击的工具,通过监控日志文件检测恶意行为,并自动触发防火墙规则封禁可疑 IP。

Debian12下安装fail2ban过程如下:

先安装必备软件

apt install git python3 python3-setuptools

从源码安装fail2ban

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install 

systemd设置fail2ban服务

cd fail2ban
cp ./build/fail2ban.service /etc/systemd/system/
systemctl enable fail2ban
systemctl start fail2ban

检查服务状态

root@box:~# systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/etc/systemd/system/fail2ban.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-04-08 02:54:18 CDT; 12min ago
       Docs: man:fail2ban(1)
    Process: 2066 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 2067 (fail2ban-server)
      Tasks: 3 (limit: 352)
     Memory: 12.8M
        CPU: 195ms
     CGroup: /system.slice/fail2ban.service
             `-2067 /usr/bin/python3 /usr/local/bin/fail2ban-server -xf start

Apr 08 02:54:18 box systemd[1]: Starting fail2ban.service - Fail2Ban Service...
Apr 08 02:54:18 box systemd[1]: Started fail2ban.service - Fail2Ban Service.
Apr 08 02:54:19 box fail2ban-server[2067]: Server ready

ssh配置实例,新建/etc/fail2ban/jail.local文件,内容如下:

tinc异地组网使用实例

tinc是一个组建虚拟专用网络(VPN)的工具,通过隧道及加密技术在互联网上点与点之间创建专有网络。tinc 在网络层工作,因此无需对现有软件进行修改和配置。其数据通讯经过加密和压缩,能避免敏感数据和隐私的泄露。

vps主机安装设置tinc

  • debian系统
  • 公网ip 12.23.34.45
  • vpn名称 bbq
  • vpn主机名 tcb
  • vpn ip 10.0.0.11

安装tinc

使用apt install tinc -y安装tinc

➜  ~ apt install tinc -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  liblzo2-2
The following NEW packages will be installed:
  liblzo2-2 tinc
0 upgraded, 2 newly installed, 0 to remove and 6 not upgraded.
Need to get 261 kB of archives.
After this operation, 831 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 liblzo2-2 amd64 2.10-2 [56.9 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 tinc amd64 1.0.36-2+b2 [204 kB]
Fetched 261 kB in 0s (2,189 kB/s)
Selecting previously unselected package liblzo2-2:amd64.
(Reading database ... 56790 files and directories currently installed.)
Preparing to unpack .../liblzo2-2_2.10-2_amd64.deb ...
Unpacking liblzo2-2:amd64 (2.10-2) ...
Selecting previously unselected package tinc.
Preparing to unpack .../tinc_1.0.36-2+b2_amd64.deb ...
Unpacking tinc (1.0.36-2+b2) ...
Setting up liblzo2-2:amd64 (2.10-2) ...
Setting up tinc (1.0.36-2+b2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/tinc.service → /lib/systemd/system/tinc.service.
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u9) ...

新建vpn配置目录

以vpn名称新建配置目录

访问磁盘阵列(RAID) 树莓派配置使用RAID阵列 第二弹

上次讲了如何在树莓派上组建配置磁盘阵列(RAID),这次介绍几种访问磁盘阵列(RAID)的方法。

  • 网络文件系统(NFS)挂载
  • Samba服务器共享
  • 文件传输协议(FTP)访问(例如,ProFTPD、vsftpd)

树莓派配置网络文件系统(NFS)访问磁盘阵列(RAID)

安装NFS服务

sudo apt-get install portmap
sudo apt-get install nfs-kernel-server

编辑配置文件 sudo vi /etc/exports

/mnt/raid *(rw,sync,no_root_squash)

启动NFS服务

sudo systemctl enable nfs-server
sudo systemctl start nfs-server

NFS客户端使用

Windows下挂载NFS

在程序设置中找到 打开或关闭Windows功能,将其中的 基于应用UNIX程序子系统的NFS服务 下的 NFS客户端管理工具,勾选安装启用。

然后就可以通过以下命令来挂载NFS目录

mount \\raspiIP\mnt\raid z:

Linux下挂载NFS需要安装nfs-commonportmap,然后使用如下命令挂载使用

sudo mount -t nfs raspiIP:/mnt/raid /mnt/mount_dir

树莓派配置Samba访问磁盘阵列(RAID)

首先安装Samba服务端

sudo apt install samba

为samba添加访问账号

sudo smbpasswd -a bbq

编辑配置文件 vi /etc/samba/smb.conf

[RASPI_RAID]
	comment = RaspiBerryPI_RAID
	path = /mnt/raid
	browseable = yes
	writable = yes
	guest ok = yes
	public = yes
	valid users = bbq
	create mask = 0777
	directory mask = 0777

Samba客户端使用非常方便,在网上邻居中找到即可访问。

树莓派配置使用RAID阵列 第一章

RAID存储系统可用作故障率较低的备份系统,搭建这样一个系统并非难事,与市面上的成品NAS系统相比,基于树莓派的软RAID系统成本相对较低,本文所采用的解决方案基于mdadm的软RAID。

选择使用软RAID而非硬RAID一个主要原因是,万一RAID控制器出现硬件故障,无需使用完全相同的RAID控制器,就能利用硬盘重新安装RAID且不丢失数据。此外,也能轻松更换主机硬件而不会丢失RAID中的所有数据。

本系列文章的第一部分将介绍软RAID组建的步骤,后续部分将介绍RAID的使用方法,以及诸如更换磁盘、RAID扩展等管理实例。

设置概述

本系统使用USB硬盘盒,USB硬盘盒价格相当便宜,但要记住为RAID选择硬盘时需挑选耐用型的例如,西部数据红盘增强版(Western Digital WD Red Plus)或希捷酷狼(Seagate Ironwolf)可能是不错的选择。由于固态硬盘(SSD)与机械硬盘相比,通常写入循环能力较低,所以不推荐使用。

作者使用的是2.5英寸的希捷酷鱼小硬盘,其最大容量可达2TB。容量更大的硬盘通常是3.5英寸,尺寸更大且更耐用。3.5英寸规格中也有专门的NAS硬盘(如希捷酷狼)可供选择。鉴于目标应用场景是备份系统,硬盘大多处于自旋停止模式,所以2.5英寸硬盘在7天24小时不间断运行的情况下,其使用寿命被认为是可以接受的。

2.5英寸硬盘还有一个优势,即功耗更低。配备4块硬盘(RAID 5)和ODROID N2+单板计算机(SBC)的系统,空闲时仅耗电10瓦,备份时耗电11瓦,硬盘自旋停止时耗电8瓦。

这些硬盘安装在梵泰克(Fantec)USB 3.0双盘盒中,并通过USB直接连接到ODROID N2 +。有源USB集线器仅为硬盘供电,以避免给ODROID主板带来过大的USB供电负担。

请注意,所使用的USB集线器的电源必须能够为USB驱动器供电。一般来说,一块2.5英寸硬盘的最大电流消耗约为1安(相当于5瓦)。这意味着,在四盘RAID设置中,USB集线器至少需要20瓦的电源供应。

设备连接图示

本示例中,共使用了4快硬盘设置了一个RAID5系统,RAID5是一个合理的冗余级别。如果超过4个或更多硬盘,则建议使用RAID6。在RAID5或RAID6的情况下,硬盘应该具有相同的容量,因为最小的容量限制了整个RAID的容量。因此,最好使用相同的硬盘型号。

RAID系统的设置步骤如下:

  1. 连接硬盘和系统识别
  2. 准备驱动器
  3. 构建、格式化和挂载RAID

连接硬盘和系统识别

首先使硬盘在系统中可访问,并能够识别每个硬盘。为正在运行的RAID系统贴上标签,便于管理。

使用lsblk命令可以查看所有磁盘设备:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   1,8T  0 disk
sdb      8:16   0   1,8T  0 disk
└─sdb1   8:17   0   1,8T  0 part
sdc      8:32   0   1,8T  0 disk
├─sdc1   8:33   0  18,6G  0 part
├─sdc2   8:34   0 184,4G  0 part
└─sdc3   8:35   0   1,6T  0 part
sdd      8:48   0   1,8T  0 disk

如上显示了/dev/sda/dev/sdb/dev/sdc/dev/sdd四块硬盘,每个容量都是1.8T;并且sdb包含sdb1一个分区,sdc包含了sdc1sdc2sdc3三个分区。

如果是新组装的四个硬盘,lsblk应该如下显示:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   1,8T  0 disk
sdb      8:16   0   1,8T  0 disk
sdc      8:32   0   1,8T  0 disk
sdd      8:48   0   1,8T  0 disk

为了方便识别标记设备,建议将硬盘一个一个接入系统,然后用blkid /dev/sdb来查看具体硬盘信息,如下:

使用Cloudflare Zero Trust实现网页登录SSH

首先登录https://one.dash.cloudflare.com/

网络->Tunnels,创建隧道,隧道类型选择Cloudflared,隧道名自定义hhssh

按照提示安装cloudflared并连接隧道,vps在这里选择debian,然后按照提示安装cloudflared并运行。

curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && 

sudo dpkg -i cloudflared.deb && 

sudo cloudflared service install eyJhIjoiOWRmMjczNGM3NjI3ZTNiMmZh

连接成功后,页面下方 Connectors 会显示当前已连接的设备。

下一步,开始设置公共主机名。

子域中自定义hhssh,域选择自有域名,路径(path)留空,服务类型选择SSH,URL里填写localhost:22,其中22为服务器ssh端口,按照实际情况设置,保存隧道。

Access->应用程序,添加应用程序。

应用程序类型选择 自托管,基本信息中应用程序名设置为hhssh,会话持续时长默认24小时,可自定义。

点击添加公共主机名,同上述Tunnels域名设置即可,点击下一步,在最后高级设置中,浏览器呈现设置中选择SSH保存设置。

下来设置邮箱验证策略,Access->策略,添加策略。

策略名自定义emailauth,操作为允许(allow),添加规则中,选择器设置为Emails,值中填写自己用来接收验证码的邮箱地址,保存。

Access->应用程序,选择刚建立的hhss,右侧三点菜单,编辑配置,在策略tab中,点击选择现有策略,勾选刚才新建的emailauth即可。

通过域名hhssh.0x8.net来登录页面,会提示输入邮箱接收验证码,输入验证码后即可按提示输入服务器账号密码来登录ssh。

享受你的webssh之旅吧!

webssh

设置screen实现每次登录vps使用同一会话

首先安装screen

apt install screen
# or
dnf install screnn
# or
pacman -S screen

新建.keepsession.sh脚本, vi ~/.keepsession.sh,内容如下

#!/bin/sh
if screen -ls | grep -q "There is a screen on"; then
  screen -xRR
else
  screen -S mysession
fi

chmod +x ~/.keepsession.sh添加执行权限,编辑~/.bashrc,添加以下内容:

if [ -f ~/.keepsession.sh ]; then
  source ~/.keepsession.sh
fi

这样以后每次登录都打开之前创建的会话。

部署Headscale以及Tailscale连接使用方法

Headscale是一款开源的Tailscale控制服务器软件,使用Headscale可以自行架设Tailscale服务。

VPS安装Headscale

下载地址https://github.com/juanfont/headscale/releases

wget https://github.com/juanfont/headscale/releases/download/v0.24.0/headscale_0.24.0_linux_amd64.deb
apt install headscale_0.24.0_linux_amd64.deb

安装完成后会有如下提示:

----------------------------------------------------------------------
 headscale package has been successfully installed.

 Please follow the next steps to start the software:

    sudo systemctl enable --now headscale
    sudo systemctl start headscale

 Configuration settings can be adjusted here:
    /etc/headscale/config.yaml

----------------------------------------------------------------------

注册启动Headscale服务

systemctl enable --now headscale
systemctl start headscale

配置Headscale

编辑配置文件vi /etc/headscale/config.yaml

将其中的127.0.0.1替换为自己的服务器IP,例如45.67.89.99

sed -i 's|127.0.0.1|45.67.89.99|g' /etc/headscale/config.yaml

建议将randomize_client_port: false改为randomize_client_port: true开启客户端随机端口。

修改完成后重启服务systemctl restart headscale.service

查看当前状态systemctl status headscale.service

使用Headscale

Headscale用户管理

创建用户,bbq为自定义用户名

headscale users create bbq

使用headscale users list查看已存在用户

使用iperf3测试网络吞吐率

Windows版iperf3下载地址

Linux可以使用aptdnf等管理软件直接安装iperf3

apt install iperf3
dnf install iperf3
pacman -S iperf3

安装好之后,服务端使用iperf3 -s开启进程。

D:\apps\iperf3.18_64>iperf3.exe -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.88.243, port 42194
[  5] local 192.168.88.246 port 5201 connected to 192.168.88.243 port 42204
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec  10.5 MBytes  86.9 Mbits/sec
[  5]   1.01-2.01   sec  10.5 MBytes  88.5 Mbits/sec
[  5]   2.01-3.01   sec  10.5 MBytes  88.4 Mbits/sec
[  5]   3.01-4.01   sec  10.5 MBytes  87.7 Mbits/sec
[  5]   4.01-5.02   sec  10.6 MBytes  88.7 Mbits/sec
[  5]   5.02-6.01   sec  10.4 MBytes  87.9 Mbits/sec
[  5]   6.01-7.01   sec  10.6 MBytes  88.6 Mbits/sec
[  5]   7.01-8.00   sec  10.4 MBytes  87.9 Mbits/sec
[  5]   8.00-9.01   sec  10.6 MBytes  88.1 Mbits/sec
[  5]   9.01-10.00  sec  10.5 MBytes  89.1 Mbits/sec
[  5]  10.00-10.11  sec  1.12 MBytes  91.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.11  sec   106 MBytes  88.2 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------

客户端使用iperf3 -c serverip来连接服务端开始测试

使用证书安全快捷的连接SSH服务

经常使用ssh连接服务器的朋友,有时为了安全可能ssh还使用了非默认端口(22),这样每次使用密码登录时,都得按照如下的命令来连接服务器。这样显得有点不方便,因此推荐将密码设置复杂难以回溯,然后使用证书的形式来登录ssh服务器,免去了每次使用密码的麻烦。只要你把证书妥善保管,就会安全如初。

ssh user@hostname -p223

本地生成证书

首先使用ssh-keygen命令在本地生成证书,为了方便使用未设置证书密码。

$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Kcd0LM......Vams1XJA user@op36
The key's randomart image is:
+--[ED25519 256]--+
|   cef+.=..      |
|  ..oEo+.X       |
|   aaaa+o O      |
|  obbbb= B       |
|cccccc= S .      |
|dddd   + .       |
|O w              |
| o               |
|                 |
+----[SHA256]-----+

设置SSH服务

使用ssh-copy-id将公钥拷贝至远端服务器

MSYS2 Windows使用手册

如果想要在Windows上使用unix/linux命令程序,那么MSYS是一个不错的工具软件。

通过MSYS你可以方便的安装使用unix/linux命令程序,并且MSYS还提供了软件管理软件PACMAN,熟悉Archlinux的朋友应该会更加得心应手。

安装MSYS

https://www.msys2.org/ 提供了安装程序 msys2-x86_64-20241208.exe,默认从github下载,如果你的网络访问github不便的话,在此提供了国内下载链接

下载后点击安装,默认目录为C:\msys64\,默认用户目录为C:\msys64\home\,建议将其加入到Widnows环境变量中。

使用MSYS

Win+R输入msys2打开终端程序即可开始使用。

使用pacman管理软件

pacman是archlinux下的默认软件管理程序,熟悉archlinux的朋友应该会感觉到很亲切,以下为pacman的常用方法。

  • 查询软件 pacman -Ss hugo
bbq@e6 MSYS ~
$ pacman -Ss hugo
clangarm64/mingw-w64-clang-aarch64-hugo 0.139.2-1
    A Fast and Flexible Static Site Generator built with love by bep, spf13 and friends in Go. (mingw-w64)
mingw64/mingw-w64-x86_64-hugo 0.139.2-1
    A Fast and Flexible Static Site Generator built with love by bep, spf13 and friends in Go. (mingw-w64)
ucrt64/mingw-w64-ucrt-x86_64-hugo 0.139.2-1
    A Fast and Flexible Static Site Generator built with love by bep, spf13 and friends in Go. (mingw-w64)
clang64/mingw-w64-clang-x86_64-hugo 0.139.2-1
    A Fast and Flexible Static Site Generator built with love by bep, spf13 and friends in Go. (mingw-w64)
  • 安装软件 pacman -S mingw-w64-x86_64-hugo
$ pacman -S mingw-w64-ucrt-x86_64-hugo
正在解析依赖关系...
正在查找软件包冲突...

软件包 (3) mingw-w64-ucrt-x86_64-gcc-libs-14.2.0-2  mingw-w64-ucrt-x86_64-libwinpthread-git-12.0.0.r459.g63f3f2846-1
           mingw-w64-ucrt-x86_64-hugo-0.140.2-1

下载大小:       32.46 MiB
全部安装大小:  155.35 MiB

:: 进行安装吗? [Y/n] y
:: 正在获取软件包......
 mingw-w64-ucrt-x86_64-libwinpthread-git-12.0.0.r459.g...    28.7 KiB  83.3 KiB/s 00:00 [##################################################] 100%
 mingw-w64-ucrt-x86_64-gcc-libs-14.2.0-2-any               1022.7 KiB  1320 KiB/s 00:01 [##################################################] 100%
 mingw-w64-ucrt-x86_64-hugo-0.140.2-1-any                    31.4 MiB  10.1 MiB/s 00:03 [##################################################] 100%
 全部 (3/3)                                                  32.5 MiB  10.2 MiB/s 00:03 [##################################################] 100%
(3/3) 正在检查密钥环里的密钥                                                            [##################################################] 100%
(3/3) 正在检查软件包完整性                                                              [##################################################] 100%
(3/3) 正在加载软件包文件                                                                [##################################################] 100%
(3/3) 正在检查文件冲突                                                                  [##################################################] 100%
(3/3) 正在检查可用存储空间                                                              [##################################################] 100%
:: 正在处理软件包的变化...
(1/3) 正在安装 mingw-w64-ucrt-x86_64-libwinpthread-git                                  [##################################################] 100%
(2/3) 正在安装 mingw-w64-ucrt-x86_64-gcc-libs                                           [##################################################] 100%
(3/3) 正在安装 mingw-w64-ucrt-x86_64-hugo                                               [##################################################] 100%
mingw-w64-ucrt-x86_64-hugo 的可选依赖
    git: To interact with repositories [已安装]
  • 删除软件 pacman -R mingw-w64-x86_64-hugo
$ pacman -R mingw-w64-x86_64-hugo
正在检查依赖关系...

软件包 (1) mingw-w64-x86_64-hugo-0.140.2-1

全部移去体积:  152.14 MiB

:: 打算删除这些软件包吗? [Y/n] y
:: 正在处理软件包的变化...
(1/1) 正在删除 mingw-w64-x86_64-hugo                                                    [##################################################] 100%
  • 同步软件源 pacman -Sy
$ pacman -Sy
:: 正在同步软件包数据库...
 clangarm64 已经是最新版本
 mingw32 已经是最新版本
 mingw64 已经是最新版本
 ucrt64 已经是最新版本
 clang32 已经是最新版本
 clang64 已经是最新版本
 msys 已经是最新版本

修改msys软件源

修改完成后记得运行pacman -Sy同步软件源索引

Openmediavault安装配置全过程

Openmediavault是基于 Debian Linux 的下一代网络附加存储(NAS)解决方案。它包含 SSH、(s)FTP、SMB/CIFS、RSync等服务。由于框架的模块化设计,它可以通过插件进行增强。OpenMediaVault 主要设计用于小型办公室或家庭办公室,是一个简单易用的开箱即用解决方案,允许每个人方便简洁的安装和管理NAS。

Openmediavault配置要求

  • CPU: 任意x86-64或ARM处理器
  • RAM: 最小1 GiB
  • 硬盘:
    • 系统盘: 最小4 GiB,建议10 GiB。
    • 数据盘: 根据需求。

VPS安装Openmediavault实例

挂载openmediavault_7.0-32-amd64.iso文件后,kvm管理窗口启动主机,从ISO文件引导。

首先设置语言、位置、键盘布局和时区,然后自动识别网络配置,如果失败的话需要手动设置IP网关等项目。

下来设置主机名、账户和密码,然后是磁盘分区设置。

在此为omv系统分20G以安装系统,swap设置为2G,剩余的空间留作数据分区。

然后自动安装系统,中途需要手动选择软件源(apt),然后安装GRUB后即可重启系统。

使用Openmediavault

通过ip浏览主机,默认用户名为admin密码为openmediavault,建议及时更改。

Openmediavault system info

使用Highlight.js为网页添加语法高亮功能

Highlight.js是目前最受欢迎的JavaScript语法高亮工具,下来介绍如何使用之。

Highlight.js特性

  • 192 种语言和 498 个主题
  • 自动语言检测
  • 适用于任何 HTML 标记
  • 零依赖
  • 兼容任何 JS 框架
  • 支持 Node.js 和 Deno

首先在https://highlightjs.org/download下载Highlight.js,可以按需定制选择语言,要么就选择所有语言。

在网页</head>之前加入以下代码:

<!-- 按照自定义目录填写default.css路径 -->
<link rel="stylesheet" href="/path/to/styles/default.css">

<!-- 按照自定义目录填写highlight.min.js路径 -->
<script src="/path/to/highlight.min.js"></script>

<script>hljs.highlightAll();</script>

就这样咯!

Vim Markdown语法高亮

使用vim-markdown插件,可以为VIM添加Markdown的语法高亮。

安装vim-markdown插件

安装方法:

mkdir ~/.vim/
cd ~/.vim
wget https://github.com/xotd/vim-markdown/archive/master.tar.gz
tar --strip=1 -zxf vim-markdown-master.tar.gz

Vim开启语法高亮

编辑~/.vimrc,写入syntax on

vim-markdown插件

https://github.com/xotd/vim-markdown

GitHub端口22连接超时改用443端口连接

clone github仓库时老是提示22端口超时,如下:

$ git clone [email protected]:xtod/yuwang.git
Cloning into 'yuwang'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

还提示是否对该仓库具有访问权或者仓库是否存在,这不废话么,我肯定确认。

于是试着ssh -T了一下,看能不能访问,但提示的还是22端口超时

$ ssh -T [email protected]
ssh: connect to host github.com port 22: Connection timed out

现在来看应该是访问问题,在此把访问端口改为443吧,不用22了,编辑~/.ssh/config写入如下内容:

Host github.com
HostName ssh.github.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519

然后再ssh -T试一下

如何判断西数MyCloud是第几代

西数MyCloud共出了两代,那么如何判断呢?

看系统版本

第一代的是3.x/4.x,第二代的是2.x

查看CPU信息

SSH登录MyCloud后,通过cat /proc/cpuinfo检查CPU信息

  • 第一代是Comcerto 2000 EVM
  • 第二代是 Marvell Armada 375 (Device Tree)

MyCloud硬件规格

代码代码名型号CPURAMROM
BCTLZionWD MyCloud (Gen1)Mindspeed Comcerto C2200 (2x800MHz)256 MB DDR3SPI, 1MB (Barebox)
GLCRGlacierWD MyCloud (Gen2)Marvell Armada A375 (2x1.0 GHz)512 MB DDR3SPI, 1MB (U-Boot)
BZVMZionWD MyCloud Mirror (Gen1)Marvell Armada A370 (1x1.2 GHz)512 MB DDR3NAND, 256MB (U-Boot)
BWVZGrand TetonWD MyCloud Mirror (Gen2)Marvell Armada A385512 MB DDR3NAND, 256MB (U-Boot)
BG2YBlack IceWD MyCloud EX1100Marvell Armada A375 (2x1.0 GHz)
BWAZYosemiteWD MyCloud EX2100Marvell Armada A385 (2x1.3 GHz)1 GB
KC2AKings CanyonWD MyCloud EX2Marvell Armada A370 (1x1.2 GHz)1 GB DDR3
BVBZRanger peakWD MyCloud EX2 UltraMarvell Armada A385 (2x1.3 GHz)1 GB DDR3
LT4ALightingWD MyCloud EX4Marvell 88F6282A1 (1x2.0 GHz)512 MBNAND, 256MB
BWZEYellowstoneWD MyCloud EX4100Marvell Armada A388 (2x1.6 GHz)2 GB
BBAZAuroraWD MyCloud DL2100Intel Atom C2350 (2x1.7 GHz)1 GB DDR3
BNEZSpriteWD MyCloud DL4100Intel Atom C2338 (2x1.7 Ghz)2 GB DDR3
BBCLBryce CanyonWD MyCloud PR2100Intel Pentium N3710 (4x1.6 Ghz)4 GB DDR3L
BNFABlack CanyonWD MyCloud PR4100 (MX4200)Intel Pentium N3710 (4x1.6 GHz)4 GB DDR3L
BAGXMirror Man???
BLHWAlpina???
??????WD MyCloud HomeRealtek RTD1295 PBCG (4x1.4 GHz)
??????WD MyCloud Home DuoRealtek RTD1296 PBCG (4x1.4 GHz)?? (DDR4/64Bit)

https://community.wd.com/c/personal-cloud-storage/wd-my-cloud/105

VPS安装飞牛OS

首先备份你的网络配置,以防止安装后网络配置异常,那么就需要手动配置网络。

root@bwg:~# ip a
 eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether aa:aa:00:07:cc:07 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname ens18
    inet 55.62.158.62/22 brd 55.62.158.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80:1e20:13aa:ff:fe07:cc07/64 scope link
       valid_lft forever preferred_lft forever

ssh登录vps,按照以下示例操作:

## 下载脚本
wget --no-check-certificate -qO InstallNET.sh 'https://unixetc.com/res/InstallNET.sh'
## 添加执行权限
chmod a+x InstallNET.sh
## 通过脚本安装网络镜像,这个过程时间可能较长,因为要下载fnos.vhd.gz镜像文件。
./InstallNET.sh --image 'https://r2.yx.lu/fnos.vhd.gz'

完成后开始自动执行安装过程

# System Memory

785 MB

# Virtualization and Manufacturer

kvm redhat

# Check Dependence

[ok]            awk
[ok]            basename
[ok]            cat
[ok]            cpio
[ok]            curl
[ok]            cut
[ok]            dirname
[ok]            file
[ok]            find
[ok]            grep
[ok]            gzip
[ok]            iconv
[ok]            ip
[ok]            lsblk
[ok]            openssl
[ok]            sed
[ok]            wget

# Network Details

[Adapter Name]  eth0
[Network File]  /etc/network/interfaces
[Server Stack]  IPv4Stack

[IPv4  Method]  isDHCP
[IPv4 Address]  55.62.158.62
[IPv4  Subnet]  255.255.252.0
[IPv4 Gateway]  55.62.158.255
[IPv4     DNS]  8.8.8.8 1.1.1.1
[IPv4  Amount]  1

[IPv6  Method]  N/A
[IPv6 Address]  N/A
[IPv6  Subnet]  N/A
[IPv6 Gateway]  N/A
[IPv6     DNS]  N/A
[IPv6  Amount]  N/A

# User Timezone

Asia/Shanghai

# Hostname

bwg

# SSH or RDP Port, Username and Password

N/A
N/A
N/A

# Formatting and Installing Drives

/dev/sda

# Motherboard Firmware

BIOS

# Check DIST

Success

# Installation Starting

Overwriting Packaged Image Mode Target System [Self-Modified OS]
https://r2.yx.lu/fnos.vhd.gz

[Debian] [bookworm] [amd64] Downloading...
[Mirror] http://deb.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
         http://deb.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux
268486 blocks

# Directory of Grub and Unattended Disposition File

/boot/grub/grub.cfg
/tmp/boot/preseed.cfg

[Finish] Input 'reboot' to continue the subsequential installation.

按照提示输入reboot重启系统开始安装fnOS。

将VPS重装为最小化Debian

今天发现一个很妙的脚本,可以将VPS重装为最小化Debian系统,以节省系统开销,很适合小鸡鸡用户。

说明

  1. 适用于KVM和物理主机,不适用 于软容器化系统
  2. 适用于Debian、Ubuntu和Red Hat Linux系统,并且以GRUB 2为引导程序。
  3. 支持MBR和GPT分区表
  4. 支持传统BIOS或UEFI 启动
  5. 支持多磁盘或LVM

注意事项

  • Google Compute Engine 必须手动指定 VPC 的 IP/CIDR 和网关
  • AWS EC2 或 Lightsail - 不适用于 UEFI 引导

工作原理

  1. 生成预置文件以自动安装
  2. 将 ‘Debian-Installer’ 下载到 /boot 目录
  3. 将安装程序的菜单项附加到 GRUB2 配置文件中

使用方法

  1. 下载脚本
curl -fLO https://unixetc.com/res/debi.sh

##或者

wget -O debi.sh https://unixetc.com/res/debi.sh
  1. 运行脚本
## 以管理员权限运行脚本或者使用sudo
chmod a+rx debi.sh
sudo ./debi.sh --cdn  --ethx --bbr --user root --password password
  • –bbr 开启 BBR
  • –ethx 网卡名称使用传统形式,如 eth0 而不是 ens3
  • 默认时区为 UTC,添加 –timezone Asia/Shanghai 可使用中国时区。
  • 默认使用 Debian 官方 CDN 镜像源(deb.debian.org),添加 –ustc 可使用中科大镜像源。

完成后重启即可进入新系统。

Cudy TR3000安装OpenWRT

有需要刷回原厂固件的记得先备份 FIP 分区! 文章后面提供备份好的 FIP文件

FIP 分区默认是只读的,需要先写入cudy_tr3000-v1-sysupgrade.bin 来解锁固件。

进入路由器后台->基本设置->固件升级,选择cudy_tr3000-v1-sysupgrade.bin然后写入。

TR3000升级固件

重启后,进入到过度openwrt固件的升级页面,刷入openwrt-mediatek-filogic-cudy_tr3000-v1-squashfs-sysupgrade.bin

重启后即可通过192.168.1.1 密码password来登录后台,至此 OpenWRT安装完成。

tr3000刷uboot

接下来刷入uboot,方便日后折腾,在此提供两个uboot文件,一个事原厂分区方案,一个是大分区方案,自行选择。

Openwrt后台->系统->文件传输,选择上传需要的uboot文件到系统/tmp/upload目录。

然后进入系统→TTYD终端,参照以下命令刷入uboot,用户名root密码password

(1)需要原厂分区刷mt7981_cudy_tr3000-v1-u-boot.fip (访问密码: 3705)

cd /tmp/upload/
mtd write mt7981_cudy_tr3000-v1-u-boot.fip FIP

(2)需要大分区则刷mt7981_cudy_tr3000-mod-u-boot.fip (访问密码: 3705)

cd /tmp/upload/
mtd write mt7981_cudy_tr3000-mod-u-boot.fip FIP

重启即可,后续uboot刷机就网线插 lan 口,设置静态 ip(192.168.1.10),长按 reset 10s 指示灯闪烁到红灯常亮 http://192.168.1.1/

备注:改了大分区,需要刷入名字不带 v1 的固件

tr3000刷回原厂固件

网线插 lan 口,设置静态 ip(192.168.1.10),长按 reset 进 http://192.168.1.1/uboot.html

选择自行备份的 FIP.bin 或者这个FIP.bin 上传刷入,机子会自动重启。

再设置电脑为本机 IP 192.168.1.88 网关为 192.168.1.112 的静态 IP 地址

pip设置代理的几种方法

通常情况下,国内使用PIP可以参考Pypi国内镜像设置来设置国内镜像以加快安装速度。

但有的pip软件包国内镜像出于各种考虑并未收录,因此就得使用Pipy.org的官方源安装,在网络状况不理想的情况下,我们可以使用设置代理来加速安装过程。

例如,我们已经获得了代理服务的配置,如下:

http://127.0.0.1:2080
socks://127.0.0.1:2080
  1. 如果是linux系统,可以使用系统自有的环境变量http_proxyhttps_proxy
$ export HTTP_PROXY=http://127.0.0.1:2080
$ export HTTPS_PROXY=http://127.0.0.1:2080
  1. 使用pip自带选项--proxy来使用代理
$ pip install --proxy=http://127.0.0.1:2080 jupyter
  1. 使用pip配置文件pip.confpip.ini来设置代理

Windows下是pip.ini,linux下是~/.pip/pip.conf/etc/pip.conf

[global]
proxy = http://127.0.0.1:2080

tar使用详解

tar是一款经典的打包程序,用于将多个文件进行打包存储,tar设计之初就是为了方便将文件存储与磁带上,tar这个名字就是由此而来,表示Tape Archiver。

tar可以方便的对多个文件进行打包处理,也可对已经打包好的文件(.tar文件)进行查看增补等操作。

人们通常在打包完成后,还会进行压缩操作,使用tar我们可以方便的将打包压缩两个操作合二为一,一次性输出压缩后的结果。

tar最常用的四个参数

适用tar时,后面的参数可以分别写,也可以写在一起,即tar -cf nametar -c -f=name效果相同。

  • 创建新的tar包 -c 或者 --create
  • 查看tar包内容 -t 或者 --list
  • 从tar包提取内容 -x 或者 --extract
  • 指定tar文件名 -f archive-name 或者 --file=archive-name
  • 显示操作详情 -v 或者 --verbose

tar打包常用操作实例

  • tar打包文件
$tar -cf t.tar document.docx sheets.xlsx text.txt
  • tar查看内容
$ tar -tf t.tar
document.docx
sheets.xlsx
text.txt
  • tar提取内容
## 提取t.tar包内容
tar -xf t.tar  

## 提取t.tar包中指定的文件text.txt,注意这里必须用参数全名,不能用简写
tar --extract --file=t.tar text.txt

tar打包压缩

tar可以在打包时同时条用压缩程序压缩文档,支持多种压缩程序,如:gzip, bzip2, lzip, lzma, lzop, zstd, xz和compress。

Linux一键修改swap脚本

在此分享一个Linux一键修改swap文件脚本,方便大家使用。

下载脚本

wget https://unixetc.com/res/swap.sh
chmod +x ./swap.sh

脚本使用示例,注意必须以root权限执行该脚本

## 运行脚本
./swap.sh

———————————————————————————————————————
Linux VPS一键添加/删除swap脚本
1、添加swap
2、删除swap
———————————————————————————————————————
请输入数字 [1-2]:1
请输入需要添加的swap(建议为内存的1.5-2倍)
请输入swap数值(单位M):2000
swap已存在,swap设置失败,请先运行脚本删除swap后重新设置!

##提示已存在swap,应该选择2删除了再次添加

———————————————————————————————————————
Linux VPS一键添加/删除swap脚本
1、添加swap
2、删除swap
———————————————————————————————————————
请输入数字 [1-2]:2
swap已发现,正在将其移除...
swap已删除!

##添加swap
———————————————————————————————————————
Linux VPS一键添加/删除swap脚本
1、添加swap
2、删除swap
———————————————————————————————————————
请输入数字 [1-2]:1
请输入需要添加的swap(建议为内存的1.5-2倍)
请输入swap数值(单位M):2000
swap未发现,正在为其创建swap
swap创建成功,并查看信息:
Filename                                Type            Size            Used   Priority
/swap                                   file            2047996         338952 -2
SwapCached:       127192 kB
SwapTotal:       2047996 kB
SwapFree:        1709044 kB

使用pandoc批量转换rst为md

安装软件pandoc

下载安装pandoc

Windows版下载安装pandoc-3.5-windows-x86_64.msi (访问密码: 3705)

Debian/Ubuntu使用如下命令安装

apt install pandoc

安装Python

Windows版下载安装python-3.13.0-amd64.exe (访问密码: 3705)

Debian/Ubuntu使用如下命令安装

apt install python3 python3-pip 

安装Pypandoc

Pypandoc是一款python插件,可以调用Pandoc进行使用。

pip install pypandoc
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pypandoc
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ff/bd/cf1dd70b95f3366f3c457c5259ed8f032122210441407b6ed281d7fcbb8c/pypandoc-1.14-py3-none
-any.whl (21 kB)
Installing collected packages: pypandoc
Successfully installed pypandoc-1.14

Python代码

新建plzh.py文件,内容如下,或者点击这里下载文件plzhrst2md.py (访问密码: 3705)

import os
def get_file_name(file_dir):
    for root, dirs, files in os.walk(file_dir):   #获取当前目录
        for file in files:                     
            if os.path.splitext(file)[1] == ".rst": #搜索rst文件
                os.chdir(root)
                print("Conversion ..." + "pandoc " + file + " -o " + os.path.splitext(file)[0] + ".md")
                os.system("pandoc " + file + " -o " + os.path.splitext(file)[0] + ".md")  #调用pandoc开始转换到同目录
                print("Done!")
if __name__ == "__main__":
    get_file_name(r"D:\dls\doc")  #自定义文件夹

将文件复制到.rst文件目录,点击运行即可,转换后的.md文件和.rst文件同目录同文件名。

VPS安装Bluesky PDS

Bluesky是一个去中心化的分散式社交系统,与 Mastodon (长毛象) 相似,不过Bluesky 自行开发的AT Protocol协议无法与 Mastodon 的 ActivityPub 互通。

同样是可自行架设的社交平台,比较特别的是 Bluesky 并不像 Mastodon 一样包含了前端网页(web),它只有提供API功能,需要专门的前端来进行登录管理。

自行部署的Bluesky服务器被称为个人数据服务器 (Personal Data Server, PDS),使用者可以在 bsky.app 网页版或 iOS、Android客户端中登录自行部署的pds服务。

pds推荐主机配置

  • 操作系统 Ubuntu 22.04
  • 内存 (RAM) 1 GB
  • CPU核心 1
  • CPU构架 amd64, arm64
  • 硬盘 20 GB SSD
  • 可服务账号数 20

VPS部署PDS实例

域名设置

pds.p9.pub为例,服务器IP为195.192.118.6

pds.p9.pub*.pds.p9.pub的A记录修改为195.192.118.6

安装pds

通过以下命令下载安装脚本

wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh

然后运行bash ./installer.sh来开始安装

bash ./installer.sh
* Detected supported distribution Debian 12
---------------------------------------
     Add DNS Record for Public IP
---------------------------------------

  From your DNS provider's control panel, create the required
  DNS record with the value of your server's public IP address.

  + Any DNS name that can be resolved on the public internet will work.
  + Replace example.com below with any valid domain name you control.
  + A TTL of 600 seconds (10 minutes) is recommended.

  Example DNS record:

    NAME                TYPE   VALUE
    ----                ----   -----
    example.com         A      195.192.118.6
    *.example.com       A      195.192.118.6

  **IMPORTANT**
  It's recommended to wait 3-5 minutes after creating a new DNS record
  before attempting to use it. This will allow time for the DNS record
  to be fully updated.

## 输入域名和管理员邮箱
Enter your public DNS address (e.g. example.com): pds.p9.pub
Enter an admin email address (e.g. [email protected]): [email protected]
Hit:1 http://security.debian.org/debian-security bookworm-security InRelease
Hit:2 http://deb.debian.org/debian bookworm InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Hit:4 https://download.docker.com/linux/debian bookworm InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20230311).
curl is already the newest version (7.88.1-10+deb12u7).
lsb-release is already the newest version (12.0-1).
lsb-release set to manually installed.
openssl is already the newest version (3.0.14-1~deb12u2).
openssl set to manually installed.
The following additional packages will be installed:
  dirmngr gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libassuan0 libjq1 libksba8 libnpth0 libonig5 pinentry-curses
Suggested packages:
  pinentry-gnome3 tor parcimonie xloadimage scdaemon pinentry-doc sqlite3-doc
The following NEW packages will be installed:
  dirmngr gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm jq libassuan0 libjq1 libksba8 libnpth0 libonig5 pinentry-curses sqlite3 xxd
0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,706 kB of archives.
After this operation, 17.8 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 libassuan0 amd64 2.5.5-5 [48.5 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 gpgconf amd64 2.2.40-1.1 [564 kB]
Get:3 http://deb.debian.org/debian bookworm/main amd64 libksba8 amd64 1.6.3-2 [128 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 libnpth0 amd64 1.6-3 [19.0 kB]
Get:5 http://deb.debian.org/debian bookworm/main amd64 dirmngr amd64 2.2.40-1.1 [792 kB]
Get:6 http://deb.debian.org/debian bookworm/main amd64 gnupg-l10n all 2.2.40-1.1 [1,093 kB]
Get:7 http://deb.debian.org/debian bookworm/main amd64 gnupg-utils amd64 2.2.40-1.1 [927 kB]
Get:8 http://deb.debian.org/debian bookworm/main amd64 gpg amd64 2.2.40-1.1 [949 kB]
Get:9 http://deb.debian.org/debian bookworm/main amd64 pinentry-curses amd64 1.2.1-1 [77.4 kB]
Get:10 http://deb.debian.org/debian bookworm/main amd64 gpg-agent amd64 2.2.40-1.1 [695 kB]
Get:11 http://deb.debian.org/debian bookworm/main amd64 gpg-wks-client amd64 2.2.40-1.1 [541 kB]
Get:12 http://deb.debian.org/debian bookworm/main amd64 gpg-wks-server amd64 2.2.40-1.1 [531 kB]
Get:13 http://deb.debian.org/debian bookworm/main amd64 gpgsm amd64 2.2.40-1.1 [671 kB]
Get:14 http://deb.debian.org/debian bookworm/main amd64 gnupg all 2.2.40-1.1 [846 kB]
Get:15 http://deb.debian.org/debian bookworm/main amd64 libonig5 amd64 6.9.8-1 [188 kB]
Get:16 http://deb.debian.org/debian bookworm/main amd64 libjq1 amd64 1.6-2.1 [135 kB]
Get:17 http://deb.debian.org/debian bookworm/main amd64 jq amd64 1.6-2.1 [64.9 kB]
Get:18 http://deb.debian.org/debian bookworm/main amd64 sqlite3 amd64 3.40.1-2 [353 kB]
Get:19 http://deb.debian.org/debian bookworm/main amd64 xxd amd64 2:9.0.1378-2 [83.7 kB]
Fetched 8,706 kB in 0s (36.3 MB/s)
Selecting previously unselected package libassuan0:amd64.
(Reading database ... 36657 files and directories currently installed.)
Preparing to unpack .../00-libassuan0_2.5.5-5_amd64.deb ...
Unpacking libassuan0:amd64 (2.5.5-5) ...
Selecting previously unselected package gpgconf.
Preparing to unpack .../01-gpgconf_2.2.40-1.1_amd64.deb ...
Unpacking gpgconf (2.2.40-1.1) ...
Selecting previously unselected package libksba8:amd64.
Preparing to unpack .../02-libksba8_1.6.3-2_amd64.deb ...
Unpacking libksba8:amd64 (1.6.3-2) ...
Selecting previously unselected package libnpth0:amd64.
Preparing to unpack .../03-libnpth0_1.6-3_amd64.deb ...
Unpacking libnpth0:amd64 (1.6-3) ...
Selecting previously unselected package dirmngr.
Preparing to unpack .../04-dirmngr_2.2.40-1.1_amd64.deb ...
Unpacking dirmngr (2.2.40-1.1) ...
Selecting previously unselected package gnupg-l10n.
Preparing to unpack .../05-gnupg-l10n_2.2.40-1.1_all.deb ...
Unpacking gnupg-l10n (2.2.40-1.1) ...
Selecting previously unselected package gnupg-utils.
Preparing to unpack .../06-gnupg-utils_2.2.40-1.1_amd64.deb ...
Unpacking gnupg-utils (2.2.40-1.1) ...
Selecting previously unselected package gpg.
Preparing to unpack .../07-gpg_2.2.40-1.1_amd64.deb ...
Unpacking gpg (2.2.40-1.1) ...
Selecting previously unselected package pinentry-curses.
Preparing to unpack .../08-pinentry-curses_1.2.1-1_amd64.deb ...
Unpacking pinentry-curses (1.2.1-1) ...
Selecting previously unselected package gpg-agent.
Preparing to unpack .../09-gpg-agent_2.2.40-1.1_amd64.deb ...
Unpacking gpg-agent (2.2.40-1.1) ...
Selecting previously unselected package gpg-wks-client.
Preparing to unpack .../10-gpg-wks-client_2.2.40-1.1_amd64.deb ...
Unpacking gpg-wks-client (2.2.40-1.1) ...
Selecting previously unselected package gpg-wks-server.
Preparing to unpack .../11-gpg-wks-server_2.2.40-1.1_amd64.deb ...
Unpacking gpg-wks-server (2.2.40-1.1) ...
Selecting previously unselected package gpgsm.
Preparing to unpack .../12-gpgsm_2.2.40-1.1_amd64.deb ...
Unpacking gpgsm (2.2.40-1.1) ...
Selecting previously unselected package gnupg.
Preparing to unpack .../13-gnupg_2.2.40-1.1_all.deb ...
Unpacking gnupg (2.2.40-1.1) ...
Selecting previously unselected package libonig5:amd64.
Preparing to unpack .../14-libonig5_6.9.8-1_amd64.deb ...
Unpacking libonig5:amd64 (6.9.8-1) ...
Selecting previously unselected package libjq1:amd64.
Preparing to unpack .../15-libjq1_1.6-2.1_amd64.deb ...
Unpacking libjq1:amd64 (1.6-2.1) ...
Selecting previously unselected package jq.
Preparing to unpack .../16-jq_1.6-2.1_amd64.deb ...
Unpacking jq (1.6-2.1) ...
Selecting previously unselected package sqlite3.
Preparing to unpack .../17-sqlite3_3.40.1-2_amd64.deb ...
Unpacking sqlite3 (3.40.1-2) ...
Selecting previously unselected package xxd.
Preparing to unpack .../18-xxd_2%3a9.0.1378-2_amd64.deb ...
Unpacking xxd (2:9.0.1378-2) ...
Setting up libksba8:amd64 (1.6.3-2) ...
Setting up libnpth0:amd64 (1.6-3) ...
Setting up libassuan0:amd64 (2.5.5-5) ...
Setting up xxd (2:9.0.1378-2) ...
Setting up gnupg-l10n (2.2.40-1.1) ...
Setting up gpgconf (2.2.40-1.1) ...
Setting up libonig5:amd64 (6.9.8-1) ...
Setting up sqlite3 (3.40.1-2) ...
Setting up gpg (2.2.40-1.1) ...
Setting up gnupg-utils (2.2.40-1.1) ...
Setting up pinentry-curses (1.2.1-1) ...
Setting up gpg-agent (2.2.40-1.1) ...
Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket → /usr/lib/systemd/user/gpg-agent-browser.socket.
Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket → /usr/lib/systemd/user/gpg-agent-extra.socket.
Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket → /usr/lib/systemd/user/gpg-agent-ssh.socket.
Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent.socket → /usr/lib/systemd/user/gpg-agent.socket.
Setting up libjq1:amd64 (1.6-2.1) ...
Setting up gpgsm (2.2.40-1.1) ...
Setting up dirmngr (2.2.40-1.1) ...
Created symlink /etc/systemd/user/sockets.target.wants/dirmngr.socket → /usr/lib/systemd/user/dirmngr.socket.
Setting up gpg-wks-server (2.2.40-1.1) ...
Setting up jq (1.6-2.1) ...
Setting up gpg-wks-client (2.2.40-1.1) ...
Setting up gnupg (2.2.40-1.1) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u8) ...
* Configuring Docker daemon
* Creating data directory /pds
* Creating Caddy data directory
* Creating Caddy config directory
* Creating Caddy config file
* Downloading PDS compose file
* Starting the pds systemd service
Created symlink /etc/systemd/system/default.target.wants/pds.service → /etc/systemd/system/pds.service.
* Downloading pdsadmin
========================================================================
PDS installation successful!
------------------------------------------------------------------------

Check service status      : sudo systemctl status pds
Watch service logs        : sudo docker logs -f pds
Backup service data       : /pds
PDS Admin command         : pdsadmin

Required Firewall Ports
------------------------------------------------------------------------
Service                Direction  Port   Protocol  Source
-------                ---------  ----   --------  ----------------------
HTTP TLS verification  Inbound    80     TCP       Any
HTTP Control Panel     Inbound    443    TCP       Any

Required DNS entries
------------------------------------------------------------------------
Name                         Type       Value
-------                      ---------  ---------------
pds.p9.pub              A          195.192.118.6
*.pds.p9.pub            A          195.192.118.6

Detected public IP of this server: 195.192.118.6

To see pdsadmin commands, run "pdsadmin help"

========================================================================
### 是否添加账号,这里选择y开始设置账号,选择n的话后期可以通过pdsadmin account create来添加账号
Create a PDS user account? (y/N): y   
## 设置邮箱
Enter an email address (e.g. [email protected]): [email protected]
## 设置账号名,注意格式jqx.pds.p9.pub
Enter a handle (e.g. alice.pds.p9.pub): jqx.pds.p9.pub

## 账号添加完成
Account created successfully!
-----------------------------
Handle   : jqx.pds.p9.pub
DID      : did:plc:dgsdfgas34dfpqilzhutwbtvkg
Password : qNiugTBUQ*******x7Bdwt
-----------------------------
Save this password, it will not be displayed again.

验证PDS

完全删除Docker

在使用了docker一段时间后,会发现系统上各种容器乱七八糟,启动的,未启动的,正常运行的,异常的,搞得人不胜其烦。

下面是一次完全删除docker容器并删除docker本身的实例,可以完美解决以上问题。

查询并停止/删除当前运行容器

➜  ~ docker ps -aq
80bb62721c12

# 停止当前运行容器
➜  ~ docker stop $(docker ps -aq)
80bb62721c12

# 删除当前运行容器
➜  ~ docker rm $(docker ps -aq)
80bb62721c12

删除所有image镜像

➜  ~ docker rmi $(docker images -q)
Untagged: traffmonetizer/cli_v2:latest
Untagged: traffmonetizer/cli_v2@sha256:4fc48893746664471a1c386efabb5eba0537955fe5ecae871ed4a5e5c33ecf03
Deleted: sha256:3f82fd6f8f4f5ae49cf715a45db4abb3c0bef25be4d351ebe82e747f8641dd0b
Deleted: sha256:d732b5c154d947acd46254d7c729eea712f5dd3e0518884a50cc4ada4da9706d
Deleted: sha256:037fbfa145577a9bc6472afdf57979ff128102d42806eebc4dcdbc7eb0c91ff5
Deleted: sha256:e44bc785a3f33dea2990cff187bc1c2b7fea4fa9dfa24a6c3ad3e4c149e7aa80
Deleted: sha256:aa0a4b16279d7f4e301aa29ff8bb3fb2e5eaf2417e8119bd3c92f99da975d674
Deleted: sha256:54d0ead5d2a5dd2e830b333508445bc7e9cbed60b1ec4091d667c71349a9b31c
Deleted: sha256:bd00ba4d604e3a30bba51756da10622d2242a8540dc03a46a07584575d736590
Deleted: sha256:d4fc045c9e3a848011de66f34b81f052d4f2c15a17bb196d637e526349601820

卸载docker

➜  ~ apt purge docker-ce
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
  pigz
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  docker-ce*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 109 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 64321 files and directories currently installed.)
Removing docker-ce (5:27.2.0-1~debian.12~bookworm) ...
(Reading database ... 64312 files and directories currently installed.)
Purging configuration files for docker-ce (5:27.2.0-1~debian.12~bookworm) ...
➜  ~ apt purge docker-ce-cli
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
  pigz
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  docker-ce-cli*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 40.9 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 64310 files and directories currently installed.)
Removing docker-ce-cli (5:27.2.0-1~debian.12~bookworm) ...
Processing triggers for man-db (2.11.2-2) ...
➜  ~ apt purge docker-ce-rootless-extras docker-buildx-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libslirp0 pigz slirp4netns
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  docker-buildx-plugin* docker-ce-rootless-extras*
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 102 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 64111 files and directories currently installed.)
Removing docker-buildx-plugin (0.16.2-1~debian.12~bookworm) ...
Removing docker-ce-rootless-extras (5:27.2.0-1~debian.12~bookworm) ...
➜  ~ apt purge docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libslirp0 pigz slirp4netns
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  docker-compose-plugin*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 63.3 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 64102 files and directories currently installed.)
Removing docker-compose-plugin (2.29.2-1~debian.12~bookworm) ...

30个帮你提高效率的BASH别名

alias其实就是一个命令的快捷方式,为了将复杂的命令简化成简洁的样子。比如我们常用的ll命令其实就是ls -l命令的alias,这里的ll就是一个alias

显示alias

使用alias显示当前所有别名,默认情况下将显示当前用户定义的所有alias

$ alias
alias ..='cd ..'
alias ipython='winpty ipython.exe'
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias ts='date +%s'

定义新的alias

定义新的alias方法如下:

alias 名称=alias 名称='命令'
alias 名称='命令 参数1 参数2'
alias 名称='/路径/脚本'
alias 名称='/路径/脚本.pl 参数1'

我们常用clear命令来清屏,但每次输入clear有点长,那么就可以为其定义一个简洁的alias

alias c='clear'

通过以上操作,就为clear命令定义了一个名为calias,那么下次输入c命令就相当于执行了clear命令。

提示:可以将alias定义添加到~/.bashrc文件中以保证每次重启都会生效。

临时禁用alias

对于已经定义的alias可以使用以下方法临时禁用。

## 命令完整目录 
/usr/bin/clear
## 使用反斜杠忽略alias
\c
## 使用/bin/ls命令并忽略ls的alias 
command ls

删除alias

想要删除已经定义的alias,就需要使用unalias命令,使用实例如下:

## 使用alias
$ ll
total 10
-rw-r--r-- 1 bbq 197121  411 Jun 10  2023 id_ed25519
-rw-r--r-- 1 bbq 197121   96 Jun 10  2023 id_ed25519.pub
-rw-r--r-- 1 bbq 197121 1957 Aug 14 18:36 known_hosts
-rw-r--r-- 1 bbq 197121 1109 Aug  6 15:23 known_hosts.old
## 删除alias
$ unalias ll
## 提示alias不存在了
$ ll
bash: ll: command not found

提示:如果你将alias添加到~/.bashrc文件中,记得也要删除。

nvtop – Linux下一款强大的GPU任务监视器

nvtop 命令是基于 ncurses(新的 curses 库,在终端中显示信息)的 GPU 状态查看器,用于 AMD、Intel 和 NVIDIA GPU。换言之,您可以将此交互式 GPU 进程查看器用于 Linux 上的以下 GPU:

  • 使用 amdgpu 驱动程序的 AMD GPU。
  • 使用 i915 Linux 驱动程序的 Intel 显卡。
  • 使用 NVIDIA 驱动程序的 Nvidia GPU 以及从 GeForce 600、GeForce 800M 和后续产品开始的任何东西都应该可以正常工作。
  • Qualcomm 开发的 Adreno GPU
  • Apple GPU(M 系列)

在Linux上安装nvtop

  • Arch Linux

    sudo pacman -Syu nvtop
    
  • Gentoo Linux

    sudo layman -a guru
    sudo emerge -av nvtop
    
  • Ubuntu Impish (21.10), Debian buster (stable)

    sudo apt update
    sudo apt install nvtop
    
  • Fedora Linux version 36+

find命令使用实例

find按名称搜索文件

$ find ./ -name dis55.csv
./dis55.csv
./shell/dis55.csv

find按扩展名搜索文件

$ find ./ -name "*.TAB"
./dis54.TAB
./dis55.TAB
./ltebaseinfo.TAB
./newsite_nr.TAB
./nrbaseinfo.TAB

find查找最近第7天修改过的文件

$ find ./ -mtime 7
./ST_DOC/netcare_20240805083230.png

find查找最近7天内修改过的文件

$ find ./ -mtime -7
./ST_DOC/netcare_20240807084933.png
./ST_DOC/netcare_20240808083619.png
./ST_DOC/netcare_20240811130038.png
./ST_DOC/netcare_20240812083054.png
./ST_DOC/OP_SiteList.xlsx
./ST_DOC/OP_SiteList0807.xlsx
./ST_DOC/OP_SiteList0808.xlsx

find查找超过7天修改过的文件

$ find ./ -mtime +7
./ST_DOC/netcare_20240726081508.png
./ST_DOC/netcare_20240729085021.png
./ST_DOC/netcare_20240730091007.png
./ST_DOC/netcare_20240731082438.png
./ST_DOC/netcare_20240801091744.png
./ST_DOC/netcare_20240802082300.png
./ST_DOC/OP_SiteList0719.xlsx
./ST_DOC/OP_SiteList0722.xlsx
./ST_DOC/OP_SiteList0724.xlsx

find查找并删除文件

$ ls dis55.TAB
dis55.TAB
$ find ./ -name "dis55.TAB" -delete
$ ls dis55.TAB
ls: cannot access 'dis55.TAB': No such file or directory

find查找空文件或文件夹

$ find ./ -empty
./.git/objects/info
./.git/refs/tags
./newsite_lte.txt
./shell/template_lte_b1.txt
./shell/template_lte_b3.txt
./shell/template_lte_b5.txt

find查找大小超过5M的文件

$ find ./ -size +5M
./.git/objects/pack/pack-5801296dc7e415dcea25931abee82177cde60377.pack
./ltebaseinfo.txt

find查找指定用户的文件

$ find ./ -user bbq
./ST_DOC/test_image.docx
./ST_DOC/~$OP_SiteList.xlsx
./Template_PrjPara_NR_XY.xlsx
./wknote.md
./zombie_site.xlsx
./~$20240812_1723428772_NR-BSL.xlsx
./~$20240812_1723428780_NBR_4G.xlsx
./~$20240812_1723428780_NBR_5G.xlsx
./~$nr_ct_xy.xlsx
./~$SA_V15.xlsx

find查找大小小于1k的文件

find ./ -size -1k
./4G_TAC_XY/xy_psite_lte_tac_20230317
./5G_TAC_XY
./5G_TAC_XY/NR_TAC_XY
./lstmmls
./lte800_prj
./mml_templates

find查找大小5M的文件

$ find ./ -size 5M
./ltebaseinfo.xlsx

find查找指定权限的文件

$ find ./ -perm 0644
./wknote.md
./zombie_site.xlsx
./~$20240812_1723428772_NR-BSL.xlsx
./~$20240812_1723428780_NBR_4G.xlsx
./~$20240812_1723428780_NBR_5G.xlsx
./~$nr_ct_xy.xlsx
./~$SA_V15.xlsx

find查找指定文件并执行命令(压缩特定文件)

find ./ -name "*.txt" -exec gzip {} \;

find查找空文件并删除

$ find ./ -type f -empty -exec rm {} \;

find查找文件并打印内容

$ find ./ -type f -exec ls -lh {} \;

find查找文件并排除指定目录

$ find ./ -path "./shell" -prune -o -name "*.config" -print

find查找15分钟内修改过的文件

$ find ./ -mmin -15
./
./lsmml.txt
./SA_V15.xlsx

find查找文件打包压缩

 find ./ -name "*.jpg" | xargs tar -czvf jpgs.gz

find查找链接文件

$ find /usr/bin/ -type l

使用NetSetMan管理多网卡配置

出于办公需求,需要对两张网卡进行管理,包括配置IP、切换网卡等。

找到了个老牌的网络管理软件NetSetMan,使用非常方便快捷,以下是使用实例。

lanconfig wlanconfig

如上图所示,新建配置文件,命名为仅内网,选择内网网卡设备,启用IP配置,设置相应IP、掩码、网关和DNS。然后勾选适配器状态,设置为启用

添加一个适配器配置,设备选择为无线网卡,然后勾选适配器状态,设置为禁用

以上设置意思为启用内网网卡并配置IP,禁用无线网卡。

设置完成后,选择当前配置,然后在界面右上角点击激活即可生效。

也可以点击NetSetMan托盘图标,直接选择相应配置名激活生效。

下载NetSetMan

Pypi国内镜像设置

PyPI(Python包索引)是最流行的Python软件存储库,使用Pypi可查找与安装由Python社区开发和共享的软件。

由于线路问题,国内通过pypi默认镜像安装或更新软件时可能会很慢,此种情况可以通过配置国内镜像来改善。

pypi临时使用国内镜像

临时使用国内镜像来安装jupyter

pip install -i https://mirror.nju.edu.cn/pypi/web/simple jupyter

临时使用国内镜像来升级pip

python -m pip install -i https://mirror.nju.edu.cn/pypi/web/simple --upgrade pip

设置pypi默认镜像

通过以下方法可以设置默认镜像

pip config set global.index-url https://mirror.nju.edu.cn/pypi/web/simple

国内pypi镜像列表

Dufs一个灵活并功能强大的文件服务器

Dufs一个独特的文件服务器,支持静态文件、访问控制、上传、搜索和webdav功能。 dufs server

dufs特性

  • 静态文件
  • 打包下载目录为zip文件
  • 上传文件或目录,支持拖放
  • 新建、编辑、搜索文件
  • 支持上传、下载断点续传
  • 访问控制
  • 支持https
  • 支持webdav
  • curl访问

安装dufs

官方下载地址 https://github.com/sigoden/dufs/releases 国内下载地址 (密码3705)

根据系统类型下载文件,解压后只有一个dufs单文件

tar zxf dufs-v0.41.0-x86_64-unknown-linux-musl.tar.gz
mv dufs /usr/local/bin/
chmod +x /usr/local/bin/dufs

使用dufs

dufs命令行参数

dufs --help
Dufs is a distinctive utility file server - https://github.com/sigoden/dufs

Usage: dufs [OPTIONS] [serve-path]

Arguments:
  [serve-path]  Specific path to serve [default: .]

Options:
  -c, --config <file>        Specify configuration file
  -b, --bind <addrs>         Specify bind address or unix socket
  -p, --port <port>          Specify port to listen on [default: 5000]
      --path-prefix <path>   Specify a path prefix
      --hidden <value>       Hide paths from directory listings, e.g. tmp,*.log,*.lock
  -a, --auth <rules>         Add auth roles, e.g. user:pass@/dir1:rw,/dir2
  -A, --allow-all            Allow all operations
      --allow-upload         Allow upload files/folders
      --allow-delete         Allow delete files/folders
      --allow-search         Allow search files/folders
      --allow-symlink        Allow symlink to files/folders outside root directory
      --allow-archive        Allow zip archive generation
      --enable-cors          Enable CORS, sets `Access-Control-Allow-Origin: *`
      --render-index         Serve index.html when requesting a directory, returns 404 if not
                             found index.html
      --render-try-index     Serve index.html when requesting a directory, returns directory
                             listing if not found index.html
      --render-spa           Serve SPA(Single Page Application)
      --assets <path>        Set the path to the assets directory for overriding the built-in
                             assets
      --log-format <format>  Customize http log format
      --log-file <file>      Specify the file to save logs to, other than stdout/stderr
      --compress <level>     Set zip compress level [default: low] [possible values: none, low,
                             medium, high]
      --completions <shell>  Print shell completion script for <shell> [possible values: bash,
                             elvish, fish, powershell, zsh]
      --tls-cert <path>      Path to an SSL/TLS certificate to serve with HTTPS
      --tls-key <path>       Path to the SSL/TLS certificate's private key
  -h, --help                 Print help
  -V, --version              Print version

dufs使用实例

当前目录只读模式运行

Mapinfo提取图层中的经纬度

拿到一个乡镇点位的Mapinfo图层,打开后发现表结构没有经纬度信息,如下:

“tab乡镇图层”

下来介绍如何为图层添加坐标字段

Tab(表)->Maintenance(维护)->Tab Structure(表结构)

如下添加两个字段,名为logitude和latitude,类型设置为Float

“添加字段”

点击OK后会自动保存关闭图层,再次打开图层看下表内容发现两个字段已经添加,但内容为空。

“新图层字段”

下来使用CoordinateExtractor来提取坐标信息填充至新建的两个字段

Tools->Run Mapbasic Program,选择CoordinateExtractor添加至Tools菜单。

Tools->Coordinate Extractor->Extract Coordinates,打开工具,如下设置:

“提取坐标信息”

点击OK后即可打开修改后的图层,其中longitude和latitude字段已经填入坐标信息。

“修改完的图层信息”

将blogger备份批量转换为md文件

安装blog2md

apt install git npm
git clone https://github.com/unixetc/blog2md.git
cd blog2md
npm install

使用blog2md转换blogger导出的xml文件

node index.js b bak.xml outmd

处理完成后,所有的md文件将保存在outmd文件夹下。

Unixbench

Version 5.1.3 – 2011-01-13

下载地址: http://unixetc.com/res/UnixBench.zip

UnixBench是测试类Unix系统性能基本指标的一个软件;使用多个测试来测试系统性能的各个方面。然后将这些测试结果与基线系统的分数进行比较,以产生指数值,该值通常比原始分数更容易理解。然后将整组索引值组合在一起,为系统创建整体评估分数。


Unixbench使用:

  1. UnixBench从5.1版本开始包含系统测试和图形测试。如果需要图形测试,编辑Makefile文件,以确保GRAPHIC_TESTS = defined未被注释。并且确保GL_LIBS变量可用,x11perf命令可用。 如果不需要图形测试,请将Makefile文件中GRAPHIC_TESTS = defined注释掉,切记是注释掉而不是改为其他任何值。

  2. 执行 make命令。

  3. 执行 Run命令以进行系统测试; 执行Run graphics 命令以进行图形测试; 执行Run gindex 命令以同时进行系统和图形测试。

Run是用perl写的,所以得保证系统已经安装perl

For more information on using the tests, read “USAGE”.

For information on adding tests into the benchmark, see “WRITING_TESTS”.

发行备注

======================== Jan 13 ==========================

v5.1.3

Fixed issue that would cause a race condition if you attempted to compile in parallel with more than 3 parallel jobs.

小米Mix2S安装Mobian

解锁Mix2S

下载小米官方解锁工具,解锁Mix2S的bootloader。

miflash_unlock_7.6.727.43.zip 密码: 3705

下载所需文件

下载SDK Platform-Tools

下载好的文件解压,路径添加至系统环境变量。

Mobian镜像

下载地址 https://images.mobian.org/sdm845/weekly/,最新包为mobian-sdm845-phosh-20231008.tar.gz,下载后解压即可。

国内网盘下载:

  • [mobian-sdm845-phosh-20231008.boot-polaris.img]http://ct.optipng.cn#/f/18418398-1504816489-91f9f9?p=3705) (访问密码: 3705)
  • [mobian-sdm845-phosh-20231008.boot.img]http://ct.optipng.cn#/f/18418398-1504816471-08751d?p=3705) (访问密码: 3705)
  • [mobian-sdm845-phosh-20231008.rootfs.img]http://ct.optipng.cn#/f/18418398-1504820431-d0245d?p=3705) (访问密码: 3705)

安装Mobian

Mix2s关机,按住音量减+电源键进入bootloader模式,连接电脑。

## 查看连接设备
$ fastboot.exe devices                                           
4f02e5e9         fastboot

## 刷入boot镜像
$ fastboot.exe flash boot mobian-sdm845-phosh-20231008.boot-polaris.img
Sending 'boot' (23220 KB)                          OKAY [  0.516s]
Writing 'boot'                                     OKAY [  0.094s]
Finished. Total time: 1.281s
													
## 刷入系统镜像                                                                                                       
$ fastboot.exe flash system mobian-sdm845-phosh-20231008.boot.img  
Sending 'system' (40904 KB)                        OKAY \[  0.922s]                            
Writing 'system'                                   OKAY \[  0.000s]                                      
Finished. Total time: 1.859s                                                                                 

## 刷入userdata
$ fastboot.exe -S 100M flash userdata mobian-sdm845-phosh-20231008.rootfs.img
Sending sparse 'userdata' 1/35 (102041 KB)         OKAY \[  3.278s]
Writing 'userdata'                                 OKAY \[  0.000s]
Sending sparse 'userdata' 2/35 (102396 KB)         OKAY \[  3.789s]
Writing 'userdata'                                 OKAY \[  0.000s]
Sending sparse 'userdata' 3/35 (102396 KB)         OKAY \[  3.649s]
Writing 'userdata'                                 OKAY \[  0.001s]
Sending sparse 'userdata' 4/35 (95532 KB)          OKAY \[  3.449s]
Writing 'userdata'                                 OKAY \[  0.000s]
... ...
Writing 'userdata'                                 OKAY \[  0.000s]
Sending sparse 'userdata' 34/35 (100392 KB)        OKAY \[  4.788s]
Writing 'userdata'                                 OKAY \[  0.001s]
Sending sparse 'userdata' 35/35 (14549 KB)         OKAY \[  1.755s]
Writing 'userdata'                                 OKAY \[  0.001s]
Finished. Total time: 297.226s

## 清除数据
$ fastboot.exe erase dtbo
Erasing 'dtbo'                                     OKAY \[  0.005s]
Finished. Total time: 0.007s

## 重启设备
$ fastboot.exe reboot
Rebooting                                          OKAY \[  0.000s]
Finished. Total time: 0.001s

重启后进入系统,用户名为mobian,默认密码为1234

小狼毫使用搜狗词库设置方法

将搜狗个人词库导入小狼毫

备份搜狗个人词库

搜狗输入法设置->属性设置->词库->中文词库->导出/备份

将个人词库备份到本机,如下操作,导出文件名为搜狗词库备份_2023_8_10.bin

备份搜狗个人词库

转换搜狗个人词库

点击下载深蓝词库转换,下载后解压打开软件,如下所示选择备份的搜狗个人词库文件。

选择词库文件

如下设置转换选项

设置转换选项

保存词库文件为txt文件

设置转换选项

导入词库到小狼毫输入法

右键点击右下角小狼毫输入法图标,选择用户词典管理

选择当前词典,点击右下方导入文本码表,选择刚转换完保存的txt文本文件即可。

设置转换选项

搜狗细胞词库转换为小狼毫词库

有两个方法将搜狗细胞词库转换为小狼毫词库

1.使用深蓝词库转换

同上使用深蓝词库转换将细胞词库转换为txt文本,然后使用小狼毫词典管理导入。

选择细胞词库

转换细胞词库

2.使用python批量转换scel为小狼毫词典文件

点击下载scel2txt.py文件

搜狗词库下载地址 https://pinyin.sogou.com/dict/

新建scel文件夹,将下载的所有细胞词库(.scel)放到这个目录

最终目录结构如下:

alair@a1b2c3d4 MINGW64 /f/dls/ckzh
$ ls -Rl
.:
total 40
drwxr-xr-x 1 alair 197121    0 Aug 10 16:33 scel/
-rw-r--r-- 1 alair 197121 5539 Apr  7 17:21 scel2txt.py

./scel:
total 2320
-rw-r--r-- 1 alair 197121 165460 Aug 10 15:24  中国中医医院名录.scel
-rw-r--r-- 1 alair 197121 792262 Aug 10 15:23  中国医院大全【官方推荐】.scel
-rw-r--r-- 1 alair 197121 130068 Aug 10 15:28 '中国南北大菜-- 菜名大全.scel'
-rw-r--r-- 1 alair 197121  74596 Aug 10 15:23  中国地铁【官方推荐】.scel
-rw-r--r-- 1 alair 197121  91234 Aug 10 15:24  中国疗养院名录.scel
-rw-r--r-- 1 alair 197121  53140 Aug 10 15:23  中国风景名胜.scel
-rw-r--r-- 1 alair 197121 688104 Aug 10 15:23  中国高等教育名录数据库.scel
-rw-r--r-- 1 alair 197121 365740 Aug 10 15:23  中国高等院校(大学)大全【官方推荐】.scel

然后执行scel2txt.py来转换所有词库文件

Chicago95一个windows95风格的linux主题

发现了个好东西,Chicago95,一个windows95风格的linux主题。

下面是一些截图:

  • Windows 95 启动屏幕

Windows 95 启动屏幕

  • RetroTux 启动屏幕

RetroTux 启动屏幕

  • 桌面截图

程序菜单

计算器和终端

PaleMoon

LibreOffice Writer

文件管理器

email

liferea

terminal

  • XFCE4屏保锁屏 XFCE4屏保锁屏

  • LightDM登录界面 LightDM登录界面

主题包含:

  • 基于Classic95的完整图标
  • GTK2 和 GTK3 主题
  • Edited Redmond XFWM theme to more accurately reflect Windows 95
  • Chicago95 Plus! A tool to preview and install Windows 95/98/ME/XP themes
  • Plymouth theme created from scratch
  • An MS-DOS inspired theme for oh-my-zsh
  • Partial support for HiDPI monitors
  • Partial icon theme for LibreOffice 6+

必须条件:

  • GTK+ 3.22 or 3.24
  • Xfce 4.12, 4.14, 4.16
  • gtk2-engines-pixbuf (Recommended for GTK2 applications)
  • The xfce4-panel-profiles package
  • A Window compositor

文档

Click here for Chicago95 documentation and extra features.

Bash读取CSV 文件

CSV文件是使用逗号作为分隔符的文本文件,CSV文件以纯文本格式存储数据,文件的每一行都是一条数据记录。

我们可以使用bash中的while循环来读取CSV文件。IFS变量设置分隔符为,(逗号)。read命令读取每一行并将数据存储到每个字段中。

一个简单的实例

st.sh文件内容如下:

while IFS=, read -r fd1 fd2
do
    echo "$fd1 and $fd2"
done < input.csv

我们来运行下st.sh试试:

alair@op36 MINGW64 ~/Documents
$ cat input.csv
bob,18
alair,23
kim,32

alair@op36 MINGW64 ~/Documents
$ sh ./st.sh
bob and 18
alair and 23
kim and 32

处理丢失的字段

#!/bin/bash
missing=false
while IFS=, read -r fd1 fd2
do
	if [ "$fd1" == "" ]
	then
		echo "field1 is empty or no value set"
		missing=true
   	elif [ "$fd2" == "" ]
	then
		echo "field2 is empty or no value set"
		missing=true
	else
		echo "$fd1 and $fd2"
	fi
done < input.csv
if [ $missing ]
then
	echo "WARNING: Missing values in a CSV file. Operation failed!"
	exit 1
else
	echo "CSVfile read successfully!"
fi

bash解析csv文件

再来一个复杂点的实例。

树莓派最新版系统开启SSH登录和设置默认用户

下载系统为Raspberry Pi OS Lite,信息如下:

Release date: May 3rd 2023
System: 32-bit
Kernel version: 6.1
Debian version: 11 (bullseye)

下载后使用balenaEtcher写入tf卡。

进入到bootfs分区,新建ssh空文件即可开启默认ssh登录。

alair@op36 MINGW64 /f
$ touch ssh

添加默认登录用户和密码

首先使用如下命令生成密码,password为自定义密码

alair@op36 MINGW64 /f
$ echo 'password' | openssl passwd -6 -stdin
$6$lAkAjoGFYOCieBlt$9ezLlyXlizpAP7lYNJRL.1cvdQOOkn.hsTnSQP3gtJT5EpfJvqwBo/BhdbUZ
T.xMZIFyANfxf/8ckI590But20

然后还是在bootfs目录,新建userconf文件

vi userconf

写入以下内容

raspi:$6$lAkAjoGFYOCieBlt$9ezLlyXlizpAP7lYNJRL.1cvdQOOkn.hsTnSQP3gtJT5EpfJvqwBo/BhdbUZ
T.xMZIFyANfxf/8ckI590But20

保存退出即可。

以上就会添加用户名为raspi密码为password的账户信息,接下来就可以使用ssh登录进行设置了。

使用gitolite自建git服务器

服务器环境如下:

➜  ~ neofetch
  `.::///+:/-.        --///+//-:``    pi@raspi2b
 `+oooooooooooo:   `+oooooooooooo:    ----------
  /oooo++//ooooo:  ooooo+//+ooooo.    OS: Raspbian GNU/Linux 11 (bullseye) armv
  `+ooooooo:-:oo-  +o+::/ooooooo:     Host: Raspberry Pi 2 Model B Rev 1.1
   `:oooooooo+``    `.oooooooo+-      Kernel: 6.1.21-v7+
     `:++ooo/.        :+ooo+/.`       Uptime: 1 hour, 53 mins
        ...`  `.----.` ``..           Packages: 624 (dpkg)
     .::::-``:::::::::.`-:::-`        Shell: zsh 5.8
    -:::-`   .:::::::-`  `-:::-       Terminal: /dev/pts/1
   `::.  `.--.`  `` `.---.``.::`      CPU: BCM2835 (4) @ 1.000GHz
       .::::::::`  -::::::::` `       Memory: 70MiB / 921MiB
 .::` .:::::::::- `::::::::::``::.
-:::` ::::::::::.  ::::::::::.`:::-
::::  -::::::::.   `-::::::::  ::::
-::-   .-:::-.``....``.-::-.   -::-
 .. ``       .::::::::.     `..`..
   -:::-`   -::::::::::`  .:::::`
   :::::::` -::::::::::` :::::::.
   .:::::::  -::::::::. ::::::::
    `-:::::`   ..--.`   ::::::.
      `...`  `...--..`  `...`
            .::::::::::
             `.-::::-`

添加git用户

服务器添加git用户并设置密码

修复NO_PUBKEY方法

apt-update时提示如下证书不可用错误:

 The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA8E81B4331F7F50 NO_PUBKEY 112695A0E562B32A

解决方法如下:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

把所有提示NO_PUBKEY后的都添加一遍即可。

使用gitea自建git服务

安装git和sqlite

apt install git sqlite3 -y

安装gitea

下载地址在此 https://dl.gitea.com/gitea/

wget -O gitea https://dl.gitea.com/gitea/1.19.3/gitea-1.19.3-linux-amd64
chmod +x gitea
mv gitea /usr/local/bin/gitea

添加git用户

adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git User' git

新建目录

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini
export GITEA_WORK_DIR=/var/lib/gitea/

设置systemd服务

## 备份链接 https://unixetc.com/res/gitea.service
wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service
cp gitea.server /etc/systemd/system/gitea.service
sudo systemctl enable gitea
sudo systemctl start gitea

配置gitea

通过http://ip:3000来访问gitea web进行初始配置。

Void Linux修改XBPS源

Void Linux官方提供的镜像地址如下:

默认镜像地址:https://repo-default.voidlinux.org

一级镜像: 由Voidlinux官方团队维护

二级镜像:

修改XBPS镜像

mkdir -p /etc/xbps.d
cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sed -i 's|https://repo-default.voidlinux.org|https://mirrors.tuna.tsinghua.edu.cn/voidlinux/|g' /etc/xbps.d/*-repository-*.conf

修改完后更新下系统

Linux下复制文件/目录实例

拷贝文件到目录

cp sourcefile diectory

以下示例将sfile.dat文件复制到desdir目录下:

alair@e64 MINGW64 ~/Documents/example
$ cp sfile.dat desdir/
alair@e64 MINGW64 ~/Documents/example
$ ls desdir/
sfile.dat

拷贝并重命名文件

cp sourcefile sourcefile_copy

以下示例将sfile.dat文件复制并重命名为sfile_copy.dat文件:

alair@e64 MINGW64 ~/Documents/example
$ cp sfile.dat sfile_copy.dat

alair@e64 MINGW64 ~/Documents/example
$ ls
desdir/  sfile.dat  sfile_copy.dat

alair@e64 MINGW64 ~/Documents/example
$ cat sfile.dat
eof

alair@e64 MINGW64 ~/Documents/example
$ cat sfile_copy.dat
eof

通过cat命令可以看出sfile.datsfile_copy.dat两个文件内容相同。

拷贝多个文件到目录

以下示例将sfile.dat sfile1.dat sfile2.dat文件复制到desdir目录下:

alair@e64 MINGW64 ~/Documents/example
$ cp sfile.dat sfile2.dat desdir/

alair@e64 MINGW64 ~/Documents/example
$ ls desdir/
sfile.dat  sfile2.dat

拷贝时处理重复文件

默认情况下,如果目标目录中存在同名文件,则 cp 命令将覆盖该文件。

Cloudflare设置域名301永久重定向

最新版的cloudflare已经弃用了 页面规则(Page Rules) 功能,而使用 重定向规则(Redirect Rules) 来设置跳转

规则 -> 重定向规则 -> 创建规则 ,参考下图设置,点击部署完成。

cloudflare redirect rules

  • 规则名称 自定义名称
  • 当传入请求匹配时…… 选择自定义筛选表达式
  • 字段 选择主机名
  • 运算符 选择等于
  • 值 填写需要重定向的域名blog.0x8.net
  • URL 重定向 类型为动态,表达式为concat("https://unixetc.com/", http.request.uri.path),状态码为301

设置完成后我们使用curl -I来验证下结果

$ curl -I blog.0x8.net/etc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   167    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0HTTP/1.1 301 Moved Permanently
Date: Wed, 05 Jun 2024 14:16:48 GMT
Content-Type: text/html
Content-Length: 167
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Wed, 05 Jun 2024 15:16:48 GMT
Location: https://unixetc.com/etc
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=j9lIWeQVswYKqqidSUDzUvEr8XGf9R8E04whnlBIYvRcDSxArK7sQseo1lRbYUR2nRQdYiJ8vjQla3rp%2FC33QRQtFCidEtcNWxja0jraL20cgH9TOoXTlThy"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
X-Content-Type-Options: nosniff
Server: cloudflare
CF-RAY: 88f0c857e8347708-LHR

可以看到,已经将blog.0x8.net/etc正确定向到https://unixetc.com/etc

Modern Unix

常见 unix 命令的现代/更快/更健全的替代方案的集合。

bat

具有语法突出显示和 Git 集成的 cat克隆。

screenshots

exa

ls的现代替代品。

screenshots

lsd

下一代文件列表命令。向后兼容 ls

screenshots

delta

A viewer for git and diff output

screenshots

dust

用 rust 编写的更直观的 du替代方案。

screenshots

duf

更好的 df替代方案

screenshots

broot

A new way to see and navigate directory trees

screenshots

fd

A simple, fast and user-friendly alternative to find.

screenshots

ripgrep

An extremely fast alternative to grep that respects your gitignore

screenshots

ag

A code searching tool similar to ack, but faster.

Hysteria使用实例

Hysteria 是一个功能丰富的,专为恶劣网络环境进行优化的网络工具(双边加速),比如卫星网络、拥挤的公共 Wi-Fi、在中国连接国外服务器等。 基于修改版的 QUIC 协议。

  • SOCKS5 代理 (TCP & UDP)
  • HTTP/HTTPS 代理
  • TCP/UDP 转发
  • TCP/UDP TPROXY 透明代理 (Linux)
  • TCP REDIRECT 透明代理 (Linux)
  • TUN (Windows 下为 TAP)

以上是Hysteria官网的介绍,项目地址为https://github.com/HyNetwork/hysteria

最新hysteria2使用方法在这里 https://unixetc.com/post/nekoboxforandroid-hysteria2/

Hysteria

bash <(curl -fsSL https://get.hy2.sh/)
## config.yaml
server: your.domain.net:443 
auth: Se7RAuFZ8Lzg 
bandwidth: 
  up: 20 mbps
  down: 100 mbps
socks5:
  listen: 127.0.0.1:1080 
http:
  listen: 127.0.0.1:8080
tls:
  insecure: true  

以下为旧版本v1使用实例

服务端安装配置

服务器是Debian11系统,使用以下命令安装:

wget https://raw.githubusercontent.com/HyNetwork/hysteria/master/install_server.sh
bash ./install_server.sh

启用服务

RouterOS自动任务设置

调度程序可以在特定时间或指定时间间隔之后触发脚本执行。

属性

  • interval (time; default: 0s) - 两次脚本执行的间隔,如果时间间隔设置为零,则脚本仅在其开始时间执行,否则在指定的时间间隔重复执行。
  • name name) - 任务名
  • on-event (name) - 需要执行的脚本名,必须是属于 /system 脚本。
  • run-count (read-only: integer) - 运行计数器,用来监控脚本的执行情况,脚本每执行一次该计数器递增一次。
  • start-date (date) - 第一次执行脚本的日期
  • start-time (time) - 第一次执行脚本的时间
  • startup - 系统启动后 3 秒执行脚本。

备注

重新启动路由器将重置运行计数计数器。

如果必须同时执行多个脚本,它们将按照它们在调度程序配置中出现的顺序执行。如果一个计划脚本用于禁用另一个脚本,那么这个顺序就很重要。

如果需要更复杂的执行模式,通常可以通过调度多个脚本并让它们相互启用和禁用来完成。

Note: if scheduler item has start-time set to startup, it behaves as if start-time and start-date were set to time 3 seconds after console starts up. It means that all scripts having start-time is startup and interval is 0 will be executed once each time router boots. If the interval is set to value other than 0 scheduler will not run at startup

Debian11安装Qualcomm QCA9377 WIFI驱动

Optiplex 3060 micro安装完Debian11后,发现wifi无法正常驱动,于是手动弄它。

首先,将存有debian11镜像的u盘插入电脑,右键点击deiban镜像文件,选择用磁盘映像挂载器打开

‘挂载debian11安装镜像’

进入镜像挂,找到pool/main/m/make-dfsg目录,安装其中的make_4.3-4.1_amd64.deb

apt install ./make_4.3-4.1_amd64.deb

‘安装make’

下载 Qualcomm-Atheros-QCA9377-Wifi-Linux-master.zip

解压后进入目录用sudo bash ./install.sh命令来安装,完成后重启电脑即可。

Debian使用isenkram安装缺失的固件

Debian安装时提示有缺失的固件,可通过外置存储(U盘)来安装,暂时略过后继续安装系统。

系统安装完成后,进入系统可以通过安装isenkram来检测缺失的固件进行在线安装。

sudo apt install isenkram
sudo isenkram-autoinstall-firmware

修改hosts加速Microsoft Edge浏览

修改hosts加入以下内容,加速Microsoft Edge浏览,保存完毕后使用ipconfig /flushdns命令来更新DNS

0.0.0.0 c.msn.com
0.0.0.0 ntp.msn.com
0.0.0.0 ntp.msn.cn
0.0.0.0 assets.msn.cn
0.0.0.0 api.msn.com
0.0.0.0 browser.events.data.msn.com
0.0.0.0 img-s-msn-com.akamaized.net
0.0.0.0 browser.events.data.msn.cn

Ubuntu 22.04 GRUB开启os-prober多系统检测

安装os-prober

sudo apt install os-prober

设置GRUB,编辑/etc/default/grub

sudo vi /etc/default/grub

添加如下行,完成后保存运行sudo update-grub即可。

GRUB_DISABLE_OS_PROBER=false

Debian10升级Debian11

打开/etc/apt/sources.list进行编辑

vi /etc/apt/sources.list

将其中的buster替换为bullseyeVI%s/buster/bullseye/g来替换,其他编辑器自便。

替换保存完,用以下命令来进行系统升级。

apt update
apt full-upgrade

自定义安装Office2021

安装要求Windows10以上系统,右键点击下载后的ProPlus2021Retail.img,选择装载挂载镜像文件到虚拟光驱,注意查看虚拟光驱盘符。

挂载镜像文件到虚拟光驱

新建configuration.xml文件保存到D盘,内容如下:

<Configuration>
	<Add SourcePath="F:\" OfficeClientEdition="64" >
		<Product ID="ProPlusRetail">
		<Language ID="zh-CN" />
		<ExcludeApp ID="Groove" />
		<ExcludeApp ID="InfoPath" />
		<ExcludeApp ID="Lync" />
		<ExcludeApp ID="OneNote" />
		<ExcludeApp ID="Outlook" />
		<ExcludeApp ID="Publisher" />
		<ExcludeApp ID="SharePointDesigner" />
		</Product>
	</Add>  
</Configuration>

说明:

  • SourcePath 为虚拟光驱盘符,以实际情况修改。
  • ExcludeApp ID 在此选择不需要安装的组件,可用配置Access/Excel/Groove/Lync/OneDrive/OneNote/Outlook/PowerPoint/Publisher/Teams/Word。

configure.xml

CMD进入到光驱根目录,执行以下命令开始自定义安装:

Setup.exe /configure d:\configure.xml

自定义安装office

安装完成后推荐使用MAS激活,下载地址在此

按网段ping主机返回在线状态

通过以下命令,可以按网段ping所有的主机,并返回那些ip状态为在线,前提是安装nmap

命令:

  nmap -sP 220.181.38.0/24

运行结果如下:

	➜  ~ nmap -sP 220.181.38.0/24
	
	Starting Nmap 6.40 ( http://nmap.org ) at 2021-06-26 11:27 CST
	Nmap scan report for 220.181.38.97
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.98
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.99
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.129
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.130
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.132
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.133
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.134
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.135
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.136
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.137
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.138
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.139
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.140
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.141
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.142
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.143
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.144
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.145
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.146
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.148
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.149
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.150
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.151
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.152
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.153
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.154
	Host is up (0.17s latency).
	Nmap scan report for mx10.baidu.com (220.181.38.155)
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.156
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.157
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.158
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.159
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.160
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.161
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.162
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.163
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.164
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.165
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.166
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.167
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.168
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.170
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.171
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.172
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.173
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.174
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.175
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.176
	Host is up (0.21s latency).
	Nmap scan report for 220.181.38.177
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.178
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.179
	Host is up (0.15s latency).
	Nmap scan report for 220.181.38.180
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.181
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.182
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.183
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.184
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.185
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.186
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.187
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.188
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.189
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.190
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.191
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.192
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.193
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.194
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.195
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.196
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.197
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.198
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.199
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.200
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.201
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.202
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.203
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.204
	Host is up (0.15s latency).
	Nmap scan report for 220.181.38.205
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.206
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.207
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.208
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.209
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.210
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.211
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.213
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.214
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.215
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.216
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.217
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.218
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.219
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.220
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.221
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.222
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.223
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.224
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.225
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.226
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.227
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.228
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.229
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.230
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.231
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.232
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.233
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.234
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.235
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.236
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.237
	Host is up (0.18s latency).
	Nmap scan report for 220.181.38.238
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.239
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.240
	Host is up (0.15s latency).
	Nmap scan report for 220.181.38.241
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.242
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.243
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.244
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.245
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.246
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.247
	Host is up (0.16s latency).
	Nmap scan report for mx9.baidu.com (220.181.38.248)
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.249
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.250
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.251
	Host is up (0.16s latency).
	Nmap scan report for 220.181.38.252
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.253
	Host is up (0.17s latency).
	Nmap scan report for 220.181.38.254
	Host is up (0.16s latency).
	Nmap done: 256 IP addresses (125 hosts up) scanned in 24.79 seconds

Ubuntu21.04安装Gnome40

ubuntu21.04可以通过PPA源的方法安装gnome40,方法如下:

sudo add-apt-repository ppa:shemgp/gnome-40  #添加PPA源
sudo apt install mutter gnome-shell 
sudo apt upgrade

安装完成后重启系统,在会话选择中选择GNOME即可进入。

2021-04-25 20-35-24屏幕截图.png 2021-04-25 20-35-54屏幕截图.png 2021-04-25 20-36-19屏幕截图.png

删除GNOME方法如下:

sudo apt install ppa-purge && sudo ppa-purge ppa:shemgp/gnome-40
sudo apt remove gnome-session

Linux下v2rayA客户端使用实例

v2rayA是一款Project V的Linux Web GUI客户端,支持V2Ray,Xray,SS,SSR,Trojan和Pingtunnel

安装v2rayA之前需要先安装v2ray,命令如下:

➜  ~ curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh #下载安装脚本
➜  ~ bash ./install-release.sh  #运行安装脚本
➜  ~ sudo systemctl enable v2ray #开启v2ray service
Created symlink /etc/systemd/system/multi-user.target.wants/v2ray.service → /etc/systemd/system/v2ray.service.
➜  ~ sudo systemctl start v2ray 运行v2ray service

ubuntu中安装v2rayA

ubuntu下可以使用添加sources.list源来安装v2rayA

➜  ~wget -qO - https://apt.v2raya.mzz.pub/key/public-key.asc | sudo apt-key add -  #添加public key
➜  ~echo "deb https://apt.v2raya.mzz.pub/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list  #添加apt源
➜  ~sudo apt update #更新源
➜  ~ sudo apt install v2raya   #安装V2RayA
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  linux-headers-5.8.0-43-generic linux-hwe-5.8-headers-5.8.0-43 linux-image-5.8.0-43-generic linux-modules-5.8.0-43-generic
  linux-modules-extra-5.8.0-43-generic
使用'sudo apt autoremove'来卸载它(它们)下列【新】软件包将被安装:
  v2raya
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 8,681 kB 的归档。
解压缩后会消耗 23.0 MB 的额外空间。
获取:1 https://apt.v2raya.mzz.pub v2raya/main amd64 v2raya amd64 1.3.1 [8,681 kB]
已下载 8,681 kB,耗时 5秒 (1,609 kB/s)
正在选中未选择的软件包 v2raya。
(正在读取数据库 ... 系统当前共安装有 267561 个文件和目录。)
准备解压 .../v2raya_1.3.1_amd64.deb  ...
正在解压 v2raya (1.3.1) ...
正在设置 v2raya (1.3.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/v2raya.service → /etc/systemd/system/v2raya.service.
******************************
*         Completed!         *
******************************
正在处理用于 mime-support (3.64ubuntu1) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ...

设置v2rayA开机启动

通过批处理控制网卡接口

将内网网卡名改为"lan",将外网网卡名改为"wlan"

REM copyright unixetc.com

@echo off
set /p input=a:内网/b:外网/c:禁用/d:开启

if "%input%"=="a" goto MA
if "%input%"=="b" goto MB
if "%input%"=="c" goto MC
if "%input%"=="d" goto MD
if not "%input%"== "a" (if not "%input%"=="b"(if not "%input%"=="c" (if not "%input%"=="d" goto ME)))

:MA
echo 单开内网
netsh interface set interface "lan" enabled
netsh interface set interface "wlan" disabled
ping 133.64.8.1 -n 10
echo 设置完成!
pause>nul
exit

:MB
echo 单开外网
netsh interface set interface "lan" disabled
netsh interface set interface "wlan" enabled
ping baidu.com -n 10
echo 设置完成!
pause>nul
exit

:MC
echo 禁用网络
netsh interface set interface "lan" disabled
netsh interface set interface "wlan" disabled
echo 设置完成!
pause>nul
exit

:MD 
echo 开启网络
netsh interface set interface "lan" enabled
netsh interface set interface "wlan" enabled
echo 设置完成!
pause>nul
exit

:ME
echo 啥都没干,退下!
pause>nul
exit

文本加密和猴子分桃

两道编程小题:

  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
#include <iostream>
using namespace std;

int main ()
{
   int n[ 4 ]= {3,5,7,9}; 
   int p[4]={0,0,0,0 };
   int jh =0 ;
   
for (int c=0;c<4;c++)  
{
	p[c]=(n[c]+5)%10;
}

jh=p[0];p[0]=p[3];p[3]=jh;
jh=p[1];p[1]=p[2];p[2]=jh;

cout<<endl<<"Encrypted Code: ";   

 for ( int j = 0; j < 4; j++ ) 
   {
       cout <<  p[ j ] ;
   }
   return 0;
}
  1. 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
#include <iostream>
using namespace std;

int main()
{
    int s, l, t,i;
    l = 1;
        for (i=1; i<5; i++)
            l *= 5;
        s = 1+5*(l-1);
        t = s;
        for (i=1; i<=4; i++)
            t = (t-1)/5*4;
       cout<<s<<endl;
    return 0;
}

JingOS试用体验

JingOS-全球首个基于ARM架构,专为平板打造的Linux。

此次为虚拟机安装试用体验,虚拟机配置如下:

虚拟机配置

LiveCD系统体验

磁盘检查&引导加载

jingos-2021-03-17-17-13-17.png

jingos-2021-03-17-17-13-32.png

欢迎界面

jingos-2021-03-17-17-15-13.png

jingos-2021-03-17-17-15-19.png

默认的PIN为123456

jingos-2021-03-17-17-15-05.png

锁屏界面,上划解锁

jingos-2021-03-17-17-14-46.png

home页,底部为dash区域

jingos-2021-03-17-17-15-24.png

jingos-2021-03-17-17-15-40.png

左上角下滑为通知区,右上角下滑为快速设置区

jingos-2021-03-17-17-15-45.png

jingos-2021-03-17-17-15-53.png

快捷截图以及完成提示

jingos-2021-03-17-17-16-12.png

蓝牙设置

jingos-2021-03-17-17-16-54.png

显示设置

jingos-2021-03-17-17-17-13.png

系统信息

jingos-2021-03-17-17-17-09.png

账户设置

jingos-2021-03-17-17-17-02.png

移动网络设置

jingos-2021-03-17-17-17-06.png

时间日期设置

jingos-2021-03-17-17-17-17.png

虚拟键盘设置

jingos-2021-03-17-17-17-20.png

终端程序

jingos-2021-03-17-17-19-08.png

软件管理器

jingos-2021-03-17-17-17-56.png

安装JingOS到本地磁盘

打开终端输入以下命令开始安装

sudo -E calamares

jingOS安装过程

按照提示一步步安装完成即可重启使用。

将Hugo站点部署到Cloudflare Pages

建立Hugo站点

参考使用hugo建立静态个人网站,将新建的站点push到github上。

设置Cloudflare Pages

登录https://dash.cloudflare.com/,打开Cloudflare Pages,点击Get started开始设置。

点击创建项目

创建项目

接下来选择存储库,通过gihub账户授权后,选择账户下的hugo存储库,点击开始设置

选择存储库

进入设置构建和部署,参考下图设置好后点击保存并部署开始部署。

设置构建和部署

以下为一次部署成功的详细信息,点击其中的二级域名即可浏览。

部署详细信息

构建日志如下:

20:05:17.479	Initializing build environment
20:05:44.784	Finished
20:05:44.784	Cloning repo
20:05:48.384	Finished
20:05:49.122	Installing dependencies
20:05:49.165	Python version set to 2.7
20:05:52.705	v12.18.0 is already installed.
20:05:53.071	Now using node v12.18.0 (npm v6.14.4)
20:05:53.092	Started restoring cached build plugins
20:05:53.103	Finished restoring cached build plugins
20:05:53.594	Attempting ruby version 2.7.1, read from environment
20:05:54.935	Using ruby version 2.7.1
20:05:55.260	Using PHP version 5.6
20:05:55.308	5.2 is already installed.
20:05:55.311	Using Swift version 5.2
20:05:55.311	Installing Hugo 0.54.0
20:05:56.249	Hugo Static Site Generator v0.54.0-B1A82C61A/extended linux/amd64 BuildDate: 2019-02-01T10:04:38Z
20:05:56.249	Started restoring cached go cache
20:05:56.251	Finished restoring cached go cache
20:05:56.738	go version go1.14.4 linux/amd64
20:05:56.742	go version go1.14.4 linux/amd64
20:05:56.751	Installing missing commands
20:05:56.752	Verify run directory
20:05:56.752	Executing user command: hugo
20:05:56.788	Building sites … 
20:05:56.788	                   | EN  
20:05:56.788	+------------------+----+
20:05:56.788	  Pages            |  4  
20:05:56.788	  Paginator pages  |  0  
20:05:56.789	  Non-page files   |  0  
20:05:56.789	  Static files     |  3  
20:05:56.789	  Processed images |  0  
20:05:56.789	  Aliases          |  0  
20:05:56.789	  Sitemaps         |  1  
20:05:56.789	  Cleaned          |  0  
20:05:56.789	
20:05:56.789	Total in 5 ms
20:05:56.790	Finished
20:05:57.225	Deploying site
20:06:00.105	Finished

添加自定义域名

进入到Cloudflare Pages中可以点击详细的部署实例,点击自定义域添加自定义域名,如下:

使用hugo建立静态个人网站

安装Hugo

Hugo程序可以从这里下载

Windows建议下载hugo_extended_0.81.0_Windows-64bit.zip,其他系统可下载对应版本。

另,CentOS安装hugo可参考此文

使用hugo

首先使用hugo new test来建立新的站点。

$ hugo new site test
Congratulations! Your new Hugo site is created in D:\test.

Just a few more steps and you're ready to go:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/ or
   create your own with the "hugo new theme <THEMENAME>" command.
2. Perhaps you want to add some content. You can add single files
   with "hugo new <SECTIONNAME>\<FILENAME>.<FORMAT>".
3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.

新建的站点没有任何内容,也没有主题,下来需要添加主题。

9个简易拉伸训练动作

筋长一寸,多活一年,大家一起惜命吧! -_-!

  • 1 两手手掌交叉互握,向上推伸展直到感觉到紧绷点停住,保持不动。动作中配合呼吸, 且停留10秒钟以上。

拉伸动作

  • 2 一手抓着另一手都手肘,向着头部方向缓缓往内拉。动作中配合呼吸,停留15-20秒钟,换另一侧,重复相同同作。

拉伸动作

  • 3 两手放在背后互抓,徐徐地将手臂网上抬高到舒适的部位,然后保持这个姿势。 动作钟配合呼吸, 停留10-15秒钟。

拉伸动作

  • 4 两脚打开与肩同宽,膝盖微弯,一手向上伸直横越头部向外伸展,另一手自然放在腹前, 腰部向外弯曲伸展。 动作中配合呼吸,停留10秒钟,换边,重复相同动作。

拉伸动作

  • 5 坐在地板上左脚平放,将另一脚跨越成弯曲状。将右手放在臀部附近,左手缓缓将弯曲的右膝盖往内推直到感觉肌肉紧绷。动作中配合呼吸,停留15-20秒钟,换边,并重复相同动作。

拉伸动作

  • 6 仰卧抓着膝盖后面,然后缓缓地将腿拉向胸部,保持腿部的伸直,另一腿保持弯曲。 动作中配合呼吸, 停留10秒钟,换边, 并重复相同动作。

拉伸动作

  • 7 保持坐姿,两脚底靠拢,让腿放松朝向地板,两手握在脚踝,手肘放在大腿上, 将大腿缓缓地往下推, 直到大腿肌肉感到紧绷为止。 动作中配合呼吸, 且停留10秒钟。

拉伸动作

  • 8 单脚站立,抓住另一脚的脚踝,然后慢慢地往后拉到臀部,注意骨盆不要倾斜, 同时保持躯干的直立。 动作中配合呼吸, 停留15-20秒钟。 换边,重复相同动作。

拉伸动作

  • 9 坐在地板上,弯曲一腿, 膝盖靠着胸部,另一腿伸直,身体向前倾斜, 两手往脚趾方向伸展。 动作中配合呼吸,停留10-15秒。换边,并重复相同动作。

拉伸动作

小米Mix2s线刷MIUI12

入手mix2s也快三年了,除了64GB存储有点捉襟见肘,其他方面都好好地,对于我来说够用就好。

不过官方已经停更了,想要体验最新的MIUI12.5已经是痴心妄想,最新版的MIUI12使用体验实在无法恭维。

因此只能将其刷回MIUI11,以下为线刷步骤。

解锁Bootloader

线刷前需要先解锁Bootloader

设置->我的设备->全部参数->MIUI版本,连续点击提示打开开发者模式

设置->更多设置->开发者选项,点击打开OEM解锁

xiaomi mix2s

下载小米官方解锁工具miflash_unlock_7.6.727.43.zip (访问密码: 3705)

下载完解压后打开,安照提示解锁Bootloader

xiaomi mix2s

线刷MIUI11

下载MIUI11线刷包V12.5.1.0.QDGCNXM/polaris_images_V12.5.1.0.QDGCNXM_20210707.0000.00_10.0_cn_fccb4b63b7.tgz

下载线刷工具MiFlash2020-3-14-0.rar (访问密码: 3705)

将下载后的线刷包和工具解压,打开工具首先安照提示安装驱动。

设备关机,同时长按待电源键和音量键下,进入Fastboot模式后用数据线连接电脑后(Fastboot模式会显示一只兔子在维修机器人),连接电脑选择设备和刷机包文件夹点击刷机即可。

xiaomi mix2s

小米Mix2s官方历史线刷

以下为小米Mix2s官方历史(zip文件)/线刷包(tgz文件)

V12.0.1.0Q

V11.0.3.0Q

V11.0.1.0Q

V11.0.3.0

V11.0.2.0

V10.3.5.0

V10.3.4.0

V10.3.3.0

V10.3.2.0

V10.3.1.0

V10.2.2.0

V10.2.1.0

V10.0.7.0

V10.0.3.0

V9.6.10.0

RB750Gr3安装OpenWRT实例

RB750Gr3备份license key

原系统的license key最好备份下,以备还原官方系统。

电脑连接路由器LAN口,用Winbox登录路由器,在system下找到license管理,将license export即可备份。

下载openwrt镜像

一共需要两个文件

Firmware OpenWrt Install

Firmware OpenWrt Upgrade

第一个是网络引导安装镜像,第二个是升级包,上面链接失效的话可以去官方下载页找找。

网络引导写入initramfs kernel

这里使用的工具是Tiny PXE,下载pxesrv_Tiny_PXE_Server_1.0.0.23.zip 密码3705

下载后,编辑config.ini文件,在[dhcp]部分下添加rfc951=1参数

右键管理员打开pxesrv.exe

  • 最上面默认为HTTPd
  • Option 54(DHCP Server)处,勾选当前固网IP(192.168.1.10)
  • 在Boot File中Filename后,选择openwrt-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin文件
  • 将Boot File中Filename if use-class=gPXE or iPXE去掉勾选
  • 其余默认即可,点击右上角三个按钮中间的Online

将网线连接到路由器WAN口,断电,用卡针按住RES按钮,上电后观察USR灯,连闪三下后,再闪一下后熄灭马上放开RES按钮,此时路由器进入netboot模式

看到Tiny pxe窗口出现DoReadFile:openwrt-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin即可,如下log:

14:10:50 ROOT=D:\\rb750\\
14:10:50 DHCPd 192.168.1.10:67 started...
14:10:50 TFPTd 192.168.1.10:69 started...
14:10:51 HTTPd:80 started...
14:11:27 DHCPd:DISCOVER received, MAC:64-D1-54-9F-79-0F, XID:9D74838A
14:11:28 DHCPd:OFFER sent, IP:192.168.1.11, XID:9D74838A
14:11:28 DHCPd:REQUEST received, MAC:64-D1-54-9F-79-0F, XID:9D74838A
14:11:28 DHCPd:ACK sent, IP:192.168.1.11, XID:9D74838A
14:12:01 DHCPd:REQUEST received, MAC:64-D1-54-9F-79-0F, XID:ECAC163F
14:12:01 DHCPd:BOOTP REQUEST
14:12:01 TFTPd:DoReadFile:openwrt-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin B:1452 T:0
14:12:01 DHCPd:ACK sent, IP:192.168.1.21, XID:ECAC163F
14:12:19 DHCPd:DISCOVER received, MAC:64-D1-54-9F-79-11, XID:F919527A
14:12:19 DHCPd:OFFER sent, IP:192.168.1.12, XID:F919527A
14:12:19 DHCPd:REQUEST received, MAC:64-D1-54-9F-79-11, XID:F919527A
14:12:19 DHCPd:ACK sent, IP:192.168.1.12, XID:F919527A

此时initramfs kernel已经以RAM方式运行在路由器中,可以关闭Tiny PXE了

OpenWRT/LEDE更换国内源

https://mirrors.ustc.edu.cn/openwrt/

说明:

OpenWRT/LEDE 下载站镜像。

这是对https://downloads.openwrt.org/的完整镜像,内容包括官方支持的平台的 ROM、SDK 及工具链、软件仓库镜像等。

使用说明: 一般情况下,下载来自downloads.openwrt.org的文件时,将 URL 中的这部分域名替换为mirrors.ustc.edu.cn/openwrt即可。 如要使用本镜像作为 OpenWRT/LEDE 系统 opkg 软件仓库,SSH 登录路由器编辑/etc/opkg/distfeeds.conf文件,同样按照上面的方法替换域名即可。可以使用如下命令操作:

sed -i 's/downloads.openwrt.org/mirrors.ustc.edu.cn\/openwrt/g' /etc/opkg/distfeeds.conf

之后运行opkg update更新软件索引,注意检查是否出现错误。

via https://mirrors.ustc.edu.cn/help/openwrt.html

Android上免root安装Linux

准备工作

安装Termux 下载地址:官方 国内

建议将Termux软件源替换为国内,参考Termux编辑软件源

安装Linux系统

安装ubuntu

pkg install wget openssl-tool proot -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Ubuntu/ubuntu.sh && bash ubuntu.sh

源地址无法访问,国内可使用http://unixetc.com/res/ubuntu.sh替换。

安装完成后使用./start-ubuntu.sh启动进入系统。

替换ubuntu port软件源并更新系统

sed -i 's,http://ports.ubuntu.com/ubuntu-ports,http://mirrors.ustc.edu.cn/ubuntu-ports,' /etc/apt/sources.list
apt update&&apt upgrade -y

安装xfce桌面环境

安装xfce

wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/Xfce4/de-apt-xfce4.sh && bash de-apt-xfce4.sh

源地址无法访问,国内可使用http://unixetc.com/res/de-apt-xfce4.sh替换。

安装mate

wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/Mate/de-apt-mate.sh && bash de-apt-mate.sh

源地址无法访问,国内可使用http://unixetc.com/res/de-apt-mate.sh替换。

安装lxqt

wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/LXQt/de-apt-lxqt.sh && bash de-apt-lxqt.sh

源地址无法访问,国内可使用http://unixetc.com/res/de-apt-lxqt.sh替换。

安装lxde

wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/DesktopEnvironment/Apt/LXDE/de-apt-lxde.sh && bash de-apt-lxde.sh

源地址无法访问,国内可使用http://unixetc.com/res/de-apt-lxde.sh替换。

开启SSH登录

安装开启SSH

wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/SSH/Apt/ssh-apt.sh && bash ssh-apt.sh

源地址无法访问,国内可使用http://unixetc.com/res/ssh-apt.sh替换。

RB750Gr3通过Netinstall恢复官方系统

在官网下载NetInstall https://mikrotik.com/download 以及routeros系统。

参考下图,将固网中的IP4设置下。

ip设置

打开下载后的Netinstall程序,如下点击Net booting,设置IP。

Netinstall

将网线连接到路由器WAN口,断电,用卡针按住RES按钮,上电后观察USR灯,连闪三下后,再闪一下后熄灭马上放开RES按钮,此时路由器进入netboot模式。

然后将路由器连接到电脑固网网口。

连接后点击识别出的设备,然后点击Browse选择下载好的routeros系统文件(.bin),勾选之。

点击install开始安装,完成后点击reboot即可。

OpenWRT通过SSH 安装LUCI

安装完OpenWRT基本系统后,是无法通过WEB来进行管理的,需要安装LUCI才可以

将路由器WAN口连接到一个已经联网的路由器下,然后电脑LAN口连接新路由,通过以下方法开安装LUCI。

建议安装前将OpenWRT/LEDE更换国内源,这样可以更加快速安装软件。

$ ssh [email protected]            #默认密码为空
The authenticity of host \'192.168.1.1 (192.168.1.1)\' can\'t be established.
RSA key fingerprint is SHA256:UElnmEDlnbdNWutb3J8IjXbBMxbdOJYzHNYYp9lTYKw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added \'192.168.1.1\' (RSA) to the list of known hosts.
BusyBox v1.30.0 () built-in shell (ash)
_______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
|__| W I R E L E S S   F R E E D O M
-----------------------------------------------------
OpenWrt SNAPSHOT, r9028-75fdf3b
-----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the \"passwd\" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~# opkg update    #更新软件源
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/kmods/4.14.91-1-26f5ed44a4b010654f5ec58e94ee7c46/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_kmods
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/kmods/4.14.91-1-26f5ed44a4b010654f5ec58e94ee7c46/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_luci
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_packages
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_routing
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/routing/Packages.sig
Signature check passed.\r\nDownloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_telephony
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/telephony/Packages.sig
Signature check passed.\r\nroot@OpenWrt:~# opkg install luci     #安装luci
Installing luci (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci_git-19.013.40861-80ac438-1_all.ipk
Installing uhttpd (2018-11-28-cdfc902a-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/uhttpd_2018-11-28-cdfc902a-1_mipsel_24kc.ipk
Installing liblua (5.1.5-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/liblua_5.1.5-1_mipsel_24kc.ipk
Installing lua (5.1.5-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/lua_5.1.5-1_mipsel_24kc.ipk
Installing luci-lib-nixio (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-lib-nixio_git-19.013.40861-80ac438-1_mipsel_24kc.ipk
Installing luci-lib-ip (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-lib-ip_git-19.013.40861-80ac438-1_mipsel_24kc.ipk
Installing rpcd (2018-11-28-3aa81d0d-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/rpcd_2018-11-28-3aa81d0d-1_mipsel_24kc.ipk
Installing libubus-lua (2018-10-06-221ce7e7-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/base/libubus-lua_2018-10-06-221ce7e7-1_mipsel_24kc.ipk
Installing luci-lib-jsonc (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-lib-jsonc_git-19.013.40861-80ac438-1_mipsel_24kc.ipk
Installing liblucihttp (2018-05-18-cb119ded-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/liblucihttp_2018-05-18-cb119ded-1_mipsel_24kc.ipk
Installing liblucihttp-lua (2018-05-18-cb119ded-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/liblucihttp-lua_2018-05-18-cb119ded-1_mipsel_24kc.ipk
Installing luci-base (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-base_git-19.013.40861-80ac438-1_mipsel_24kc.ipk
Installing libiwinfo (2018-12-25-dd508af4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/packages/libiwinfo_2018-12-25-dd508af4-1_mipsel_24kc.ipk
Installing libiwinfo-lua (2018-12-25-dd508af4-1) to root...
Downloading http://downloads.openwrt.org/snapshots/targets/ramips/mt7621/packages/libiwinfo-lua_2018-12-25-dd508af4-1_mipsel_24kc.ipk
Installing luci-mod-status (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-mod-status_git-19.013.40861-80ac438-1_mipsel_24kc.ipk
Installing luci-mod-system (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-mod-system_git-19.013.40861-80ac438-1_all.ipk
Installing luci-mod-network (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-mod-network_git-19.013.40861-80ac438-1_all.ipk
Installing luci-mod-admin-full (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-mod-admin-full_git-19.013.40861-80ac438-1_all.ipk
Installing luci-theme-bootstrap (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-theme-bootstrap_git-19.013.40861-80ac438-1_all.ipk
Installing luci-app-firewall (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-app-firewall_git-19.013.40861-80ac438-1_all.ipk
Installing luci-app-opkg (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-app-opkg_git-19.013.40861-80ac438-1_all.ipk
Installing luci-proto-ppp (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-proto-ppp_git-19.013.40861-80ac438-1_all.ipk
Installing luci-proto-ipv6 (git-19.013.40861-80ac438-1) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci-proto-ipv6_git-19.013.40861-80ac438-1_all.ipk
Installing rpcd-mod-rrdns (20170710) to root...
Downloading http://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/rpcd-mod-rrdns_20170710_mipsel_24kc.ipk
Configuring luci-app-opkg.
Configuring rpcd.
Configuring liblua.
Configuring luci-lib-ip.
Configuring libubus-lua.
Configuring libiwinfo.
Configuring libiwinfo-lua.
Configuring lua.
Configuring luci-lib-nixio.
Configuring luci-lib-jsonc.
Configuring liblucihttp.
Configuring liblucihttp-lua.
Configuring luci-base.
Configuring luci-mod-system.
Configuring luci-theme-bootstrap.
Configuring luci-mod-status.
Configuring luci-app-firewall.
Configuring luci-proto-ppp.
Configuring luci-mod-network.
Configuring luci-mod-admin-full.
Configuring luci-proto-ipv6.
Configuring uhttpd.
Configuring rpcd-mod-rrdns.
Configuring luci.
root@OpenWrt:~#                #安装完成,重启即可

重启后,就可以通过访问192.168.1.1来进行web端管理了,root默认密码为空,记得添加密码咯!

使用proxychains-ng代理cmd

安装rpoxychains-ng

sudo dnf install proxychains-ng

## or
sudo apt install proxychains-ng

设置proxychains-ng代理地址

vi /etc/proxychains.conf

添加socks5 192.168.1.94 10808即可,支持多种代理方式:socks4/socks5/http,如下说明:

#        Examples:
#
#            	socks5	192.168.67.78	1080	lamer	secret
#		http	192.168.89.3	8080	justu	hidden
#	 	socks4	192.168.1.49	1080
#	        http	192.168.39.93	8080

使用proxychains-ng代理执行命令

$proxychains curl -O https://github.com/XTLS/Xray-install/raw/main/install-release.sh
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib64/proxychains-ng/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.13
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  [proxychains] Strict chain  ...  192.168.1.94:10808  ...  raw.githubusercontent.com:443  ...  OK
100 21115  100 21115    0     0   6107      0  0:00:03  0:00:03 --:--:--  6106

https://github.com/rofl0r/proxychains-ng.git

天朝安装ohmyzsh的方法

首先安装zsh

apt update&&apt ugprade -y
apt install zsh -y

如果能够正常访问github.comgithubusercontent.com,那么使用如下命令即可安装ohmyzsh

$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

如果无法访问github.com,那就建议使用gitee提供的国内镜像来安装,方法如下:

git clone https://gitee.com/mirrors/oh-my-zsh.git
cd oh-my-zsh/tools
vi ./install.sh

找到install.sh中的REMOTE=${REMOTE:-https://github.com/${REPO}.git},将其修改为REMOTE=${REMOTE:-https://gitee.com/mirrors/oh-my-zsh.git},保存即可。

使用以下命令可便携修改:

 sed -i 's%https://github.com/${REPO}.git%https://gitee.com/mirrors/oh-my-zsh.git%g' oh-my-zsh/tools/install.sh

最后执行./install.sh就可以使用天朝镜像来安装ohmyzsh

➜  ~ neofetch
       _,met$$$$$gg.          root@vmd
    ,g$$$$$$$$$$$$$$$P.       --------
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 12 (bookworm) x86_64
 ,$$P'              `$$$.     Host: Virtual Machine 7.0
',$$P       ,ggs.     `$$b:   Kernel: 6.1.0-37-amd64
`d$$'     ,$P"'   .    $$$    Uptime: 1 hour, 31 mins
 $$P      d$'     ,    $$P    Packages: 588 (dpkg)
 $$:      $$.   -    ,d$$'    Shell: zsh 5.9
 $$;      Y$b._   _,d$P'      Resolution: 1024x768
 Y$$.    `.`"Y$$$$P"'         Terminal: /dev/pts/1
 `$$b      "-.__              CPU: Intel i5-4310M (1) @ 2.693GHz
  `Y$$                        GPU: 00:08.0 Microsoft Corporation Hyper-V virtual VGA
   `Y$$.                      Memory: 356MiB / 681MiB
     `$$b.
       `Y$$b.
          `"Y$b._
              `"""

➜  ~

Github Actions自动生成Hugo站点并部署到Github Pages

使用hugo建立建立个人网站可以参考使用hugo建立静态个人网站

使用github pages来部署个人网站可以参考GithubPages部署免费网站

下面将会介绍如何通过Github Actions来将以上两个操作关联在一起并自动化完成!

自动化流程图

github建立Repositories

建立一个unixetc/ghsource.git属性为私有(private)的用来放置Hugo源码,然后再建一个unixetc/unixetc.github.io.git属性为公有(public)并设置Github Pages服务。

github设置Deploy keys与Secrets

使用ssh-keygen命令来生成私钥与公钥。

$ ssh-keygen.exe -t rsa -b 4096 -C "[email protected]"  #邮箱自定义
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/alair/.ssh/id_rsa):   #存放目录,可自定义
Created directory '/c/Users/alair/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/alair/.ssh/id_rsa  #私钥
Your public key has been saved in /c/Users/alair/.ssh/id_rsa.pub  #公钥 
The key fingerprint is:
SHA256:ZiNPDGtAKC6MA [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|      ..  +o.    |
|     .  .  o..   |
|  .   +  .... .  |
|o+ o o =  .o .   |
|+EO o = S . .    |
|o  B . % + .     |
| .o .oB *        |
| ...++ B         |
| ... .. o        |
+----[SHA256]-----+

unixetc/unixetc.gihub.io.git的设置中将公钥内容添加至Deploy keys,名称自定义,并勾选allow write access

根据A列按格式聚合B列

原表如下内容:

课程安排 “课程安排”

需要输出为以下格式表格:

输出格式 “输出格式”

方法如下:

  • A列升序排列,C2单元格写入=IF(A2=A1,B2&"/"&C1,B2)D2单元格写入=LEN(C2),结果如下:

计算结果 “计算结果”

  • D列降序排列,数据->删除重复值->按名称去重,如下图:

按照长度去重 “按照长度去重”

完成后即可得到所需要的结果:

输出格式

网络文件系统SSHFS使用实例

什么是SSHFS?

SSHFS是一个通过SSH连接到服务器的网络文件系统客户端

SSHFS允许您使用SFTP挂载远程文件系统。 大多数VPS SSH服务器默认情况下都支持并启用此SFTP访问,因此SSHFS使用非常简单,无需在服务器端执行任何操作。

项目当前状态

SSHFS由所有主要的Linux发行版本提供,并且已经在多种系统上投入生产使用多年。 但是,目前SSHFS没有任何活动的常规贡献者,并且存在许多已知问题(请参阅Bugtracker)。 当前的维护者继续应用拉取请求并进行定期发布,但是不幸的是,除了解决高影响力的问题之外,它没有能力进行任何开发。 报告错误时,请理解,除非您包含拉取请求或报告严重问题,否则您可能不会得到响应。

安装SSHFS

首先,从https://github.com/libfuse/sshfs/releases下载最新的SSHFS版本。 在Linux和BSD上,您还需要安装libfuse 3.1.0或更高版本。 在macOS上,您需要OSXFUSE。 最后,您需要带有开发标头的Glib库(应该可以从操作系统的程序包管理器中获得)。

构建和安装,我们建议使用Meson(0.38版或更高版本)和Ninja。 解压缩sshfs tarball之后,创建一个(临时)构建目录并运行Meson:

$ mkdir build; cd build
$ meson ..

通常,默认的构建选项可以正常工作。 但是,如果您要调整它们,可以使用mesonconf命令进行:

$ mesonconf                  # list options
$ mesonconf -D strip=true    # set an option

构建,测试和安装SSHFS,请使用Ninja(运行测试需要py.test Python模块):

$ ninja
$ python3 -m pytest test/    # optional, but recommended
$ sudo ninja install

CentOS安装sshfs简单方法

yum install -y epel-release
yum -y install fuse-sshfs

使用SSHFS

安装了sshfs后,运行它就非常简单:

sshfs [user@]hostname:[directory] mountpoint

建议以普通用户(而不是root)身份运行SSHFS。 为此,mountpoint必须归用户所有。 如果省略用户名,SSHFS将使用本地用户名。 如果省略目录,SSHFS将挂载(远程)主目录。 如果您需要输入密码,sshfs会要求您输入密码(实际上,它只是运行ssh,如果需要,它会要求输入密码)。

V2ray配置实例[最新v2fly]

Linux下推使用V2rayA,安装使用可参考V2rayA客户端使用实例

说明: 从V2Ray 4.27.0开始,请使用新版安装脚本,旧版安装配置实例仅供参考。

新版安装配置实例

服务端安装

下载安装脚本

➜  ~ curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh  

执行安装脚本

➜  ~ bash ./install-release.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   98k  100   98k    0     0   495k      0 --:--:-- --:--:-- --:--:--  495k
info: Installing V2Ray v4.27.5 for x86_64
Downloading V2Ray archive: https://github.com/v2fly/v2ray-core/releases/download/v4.27.5/v2ray-linux-64.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   644  100   644    0     0   5457      0 --:--:-- --:--:-- --:--:--  5457
100 12.6M  100 12.6M    0     0  8316k      0  0:00:01  0:00:01 --:--:-- 10.2M
Downloading verification file for V2Ray archive: https://github.com/v2fly/v2ray-core/releases/download/v4.27.5/v2ray-linux-64.zip.dgst
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   649  100   649    0     0   2368      0 --:--:-- --:--:-- --:--:--  2368
100   590  100   590    0     0   1053      0 --:--:-- --:--:-- --:--:--  1053
info: Extract the V2Ray package to /tmp/tmp.gWzZRTMMij and prepare it for installation.
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/[email protected]
removed: /tmp/tmp.gWzZRTMMij
info: V2Ray v4.27.5 is installed.         //安装完成
You may need to execute a command to remove dependent software: dnf remove curl unzip
Please execute the command: systemctl enable v2ray; systemctl start v2ray

配置systemd服务

➜  ~ systemctl enable v2ray //添加systemd服务模块
Created symlink /etc/systemd/system/multi-user.target.wants/v2ray.service → /etc/systemd/system/v2ray.service.
➜  ~ systemctl start v2ray  //开启v2ray服务
➜  ~ service v2ray status  //检查v2ray服务状态
Redirecting to /bin/systemctl status v2ray.service
● v2ray.service - V2Ray Service
   Loaded: loaded (/etc/systemd/system/v2ray.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-09-07 11:16:13 CST; 8s ago
 Main PID: 25897 (v2ray)
    Tasks: 6 (limit: 4566)
   Memory: 4.7M
   CGroup: /system.slice/v2ray.service
           └─25897 /usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json

Sep 07 11:16:13 bwgcn2 systemd[1]: Started V2Ray Service.
Sep 07 11:16:13 bwgcn2 v2ray[25897]: V2Ray 4.27.5 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.7 linux/amd64)
Sep 07 11:16:13 bwgcn2 v2ray[25897]: A unified platform for anti-censorship.
Sep 07 11:16:13 bwgcn2 v2ray[25897]: 2020/09/07 11:16:13 [Info] v2ray.com/core/common/platform/ctlcmd: <v2ctl message>
Sep 07 11:16:13 bwgcn2 v2ray[25897]: v2ctl> Read config:  /usr/local/etc/v2ray/config.json
Sep 07 11:16:13 bwgcn2 v2ray[25897]: 2020/09/07 11:16:13 [Warning] v2ray.com/core: V2Ray 4.27.5 started

服务端配置

默认安装完成后,启用配置文件为/usr/local/etc/v2ray/config.json,但这个默认配置为空,因此需要自定义服务端配置。

Excel经纬度计算距离公式

公式如下:

=6371004*ACOS(1-(POWER((SIN((90-B2)*PI()/180)*COS(A2*PI()/180)-SIN((90-D2)*PI()/180)*COS(C2*PI()/180)),2)+POWER((SIN((90-B2)*PI()/180)*SIN(A2*PI()/180)-SIN((90-D2)*PI()/180)*SIN(C2*PI()/180)),2)+POWER((COS((90-B2)*PI()/180)-COS((90-D2)*PI()/180)),2))/2)

将以上公式填写在E2单元格,其中A2、B2、C2、D2单元格对应前后两个经纬度值。

Windows10下访问WSL目录

Windows10下访问WSL目录的方法其实很简单,如下所示:

➜  post git:(master) explorer.exe . 

即可通过文件浏览器打开当前目录。

Joplin配置坚果云WebDAV同步

Joplin是一款开源的笔记软件,功能十分强大,支持多种同步方式,本文简介如何为joplin设置坚果云的webdav同步。

首先,登录坚果云网页版,进入账户信息->安全选项,在第三方应用管理中点击添加应用,输入自定义名称(joplin),点击生成密码。

然后打开joplin, 工具->选项->同步设置,参考如下设置:

  • 同步目标:WebDAV
  • WebDAV URL:https://dav.jianguoyun.com/dav/joplin/ ##建议添加目录joplin,否则用根目录的话会提示404失败
  • WebDAV 用户名: 坚果云用户名
  • WebDAV 密码 : 上一步生成的应用密码

然后检查同步配置提示成功即可,建议在高级选项中将最大并发连接数设置为2。

Nginx V2ray and WebSocket

安装v2ray/nginx

v2ray安装可以参考Ubuntu中v2ray客户端配置实例.

Nginx安装推荐使用OneinStack一键安装脚本

准备好使用的域名,这里以**v.fuckgfw.cn**为例。

v2ray/nginx服务端配置

v2ray安装好后,服务端配置**/etc/v2ray/config.json**如下:

{
	"inbounds": [{
		"port": 99999,  //代理端口号
		"listen": "127.0.0.1",
		"protocol": "vmess",
		"settings": {
			"clients": [{
				"id": "5c1eed18-fse4-41fs-9as9-e85s45bds9ef",
				"level": 1,
				"alterId": 64
			}]
		},
		"streamSettings": {
			"network": "ws",
			"wsSettings": {
				"path": "/fcgfw" //代理目录
			}
		}
	}],
	"outbounds": [{
		"protocol": "freedom",
		"settings": {}
	}, {
		"protocol": "blackhole",
		"settings": {},
		"tag": "blocked"
	}],
	"routing": {
		"rules": [{
			"type": "field",
			"ip": ["geoip:private"],
			"outboundTag": "blocked"
		}]
	}
}

使用OneinStack一键脚本新建一个站点,域名为v.fuckgfw.cn,采用SSL加密模式,完成后编辑**/usr/local/nginx/conf/vhost/v.fuckgfw.cn.conf**文件

斐讯N1系统信息和UNIXBENCH跑分

系统信息

alair@aml:~ $ inxi -F
System:    Host: aml Kernel: 5.5.0-rc6-aml-s9xxx aarch64 bits: 32 Console: tty 0 Distro: Ubuntu 18.04.4 LTS
Machine:   No /sys/class/dmi; using dmidecode: dmidecode is not installed.
CPU:       Quad core ARMv8 rev 4 (v8l) (-MCP-)  (ARM)
           clock speeds: max: 1512 MHz 1: 1512 MHz 2: 1512 MHz 3: 1512 MHz 4: 1512 MHz
Graphics:  Card: Failed to Detect Video Card!
           Display Server: N/A driver: N/A tty size: 254x72 Advanced Data: N/A out of X
Audio:     Card AMLGX driver: AMLGX Sound: ALSA v: k5.5.0-rc6-aml-s9xxx
Network:   Card: Failed to Detect Network Card!
Drives:    HDD Total Size: NA (-)
           ID-1: /dev/mmcblk1 model: N/A size: 7.8GB
Partition: ID-1: / size: 6.3G used: 4.8G (76%) fs: ext4 dev: /dev/mmcblk1p2
           ID-2: /boot size: 244M used: 77M (32%) fs: vfat dev: /dev/mmcblk1p1
           ID-3: /var/log size: 49M used: 2.5M (6%) fs: ext4 dev: /dev/zram0
           ID-4: swap-1 size: 0.91GB used: 0.00GB (0%) fs: swap dev: /dev/zram1
Sensors:   None detected - is lm-sensors installed and configured?
Info:      Processes: 155 Uptime: 2:39 Memory: 306.4/1741.2MB Init: systemd runlevel: 5
           Client: Shell (zsh) inxi: 2.3.56

Unixbench分数

alair@aml:~/unixbench-5.1.2 $ ./Run
make all
make[1]: Entering directory '/home/alair/unixbench-5.1.2'
Checking distribution of files
./pgms  exists
./src  exists
./testdir  exists
./tmp  exists
./results  exists
make[1]: Leaving directory '/home/alair/unixbench-5.1.2'
sh: 1: 3dinfo: not found

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.2                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   December 22, 2007                  johantheghost at yahoo period com

Wide character in print at ./Run line 1510.
Wide character in printf at ./Run line 1541.
Use of uninitialized value in printf at ./Run line 1378.
Use of uninitialized value in printf at ./Run line 1379.
Use of uninitialized value in printf at ./Run line 1378.
Use of uninitialized value in printf at ./Run line 1379.
Use of uninitialized value in printf at ./Run line 1378.
Use of uninitialized value in printf at ./Run line 1379.
Use of uninitialized value in printf at ./Run line 1378.
Use of uninitialized value in printf at ./Run line 1379.
Use of uninitialized value in printf at ./Run line 1588.
Use of uninitialized value in printf at ./Run line 1589.
Use of uninitialized value in printf at ./Run line 1588.
Use of uninitialized value in printf at ./Run line 1589.
Use of uninitialized value in printf at ./Run line 1588.
Use of uninitialized value in printf at ./Run line 1589.
Use of uninitialized value in printf at ./Run line 1588.
Use of uninitialized value in printf at ./Run line 1589.

1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3
Wide character in printf at ./Run line 1483.

4 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

4 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

4 x Execl Throughput  1 2 3

4 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

4 x File Copy 256 bufsize 500 maxblocks  1 2 3

4 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

4 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

4 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

4 x Process Creation  1 2 3

4 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

4 x Shell Scripts (1 concurrent)  1 2 3

4 x Shell Scripts (8 concurrent)  1 2 3
Wide character in printf at ./Run line 1483.

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.2)

   System: aml: GNU/Linux
   OS: GNU/Linux -- 5.5.0-rc6-aml-s9xxx -- #rc1.037 SMP PREEMPT Wed Feb 5 17:28:41 MSK 2020
   Machine: aarch64 (aarch64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: ARMv8 Processor rev 4 (v8l) (0.0 bogomips)

   CPU 1: ARMv8 Processor rev 4 (v8l) (0.0 bogomips)

   CPU 2: ARMv8 Processor rev 4 (v8l) (0.0 bogomips)

   CPU 3: ARMv8 Processor rev 4 (v8l) (0.0 bogomips)

   19:35:59 up  2:44,  1 user,  load average: 2.13, 2.07, 2.01; runlevel 5

------------------------------------------------------------------------
Benchmark Run: 一 3月 02 2020 19:35:59 - 20:03:58
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        6888588.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1373.9 MWIPS (9.8 s, 7 samples)
Execl Throughput                                877.5 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        168765.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           49199.4 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        445012.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              327924.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  69606.2 lps   (10.0 s, 7 samples)
Process Creation                               2416.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2283.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    656.5 lpm   (60.0 s, 2 samples)
System Call Overhead                         632162.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    6888588.0    590.3
Double-Precision Whetstone                       55.0       1373.9    249.8
Execl Throughput                                 43.0        877.5    204.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     168765.4    426.2
File Copy 256 bufsize 500 maxblocks            1655.0      49199.4    297.3
File Copy 4096 bufsize 8000 maxblocks          5800.0     445012.9    767.3
Pipe Throughput                               12440.0     327924.7    263.6
Pipe-based Context Switching                   4000.0      69606.2    174.0
Process Creation                                126.0       2416.8    191.8
Shell Scripts (1 concurrent)                     42.4       2283.5    538.6
Shell Scripts (8 concurrent)                      6.0        656.5   1094.1
System Call Overhead                          15000.0     632162.6    421.4
                                                                   ========
System Benchmarks Index Score                                         369.1

------------------------------------------------------------------------
Benchmark Run: 一 3月 02 2020 20:03:58 - 20:32:08
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       26826718.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     5449.1 MWIPS (9.8 s, 7 samples)
Execl Throughput                               2965.8 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        291243.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           80902.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        827300.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1252522.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 217969.4 lps   (10.0 s, 7 samples)
Process Creation                               6193.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5216.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    701.8 lpm   (60.1 s, 2 samples)
System Call Overhead                        2375324.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   26826718.3   2298.8
Double-Precision Whetstone                       55.0       5449.1    990.7
Execl Throughput                                 43.0       2965.8    689.7
File Copy 1024 bufsize 2000 maxblocks          3960.0     291243.4    735.5
File Copy 256 bufsize 500 maxblocks            1655.0      80902.5    488.8
File Copy 4096 bufsize 8000 maxblocks          5800.0     827300.0   1426.4
Pipe Throughput                               12440.0    1252522.5   1006.9
Pipe-based Context Switching                   4000.0     217969.4    544.9
Process Creation                                126.0       6193.8    491.6
Shell Scripts (1 concurrent)                     42.4       5216.1   1230.2
Shell Scripts (8 concurrent)                      6.0        701.8   1169.6
System Call Overhead                          15000.0    2375324.0   1583.5
                                                                   ========
System Benchmarks Index Score                                         943.1

YandexDisk命令行客户端

Linux的Yandex.Disk控制台客户端使您可以在Yandex.Disk上管理文件,而无需使用窗口界面或支持WebDAV的程序

与WebDAV连接相比,使用控制台客户端的优势:

  • Low system resource requirements.
  • Faster file reading and writing speeds.
  • Faster syncing with the Yandex.Disk server.
  • Manage files offline.

控制台客户端可以安装在以下操作系统上:

  • Ubuntu Linux 8.04 及以上版本
  • Debian 5 及以上版本
  • Fedora 9 及以上版本
  • Red Hat Enterprise Linux 6 及以上版本
  • CentOS 6 及以上版本

安装Yandex CLI客户端

要自动安装客户端,请使用命令进行快速软件包安装。

.deb软件包 安装示例

echo "deb http://repo.yandex.ru/yandex-disk/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/yandex-disk.list > /dev/null
wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add - 
sudo apt-get update
sudo apt-get install -y yandex-disk

要手动安装客户端,请从下面的相应链接下载相应版本的软件包。

CentOS安装Hugo

Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。

新建hugo.repo文件,sudo vi /etc/yum.repos.d/hugo.repo,填入以下内容。

[daftaupe-hugo]
name=Copr repo for hugo owned by daftaupe
baseurl=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/pubkey.gpg
repo_gpgcheck=0
enabled=1

保存后更新安装Hugo

sudo yum update
sudo yum install hugo -y

Gnome美化简介

安装必要软件

sudo apt install gnome-tweak-tool chrome-gnome-shell

安装Gnome Shell Extensions

使用Firefox浏览https://extensions.gnome.org/,第一次访问根据提示安装Firefox插件,如下图:

Click here to install browser extension

安装完成后,访问https://extensions.gnome.org/搜索安装以下三个GnomeShellExtension

  • User Themes 加载用户主题,加载目录为~/.local/share/themes
  • Dash to Dock 定制 Dash/Dock
  • Gnome Global Application Menu Gnome全局菜单

安装方法如下,进入到扩展详情后,点击标题后的开关,按照提示安装即可

install gnome shell extension

安装主题

访问https://www.pling.com/,在GTK3 Themes分类下下载主题,下载后解压拷贝至~/.local/share/themes下,然后打开gnome-tweak,在外观中即可选择已安装的主题。

~/.local/share/下新建themesiconsfonts三个目录,分别对应主题、图标、字体,这些资源都可以在https://www.pling.com/找得到。

以下为本人的桌面截图,仅供参考:

2021-04-12 14-34-40屏幕截图

2021-04-12 14-35-05屏幕截图

桌面截图

2021-04-12 14-37-45屏幕截图

2021-04-12 14-38-54屏幕截图

在Linux中安装Windows字体

在Linux中安装Windows字体

使用的系统为xubuntu 25.04,Windows11系统分区lable为sys

参考如下操作:

# 新建字体目录
alair@e6440:~$ sudo mkdir /usr/share/fonts/winfonts
# 将windows字体拷贝至新目录
alair@e6440:~$ sudo cp /media/alair/sys/Windows/Fonts/* /usr/share/fonts/winfonts/  
# 删除不需要的fon文件
alair@e6440:~$ sudo rm -rf /usr/share/fonts/winfonts/*.fon
# 应用字体目录,生成缓存
alair@e6440:~$ sudo mkfontscale 
alair@e6440:~$ sudo mkfontdir 
alair@e6440:~$ sudo fc-cache 

Armbian更改软件源

上一篇文章介绍了如何在斐迅N1上安装Armbian,现在介绍如何更改软件源为国内镜像。

编辑/etc/apt/sources.list替换为以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
deb http://ftp.debian.org/debian jessie-backports main

接着编辑/etc/apt/sources.list.d/armbian.list ,替换为以下内容:

deb http://mirrors.tuna.tsinghua.edu.cn/armbian/ buster main buster-utils buster-desktop

保存后,刷新缓存更新系统:

sudo apt update
sudo apt upgrade -y

斐讯N1安装Armbian

202501更新

最新斐讯N1可用Debian 12镜像

Armbian_25.02.0_amlogic_s905d_bookworm_6.6.68_server_2025.01.01.img.gz

境外地址

国内线路下载 Armbian_25.02.0_amlogic_s905d_bookworm_6.6.68_server_2025.01.01.img.gz (访问密码: 3705)

安装方法 使用balenaEtcher 等工具将系统写入 U盘里,然后把写好系统的U盘插入盒子。

登录 Armbian 系统 (默认用户: root, 默认密码: 1234) → 输入命令:

armbian-install

原文

最近入手斐讯N1一枚,买的是白色未拆封,到手版本为V2.19_0307_NS,刚好省了降级的麻烦,以下为斐讯N1安装armbian操作过程。

开启adb调试模式

将N1通过HDMI连接显示器,将鼠标插到N1的USB口上,开机后用鼠标点击系统版本:V2.19_0307_NS区域,多次点击后会出现提示"开启adb调试模式",即可。

从此下载Minimal_ADB_Fastboot_v1.4.3.zip,下载后安装。密码3705

准备刷机U盘

准备一个不小区8G的U盘,下载镜像写入工具balenaEtcher,下载后安装。

下载Armbian镜像,在此以Armbian_5.98_Aml-g12_Debian_buster_dev_5.4.0-rc4_20191025.img.xz为例,镜像为debian最新版,不带桌面系统。如果需要其他的可以从此处自行下载。

Armbian_5.98_Aml-g12_Debian_buster_dev_5.4.0-rc4_20191025.img.xz密码3705

另外提供一个最近版的ubuntu 22.04 server以供需要的朋友,Armbian_23.05.0_amlogic_s905d_jammy_6.1.29_server_2023.05.18.img.gz密码3705

将下载后的镜像文件用balenaEtcher写入U盘,写入完成后先别拔掉U盘,进入到BOOT分区,找到uEnv.ini文件,将dtb_name行改为如下内容:

dtb_name=/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb

然后退出U盘备用。

如果你的BOOT分区下/dtd/amlogic/目录中没有meson-gxl-s905d-phicomm-n1.dtb文件,那么可以点击meson-gxl-s905d-phicomm-n1.dtb下载放入相应目录即可。

从U盘引导Armbian

将制作好的系统U盘插到靠近HDMI一侧的U口,另外一个U口插入双公头的刷机线连接电脑,将N1通过HDMI连接显示器,并且插好网线然后开机。

n1连线

开机后可以从显示器上看到盒子的IP地址,电脑上运行Minimal ADB and Fastboot,然后输入adb connect 192.168.1.54命令连接盒子,连接成功后会有如下提示:

connected to 192.168.1.54:5555

然后输入adb shell reboot update开始从U盘引导Armbian系统,盒子重启后成功引导armbian,此时可以将usb刷机线拔掉,插入一个外接键盘,开始后面操作。

Armbian系统默认账号为root,密码为1234,按照提示输入账号信息进行登录,登录后会有更改默认密码提示,按照提示更改默认密码。

接下来会有新建账号提示:

Creating a new user account. Press <Ctrl-C> to abort

Please provide a username (eg. your forename):

可以按照该提示新建账号,或者按Ctrl+c终止,继续用root账号登录。

一加3t和树莓派UNIXBench跑分对比

一加3T

一加3T运行的是UbuntuTouch系统

一加3T系统信息

phablet@ubuntu-phablet:~$ inxi -F
Resuming in non X mode: xrandr not found. For package install advice run: inxi --recommends
System:    Host: android Kernel: 3.18.31-halium-gca027546546e-01041-g7961eb763e61 aarch64 (32 bit) Desktop: N/A
		Distro: Ubuntu 16.04 xenial
Machine:   No /sys/class/dmi; using dmidecode: dmidecode is not installed.
CPU:       Quad core AArch64 Processor rev 1 (aarch64) (-MCP-) (ARM)
		clock speeds: max: 2188 MHz 1: 1593 MHz 2: 1593 MHz 3: 1593 MHz 4: 1593 MHz
Graphics:  Card: Failed to Detect Video Card!
		Display Server: N/A driver: N/A Resolution: 165x47
Audio:     Card msm8996-tasha-mtp-snd-card driver: msm8996-tasha-m
		Sound: Advanced Linux Sound Architecture v: k3.18.31-halium-gca027546546e-01041-g7961eb763e61
Network:   Card-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter driver: cnss_wlan_pci
		IF: rename8 state: down mac: c2:ee:fb:e8:e2:ea
		Card-2: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter driver: cnss_wlan_pci
		IF: wlp1s0 state: up mac: c0:ee:fb:e8:e2:ea
Drives:    HDD Total Size: 64.0GB (8.3% used) ID-1: /dev/sda model: KLUCG4J1CB size: 57.9GB
		ID-2: /dev/sdb model: KLUCG4J1CB size: 0.0GB ID-3: /dev/sdc model: KLUCG4J1CB size: 0.0GB
		ID-4: /dev/sdd model: KLUCG4J1CB size: 0.1GB ID-5: /dev/sde model: KLUCG4J1CB size: 4.3GB
		ID-6: /dev/sdf model: KLUCG4J1CB size: 1.6GB
Partition: ID-1: / size: 2.9G used: 1.9G (67%) fs: ext4 dev: /dev/loop0
Sensors:   None detected - is lm-sensors installed and configured?
Info:      Processes: 551 Uptime: 1:02 Memory: 1668.1/5736.9MB Init: Upstart runlevel: 2
		Client: Shell (bash) inxi: 2.2.35

一加3T unixbench跑分

========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: ubuntu-phablet: GNU/Linux
OS: GNU/Linux -- 3.18.31-halium-gca027546546e-01041-g7961eb763e61 -- #1 SMP PREEMPT Wed Aug 21 20:33:17 CEST 2019
Machine: aarch64 (aarch64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
11:39:26 up 58 min,  2 users,  load average: 6.59, 7.93, 8.16; runlevel 2

------------------------------------------------------------------------
Benchmark Run: 六 9月 07 2019 11:39:26 - 12:07:49
0 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       13089762.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3000.5 MWIPS (9.8 s, 7 samples)
Execl Throughput                               1381.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        254749.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           75714.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        813273.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                              650583.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  22716.1 lps   (10.0 s, 7 samples)
Process Creation                                835.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2556.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    938.3 lpm   (60.0 s, 2 samples)
System Call Overhead                         988399.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   13089762.3   1121.7
Double-Precision Whetstone                       55.0       3000.5    545.5
Execl Throughput                                 43.0       1381.2    321.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     254749.2    643.3
File Copy 256 bufsize 500 maxblocks            1655.0      75714.9    457.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     813273.2   1402.2
Pipe Throughput                               12440.0     650583.5    523.0
Pipe-based Context Switching                   4000.0      22716.1     56.8
Process Creation                                126.0        835.5     66.3
Shell Scripts (1 concurrent)                     42.4       2556.9    603.1
Shell Scripts (8 concurrent)                      6.0        938.3   1563.9
System Call Overhead                          15000.0     988399.2    658.9
																========
System Benchmarks Index Score                                         463.9



======= Script description and score comparison completed! =======

树莓派

树莓派运行的是官方Raspbian Buster Lite版

Vivo Y913精简版线刷包

刷机所需文件:

提示:解压密码为alair

如何判断Y913版本?

关机,按住电源减+电源键进入FASTBOOT MODE,Version字段中PD1304CV后为版本号,分为A和B。

安装Y913驱动

下载驱动软件安装,完成后打开,按照提示安装adb驱动,其他两个可选。

Y913刷机

  1. 将手机关机,进入FASTBOOT模式连接电脑
  2. 下载对应版本的刷机包,解压后进入BrushPack目录,打开Fastboot刷机工具,将同目录下的flash_all.bat拖放到Fastboot刷机工具窗口,点击开始刷机,按照提示刷机完成后手机自动重启。

一加3T安装UbuntuTouch

Ubuntu Touch(又称Ubuntu Phone)是Canonical公司与Ubuntu社区所开发的移动设备操作系统,专为触屏行动设备所设计,例如:智能手机和平板电脑。

现在国外开发者Vince1171放出了Oneplus3/3t的UbuntuTouch适配版,现在我们就安装试试。

首先下载所需文件:

说明:本文以ubports-touch.rootfs-xenial-armhf.tar.gz系统镜像为例,官方还提供了以下三个镜像,想试的可以试下。

下载完成后下来开始安装,本地PC环境为LinuxMint(类Ubuntu),建议以下操作在root权限下操作。

安装工具

首先安装adb以及fastboot工具

    sudo apt install adb fastboot

解锁手机

接下来设置手机,设置->关于手机,连击版本号打开开发者选项,进入开发者选项打开OEM解锁

然后关闭手机,按住电源+音量上进入fastboot模式,链接手机和电脑。

在电脑端运行以下命令解锁

    fastboot oem unlock

按照手机提示,选择YES开始解锁,完成后手机重启。

安装Recovery

重启手机进入fastboot模式

接下来通过以下命令安装Recovery

    fastboot flash recovery TWRP_recovery.img

安装完成后,关闭手机,按电源+音量减进入Recovery

安装LineageOS

通过TWRP Recovery来刷入LineageOS ROM,完成后双清重启再次进入Recovery,通过数据线连接手机,进行后面操作。

安装UbuntuTouch

手机进入Recovery模式,通过数据线连接电脑,然后开始按照以下进行安装。

    root@hpzb14:/media/alair/data# ./halium-install.sh -p ut ubports-touch.rootfs-xenial-armhf.tar.gz system.img 
    Debug: Chosen rootfs is ubports-touch.rootfs-xenial-armhf.tar.gz
    Debug: Chosen android image is system.img
    Debug: Chosen release is ut
    
    I: Writing rootfs into mountable image
    I: Writing android image into mountable image
    I: Running post installation tasks
    enabling Mir ... [done]
    enabling SSH ... [done]
    Please enter a new password for the user 'phablet':
    输入新的 UNIX 密码: 
    重新输入新的 UNIX 密码: 
    passwd: password updated successfully
    I: Unmounting images
    I: Shrinking images
    e2fsck 1.44.1 (24-Mar-2018)
    resize2fs 1.44.1 (24-Mar-2018)
    将 .halium-install-imgs.6Kcou/system.img 上的文件系统调整为 120200 个块(每块 4k)。
    开始第 2 步(共 32687 步)
    正在重定位块            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    开始第 3 步(共 24 步)
    正在扫描inode表          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    .halium-install-imgs.6Kcou/system.img 上的文件系统现在为 120200 个块(每块 4k)。
    
    I: Pushing rootfs and android image to /data via ADB
    .halium-install-imgs.6Kcou/rootfs.img: 1 file pushed. 7.1 MB/s (3221225472 bytes in 433.702s)
    .halium-install-imgs.6Kcou/system.img: 1 file pushed. 7.7 MB/s (492339200 bytes in 61.329s)
    I: Cleaning up host
    I: Cleaning up device

然后继续在Recovery模式下:

西数MyCloud破解应用安装

感谢俄罗斯大神Fox_exe提供破解方法以及软件。

破解方法:

  1. 登录网页版后台
  2. 在URL后输入以下内容: javascript:APP_INSTALL_FUNCTION=1; APPS_EULA=1; check_app_eula(); 备用方法 按[ctrl] + [shift] + [i], 进入 “Console” , 输入以下内容按回车键: APP_INSTALL_FUNCTION=1; APPS_EULA=1; check_app_eula();
  3. 进入应用页,安装"WD_Crack",下载地址
  4. 刷新页面后就可以安装其他三方app。

一些三方软件

以下为部分软件清单,详细清单请转至下载目录»

WDMyCloud_AcronisTrueImage_2015.bin	
WDMyCloud_Adminer_4.2.5.bin	
WDMyCloud_Arcus_2.5325088.bin	
WDMyCloud_BitTorrentSync_2.3.8.bin	
WDMyCloud_ChrootedDebian_8.0-1.bin	
WDMyCloud_CustomAppList_0.5.bin	
WDMyCloud_DVBLink_5.50.bin	
WDMyCloud_Dropbox_2.00.bin	
WDMyCloud_IceCast_1.04.bin	
WDMyCloud_Joomla_1.03.bin	
WDMyCloud_MediaWiki_1.23.15.bin	
WDMyCloud_QuikFynd2_2.0.1.bin	
WDMyCloud_Sitebar_3-1.bin	
WDMyCloud_SqueezeCenter_1.03.bin	
WDMyCloud_Transmission_2.92-2.bin	
WDMyCloud_UtilsUpdate-extras_1.0.0.bin	
WDMyCloud_UtilsUpdate_17.bin
WDMyCloud_WDFacebook_0.1.bin
WDMyCloud_WDSleepFix_1.0.bin	
WDMyCloud_WDTimeline_0.1.bin	
WDMyCloud_WordPress_1.03.bin	
WDMyCloud_WordPress_4.7.2.bin	
WDMyCloud_WordPress_4.7.bin	
WDMyCloud_Z-Way-Server_2.22.bin	
WDMyCloud_aMule_1.05.bin	
WDMyCloud_abFiles_1.55.bin	
WDMyCloud_cdc-acm_0.1.bin	
WDMyCloud_clamAV_1.12.bin	
WDMyCloud_cops_1.0.1.bin	
WDMyCloud_git_1.40.bin
WDMyCloud_hamachi_2.1.0.174.bin	
WDMyCloud_nzbget_1.23.bin	
WDMyCloud_pawfaliki_0.5.2-2.bin	
WDMyCloud_phormer_3.3.1-1.bin	
WDMyCloud_phpBB_1.03.bin	
WDMyCloud_phpMyAdmin_4.0.10.18.bin	
WDMyCloud_phpSysInfo_3.2.6-2.bin	
WDMyCloud_plexmediaserver_1.16.0.1226.bin	

UbuntuTouch更换国内源

一加3T上安装完UbuntuTouch后,参考此文开启SSH登录。

接下来就是更换软件源了,国内推荐USTC和清华大学开源镜像。

通过vi /etc/apt/sources.list 编辑软件源,然后在vi中通过以下命令进行替换操作:

	:%s/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g

保存后即可。

找回windows10照片查看器

Windows10中可以通过修改注册表的方法找回照片查看器。

新建ton.reg注册表文件,内容如下:

Windows Registry Editor Version 5.00
; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.jpg]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.jpeg]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.gif]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.png]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.bmp]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.tiff]
@="PhotoViewer.FileAssoc.Tiff"

; Change Extension's File Type
[HKEY_CURRENT_USER\Software\Classes\.ico]
@="PhotoViewer.FileAssoc.Tiff"

保存后,双击运行即可,然后右键打开方式中即可看到照片查看器。

Debian10中sudo配置

Debian10中/etc/sudoers中提示了需要通过visudo来编辑该文件,如下:

This file MUST be edited with the ‘visudo’ command as root.

但奇葩的是系统中没有visudo命令,apt搜索也搜不到,-_-!

解决方法为,先使用su切换至root用户,然后apt install sudo安装sudo

然后编辑/etc/sudoers,加入以下内容,保存时使用wq!强制保存即可。

username ALL=(ALL:ALL) ALL

或者使用echo直接写入到/etc/sudoers中。

#echo "username  ALL=(ALL:ALL) ALL" >> /etc/sudoers

接下来就可以使用sudo命令来进行root权限操作了。

Ubuntu/Widnows双系统时间不一致解决方法

安装Ubuntu和Windows双系统的情况下,Ubuntu的时间总会和Windows的时间相差8小时,原因在于widows认为BIOS时间是本地时间,Ubuntu认为BIOS时间是UTC时间,即协调世界时(Universal Time Coordinated),是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。

UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示。北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。所以我们在时间上面相隔了8个小时。这个时候bios的时间和系统的时间当然是不一致,一个代表UTC时间,一个代表CST(+8时区),即上海的时间。

  • 旧版Ubuntu(Ubuntu10左右)

编辑/etc/default/rcSUTC=yes改成UTC=no

  • 新版Ubuntu(Ubuntu16.04以后)

新版Ubuntu使用systemd作为管理系统,时间由timedatectl来管理,以下为修改方法:

	$sudo timedatectl set-local-rtc 1

重启完成。

CentOS7安装ffsend快速分享文件

Firefox Send是什么?

Firefox Send是一个简单、私密的文件分享服务,使用Firefox Send端到端加密分享文件,链接到期即焚。分享更私密,文件到期真正无痕迹。

安装ffsend

ffsend是一款Firefox Send的客户端,支持多种操作系统(Linux、Windows、MacOS…)

以下为CentOS7安装ffsend实例:

#wget https://glare.now.sh/timvisee/ffsend/linux-x64-static -o /usr/local/bin/ffsend
#chmod +x /usr/local/bin/ffsend

其他版本安装可以参考ffsend官网ffsend官方下载

ffsend使用方法

上传文件

ffsend upload fenix.apk
Upload complete
https://send.firefox.com/download/4cecb9c1ab628f8e/#m5is-YRSfnBIQ-pBaSds0A

高级上传

指定下再限制20

输入密码加密文件

在上传之前归档文件

将共享链接复制到剪贴板

在浏览器中打开共享链接

ffsend upload --downloads 20 --password --archive --copy --open fenix.apk
Password: ******
https://send.firefox.com/download/4cecb9c1ab628f8e/#m5is-YRSfnBIQ-pBaSds0A

上传到自定义主机

ffsend u -h https://example.com/ my-file.txt
https://example.com/#sample-share-url

下载文件

ffsend download https://send.firefox.com/download/4cecb9c1ab628f8e/#m5is-YRSfnBIQ-pBaSds0A

Linux中转换图片为webp格式

安装WebP

Ubuntu中可以使用以下命令安装WebP

$sudo apt install webp 

其他Linux系统,可以从这里下载对应压缩包,如下:

wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2-linux-x86-64.tar.gz

解压后得到以下文件:

$tar zxf libwebp-1.0.2-linux-x86-64.tar.gz
$cd libwebp-1.0.2-linux-x86-64
$cd bin
$ll
total 12M
-rwxr-xr-x 1 100 users 679K Jan 15 12:47 anim_diff
-rwxr-xr-x 1 100 users 923K Jan 15 12:47 anim_dump
-rwxr-xr-x 1 100 users 2.4M Jan 15 12:47 cwebp
-rwxr-xr-x 1 100 users 915K Jan 15 12:47 dwebp
-rwxr-xr-x 1 100 users 2.3M Jan 15 12:47 get_disto
-rwxr-xr-x 1 100 users 703K Jan 15 12:47 gif2webp
-rwxr-xr-x 1 100 users 2.4M Jan 15 12:47 img2webp
-rwxr-xr-x 1 100 users 682K Jan 15 12:47 vwebp
-rwxr-xr-x 1 100 users 359K Jan 15 12:47 webpinfo
-rwxr-xr-x 1 100 users 375K Jan 15 12:47 webpmux
-rwxr-xr-x 1 100 users 347K Jan 15 12:47 webp_quality
  • anim_diff – 动画文件差异对比工具
  • anim_dump – 动画文件差异转存工具
  • cwebp – webp编码工具
  • dwebp – webp解码工具
  • gif2webp – 转换gif为webp
  • img2webp – 将一系列图片转换为webp动画文件
  • vwebp – webp查看软件
  • webpinfo – 查看webp图片文件信息
  • webpmux – webp复用工具

WebP转换实例

将webp工具目录添加至PATH中,编辑~/.bashrc添加以下内容:

Termux开启扩展快捷键

打开Termux,从屏幕左边缘向右滑动,打开抽屉菜单,然后长按KEYBOARD,即可打开扩展快捷键。

KEYBOARD

Termux修改软件源

好消息,最新版的termux已经可以使用termux-change-repo来修改mirror,如果提示命令不存在,安装termux-tools即可:pkg install termux-tools

change termux repo


编辑apt源配置文件sources.list

vi /data/data/com.termux/files/usr/etc/apt/sources.list`
  • 科大源

使用 sed 命令进行文本替换:

	sed -i 's,https://termux.net,https://mirrors.ustc.edu.cn/termux,' $PREFIX/etc/apt/sources.list
  • 清华源
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list
sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list

更新

	apt update&&apt upgrade -y

Termux软件管理可参考Termux软件管理

Alpine Linux安装使用实例

AlpineLinux介绍

Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。

Alpine Linux 网站首页注明“Small!Simple!Secure!Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.”概括了以下特点:

  • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
  • 安全:面向安全的轻量发行版;
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

准备工作

安装VMware虚拟机软件,新建虚拟机,配置如下:

vm虚拟机配置.png

下载AlpineLinux镜像文件alpine-standard-3.21.1-x86_64.iso,下载地址: https://www.alpinelinux.org/downloads/ 设置虚拟机光驱挂载镜像文件alpine-standard-3.21.1-x86_64.iso

开始安装Alpine Linux

启动虚拟机,开始从光驱引导系统,进入系统后,输入root登录,然后输入setup-alpine开始启动安装程序。

小Q截图-20190514142253.png

下来设置键盘布局(us)、主机名(vm)以及网络配置:

小Q截图-20190514142520.png

接着设置时区(timezone)

小Q截图-20190514142650.png

小Q截图-20190514142733.png

然后是网络代理和网络时间同步(NTP)设置

小Q截图-20190514142824.png

接下里选择软件源镜像(mirrors),我选择了兰州大学的镜像:

小Q截图-20190514142926.png

然后选择SSH服务程序,设置安装磁盘以及使用方式,完成安装后会提示 Installation is complete. Please reboot. 至此安装完成。

小Q截图-20190514143121.png

安装Awesome桌面

添加普通用户

adduser alair

小Q截图-20190514143635.png

启用Community Repository

vi /etc/apk/repositories编辑软件源配置,去掉其中Community Repository前面的注释符(#)

小Q截图-20190514143853.png

apk update&&apk upgrade更新软件。

安装awesome

使用以下命令安装awesome、lua、feh和lxterminal

Mplayer和N900镜头

诺基亚N900有前后两个镜头,前置640x480(0.3M)后置848*480(0.4M),这两个镜头都是V4L2设备,分别对应**/dev/video0/dev/video1**,因此可以方便的通过mplayergstreamer;来访问它们。

Video4Linux或V4L是一个视频截取及设备输出API,以及Linux的驱动程序框架,支持很多USB摄像头、电视调谐卡以及其他设备。 V4L2是V4L的第二个版本。Video4Linux2修复了一些设计上的程序错误,最先在2.5.X版的核心中出现。Video4Linux2的驱动程序包含了一个对Video4Linux1应用程序的兼容模式,虽然支持并不完整,并且建议在V4L2模式下使用Video4Linux1设备。

mplayer访问镜头:

$ mplayer tv:// -tv device=/dev/video0   # 后置镜头
$ mplayer tv:// -tv device=/dev/video1   # 前置镜头

如果使用前置镜头,建议使用镜像模式-vf mirror

$ mplayer tv:// -tv device=/dev/video1 -vf mirror

NokiaN900刷机方法

刷机工具以及固件文件下再地址见文章末尾。

首先安装刷机工具maemo flasher,然后下载固件,固件分以下两个文件,下载地址

  • emmc(vanilla)
  • firmware(combined)

切记,先刷emmc再刷firmware,并且两次刷机中间不可以开机。

将手机关机,然后按住键盘上的u键,再用数据线将手机链接电脑,这是手机会显示NOKIA字样界面,并且右上角显示有USB图标,即进入刷机模式。

首先写入EMMC文件,命令如下flasher-3.5 -F emmc.bin -f,以下为linux下操作实例,以供参考

    alair@zb14:~/下载$ sudo flasher-3.5 -F RX-51_2009SE_10.2010.13-2.VANILLA_PR_EMMC_MR0_ARM.bin -f
    [sudo] alair 的密码: 
    flasher v2.5.2 (Oct 21 2009)
    
    Image 'mmc', size 255947 kB
    	Version RX-51_2009SE_10.2010.13-2.VANILLA
    USB device found found at bus 002, device address 012.
    Found device RX-51, hardware revision 2204
    NOLO version 1.4.14
    Version of 'sw-release': RX-51_2009SE_21.2011.38-1_PR_MR0
    Booting device into flash mode.
    Suitable USB device not found, waiting.
    USB device found found at bus 002, device address 013.
    Raw data transfer EP found at EP2.
    Image(s) flashed successfully in 27.304 s (9373 kB/s)!   

然后断开链接,取出电池,重新将电池放入再次刷机模式链接电脑,下来写入firmware文件,命令flasher-3.5 -F firmware.bin -f -R,以下为Linux操作实例,以供参考。

NokiaN900删除不必要的软件

NokiaN900自带的软件不少,还有一些游戏,以下为这些软件的删除方式。

首先,建议安装rootsh获取ROOT权限,然后在xTermianl进行以下操作。

名称说明删除命令
Mahjong游戏apt-get remove -y osso-mahjong
Chess游戏apt-get remove -y gnuchess
Blocks游戏apt-get remove -y maemoblocks
Marbles游戏apt-get remove -y osso-lmarbles
AP News软件apt-get remove -y ap-installer
Docs To Go软件apt-get remove -y dtg-installer
Sketch画图apt-get remove -y osso-sketch
Backup备份apt-get remove -y osso-backup
PDF readerPDF阅读apt-get remove -y osso-pdf-viewer
RSSRSS订阅apt-get remove -y osso-rss-feed-reader
Notes记事本apt-get remove -y osso-notes
AmazonAmazon安装快捷方式rm /usr/share/maemo-installer-utils/amazon.install rm /usr/share/applications/hildon/amazon.desktop
FacebookFacebook安装快捷方式rm /usr/share/applications/hildon/facebook.desktop rm /usr/share/maemo-installer-utils/facebook.install
MapsNokia地图apt-get remove -y nokia-maps*
Force Weather天气预报安装快捷方式rm /usr/share/maemo-installer-utils/foreca.install rm /usr/share/applications/hildon/foreca.desktop
User Guide用户手册快捷方式rm /usr/share/applications/hildon/user-guide.desktop
Get started开始使用指南apt-get remove -y tutorial-home-applet
StoreNokia商店快捷方式rm /usr/share/applications/hildon/ovi.desktop

N900安装最新版Nemo

准备

  • 安装最新uboot
  • 一张至少4g以上的TF卡

下载地址http://releases.nemomobile.org/releases/ 以最新目录为例,下载http://releases.nemomobile.org/releases/latest/images/nemo-armv7hl-n900/里的nemo-armv7hl-n900-mmcblk0p.raw.bz2 解压出raw文件,然后改后缀为img。Windows下用Win32DiskImager将镜像文件写入TF卡。 Linux下可以使用dd命令直接写入,不需要改后缀名:

alair@e6440:/media/alair/bak/downloads$ sudo dd if=nemo-armv7hl-n900-mmcblk0p.raw of=/dev/sdc bs=1M
[sudo] alair 的密码: 
记录了3640+1 的读入
记录了3640+1 的写出
3816816641 bytes (3.8 GB, 3.6 GiB) copied, 185.35 s, 20.6 MB/s

Windwos中用winscp在你的N900的/etc/bootmenu.d/新建一个40-nemo.item文件,贴入以下内容:

ITEM_NAME="Mer-Nemo Mobile"
ITEM_ID="nemo"
ITEM_DEVICE="${EXT_CARD}p3"
ITEM_KERNEL="uImage"
ITEM_FSTYPE="vfat"
ITEM_CMDLINE="root=/dev/mmcblk0p1 rootwait ro console=ttyO2,115200n8 console=tty0 omapfb.vram=0:2M,1:2M,2:2M mtdoops.mtddev=2 quiet"
ITEM_OMAPATAG=1

Linux系统下可以直接SSH连接N900进行操作。 然后root运行

u-boot-update-bootmenu

关机,插入TF卡,然后推开键盘开机,选Mer-Nemo Mobile进入即可。

再次入手NokiaN900

时隔八年,再次入手Nokia N900

系统截图

homepage

menu

seting

Nokia N900配置

参数属性
网络GSM / HSPA
2G bandsGSM 850 / 900 / 1800 / 1900
3G bandsHSDPA 900 / 1700 / 2100
速率HSPA 10.2/2 Mbps
GPRSClass 32
EDGEClass 32
发布2009, August. Released 2009, November
状态停产
外观尺寸110.9 x 59.8 x 18 mm, 113 cc (4.37 x 2.35 x 0.71 in)
重量181 g (6.38 oz)
键盘QWERTY
SIMMini-SIM
类型TFT resistive touchscreen, 65K colors
尺寸3.5 inches, 34.9 cm2 (~52.6% screen-to-body ratio)
分辨率800 x 480 pixels, 5:3 ratio (~267 ppi density)
操作系统Maemo 5
平台TI OMAP 3430
CPU600 MHz Cortex-A8
GPUPowerVR SGX530
外置存储microSD, up to 16 GB (dedicated slot)
内置存储32 GB, 256 MB RAM
摄像头5 MP, AF
特性Carl Zeiss optics, Dual-LED flash
视频480p@25fps
制式VGA
外放Yes, with stereo speakers
3.5mm接口Yes
WLANWi-Fi 802.11 b/g, DLNA
蓝牙2.1, A2DP
GPSYes, with A-GPS; Ovi Maps
红外Yes
广播Stereo FM radio (via third party software); FM transmitter
USBmicroUSB 2.0
传感器Accelerometer, proximity
浏览器xHTML, HTML, Adobe Flash
多媒体MP3/WMA/WAV/eAAC+ player
多媒体WMV/RealVideo/MP4/AVI/XviD/DivX player
视频输出TV-out
文档PDF document viewer
图片Photo editor
电池Removable Li-Ion 1320 mAh battery (BL-5J)
待机Up to 278 h (2G) / Up to 250 h (3G)
通话时长Up to 6 h 30 min (2G) / Up to 4 h 30 min (3G)
音频播放Up to 24 h 30 min
颜色Black
SAR0.92 W/kg (head) 0.82 W/kg (body)
SAR EU0.80 W/kg (head)
价格About 160 EUR
外放Voice 66dB / Noise 66dB / Ring 70dB
音频质量Noise -93.7dB / Crosstalk -86.9dB

Maemo发布版本历史

系统版本代号构建标识发布时间首发设备备注支持设备
OS20051.1-2.2005.45-12005/11/1770770
OS20051.1-3.2005.51-132005/12/1770
OS20051.1-5.2006.13-72006/4/1770
OS20062Mistral0.2006.22-212006/5/1770
OS20062Mistral1.2006.26-82006/5/1770
OS20062.1Scirocco2.2006.39-142006/11/1770
OS20062.2Gregale3.2006.49-22007/1/1770770
OS20073Bora2.2006.51-62007/1/1N800770*, N800
OS20073.1Bora3.2007.10-72007/3/1770*, N800
OS20073.2Bora4.2007.26-82007/7/1770*, N800
OS20073.2Bora4.2007.38-22007/10/1770*, N800
OS20084Chinook1.2007.42-182007/11/1N810(N810 only)N810
OS20084Chinook1.2007.42-192007/11/1(N810 only)N810
OS20084Chinook1.2007.44-42007/11/1(N800 only)N800
OS20084Chinook2.2007.50-22007/11/1770*, N800, N810
OS20084Chinook2.2007.51-32008/1/1770*, N800, N810
OS20084.1Diablo4.2008.23-142008/6/1N800, N810
OS20084.1Diablo4.2008.30-22008/8/1N800, N810
OS20084.1Diablo4.2008.36-52008/9/1N800, N810
OS20084.1Diablo5.2008.43-72008/12/1N800, N810
Maemo 55Fremantle1.2009.42-112009/11/1N900N900
Maemo 55Fremantle1.2009.44-12010/1/1N900
Maemo 55Fremantle2.2009.51-12010/1/1PR1.1N900
Maemo 55Fremantle3.2010.02-82010/2/1PR1.1.1N900
Maemo 55Fremantle10.2010.12-92010/5/1PR1.2N900
Maemo 55Fremantle10.2010.19-12010/5/1PR1.2N900
Maemo 55Fremantle20.2010.36-22010/10/25PR1.3N900
Maemo 55Fremantle21.2011.38-12011/10/26PR1.3.1N900
MeeGo1Arlington12010/5/26N900, etc.
MeeGo1.1Irvine1.12010/10/28Aava and Nokia N900
MeeGo1.2Harmattan1.2011.34-2N950N9, N950

魅族PRO 5安装Ubuntu Touch系统

首先,下载以下几个文件:

刷出厂版ROM

给魅族PRO 5刷出厂版ROM,请将出厂版ROM的文件名命名为“update.zip”,把它放在手机内置存储根目录,同时按住音量增加电源,等待数秒,直至手机重启至Recovery模式。手机成功重启至Recovery模式后,手机屏幕将显示以下画面:

请输入图片描述

点击“开始”按钮刷机。

打开Root权限

刷机完成后,我们进入刚刚刷入的系统,登录你的Flyme帐户,然后,在“设置-指纹和安全”里开启系统的Root权限。Root权限开启成功后,手机将重启一次。

请输入图片描述

安装SuperSU

安装SuperSU并打开,选择“极客”模式并进入,SuperSU将提示你更新二进制文件,以“常规方式”安装即可。

请输入图片描述 在安装二进制文件的过程中,SuperSU将申请Root权限,请同意申请。

请输入图片描述

更新过二进制文件后,请重启手机。

安装Busybox

安装Busybox并打开,点击屏幕右下角的“INSTALL”按钮。 在安装的过程中,Busybox将申请系统的Root权限,请同意申请(此时Root授权将由SuperSU接管)。

请输入图片描述

如果Busybox的安装一切顺利,其安装日志如下:

请输入图片描述

修改系统标识

安装并打开RootBrowser,导航至以下目录:

/dev/block/platform/15570000.ufs/by-name/ 找到文件:proinfo,点击文件,选择“Open as…”,选择“Text file”,再选择“RB Text Editor”。

请输入图片描述

这期间,RootBrowser将申请系统的Root权限,请同意申请。

请输入图片描述

在“proinfo”里找到以下行: machine_type=M576_mobile_public 将其改为: machine_type=M576_intl_official 如下:

请输入图片描述

改过之后请保存更改,然后退出RootBrowser,重启手机。 手机重启过之后,请再次在RootBrowser里查看proinfo的状态。如果“machine_type=”后的文本为“M576_intl_official”,则说明我们的操作成功了。

刷国际版ROM

将国际版Flyme的刷机包命名为“update.zip”,将其放置在手机内置存储的根目录。 同时按住手机的音量增加键和电源键,等待数秒,直至手机重启到Recovery。 刷机的步骤和给魅族PRO 5刷出厂版系统一样,在Recovery里点“开始”按钮即可。 刷机完成后,国际版Flyme的桌面如下:

请输入图片描述

解锁bootloader

同时按住手机的音量减小键和电源键,等待数秒,直至其重启到Fastboot模式。 将手机通过数据线连接到计算机(请保证Fastboot驱动已经正确安装),进入Fastboot工具文件夹,在文件资源管理器里按住Shift键的同时单击鼠标右键,选择“在此处打开Powershell窗口”,并在Powershell里执行以下命令: ./fastboot oem unlock 成功解锁后,手机屏幕的右下角将显示“unlocked”字样如下:

请输入图片描述

安装Ubuntu Touch

进入https://github.com/ubports/ubports-installer,下载适应版本的UBports Installer安装程序 打开ubports installer,点击“Select device manually”按钮,在机型列表里选择“Meizu PRO 5”。

通过SSH Over USB管理树莓派Zero

树莓派Zero因为相对来说太小巧,没有提供初始化的网卡,所以我们除了通过串口连接以外,树莓派Zero也提供了USB直接连接的方式。即通过Ethernet Gadget模式来连接pc,并进行ssh连接。

Ethernet Gadget模式即USB网卡模式,比较常见的就是我们通过android手机的usb接口对pc进行网络共享的一种手段。一般电脑都会自动识别这种设备,并开启网卡进行共享。

修改配置文件

为了进行USB连接,我们需要修改BOOT文件夹下的config.txtcmdline.txt配置文件。 首先在config.txt最末行处换行添加如下代码,打开usb网卡模式:

dtoverlay=dwc2

其次在cmdline.txt文件中找到rootwait字段,并在其后面空格添加如下信息,在打开系统时开启USB网卡模式。

modules-load=dwc2,g_ether

在boot分区新建ssh文件,以打开ssh访问功能。

touch ssh

通过usb连接设备

树莓派zero有两个MicroUSB口,一个是电源插口,职司供电的功能,另外一个就是USB接口,它除了供电以外还提供OTG的功能,我们也是通过这个接口来连接PC。 此时我们可以通过以下代码连接树莓派zero:

ssh [email protected]

但此时ip段为DHCP模式获取,如果我们希望通过ip来连接,则我们需要给树莓派的usb网卡设置ip。

设置USB网卡的IP

我们可以通过ifconfig -a来查看我们现在的网卡设备,此时我们可以看到,USB0网卡设备,我们就是通过该设备连接的pc,所以我们需要设置该网卡的ip。

sudo nano /etc/network/interfaces

打开网卡配置界面,在最末行添加如下代码来设置固定IP:

allow-hotplug usb0
iface usb0 inet static
        address 192.168.7.2
        netmask 255.255.255.0
        network 192.168.7.0
        broadcast 192.168.7.255
        gateway 192.168.7.1

然后重启usb0网卡:

sudo ifdown usb0
sudo ifup usb0
ifconfig usb0

但树莓派此时实际上是从机,我们需要通过设置pc主机的ip来让树莓派0的usb网卡真正运作起来,那么我们对刚才的usb设备设置如下IP:

IP: 192.168.7.1 掩码: 255.255.255.0 路由: 192.168.7.1

此时我们就可以通过ip来进行ssh连接了:

ssh [email protected]

查出VPS流量消耗元凶

上月不知什么原因VPS流量提前消耗完了,然后通知这月10号重新reset,于是只能临时开了一个月的locvps进行过渡。好不容易熬到昨儿,reset后赶紧把数据和站点又搬回来。 今儿偶尔登录vps,突然发现流量消耗咋一直很高,两天不到就消耗了170G,额滴神呐!查看详细使用统计,发现从昨儿reset以来,OUT bps一直维持在19M左右,瞬间脑袋瓜嗡嗡的!

3119891104.webp

1516117547.webp

于是赶紧动手找找,看看消耗流量的元凶到底是谁?

首先,安装iftop来检查网络使用情况。官网在这里http://www.ex-parrot.com/~pdw/iftop/,CentOS安装方法如下:

yum install -y flex byacc libpcap ncurses ncurses-devel libpcap-devel #安装需求软件
wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
tar zxf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install

安装完成后,可以通过iftop来运行,建议加上-P参数,显示使用端口信息,如下:

1554992334.png

主界面中左侧为本地端,右侧为远端,中间的<=和=>表示流量方向。 下面的TX:发送流量/RX:接收流量/TOTAL:总流量/Cumm:运行iftop到目前时间的总流量/peak:流量峰值/rates:分别表示过去 2s 10s 40s 的平均流量

从上图来看,本地IP一直在向一个140.249.34.53发送数据,从peak统计来看,速率在22.3Mb左右,和网站统计相符。 知道端口后,可以通过 netstat -ntlup|grep 端口号来查看具体进程,没有的话可以通过yum install net-tools来安装。

1554992405.png

我试着查了下这个IP,发现是山东青岛的,再通过IP反查域名,真想才出来了,原来是百度云的相关IP。这才想起来,我安装了BaiduPCS-Go百度网盘客户端,用来对vps数据进行备份,原来搞鬼的是这个东西。找到元凶就好办了,首先把这个IP给禁了iptables -A INPUT -p tcp -s 140.249.34.53 -j DROP 禁完后,实时流量一下子就降了下来,如下所示:

1554992503.png

而后将BaiduPCS-Go删除,以绝后患!

Windows下安装Jekyll

安装Ruby/DevKit

首先下载以下两个文件进行安装

最新版可从https://rubyinstaller.org/downloads/下载

Ruby安装在D:\Ruby200, DevKit安装在D:\rubydevkit

打开CMD进入到DevKit目录,开始初始化安装

D:\rubydevkit>ruby dk.rb init
[INFO] found RubyInstaller v2.0.0 at d:/Ruby200

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

D:\rubydevkit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'd:/Ruby200'
[INFO] Installing 'd:/Ruby200/lib/ruby/site_ruby/devkit.rb'

替换Gem源

国内线路gem安装可能较慢,建议将官方的gem源修改为国内gem源。

gem sources  #列出默认源
gem sources --remove https://rubygems.org/  #移除默认源
gem sources -a https://mirrors.ustc.edu.cn/rubygems/  #添加科大源

安装jekyll

rub安装完成后,就可以通过gem install jekyll来安装Jekyll了。

多路由器同局域网组网实例

装修的时候,家里卧室阳台和客厅均预留网口,共6个,所有的网线都汇集在楼梯下的弱电箱里,但是当时没注意到弱电箱过小,后期装宽带才发现,一堆线占了很多地方,电信的光猫塞进去都不方便。

出于无奈只能买了个外置机柜,9U的,刚好放到楼梯地下不占地方。于是将光猫、主路由和NAS都塞了进去。

最终家里的网络布局如下: 网络图

其中,RB750为主路由,IP为192.168.1.11,是为了和光猫的192.168.1.1区分开。下挂R6300R6200俩AP,一个MyCloud NAS,一个小米电视。

一楼客厅的R6300v2为主AP,采用AP模式链接,IP为192.168.1.2,刷的梅林固件,下挂俩树莓派。

二楼书桌上的R6200v2也采用AP模式链接,不过是默认固件,IP为192.168.1.3

以上都为超五类网线链接,这样就可以做到全家设备同局域网共享访问,相互间都是1G速率。

CentOS7安装L2TP VPN

Centos7安装VPN

下载安装脚本:

wget /vpnscripts/vpninstall

执行安装脚本

chmod+x vpninstall
./vpninstall

安装完成后提示如下:

IPsec VPN server is now ready for use!
Connect to your new VPN with these details:
Server IP: 181.53.149.126
IPsec PSK: EMc6SpQHaBgZCnvNtLX
Username: vpnuser
Password: FzfpNGofpRdkBj2B
Write these down. You'll need them to connect!

以上为安装完成后提示的帐号信息,其中用户名(username)、密码(passowrd)和IPsec PSK密匙(IPsec PSK)为随即生成。

如果为了方便,以上帐号信息可以参考以下方法自定义:

[root@hwcsh ~]# vi /etc/ipsec.secrets  #编辑PSK
	%any  %any  : PSK "EMc6SpQHaBgZCnvNtLX"
[root@hwcsh ~]# vi /etc/ppp/chap-secrets  #编辑帐户信息
	"vpnuser" l2tpd "FzfpNGofpRdkBj2B" *
[root@hwcsh ~]#systemctl restart ipsec xl2tpd #重启服务

iPhone6配置L2TP VPN

设置->VPN->添加VPN配置,类型选择L2TP,然后参考下图设置。

搬瓦工被墙后免费更换IP

忙了一天没注意看邮件,下午才发现站点宕机,登录BWG后台检查系统运行正常,使用Ping.pePing了下才发现,可能IP被墙了。

查看Ping的结果,发现国外线路都可以浏览,国内线路丢包全是100%,看来凉凉咯!

于是网上找了下解决方案,发现BWG免费提供更换IP服务,每五周使用一次。

登录BWG后台,然后浏览https://kiwivm.64clouds.com/main-exec.php?mode=blacklistcheck,点击TestMainIP进行检查。

此页面会显示当前服务器IP以及是否被墙。

ipblock_Imag21539603289.png

如上提示,IP BLOCKED表示已经被封,点击下面的Replace Main IP更换IP,更换IP后再次浏览上面网站,即可显示IP NOT BLOCKED表示未被封锁。

注意:该功能每五周可以使用一次,且行且珍惜!

一加3T售后刷机包【救砖】

首先下载以下两个文件包:

然后,将手机完全关机,按住音量上不放,将手机和电脑连接,此时手机还是黑屏状态,电脑会有设备连接提示音。

我的电脑->右键管理->设备管理器,打开查看,第一次使用会在其他设备下出现QHSUSB_BULK带黄色感叹号的未知设备,右键点击更新驱动,手动选择刷机驱动包里面的驱动目录进行安装,如果不行的话可以使用360驱动大师进行识别安装,安装完成后会出现类似以下的设备驱动:

9008驱动

其中Qualcomm HS-USB QDLoader 9008(COM4)的新设备,就是正常驱动后的手机,俗称高通9008模式。

将下载的一加3T售后恢复包解压后,打开其中的MsmDownloadTool V3.0.exe开始刷机

9008sjImag211539387935

正常识别COM设备后,点击Start开始刷机,完成后自动重启。

MikroTik RB750Gr3系统升级

自动升级

进入路由器管理界面,通过System->Auto Upgrade功能自动升级。

或者使用Winbox连接,通过System->Auto Upgrade功能自动升级

自动升级不了的,刷不出最新系统的继续看下面手动升级。

手动升级

官方系统下载页面https://mikrotik.com/download

本次以RB750gr3为例,官方显示了以下四个系统版本

  • 5.26 (Legacy)
  • 6.40.9 (Long-term)
  • 6.43.2 (Stable)
  • 6.44beta9 (Testing)

我的RB750gr3当前版本为6.41,通过自动升级刷新不出来最新版本,因此只能手动升级。

RB750gr3MMIPS构架,从下载页面找到相应的构架。

其中MMIPS后面就备注着hEX (RB750Gr3), RBMxx点击下载**Main package,格式为.npk**文件。

通过Winbox连接路由器,将下载的npk文件拖放到File菜单,上传完成后如下所示。

File

然后system->reboot重启系统完成更新,更新后版本号可以通过Winbox标题栏看到。

提醒:Router OS 6.45.6 for RB750gr3系统包国内网盘**下载地址**

网件R6300v2梅林7.9.1

【网件系列】包括以下机型:

  • R6300V2
  • R6400
  • R6900/R7000
  • R8000
  • R8500

更新日志

** 固件更新日志:2018年09月27日(X7.9.1) :**

  • 升级软件中心核心skipd v1为skipd v3,增强软件中心稳定性。
  • 同步固件内置软件中心为最新1.4.2
  • 需要说明的是skipd v1数据库和skipd v3数据库不兼容,从X7.x系列升级X7.9.1可以向上兼容,但是从从X7.9.1降级刷固件,需要格式化jffs分区以重新建立skipd v1 数据库
  • 由于skipdv3不支持超时脚本、定时脚本,所以Tools - Script里的这两个功能不能使用了。另外因为aliddns插件使用了skipd的定时脚本功能,aliddns将会无法定时更新ip, 之后我将更新aliddns插件修复这一问题。 2018年05月08日(X7.9) :
  • 例行更新:同步asuswrt-merlin固件380.70_0代码,更新日志见asuswrt-merlin更新日志的380.70部分

刷机须知

【网件原厂】刷【koolshare改版固件】:

  1. 在原厂固件升级页面下直接上传.chk后缀的过度固件,本帖下方提供;
  2. 在过度固件里恢复一次出厂设置后,刷入.trx后缀的koolshare改版固件(如果chk版本和trx版本一致则不需要,跳到第三步);
  3. 等待刷机完成后,,在【系统管理】 – 【系统设置】内勾选:Format JFFS partition at next boot(下次重启格式化jffs分区) 和 Enable JFFS custom scripts and configs(开启jffs自定义脚本),点击应用本页面设置,成功应用后重启路由器;
  4. 重启完成后,确保路由器连上网络,然后进入软件中心,首先点击更新按钮,将更新软件中心到最新版本,然后即可安装并使用插件。

【koolshare改版固件/梅林原版固件】刷【koolshare改版固件】:

  • 在梅林固件升级页面下直接上传.trx后缀的固件,本帖下方提供;
  • 从X7.x系列升级X7.9,不需要清空配置和格式化jffs分区;
  • 从X7.x系列升级X7.9.1,不需要清空配置和格式化jffs分区,skipdv1数据库会自动升级为skipdv3;
  • 从X7.9.1降级为X7.x,不需要清空配置,但需要格式化jffs分区
  • 从X7.9.1降级为X6.x,需要清空配置并格式化jffs分区
  • 从X6.x系列升级X7.9/X7.9.1,需要清除路由器配置和格式化jffs分区;
  • 如果升级后界面有问题,尝试清除浏览器缓存或者强制刷新(ctrl + F5)一次

清配置方法1: 在路由器【系统管理】- 【恢复/导出/上传设置】- 【原厂默认值】

清配置方法2: 开机状态,长按reset直到路由自动重启。

格式化jffs: 在【系统管理】- 【系统设置】,勾选Format JFFS partition at next boot,点击应用本页面设置后重启路由器

为路由器增加虚拟内存

本文介绍,如何在安装了梅林固件的路由器上,增加虚拟内存,以运行需求资源较大的软件。

下载swap.tar.gz

下载地址 https://github.com/koolshare/koolshare.github.io/tree/acelan_softcenter_ui/swap ,下载swap.tar.gz文件。

安装插件

进入路由器后台,软件中心->离线安装,选择刚才下载的swap.tar.gz,上传并安装。

准备U盘

准备一个新的U盘,使用diskgen格式化为ext2/3/4格式,插入路由器USB接口。

使用diskgen

设置虚拟内存

进入路由器管理后台,软件中心->虚拟内存,设置大小后点击创建swap

创建swap

创建完成后自动启用,再次进入swap插件即可看到使用信息

使用信息

V2ray使用实例

Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。 V2Ray 的主要作用是根据用户的配置,对于传入的网络连接进行一定处理,然后发往指定的服务器。它是一个命令行程序,可以接受一个 JSON 格式的配置文件。

VPS安装服务端

使用下面命令一键安装:

bash <(curl -L -s https://install.direct/go.sh)

或者从https://github.com/v2ray/v2ray-core/releases下载预编译包进行安装。

安装完成后,使用service v2ray start启动v2ray服务。

Windows安装本地端

https://github.com/v2ray/v2ray-core/releases下载Windows客户端,解压后编辑config.json文件,内容如下:

{
"inbound": {
	"port": 1080, // 监听端口
	"protocol": "socks", // 入口协议为 SOCKS 5
	"domainOverride": ["tls","http"],
	"settings": {
	"auth": "noauth"  //socks的认证设置,noauth 代表不认证,由于 socks 通常在客户端使用,所以这里不认证
	}
},
"outbound": {
	"protocol": "vmess", // 出口协议
	"settings": {
	"vnext": [
		{
		"address": "10.0.0.1", // 服务器地址,请修改为你自己的服务器 ip 或域名
		"port": 31892,  // 服务器端口
		"users": [
			{
			"id": "3efd584f-8a7d-43af-9c75-35266df4ceb0",  // 用户 ID,必须与服务器端配置相同
			"alterId": 64 // 此处的值也应当与服务器相同
			}
		]
		}
	]
	}
}
}

以上的id和alterId,在vps上使用cat /etc/v2ray/config.json查看。

一加3T安装MIUI10

首先,十分感谢**HitoLiu**辛苦劳动,才有了Oneplus3T的MIUI10

刷机前先确认H2OS版本,由于H大的MIUI10是基于Android 7,所以要是基于Android7系的话,则可以直接刷,要是基于Android8的话,就得先降级。

一加3T安卓8降级安卓7

基于Android8的手机,下载下面降级包,通过系统内自带升级功能,手动选择该包进行降级。

一加3T Android 8降级Android 7刷机包 https://ct.optipng.cn/fs/18418398-315801567

或者在这里下载Android7的底包,刷入底包即可 https://ciux.org/oneplus3t-base-firmware.html

降级完成后,开始解锁刷入第三方recovery来刷机。

推荐使用一加3/3T工具包(OnePlus3/3T Unified ToolKit),使用方法**点击这里**

一加3T MIUI10刷机流程

  • 解锁

手机端设置->开发者选项,打开OEM解锁和USB调试。

连接手机和电脑,打开工具包选择2) Unlock - ReLock Bootloader,下一步选择1解锁。

手机按照提示选择YES解锁

  • 刷入TWRP Recovery

重启手机,选择Fastboot模式,连接手机和电脑,选择5) Flash - Boot TWRP Recovery,刷入TWRP

  • 刷入MIUI10

进入TWRP Recovery,挂载MTP,将MIUI10刷机包拷入手机,然后进行卡刷。

双清后重启即可!

官方更新说明

因MIUI官方开始全部适配安卓8,7.1的MIUI在11月2号官方已经正式停更了,目前这版MIUI是MIUI官方发布的最后一个安卓7.1版本,也是目前
最完善的一版。
如果不出意外的话,这也是一加3/3T安卓7.1 MIUI的最后一版。后续就是准备给一加3/3T上安卓O或以上的MIUI了,基本完善后我会优先发在群里
给机油门尝鲜。安卓O的MIUI最快也要半个月以上,且第一版难免bug多,耐心等待别催,只要我手上的3T还没坏就会一直把MIUI维护下去。
8.10.22及以上的MIUI无需双清可直接刷本版MIUI升级,8.10.22以下的需要双清升级。

8.11.3更新日志

1.同步MIUI官方最后一版安卓7.1的MIUI的更新
2.修复新版附加设置-交换返回与多任务键无效的bug

8.11.2更新日志:

1.同步MIUI的更新
2.解决WiFi mac地址问题
3.解决WiFi认证问题
4.修复了一些其他已知bug
5.附加设置更新,全新的界面,加入色温调节,省电模式,性能模式等等

8.10.28更新日志:

1.同步MIUI官方第392周更新
2.修复了一些已知bug
这次不是简单的同步更新,而是完全的重制,除了修复以前的一些已知bug外,流畅度也有大幅度的提升,并且还增加了很多新功能,比如
人脸解锁、AI相机等等,还有很多细节上的变化,应该能让你爽到脱肛的那种。
注意注意注意!这个包更改幅度较大,必须双清刷,否则可能出现各种程序报错!如果data分区被加密则需要格式化data!!否则可能会
一直卡在开机动画不能进系统!

8.12.5更新:

1.加入ROOT权限
2.修复充电快充满后几率发生断开的BUG
3.修复人脸识别无法使用的BUG
4.修复MIUI相机无法录像的BUG
5.修复几个引起卡顿问题
6.其它大量的BUG修复,现在已经熬夜到凌晨四点半,不想写了自行体验,做包很累切刷且珍惜

注意:

GRUB引导ISO镜像

家里电脑安装了双系统(Xubuntu+Windows7),平时一直不关机,开着TeamViewer便于在办公室远程操作。

这次不知怎么回事儿,远程掉了,回家一看Windows意外关机,再开机直接蓝屏。

由于为了省资源,关闭了系统保护,没法进行还原,多次试着拯救都没能解决,无限蓝屏……

手头刚好没有WinPE的U盘,没法ghost恢复或重装Windows,只有xubuntu可用,一筹莫展。

突然想到grub是否可以引导iso? 网上找了下,还真可以,于是下载了个WinPE镜像文件,打算通过grub来引导以修复Windows。

具体操作如下:

安装grub-imageboot

alair@e6440:~$ apt search memdisk
正在排序... 完成
全文搜索... 完成  
grub-imageboot/bionic,bionic 0.6 all
boot iso, harddisk and floppy images with grub2 and syslinux memdisk

alair@e6440:~$ sudo apt install grub-imageboot
[sudo] alair 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
syslinux-common
下列【新】软件包将被安装:
grub-imageboot syslinux-common
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 4 个软件包未被升级。
需要下载 1,176 kB 的归档。
解压缩后会消耗 3,684 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.cqu.edu.cn/ubuntu bionic/main amd64 syslinux-common all 3:6.03+dfsg1-2 [1,171 kB]
获取:2 http://mirrors.cqu.edu.cn/ubuntu bionic/universe amd64 grub-imageboot all 0.6 [4,424 B]
已下载 1,176 kB,耗时 1秒 (1,947 kB/s)
正在选中未选择的软件包 syslinux-common。
(正在读取数据库 ... 系统当前共安装有 181845 个文件和目录。)
正准备解包 .../syslinux-common_3%3a6.03+dfsg1-2_all.deb  ...
正在解包 syslinux-common (3:6.03+dfsg1-2) ...
正在选中未选择的软件包 grub-imageboot。
正准备解包 .../grub-imageboot_0.6_all.deb  ...
正在解包 grub-imageboot (0.6) ...
正在设置 syslinux-common (3:6.03+dfsg1-2) ...
正在设置 grub-imageboot (0.6) ...
Copy syslinux memdisk to /boot/memdisk
alair@e6440:~$ 

下载WinPE镜像文件(efi.iso),拷贝至/boot/目录

Excel文件大小异常核查

有时候明明excel文件中没多少内容,但是文件体积却很大,在此分享一个检查解决的方法。

将excel文件后缀名改为zip,用压缩软件将其打开,定位到xl\worksheets\目录,可以看到各个sheet的体积大小,如下:

sheet的体积大小

找到其中体积最大的,定位到该sheet

首先将所有内容全选并粘贴为文字。

然后将内容排序后,全选下面的空白行邮件删除,将条件格式全部删除,这样应该就OK了!

Ubuntu配置Livepatch服务

CLS(Canonical Livepatch Service)是Ubuntu母公司Canonical提供的一项服务,该服务可以为处于LTS的Ubuntu版本提供内核关键补丁修复,而不需要重新启动系统,特别适用于用作Server的系统。

使用CLS的前提是必须注册一个Ubuntu帐号,地址为https://login.ubuntu.com/+login

注册完成后,即可访问CLS主页https://www.ubuntu.com/server/livepatch进行登录配置。

登陆后选择用户类型,一般个人用户选择Ubuntu User,然后点击Get your Livepatch token获取密匙

“get_cls_token”

按照下一步提示进行操作,启用CLS服务。

“cls_token_setup”

运行完成后即成功启用CLS服务。

检查CLS服务配置状态可以使用以下命令:

alair@e6440:~$ sudo canonical-livepatch status --verbose
client-version: 8.0.2
machine-id: 08e0*****************750db
machine-token: 4753a054c*****************a2eb84c7
architecture: x86_64
cpu-model: Intel(R) Core(TM) i5-4310M CPU @ 2.70GHz
last-check: 2018-05-25T19:55:15.537634075+08:00
boot-time: 2018-05-25T19:47:51+08:00
uptime: 14m43s
status:
- kernel: 4.15.0-22.24-generic
  running: true
  livepatch:
    checkState: checked
    patchState: nothing-to-apply
    version: ""
    fixes: ""

XiunoBBS Nginx伪静态规则

XiunoBBS是一款非常流行的轻论坛程序

以下为XiunoBBS Nginx伪静态规则代码,添加到相应的nginx配置文件中即可。

location ~* \.(htm)$ {
	rewrite "^(.*)/(.+?).htm(.*?)$" $1/index.php?$2.htm$3 last;
}

IOS10越狱工具Meridian

Meridian是一款IOS10.0~10.3.3系列越狱工具支持所有64bit设备。

支持设备清单:

  • iPhone 7 & 7+
  • iPhone 6S & 6S+
  • iPhone 6 & 6+
  • iPhone SE
  • iPhone 5S
  • iPad Air 1 and 2
  • iPad (2017)
  • iPad Mini 2, 3, and 4
  • iPad Pro 1 and 2 (12.9" and 10.5")
  • iPod Touch 6th Gen

安装说明:

点击网站“下载”按钮下载IPA;

使用Cydia Impactor将IPA安装到您的设备上;

在设置->常规->配置文件和设备管理中信任证书;

打开应用程序,然后单击开始按钮。

国内网盘下载

相关网站

Google Camera一加3/3T移植版

Google Camera一加3/3T移植版,支持HDR+, 1080p 60FPS视频, 慢动作和慢动作图片。 By BSG, Ivanich, and Arnova8G2.

可用特性:

  • Camera (HDR+, flash, zoom, front camera, etc)
  • 视频 (30fps/60fps at 1080p、防抖、自动对焦)
  • 慢动作 (120fps)
  • Panorama
  • Photo Sphere
  • Lens Blur
  • RAW
  • Motion Photos (Android 8+ only, check the “suggested settings”)

不可用特性:

  • ZSL (HDR+打开情况下)
  • (OOS Oreo)慢动作
  • 前置相机HDR

下载:

本文只提供一加3/3T的稳定版apk,BSG、Ivanich和Arnova8G2的完整版清单,请移步这里

将静态站点部署到Coding.net

本站是基于https://github.com/wendal/gor生成的静态站点。

下面介绍如何将静态站点部署到coding.net上。

注册coding并新建项目

首先注册coding.net,注册完后新建项目。

项目名称为*.coding.me,以此格式新建的项目可以使用Coding Pages服务。

Pages服务设置

建立完成后,在项目设置中找到Pages服务服务进行设置。

  • 部署来源

选择master分支

  • 自定义域名

添加自定义域名,建议同时添加domain.com和www.domain.com,并且设置一个为首选项,另一个跳转到首选项。然后将自己的域名CNAME指向pages.coding.me

  • 强制HTTPS访问

打开该选项,则为你的域名自动申请设置** Let’s Encrypt证书,并开启https**访问。

  • Hosted by Coding Pages

新站点都会有coding pages跳转页,按照Hosted by Coding Pages说明,在首页添加规定连接后,可以提交申请不显示跳转页。

使用Git部署站点

首先推荐配置SSH公钥以便于操作。

$ ssh-keygen -t rsa -C "[email protected]"  //在此设置为coding.net帐号邮箱
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/dotbbq/.ssh/id_rsa):
Created directory '/c/Users/dotbbq/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/dotbbq/.ssh/id_rsa.
Your public key has been saved in /c/Users/dotbbq/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Tt/3424234sdfasdfadfs1234234sdfafdsi0 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|     ... ...o  . |
|      + o o   +..|
|*... + * . o . o+|
|    o = + o . ..o|
| . . o =S+ o .. .|
|. o   Bo+. .o.   |
| +.+   ......    |
|o.=.o o  .+ .    |
|.. ..+ .oo.o     |
+----[SHA256]-----+

生成完后,将/c/Users/dotbbq/.ssh/id_rsa.pub的内容粘贴到coding.net的个人设置->SSH公钥中进行添加。

RB750gr3快速设置

开箱照

以下为开箱照

开箱

上面

后面

下面

RB750快速设置

首先下载Winboxwinbox64.exe,将1口连接光猫,2口连接电脑。

下载打开后,软件会自动搜索到路由器MAC,登录名为admin,密码为空,点击connect登录。

“quick set 1”

登录后点击Quick Set进行快速设置,完成后应用即可。如下图:

“quick set 2”

注意以上我把路由器地址设置为192.168.1.11是为了和光猫192.168.1.1区分开。

梅林固件安装Shadowsocks

登录路由器后台,系统管理>系统设置,将Enable SSH设置为LAN only

通过SSH登录路由器,参考以下执行,在此推荐Putty

	cd /tmp
	wget https://github.com/hq450/fancyss_history_package/raw/master/fancyss_arm/shadowsocks_4.1.1.tar.gz
	tar -zxvf shadowsocks_4.1.1.tar.gz
	cd shadowsocks
	chmod +x install.sh
	./install.sh
	2017年11月19日 14:40:36: 固件平台【koolshare merlinarmv7l】符合安装要求,开始安装插件!
	2017年11月19日 14:40:36: 清理旧文件
	2017年11月19日 14:40:36: 开始复制文件!
	2017年11月19日 14:40:36: 复制相关二进制文件!
	2017年11月19日 14:40:42: 创建一些二进制文件的软链接!
	2017年11月19日 14:40:42: 复制ss的脚本文件!
	2017年11月19日 14:40:44: 复制网页文件!
	2017年11月19日 14:40:44: 移除安装包!
	2017年11月19日 14:40:44: 为新安装文件赋予执行权限...
	2017年11月19日 14:40:44: 设置一些默认值
	2017年11月19日 14:40:47: 一点点清理工作...
	2017年11月19日 14:40:47: 插件安装成功,你为什么这么屌?!
	2017年11月19日 14:40:47: 更新完毕,请等待网页自动刷新!

完成后重启路由器,在软件中心中即可看到影梭已经安装成功!

按需安装Office2016组件

所需软件

步骤

1、下载Office2016和DAEMON Tools Lite,安装DAEMON Tools Lite,将office2016镜像(iso)文件挂载到虚拟光驱。

2、下载office2016install.zip后解压,得到setup.execonfiguration.xml两个文件

打开configuration.xml,文件内容如下

<Configuration>
	<Add SourcePath="G:\" OfficeClientEdition="64" >
		<Product ID="ProPlusRetail">
		<Language ID="zh-CN" />
		<ExcludeApp ID="Groove" />
		<ExcludeApp ID="InfoPath" />
		<ExcludeApp ID="Lync" />
		<ExcludeApp ID="OneNote" />
		<ExcludeApp ID="Outlook" />
		<ExcludeApp ID="Publisher" />
		<ExcludeApp ID="SharePointDesigner" />
		</Product>
	</Add>  
</Configuration>
  • SourcePath 是安装源目录,此处为虚拟光驱G盘
  • OfficeClientEdition 为构架版本,此处为64位,也可以设置为32位
  • Language 为安装语言,此处为中文简体
  • ExcludeApp 表示不需要安装的组件,此处去掉了Groove、InfoPath、Lync、OneNote、Outlook、Publisher、SharePointDesigner,剩下的为Word、Excel、powerpoint和access进行安装。

在当前目录下以管理员身份CMD,运行下面命令开始安装:

setup.exe /configure configuration.xml

Typecho登录时提示AccessDenied

Typecho安装完成后,登录后提示Access Denied,解决方法如下:

找到php.ini文件,我的在/usr/local/php/etc/php.ini

cgi.fix_pathinfo的值改为1即可

重启php

service php-fpm restart

完了!

Linux下修复分辨率显示异常

家里放了台老旧的台式机,显卡是GTX 660Ti,windows下必须安装特定的驱动版本才能显示最佳分辨率(1680x1050),如果更新到最新的Nvidia驱动,反而显示器无法正常显示(1024x768)。

没想到,这种情况在Linux下依然存在,不论是安装Debian还是Linux Mint或者Ubuntu,默认都是1024x768。

网上找到了修复分辨率异常的方法,整理如下。

检查当前显卡硬件情况

	$ lspci |grep VGA
	01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 660 Ti] (rev a2)

可以看到,显卡硬件识别正常。

检查显卡分辨率情况

	$ xrandr
	Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
	VGA-1 disconnected (normal left inverted right x axis y axis)
	DVI-I-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
	1024x768      60.00* 
	800x600       60.32    56.25  
	848x480       60.00  
	640x480       59.94  
	HDMI-1 disconnected (normal left inverted right x axis y axis)

可以看到,有三个视频输出,当前正在用的是DVI-I-1,分辨率就是1024x768,第一行显示最大支持8192x8192。

一加3T开启黑白屏模式

一加5发布后,唯一让我眼红的就是那块屏幕,还有类似于水墨屏的阅读体验。

其实一加3T中也可以使用黑白屏模式,在开发者模式中可以找到设置。

设置->开发者选项->模拟颜色空间->全色盲。

sitemap-generators使用实例

sitemap-generators是一款Sitemap生成工具,使用它可以生成符合sitemap.org规范的Sitemap文件,以便于提交给各个网站工具平台。

项目地址 && 下载地址

下载sitemap_gen_1.5.tar.gz解压,得到以下内容:

root@bwgzl:~/sitemap_gen# ls -lh
total 140K
-r--r-----  1  502  502   22 Jun 17  2005 AUTHORS
-r--r--r--  1  502  502 2.6K Jul 19  2007 ChangeLog
-r--r-----  1  502  502 1.8K Jun 17  2005 COPYING
-rw-r--r--  1  502  502 6.4K Jul 19  2007 example_config.xml
-rw-r-----  1  502  502 1.6K Jun 26  2007 example_urllist.txt
drwxr-xr-x 23 root root 4.0K Aug  3 14:25 getos.org
-rw-r--r--  1  502  502  244 Jul 19  2007 PKG-INFO
-r--r--r--  1  502  502 1.1K Jun 25  2007 README
-r-xr-xr-x  1  502  502  301 Jul 19  2007 setup.py
-rwxr-xr-x  1  502  502  66K Jul 19  2007 sitemap_gen.py

将默认的example_config.xml拷贝为ac.xml,参考以下修改:

<?xml version="1.0" encoding="UTF-8"?>
<site
  base_url="http://getos.org/"
  /** 以下为sitemap.xml文件存放目录**/
  store_into="/root/sitemap_gen/sitemap.xml"
  verbose="1"
  <urllist  path="urllist.txt"  encoding="UTF-8" />
  <filter  action="drop"  type="wildcard"  pattern="*~" />
  <filter  action="drop"  type="regexp"    pattern="/\.[^/]*" />
</site>

接下来,使用wget来遍历网站所有URL,将结果保存为urlinfolist.txt

wget -mk --spider -r  http://getos.org/ -o urlinfolist.txt
  • -r: 递归遍历目录

处理wget到的urlinfolist.txt文件,删除不需要的内容。

Dropbox脚本工具DropboxUploader

Dropbox Uploader是一款专为Dropbox开发的BASH脚本,可以实现上传、下载、删除、列出文件清单、在线分享、同步和备份等功能。

它使用BASH脚本语言写成,只需要cURL即可使用。

项目主页 GiHub project page.

为什么使用此脚本?

  • 绿色轻便:使用BASH脚本语言写成,仅仅需要cURL一个软件(curl是一个数据传输工具,大部分linux发行版均会内置该软件)。
  • 安全: 不需要提供帐号密码,该脚本使用官方API进行验证。

更多的扩展信息和使用技巧请参考官方wiki,该wiki同时提供Dropbox Uploader相关的使用实例和脚本。

特性

  • 跨平台
  • 支持官方Dropbox API v2
  • 无需密码
  • 简单的配置提示
  • 分块文件上传
  • 递归文档下载
  • 递归文档上传
  • Shell通配符扩展 (仅上传)
  • 删除/移动/重命名/拷贝/列出/分享文件
  • 创建分享连接
  • 监视变化

安装配置DropboxUploader

使用git拷贝官方仓库:

git clone https://github.com/andreafabrizi/Dropbox-Uploader.git

或者直接下载脚本:

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

给脚本添加执行权限并运行:

 $chmod +x dropbox_uploader.sh
 $./dropbox_uploader.sh

第一次运行dropbox_uploader时,会有鉴权提示,按照提示在https://www.dropbox.com/developers/apps新建api app,然后在app管理页找到Generated access token创建access token,将access token粘贴到DropboxUploader提示行按回车键,随后会提示成功接入Dropbox。配置文件保存在~/.dropbox_uploader

使用DropboxUploader

DropboxUploader语法非常简单:

./dropbox_uploader.sh [PARAMETERS] COMMAND...

[%%]: 可选参数
<%%>: 必须参数

可使用命令:

  • upload <LOCAL_FILE/DIR …> <REMOTE_FILE/DIR>

    上传本地文件或目录到Dropbox。

  • download <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
    从Dropbox下载文件或目录到本地

  • delete <REMOTE_FILE/DIR>
    删除Dropbox上的文件或目录

Linux下批量转换PNG和JPG

我们用到的软件名为imagemagick,一款强大的图片处理软件。

Debian系使用apt-get install imagemagick来安装,Fedora系通过yum install imagemagick来安装。

其他系统可以到官方下载页进行下载安装 https://www.imagemagick.org/script/download.php

安装完成后,可以通过convert tst.jpg tsg.png将JPG文件转换为PNG,反之亦可。

下来进行批量替换:

root@bwgzl:/data/wwwroot/getos.org/images# ll
total 188
drwxr-xr-x  2 www www  4096 Aug  4 15:48 ./
drwxr-xr-x 27 www www  4096 Aug  4 15:32 ../
-rw-r--r--  1 www www 18778 Aug  4 15:43 clip_image002.jpg
-rw-r--r--  1 www www 17637 Aug  4 15:43 clip_image004.jpg
-rw-r--r--  1 www www 28075 Aug  4 15:43 clip_image006.jpg
-rw-r--r--  1 www www 30916 Aug  4 15:43 clip_image008.jpg
-rw-r--r--  1 www www 13538 Aug  4 15:43 clip_image010.jpg
-rw-r--r--  1 www www 11845 Aug  4 15:43 clip_image012.jpg
-rw-r--r--  1 www www 14519 Aug  4 15:43 clip_image014.jpg
-rw-r--r--  1 www www 33052 Aug  4 15:43 clip_image016.jpg
root@bwgzl:/data/wwwroot/getos.org/images# ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
root@bwgzl:/data/wwwroot/getos.org/images# ls -ltr
total 1172
-rw-r--r-- 1 www  www   18778 Aug  4 15:43 clip_image002.jpg
-rw-r--r-- 1 www  www   17637 Aug  4 15:43 clip_image004.jpg
-rw-r--r-- 1 www  www   28075 Aug  4 15:43 clip_image006.jpg
-rw-r--r-- 1 www  www   30916 Aug  4 15:43 clip_image008.jpg
-rw-r--r-- 1 www  www   13538 Aug  4 15:43 clip_image010.jpg
-rw-r--r-- 1 www  www   11845 Aug  4 15:43 clip_image012.jpg
-rw-r--r-- 1 www  www   14519 Aug  4 15:43 clip_image014.jpg
-rw-r--r-- 1 www  www   33052 Aug  4 15:43 clip_image016.jpg
-rw-r--r-- 1 root root 132411 Aug  4 16:00 clip_image002.png
-rw-r--r-- 1 root root 106702 Aug  4 16:00 clip_image004.png
-rw-r--r-- 1 root root 197143 Aug  4 16:00 clip_image006.png
-rw-r--r-- 1 root root  79397 Aug  4 16:00 clip_image008.png
-rw-r--r-- 1 root root  37643 Aug  4 16:00 clip_image010.png
-rw-r--r-- 1 root root  81090 Aug  4 16:00 clip_image012.png
-rw-r--r-- 1 root root  88635 Aug  4 16:00 clip_image014.png
-rw-r--r-- 1 root root 272537 Aug  4 16:00 clip_image016.png

注意第二条命令即为批量转换操作

p7zip使用实例

以下是CentOS77za的使用实例,CentOS下安装p7zip可以参考此文

[root@localhost ~]# 7za

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU x64)

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
       [<@listfiles...>]

<Commands>
  a : Add files to archive
  b : Benchmark
  d : Delete files from archive
  e : Extract files from archive (without using directory names)
  h : Calculate hash values for files
  i : Show information about supported formats
  l : List contents of archive
  rn : Rename files in archive
  t : Test integrity of archive
  u : Update files to archive
  x : eXtract files with full paths

<Switches>
  -- : Stop switches parsing
  -ai[r[-|0]]{@listfile|!wildcard} : Include archives
  -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
  -ao{a|s|t|u} : set Overwrite mode
  -an : disable archive_name field
  -bb[0-3] : set output log level
  -bd : disable progress indicator
  -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
  -bt : show execution time statistics
  -i[r[-|0]]{@listfile|!wildcard} : Include filenames
  -m{Parameters} : set compression Method
    -mmt[N] : set number of CPU threads
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse subdirectories
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8|WIN|DOS} : set charset for for console input/output
  -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
  -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
  -sdel : delete files after compression
  -seml[.] : send archive by email
  -sfx[{name}] : Create SFX archive
  -si[{name}] : read data from stdin
  -slp : set Large Pages mode
  -slt : show technical information for l (List) command
  -snh : store hard links as links
  -snl : store symbolic links as links
  -sni : store NT security information
  -sns[-] : store NTFS alternate streams
  -so : write data to stdout
  -spd : disable wildcard matching for file names
  -spe : eliminate duplication of root folder for extract command
  -spf : use fully qualified file paths
  -ssc[-] : set sensitive case mode
  -ssw : compress shared files
  -stl : set archive timestamp from the most recently modified file
  -stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
  -stx{Type} : exclude archive type
  -t{Type} : Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
  -v{Size}[b|k|m|g] : Create volumes
  -w[{path}] : assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
  -y : assume Yes on all queries

压缩文档

[root@localhost oneinstack]# du -sh     ##当前目录大小
1.8M    .
[root@localhost oneinstack]# 7za a oi.7z *   ##将当前目录所有文件压缩保存为oi.7z

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU x64)

Scanning the drive:
7 folders, 128 files, 1541017 bytes (1505 KiB)

Creating archive: oi.7z

Items to compress: 135


Files read from disk: 128
Archive size: 131726 bytes (129 KiB)
Everything is Ok
[root@localhost oneinstack]# ls -lh oi.7z  ###压缩后大小
-rw-r--r-- 1 root root 129K Jun 16 15:59 oi.7z

p7zip默认使用7z格式,当然它还支持一些通用的压缩格式,如7z, lzma, cab, zip, gzip, bzip2, Z 和tar等等……

一加3/3T工具包

工具菜单如下:

	Title OnePlus 3/3T Unified ToolKit v5.0U by @ahmed_radaideh
	
	
	
			======================
			=        Menu        =
			======================
	
	
	Enter a Number to select a Task.
	
	1)  Install USB Drivers On PC
	2)  Unlock - ReLock Bootloader
	3)  Check Device Status
	4)  Check Bootloader Status
	5)  Flash - Boot TWRP Recovery
	6)  Flash - Boot Stock Recovery
	7)  Push Systemless Root
	8)  Push Debloater Script
	9)  Wipe Cache Your Device
	10) Force Decryption Device [WIPE]
	11) Get Logs your Device
	12) Restart Menu
	
	13) Check for new Version
	14) XDA Thread
	15) Donate!
	00) Exit

下载地址在此OnePlus3T-ToolKit-v4.7.7zXDA贴地址在这里

修复东芝U盘写保护

一直以来都是使用U盘安装Linux,光盘镜像通过dd写入U盘。最近需要安装elementary,下载镜像后发现系统推荐使用Rufus来写入U盘,这个工具以前没试过所以试了下,确实挺快的。

不过在安装完elementary后,想将U盘重新恢复格式化出问题了,使用DiskGenius无法进行操作,使用系统自带的磁盘管理也没法操作,包括Linux下的GParted也不行,都提示U盘被写保护了,-__-!

万般无奈只能想到量产工具,下面分享使用到的两款软件:

  • ChipGenius
  • Restore

ChipGenius是一款U盘信息检测软件,通过它可以来查看U盘主控信息,我的这款U盘芯片信息如下:

设备描述: [G:]USB 大容量存储设备(TOSHIBA TransMemory-Mx)
设备类型: 大容量存储设备

协议版本: USB 3.00
当前速度: 极速(SuperSpeed)
电力消耗: 504mA

USB设备ID: VID = 0930 PID = 6545
设备序列号: FFFFFFFFFFFFEE20F000BC99

设备供应商: TOSHIBA
 设备名称: TransMemory-Mx
设备修订版: 0110

产品制造商: TOSHIBA
 产品型号: TransMemory-Mx
产品修订版: PMAP

 主控厂商: Phison(群联)
 主控型号: PS2251-03(PS2303) - F/W 02.08.53 [2014-01-02]
闪存识别码: 983AA892 - Toshiba(东芝) TC58NVG7T2JTA00 [TLC-8K]

Restore是群联官方提供的一款恢复工具,可以进行低级格式化和修复。

在Linux中运行Android软件

想要在PC上运行Android软件就需要模拟器,Windows版的Android模拟器软件很多,但是Linux平台的就不多了,今天推荐一款Linux下的Android模拟器软件Anbox

Anbox官方介绍为Android in a Box,Run Android applications on any GNU/Linux operating system.

Anbox现在还处于测试阶段,很多功能还不完善和稳定,请谨慎使用。

安装Anbox

首先得安装Snaps,官方地址为https://snapcraft.io/

LinuxMint中安装Snaps和必须包

sudo apt install snapd
sudo apt install pulseaudio

接下来按照官方指南安装Anbox

snap install --classic anbox-installer && anbox-installer

我试着通过snap来安装一直存在权限问题,一般权限不能运行snap install --classic anbox-installer,root运行完snap install --classic anbox-installer后,但运行anbox-installer又提示不能使用root权限,一般权限根本无法运行anbox-installer,搞了半天都没有成功,于是就有了下文。

通过常规方法安装Anbox

wget https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh -O anbox-installer
chmod +x ./anbox-installer
./anbox-installer

安装完成后会有重启系统的提示

To ensure all changes made to your system you should now reboot your system. If you don’t do this no Android applications will show up in the system application launcher.

CentOS7安装使用p7zip

在此只推荐从源码安装p7zip,下载地址 http://www.7-zip.org/download.html

源码在这里下载 https://sourceforge.net/projects/p7zip/files/p7zip/

wget https://sourceforge.net/projects/p7zip/files/p7zip/16.02/p7zip_16.02_src_all.tar.bz2
tar jxf p7zip_16.02_src_all.tar.bz2
cd p7zip_16.02
make 
make install

使用p7zip

[root@localhost ~]# 7za
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU x64)

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
   [<@listfiles...>]

<Commands>
  a : Add files to archive
  b : Benchmark
  d : Delete files from archive
  e : Extract files from archive (without using directory names)
  h : Calculate hash values for files
  i : Show information about supported formats
  l : List contents of archive
  rn : Rename files in archive
  t : Test integrity of archive
  u : Update files to archive
  x : eXtract files with full paths

压缩文件

树莓派显示天气信息RARP

在此介绍一个国外网友的树莓派项目RARP,Weather According to Raspberry Pi

顾名思义,Weather According to Raspberry Pi是一个有关天气信息的项目,该项目通过采集Raspberry PiSense HAT的数据,来显示相关的天气信息,比如温度、湿度、压力等

项目地址http://coded2.herokuapp.com/weather/

代码国内下载地址</res/warp_final.zip>

下载后解压,得到main.pygauge2.html两个文件,其中main.py需要Python3运行,gauge2.html是最终的显示文件

安装相关软件

	sudo apt-get install python3
	sudo apt-get install python3-pip
	pip3 install flask

打开Sense HAT仿真器,在程序菜单中,打开后如下图示:

SenseHAT Menu

下来,运行下载的python脚本

	python3 main.py

正常情况下,会提示一个端口为5000的web服务正在运行

在浏览器中浏览localhost:5000或者127.0.0.1:5000,最终的浏览如下图

WARP

三个图表分别显示温度、压力和湿度,这三者的信息均来自Sense HAT 模拟器而不是真正的Sense HAT硬件。

如果需要采集Sense HAT扩展板的数据,需要将Sense HAT附加板和Raspberry Pi相连,具体信息参考官网 https://www.raspberrypi.org/products/sense-hat/

然后修改代码,打开main.py文件,找到如下行

	from sense_emu import SenseHat

修改为

	from sense_hat import SenseHat

保存后,重新运行python3 main.py,此时采集的数据就来自真实的SenseHAT硬件。

在Citrix应用中使用本地输入法

进入到Citrix安装目录C:\Program Files (x86)\Citrix\ICA Client

启用本地输入法

	wfica32.exe /localime:on

禁用本地输入法

	wfica32.exe /localime:off

以上输入完后会有弹窗提示是否成功。

除了通过运行命令行程序来更改,也可以通过修改注册表来实现

	HKLM配置位置
	HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Engine\Lockdown Profiles\All Regions\Lockdown\Virtual Channels\Keyboard
	HKCU配置位置
	HKEY_CURRENT_USER\Software\Citrix\ICA Client\Engine\Lockdown Profiles\All Regions\Lockdown\Virtual Channels\Keyboard
	#设置LocalIME = 1 or 0
	#disable=0, enable=1,留空使用其他位置的设置

注意HKLM和HKCU必须同时修改,64位操作系统注册表键值在WOW64节点下

理解Linux中Shell初始化文件和用户Profiles文件

Linux是一个多用户、实时共享的操作系统,意味着不止一个用户可以登录同一个系统。系统管理员通过任务管理来分配不同用户的权限,比如安装、升级、卸载应用程序,运行编译程序,文件查看、编辑等等。

Linux允许通过两种主要方式来创建用户环境:系统级(全局)和用户级(个人)。一般情况下,Linux系统都会运行基本shell程序,当用户登录成功后shell会在初始化时根据某些文件开创建环境。

Linux中的Shell初始化

Shell被调用时,会有一些初始化/启动文件被启用,它们的主要作用是为shell本身或用户设定运行环境,包含一些函数、 变量、别名等等。

Shell可以读取以下两种初始化文件:

  • 系统级启动文件 – 包含一些应用于户所有用户的全局配置,一般存在于**/etc目录中,如 /etc/profiles/etc/bashrc** 或者 /etc/bash.bashrc
  • 用户级启动文件 – 包含一些应用于单用户的配置文件,一般存放在各个用户目录,这些配置可以覆盖系统级全局配置,如**.profiles**、 .bash_profile.bashrc.bash_login.

Shell存在三种调用模式:

1. 交互式登录Shell

当用户成功登录系统后调用该Shell,使用**/bin/login登录,随后读取/etc/passwd**文件。

当启动交互式shell后,将读取**/etc/profile文件以及特定的用户文件~/.bash_profile**

login as: pi
[email protected]'s password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr 25 10:43:53 2017 from 211.137.135.200
pi@raspi:~ $

2. 非登录交互式Shell

当使用如**$/bin/bash** or $/bin/zsh的命令行时,将会系统非登录交互式shell。他也可以通过**/bin/su**命令来运行。

python-pip安装实例

Python-pip 是一个现代的,通用的 Python包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。

以下为多个操作系统平台下Python-pip安装方法

通用方法

通过get-pip.py文件来安装,建议Windows用户使用,前提是你必须首先安装Python

版本要求Python 2 >=2.7.9 或Python 3 >=3.4,可从官网下载http://www.python.org/

然后下载get-pip.py

下载地址 https://bootstrap.pypa.io/get-pip.py

通过python get-pip.py命令来进行安装。

Linux下通过软件管理工具来安装Python-pip

Fedora21

  • Python2

    sudo yum upgrade python-setuptools
    sudo yum install python-pip python-wheel
    
  • Python3

    sudo yum install python3 python3-wheel
    

Fedora22

  • Python2

    sudo dnf upgrade python-setuptools
    sudo dnf install python-pip python-wheel
    
  • Python3

    sudo dnf install python3 python3-wheel
    

CentOS/RHEL

首先得启用EPEL repository,可参考此文

  • EPEL 6/EPEL 7

    sudo yum install python-pip
    
  • EPEL 7

    sudo yum install python-wheel
    

OpenSUSE

树莓派动态IP更新器

这是一个python3的脚本,每隔10分钟监控一次IP地址,如果发生变化则会通过AutoRemote消息通知你。 关于AutoRemote的使用可参考这里

这里推荐使用ipgetter来获取外网IP,地址为https://github.com/phoemur/ipgetter

安装ipgetter

sudo apt-get install python3 pip
sudo pip3 install ipgetter

你可以从以下地址获取每个通知设备的AutoRemote所需google key

​ http://autoremotejoaomgcd.appspot.com/?key=[it’s the part that is here]

以下为python3脚本:

import ipgetter
import urllib.request
import requests

currentIP = ipgetter.myip()
#AutoRemote function to send a notification YOUR_KEY goes here
def sendAR(x):
	AR_key = 'YOUR_KEY'
	AR_url = 'http://autoremotejoaomgcd.appspot.com/sendmessage?key='+ AR_key +'&message=IP%20'
	message = AR_url + x
	response = urllib.request.urlopen(message).read()
	print(x)	
#check the internet  and check if previous file is present
try:
	requests.get('http://www.google.com')
	print('Internet present')
	IPfile = open('ipfile.txt', 'r')
	lastIP = IPfile.read()	
	if lastIP == currentIP:
		print('No changes last IP: ' + lastIP + ' current IP: ' + currentIP)
	else:
		with open('ipfile.txt', 'w+') as f:
			f.write(currentIP)
			f.close()
			sendAR(currentIP)
			print('IP updated')
#handle no file			
except IOError:
	#print(IOError)
	with open('ipfile.txt', 'w+') as f:
		IPfile = ipgetter.myip()
		f.write(IPfile)
		f.close()
		print('created file with current IP')
		sendAR(currentIP)
		quit()
#Handle no internet		
except requests.ConnectionError:
	quit()

运行脚本后,会监视ip变化,如果发生变化则通知最新ip,如果未发生变化则不通知。

Linux开启TCP BBR算法

Linux Kernel 4.9+已经支持tcp_bbr拥塞控制算法,因此建议将内核升级为最新版。

将内核升级到最新版

Debian/Ubuntu升级最新内核

最新内核下载地址 http://kernel.ubuntu.com/~kernel-ppa/mainline

下载安装新内核

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.10/linux-image-4.10.10-041010-generic_4.10.10-041010.201704120813_amd64.deb`
dpkg -i linux-image-4.10.10-041010-generic_4.10.10-041010.201704120813_amd64.deb

更新GRUB并且重启

update-grub
reboot

Centos 7 升级最新内核

内核下载地址 http://elrepo.org/linux/kernel/el7/x86_64/RPMS/

安装最新内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

检查内核是否安装完成

rpm -qa | grep kernel

更新GRUB并重启主机

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
grub2-set-default 0  #default 0表示第一个内核设置为默认运行, 选择最新内核就对了
reboot

http://elrepo.org/linux/kernel/e15e16分别对应Centos5、Centos6,可参考以上安装

开启BBR

重启后uname -r 检查内核版本是不是4.9+

然后执行以下操作

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则成功了

通过lsmod | grep bbr可以检查是否开启bbr模块

使用手机远程控制树莓派GPIO

必备条件:

  • 树莓派已联网
  • 安装官方镜像
  • 只支持Raspberry Pi 2/3 Model B
  • 只支持Android手机
  • 安装Java8

安装官方镜像Raspbian

下载地址 https://www.raspberrypi.org/downloads/

安装Java8

sudo apt install oracle-java8-jdk

下载Marsiot到树莓派

wget http://www.marsiot.com/download/marsiot.jar

下载Marsiot到手机,安装

http://www.marsiot.com/download/marsiot.apk

在树莓派上运行Marsiot

pi@raspi:~ $ sudo java -jar marsiot.jar

Current version <101>
More help: sudo java -jar marsiot.jar help

Connect to www.marsiot.com...
Connected ok!

GPIO init...
GPIO init ok!

ID-CODE:c1fa PASS-CODE:11c6

记住以上ID-CODEPASS-CODE

在手机上打开火星互联,事件中心时间轴上会显示所有新加入设备,以ID-CODE区分,找到你对应的设备点击,按照提示输入PASS-CODE即可连接。

连接后可以在我的设备中看到已连接的设备,点击通用视图即可实时监控GPIO端口状态。

Linux下设置IP、网关、掩码、MAC和DNS

先用ifconfig来查看所有活动网络接口

eth0      Link encap:Ethernet  HWaddr b8:27:eb:1b:63:a8
		inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
		inet6 addr: fe80::6502:67ff:89b:b2fd/64 Scope:Link
		UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
		RX packets:43239 errors:0 dropped:24 overruns:0 frame:0
		TX packets:30644 errors:0 dropped:0 overruns:0 carrier:0
		collisions:0 txqueuelen:1000
		RX bytes:25068614 (23.9 MiB)  TX bytes:5993030 (5.7 MiB)

lo        Link encap:Local Loopback
		inet addr:127.0.0.1  Mask:255.0.0.0
		inet6 addr: ::1/128 Scope:Host
		UP LOOPBACK RUNNING  MTU:65536  Metric:1
		RX packets:1961 errors:0 dropped:0 overruns:0 frame:0
		TX packets:1961 errors:0 dropped:0 overruns:0 carrier:0
		collisions:0 txqueuelen:1
		RX bytes:160232 (156.4 KiB)  TX bytes:160232 (156.4 KiB)

设置IP和掩码

ifconfig eth0 192.168.1.6 netmask 255.255.255.0 

设置网关

route add default gw 192.168.1.1

修改网卡MAC

ifconfig eth0 down
ifconfig eth0 hw ether b877c322f8
ifconfig eth0 up

设置DNS

vi /etc/resolv.conf

nameserver 114.114.114.114
nameserver 114.114.115.115

重启网络服务生效 service network restart

Windows10开启Linux子系统

打开功能

设置-系统-应用和功能,右侧下拉到底,点击“相关设置”下的“程序和功能”

在打开的“程序和功能”左侧菜单中,找到“启用或关闭windows功能”,点击打开。

在接下来的“windows功能”菜单中,下拉勾选“适用于linux的windows子系统(beta)”,确认后重启系统。

开启开发人员模式

设置-更新和安全-针对开发人员,在右侧打开“开发人员模式”

安装linux子系统

Win+R输入cmd回车,打开cmd

输入“bash”按照提示安装设置用户名密码即可使用。

Windows 10 Linux Subsystem

然后就可以使用ubuntu提供的linux子系统了。

Termux软件管理

首次安装Termux后,内含一个基础系统,包括apt软件包管理功能,并且集成了一些busybox系统工具。

其余的软件包可使用apt进行安装管理,命令如下:

	apt update

更新可用软件包清单。

	apt search <query>

按名称搜索可用软件。

	apt install <package>

安装软件

	apt upgrade

更新所有可更新软件。

	apt show <package>

显示软件信息

	apt list

列出可用软件清单

	apt list --installed

列出所有已安装软件清单

	apt remove <package>

卸载已安装软件

Apt是基于dpkg格式的软件管理工具,一般没必要直接使用dpkg来进行操作,不过以下两个例子可以参考:

	dpkg -L <package>

列出已安装软件

	dpkg --verify

验证已安装软件的完整性

更多信息请检阅apt manual page (通过apt install man来安装)

更改软件源可参考Termux编辑软件源

修复树莓派PATH变量

使用lnmp一键工具安装完nmp后,重启进入系统就提示bash command not found

然后试了试service,who等命令也无法使用

只有最基本的系统命令ls,cat等可以用

看来安装lnmp后,我的PATH变量被动了

先临时修改下PATH,便于后面操作

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$PATH

然后检查~/.profile,/etc/profile是否存在,存在

检查其中的PATH赋值是否异常

经过排查,发现/etc/profile中的PATH赋值异常,修改之重启OK!

在此分享正确的原始~/.profile/etc/profile文件

~/.profile 内容

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
	# include .bashrc if it exists
	if [ -f "$HOME/.bashrc" ]; then
		. "$HOME/.bashrc"
	fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
	PATH="$HOME/bin:$PATH"
fi

**/etc/profile内容 **

七牛云qshell工具批量操作

为了方便管理七牛云,官方放出了一个工具-qshell

qshell是利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具。

使用qshell可以方便的进行批量操作,包括批量上传、批量下载、批量删除等等……

首先,从https://u18418398.pipipan.com/fs/18418398-314035000下载官方提供的qshell,里面包含多个平台。

  • qshell_linux_386 Linux 32位系统
  • qshell_linux_amd64 Linux 64位系统
  • qshell_linux_arm Linux ARM CPU
  • qshell_windows_386.exe Windows 32位系统
  • qshell_windows_amd64.exe Windows 64位系统
  • qshell_darwin_386 Mac 32位系统,这种系统很老了
  • qshell_darwin_amd64 Mac 64位系统,主流的系统

解压后,将对应的版本软件放到自定义目录

在此以windows版实例操作

帐号设置

使用qshell前,需要进行帐号验证,可以通过qshell account ak sk格式来进行验证,其中aksk对应个人面板->密匙管理中的AccessKey/SecretKey

qshell account  yW!DRel0y8ERbjw%so^?X8  6pfC4OlL$TZtjpNuR4bLxRsD

设置完成后,可以通过qshell account来查看已设置帐号详情

qshell account
AccessKey:yW!DRel0y8ERbjw%so^?X8
SecretKey:6pfC4OlL$TZtjpNuR4bLxRsD

设置完帐号后,我们就可以使用qshell对帐号对应的空间进行操作

列出当前帐号下所有空间

qshell buckets
cname

cname为空间名

列出空间中所有文件

qshell listbucket  cname cname.list.txt

cname为空间名,cname.list.txt为结果输出文件。

批量上传

qshell qupload up.cfg

up.cfg上传操作配置文件,如下:

{
"src_dir" : "D:\\abc",
"bucket" : "cname"
}

src_dir为本地文件夹,Wdinwos下必须使用如上格式

黑莓9630使用中国电信4G卡

准备工作

Alt + Shift + H进入帮帮我界面

进入后,不要退出,注意以下三个信息

  • 应用程序版本 7.1.0.649 (1886)
  • PIN 3045e17c
  • 正常运行时间 173秒

注意!注意!注意 一定不要退出以上界面,因为运行时间会变动,如果退出了,重新进入查看运行时间

计算解锁码

使用软件工具或者网页版工具计算,网址在这里 http://www.kealin.net/Escreen/Index.html

按照提示,输入PIN、OS Version、Uptime

底下会出现响应时长的解锁码,有1day到30days

一般我们就用一下下,选择一天解锁码,如果你需要长时间使用,可以选择较长时间的解锁码

解锁码也可以使用软件来获取,可以使用BBctrl、BerryBox,请自行搜索。

进入工程模式(Engineering Screen Contents)

注意,前面的帮帮我没有退出,在该界面下输入你所获得的解锁码

如果退出了,重新进入查看运行时间,按照新的时间重新获取解锁码

输入正确后,即可进入工程模式(engineering screen contents)

设置

在工程模式下按以下顺序来操作

Radio Engineering Screens(MULTI) -> 3GPP Radio Engineering Screens -> GCF -> SIM Electrical Test Mode On

点击最后一个菜单后手机自动重启,然后启动完即可使用4G手机卡。

Debian下安装Zbook14无线网卡驱动

首先查看无线网卡型号

alair@zb14:~$ lspci|grep less
02:00.0 Network controller: Intel Corporation Wireless 7260 (rev 73)

搜索Inter相关固件 ​ alair@zb14:~$ apt-cache search iwlwifi firmware-iwlwifi - Binary firmware for Intel Wireless cards

安装之 ​ alair@zb14:~$ apt-get install firmware-iwlwifi

重启完事儿!

HSTS域名更换实例

新入手了its0k.com,原来的alair.cn还继续使用

在这里需要将alair.cn重定向到its0k.com

第一次只是将nginx配置文件中的alair.cn全部替换为its0k.com,通过its0k.com浏览新站完全没问题

但是试着从alair.cn跳转浏览新站,浏览器出现了证书安全告警,告警具体原因为证书未包含alair.cn域名,我才想起来旧域名alair.cn已经添加进了HSTS列表,因此不能简单的只为新域名签名,而是需要证书签名时包含新旧两个域名。

重新签名了证书,包含以下四个域名

its0k.com www.its0k.com alair.cn www.alair.cn

以下为更改完成后的nginx配置文件,请注意名相关的部分

server {
listen 443 ssl http2;

ssl_certificate     /root/ssls/its0k.crt;
ssl_certificate_key /root/ssls/its0k.key;

ssl_session_timeout 60m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_prefer_server_ciphers on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options "DENY";

ssl_stapling on;
ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

server_name its0k.com www.its0k.com alair.cn www.alair.cn;
access_log off;
index index.html index.htm;
include /usr/local/nginx/conf/rewrite/ps.conf;
root /data/wwwroot/its0k.com/compiled;
error_page 403 404 500 503 505 = https://its0k.com/404;
if ($host != its0k.com) {
		rewrite ^/(.*)$ $scheme://its0k.com/$1 permanent;
		}

location ~ .*\.(gif|svg|jpg|jpeg|png|bmp|swf|flv|ico)$ {
	expires 30d;
	access_log off;
	}
location ~ .*\.(js|css)?$ {
	expires 7d;
	access_log off;
	}
}
server {
listen 80;
server_name www.its0k.com its0k.com alair.cn www.alair.cn;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
rewrite ^/(.*) https://its0k.com/$1 permanent;
}

至此域名替换完成!

ubuntu修改grub引导菜单

先运行update-grub命令生成一次grub配置,顺便查看一下识别出来的引导菜单内容

root@alairpc:~# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done
root@alairpc:~# 

注意看,以上共有5个菜单项,最后一个是windows7

接下来我们来看看gurb配置文件/etc/default/grub

root@alairpc:~# cat /etc/default/grub 
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=4
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="locale=zh_CN"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

其中GRUB_DEFAULT就是默认引导项,这里设置为4,对应的为windows7,说明一下,这个引导序列号是从0开始排的,所以第五项window7的序列号应为为4

Let's encrypt 证书快速生成脚本

网站的Let’s encrypt证书快到期了,看了官方的续期方法比较繁琐,于是在网上找了找简单方便做法,结果找到了墓地小企鹅写的一个脚本(shell script),使用这个脚本可以方便的生成以及更新Let’s encrypt 证书。

脚本地址 https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

下载脚本

wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh

配置

root@rnse:~/lesh# cat letsencrypt.conf
# only modify the values, key files will be generated automaticly.
ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="alair.key"
DOMAIN_DIR="/data/wwwroot/alair.cn/compiled"
DOMAINS="DNS:alair.cn,DNS:www.alair.cn"
#ECC=TRUE
#LIGHTTPD=TRUE

按照需要自定义DOMAIN_KEYDOMAIN_DIRDOMAINS三部分。

生成证书

root@rnse:~/lesh#chmod +x letsencrypt.sh
root@rnse:~/lesh# ./letsencrypt.sh letsencrypt.conf
Generate account key...
Generating RSA private key, 4096 bit long modulus
..............................++
....++
e is 65537 (0x10001)
Generate domain key...
Generating RSA private key, 2048 bit long modulus
...............................................................+++
..........................+++
e is 65537 (0x10001)
Generate CSR...alair.csr
Parsing account key...
Parsing CSR...
Registering account...
Registered!
Verifying www.alair.cn...
www.alair.cn verified!
Verifying alair.cn...
alair.cn verified!
Signing certificate...
Certificate signed!
New cert: alair.chained.crt has been generated

生成后的目录文件如下:

使用Syncthing在多个设备之间同步文件

Syncthing是一款开源的多平台同步软件,使用他可以在多个设备间进行文件同步,并且带有版本控制功能。

Syncthing官网地址 **https://syncthing.net/**Github地址 https://github.com/syncthing/syncthing

安装Syncthing

Syncthing官网提供多平台安装包,下载地址为 https://github.com/syncthing/syncthing/releases/

并且针对Debian/Ubuntu平台,官方提供了apt-get安装方法

# Add the release PGP keys:
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# Add the "release" channel to your APT sources:
echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list

# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing

运行Syncthing

Linux下直接使用syncthing命令运行

syncthing &

Windows下直接打开下载的syncthing.exe文件,而后浏览器自动打开http://127.0.0.1:8384进行设置管理。

管理Syncthing

如果是在VPS上安装Syncthing ,运行syncthing后,只能通过http://127.0.0.1:8384进行管理,我们可以通过以下方法在本地管理。

ssl -L 9891:localhost:8384 root@ip

输入root密码登录成功后,即可本地浏览http://127.0.0.1:9891对VPS上的Synchting进行管理。

添加设备

每个设备均有一个设备标识,可以通过操作->显示设备标识来查看。

不同的设备之间进行链接,就是通过添加对方的设备标志来实现。

树莓派可用的PCD8544库

Nokia 3310/5110显示器基于PCD8544,在此分享一个树莓派可用的PCD8544库

使用该库之前,需要安装wiringPi,安装方法可参考树莓派连接DHT11采集温度与湿度

项目地址:https://github.com/binerry/RaspberryPi/tree/master/libraries/c/PCD8544

可通过github download直接下载,不能访问github的,用以下连接下载

	http://unixetc.com/res/Raspberry.Pi_PCD8544.Library.zip

解压后,可得到一个c源码和一个h头文件

	PCD8544.c
	PCD8544.h

以及samples文件夹下的三个示例

	pcd8544_rpi.c
	pcd8544_test.c
	pcd8544_test2.c

按照下图所示连接好树莓派和显示器

raspi_pcd8544

  • RST —— 复位 接GPIO 0
  • CE —— 片选 接GPIO 1 或 不接
  • DC —— 数据/指令选择 接GPIO 2
  • DIN —— 串行数据线 接GPIO 3
  • CLK —— 串行时钟线 接GPIO 5 (因为我的GPIO 4已经接了一个DHT11传感器)
  • VCC —— 电源输入 接3.3v
  • BL —— 背光控制端 接3.3v
  • GND —— 地线 接地

编译三个示例程序

	cc -o pcd8544_test pcd8544_test.c ../PCD8544.c  -L/usr/local/lib -lwiringPi
	cc -o pcd8544_test2 pcd8544_test2.c ../PCD8544.c  -L/usr/local/lib -lwiringPi
	cc -o pcd8544_rpi pcd8544_rpi.c ../PCD8544.c  -L/usr/local/lib -lwiringPi

然后运行

使用OptiPNG优化压缩图片

因工作需要,得处理一张7872x5904体积为178MB的图片,格式为TIFF。

网上搜了半天,找到一个名为OptiPNG的软件,主要为PNG优化,但也支持TIFF格式。

下面是OptiPNG的官方介绍

OptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information. This program also converts external formats (BMP, GIF, PNM and TIFF) to optimized PNG, and performs PNG integrity checks and corrections.

OptiPNG可以将PNG文件重新压缩,压缩后体积变得更小,并且不会丢失任何信息。同时optipng还支持其他格式的图片,如BMP、GIF、PNM和TIFF。

至于OptiPNG的威力如何,请看本次实例,下载 optipng-0.7.8.tar.gz,密码3705。

	root@raspi:~# ls -lh huxian.tif                         
	-rw-r--r-- 1 root root 178M Apr  4 16:54 huxian.tif    //原始文件178MB
	root@raspi:~# optipng huxian.tif
	** Processing: huxian.tif
	Importing TIFF
	7872x5904 pixels, 4x8 bits/pixel, RGB+alpha   //分辨率7872x5904
	Reducing image to 3x8 bits/pixel, RGB
	Input file size = 186000368 bytes
	
	Trying:
	zc = 9  zm = 8  zs = 0  f = 0         IDAT size = 4273133
	
	Selecting parameters:
	zc = 9  zm = 8  zs = 0  f = 0         IDAT size = 4273133
	
	Output file: huxian.png
	
	Output IDAT size = 4273133 bytes
	Output file size = 4273190 bytes (181727178 bytes = 97.70% decrease)
	
	root@raspi:~# ls -lh huxian*
	-rw-r--r-- 1 root root 4.1M Apr  4 17:02 huxian.png   //压缩结果4.1MB
	-rw-r--r-- 1 root root 178M Apr  4 16:54 huxian.tif

看来OptiPNG还是很牛的嘛!!!

LFTP使用实例

LFTP使用实例

lftp是一个功能强大的ftp/http客户端,作者是 Alexander Lukyanov。

lftp支持多种传输协议,如ftp、http、https、sftp、exp等。

如同BASH一样,lftp支持任务管理。并且具备书签管理、内置镜像和多线程传送功能。

使用LFTP

lftp登录服务器

	lftp ftp://user:password@ip:port

以上是一个完整的lftp登录示例,其中包含协议(ftp)、用户名(user)、密码(password)、主机(ip)以及端口(port)

默认情况下lftp直接访问ftp服务,默认登录端口为22,因此我们可以使用以下方法来便捷登录主机

	lftp user@ip

然后系统会提示输入password,完成后登录成功!

lftp命令行参数

	lftp :~> help
		!<shell-command>                     (commands)
		alias [<name> [<value>]]             attach [PID]
		bookmark [SUBCMD]                    cache [SUBCMD]
		cat [-b] <files>                     cd <rdir>
		chmod [OPTS] mode file...            close [-a]
		[re]cls [opts] [path/][pattern]      debug [<level>|off] [-o <file>]
		du [options] <dirs>                  exit [<code>|bg]
		get [OPTS] <rfile> [-o <lfile>]      glob [OPTS] <cmd> <args>
		help [<cmd>]                         history -w file|-r file|-c|-l [cnt]
		jobs [-v] [<job_no...>]              kill all|<job_no>
		lcd <ldir>                           lftp [OPTS] <site>
		ln [-s] <file1> <file2>              ls [<args>]
		mget [OPTS] <files>                  mirror [OPTS] [remote [local]]
		mkdir [-p] <dirs>                    module name [args]
		more <files>                         mput [OPTS] <files>
		mrm <files>                          mv <file1> <file2>
		[re]nlist [<args>]                   open [OPTS] <site>
		pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]
		pwd [-p]                             queue [OPTS] [<cmd>]
		quote <cmd>                          repeat [OPTS] [delay] [command]
		rm [-r] [-f] <files>                 rmdir [-f] <dirs>
		scache [<session_no>]                set [OPT] [<var> [<val>]]
		site <site-cmd>                      source <file>
		torrent [-O <dir>] <file|URL>...     user <user|URL> [<pass>]
		wait [<jobno>]                       zcat <files>
		zmore <files>

常用的命令解释如下:

Linux下查看修改PATH

什么是PATH?

要搞清什么是PATH,应该先搞清什么是环境变量?

在计算机中,如果需要运行一个软件,那么我们就要找到它所在的位置,但是每次运行程序时如果都要进入到相应目录,那么显然是很繁琐的。于是就有了环境变量,环境变量就是一个系统参数,里面记录了一些目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。

而在Linux中,系统会有一个默认的PATH环境变量,里面记录了系统级的相关命令目录,比如当我们输入lscdpwd等命令时,我们不需要指定它们所在的目录,因为包含这些命令的系统目录已经写入PATH参数,因而方便我们调用。

查看PATH

在linux中,可以使用export命令来查看所有环境变量,如下:

pi@raspi:~$ export
declare -x HOME="/home/pi"
declare -x LANG="en_GB.UTF-8"
declare -x LOGNAME="pi"
declare -x MAIL="/var/mail/pi"
declare -x OLDPWD
declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin"
declare -x PWD="/home/pi"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="101.135.216.146 28249 22"
declare -x SSH_CONNECTION="101.135.216.146 28249 192.168.1.111 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="pi"

使用echo来查看单独的环境变量

pi@raspi:~$ echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin

我们可以看到,以上PATH值包含了一些系统命令的目录,而这些目录都用:隔开。

修改PATH

我们可以使用export命令来添加目录,如下:

export PATH=/mydoc:$PATH

以上命令在原有的PATH前添加了/mydoc这个目录,设置完成后的PATH值如下:

pi@raspi:~$ echo $PATH
/mydoc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/pi/bin

以上方法修改PATH值,在终端退出后就会失效,因此建议通过修改/etc/profile来设定PATH

Ubunt下安装H2O

更新系统

apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get autoremove --purge -y && apt-get autoclean -y

安装必备软件

apt-get install locate git cmake build-essential checkinstall autoconf pkg-config libtool python-sphinx wget libcunit1-dev nettle-dev libyaml-dev libuv-dev -y

安装wslay

git clone https://github.com/tatsuhiro-t/wslay.git
cd wslay/
autoreconf -i
automake
autoconf
./configure
make
make install

安装完成后检查lib文件,如下所示:

ls /usr/local/lib/
libuv.a   libuv.so.1      libwslay.la    libwslay.so.0.0.1  python3.4
libuv.la  libuv.so.1.0.0  libwslay.so    pkgconfig
libuv.so  libwslay.a      libwslay.so.0  python2.7

安装最新版OpenSSL

删除旧版OpenSSL

小米4C解锁和刷入TWRP Recovery

时隔三年再次入手小米手机,没想到如今的MIUI已经今非昔比,首先是bootloader锁住了,官方理由是安全,但是作为一个android发烧友,锁bootloader后就无法安装第三方recovery,进而无法体验众多第三方系统了。以下介绍如何解锁小米4C以及刷入第三方TWRP Recovery。 permalink: ’logs/Mi4C-Unlock-and-TWRP-Recovery.html' 时隔三年再次入手小米手机,没想到如今的MIUI已经今非昔比,首先是bootloader锁住了,官方理由是安全,但是作为一个android发烧友,锁bootloader后就无法安装第三方recovery,进而无法体验众多第三方系统了。其次是到处广告,整个系统UI很多处都是广告,额滴个神啊! 小米穷疯了吧! 无力吐槽啊………………

以下介绍如何解锁小米4C以及刷入第三方TWRP Recovery。

解锁小米4C

小米解锁需要去官方申请,申请提交地址为 http://www.miui.com/unlock/

录入小米ID以及手机号等信息后,就等着吧……

我等了16天才收到解锁申请通过短信通知。

然后下载官方解锁工具,下载地址为http://www.miui.com/unlock/download.html

打开解锁工具,登录小米帐号,关机长按音量下+电源键进入Fastboot模式。

然后按照提示进行操作,两分钟不到解锁成功!!!

注:如果解锁失败,提示什么帐号不一致啦、手机信息无法获取啦,请到miui官网论坛进行问题提交。

刷入TWRP Recovery

首先下载adb工具包,里面包含需要的软件fastboot,下载地址 http://pan.baidu.com/s/1sjR8ved,下载后点击安装。

然后下载TWRP Recovery镜像文件,下载地址为http://pan.baidu.com/s/1nuugNK9

将下载后的TWRP Recovery镜像文件(.img)拷贝至adb工具包目录,然后CMD模式下进入到adb工具包目录,如下操作:

刷入TWRP Recovery

D:\>fastboot flash recovery libra_ts_twrp_3_0_0_3.img
target reported max download size of 536870912 bytes
sending 'recovery' (51844 KB)...
OKAY [  1.485s]
writing 'recovery'...
OKAY [  0.481s]
finished. total time: 1.971s

重启引导进入TWRP Recovery

D:\>fastboot boot libra_ts_twrp_3_0_0_3.img
downloading 'boot.img'...
OKAY [  1.494s]
booting...
OKAY [  0.516s]
finished. total time: 2.014s

说明:首次刷入TWRP Recovery,进入Recovery后触摸屏可能无法操作,这时唯一的方法就是等待,等到1分钟左右手机自动息屏后,重按电源键点亮屏幕即可恢复操作。

斐讯K1刷华硕固件

在福利吧(fuliba.net)看到斐讯K1路由器免费获得的活动,于是在天猫买了一台,赠送的139铃铛卡也正常激活使用,一个月到期后共140元也正常提了出来。总的来说,没被坑!!!

但是斐讯K1默认的固件确实不敢恭维,于是在网上搜了一通,先刷入Breed,然后通过Breed刷入华硕固件,特整理步骤。

什么是Breed?

这是楼主从去年年中自行设计开发的一个全新的 Bootloader,并用于取代 U-Boot。

此 Bootloader 暂取名为 Breed,不是 U-Boot,也不是 U-Boot 的改进版,是全新、独立的、跟 U-Boot 平级的 Bootloader。

科普一下:

Bootloader 意思为引导加载器,即为用于加载操作系统的程序。它是一大类此类功能程序的统称。现在的 BIOS、UEFI、GRUB、RedBoot、U-Boot、CFE、Breed 等都是 Bootloader。

因此,还是上面那句话,Breed 不是由什么东西改名出来的,这就是一个新的东西。看着有些人的话我真的觉得很搞笑。

此外,由上面两句话,如果想从 Breed 刷到其他任何 Bootloader,例如 U-Boot,请在 Breed 固件更新页面选择更新 Bootloader。。。。。。。。。。。。

摘自恩山无线论坛Breed作者hackpascal原帖

刷入Breed

适合斐讯K1的Breed下载地址为 http://breed.hackpascal.net/breed-mt7620-reset1.bin

首先进入到斐讯K1的管理后台,192.168.2.1,确保路由器正常使用并且已经配置好联网。

接着,在浏览器地址栏输入http://192.168.2.1/goform/Diagnosis?pingAddr=192.168.2.100|echo""|telnetd回车

浏览器会跳转到网络测试页面,这个不用理会。

打开CMD (WIN+R),telnet连接路由器

telnet 192.168.2.1

使用路由器管理员帐号登录,默认为admin/admin

下载Breed到路由器

cd /tmp
wget http://breed.hackpascal.net/breed-mt7620-reset1.bin

刷入Breed

mtd_write write breed-mt7620-reset1.bin Bootloader

重启路由器

reboot

相关截图:

斐讯K1刷入Breed过程

刷华硕固件

路由器断电,插电时按住Reset键5秒。

网线连接电脑,浏览192.168.1.1进入Breed Web恢复控制台。

左侧菜单点击固件更新,在右侧选择固件文件,开始上传更新。

完成后可能不会自动重启,需要手动断电重启。

注意:有时Reset后,电脑可能无法连接192.168.1.1,可以手动设置网卡参数192.168.1.11/255.255.255.0/192.168.1.1

至此斐讯K1刷华硕固件整个过程完成,至于华硕固件使用方法,请自行搜索。

Firefox和FoxyProxy

三年不用Firefox了,最近由于需要进行手机端和电脑端资源同步,chrome在国内不安装谷歌套件无法使用,所以又切换回了firefox。

在安装完成autoproxy后发现,订阅gfwlist.txt一直无法成功,网上找了找消息,说是autoproxy已经跟不上firefox开发脚步,无法继续使用。于是在firefox的addon站点重新找代理插件,最终选定foxyproxy。

以下是foxyproxy设置socks代理,和订阅gfwlist.txt的一些设置方法。

安装foxyproxy

去主页http://getfoxyproxy.org/,安装完成后重启firefox

添加代理服务器

双击地址栏和搜索栏中间的foxyproxy图标,进入到设置

代理服务器选项卡中点击新建代理服务器

常规选项卡中设置代理名称,如ss

代理服务器细节中设置具体参数,以下是我的设置截图,可以参考

FoxyProxy代理服务器设置

设置订阅gfwlist.txt

模式订阅选项卡中,空白处点击右键,添加新的模式订阅

参考下图设置,注意勾划出来的地方

FoxyProxy订阅gfwlist.txt

将foxyproxy的工作模式选择为使用基于其预定义模版的代理服务器

windows7开启telnet客户端

安装完成windows7后,默认可能没有开启telnet功能,这样在cmd下输入telnet时会提示无命令,可以参考下文开启telnet功能。

开始 -> 控制面板 -> 程序和功能

在左侧边栏找到打开或关闭windows功能

在打开的窗口中找到Telnet客户端,勾选,确认。

Over!

使用net_speeder加速VPS

当使用国外服务器时,经常会发现,下载速度只有十几k。平时可能不太注意,认为服务器带宽不足,或者自己使用的宽带不给力,其实很有可能原因并不在此。

由于光速的局限性,延迟会比较高(即使光沿直线传播,太平洋一个往返也要一百多毫秒)。并且由于距离较远,途径路由跳数较多,并且网络拥堵的原因。经常会发生丢包的情况。

对于平时使用最广泛的TCP协议来讲,发送端发出包后,接收端会回复ACK,表示自己收到了。用这种机制来保证可靠性。但对于高延迟链路来讲,如果每发送一个包都等待应答,那么大部分时间都在等待数据包到达,而链路则空置了。为此一般会采用滑动窗口技术。即在窗口满之前,发送端一直发送包,然后收到应答后将确认收到的包从窗口中移除。这样可以提高链路利用率。

TCP还有一个特性则是拥塞控制。当发送端检测到链路发生丢包时,则会主动缩小窗口大小以减慢发送速度,避免拥塞。不过对于跳数较多的链路来讲,只要有一个路由不够稳定丢包,就会被发送端判断为拥塞,从而影响网络速度。

为了解决丢包问题,最简单粗暴的方法就是双倍发送,即同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。

这种方式下,直接优点是降低丢包率,直接缺点是耗费双倍流量。一些延伸影响是更容易触发快速恢复逻辑,避免了丢包时窗口缩减过快。一定程度也能提高网络速度。

最近比较忙,空闲时间做了一个最简单的程序,试用效果很好,在一台VPS上测试后发现,未开启时单线程下载、ssh管道速度在十几K级别。开启后可以达到平均300KB+的速度。效果非常明显。但对于不加速就可以跑满带宽的类型来讲(多线程下载),开启后反而由于多出来的无效流量,导致速度减半。所以对于多线程/高速链路,这个方案是不适合的。

目前版本是最简单的逻辑,未来会进行细化(主动触发快速恢复、快速重传等),降低流量浪费,提升加速效果。

目前程序起名net-speeder,相对于修改协议栈来讲,由于后者需要重新升级编译内核,使用用户态程序部署更方便,稳定性更高,兼容性更好。缺点则是性能开销稍大和自由度有损失。总体比较起来,个人使用还是使用用户态程序更合适一些,特别是在虚拟机中使用(OpenVZ,LXC等虚拟机无法自己定制内核)。

摘自http://www.snooda.com/read/324

net_speeder项目主页 https://github.com/snooda/net-speeder

安装net_speeder

apt-get install libnet-dev libpcap-dev -y
git clone https://github.com/snooda/net-speeder.git
cd net-speeder
sh build.sh
mv net_speeder /usr/local/bin/

使用net_speeder

使用ifconfig查看网卡端口,我的端口为venet0

nohup net_speeder venet0 "ip" >/dev/null 2>&1 &

添加到开机启动

echo 'nohup net_speeder venet0 "ip" >/dev/null 2>&1 &' >> /etc/rc.local

显示cp等命令的执行进度

Linux中进行文件拷贝和移动时,我们是看不到具体命令的执行情况,不知道还需要多久才可以执行完成。在此推荐一个软件名为progress,用它可以查看一些命令的具体执行情况,包括进度、时间等等。

该软件的具体解释为Coreutils Progress Viewer,即核心程序进度查看,用它可以监视很多linux程序的执行情况,比如cp、mv、dd、tar,、gzip、cat等等,甚至于firefox的下载进度或者nginx的运行情况。

安装progress

progress主页 https://github.com/xtod/progress

可以使用aptdnfpacmanzypperbrew等管理工具直接安装progress,或者使用以下手动安装。

手动安装progress方法

	git clone https://github.com/xtod/progress.git
	cd progress
	make
	make install

使用progress

简单的执行方法

➜  ~ progress
No command currently running: cp, mv, dd, tar, bsdtar, cat, rsync, scp, grep, fgrep, egrep, cut, sort, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz, unxz, lzma, unlzma, 7z, 7za, zip, unzip, zcat, bzcat, lzcat, coreutils, split, gpg, or wrong permissions.

几个示例:

使用Google Authenticator两步验证加强SSH登录

Google Authenticator开源版主页 https://github.com/google/google-authenticator

安装Google Authenticator

Ubuntu通过以下命令安装:

apt-get install libpam-google-authenticator

CentOS通过以下命令安装:

yum install google-authenticator

其他系统可以通过源码编译安装

	git clone https://github.com/google/google-authenticator-libpam.git
	cd google-authenticator-libpam/
	./bootstrap.sh
	./configure
	make
	make install

注意:在Debian7中执行./configure时可能存在以下错误提示

	configure: error: Unable to find the PAM library or the PAM header files

在此需要安装libpam0g-devlibtool

	apt-get -y install libpam0g-dev libtool

设置Google Authenticator

在手机端搜索安装Google Authenticator

	google-authenticator
	Do you want authentication tokens to be time-based (y/n) y

然后出现二维码,使用手机端Google Authenticator扫码,接下来服务器端继续设置

如果没有出现二维码,可以将提示的以https://www.google.com/chart?开头的连接复制到浏览器中,就可以看到二维码了

树莓派安装Dnsmasq加速DNS解析

天朝的dns服务商尿性不是一般的大,动不动就抽风或者劫持,为了避免这种情况,可以在树莓派上安装Dnsmasq来加速dns解析,提高网络浏览体验。

安装配置dnsmasq

apt-get install dnsmasq

配置dnsmasq,vi /etc/dnsmasq.conf

我的配置文件如下:

domain=Raspi2
resolv-file=/etc/resolv.dnsmasq
conf-dir=/etc/dnsmasq.d
min-port=4096
server=114.114.114.114
server=114.114.115.115
server=223.5.5.5
server=223.6.6.6
server=119.29.29.29
server=182.254.116.116
server=112.124.47.27
server=114.215.126.16
server=101.226.4.6
server=218.30.118.6
server=42.120.21.30
server=199.91.73.222
server=178.79.131.110
server=8.8.8.8
server=8.8.4.4

cache-size=10000

配置完重启dnsmasq服务

service dnsmasq restart

其中的server字段为上游DNS

配置dnsmasq-china-list

git clone https://github.com/felixonmars/dnsmasq-china-list.git
cd dnsmasq-china-list/
cp *.conf  /etc/dnsmasq.d/
service dnsmasq restart

至此设置完成,可以在路由器中将首选dns设为树莓派ip,这样局域网内的所有设备都可以体验dns解析加速了!

树莓派安装配置Noip

注册noip

首先访问 http://noip.com 注册账户

然后在主机管理(Manage Hosts)中添加主机(Add A Host),根据提示设置二级域名,IP可以随意填写。

安装Noip客户端

	wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
	tar zxf noip-duc-linux.tar.gz
	cd noip-2.1.9-1
	sudo make install

安装过程中,按照提示输入noip帐号信息,时间间隔建议设为5s,默认30s

设置开机启动

/etc/init.d/中建立noip2脚本

	sudo vi /etc/init.d/noip2

脚本内容如下

	#! /bin/sh
	
	### BEGIN INIT INFO
	# Provides:          noip2
	# Required-Start:    $syslog
	# Required-Stop:     $syslog
	# Default-Start:     2 3 4 5
	# Default-Stop:      0 1 6
	# Short-Description: noip.com client service
	### END INIT INFO
	
	# . /lib/lsb/init-functions
	case "$1" in
		start)
			echo "Starting noip2."
			/usr/local/bin/noip2
		;;
		stop)
			echo "Shutting down noip2."
			killall noip2
			#killproc /usr/local/bin/noip2
		;;
		*)
			echo "Usage: $0 {start|stop}"
			exit 1
	esac
	
	exit 0

设置开机启动

树莓派使用ddclient和DDNS

域名解析

首先得有个域名,在域名管理中将域名DNS设为he.net的DNS地址,如下:

ns1.he.net
ns2.he.net
ns3.he.net
ns4.he.net
ns5.he.net

然后在http://dns.he.net注册账号,添加域名(Add a new domain)

接下来添加A记录(New A),勾选允许动态域名解析(Enable entry for dynamic dns)

点击域名后DDNS列中的刷新按钮,新建一个DDNS密匙(Generate a DDNS key.)

安装设置ddclient

在树莓派上安装ddclient

sudo apt-get install ddclient

编辑ddclient配置文件,路径为/etc/ddclient.conf

protocol=dyndns2
use=web,web=myip.dnsomatic.com
server=dyn.dns.he.net
login=raspi.in
password='ddnskey'
www.raspi.in,raspi.in

其中password为设置DDNS时的key

重启ddclient服务

service ddclient restart

验证IP查询结果

sudo ddclient -query
use=if, if=eth0 address is 192.168.1.111
use=if, if=lo address is 127.0.0.1
use=web, web=dnspark address is 36.40.143.235
use=web, web=dyndns address is NOT FOUND
use=web, web=loopia address is 36.40.143.235

其中if方式查询到的是内网地址和本机地址,web方式查询到的时外网IP

SSL安全优化

先贴出本站的SSL安全评级,测试地址为https://www.ssllabs.com/ssltest/analyze.html?d=alair.cn

“SSL安全评级”

以下是本站Nginx配置中关于SSL部分

	listen 443 ssl http2;
	
	ssl_certificate /etc/letsencrypt/live/alair.cn/fullchain.pem;  
	ssl_certificate_key /etc/letsencrypt/live/alair.cn/privkey.pem; 
	
	ssl_session_timeout 60m;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
	
	ssl_prefer_server_ciphers on;
	ssl_session_cache builtin:1000 shared:SSL:10m;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;
	ssl_stapling on;
	ssl_stapling_verify on;
	
	add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
	add_header X-Frame-Options "DENY";

说明:

dhparam.pem可以使用openssl dhparam -out dhparam.pem 4096命令生成,这个命令会执行很长时间,也可以将字节数改为2048

使用免费Let's Encrypt证书

在此介绍如何使用Let’s Encrypt的免费SSL证书,需要在有管理权限的VPS上操作,然后参考以下方法自签域名证书。

git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt
mkdir -p /home/webroot/.well-known/acme-challenge  #/home/webroot为网站目录
./letsencrypt-auto certonly --email [email protected] -d alair.cn,www.alair.cn --webroot -w /home/webroot --agree-tos #注意email、域名、和网站目录

签发成功后,会提示如/etc/letsencrypt/live/www.alair.cn/fullchain.pem;的证书路径信息。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.alair.cn/fullchain.pem. Your cert will
expire on 2016-03-14. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- If like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

接下来在Nginx中配置使用,如下代码

使用MD5校验文件

md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。

md5校验,有很小的概率不同的文件生成的md5可能相同。比md5更安全的校验算法还有SHA*系列的。

在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

md5sum示例

生成文件md5

pi@raspi:~ $ md5sum bs.conf
fcd3e1243d1cd5903d4e38c46671b84f  bs.conf

md5sum校验是根据文件内容为准,与名称无关,意思是即便文件名修改了,但md5校验值应该不会改变,如下:

pi@raspi:~ $ cp bs.conf bs.conf.bak
pi@raspi:~ $ md5sum bs*
fcd3e1243d1cd5903d4e38c46671b84f  bs.conf
fcd3e1243d1cd5903d4e38c46671b84f  bs.conf.bak

根据md5校验文件是否更改

一般网上分享的大文件都会附带一个.md5文件,这就是所分享文件的md5值,可以使用-c参数来直接使用.md5文件来检验文件是否完整

pi@raspi:~ $ md5sum bs.conf>bs.conf.md5
pi@raspi:~ $ md5sum -c bs.conf.md5
bs.conf: OK

如上例,将bs.conf的md5值定向到一个bs.conf.md5文件,然后使用md5sum -c bs.conf.md5直接检验相应文件是否完整一致,校验通过的话会输出提示OK,如果文件经过修改,内容已经不一致,则不会通过校验,则会显示FAILED

使用SCP传输文件

示例:用户名root 地址 2.33.153.67

下载文件

scp [email protected]:/root/test.mp4 /home/pi/

将服务器上的/root/test.mp4下载到本地/home/pi文件夹

上传文件

scp /home/pi/ok.txt [email protected]:/root

将本地/home/pi/ok.txt上传至服务器/root文件夹

下载文件夹

scp -r [email protected]:/root/ebooks /home/pi

将服务器上的/root/ebooks文件夹下载至本地/home/pi下

上传文件夹

scp  -r /home/pi/music [email protected]:/media

将本地/home/pi/music文件夹上传至服务器/media下

树莓派安装Node.js

首先查看树莓派cpu信息

pi@raspi:~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 2.00
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2708
Revision        : 000e
Serial          : 000000004a8acb6d

看清楚cpu构架,是ARMv6

然后在node.js官网下载对应版本的包,下载地址https://nodejs.org/dist/

# wget https://nodejs.org/dist/v4.2.2/node-v4.2.2-linux-arm64.tar.gz
# tar zxf node-v4.2.2-linux-arm64.tar.gz
# mv node-v4.2.2-linux-arm64 /usr/nodejs422

方便使用期间,做个链接

Linux下更改时区

Linux中时区代码都在/usr/share/zoneinfo/目录中

首先删除默认时区

#rm /etc/localtime

设定新的时区

#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

完成!

打造一台翻墙路由器[转载]

本文转载自https://github.com/Jerry-hechen/blog

路由器配置方案:Shadowsocks-libev-spec + ChinaDNS

本教程以Dlink dir-505为例,其他型号路由也类似,Openwrt版本:15.05,其他安装包均为最新版。

首先路由器型号需要在openwrt列表中:http://wiki.openwrt.org/toh/start(可以ctrl+F搜索匹配型号),并记录所用路由器cpu的型号。

一.下载路由器CPU型号对应的的固件:https://downloads.openwrt.org/

二.刷机及配置

1.访问路由器上传固件,等待一会儿,勿断电。

2.好了之后打开wifi开关,连上openwrt(有的固件默认不没有开启WI-FI需要用网线连接),访问192.168.1.1

3.System-》Administertion,设置路由密码,选中Allow remote hosts to connect to local SSH forwarded ports

4.Network-》Wifi,WI-FI没有启动先启动,设置Transmit Power为15dBm(31mW),设置Country Code为CN-China

5.设置下WIFI名称(ESSID)、密码、加密方式(Encryption,推荐使用WPA-PSK/WPA2-PSK)

6.Network-》Interfaces,修改LAN口,勾掉Bridge interfaces选项,更改网关为192.168.5.1,添加WAN口选择DHCP client选项(如果需要拨号选择PPPoE),勾上Adapter “eth1”。注意:此处修改LAN口、添加WAN口不要“保存&应用”,先“保存”,在Network-》Interfaces列表整体“保存&应用”

为了和主路由不冲突最好将网关改为其他,比如192.168.5.1

刷机成功。

三.下载安装包并安装到路由器

1.下载安装包

Shadowsocks-spec: http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/
chinaDNS: chinaDNS: http://sourceforge.net/projects/openwrt-dist/files/chinadns/
Shadowsocks-spec-LuCI:http://sourceforge.net/projects/openwrt-dist/files/luci-app/shadowsocks-spec/
chinaDNS-LuCI:http://sourceforge.net/projects/openwrt-dist/files/luci-app/chinadns/

注意,一定要下载路由器cpu型号对应的文件!DIR-505选择ar71xx

2.安装到路由器

  • 保证路由器可以上外网

  • 用ssh工具上传shadowsocks-libev-spec、ChinaDNS、及2个luci文件 4个ipk包到路由器/tmp目录

    ssh [email protected] opkg update

  • 安装中文包,然后在路由管理界面System-》System-》Language and Style切换中文语音,刷新可看到中文

    opkg install luci-i18n-base-zh-cn

    cd /tmp

    opkg install shadowsocks-libev-spec-polarssl_2.4.1-1_ar71xx.ipk

    opkg install ChinaDNS_1.3.2-3_ar71xx.ipk

    opkg install luci-app-shadowsocks-spec_1.3.2-1_all.ipk

    opkg install luci-app-chinadns_1.3.4-1_all.ipk

树莓派安装ffmpeg

先安装h264编码器

#!/bin/bash
cd /usr/src
git clone git://git.videolan.org/x264
cd x264
./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl
make
sudo make install

下载源码编译安装ffmpeg

cd /usr/src
git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
sudo ./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
make
sudo make install

由于树莓派原因,这个过程很长……很长…… 建议开screen,然后Ctrl+a+d

linux下将mp3转换为ogg

安装软件

apt-get install mpg321 vorbis-tools 

使用如下命令转换

mpg321 tweet.mp3 -w raw && oggenc raw -o tweet.ogg && rm -rf raw

示例:

root@hkvps:/home/res# mpg321 tweet.mp3 -w raw && oggenc raw -o tweet.ogg && rm -rf raw
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2, and 3.
Version 0.3.2-1 (2012/03/25). Written and copyrights by Joe Drew,
now maintained by Nanakos Chrysostomos and others.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Playing MPEG stream from tweet.mp3 ...
MPEG 1.0 layer III, 192 kbit/s, 44100 Hz joint-stereo

[4:45] Decoding of tweet.mp3 finished.
Opening with wav module: WAV file reader
Encoding "raw" to
		"tweet.ogg"
at quality 3.00
		[ 99.7%] [ 0m00s remaining] |

Done encoding file "tweet.ogg"

		File length:  4m 45.0s
		Elapsed time: 0m 16.3s
		Rate:         17.5056
		Average bitrate: 112.1 kb/s

root@hkvps:/home/res# ll

科目一过咧

驾校交钱已经一年了,一直没时间考试,上次报考的科目一由于临时加班没去成,这次重新交钱补考。

昨儿晚把驾校发的书翻了一遍,然后就是在手机上用车轮考驾照不停的练习。

今儿中午11点多到考场,换了准考证就等待安排考试。

分配了个电脑有点挫,第一次登录显示考试时间不对,重新更新信息。

第二次指纹录入一直不能验证通过,重新更新指纹验证。

第三次摄像头无法采集视频信息,重置考试系统。

第四次,一切正常开始答题……

13分钟答完,等过了15分钟交卷,得分98。

考试要点:细心别急、细心别急、细心别急!

StartSSL免费证书与Nginx配置

注册StartSSL

打开https://www.startssl.com/,点击Sign-up开始注册

startssl

参考上图填写注册信息,然后Continue,会有如下提示,系统会发送验证码到你的注册邮箱

startssl

检查注册邮箱,将收到的验证码填写提交,然后会出现如下提示,等待审核。

startssl

审核通过后,会收到如下提示邮件,点击其中连接,然后输入邮箱中的验证码完成注册

startssl

startssl

安装证书

接下来创建私匙

startssl

安装证书

startssl

安装成功后会有如下提示

startssl

startssl

验证域名

接下来验证域名,点击Validations Wizard

startssl

填写域名

startssl

选择验证邮件地址

startssl

按照提示输入邮箱接收到的验证码完成验证。

startssl

创建证书

选择Certificates Wizard,证书目标选择Web Server SSL/TLS Certificate

startssl

接下来新建私匙

startssl

点击Skip跳过系统建立步骤,我们自己在VPS上建立CSR文件,参考下图通过openssl命令建立CSR文件

startssl

注意,为了便于后期安装配置方便,建议密码置空

完成后,cat出建立好的ciuxsss.csr内容,粘贴提交

startssl

startssl

接下来添加域名

startssl

startssl

startssl

接下来将文本框中的内容保存为一个**.crt**文件

startssl

配置Nginx

贴出我的配置文件,大家参考一下

	server {
		listen 80;
		location /{
		return 301 https://$host$request_uri;
		}
	}
	
	server
		{
			listen 443;
			#listen 80;
			#listen [::]:80;
			server_name ciux.org;
			index index.html index.htm index.php default.html default.htm default.php;
			root  /home/ciux/compiled;
	
	ssl    on;
	ssl_certificate    /home/bk/ssl/ciuxsss.crt;
	ssl_certificate_key     /home/bk/ssl/ciuxsss.key;
	ssl_session_timeout 5m;
	
	ssl_protocols SSLv2 SSLv3 TLSv1;
	ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	ssl_prefer_server_ciphers   on;
	
	……

其中第一个Server是将所有80端口的http访问301重定向到443端口的https访问。

Gandi免费SSL证书使用方法

首先澄清此文中的免费不是真的免费,而是新注册或转移域名到Gandi,都可以获得标准版SSL证书一年的免费使用。

符合以上条件的话,可以进行下面操作了!

在Gandi上购买SSL证书,选择标准版,在结算的时候系统会自动判断是否免单,正常情况下会0元结单,完成后接着配置SSL证书。

首先提交CSR,这里需要自己生产CSR。

在此以3c.lc域名为例,在Ubuntu中操作。

openssl req -nodes -newkey rsa:2048 -sha1 -keyout 3clc.key -out 3clc.csr

然后根据提示填写以下内容:

Country Name (2 letter code) [AU]: #国家代码,中国为CN

State or Province Name (full name) [Some-State]: #省份

Locality Name (eg, city) []: #城市

Organization Name (eg, company) [Internet Widgits Pty Ltd]: #组织名

Organizational Unit Name (eg, section) []: #部门名

Common Name (e.g. server FQDN or YOUR name) []:3c.lc #注意,这里需要填写你的域名。

Email Address []:[email protected] #邮箱

Please enter the following ’extra’ attributes

墙、感染、信任和欺骗

声明:

本文来自霍炬的微信公共帐号“歪理邪说”,用微信添加 wxieshuo 公众号,即可订阅。

先跟读者道个歉,最近一段时间有点忙,好久没更新。而写文章这事,一旦有一段时间不写就会越来越写不下去。很长一段时间我甚至不敢打开公众帐号后台,一怕被催稿,二怕看到惨烈的退订数字以至于更不敢写…非常感谢各位还没退订的读者,我未来一定争取保持一个合理的更新频率。

最近XcodeGhost导致的严重安全问题,相信大家已经从各个渠道知道了。简单概括一下,有人在中国网盘和论坛上传播了一个修改过的Xcode,这个版本的Xcode会在编译出来的App上面加一些可以被远程控制的代码,并且发送数据到某个服务器上。这是iOS出现以来,未越狱系统遭遇的最大安全威胁,在此之前苹果的Sandbox模式几乎没遇到过挑战,iPhone用户甚至大量iOS开发者都认为系统固若金汤,不可能遇到问题。

在XcodeGhost开始被媒体报道的时,很多人大大低估了它的风险。我在乌云报道这个问题的当天,在朋友圈上建议大家先把中招的app都删掉,并且立刻修改iCloud密码,开两步验证。甚至遭到了不少人反对,还有好几位iOS开发者告诉我这件事没什么大问题,因为iOS有Sandbox,不会造成什么伤害。当时网易也发了一个关于云音乐被感染的说明,也是类似不痛不痒的口气。这些说法当然都是大错特错的,会有这种想法,是因为只会站在程序员角度看问题,如果对安全问题稍微有一点敏感性,就会立刻意识到这是极严重的威胁,稍微发挥一些想象力就会被吓着。

所谓安全威胁,大部分都是在获取到非常有限资源的情况下,利用社会工程学(俗称:骗)来达到目的。比如,你觉得让别人看到你的通讯录有什么问题吗?很多人会认为虽然不舒服,但不会有什么威胁。实际上,骗子会从通讯录里面挑出来你父母的电话,打电话去骗他们。所以,这和iOS有没有sandbox,能不能保护系统安全没关系,只要我获得了一个机会,能控制你信任的app上弹出对话框,我就可以利用这个对话框来骗你输入系统的重要密码。程序员应该想象力再丰富一点,不要把目光局限于“系统给了我什么权限”,而是要扩展到“如果我被完全信任了,我能进行什么样的欺骗”。

我不打算在这里讲太多直接的安全问题,毕竟已经很多人分析过了,在好几篇非常不完善,极大低估这次事件威胁的分析文章之后,腾讯给出了一篇相当详细的分析,比较符合我的观点,也把问题的严重性说的非常清楚。在腾讯的分析里面,说可以利用OpenUrl来操作用户拨打电话,同样又有iOS开发者说“OpenUrl不能控制iPhone打电话”。事实上,OpenUrl可以弹出一个带有固定电话号码的弹窗,上面有“拨打”和“取消”两个按钮,这确实不算直接拨打了电话,但如果给一千万个用户在某个特定环境下弹出一个这样的窗口,其中有多大比例的人会去点“拨打”呢?如果程序员不去提高想象力,总把安全问题和功能局限在系统文档提供的“能做什么”这个范围内,软件的安全性实在让人难以信任。

具体的安全问题有更专业的人去普及,本文不多说,在这里我更想谈谈关于信任的问题。在这次事件中,也有一些人想起了Ken Thompson大神(Unix系统/C语言的前身B语言/Go语言的直接贡献者,称作Unix之父也不过分)在1984年的一次演讲,在那次演讲中中,Ken讲了他在70年代在贝尔实验室捉弄同事的一次恶作剧,在那段时间里面,实验室里面所有的Unix系统,Ken都可以随便以最高权限登录,而同事反复检查用户,权限,甚至是当时使用的Unix代码,都没查不到后门,百思不得其解。14年之后,Ken在这次演讲里面才公开,后门其实隐藏在他写的编译器中,当用编译器编译Unix系统的时候,后门就被放在了编译出来的系统里面,但Unix本身的代码是干净的,所以同事无论如何也查不到问题。Ken的演讲所提到的核心问题并不是如何入侵一个操作系统,而是信任。其标题“Reflections on Trusting Trust” (我翻译为"深入思考我们信任的可信",以下简称RoTT)开宗名义,明确强调这一点。

在80年代曾经有很多人用这样的办法给开发工具加各种外壳和后门,但当时联网条件并不好,很难产生大规模影响。很多案例是发生在相对封闭的企业内网和教育网中,Ken捉弄同事的原始案例也可以看作是企业内网上的传播。可以说,RoTT能产生的影响一直被人们低估,因为在现实世界想要具备适合它的条件,实在是太难了。历史上,虽然有很多底层代码Bug导致的安全事件(比如之前的OpenSSL心脏出血漏洞,可以参考我的另外一篇文章,点阅读原文可见),但直接通过这种在基础工具上制造的后门,从而衍生的大规模安全事件,从来没有真正发生过。这种手法一般是用在有限范围的网络上,比如在早年的教育网上或者企业网络里面,那时候在内网上传递一个被下了毒的软件,很容易传播开。

在互联网上,如果要重现Ken的案例,首先需要找到一个可信的源头感染,这本身就已经是极其困难的事了。用这次的事件做例子的话,在正常情况下,用户是通过Mac App Store来下载Xcode的,在下载安装的过程中,OS X本身会替用户进行加密签名校验,保证下载的东西确实是苹果原始分发的软件,这样才能被安装到用户的机器上。如果想把在Xcode中嵌入一个后门,你得先找到Apple服务器的漏洞,才能有机会把自己改过的包上传上去,而且还要弄到苹果的私钥去进行签名,才能装到用户计算机上。但如果同时具备了这两个条件,已经是荣华富贵唾手可得,有的是更可靠,获利更大的做法,谁又肯去舍近求远感染一个Xcode呢?

所以,只有在相对封闭的网络环境下,才有可能玩这个把戏。80年代,网络远远没有今天发达,人们更多的下载和网络活动是分布在各大机构自己的网络里面的,比如大型企业的内部网络,相对于互联网,这些内部网络网络速度会快的多,人们通常更倾向于从内部网络获得软件。这就给了入侵者(通常是商业间谍)通过替换内容软件来侵入公司内部的机会。但内网又造成了另外一个问题,在封闭网络下,入侵者获得的数据也没这么容易拿走,必须还要回到内网才有机会拿到之前的战果。这些特性造成了这种做法始终在小范围内有效,在公众网络上性价比不高。

这次XcodeGhost事件会给很多人启发,中国目前的网络环境类似于80年代的企业内网,但规模又比当年的内网大的多,而且不像那么难以进入。 于是,一些80年代流行但没造成大规模影响的办法,有机会可以在中国环境下重新应用了,并且造成巨大影响。以前的创业是Copy to China,现在同样可以复制30年前的安全问题。

Ken的演讲最后指出,你没办法信任那些不是自己写的代码。80年代达到这个目标尚且有可能,那时候的软件规模还很小。而今天,任何工作都需要建立在大量的现成软件基础之上,换句话说,你必须去信任其他人,才有可能制作出产品。如今的可信任环境就变得更加重要。

但在中国,因为GFW和相关政策的存在,要获得一个可信环境变得非常困难。在这个环境里面,大量国外网站不能访问或者难于访问,非常多怕麻烦的人会使用国内替代品,这次的事件之所以影响巨大,就是因为通过苹果官方渠道升级Xcode速度太慢,少则10多个小时,多则几十个小时,其间还有可能中断和重新下载。从国内随便下载一个Xcode用当然是错的,但在这样的环境下也不是完全不能理解,考虑一下互联网的下载速度只有50K,企业内网速度能高达10M的时候,谁会不从内网下载呢?

用一个现实世界的例子做个比喻吧,前面说了骗子拿到你父母的电话之后,会打电话去骗他们,比如跟你父母说你出了车祸,急需用钱。要让这个骗术成功,一个前提条件是要阻止你父母去找你验证真假,所以骗子同时会用各种办法来骚扰你的电话,迫使你不堪其扰关机或者始终占线。这样你父母和你的联系就断开了,他们没法找你验证了,此时骗子的话就更容易被相信。在这次事件里面,GFW让人们无法访问国外的可信网站,或者访问速度极慢,它起的作用就如同迫使你占线或者关机,从而让人们只能从不可信的地方获取软件。

GFW让中国本来开放的互联网环境,变成了一个巨大的企业内网,或者叫做中国局域网。除了速度和难以访问的影响,各种各样的DNS投毒,电信运营商干扰也是严重问题,你拿回来的DNS结果往往也未必是可信的,而运营商试图在HTTP请求中插入广告的行为,又经常会导致正常的应用表现不正常,而这些乱七八糟的毛病还经常变化,今天你可以这样对付,下周可能就需要换一个办法。要维持一个可信的软件环境,需要付出巨大的精力,能愿意付出这个代价的人越来越少。

在这个环境中,我们能信任的什么呢?网络链接不可信,运营商不可信,DNS不可信,大企业不可信。最后这一点更荒唐,如果是在正常的网络环境下,你很难相信苹果或者Google会坑害自己的用户,因为这和他们的利益直接相关,他们总是要尽量保护自己的用户。但在中国,如果你敢信任百度,基本意味着你生活各方面都会出问题,用百度查个搬家公司,骗死你没商量,用百度查个快递电话,骗死你也没商量,用百度查个医院,你猜会怎么样?那是真要骗死你没商量,这里的骗死都不再是比喻了。你要信任百度的软件,更好玩了,它莫名其妙就给你把百度出的所有软件都装在你机器上了,人们管这个不请自来的大礼叫做百度全家桶。如此致力于坑害自己用户的大公司,在中国之外还真是罕见。

在中国的网络环境下,这次事件产生的危害本身也更加危险。事件发生时,我告诉朋友们立刻删除所有被感染的软件,直至问题被修复。有人说,黑客自己的网站已经关闭了,没什么危险。这么说当然是错的,因为遍布中国各处的DNS投毒和劫持,创造一个一样域名的网站再简单不过了。比如到游客聚集的区域,带一个路由器,创建一个没有密码的WIFI热点,等着人们连上来,在这个热点上劫持XcodeGhost使用的域名,就可以利用已经中毒的app来骗iCloud密码了。这些都是非常容易实现的办法,千万不要低估安全问题能造成的后果,尤其是在中国特殊的网络环境下。

目前中国的网络环境和食品安全有诸多共同之处,你没法信任路边的小饭馆,但同时你也没法信任昂贵的大饭馆。你没法信任菜市场买的肉,但超市买的肉也并不那么可靠。在一切的背后是土壤和水的全面污染,可能一家好的饭馆未必打算毒害自己的顾客,但他们也很难保证自己原材料的供货商可靠,要保证使用的所有材料可靠,这是一家饭馆不可能具备的能力。比如,奶粉的三聚氰胺事件之前,一家有追求的饭馆大概会觉得,我不用来路不明的奶粉,我用大品牌的三鹿,伊利,这算是对顾客负责了吧?可惜,这些大品牌一样出问题。这绝非饭馆所希望的,他们也是受害者,就像是这次事件中的网易云音乐,他们确实没打算坑自己的用户,不过网易、腾讯这样的大公司一样中招了。

相对封闭的iOS尚且如此(单一开发工具,单一软件分发渠道,独家封闭系统iOS,独家硬件iPhone)尚且能出这么大问题,想想Android会怎么样?Android官方网站几年前就被封了无法访问,大部分开发者都是从国内渠道下载的开发工具。App的安全可靠吗?国内无数家忙着改Android皮肤就称自己是“操作系统”厂商,他们能保证自己的定制Android版本是安全吗?他们有真正的操作系统厂商级别的能力吗?进一步,他们能保证自己使用的开发工具安全吗?每家手机厂商都恨不得做自己的Android app下载渠道,他们能保证这些渠道上分发的app安全吗?甚至,他们能保证自己的下载市场安全吗?请大家继续联想吧。有朋友跟我说,你想多了,Android哪需要这么麻烦啊,本来国内环境就是木马遍地了。真实情况恐怕只能用惨烈来形容。顺便说一声,传说Google要把Play Store进入中国,提供一个受审查的版本,很多人说这是Google妥协了,我看这根本不是妥协了,是中国内部的Android环境太糟糕,已经威胁全球生态了,Google不得不自己出手解决这个问题。所以,一旦Google Play真的进了中国,请大家记得立刻把Play Store做为自己唯一的Android软件下载渠道,哪怕它不好用,不中国国情,甚至显得有点傻里傻气…千万记得,安全比方便更重要。

在这些前提下,重新认真考虑Ken的演讲提到的观点就显得更加重要,深入思考我们信任的可信。到底什么是可信的呢?开发工具可信吗?操作系统可信吗?你觉得下载来之后验证一下md5或者sha512总应该可信了,但你用来计算sha的工具是哪下载来的?你又如何知道这个工具本身是可信呢?在一个封闭的,难以和真正源头沟通的环境下,根本没办法谈所谓的信任。

在中国目前的环境下,难以直接套用成熟的软件开发和管理流程,除非保证团队所有人都必须翻墙,必须用Google查资料,必须不信任国内网站。你的团队中有一个习惯用百度查资料,顺着国内论坛的链接从百度网盘或者迅雷下载工具的人,就不知道会惹出来多大麻烦。这次事件充分证明了这一点,我起初认为腾讯应该不会有问题,因为我知道腾讯内部有极好的网络环境,但最终不幸的是微信也中招了。我们的恶劣环境已经改变了工程师的习惯,甚至改变了教育,就算是在腾讯内部这么好的网络环境下,仍然有人会去百度查资料,用百度网盘下载开发工具。就像很多留学生到了美国仍然用百度搜索一样,环境的改变并不能直接逆转已经完成的用户习惯。

比较讽刺的是,在中国特色的现实世界反而又制约了出现大规模安全灾难的可能性。比如,中国有相当严重的网络监控、审查和实名制、以及互联网公司必须保存(而且要向有关部门开放)的各种用户数据,并且互联网和世界半隔绝,在出现这种问题的时候,要抓到始作俑者又相对简单。现实世界中,只要在论坛发个贴,去你家查水表就是分分钟的事情。这大概算是“不幸+不幸“互相抵消之后产生了一点点微小的幸运吧。

很多年前,我说招聘工程师有几个原则,比如,必须使用Google而不是百度,必须翻墙而不是用国内替代品,必须优先使用国外的工具。经常有人认为这种要求过于苛刻,甚至认为是装逼。这次事件告诉了我们,这些良好的习惯确实是工程师的第一道防线,融入世界主流,可以让你少遭遇很多中国特色的麻烦。虽然保持这些良好的习惯需要付出不小的代价,但事实证明这些代价是值得的。

这样的网络环境,是我们这一代工程师的耻辱,但我们如此愤怒于此 ,又如此无能为力,这是这个时代最令人悲哀的事情。

我们对此有多么无能为力呢?我写这篇文章的时候就在想,大家应该赶快传播它,因为我觉得它很快会被删掉。这就是无能为力的具体表现。

顺便说一句,1996年,受Ken的案例启发,我写过一篇科幻小说,大意是一种病毒把编译器做为感染的源头,最终感染了操作系统。在这个操作系统上,它会判断用户指令对它是否会造成伤害,如果是有害的指令,就假装执行一下,实际并不真执行,从而可以躲过杀毒软件和人工清除。这同样是信任问题,在这个环境下,没有任何可信的东西,这种病毒将会在操作系统中永存,并且把自己附着于任何在这台计算机上制造的软件中。在一个计算机一开机就无线联网的时代,病毒可以借此高速传播,最后人类已经找不到一台干净的计算机可以去编写真正干净的操作系统了。(90年代还没有无线网络,那时候甚至连有线网络都没普及,Sun还在号称网络就是计算机,那时候一台随时联网的计算机简直太奢侈了,但如今看来…世界确实已经发展到了这样,想找一台不联网的计算机倒是不容易了)。

不知道这种幻想中的病毒什么时候会真正出现…其实,前几年工信部推行绿坝的时候,我当时就觉得那简直是创造这种病毒的一个非常好的机会,还好最终绿坝计划被放弃了。中国网络和政策环境的特殊性,将来真的有可能制造出适合这种病毒生存的环境,就像这次因为GFW的正面和潜在影响,让70年代Ken设想的RoTT在2015年大规模流行,40多年的时间跨度…著名科幻作家韩松说过:“中国的现实变得比科幻还要科幻”。深以为然。

树莓派开启root登录

想要通过ssh登录树莓派进行管理,使用默认的pi用户有时真的不便,对于linux老手来说,可以直接开启root用户ssh登录,这就方便多了,方法如下:

sudo passwd root
sudo passwd --unlock root

设置SSH

sudo vi /etc/ssh/sshd_config

将其中的PermitRootLogin without-password改为PermitRootLogin yes,然后重启ssh服务sudo service ssh restart

Over!

使用Photoshop压缩PNG图片

Ctrl+O 打开PNG文件

图像 -> 调整 -> 色调分离

调整色阶值,边调整边预览,找到图片质量变化最小时候的值

文件 -> 导出 -> 存储为Web所用格式

文件格式选择PNG-8,参考下图全选部分进行调整,完成后保存即可。

导出设置

使用ScrollUp添加返回顶部功能

下载ScrollUp https://github.com/markgoodyear/scrollup

在网页中引用jquery.scrollUp.jsjquery.easing.jsjquery.min.js三个JavaScript脚本,注意顺序

<script src="jquery.min.js"></script>
<script src="jquery.easing.js"></script>
<script src="jquery.scrollUp.js"></script>

然后加入控制代码

<script>
$(function () {
	$.scrollUp();
});
</script>

以上是最简单的使用方法,还有一种带参数的方法

$(function () {
	$.scrollUp({
		scrollName: 'scrollUp',      // Element ID
		scrollDistance: 300,         // Distance from top/bottom before showing element (px)
		scrollFrom: 'top',           // 'top' or 'bottom'
		scrollSpeed: 300,            // Speed back to top (ms)
		easingType: 'linear',        // Scroll to top easing (see http://easings.net/)
		animation: 'fade',           // Fade, slide, none
		animationSpeed: 200,         // Animation speed (ms)
		scrollTrigger: false,        // Set a custom triggering element. Can be an HTML string or jQuery object
		scrollTarget: false,         // Set a custom target element for scrolling to. Can be element or number
		scrollText: 'Scroll to top', // Text for element, can contain HTML
		scroll

title: false, // Set a custom title if required. scrollImg: false, // Set true to use image activeOverlay: false, // Set CSS color to display scrollUp active point, e.g ‘#00FFFF’ zIndex: 2147483647 // Z-Index for the overlay }); });

Linux下使用grive管理Google Drive

找到一个linux下可用的google drive客户端,纯cli操作,值得推荐

grive项目主页 https://github.com/Grive/grive

Ubuntu中下通过PPA安装grive

sudo add-apt-repository ppa:nilarimogard/webupd8 
sudo apt-get update
sudo apt-get install grive

使用grive同步Google Drive

mkdir googledrive
cd googledrive
grive -a

第一次运行,会有验证提示,将提示的url代码粘贴到浏览器中验证帐户,完了后将生成的验证代码粘贴到grive进行验证。

无法使用add-apt-repository命令

在Ubuntu中使用PPA安装软件时,需要用到add-apt-repository命令,但有的VPS系统因为体量原因,可能没有该命令,因此需要通过以下方法来安装:

apt-get install python-software-properties 
apt-get install software-properties-common

树莓派安装miniDlna配置多媒体共享服务

树莓派挂载移动存储

可以挂载移动硬盘或者大容量的U盘,参考以下文章:

安装配置minidlna

sudo apt-get install -y minidlna

编辑minidlna配置文件/etc/minidlna.conf,内容如下:

	media_dir=/home/pi/dlnadoc  #媒体文件目录
	db_dir=/var/lib/minidlna    #minidlna通过SQLite来建立媒体库索引,因此需要定义数据库目录
	listening_ip=192.168.1.111  #树莓派IP
	port=8200					#web端口,可以通过ip:port查看索引状态
	friendly_name=Raspi_DLNA    #服务器命名

重启minidlna服务

sudo service minidlna restart

强制刷新

sudo service minidlna force-reload

查看索引状态,浏览http://192.168.1.111:8200

	MiniDLNA status
	Audio files: 0
	Video files: 2
	Image files: 0

DLNA客户端

PC

Windows7下将网络设置为家庭网络,完成后刷新,在网络媒体设备下就可以自动发现Rasp_DLNA

点击进去就可以使用MediaPlayer来浏览。

Android

VPlayer+ VPlayer uPnP DLNA Plugin

IOS

RushPlayer

树莓派使用DietPi

下载安装DietPi

DietPi项目主页 http://dietpi.com/

DietPi镜像下载地址 https://dietpi.com/#downloadinfo

然后将镜像写入到SD卡中,linux下使用dd

	dd if=DietPi_v74.img of=/dev/sdc bs=2M

Windows下使用balenaEtcher写入镜像。

写入完成后将SD卡插入树莓派,加电启动。

预设置Wifi链接

首次使用时,可以通过编辑dietpi.txt来进行wifi预设置。

将TF卡插入电脑读卡器,打开对应的磁盘,找到dietpi.txt文件,打开。

找到Wifi_Enabled=0,将其设置为1

然后找到Wifi_SSIDWifi_KEY分别设置wifi节点名和密码,保存即可。

配置DietPi

DietPi默认用户名密码为root dietpi,第一次启动DietPi提示检测升级,按提示操作。

不过由于天朝网路问题,可能升级比较缓慢,建议Ctrl+c终止升级,修改sources.list为朝内镜像。

DietPi默认没有vi,使用nano进行编辑,添加Aliyun源。

	deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
	deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib

更新软件

	apt-get update&&apt-get upgrade -y

然后运行dietpi-config进行配置。

DietPi - Config


               ┌────┤ ---------- DietPi-Config ---------- ├─────┐
               │  Hardware : Raspberry Pi 1 (512MB)               │                                                │
1 Display Options                    │
2 Audio Options                      │
3 Performance Options                │
4 Advanced Options                   │
5 Language/Regional Options          │
6 Security Options                   │
7 Networking Options                 │
8 AutoBoot Options                   │
9 Tools                              │
               │                                                │
               │                                                │
               │           <Ok>               <Exit>            │
               │                                                │
               └────────────────────────────────────────────────┘

推荐配置:

将树莓派数据上传至乐为物联

进入http://www.lewei50.com/注册登录

添加设备(Add Device)

我的物联 -> 我的设备,添加新设备,类型选择其他,不使用模板。

请自定义设备标识,后面要用到。

添加传感器

我的物联 -> 感器与控制器,新建传感器。

其中标识为提交数据依据,建议英文。

向乐为物联提交数据

lewei.sh代码如下 </res/lewei.sh>

#!/bin/bash
LURL=http://www.lewei50.com/api/V1/Gateway/UpdateSensors/01
KEY="2fasdfsdfsdf9ffadsf62dfbfsdfa1"
sys_load=`cat /proc/loadavg | awk '{print $2}'`
st=`/usr/bin/sen_t`
sh=`/usr/bin/sen_h`

for i in 1 2 3 4 5; do
		sys_temp=`cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'`
		if [[ "${sys_temp}" =~ ^- ]]
		then
				sys_temp='0.0'
		else
				echo ${sys_temp}
				break
		fi
done

echo "Printf Values"
echo "sys_temp:"${sys_temp}
echo "sys_load:"${sys_load}
echo "sensor_t:"${st}
echo "sensor_h:"${sh}
echo "Done!"

echo "Sumbit Data to Lewei"

curl --request POST ${LURL} --header "userkey:${KEY}" --data "[{'Name':'load','Value':'${sys_load}'},{'Name':'temp','Value':'${sys_temp}'},{'Name':'sd','Value':'${sh}'},{'Name':'wd','Value':'${st}'}]" 

其中LURL后面的01为设备标识,KEY为用户Userkey,JSON数据中的Name对应相应的传感器标识

安装Nginx和ngx_pagespeed

VPS配置:

Ubuntu 14.04 x86
RAM 512M
SWAP 64M
DISK 5G

准备工作

sudo apt-get update&&apt-get upgrade -y
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip libssl-dev -y

下载ngx_pagespeed

cd
NPS_VERSION=1.9.32.4
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz 

安装Nginx

cd
groupadd www
useradd -s /sbin/nologin -g www www
NGINX_VERSION=1.8.0
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure \
--user=www \
--group=www  \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_spdy_module \
--with-http_gzip_static_module \
--with-http_sub_module \
--add-module=$HOME/ngx_pagespeed-release-${NPS_VERSION}-beta \

sudo make
sudo make install
sudo ln -sf /usr/local/nginx/sbin/nginx /usr/bin/nginx

配置/etc/init.d/nginx

将百度输入法词库导入倒小狼毫词典

首先,在百度输入法设置中,将词库导出,选择txt格式

然后下载深蓝词库转换

打开深蓝词库转换,选择百度词库,在转换为类型中选择中州韵,转换文成后保存为另外一个txt文件

然后打开**【小狼毫】用户词典管理**,选择已存在的词典,点击右侧的导入文本码表

将Nginx更换为H2O

安装必须的软件

预备工具软件

#apt-get install autoconf automake m4 build-essential

libssl-dev 必选

#apt-get install openssl libssl-dev

以下为可选包,可自行搜索安装

  • libuv
  • libyaml
  • wslay

安装H2O

下载安装最新版h2o https://github.com/h2o/h2o/releases

#wget https://github.com/h2o/h2o/archive/v1.4.1.tar.gz
#tar zxf v1.4.1.tar.gz
#cd h2o-1.4.1
#cmake -DWITH_BUNDLED_SSL=on .
#make
#sudo make install

编辑H2O站点配置文件

以下是一个简单的http与https配置文件,可自行参考修改

hosts:
"www.example.com":
	listen:
	port: 80
	listen:
	port: 443
	ssl:
		certificate-file: /path/to/server-certificate.crt
		key-file:         /path/to/private-key.crt
	paths:
	"/":
		file.dir: /path/to/doc-root

access-log: /path/to/the/access-log
error-log: /path/to/the/error-log
pid-file: /path/to/the/pid-file
http2-reprioritize-blocking-assets: ON   # performance tuning option

启动H2O

将博客从Typecho转移至Gor

缘由

VPS快到期了,不想继续维护,太累,并且香港VPS价格也不菲。

于是打算选择一个静态博客平台,原来用过的不少:jekyll,hexo,gor,pelican,最后决定Gor

选择Gor的理由有两点

  • 安装方便
  • 执行效率高

安装Gor

参考https://github.com/xtod/gor安装Gor

将Typecho文章导出为Markdown文件

Github上有现成的工具typecho-exporter,主页为https://github.com/xtod/typecho-exporter

这个工具可以将所有的文章导出为Markdown文件,但是以文章标题为文件名,不利于后期处理,建议使用slug为文件名。

编辑下载的main.py,将75行的p.title = r[1]替换为`p.title = r[2]’,如下:

	results = cur.fetchall()
	for r in results:
		p = Post()
		p.id = r[0]
		p.title = r[2]
		p.content = r[5]
		posts.append(p)

原来的r[1]对应typecho_contentsSQL表中的title列,我的r[2]对应slug列,可以根据实际情况更改。

编辑typecho-exporterconfig.ini文件,设置数据库访问方式。

运行main.py,完成后会在typecho-exporter目录下生成files文件夹,里面就是导出的Markdown文件。

整理markdown文件头

导出后的Markdown没有Gor需要的文件头格式,需要手动整理

这里推荐使用Notepad++批量替换,查找设置中,将查找模式下的扩展勾选。

插入Hexo的Markdown头格式

  • 查找目标: <!-- markdown -->

  • 替换为---\n title: title \n date: 2015-07-20 \n description: \n permalink: \n categories: \n Keywords: \n --- \n

经过以上替换,就大概有了个Gor的Markdown头格式,后面的手动工作就少了多了。

typecho主题Amaze

typecho主题一枚Amaze,采用Amaze UI框架

注意:

  • 评论采用多说,直接替换comment.php内容
  • 无页面导航,请将文章数设为999

预览图:

Typecho主题Amaze预览图

点击下载

Xively与树莓派监控温度与湿度

进入https://www.xively.com/注册登录

添加设备(Add Device)

Development Devices页面点击Add Device添加设备

填写Device NameDevice Description,将Privacy设定为Public Device

设置API Key

进入Device详情页,在API Keys中点击Add Key添加一个Key,将Permissions中的Read,Create,Update,Delete全部勾选,Label随便填。

向Xively提交数据

在这里通过CURL向xively提交JSON格式的数据

JSON数据格式

    {
      "datastreams": [
        {
           "id": "load",
           "current_value": "9.00"
        },
        {
          "id": "temp",
    	  "current_value": "89.15"
    	}
      ]
    }

其中每个id为数据定义的idcurrent_value为提交的值

脚本文件send_xively.sh

	#!/bin/bash
	LOCATION='/home/pi/xively_data'   #Path of Xively JSON DATA file
	API_KEY='orxUhgjqSYPDbv5243534tG65464345eArxSVY9pE8ITnE' #API Key
	FEED_ID='1354438558' #FEED_ID
	####################################################
	
	COSM_URL=https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8
	cpu_load=`cat /proc/loadavg | awk '{print $2}'`
	sen_t=`sudo /home/pi/st`
	sen_h=`sudo /home/pi/sh`
	
	for i in 1 2 3 4 5; do
			cpu_t=`cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'`
			if [[ "${cpu_t}" =~ ^- ]]
			then
					cpu_t='0.0'
			else
					echo ${cpu_t}
					break
			fi
	done
	
	STR=`awk 'BEGIN{printf "{\"datastreams\":[ {\"id\":\"cpu_load\",\"current_value\":\"%.2f\"}, {\"id\":\"cpu_temp\",\"current_value\":\"%.2f\"},{\"id\":\"sensor_t\",\"current_value\":\"%.2f\"}, {\"id\":\"sensor_h\",\"current_value\":\"%.2f\"}] } ",'$cpu_load','$cpu_t','$sen_t','$sen_h'}'`
	
	echo ${cpu_t}
	echo ${cpu_load}
	echo ${sen_t}
	echo ${sen_h}
	echo ${STR}
	echo ${STR} > ${LOCATION}/cosm.json
	curl -s -v --request PUT --header "X-ApiKey: ${API_KEY}" --data-binary @${LOCATION}/cosm.json ${COSM_URL}

其中LOCATION为JSON文件存放目录,没有的话请新建。API_KEY和FEED_ID按照自己的配置填写。

V版本iPhone5C开启中国电信4G

首先,使用太极越狱将手机越狱 http://www.taig.com/

在Cydia中添加http://apt.chinasnow.net源,搜索安装CommCenter patch for ios8

设置iTunes可以刷入运营商文件(.ipcc)

Win+R打开运行窗口,输入"%ProgramFiles%\iTunes\iTunes.exe" /setPrefInt carrier-testing 1

下载运营商文件</res/ipccs.zip>

打开iTunes,链接手机到电脑,Shift+更新,选择相对应系统版本的运营商文件

完成后重启手机OK!

将域名从Godaddy转移到万网

准备将ltecn.com从Godaddy转到万网

首先在Godaddy的域名管理中,将域名解锁,将Lock状态设置为Off

然后你会收到一封标题为Domain Status Notification的邮件,提醒你域名状态已经修改为Unlocked

然后将authorization code发送到你的邮箱

Godaddy会发送一封标题为LTECN.COM - Information You Requested的邮件,里面有你的验证码,邮件内容如下:

    Customer Account: 888888884 
    Domain Name: LTECN.COM 
    Authorization Code: f@jje0932!E 

接下来在万网中使用以上验证码进行转入操作,订单支付后万网会发送一封标题为万网域名转入确认通知的邮件,点击其中的链接确认转入

下来进入到Godaddy,DOMAINS->TRANSFERS,在PENDING TRANSFERS OUT会显示正在转出的域名,域名状态列显示Transfer not started. Accept or decline,点击Accept or decline在接下来的提示中选择Accept接受转出。

Godaddy会发送一封标题为Transfer of LTECN.COM的邮件,提醒你转出操作。

稍等片刻Godaddy会发送一封标题为An important notice regarding your transfer of LTECN.COM的邮件,提醒转出成功,并且告知转出的ISP服务商,如下:

    Dear Jkrjj csao, 

    This is to confirm that the following domain names have been successfully transferred away from GoDaddy to HICHINA WEB SOLUTIONS LIMITED: 

    LTECN.COM 

    If you have any questions, visit Online Support or call us at (480) 505-8877. 
```
剩下的就是等待万网通知转移成功。

以下是本次的转移邮件记录,时间还是蛮快的,不到30分钟

![emaillist](/imgs/emaillist.webp)

Typecho主题Limits

又造了个简单成马咧的主题,分享给大家!

说明

  • 评论采用多说,请自行替换comments.php内容
  • 没有页面导航,因此请在设置-阅读中,将每页文章数目设大一些(例如:999)

预览图:

Limits typecho主题

下载: Limits.7z

树莓派连接DHT11采集温度与湿度

20250125更新:

Release 3.12已发布https://github.com/WiringPi/WiringPi/releases

国内下载地址

DHT11介绍

DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。

DHT11针脚说明

DHT11针脚说明

  • VCC 供电 3-5.5VDC
  • DATA 串行数据,单总线
  • N/A 空脚,请悬空
  • GND 接地,电源负极

硬件连接

树莓派GPIO针脚说明

树莓派GPIO针脚说明

DHT11与树莓派链接

  • VCC连接+3V3
  • DATA连接GPIO4
  • GND链接GND

软件设置

安装wiringPi

    sudo apt-get install git-core
    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    ./build

如果由于网络原因无法git clone成功,可以从此下载wiringPi http://qn.optipng.cn/res/wiringPi_v2.3.1.zip

验证是否安装成功

    gpio -v
    gpio readall

下载编译C语言程序代码

    wget /res/sensor.c
    gcc -o sensor sensor.c -lwiringPi

运行程序

Ubuntu下安装Ghost博客系统

安装Nodejs

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

检查是否安装成功

root@hkvps:~# node -v
v0.10.37
root@hkvps:~# npm -v
1.4.28

安装Ghost

Ghost下载地址https://ghost.org/download/

wget https://ghost.org/zip/ghost-0.6.4.zip
unzip ghost-0.6.4.zip -d ghost
cd ghost
npm install --production

运行Ghost

npm start

可以通过127.0.0.1:2368来访问

通过nmp start来运行Ghost,退出后就会停止,因此需要一个方法让Ghost一直运行

让Ghost一直运行

安装forever

npm install forever -g

进入ghost目录,执行以下命令,让Ghost一直运行

NODE_ENV=production forever start index.js

停止ghost

forever stop index.js

查看forever运行列表

forever list

结合Nginx配置域名

安装Nginx

sudo apt-get install nginx

编辑配置文件

Nginx配置SSL证书

申请Wosign免费SSL证书

申请地址: https://www.wosign.com/products/free_ssl.htm

申请成功后,收到类似于aquan.me_sha256_cn.zip的文件,解压后包含如下文件

	for Apache.zip
	for IIS.zip
	for Nginx.zip
	for Other Server.zip
	for Tomcat.zip

其中for Nginx.zip中包含如下两个文件,将其上传到VPS自定义位置。

  • 1_aquan.me_bundle.crt
  • 2_aquan.me.key

配置Nginx

不多说了,直接贴代码:

    #### Add Wosign SSL Start ####
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/ssl/ssl.crt;
    ssl_certificate_key /usr/local/nginx/ssl/ssl.key;
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    #### Add Wosign SSL End ####

将以上代码插入listen 80;之后。

重启Nginx生效

    /etc/init.d/nginx restart

以上设置完成,就可以通过https来浏览网站,同时http也可以浏览。

Linux下安装最新版golang

ubuntu中可以使用apt-get install golang来安装go,但是版本稍旧

如果需要安装最新版的golang,那就得自己动手咧

安装golang

从官网下载最新版,手动安装

apt-get install build-essential
wget https://storage.googleapis.com/golang/go1.4.2.linux-386.tar.gz
tar zxf go1.4.2.linux-386.tar.gz
cd go/src
./all.bash

设置PATH

安装完成后需要设置PATH才能随地使用go

export PATH="/root/go/bin:$PATH"

检查版本

go version
go version go1.4.2 linux/386

赵雨煖

姓名:赵雨煖

性别:女

生日:2015-04-06 17:45

初重:3285g

赵雨煖

使用speedtest-cli测试带宽

安装speedtest-cli

安装speedtest-cli方法如下:

    sudo apt-get install python-pip
    sudo pip install speedtest-cli

    pip install git+https://github.com/sivel/speedtest-cli.git

    git clone https://github.com/sivel/speedtest-cli.git
    python speedtest-cli/setup.py install

    wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
    chmod +x speedtest-cli

    curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
    chmod +x speedtest-cli

使用speedtest-cli

    root@MyUbuntuCloud:~# speedtest-cli -h
    usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list]
                     [--server SERVER] [--mini MINI] [--source SOURCE]
                     [--timeout TIMEOUT] [--version]

    Command line interface for testing internet bandwidth using speedtest.net.
    --------------------------------------------------------------------------
    https://github.com/sivel/speedtest-cli

    optional arguments:
      -h, --help         show this help message and exit
      --bytes            Display values in bytes instead of bits. Does not affect
                         the image generated by --share
      --share            Generate and provide a URL to the speedtest.net share
                         results image
      --simple           Suppress verbose output, only show basic information
      --list             Display a list of speedtest.net servers sorted by
                         distance
      --server SERVER    Specify a server ID to test against
      --mini MINI        URL of the Speedtest Mini server
      --source SOURCE    Source IP address to bind to
      --timeout TIMEOUT  HTTP timeout in seconds. Default 10
      --version          Show the version number and exit

以下为两则实例:

fdisk分区实例

查看磁盘分区详情

直接使用fdisk -l 或者使用fdisk /dev/sda,再使用p命令来查看

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000657c3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    61868031    30932992   83  Linux
/dev/sda2        61870078    62912511      521217    5  Extended
/dev/sda5        61870080    62912511      521216   82  Linux swap / Solaris

fdisk命令

fdisk有以下命令可用,其中常用的已简单说明

入手树莓派2 Model B

Raspberry Pi 2 Model B正面

Raspberry Pi 2 Model B背面

树莓派 2 Mode B 配置详情

  • A 900MHz quad-core ARM Cortex-A7 CPU

  • 1GB RAM

  • 4 USB ports

  • 40 GPIO pins

  • Full HDMI port

  • Ethernet port

  • Combined 3.5mm audio jack and composite video

  • Camera interface (CSI)

  • Display interface (DSI)

  • Micro SD card slot

  • VideoCore IV 3D graphics core

pi@raspi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye
pi@raspi:~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 2
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 3
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : BCM2835
Revision        : a21041
Serial          : 00000000d81b63a8
Model           : Raspberry Pi 2 Model B Rev 1.1
pi@raspi:~ $ free -h
               total        used        free      shared  buff/cache   available
Mem:           921Mi        53Mi       784Mi       0.0Ki        84Mi       818Mi
Swap:           99Mi          0B        99Mi
pi@raspi:~ $ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 29.3G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0   29G  0 part /
pi@raspi:~ $
➜  ~ neofetch
  `.::///+:/-.        --///+//-:``    pi@raspi2b
 `+oooooooooooo:   `+oooooooooooo:    ----------
  /oooo++//ooooo:  ooooo+//+ooooo.    OS: Raspbian GNU/Linux 11 (bullseye) armv7l
  `+ooooooo:-:oo-  +o+::/ooooooo:     Host: Raspberry Pi 2 Model B Rev 1.1
   `:oooooooo+``    `.oooooooo+-      Kernel: 6.1.21-v7+
     `:++ooo/.        :+ooo+/.`       Uptime: 18 mins
        ...`  `.----.` ``..           Packages: 624 (dpkg)
     .::::-``:::::::::.`-:::-`        Shell: zsh 5.8
    -:::-`   .:::::::-`  `-:::-       Terminal: /dev/pts/1
   `::.  `.--.`  `` `.---.``.::`      CPU: BCM2835 (4) @ 1.000GHz
       .::::::::`  -::::::::` `       Memory: 70MiB / 921MiB
 .::` .:::::::::- `::::::::::``::.
-:::` ::::::::::.  ::::::::::.`:::-
::::  -::::::::.   `-::::::::  ::::
-::-   .-:::-.``....``.-::-.   -::-
 .. ``       .::::::::.     `..`..
   -:::-`   -::::::::::`  .:::::`
   :::::::` -::::::::::` :::::::.
   .:::::::  -::::::::. ::::::::
    `-:::::`   ..--.`   ::::::.
      `...`  `...--..`  `...`
            .::::::::::
             `.-::::-`
pi@raspi:~ $ screenfetch
    .',;:cc;,'.    .,;::c:,,.    pi@raspi
   ,ooolcloooo:  'oooooccloo:    OS: Raspbian 11 bullseye
   .looooc;;:ol  :oc;;:ooooo'    Kernel: armv7l Linux 6.1.21-v7+
     ;oooooo:      ,ooooooc.     Uptime: 3m
       .,:;'.       .;:;'.       Packages: 592
       .dQ. .d0Q0Q0. '0Q.        Shell: bash 5.1.4
     .0Q0'   'Q0Q0Q'  'Q0Q.      Disk: 1.5G / 30G (6%)
     ''  .odo.    .odo.  ''      CPU: ARMv7 rev 5 (v7l) @ 4x 1GHz
    .  .0Q0Q0Q'  .0Q0Q0Q.  .     RAM: 104MiB / 921MiB
  ,0Q .0Q0Q0Q0Q  'Q0Q0Q0b. 0Q.
  :Q0  Q0Q0Q0Q    'Q0Q0Q0  Q0'
  '0    '0Q0' .0Q0. '0'    'Q'
    .oo.     .0Q0Q0.    .oo.
    'Q0Q0.  '0Q0Q0Q0. .Q0Q0b
     'Q0Q0.  '0Q0Q0' .d0Q0Q'
      'Q0Q'    ..    '0Q.'
            .0Q0Q0Q.
             '0Q0Q'

组装ATRIX 4G Laptop Dock和树莓派

清单如下:

  • Raspberry Pi B+
  • Laptop Dock for Motorola ATRIX 4G
  • Micro-HDMI 母对母转接头
  • HDMI-Micro HDMI 公对公连接线
  • Micro USB 母对母延长线
  • USB-Micro USB充电线一根

以下为实物图:

Laptop Dock for Motorola ATRIX 4G

Micro HDMI 母对母转接头

HDMI Micro HDMI 公对公连接线

Micro USB 母对母延长线

USB-Micro USB充电线一根

操作:

主要是将一个Micro USB母口和一对USB/Micro USb公口相连,然后就可以通过Laptop Dock进行供电,并且链接Laptop Dock键盘。

下图是一张Laptop Dock接口的照片:

Laptop Dock接口

以下为USB引脚定义:

  • 红 电源+
  • 白 数据-
  • 绿 数据+
  • 黑 接地

因此需要将Laptop上的Micro USB引出的电路进行改造,将其中的电源接到Micro USB公口上给树莓派供电,将数据接到USB公口上链接键盘,线路改造图示如下:

线路改造图示

接下来就是考验动手能力了,完成后的实物图如下:

Atrix Raspberry Pi

Atrix Raspberry Pi

树莓派安装TP WN322G+驱动

首先查看usb设备

    pi@raspi ~ $ lsusb
    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
    Bus 001 Device 004: ID 0ace:1215 ZyDAS ZD1211B 802.11g

注意,最后一行为无线网卡信息

打开https://wiki.debian.org/WiFi,查看是否有对照型号的固件

安装对应的固件

    pi@raspi ~ $ sudo apt-get install zd1211-firmware

完成后使用iwconfig检查是否已经安装成功

    pi@raspi ~ $ iwconfig
    wlan0     IEEE 802.11bg  ESSID:off/any
              Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
              Retry  long limit:7   RTS thr:off   Fragment thr:off
              Power Management:off

    lo        no wireless extensions.
    
    eth0      no wireless extensions.

使用youtube-dl下载YouTube视频

什么是youtube-dl

youtube-dl是一个简单的下载youtube视频脚本工具,基于Python。

安装youtube-dl

官方安装方法

sudo curl https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl

或者

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl

还有两种方法:

sudo pip install youtube-dl
brew install youtube-dl

使用youtube-dl

youtube-dl [OPTIONS] URL [URL...]

youtube-dl官网 https://github.com/rg3/youtube-dl/

树莓派设置时区和ntp时间同步

设置时区

  1. 使用raspi-config设置

    raspi-config

Internationalisation Options -> Change Timezone

  1. 使用tzselect设置

    tzselect

然后根据提示,选择时区

  1. 手动设置**/etc/localtime**

    rm /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

安装配置NTP

sudo apt-get install ntp ntpdate

编辑ntp配置文件**/etc/ntp.conf**,添加以下内容

server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

重启ntp服务

service ntp restart

Mapinfo中通过SQL查询筛选区域点

Mapinfo中有一批离散点,现在需要把一部分点筛选出来,可以使用SQL查询功能导出。

首先,打开需要筛选的图层:

打开图层

然后打开装饰层可编辑:

打开装饰层可编辑

设置不规则图形样式,建议将填充去掉只留下边框:

设置不规则图形样式

使用不规则图形圈出所需要的采样点

注意:边线不要压着采样点,被压线的采样点不算做圈选有效。 圈出所需要的采样点

Map->Save Cosmetic Objects 保存装饰图层,这里取名123 保存装饰图层

然后使用SQL查询功能进行查询

SQL查询功能

SQL查询时,选择需要交叉的两个图层

选择需要交叉的两个图层

查询完成后,Table->Export 导出查询结果 导出查询结果

导出时设置参考下图,可选择**.mif**、.txt.csv格式 导出设置

梦 20141216

托姐姐的关系,可以回到初中复读了,心情很激动。

有一次体验了中学食堂的大锅饭,吃饭时人山人海,貌似身上钱不够,就买了份麻辣豆腐,做成麻辣豆腐渣了,应该盛了一碗,一大口喝完了! 对,确实是喝完了。

该到上课了,第一次上课去找分班表。

四层的教学楼,每隔班级外面都贴的大字报,红纸黑字,上面写着分班名单。

从上到下找了半天都没找到我的名字,最后一晃眼发现最底下有个大字报就我一个人的名字,一看班级,:-O 初三1班 ,哈哈哈

看来有熟人就是不错,补习生大部分都分到后面的几个班级了,就我一人分到了1班,窃喜中……

被旁边的刘凯鄙视了一把,开始上课了 梦醒!

刘凯:现在的同事。

Linux VPS中安装Shadowsocks

VPS系统版本: Ubuntu 12.04 32bit

最简单的办法

#apt-get install python-pip
#pip install shadowsocks

启动Shadowsock

#ssserver -p 4000 -k sss4k -d start

-p后定义端口号,-k后面设定密码,-d start代表以daemon方式启动


下面是另外一种方法:

安装shadowsocks-libev

先用aptitude show查看libssl-dev版本

aptitude show libssl-dev

然后根据版本执行以下修改:

libssl > 1.0.1

/etc/apt/sources.list添加下行:

deb http://shadowsocks.org/debian wheezy main

libssl > 0.9.8 但 < 1.0.0

/etc/apt/sources.list添加下行:

deb http://shadowsocks.org/debian squeeze main

添加GPG

wget http://shadowsocks.org/debian/1D27208A.gpg
sudo apt-key add 1D27208A.gpg

添加完成后更新软件源,然后安装shadowsocks

sudo apt-get update
sudo apt-get install python-m2crypto
sudo apt-get install shadowsocks-libev

配置/管理shadowsocks服务

配置

树莓派挂载U盘

树莓派用的是8g的TF卡,想作为小型NAS有点小,存不了多少东西,于是将一个闲置的32G U盘挂载上,当作存储分区

以下为操作过程:

查看磁盘信息

pi@raspberrypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 7990 MB, 7990149120 bytes
4 heads, 16 sectors/track, 243840 cylinders, total 15605760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15605759     7741440   83  Linux

Disk /dev/sda: 32.2 GB, 32229031936 bytes
255 heads, 63 sectors/track, 3918 cylinders, total 62947328 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x15a8a090

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    62947327    31472640    f  W95 Ext'd (LBA)
/dev/sda5            4096    62947327    31471616    7  HPFS/NTFS/exFAT

这里看到,/dev/sda为32G的磁盘,分区格式为NTFS,现在就是要将改磁盘挂载为linux分区。

感冒灵颗粒和穿心莲内酯滴丸

貌似五六年了吧,大病没患过,就只有发烧和感冒,更因为从小鼻炎,感冒尤为难受!

五六年没打过针,只是自己吃药,偶尔发热高了就加上物理降温法。

分享一下自己的经验,一般有两类。

  1. 感冒
  2. 感冒加发热

对于第一种情况,在轻微吸鼻子,并且有鼻涕的情况下,马上开始喝999感冒灵颗粒,并且注意保暖防风,并且多运动多喝水,别在阴冷的地方常待,多见太阳,一般情况下一盒没喝完就可以转好,要是不幸严重的话,请看第二种情况。

第二种情况病症较多,鼻涕,喷嚏,发热(注意还是发热,不是发烧),嗓子疼痛。

一般情况下,要是突然间嗓子开始疼痛,并且口内干渴,那么就注意了,马上吃穿心莲内酯滴丸加999感冒颗粒,一般情况下得有个一天两天的过程,不能间断。生活中就得注意防风、保暖、多喝水、多运动。感冒症状一般恢复的慢,如果在这一两天过程中发热一直不能止住,还有严重的倾向,建议加上物理降温法,如下:

开上电热毯被窝里捂出一身汗,马上冲热水澡降温,如此三遍,体温一定有大幅度降低,但是要注意保持,接下来就是卧床好好休息。

下列出两种药的说明:

  • 感冒灵颗粒

    【药品名称】 通用名称:感冒灵颗粒 汉语拼音:Ganmaoling Keli 【成 份】三叉苦、金盏银盘、野菊花、岗梅、咖啡因、对乙酰氨基酚、马来酸氯苯那敏、薄荷油。辅料为蔗糖粉。 【性 状】本品为浅棕色至深棕色颗粒;味甜、微苦。 【功能主治】解热镇痛。用于感冒引起的头痛,发热,鼻塞,流涕,咽痛。
    【规 格】每袋重10克(含对乙酰氨基酚0.2克) 【用法用量】开水冲服,一次10克(1袋),一日3次。 【不良反应】偶见皮疹、荨麻疹、药热及粒细胞减少;可见困倦、嗜睡、口渴、虚弱感;长期大量用药会 导致肝肾功能异常。 【禁 忌】严重肝肾功能不全者禁用。 【注意事项】 1、忌烟、酒及辛辣、生冷、油腻食物。 2、不宜在服药期间同时服用滋补性中成药。 3、本品含对乙酰氨基酚、马来酸氯苯那敏、咖啡因。服用本品期间不得饮酒或含有酒精的饮料;不能同时服用与本品成份相似的其他抗感冒药;肝、肾功能不全者慎用;膀胱颈梗阻、甲状腺功能亢进、青光眼、高血压和前列腺肥大者慎用;孕妇及哺乳期妇女慎用;服药期间不得驾驶机、车、船、从事高空作业、机械作业及操作精密仪器。 4、脾胃虚寒,症见腹痛、喜暖、泄泻者慎用。 5、糖尿病患者及有心脏病等慢性病严重者应在医师指导下服用。 6、儿童、年老体弱者应在医师指导下服用。 7、服药3天后症状无改善,或症状加重,或出现新的严重症状如胸闷、心悸等应立即停药,并去医院就诊。 8、对本品过敏者禁用,过敏体质者慎用。 9、本品性状发生改变时禁止使用。 10、 儿童必须在成人监护下使用。 11、请将本品放在儿童不能接触的地方。 12、如正在服用其他药品,使用本品前请咨询医师或药师。 【药物相互作用】 1、与其他解热镇痛药并用,有增加肾毒性的危险。 2、与其他药物同时使用可能会发生药物相互作用,详情请咨询医师或药师。 【贮 藏】密封。 【包 装】复合膜;每盒装9袋。 【有 效 期】24个月。 【执行标准】国家药典委员会药典业发(1998)第115号文件所附质量标准。 【批准文号】国药准字Z44021940 【说明书修订日期】2007年05月15日

  • 穿心莲内酯滴丸

    【功能主治】清热解毒,抗菌消炎。用于呼吸道感染风热证所致的咽痛。 【用法用量】口服,一次1袋,一日三次。 【规 格】每袋含穿心莲内酯0.15克 【贮 藏】 遮光 【有 效 期】 24个月 【国药批准文号】 国药准字Z20040078

最终提醒

树莓派使用Ngrok实例

首先在ngrok https://ngrok.com/注册登录

架设已经在树莓派上安装了Nginx,端口为80

那么下载Linux/ARM版ngrok到树莓派,执行如下命令:

ngrok -authtoken UfATi0wi98gGMqQ+/GsP 80

其中UfATi0wi98gGMqQ+/GsP为你的auth token

然后就会出现如下提示:

Forwarding    http://36772918.ngrok.com -> 127.0.0.1:80           
Forwarding    https://36772918.ngrok.com -> 127.0.0.1:80          

按照提示,可以通过那两个二级域名来浏览web服务。

以上验证只需要输入一次,下次可以直接使用如下命令来运行

ngrok 80

ngrok其他用法

  • 自定义二级域名

使用自定义的字符串代替系统分配的数字

ngrok -subdomain mysubd 80
  • 开启密码保护

    ngrok -httpauth “user:password” 80

  • TCP隧道

    ngrok tcp 22

梦 20141118

最近在玩《天龙八部3D》手游,做梦就和这个有关。

PC与手游的天龙我一直都是玩的少林,不知道为什么,阿弥陀佛!

梦境中和几个旧友组队刷副本,貌似是七八层的塔,从低向高刷怪,小怪刷完后终于见到boss了,但是貌似抗不住,大家都从顶层被k到地面,最后大家合力将塔扳倒了,希望能有点作用。

可悲催的时,boss掉到地面上毛事儿都没有,并且高抗高攻,谁都扛不出!!! 艹

最后只能找肉厚的引着跑,剩下的人将塔由重新竖起来,-_-!

完后把boss引过来,它就自己去顶层待着了,嘘~~ 大家都松了一口气!

突然发现队伍中有一个好久不见的朋友,名叫江龙旦,记得以前还是一个嫩嫩的小白脸,现在也是胡子拉碴的大汉了!! 感叹岁月不饶人啊!

哦,对了,貌似刷副本是公司的任务,所以才有了这回事,算是结合现实了吧

Shadowsock使用实例

Windows下使用shadowsocks

安装设置Shadowsocks for Windows

推荐Shadowsocks for Windows,项目地址 https://github.com/clowwindy/shadowsocks-csharp

下载后打开即可,参考以下设置:

Server IP 服务器IP
Server Port 服务器端口
Password 密码
Encryption 加密类型,推荐aes-256-cfb
Proxy Port 代理端口
Remarks 备注

完成设置即可。

使用

推荐以下组合:

  • Firefox+AutoProxy
  • Chrome+SwitchSharp

代理服务器信息:

代理地址:127.0.0.1
端口:1080
代理方式:socks5

配置切换规则:

勾选:在线规则列表
勾选:AutoProxy兼容列表
URL中输入:http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt
情景模式选择上一步创建的模式.

Android使用shadowsocks(影梭)

影梭下载地址: https://play.google.com/store/apps/details?id=com.github.shadowsocks

修改树莓派Swap

树莓派的swap大小在/etc/dphys-swapfile中定义,默认为100M

pi@raspi:~$ cat /etc/dphys-swapfile 
CONF_SWAPSIZE=1000
pi@raspi:/mnt$ free -h
         total       used       free     shared    buffers     cached
Mem:          437M        36M       401M         0B       2.1M        12M
-/+ buffers/cache:        22M       415M
Swap:          99M         0B        99M
pi@raspi:/mnt$ 

可以自己修改CONF_SWAPSIZE的值,单位为兆(MB)

修改后重启树莓派生效,如下:

pi@raspi:~$ cat /etc/dphys-swapfile 
CONF_SWAPSIZE=1000
pi@raspi:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          437M        53M       383M         0B       7.9M        23M
-/+ buffers/cache:        22M       415M
Swap:         999M         0B       999M

功率单位mW与dBm换算

功率/电平(dBm):放大器的输出能力,一般单位为W、mW、dBm。dBm是取1mw作基准值,以分贝表示的绝对功率电平。

换算公式:

电平(dBm)=10lgW

示例:

  • 5W → 10lg5000 = 37dBm
  • 10W → 10lg10000 = 40dBm
  • 20W → 10lg20000 = 43dBm

从上不难看出,功率每增加一倍,电平值增加3dBm

功率单位mW和dBm的换算表

mW和dBm的换算表

mapinfo用图片制作地图文件

获取图片

以百度地图为例,制作户县县城范围

用截图软件,将需要的范围截图保存,如下:

“在线地图”

制作TAB

用Mapinfo打开图片(hx.png),会提示是否注册,选择注册(Register)

然后出现图片注册界面

“制作TAB”

简单说一下原理问题。

在图片上找最少3个坐标,然后对应3个实际经纬度信息,为什么最少3个?因为三点确定一个平面嘛!

下来录入经纬度信息,点击Add,在图片上点一个点,按照提示输入对应的经纬度,如下:

“添加经纬度”

经纬度信息可以使用GoogleEarth获得。

以下是制作完成的情况

“制作完成TAB”

点击完成后,就会生成一个同名的tab文件(hx.tab)。

CentOS中Crontab安装和使用

安装crontab:

[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs

说明:

  • vixie-cron软件包是cron的主程序;
  • crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:chkconfig --level 35 crond on

rontab命令

功能说明: 设置计时器。

语法: crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:

cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下: Minute Hour Day Month DayOFWeek Command

参数:

-e  编辑该用户的计时器设置。 -l  列出该用户的计时器设置。 -r  删除该用户的计时器设置。 -u<用户名称>  指定要设定计时器的用户名称。

Excel单元格插入换行符

一般情况下,单元格插入换行符可以使用Alt+Enter来实现

但如果需要批量操作的话,那么可以使用 **CHAR(10)**来表示换行符

实例如下,一看就懂!

char(10)

Linux下CLI模式使用Dropbox

下载Dropbox

32-bit:

    cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

64-bit:

    cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

连接到Dropbox

    ~/.dropbox-dist/dropboxd

按照提示,在浏览器中打开链接,确认授权。

CLI模式使用Dropbox

下载执行脚本:

    wget https://www.dropbox.com/download?dl=packages/dropbox.py
    chmod +x dropbox.py

dropbox.py使用

    root@hkvps:~# ./dropbox.py help
    Dropbox command-line interface
    commands:
    Note: use dropbox help <command> to view usage for a specific command.

     status       get current status of the dropboxd
     help         provide help
     puburl       get public url of a file in your dropbox
     stop         stop dropboxd
     running      return whether dropbox is running
     start        start dropboxd
     filestatus   get current sync status of one or more files
     ls           list directory contents with current sync status
     autostart    automatically start dropbox at login
     exclude      ignores/excludes a directory from syncing
     lansync      enables or disables LAN sync

VC运行库全集

VC运行库全集

VC2005,VC2008,VC2010,VC2013

VC++ Redistributable Package Collection

VCRP:
    |   
    +---vcpp_2005
    |       vcredist_x86.exe       
    +---vcpp_2008
    |       vcredist_x86.exe      
    +---vcpp_2010
    |       vcredist_x64.exe
    |       vcredist_x86.exe       
    +---vcpp_2012
    |       vcredist_x64.exe
    |       vcredist_x86.exe
    |       vozqco_70591.exe   
    \---vcpp_2013
        vcredist_arm.exe
        vcredist_x64.exe
        vcredist_x86.exe

VC运行库下载地址**https://ct.optipng.cn/fs/18418398-315802255**

树莓派中使用TL-WN725N

Raspbian版本 2014-01-07-wheezy-raspbian.img

下载地址为http://unixetc.com/res/8188eu-20140616.tar.gz

首先固网链接树莓派,通过SSH登录

	wget http://unixetc.com/res/8188eu-20140616.tar.gz
	unzip 8188eu_31024_614.zip
	sudo mv 8188eu.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
	sudo chown root:root /lib/modules/`uname -r`/kernel/drivers/net/wireless/8188eu.ko
	sudo mv rtl8188eufw.bin /lib/firmware/rtlwifi/
	sudo chown root:root /lib/firmware/rtlwifi/rtl8188eufw.bin
	sudo depmod -a
	sudo modprobe 8188eu

然后编辑/etc/netwok/interfaces,添加以下内容

	allow-hotplug wlan0
	auto wlan0

	iface wlan0 inet manual
	wpa-roam /etc/mywpa.conf
	iface default inet dhcp

新建mywpa.conf写入链接配置vi /etc/mywpa.conf

	network={
	ssid="YOUR SSID"
	proto=RSN
	key_mgmt=WPA-PSK
	pairwise=CCMP TKIP
	group=CCMP TKIP
	psk="YOUR PASSWORD"
	}

重启系统即可

树莓派安装Tonido打造个人云服务

树莓派安装Tonido

	sudo mkdir /usr/local/tonido
	cd /usr/local/tonido
	sudo wget http://patch.codelathe.com/tonido/live/installer/armv6l-rpi/tonido.tar.gz
	sudo tar -zxvf tonido.tar.gz
	./tonido.sh start

浏览器打开http://ip:10001开始注册设置 ip为树莓派的地址

安装多媒体解码器

Tonido支持在线播放音频,但需要安装设置解码器

	cd /usr/local/tonido
	sudo apt-get install ffmpeg
	sudo ln -s /usr/bin/ffmpeg ffmpeg.exe
	sudo ln -s /usr/bin/ffmpeg ffmpegv.exe

设置开机启动

  • 下载脚本文件tonido

wget http://qn.optipng.cn/res/tonido

  • 设置脚本权限
	sudo cp tonido /etc/init.d/
	sudo chmod +x /etc/init.d/tonido
  • 安装脚本
	sudo update-rc.d tonido defaults

Tonido客户端下载

Centos7下安装NTFS-3G

Centos7安装指南

安装NTFS-3G

下载ntfs-3g_ntfsprogs-2014.2.15.tgz </res/ntfs-3g_ntfsprogs-2014.2.15.tgz>

#tar zxf ntfs-3g_ntfsprogs-2014.2.15.tgz
#cd ntfs-3g_ntfsprogs-2014.2.15
#make
#make install

如果make无法成功的话,请重新安装gcc yum install gcc

使用NTFS-3G

临时挂载window分区:

#mkdir /mnt/windowsc/
#mount -t ntfs-3g /dev/sda1 /mnt/windosc/

编辑fstab开机挂载分区,可以参考通过fstab自动挂载分区

/dev/sda1 /mnt/windowsc ntfs-3g defaults 0 0

NTFS-3G主页

CentOS7安装指南

下载Centos7安装镜像: http://mirrors.aliyun.com/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-GnomeLive.iso

将下载后的镜像写入U盘:

#dd if=CentOS-7.0-1406-x86_64-GnomeLive.iso of=/dev/sdb bs=4M && sync

关闭电脑,从U盘启动。

进入桌面后,点击Install to Hard Drive开始安装。

Install to Hard Drive

选择语言

这里选择简体中文(中国)

简体中文

安装信息摘要

这里需要设置四部分内容:日期和时间键盘安装位置网络和主机名

安装信息摘要

设置安装目标和位置,选择本地磁盘,然后勾选我要配置分区以自定义分区信息。

点击完成进入手动分区

手动分区

在左侧选择具体磁盘分区,右边编辑挂载信息,然后点击更新设置

更新设置

以下为编辑/home挂载点信息:

/home挂载

下图为编辑后的分区信息,点击左上角完成

分区信息

查看更改摘要,确认没问题了就点击接受更改

更改摘要

设置网络和主机名

网络和主机名

完成设置后,点击右下角开始安装

开始安装

用户设置

用户设置

设置ROOT密码

ROOT密码

创建用户

创建用户

所有配置完成后,等待安装结束。。。

等待安装结束

提示安装完成,点击右下角Quit退出。

提示安装完成

Centos7配置grub添加windows引导菜单

进入/etc/grub.d/目录

#cd /etc/grub.d/

新建15_Windows文件,写入以下内容:

#! /bin/sh -e
echo "#Adding Windows" >&2
cat << EOF
menuentry "Windows" {
set root=(hd0,1)
chainloader +1
}
EOF

其中(hd0,1)是本地磁盘windows主扇区号,可以通过fdisk -l来查看确定。

设定文件权限

#chmod 755 15_Windows

编辑/etc/default/grub来设定菜单等待时间

GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

修改GRUB_TIMEOUT值即可。

设置Windows为默认启动项

#grub2-set-default "windows"

然后运行以下命令,使以上修改生效:

# grub2-mkconfig -o /boot/grub2/grub.cfg

华为C8817L解锁与Root

解锁

解锁Bootloader首先需要获得解锁码,以下为官方解锁页:

获取解锁码 http://www.emui.com/plugin.php?id=unlock&mod=detail

获取解锁码

提交成功后会获得16位的解锁码。

下载以下两个文件:

c8817l驱动 http://pan.baidu.com/s/1jG3fBhW

google adb工具包 http://pan.baidu.com/s/1dDpI77b

安装好驱动城区,解开adb工具包,cmd进入adb包目录。

关机,同时按住音量下电源键开机,进入到fastboot模式。

usb链接电脑,参考以下解锁:

usb链接电脑

其中fastboot oem unlock后为16位解锁码

解锁成功后手机会自动重启。

进入开发者模式

关于->点击4次版本号

Root

360一键root,其他不多说了!

结合Jekyll与Github Page建立免费博客

安装Jekyll

Jekyll使用

待补充

将Jekyll内容发布到Github

首先登录Github,新建一个用户名.github.iorepositories

然后将该 Repositories clone到本地文件夹。

在本地文件夹生成Jekyll站点,然后使用jekyll server生成内容。

下来将生成后的内容发布到Github

git add .
git commit -m "Update"
git remote add origin [email protected]:用户名/用户名.github.com.git
git push origin master

设置自定义域名

在Jekyll站点目录中新建CNAME文件,写入域名

unixetc.com
www.unixetc.com

然后分别将unixetc.comwww.unixetc.comA记录指向以下4个IP

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

创建固定大小的文件

有时我们需要新建指定大小的文件,操作系统本身自带的命令就可以做到。

Windows fsutil

新建名为10Gfile,大小10G的文件

	fsutil file createnew 10Gfile 10737418240

fsutil file命令

C:\Users\bbq>fsutil file
---- 支持的 FILE 命令 ----

createNew                创建指定大小的新文件
findBySID                按安全标识符查找文件
layout                   查询有关该文件的所有可用信息
optimizeMetadata         优化文件的元数据
queryAllocRanges         查询文件的分配范围
queryCaseSensitiveInfo   查询目录的大小写信息
queryEA                  查询文件的扩展属性(EA)信息
queryExtents             查询文件的范围
queryExtentsAndRefCounts 查询文件的范围及其相应的引用计数
queryFileID              查询指定文件的文件 ID
queryFileNameById        显示文件 ID 的随机链接名称
queryProcessesUsing      查询已打开文件的进程集
queryOptimizeMetadata    查询文件的有效元数据状态
queryValidData           查询文件的有效数据长度
setCaseSensitiveInfo     设置目录的大小写信息
setShortName             设置文件的短名称
setValidData             设置文件的有效数据长度
setZeroData              设置文件的零数据
setEOF                   为现有文件设置文件结尾
setStrictlySequential    将 ReFS SMR 文件设置为严格按顺序

Linux dd

新建名为4Gfile,大小为4G的文件

	dd if=/dev/zero  of=4Gfile bs=1M count=4096
➜  ~ dd --version
dd (coreutils) 9.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

Typecho主题aquan

最近恢复了博客,弄了个新皮亮相,欢迎大家围观!

名称:aquan 平台:typecho 预览图:

aquan

下载 aquan_theme.zip

树莓派配置VNC

树莓派安装VNC Server

	$sudo apt-get install tightvncserver
	$sudo apt-get install ttf-wqy-microhei //安装中文字体

使用VNC Server

	$vncserver -geometry 1024x768 //分辨率,推荐960x640,或者640x480
	$vncserver -kill :1  //结束vncserver进程

Real VNC Viewer链接方法: 192.168.1.2:1

VNC

树莓派修改软件源

国内推荐阿里云的开源镜像服务,地址为http://mirrors.aliyun.com

	vi /etc/apt/sources.list

将默认的raspbian.org源注释(#)掉,加入阿里云的raspbian源

	deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
	deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

更新系统

	apt-get update&&apt-get upgrade -y

HDMI简介

什么是HDMI

高清晰度多媒体接口(High Definition Multimedia Interface,简称HDMI)是一种全数字化图像和声音传送接口,可以传送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视游乐器、综合扩大机、数字音响与电视机等设备。HDMI可以同时传送音频和影音信号,由于音频和视频信号采用同一条电缆,大大简化了系统线路的安装难度。

HDMI是被设计来取代较旧的模拟影音传送接口如SCART或RCA等端子的。它支持各类电视与计算机图像格式,包括SDTV、HDTV视频画面,再加上多声道数字音频。

HDMI规格

HDMI分为A、B、C、D四种规格。

HDMI四种规格

  • HDMI A Type

    HDMI A Type应用于HDMI1.0版本,总共有19pin, 规格为4.45 mm × 13.9 mm,为最常见的HDMI接头规格, 相对等于DVI Single-Link传输。在HDMI 1.2a之前, 最大能传输165MHz的TMDS, 所以最大传输规格只能在于1600x1200(TMDS 162.0 MHz)

  • HDMI B Type

    应用于HDMI1.0版本,规格为4.45 mm × 21.2 mm,总共有29pin, 可传输HDMI A type两倍的TMDS数据量, 相对等于DVI Dual-Link传输, 用于传输高分辨率(WQXGA 2560x1600以上),此类接口未应用在任何产品中

  • HDMI C Type

    俗称Mini HDMI,应用于HDMI1.3版本,总共有19pin, 可以说是缩小版的HDMI A type, 规格为2.42 mm × 10.42 mm,但脚位定义有所改变。 主要是用在便携式设备上, 例如DV、数码相机、便携式多媒体播放机等。由于大小所限,一些显卡会使用mini-HDMI,用家须使用转接头转成标准大小的Type A再连接显示屏。

  • HDMI D Type

    也称为Micro HDMI应用于HDMI1.4版本,总共有19pin, 规格为2.8 mm × 6.4 mm,但脚位定义有所改变。Micro HDMI接口将比现在19针Mini HDMI版接口小50%左右,可为相机、手机等便携设备带来最高1080p的分辨率支持及最快5GB的传输速度。

树莓派与DNSPod动态域名解析

所需条件

  • Raspberry Pi
  • TP-Link路由器
  • DNSPod帐户
  • 域名

配置路由器

进入路由器的DHCP服务器->静态地址分配菜单,为Raspberry Pi分配静态IP地址,例如:192.168.1.200

进入路由器的安全功能->远端WEB管理菜单,设置WEB管理端口为一个非80值,例如82

进入路由器的转发规则->DMZ主机菜单,将DMZ主机IP地址设置为Raspberry Pi的ip地址,然后启用保存。

设置DNSPod动态域名解析

首先登录DNSPod网页管理域名,将二级域名wwwA记录解析到路由器外网IP(可通过路由器管理首页查询,或者通过浏览ip138.com来获得)

注:一级域名请解析**@**的A记录。

下载DNSPod官方客户端Lite https://support.dnspod.cn/Support/api

解压后双击打开登录,从右侧信息列表中也可以看到本机最新IP,点击相应域名后的动态解析按钮,在动态解析设置中右键点击相应的动态记录启用即可,关闭DNSPod官方客户端Lite

设置Raspberry Pi

安装Web服务器软件(Nginx)

    apt-get install nginx
    /etc/init.d/nginx start

内网可以通过浏览`http://192.168.1.129"来检查Nginx是否正常运行。

下载动态域名解析脚本(pypod.py) http://qn.optipng.cn/res/pypod.py

编辑pypod.py修改以下内容:

    login_email="email", # DSNPod帐户邮箱
    login_password="password", # DSNPod帐户密码
    domain_id=100, # 域名id
    record_id=100, # 记录id
    sub_domain="www", # 子域名

其中域名id记录id可以通过以下命令获取:

    curl -k https://dnsapi.cn/Domain.List -d "login_email=xxx&login_password=xxx"
    curl -k https://dnsapi.cn/Record.List -d "login_email=xxx&login_password=xxx&domain_id=xxx"

提示:如果你使用了www子域名,则需要获取www的记录id,如果使用一级域名(@),则需要获取**@**的记录id。

编辑完pypod.py保存退出,使用以下命令运行:

    python pypod.py

现在可以通过域名来浏览Raspberry Pi上的Web内容了。

pypod.py开机运行

添加/usr/bin/python /home/pi/pypod.py到**/etc/rc.local**。

树莓派安装Python开发环境与GPIO库

安装python

$sudo apt-get install python-dev

更新

$sudo easy_install -U distribute

安装python-pip

$sudo apt-get install python-pip

添加国内pypi镜像

在**~/.pip/pip.conf**中添加

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

安装python的GPIO库

$sudo pip install rpi.gpio

开始使用树莓派

安装系统

从官网下载系统镜像,推荐Raspbian

http://downloads.raspberrypi.org/raspbian_latest

将下载后的zip文件解压,得到2014-01-07-wheezy-raspbian.img文件。

准备一张SD卡,最好容量大于4GB,Class10

将镜像写入SD卡

  • Linux下推荐使用dd名来写入镜像

使用fdisk -l检查分区信息,比如sd卡设备为**/dev/sdb**,使用以下命令写入:

#dd if=2014-01-07-wheezy-raspbian.img of=/dev/sdb bs=1M
  • Windows下推荐使用Win32DiskImager写入镜像

Win32DiskImager下载地址:http://sourceforge.net/projects/win32diskimager/

下载后打开软件,选择好镜像文件与USB设备,然后点击Write写入。

开机进入系统

将已写入系统的SD卡插入Raspberry Pi,通过固网链接路由器,然后使用USB供电启动。

正常启动后,板载的ACTPWRFDXLNK100五个指示灯均点亮。

通过SSH连接Raspberry Pi

查看Raspberry Pi IP地址

#nmap -sP 192.168.1/24

检查出MAC后标注(Raspberry Pi Foundation)的即为Raspberry Pi主机。

然后通过SSH来链接主机

#ssh 192.168.1.127

用户名为pi,默认密码为raspberry

Widnows下推荐使用Putty

设置Raspberry

运行设置工具sudo raspi-config

  • 选择Expand Filesystem扩展文件系统
  • Change User Passwd 修改默认用户pi的密码,当然也可以在系统中使用passwd命令来更改。
  • Advanced Options->Hostname 修改主机名
  • Overclock 超频,建议900Mhz

Kindle Paperwhite越狱

越狱

下载kindle-jailbreak-1.8.N.zip解压,将得到的kindle-5.4-jailbreak.zip再解压,然后把解压出的三个文件放到KPW根目录

然后更新系统,主页-菜单-设置-菜单-更新您的kindle

底部显示**** JAILBREAK ****即表示越狱成功!

安装MKK

下载kindle-mkk-20140214.zip解压,将Update_mkk-20140214-k5-ALL_install.bin复制到KPW根目录更新系统

安装KUAL

下载KUAL-v2.3.zip 解压,将KUAL-KDK-2.0.azw2放到documents文件夹,点击图标即可运行KUAL

安装终端

下载kterm-0.7.zip解压,然后将kterm文件夹复制到KPW根目录下的extensions,即可通过KUAL来打开kterm。

**提示:**双指点击唤醒菜单。

安装USBNetwork

解压kindle-usbnet-0.15.N.zip,将update_usbnet_0.15.N_install_touch_pw.bin放到根目录,然后更新系统安装,完成后可通过KUAL来打开USBNetwork。

通过USBNetwork来链接PC,有时需要安装驱动,在这里提供undrivers.inf文件,安装时选择该文件即可。

以上所有文件下载地址: http://pan.baidu.com/s/1eQdzU6Y

入手树莓派1 Model B

刚刚入手Raspberry Pi 1 Model B

配置详情

  • Broadcom BCM2835 SoC full HD multimedia applications processor
  • 700MHz low power ARM1176JZ-F applications processor
  • Broadcom VideoCore IV, OpenGL ES 2.0, 1080p30 h.264/MPEG-4 AVC high profile decoder
  • 512MB SDRAM
  • 10/100 Ethernet RJ 45 on board network
  • Storage via SD/ MMC/ SDIO card slot
  • Dual USB connector
  • HDMI (rev 1.3 & 1.4) composite RCA (PAL and NTSC)
  • 3.5mm jack, HDMI
  • Linux operating system

正面图:

树莓派1ModeB正面图

背面图:

树莓派1ModeB背面图

Ubuntu下安装VPN

安装pptpd

#apt-get install pptpd 

IP设置

#vi /etc/pptpd.conf 

添加以下内容:

localip 192.18.0.1
remoteip 192.168.0.200-230

设置DNS

#vi/etc/ppp/pptpd-options

添加以下内容:

ms-dns 192.168.1.1
ms-dns 8.8.8.8

添加用户

#vi /etc/ppp/chap-secrets

添加以下内容:

name * passwd *

重启vpn

#/etc/init.d/pptpd restart 

允许ip4访问外网

#vi /etc/sysctl.conf

net.ipv4.ip_forward=1 //取消本行前注释符(*)

#sysctl -p

Qemu for windows 使用实例

QEMU for Windows使用

下载安装QEMU for Windows

双击下载后的exe文件完成安装。

qemu常用命令

  • 直接启动QEMU
    qemu-system-i386
  • 加载光盘镜像
    qemu-system-i386 -cdrom image.iso
  • 创建磁盘镜像
    qemu-img create disk.img 100M
  • 加载磁盘镜像
    qemu-system-i386 -hdd disk.img
  • 指定内存大小与CPU数
    qemu-system-i386 -m 256M -smp 2 -hdd disk.img
  • 同时加载磁盘镜像与光盘镜像,并且从光盘镜像启动
    qemu-system-i386 -cdrom image.iso -hdd disk.img -boot d

其中-boot后面的d代表从光盘启动,可用引导项:a, b (软驱 1,2), c (第一块硬盘), d (第一个CD-ROM), n-p (从网络启动), 默认为第一块硬盘。

qemu安装tinycore实例

首先使用qemu-img创建磁盘 tc.qcow2,格式为qcow2大小5G。

$ qemu-img.exe create -f qcow2 tc.qcow2 5G
Formatting 'tc.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=5368709120
lazy_refcounts=off refcount_bits=16

官网下载好tinycore系统镜像CorePlus-current.iso,使用以下命令从镜像启动。

VPS优化

pdksh替代bash

$sudo apt-get install pdksh
$sudo vi /etc/shells

添加/bin/pdksh到/etc/shells文件

$chsh -s /bin/pdksh

重新登录即可。

修改SSH端口

#vi /etc/ssh/sshd_config    

将Port 22中的22改为自定义数字即可

# /etc/init.d/ssh restart

dropbear替代openssh

$sudo apt-get install dropbear
$sudo /etc/init.d/ssh stop
$sudo vi /etc/default/dropbear

修改NO_START=0,修改DROPBEAR_PORT为自定义端口号

$sudo /etc/init.d/dropbear start
$sudo apt-get remove openssh-server
$sudo apt-get autoremove

关闭多余的TTY

Ubuntu 12.04 server如下操作

#cd /etc/init/
#mv tty2.conf tty2.conf.bak
#mv tty3.conf tty2.conf.bak
#mv tty4.conf tty2.conf.bak
#mv tty5.conf tty2.conf.bak
#mv tty6.conf tty2.conf.bak
#reboot

Debian 7如下操作

BitTorrent Sync使用实例

BitTorrent Sync是BitTorrent Inc推出的一款多平台同步工具,支持Windows、Linux、MAC、FreeBSD、IOS、Android、Windows Phone,还有许多NAS设备。

具体的功能介绍请转至官网 https://www.getsync.com/intl/zh_cn/features

下载地址 https://www.getsync.com/intl/zh_cn/platforms/desktop

在此提供镜像下载http://www.getos.org/btsync/

安装BitTorrent Sync

Windows版本,双击下载后的EXE文件安装。

Linux版,解压下载后的btsync_i386.tar.gz,运行即可

tar zxvf btsync_i386.tar.gz
cp btsync /usr/bin
./btsync

然后可以通过127.0.0.1:8888来进行设置管理

为了安全期间,不推荐使用默认配置,建议自定义端口

btsync --dump-sample-config>bs.conf
vi bs.conf

找到如下内容,将8888修改为自定义端口号

"webui" :
{
	"listen" : "0.0.0.0:8888" // remove field to disable WebUI

然后通过以下命令加载自定义配置文件

btsync --config bs.conf

Windows版与Linux版的软件界面大致相同,以下以linux为例说明。

配置BitTorrent Sync

第一次使用BitTorrent Sync需要进行一系列设置,如下所示:

设置管理员账号以及密码 *Windows不需要

设置管理员账号以及密码

账号设定完成后BitTorrent Sync会提示登录以继续使用,登录后继续下面设置。

然后是使用条款和Pro版本试用(30天)提示,直接同意。

下来选择连接设备,一般选择This is my first Sync device,如果你已经在其他设备上安装了BitTorrent Sync,并且需要将该设备的内容全部同步到新设备,可以选择Link a device already running Sync,这个在后边再讲。

连接设备

接下来创建身份信息(Create identity),设定一个名称。

VPS下自动备份文件和数据库

新建脚本,名为autoback.sh

	vi autoback.sh

脚本autoback.sh内容如下:

    #!/bin/sh

    #备份网站目录/home/www/
    tar zcvf /home/backup/www$(date + "%Y%m%d").tar.gz /home/www/*

    #备份数据库 www
    /usr/local/mysql/bin/mysqldump -uroot -ppassword dbname > /home/backup/dbname$(date +"%Y%m%d").sql

    #删除三天前的备份
    cd /home/backup/
    rm -f *$(date -d -3day +"%Y%m%d")*

将脚本(autoback.sh)添加到自动执行任务列表:

    chmod +x autoback.sh
    crontab -e
    59 23 * * * /root/autoback.sh

推荐注册Dropbox,参考 Linux下CLI模式使用Dropbox,将备份文件自动同步到Dropbox。

Typecho主题Logs

弄了个Typecho主题,名为Logs

预览:

Logs typecho theme

基本完善,有个别可能需要小修改,先贴出来分享给看得上的人

本站就是使用的这个主题,所以就不贴预览图了

  • Update 2014/01/02

    • 边栏添加搜索框
    • 优化一些代码
  • Update 2013/12/25

  • Update 2013/12/22

    • 评论ui完善
    • 添加favicon.ico

下载 Logs.zip

修复grub引导

笔记本原来安装的Linux/Windows XP双系统,今天重新安装了Windows7,但是开机的grub引导被搞掉了,找了下grub的man看了半天,摸索出来如何修复原来的grub引导。

首先,使用Linux live cd引导系统,然后按照以下操作:

检查分区信息

ubuntu@ubuntu:~$ sudo -s
root@ubuntu:~# lsblk 
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 465.8G  0 disk 
├─sda1    8:1    0    40G  0 part 
├─sda2    8:2    0     1K  0 part 
├─sda5    8:5    0     4G  0 part [SWAP]
├─sda6    8:6    0    20G  0 part 
├─sda7    8:7    0    20G  0 part 
├─sda8    8:8    0   100G  0 part 
├─sda9    8:9    0   200G  0 part 
└─sda10   8:10   0  81.8G  0 part 
sr0      11:0    1   1.6G  0 rom  /cdrom
loop0     7:0    0   1.5G  1 loop /rofs

以上的sda6是我的/home目录,根目录为sda7

Kindle Paperwhite安装多看阅读

安装多看阅读

下载地址: http://bbs.xiaomi.cn/forum-679-1.html

将下载的zip包解压,安装方法如下:

  1. Kindle原系统下,连接USB线到PC,拷贝1个文件夹和2个文件到Kindle磁盘。

    • 将DK_System文件夹拷贝至Kindle根目录
    • 将MOBI8_DEBUG文件拷贝至Kindle根目录
    • 将duokan.mobi文件拷贝至Kindle的documents目录
    • 然后弹出Kindle磁盘,断开USB线。

直到在原系统能看见一本新书 《duokan 安装文档》。

  1. 在原系统下打开 《duokan 安装文档》(备注:机器要是竖屏而不是横屏)。

在文档的中间看到Install按钮, 点击该按钮,按照屏幕上的提示进行安装。

屏保

  • 大小: 758x1024
  • 格式: PNG
  • 色调: 黑白

存放目录\DK_System\xKindle\res\ScreenSaver\

Kindle Paperwhite预置壁纸 http://vdisk.weibo.com/s/u6MCqFbm65gX2

字典

字典结构: .dz .idx .ifo 三个文件

字典存放目录\DK_System\xKindle\res\dict\

词典下载:

编辑\DK_System\xKindle\res\dict\dict.dat可以自定义索引顺序,如下:

/mnt/us/DK_System/xKindle/res/dict/oxford-gb-formated.ifo
/mnt/us/DK_System/xKindle/res/dict/Collins5.ifo
/mnt/us/DK_System/xKindle/res/dict/langdao-ec-gb.ifo
/mnt/us/DK_System/xKindle/res/dict/ghycycd.ifo
/mnt/us/DK_System/xKindle/res/dict/xhzd.ifo

JavaScript数组使用实例

GF办公用需要一个小系统,原要求是VBA实现,不过我没弄过那玩意儿。C语言倒是熟悉,但CLI的东西她使用不方便。

于是做一个web系统,php比较熟悉,不过她的工作不能使用外网,额滴神!最后还是选择了用javascript实现,现学现卖吧。

由于不能使用数据库,所以需要构建一个三维数组来存储数据,以下是javascript中数组使用的一些实例。

定义数组并赋值

	var jz = newArry();
	jz[0] = 10;
	jz[1] = "hello";
	jz[2] = 23.4;

以上是一个简单的一维数组,其中三个值分别为:10整数,hello字符串,23.4浮点数,可以通过以下方法使用

	alert("jz[0] is "+jz[0]+"\n jz[1] is "+jz[1]+"\n jz[2] is "+jz[2]);

二维数组的定义方法:为一维数组的单个值赋予数组值,那么就可以构成二维数组

实例

	var jz = newArry();
	jz[0] = newArry(1,2);
	jz[1] = newArry(3,4);
	jz[2] = newArry(5,6);

可以通过jz[0][0]jz[0][1]jz[0][2]来访问。

以下是一个简单的三维数组实例

	var jz newArry();
	jz[0] = newArry([100,200],[300,400],[500,600])
	jz[1] = newArry(['str1','str2'],['str3','str4'],['str5','str6']);
	jz[2] = newArry([2.24,3.2],[12.9,89.01],[38.04,7.6]);

访问方法如jz[0][1][0]

Windows下Jekyll乱码问题

在Ruby目录中搜索convertible.rb,找到大概27行如下内容:

self.content = File.read(File.join(base, name))

替换为

self.content = File.read(File.join(base, name), :encoding => 'utf-8') 

在windows环境变量中,添加以下两个环境变量

LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8

为Jekyll站点添加rss.xml

在网站根目录中新建rss.xml文件,写入以下内容:

rss.xml 代码

参考以上代码,其中的域名等信息自定义。

将Wordpress数据转换为Jekyll文件

这里使用的工具名为Exitwp,项目主页为https://github.com/thomasf/exitwp

安装Exitwp

必备组件

  • Python
  • html2text
  • PyYAML
  • Beautiful soup

ubuntu下安装软件:

# aptitude install python git build-essential
# aptitude install python-pip python-yaml python-bs4 python-html2text
# aptitude install libyaml-dev python-dev libxml2-utils

安装Exitwp

git clone https://github.com/thomasf/exitwp

###使用Exitwp转换wordpress数据

首先,登录wordpress后台,使用自带的导出工具将wordpress导出为xml文件

将导出的xml文件下载,复制到 ./exitwp/wordpress-xml/

进入 ./exitwp/wordpress-xml/,使用xmllint格式化xml文件

xmllint --format wp.xml

最后,执行exitwp.py脚本来处理xml文件

python exitwp.py

生成的md文件,存放在 ./exitwp/build/

后续的工作

将处理后的md文件复制出来,拷贝至jekyll站点的_post目录,然后使用

jekyll serve

生成预览,按照提示处理有问题的md文件,直至OK!

fstab自动挂载分区

使用fdisk -l查看分区信息

以下为需要自动挂载的分区:

分区       |      格式
------------------------------
/dev/sd1   |    NTFS
/dev/sd5   |    NTFS
/dev/sd6   |    NTFS
/dev/sd7   |    NTFS
/dev/sd8   |    NTFS

新建挂载目录

#mkdir /media/{a,b,c,d,e}

编辑fstab文件vi /etc/fstab写入以下内容

/dev/sda1 /media/a ntfs-3g defaults,iocharset=gb2312 0 0
/dev/sda5 /media/b ntfs-3g defaults,iocharset=gb2312 0 0
/dev/sda6 /media/c ntfs-3g defaults,iocharset=gb2312 0 0
/dev/sda7 /media/d ntfs-3g defaults,iocharset=gb2312 0 0
/dev/sda8 /media/e ntfs-3g defaults,iocharset=gb2312 0 0

说明:

  • /dev/sdax 表示分区
  • /mnt/xxx 表示挂载点
  • vat/ntfs-3g 表示分区格式
  • iocharset=xxx 设置字符集,为了支持windows中文目录,应设为gb2312

Debian下安装Jekyll

安装Rvm

$sudo aptitude install curl
$curl -L get.rvm.io | bash -s stable

加载Rvm

$source ~/.rvm/scripts/rvm

检查安装必备组件

$rvm requirements

安装 Ruby 1.9.3

$rvm install 1.9.3
$ruby -v
$gem -v

更改Gem软件源

$gem sources -a http://ruby.taobao.org/
$gem sources -r http://rubygems.org/
$gem sources -l

安装Jekyll

$gem install jekyll
$jekyll -v

打完收工!

使用SSH密匙登录Github

相较于旧的RSA,更加推荐ED25519

$ ssh-keygen -t ed25519 -C "[email protected]"

生成ssh密匙文件

ssh-keygen -t rsa -C "[email protected]"   

接下来会提示输入密码,推荐自定义密码,当然也可以置空

Enter passphrase(empty for no passphrase):
Enter same passphrase again:

完成后会在用户目录下的.ssh文件夹中新建id_rsais_rsa.pub两个文件。

添加ssh密匙到github用户

登录至github.com,点击右上角的Account Settings

在左侧选择SSH Keys菜单,然后在右侧点击Add SSH Key按钮

将上一步生成的id_rsa.pub文件内容复制进去保存。

本地连接至github.com

如果前面设置了passphrase,那么就按照提示输入passphrase。如果置空的话,就直接点击回车。成功后会有如下提示:

Hi alair! You`ve successfully authenticated, but GitHub does note provide shell access.

参考以上设置完成后,以后git push时就不需要每次输入密码了!

阿朗BTS开启40个邻区

阿朗基站默认未开启40个邻区功能,如果fci表的15、16页已经加满,再需要添加多的邻区关系就得设置打开40个邻区。

编辑cell2 (SERIES 2 CELL)表单

登录阿朗OMP平台,进入OMP Shell,输入apxrcv,然后按照提示输入表单名cell2

cell2只需提供基站号,设置为整个基站的功能

查看cell2表单的 12页,找到 FORTY NGBR 项,经该项值设置为 y

编辑ceqface (CELL EQUIPAGE FACE)表单

进入ceqafce表单,这里得提供具体的扇区号,然后查看第 9页,找到 Maximum Neighbor List Number Sent to Mobile,将其设置为 40

编辑fci (FACE CODE INFORMATION)表单

进入fci表,这里需要设置具体的扇区号,然后查看第 21页,找到如下行:

Expanded (40) Neighbor Lists Enable .................. 569) n

编辑改行,将后面的值设为 y

经过以上设置,所对应的扇区40个邻区列表功能正常开启,现在就可以在19页继续添加邻区了。

卸载linux旧内核

当linux内核更新后,开机的GRUB引导菜单中会存在新旧内核多个引导菜单,当新内核使用稳定后,我们可以将旧的内核删除以减少开机引导项,以下是在fedora与ubuntu中删除旧内核的方法,其他的YUM系或APT系系统可以参考参考

fedora中删除旧内核:

[aquan@localhost ~]$ uname -r
2.6.32-220.13.1.el6.i686
[aquan@localhost ~]$ rpm -qa|grep kernel
kernel-2.6.32-220.13.1.el6.i686
kernel-2.6.32-220.el6.i686
kernel-firmware-2.6.32-220.13.1.el6.noarch
dracut-kernel-004-256.el6_2.1.noarch
[aquan@localhost ~]$ sudo yum remove kernel-2.6.32-220.el6.i686

ubunu中删除旧内核:

sudo apt-get purge ~ilinux-image-.*\(\!`uname -r`\)

Linux下部署goAgent

准备工作

下载Google Appengine SDK For Pyahont与goAgent

1.Google App Engine SDK for Python
https://developers.google.com/appengine/downloads?hl=zh-CN#Google_App_Engine_SDK_for_Python

2.goagent
https://code.google.com/p/goagent/

下载后解压,将goagent文件夹放到google_appengine目录下,目录结构如下:

~/google_appengine/goagent-goagent-d488f2

准备好Google Application_ID与两步验证密码,如何申请问Google

配置goagent

编辑**~/google_appengine/goagent-goagent-d488f2/local/proxy.ini**

填写正确的appid,在此建议将profile由默认的google_cn改为google_hk

参考以下步骤执行:

aquan@edge ~/google_appengine $ python appcfg.py update goagent-goagent-d4488f2/server/python/
07:03 PM Host: appengine.google.com
07:03 PM Application: wrchiublog; version: 1
07:03 PM 
Starting update of app: wrchiublog, version: 1
07:03 PM Getting current resource limits.
Email: [email protected]  //在此填写googleid
Password for [email protected]:    //此处填写两步验证密码,而不是帐号密码
07:04 PM Scanning files on local disk.
07:04 PM Cloning 1 static file.
07:04 PM Cloning 6 application files.
07:04 PM Uploading 1 files and blobs.
07:04 PM Uploaded 1 files and blobs
07:04 PM Compilation starting.
07:04 PM Compilation completed.
07:04 PM Starting deployment.
07:04 PM Checking if deployment succeeded.
07:04 PM Deployment successful.
07:04 PM Checking if updated app version is serving.
07:04 PM Completed update of app: wrchiublog, version: 1

完成后,在**~/google_appengine/goagent-goagent-d488f2/local/**目录下运行goAgent

Ubuntu Server中安装VNC Server

安装所有软件

#aptitude install openbox firefox ttf-wqy-microhei
#aptitude install vnc4server

设置openbox启动

#update-alternatives --config x-session-manager
然后选择openbox-session

设置vncserver密码:

#vncpasswd
Password: ******
Verify:*****

运行vncserver

# vncserver  //运行
# vncserver -kill :1  //终止

编辑~/.vnc/xstartup文件

#vi ~/.vnc/xstartup
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
startx& //添加此行

链接VNC

Debian使用apt-spy选择最佳源

安装apt-spy

#apt-get install apt-spy

使用apt-spy选择最佳源

#apt-spy update
#apt-spy -d stable -a asia -t 3

结果保存在/etc/apt/sources.list.d/apt-spy.list,可手动替换到/etc/apt/sources.list

apt-spy选项:

  • -d 系统版本,可选stable,testing,unstable
  • -a 区域,如asia,europe等,可用项可cat /etc/apt-spy.conf
  • -t 超时阀值(s),可筛掉长时间不响应的地址

NokiaN900产品码

电池仓贴纸上面的CODE即是

  • 0595085: N900 RX-51 TMN (Telecomunicacoes Moveis Nacionais S.A.*) PT V1 - Black
  • 0582648: RX-51 Belgium
  • 0584571: RX-51 Croatia Makedonia
  • 0584572: RX-51 Czech
  • 0591362: RX-51 Estonia
  • 0574180: RX-51 France
  • 0574383: RX-51 Germany
  • 0591474: RX-51 Hungary
  • 0591474: RX-51 Hungary
  • 0574385: RX-51 Italy
  • 0583516: RX-51 Light Swap
  • 0582647: RX-51 MENA
  • 0585168: RX-51 Montenegro Greece
  • 0582645: RX-51 Netherlands
  • 0582644: RX-51 Poland
  • 0574386: RX-51 Russia
  • 0574179: RX-51 Scandinavia Finland Sweden
  • 0587236: RX-51 Scandinavia Norway Denmark
  • 0584570: RX-51 Slovakia
  • 0584570: RX-51 Slovakia
  • 0574384: RX-51 Spain Portugal
  • 0584598: RX-51 Swap
  • 0584598: RX-51 Swap
  • 0587813: RX-51 Swap France
  • 0587810: RX-51 Swap Russia
  • 0587812: RX-51 Swap USA
  • 0560826: RX-51 UK Ireland
  • 0580952: RX-51 USA
  • 0593611: UK CV
  • 0595421: Vodafone UK GB Contract black
  • 1.2009.42.2(發布)
  • 0574383: RX-51 Germany
  • 0574383: RX-51 Germany
  • 1.2009.44.1(發布)
  • 0595085: N900 RX-51 TMN (Telecomunicacoes Moveis Nacionais S.A.*) PT V1 - Black
  • 0582648: RX-51 Belgium
  • 0584571: RX-51 Croatia Makedonia
  • 0584572: RX-51 Czech
  • 0591362: RX-51 Estonia
  • 0574180: RX-51 France
  • 0574383: RX-51 Germany
  • 0591474: RX-51 Hungary
  • 0574385: RX-51 Italy
  • 0583516: RX-51 Light Swap
  • 0582647: RX-51 MENA
  • 0585168: RX-51 Montenegro Greece
  • 0582645: RX-51 Netherlands
  • 0582644: RX-51 Poland
  • 0574386: RX-51 Russia
  • 0574179: RX-51 Scandinavia Finland Sweden
  • 0587236: RX-51 Scandinavia Norway Denmark
  • 0584570: RX-51 Slovakia
  • 0574384: RX-51 Spain Portugal
  • 0584598: RX-51 Swap
  • 0587813: RX-51 Swap France
  • 0587810: RX-51 Swap Russia
  • 0587812: RX-51 Swap USA
  • 0593709: RX-51 Switzerland
  • 0560826: RX-51 UK Ireland
  • 0580952: RX-51 USA
  • 0593611: UK CV
  • 0593611: N900 RX-51 Country Variant United Kingdom GB V1 Black
  • 0595085: N900 RX-51 TMN (Telecomunicacoes Moveis Nacionais S.A.*) PT V1 - Black
  • 0582648: RX-51 Belgium
  • 0584571: RX-51 Croatia Makedonia
  • 0584572: RX-51 Czech
  • 0591362: RX-51 Estonia
  • 0574180: RX-51 France
  • 0574383: RX-51 Germany
  • 0591474: RX-51 Hungary
  • 0574385: RX-51 Italy
  • 0582647: RX-51 MENA
  • 0585168: RX-51 Montenegro Greece
  • 0582645: RX-51 Netherlands
  • 0582644: RX-51 Poland
  • 0574386: RX-51 Russia
  • 0574179: RX-51 Scandinavia Finland Sweden
  • 0587236: RX-51 Scandinavia Norway Denmark
  • 0584570: RX-51 Slovakia
  • 0574384: RX-51 Spain Portugal
  • 0593709: RX-51 Switzerland
  • 0560826: RX-51 UK Ireland
  • 0580952: RX-51 USA
  • 0583566: RX-51 Australia
  • 0583566: RX-51 Australia
  • 0582648: RX-51 Belgium
  • 0584571: RX-51 Croatia Makedonia
  • 0584572: RX-51 Czech
  • 0591362: RX-51 Estonia
  • 0574180: RX-51 France
  • 0574383: RX-51 Germany
  • 0591474: RX-51 Hungary
  • 0583572: RX-51 Indonesia,Vietnam,Cambodia
  • 0583572: RX-51 Indonesia,Vietnam,Cambodia
  • 0574385: RX-51 Italy
  • 0582647: RX-51 MENA
  • 0582647: RX-51 MENA
  • 0585168: RX-51 Montenegro Greece
  • 0582645: RX-51 Netherlands
  • 0583569: RX-51 Philippines
  • 0583569: RX-51 Philippines
  • 0583569: RX-51 Philippines
  • 0582644: RX-51 Poland
  • 0574386: RX-51 Russia
  • 0574179: RX-51 Scandinavia Finland Sweden
  • 0587236: RX-51 Scandinavia Norway Denmark
  • 0583571: RX-51 Singapore
  • 0583571: RX-51 Singapore
  • 0584570: RX-51 Slovakia
  • 0598090: RX-51 South-Asia(Nepal,Sri Lanka)
  • 0598090: RX-51 South-Asia(Nepal,Sri Lanka)
  • 0582646: RX-51 South Africa
  • 0582646: RX-51 South Africa
  • 0574384: RX-51 Spain Portugal
  • 0593709: RX-51 Switzerland
  • 0599194: RX-51 Taiwan
  • 0599194: RX-51 Taiwan
  • 0583568: RX-51 Thailand
  • 0583568: RX-51 Thailand
  • 0583568: RX-51 Thailand
  • 0560826: RX-51 UK Ireland
  • 0591467: RX-51 Ukraine
  • 0580952: RX-51 USA
  • 0599195 HK(即全球版)

使用Wget遍历下载整站

遇到一个资料站点,比如https://wd.hides.su/fox_exe/WDMyCloud-Gen2/,可以通过wget命令来将整个站点进行下载保存。

命令实例:

    $wget -r -p -np -k -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" "https://wd.hides.su/fox_exe/WDMyCloud-Gen2/"

参数解释:

  • r,–recursive 递归下载
  • p, –page-requisites 下载显示HTML文件的所有图片
  • np, –no-parent 不要追溯到父目录
  • k, –convert-links 转换非相对链接为相对链接
  • e,–execute=COMMAND 执行一个 “.wgetrc”命令
  • robots=off 无视robots.txt
  • U, –user-agent=AGENT 设定伪装agent,模拟浏览器行为 “Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6”

Archlinux下修改网卡名称

刚刚安装了Archlinux,用的archlinux-2013.03.01-dual.iso镜像,最新的systemd将网卡名更改了,不在是原来默认的eth0/wlan0

我的ifconfig -a输出如下:

enp9s0: flags=4098 mtu 1500
ether 04:7d:7b:f8:25:9d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp3s0: flags=4098mtu 1500
ether 88:9f:fa:f8:c3:06 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</pre> 

怎么将网卡名改回原来的eth0/wlan0呢?如下操作即可:

Archlinux安装笔记

下载ArchLinux镜像

下载archlinux-2012.12.01-dual.iso,可以将其刻录到CD引导启动,或者使用dd命令将其写入到USB设备。

http://mirrors.163.com/archlinux/iso/2012.12.01/archlinux-2012.12.01-dual.iso.torrent

完成后重启电脑进入到Archlinux CD开始进行安装。

设置网络连接

整个安装过程,本机需要连接互联网以下载所需文件,在此推荐使用网线连接自动获取IP,如果是这样那么当你进入到archlinux时网络已经连接成功了,可以使用ping来查看是否成功

#ping -c 5 aotee.com

如果不是自动获取IP,可以参考以下相关命令设置网络连接:

开启|关闭网络设备

# ip link set eth0 up
# ip link set eth0 down

自动获取IP(DHCP)

# dhcpcd eth0

查看状态

# ip addr show dev eth0

如果是无线网卡,请参考这里进行设置。

设置键盘布局

#loadkeys us

准备硬盘分区

设置硬盘分区时可以使用自己熟悉的工具进行操作,以下是我的分区方案

/dev/sda9 /boot
/dev/sda10 swap
/dev/sda11 /
/dev/sda12 /home

我使用LinuxMint LiveCD的磁盘工具进行分区,分区完成后可以使用lsblk /dev/sda来查看结果。

格式化分区

参考以下命令对已有的分区进行格式化

#mkfs -t ext2 /dev/sda9
#mkfs -t ext4 /dev/sda11
#mkfs -t ext4 /dev/sda12
#mkswap /dev/sda10
#swapon /dev/sda10

挂载分区

Cinnarch安装全过程

Cinnarch是一个新的linux发行版,基于Archlinux以Cinnamon为默认桌面系统,对于想体验Archlinux但对于全新的安装方法无法把握的朋友,Cinnarch不失为一个良好的选择。

以下为安装Cinnarch的一次全过程,以供需要的朋友参考。

下载Cinnarch

首先从官网下载Cinnarch镜像,地址为 http://www.cinnarch.com/try-it/ ,按照需要下载32Bit或者64Bit的,下载方式有直接下载(iso)与通过BT种子(torrent)下载两种方式。

将下载后的镜像刻入CD,放入光驱后重启以进入LiveCD即可。

安装Cinnarch

进入到LiveCD后会弹出一个Welcome弹窗,可以点击其中的CLI Installer开始安装,或者先使用系统(Try it),需要安装时在系统菜单中找到Cinnarch Installer CLI点击打开,也可以开始安装。

打开安装程序前,请确认电脑已经可以联网使用,因为一切软件包都是实时从mirror下载的,并且安装好的系统和archlinux一样,可以滚动升级(Rolling upgrade)。

打开安装程序,首先提示更新软件list,更新完成后会出现一个welcome的对话框,确认后进入到安装主菜单,如下:

0 Set Language and Keyboard
1 Set Time and Date
2 Prepare Hard Drive
3 Select Source
4 Install System
5 Configure System
6 Exit Install 

设置语言与键盘 (Set Language and Keyboard)

选择进入设置菜单,在此主要设置语言选项,键盘布局可以不设置,采用默认即可。 语言设置为zh_CN.UTF-8 设置键盘布局(Set Keymap)时可以直接选择返回主菜单(Return to Main Menu)

设置时间与日期(Set Time And Date)

此项用于设置时间与日期,此项下面有三个子菜单:

1 Select Region and Timezone
2 Set Time and Date
3 Return to Main Menu

第一项菜单用于设置区域与时区,此次区域(Region)设置为Asia,时区(Timezone)设置为Chongqing(或者Beijing/Shanghai)

WebOS资源分享

对于WebOS还是继续看好,但是出于使用习惯和需求,将已经闲置了两个多月的HP TouchPad出手,新入手了台iPad2 Wifi (32nm)。

以下分享一些关于HP TouchPad的WebOS资源,以方便需要的朋友 以下为目录说明:

G:WebOS
├─8%及12%无法通过一键修砖 *关于刷机不过的处理方法
├─cm7alpha3.5 *CM7 for HP TouchPad
├─cm9alpha2 *CM7 for HP TouchPad
├─patchs *一些补丁备份,便于安装
├─soft *收集的一些HP TouchPad软件
├─touchpad免激活 *HP TouchPad免激活工具
├─WQI *WebOS Quick Install
└─zoopda-elite-TP *Zoopda eLite发布的DIY ROM for HP TouchPad
calibre-0.8.22.msi *电子书管理编辑软件
KSMediaStreamer_v1.0.7.msi *流媒体分享软件
NovacomInstaller_x86.msi *驱动程序(Windows)
patch.txt *Preware补丁推荐
Splashtop_Streamer_Win_v1.6.0.1.exe *远程桌面服务程序
TBaccess.exe *TBaccess PC端
UniversalNovacomInstaller.jar *驱动程序(Linux)
webOS Nation Moboot.zip *MoBoot主题文件
webosdoctorp305hstnhwifi.jar *HP TouchPad官网3.0.5 ROM
WifiMediaSync.msi *媒体文件同步工具
手动删除android.txt *手动删除CM方法

G:WebOScm7alpha3.5
ACMEInstaller
ACMEUninstaller
gapps-gb-20110828-signed.zip
moboot_0.3.5.zip
novacom.exe
update-cm-7.1.0-tenderloin-a3.5-fullofbugs.zip
update-cwm_tenderloin-1012.zip
XRONified_vB2.9.1_odex_01032012.zip

G:WebOScm9alpha2
ACMEInstaller2
ACMEUninstaller
gapps-ics-20120429-signed.zip
moboot_0.3.5.zip
novacom.exe
update-cm-9.0.0-RC0-Touchpad-alpha2-fullofbugs.zip
update-cwm_tenderloin-1012.zip

G:WebOSpatchs
ca.canucksoftware.filemgr_2.0.7_all.ipk
ca.canucksoftware.homebrew-js-service-framework_1.0.0_all.ipk
ca.canucksoftware.systoolsmgr_1.0.5_all.ipk
cacanucksoftwareinternalz_15.ipk

G:WebOSsoft
ca.canuckcoding.comicshelfhd_1.3.0_all.ipk
chomper.sys.lsmime_0.1.0_armv7.ipk
com.8bitdevelopment.wifimediasync_3.0.5_all.ipk
com.amwityga.tpnews_1.0.0_all.ipk
com.aol.engadgetHD_1.0.5_all_Touchpad.ipk
com.hedami.musicplayerremix_2.5.5_all.ipk
com.hp.palm.renren_01.00.022_all.ipk
com.ingloriousapps.glimpse_1.2.3_all.ipk
com.ingloriousapps.notesplus-untestedalpha_0.3.1_all.ipk
com.kalemsoft.ksmplayera_0.5.3_tp.ipk
com.l337tech.internet-radio-hd-pro_0.0.2_all.ipk
com.menaka.mvnc_2.0.0_all.ipk
com.mporting.ime.zh-cn.patch_3.0.4_all.ipk
com.noteday.opencoursehd_1.0.0_all.ipk
com.omastudios.filemanager_1.7.0_all.ipk
com.oscillicious.sodasynthhd_1.0.2_all.ipk
com.picsel.app.smartoffice_1.8.5_all.ipk
com.qq.palmqzone_1.0.0_all.ipk
com.sina.touchpadweibo_1.0.1_all.ipk
com.smilepig.sohutv_0.0.7_all.ipk
com.splashtop.remote.webos_1.0.3_all.ipk
com.syllogithm.webosrdpc_0.2.5_all.ipk
com.tencent.qq_1.0.0_all.ipk
com.tudou.video_2.0.0_all.ipk
com.wordpress.mobilecoder.touchplayer_1.0.6a_all.ipk
com.xuepx.justradio.hd_2.0.3_all.ipk
com.youku.touchpad_2.0.0_beta3.ipk
de.thg_.usbflashmount_0.1.0_all.ipk
org.webosinternals.preware_1.8.5_arm.ipk
org.webosinternals.preware_1.9.12_arm.ipk

G:WebOStouchpad免激活
devicetool-tp
devicetool-tp.jar
devicetool.bat
readme.txt

G:WebOSWQI
WebOSQuickInstall-4.2.0.jar
WebOSQuickInstall-4.3.1.jar
WebOSQuickInstall-4.4.0.jar 

下载地址

Linux Live USB制作工具

现在大多数的Linux发行版都支持Live方式,即可直接运行体验无需安装。

Linux Live又分为LiveCD和LiveUSB,前者是通过光盘(CD/DVD)方式直接运行,后者则是通过USB设备(U盘/移动硬盘)来运行。

以下介绍几款Linux Live USB制作工具,个人推荐Linux Live USB Creator!

注:需要主板BIOS开启USB Boot功能。

Universal USB Installer http://www.pendrivelinux.com

1,选择Linux版本,勾选后面的Download the iso(Optional).则从互联网下载所选镜像。 2,选择本地镜像文件(iso)。 3,选择将要写入的USB设备,勾选Show all Drives可以看到所有本地磁盘,需要写入移动硬盘就需要勾选此项。

UNetbootin http://unetbootin.sourceforge.net

1,选择镜像源,从网络下载或者本地iso文件 2,在类型中选择usb设备或者硬盘,然后在驱动器栏选择具体的盘符。

LinuxLive USB Creator http://www.linuxliveusb.com/

1,选择需要写入的USB设备 2,选择安装源(ISO文件、光驱、网路下载)

Image Writer for Microsoft Windows (Win32DiskImager) https://launchpad.net/win32-image-writer

这个操作相对很简单,并且只单一的适用于img镜像文件,如Meego就是采用这种发行方式

万能的dd

最喜欢这个方法了! 使用lsblk查看u盘设备名,如/dev/sdb,例如镜像文件名为linux.iso,使用以下命令将镜像文件写入U盘

#dd if=linux.iso of=/dev/sdb

修改iPhone的Cydia源

越狱后的ios设备cydia为必装平台,但是在软件源管理中,大家可能会发现一些源通过cydia无法编辑,比如Cydia/Telesphoreo。

我现在入手一部iPhone 4 CDMA版,通过OTA写号使用。在安装sbsettings的时候,一直提示size mismatch而未能安装成功。网上看了看大家的经历,这样的问题最终定位都是某个软件源不匹配造成,试着删除或者更新就可以解决。

但是我发现机子买回来,里面有两个源是无法编辑的,一个是上面提到的Cydia/Telesphoreo,另一个就是维维网的源。经过我在cydia下编辑删除,试遍了其他的源的删除,但都是不可以成功安装sbsettings。于是我觉得应该是剩下的那两个不可编辑源的问题,由于Cydia/Telesphoreo是Cydia初始安装的源,应该不会有问题,那就需要编辑删除维维网的源了,但是在cydia的源管理下它是不可编辑的。

最后让我找到了办法,既然在cydia下不可以编辑,那么在ssh下呢,只要找到该源的文件,那就可以编辑了,经过判断查找,最终定位到/private/etc/apt/sources.list.d/目录,在该目录下存放着一些软件源文件(.list)。因为ios采用和debian相同的软件管理软件apt-get,那么他的软件源管理方式应该类似。基于以上经验,最终定位到了/private/etc/apt/sources.list.d/目录。

具体解决步骤如下:

进入到/private/etc/apt/sources.list.d/目录,将里面除了cydia.list文件,其他的全部删除。然后编辑cydia.list文件,只留下一行deb http://apt.saurik.com/ 即可,保存之。

手机上打开cydia,重新刷新软件源。然后按需添加需要的第三方源。

至于如何编辑cydia目录,一般可以使用itools等软件,但是这样比较繁琐。简单直接的方法是通过ssh连接手机进行操作,可参考通过SSH连接IOS设备

aPhone:~ root# cd /private/etc/apt/sources.list.d/
aPhone:/private/etc/apt/sources.list.d root# ls -l
total 24
-rwxr-xr-x 1 root wheel 259 May 25 23:01 appvv.list*
-rw-r--r-- 1 root wheel 357 Jun 16 13:59 cydia.list
-rw-r--r-- 1 root wheel 227 May 25 23:01 saurik.list
aPhone:/private/etc/apt/sources.list.d root# cat cydia.list
deb http://apt.saurik.com/ ios/690.10 main
deb http://apt.178.com/ ./
deb http://download.voicecloud.cn/cydia/ ./
deb http://cydia.zodttd.com/repo/cydia/ stable main
deb http://repo666.ultrasn0w.com/ ./
deb http://mi.baidu.com/ ./
deb http://apt.thebigboss.org/repofiles/cydia/ stable main
deb http://apt.modmyi.com/ stable main
deb http://apt.25pp.com/ ./

HP Veer刷机中遇到的12%卡死问题

对于webos系统,我是由衷的赞美,但是相应的硬件确实有待商榷。

去年就入手了一部HP Veer 4G,体验了一个星期就转手了,因为我手中已经有了HP Touchpad。

前几天朋友再次邮寄Veer给我,自己玩不转,也不想玩了,所以让给我倒腾去吧。拿到手第一感觉就是,这货儿也太不爱惜了,机子用的就没法看,好在屏幕还贴膜着,要不更不知道会咋样。

拿到手的机子是商家当时发货时的系统,被搞的乌七八糟,于是重新找rom下载之。

以前自己用的那个感觉刷原厂rom就很好,但是现在想试着找找看有没有不错的第三方rom,煮机网看了下,发现现在有个stay版的,看起来做的确实不错,于是下载安装之。

刷机时由于懒惰,用了一个一键清除工具,没有使用系统自带的擦除功能,导致存储上出了问题,u盘功能不能使用了。想着不用管重新刷过就是,没想到碰到了从来没有过的12%卡死问题,刷了N多次还是不能过12%。

网上看了看一些经验,像重新安装驱动,换一台电脑试试等等,都没有用。

最后在webos-internals.org上找到了方法,地址在这里http://www.webos-internals.org/wiki/How_To_Recover,里面列出了几个不能正常recovery的实例,参考里面的Doctor disconnects at 8%条目,就可以解决刷机12%的问题。 从里面说明来看,造成这些问题的主要原因就是存储问题,所以可能是由于我使用了一键清除工具的原因。

主要步骤如下:

1,重启手机,进入到recovery模式下(Power+音量上) 2,使用novacom刷入uImage

#novacom boot mem://< nova-installer-image-broadway.uImage

其中的uImage文件,可以从官网的rom中提取,下载.tar格式的rom文件,用7zip打开

3,使用novaterm连接系统,进入cli,重新修复存储系统

#lvm.static vgscan --ignorelockingfailure
#lvm.static vgchange -ay --ignorelockingfailure
#mkdosfs -f 1 -s 64 /dev/store/media

Windows下novaterm的目录为C:\Program Files\Palm Incterminal\novaterm.bat

完成以上步骤,就可以重启进入recovery重新刷机了。

离羣索居

朋友间距离太近,就少了应有的礼貌,但如果距离太远了,就会多了不必要的客气。

我也搞不清自己属于哪个,可能居中靠前点吧。对于熟识的朋友,我很容易和其达到厮混的状态,会下意识的匿藏彼此的隔阂(很小的那种)。相对而言,如果许久不曾联系,或者相处的距离较远的朋友们,那么我们之间就多了更多的客气,有时这种客气让我自己的都厌恶,总觉得是小小的虚伪,但现况就是这样,它存在既是有理。

突然有以上的感触,是因为听《现象七十二变》,罗大佑的词写的确实不错,佩服!

在这个五千年的悠久历史里面

成功与失败多少都有一点

……

就像我看到文明车辆横冲直撞

我不懂大家心中作何感想

……

眼看着高楼盖得越来越高

我们的人情味却越来越薄

朋友之间越来越有礼貌

只因为大家见面越来越少

…….

就像彩色的电视变得更加花俏

能辨别黑白的人越来越少

……

但是生活不能像在演戏

你戴着面具如何面对自己

或许你将会真的发现一些奇迹

只要你抛开一些面子问题

不要吝啬您的程度副词

最近一直在赶着看《明朝那些事儿》,其实这个以前断断续续看了不少了,不过有丢下时间很长,最近又从头来过,已经看到崇祯中期了,用文中的话来说,大明公司已经没救了,倒闭只是时间问题。

看这本书给我的感觉很深,最重要的一点是“运动是普遍存在的”,呵呵,这个听起来好像和《明》不搭边,不过我最感触的想法就是这个。看着明史上那些沉沉浮浮,有光辉有龌龊,但是这些对于我来说,那仅仅是一件事儿,他们已经随着时间而远去,现在仅作为茶余饭后的谈资。《明》中对于很多人物都作了中肯的评价,不能说是完全的,因为作者也不打包票。纵观这些作者口中的“猛人”,他们都是有过光辉的。作者在形容他们时,不吝的使用了大量程度副词,这样的描述给人物以入木三分的刻画,让他们的形象突出很明显。回头想想整本书,完全是一种以“人物连环画”的方式铺开,各个人物的时间段错落有致,偶尔还有几个追溯性的故事。

回到标题,请不要吝啬您的程度副词。我们在平时的陈述时,对于人物或者事物的评价,尽可能的搭配以贴切的形容词,这样的陈述会很靠谱。但是,同样请在贴切的形容词前加上最适合的程度副词,这样会让你的陈述入读者三分,会最大的渲染您对事物或者人物的感情,让读者最大程度的身同体会。比如,你说一件事不靠谱,但是仅仅不靠谱有点贫乏,无以表达最真看法,你可以加上“十分”,十分不靠谱,这样听起来就够味儿了。

其实,我要说的意思是有倾向性的,完整的意思是“当你在赞美的时候,不要吝啬您的程度副词”。对于词性来言,我是比较倾向于褒义词的。我觉得,越多的褒义词会使我们的生活更加美好(注意这也是褒义词),所以在平时的言谈中,我不喜欢那些让人们产生不好情绪的词条,因为人们的情绪是互相渲染的。如果您觉得自身的渲染力比较强,那么请不要吝啬的您的赞美,让更多的赞美充斥着我们的生活,这是一种美好的享受。

NokiaN900设置无线链接

首页点击左上角网络区域

915222263.webp

进入网络设置

2062123496.webp

在网络设置中,可以选择wifi或者GPRS链接

2811909545.webp

点击GPRS的话,将使用运营商的数据业务,点击wifi节点名的话,会出现输入密码提示,输入密码连接完成

1151275348.webp

MySQL使用实例

https://learnsql.cn

误删除了vps上的phpmyadmin,不得已翻阅了半天mysql指南,以下是一些mysql使用实例

连接管理

链接数据库

mysql -h localhost -u root -p

退出数据库

mysql>quit;

数据库管理

查看数据库

mysql>show databases;

建立数据库

mysql>create database name;

备份(导出)数据库

mysqldump -u username -p database > backup_db.sql

还原(导入)数据库

mysql -u username -p database < backup_db.sql

用户管理

添加用户

mysql>grant all privileges on databasename.* 'username'@'localhost' identified by 'userpassword' with grant optiton;

删除用户

mysql>drop user username;

修改密码

mysql>set password for 'username'@'localhost' = password('userpassword');

一个创建数据库并添加专用用户的示例:

N900超频与刷9G-Home

什么是9G-home?

在linux中/home为用户主用目录,N900默认为/home分配的空间大概1.9G左右,而为了刷Android等第三方系统,我们需要更大的/home来存放文件,所以改变/home目录大小称之为XG-home(x有3/5/6/9等)

刷9G Home

下载9G-home刷机包:http://pan.baidu.com/share/link?shareid=1527292529&uk=1493434283

打开CMD,进入到flasher目录,输入如下命令(具体依照本机目录输入):

flasher-3.5.exe -F 9ghomeemmc.bin -f

出现提示Suitable USB device not found,waiting. 时,关闭手机,按住U键连接数据线,等待cmd提示开始写入时可放开U键,等待提示完成。 不要开机,切记!

接着重新刷Rom文件,即COMBIND那个文件。继续别开机!

N900超频

接下来刷入超频包,以下是几个不同等级的超频包

  • zImage-700mhz
  • zImage-750mhz
  • zImage-800mhz
  • zImage-850mhz-450dsp
  • zImage-900mhz
  • zImage-900mhz-500dsp
  • zImage-930mhz
  • zImage-930mhz-500dsp
  • zImage-950mhz
  • zImage-950mhz-500dsp

下载地址:http://pan.baidu.com/share/link?shareid=1567324549&uk=1493434283

这里以超750MHz为例

flasher-3.5.exe -k zImage-750mhz -f

等到提示完成后,开机即可。 给大家贴出前后两张对比图

n900_bf_oc.png

n900_af_oc.png

Nokia N900安装Android

感谢 NITDroid Project 的辛苦工作,使 N900 更加的神机!

使用Nitdroid刷入Android后,系统运行在/home目录,所以/home必须空间足够,N900默认的为 1.9G是不可以的,需要增大/home的容量,推荐参考N900超频和刷9G-home,将/home增大到9G

n900添加软件源

确保已添加以下软件源,一般前四个系统已经添加,没有的自己添加。

	名称:Nokia Applications
	网址:https://downloads.maemo.nokia.com/fremantle/ssu/apps/
	发布:./
	组件:空

	名称:Nokia System Software Updats
	网址:https://downloads.maemo.nokia.com/fremantle/ssu/mr0
	发布:./
	组件:空

	名称:Ovi
	网址:https://downloads.maemo.nokia.com/fremantle1.2/ovi/
	发布:./
	组件:空

	名称:maemo.org
	网址:http://repository.maemo.ory/extras/
	发布:frmantle−1.3
	组件:free non−free

	名称:Fremantle Extras−testing
	网址:http://repository.maemo.org/extras-testing/
	发布:fremantle
	组件:free non−free

	名称:Fremantle Extras−devel
	网址:http://repository.maemo.org/extras-devel/
	发布:fremantle
	组件:free non−free

n900安装android

下载以下两个文件

nitdroid官网http://downloads.nitdroid.com/e-yes/在这里,如发现更新可自行下载最新版本

将两个文件拷贝至USB连接模式下的根目录,即 /home/user/MyDocs/

建议通过SSH连接N900,在PC上使用Putty操作,要么就在手机上运行x-terminal

	# apt-get install nitdroid-installer
	# mkdir /and
	# mount /home /and
	# cd /and
	# tar xvf /home/user/MyDocs/N12_UMay.tar #注意这里已经是.tar格式
	# dpkg -i /home/user/MyDocs/nitdroid-kernel-2.6.28-07_7-rc7_armel.deb
	# reboot

重启后会出现多系统选择,1为Maemo,2为Nitdroid

Nokia N900 and SSH

N900采用的maemo是基于debian的linux系统,通过自带的application manager管理软件时,操作体验还有待改进,所以这里推荐通过ssh连接,使用cli来进行相应操作。

需要在手机端安装OpenSSH来开启SSH服务,在application manager的system目录下,找到openssh Client and Server安装,当然如果你不需要在手机端进行SSH登陆的话,那可以只安装server即可。

安装时会提示输入密码,这个就是以后连接手机SSH的服务密码。

安装完成后SSH server会默认启动,现在你可以通过wifi连接局域网,然后需要知道自己当前的IP(可以通过Tp-link后台查看,或者手机端安装Personal IP Address开显示),再推荐安装SSH Status and Swither,可以在手机的status显示SSH状态,并管理SSH server启动/停止。 n900 ssh status

然后推荐使用Putty进行链接,在CLI模式下管理软件,可以在http://maemo.org/上查看软件目录以及简介,通过apt-get install命令来安装,以下为一些apt-get使用简介

apt-get使用方法

    apt-get [选项] 命令
    apt-get [选项] install|remove pkg1 [pkg2 ...]
    apt-get [选项] source pkg1 [pkg2 ...]

命令:

    update - 更新软件列表
    upgrade - 升级软件
    install - 安装软件(pkg 是软件名)
    remove - 删除软件
    autoremove - 自动删除一些无效的软件
    purge - 删除软件并清理配置
    source - 下载软件源码
    build-dep - 配置软件源码的build-dependencies
    dist-upgrade - 升级系统
    clean - 清除建立的软件包列表
    autoclean - 同上
    check - 校验软件包是否有异常

选项:

删除不需要的iPhone语言文件

首先,需要iPhone已经越狱,并且安装了OpenSSH

脚本文件下载:https://unixetc.com/res/langpack2.2.zip,解压出脚本文件langpack2.2.sh

通过itools或者其他管理软件,将脚本文件复制到/var/mobile目录

通过ssh连接手机,进入/var/mobile目录开始操作 注意:此时请关闭手机的定时锁屏功能,以防意外终止操作而失败!!

#chmod 777 langpack2.2.sh   //为脚本添加执行权限
#./langpack2.2.sh  //运行脚本

开始搜索语言包文件,等待。。。。。

搜索到所有语言包后,开始提示是否删除。

根据提示,输入y或者n来确定所要删除的语言包,根据需要筛选。

所有选择完成后,会提示所有将要删除的语言包,再次确认删除与否(y或n),开始删除过程。。。

删除完成后,会提示所删除的语言包数量,并且提示是否删除该脚本文件

注意:进行完以上操作后,建议马上修改SSH密码,以防止感染蠕虫病毒!!

N900软件管理

Application Manager (软件管理)

打开application manager,首次会自动更新软件列表,然后可以在download目录中按分类安装软件。

通过apt-get在线安装

使用apt-get前提为已经安装了rootsh(可通过第一种方法安装),打开 x terminal

$sudo gainroot /*切换到root帐户*/

apt-get install pkg /*安装pkg*/ 
apt-get install pkg1,pkg2 /*安装多个软件*/ 
apt-get remove pkg /*卸载软件*/ 
apt-get remove –purge pkg /*卸载并清除配置文件*/ 
apt-get update /*更新软件源*/ 
apt-get upgrade /*更新软件*/ 
apt-get dist-upgrade /*更新系统*/ 
apt-get clean /*清除软件列表以节省空间*/

通过dpkg安装本地软件包(.deb)

可以通过数据线,先将下载的软件包拷贝到机子内,然后使用dpkg来安装

dpkg -i pkg.deb 

可以在这里http://repository.maemo.org/下载官方的.deb包进行安装

Nokia N900系统优化脚本

Nokia N900系统优化脚本,更加省电,操作更加流畅!

脚本下载地址 http://unixetc.com/res/spjqx.tar.gz

使用方法: 通过USB连接手机,将脚本传到磁盘根目录/home/user/MyDocs,以下操作可以使用Terminal或者SSH连接电脑进行(Root权限下)

cd /home/user/MyDocs
tar xzvf spjqx.tar.gz
mkdir /wp-content/local/sbin
cp /root/.profile /root/.profile.bak
cp spjqx/.profile_root /root/.profile
cp spjqx/.profile /home/user/
cp spjqx/speedpatch /etc/event.d/
cp spjqx/cgroup_clean /wp-content/local/sbin
chmod +rwx /wp-content/local/sbin/cgroup_clean
rm ./.profile_root
rm ./.profile
rm ./speedpatch
rm ./cgroup_clean

应用transition.ini文件:

  1. 使用theme-customizer
cd /home/user/MyDocs
cp spjqx/transitions.ini /opt/theme-customizer
  1. 使用系统默认主题
cd /home/user/MyDocs
cp spjqx/transitions.ini /wp-content/share/hildon-desktop/
  1. 删除优化脚本
cp /root/.profile.bak /root/.profile
rm /etc/event.d/speedpatch
rm /home/user/.profile
rm /wp-content/local/sbin/cgroup_clean

LNMP使用实例

安装LNMP

更新系统

yum check-update
yum update

安装Screen

yum install screen

开始安装Lnmp

screen -S lnmp
wget -c http://soft.vpser.net/lnmp/lnmp0.8.tar.gz //最新版请查阅lnmp官网
tar zxvf lnmp0.8.tar.gz
./lnmp0.8/centos.sh | tee lnmp.log //输出log文件,以备出错时查阅

接下来按照提示设定域名和MysQL密码,程序会自动下载相关程序,而后编译安装

安装PureFTP

./lnmp0.8/pureftp.sh

按提示输入MySQL和Ftp管理员密码,安装完成后可以通过http://vpsip/ftp/来登录管理ftp帐号

使用Lnmp

添加虚拟主机

    /root/vhost.sh

按照提示填入域名、目录、rewrite规则文件,如下所示:

   root@buyvm256:~#/root/vhost.sh
   =========================================================================
   Add Virtual Host for LNMP V0.9  ,  Written by Licess 
   =========================================================================
   LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux 
   This script is a tool to add virtual host for nginx 
   For more information please visit http://www.lnmp.org/
   
   =========================================================================
   Please input domain:  //添加域名
   (Default domain: www.lnmp.org):unixetc.com
   ===========================
   domain=unixetc.com
   ===========================
   Do you want to add more domain name? (y/n)  //添加更多域名
   y
   Type domainname,example(bbs.vpser.net forums.vpser.net luntan.vpser.net):
   www.unixetc.com
   ===========================
   domain list=www.unixetc.com
   ===========================
   Please input the directory for the domain:unixetc.com :  //网站目录
   (Default directory: /home/wwwroot/unixetc.com):
   ===========================
   Virtual Host Directory=/home/wwwroot/unixetc.com
   ===========================
   ===========================
   Allow Rewrite rule? (y/n)  //重写规则
   ===========================
   y
   Please input the rewrite of programme :
   wordpress,discuz,typecho,sablog,dabr rewrite was exist.
   (Default rewrite: other):wordpress  //选择重写规则
   ===========================
   You choose rewrite=wordpress
   ===========================
   ===========================
   Allow access_log? (y/n)  //是否记录log
   ===========================
   n
   
   Press any key to start create virtul host...

然后,登录http://vpsip/ftp/添加ftp帐号,http://vpsip/phpmyadmin/编辑数据库

诺基亚n900快捷键

一些常用的诺基亚n900快捷键

  1. Ctrl + Backspace:如果在一个程序里,用了后会回到多程序选择画面。
  2. Ctrl + C:复制
  3. Ctrl + V:粘贴
  4. Ctrl + X:剪贴
  5. Ctrl + A:全选
  6. Ctrl + 左箭头:回到第一个字或一句话的最前边
  7. Ctrl + 右箭头:回到最后一个字或一句话的最后边
  8. Ctrl + N:网页浏览器里打开一个新窗口
  9. Ctrl + R:网页浏览器里重读此页
  10. Ctrl + B:网页浏览器里打开一个书签
  11. Ctrl + D:网页浏览器里增加一个书签
  12. Ctrl + 回车:在电子邮件里发送一个邮件
  13. Ctrl + R:在电子邮件里回复一个邮件
  14. Ctrl + Shift(白色上箭头:管大写的)+P:屏幕截图功能(目录/home/user/MyDocs/.images/Screenshots/)
  15. Ctrl + Shift + O:可以启动网页浏览器竖屏功能
  16. Backspace:后退功能,回到前一个浏览页面

iPhone and SSH

iPhone安装OpenSSH

首先iPhone已经越狱并且安装了Cydia,具体教程可以Google

打开Cydia,管理-软件源,点击右上角编辑,然后点击左上角添加,增加178的软件源http://apt.178.com

添加后Cydia会自动更新软件包,然后在搜索里使用openssh为关键词进行搜索安装。

默认有root和mobile两个用户名,密码均为alpine

手机端SSH管理

在Cydia上搜索安装iSSH安装

修改SSH密码

建议修改原始密码

passwd root
passwd mobile

PC通过SSH连接iPhone

  1. iPhone接入wifi网络,在电脑端使用Putty或者WinSCP来链接iPhone

  2. USB连接PC,下载iTools,打开iTools点击手机管理栏的最底下高级功能,打开ssh通道。下来PC端可以通过ip:127.0.0.1来连接iPhone了。

ETC

UNIX的/etc目录

早期系统/bin是用来存放程序(可执行二进制文件)的,然后有了/dev用来存放设备文件,和/lib用来存放库文件。/usr目录很早也有了,首先用来存放用户数据,后来也放一些用户级的/bin/libman形式的用户手册也存放在此。

随着系统越来越庞大,一些无法进行归类的文件就放到了/etc目录,后来慢慢的大家将/etc目录用来存放一些系统级的配置文件,现代unix系统上,几乎所有的配置文件都在/etc目录,etcet cetera的缩写。

I assure you that the original contents of /etc were the “et cetera” that didn’t seem to fit elsewhere. Other variants might do their own etymologies differently.

Regards, Dennis

Dennis: Dennis Richie

小Tips

  • git通过ssh访问远程repo git cloe ssh://user@host:port/repo.git
  • 编辑完 /etc/default/grub 后,用grub-mkconfig -o /boot/grub/grub.cfg更新配置。
  • 从大到小显示目录内容 du -s * | sort -nr
  • 创建固定大小文件 dd if=/dev/zero of=100M.test bs=100M count=1
  • Notepad++删除包含关键字的行 .*delete.*
  • 强制复制所有内容 \cp -rf * target/
  • 将unixetc.txt中的AAA替换为BBB sed -i -e 's/AAA/BBB/g' unixetc.txt
  • 将当前目录下所有html文件内的AAA替换为BBB find ./ -name "*.html" -exec grep "AAA" {} \; -exec sed -i 's/AAA/BBB/g' {} \;
  • 删除unixetc.txt中的第3-17行内容 sed -i -e '3,17d' unixetc.txt
  • Ubuntu安装多媒体扩展 sudo apt install ubuntu-restricted-extras
  • Ubuntu卸载snapd sudo apt autoremove --purge snapd
  • GIT配置代理 git config --global http.proxy socks5://127.0.0.1:20170 socks5为代理协议,可配置http/https/socks5等。
  • pip设置国内源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • pip临时使用国内源自升级 python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
  • SCP下载远程文件 scp -P port user@ip:/path/file ./
  • git卡writing objects,可以将远端地址改为ssh方式 git remote set-url origin [email protected]:username/repo.git
  • git备份归档 git archive --format=zip --output=repobak_$(date +%Y-%m-%d).zip master
  • PowerShell激活Windows&Office irm https://get.activated.win | iex
  • 国内可用OSM tile地址https://tile.osm.org/{z}/{x}/{y}.png
  • 更换linux软件源 bash <(curl -sSL https://linuxmirrors.cn/main.sh)

ZeroOmega

https://github.com/zero-peak/ZeroOmega