分类 吹水 下的文章

通过YandexMail服务搭建免费域名邮箱

通过YandexMail服务搭建免费域名邮箱

前言:

某些情况下,我们需要使用自己的域名搭建邮箱。使用自建服务器的方式繁琐,稳定性较差。所以通常都是使用专业的公司提供的企业(组织)邮箱服务。考虑自己使用的情况,用户数与邮件数量较低,我们可以利用一些商业公司提供的免费体验型业务来做。在中国大陆,例如网易与腾讯公司均有提供企业邮箱业务,其免费版本用户数较低或有需要提交企业信息的情况。在此,我找到了YandexMail,它是俄罗斯著名的邮箱服务提供商,提供免费的企业邮局服务。其容量大,用户数多,支持绑定域名。可创建1000邮箱用户,每个用户10G的容量。支持 POP3、IMAP、SMTP协议。目前看来,注册时可以不用邮箱,不必须填写电话号码收短信。现在如此良心的企业不多了,不敢独享,遂有此帖。

读懂实践本文,你可能需要在技能树中点亮以下技能:

  • 域名相关基础知识;
  • 基本的Windows系统操作;
  • 会一点儿英语;

准备:

  • 运行Windows电脑一台(其他系统也可,但具体某些操作可能不同)
  • 域名一枚

注册账号:

1:使用浏览器打开注册地址:https://passport.yandex.com/registration

2:注册页如下图所示。
A1-b1.jpg

  • First name处填写名字,Surname处填写姓氏,Enter a login处填写登陆账号,Enter a password 和Confirm password处分别填写两次填入同样内容以设置密码,Mobile phone number处填写自己电话号码接收短信。输入手机号码后,点击Send code发送短信验证码,在Enter the code from the SMS处填入接收到的验证码点击Confirm完成验证并点击Register即可完成注册。默认需要填写电话号码接收短信验证,也可以点击“I don't have a telephone number”使用图片验证码的方式通过。

A1.jpg

  • 图片验证方式需设置密保问题,以保证在忘记密码时可通过密保问题找回密码。点击“I don't have a telephone number”即进入图片验证方式。Choose a security question处选择一个安全问题,在下面的Answer to the security question处填入答案。最后,在Enter the characters处填入图片中的验证码,并点击Register完成注册。若验证码无法辨识,可点击Show a different code更换验证码。

添加域名:

1:使用浏览器打开添加域名网址:https://connect.yandex.ru/pdd/

2:打开网址后会发现有些俄文,但这个并不会对我们造成太大困扰。检查浏览器页面右上角是否有显示登录名,若无登陆名,则点击右上角的登陆图标登陆。登陆后在页面中间的文本框中输入自己的域名,然后点击文本框后的按钮开始添加域名。
InkedA2_LI.jpg

3:新出现的YandexConnect页面中会提醒我们需要验证域名的所有权。如图所示:
InkedB1_LI.jpg

  • 它提供了四种方法,从左到右依次为:HTML文件验证,Meta tag验证,WHOIS验证,DNS记录验证。这里因为我域名使用了Cloudflare做域名解析,有对域名的控制权,所以直接使用最简单的DNS记录验证。

4:根据图示要求,我将在Cloudflare中操作添加一个TXT记录。

登陆Cloudflare,选择要操作的域名,点击DNS按钮进入DNS配置页面,点击“Add record”按钮准备添加新纪录。
C1.jpg

  • Type处选择TXT,Name处输入@,Content处输入Yandex提供的文本内容,最后点击Save完成添加。

5:类似,我们需要再添加一个MX记录,这样邮件服务才能正常运作。Type处填写MX,Name处填写@,Mail server处填写mx.yandex.net,Priority处填写10,最后点击Save保存。
C2.jpg

全部填写好后先等待几分钟(这样成功率高一些),回到验证页面点击Start verification开始验证。下图既为验证通过已经可以使用了:

B3.jpg

出现下图则表示验证通过了,但是MX记录还没生效,可以检查一下MX记录有没有填写错误,若无错误建议等待次日再来检查。

B2.jpg

6:假如我们的域名为XXX.COM,我们可能需要通过访问mail.XXX.COM进入邮箱Web页。我们可以通过添加一个CNAME记录来实现这个需求。Cloudflare中添加一条记录,Type选择CNAME,Name处填写mail,Target处填写domain.mail.yandex.net,最后点击Save保存即可。通过这个mail.XXX.COM登陆是有好处的,相对于通过mail.yandex.com登陆,通过前者登陆时用户名不需要填写@及其右边的域名,直接使用其登陆名就可以登陆。

7:在YandexConnect页面中点击“DNS management” ,参考页面中给出的DNS记录,将原有用于验证的TXT记录删除,并添加相关两个TXT记录。

