Total Pageviews

Monday, 29 June 2026

搭建基于nextjs的静态博客程序ddm

首先fork此项目https://github.com/ddadaal/ddadaal.me ,我fork后,得到的项目地址是https://github.com/brightmann/ddm

访问 https://github.com/brightmann/ddm/tree/master/contents ,在此处新建源帖(即add file),我新建了源帖20260629-fh/index.md,内容为:

---
id: fh
date: 2026-06-29 14:07
title: 战马
lang: cn
tags:
  - misc1
  - misc2
  - misc3
---

此处写正文或html codes.

( 详见https://github.com/brightmann/ddm/blob/master/contents/20260629-fh/index.md?plain=1) 

注意:  index.md所在的目录的名称必须是20260629-fh这样的格式,不能是fh这样的格式,否则发帖会失败。

然后,访问vercel.com/new ,导入项目https://github.com/brightmann/ddm ,

  Build Command栏填入pnpm build

 Install Command栏填入pnpm install

然后点击底部的deploy按钮,等待部署完成。部署完成后,我得到网址https://ddm-sandy.vercel.app/  

项目地址:

 https://github.com/ddadaal/ddadaal.me 

 https://github.com/brightmann/ddm

演示博客: 

 https://ddm-sandy.vercel.app/  

 https://ddm-sandy.vercel.app/articles 支持分页

 https://ddm-sandy.vercel.app/articles/fh 能显示视频

( https://github.com/brightmann/ddm/new/master?filename=.github%2Fworkflows%2Fdeno.yml&workflow_template=ci%2Fdeno ,这个还没细究)


Linux上, 添加用户/ 删除用户的详细命令


    添加用户

useradd– d / home / sam - m sam

此命令创建了一个用户 sam,其中 -d 和 -m 选项用来为登录名 sam 产生一个主目录/home/sam ( /home 为默认的用户主目录所在的父目录,所有用户的目录都应该在此目录下)。-m 命令保证了在目录不存在时自动创建目录

    删除用户

userdel - r sam

此命令删除用户 sam 在系统文件中(主要是 /etc/passwd , /etc/shadow , /etc/group 等)的记录,同时删除用户的主目录。

关于四者的区别,一级比一级重要



①/bin ②/sbin ③/usr/bin ④/usr/sbin

/bin 一般存放对于用户和系统来说“必须”的程序(二进制文件)。

/sbin 一般存放用于系统管理的“必需”的程序(二进制文件),根用户使用。

/usr/bin 一般存放的只是对用户和系统来说“不是必需的”程序(二进制文件)。

/usr/sbin 一般存放用于系统管理的系统管理的不是必需的程序(二进制文件)。

关于 /lib 和 /usr/lib 两者的关系

/lib 和 /usr/lib 的区别类似 /bin , /sbin 与 /usr/bin , /usr/sbin 。

/lib 一般存放对于用户和系统来说“必须”的库


/usr/lib 一般存放的只是对用户和系统来说“不是必需的”库

了解SVG格式


什么是 SVG ?

它是一种图像文件格式,英文全称 Scalable Vector Graphics,意为可缩放的矢量图形。

它是基于 XML(Extensible Markup Language),由 World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的 Web 图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开 SVG 图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到 HTML 中通过浏览器来观看。

主流浏览器均支持 SVG。加载慢是 SVG 的一个缺点。但是 SVG 也有自身的优点,比如它实现了 DOM 接口(比 Canvas 方便),不需要安装第三方插件就可以在浏览器中使用(比 Flash 方便)。
为什么要用 SVG ?

相比于其他图像格式,SVG 格式的优势在于:

    SVG 可被非常多的工具读取和修改(比如记事本)

    SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。

    SVG 是可伸缩的

    SVG 图像可在任何的分辨率下被高质量地打印

    SVG 可在图像质量不下降的情况下被放大

    SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)

    SVG 可以与 JavaScript 技术一起运行

    SVG 是开放的标准

    SVG 文件是纯粹的 XML

SVG 与 Flash

与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。
基础
一个简单的例子

<svg
  version="1.1"
  baseProfile="full"
  width="300"
  height="200"
  mlns="http://www.w3.org/2000/svg"
>
  <rect width="100%" height="100%" fill="red" />
  <circle cx="150" cy="100" r="80" fill="green" />
  <text x="150" y="125" font-size="60" text-anchor="middle" fill="white">
    SVG
  </text>
</svg>


该图绘制流程包括以下几步:

    从 SVG 根元素开始:
        应舍弃来自 (X)HTML 的 doctype 声明,因为基于 SVG 的 DTD 验证导致的问题比它能解决的问题更多。
        version和baseProfile属性是必不可少的,供其它类型的验证方式确定 SVG 版本。
        作为 XML 的一种方言,SVG 必须正确的绑定命名空间 (在 xmlns 属性中绑定)。
    绘制一个完全覆盖图像区域的矩形 ,把背景颜色设为红色。
    一个半径 80px 的绿色圆圈绘制在红色矩形的正中央 (向右偏移 150px,向下偏移 100px)。
    绘制文字“SVG”。文字被填充为白色, 通过设置居中的锚点把文字定位到期望的位置:在这种情况下,中心点应该对应于绿色圆圈的中点。还可以精细调整字体大小和垂直位置,确保最后的样式是美观的。

    想了解更多?请参考文末详细教程

现实中的使用

    直接嵌入 SVG 代码在网页中使用:

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <circle
        cx="100"
        cy="50"
        r="40"
        stroke="black"
        stroke-width="2"
        fill="red"
      />
    </svg>

    可以像上述这样,直接将 svg 标签嵌入到 html 当中引入 svg 图片

        其他用 embed iframe object 标签引的入方法此处不作介绍,有兴趣自行搜索相关用法。

    用 a 标签链接到 SVG 文件

    <a href="circle1.svg">Click here to view SVG file</a>

    SVG 也可以作为本地的一种图片格式文件

    如,新建一个 demo.svg 文件,然后写入以下内容

    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <circle cx="100" cy="50" r="40" stroke="black"
      stroke-width="2" fill="red" />
    </svg>

    他在资源管理器中默认的显示图标像一个链接.

    双击这个文件即可调用浏览器来打开并渲染出该图。
    SVG 在网页中还可充当图标来使用

    SVG 在网页设计中的一种重要的用途就是充当图标

    可以作为图片用 css 直接引入并使用,如下示例

    #email {
      background: url(./img/email.svg) 12px 7px no-repeat;
      background-size: 20px 20px;
      // 在这设置图标大小,不设置就是svg默认的宽高
    }

    制作高质量的图片

    另外,由于其可无限缩放而保持原有质量的特点,SVG 图还常常用作网页的图片素材,以确保在网站被异常缩放后图片仍能保持高质量。

