2021-10-04
Libera Chat IRC 使用简明指南
使用手册:https://libera.chat/guides/
连接服务器 irc.libera.chat:6697
Default irc.libera.chat
Europe irc.eu.libera.chat
US & Canada irc.us.libera.chat
AU & NZ irc.au.libera.chat
East Asia irc.ea.libera.chat
IPv4 only irc.ipv4.libera.chat
IPv6 only irc.ipv6.libera.chat
直接输入用户名进行连接即可。
使用隐身衣(Cloaks) 直接连接到频道后,任何人都可以使用/whois
指令查看你的 IP 地址。如果不希望暴露 IP 地址,可以使用隐身衣。
在 NickServ 注册并验证(不要使用临时邮箱):
/msg NickServ REGISTER 密码 邮箱
/msg NickServ VERIFY REGISTER 用户名 验证串(会出现在邮箱里)
加入频道#libera-cloak
,发送!cloakme
指令,机器人会自动给你穿上隐身衣并把你 踢出 送出频道。
2021-09-30
自用装机软件清单
2021-09-15
优化网页社交展示
开放图谱协议(The Open Graph protocol) 使用开放图谱协议(The Open Graph protocol)可以有效地优化在社交网站等地展示的美观程度。
该协议是以 Meta 标签作依托的。
语法如下:
<meta property="og:属性" content="值" />
举栗:
<meta property="og:site_name" content="枫茶舍" />
<meta property="og:description" content="枫茶舍是筱枫的个人博客。" />
<meta property="og:locale" content="zh_CN" />
<meta property="og:image" content="/cover.jpg" />
<meta property="og:type" content="website" />
<meta property="og:title" content="使用 Meta 优化网页社交展示" />
更多属性,请参考:The Open Graph protocol 。
推特卡片(Twitter Cards) 举栗:
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://hsiaofeng.com/archives/123.html">
<meta name="twitter:title" content="使用 Meta 优化网页社交展示">
<meta name="twitter:description" content="使用 Meta 标签可以有效地优化在社交网站等地展示的美观程度。">
<meta name="twitter:image" content="https://hsiaofeng.com/archives/logo.png">
关于twitter:card
的类型,可以参考文章:顾小北的B2C博客 - 可能是最全的关于twitter card的指导吧 。
推特官方的文档:Docs | Twitter Developer Platform - Getting started with Cards
苹果链接 该配置是为 Apple 设备的 Safari 浏览器及内建应用准备的。
用下面的代码可以添加网站的 Logo 等。
<link rel="apple-touch-icon" href="touch-icon-iphone.png">
<link rel="apple-touch-icon" size="152x152" href="touch-icon-ipad.png">
<!-- Retina 显示屏 -->
<link rel="apple-touch-icon" size="180x180" href="touch-icon-iphone-retina.png">
<link rel="apple-touch-icon" size="167x167" href="touch-icon-ipad-retina.png">
更多请参考 Apple 官方文档:Configuring Web Applications 。
2021-09-10
JavaScript 的字符串单字符分割问题解决方案
在通常情况下,对于
let str = 'abcd';
有str.length = 4
。
但是,若
str = '👨👩👧👦👵🏻';
此时有str.length = 15
,仅仅 2 字符就占了 15 个常规字符位。这是由于单个 Emoji 等字符拥有两个及以上的常规字符位造成的。
此时用indexOf()
等函数无法确切定位到字符串中的字符位置。
为什么有 Emoji 字符占用多的这种问题?如果你感兴趣,可以拉到文章末尾,我先介绍解决方案。
方案一 使用工具处理 我们这里使用开源项目orling/grapheme-splitter 处理。
下载仓库内的 index.js ,引入网页等。
var splitter = new GraphemeSplitter();
var graphemes = splitter.splitGraphemes(string);
这样得到的graphemes
就是目标字符串(数组)。
graphemes = ['👨👩👧👦','👵🏻']
方案二 手工分组 str = ['👨👩👧👦','👵🏻'];
问题来源 这是由于复杂的 Emoji 符号由基础 Emoji 符号拼凑而成。
例如,符号“👨👩👧👦”由 15 字符组成,分别是:
👨 男人(Man)2 字符 零宽连字(Zero Width Joiner, ZWJ) 👩 女人(Woman)2 字符 零宽连字(Zero Width Joiner, ZWJ) 👧 女孩(Girl)2 字符 零宽连字(Zero Width Joiner, ZWJ) 👦 男孩(Boy)2 字符 在这个符号里,ZWJ 符号把四个基础的表情符号联系到一起,组成新的字符。
又比如符号“👵🏻”由 4 字符组成,分别是:
👵 老奶奶(Old Woman)2 字符 零宽连字(Zero Width Joiner, ZWJ) 🏻 浅肤色(Light Skin Tone)1 字符 所以,依靠charAt()
无法准确地逐字输出他们。
2021-09-08
Flarum 安装简明教程
Flarum 采用 Composer 安装和管理插件。
安装 Flarum 切换到网站安装目录,清空该目录后运行
composer create-project flarum/flarum
接着,修改flarum
文件夹及其内容的权限。
chmod -R 775 flarum
chown -R www:www flarum/ #换成合适的用户名
配置重写 URL。一般不用配置,如果接下来出错请按照官方 Doc 配置 :https://docs.flarum.org/install.html#url-rewriting 。
将网站根目录设置为 /path/to/yourweb/flarum/public/
。
访问网站,根据步骤完成安装。
安装简体中文语言包 将目录切入flarum
,运行
composer require flarum-lang/chinese-simplified
进入网站 Administration - LANGUAGES,切换为中文即可。
参考
2021-09-06
无管理员 sudo 权限使用 pip 安装 Python 包
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py --user
export PATH=~/.local/bin:$PATH
在安装时,如果仍出现权限不足可以尝试下面的命令:
pip install --user 包名
参考资料 diligentlee的博客:没有管理员权限的情况下使用pip安装python包
2021-09-02
【计算机基础知识】Windows 下路径的切换
改变目录(cd)命令 cd
命令用于切换目录。
本篇是在 Windows 环境下切换目录的命令简要指南。
一般来说,Windows 下用\
区分不同目录,但是现代的终端可以自己在\
与/
中切换。
切换盘符 在讲述cd
之前,我们先学习在 CMD 下切换盘符的操作。
打开终端(CMD 或 PowerShell),可以看到当前终端所操作的位置。
右开口尖括号>
左侧的即为目录位置。
当前所在位置,位于右开口尖括号的左侧
如果我们想要切换到 D 盘,在传统 CMD 下需要先输入盘符(例如 D:),按下回车切换。
切换盘符
可以看到,路径变为了D:\
。
如果你使用了 PowerShell,可以直接用 cd
命令时一并切换盘符。
cd 命令 假设有一文件夹code
位于 D 盘,位置是 D:\code\
。
文件夹位置示意图
现在,我们的终端位于D:\
,怎么切换到code
文件夹呢?
有两种办法,一是输入code
,二是输入./code
。两者是同等效力的。
切换到 code 文件夹
.
表示当前目录,即代替了右尖括号>
前面的D:\
。
..
表示父目录,即上级目录。输入
cd ..
即可切换到D:\code
的上级目录D:\
。
父目录表示
你不必一次切换一级,例如有一文件夹temp
位于 D:\code\cpp\temp
,你可以直接从code
文件夹切换到temp
文件夹。
多级切换
\
表示根目录。你目前位于 D 盘,则根目录在D:\
。同样地,C 盘的根目录是C:\
。
根目录
至此,简单的切换就结束了。这已经足够使用了。
2021-08-22
使用 Aria2 搭建离线下载服务器
安装 Aria 2 安装必要组件wget
、curl
和ca-certificates
。
apt install wget curl ca-certificates
切换到合适的目录,下载并运行脚本。这里使用 P3TERX/aria2.sh 一键安装脚本。请在使用前检视该脚本是否有恶意代码,以防后期因遭受攻击而恶意修改。
wget -N git.io/aria2.sh && chmod +x aria2.sh
./aria2.sh
安装好脚本后,记住给出的信息。
Aria2 简单配置信息:
IPv4 地址 : ▇▇▇▇▇▇▇▇▇▇▇▇▇
IPv6 地址 : ▇▇▇▇▇▇▇▇▇▇▇▇▇
RPC 端口 : 6800
RPC 密钥 : ▇▇▇▇▇▇▇▇▇▇▇▇▇
下载目录 : /home/▇▇▇▇/downloads
AriaNg 链接 : ▇▇▇▇▇▇▇▇▇▇▇▇▇
若忘掉该信息也无妨,记得找到aria2.sh
,运行并选择8. 查看 配置
即可。
使用客户端连接 下载 AriaNg-Native 。
如果你希望用网页客户端,可以考虑 AriaNg 。
装好后,找到左栏系统设置中的“AriaNg 配置”,选择窗口靠上位置的“RPC”,填入上述给出的信息。
如果提示 RPC 连接失败,可以考虑把协议换为 Http (若使用 https 连入客户端,则不可以选则这个)。
2021-08-15
PHPMailer 发件配置
使用例 使用 Composer 安装 PHPMailer,然后新建 PHP 文件,填入下方内容。
Correo 是西班牙语的“邮件”之意。本代码节录修改自参考资料#1,原作者可能是西班牙语使用者。
<?php
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$Correo = new PHPMailer();
$Correo->IsSMTP();
$Correo->CharSet = PHPMailer::CHARSET_UTF8;
$Correo->SMTPAuth = true;
$Correo->SMTPSecure = "tls";
$Correo->Host = "STMP.DOMAIN.EXP"; //服务器地址
$Correo->Port = 587; //服务器端口
$Correo->Username = "USER@DOMAIN.EXP"; //用户名
$Correo->Password = "PASSWORD"; //密码
$Correo->SetFrom('USER@DOMAIN.EXP'); //发件人
//$Correo->FromName = "From"; //发件人名
$Correo->AddAddress("RECV@FOXMAIL.COM");//收件人
$Correo->Subject = "服务器连通性测试";
$Correo->Body = "如果您能收到这封邮件,代表服务器邮件通讯正常。这是一封UTF-8格式的编码。";
$Correo->IsHTML (true);
if (!$Correo->Send()) echo "送信失败:$Correo->ErrorInfo";
else echo "送信完成 ~( ̄▽ ̄)~*";
?>
参考资料 正常送信模板:php - "SMTP Error: Could not authenticate" in PHPMailer - Stack Overflow UTF-8 解决乱码方案:PHPMailer/PHPMailerTest.php · PHPMailer/PHPMailer 更多 PHPMailer 参数:a-simple-example | PHPMailer/PHPMailer: The classic email sending library for PHP
2021-08-10
配置 WSL2 Ubuntu MariaDB 从 Windows 访问
装好 MariaDB 后,并不能直接从 Windows 主机访问,需要打开一定权限。我们需要修改配置文件以开放本地“远程”访问。
配置文件的目录是/etc/mysql/mariadb.conf.d/50-server.cnf
。
找到该文件Basic Settings
部分,修改bind-adress
的值为0.0.0.0
(下方代码中最后一行),以开放权限给本机上的其他设备。
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
#port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
修改完成重启服务即可。
sudo service mysql restart
2021-08-09
JWT 与 PHP 的简单使用
前期准备 使用 Composer 下载所需的准备材料。
cd ... #网站根目录
composer require firebase/php-jwt
在 PHP 文件中,需要写入下面的代码,注意目录路径,这里是相对于根目录。
require __DIR__ . '/vendor/autoload.php';
use Firebase\JWT\JWT;
令牌创建 我们使用 Cookie 储存 JWT。
我们需要创建一个自定义字符串作密钥,这里我们存在一个名为key-999d-45a2-a2b3.php
的文件中:
<?php
$key = 'cptbtptp233';
?>
核心部分代码:
// $audience 是用户名。
// $exp 是失效时间,这里设为 1 天。
require 'key-999d-45a2-a2b3.php';
$exp = time() + 24 * 60 * 60;
$payload = array(
"aud" => $audience,
"exp" => $exp
);
$jwt = JWT::encode($payload, $key);
setcookie("token",$jwt,$exp);
值得注意的是,firebase/php-jwt 支持多种不同的算法,在JWT::encode()
第三个参数省缺的情况下默认为 HS256 。可以在 https://jwt.io/#libraries-io 查看。若要使用其他算法,例如 HS512 ,需要上述代码将倒数第二行更为:
$jwt = JWT::encode($payload, $key, 'HS512');
令牌校验 创建好后我们就可以根据令牌校验。
require 'key-999d-45a2-a2b3.php';
if(isset($_COOKIE['token'])){
//如果 COOKIE 存在
$jwt = $_COOKIE['token'];
try{
$decoded = JWT::decode($jwt, $key, array('HS256'));
$uid = $decoded -> aud; //用户ID
$exp = $decoded -> exp; //JWT有效期
if(time() < $exp) $ifLogin = true; //JWT也没过期,通过校验
} catch(Exception $e){
//如果JWT被篡改
echo '你这 JWT 有问题啊:'.$e->getMessage();
}
}
至此完成。
2021-08-08
Ubuntu 命令备忘
查看服务器服务运行状态
service --status-all