在win10环境下安装RabbitMQ的步骤第一步：下载并安装erlang原因：RabbitMQ服务端代码是使用并发式语言Erlang编写的，安装Rabbit MQ的前提是安装Erlang。下载地址：http://www.erlang.org/downloads由于我的电脑是64位系统，所以我选择是的64位下载。第二步、下载完成后开始安装点击install开始安装，完成后点击close第三步、配置环境变量ERLANG_HOME变量名：ERLANG_HOME变量值就是刚才erlang的安装地址，点击确定。然后双击系统变量path，点击“新建”，将%ERLANG_HOME%\bin加入到path中。最后windows键+R键，输入cmd，再输入erl，看到版本号就说明erlang安装成功了。第四步、下载安装rabbitMq下载地址：http://www.rabbitmq.com/download.html下载完成后双击安装RabbitMQ安装好后接下来安装RabbitMQ-Plugins。打开命令行cd，输入RabbitMQ的sbin目录然后在后面输入rabbitmq-plugins enable rabbitmq_management命令进行安装出现上图代表安装成功，打开sbin目录，双击rabbitmq-server.bat访问 http://localhost:15672默认用户名和密码都是guest登陆即可。原文出处：https://www.cnblogs.com/count-mjb/p/10939117.html
{mtitle title="目录信息"/}啥是CSS选择器通用选择器 - *元素选择器 - element类名选择器 - .classID 选择器 - #id多选择器 - .class.class-2逗号组合 - .class, .class-2后代选择器 - .class .class-2相邻兄弟选择器 - .class + .class-2子选择器 - .class > .class-2兄弟选择器 - .class ~ .class-2脑残猫头鹰选择器 - + 属性选择器 - []链接伪类选择器input相关第N个孩子指定类型的第N个孩子伪类选择器伪元素0. 啥是CSS选择器CSS选择器 是用于选择 HTML 元素并为其应用样式的一种机制。选择器允许我们根据元素的 类型 、 属性 、 位置 以及其他特征来选择要样式化的元素，从而实现对网页样式的精确控制。以下是一些常见的 CSS 选择器及其用途：「元素选择器（Element Selector）」 ：选择指定类型的 HTML 元素。例如， p 选择所有段落元素。「类选择器（Class Selector）」 ：选择具有指定类名的元素。以点号（ . ）开头，后跟类名。例如， .button 选择所有类名为 button 的元素。「ID 选择器（ID Selector）」 ：选择具有指定 ID 的元素。以井号（ # ）开头，后跟 ID 名称。例如， #header 选择 ID 为 header 的元素。「后代选择器（Descendant Selector）」 ：选择指定元素的后代元素。使用 空格 分隔两个选择器，其中第一个选择器表示 父元素第二个选择器表示 后代元素例如， div p 选择所有 元素内部的所有段落 元素。「相邻兄弟选择器（Adjacent Sibling Selector）」 ：选择紧接在另一个元素后面的元素。使用加号（ + ）符号连接两个选择器，其中第一个选择器表示 第一个元素第二个选择器表示其 紧邻的兄弟元素例如， h2 + p 选择所有紧接在 元素后面的 元素。「通用选择器（Universal Selector）」 ：选择页面中的 「所有元素」 。使用星号（ * ）表示。例如， * 选择页面中的所有元素。除了这些基本的选择器外，CSS 还提供了许多其他类型的选择器，如 伪类选择器 （例如 :hover 、 :active ）、 伪元素选择器 （例如 ::before 、 ::after ）、 属性选择器 （例如 [type="text"] ）等，可以根据具体的需求选择合适的选择器来对页面元素进行样式化。{dotted startColor="#ff6c6c" endColor="#1989fa"/}1. 通用选择器 - *CSS的 通用选择器 是一个星号（ * ），它匹配文档中的 「任何元素」 。使用通用选择器，我们可以选择页面上的 「所有元素」 ，并为它们应用相同的样式。例如，如果我们想为页面上的所有元素设置相同的字体样式，我们可以使用通用选择器来实现。{callout color="#2bff00"}但要注意，过度使用通用选择器可能会导致 「性能问题」 ，因为它会匹配页面上的所有元素，包括嵌套元素，这可能会增加浏览器的渲染负担。因此，建议在必要时谨慎使用通用选择器。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}2. 元素选择器 - element元素选择器 是 CSS 中最简单的选择器之一，它通过指定 HTML 元素的名称来选择元素。例如，要选择所有段落元素 ，我们可以使用以下选择器：p { /* CSS 样式 */ }这将选择页面中的所有段落元素，并应用所指定的 CSS 样式。{dotted startColor="#ff6c6c" endColor="#1989fa"/}3. 类名选择器 - .class类选择器 用于选择具有特定类名的 HTML 元素。类选择器以点号（ . ）开头，后跟类名。例如，如果我们有一个类名为 button 的按钮元素，我们可以使用类选择器来选择它：.button { /* CSS 样式 */ }这将选择页面中所有具有类名 button 的元素，并应用所指定的 CSS 样式。类选择器使我们可以为页面中的 「多个元素定义相同的样式」 ，而不必重复定义。此外，一个元素可以同时具有多个类，这样就可以轻松地将多个样式应用于同一个元素。{dotted startColor="#ff6c6c" endColor="#1989fa"/}4. ID 选择器 - #idID 选择器 是 CSS 中用于选择具有特定 ID 属性的 HTML 元素的选择器。ID 选择器以井号（ # ）开头，后跟 ID 名称。例如，如果我们有一个 ID 为 my-id的标题元素，我们可以使用 ID 选择器来选择它：#my-id { /* CSS 样式 */ }这将选择页面中具有 ID 名称为 my-id 的元素，并应用所指定的 CSS 样式。 「与类选择器不同，ID 选择器应该是唯一的」 ，因为 HTML 页面中每个元素的 ID 必须是唯一的。ID 选择器通常用于 「为特定元素应用唯一的样式」 。{dotted startColor="#ff6c6c" endColor="#1989fa"/}5. 多选择器 - .class.class-2.class.class-2 表示连接两个或更多类或ID来选择具有所有指定类/ID的元素：这段CSS代码的意思是选择具有 .my-class 和 .special 两个类的元素，并设置对应的背景色。{dotted startColor="#ff6c6c" endColor="#1989fa"/}6. 逗号组合 - .class, .class-2使用 逗号分隔 多个选择器声明。这样可以轻松地 「将相同的样式应用于多个选择器声明」 ;{dotted startColor="#ff6c6c" endColor="#1989fa"/}7. 后代选择器 - .class .class-2后代选择器 用于 「选择特定元素的后代元素」 。后代选择器使用 「空格分隔两个选择器」 ，其中第一个选择器表示 父元素第二个选择器表示 后代元素例如，如果我们想选择所有 元素内部的所有段落 ，我们可以使用后代选择器：div p { /* CSS 样式 */ }这将选择所有在 元素内部的 元素，并应用所指定的 CSS 样式。后代选择器允许我们更精确地定位特定元素，而不受页面结构的限制。{dotted startColor="#ff6c6c" endColor="#1989fa"/}8. 相邻兄弟选择器 - .class + .class-2相邻兄弟选择器 它用于选择 「紧接」 在另一个元素后面的元素。相邻兄弟选择器使用加号（ + ）符号来连接两个选择器，其中第一个选择器表示 第一个元素第二个选择器表示 紧跟在其后的兄弟元素例如，如果我们想选择所有紧跟在 元素后面的段落 元素，我们可以使用相邻兄弟选择器：h2 + p { /* CSS 样式 */ }这将选择紧接在 元素后面的 元素，并应用所指定的 CSS 样式。相邻兄弟选择器允许我们 「根据元素之间的特定关系来选择元素」，从而使得样式的应用更加精确和有针对性。{dotted startColor="#ff6c6c" endColor="#1989fa"/}9. 子选择器 - .class > .class-2子选择器 用于选择特定元素的 「直接子元素」 。子选择器使用大于号（ > ）符号来连接两个选择器，其中第一个选择器表示 父元素第二个选择器表示其 直接子元素例如，如果我们想选择所有 元素下的直接子元素 ，我们可以使用子选择器：ul > li { /* CSS 样式 */ }这将选择所有直接位于 元素内部的 元素，并应用所指定的 CSS 样式。子选择器 「只会选择指定元素的直接子元素，而不会选择嵌套在更深层次的子元素」 。这使得子选择器非常有用，因为它可以帮助我们更精确地定位特定层次结构的元素，并应用相应的样式。{dotted startColor="#ff6c6c" endColor="#1989fa"/}10. 兄弟选择器 - .class ~ .class-2兄弟选择器 用于 「选择与指定元素具有相同父元素且位于其后面的所有兄弟元素」 。一般兄弟选择器使用波浪号（ ~ ）符号来连接两个选择器，其中第一个选择器表示 基准元素第二个选择器表示 它的兄弟元素例如，如果我们想选择所有与 元素具有相同父元素且位于其后面的 元素，我们可以使用一般兄弟选择器：h2 ~ p { /* CSS 样式 */ }这将选择所有与 元素具有相同父元素且位于其后面的 元素，并应用所指定的 CSS 样式。{callout color="#2bff00"} 兄弟选择器 允许我们选择与指定元素具有相同父元素且位于其后面的所有兄弟元素，而不仅仅是直接的兄弟元素。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}11. 脑残猫头鹰选择器 - + 脑残猫头鹰选择器 用来描述一种特定的 CSS 模式。它涉及选择多个元素并为它们应用共享样式，从而在网页的各个组件或部分中创建一致的视觉设计。术语 脑残 指的是通用选择器（ * ）与相邻兄弟选择器（ + ）结合使用的情况。 猫头鹰 可能指的是 CSS 选择器的形态类似于猫头鹰的头部和眼睛。以下是“脑残猫头鹰”选择器模式的示例：* + * { margin-top: 1.5em; }这个 CSS 规则选择了在另一个元素之后出现的任何元素（除了容器中的第一个元素），并在顶部应用了一定的边距，有效地使元素均匀地间隔开来。这种模式特别适用于在为 「容器内的元素添加间距，但第一个元素没有前置兄弟元素」 。当然，我们也可以使用 :not(:first-child) 来达到相同的效果。{dotted startColor="#ff6c6c" endColor="#1989fa"/}12. 属性选择器属性选择器 它允许我们根据元素的属性及其属性值来选择元素，并为其应用样式。属性选择器使用方括号（ []）表示，内部包含属性名和可选的属性值。存在性属性选择器选择具有指定属性的元素，不论其属性值是什么。[data-text] { /* CSS 样式 */ }选择所有具有 data-text 属性的元素，并为其应用样式。这个选择器 「不关心属性的值是什么，只要有这个属性就会被选中」值属性选择器选择具有指定属性和特定值的元素。[data-text="hello"] { /* CSS 样式 */ }选择所有 data-text 属性的值为 hello 的元素，并为其应用样式。{callout color="#2bff00"}只有属性值为 hello 的元素才会被选中。{/callout}部分值属性选择器选择具有指定属性，并且属性值包含特定值的元素。[title*="saur"] { /* CSS 样式 */ }选择所有 title 属性值中包含 saur子字符串 的元素，并为其应用样式。{callout color="#2bff00"}只要属性值包含 saur ，无论是在开头、中间还是结尾，都会被选中。{/callout}起始值属性选择器选择具有指定属性，且属性值以特定值开头的元素。a[href^="https://"] { /* CSS 样式 */ }选择所有 href 属性值以 https:// 开头的 元素，并为其应用样式。{callout color="#2bff00"}只有链接以 https:// 开头的 元素才会被选中。{/callout}结束值属性选择器选择具有指定属性，且属性值以特定值结尾的元素。[src$=".png"] { /* CSS 样式 */ }选择所有 src 属性值以 .png 结尾的元素，并为其应用样式。{callout color="#2bff00"}只有图片路径以 .png 结尾的元素才会被选中。{/callout}包含值属性选择器选择具有指定属性，且属性值包含特定值的元素，且值之间以空格分隔。[class~="active"] { /* CSS 样式 */ }选择所有具有包含 active 的类名的元素，并为其应用样式。{callout color="#2bff00"}这个选择器将选中所有具有 active 类的元素，无论它们的类名是 active 还是 some-active-class 等。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}13. link伪类选择器以下四个伪类用于选择各种状态下的 link 等元素。这四个伪类通常与链接一起使用，但是 :active 对于 button 也很有用，而 :hover 可以用于所有类型的元素：:link 选择未访问的 link 。它允许我们为用户尚未点击的超链接设置样式。:visited 选择用户已经访问过的 link 。这个伪类允许我们为以前点击过的超链接应用样式。:hover 当用户的指针（例如鼠标光标）悬停在元素（通常是链接）上时，选择这些元素。:active 选择在它们被激活时的元素（通常是链接或按钮），例如当用户点击它们时。{dotted startColor="#ff6c6c" endColor="#1989fa"/}14. input相关在前端项目中， input 有很大的用处。我们来看 MDN 关于 input 的介绍。所以，和 input 相关的选择器也很多。{callout color="#2bff00"}元素聚焦 - :focus{/callout} :focus 伪类选择器表示获得焦点的元素（如表单输入）。当用户点击或轻触一个元素或使用键盘的 Tab 键选择它时，它会被触发。元素选中 - :checked{/callout}:checked 伪类选择器用于选择当前被选中/勾选的 单选按钮 、 复选框 或选择元素中的选项。input[type='checkbox'] { all: unset; -webkit-appearance: none; appearance: none; margin: 0; } input[type='checkbox']:checked + label { background: mediumseagreen; } input[type='checkbox']:focus + label { box-shadow: 0 0 0 2px yellow; }在上面的示例中，我使用 appearance: none 来移除复选框输入框的默认样式{callout color="#2bff00"}元素禁用 - :disabled{/callout}:disabled 伪类匹配 「禁用」 的表单元素，例如 button 或 input {callout color="#2bff00"}元素可用 - :enabled{/callout}:enabled 伪类匹配可以交互并接收输入的表单元素{callout color="#2bff00"}元素验证 - :valid{/callout} :valid 伪类用于定位具有内容符合其属性规定要求（如 pattern 、 type 等）的输入元素：{callout color="#2bff00"}元素验证- :invalid{/callout} :invalid 伪类用于定位内容不符合要求的输入元素：{callout color="#2bff00"}元素必填 - :required{/callout} :required 伪类用于定位具有 required 属性的输入元素，表明在提交表单之前必须填写它们：{callout color="#2bff00"}元素可选 - :optional{/callout} :optional 伪类用于定位没有 required 属性的输入元素，表示它们不是必填项：{dotted startColor="#ff6c6c" endColor="#1989fa"/}15. 第N个孩子{callout color="#2bff00"}第一个孩子 - :first-child{/callout}:first-child 伪类用于定位其 「父元素内的第一个子元素」 ：{callout color="#2bff00"}最后一个孩子 - last-child{/callout}:last-child 伪类用于定位其父元素内的最后一个子元素：{callout color="#2bff00"}第N个孩子 - :nth-child{/callout}:nth-child 伪类根据元素在其父元素中的位置进行选择，允许进行各种各样的选择。:nth-child 还可以让我们按模式选择元素：:nth-child(odd) 或 :nth-child(2n+1) 选择 「每个奇数位置」 的子元素:nth-child(even) 或 :nth-child(2n) 选择 「每个偶数位置」 的子元素公式中的 n 就像一个计数器，让我们可以在重复循环中选择元素。{callout color="#2bff00"}第N个孩子(倒数) - :nth-last-child{/callout}:nth-last-child 伪类类似于 :nth-child ，但它是从 「最后一个子元素开始向后计数」 的{callout color="#2bff00"}元素的唯一子元素 - :only-child{/callout}如果某个元素是其父元素的 「唯一子元素」 ，则 :only-child 伪类将其作为目标元素：{dotted startColor="#ff6c6c" endColor="#1989fa"/}16. 指定类型的第N个孩子{callout color="#2bff00"}类型的第一个元素 - :first-of-type{/callout}:first-of-type 伪类的目标是其父级中 「该类型的第一个元素」 ：{callout color="#2bff00"}类型的最后一个元素 - :last-of-type{/callout}:last-of-type 伪类的目标是其父级中 「该类型的最后一个元素」 {callout color="#2bff00"}类型的第N个元素 - :nth-of-type{/callout}:nth-of-type 伪类根据元素的类型和兄弟元素中的位置来匹配元素{callout color="#2bff00"}类型的第N个元素(向后计数) - :nth-last-of-type{/callout}:nth-last-of-type 伪类根据元素的类型和兄弟元素中的位置来匹配元素，但从末尾开始计数{callout color="#2bff00"}其类型的唯一元素 - :only-of-type{/callout}:only-of-type 伪类的目标元素是其兄弟元素中该类型的唯一元素：{dotted startColor="#ff6c6c" endColor="#1989fa"/}17. 伪类选择器{callout color="#2bff00"}目标元素选择器- .target{/callout}:target 伪类选择具有与 URL 片段匹配的 ID 属性的元素（例如： https://example.com/#fragment ）。 :target 经常用于为直接链接到的页面部分设置样式，通常 「与页面内链接一起使用」 。{callout color="#2bff00"}否定伪类 - .not(){/callout}:not()函数伪类 允许我们定位与指定选择器或条件不匹配的元素。它本质上是一个 「过滤器」 ：{callout color="#2bff00"}父选择器 - :has(){/callout}:has()函数伪类 允许在元素包含某个元素或另一个选择器时对其进行样式设置：{callout color="#2bff00"}其他伪类{/callout}:root ：选择文档中最高级别的父元素，通常是 HTML 文档中的 元素。用于定义 CSS 变量，这些变量将对页面内所有元素可用。:is() ：匹配可以是多个选择器之一的元素，使得长选择器列表更简洁易读。例如， :is(h1, h2, h3) 可以匹配这三个标题元素中的任何一个。:where() ：类似于 :is() ，但允许根据条件选择元素，而不影响选择器的特异性。:default ：匹配设置为其默认选择状态的 UI 元素（例如单选按钮或复选框）。:empty ：选择没有子元素的元素（包括文本节点）。:fullscreen ：选择当前以全屏模式显示的元素。:in-range ：匹配值在指定范围内的表单元素（使用 min 和 max 属性）。 :out-of-range ：匹配值在指定范围之外的表单元素。:indeterminate ：选择状态不确定的表单元素，例如既不选中也不取消选中的复选框（通常在树形视图结构中看到）。:read-only ：匹配由于 readonly 属性而无法由用户编辑的表单元素。:read-write ：选择用户可以编辑的表单元素，意味着它们不是只读的。:lang() ：根据其语言属性匹配元素。例如， :lang(en) 选择用英语定义的元素。{dotted startColor="#ff6c6c" endColor="#1989fa"/}18. 伪元素{callout color="#2bff00"}第一个子伪元素 - ::before{/callout}::before 伪元素用于在元素内容之前插入内容。它可用于添加装饰内容、图标或其他不需要在实际 DOM 中的元素：{callout color="#2bff00"}最后一个子伪元素 - ::after{/callout}::after 伪元素与 ::before 类似，用于在元素内容之后插入内容：{callout color="#2bff00"}首字母伪元素- ::first-letter{/callout}::first-letter 伪元素用于设置块级元素的 「第一个字母的样式」 ，允许使用首字下沉等设计元素：{callout color="#2bff00"}首行伪元素 - ::first-line{/callout}::first-line 伪元素用于设置块级元素第一行的样式。这允许印刷效果可以根据包含元素的大小和字体大小动态调整：{callout color="#2bff00"}文本输入占位符 - ::placeholder{/callout}::placeholder 伪元素用于设置表单字段（如 和 ）的占位符文本的样式：{callout color="#2bff00"}样式突出显示框 - ::selection{/callout}::selection 伪元素用于设置元素中已突出显示或由用户选择的部分的样式。例如，当用户单击并拖动以选择文本时， ::selection 伪元素可用于修改该选择的背景颜色、文本颜色和其他样式：{callout color="#2bff00"}列表标记伪元素 - ::marker{/callout}::marker 伪元素用于设置列表项中标记框的样式，列表项通常包含项目符号（对于无序列表）或数字/字母（对于有序列表）。在引入 ::marker 伪元素之前，自定义这些标记通常需要解决方法，但这个伪元素给了我们更多的控制权：{dotted startColor="#ff6c6c" endColor="#1989fa"/}原文出处:https://mp.weixin.qq.com/s/8Zhw-obLYrsPPXqkaqW5wA
拥有一张海外信用卡可以非常方便的使用很多的国外服务或购买国外软件等等，其中子凡我目前觉得最方便的就是能都定于 ChatGPT Plus 会员以及 OpenAI API 账单的支付，当然还能够方便的购买一些国外服务器。但是身在国内的我来说，几乎不太可能直接申请得到一张实体海外信用卡，所有这个时候子凡我就找到了一个能够提供美国虚拟信用卡的平台。下面子凡就简单的分享一下如何选择和获取一张美国虚拟信用卡。如何选择虚拟信用卡其实海外虚拟信用卡平台还是挺多，例如 Dupay（原 Depay）就是一个比较不错的虚拟信用卡平台，但是由于该平台的充值只能使用虚拟货币，所有对于国内很多用户实在是门槛太高了。所有子凡我找到了“WildCard 虚拟信用卡”一个可以直接通过手机号码注册登录，支付宝实名认证，使用云闪付/微信/支付宝等多种方法进行充值，开卡费和手续费也更低，并且提供美国远程环境，可以轻松用于绑定 OpenAI 和 ChatGPT 的付费使用，WildCard 还支持多卡模式，可以方便公司或有多个账户的用户轻松管理多个卡片，开卡金额更加优惠。WildCard 官方网址 ：https://zhangzifan.com/go/wildcard （使用邀请码“LEIXUE”可以享受开卡 88 折优惠，注册时提示填写邀请码就可以填写，否则通过链接直接享受 88 折优惠）如果担心自己不会注册和开卡的可以继续往后查看子凡分享的详细操作步骤，否则直接通过链接（zhangzifan.com/go/wildcard）直接进入官网开始注册账号，根据提示验证和充值开卡即可。如何申请 WildCard 美国虚拟信用卡1.打开 WildCard 官方网站地址 zhangzifan.com/go/wildcard 直接进行账号注册和开卡；2.输入手机号码，点击“获取”并输入验证码，然后点击“继续”按钮。（如果有“输入邀请码”的框，可以输入“LEIXUE”享受开卡费 88 折优惠，没有输入框的直接就是 88 折开卡优惠）；3.继续点击页面的“开始验证”按钮进入信息填写，便于账户的开通和实名验证；4.根据页面提示需要输入完整的姓名和身份证号码等信息，注意拼音不要写错了，填写完成后点击“继续”按钮，可能会提示你确认您的姓名全称；5.打开手机的支付宝扫描页面中的二维码进行人脸验证，手机支付宝上验证成功后点击页面的“已验证”即可进入到“支付费用”进行开户操作；6.注意看清楚页面所有的权益和注销政策以及收费等明细，没问题就可以点击“去支付”进行开卡费用的支付，支付成功后即可成功开通美国虚拟信用卡。如果你通过 zhangzifan.com/go/wildcard 开始注册或输入了“LEIXUE”邀请码，页面就会显示“已享受邀请 88 折”。虚拟信用卡使用注意事项WildCard 本质上是其实就是一种虚拟借记卡，开卡后余额为 0，如果不充值是无法扣费使用的，所有需要在充值后再进行订阅/支付。为了成功把绑定 OpenAI 或开通 ChatGPT Plus 会员可以使用 WildCard 提供的“远程环境”登录和绑定账号，切记未充值不要去绑定，因为绑定信用卡时平台会进行扣费验证，如果余额为零就会照成绑卡失败和增加消费失败率。声明 ：WildCard 虚拟信用卡平台也是我在网上找到的一个平台，除了邀请奖励外没有任何经济利益，也只是一个普通用户，我也无法向大家承诺和担保关于该平台的运行情况，所以请大家理性对待和慎重的选择，每次使用不要充值过多的余额，任何关于该平台的使用和操作，或者绑定失败的都可以联系 WildCard 网页上的在线客服，我也试过人工客服，除了有点慢以为暂时没有发现其他问题。原文出处：https://zhangzifan.com/how-get-us-virtual-credit-card.html
前言 随着工作的多样化，办公场地也不局限于公司或家里，有些时候我们需要访问内网资源，而互联网不能直接访问到内网资源，常见的就是部署VPN服务器。 今天给搭建介绍一款开源的 VPN 软件： OpenVPN步骤准备工作 通过安装脚本即可进行安装，可使用以下任意一种方式下载到安装脚本⭕ 直接通过官网的脚本进行安装 在 Linux 系统下，执行以下命令wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh⭕ 直接访问 github ，复制脚本的内容到本地，生成一个安装脚本https://github.com/Nyr/openvpn-install/blob/master/openvpn-install.sh⭕ 这里提供了一个下载地址，可以直接下载到安装脚本，扫码进行下载安装 如果是下载脚本的方式，先把脚本上传到 Linux 服务器，并授予执行权限chmod +x openvpn-install.sh执行安装脚本之后，根据提示进行设置./openvpn-install.sh选择服务器的IP地址设置公网能访问到的 IP 地址，如果有自己的域名，建议输入域名地址为了安全性，不被端口探测，我们选择推荐的 UDP 协议输入 VPN 服务的端口，一般使用默认的即可选择 DNS 服务器，一般使用本机的配置即可安装过程会生成一个客户端账号，我们输入一个并回车按下回车开始安装当出现以下信息时，说明是安装成功了日志的倒数第二行提示生成的客户端账号配置文件保存在/root/pande.ovpn客户端程序在连接VPN时需要有这个配置文件客户端程序扫码下载或者从 百度网盘 下载{mtitle title="提取码： knef"/}配置服务器 服务的配置信息存储在以下文件/etc/openvpn/server/server.conf服务脚本为systemctl status openvpn-server@server.service客户端 安装过程生成的账号对应的配置文件，是不带有密码的/root/pande.ovpn客户端连接安装 安装客户端程序。安装过程比较简单，只需要几步就能安装好提示客户端账号的配置文件需要放在其中一个目录下把客户端配置文件放入安装目录下的配置目录。在这个例子中，把服务器上生成的 /root/pande.ovpn 文件放到以上其中一个目录下。启动 双击桌面上的快捷方式打开客户端程序右键点击任务栏上的图标，选择【连接】这样就能连接上VPN服务器了。更多的介绍请访问官网进行查看：https://github.com/Nyr/openvpn-install写在最后经过简单的几步操作，我们就成功搭建了一个VPN服务器。更多的配置和使用请参考官网的介绍。原文出处：https://mp.weixin.qq.com/s/xxUhtKBSjoLiEeR6EdiYjg
现在我们每天要访问的网页都太多了，尽管chrome非常好用，有强大的标签系统。但是总觉得少了点什么。今天我就来分享一个开源的导航网站系统 dashy。这是一个国外的大佬的开源项目 github上面搜索 Lissy93/dashy来简单说一下为什么来分享这个项目支持多页面管理完全免费和开源安装简单，支持docker页面支持中文！那么接下来我们采用docker的方式进行安装，一条命令即可。ssh连接到你的终端输入命令 docker run -d -p 4000:80 lissy93/dashy 来拉去并且启动容器前台访问 http://ip:4000 就可以看到前台页面已经启动了。我们首先把语言改成中文点击右上角编辑页面，然后新增section我在这里新建了一个section。名字为搜索网站，你可以设置这个分区的图标（需要图片地址），以及排序方式，还有行和列等配置。新建好分区之后，我们就可以新建item了。我这里以百度举例子。创建好之后我们保存看看效果。然后又添加了google 和bing。他们的icon我随便添加的。所以看起来不美观。 这里再说一下它的其他功能把。大家可以自行探索主题和布局支持修改，而且主题支持编辑，主题很丰富支持云端备份和同步12.支持搜索和 自定义样式总体来看，这个导航站还是不错的，很多东西都支持自定义。感兴趣的可以自己去装一下。然后也是设置反向代理后绑定域名（这个在之前有多次写过怎么配置了），就可以拥有自己的导航站了。 原文出处:https://mp.weixin.qq.com/s/3EO6tlkz2IhI9IHxD6uLAg
GoDaddy是从事互联网域名注册及网站托管的上市公司。截至2016年1月，据称GoDaddy管理的域名超过6,100万个，成为获得ICANN认证的全球最大注册商，服务逾1,300万客户，员工总数超过4,000。博主的第一个域名就是从GoDaddy购买的！老牌服务商了！值得信赖！注册地址https://www.godaddy.com/zh-sg/domainsearch/find?domainToCheck=1ol.lol左下角可切换语言，支持中文！域名管理面板：https://dcc.godaddy.com/control/portfolio简要步骤1，选择自己心仪的域名，添加到购物车2，不选择附属产品，直接结账3，选择注册年限，点击【我已准备好支付】或者直接使用PayPal支付4，点击其他支付后需要维护地址信息，可以正常填写中国地址5，选择支付方式，支持支付宝支付6，支付成功后，可见域名！接入CF1，登录cloudflare，添加要接入的域名2，然后登录域名管理面板修改DNS3，稍等一会域名接入成功！最后总结1，前不久godaddy官网疑似被墙，如果不能访问，请自备工具2，godaddy 貌似不提供免费的隐私保护3，其他后缀域名价格不算便宜4，lol存在很多短域名，2-3位5，该域名国内还不能备案，国内使用需谨慎6，结算金额选择RMB，10年大概12元多7，活动结束时间未知！需要的童鞋抓紧了！消息来源：https://hostloc.com/thread-1216824-1-1.html原文出处:https://mp.weixin.qq.com/s/seHDcObT12_yMktPoA1rNQ
基于Web的代码编辑器是一种用于直接在Web浏览器中编写代码的应用，无需在本地安装任何软件。 它提供了一个在线开发环境，开发人员可以在其中编写代码、预览效果、更改代码并与团队成员实时协作。基于Web的代码编辑器对于团队之间的协作非常重要， 有许多优势 ：可访问性：基于Web的代码编辑器可以从任何具有互联网连接的设备访问，使团队成员可以轻松地远程协同工作。这种可访问性具备更大的灵活性，并支持跨地区和跨时区的协作。实时团队协作：基于Web的代码编辑器通常支持实时协作功能，允许多个团队成员同时处理同一代码。开发人员能够在项目上进行协作，一起编辑和审查代码，并即时反馈。版本控制集成：与Git等版本控制系统集成，使团队能够管理和跟踪代码库的变更。通过两者集成，以提供集中的代码存储库，促进工作流的顺畅协作，从而简化协作。代码共享和审查：基于Web的代码编辑器提供了与团队成员共享代码片段或整个项目的简单方法。这简化了代码评审的过程，团队成员可以直接在编辑器中留下评论、提出更改建议、提供反馈。跨平台兼容性：基于Web的代码编辑器一般独立于平台，允许开发人员使用不同的操作系统（Windows、macOS、Linux）进行协作，而不会出现兼容性问题。具备较高包容性，不管团队成员的开发环境如何都能够为项目做贡献。本文主要推荐一些比较好的开源Web代码编辑器，以直接体验或嵌入到你的产品中。01 Monaco Editor https://github.com/microsoft/monaco-editorMonaco编辑器是微软开发的基于Web的代码编辑器，由VS Code提供功能支持。体验地址：https://microsoft.github.io/monaco-editor/playground.html优点：具有语法突出显示、代码完成和调试功能的丰富功能集。高度可定制和可扩展。性能出色，即使是大型代码库。支持多种编程语言。与其他工具和框架的集成。缺点：与更简单的代码编辑器相比，学习曲线更陡峭。由于其功能丰富的性质，需要更多的资源来运行。有限的离线功能，因为它主要在网络环境中运行。02 OpenVSCode Server https://github.com/gitpod-io/openvscode-server这个项目提供了一个可以在远处服务器上运行的VS Code，允许通过Web浏览器进行访问。它基于Gitpod和GitHub Codespaces 的技术架构 。VS Code团队对其架构进行重构，以支持基于浏览器的工作模式，并且该项目共享了使用最新版本的VS Code所需的最小更改集，具有简单的升级路径和低维护工作量。03 ecode https://github.com/SpartanJ/ecodeecode是为现代硬件设计的轻量级代码编辑器，专注于响应性和性能。它利用硬件加速的eepp GUI，并改进eepp GUI库。功能特征：轻巧便携极简的GUI，可定制的配色方案支持50多种语言的文本高亮显示和LSP语义高亮显示多光标支持，实现高效编辑终端集成，实现无缝命令执行用于快速访问编辑器功能的命令行自动完成和可定制的键盘绑定04 Code Server https://github.com/coder/code-server Code-Server是一个支持在浏览器中运行VS Code的开源项目，能够在任何设备上提供一致的开发环境。它还支持使用云服务器以获得更快的执行效率，并为移动的用户保留电池寿命。05 Tabby https://github.com/TabbyML/tabbyTabby是一个可以私有化部署的AI编码助手，提供了GitHub Copilot的开源和本地部署方案。它是独立的，不需要DBMS或云服务，具有易于集成的OpenAPI接口，并支持消费级GPU。另外，Tabby可以使用Docker轻松安装。06 Neko Code Editor https://github.com/flyingcatdeveloper/nceNeko Code Editor是一个简单的代码编辑器，具有Monaco Editor类似的功能，包括：控制台、在新选项卡中打开代码、多文件功能、项目管理、DevLog更新、本地数据保存、可自定义设置等功能。 功能特征：Monaco编辑器功能： 具有代码自动完成、 MDN 应 用 等功能。控制台：只需单击一个按钮即可轻松查看控制台。在新选项卡中打开代码：查看代码时，它看起来就像一个网页。多文件功能：拥有尽可能多的文件，支持HTML，CSS，文件夹和JS文件。仪表板：在一个位置查看所有编辑器，沿着显示上次打开它们的时间。项目导入：开始在新设备上工作或通过导入项目恢复已删除的数据。项目下载：安全下载整个项目，以防止意外数据丢失。保持更新：随时了解DevLog的新功能和修复。数据 备 份：数据使用localStorage和IndexedDB保存，可以轻松加载到项目。自定义设置：自定义编辑器的设置，包括编辑器名称、自动保存和文件压缩。07 CodeMirror https://github.com/codemirror/dev/https://codemirror.net/CodeMirror是一个可扩展的Web代码编辑器组件，可用于实现具有高级编辑功能和丰富编程接口的文本输入，并支持进行进一步扩展。功能特征：可访问性：适用于屏幕阅读器和键盘用户。移动的支持：在手机上使用平台的本地选择和编辑功能。双向文本：支持从右到左和从左到右的混合文本。高亮：颜色代码，以反映句法结构。显示行号：显示代码旁边带有行号或其他信息的间距。自动完成：在编辑器中提供特定语言的完成提示。代码折叠：暂时隐藏文档的某些部分。搜索/替换：特定于编辑器的搜索、regexp搜索和替换功能。完整解析：详细的解析树允许许多类型的语言集成。扩展接口：健壮地实现要求苛刻的编辑器扩展。模块化：大多数特性都是在通用公共API之上实现的。速度：即使在大型文档和长行上也能保持响应。自动关闭：在键入时自动插入匹配的括号。Linting：在编辑器中显示错误和警告消息。灵活的样式：混合字体样式和大小，在内容中添加小部件。主题化：导入或创建自定义可视化编辑器样式。协作编辑：允许多个用户编辑同一文档。历史记录 撤销 ：支持协作编辑的撤销、重做功能。多个选择：一次选择和编辑文档的多个范围。国际化：提供自定义文本以显示或通知用户。08 CodeFlask https://github.com/kazzkiq/CodeFlaskCodeFlask是一个轻量级、可定制的基于Web的代码编辑器。它提供了一些基础的代码编辑功能，如：语法突出显示、自动完成和代码格式化。CodeFlask的设计目标为易于使用，可以被轻松地集成到Web应用程序中。当需要一个简单和轻量级的代码编辑器时，它是一个合适的选择。09 CodeJar https://github.com/antonmedv/codejarCodeJar是一个强大的开源、可嵌入的Web代码编辑器。功能特征：轻量级（仅2.45 kB）没有依赖关系适用于Chrome，Safari，Firefox，iOS，iPadOS，Android.支持在新行上保留缩进自动添加右括号、引号使用Tab键缩进支持撤消、 重做可以使用任何高亮显示库， 如：PrismJS or 或 highlight.js 或自定义开发10 Rustpad https://github.com/ekzhang/rustpadRustpad是一个基于操作转换算法的高效和最小的开源协作文本编辑器。只需要一个小的Docker镜像，并且不需要数据库。服务器是使用Rust编写的warp web服务器框架，而前端是使用TypeScript编写的React和Monaco接口。编辑器通过WebSocket与服务器进行通信，性能高效，但在服务器重新启动或24小时不活动后可能断开连接，导致临时文档丢失。11 ICEcoder https://github.com/icecoder/ICEcoderICEcoder是一个基于浏览器的代码编辑器，允许高效的网站开发和维护。它可以在线或离线使用，并与Linux，Windows和Mac平台兼容。唯一的要求是PHP 7（推荐使用7.4）。但需要注意的是，目前这个开源库已经停止更新。原文出处：https://mp.weixin.qq.com/s/F_DaUkUnVDRNhCHqmgXWDQ
对于刚入门网络安全的小伙伴而言，对于各种工具的使用算是头疼的了。不是工具的运行环境有问题，就是工具的使用命令记不住。故而为大家介绍一款综合渗透扫描工具。关于TscanPlus 是一款综合性网络安全检测和运维工具，旨在快速资产发现、识别、检测，构建基础资产信息库，协助甲方安全团队或者安全运维人员有效侦察和检索资产，发现存在的薄弱点和攻击面。安装本我们直接在Windows平台下运行。双击exe文件即可，无需安装。我们在作者的 项目地址 ： https://github.com/TideSec/TscanPlus/releases 下载对应的包即可。主要功能端口扫描 端口扫描是前期信息收集的重要手段。为了简单明了，作者提供了常见的web端口、top100、常见RCE端口等等。并且在扫描结果中，从Banner信息中可以得到相关服务的名称。URL探测 这个功能主要检测该站长都是利用了哪些框架，如WP Typecho DZ php mysql等常见的程序类型和系统服务。子域名查找 子域名查找也是我们在信息收集中重要的环节之一。以通过旁站漏洞来获取系统Shell。漏洞检测 作者提供了约400多个已知漏洞。输入目标后可快速检测常见的漏洞。密码破解 支持常见的SSH PDP MYSQL FTP等常见服务的密码破解。目录扫描 通过目录扫描，可以发现站点的一些敏感目录，如站点后台地址等。辅助功能作者为了方便初学者学习，在里面集成了常见的 CS MSF NC等工具上线的命令。原文出处：https://mp.weixin.qq.com/s/U3Hm5DoqWdTOUS8GSabRdw
实战：一款实用炫酷的Linux系统Web管理平台
{mtitle title="院长简介"/}作者：院长职位：运维开发工程师官网：https://deanit.cn博客：https://blog.deanit.cn擅长：{callout color="#bfbfbf"}【虚拟化，容器化，自动化运维，CICD，监控，日志，中间件，双机热备，分布式存储，数据库，认证，组网隧道，Kali 安全渗透，网络攻击，负载均衡，Html，Css，Js，Jq，Vue3，Shell，Python，Go，前后端框架】{/callout}项目简介{callout color="#bfbfbf"}Webmin 是用于Linux / UNIX系统管理的开源Web控制面板。Webmin允许您管理用户，组，磁盘配额以及配置最受欢迎的服务，包括Web，FTP，电子邮件和数据库服务器。{/callout}项目官网https://webmin.com/项目GitHubhttps://github.com/webmin/webminWebmin特点易于使用 ：Webmin提供了直观的界面和友好的用户体验，使得系统管理员能够轻松地完成各种管理任务。支持多种操作系统 ：Webmin支持多种Linux发行版以及其他UNIX系统，如FreeBSD和Solaris等。全面的管理功能 ：Webmin集成了众多常见的服务器管理任务，包括系统配置、软件包管理、用户管理等。安全性高 ：Webmin具有访问控制和SSL支持，为远程管理提供了足够的安全性。可扩展性强 ：Webmin采用插件式结构，可以轻松地添加或删除功能模块，使其具有很强的扩展性和伸缩性。多语言支持 ：Webmin提供多国语言版本，包括中文，能够满足不同地区和语言习惯的用户需求。灵活的配置 ：Webmin的配置非常灵活，可以根据用户的需求进行定制，满足不同规模和服务器的管理需求。实时监控与日志分析 ：Webmin能够实时监控服务器的状态，提供实时的日志分析功能，帮助管理员及时发现并解决潜在问题。支持自动化任务 ：Webmin可以配置自动化任务，使得管理员能够定时执行特定的管理任务，提高管理效率。集成度高 ：Webmin可以与其他常见的服务器软件进行集成，如Apache、Nginx、MySQL等，方便管理员进行统一的管理和维护。{mtitle title="部署安装"/}设置repo源vim /etc/yum.repos.d/webmin.repo [Webmin] name=Webmin Distribution Neutral #baseurl=https://download.webmin.com/download/yum mirrorlist=https://download.webmin.com/download/yum/mirrorlist enabled=1下载Webmin GPG密钥[root@Dean ~]# wget http://www.webmin.com/jcameron-key.asc --no-check-certificate --2024-01-21 18:23:41-- http://www.webmin.com/jcameron-key.asc 正在解析主机 www.webmin.com (www.webmin.com)... 216.105.38.11 ...... 长度：1320 (1.3K) [text/plain] 正在保存至: “jcameron-key.asc” jcameron-key.asc 100%[=======================================================================================>] 1.29K --.-KB/s 用时 0s 2024-01-21 18:23:44 (37.0 MB/s) - 已保存 “jcameron-key.asc” [1320/1320])导入Webmin GPG密钥[root@Dean ~]# rpm --import jcameron-key.asc重新生成缓存yum clean all yum makecahe安装webmin[root@Dean ~]# yum install webmin -y Webmin Distribution Neutral 3.6 MB/s | 20 MB 00:05 上次元数据过期检查：0:00:06 前，执行于 2024年01月21日 星期日 18时26分18秒。 依赖关系解决。 ============================================================================================================= 软件包 架构 版本 仓库 大小 ============================================================================================================= 安装: webmin noarch 2.105-1 Webmin 39 M 安装依赖关系: perl-Digest-SHA x86_64 1:6.02-1.el8 appstream 65 k ...... perl-Time-Piece x86_64 1.31-422.el8 appstream 97 k 事务概要 ============================================================================================================= 安装 8 软件包 总下载：40 M 安装大小：116 M 下载软件包： (1/8): perl-Filter-1.58-2.el8.x86_64.rpm 463 kB/s | 81 kB 00:00 ..... (8/8): webmin-2.105-1.noarch.rpm 31 kB/s | 39 MB 21:46 ------------------------------------------------------------------------------------------------------------- 总计 31 kB/s | 40 MB 21:47 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 安装 : perl-Time-Piece-1.31-422.el8.x86_64 ...... 8/8 已更新安装的产品。 已安装: perl-Digest-SHA-1:6.02-1.el8.x86_64 ...... webmin-2.105-1.noarch 完毕！ 启动服务[root@Dean ~]# systemctl enable webmin --now [root@Dean ~]# systemctl status webmin ● webmin.service - Webmin server daemon Loaded: loaded (/usr/lib/systemd/system/webmin.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2024-01-21 18:48:22 CST; 1min 11s ago Main PID: 1707031 (miniserv.pl) Tasks: 1 (limit: 201230) Memory: 32.1M CGroup: /system.slice/webmin.service └─1707031 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf 1月 21 18:48:22 Dean systemd[1]: Starting Webmin server daemon... 1月 21 18:48:22 Dean systemd[1]: Started Webmin server daemon.Web访问https://ip:10000账号密码，是你的主机的SSH的账号密码登录成功设置中文性能查看功能如下：特色功能：原文转载：https://mp.weixin.qq.com/s/NBtvsa9c7FTT6FsCHxMtKQ
建立一个从零开始到上线的网站通常需要以下步骤
建立一个从零开始到上线的网站通常需要以下步骤需求分析：与客户或团队讨论网站的目标、功能和设计要求。确定网站需要包含的页面，功能和用户交互。市场调研和竞争分析：了解目标受众和竞争对手的网站，掌握行业最佳实践和趋势。制定网站结构：根据需求分析和调研结果，制定网站的结构和内容架构，包括页面布局、导航和功能模块。设计网站：包括视觉设计和用户体验设计，创建网站的外观和感觉，以及用户与网站的交互方式。开发：根据设计和结构，进行前端开发（HTML、CSS、JavaScript）和后端开发（服务器端语言、数据库等）。内容创建：准备网站内容，包括文本、图片、视频等。测试：对网站进行功能测试、兼容性测试和性能测试，确保网站的质量和稳定性。部署：将网站部署到服务器，并配置域名和相关服务。优化：根据实际使用情况和用户反馈，对网站进行优化和改进。上线：发布网站，并确保其正常运行。以上是一个简单的从0到上线的网站方案大纲，具体的实施过程会因项目大小、团队组成和技术选型而有所不同。网站设计是一个综合性的工作，包括视觉设计和用户体验设计两个方面。以下是网站设计的详细说明：视觉设计：色彩搭配：选择符合品牌形象和目标受众的色彩，确保页面整体的美感和舒适度。页面布局：设计页面的结构和布局，包括头部、导航、内容区域、侧边栏和页脚，确保页面信息的合理排布和视觉吸引力。图形和图标：选择合适的图形和图标，提升页面的美感和辨识度。多媒体内容：如图片、视频等的处理和展示，确保视觉效果和页面加载速度的平衡。响应式设计：设计适应不同屏幕尺寸的布局，确保在各种设备上都有良好的显示效果。用户体验设计：导航设计：设计易用的导航结构，确保用户能够轻松找到他们需要的信息。页面交互：设计用户与页面之间的交互方式，包括按钮、表单、链接等，以提升用户的操作便捷性。信息架构：设计清晰的信息组织架构，确保用户能够快速准确地找到他们需要的信息。用户参与：设计用户参与的机制，如评论、分享、反馈等，增加用户粘性和互动性。可用性测试：通过原型测试和用户测试，不断优化用户体验，确保网站的易用性和用户满意度。综合来说，网站设计旨在创造一个吸引用户、易于使用、功能完善、美观大方的网站，以满足用户需求并达到项目的商业目标。