更多

SVG 是一个庞大的规范,想了解更多的绘画方法请访问-

https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial

 

package.json 文件详解

 此篇文章适合于对 JavaScript nodejs npm json 有一定了解,但不清楚 package.json 文件具体作用及其含义的读者
什么是 package.json 文件?

nodejs 的项目遵循模块化的架构,package.json 文件是用来描述项目的相关信息,便于 npm、yarn 等包管理工具对项目进行操作。简单的来理解,就是每个项目都可以被叫做“包”,package.json 则是用来描述包信息的一个文件,一般存在于项目的根目录下。
直接上个实例 :

package.json 文件本身是 json 文件,当然也遵循 json的语法.

    JSON语法参考链接 => https://www.runoob.com/json/json-syntax.html

// package.json 文件内容

{
  "name": "demo", // 包名,必须,字母小写,无空格,下划线、横线可选
  "version": "1.1.0", // 版本号,必须
  "author": "Viki", // 作者信息
  "description": "source code repo", // 包描述
  "main": "main.js", // 入口文件
  "license": "MIT", // 遵循的协议
  "scripts": {
    // 自定义脚本
    "start": "react-native run-android" // 脚本示例
    // ... 其他自定义脚本
  },
  "dependencies": {
    // 生产依赖(项目正式上线时所依赖的包)
    "react": "^16.13.1" // 表示兼容 react 的16.13.1版本
    // ... 其他生产依赖
  },
  "repository": {
    // 项目仓库信息
    "type": "git",
    "url": "git@github.com:abc/xyz.git"
  },
  "devDependencies": {
    // 开发依赖(开发和测试环境中依赖的包)
    "@babel/core": "~7.0.0"
    // ... 其他开发依赖
  }
  // ... 以上是常见的描述信息,还可在此添加其他自定义的描述信息
}

它有什么用?

它配置和描述了该如何与项目进行交互、运行。包管理器(npm、yarn等)也可以通过它来识别项目并分析出如何处理项目的依赖关系。当你执行npm instal或者yarn来安装依赖的时候,就是通过这个文件来识别。此外,如果你的项目需要发布到 npm 的 registry 上供别人使用,也需要通过这个文件来提供项目的信息。

    在 npm 5.x 及以上还会生成一个 package-lock.json 文件,它用来描述更加确切的版本信息。package.json 文件有缺陷,只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,每次 npm install 拉取的是该大版本下的最新的版本,为了稳定性考虑,我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以 package-lock.json 文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。

自定义字段 

package.json 文件中的字段不是固定的。如果你要发布的话,那就只有 name 和 version 是必须的,其他可选,且可以根据需要自定义添加。需要的时候可被其他文件引用。如果不需要发布,则任何都是可选的,且建议将private字段设置为true并移除main入口,这样可以防止代码意外发布(示例在下方,加减分别代表增删)。

  {
+   "private": true,
-   "main": "index.js",
  }

