欢迎看看我的图床

Primer: When You Have Too Much to Do


You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more.
Read more ⟶

Js建造者模式


1. 建造者模式

建造者模式:将一个复杂对象的构建和它的表示分离, 使得同样的构建和创建出不同的表示。当我们构建的对象内部结构非常复杂时,利用建造者模式将内部各模块分开创建就非常合适。

1.1 为什么要用建造者模式?

  1. 客户端不必知道产品内部组成的细节, 将产品本身和产品的创建过程解耦,使得相同的创建过程可以创建标题的重排对象。
  2. 每一个建造者都相对独立,而已其他的具体建造者无关,因此可以很方便的替换具体建造者或增加新的具体的建造者。
  3. 可以更加精细的控制重排的创建过程。将复杂重排的创建步骤分解在不同的方法中,使得创建过程更加精细,也更方便使用程序控制创建过程。

1.2 起步

建造者模式看名字我们首先想到的就是造房子。建造者模式就像是施工团队,包工头和客户沟通建房的具体建房需细节,然后在自己团队内部发布任务,将复杂的建房工程分成了若干小组,各小组分工合作最终得到需求的房子。

假设我们需要建设一套6人住,150平方m²,中式风格的房子,此时我们使用建造者模式就非常合适。

 let Builder = (function () {
     // 决定房子入住人数
     function rooms(peopleCount) {
         if(peopleCount <= 0) throw new Error("入住人数异常");
         this.peopleCount = peopleCount < 3 ? 2 : peopleCount 
     }
     //决定房子面积
     function setArea(area){
          if(area <= 20) throw Error("房子面积过小")
         this.area = area
     }
     //决定房子风格
     function style(style){
         this.style = style
     }
     return class{
         constructor(PeopleCount,area,Style){
             // 住几人,预算多少(万),风格
             rooms.call(this, PeopleCount)
             setArea.call(this, area);
             style.call(this, Style)
         }
     }
 })()
 let bighouse = new Builder(3,100,'中式'),
	smallHouse = new Builder(3,50,'欧式'); 

关键点:

let Builder = (function () {
    //表示部分可以独立的进行维护和修改,而不受构建部分的约束
    function rooms(){}
    function setArea(){}
    function style(){}
    //构建部分
    return class {
    }
})();

通过上面的例子我们也对建造者模式的概念用来一定的了解,Jquery内部就用到了建造者模式,jQuery的美元标记为动态构建新的jQuery(和DOM)对象提供了大量可以让我们这样做的不同的方法,可以通过给一个元素传入完整的标签,也可以是部分标签还有内容,或者使用jQuery来进行构造。

Read more ⟶

Hexo博客Github自定义域名解析


1、代码存储库设置

代码提交后,点击仓库的setting,进入存储库相关设置。General这里首先设置好存储库的名称和代码分支

Pages这里设置博客代码的分支和构建文件夹

2、DNS解析

在博客代码根目录下新建CNMAE文件并推送到github存储库,文件名大写无文件后缀,内容格式如下:

<custom>.github.io //<custom>写实际仓库命名,前面教程图示名称就是test.github.io

在对应云服务商设置自定义域的 DNS 记录

场景DNS 记录类型DNS 记录名称DNS 记录值
Apex 域 (example.comA@185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
Apex 域 (example.comAAAA@2606:50c0:8000::153 2606:50c0:8001::153 2606:50c0:8002::153 2606:50c0:8003::153
Apex 域 (example.comALIASANAME@USERNAME.github.ioORGANIZATION.github.io
子域 (www.example.comblog.example.comCNAMESUBDOMAINUSERNAME.github.ioORGANIZATION.github.io

图示为腾讯云DNS解析案例:

tx-dns

这里起的二级域名”test“,比如你的顶级域名是”example.com“,那么此图的自定义域名即为”test.example.com“。耐心等待几分钟,DNS解析需要时间。成功即可通过自定义域名访问部署于github的hexo博客。

3、Vercel托管加速

TypeNameValue
CNAMEtest(这里写实际的二级域名)cname.vercel-dns.com.
Read more ⟶

腾讯轻量云部署HexoBlog


💻准备

  • 本地建好的博客(默认Node环境配置完成)
  • GIT
  • 基础环境搭建完成(宝塔面板)的腾讯云(轻量)服务器
  • 域名(非必须)

🌐参考链接

[宝塔Linux面板安装教程](https://www.bt.cn/bbs/thread-19376-1-1.html)

⚙️步骤

本地生成ssh秘钥

git config --global user.name "GitHub用户名"
git config --global user.email "GitHub的邮箱"
ssh-keygen -t rsa -C "GitHub的邮箱"

如有可跳过,获取公匙命令如下

cat ~/.ssh/id_rsa.pub

连接服务器终端

宝塔面板用户可直接左侧导航栏终端登录(如图)

切换到 root 账号
sudo su root

⚠️宝塔默认是root账号

Read more ⟶

How I Learned to Stop Procrastinating, & Love Letting Go


The art of letting go.
Read more ⟶