添加账号:

  • 1:打开账号管理页面:https://connect.yandex.com/portal/admin,如出现登陆页面,则登陆账号。
  • 2:点击“Все сотрудники”(意为:所有员工),打开所有员工页面。点击“Add”,在出现的二级菜单中的条目,“Add a person”表示添加一个员工,“Пригласить сотрудников”意为邀请员工,“Create a department”意为创建一个部门。这里我们点击“Add a Person”即可打开添加新员工页面。
  • 3:页面中,Last name表示姓氏,Name表示名字,Middle name意为中间名,Job title意为职称,Language处为语言选择,Time zone处选择时区,Birth date意为生日,Gender意为性别,Login处填写为其分配的邮箱地址(只填写@左边部分),Password与One more time处输入两次密码。信息填写后,点击黄色的“Add”即完成一个账号的添加,这里我们可以依次添加需要的账号。
  • 4:添加账号后,点击账号,右侧对应显示其名片页,点击头像处可修改头像。点击右上角三点弹出对应账号操作项目,Edit表示编辑,Manage aliases表示管理别名,Change Password为修改密码,Block user 为封锁用户,Grant admin rights为设置管理员权限,Delete为删除账号。

登陆账号:

  • 1:我们可以在此页面登陆Web版本的邮箱:https://mail.yandex.com,需要注意的是,在这里我们需要使用完整邮箱地址登陆。
  • 2:在Enter your login, email or phone框中输入完整邮箱地址,点击“Log in”,按提示输入密码即可登陆Web版邮箱。
  • 3:或可参考添加域名6小节内容,实现自有域名登陆页面,可免输邮箱地址的域名部分。
  • 4:Yandex支持IMAP协议,我们可以使用支持IMAP协议的邮件应用收发邮件。

IMAP服务器:imap.yandex.com

SMTP服务器:smtp.yandex.com

使用完整邮箱地址作为用户名,与网页端相同的登陆密码登陆。

参考:

使用Cloudflare的Page Rules实现支持通配符的301跳转

使用Cloudflare的Page Rules实现支持通配符的301跳转

前言:

  有些时候,比如我们网站更换域名时,我们需要使发布于各处的原始域名链接指向新的域名,以避免其变成死链。这种情况我们就需要使用301永久重定向(301 - Permanent Redirect)使原始域名链接指向新的域名。301重定向处于HTTP协议层,所以我们可能需要架设一个Web服务器来做301重定向;或者一些具有中国特色的域名解析服务商会提供一种叫做“显性URL”的功能(虽然301重定向不属于域名解析),这种情况是借助它们的服务器做了一个301跳转,但是据了解,国内域名解析服务商可能会要求域名有备案。这里有一个简单的解决方法,我们可以使用Cloudflare的Page Rules实现这个需求。