其他字段参考: keywords、contributors、homepage、preferGlobal、style、bin、bugs、config、browser、engines、man、peerDependencies
脚本(scripts)字段 

这个字段约定了什么时候用npm start,npm run dev应该执行什么,或者说它告诉了程序员npm start运行的是什么命令。使用的时候可根据需要, 在此自定义。

例如:若一个项目的 package.json如下

{
  "name": "demo",
  "version": "1.0.0",
  "scripts": {
    "start": "cd app && react-native run-android"
  }
}

则在项目路径下运行npm run start或者yarn start时,等效于执行cd app进入 app 目录,然后执行react-native run-android


版本描述方式 

常见的版本描述方式有以下几种
具体的版本     比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
~ + 版本     比如~1.2.2,表示安装 1.2.x 的最新版本(不低于 1.2.2),但是不安装 1.3.x,也就是说安装时不改变大版本号和次要版本号。
^ + 版本     比如ˆ1.2.2,表示安装 1.x.x 的最新版本(不低于 1.2.2),但是不安装 2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为 0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
latest     安装最新版本。
如何生成?

    手动写:
新建一个文本文件并修改文件名和后缀名为package.json

    自动生成:
通过npm init新建,前提是已经配置好了 npm 的环境.


想了解更多?
强烈推荐阅读 => package.json文件:

https://javascript.ruanyifeng.com/nodejs/packagejson.html

参考文章

 
  • package.json - npm

  • package.json 详解 - 拉勾

  • package.json 详解 - 掘金

  •  



    webpack4.x 基础

    本篇文章简要地讲解了 webpack 4.x 的入门知识,适合想了解、学习 webpack 的小白

    引文

    webpack说白了就是一个打包工具,可以预先配置好打包设定,并约定好适用于各种不同文件类型的loader,以及可能用到的插件 📥 等,然后其他的事情就交给webpack,它会将你项目中的所有 js 文件、样式 文件、图片或字体资源等等打包在一起。webpack让开发者的代码更易编写、维护的同时,也提高了生产效率。
    安装

        在开始之前,请确保安装了 Node.js 的较新版本

        全局安装

        即:webpack 命令已加入环境变量,全局下可用

        npm install -g webpack
        npm install -g webpack-cli


        本地安装

        即:仅在当前项目配置 webpack 的开发环境

        npm install --save-dev webpack
        npm install --save-dev webpack-cli

    配置 npm 脚本

    编辑项目根目录下的package.json文件。

        package.json 是 nodejs 项目的描述文件,详见npm 文档-https://docs.npmjs.com/files/package.json

    // package.json
    "scripts": {
      "webpack": "webpack --config webpack.config.js"
    }

    Webpack的配置

    可在项目根目录下建一个 webpack.config.js 文件作为 webpack 的配置文件,webpack在执行的时候会读取这个配置文件并将其作为打包的配置进行打包。 

    关于 Python



    Python 是一种面向对象、解释型、动态数据类型的高级程序设计脚本语言,同时也是一种功能强大而完善的通用型语言。

    它因为具有语法简单、易于学习、可读性强、功能强大(模块众多)、可扩展性强、开源免费、跨平台等优势而被很多程序员青睐。

    Python 简单的语法使得其代码量相对较少,能够让程序员专注于业务逻辑而不是纠结于编程语言语法本身。

    但是,Nothing is perfect ,Python 也是这样

    作为一门解释性语言,运行慢自然是 Python 的主要缺点之一,但目前计算机硬件的性能、计算速度在不断增强,这点往往不会带来大问题,大多数情况,用户往往感觉不到差异。

    其他的一些不足:不具备完整的语法检查、暴露源代码(解释性语言通病)、语法要求强制缩进等
    Python 用途广泛

    Web 开发

    如豆瓣、知乎、果壳网、Google、NASA、YouTube、Facebook 等都将 Python 作为主要开发语言

    服务端

    App 与的游戏后台等

    网络爬虫

    快速抓取互联网数据

    人工智能

    相较于其他编程语言,Python 适合人工智能领域,得益于其很多适合用来做人工智能的库,如 numpy、pybrain 和 matplotlib 等,但是计算密集型以及调用硬件底层接口的核心算法还是得靠 C/C++ 来实现

    数据分析

    在数据分析处理方面,Python 有很完备的生态环境。涉及到的分布式计算、数据可视化、数据库操作等,Python 中都有成熟的模块可以选择完成其功能。

    其他的用途

    自动化运维、系统编程、图形处理、数学处理、文本处理、数据库编程、网络编程、Web 编程、多媒体应用、黑客编程……

    Python2 与 Python3 的区别

    Python3 不兼容 Python2,为了尽可能兼容早期用 Python2 写的
    Python 程序,官方发布了 Python2.6 作为一个过度版本,其往后的版本完全支持 Python2 的同时兼容了部分 Python3 的语法。

        Python2.x 与 3.x 版本的区别 - https://www.runoob.com/python/python-2x-3x.html