操作:

  首先要把源域名的DNS解析服务转到Cloudflare下,这样就要求你的源域名注册商是支持修改源域名的解析服务提供商的。否则本文就不适用了。
  打开 CloudFlare 网站:https://www.cloudflare.com 。注册账号并登录,点击 Add Websites,输入你要跳转的源域名所属的顶级域名,点击 Begin Scan,CloudFlare 会扫描你源域名当前的 DNS 记录,扫描完成后点击 Continue Setup。
  在Cloudflare给出的 DNS 列表中检查是否包含源域名的所有 DNS 记录,有缺就手动补上。然后点击 Continue。选择 Free Website 项,点击 Continue。
  Cloudflare 提示需要修改源域名的域名服务器,在源域名注册商处修改域名服务器到Cloudflare提示的服务器。修改后点击 Continue,等待域名服务器的修改生效,一般可能需要一定的时间。在 Cloudflare 主页上显示域名对应的状态(Status)为Active即表示已经域名服务器的变更已经生效了。
  在 DNS 选项卡下查看 DNS 记录。将你要跳转的域名解析到一个有效的 IP,比如 8.8.8.8,Status处选择通过 Cloudflare 。
  此处举例我要将test.lexsion.ml重定向到test.lexsion.com/old/
  我们选择 Page Rules 选项卡,点击Create Page Rule ,在 If the URL matches: 内填入源域名,需后跟通配符 /* 使所有页面均重定向,像这样:test.lexsion.ml/*,然后点击 Add a Setting ,选择 Forwarding URL ,在 Select Status Code 中选择 301 - Permanent Redirect ,然后在下方的Enter destination URL中输入要重定向到的网址,比如我想跳转到 test.lexsion.com/old/ ,并希望能使用通配符将请求的目录和文件结构带过来。那我需要输入 https://test.lexsion.com/old/$1 ,然后点击 Save and Deploy ,等待一段时间让Cloudflare规则生效就完成了。

  这时我们输入 http://test.lexsion.ml/XXXX.html 就会跳转到 https://test.lexsion.com/old/XXXX.html 。当然本文所写链接仅为举栗子,实际没有跳转效果。

树莓派ZeroW搭建PHP环境运行BiliHelper实现BiliBliLive自动捡辣条

树莓派ZeroW搭建PHP环境运行BiliHelper实现BiliBliLive自动捡辣条

前言

树莓派(RaspberryPi)是一类卡片型计算机,其有一枚博通的ARM处理器,可以运行基于Debian的Raspbian系统。其具有低价的硬件,较低的功耗,小巧的外观。而树莓派ZeroW拥有更小的外观,具有2.4GWIFI功能,且价格不到百元。
BiliBili是是一个弹幕视频网站,后期发展了直播业务BiliBiliLive,目前其有设计某些礼物赠送时会触发全网通告抽奖任务,然后大家蜂拥而上,来到这个直播房间抽奖。奖品目前基本为辣条或粉丝亲密度,这个虽不涉及财物,但涉及粉丝勋章升级,其亦乃兵家必争之地(货?)。
既然这个抽奖对我们有用,那便可以加以利用。正常情况下,我们手动操作Web网页端或APP端效率低下,于是考虑可以使用一些辅助脚本等实现自动化领取。于是就出现某些网友分享实现方式,比如 metowolf的BilibiliHelper ,然后就有基于该项目的 lkeme的BiliHelper 。感谢以上两位大佬的付出。本文所讲述的就是使用这个脚本,我们将在树莓派ZeroW上配置一个PHP环境,然后运行这个脚本。

读懂实践本文,你可能需要在技能树中点亮以下技能:

  • 树莓派装配、启动操作;
  • 基本的Windows系统与Linux系统操作;

准备

  • 运行Windows电脑一台(其他系统也可,但具体某些操作可能不同)
  • 树莓派ZeroW一套(包含主板卡、8G或以上的MicroSD卡、电源)
  • MicroSD卡读卡器
  • SSH客户端,我用的是Putty

操作警告:
使用外部程序完成原本应手动完成操作的行为,可能导致您的BiliBili账号被封禁!本人及相关项目的作者等均不会对使用脚本产生的损失负责,亦不会对您学习本文的操作负责。继续操作,请自行承担风险!

步骤

  • 1.写入映像到MicroSD卡并启动
  • 2.Raspbian系统配置
  • 3.配置PHP环境
  • 4.配置脚本并运行脚本
  • 5.脚本任务的自动化配置

1.写入映像到MicroSD卡并启动

打开树莓派官网选择合适的方法下载合适的映像文件。因为本文实现的功能都是在命令行终端下完成的,不需要桌面系统,所以我选的是Raspbian Stretch Lite这个版本。
Torrent下载
ZIP
我们下载回来的是压缩包文件,解压后里面的img文件便是系统映像。

Etcher是一种图形化SD卡写入工具,适用于Mac OS,Linux和Windows,是RaspberryPi官网推荐的最简单的映像写入工具。Etcher还支持直接从zip文件中读取映像并开始写入,无需任何解压缩。用Etcher实现写入映像:
1.下载Etcher并安装它。
2.将SD卡插入SD卡读卡器并连接电脑。
3.打开Etcher并从磁盘驱动器中选择要写入SD卡的.img或.zip文件。
4.选择要写入映像的SD卡,注意确认不要选错,错误的选择会导致损坏您所选存储设备的资料
5.检查您的选择,然后点击“Flash!/”开始将数据写入SD卡,写入完成后软件会自动安全移除并告知您操作完成。
6.完成后便可以关闭软件,拔下存储卡了。
(其他操作系统与软件操作方法可以查阅官网此页下方的更多链接)

2.Raspbian系统配置

连接WIFI并开启SSH:

将SD卡插入SD卡读卡器并连接电脑。
在电脑显示的/boot下创建文件"wpa_supplicant.conf"。
编辑文件内容如下格式所示,SSID与PSK等对应选项请自行调整:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="我是WIFI名字"
psk="WIFI密码"
key_mgmt=WPA-PSK
priority=1
}

以上是WiFi 配置示例。具体含义:

ssid:网络的ssid
psk:网路的密码
priority:连接优先级,数字越大优先级越高(不可以是负数)
scan_ssid:连接隐藏WiFi时需要指定该值为1

然后在/boot下创建空文件“ssh”,注意全小写。

完成操作后安全移除硬件,将MicroSD卡插入树莓派中。

以上操作可具体参考以下链接:
无屏幕和键盘配置树莓派WiFi和SSH
Setting up a Raspberry Pi headless
Setting WiFi up via the command line

启动并连接树莓派

将树莓派通电,等待至树莓派指示灯不再快速闪烁(建议通电后先等待90秒)。
查找树莓派的IP地址,我在Windows命令提示符下尝试运行Ping树莓派默认主机名:

ping raspberrypi

从回显的信息中我得到了一个IP地址,观察此IP地址与我的电脑在一个子网内,判断这应该是正确的IP。
(获取IP的方式不只一种,你可以从路由器的管理页面获取,或者尝试在电脑或手机上安装局域网扫描软件来查找树莓派IP地址。可参考本文:IP Address

使用SSH客户端通过填入IP地址连接树莓派,我使用的Putty。该软件使用方法不再赘述,不会可参考本文

使用用户名“pi”,密码:raspberry登陆到树莓派。

修改软件源为国内源

由于一些“未知”的原因,我们连接官方的软件源时速度慢,经常断开,所以我们需要将其修改为国内镜像源。比如我改为清华源。需要编辑 /etc/apt/sources.list 文件,参考命令如下:

pi@raspberrypi ~ $ sudo nano /etc/apt/sources.list

用以下内容替代原文内容:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib

nano编辑器中按F3,提示编辑保存的文件名,直接保持原始文件名,Enter键确认。再按Ctrl+“X”键退出nano编辑器。
编辑镜像站后,请使用 sudo apt-get update 命令,更新软件源列表,同时检查您的编辑是否正确。
然后运行 sudo apt-get upgrade 命令将所有已经安装在系统内的包升级为最新版本。
具体参考:Raspbian 镜像使用帮助

或可使用中科大源,参考http://mirrors.ustc.edu.cn/help/raspbian.html

本地化设置

使用以下命令通过APT安装中文字体:

sudo apt-get install ttf-wqy-zenhei

安装过程中如果碰到(Y/n),请输入Y并回车。

运行以下命令打开Raspbian的软件配置工具:

sudo raspi-config

上下键移动光标到 Localisation Options 选项,按Enter键进入设置项,在 Change Locale 选项中可以调整系统语言和地区,我这就不修改了。选择 Change Timezone -> Asia ,通过按Pagedown键、Pageup键与方向键调整光标到 Shanghai 并使用Enter键确定,将时区设置为上海。按Tab键调整光标所处区域,通过方向键选择 Finish 退出配置工具。

3.配置PHP环境

我使用oneinstack提供的LNMP一键包来配置PHP环境。这需要漫长的时间,为保证不会因网络问题中断安装进程,我们使用Screen来操作。使用以下命令安装Screen。

sudo apt-get -y install screen

使用以下命令获取LNMP的安装包:

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz

下载完成后使用以下命令解压文件:

tar xzf oneinstack-full.tar.gz

使用 cd oneinstack 命令进入oneinstack目录.

使用以下命令创建一个名为oneinstack的会话窗口:

screen -S oneinstack

如果网路出现中断,可以执行命令screen -R oneinstack重新连接安装窗口。
运行 sudo ./install.sh 开始安装脚本,按照自己需求选择要安装的模块,比如我选择了安装Web server和PHP,具体过程如下:

Please input SSH port(Default: 22): 22

Do you want to enable iptables? [y/n]: y

Do you want to install Web server? [y/n]: y

Please select Nginx server:
        1. Install Nginx
        2. Install Tengine
        3. Install OpenResty
        4. Do not install
Please input a number:(Default 1 press Enter) 1

Please select Apache server:
        1. Install Apache-2.4
        2. Install Apache-2.2
        3. Do not install
Please input a number:(Default 3 press Enter) 3

Please select tomcat server:
        1. Install Tomcat-9
        2. Install Tomcat-8
        3. Install Tomcat-7
        4. Install Tomcat-6
        5. Do not install
Please input a number:(Default 5 press Enter) 5


Do you want to install Database? [y/n]: n

Do you want to install PHP? [y/n]: y

Please select a version of the PHP:
        1. Install php-5.3
        2. Install php-5.4
        3. Install php-5.5
        4. Install php-5.6
        5. Install php-7.0
        6. Install php-7.1
        7. Install php-7.2
        8. Install php-7.3
Please input a number:(Default 5 press Enter) 7

Do you want to install opcode cache of the PHP? [y/n]: n

Please select PHP extensions:
        0. Do not install
        1. Install zendguardloader(PHP<=5.6)
        2. Install ioncube
        3. Install sourceguardian(PHP<=7.2)
        4. Install imagick
        5. Install gmagick
        6. Install fileinfo
        7. Install imap
        8. Install ldap
        9. Install phalcon(PHP>=5.5)
        10. Install redis
        11. Install memcached
        12. Install memcache
        13. Install mongodb
        14. Install swoole
        15. Install xdebug(PHP>=5.5)
Please input numbers:(Default '4 10 11' press Enter) 0

Do you want to install Pure-FTPd? [y/n]: n

Do you want to install phpMyAdmin? [y/n]: n

Do you want to install redis-server? [y/n]: n

Do you want to install memcached-server? [y/n]: n

Do you want to install HHVM? [y/n]: n

然后就是漫长的等待了,安装成功后会提示成功,并询问是否重新启动,选择重新启动,待启动后重新连接终端。

使用以下命令进入LNMP包目录,运行以下命令添加组件,我们这里添加 PHP Composer :

pi@raspberrypi:~ $ cd oneinstack/

pi@raspberrypi:~/oneinstack $ sudo ./addons.sh

What Are You Doing?
        1. Install/Uninstall PHP Composer
        2. Install/Uninstall fail2ban
        3. Install/Uninstall ngx_lua_waf
        4. Install/Uninstall Python3.6
        q. Exit
Please input the correct option:1
    
Please select an action:
        1. install
        2. uninstall
Please input a number:(Default 1 press Enter) 1

PHP Composer installed successfully!

What Are You Doing?
    1. Install/Uninstall PHP Composer
    2. Install/Uninstall fail2ban
    3. Install/Uninstall ngx_lua_waf
    4. Install/Uninstall Python3.6
    q. Exit

Please input the correct option: q

关于这个脚本的具体使用,可以参考安装步骤-Oneinstack

4.配置脚本并运行脚本

因相关代码作者开源在GitHub,我们需要使用Git工具拉取项目文件。使用以下命令通过APT安装Git:

sudo apt-get install git

如已经安装APT会提示已经安装了,如果提示Y/n,输入Y回车即可。

回到用户目录,拉取项目文件到本地:

cd
git clone https://github.com/lkeme/BiliHelper.git

关于Git的使用可以参考此书:Pro Git
PDF文件直链:progit_v2.1.17

进入配置目录,从 user.conf.example 创建 user.conf,并使用nano编辑器修改配置:

cd BiliHelper/conf
cp user.conf.example user.conf
nano user.conf

在出现的界面中填入B站用户名和密码(用户名为注册邮箱或注册手机号),完成后F3保存,Ctrl+X退出。

使用 composer 工具进行安装:

composer install

若提示(Y/n)请输入y回车。

这时,我们可以返回上层目录中,运行index.php开始脚本了:

cd ..
php index.php

如果一切正常,脚本现在已经能够捡辣条了。只要树莓派不关机,电脑上的终端不关闭。
(脚本默认加载user.conf,如果需要多账户,可复制配置文件修改账号密码,使用php index.php example.conf指定配置文件运行)

这种情况如果我们关闭终端窗口,BiliHelper 就停止了,这样肯定是非常麻烦。我们可以借助Screen来实现后台运行。
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。其可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

首先Ctrl+C停止BiliHelper,使用以下命令创建一个名为Bili的的session:

screen -S Bili

在终端中使用 php index.php 运行BiliHelper,然后使用 Ctrl+a+d 组合键便可以分离这个Session,这时我们就可以安全的使用 exit 命令断开终端与树莓派的连接了,如果我们需要再次连接到这个Session,可以在终端中运行: screen -r Bili ,若Session处于分离状态,便会重新连接。

Screen 官方文档在此,关于Screen的使用可参考本文:linux screen 命令详解

5.脚本任务的自动化配置

systemd是Linux计算机操作系统之下的一套中央化系统及设置管理程序(init),包括有守护进程、程序库以及应用软件,由Lennart Poettering带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。
由此看来,使用systemd管理我们的脚本是一种比较迎合系统的方法。

在以下位置 /etc/systemd/system/ 创建文件 bilibili.service 文件内容如下:

                                                                                 
# /etc/systemd/system/bilibili.service

[Unit]
Description=BiliHelper Manager
Documentation=https://github.com/lkeme/BiliHelper
After=network.target

[Service]
ExecStart=/usr/local/php/bin/php /home/pi/BiliHelper/index.php
Restart=always

[Install]
WantedBy=multi-user.target

这个文件的创建可参考本文替换软件源小节内容,使用nano编辑器创建。

这样我们就创建了一个Service单元配置文件,可见其信息包含三大部分:Unit-主要包含一些基本描述信息与依赖关系;Service-主要描述这个SService运行的内容;Install-安装信息。以下详细介绍每行内容含义:

[Unit]
Description=BiliHelper Manager     //这个Unit的描述,写给人看的。
Documentation=https://github.com/lkeme/BiliHelper       //这个服务的文档,给人看的。
After=network.target   //表示network.target完成后,才会开始启动这个服务。

[Service]
ExecStart=/usr/local/php/bin/php /home/pi/BiliHelper/index.php   //指定服务启动的主要命令
Restart=always     //让服务在退出时能自动重启
#Restart值用于指定在什么情况下需要重启服务进程。常用的值有 no,on-success,on-failure,on-abnormal,on-abort 和 always。默认值为 no,即不会自动重启服务。这些不同的值分别表示了在哪些情况下,服务会被重新启动,参见下方表。

[Install]
WantedBy=multi-user.target  
# 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
# 当然,这还需要 systemctl enable 激活这个服务以后自动运行才会生效。

Restart配置为不同值时分别会在哪些情况下重启服务(表格解析异常):

服务退出原因noalwayson-failureon-abnormalon-abortno-success
正常退出
异常退出
启动/停止超时
被异常KILL

Install 段中的配置与 Unit 有几分相似,但是这部分的配置需要通过 systemctl enable 命令来激活,并且可以通过 systemctl disable 命令禁用。另外这部分配置的目标模块通常是特定启动级别的 .target 文件,用来使得服务在系统启动时自动运行。所以我们把服务添加上【当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。】这个配置信息后,使用 systemctl enable 激活后就可以实现让这个服务在开机时自动运行。
Unit文件的详细解析可参考此文:Systemd的Unit文件; systemctl增加服务详细介绍

创建bilibili.service文件后使用以下命令将其添加到开机自动启动:

sudo systemctl enable bilibili.service

使用以下命令立即启动:

sudo systemctl start  bilibili.service

使用以下命令输出运行状态:

systemctl status  bilibili.service

如果你学习到此,且一切正常,你应该已经成功开始了自动捡辣条之路。恭喜您距离封号又近了一步。

若您后期需要某些调整,以下命令可能有用:

使用以下命令可删除其开机自动启动:

sudo systemctl disable bilibili.service

使用以下命令可检查单元是否配置为自动启动:

sudo systemctl is-enabled bilibili.service

使用以下命令立即停止:

sudo systemctl stop bilibili.service

使用以下命令立即重启:

sudo systemctl restart  bilibili.service

使用以下命令重载配置:

sudo systemctl reload  bilibili.service

如果修改了bilibili.service文件,需使用以下命令重载systemd 系统配置:

systemctl daemon-reload

使用此命令显示系统状态:

systemctl status

使用以下命令输出激活的单元:

systemctl

使用以下命令输出运行失败的单元:

systemctl --failed

*具体命令参考:[systemd (简体中文)]
https://wiki.archlinux.org/index.php/systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E7%BC%96%E5%86%99%E5%8D%95%E5%85%83%E6%96%87%E4%BB%B6*


表格解析异常,提供本文Markdown原始文件:树莓派ZeroW搭建PHP环境运行BiliHelper实现BiliBliLive自动捡辣条.zip

参考:

Installing operating system images
https://www.raspberrypi.org/documentation/installation/installing-images/README.md

Setting up a Raspberry Pi headless
https://www.raspberrypi.org/documentation/configuration/wireless/headless.md

Setting WiFi up via the command line
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

无屏幕和键盘配置树莓派WiFi和SSH
http://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html

IP Address
https://www.raspberrypi.org/documentation/remote-access/ip-address.md

Raspbian 镜像使用帮助
https://mirror.tuna.tsinghua.edu.cn/help/raspbian/

安装步骤-Oneinstack
https://oneinstack.com/install/

Systemd的Unit文件; systemctl增加服务详细介绍
https://blog.csdn.net/shuaixingi/article/details/49641721

systemd (简体中文)
https://wiki.archlinux.org/index.php/systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E7%BC%96%E5%86%99%E5%8D%95%E5%85%83%E6%96%87%E4%BB%B6

LANG=C导致CentOS7中文乱码的处理方法

LANG=C导致CentOS7中文乱码的处理方法

前言

  配置新购的VPS过程中发现中文显示是乱码,因是国外服务商,怀疑系统没有中文字符导致,网上查资料发现确实如此,特将解决方法记录。  

处理过程

1:执行locale命令,查看系统当前的语言环境,看到如下回显信息:

LANG=C

由此判断当前语言环境是C,是ASCII码环境,我们要把语言环境设置成中文中国。

2:执行以下命令查看当前系统是否有中文语言包:

locale -a | grep zh_CN*

如果有显示以下内容,表示系统已经包含了中文语言包。

zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

若没有以上信息回显,可以运行以下命令安装中文语言包:

yum install kde-l10n-Chinese

3:运行以下命令使用vi打开locale.conf文件:

vi /etc/locale.conf

vi编辑器的使用方法:打开后按i键进入插入输入模式,使用上下左右键移动光标到需要修改的位置后面,按Backspace键删除前面要删除的内容。然后使用键盘输入新的内容。内容输入完毕后按ESC退出输入模式,使用键盘组合键输入":"符号,后跟字母"wq",按Enter保存文件并退出vi编辑器。

将打开的文件中LANG=C修改为:

LANG="zh_CN.UTF-8"

然后退出vi编辑器。

4:执行以下命令应用配置文件:

source /etc/locale.conf

5:再次执行locale命令查看当前语言环境:

[root@Test]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

回显信息如上所示,即表示语言环境修改成功。

记Google输入法在Google浏览器中无法正常显示候选词选择器

记Google输入法在Google浏览器中无法正常显示候选词选择器

  本人在最近一段时间突然发现Google输入法在Google浏览器中无法正常显示候选词选择器,尝试检查输入法设置,都处于正常状态,且其他软件中输入法使用正常。思来想去,发现最近有一次更新浏览器的记录,该问题是在浏览器更新之后出现的。检查浏览器与输入法版本,输入法版本为:2.7.25.128,浏览器当前版本是70.0.3538.67。尝试架好科学上网工具,打开Google浏览器,打开菜单选择:帮助-》关于。Google浏览器会检测到新版本,发稿日期当天,Google浏览器更新到70.0.3538.77,该问题解决。

  综上可判断这是一次Google浏览器与Google输入法不兼容导致的问题。

安装Ubuntu系统时硬盘分区方案

安装Ubuntu系统时硬盘分区方案

了解分区类型

1:/.分区

  根目录,一般用于存储系统文件的分区。

2:swap分区

  交换分区,也可表示一种文件系统,它是Linux系统的虚拟内存。
  在Windows系统下,虚拟内存是以存储在分区中的文件形式存在的,文件名为pagefile.sys;在Linux系统下,虚拟内存需要使用独立的分区,该分区有专用的swap文件系统。

3:/boot分区

  该分区包含了操作系统内核,和一些启动过程中的必要文件。一般情况没有必要单独分区。

    在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之 前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。
    其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个 Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘 分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。
    但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后 的分区中的Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。
    以上关于/boot分区介绍来自 ropenyuan 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/RopenYuan/article/details/44917271?utm_source=copy 

4:/home分区

  用户的home目录所在地,这个分区的大小设置取决于有多少用户需求。如果是多用户共同使用一台电脑的话,这个单独分区是完全有必要的,且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。
  有独立的分区挂载/home,即使遇到Ubuntu系统莫名挂掉,也可以直接重装系统,而不影响存储于/home下的用户文件。就像常有人说Windows系统不要把重要文件放系统盘一样。

5:/var;/tmp 分区

/var:系统日志记录分区。
/tmp:用于存放临时文件。
  这两个目录是用于存放日志和临时文件的。建议将其独立挂载到单独分区的教程一般面向服务器,这样有利于提高服务器性能,个人用户桌面级应用就没有这个必要了。

分区方案

1:只有一个主分区

  /.(主分区):主分区,只分这一个区,将所有空闲空间(free space)都分给主分区。

  不推荐使用这种方法,没有swap交换空间,当然物理内存够大也可以。

2:主分区 + swap分区

  Swap(虚拟内存):swap分区,如果物理内存等于或低于512M,大小设为物理内存两倍。物理内存大于512M情况一般设置为电脑内存大小,或者可以再加1、2G;

  /.(主分区):主分区,其他剩余空间都分给主分区。

  一般情况这种方案即可。

3:主分区 + home单独挂载 + swap

  /.(主分区):主分区,分配20G;

  Swap(虚拟内存):swap分区,如果物理内存等于或低于512M,大小设为物理内存两倍。物理内存大于512M情况一般设置为电脑内存大小,或者可以再加1、2G;

  /home(用户存储数据用):逻辑分区,存储用户数据,这方面类似于Windows下User文件夹,要尽可能大,剩余空间分配给这个分区。

  考虑上文提到的文件安全的情况,可以用这种方案,单独分区挂载/home。

异或的性质与应用

异或的性质与应用


  今天有朋友问我异或最重要的性质是什么,一时只记得以前有老师讲过,于是上网查了一下,并整理如下。

定义

  异或是一种基于二进制的位运算,用符号XOR或者 ^ 来表示。其运算法则是对运算符两侧的数的每一位二进制位,相同结果为0,不同结果为1。它与或运算的区别在于,当运算符两侧均为1时,或运算结果为1,而异或运算结果为0。
  异或运算又称之为 半加 ,半加的概念就是不进位的加法;数学上称异或为 按位模2加 ,按位模2加就是按位进行两数相加后除以2取余的运算。

  半加运算是不考虑进位的,也就是说它的进位会被舍弃。很显然它的运算法则如下:

0+1=0        0+1=1        1+0=1        1+1=0

  模2运算是一种二进制算法,与四则运算相同。模2运算包含模2加,模2减,模2乘,模2除四种运算。比如模2加,按其定义,1与0模2加,其结果就是1+0 = 1,然后1/2为0余1, 所以1与0模2运算结果为1;再如,1与1模2加,其结果1+1 = 10=2(D),2/2结果为1余0,所以1与1模2加运算结果为0。以此类推,按位模2加的运算结果与半加运算是相同的。

性质

  1、 交换律
  2、 结合律(即(A^B)^C=A^(B^C))
  3、 对于任何数X,都有X^X = 0,X^0 = X
  4、 自反性 A^B^B = A^0 = A

  异或运算常见于多项式除法,但它最重要的性质是自反性,即A^B^B = A。即对于既定的数A,用同样的运算因子(B)与其做两次异或运算后得到的结果仍是A本身。这是一个神奇的性质,利用这个性质可以解决一些实际问题。例如:几乎所有的C语言教科书都会向初学者提出,要交换两个变量的值,必须引入一个中间变量。但我们知道异或后,我们有了一种新的办法,这种办法可以不使用中间变量。设有A,B两个变量,存储的值分别为a,b,则以下三行表达式可互换他们的值:

A = A^B  // (A = a^b)
B = B^A  // ( B = b^ (a^b) ==  a^b^b == a)
A = A^B  // ( A = (a^b)^ a ==  b^a^a == b)

类似的,该运算还可应用于加密,数据传输,校验等许多领域。

应用举例

设1~1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它数只出现一次;设计算法,将这个数找出来,要求每个元素只能访问一次,不能使用辅助变量。

解法一:

  显然已经有人提出了一个比较精彩的解法,将所有数加起来,减去1+2+...+1000的和。这个算法已经足够完美了,相信出题者的标准答案也就是这个算法,唯一的问题是,如果数列过大,则可能会导致溢出。

解法二:

  异或就没有这个问题,并且性能更好。
  将所有的数全部异或,得到的结果与1^2^3^...^1000的结果进行异或,最终得到的结果就是重复的数。

  这个算法虽然看起来简单,但证明起来并不是一件容易的事情。这与异或运算的几个特性有关:
  首先是异或运算满足交换律、结合律。所以,1^2^...^n^...^n^...^1000,无论这两个n出现在什么位置,都可以转换成为1^2^...^1000^(n^n)的形式。
  其次,对于任何数x,都有x^x=0,x^0=x。

所以:
  1^2^...^n^...^n^...^1000 = 1^2^...^1000^(n^n)= 1^2^...^1000^0 = 1^2^...^1000(即序列中除了n的所有数的异或)。

  设,1^2^...^1000(该序列中不包含n)的结果为T
  则,1^2^...^1000(该序列中包含n)的结果就是T^n
  T^(T^n)=n
所以,将所有元素的值全部异或,得到的结果再与1^2^3^...^1000的结果进行异或,得到的结果就是重复数。

本文部分内容参考网络

在VMware Workstation虚拟机中安装Windows7

虚拟机系统安装
点击 编辑虚拟机设置>硬件>CD/DVD(SATA),选择使用ISO镜像文件,点击浏览,选定要使用的光盘镜像。点击确定关闭设置窗口。
(相关镜像可以在MSDN I tell You找到)
image1.jpg


点击开启此虚拟机,
image2.jpg



若提示此窗口,点击确定即可
image3.jpg


虚拟机开始加载windows预安装,到出现此页面,如图设置,点击下一步,
image4.jpg


点击 现在安装(I),稍后出现请阅读许可条款
image5.jpg


选择我接收许可条款,点击下一步;
image6.jpg

以下页面选择 自定义(高级)下一步;
image7.jpg


选择驱动器选项(高级)
image8.jpg


点选磁盘0未分配空间,点击新建>应用,弹出的窗口中选择确定。点击下一步开始Windows7系统的安装。
image9.jpg


等待。。该阶段结束后会自动重启
image10.jpg


image11.jpg



待出现以下页面时,设置用户名和计算机名。点击下一步;
image12.jpg


你可以在本页设置密码。本例留空。点击下一步;
image13.jpg


下一页输入激活码,此处留空。点击跳过
image14.jpg


下一页为安全设置页,自行设置即可,我选择以后询问我。
image15.jpg


下一步设置时间,直接点击继续即可。
设置网路,按需求,设置,我此处选择工作网路点击下一步,提示windows正在完成设置。
image16.jpg


稍后系统设置完毕,进入桌面。
image17.jpg


接下来点击虚拟机>安装VMware Tools
image18.jpg


在虚拟机里打开资源管理器,你会看到一个图标为VM的移动存储设备
双击开始安装,弹出用户账户控制窗口选择是,开始安装。安装过程一路点击下一步即可。最后完成安装。
image19.jpg


然后提示需要重新启动,点击是重新启动虚拟机。
image20.jpg


重启完成后点击查看>立即适应客户机。系统就会正常全屏显示。
image21.jpg


已经正常显示。
image22.PNG