<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>鹏叔的技术博客</title>
  <icon>https://pengtech.net/icon.png</icon>
  <subtitle>日拱一卒，功不唐捐!</subtitle>
  <link href="https://pengtech.net/atom.xml" rel="self"/>
  
  <link href="https://pengtech.net/"/>
  <updated>2026-03-16T03:32:18.097Z</updated>
  <id>https://pengtech.net/</id>
  
  <author>
    <name>鹏叔</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>使用 namesilo 搭建企业邮箱</title>
    <link href="https://pengtech.net/vps/namesilo-enterprise-email-setup.html"/>
    <id>https://pengtech.net/vps/namesilo-enterprise-email-setup.html</id>
    <published>2026-03-14T16:00:00.000Z</published>
    <updated>2026-03-16T03:32:18.097Z</updated>
    
    
    <summary type="html">&lt;p&gt;这几年玩过的企业邮箱解决方案不少，但是一直没有找到一个理想的解决方案，手动搭建自主可控，但是技术门槛较高，需要专人维护服务器安全，监控服务器的健康状况等，人力成本较高，安全性也难以保证。&lt;/p&gt;
&lt;p&gt;说说我的经历，起初打算使用开源方案搭建企业邮箱，见我的博客&lt;a href=&quot;https://pengtech.net/linux/email_server_install.html&quot;&gt;使用 postfix 和 dovecot 快速搭建邮件服务器&lt;/a&gt;搭建自己的企业邮箱。第一个困难是解决被识别为垃圾邮件或被主流邮箱拒收的问题，要彻底解决这个问题会非常繁琐，而且由于是全新域名和 ip，因此 SMTP 信誉非常低，非常容易被认定为垃圾邮件被拒收或进入垃圾信箱。第二个困难是安全性问题，25 端口是 SMTP 协议（用于发送邮件）监听端口，大多数 VPS 服务商都是将其关闭的， 通常不会开放， 有部分 VPS 服务商允许有条件地开放 25 端口，通常都需要交保证金。刚开始搭建邮件系统也没什么经验，25 端口完全暴露在公网上，安全措施也不强，刚刚搭建好才过一晚上邮箱就被攻破被用来发垃圾邮件， 一晚上醒来存在 vps 服务商账号上的保证金全部被扣光。于是意识到为了带自己域名的能首发邮件的邮箱二背负如此沉重的维护和安全性负担非常不划算。于是想到专业的事情还是要交给专业的人去做，于是打算使用企业邮箱服务商现成的解决方案，这样可以将维护和安全成本转给企业邮箱服务商，而自己主要集中在主要业务上。&lt;/p&gt;</summary>
    
    
    
    <category term="VPS" scheme="https://pengtech.net/categories/VPS/"/>
    
    
    <category term="email" scheme="https://pengtech.net/tags/email/"/>
    
    <category term="Namesilo" scheme="https://pengtech.net/tags/Namesilo/"/>
    
  </entry>
  
  <entry>
    <title>使用 Hostinger 搭建企业邮箱</title>
    <link href="https://pengtech.net/vps/hostinger-email-setup.html"/>
    <id>https://pengtech.net/vps/hostinger-email-setup.html</id>
    <published>2026-01-01T16:00:00.000Z</published>
    <updated>2026-01-02T03:36:54.419Z</updated>
    
    
    <summary type="html">&lt;p&gt;之前介绍过&lt;a href=&quot;https://pengtech.net/linux/email_server_install.html&quot;&gt;使用 postfix 和 dovecot 快速搭建邮件服务器&lt;/a&gt;自建企业邮件服务器，这个方案有几个优点，就是完全自主可控，用户数量，邮箱大小，附件大小都不受到限制，可定制性也比较强。但是缺点也比较明显，有一定的技术门槛，另外需要专人维护服务器安全，监控服务器的健康状况等，人力成本较高，安全性也难以保证。&lt;/p&gt;
&lt;p&gt;后来我也介绍过另外一种低成本搭建企业邮箱的方式即使用 Zoho &lt;a href=&quot;https://pengtech.net/vps/enterprise-email-setup.html&quot;&gt;0 成本搭建企业邮箱&lt;/a&gt;.今天我将介绍另一种低成本搭建企业邮箱的方式即：【使用 Hostinger 搭建企业邮箱】，而且维护成本低安全性高的搭建企业邮箱的方案。&lt;/p&gt;</summary>
    
    
    
    <category term="VPS" scheme="https://pengtech.net/categories/VPS/"/>
    
    
    <category term="email" scheme="https://pengtech.net/tags/email/"/>
    
    <category term="Hostinger" scheme="https://pengtech.net/tags/Hostinger/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu 上安装与配置 Android NDK</title>
    <link href="https://pengtech.net/android/install-android-ndk-on-ubuntu.html"/>
    <id>https://pengtech.net/android/install-android-ndk-on-ubuntu.html</id>
    <published>2025-11-06T16:00:00.000Z</published>
    <updated>2025-11-08T06:24:53.666Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;什么是-Android-NDK？&quot;&gt;&lt;a href=&quot;#什么是-Android-NDK？&quot; class=&quot;headerlink&quot; title=&quot;什么是 Android NDK？&quot;&gt;&lt;/a&gt;什么是 Android NDK？&lt;/h2&gt;&lt;p&gt;NDK（Native Development Kit） 是 Android 提供的一套开发工具，用来在应用中使用 C&amp;#x2F;C++ 语言编写、编译和集成本地代码（Native Code）。它的核心作用就是：&lt;br&gt;让 Android 应用可以调用和运行底层的 C&amp;#x2F;C++ 代码，而不仅仅是 Java&amp;#x2F;Kotlin。通俗讲：Android SDK(Android SDK（Software Development Kit）) 是写 Java&amp;#x2F;Kotlin 层 的；Android NDK 是写 C&amp;#x2F;C++ 层（Native 层） 的。&lt;/p&gt;
&lt;p&gt;在 Linux 上安装 Android NDK 有几种方式，最推荐的方法是使用 Android SDK 的命令行工具 (sdkmanager)，因为这样可以保持版本一致、方便更新。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="android" scheme="https://pengtech.net/categories/OS/android/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
  </entry>
  
  <entry>
    <title>使用 Nginx 部署 PHP 项目</title>
    <link href="https://pengtech.net/nginx/nginx-deploy-php.html"/>
    <id>https://pengtech.net/nginx/nginx-deploy-php.html</id>
    <published>2025-10-31T16:00:00.000Z</published>
    <updated>2025-11-01T15:41:29.959Z</updated>
    
    
    <summary type="html">&lt;p&gt;Nginx（读作 “engine-x”）是一款高性能的 Web 服务器 + 反向代理服务器。Nginx 不会直接执行 PHP 脚本。它只懂得发送文件、转发请求，不会解析 .php 文件里的逻辑代码。所以 Nginx 必须结合 PHP 解析器才能很好的处理 PHP 请求，而且 NGINX 也只懂得如何响应和转发请求，它也不太懂如何管理 PHP 进程以及调用，连接 nginx 和 PHP 解析器的桥梁则是 FastCGI 协议，这里简单介绍一下 FastCGI ，FastCGI（Fast Common Gateway Interface）&lt;br&gt;是一种用于 Web 服务器（Nginx 或 Apache）与应用程序（如 PHP、Python、Perl）之间通信的协议。而 PHP-FPM 则是 FastCGI 的一种具体实现，拥有处理 Web 服务器和 PHP 应用程序之间的通信。&lt;/p&gt;</summary>
    
    
    
    <category term="backend" scheme="https://pengtech.net/categories/backend/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
    <category term="PHP" scheme="https://pengtech.net/tags/PHP/"/>
    
  </entry>
  
  <entry>
    <title>使用 netcat 测试 UDP 端口的连通性</title>
    <link href="https://pengtech.net/network/udp-connectivity-test.html"/>
    <id>https://pengtech.net/network/udp-connectivity-test.html</id>
    <published>2025-10-19T16:00:00.000Z</published>
    <updated>2025-10-20T18:12:22.445Z</updated>
    
    
    <summary type="html">&lt;p&gt;因为公司网络防火墙一般对端口会有一些限制，通过公司网络访问外部服务器特定端口时，需要检测与目标服务器特定端口的连通性；对于服务器可达性通常采用 ping 方法，tcp 可以使用 telnet, tcping 工具进行测试。对于 udp 连通性我们通常采用 netcat 工具进行测试。&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>Almalinux 服务器安装图形化界面</title>
    <link href="https://pengtech.net/linux/almalinux_install_desktop.html"/>
    <id>https://pengtech.net/linux/almalinux_install_desktop.html</id>
    <published>2025-09-28T16:00:00.000Z</published>
    <updated>2025-12-04T17:14:22.152Z</updated>
    
    
    <summary type="html">&lt;p&gt;AlmaLinux 9 与 Rocky Linux 9 在企业级 Linux 发行版中以稳定性著称。虽然它们常用于无界面（CLI）服务器环境，但在某些场景下（例如远程管理或使用图形工具）为服务器安装图形界面（GUI）也是有意义的。本文将逐步指导你如何在这两种系统上安装 GNOME 桌面环境、配置 XRDP 远程访问，并开启防火墙端口，从而在远端通过 RDP 客户端访问图形界面。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>如何对文档项目进行搜索引擎优化?</title>
    <link href="https://pengtech.net/seo/seo-for-document-projects.html"/>
    <id>https://pengtech.net/seo/seo-for-document-projects.html</id>
    <published>2025-09-04T16:00:00.000Z</published>
    <updated>2025-09-06T01:24:37.726Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文解释了如何优化文档以出现在搜索结果中, 最终增加文档型网站的流量。&lt;/p&gt;
&lt;p&gt;当您优化文档以使其对搜索引擎蜘蛛&amp;#x2F;爬虫更加友好时, 重要的是要记住,你的最终目标是为您的用户制作更多可发现的文档。&lt;/p&gt;
&lt;p&gt;通过我们介绍的 SEO 最佳实践, 您可以确保当用户在搜索引擎中输入问题时, 他们可以从搜索结果中的文档获取答案。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="hexo" scheme="https://pengtech.net/categories/tools/hexo/"/>
    
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
    <category term="Seo" scheme="https://pengtech.net/tags/Seo/"/>
    
  </entry>
  
  <entry>
    <title>为 MKdocs 文档网站添加评论系统</title>
    <link href="https://pengtech.net/mkdocs/add-a-comment-system-for-mkdocs.html"/>
    <id>https://pengtech.net/mkdocs/add-a-comment-system-for-mkdocs.html</id>
    <published>2025-09-02T16:00:00.000Z</published>
    <updated>2025-09-11T10:59:42.082Z</updated>
    
    
    <summary type="html">&lt;p&gt;Material for MkDocs 允许使用主题扩展轻松地将您选择的第三方评论系统添加到任何页面的页脚。例如，我们将集成 Giscus，它是一个开源、免费的系统，并使用 GitHub 讨论区作为后端。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Mkdocs" scheme="https://pengtech.net/categories/tools/Mkdocs/"/>
    
    
    <category term="Mkdocs" scheme="https://pengtech.net/tags/Mkdocs/"/>
    
  </entry>
  
  <entry>
    <title>使用 Mkdocs 快速搭建自己的文档系统</title>
    <link href="https://pengtech.net/mkdocs/mkdocs-create-site.html"/>
    <id>https://pengtech.net/mkdocs/mkdocs-create-site.html</id>
    <published>2025-09-02T16:00:00.000Z</published>
    <updated>2025-09-06T11:03:23.175Z</updated>
    
    
    <summary type="html">&lt;p&gt;MkDocs 是一款专为项目文档设计的静态网站生成器，它以其高效、简洁和美观的特点受到开发者的青睐。通过使用 Markdown 语言编写的源文件和一个单一的 YAML 配置文件，用户能够轻松地创建并维护文档站点。生成的 HTML 网站不仅加载速度快，而且可以方便地部署到 GitHub Pages 等静态网站托管平台上，使得分享和协作变得简单。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Mkdocs" scheme="https://pengtech.net/categories/tools/Mkdocs/"/>
    
    
    <category term="Mkdocs" scheme="https://pengtech.net/tags/Mkdocs/"/>
    
  </entry>
  
  <entry>
    <title>MkDocs 搭建的网站如何做 SEO 优化？</title>
    <link href="https://pengtech.net/mkdocs/mkdocs-seo.html"/>
    <id>https://pengtech.net/mkdocs/mkdocs-seo.html</id>
    <published>2025-09-02T16:00:00.000Z</published>
    <updated>2025-09-06T09:30:19.739Z</updated>
    
    
    <summary type="html">&lt;p&gt;MkDocs 本身只是一个 静态文档生成器，并没有内建 SEO 功能，但结合 MkDocs-Material 和一些插件&amp;#x2F;配置，可以做比较完整的 SEO 优化。下面给你一份系统的方案。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Mkdocs" scheme="https://pengtech.net/categories/tools/Mkdocs/"/>
    
    
    <category term="Mkdocs" scheme="https://pengtech.net/tags/Mkdocs/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上设置 IPv4 优先</title>
    <link href="https://pengtech.net/linux/linux-setup-ipv4-preferrence.html"/>
    <id>https://pengtech.net/linux/linux-setup-ipv4-preferrence.html</id>
    <published>2025-07-21T16:00:00.000Z</published>
    <updated>2025-07-22T04:38:43.207Z</updated>
    
    
    <summary type="html">&lt;p&gt;今天遇到一个情况，在访问下游服务的时候，下游服务的授权是根据 ip 进行授权的。&lt;/p&gt;
&lt;p&gt;而我一台服务器上既有 ipv4 地址又有 ipv6 地址，如果为两个 ip 都授权，那么服务费就 double 了，这显然有些浪费，所以我只授权了 ipv4 地址。&lt;/p&gt;
&lt;p&gt;这样就出现了下游服务不稳定的情况，如果服务器访问下游服务的时候以 ipv6 作为出口就会失败，反之以 ipv4 就能成功。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>如何创建 github 组织（organization）?</title>
    <link href="https://pengtech.net/github/github_create_organization.html"/>
    <id>https://pengtech.net/github/github_create_organization.html</id>
    <published>2025-06-24T16:00:00.000Z</published>
    <updated>2025-06-25T14:55:37.152Z</updated>
    
    
    <summary type="html">&lt;p&gt;在 GitHub 上创建组织（GitHub Organization）有以下几个重要的好处，尤其适合团队协作、项目管理和品牌运营。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="github" scheme="https://pengtech.net/categories/devops/github/"/>
    
    
    <category term="github" scheme="https://pengtech.net/tags/github/"/>
    
  </entry>
  
  <entry>
    <title>使用 fail2ban 保护你的 VPS?</title>
    <link href="https://pengtech.net/linux/protect-vps-with-fail2ban.html"/>
    <id>https://pengtech.net/linux/protect-vps-with-fail2ban.html</id>
    <published>2025-06-15T16:00:00.000Z</published>
    <updated>2026-01-04T11:27:59.598Z</updated>
    
    
    <summary type="html">&lt;p&gt;Fail2Ban 是一款开源的入侵防御工具，主要用于防止暴力破解、DoS 攻击和恶意扫描。它通过监控系统日志（如 SSH、FTP、Web 服务器等），自动检测多次失败的登录尝试或其他可疑行为，并动态调整防火墙规则（如 iptables、firewalld 等）来封锁恶意 IP 地址。适用于 Linux&amp;#x2F;Unix 系统，Fail2Ban 能有效降低暴力破解风险，且资源占用低，是服务器安全加固的常用工具。需注意合理配置以避免误封合法 IP。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="VPS" scheme="https://pengtech.net/tags/VPS/"/>
    
    <category term="fail2ban" scheme="https://pengtech.net/tags/fail2ban/"/>
    
    <category term="sshd" scheme="https://pengtech.net/tags/sshd/"/>
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
  </entry>
  
  <entry>
    <title>使用 Ansible 为 WordPress 设置默认语言</title>
    <link href="https://pengtech.net/wordpress/ansible-site-wordpress-locale.html"/>
    <id>https://pengtech.net/wordpress/ansible-site-wordpress-locale.html</id>
    <published>2025-06-15T16:00:00.000Z</published>
    <updated>2025-06-16T09:50:36.120Z</updated>
    
    
    <summary type="html">&lt;p&gt;要通过 Ansible 为 WordPress 设置默认语言，你可以采用以下几种方法。&lt;/p&gt;</summary>
    
    
    
    <category term="wordpress" scheme="https://pengtech.net/categories/wordpress/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
    <category term="blog" scheme="https://pengtech.net/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>如何修改WordPress最大上传文件大小限制？</title>
    <link href="https://pengtech.net/wordpress/wordpress-maximum-upload-size.html"/>
    <id>https://pengtech.net/wordpress/wordpress-maximum-upload-size.html</id>
    <published>2025-06-15T16:00:00.000Z</published>
    <updated>2025-06-16T12:54:15.641Z</updated>
    
    
    <summary type="html">&lt;p&gt;网上找了一堆的修改 WordPress 最大上传文件大小限制文章，有些说需要联系 vps 或站点托管管理员修改，最后发现只要在 wordpress 主目录修改添加或修改.user.ini 最有效。无论你的 web 服务器是 nginx 还是 apache 都有效。而且还有以下优势&lt;/p&gt;</summary>
    
    
    
    <category term="wordpress" scheme="https://pengtech.net/categories/wordpress/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
    <category term="blog" scheme="https://pengtech.net/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>Wordpress 备份与恢复</title>
    <link href="https://pengtech.net/wordpress/wordpress-backup-and-restore.html"/>
    <id>https://pengtech.net/wordpress/wordpress-backup-and-restore.html</id>
    <published>2025-06-10T16:00:00.000Z</published>
    <updated>2025-06-11T11:15:38.154Z</updated>
    
    
    <summary type="html">&lt;p&gt;作为一个 Wordpress 网站的维护人员，懂得如何备份与恢复 wordpress 网站至关重要。当我们在升级 WordPress 的核心、主题或插件之前对 wordpress 进行备份，这样在升级的过程中遇到因为兼容性问题可能导致的网站崩溃是，不至于手足无措，游刃有余。当我们需要将主机有一个 VPS 提供商移植到到另外一个 VPS 提供商，由一台主机移植到另外一台主机时都需要掌握 wordpress 备份与恢复技巧。当然需要使用到备份与恢复技能的地方还很多。备份不仅是技术操作，更是网站运营的核心保障。通过定期备份，我们可以确保数据的完整性和安全性，避免因意外情况导致的不可逆损失。恢复则是备份的延续，能够快速将网站恢复到正常状态，减少停机时间对用户体验和业务的影响。无论是个人博客还是企业级网站，掌握备份与恢复的技巧都是不可或缺的技能。接下来，我们将详细探讨如何高效地备份和恢复 WordPress 网站，帮助您轻松应对各种挑战。&lt;/p&gt;</summary>
    
    
    
    <category term="wordpress" scheme="https://pengtech.net/categories/wordpress/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
    <category term="blog" scheme="https://pengtech.net/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>0成本搭建企业邮箱</title>
    <link href="https://pengtech.net/vps/enterprise-email-setup.html"/>
    <id>https://pengtech.net/vps/enterprise-email-setup.html</id>
    <published>2025-05-31T16:00:00.000Z</published>
    <updated>2026-03-15T03:42:24.716Z</updated>
    
    
    <summary type="html">&lt;p&gt;之前介绍过&lt;a href=&quot;https://pengtech.net/linux/email_server_install.html&quot;&gt;使用 postfix 和 dovecot 快速搭建邮件服务器&lt;/a&gt;自建企业邮件服务器，这个方案有几个优点，就是完全自主可控，用户数量，邮箱大小，附件大小都不受到限制，可定制性也比较强。但是缺点也比较明显，有一定的技术门槛，另外需要专人维护服务器安全，监控服务器的健康状况等，人力成本较高，安全性也难以保证。&lt;/p&gt;
&lt;p&gt;今天介绍一种低成本或者零成本搭建企业邮箱的方式，而且维护成本低安全性高的搭建企业邮箱的方案。&lt;/p&gt;</summary>
    
    
    
    <category term="VPS" scheme="https://pengtech.net/categories/VPS/"/>
    
    
    <category term="email" scheme="https://pengtech.net/tags/email/"/>
    
    <category term="Zoho" scheme="https://pengtech.net/tags/Zoho/"/>
    
  </entry>
  
  <entry>
    <title>Prompt 提示词工程核心技巧</title>
    <link href="https://pengtech.net/ai/prompt-engineering.html"/>
    <id>https://pengtech.net/ai/prompt-engineering.html</id>
    <published>2025-05-29T16:00:00.000Z</published>
    <updated>2025-05-30T12:52:08.458Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-什么是提示词？&quot;&gt;&lt;a href=&quot;#1-什么是提示词？&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是提示词？&quot;&gt;&lt;/a&gt;1. 什么是提示词？&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;提示词&lt;/strong&gt;（prompt）是引导 LLM 进行内容生成的命令，它可以是任何内容：一句话，一个问题，或者一个计算公式。当 LLM 收到提示词以后便开始根据提示词和之前训练的数据，生成相关的回应。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="Prompt" scheme="https://pengtech.net/tags/Prompt/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上安装 Cherry Studio</title>
    <link href="https://pengtech.net/ai/install-Cherry-Studio-on-linux.html"/>
    <id>https://pengtech.net/ai/install-Cherry-Studio-on-linux.html</id>
    <published>2025-05-28T16:00:00.000Z</published>
    <updated>2025-05-29T10:51:58.787Z</updated>
    
    
    <summary type="html">&lt;p&gt;Cherry Studio 是一款开源、跨平台的多模型 AI 对话客户端，支持 Windows、macOS 和 Linux 系统，未来还将扩展至移动端。它集成了多种主流大语言模型（如 OpenAI、DeepSeek、Anthropic、Gemini 等）以及本地模型运行功能，并提供丰富的 AI 助手、知识库管理、联网搜索等特性，适用于专业用户、开发者和普通 AI 爱好者。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="Cherry-Studio" scheme="https://pengtech.net/tags/Cherry-Studio/"/>
    
  </entry>
  
  <entry>
    <title>在 Dify 中配置 self-hosted vllm 模型</title>
    <link href="https://pengtech.net/ai/dify-config-self-hosted-vllm.html"/>
    <id>https://pengtech.net/ai/dify-config-self-hosted-vllm.html</id>
    <published>2025-05-27T16:00:00.000Z</published>
    <updated>2025-05-28T11:51:12.573Z</updated>
    
    
    <summary type="html">&lt;p&gt;在 Dify 中配置 self-hosted vllm 模型 作为模型供应商时，应选择 OpenAI-API-compatible&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="Dify" scheme="https://pengtech.net/tags/Dify/"/>
    
    <category term="vLLM" scheme="https://pengtech.net/tags/vLLM/"/>
    
  </entry>
  
  <entry>
    <title>如何在 Linux 上通过 docker-compose 部署 Dify？</title>
    <link href="https://pengtech.net/ai/install-dify.html"/>
    <id>https://pengtech.net/ai/install-dify.html</id>
    <published>2025-05-26T16:00:00.000Z</published>
    <updated>2026-02-02T01:18:27.620Z</updated>
    
    
    <summary type="html">&lt;p&gt;Dify 是一款开源的大语言模型（LLM）应用开发平台，融合了后端即服务（Backend as a Service, BaaS）和 LLMOps 的理念，旨在帮助开发者快速构建和部署生成式 AI 应用。本篇文章将带您了解如何在本地环境中部署 Dify。通过本地部署，您可以更好地掌控数据和应用的运行环境，同时体验 Dify 强大的功能和灵活性。无论您是开发者还是对生成式 AI 应用感兴趣的技术爱好者，这篇指南都将为您提供清晰的步骤和实用的建议。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="Dify" scheme="https://pengtech.net/tags/Dify/"/>
    
  </entry>
  
  <entry>
    <title>2026 年最新 MCP 资源库汇总</title>
    <link href="https://pengtech.net/ai/mcp-resources.html"/>
    <id>https://pengtech.net/ai/mcp-resources.html</id>
    <published>2025-05-26T16:00:00.000Z</published>
    <updated>2026-02-22T22:33:56.137Z</updated>
    
    
    <summary type="html">&lt;p&gt;MCP（Model Context Protocol）作为一种新兴的通信协议，正在迅速改变 AI 应用的开发方式。本文旨在为开发者和技术爱好者提供一份全面的 MCP 资源指南，帮助大家更好地理解和使用 MCP 协议。无论是初学者还是资深开发者，都可以通过本文找到适合自己的工具、平台和学习资源，从而更高效地构建智能化应用。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="MCP" scheme="https://pengtech.net/tags/MCP/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu 安装并配置 docker</title>
    <link href="https://pengtech.net/docker/install-docker-on-ubuntu.html"/>
    <id>https://pengtech.net/docker/install-docker-on-ubuntu.html</id>
    <published>2025-05-26T16:00:00.000Z</published>
    <updated>2026-02-22T22:36:16.049Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 是现代软件开发和部署中不可或缺的工具之一。它通过容器化技术，为开发者和运维人员提供了轻量级、便捷且高效的解决方案。本文将详细介绍如何在 Ubuntu 系统上安装和配置 Docker，帮助您快速上手并充分利用其强大的功能。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>快速注册 Hostinger 账号以及创建 Hostinger VPS</title>
    <link href="https://pengtech.net/vps/hostinger_account_creation.html"/>
    <id>https://pengtech.net/vps/hostinger_account_creation.html</id>
    <published>2025-05-26T16:00:00.000Z</published>
    <updated>2025-05-28T03:54:31.240Z</updated>
    
    
    <summary type="html">&lt;p&gt;Hostinger是一家成立于2004年的全球知名主机服务提供商，至今已有二十年的历史。总部位于欧洲，Hostinger从一个小型初创公司起步，如今已发展成为全球范围内提供多元化主机解决方案的顶级企业，拥有超过2900万用户，遍布178个国家。&lt;/p&gt;</summary>
    
    
    
    <category term="VPS" scheme="https://pengtech.net/categories/VPS/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Hostinger" scheme="https://pengtech.net/tags/Hostinger/"/>
    
  </entry>
  
  <entry>
    <title>如何使用 vLLM 部署千问 3 大语言模型？</title>
    <link href="https://pengtech.net/ai/vllm_install_qwen3.html"/>
    <id>https://pengtech.net/ai/vllm_install_qwen3.html</id>
    <published>2025-05-25T16:00:00.000Z</published>
    <updated>2026-02-17T02:02:04.717Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何使用 vLLM 部署 千问 3 大语言模型。本文使用的是 Qwen3-0.6B 一个参数较小的模型，主要是为了体验整个部署过程。另外大模型运行在 CPU 上(因为支持 GPU 的 VPS 普遍较贵， 一直是用爱发电，能省则省).最后我们安装了一个 open-webui 用于和 self-hosted 的千问模型以图形界面的方式与模型进行对话。整个部署过程非常丝滑，适合有一定动手能力的用户，部署体验, 成本非常低， 仅需一台 8U32G 的 VPS， 不需要显卡。在本文的基础上略做修改也可以用于开发自己的 AI Agentic 应用。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="vLLM" scheme="https://pengtech.net/tags/vLLM/"/>
    
    <category term="Qwen3" scheme="https://pengtech.net/tags/Qwen3/"/>
    
  </entry>
  
  <entry>
    <title>如何使用源码安装 vLLM？</title>
    <link href="https://pengtech.net/ai/install_vllm_from_sourcecode.html"/>
    <id>https://pengtech.net/ai/install_vllm_from_sourcecode.html</id>
    <published>2025-05-24T16:00:00.000Z</published>
    <updated>2025-05-28T04:16:07.299Z</updated>
    
    
    <summary type="html">&lt;p&gt;vLLM 是一个专为 高性能推理 优化的大型语言模型（LLM）推理引擎，它由 UC Berkeley、CMU(卡内基梅隆大学)、Stanford 等高校的研究人员联合开发，旨在解决当前 LLM 推理中的效率与资源浪费问题。vLLM (virtualized Large Language Model) 是一个项目名称，其含义更侧重于强调它的&lt;strong&gt;虚拟化 + 大语言模型（LLM）&lt;/strong&gt; 特性。virtualized 指的是该项目核心技术 —— 利用一种“虚拟内存”式的 KV 缓存管理机制（PagedAttention）。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="vLLM" scheme="https://pengtech.net/tags/vLLM/"/>
    
  </entry>
  
  <entry>
    <title>如何使用 Astral UV 管理 Python 虚拟环境？</title>
    <link href="https://pengtech.net/python/linux_install_python.html"/>
    <id>https://pengtech.net/python/linux_install_python.html</id>
    <published>2025-05-22T16:00:00.000Z</published>
    <updated>2025-09-05T08:06:30.740Z</updated>
    
    
    <summary type="html">&lt;p&gt;Astral UV 是一款由 Astral 公司（以开发高性能 Python 工具 Ruff 闻名）推出的 超高速 Python 包管理和项目管理工具，完全用 Rust 编写。它旨在取代传统的 Python 工具链（如 pip、virtualenv、poetry、pyenv 等），提供更快的速度和更统一的工作流。在 Astral UV 的上下文中，象征工具的高速性（Ultra-Velocity）和多功能性（Universal）。本文主要讲述如何在 Linux 下安装 Astral UV。&lt;/p&gt;</summary>
    
    
    
    <category term="python" scheme="https://pengtech.net/categories/python/"/>
    
    
    <category term="python" scheme="https://pengtech.net/tags/python/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上如何清除 DNS 缓存</title>
    <link href="https://pengtech.net/network/cleanup-dns-cache-on-linux.html"/>
    <id>https://pengtech.net/network/cleanup-dns-cache-on-linux.html</id>
    <published>2025-05-06T16:00:00.000Z</published>
    <updated>2025-05-07T12:13:34.633Z</updated>
    
    
    <summary type="html">&lt;p&gt;在日常使用 Linux 系统的过程中，DNS 缓存的管理是一个常见但容易被忽视的问题。当 DNS 缓存出现问题时，可能会导致域名解析失败，从而影响网络连接。本文将介绍如何在不同的 Linux 发行版上清除 DNS 缓存，以帮助您快速解决相关问题。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="dns" scheme="https://pengtech.net/categories/network/dns/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>Docker 命令</title>
    <link href="https://pengtech.net/docker/docker-commands.html"/>
    <id>https://pengtech.net/docker/docker-commands.html</id>
    <published>2025-04-30T16:00:00.000Z</published>
    <updated>2025-05-02T02:32:51.909Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 是一个开源项目，它可以自动将应用程序部署为可移动的独立容器，这些容器可以在本地或云端运行&lt;a href=&quot;https://www.geeksforgeeks.org/cloud-computing/&quot;&gt;。&lt;/a&gt;借助 Docker，您可以快速将应用程序从基础架构中分离出来，从而实现软件交付，并且还可以像管理应用程序一样管理基础架构。&lt;/p&gt;
&lt;p&gt;Docker 中的命令数量非常庞大，但我们将重点介绍 Docker 中最常用的命令。想要了解更多关于 Docker 命令的信息，请参阅&lt;a href=&quot;https://www.geeksforgeeks.org/docker-cheat-sheet/&quot;&gt;Docker 速查表 – 最重要的 Docker 命令。&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>如何使用自托管 GitHub Runner 运行 GitHub Actions 工作流？</title>
    <link href="https://pengtech.net/github/selfhosted-github-runner.html"/>
    <id>https://pengtech.net/github/selfhosted-github-runner.html</id>
    <published>2025-04-30T16:00:00.000Z</published>
    <updated>2025-05-01T14:59:11.228Z</updated>
    
    
    <summary type="html">&lt;p&gt;有时候github action 提供的runner不能满足我们的一些需求，此时我们可以使用自托管runner来运行github action jobs, 设置步骤如下.&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="github" scheme="https://pengtech.net/categories/devops/github/"/>
    
    
    <category term="github" scheme="https://pengtech.net/tags/github/"/>
    
    <category term="github action" scheme="https://pengtech.net/tags/github-action/"/>
    
  </entry>
  
  <entry>
    <title>使用 Emlog 搭建一款多用户博客系统</title>
    <link href="https://pengtech.net/sites/emlog_install.html"/>
    <id>https://pengtech.net/sites/emlog_install.html</id>
    <published>2025-04-29T16:00:00.000Z</published>
    <updated>2025-05-28T04:13:57.668Z</updated>
    
    
    <summary type="html">&lt;p&gt;个人博客早就玩得有点腻了， 独乐乐不如众乐乐，自己也写了一个多用户博客，但是集成在一个比较大的系统里面，一直想把它分拆出来进行，但是一直没有时间和精力去做，考虑到更加没有时间去做推广。花费时间意义又不太大，本着想吃鱼不必去养鱼的想法，一直在寻找一款开源的解决方案。之前试用过 wordpress 的多用户博客，体验下来不太理想。其他的比如 Astro, Strapi 加自定义前端一个比较耗时，体验也不是很好。&lt;br&gt;今天偶然间发现 emlog，我理想中的功能都有，而且还超过了我的预期。所以花了一点点时间把它安装了一下。官方教程写得不够详细，主要在数据库连接方面写得不够详细，花费了一些时间，最终选择了通用安装方式，从我的角度看比较理想。当然在此教程的基础上修改为 docker 或 docker compose 安装方案也比较容易。这里将安装过程记录下来，以便对有同样需求的人有所帮助。&lt;/p&gt;</summary>
    
    
    
    <category term="site_building" scheme="https://pengtech.net/categories/site-building/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Vultr" scheme="https://pengtech.net/tags/Vultr/"/>
    
    <category term="emlog" scheme="https://pengtech.net/tags/emlog/"/>
    
    <category term="blog" scheme="https://pengtech.net/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>Docker 的架构</title>
    <link href="https://pengtech.net/docker/architecture-of-docker.html"/>
    <id>https://pengtech.net/docker/architecture-of-docker.html</id>
    <published>2025-04-26T16:00:00.000Z</published>
    <updated>2025-04-27T18:13:06.931Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 采用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信，后者负责构建、运行和分发 Docker 容器。Docker 客户端与守护进程在同一系统上运行，或者我们可以将 Docker 客户端与 Docker 守护进程远程连接。借助 UNIX 套接字或网络上的 REST API，Docker 客户端和守护进程可以相互交互。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>Docker Cloud 介绍</title>
    <link href="https://pengtech.net/docker/what-is-docker-cloud.html"/>
    <id>https://pengtech.net/docker/what-is-docker-cloud.html</id>
    <published>2025-04-26T16:00:00.000Z</published>
    <updated>2025-05-10T15:56:57.004Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 是一个软件平台，就像一个服务提供商一样，提供了一些特别的功能，比如让你可以更快速地在一个统一的平台上构建、测试和部署你的应用程序。Docker Cloud 基本上就是 Docker 提供的一项服务，它的作用包括：不依赖具体的操作系统（操作系统无关性），只打包运行应用所需的最小内容，让运行更高效，让应用可以在不同的基础设施之间轻松迁移和互通。除此之外，还有很多其他功能。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>Docker Hub 介绍</title>
    <link href="https://pengtech.net/docker/what-is-docker-hub.html"/>
    <id>https://pengtech.net/docker/what-is-docker-hub.html</id>
    <published>2025-04-26T16:00:00.000Z</published>
    <updated>2025-04-29T13:57:49.526Z</updated>
    
    
    <summary type="html">&lt;p&gt;&lt;strong&gt;Docker Hub&lt;/strong&gt;是一个基于云的存储库服务，用户可以随时随地通过互联网将 Docker 容器镜像推送到 Docker Hub，也可以从&lt;strong&gt;Docker Hub&lt;/strong&gt;拉取 Docker 容器镜像。它提供多种功能，例如，用户可以将镜像推送为私有镜像或公开镜像。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>国内 Docker 镜像加速器状态监测</title>
    <link href="https://pengtech.net/docker/docker-registry-mirrors-status.html"/>
    <id>https://pengtech.net/docker/docker-registry-mirrors-status.html</id>
    <published>2025-04-24T16:00:00.000Z</published>
    <updated>2025-05-07T16:21:47.106Z</updated>
    
    
    <summary type="html">&lt;p&gt;每日更新国内 Docker 镜像加速器状态，以显著提升镜像拉取速度和开发效率。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
    <category term="docker-registry" scheme="https://pengtech.net/tags/docker-registry/"/>
    
    <category term="mirrors" scheme="https://pengtech.net/tags/mirrors/"/>
    
  </entry>
  
  <entry>
    <title>使用github action 自动更新 github pages</title>
    <link href="https://pengtech.net/github/github_action_update_github_page.html"/>
    <id>https://pengtech.net/github/github_action_update_github_page.html</id>
    <published>2025-04-24T16:00:00.000Z</published>
    <updated>2025-08-03T11:13:53.587Z</updated>
    
    
    <summary type="html">&lt;p&gt;首先我们会讲解如何使用 github action 部署一个简单的 html 页面到脚本所在仓库的 gh-pages 分支，接着我们会讲解如何部署到不同仓库的指定分支。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="github" scheme="https://pengtech.net/categories/devops/github/"/>
    
    
    <category term="github" scheme="https://pengtech.net/tags/github/"/>
    
    <category term="github action" scheme="https://pengtech.net/tags/github-action/"/>
    
  </entry>
  
  <entry>
    <title>如何使用Node.js执行CLI指令？</title>
    <link href="https://pengtech.net/nodejs/how_to_call_cli_in_nodejs.html"/>
    <id>https://pengtech.net/nodejs/how_to_call_cli_in_nodejs.html</id>
    <published>2025-04-23T16:00:00.000Z</published>
    <updated>2025-04-24T21:04:18.448Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何在nodejs脚本中执行命令行指令。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>Docker 的特点</title>
    <link href="https://pengtech.net/docker/features-of-docker.html"/>
    <id>https://pengtech.net/docker/features-of-docker.html</id>
    <published>2025-04-22T16:00:00.000Z</published>
    <updated>2025-04-27T17:05:59.238Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 是用于开发和自动化应用程序部署的最流行的开源平台之一。它将应用程序部署到容器中，并使我们能够将应用程序与基础架构分离。它旨在提供一个轻量级且快速的代码运行环境，以及一个高效的工作流程，将代码从笔记本电脑传输到测试环境，再投入生产。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>Docker 简介</title>
    <link href="https://pengtech.net/docker/what_is_docker.html"/>
    <id>https://pengtech.net/docker/what_is_docker.html</id>
    <published>2025-04-22T16:00:00.000Z</published>
    <updated>2025-04-27T16:30:10.993Z</updated>
    
    
    <summary type="html">&lt;p&gt;你有没有想过市场上涌现 Docker 容器的原因？在 Docker 出现之前，大多数开发人员在编写代码时都会遇到一个大问题：代码在自己的电脑上可以运行，但当他们尝试在服务器上运行该代码时，却无法正常工作。这是因为应用程序需要合适的运行环境（例如合适的操作系统、库和设置）。如果你的电脑和服务器上的某些东西出现差异，就会出现问题。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，Docker 容器应运而生。&lt;strong&gt;Docker 是一个开源容器化平台&lt;/strong&gt;，你可以将应用程序及其所有依赖项打包到一个名为“容器”的标准化单元中。容器是轻量级的，易于移植，并且与底层基础设施以及其他容器相互隔离。你可以在任何安装了 Docker 的机器上将 Docker 镜像运行为 Docker 容器，而无需依赖宿主机的操作系统。&lt;/p&gt;
&lt;p&gt;Docker 有两个主要部分：Docker 引擎，它是在本地计算机和服务器上运行的二进制程序，负责处理容器的创建和管理。Docker Hub 是一个网站和云服务，方便每个人轻松共享他们的 Docker 镜像。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>如何在一台电脑上管理多个 github 账号？</title>
    <link href="https://pengtech.net/git/manage_multiple_github_accounts_on_a_host.html"/>
    <id>https://pengtech.net/git/manage_multiple_github_accounts_on_a_host.html</id>
    <published>2025-04-20T16:00:00.000Z</published>
    <updated>2025-04-22T01:00:06.940Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;对大多数开发者来说，有时候需要在同一台机器上管理多个 GitHub 账户。例如在以下场景中，我们就需要使用到 GitHub 多账户管理技巧。&lt;/p&gt;
&lt;p&gt;白天作为一名员工，为您所在的公司工作，你所在的公司使用 GitHub 企业版或另一个 GitHub 账号（例如&lt;a href=&quot;mailto:&amp;#x77;&amp;#111;&amp;#x72;&amp;#107;&amp;#x40;&amp;#x63;&amp;#x6f;&amp;#109;&amp;#112;&amp;#x61;&amp;#x6e;&amp;#121;&amp;#x2e;&amp;#x63;&amp;#111;&amp;#109;&quot;&gt;&amp;#x77;&amp;#111;&amp;#x72;&amp;#107;&amp;#x40;&amp;#x63;&amp;#x6f;&amp;#109;&amp;#112;&amp;#x61;&amp;#x6e;&amp;#121;&amp;#x2e;&amp;#x63;&amp;#111;&amp;#109;&lt;/a&gt;）管理内部私有仓库，你需要在此账号下提交代码。&lt;/p&gt;
&lt;p&gt;晚上在个人账号下修复自己的开源项目。你拥有一个个人 GitHub 账号（例如&lt;a href=&quot;mailto:&amp;#112;&amp;#101;&amp;#114;&amp;#x73;&amp;#x6f;&amp;#x6e;&amp;#x61;&amp;#x6c;&amp;#x40;&amp;#101;&amp;#x78;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6c;&amp;#x65;&amp;#x2e;&amp;#x63;&amp;#111;&amp;#109;&quot;&gt;&amp;#112;&amp;#101;&amp;#114;&amp;#x73;&amp;#x6f;&amp;#x6e;&amp;#x61;&amp;#x6c;&amp;#x40;&amp;#101;&amp;#x78;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6c;&amp;#x65;&amp;#x2e;&amp;#x63;&amp;#111;&amp;#109;&lt;/a&gt;），用于托管自己的开源项目、学习实验或兼职项目。&lt;/p&gt;
&lt;p&gt;此场景下，多账号管理是兼顾职业与个人开发的必要需求。并达到权限分离，隐私保护以及合规要求。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;权限分离：公司仓库可能需要严格的访问控制，禁止使用个人账号提交代码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;隐私保护：个人项目与工作项目需完全隔离，避免误操作或信息泄露。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;合规要求：企业可能要求使用公司邮箱和账号签署贡献者协议（CLA）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="git" scheme="https://pengtech.net/categories/tools/git/"/>
    
    
    <category term="git" scheme="https://pengtech.net/tags/git/"/>
    
  </entry>
  
  <entry>
    <title>MacOS 上安装与配置 Hiddify Next</title>
    <link href="https://pengtech.net/network/install-and-config-HiddifyApp-on-MacOS.html"/>
    <id>https://pengtech.net/network/install-and-config-HiddifyApp-on-MacOS.html</id>
    <published>2025-04-02T16:00:00.000Z</published>
    <updated>2025-09-06T19:22:25.786Z</updated>
    
    
    <summary type="html">&lt;p&gt;Hiddify Next 是一款开源的多平台通用代理客户端，旨在帮助用户在受互联网审查的地区自由访问网络服务。它基于 Sing-Box 构建，支持超过 20 种协议，兼容 Android、iOS、Windows、macOS 和 Linux 等操作系统。Hiddify Next 最近更名为 HiddifyApp 了，本文中 Hiddify Next 和 HiddifyApp 会交替使用，他们所指的都是同一个软件。本文主要讲述如何在 MacOS 操作系统上安装并配置HiddifyApp。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/categories/network/Hiddify/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="HiddifyApp" scheme="https://pengtech.net/tags/HiddifyApp/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/tags/Hiddify/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上安装与配置 Hiddify Next</title>
    <link href="https://pengtech.net/network/install-and-config-HiddifyApp-on-linux.html"/>
    <id>https://pengtech.net/network/install-and-config-HiddifyApp-on-linux.html</id>
    <published>2025-04-02T16:00:00.000Z</published>
    <updated>2026-02-28T01:57:51.702Z</updated>
    
    
    <summary type="html">&lt;p&gt;Hiddify Next 是一款开源的多平台通用代理客户端，旨在帮助用户在受互联网审查的地区自由访问网络服务。它基于 Sing-Box 构建，支持超过 20 种协议，兼容 Android、iOS、Windows、macOS 和 Linux 等操作系统。Hiddify Next 最近更名为 HiddifyApp 了，本文中 Hiddify Next 和 HiddifyApp 会交替使用，他们所指的都是同一个软件。本文主要讲述如何在 Linux 操作系统上安装并配置HiddifyApp。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/categories/network/Hiddify/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="HiddifyApp" scheme="https://pengtech.net/tags/HiddifyApp/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/tags/Hiddify/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
  </entry>
  
  <entry>
    <title>Windows 上安装与配置 Hiddify Next</title>
    <link href="https://pengtech.net/network/install_hiddifyApp_on_windows.html"/>
    <id>https://pengtech.net/network/install_hiddifyApp_on_windows.html</id>
    <published>2025-04-02T16:00:00.000Z</published>
    <updated>2025-09-06T19:22:25.786Z</updated>
    
    
    <summary type="html">&lt;p&gt;Hiddify Next 是一款开源的多平台通用代理客户端，旨在帮助用户在受互联网审查的地区自由访问网络服务。它基于 Sing-Box 构建，支持超过 20 种协议，兼容 Android、iOS、Windows、macOS 和 Linux 等操作系统。Hiddify Next 最近更名为 HiddifyApp 了，本文中 Hiddify Next 和 HiddifyApp 会交替使用，他们所指的都是同一个软件。本文是 HiddifyApp 系列教程之一，重点讲述如何在 Windows 上安装 HiddifyApp。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/categories/network/Hiddify/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="HiddifyApp" scheme="https://pengtech.net/tags/HiddifyApp/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/tags/Hiddify/"/>
    
  </entry>
  
  <entry>
    <title>如何设置Docker、 Containerd、 Podman容器镜像加速器？</title>
    <link href="https://pengtech.net/docker/how-to-setup-docker-registry-mirrors.html"/>
    <id>https://pengtech.net/docker/how-to-setup-docker-registry-mirrors.html</id>
    <published>2025-03-18T16:00:00.000Z</published>
    <updated>2026-02-22T22:35:48.067Z</updated>
    
    
    <summary type="html">&lt;p&gt;从官方镜像仓库（如 Docker Hub、Kubernetes 镜像库）拉取镜像时，国内访问可能较慢，使用镜像加速器可以显著提高下载速度。官方镜像库可能受限于网络封锁、网络波动、带宽限制或地理位置的影响，导致拉取超时。加速器通常部署在更接近用户的服务器上，优化访问路径，减少超时问题。&lt;/p&gt;
&lt;p&gt;如何获取国内可用的 Docker 镜像加速器可以参考 &lt;a href=&quot;https://pengtech.net/docker/docker-registry-mirrors.html&quot;&gt;2026 年最新国内可用 Docker 镜像加速器汇总&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;获取到镜像加速器地址后可以按以下指引进行配置。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
    <category term="docker-registry" scheme="https://pengtech.net/tags/docker-registry/"/>
    
    <category term="mirrors" scheme="https://pengtech.net/tags/mirrors/"/>
    
  </entry>
  
  <entry>
    <title>2026 年最新国内可用 Docker 镜像加速器汇总附带监测</title>
    <link href="https://pengtech.net/docker/docker-registry-mirrors.html"/>
    <id>https://pengtech.net/docker/docker-registry-mirrors.html</id>
    <published>2025-03-17T16:00:00.000Z</published>
    <updated>2026-02-22T22:35:03.670Z</updated>
    
    
    <summary type="html">&lt;p&gt;最近几个月发现许多曾经常用的国内镜像站（包括各种云服务商和高校镜像站）已经无法使用， 这极大地影响了工作效率和开发进度。因此，本人开始搜索并汇总了目前可用的镜像站和镜像加速地址，并计划定期测试它们的可用性，然后更新这个列表。如果您知道新的可用站点，也欢迎随时评论区留言补充！&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
    <category term="docker-registry" scheme="https://pengtech.net/tags/docker-registry/"/>
    
    <category term="mirrors" scheme="https://pengtech.net/tags/mirrors/"/>
    
  </entry>
  
  <entry>
    <title>手动部署 docker 镜像加速服务</title>
    <link href="https://pengtech.net/docker/install_docker_proxy.html"/>
    <id>https://pengtech.net/docker/install_docker_proxy.html</id>
    <published>2025-03-16T16:00:00.000Z</published>
    <updated>2025-05-28T04:17:49.163Z</updated>
    
    
    <summary type="html">&lt;p&gt;由于近期 hub.docker.com 等容器镜像站在国内已经被墙，并且现在看来也无重新可用的可能性了。所以手里有闲置服务器的佬友可以选择自己搭建一个 Docker 镜像加速服务，以便能够中转对 Docker 官方镜像仓库的请求，解决国内无法访问或访问缓慢的问题。本文主要讲述如何使用一台海外 VPS,手动搭建一台镜像加速服务器。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>linux 下清空回收站命令</title>
    <link href="https://pengtech.net/linux/linux_cleanup_trash.html"/>
    <id>https://pengtech.net/linux/linux_cleanup_trash.html</id>
    <published>2025-03-14T16:00:00.000Z</published>
    <updated>2025-03-16T03:48:59.291Z</updated>
    
    
    <summary type="html">&lt;p&gt;相信每个人都对 回收站(trashcan)很熟悉，因为无论是对 Linux 用户，还是 Windows 用户，或者 Mac 用户来说，它都很常见。当你删除一个文件或目录的时候，该文件或目录会被移动到回收站中。&lt;/p&gt;
&lt;p&gt;需要注意的是，当把文件移动到回收站以后，文件系统空间并没有被释放，除非把回收站清空。&lt;/p&gt;
&lt;p&gt;如果不想永久删除文件的话（清空回收站），可以利用回收站临时存储被删除了的文件，从而在必要的时候能够帮助我们恢复删除了的文件。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>如何在 VSCode 中免费使用 codepilot?</title>
    <link href="https://pengtech.net/vscode/how_to_use_codepilot_free.html"/>
    <id>https://pengtech.net/vscode/how_to_use_codepilot_free.html</id>
    <published>2025-03-13T16:00:00.000Z</published>
    <updated>2025-05-30T17:20:15.246Z</updated>
    
    
    <summary type="html">&lt;p&gt;GitHub 于 2024 年 12 月 18 日推出了适用于 Visual Studio Code 的 GitHub Copilot 免费计划。在此之前若开发者要使用 GitHub Copilot 需要付费订阅，每月订阅费用起步价为 10 美元，而经过验证的学生、教师和开源项目维护者则可以申请免费使用。&lt;/p&gt;</summary>
    
    
    
    <category term="VSCode" scheme="https://pengtech.net/categories/VSCode/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="VSCode" scheme="https://pengtech.net/tags/VSCode/"/>
    
    <category term="Codepilot" scheme="https://pengtech.net/tags/Codepilot/"/>
    
  </entry>
  
  <entry>
    <title>如何在 Linux 上运行 LolMiner 挖矿教程</title>
    <link href="https://pengtech.net/bitcoin/LolMiner_on_linux.html"/>
    <id>https://pengtech.net/bitcoin/LolMiner_on_linux.html</id>
    <published>2025-03-10T16:00:00.000Z</published>
    <updated>2025-03-12T11:06:47.273Z</updated>
    
    
    <summary type="html">&lt;p&gt;LolMiner 是一款开源的加密货币挖矿软件，它支持多种加密货币的挖掘，包括以太坊（ETH）、以太坊经典（ETC）、狗狗币（DOGE）等，同时兼容多种算法，如 Ethash、KawPow、Cuckoo Cycle 等。&lt;/p&gt;</summary>
    
    
    
    <category term="Bitcoin" scheme="https://pengtech.net/categories/Bitcoin/"/>
    
    
    <category term="LolMiner" scheme="https://pengtech.net/tags/LolMiner/"/>
    
    <category term="Dogecoin" scheme="https://pengtech.net/tags/Dogecoin/"/>
    
  </entry>
  
  <entry>
    <title>如何在 Linux 上运行 xmrig 进行 CPU 挖矿教程</title>
    <link href="https://pengtech.net/bitcoin/xmrig_setup.html"/>
    <id>https://pengtech.net/bitcoin/xmrig_setup.html</id>
    <published>2025-03-10T16:00:00.000Z</published>
    <updated>2025-03-12T11:23:49.675Z</updated>
    
    
    <summary type="html">&lt;p&gt;XMRig 是一款广受欢迎的开源加密货币挖矿软件，主要用于挖掘基于 CryptoNight 算法的加密货币，如门罗币（Monero，XMR）。&lt;/p&gt;</summary>
    
    
    
    <category term="bitcoin" scheme="https://pengtech.net/categories/bitcoin/"/>
    
    
    <category term="bitcoin" scheme="https://pengtech.net/tags/bitcoin/"/>
    
  </entry>
  
  <entry>
    <title>2026年各大主流域名服务商汇总</title>
    <link href="https://pengtech.net/sites/domain-service-providers.html"/>
    <id>https://pengtech.net/sites/domain-service-providers.html</id>
    <published>2025-03-06T16:00:00.000Z</published>
    <updated>2026-02-02T01:34:01.301Z</updated>
    
    
    <summary type="html">&lt;p&gt;在推广新的在线业务时，选择反映品牌的域名是关键步骤。好的域名容易记忆且输入快捷。一旦有了创业点子和一个令人印象深刻的名字，就需要购买和注册域名，并在服务器上托管网站。&lt;/p&gt;
&lt;p&gt;为了简化这个复杂繁琐的过程，本文列出了国内外最好的域名注册商，以及如何选择最适合你的业务的域名注册商。&lt;/p&gt;</summary>
    
    
    
    <category term="Domain" scheme="https://pengtech.net/categories/Domain/"/>
    
    
    <category term="VPS" scheme="https://pengtech.net/tags/VPS/"/>
    
    <category term="Domain" scheme="https://pengtech.net/tags/Domain/"/>
    
  </entry>
  
  <entry>
    <title>Hexo SEO 之 canonical links</title>
    <link href="https://pengtech.net/hexo/hexo_seo_and_canonical_links.html"/>
    <id>https://pengtech.net/hexo/hexo_seo_and_canonical_links.html</id>
    <published>2025-03-04T16:00:00.000Z</published>
    <updated>2025-04-28T16:24:31.181Z</updated>
    
    
    <summary type="html">&lt;p&gt;最近自己的网站突然被限流了，经过研究网站可能是被搜索引擎被惩罚了，问题可能出在重复的内容上，于是对 SEO 和 canonical link （规范链接）进行了一些研究。幸运的是，这项研究恰好及时帮助了一些有类似问题的博主，尽管原因不同。&lt;/p&gt;</summary>
    
    
    
    <category term="SEO" scheme="https://pengtech.net/categories/SEO/"/>
    
    
    <category term="SEO" scheme="https://pengtech.net/tags/SEO/"/>
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
    <category term="Seo" scheme="https://pengtech.net/tags/Seo/"/>
    
    <category term="canonical link" scheme="https://pengtech.net/tags/canonical-link/"/>
    
  </entry>
  
  <entry>
    <title>Windows 上安装与配置v2rayA</title>
    <link href="https://pengtech.net/network/install_v2rayA_on_Windows_2.html"/>
    <id>https://pengtech.net/network/install_v2rayA_on_Windows_2.html</id>
    <published>2025-01-23T16:00:00.000Z</published>
    <updated>2026-02-28T13:19:54.963Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程详细讲解了如何在 &lt;strong&gt;Windows&lt;/strong&gt; 操作系统上安装并配置 v2rayA 这款&lt;strong&gt;科学上网软件&lt;/strong&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 配置 Stellar 主题</title>
    <link href="https://pengtech.net/hexo/hexo_apply_stellar_theme.html"/>
    <id>https://pengtech.net/hexo/hexo_apply_stellar_theme.html</id>
    <published>2025-01-19T16:00:00.000Z</published>
    <updated>2026-02-15T03:18:03.967Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文讲述如何给 hexo 博客网站配置 Stellar 主题。&lt;/p&gt;
&lt;h2 id=&quot;1-安装环境说明&quot;&gt;&lt;a href=&quot;#1-安装环境说明&quot; class=&quot;headerlink&quot; title=&quot;1. 安装环境说明&quot;&gt;&lt;/a&gt;1. 安装环境说明&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;首先粘贴本教程测试使用的环境，如果在安装配置中，环境有差异，请酌情修改或调整参数．&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="hexo" scheme="https://pengtech.net/categories/tools/hexo/"/>
    
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 配置 Webstack 主题</title>
    <link href="https://pengtech.net/hexo/hexo_apply_webstack_theme.html"/>
    <id>https://pengtech.net/hexo/hexo_apply_webstack_theme.html</id>
    <published>2025-01-19T16:00:00.000Z</published>
    <updated>2026-02-20T19:05:37.725Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文讲述如何给 hexo 博客网站配置 Webstack 主题。&lt;/p&gt;
&lt;h2 id=&quot;1-安装环境说明&quot;&gt;&lt;a href=&quot;#1-安装环境说明&quot; class=&quot;headerlink&quot; title=&quot;1. 安装环境说明&quot;&gt;&lt;/a&gt;1. 安装环境说明&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;首先粘贴本教程测试使用的环境，如果在安装配置中，环境有差异，请酌情修改或调整参数．&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="hexo" scheme="https://pengtech.net/categories/tools/hexo/"/>
    
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>选择 VPS 需要考虑的关键因素及建议</title>
    <link href="https://pengtech.net/sites/vps_chosing.html"/>
    <id>https://pengtech.net/sites/vps_chosing.html</id>
    <published>2025-01-19T16:00:00.000Z</published>
    <updated>2026-02-22T22:39:11.273Z</updated>
    
    
    <summary type="html">&lt;p&gt;在当今数字时代，VPS 已经成为许多企业和个人网站的首选托管解决方案。但是在选择适合您需求的 VPS 时，有一些关键因素需要考虑。本文将介绍在面临 VPS 选择时必须知道的 17 个关键因素。&lt;/p&gt;</summary>
    
    
    
    <category term="sites" scheme="https://pengtech.net/categories/sites/"/>
    
    
    <category term="VPS" scheme="https://pengtech.net/tags/VPS/"/>
    
  </entry>
  
  <entry>
    <title>在 Linux 上安装 Flutter 开发环境</title>
    <link href="https://pengtech.net/flutter/install_flutter.html"/>
    <id>https://pengtech.net/flutter/install_flutter.html</id>
    <published>2025-01-07T16:00:00.000Z</published>
    <updated>2025-11-06T18:43:40.247Z</updated>
    
    
    <summary type="html">&lt;p&gt;Flutter 是一个流行的开源 UI 软件开发工具包，被世界各地的开发人员用来从单个代码库构建适用于移动、Web 和桌面的原生编译应用程序。&lt;/p&gt;
&lt;p&gt;在中国安装和使用 Flutter，请使用可信的 Flutter 镜像。这需要在你的机器上设置两个环境变量。以下所有示例均假定你正在使用 CFUG 的镜像。&lt;/p&gt;</summary>
    
    
    
    <category term="frontend" scheme="https://pengtech.net/categories/frontend/"/>
    
    
    <category term="flutter" scheme="https://pengtech.net/tags/flutter/"/>
    
    <category term="fedora" scheme="https://pengtech.net/tags/fedora/"/>
    
  </entry>
  
  <entry>
    <title>全平台科学上网客户端 Hiddify Next 安装与配置详解</title>
    <link href="https://pengtech.net/network/hiddifyApp_install_and_config.html"/>
    <id>https://pengtech.net/network/hiddifyApp_install_and_config.html</id>
    <published>2024-12-22T16:00:00.000Z</published>
    <updated>2025-09-06T19:22:25.794Z</updated>
    
    
    <summary type="html">&lt;p&gt;Hiddify Next 是一款开源的多平台通用代理客户端，旨在帮助用户在受互联网审查的地区自由访问网络服务。它基于 Sing-Box 构建，支持超过 20 种协议，兼容 Android、iOS、Windows、macOS 和 Linux 等操作系统。Hiddify Next 最近更名为 HiddifyApp 了，本文中 Hiddify Next 和 HiddifyApp 会交替使用，他们所指的都是同一个软件。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/categories/network/Hiddify/"/>
    
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="HiddifyApp" scheme="https://pengtech.net/tags/HiddifyApp/"/>
    
    <category term="Hiddify" scheme="https://pengtech.net/tags/Hiddify/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
    <category term="IOS" scheme="https://pengtech.net/tags/IOS/"/>
    
  </entry>
  
  <entry>
    <title>使用 postfix 和 dovecot 快速搭建邮件服务器</title>
    <link href="https://pengtech.net/linux/email_server_install.html"/>
    <id>https://pengtech.net/linux/email_server_install.html</id>
    <published>2024-10-13T16:00:00.000Z</published>
    <updated>2026-01-02T03:11:58.702Z</updated>
    
    
    <summary type="html">&lt;p&gt;在正式进行安装邮件服务器之前，我们需要对邮件服务器概念有一些基础的了解。&lt;/p&gt;</summary>
    
    
    
    <category term="backend" scheme="https://pengtech.net/categories/backend/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="email" scheme="https://pengtech.net/tags/email/"/>
    
    <category term="postfix" scheme="https://pengtech.net/tags/postfix/"/>
    
    <category term="dovecot" scheme="https://pengtech.net/tags/dovecot/"/>
    
  </entry>
  
  <entry>
    <title>一篇文章搞懂HTTPS协议</title>
    <link href="https://pengtech.net/network/understand_https.html"/>
    <id>https://pengtech.net/network/understand_https.html</id>
    <published>2024-10-13T16:00:00.000Z</published>
    <updated>2025-08-26T23:46:28.161Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-HTTP-协议&quot;&gt;&lt;a href=&quot;#1-HTTP-协议&quot; class=&quot;headerlink&quot; title=&quot;1. HTTP 协议&quot;&gt;&lt;/a&gt;1. HTTP 协议&lt;/h2&gt;&lt;p&gt;HTTP 协议是 Hyper Text Transfer Protocol（超文本传输协议）的缩写,是用于从万维网（WWW:World Wide Web ）服务器传输超文本到本地浏览器的传送协议。&lt;/p&gt;
&lt;p&gt;HTTP 是一个基于 TCP&amp;#x2F;IP 通信协议来传递数据，HTTP 协议承载的数据类型包括 HTML 文件,Javascript, css, 图片，json，yaml, pdf 等等数据类型。&lt;/p&gt;
&lt;p&gt;HTTP 是一个属于应用层协议，应用层有专门的应用服务器，例如: Nginx, Apache HTTP Server, Candy, Apache Tomcat, IIS, Weblogic、WebSphere, jetty等等。&lt;/p&gt;
&lt;p&gt;用户也可以使用各种语言提供的网络库，框架实现自己的 HTTP 服务.&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>记一次关于Ansible Shared connection to remotehost closed 问题的排查过程</title>
    <link href="https://pengtech.net/ansible/ansible_trouble_shooting.html"/>
    <id>https://pengtech.net/ansible/ansible_trouble_shooting.html</id>
    <published>2024-10-03T16:00:00.000Z</published>
    <updated>2025-05-25T14:42:59.252Z</updated>
    
    
    <summary type="html">&lt;p&gt;今天花了几乎一天的时间排查一个 Ansible 连接异常断开的问题。翻遍了几乎所有的帖子都没有找到正确的答案，经过不断的尝试，终于把这个问题解决了，特此记录下来，期望能帮助到同样正在被这个问题折磨的人。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="ansible" scheme="https://pengtech.net/categories/devops/ansible/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Ansible" scheme="https://pengtech.net/tags/Ansible/"/>
    
    <category term="golang" scheme="https://pengtech.net/tags/golang/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上添加 swap 分区</title>
    <link href="https://pengtech.net/linux/add_swap_space_on_linux.html"/>
    <id>https://pengtech.net/linux/add_swap_space_on_linux.html</id>
    <published>2024-10-03T16:00:00.000Z</published>
    <updated>2024-10-04T23:37:39.894Z</updated>
    
    
    <summary type="html">&lt;p&gt;防止应用程序出现内存不足错误的一种方法是向服务器添加一些交换空间。在本指南中，我们将介绍如何向 Almalinux 服务器添加 swap 分区。&lt;/p&gt;
&lt;h2 id=&quot;1-什么是-Swap？&quot;&gt;&lt;a href=&quot;#1-什么是-Swap？&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是 Swap？&quot;&gt;&lt;/a&gt;1. 什么是 Swap？&lt;/h2&gt;&lt;p&gt;swap 分区是硬盘存储空间的一部分，专门留给操作系统用来临时存储 RAM 中无法再保存的数据。这可以增加服务器在工作内存中可以保存的信息量，但有一些注意事项。硬盘上的交换空间主要在 RAM 中没有足够的空间来保存正在使用的应用程序数据时使用。&lt;/p&gt;
&lt;p&gt;写入磁盘的信息将比保存在 RAM 中的信息慢得多，但操作系统会倾向于将正在运行的应用程序数据保留在内存中，并使用交换空间来存储较旧的数据。总的来说，在系统 RAM 耗尽时，将交换空间作为后备方案，可以很好地防止出现内存不足异常。&lt;/p&gt;</summary>
    
    
    
    <category term="backend" scheme="https://pengtech.net/categories/backend/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>华为电脑常用键盘快捷键</title>
    <link href="https://pengtech.net/windows/huawei_computer_hotkeys.html"/>
    <id>https://pengtech.net/windows/huawei_computer_hotkeys.html</id>
    <published>2024-10-03T16:00:00.000Z</published>
    <updated>2024-10-05T05:18:54.354Z</updated>
    
    
    <summary type="html">&lt;p&gt;华为电脑键盘布局与其他电脑有一些差别，最大的差别是，它将 Home, End, Pagedown, Pageup 四个物理按键去掉了，在键盘中间靠上方布置了一个摄像头。&lt;/p&gt;
&lt;p&gt;先不评价这种设计的优劣，今天主要了解这种布局带来的快捷键使用上的变化， 以尽快适应这种变化。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>关于 Almalinux Linux 安全加固的 13 条建议</title>
    <link href="https://pengtech.net/linux/almalinux_sercurity_enhancement.html"/>
    <id>https://pengtech.net/linux/almalinux_sercurity_enhancement.html</id>
    <published>2024-09-27T16:00:00.000Z</published>
    <updated>2024-09-29T14:56:54.866Z</updated>
    
    
    <summary type="html">&lt;p&gt;本帮助手册旨在指导系统管理人员或安全检查人员进行 Linux 操作系统的安全合规性检查和加固。&lt;/p&gt;</summary>
    
    
    
    <category term="backend" scheme="https://pengtech.net/categories/backend/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Almalinux" scheme="https://pengtech.net/tags/Almalinux/"/>
    
  </entry>
  
  <entry>
    <title>如何在 Almalinux 上为 Nginx 安装TLS/SSL证书并开启自动续订</title>
    <link href="https://pengtech.net/network/secure_nginx_with_let_s_encrypt_on_almalinux.html"/>
    <id>https://pengtech.net/network/secure_nginx_with_let_s_encrypt_on_almalinux.html</id>
    <published>2024-09-18T16:00:00.000Z</published>
    <updated>2024-09-19T21:00:29.542Z</updated>
    
    
    <summary type="html">&lt;p&gt;Let’s Encrypt 是一家证书颁发机构 (CA)，它提供了一种获取和安装免费 &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs&quot;&gt;TLS&amp;#x2F;SSL 证书&lt;/a&gt;的简便方法，从而在 Web 服务器上启用加密 HTTPS。它通过提供软件客户端 Certbot 来简化流程，该客户端尝试自动执行大多数（如果不是全部）所需步骤。目前，在 Apache 和 Nginx 上，获取和安装证书的整个过程都是完全自动化的。&lt;/p&gt;
&lt;p&gt;在本教程中，我们将使用 Certbot 为 Almalinux 9 上的 Nginx 获取免费的 SSL 证书，并将证书设置为自动更新。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
    <category term="SSL" scheme="https://pengtech.net/tags/SSL/"/>
    
    <category term="TLS" scheme="https://pengtech.net/tags/TLS/"/>
    
  </entry>
  
  <entry>
    <title>为 Astro 网站添加身份验证鉴权功能</title>
    <link href="https://pengtech.net/astro/astro_authentication.html"/>
    <id>https://pengtech.net/astro/astro_authentication.html</id>
    <published>2024-09-12T16:00:00.000Z</published>
    <updated>2024-09-13T05:41:58.882Z</updated>
    
    
    <summary type="html">&lt;p&gt;Clerk 号称是最开箱即用的登录鉴权 serverless 服务，确实可以帮助开发者避免前期重复无聊的鉴权逻辑从而快速开发一些小玩具。&lt;/p&gt;
&lt;p&gt;Astro 是一个用于构建快速、轻量级网站的现代前端框架，特别适合静态网站生成和内容丰富的网站，如博客、文档站点等。&lt;/p&gt;
&lt;p&gt;今天我们要讲解的是在基于 Astro 框架构建的网站中，如何使用 Clerk 快速地为网站添加用户身份鉴证和鉴权功能。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Astro" scheme="https://pengtech.net/categories/tools/Astro/"/>
    
    
    <category term="Astro" scheme="https://pengtech.net/tags/Astro/"/>
    
    <category term="Comments" scheme="https://pengtech.net/tags/Comments/"/>
    
    <category term="Giscus" scheme="https://pengtech.net/tags/Giscus/"/>
    
  </entry>
  
  <entry>
    <title>在身份验证鉴权与业务分离的系统中, 如何实现根据用户属性查询业务信息?</title>
    <link href="https://pengtech.net/product/query_on_auth_and_business_decoupled_systems.html"/>
    <id>https://pengtech.net/product/query_on_auth_and_business_decoupled_systems.html</id>
    <published>2024-09-12T16:00:00.000Z</published>
    <updated>2024-09-13T05:41:22.808Z</updated>
    
    
    <summary type="html">&lt;p&gt;在身份验证与业务逻辑分离的系统中，如果需求要求根据用户的属性，例如名称、用户组、年龄、角色等非唯一标识符进行业务信息查询，常见的解决方案是将这些&lt;strong&gt;属性信息与唯一标识符（如 user_id）&lt;/strong&gt;进行关联，通过索引或联合查询来实现。以下是几种具体实现方案：&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    <category term="marketing" scheme="https://pengtech.net/categories/others/marketing/"/>
    
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
    <category term="marketing" scheme="https://pengtech.net/tags/marketing/"/>
    
  </entry>
  
  <entry>
    <title>使用 Giscus 为 Astro 网站添加评论功能</title>
    <link href="https://pengtech.net/astro/astro_blog_comments.html"/>
    <id>https://pengtech.net/astro/astro_blog_comments.html</id>
    <published>2024-09-11T16:00:00.000Z</published>
    <updated>2024-09-12T05:27:39.357Z</updated>
    
    
    <summary type="html">&lt;p&gt;考虑到每篇博客都有可能有错误的地方，需要用户及时反馈，我能相应的做出修改，逐渐完善整个博客系统，所以评论功能对我来说非常重要。&lt;/p&gt;
&lt;p&gt;目前Astro添加评论功能的方式不多，因为毕竟是一个比较新的框架，使用像 Astro 这样的静态站点生成器，添加评论系统可能会有点困难，因为您的内容主要托管在 Git 存储库内的 Markdown 文件中。如果你使用 Astro 搭建博客并希望在帖子中添加评论，本指南将演示如何使用 Giscus 在几分钟内完成操作。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Astro" scheme="https://pengtech.net/categories/tools/Astro/"/>
    
    
    <category term="Astro" scheme="https://pengtech.net/tags/Astro/"/>
    
    <category term="Comments" scheme="https://pengtech.net/tags/Comments/"/>
    
    <category term="Giscus" scheme="https://pengtech.net/tags/Giscus/"/>
    
  </entry>
  
  <entry>
    <title>使用 Astro 快速搭建自己的博客系统</title>
    <link href="https://pengtech.net/astro/astro_install_and_configure.html"/>
    <id>https://pengtech.net/astro/astro_install_and_configure.html</id>
    <published>2024-09-08T16:00:00.000Z</published>
    <updated>2025-03-22T15:29:55.110Z</updated>
    
    
    <summary type="html">&lt;p&gt;Astro 是一款现代化的前端框架，由开发团队 Snowpack 创建，旨在提供一种简单而强大的方式来构建快速、可靠且易于维护的 Web 应用程序。&lt;br&gt;Astro 支持静态站点生成，这意味着在构建时生成 HTML 文件，从而提高网站的加载速度和性能。&lt;/p&gt;
&lt;p&gt;今天我们主要讲述如何使用 Astro 快速搭建自己的博客系统。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="Astro" scheme="https://pengtech.net/categories/tools/Astro/"/>
    
    
    <category term="Astro" scheme="https://pengtech.net/tags/Astro/"/>
    
  </entry>
  
  <entry>
    <title>Linux systemd 服务详解</title>
    <link href="https://pengtech.net/linux/linux_systemd_service_explanation.html"/>
    <id>https://pengtech.net/linux/linux_systemd_service_explanation.html</id>
    <published>2024-09-03T16:00:00.000Z</published>
    <updated>2025-05-28T21:23:45.480Z</updated>
    
    
    <summary type="html">&lt;p&gt;Linux 系统中也有“服务”这一说法, 也即 systemd service unit，通过服务我们可以便捷地管理一些程序功能，也可以作为程序开机自启的一个手段之一。今天我来分享一下如何创建自己简易的 Linux 服务。本文主要讲述如何在 Linux 下自定义 service.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>Vultr 上安装并配置一台VMESS/v2ray 服务器</title>
    <link href="https://pengtech.net/network/v2ray_server_install.html"/>
    <id>https://pengtech.net/network/v2ray_server_install.html</id>
    <published>2024-09-03T16:00:00.000Z</published>
    <updated>2026-02-22T22:37:22.487Z</updated>
    
    
    <summary type="html">&lt;p&gt;VMess 协议是由 V2Ray （科学上网软件）创立并使用于 V2Ray 的加密传输协议，如同 Shadowsocks 一样为了对抗审查的深度包检测而研发的。在 V2Ray 上客户端与服务器的通信主要是通过 VMess 协议通信。&lt;/p&gt;
&lt;p&gt;本文中采用Vultr VPS，一款性能优越、配置的VPS, 其拥有广泛的数据中心分布、丰富的功能和便捷的支付方式，成为众多用户的首选。无论是个人学习、小型项目还是大型企业应用，Vultr VPS 都能提供稳定可靠的服务支持。&lt;/p&gt;
&lt;p&gt;拥有一台Vultr VPS可以做很多事情，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pengtech.net/vscode/cloud_ide_on_vultr.html&quot;&gt;Vultr + Code-server 自建 Cloud IDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pengtech.net/wordpress/deploy_wordpress_on_vps.html&quot;&gt;Vultr 部署 Wordpress 博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pengtech.net/k8s/kubernates_on_vultr.html&quot;&gt;Vultr 上快速搭建 kubernetes 集群&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更多玩法等待您来解锁。&lt;/p&gt;
&lt;p&gt;本文主要讲解在 Vultr VPS上，如何使用自动化脚本和手动两种方式，安装并配置一台 v2ray 服务器（也称为 vmess server）。以及如何通过v2rayA, v2rayN, v2RayNG连接 v2ray 服务器并访问google和chatGPT。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="Vultr" scheme="https://pengtech.net/tags/Vultr/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>Helm 应用升级与回滚</title>
    <link href="https://pengtech.net/k8s/helm_release_upgrade_and_rollback.html"/>
    <id>https://pengtech.net/k8s/helm_release_upgrade_and_rollback.html</id>
    <published>2024-09-02T16:00:00.000Z</published>
    <updated>2024-09-03T08:38:17.468Z</updated>
    
    
    <summary type="html">&lt;p&gt;在本教程中，我们首先会使用helm部署一个mysql实例，然后尝试升级mysql到更高版本，并魔力升级出错后回滚该次升级。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="k8s" scheme="https://pengtech.net/categories/devops/k8s/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="k8s" scheme="https://pengtech.net/tags/k8s/"/>
    
    <category term="Helm" scheme="https://pengtech.net/tags/Helm/"/>
    
  </entry>
  
  <entry>
    <title>Helm v3 命令详解</title>
    <link href="https://pengtech.net/k8s/helm_v3_cli_explanation.html"/>
    <id>https://pengtech.net/k8s/helm_v3_cli_explanation.html</id>
    <published>2024-09-02T16:00:00.000Z</published>
    <updated>2024-09-03T20:56:51.035Z</updated>
    
    
    <summary type="html">&lt;p&gt;Helm 是云原生领域最火热的应用管理工具。众所周知 Kubernetes 是自动化的容器管理平台，然而 Kubernetes 并没有抽象出应用的概念，通常应用的描述是非常复杂的，一个应用可能是由多种资源组成。&lt;/p&gt;
&lt;p&gt;我们通过多次 kubectl apply -f 上述资源，但是后续无法有效管理应用所包含的资源。这也正是 Helm 要解决的难题，更好地帮助用户定义、部署以及管理应用。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="k8s" scheme="https://pengtech.net/categories/devops/k8s/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="k8s" scheme="https://pengtech.net/tags/k8s/"/>
    
    <category term="Helm" scheme="https://pengtech.net/tags/Helm/"/>
    
  </entry>
  
  <entry>
    <title>如何安装 helm 命令行工具</title>
    <link href="https://pengtech.net/k8s/install_helm_3.html"/>
    <id>https://pengtech.net/k8s/install_helm_3.html</id>
    <published>2024-09-01T16:00:00.000Z</published>
    <updated>2024-09-01T21:32:42.011Z</updated>
    
    
    <summary type="html">&lt;p&gt;本指南介绍如何安装 Helm CLI。&lt;/p&gt;
&lt;p&gt;Helm 项目提供了两种获取和安装 Helm 的方法。从源代码或预构建的二进制版本安装，这些是获取 Helm 版本的官方方法。除此之外，Helm 社区还提供了通过不同包管理器安装 Helm 的方法。通过这些方法进行安装的方法可以在官方方法下方找到。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="k8s" scheme="https://pengtech.net/categories/devops/k8s/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="k8s" scheme="https://pengtech.net/tags/k8s/"/>
    
    <category term="Helm" scheme="https://pengtech.net/tags/Helm/"/>
    
  </entry>
  
  <entry>
    <title>Vultr 上快速搭建 kubernetes 集群</title>
    <link href="https://pengtech.net/k8s/kubernates_on_vultr.html"/>
    <id>https://pengtech.net/k8s/kubernates_on_vultr.html</id>
    <published>2024-08-30T16:00:00.000Z</published>
    <updated>2025-02-21T04:21:06.842Z</updated>
    
    
    <summary type="html">&lt;p&gt;上前天获得了 &lt;a href=&quot;https://www.vultr.com/?ref=9651323-9J&quot;&gt;https://www.vultr.com&lt;/a&gt; 300 美金的试用金，限期 1 个月。。&lt;/p&gt;
&lt;p&gt;这两天一直在琢磨如何把这 300 美金霍霍完，免得过期浪费。于是把之前一些好玩的东西从家里的服务器迁移到了 Vultr 上，前天用 Vultr vps 搭建了一个了一个 WEB IDE, 过程记录在这篇文章里&lt;a href=&quot;https://pengtech.net/vscode/cloud_ide_on_vultr.html&quot;&gt;Vultr + Code-server 自建 Cloud IDE&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;昨天在 Vultr VPS 上使用 wordpress 搭建了一个博客，详情参考这篇文章 &lt;a href=&quot;https://pengtech.net/wordpress/deploy_wordpress_on_vps.html&quot;&gt;Vultr 部署 Wordpress 博客&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="k8s" scheme="https://pengtech.net/categories/devops/k8s/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="k8s" scheme="https://pengtech.net/tags/k8s/"/>
    
  </entry>
  
  <entry>
    <title>如何安装 kubectl 命令行工具</title>
    <link href="https://pengtech.net/k8s/linux_install_kubectl.html"/>
    <id>https://pengtech.net/k8s/linux_install_kubectl.html</id>
    <published>2024-08-29T16:00:00.000Z</published>
    <updated>2025-05-01T04:37:02.234Z</updated>
    
    
    <summary type="html">&lt;p&gt;kubectl 是 Kubernetes 的命令行工具，用于与 Kubernetes 集群进行交互。它允许用户部署和管理容器化应用程序、查看集群资源、执行故障排查以及进行其他管理任务。kubectl 通过与 Kubernetes API 服务器通信来执行这些操作，API 服务器是 Kubernetes 集群的控制平面的一部分，负责处理集群中所有资源的请求。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="k8s" scheme="https://pengtech.net/categories/devops/k8s/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="k8s" scheme="https://pengtech.net/tags/k8s/"/>
    
  </entry>
  
  <entry>
    <title>Vultr 部署 Wordpress 博客</title>
    <link href="https://pengtech.net/wordpress/deploy_wordpress_on_vps.html"/>
    <id>https://pengtech.net/wordpress/deploy_wordpress_on_vps.html</id>
    <published>2024-08-28T16:00:00.000Z</published>
    <updated>2025-05-28T04:12:28.534Z</updated>
    
    
    <summary type="html">&lt;p&gt;昨天我获得了 &lt;a href=&quot;https://www.vultr.com/?ref=9651323-9J&quot;&gt;Vultr.com&lt;/a&gt; 300 美金的试用金，限期 1 个月。&lt;/p&gt;
&lt;p&gt;这两天一直在琢磨如何把这 300 美金霍霍完，免得过期浪费。于是把之前一些好玩的东西从家里的服务器迁移到了 Vultr 上，昨天用 Vultr vps 搭建了一个了一个 WEB IDE, 过程记录在这篇文章里&lt;a href=&quot;https://pengtech.net/vscode/cloud_ide_on_vultr.html&quot;&gt;Vultr + Code-server 自建 Cloud IDE&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Vultr 账号申请以及创建VPS过程参考这篇文章 &lt;a href=&quot;https://pengtech.net/linux/vultr_account_creation.html&quot;&gt;快速注册 Vultr 账号以及创建 Vultr VPS&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;今天用 Vultr vps 结合 wordpress 搭建了一个动态博客网站（当然 wordpress 不只是能搭建博客这么简单）， 顺便将之前的文章更新了一遍。以下是搭建的全过程。&lt;/p&gt;
&lt;p&gt;明天打算将 kubernetes 集群也搬上 Vultr，关注我的博客，鹏叔将利用这波优惠，继续探索一些新花样。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
    <category term="Vultr" scheme="https://pengtech.net/tags/Vultr/"/>
    
    <category term="blog" scheme="https://pengtech.net/tags/blog/"/>
    
  </entry>
  
  <entry>
    <title>快速注册 Vultr 账号以及创建 Vultr VPS</title>
    <link href="https://pengtech.net/linux/vultr_account_creation.html"/>
    <id>https://pengtech.net/linux/vultr_account_creation.html</id>
    <published>2024-08-27T16:00:00.000Z</published>
    <updated>2024-12-14T18:27:36.580Z</updated>
    
    
    <summary type="html">&lt;p&gt;&lt;a href=&quot;https://www.vultr.com/?ref=9651323-9J&quot;&gt;Vultr&lt;/a&gt; 作为很多人的入门 VPS，有着良好的口碑，尤其在建站方面，稳定。Vultr 提供众多应用一键安装模板，但是由于英文界面，加上新手很多新手不知道如何去操作，这里写下详细新手图文教程。另外请持续关注博客，鹏叔将利用这波优惠，探索一些新花样。&lt;/p&gt;
&lt;p&gt;Vultr 目前正在做活动，新用户访问&lt;a href=&quot;https://www.vultr.com/?ref=9651323-9J&quot;&gt;https://www.vultr.com&lt;/a&gt;进行注册，可以获得为期一个月金额300美金的试用金，不过可能过了这段时间就没有了。&lt;/p&gt;</summary>
    
    
    
    <category term="backend" scheme="https://pengtech.net/categories/backend/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Vultr" scheme="https://pengtech.net/tags/Vultr/"/>
    
  </entry>
  
  <entry>
    <title>Vultr + Code-server 自建 Cloud IDE</title>
    <link href="https://pengtech.net/vscode/cloud_ide_on_vultr.html"/>
    <id>https://pengtech.net/vscode/cloud_ide_on_vultr.html</id>
    <published>2024-08-27T16:00:00.000Z</published>
    <updated>2025-08-26T04:52:47.543Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Web IDE，顾名思义就是云端开发环境，把 IDE 部署在云上。打开浏览器，连上云 IDE，就可以方便敲代码跑程序。想象一下，带上一台 iPad 或者华为、小米平板，配上蓝牙键盘，坐在阴凉下，或者沙滩上，吹着海风，面朝大海敲代码，多么惬意。&lt;/p&gt;
&lt;p&gt;另外如果选择的是国外的 VPS, 那么额外的好处就是，你的 IDE 天然的就在墙外面了，下载各种软件，依赖包，那些奇奇怪怪的问题就没有了，而且你也不存在违规的风险。&lt;/p&gt;
&lt;p&gt;其实 Web IDE 很早就有，但那些都只能说是玩具，直到现在才有一些不错的产品推出，比如微软家的 Visual Studio Codespaces、coding.net 的 Cloud Studio、华为云 CloudIDE 等。不过，这些产品要么还在测试，要么免费用会有很多限制， 付费的产品价格不菲，目前还不是非常方便。&lt;/p&gt;
&lt;p&gt;如果想要低成本愉快地使用，自己动手搭建是一个不错的方案。对配置要求不高的话，一年几十块一百多块就能买到廉价的 VPS 或者云主机就足够了。&lt;/p&gt;
&lt;p&gt;自己 DIY 一套 Web IDE 比较成熟的方案有两个，code-server 和 Theia。毕竟 code-server 是基于 VS code 魔改的，与 vs code 的插件体系兼容性更好。所以更推荐 code-server。Theia 虽然有自己的插件体系，也宣称兼容 vs code 的插件，也是一套优秀的 WEB IDE 解决方案，但是兼容程度谁知道呢？&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Vultr" scheme="https://pengtech.net/tags/Vultr/"/>
    
    <category term="vscode" scheme="https://pengtech.net/tags/vscode/"/>
    
  </entry>
  
  <entry>
    <title>在Linux（AlmaLinux 9）上安装MariaDB</title>
    <link href="https://pengtech.net/database/install_mariadb_on_linux.html"/>
    <id>https://pengtech.net/database/install_mariadb_on_linux.html</id>
    <published>2024-08-25T16:00:00.000Z</published>
    <updated>2025-11-22T10:47:56.061Z</updated>
    
    
    <summary type="html">&lt;p&gt;当 MariaDB Server 的前身 MySQL 于 2009 年被 Oracle 收购时，MySQL 创始人 Michael “Monty” Widenius 出于对 Oracle 管理权的担忧而分叉了该项目，并将新项目命名为 MariaDB。 MySQL 以他的第一个女儿 My 命名，而 MariaDB 则以他的第二个女儿 Maria 命名。&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="mariadb" scheme="https://pengtech.net/categories/database/mariadb/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
    <category term="MariaDB" scheme="https://pengtech.net/tags/MariaDB/"/>
    
    <category term="Almalinux" scheme="https://pengtech.net/tags/Almalinux/"/>
    
  </entry>
  
  <entry>
    <title>Linux（ Almalinux 9）上 nginx 安装教程</title>
    <link href="https://pengtech.net/nginx/nginx_installation_on_almalinux.html"/>
    <id>https://pengtech.net/nginx/nginx_installation_on_almalinux.html</id>
    <published>2024-08-25T16:00:00.000Z</published>
    <updated>2025-04-30T17:49:31.020Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;h3 id=&quot;1-1-什么是-nginx&quot;&gt;&lt;a href=&quot;#1-1-什么是-nginx&quot; class=&quot;headerlink&quot; title=&quot;1.1. 什么是 nginx&quot;&gt;&lt;/a&gt;1.1. 什么是 nginx&lt;/h3&gt;&lt;p&gt;Nginx 是一款高性能的 http 服务器&amp;#x2F;反向代理服务器及电子邮件（IMAP&amp;#x2F;POP3）代理服务器。&lt;/p&gt;
&lt;p&gt;由俄罗斯的程序设计师 Igor Sysoev 所开发，官方测试 nginx 能够支支撑 5 万并发链接，&lt;/p&gt;
&lt;p&gt;并且 cpu、内存等资源消耗却非常低，运行非常稳定。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>golang gin 使用swagger生成接口文档</title>
    <link href="https://pengtech.net/golang/gin-swagger.html"/>
    <id>https://pengtech.net/golang/gin-swagger.html</id>
    <published>2024-08-22T16:00:00.000Z</published>
    <updated>2024-09-06T14:32:46.546Z</updated>
    
    
    <summary type="html">&lt;p&gt;有时候一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
    <category term="swagger" scheme="https://pengtech.net/tags/swagger/"/>
    
  </entry>
  
  <entry>
    <title>GoLang调用 google translate API 实现中英互译</title>
    <link href="https://pengtech.net/golang/golang_google_translate_api.html"/>
    <id>https://pengtech.net/golang/golang_google_translate_api.html</id>
    <published>2024-08-12T16:00:00.000Z</published>
    <updated>2024-08-13T23:01:32.837Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何使用golang调用google translate API。其中也详细介绍了使用google translate API的前提条件设置google ADC(Application Default Credentials )。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
    <category term="GORM" scheme="https://pengtech.net/tags/GORM/"/>
    
  </entry>
  
  <entry>
    <title>本地编译并启动 element-web</title>
    <link href="https://pengtech.net/matrix/build_element-web_on_local.html"/>
    <id>https://pengtech.net/matrix/build_element-web_on_local.html</id>
    <published>2024-08-09T16:00:00.000Z</published>
    <updated>2024-08-10T04:46:41.956Z</updated>
    
    
    <summary type="html">&lt;p&gt;Element-web（以前称为Vector和Riot）是一个使用Matrix React SDK构建的Matrix web客户端。&lt;/p&gt;
&lt;p&gt;上一篇文章&lt;a href=&quot;https://pengtech.net/matrix/setup_matrix_homeserver.html&quot;&gt;使用 Dendrite 搭建 Matrix Homeserver&lt;/a&gt;, 我们讲述了安装Matrix HomeServer的过程。&lt;/p&gt;
&lt;p&gt; 本文主要讲述如何在本地将其编译成docker镜像，并启动Element-web. 两种结合起来一个完整的聊天软件就建立起来了。&lt;/p&gt;</summary>
    
    
    
    <category term="IM" scheme="https://pengtech.net/categories/IM/"/>
    
    
    <category term="Matrix" scheme="https://pengtech.net/tags/Matrix/"/>
    
    <category term="element-web" scheme="https://pengtech.net/tags/element-web/"/>
    
  </entry>
  
  <entry>
    <title>Windows 上安装与配置v2rayA</title>
    <link href="https://pengtech.net/network/install_v2rayA_on_Windows.html"/>
    <id>https://pengtech.net/network/install_v2rayA_on_Windows.html</id>
    <published>2024-07-29T16:00:00.000Z</published>
    <updated>2026-02-28T13:20:08.185Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程详细讲解了如何在 &lt;strong&gt;Windows&lt;/strong&gt; 操作系统上安装并配置 v2rayA 这款&lt;strong&gt;科学上网软件&lt;/strong&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>Android 上安装与配置v2rayNG</title>
    <link href="https://pengtech.net/network/v2rayNG_install_and_config.html"/>
    <id>https://pengtech.net/network/v2rayNG_install_and_config.html</id>
    <published>2024-07-28T16:00:00.000Z</published>
    <updated>2026-02-22T22:38:11.091Z</updated>
    
    
    <summary type="html">&lt;p&gt;v2rayNG 是一款专为 Android 设计的 V2Ray 客户端应用程序，它提供了一个简洁易用的图形用户界面，使用户能够方便地在移动设备上配置和使用V2Ray代理服务。&lt;br&gt;支持多种传输协议和网络协议，包括 VMess、VLESS、Shadowsocks、Socks 等，能够帮助用户绕过网络封锁，保护隐私和安全，提升网络访问体验。用户可以根据自己的需求选择合适的协议和代理方式来进行网络代理。适用于安卓手机及支持部分基于安卓系统的电视（TV）或者电视盒子。&lt;/p&gt;
&lt;p&gt;本文将详细讲述如何在 Android 系统上&lt;strong&gt;快速安装&lt;/strong&gt;、配置和使用 v2rayNG 这款科学上网应用。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
    <category term="v2rayNG" scheme="https://pengtech.net/tags/v2rayNG/"/>
    
  </entry>
  
  <entry>
    <title>使用 JavaScript 开启被禁用的网页选择功能</title>
    <link href="https://pengtech.net/javascript/js_allow_selection.html"/>
    <id>https://pengtech.net/javascript/js_allow_selection.html</id>
    <published>2024-07-25T16:00:00.000Z</published>
    <updated>2024-07-26T15:39:10.157Z</updated>
    
    
    <summary type="html">&lt;p&gt;现在有很多的网站关闭了拷贝功能，下面介绍一种方法，将拷贝功能打开。&lt;/p&gt;
&lt;p&gt;禁止拷贝的原来实际上是将是给文本元素添加了disabled属性，将该属性祛除即可。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="javascript" scheme="https://pengtech.net/categories/web/javascript/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>使用 Dendrite 搭建 Matrix Homeserver</title>
    <link href="https://pengtech.net/matrix/setup_matrix_homeserver.html"/>
    <id>https://pengtech.net/matrix/setup_matrix_homeserver.html</id>
    <published>2024-07-22T16:00:00.000Z</published>
    <updated>2024-08-10T04:44:29.104Z</updated>
    
    
    <summary type="html">&lt;p&gt;Dendrite 是 Matrix 协议的一个开源实现，旨在提供一个轻量级、可扩展且易于部署的 Matrix 服务器。Matrix 是一个开源的通信协议和开放标准，用于构建去中心化的实时通信系统。它支持多种类型的通信，包括文本消息、语音通话、视频通话以及文件共享等。Dendrite 作为 Matrix 生态系统中的一个重要组件，为开发者和运营商提供了构建自己通信服务的工具。&lt;/p&gt;</summary>
    
    
    
    <category term="IM" scheme="https://pengtech.net/categories/IM/"/>
    
    
    <category term="Matrix" scheme="https://pengtech.net/tags/Matrix/"/>
    
  </entry>
  
  <entry>
    <title>PostgreSQL 数据库版本升级实战</title>
    <link href="https://pengtech.net/database/postgresql_upgrade.html"/>
    <id>https://pengtech.net/database/postgresql_upgrade.html</id>
    <published>2024-07-14T16:00:00.000Z</published>
    <updated>2024-08-17T01:49:00.841Z</updated>
    
    
    <summary type="html">&lt;p&gt;PostgreSQL 版本发布规则，一年一个大版本，一个季度一个小版本；PG 遇到的 BUG 问题，社区会很快进行修复，并在下一个版本中发布，因此有必要进行对数据库版本升级，避免触发已知的 BUG 带来业务系统的不稳定。本文主要分享一下，PG 小版本升级、跨版本升级和借助逻辑复制进行数据库升级。&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>16 款精美的hexo 博客主题推荐</title>
    <link href="https://pengtech.net/hexo/hexo_theme_recommendation.html"/>
    <id>https://pengtech.net/hexo/hexo_theme_recommendation.html</id>
    <published>2024-07-14T16:00:00.000Z</published>
    <updated>2026-02-15T12:58:20.796Z</updated>
    
    
    <summary type="html">&lt;p&gt;根据 Github 影响力,是否在积极维护以及实际使用体验筛选出 16 款精致的 Hexo 主题。欢迎评论区留言，告诉大家你最喜欢的主题。&lt;/p&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="hexo" scheme="https://pengtech.net/categories/tools/hexo/"/>
    
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 配置 Icarus 主题</title>
    <link href="https://pengtech.net/hexo/hexo_apply_icarus_theme.html"/>
    <id>https://pengtech.net/hexo/hexo_apply_icarus_theme.html</id>
    <published>2024-07-08T16:00:00.000Z</published>
    <updated>2026-02-15T03:18:16.884Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文讲述如何给 hexo 博客网站配置 Icarus 主题。&lt;/p&gt;
&lt;h2 id=&quot;1-安装环境说明&quot;&gt;&lt;a href=&quot;#1-安装环境说明&quot; class=&quot;headerlink&quot; title=&quot;1. 安装环境说明&quot;&gt;&lt;/a&gt;1. 安装环境说明&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;首先粘贴本教程测试使用的环境，如果在安装配置中，环境有差异，请酌情修改或调整参数．&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="hexo" scheme="https://pengtech.net/categories/tools/hexo/"/>
    
    
    <category term="Hexo" scheme="https://pengtech.net/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>如何调试Angular应用程序</title>
    <link href="https://pengtech.net/angular/angular_debug.html"/>
    <id>https://pengtech.net/angular/angular_debug.html</id>
    <published>2024-07-06T16:00:00.000Z</published>
    <updated>2026-02-22T22:34:23.392Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文演示如何调试 Angular 应用程序。在本文中，我们将讨论。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何在 VS Code 中调试 Angular 应用程序&lt;/li&gt;
&lt;li&gt;如何在 Chrome Dev Tool 中调试 Angular 应用程序&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular 中的全局错误处理</title>
    <link href="https://pengtech.net/angular/angular_global_error_handling.html"/>
    <id>https://pengtech.net/angular/angular_global_error_handling.html</id>
    <published>2024-07-04T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.385Z</updated>
    
    
    <summary type="html">&lt;p&gt;错误处理是构建强大而可靠的 Angular 应用程序的关键方面。处理错误可以有效改善用户体验并帮助开发人员识别和修复问题。以下是 Angular 中的一些错误处理策略&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular HTTP 拦截器：配置多个HTTP拦截器和 4 个拦截器代码示例</title>
    <link href="https://pengtech.net/angular/angular_multiple_interceptors.html"/>
    <id>https://pengtech.net/angular/angular_multiple_interceptors.html</id>
    <published>2024-07-04T16:00:00.000Z</published>
    <updated>2024-07-10T22:25:55.580Z</updated>
    
    
    <summary type="html">&lt;p&gt;拦截器在 Angular 中用于拦截 HttpRequest&amp;#x2F;HttpResponse。我们可以使用拦截器来记录 HttpRequest&amp;#x2F;HttpResponse 日志，或者在将其传递给服务器之前添加其他 HttpRequest 头部信息，以及更改请求主体或更改从服务器收到的响应的格式等。在本文中，我将解释如何使用多个拦截器以及拦截器的 6 种最常见用法（附示例）。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>如何使用VS Code调试Go代码</title>
    <link href="https://pengtech.net/golang/vscode_debug_golang.html"/>
    <id>https://pengtech.net/golang/vscode_debug_golang.html</id>
    <published>2024-07-03T16:00:00.000Z</published>
    <updated>2024-09-01T00:50:47.709Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程将讨论使用 VS Code 调试 Go 代码所需的步骤。首先我们需要安装扩展、分析工具和调试器。&lt;/p&gt;
&lt;p&gt;然后，我们将创建一个示例应用程序。最后，我们将探索如何使用断点和条件断点。&lt;/p&gt;
&lt;p&gt;凭借这套技能，您将能够更好地理解应用程序在代码执行的特定点上的值和状态。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>Angular结合TinyMCE实现富文本编辑器</title>
    <link href="https://pengtech.net/angular/angular_tinyMCE_editor.html"/>
    <id>https://pengtech.net/angular/angular_tinyMCE_editor.html</id>
    <published>2024-06-23T16:00:00.000Z</published>
    <updated>2024-08-23T05:24:05.993Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-背景介绍&quot;&gt;&lt;a href=&quot;#1-背景介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 背景介绍&quot;&gt;&lt;/a&gt;1. 背景介绍&lt;/h2&gt;&lt;p&gt;自己编写了一个博客系统，想要支持用户写作博客，考查了几种开源编辑器方案，例如 Quill, ckEditor，最后还是选择了 TinyMCE 编辑器。&lt;/p&gt;
&lt;p&gt;原因主要在与它开箱即用，插件丰富，而且很多插件都是比其他编辑器做得优秀。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular结合ckeditor5实现富文本以及markdown编辑器</title>
    <link href="https://pengtech.net/angular/angular_ckEditor5.html"/>
    <id>https://pengtech.net/angular/angular_ckEditor5.html</id>
    <published>2024-06-18T16:00:00.000Z</published>
    <updated>2024-07-16T05:35:42.197Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-背景介绍&quot;&gt;&lt;a href=&quot;#1-背景介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 背景介绍&quot;&gt;&lt;/a&gt;1. 背景介绍&lt;/h2&gt;&lt;p&gt;自己编写了一个博客系统，想要支持 html 和 markdown 两种格式，但是又不希望向其他博客系统一样，数据库存两种完全格式的内容，前端用多套编辑器这么麻烦和繁琐。于是做了一下 research 还真让我找到了。&lt;/p&gt;
&lt;p&gt;这套方案的核心就是&lt;a href=&quot;https://ckeditor.com/docs/ckeditor5/latest/index.html&quot;&gt;ckeditor5&lt;/a&gt;，它原本是一套富文本编辑器，但是当给它添加上 markdown plugin 以后，它就可以变成了一个富文本编辑器+markdown 编辑器类似 typro 编辑器，编辑器的输出统一为了 markdown 格式。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>如何升级Golang</title>
    <link href="https://pengtech.net/golang/upgrade_golang.html"/>
    <id>https://pengtech.net/golang/upgrade_golang.html</id>
    <published>2024-05-17T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;升级golang&quot;&gt;&lt;a href=&quot;#升级golang&quot; class=&quot;headerlink&quot; title=&quot;升级golang&quot;&gt;&lt;/a&gt;升级golang&lt;/h2&gt;&lt;p&gt;查看当前版本&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;$ go version&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;go version go1.19.3 linux/amd64&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>Fedora 40 找不到声音设备的问题</title>
    <link href="https://pengtech.net/linux/fedora_sound_issues.html"/>
    <id>https://pengtech.net/linux/fedora_sound_issues.html</id>
    <published>2024-05-07T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.392Z</updated>
    
    
    <summary type="html">&lt;p&gt;硬件配置说明。&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;variable&quot;&gt;$lspci&lt;/span&gt; | grep -i audio&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;00:1f.3 Multimedia audio controller: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 30)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;现象： 电脑播放没有声音， 音量控制显示找不到设备&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="fedora" scheme="https://pengtech.net/tags/fedora/"/>
    
  </entry>
  
  <entry>
    <title>如何制作macOS Sonoma ISO 文件</title>
    <link href="https://pengtech.net/vmware/how_to_create_macos_Sonoma_ISO.html"/>
    <id>https://pengtech.net/vmware/how_to_create_macos_Sonoma_ISO.html</id>
    <published>2024-04-25T16:00:00.000Z</published>
    <updated>2024-11-02T13:03:23.412Z</updated>
    
    
    <summary type="html">&lt;p&gt;因为我的一些编译和测试工作需要在 macOS 上进行， 然而项目预算有限不够支撑去购买一台 macOS，而且测试需要在不同版本的 macOS 上进行。此时在虚拟机上安装 macOS 操作系统成为了一个不错的选择。&lt;/p&gt;
&lt;p&gt;此前曾经在 VMWare esxi 上成功安装了一台 macOS High Sierra 10.13.6 虚拟机， 教程可参考&lt;a href=&quot;https://pengtech.net/vmware/vmware_macos_vm.html&quot;&gt;如何安装一台 MacOS 虚拟机 | 鹏叔的技术博客 &lt;/a&gt;，由于 VMWare esxi 的版本太低，一直运行的是 6,7 版本的 VMWare esxi，而且由于服务器硬件的原因无法升级到更高级版本，导致不能将 macOS 更高版本。&lt;/p&gt;
&lt;p&gt;因此打算在一台较新的个人电脑上安装 VMware player 最新版本(17.5.0), 然后在在其上安装 macOS Sonoma.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>linux上安装vmware</title>
    <link href="https://pengtech.net/vmware/linux_install_vmware_player.html"/>
    <id>https://pengtech.net/vmware/linux_install_vmware_player.html</id>
    <published>2024-04-25T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.398Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述在 Linux 上如何安装 vmare 软件， 文章以 vmware player 为例，当然对 vmware pro 也同样适用。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>useSignal()才是Web框架的未来</title>
    <link href="https://pengtech.net/angular/useSignal_is_the_future_of_web_frameworks.html"/>
    <id>https://pengtech.net/angular/useSignal_is_the_future_of_web_frameworks.html</id>
    <published>2024-04-22T16:00:00.000Z</published>
    <updated>2024-11-02T12:44:28.147Z</updated>
    
    
    <summary type="html">&lt;p&gt;signal 是一种存储应用程序状态的方法，类似于 React 中的 useState()。但有一些关键的差异赋予了 Signals 另外的优势。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>自己动手写一个Angular 日志框架</title>
    <link href="https://pengtech.net/angular/angular_logging.html"/>
    <id>https://pengtech.net/angular/angular_logging.html</id>
    <published>2024-04-10T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.385Z</updated>
    
    
    <summary type="html">&lt;p&gt;日志记录是软件行业中相当常见的话题。不幸的是，它在前端世界中并不常见，虽然在后端相关文章中经常提到。&lt;/p&gt;
&lt;p&gt;然而，这个主题也适用于前端项目。&lt;/p&gt;
&lt;p&gt;在本文中，我们将了解什么是日志记录以及在现代 Angular 应用程序中实现它的各种方法。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular Material 3 自定义主题</title>
    <link href="https://pengtech.net/angular/angular_material3_theming.html"/>
    <id>https://pengtech.net/angular/angular_material3_theming.html</id>
    <published>2024-04-03T16:00:00.000Z</published>
    <updated>2024-08-15T16:30:05.746Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-什么是-Material-3&quot;&gt;&lt;a href=&quot;#1-什么是-Material-3&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是 Material 3&quot;&gt;&lt;/a&gt;1. 什么是 Material 3&lt;/h2&gt;&lt;p&gt;Material 3 (M3)是 Google 开源设计系统 Material Design 的最新版本。它是 Angular Material 所遵循的设计系统 Material 2 (M2)的继承者。&lt;/p&gt;
&lt;p&gt;从 v17.2.0 开始，Angular Material 除了 M2 之外还包括对 M3 样式的实验性支持。该团队计划在短暂的实验后稳定对 M3 的支持，以获得有关设计和 API 的反馈。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>Angular Material 2 自定义主题</title>
    <link href="https://pengtech.net/angular/angular_material_2_theming.html"/>
    <id>https://pengtech.net/angular/angular_material_2_theming.html</id>
    <published>2024-04-01T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.395Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-什么是-theming&quot;&gt;&lt;a href=&quot;#1-什么是-theming&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是 theming&quot;&gt;&lt;/a&gt;1. 什么是 theming&lt;/h2&gt;&lt;p&gt;Angular Material 的主题系统可让您为应用程序中的组件自定义基础样式、颜色、排版和密度样式。主题系统基于 Google 的 Material Design 规范。&lt;/p&gt;
&lt;p&gt;本文档介绍了自定义颜色的概念和 API。对于排版自定义，请参阅&lt;a href=&quot;https://material.angular.io/guide/typography&quot;&gt;Angular Material Typography&lt;/a&gt;。有关构建可使用此系统进行自定义的组件的指南，请参阅&lt;a href=&quot;https://material.angular.io/guide/theming-your-components&quot;&gt;主题化您自己的组件&lt;/a&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>一步一步升级到Angular 17</title>
    <link href="https://pengtech.net/angular/Upgrade_to_Angular_17.html"/>
    <id>https://pengtech.net/angular/Upgrade_to_Angular_17.html</id>
    <published>2024-03-29T16:00:00.000Z</published>
    <updated>2024-08-14T16:15:04.703Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angular 16 于 2023 年 11 月 8 日发布.&lt;/p&gt;
&lt;p&gt;今天，我计划向您介绍如何升级到 Angular 17。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Golang 日志库</title>
    <link href="https://pengtech.net/golang/golang_logging_libs.html"/>
    <id>https://pengtech.net/golang/golang_logging_libs.html</id>
    <published>2024-03-24T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;p&gt;任何一个系统开发，都离不开完备的日志系统。go 日志不同其他语言，比如 java 由于 commons-logging 日志标准，和不同实现 如log4j,slf4j,logback，但都是统一调用标准接口;python 中标准logging 模块，功能强大，基本上满足各种需求。但是在golang 语言开发中，目前阅读了几个开源代码，都是自己实现了一套日志记录标准，并没有采用go 官方 log 模块。golang’s log 模块主要提供了3类接口。分别是 “Print、Panic、Fatal”，对每一类接口其提供了3中调用方式，分别是 “Xxxx 、 Xxxxln 、Xxxxf”，基本和fmt中的相关函数类似；但功能有限，很难比如按天，按照容量自动输出拆封生成新日志。如果自己开发一套日志，基本上要满足日志等级输出如DEBUG,INFO,WARN,ERROR&amp;#x2F;FATAL 、支持输出 console 或者滚动式文件、参数格式化输出、自定义格式化模板，当然如果支持更高级别如按照pakcage输出到不同文件，按照日志级别输出到不同地方那就更好了。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>golang使用Zap日志库</title>
    <link href="https://pengtech.net/golang/zap_logging.html"/>
    <id>https://pengtech.net/golang/zap_logging.html</id>
    <published>2024-03-24T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-zap-介绍&quot;&gt;&lt;a href=&quot;#1-zap-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. zap 介绍&quot;&gt;&lt;/a&gt;1. zap 介绍&lt;/h2&gt;&lt;p&gt;Golang Zap库是一个由Uber公司开发的高性能日志记录库，专为Go语言应用程序设计。Zap库以其出色的性能和灵活性而闻名，为开发者提供了结构化、分级别的日志记录功能，此外Zap库还支持日志切割功能，可以根据文件大小、时间或间隔等来切割日志文件，方便管理和分析。Zap库还支持自定义日志格式和输出方式。你可以通过配置Encoder来自定义日志的输出格式，包括时间戳、日志级别、调用文件&amp;#x2F;函数名和行号等信息。同时，你还可以将日志输出到不同的目的地，如控制台、文件或远程日志系统。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>Angular async pipe中的异常处理</title>
    <link href="https://pengtech.net/angular/angular_async_pipe_error_handling.html"/>
    <id>https://pengtech.net/angular/angular_async_pipe_error_handling.html</id>
    <published>2024-03-22T16:00:00.000Z</published>
    <updated>2024-08-06T10:04:10.101Z</updated>
    
    
    <summary type="html">&lt;p&gt;处理 web 应用程序中的错误对于获得良好的用户体验非常重要。有时会发生异常，每个应用程序都应该涵盖这些情况，以帮助用户了解发生了不好的事情。&lt;/p&gt;
&lt;p&gt;许多教程没有显示如何在使用异步管道时处理错误&amp;#x2F;异常情况。因此，在这篇文章中，我们将研究如何处理这些错误案例的一些技术。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular SEO 友好的编码实践</title>
    <link href="https://pengtech.net/angular/angular_seo_friendly.html"/>
    <id>https://pengtech.net/angular/angular_seo_friendly.html</id>
    <published>2024-03-19T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.395Z</updated>
    
    
    <summary type="html">&lt;p&gt;如果您正在使用 Angular 开发网站或应用程序，您很可能希望它在搜索引擎中排名靠前。正如您可能已经读到的，这会带来一些挑战。Angular 是一个著名的前端框架，广泛用于构建单页面应用程序，即 SPA。它们以其流畅、即时的页面转换和出色的用户体验而闻名。但也存在一些缺点，尤其是在 SEO 性能方面。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>深入了解 Angular 异步管道</title>
    <link href="https://pengtech.net/angular/angular_async_pipe_in_depth.html"/>
    <id>https://pengtech.net/angular/angular_async_pipe_in_depth.html</id>
    <published>2024-03-16T16:00:00.000Z</published>
    <updated>2024-08-06T18:52:59.371Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angular 异步管道(Async pipe)是 Angular 框架中在 HTML 模板中使用 Observables 或 Promises 的方法之一。而且在大多数情况下，我认为这是在 Angular 中处理 Observables 和 Promise 的首选方式。&lt;/p&gt;
&lt;p&gt;当您使用异步管道订阅 Observable 或 Promise 时，您将收到 Observable 或 Promise 最后发出的值。&lt;/p&gt;
&lt;p&gt;请注意，在 Observable 或 Promise 发出值之前，需要在 HTML 模板中初始化异步管道，否则管道不会接收任何值。&lt;/p&gt;
&lt;p&gt;因此，如果异步管道位于 *ngIf 内，并且 Observable 在 ngIf 计算为 true 之前发出一个值，则不会显示任何内容，并且异步管道在发出新值之前不会接收任何值。&lt;/p&gt;
&lt;p&gt;使用 Angular 异步管道很简单，并且比订阅 Observables 和 Promise 的一些更标准的方法提供了一些好处。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>如何手动引导 Angular 应用程序</title>
    <link href="https://pengtech.net/angular/manually_bootstrap_an_Angular_application.html"/>
    <id>https://pengtech.net/angular/manually_bootstrap_an_Angular_application.html</id>
    <published>2024-03-16T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angular 官方文档指出，要引导应用程序，您必须将以下内容放入文件中 main.ts：&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>使用Angular制作Github pages网站</title>
    <link href="https://pengtech.net/angular/angular_host_github_pages.html"/>
    <id>https://pengtech.net/angular/angular_host_github_pages.html</id>
    <published>2024-02-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.396Z</updated>
    
    
    <summary type="html">&lt;p&gt;GitHub Pages 是 GitHub 提供的一项服务，人们可以免费托管网站。这有助于人们为他们的博客、作品集、业务等托管个人网站。我们可以毫不费力地在 GitHub 页面上托管一个只有 HTML、CSS 和 JavaScript 的简单网站，但复杂的应用程序需要一些努力。&lt;/p&gt;
&lt;p&gt;Angular 应用程序本身有许多附加内容，如组件、node 模块、路由等等功能。有几种方法可以在 GitHub Pages 中托管 Angular 应用程序。在这篇博客文章中，我们将看到在 GitHub Pages 中托管 Angular 应用程序的最简单方法。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>在Fedora 39上安装Libreoffice</title>
    <link href="https://pengtech.net/linux/linux_install_libreoffice.html"/>
    <id>https://pengtech.net/linux/linux_install_libreoffice.html</id>
    <published>2024-01-28T16:00:00.000Z</published>
    <updated>2026-02-03T04:20:39.364Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-办公软件产品介绍&quot;&gt;&lt;a href=&quot;#1-办公软件产品介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 办公软件产品介绍&quot;&gt;&lt;/a&gt;1. 办公软件产品介绍&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;LibreOffice 是一款开放源代码的自由免费全能办公软件，可运行于 Microsoft Windows、GNU&amp;#x2F;Linux 以及 macOS 等操作系统上。它包含了 Writer、Calc、Impress、Draw、Math 以及 Base 等组件，可分别用于文本文档、电子表格、幻灯片演示文稿、绘图文档、数学公式编辑、数据库管理等工作。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
  </entry>
  
  <entry>
    <title>update-alternatives 命令详解</title>
    <link href="https://pengtech.net/linux/linux_update_alternatives.html"/>
    <id>https://pengtech.net/linux/linux_update_alternatives.html</id>
    <published>2024-01-20T16:00:00.000Z</published>
    <updated>2025-01-28T17:09:56.382Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;update-alternatives 命令在 Linux 系统中具有重要的作用。它主要用于维护符号链接，这些符号链接确定了各种任务或实用工具的默认命令或应用程序。update-alternatives 允许系统管理员或用户选择在其系统上使用哪个版本的特定命令或应用程序。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>使用ansible安装golang</title>
    <link href="https://pengtech.net/ansible/ansible_install_golang.html"/>
    <id>https://pengtech.net/ansible/ansible_install_golang.html</id>
    <published>2024-01-18T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何使用Ansible在Redhat Linux系列上安装golang 19。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="ansible" scheme="https://pengtech.net/categories/devops/ansible/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Ansible" scheme="https://pengtech.net/tags/Ansible/"/>
    
    <category term="golang" scheme="https://pengtech.net/tags/golang/"/>
    
  </entry>
  
  <entry>
    <title>使用ansible安装java</title>
    <link href="https://pengtech.net/ansible/ansible_install_java.html"/>
    <id>https://pengtech.net/ansible/ansible_install_java.html</id>
    <published>2024-01-18T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何使用Ansible在Redhat Linux系列上安装java 17。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="ansible" scheme="https://pengtech.net/categories/devops/ansible/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Ansible" scheme="https://pengtech.net/tags/Ansible/"/>
    
  </entry>
  
  <entry>
    <title>解决GitHub访问不了的方法</title>
    <link href="https://pengtech.net/network/dns_pollution_issue.html"/>
    <id>https://pengtech.net/network/dns_pollution_issue.html</id>
    <published>2024-01-17T16:00:00.000Z</published>
    <updated>2025-04-25T06:14:44.800Z</updated>
    
    
    <summary type="html">&lt;p&gt;一直用的 GitHub，突然一下子不能访问了，最后发现是 DNS 解析的 IP 地址出了问题，按照以下方法修改又能访问 github 了。&lt;/p&gt;
&lt;p&gt;最后发现是DNS解析被污染了，解析到了无法访问的ip地址，通过ipaddress等网站查询到正确的地址，采用本地解析的方式，最终解决了问题。&lt;/p&gt;
&lt;p&gt;关于DNS解析污染参考&lt;a href=&quot;https://github.com/hoochanlon/fq-book/blob/master/docs/doub/6t3mypbm-5.md&quot;&gt;这篇文章&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然终极方法还是搭建梯子，搭建梯子的方法有很多种，可以到&lt;a href=&quot;https://pengtech.net/&quot;&gt;我的首页&lt;/a&gt;去找。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="dns" scheme="https://pengtech.net/categories/network/dns/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>Linux 上安装与配置v2rayA</title>
    <link href="https://pengtech.net/network/install_config_v2rayA_on_linux.html"/>
    <id>https://pengtech.net/network/install_config_v2rayA_on_linux.html</id>
    <published>2024-01-17T16:00:00.000Z</published>
    <updated>2026-02-28T13:18:48.411Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程详细讲解了如何在 debian 系列和 redhat 系列 Linux 操作系统上安装并配置 v2rayA 这款&lt;strong&gt;科学上网、魔法上网软件&lt;/strong&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>Almalinux 安装与使用</title>
    <link href="https://pengtech.net/linux/almalinux_install.html"/>
    <id>https://pengtech.net/linux/almalinux_install.html</id>
    <published>2024-01-12T16:00:00.000Z</published>
    <updated>2024-09-19T06:58:40.221Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-背景介绍&quot;&gt;&lt;a href=&quot;#1-背景介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 背景介绍&quot;&gt;&lt;/a&gt;1. 背景介绍&lt;/h2&gt;&lt;p&gt;CentOS 8 于 2021 年 12 月 31 日正式结束了生命周期。这意味着官方不再提供对该版本的安全补丁、错误修复或功能改进等支持服务。因此，建议用户将其系统升级到最新的操作系统版本以获得更好的性能和安全保障。CentOS-7 由于用户基数与用户贡献较多，因此会按照计划维护至生命周期结束即 2024 年 6 月 30 日，接下来一年会把重心放到 CentOS Stream 上。由于CentOS Stream相对不稳定，因此很多朋友会有从Centos-7迁移至AlmaLinux-8的需求。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>如何在 Fedora 中安装和切换桌面环境</title>
    <link href="https://pengtech.net/linux/fedora_switch_desktop_environment.html"/>
    <id>https://pengtech.net/linux/fedora_switch_desktop_environment.html</id>
    <published>2024-01-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;p&gt;您是否想在Fedora Workstation spin中使用或尝试其他桌面环境，而不是默认的GNOME 3。在本文中，我们将展示如何使用图形用户界面 (GUI) 和命令行界面 (CLI) 在 Fedora Linux 中安装和切换桌面环境。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="fedora" scheme="https://pengtech.net/tags/fedora/"/>
    
  </entry>
  
  <entry>
    <title>如何在fedora上关闭ipv6</title>
    <link href="https://pengtech.net/linux/linux_turnoff_ipv6.html"/>
    <id>https://pengtech.net/linux/linux_turnoff_ipv6.html</id>
    <published>2024-01-01T16:00:00.000Z</published>
    <updated>2025-07-21T22:05:31.254Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;有时因为某些服务器不支持 ipv6 会出现 EHOSTUNREACH 错误，需要关闭 ipv6&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将如下几行配置添加到 &amp;#x2F;etc&amp;#x2F;sysctl.conf&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;highlight</summary>
        
      
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>使用Angular实现面包屑导航</title>
    <link href="https://pengtech.net/angular/angular_breadcrumbs.html"/>
    <id>https://pengtech.net/angular/angular_breadcrumbs.html</id>
    <published>2023-12-30T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.396Z</updated>
    
    
    <summary type="html">&lt;p&gt;面包屑导航(Breadcrumb Navigation)这个概念来自童话故事“汉赛尔和格莱特”，当汉赛尔和格莱特穿过森林时，不小心迷路了，但是他们发现沿途走过的地方都撒下了面包屑，让这些面包屑来帮助他们找到回家的路。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>命令行打包Chrome插件</title>
    <link href="https://pengtech.net/chrome/cli_build_chrome_extension.html"/>
    <id>https://pengtech.net/chrome/cli_build_chrome_extension.html</id>
    <published>2023-12-28T16:00:00.000Z</published>
    <updated>2025-06-25T14:07:10.483Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文介绍了如何打包、托管和更新通用 Web 服务器中的 crx 文件。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="browser" scheme="https://pengtech.net/categories/web/browser/"/>
    
    
    <category term="chrome" scheme="https://pengtech.net/tags/chrome/"/>
    
    <category term="browser" scheme="https://pengtech.net/tags/browser/"/>
    
  </entry>
  
  <entry>
    <title>命令行打包Firefox插件</title>
    <link href="https://pengtech.net/firefox/cli_build_firefox_extension.html"/>
    <id>https://pengtech.net/firefox/cli_build_firefox_extension.html</id>
    <published>2023-12-28T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;p&gt;在开发过程中，您的扩展将由一个目录组成，其中包含一个manifest.json文件和扩展所需的其他文件（脚本、图标、HTML 文档等）。您需要将它们压缩到一个文件中才能上传到 AMO。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="browser" scheme="https://pengtech.net/categories/web/browser/"/>
    
    
    <category term="browser" scheme="https://pengtech.net/tags/browser/"/>
    
    <category term="firefox" scheme="https://pengtech.net/tags/firefox/"/>
    
  </entry>
  
  <entry>
    <title>Linux上安裝pgadmin</title>
    <link href="https://pengtech.net/database/install_pgadmin_on_fedora.html"/>
    <id>https://pengtech.net/database/install_pgadmin_on_fedora.html</id>
    <published>2023-12-24T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.388Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文讲述在Fedora或Redhat系列操作系统上如何安装pgadmin。&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
    <category term="pgadmin" scheme="https://pengtech.net/tags/pgadmin/"/>
    
  </entry>
  
  <entry>
    <title>Windows上安装与配置Android SDK</title>
    <link href="https://pengtech.net/android/android_sdk_install.html"/>
    <id>https://pengtech.net/android/android_sdk_install.html</id>
    <published>2023-12-21T16:00:00.000Z</published>
    <updated>2026-02-22T22:34:08.215Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Android-SDK-介绍&quot;&gt;&lt;a href=&quot;#1-Android-SDK-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. Android SDK 介绍&quot;&gt;&lt;/a&gt;1. Android SDK 介绍&lt;/h2&gt;&lt;p&gt;Android SDK 是软件开发工具包，可让您创建 Android 应用程序。它包括一系列工具、API、文档和示例代码，可帮助您构建、测试和部署 Android 应用程序。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="android" scheme="https://pengtech.net/categories/OS/android/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
  </entry>
  
  <entry>
    <title>Fedora 上安装与配置 Android studio</title>
    <link href="https://pengtech.net/android/fedora_install_android_studio.html"/>
    <id>https://pengtech.net/android/fedora_install_android_studio.html</id>
    <published>2023-12-21T16:00:00.000Z</published>
    <updated>2025-11-07T09:25:56.840Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文讲述如何在 Fedora 上安装 Android studio.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="android" scheme="https://pengtech.net/categories/OS/android/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
  </entry>
  
  <entry>
    <title>升级App到Tauri 2.0并配置Tauri Mobile</title>
    <link href="https://pengtech.net/tauri/upgrade_to_tauri_2.0.html"/>
    <id>https://pengtech.net/tauri/upgrade_to_tauri_2.0.html</id>
    <published>2023-12-20T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;p&gt;Tauri 2.0的新alpha.4 版本已经发布。此版本包括即将发布的Tauri 1.3版本的所有更改，此版本包含了对HTTP客户端的一些breaking change和TauriNative mobile插件的功能一些更改。&lt;/p&gt;
&lt;p&gt;以下是从Tauri 1.3或1.4升级到Tauri 2.0.0-alpha.4的一些指引。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>Tauri Debug</title>
    <link href="https://pengtech.net/tauri/tauri_debug.html"/>
    <id>https://pengtech.net/tauri/tauri_debug.html</id>
    <published>2023-12-17T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;p&gt;在本文中我们将详细讲解在各平台如何debug tauri项目。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>Angular 样式隔离</title>
    <link href="https://pengtech.net/angular/angular_style_isolation.html"/>
    <id>https://pengtech.net/angular/angular_style_isolation.html</id>
    <published>2023-12-13T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文详细讲解如何在 Angular 使用样式隔离。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>如何设计 landing page?</title>
    <link href="https://pengtech.net/product/landing_page_design.html"/>
    <id>https://pengtech.net/product/landing_page_design.html</id>
    <published>2023-12-09T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;p&gt;如何取得「高转换率( Conversion Rate ) 」一直是销售团队最大的课题！而 Landing Page 的操作就是其中一项有效解决行销难题的秘方！&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="design" scheme="https://pengtech.net/categories/web/design/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
  </entry>
  
  <entry>
    <title>使用Tailwind CSS必须知道的29个组件库</title>
    <link href="https://pengtech.net/sass/tailwind_best_component_libs.html"/>
    <id>https://pengtech.net/sass/tailwind_best_component_libs.html</id>
    <published>2023-12-07T16:00:00.000Z</published>
    <updated>2024-08-22T01:57:27.860Z</updated>
    
    
    <summary type="html">&lt;p&gt;Tailwind 是一个实用程序优先的 CSS 框架，提供了一整套预先设计的样式和组件，使您可以轻松创建令人惊叹的 UI，而无需自定义 CSS。&lt;/p&gt;
&lt;p&gt;然而，即使拥有 Tailwind 大量的预先设计的样式，从头开始构建网站或应用程序仍然是一项艰巨的任务。这就是 Tailwind 组件库派上用场的地方。在本文中，我们将探索 2023 年 28 个最佳免费 Tailwind CSS 组件库，每个库都提供一组独特的组件，帮助您更快、更高效地构建下一个项目。无论您是经验丰富的 Web 开发人员还是刚刚入门，这些组件库都将使您的工作流程更加顺畅和愉快。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="css" scheme="https://pengtech.net/categories/web/css/"/>
    
    
    <category term="css" scheme="https://pengtech.net/tags/css/"/>
    
    <category term="tailwindcss" scheme="https://pengtech.net/tags/tailwindcss/"/>
    
  </entry>
  
  <entry>
    <title>Gemini AI介绍</title>
    <link href="https://pengtech.net/ai/gemini_ai_introduction.html"/>
    <id>https://pengtech.net/ai/gemini_ai_introduction.html</id>
    <published>2023-12-06T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.382Z</updated>
    
    
    <summary type="html">&lt;p&gt;Gemini AI 是 Google DeepMind 正在开发的大型语言模型 (LLM)。它仍在开发中，但预计会比目前最先进的 ChatGPT 4 更强大。Gemini AI 是建立在 DeepMind 于 2016 年开发的早期人工智能系统 AlphaGo 中使用的技术和技巧之上的。这意味着 Gemini AI 预计将拥有强大的计划和解决问题的能力。&lt;/p&gt;
&lt;p&gt;Gemini AI 是一个强大的工具，有潜力用于各种应用。Gemini AI 的一些潜在用例包括：&lt;/p&gt;
&lt;p&gt;聊天机器人：Gemini AI 可用于创建更现实、更有吸引力的聊天机器人。&lt;br&gt;虚拟助理：Gemini AI 可用于创建虚拟助理，帮助用户完成安排预约、预订和查找信息等任务。&lt;br&gt;内容生成：Gemini AI 可用于生成创意内容，例如文章、博客文章和脚本。&lt;br&gt;数据分析：Gemini AI 可用于分析大型数据集并识别模式和趋势。&lt;br&gt;医疗诊断：Gemini AI 可以帮助医生诊断疾病。&lt;br&gt;金融交易：Gemini AI 可用于做出交易决策。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="Gemini AI" scheme="https://pengtech.net/tags/Gemini-AI/"/>
    
  </entry>
  
  <entry>
    <title>Linux下安装nodejs-源码安装</title>
    <link href="https://pengtech.net/nodejs/install_nodejs_via_source.html"/>
    <id>https://pengtech.net/nodejs/install_nodejs_via_source.html</id>
    <published>2023-11-28T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.306Z</updated>
    
    
    <summary type="html">&lt;p&gt;大多数情况下我们都能够使用二进制文件安装nodejs, 各种包管理生态下, 以及各种操作系统环境下的安装方式, 在我往期的博客中都有介绍.&lt;/p&gt;
&lt;p&gt;但是有些某些系统或环境下, 或者由于个人偏好, 还是需要通过源码安装nodejs, 那么此篇文章或许对您有帮助.&lt;/p&gt;
&lt;p&gt;关于各种二进制文件形式安装可以参考我的博客 &lt;a href=&quot;https://pengtech.net/nodejs/install_and_config_nodejs.html&quot;&gt;安装并配置nodejs | 鹏叔的技术博客&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>MacOS 上安装与配置v2rayA</title>
    <link href="https://pengtech.net/network/install_config_v2rayA_on_macOS.html"/>
    <id>https://pengtech.net/network/install_config_v2rayA_on_macOS.html</id>
    <published>2023-11-17T16:00:00.000Z</published>
    <updated>2026-02-28T13:19:36.405Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程详细讲解了如何在 Macos 系统上安装并配置 v2rayA 这款&lt;strong&gt;科学上网、魔法上网软件&lt;/strong&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>2026 科学上网教程：v2rayA 安装与使用</title>
    <link href="https://pengtech.net/network/v2rayA_install.html"/>
    <id>https://pengtech.net/network/v2rayA_install.html</id>
    <published>2023-11-17T16:00:00.000Z</published>
    <updated>2026-02-28T13:20:17.928Z</updated>
    
    
    <summary type="html">全面讲解v2rara：2025年最新版v2rayA科学上网安装与配置指南，适用于Windows、Macos、Linux系统。</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="Android" scheme="https://pengtech.net/tags/Android/"/>
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="Fedora" scheme="https://pengtech.net/tags/Fedora/"/>
    
    <category term="Macos" scheme="https://pengtech.net/tags/Macos/"/>
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="Redhat" scheme="https://pengtech.net/tags/Redhat/"/>
    
    <category term="v2rayA" scheme="https://pengtech.net/tags/v2rayA/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
  </entry>
  
  <entry>
    <title>snap命令详解</title>
    <link href="https://pengtech.net/linux/snap_commands.html"/>
    <id>https://pengtech.net/linux/snap_commands.html</id>
    <published>2023-11-16T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.393Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-snap简介&quot;&gt;&lt;a href=&quot;#1-snap简介&quot; class=&quot;headerlink&quot; title=&quot;1. snap简介&quot;&gt;&lt;/a&gt;1. snap简介&lt;/h2&gt;&lt;p&gt;Snap 是一个软件部署和软件包管理系统，由 Canonical 公司开发，最初用于 Ubuntu 移动操作系统。Snap 包称为“snap”，工具名为“snapd”，可在多种 Linux 发行版上运行，完成发行上游主导的软件部署。该系统的设计面向手机、云、物联网和台式机。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>安装并配置docker-compose</title>
    <link href="https://pengtech.net/docker/docker_compose_install.html"/>
    <id>https://pengtech.net/docker/docker_compose_install.html</id>
    <published>2023-11-10T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.389Z</updated>
    
    
    <summary type="html">&lt;p&gt;Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose，您可以使用 YML 文件来配置应用程序需要的所有服务。然后，使用一个命令，就可以从 YML 文件配置中创建并启动所有服务。&lt;/p&gt;
&lt;p&gt;本文主要讲述如何在 centos 7.9上安装docker compose,　当然此安装步骤也适用于 debian &amp;amp; readhat 系列的其他 linux 发行版.&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>Angular应用如何使用百度统计</title>
    <link href="https://pengtech.net/angular/angular_analytics_baidu.html"/>
    <id>https://pengtech.net/angular/angular_analytics_baidu.html</id>
    <published>2023-11-09T16:00:00.000Z</published>
    <updated>2024-08-14T16:14:53.224Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angulartics2 是一个用于 Angular 应用程序的分析工具。它可以自动跟踪导航事件并将其发送到您的分析服务提供程序，例如百度统计, Google Analytics 等。您可以通过运行&lt;code&gt;npm i angulartics2&lt;/code&gt;在项目中开始使用 angulartics。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>一步一步升级到Angular 16</title>
    <link href="https://pengtech.net/angular/Upgrade_to_Angular_16.html"/>
    <id>https://pengtech.net/angular/Upgrade_to_Angular_16.html</id>
    <published>2023-11-07T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angular 16 于 2023 年 5 月 3 日发布.&lt;/p&gt;
&lt;p&gt;今天，我计划向您介绍如何升级到 Angular 16。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular Sentry前端错误监控</title>
    <link href="https://pengtech.net/angular/angular_sentry_integration.html"/>
    <id>https://pengtech.net/angular/angular_sentry_integration.html</id>
    <published>2023-11-07T16:00:00.000Z</published>
    <updated>2024-08-14T16:14:58.719Z</updated>
    
    
    <summary type="html">&lt;p&gt;本教程主要讲述, Angular 项目如何整合 Sentry 实现前端应用错误上报.&lt;/p&gt;
&lt;h2 id=&quot;1-什么是-Sentry&quot;&gt;&lt;a href=&quot;#1-什么是-Sentry&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是 Sentry&quot;&gt;&lt;/a&gt;1. 什么是 Sentry&lt;/h2&gt;&lt;p&gt;sentry 是一个基于 Django 构建的现代化的实时事件日志监控、记录和聚合平台,主要用于如何快速的发现故障。支持几乎所有主流开发语言和平台,并提供了现代化 UI,它专门用于监视错误和提取执行适当的事后操作所需的所有信息,而无需使用标准用户反馈循环的任何麻烦。官方提供了多个语言的 SDK.让开发者第一时间获悉错误信息,并方便的整合进自己和团队的工作流中.官方提供 saas 版本免费版支持每天 5000 个 event.&lt;/p&gt;
&lt;p&gt;sentry 支持自动收集和手动收集两种错误收集方法.我们能成功监控到 vue 中的错误、异常，但是还不能捕捉到异步操作、接口请求中的错误，比如接口返回 404、500 等信息，此时我们可以通过 Sentry.caputureException()进行主动上报。使用 sentry 需要结合两个部分，客户端与 sentry 服务端；客户端就像你需要去监听的对象，比如公司的前端项目，而服务端就是给你展示已搜集的错误信息，项目管理，组员等功能的一个服务平台。&lt;/p&gt;
&lt;p&gt;这个平台可以自己搭建，也可以直接使用 sentry 提供的平台（注册可用），当然如果是公司项目，当然推荐自己搭建.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="sentry" scheme="https://pengtech.net/tags/sentry/"/>
    
  </entry>
  
  <entry>
    <title>如何替换 Angular 的CanActivate接口</title>
    <link href="https://pengtech.net/angular/angular_replace_CanActivate.html"/>
    <id>https://pengtech.net/angular/angular_replace_CanActivate.html</id>
    <published>2023-11-06T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;p&gt;在本文中，我们将探讨 Angular 的“CanActivate”接口的弃用，并讨论如何用推荐的解决方案替换它。我们将介绍官方文档的建议以及解决此已弃用警告的替代解决方案。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular 14 有哪些更新</title>
    <link href="https://pengtech.net/angular/angular_14_update.html"/>
    <id>https://pengtech.net/angular/angular_14_update.html</id>
    <published>2023-11-05T16:00:00.000Z</published>
    <updated>2024-08-06T10:03:17.067Z</updated>
    
    
    <summary type="html">&lt;p&gt;我们很高兴地宣布 Angular v14 发布！从类型化表单和独立组件到 Angular CDK（组件开发工具包）中的新原语，我们很高兴分享每个功能如何使 Angular 变得更强大。&lt;/p&gt;
&lt;p&gt;自上一个版本以来，我们完成了两项主要的征求意见请求搞 (RFC)，这为整个 Angular 社区提供了针对提议的更改提供设计反馈的机会。因此，我们的&lt;a href=&quot;https://github.com/angular/angular/discussions/44513&quot;&gt;严格类型反应表单 RFC&lt;/a&gt;解决了我们的&lt;a href=&quot;https://github.com/angular/angular/issues/13721&quot;&gt;#1 GitHub 问题&lt;/a&gt;，并且我们的&lt;a href=&quot;https://github.com/angular/angular/discussions/45554&quot;&gt;独立 API RFC&lt;/a&gt;引入了一种更简单的方法来编写 Angular 应用程序。&lt;/p&gt;
&lt;p&gt;我们还将 Angular 组织中存储库中的默认分支重命名为 main，以履行我们对包容性社区的承诺。&lt;/p&gt;
&lt;p&gt;此外，此版本还包括由社区成员直接贡献的许多功能和错误修复，从添加路由器强类型到更多 tree-shakable 错误消息。我们很高兴强调 RFC 和社区如何继续使 Angular 成为更多开发人员的选择和拥有更好的开发人员体验！&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular 15 有哪些更新?</title>
    <link href="https://pengtech.net/angular/angular_15_update.html"/>
    <id>https://pengtech.net/angular/angular_15_update.html</id>
    <published>2023-11-05T16:00:00.000Z</published>
    <updated>2024-08-06T10:03:21.848Z</updated>
    
    
    <summary type="html">&lt;p&gt;在过去的一年里，我们删除了 Angular 的旧版编译器和渲染管道，这使得在过去几个月内实现了一系列开发人员体验的改进。Angular v15 是这方面的巅峰之作，它进行了数十项改进，带来了更好的开发人员体验和性能。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular 16 有哪些更新?</title>
    <link href="https://pengtech.net/angular/angular_16_update.html"/>
    <id>https://pengtech.net/angular/angular_16_update.html</id>
    <published>2023-11-05T16:00:00.000Z</published>
    <updated>2024-08-06T10:03:25.497Z</updated>
    
    
    <summary type="html">&lt;p&gt;六个月前，我们通过将 standalone API 从开发者预览版中升级到稳定版，在 Angular 的简单性和开发者体验方面达到了一个重要的里程碑。今天，我们很高兴与大家分享，我们将继续保持 Angular 的势头，推出自 Angular 首次推出以来最大规模的版本, 在反应性、服务器端渲染和工具方面取得了巨大飞跃。所有这些都伴随着针对功能请求的数十项用户体验改进，GitHub 上总共有超过 2500 个点赞！&lt;/p&gt;
&lt;p&gt;这篇文章包含大量内容，涵盖了我们在过去六个月中所做的大部分改进。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular 17 有哪些更新?</title>
    <link href="https://pengtech.net/angular/angular_17_update.html"/>
    <id>https://pengtech.net/angular/angular_17_update.html</id>
    <published>2023-11-05T16:00:00.000Z</published>
    <updated>2024-08-06T10:03:52.802Z</updated>
    
    
    <summary type="html">&lt;p&gt;上个月是 Angular 红盾诞生 13 周年。AngularJS 是新一波 JavaScript 框架的起点，旨在支持对丰富 Web 体验日益增长的需求。今天，我们凭借新的外观和一系列前瞻性功能，通过版本 17 带领大家走向未来，为性能和开发人员体验设定了新标准。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Centos上安装nvm</title>
    <link href="https://pengtech.net/nodejs/install_nvm_on_centos.html"/>
    <id>https://pengtech.net/nodejs/install_nvm_on_centos.html</id>
    <published>2023-10-31T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.305Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Node Version Manager (NVM) 是一种广泛使用的工具，允许开发人员在单台计算机上管理 Node.js 的多个版本。它的重要性怎么强调都不为过，因为 Nodejs 应用程序有时可能是依赖特定版本运行，然而不同的项目可能需要不同的 Nodejs 版本。NVM 提供的灵活性确保了不同项目同时运行在同一台机的开发过程的顺利进行，允许开发人员在 Node 版本之间无缝切换。在 macOS 上，有多种安装 NVM 的方法，但最流行、最有效的方法之一是使用 Homebrew，这是 macOS 著名的包管理器。&lt;/p&gt;
&lt;p&gt;本指南将引导您完成使用 yum 在 centOS 7.9 上安装 NVM 的详细步骤，让您轻松设置灵活的 Node.js 开发环境。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>异步初始化MatPaginator</title>
    <link href="https://pengtech.net/angular/angular_async_MatPaginator.html"/>
    <id>https://pengtech.net/angular/angular_async_MatPaginator.html</id>
    <published>2023-10-25T16:00:00.000Z</published>
    <updated>2024-08-06T10:04:06.442Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-问题描述&quot;&gt;&lt;a href=&quot;#1-问题描述&quot; class=&quot;headerlink&quot; title=&quot;1. 问题描述&quot;&gt;&lt;/a&gt;1. 问题描述&lt;/h2&gt;&lt;p&gt;我们在组件中初始化MatPaginator，如&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@ViewChild(MatPaginator) paginator: MatPaginator;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;并将其分配给在我们的组件中定义的MatTable DataSource&lt;/p&gt;
&lt;p&gt;&lt;code&gt;matTableDataSource.paginator=this.ginator；&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;当使用带有*ngIf组合的async管道异步初始化数据源时，这在用例中不起作用。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>在TypeScript和Angular中使用Getter和Setter</title>
    <link href="https://pengtech.net/angular/angular_getter_setter.html"/>
    <id>https://pengtech.net/angular/angular_getter_setter.html</id>
    <published>2023-10-25T16:00:00.000Z</published>
    <updated>2024-08-06T19:02:04.579Z</updated>
    
    
    <summary type="html">&lt;p&gt;getter 和 setter 是一种众所周知的模式，在不同的语言中使用。在本文中，我想通过 TypeScript 中的示例帮助您理解 getter 和 setter。看看它如何在 Angular 应用程序中发挥作用。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>更好的大屏幕设计</title>
    <link href="https://pengtech.net/material/better_design_for_big_screen.html"/>
    <id>https://pengtech.net/material/better_design_for_big_screen.html</id>
    <published>2023-10-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;p&gt;Material You 如何支持美观、高效的平板电脑和可折叠体验?&lt;/p&gt;
&lt;p&gt;近年来，我们看到了更大屏幕的增长趋势。这在一定程度上是由于平板电脑、大型智能手机和台式机的日益普及。&lt;/p&gt;
&lt;p&gt;在今年的 Google I&amp;#x2F;O 大会上，Material Design正在深入研究针对设计师和开发人员的大屏幕设计的最新指南。请关注我们的演讲并继续阅读，了解 Material如何帮助您应对针对多种设备进行设计的挑战和机遇，以满足应用程序用户不断增长的需求。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 3介绍</title>
    <link href="https://pengtech.net/material/material3_introduction.html"/>
    <id>https://pengtech.net/material/material3_introduction.html</id>
    <published>2023-10-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-什么是Material-Design？&quot;&gt;&lt;a href=&quot;#1-什么是Material-Design？&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是Material Design？&quot;&gt;&lt;/a&gt;1. 什么是Material Design？&lt;/h2&gt;&lt;p&gt;Material Design 是由 Google 设计师和开发人员构建和支持的设计系统。Material.io包含针对 Android、Flutter 和 Web 的深入 UX 指南和 UI 组件实现。&lt;/p&gt;
&lt;p&gt;Material于2014年推出，多年来不断发展。&lt;br&gt;材料设计1（M1）：第一代Material Design于2014年推出，存档并可访问：&lt;a href=&quot;https://material.io/archive/guidelines&quot;&gt;https://Material.io/archive/guidelines&lt;/a&gt;。&lt;br&gt;材料设计2（M2）：2018年推出的第二代材料设计引入了Material主题和Material组件。&lt;br&gt;Material Design 3（M3）：2021年推出的第三代Material包括Material You功能，支持个性化、自适应和富有表现力的体验 - 从动态颜色和增强的无障碍功能，到大屏幕布局和设计Tokens的基础。&lt;br&gt;Material You：新的Material视觉风格和一系列功能，满足个人用户的个人和表达需求，是Material Design 3的一部分&lt;/p&gt;
&lt;p&gt;最新版本 Material 3 支持个性化、响应式和富有表现力的体验 - 从动态颜色和增强的可访问性，到大屏幕布局和Design tokens的基础。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material 3 基础</title>
    <link href="https://pengtech.net/material/material3_foundations.html"/>
    <id>https://pengtech.net/material/material3_foundations.html</id>
    <published>2023-10-11T16:00:00.000Z</published>
    <updated>2024-09-01T08:37:30.676Z</updated>
    
    
    <summary type="html">&lt;p&gt;Material foundations是任何优秀用户界面的基础，从无障碍标准到布局和交互的基本模式。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>如何在Ubuntu 22.04上安装Sentry</title>
    <link href="https://pengtech.net/product/sentry_install.html"/>
    <id>https://pengtech.net/product/sentry_install.html</id>
    <published>2023-10-10T16:00:00.000Z</published>
    <updated>2024-08-15T21:30:35.757Z</updated>
    
    
    <summary type="html">&lt;p&gt;Sentry 是一个免费和开源的错误跟踪平台，可以实时监控和修复崩溃。它使软件开发人员能够看到重要的东西，更快地解决问题，并不断了解他们的应用程序。这个平台提供了对生产部署的实时洞察力，并提供了重现和修复崩溃的信息。Sentry 支持所有主要的语言和框架，并与你喜欢的应用程序和服务集成。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="sentry" scheme="https://pengtech.net/tags/sentry/"/>
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
    <category term="backend" scheme="https://pengtech.net/tags/backend/"/>
    
  </entry>
  
  <entry>
    <title>使用rpm部署Strapi</title>
    <link href="https://pengtech.net/strapi/strapi_deployment.html"/>
    <id>https://pengtech.net/strapi/strapi_deployment.html</id>
    <published>2023-10-09T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;p&gt;strapi 是目前我最喜欢的 CMS 系统之一, 因为它可以嵌入到各种前端框架, 并于各种前端技术浑然天成, 这是我喜欢它的原因. 这里大胆预测一些, 它大概会成为下一代 CMS 系统的引领者. 虽然它还很年轻, 但是已经出现王者气象.&lt;/p&gt;
&lt;p&gt;正如很多年轻技术一样, 它还有很多不够完善的地方, 今天就它对于 self-hosted 部署方式的不足之处, 我们另辟蹊径介绍一种我正在实践的自动部署方式. 那就是使用 rpm 包进行部署.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="CMS" scheme="https://pengtech.net/categories/web/CMS/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="strapi" scheme="https://pengtech.net/tags/strapi/"/>
    
    <category term="CMS" scheme="https://pengtech.net/tags/CMS/"/>
    
  </entry>
  
  <entry>
    <title>Angular中使用forroot和forchild</title>
    <link href="https://pengtech.net/angular/angular_forroot_forchild.html"/>
    <id>https://pengtech.net/angular/angular_forroot_forchild.html</id>
    <published>2023-09-28T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.395Z</updated>
    
    
    <summary type="html">&lt;p&gt;在本文中我们将深入探讨一些您可能已经见过的 Angular 模式和方法。我将讨论 Angular 管理依赖项辑器配置信息中经常会使用到的 forRoot 和 forChild 方法。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular独立组件介绍</title>
    <link href="https://pengtech.net/angular/angular_standalone_components.html"/>
    <id>https://pengtech.net/angular/angular_standalone_components.html</id>
    <published>2023-09-27T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.338Z</updated>
    
    
    <summary type="html">&lt;p&gt;Angular 14 引入了独立组件——该组件不属于任何 ngModule 的一部分，可以与其他独立或基于模块的组件一起使用。&lt;/p&gt;
&lt;p&gt;从 Angular 14 开始，您可以创建整个应用程序，而无需制作任何自定义 Angular 模块，这可以通过使用独立组件来实现，这些组件提供了创建 Angular 应用程序的简化方法。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>在Angular中使用async-await特性</title>
    <link href="https://pengtech.net/angular/angular_async-await.html"/>
    <id>https://pengtech.net/angular/angular_async-await.html</id>
    <published>2023-09-26T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;p&gt;Promise 和回调函数是在 JavaScript 中编写异步代码的构建块。&lt;/p&gt;
&lt;p&gt;在 Angular 应用程序中，我们可以使用 Rx.js 来利用 Observables、Subject、BehaviorSubject 等的强大功能，以优雅的方式编写异步代码。&lt;/p&gt;
&lt;p&gt;随着最新版本的 ECMA Script 草案，JavaScript 开始支持“异步等待”功能。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tc39.github.io/ecma262/#sec-async-function-definitions&quot;&gt;ECMAScript 最新草案 (ECMA-262)&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular Async Pipe详解</title>
    <link href="https://pengtech.net/angular/angular_async_pipe.html"/>
    <id>https://pengtech.net/angular/angular_async_pipe.html</id>
    <published>2023-09-26T16:00:00.000Z</published>
    <updated>2024-08-06T10:04:24.884Z</updated>
    
    
    <summary type="html">&lt;p&gt;Async Pipe可以对 Angular 应用程序的更改检测策略产生巨大影响。如果到目前为止您还感到困惑，请详解读完全文。我们一起来了解一下吧！&lt;/p&gt;
&lt;p&gt;在 Angular 中，Async Pipe本质上是执行以下三个任务的管道:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它订阅一个observable或一个Promise并返回最后发出的值。&lt;/li&gt;
&lt;li&gt;每当发出新值时，它都会标记组件为需要要检查的。这意味着Angular将在下一个周期中为该组件运行Change Detector。&lt;/li&gt;
&lt;li&gt;当组件被销毁时，它会取消订阅可观察的内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外，作为最佳实践，建议尝试使用 onPush 更改检测策略上的组件和异步管道来订阅可观察对象。&lt;/p&gt;
&lt;p&gt;如果您是Angular的初学者，也许上面对异步管道的解释让人不知所措。因此，在本文中，我们将尝试使用代码示例逐步理解异步管道。只需创建一个新的Angular 项目并继续操作即可；在文章的最后，您应该对异步管道有一些深刻的了解。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular整合strapi CMS</title>
    <link href="https://pengtech.net/strapi/angular_strapi_app.html"/>
    <id>https://pengtech.net/strapi/angular_strapi_app.html</id>
    <published>2023-09-25T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;对于我们这些开发人员来说，启动一个新的web项目可能是一项乏味的工作。一些普通的增删改查都要自己亲自动手去写，那效率着实是大打折扣的。&lt;/p&gt;
&lt;p&gt;一些技术选型工作要一次一次地被重复考虑.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端应该使用什么技术？&lt;/li&gt;
&lt;li&gt;我应该在后端使用什么技术？&lt;/li&gt;
&lt;li&gt;什么数据库是最好的？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为现在所有的Javascript技术，如React、Angular和Vue，在构建Web应用程序时都非常流行，所以我们可以很快得到第一个问题的答案。&lt;br&gt;但是后端呢？我应该使用NodeJS还是.NET Core？&lt;br&gt;使用关系数据库还是非关系数据库更好？&lt;br&gt;后端解决方案Strapi已经找到了所有这些问题的答案。&lt;/p&gt;
&lt;p&gt;在本文中，我们将使用Strapi和Angular构建一个简单的web应用程序。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="CMS" scheme="https://pengtech.net/categories/web/CMS/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="strapi" scheme="https://pengtech.net/tags/strapi/"/>
    
  </entry>
  
  <entry>
    <title>Strapi的安装和使用</title>
    <link href="https://pengtech.net/strapi/install_strapi.html"/>
    <id>https://pengtech.net/strapi/install_strapi.html</id>
    <published>2023-09-25T16:00:00.000Z</published>
    <updated>2025-04-30T03:50:34.792Z</updated>
    
    
    <summary type="html">&lt;p&gt;strapi一款基于Node.js开发的headless, 接口优先（API-first）的内容管理系统.&lt;/p&gt;
&lt;p&gt;Strapi 应用程序可以本地安装在计算机上，也可以安装在远程服务器上。以下安装指南提供了有关如何在本地计算机上安装和创建新Strapi项目的分步说明。&lt;/p&gt;
&lt;p&gt;Strapi CLI（命令行界面）安装脚本是让 Strapi 在本地运行的最快方法, 也是官方推荐的安装方式。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="CMS" scheme="https://pengtech.net/categories/web/CMS/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="strapi" scheme="https://pengtech.net/tags/strapi/"/>
    
  </entry>
  
  <entry>
    <title>strapi 项目结构介绍</title>
    <link href="https://pengtech.net/strapi/strapi_project_structure.html"/>
    <id>https://pengtech.net/strapi/strapi_project_structure.html</id>
    <published>2023-09-25T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.397Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-项目结构&quot;&gt;&lt;a href=&quot;#1-项目结构&quot; class=&quot;headerlink&quot; title=&quot;1. 项目结构&quot;&gt;&lt;/a&gt;1. 项目结构&lt;/h2&gt;&lt;p&gt;如果 Strapi 项目是使用starter CLI创建的，则其结构包括frontend和backend文件夹，其中backend文件夹具有默认结构。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="CMS" scheme="https://pengtech.net/categories/web/CMS/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="strapi" scheme="https://pengtech.net/tags/strapi/"/>
    
  </entry>
  
  <entry>
    <title>如何在Strapi v4中创建Slug系统</title>
    <link href="https://pengtech.net/strapi/strapi_slug_system.html"/>
    <id>https://pengtech.net/strapi/strapi_slug_system.html</id>
    <published>2023-09-25T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;p&gt;在为客户或您自己构建网站时，您通常希望通过 URL 中的人类可读的 slug 来访问您的公共内容。这将有助于搜索引擎优化 (SEO)，并且更容易让用户理解。值得庆幸的是，借助Strapi，您可以轻松地以这种方式访问​​您的内容。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="CMS" scheme="https://pengtech.net/categories/web/CMS/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="strapi" scheme="https://pengtech.net/tags/strapi/"/>
    
  </entry>
  
  <entry>
    <title>计算机发展极简编年史</title>
    <link href="https://pengtech.net/history/computer_history_brief_timeline.html"/>
    <id>https://pengtech.net/history/computer_history_brief_timeline.html</id>
    <published>2023-09-11T16:00:00.000Z</published>
    <updated>2025-03-15T00:50:19.117Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;我为什么要写这篇文章? 计算机发展的速度太快了, 已经进入了蓬勃发展期. 但是依然看不到它的尽头, 看不清它的终极形态. 很多人都在追逐新的技术, 但是很少有人拿起笔系统的记录它的过去。 很多年以后当我们要追寻一项技术的来龙去脉的时候, 可能连它的”尸身”都找不到了.&lt;/p&gt;
&lt;p&gt;比如说软盘驱动器（floppy disk driver）现在谁手上还保存有一张 1.44MB 的 3.5 英寸软盘, 谁电脑上还会装有软驱呢, 这在当时可是一项创新性的技术, 是便携式存储的鼻祖, 是一代人的回忆。 一张小小的软盘能装下一整套 DOS 操作系统, 能装下一个夏天的劳动成果. 但是现在当我想介绍存储技术的演进过程时, 不仅找不到一部软驱, 一张软盘, 就连一张合适的图片的很难找到了. 同样的命运的还有寻呼机机, 这个承载着很多人青春记忆的通信设备, 可能剩下脑海中的 只有它发出的 BiBi 声了. 同样的命运的还有功能机, 早已过了手机换脸盆的淘汰期, 曾经层出不穷的款式, 不知道现在还有几款健在. 更不用说他们所依赖的生态系统, 比如基站设备, 外设装置.&lt;/p&gt;
&lt;p&gt;站在当下这个似乎还能朦朦胧胧看到过去的时间节点, 在不费太多力气的情况下, 将不太遥远的过去记录下来, 省得后来人花费昂贵的代价去考古, 也不失为一件幸事.&lt;/p&gt;
&lt;p&gt;为什么以编年体的形式记录这段历史? 其实这是我的某项计划的一部分, 还处于材料收集阶段, 收集计算机发展史也是我副业中的副业, 没有太多时间深入研究和系统性地整理, 只能以最简单的方式快速呈现内容, 不至于让整个计划胎死腹中(我已经有很多文章由于计划过于宏大而胎死腹中的先例了). 编年体是快速理清脉络, 呈现材料的最好方式. 它不需要花太多时间去整理去构思, 而且结构也非常清晰. 另外我也非常喜欢将软件工程中的一些概念应用到写作中, 那就是小步快跑, 快速迭代; 再者就是重构. 有了足够的材料后, 我相信通过不断地重构, 不断地迭代, 能将其打造为我心中理想的样子. 所以这篇文章会是一篇不断完善的文章, 请有兴趣的朋友关注&lt;a href=&quot;https://pengtech.net/&quot;&gt;鹏叔的技术博客&lt;/a&gt;获取最新内容. 另外如何您有兴趣资助鹏叔的计划, &lt;a href=&quot;https://pengtech.net/history/computer_history_brief_timeline.html&quot;&gt;原文&lt;/a&gt;末尾有打赏功能, 请点一点, 在此表示感谢!&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>Chart.js教程</title>
    <link href="https://pengtech.net/web/chartjs_tutorial.html"/>
    <id>https://pengtech.net/web/chartjs_tutorial.html</id>
    <published>2023-09-04T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-chart-js-介绍&quot;&gt;&lt;a href=&quot;#1-chart-js-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. chart.js 介绍&quot;&gt;&lt;/a&gt;1. chart.js 介绍&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/chartjs/Chart.js&quot;&gt;Chart.js&lt;/a&gt;是一个流行的由社区维护的开源数据可视化框架。它使我们能够生成响应式条形图、饼图、线图、甜甜圈图、散点图等。我们所要做的就是简单地指出你想在页面的什么地方显示图表，你想绘制什么样的图表，然后向 Chart.js 提供数据、标签和其他设置。在这之后，这个库就完成了所有繁重的工作。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="components" scheme="https://pengtech.net/categories/web/components/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="chartjs" scheme="https://pengtech.net/tags/chartjs/"/>
    
  </entry>
  
  <entry>
    <title>如何在Angular应用中使用Ng2-charts</title>
    <link href="https://pengtech.net/angular/angular_ng2_charts.html"/>
    <id>https://pengtech.net/angular/angular_ng2_charts.html</id>
    <published>2023-09-03T16:00:00.000Z</published>
    <updated>2024-10-19T09:09:36.985Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;图表帮助我们以易于理解和交互的方式可视化大量数据。&lt;/p&gt;
&lt;p&gt;在 Angular 中，我们有各种图表库来创建图表。&lt;/p&gt;
&lt;p&gt;在本文中，我们将使用 Ng2-Charts 在 Angular 中开发出色的图表。&lt;/p&gt;
&lt;p&gt;在本文中我们将会讲述&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ng2-charts 介绍&lt;/li&gt;
&lt;li&gt;在 Angular 中安装 ng2-charts 的两种不同方法。&lt;/li&gt;
&lt;li&gt;创建条形图&lt;/li&gt;
&lt;li&gt;创建折线图&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>如何在Angular应用中使用Ngx-charts？</title>
    <link href="https://pengtech.net/angular/angular_ngx_charts.html"/>
    <id>https://pengtech.net/angular/angular_ngx_charts.html</id>
    <published>2023-09-03T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.395Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;图表帮助我们以易于理解和交互的方式可视化大量数据。在 Angular 中，我们有各种图表库来创建图表。NGX-charts 就是其中之一。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://swimlane.github.io/ngx-charts/#/ngx-charts/&quot;&gt;ngx-charts&lt;/a&gt; 是 Angular2+ 的开源声明式图表框架。它由&lt;a href=&quot;https://swimlane.com/&quot;&gt;Swimlane&lt;/a&gt;维护 。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular图表库介绍</title>
    <link href="https://pengtech.net/angular/angular_chart_solutions.html"/>
    <id>https://pengtech.net/angular/angular_chart_solutions.html</id>
    <published>2023-09-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.396Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;如今，数据分析是任何业务应用程序的重要组成部分。这有助于企业做出重要决策。以易于理解和交互的方式表示大量数据非常重要。&lt;br&gt;图表对于美观、易于理解和交互式的数据可视化非常有用。&lt;/p&gt;
&lt;p&gt;JavaScript 中有不同的开源和付费图表库，可以实现漂亮的数据表示。&lt;/p&gt;
&lt;p&gt;在本文中，我们将研究几款美观的, 易于交互的 Angular 图表库。&lt;/p&gt;
&lt;p&gt;首先，我们将看到开源 Angular 图表库，稍后我们将研究其他付费 Angular 图表库.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>将ngx-datatable替换为Angular material table</title>
    <link href="https://pengtech.net/angular/angular_ngx_table_to_mat_table.html"/>
    <id>https://pengtech.net/angular/angular_ngx_table_to_mat_table.html</id>
    <published>2023-09-01T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;从 Angular 1.x 到 Angular 13 一直是用的 angular-data-table(for angularjs 1.x)和它的姊妹项目 ngx-datatable(for angular 2+), 但是最近需要将 Angular 项目从 Angular 14 升级到 Angular 16 的过程中发现了一些兼容性问题, 另外 ngx-datatable 也不支持 dark mode. 再次关注 ngx-datatable 以及网上的评论都有同感, ngx-datatable 的更新速度严重放缓了, 有些跟不上 Angular 更新的节奏了. 参考 reddit 上的一篇帖子&lt;a href=&quot;https://www.reddit.com/r/Angular2/comments/c3f6cm/any_better_alternatives_to_ngxdatatable/&quot;&gt;Any better alternatives to ngx-datatable?&lt;/a&gt;, 也谈到了 ngx-datatable 更新放缓.&lt;/p&gt;
&lt;p&gt;于是考虑将 ngx-datatable 组件替换掉, 这里有一些付费的项目, 在功能上可以完全替换, 比如&lt;a href=&quot;https://www.ag-grid.com/&quot;&gt;ag-grid&lt;/a&gt;, &lt;a href=&quot;https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/grid&quot;&gt;Ignite UI for Angular Data Grid&lt;/a&gt;, &lt;a href=&quot;https://ej2.syncfusion.com/angular/demos/#/material3/grid/over-view&quot;&gt;Syncfusion Angular UI Components - Data Grid&lt;/a&gt;等等.&lt;/p&gt;
&lt;p&gt;最后考察了 angular material table 在功能上完全服务我们的要求, sorting, pagination, server side pagination 之类的功能都有. 另外项目刚好使用的是 Material Design 设计风格, 那些付费方案的高级功能也用不上, 还要花时间学习, 另外考虑到 bundle 文件的大小, 最后坚定的选择了 Angular material table. 于是才有了这篇文章&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Windows下搭建WSL Linux开发环境</title>
    <link href="https://pengtech.net/windows/wsl_install.html"/>
    <id>https://pengtech.net/windows/wsl_install.html</id>
    <published>2023-08-28T16:00:00.000Z</published>
    <updated>2025-03-08T00:25:48.549Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;WSL（Windows Subsyetem for Linux，适用于 Linux 的 Windows 子系统），是 Microsoft 公司于 2016 年在 Windows 10 平台发布的一项新功能，其使得用户可以在 Windows 操作系统上运行 ELF 格式的 Linux 可执行文件。&lt;/p&gt;
&lt;p&gt;WSL 目前已发布两代产品：WSL 1 和 WSL 2。WSL 1 实现了 Linux 兼容层，将 Linux 系统调用转换为 Windows NT 系统调用；而 WSL 2 则利用 Windows 的 Hyper-V 功能，通过虚拟化技术直接运行 Linux 虚拟机，更接近原生 Linux 操作系统体验。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>Windows上安装nvm和nodejs</title>
    <link href="https://pengtech.net/nodejs/install_nvm_on_windows.html"/>
    <id>https://pengtech.net/nodejs/install_nvm_on_windows.html</id>
    <published>2023-08-24T16:00:00.000Z</published>
    <updated>2026-02-22T22:38:30.133Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Node Version Manager (NVM) 是一种广泛使用的工具，允许开发人员在单台计算机上管理 Node.js 的多个版本。它的重要性怎么强调都不为过，因为 Nodejs 应用程序有时可能是依赖特定版本运行，然而不同的项目可能需要不同的 Nodejs 版本。NVM 提供的灵活性确保了不同项目同时运行在同一台机的开发过程的顺利进行，允许开发人员在 Node 版本之间无缝切换。在 windows 上，有多种安装 NVM 的方法，但最流行、最有效的方法之一是使用 Chocolatey，这是微软出品的包管理器。&lt;/p&gt;
&lt;p&gt;本指南将引导您完成使用讲述在 windows 上安装 NVM 的详细步骤，让您轻松设置灵活的 Node.js 开发环境。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>Windows开发环境配置</title>
    <link href="https://pengtech.net/vmware/windows_env_setup.html"/>
    <id>https://pengtech.net/vmware/windows_env_setup.html</id>
    <published>2023-08-24T16:00:00.000Z</published>
    <updated>2024-11-06T11:13:26.611Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;h2 id=&quot;1-安装Chocolatey&quot;&gt;&lt;a href=&quot;#1-安装Chocolatey&quot; class=&quot;headerlink&quot; title=&quot;1. 安装Chocolatey&quot;&gt;&lt;/a&gt;1.</summary>
        
      
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>MacOS上安装nvm</title>
    <link href="https://pengtech.net/nodejs/install_nvm_on_macos.html"/>
    <id>https://pengtech.net/nodejs/install_nvm_on_macos.html</id>
    <published>2023-08-22T16:00:00.000Z</published>
    <updated>2024-08-13T09:43:53.325Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Node Version Manager (NVM) 是一种广泛使用的工具，允许开发人员在单台计算机上管理 Node.js 的多个版本。它的重要性怎么强调都不为过，因为 Nodejs 应用程序有时可能是依赖特定版本运行，然而不同的项目可能需要不同的 Nodejs 版本。NVM 提供的灵活性确保了不同项目同时运行在同一台机的开发过程的顺利进行，允许开发人员在 Node 版本之间无缝切换。在 macOS 上，有多种安装 NVM 的方法，但最流行、最有效的方法之一是使用 Homebrew，这是 macOS 著名的包管理器。&lt;/p&gt;
&lt;p&gt;本指南将引导您完成使用 Homebrew 在 macOS 上安装 NVM 的详细步骤，让您轻松设置灵活的 Node.js 开发环境。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>在Linux上配置Tauri环境</title>
    <link href="https://pengtech.net/tauri/setup_tauri_for_linux.html"/>
    <id>https://pengtech.net/tauri/setup_tauri_for_linux.html</id>
    <published>2023-08-21T16:00:00.000Z</published>
    <updated>2025-08-26T11:50:48.967Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文讲述如何在 linux 操作系统中配置 Tauri 编译, 打包环境.&lt;/p&gt;
&lt;h2 id=&quot;2-安装依赖工具和开发包&quot;&gt;&lt;a href=&quot;#2-安装依赖工具和开发包&quot; class=&quot;headerlink&quot; title=&quot;2. 安装依赖工具和开发包&quot;&gt;&lt;/a&gt;2. 安装依赖工具和开发包&lt;/h2&gt;&lt;p&gt;您将需要安装几个系统依赖项，例如 C 编译器和 webkit2gtk。以下是一些流行发行版的命令：&lt;/p&gt;
&lt;p&gt;debian 系列 Linux 发行版,&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>gitlab-runner常用命令</title>
    <link href="https://pengtech.net/gitlab/gitlab-runner_cli.html"/>
    <id>https://pengtech.net/gitlab/gitlab-runner_cli.html</id>
    <published>2023-08-20T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.389Z</updated>
    
    
    <summary type="html">&lt;p&gt;本文主要讲述如何使用 gitlab-runner cli 命令。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>fedora上安装gitlab-runner安装与配置</title>
    <link href="https://pengtech.net/gitlab/gitlab_runner_on_fedora.html"/>
    <id>https://pengtech.net/gitlab/gitlab_runner_on_fedora.html</id>
    <published>2023-08-20T16:00:00.000Z</published>
    <updated>2026-02-22T22:36:03.985Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文主要讲述如何在fedora上安装gitlab-runner，安装和配置过程同样适用于其他Linux发行版。&lt;/p&gt;
&lt;p&gt;本文是gitlab-runner安装和配置姊妹篇中的一篇，主要针对fedora操作系统，其它操作系统可以参考针对特定操作系统的姊妹篇。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pengtech.net/gitlab/gitlab_runner_installation.html&quot;&gt;gitlab-runner安装与配置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pengtech.net/gitlab/gitlab_runner_on_macos.html&quot;&gt;macOS上安装gitlab-runner安装与配置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pengtech.net/gitlab/gitlab_runner_on_ubuntu.html&quot;&gt;ubuntu上安装gitlab-runner安装与配置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pengtech.net/gitlab/gitlab_runner_on_windows.html&quot;&gt;windows上安装gitlab-runner&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>macOS上安装gitlab-runner安装与配置</title>
    <link href="https://pengtech.net/gitlab/gitlab_runner_on_macos.html"/>
    <id>https://pengtech.net/gitlab/gitlab_runner_on_macos.html</id>
    <published>2023-08-20T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文主要介绍使用二进制文件方式在macOS上安装并注册gitlab-runner.&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>ubuntu上安装gitlab-runner安装与配置</title>
    <link href="https://pengtech.net/gitlab/gitlab_runner_on_ubuntu.html"/>
    <id>https://pengtech.net/gitlab/gitlab_runner_on_ubuntu.html</id>
    <published>2023-08-20T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在ubuntu上安装gitlab-runner有两种方式: 一种是使用deb&amp;#x2F;rpm包安装; 一种是使用二进制文件安装.&lt;/p&gt;
&lt;p&gt;前一种更方便, 后一种使用范围更广泛, 可以适用于Archlinux或其它任何架构的Linux 发行版.&lt;/p&gt;
&lt;p&gt;本文主要介绍使用deb&amp;#x2F;rpm包安装gitlab-runner, 二进制安装方式可以参考官方文档&lt;a href=&quot;https://docs.gitlab.com/runner/install/linux-manually.html#using-binary-file&quot;&gt;Using binary file install gitlab-runner&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>Macos开发环境配置</title>
    <link href="https://pengtech.net/vmware/macos_env_setup.html"/>
    <id>https://pengtech.net/vmware/macos_env_setup.html</id>
    <published>2023-08-20T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文讲述如何为Macos配置开发环境.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>esxi6.7升级至esxi7.0</title>
    <link href="https://pengtech.net/vmware/esxi_upgrade.html"/>
    <id>https://pengtech.net/vmware/esxi_upgrade.html</id>
    <published>2023-08-19T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.398Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-升级前准备&quot;&gt;&lt;a href=&quot;#1-升级前准备&quot; class=&quot;headerlink&quot; title=&quot;1. 升级前准备&quot;&gt;&lt;/a&gt;1. 升级前准备&lt;/h2&gt;&lt;h3 id=&quot;1-1-备份&quot;&gt;&lt;a href=&quot;#1-1-备份&quot; class=&quot;headerlink&quot; title=&quot;1.1. 备份&quot;&gt;&lt;/a&gt;1.1. 备份&lt;/h3&gt;&lt;p&gt;将当前ESXi Server的数据备份至其它ESXi Server&lt;/p&gt;
&lt;p&gt;参考升级路径&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://interopmatrix.vmware.com/Upgrade?productId=1&quot;&gt;esxi 升级路径&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载升级包&lt;/p&gt;
&lt;p&gt;访问&lt;a href=&quot;https://customerconnect.vmware.com/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0&quot;&gt;VMWare 7.0下载页面&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在Standard 列表中选择 VMware vSphere Hypervisor (ESXi), 点击右侧”go to downloads”进入下载页面.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>windows上安装gitlab-runner</title>
    <link href="https://pengtech.net/gitlab/gitlab_runner_on_windows.html"/>
    <id>https://pengtech.net/gitlab/gitlab_runner_on_windows.html</id>
    <published>2023-08-18T16:00:00.000Z</published>
    <updated>2024-08-14T16:15:26.082Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;因为需要在Windows上打包Tauri程序, 所以需要一个windows gitlab-runner, 于是有了这篇文章.&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>安装Ubuntu虚拟机</title>
    <link href="https://pengtech.net/vmware/vmware_install_ubuntu.html"/>
    <id>https://pengtech.net/vmware/vmware_install_ubuntu.html</id>
    <published>2023-08-17T16:00:00.000Z</published>
    <updated>2025-03-08T00:22:57.089Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;安装Ubuntu虚拟机主要是为了打包Tauri桌面应用, 这里使用的虚拟化平台是VMWare ESXi 6.7.&lt;/p&gt;
&lt;h2 id=&quot;2-前提条件&quot;&gt;&lt;a href=&quot;#2-前提条件&quot; class=&quot;headerlink&quot; title=&quot;2. 前提条件&quot;&gt;&lt;/a&gt;2. 前提条件&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;需要一个虚拟化系统, 可以是Vmare, ESXI, 也可以是virtualBox, podman.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;需要Ubuntu系统的iso文件.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="Linux" scheme="https://pengtech.net/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://pengtech.net/tags/Ubuntu/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>如何使用VMware ESXi安装一台Windows虚拟机</title>
    <link href="https://pengtech.net/vmware/vmware_install_windows.html"/>
    <id>https://pengtech.net/vmware/vmware_install_windows.html</id>
    <published>2023-08-17T16:00:00.000Z</published>
    <updated>2024-08-26T10:34:18.107Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;最近在开发一个Tauri桌面应用, 由于Tauri应用的跨平台编译特性还不是特别完善, 比如打包Windows桌面应用程序, 需要在Windows上进行. 于是想到了是否能安装一台Windows虚拟机用于打包, 并兼顾Windows上的测试. 于是就有了这篇文章.&lt;/p&gt;
&lt;p&gt;本文原文位于&lt;a href=&quot;https://pengtech.net/vmware/vmware_install_windows.html&quot;&gt;鹏叔的博客空间 - 如何安装一台Windows虚拟机&lt;/a&gt;, 原文下面有打赏按钮, 原创不易, 希望得到您的支持, 您的支持是持续输出更多好文的动力!&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
    <category term="macOS" scheme="https://pengtech.net/tags/macOS/"/>
    
  </entry>
  
  <entry>
    <title>用Vmware安装一台MacOS虚拟机</title>
    <link href="https://pengtech.net/vmware/vmware_macos_vm.html"/>
    <id>https://pengtech.net/vmware/vmware_macos_vm.html</id>
    <published>2023-08-17T16:00:00.000Z</published>
    <updated>2025-06-14T00:30:21.153Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;最近在开发一个 Tauri 桌面应用, 由于 Tauri 应用的跨平台编译特性还不是特别完善, 比如打包 macos 桌面应用程序, 需要在 Macos 上进行. 于是想到了是否能安装一台 macos 虚拟机用于打包, 并兼顾 Macos 上的测试. 于是就有了这篇文章. 当然安装 macos 虚拟机的好处远不指这些.&lt;/p&gt;
&lt;p&gt;原创不易, 本文原文位于&lt;a href=&quot;https://pengtech.net/vmware/vmware_macos_vm.html&quot;&gt;如何安装一台 MacOS 虚拟机 | 鹏叔的技术博客 &lt;/a&gt;, 原文下面有打赏按钮, 希望得到您的支持, 您的支持是持续输出更多好文的动力!&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
    <category term="macOS" scheme="https://pengtech.net/tags/macOS/"/>
    
  </entry>
  
  <entry>
    <title>快速的将web应用转化为桌面应用</title>
    <link href="https://pengtech.net/tauri/convert_web-app_into_desktop.html"/>
    <id>https://pengtech.net/tauri/convert_web-app_into_desktop.html</id>
    <published>2023-08-14T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.397Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文讲述如何将Web应用转化为桌面应用。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>Tauri cli详解</title>
    <link href="https://pengtech.net/tauri/tauri_cli.html"/>
    <id>https://pengtech.net/tauri/tauri_cli.html</id>
    <published>2023-08-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;这是一份Tauri cli中文版详细说明文档, 由&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt;团队翻译.&lt;br&gt;原文位于&lt;a href=&quot;https://pengtech.net/tauri/tauri_cli.html&quot;&gt;鹏叔的技术博客 - Tauri cli详解&lt;/a&gt;, 要获得最近更新及反馈问题请访问原文!&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>Tauri开发环境配置</title>
    <link href="https://pengtech.net/tauri/tauri_env_setup.html"/>
    <id>https://pengtech.net/tauri/tauri_env_setup.html</id>
    <published>2023-08-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文要介绍的Tauri，一个多语言工具链，可使用小型和快速的二进制文件构建安全的原生应用。官网地址：&lt;a href=&quot;https://tauri.app/&quot;&gt;https://tauri.app/&lt;/a&gt;.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>创建gitlab pipeline打包Tauri跨平台应用程序</title>
    <link href="https://pengtech.net/tauri/tauri_gitlab_pipeline.html"/>
    <id>https://pengtech.net/tauri/tauri_gitlab_pipeline.html</id>
    <published>2023-08-14T16:00:00.000Z</published>
    <updated>2025-03-08T00:23:40.438Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;关于如何对 Tauri 项目进行打包和发布, 在 Tauri 的官方网站实际上只做了基本的介绍. 而且由于 Tauri 或者说是 Rust 对跨平台编译以及打包支持得不是很好.&lt;/p&gt;
&lt;p&gt;所以到底如何在 Github.com 以外得平台进行编译打包, 讲得不够详细. 本人希望搜索到能对这方面有所补充的博客文章, 但是也没有找到. 包括一些英文方面的资料以及视频教程都不理想。 网上关于 Tauri 的 devops 自动化编译打包部署方面都是照本宣科, 按照官方的介绍使用 github action 进行配置. 而这些内容对于企业开发或者非开源项目来说帮助非常有限.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>Tauri Mobile-使用JavaScript和Rust开发移动应用程序</title>
    <link href="https://pengtech.net/tauri/tauri_mobile.html"/>
    <id>https://pengtech.net/tauri/tauri_mobile.html</id>
    <published>2023-08-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Tauri 定位为一个为所有主要桌面平台构建微小、速度极快的二进制文件的框架。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架来构建用户界面。应用程序的后端是一个 Rust 二进制文件，具有前端可以与之交互的 API。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>从 NPM 迁移到 PNPM</title>
    <link href="https://pengtech.net/nodejs/migrate_to_pnpm.html"/>
    <id>https://pengtech.net/nodejs/migrate_to_pnpm.html</id>
    <published>2023-08-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.306Z</updated>
    
    
    <summary type="html">&lt;p&gt;PNPM 一直被誉为 NPM 的更高性能和更可靠的替代品，旨在减少缓慢的构建时间并消除依赖项不匹配的问题。我主要研究 PNPM 作为一种加快 CI 管道完成时间的方法，以及在开发周期中使用更好的包管理器。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="build tools" scheme="https://pengtech.net/categories/devops/build-tools/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
    <category term="pnpm" scheme="https://pengtech.net/tags/pnpm/"/>
    
  </entry>
  
  <entry>
    <title>为什么我们应该使用pnpm?</title>
    <link href="https://pengtech.net/nodejs/why_pnpm.html"/>
    <id>https://pengtech.net/nodejs/why_pnpm.html</id>
    <published>2023-08-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.277Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;原文: &lt;a href=&quot;https://www.kochan.io/nodejs/why-should-we-use-pnpm.html&quot;&gt;Why should we use pnpm?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Author: Zoltan Kochan&lt;/p&gt;
&lt;p&gt;译者：&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt; 团队&lt;/p&gt;
&lt;p&gt;关键字： pnpm, npm, yarn&lt;/p&gt;
&lt;p&gt;pnpm是 Node.js 的替代包管理器。它是 npm 的直接替代品，但速度更快、效率更高。&lt;/p&gt;
&lt;p&gt;多快？快3倍！请参阅此处的&lt;a href=&quot;https://github.com/pnpm/node-package-manager-benchmark&quot;&gt;基准&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;为什么效率更高？当您安装软件包时，我们将其保存在您计算机上的全局存储中，然后我们从中创建硬链接而不是复制。对于模块的每个版本，磁盘上仅保留一个副本。例如，当使用npm或yarn时，如果您有100个使用lodash的包，则磁盘上将有100个lodash副本。Pnpm 可以让您节省千兆字节的磁盘空间！&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>npm create命令详解</title>
    <link href="https://pengtech.net/nodejs/npm_create_command.html"/>
    <id>https://pengtech.net/nodejs/npm_create_command.html</id>
    <published>2023-08-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.290Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;今天使用&lt;code&gt;npm create tauri-app&lt;/code&gt;时候发现npm不是简单的创建一个nodejs工程, 其还做了很多特定于tauri相关的操作, 顿时感到这个命令不单纯, 这个命令可能还能干很多活, 迅速燃起了研究的兴趣, 于是写下了这篇文章.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>使用Tauri和Angular创建桌面应用程序</title>
    <link href="https://pengtech.net/tauri/tauri_angular_desktop.html"/>
    <id>https://pengtech.net/tauri/tauri_angular_desktop.html</id>
    <published>2023-08-11T16:00:00.000Z</published>
    <updated>2024-08-26T10:32:01.574Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Tauri 是一个应用程序构建工具包，可让您使用 Web 技术为所有主要桌面操作系统构建软件。核心库是用 Rust 编写的，用户界面几乎可以使用任何前端框架编写。它包括一个可选的、tree-shakeable JavaScript API用于舒适地访问底层操作系统、一个具有签名和验证的桌面二进制捆绑器、一个让您的用户保持最新版本的安全更新程序、一个可扩展的插件系统以及支持与操作系统整合，例如通知和应用程序托盘。&lt;/p&gt;
&lt;p&gt;Tauri 使用简单且易于扩展。对于 Rust 编程语言的新手，Tauri 提供了一个舒适的学习环境，将与您一起成长。安装 Rust 后，创建您的第一个应用程序只需运行create-tauri-app. 但如果您希望保持 100% Rust 的安全性和舒适性，那么您根本不必使用 Node.js。&lt;/p&gt;
&lt;p&gt;我们为注重安全、尊重隐私和具有环保意识的软件工程社区构建 Tauri&lt;/p&gt;
&lt;p&gt;Tauri的设计哲学: 我们为注重安全、尊重隐私和具有环保意识的软件工程社区构建Tauri.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="tauri" scheme="https://pengtech.net/categories/web/tauri/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="tauri" scheme="https://pengtech.net/tags/tauri/"/>
    
  </entry>
  
  <entry>
    <title>SVG详解</title>
    <link href="https://pengtech.net/web/svg.html"/>
    <id>https://pengtech.net/web/svg.html</id>
    <published>2023-08-07T16:00:00.000Z</published>
    <updated>2025-03-08T00:32:31.449Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;SVG 是一种 XML 语言，类似 XHTML，可以用来绘制矢量图形，英文全称是Scalable Vector Graphics 可缩放矢量图, 是W3C的一项建议. 基于像素的图像, 如果被放大会看到明显的失真, 而svg是基于形状描述的, svg图像无论放大多少倍都不会失真.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="html" scheme="https://pengtech.net/tags/html/"/>
    
  </entry>
  
  <entry>
    <title>chrome插件开发中Chrome storage API使用详解</title>
    <link href="https://pengtech.net/chrome/chrome_storage_api.html"/>
    <id>https://pengtech.net/chrome/chrome_storage_api.html</id>
    <published>2023-07-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Storage API 是 Google Chrome 提供的一个内置 API，用于在插件中存储和访问数据。它提供了四种存储方式：本地存储（Local Storage）,同步存储（Sync Storage）,会话存储(storage.session), 受管存储(storage.managed)。本地存储用于在本地计算机上存储数据，而同步存储则将数据存储在用户的 Google 账号中，并在不同设备间同步。这使得插件能够在不同环境中保持一致的数据状态，为用户提供更好的体验。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="browser" scheme="https://pengtech.net/categories/web/browser/"/>
    
    
    <category term="chrome" scheme="https://pengtech.net/tags/chrome/"/>
    
  </entry>
  
  <entry>
    <title>Chrome插件开发</title>
    <link href="https://pengtech.net/chrome/chrome_plugin_development.html"/>
    <id>https://pengtech.net/chrome/chrome_plugin_development.html</id>
    <published>2023-07-24T16:00:00.000Z</published>
    <updated>2024-08-07T15:58:02.154Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/mv3/&quot;&gt;chrome extensions官方文档&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;2-初识Chrome插件&quot;&gt;&lt;a href=&quot;#2-初识Chrome插件&quot; class=&quot;headerlink&quot; title=&quot;2. 初识Chrome插件&quot;&gt;&lt;/a&gt;2. 初识Chrome插件&lt;/h2&gt;&lt;h3 id=&quot;2-1-什么是Chrome插件-他能干什么&quot;&gt;&lt;a href=&quot;#2-1-什么是Chrome插件-他能干什么&quot; class=&quot;headerlink&quot; title=&quot;2.1. 什么是Chrome插件, 他能干什么?&quot;&gt;&lt;/a&gt;2.1. 什么是Chrome插件, 他能干什么?&lt;/h3&gt;&lt;p&gt;Chrome插件是为chrome浏览器添加功能的小程序, chrome插件可以获取网页内容并可以操作网页内容, 如爬取网页数据(网络爬虫), 自动点击(定时点击或刷新), 修改网页内容(如更改网页文字或图片)等.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="browser" scheme="https://pengtech.net/categories/web/browser/"/>
    
    
    <category term="chrome" scheme="https://pengtech.net/tags/chrome/"/>
    
  </entry>
  
  <entry>
    <title>Linux下通过Nginx日志分析网站访问情况</title>
    <link href="https://pengtech.net/nginx/nginx_log_analyze.html"/>
    <id>https://pengtech.net/nginx/nginx_log_analyze.html</id>
    <published>2023-07-20T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;作为一位站长, 了解网站的访问情况是日常的重要内容, 以下就是关于通过Nginx日志了解访问情况的一些常用命令.&lt;br&gt;这里罗列于此, 希望对您有所帮助, 更多关于开发, 运维, 以及产品方面的文章请访问&lt;a href=&quot;https://pengtech.net/&quot;&gt;鹏叔的技术博客&lt;/a&gt;, 该博客空间中涉及到的技术都是鹏叔在开发与维护网站过程中总结出来的.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>客户满意度模型 - 卡诺模型</title>
    <link href="https://pengtech.net/product/Kano_model.html"/>
    <id>https://pengtech.net/product/Kano_model.html</id>
    <published>2023-07-18T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.396Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-什么是卡诺模型&quot;&gt;&lt;a href=&quot;#1-什么是卡诺模型&quot; class=&quot;headerlink&quot; title=&quot;1. 什么是卡诺模型&quot;&gt;&lt;/a&gt;1. 什么是卡诺模型&lt;/h2&gt;&lt;p&gt;Kano模型是由Noriaki Kano在 20 世纪 80 年代开发的产品开发和&lt;a href=&quot;https://en.wikipedia.org/wiki/Customer_satisfaction&quot;&gt;客户满意度理论&lt;/a&gt;，它将客户偏好分为五类。&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    <category term="marketing" scheme="https://pengtech.net/categories/others/marketing/"/>
    
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
    <category term="marketing" scheme="https://pengtech.net/tags/marketing/"/>
    
  </entry>
  
  <entry>
    <title>买家决策过程详解</title>
    <link href="https://pengtech.net/product/buyer_decision_process.html"/>
    <id>https://pengtech.net/product/buyer_decision_process.html</id>
    <published>2023-07-18T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;作为消费者行为的一部分，购买决策过程是消费者在购买商品或服务之前、期间和之后对市场交易进行的决策过程。它可以被视为存在多种替代方案的情况下成本效益分析的一种特殊形式。&lt;/p&gt;
&lt;p&gt;常见的例子包括购物和决定吃什么。决策是一种心理建构。这意味着，虽然决策无法“看到”，但我们可以从可观察的行为推断已经做出了决策。因此，我们得出结论，发生了心理“决策”事件。这是一种将承诺归于行动的结构。也就是说，根据可观察到的行动，我们假设人们已经做出了实施该行动的承诺。&lt;/p&gt;
&lt;p&gt;诺贝尔奖获得者赫伯特·A·西蒙 (Herbert A. Simon)认为经济决策是理性的徒劳尝试。西蒙声称（1947 年和 1957 年），如果要进行完整的分析，做出决定将非常复杂。西蒙还写道，人的信息处理能力是有限的。经济行为者完全理性的假设是不现实的。消费者受到情感和非理性考虑的影响，使得理性的尝试只能部分成功。他呼吁用适合认知受限主体的理性概念来取代经济人的完美理性假设。即使买方的决策过程是高度理性的，所需的产品信息和&amp;#x2F;或知识通常在质量或范围上受到很大限制，潜在替代品的可用性也是如此。认知努力和决策时间等因素也发挥了作用。&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    <category term="marketing" scheme="https://pengtech.net/categories/others/marketing/"/>
    
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
  </entry>
  
  <entry>
    <title>什么是客户满意度？</title>
    <link href="https://pengtech.net/product/customer_satisfaction.html"/>
    <id>https://pengtech.net/product/customer_satisfaction.html</id>
    <published>2023-07-18T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.396Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;客户满意度（通常缩写为CSAT ）是营销中经常使用的术语。它衡量公司提供的产品和服务如何满足或超越客户期望。客户满意度被定义为“报告的对公司产品或服务（评级）的体验超过指定满意度目标的客户数量或客户总数的百分比”。客户发挥着重要作用，对于保持产品或服务的相关性至关重要；因此，确保客户满意度并建立客户忠诚度符合企业的最佳利益。&lt;/p&gt;
&lt;p&gt;营销责任标准委员会 (MASB)认可营销指标中出现的定义、目的和衡量标准，作为其正在进行的营销项目通用语言的一部分。在一项针对近 200 名高级营销经理的调查中，71% 的受访者表示，他们发现客户满意度指标对于管理和监控其业务非常有用。客户满意度被视为企业内的关键绩效指标，并且通常是平衡计分卡的一部分。在企业争夺客户的竞争市场中，客户满意度被视为主要的差异化因素，并日益成为业务战略的重要组成部分。&lt;/p&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    <category term="marketing" scheme="https://pengtech.net/categories/others/marketing/"/>
    
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
  </entry>
  
  <entry>
    <title>tailwindcss教程</title>
    <link href="https://pengtech.net/sass/tailwindcss_tutorial.html"/>
    <id>https://pengtech.net/sass/tailwindcss_tutorial.html</id>
    <published>2023-07-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Tailwind 是一个基于 Atomic&amp;#x2F;Utility-First 规范 CSS 框架，提供了基础的工具类 utility classes（如：内边距 padding、字体 text 和 font、动画 transition 等预设类），能直接在脚本标记语言中组合起来，构建出您想要的设计。&lt;/p&gt;
&lt;p&gt;Tailwind CSS 优点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可定制化程度极高&lt;/li&gt;
&lt;li&gt;减少为 class 取名字的苦恼。&lt;/li&gt;
&lt;li&gt;响应式设计&lt;br&gt;Tailwind CSS 遵循移动优先的设计模式，断点系统很灵活。比如实现一个媒体查询，要求根据不同的屏幕宽度实现不同的图片宽度。传统写法如下&lt;/li&gt;
&lt;li&gt;CSS 体积大幅降低&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="css" scheme="https://pengtech.net/categories/web/css/"/>
    
    
    <category term="css" scheme="https://pengtech.net/tags/css/"/>
    
    <category term="tailwindcss" scheme="https://pengtech.net/tags/tailwindcss/"/>
    
    <category term="sass" scheme="https://pengtech.net/tags/sass/"/>
    
  </entry>
  
  <entry>
    <title>百度统计的使用</title>
    <link href="https://pengtech.net/product/baidu_analytics.html"/>
    <id>https://pengtech.net/product/baidu_analytics.html</id>
    <published>2023-07-06T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;百度统计是全球领先的中文网站流量分析平台，帮助企业收集网站访问数据，提供流量趋势、来源分析、转化跟踪、页面热力图、访问流等多种统计分析服务，同时与百度搜索、百度推广、云服务无缝结合，为网站的精细化运营决策提供数据支持，进而有效提高企业的投资回报率。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="others" scheme="https://pengtech.net/categories/web/others/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="product" scheme="https://pengtech.net/tags/product/"/>
    
  </entry>
  
  <entry>
    <title>从Angular 13升级到Angular 15</title>
    <link href="https://pengtech.net/angular/angular_upgrade_13_to_15.html"/>
    <id>https://pengtech.net/angular/angular_upgrade_13_to_15.html</id>
    <published>2023-06-27T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;升级应用程序或者框架是软件生命周期中非常重要的一项活动. 因为其有风险性, 很多人不愿意去做, 久而久之随着技术债务的积累变成了一件不能去做的事情.&lt;/p&gt;
&lt;p&gt;在我的职业生涯中见到过很大这样逐渐失去生命活力的系统, 这里就不具体举例了, 以免引起不必要的争论, 明白的人自然明白.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>MDC-based Angular Material组件迁移</title>
    <link href="https://pengtech.net/angular/angular_migrate_to_mdc.html"/>
    <id>https://pengtech.net/angular/angular_migrate_to_mdc.html</id>
    <published>2023-06-24T16:00:00.000Z</published>
    <updated>2024-08-11T00:51:22.761Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在 Angular Material v15 中，许多组件已基于官方的 Web Material Design Components (MDC) 进行了重构。 以下导入的组件已被重构：&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
  </entry>
  
  <entry>
    <title>在Angular中使用TailwindCSS</title>
    <link href="https://pengtech.net/angular/angular_with_tailwind.html"/>
    <id>https://pengtech.net/angular/angular_with_tailwind.html</id>
    <published>2023-06-24T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E5%89%8D%E8%A8%80&quot;&gt;1. 前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E5%88%9B%E5%BB%BA-angular-%E9%A1%B9%E7%9B%AE&quot;&gt;2. 创建 Angular 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E5%AE%89%E8%A3%85-tailwind-css&quot;&gt;3. 安装 Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%E9%85%8D%E7%BD%AE%E6%82%A8%E7%9A%84-html-%E6%A8%A1%E6%9D%BF%E8%B7%AF%E5%BE%84&quot;&gt;4. 配置您的 html 模板路径&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%E5%B0%86-tailwind-%E6%8C%87%E4%BB%A4%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%82%A8%E7%9A%84-css-%E4%B8%AD&quot;&gt;5. 将 Tailwind 指令添加到您的 CSS 中&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%E6%9E%84%E5%BB%BA-angular&quot;&gt;6. 构建 Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%E5%BC%80%E5%A7%8B%E5%9C%A8%E6%82%A8%E7%9A%84%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8-tailwind&quot;&gt;7. 开始在您的项目中使用 Tailwind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%E6%8F%92%E4%BB%B6%E5%92%8C%E9%85%8D%E7%BD%AE%E8%AE%BE%E7%BD%AE&quot;&gt;8. 插件和配置设置&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#81-%E8%AF%AD%E6%B3%95%E6%94%AF%E6%8C%81&quot;&gt;8.1. 语法支持&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#82-intellisense-for-vs-code&quot;&gt;8.2. IntelliSense for VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#83-%E8%87%AA%E5%8A%A8-class-%E6%8E%92%E5%BA%8F&quot;&gt;8.3. 自动 class 排序&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#831-%E5%AE%89%E8%A3%85-prettier-plugin-tailwindcss&quot;&gt;8.3.1. 安装 prettier-plugin-tailwindcss&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-angular-%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0&quot;&gt;9. Angular 系列文章&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3&quot;&gt;10. 参考文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文主要讲述如何在 Angular 项目中设置 Tailwind CSS。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>从@Angular/Flex-Layout迁移到Tailwindcss</title>
    <link href="https://pengtech.net/sass/tailwind_migration.html"/>
    <id>https://pengtech.net/sass/tailwind_migration.html</id>
    <published>2023-06-24T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;根据flex-layout官方宣告, @angular&amp;#x2F;flex-layout当前(2023-06-25)处于deprecated状态. 替代方案为Tailwind或者Angular CDK.&lt;/p&gt;
&lt;p&gt;具体原因参考官方的anoucement - &lt;a href=&quot;https://medium.com/@caerus.karu/farewell-flex-layout-aaa567023769&quot;&gt;Medium post&lt;/a&gt;&lt;br&gt;和&lt;a href=&quot;https://github.com/angular/flex-layout/issues/1426&quot;&gt;github上的讨论&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;建议新项目使用其他css library, 旧项目考虑移植到其他css library.&lt;/p&gt;
&lt;p&gt;以下是我从flex-layout的一些实践.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="css" scheme="https://pengtech.net/categories/web/css/"/>
    
    
    <category term="css" scheme="https://pengtech.net/tags/css/"/>
    
    <category term="tailwindcss" scheme="https://pengtech.net/tags/tailwindcss/"/>
    
  </entry>
  
  <entry>
    <title>npm debug指南</title>
    <link href="https://pengtech.net/nodejs/npm_debug.html"/>
    <id>https://pengtech.net/nodejs/npm_debug.html</id>
    <published>2023-06-21T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.277Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本指南将帮助您开始调试Node.js应用程序和npm run-script脚本。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>记一次npm run问题排查的详细过程</title>
    <link href="https://pengtech.net/nodejs/npm_run_debug.html"/>
    <id>https://pengtech.net/nodejs/npm_run_debug.html</id>
    <published>2023-06-21T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.277Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;今天遇到一个特别难整的问题, 在执行&lt;code&gt;npm run a_task&lt;/code&gt; 出错, 报错信息特别简单, 对于查找问题没有任何帮助. 尝试过几种方法来定位问题, 收效很差, 最后不得不祭出npm的大杀器npm debug来一探究竟.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="nodejs" scheme="https://pengtech.net/categories/web/nodejs/"/>
    
    
    <category term="Nodejs" scheme="https://pengtech.net/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>使用mat-paginator在Angular mat表中进行服务器端分页</title>
    <link href="https://pengtech.net/angular/server_side_pagination.html"/>
    <id>https://pengtech.net/angular/server_side_pagination.html</id>
    <published>2023-06-17T16:00:00.000Z</published>
    <updated>2024-08-09T00:24:13.933Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在上一篇文章中，我们学习了如何使用 Angular 添加客户端分页。mat-tablemat-paginator&lt;/p&gt;
&lt;p&gt;在客户端分页中，我们将从服务器一次获取所有记录并使用 mat-paginator 组件应用分页。&lt;/p&gt;
&lt;p&gt;但是，如果我们的数据量很大，即记录数量较多，那么应用客户端分页并不是一个好主意。&lt;/p&gt;
&lt;p&gt;这可能会导致严重的性能影响。&lt;/p&gt;
&lt;p&gt;在这种情况下，我们将在 Angular mat-table 中实现服务器端分页。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="pagination" scheme="https://pengtech.net/tags/pagination/"/>
    
  </entry>
  
  <entry>
    <title>v2rayN 安装与配置</title>
    <link href="https://pengtech.net/network/v2rayN_usage.html"/>
    <id>https://pengtech.net/network/v2rayN_usage.html</id>
    <published>2023-06-03T16:00:00.000Z</published>
    <updated>2026-02-22T22:37:50.914Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;v2rayN 是 Windows 平台上一款基于 v2ray 核心的简洁好用、功能强大的 v2ray 客户端，用于&lt;strong&gt;科学上网&lt;/strong&gt;和保护用户隐私。支持 Vmess、Socks5、VLESS、Trojan、Shadowsocks（不支持 ssr）等多种协议，也支持服务器订阅，支持规则分流。对于新手们来说使用非常的方便快捷，在本篇教程我们教大家如何配置使用 v2rayN，来快速实现代理上网的功能。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/categories/network/v2ray/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="v2ray" scheme="https://pengtech.net/tags/v2ray/"/>
    
    <category term="v2rayN" scheme="https://pengtech.net/tags/v2rayN/"/>
    
  </entry>
  
  <entry>
    <title>Centos7 上安装 wordpress</title>
    <link href="https://pengtech.net/wordpress/install_buddypress.html"/>
    <id>https://pengtech.net/wordpress/install_buddypress.html</id>
    <published>2023-05-30T16:00:00.000Z</published>
    <updated>2024-09-15T11:31:54.149Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;当前环境说明:&lt;/p&gt;
&lt;p&gt;OS: Centos 7.9&lt;/p&gt;
&lt;h2 id=&quot;2-安装要求&quot;&gt;&lt;a href=&quot;#2-安装要求&quot; class=&quot;headerlink&quot; title=&quot;2. 安装要求&quot;&gt;&lt;/a&gt;2. 安装要求&lt;/h2&gt;&lt;p&gt;安装 WordPress 之前，服务器要求具备两个基本元素：&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="wordpress" scheme="https://pengtech.net/tags/wordpress/"/>
    
  </entry>
  
  <entry>
    <title>CodeWhisperer使用详解</title>
    <link href="https://pengtech.net/vscode/CodeWhisperer_vscode.html"/>
    <id>https://pengtech.net/vscode/CodeWhisperer_vscode.html</id>
    <published>2023-05-25T16:00:00.000Z</published>
    <updated>2024-08-28T14:48:50.216Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-说明&quot;&gt;&lt;a href=&quot;#1-说明&quot; class=&quot;headerlink&quot; title=&quot;1. 说明&quot;&gt;&lt;/a&gt;1. 说明&lt;/h2&gt;&lt;p&gt;AWS的CodeWhisperer是Amazon于2021年12月推出的一款代码补全工具, 与GitHub Copilot类似。与Copilot不同的是CodeWhisperer对于个人用户免费, 也是其优势所在. CodeWhisperer是一款基于机器学习的通用代码生成器，由Amazon出品，可以给我们提供代码建议, 可以帮助程序员更快、更安全地编写代码的工具，可以在他们的开发环境中实时提供代码建议和推荐。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://pengtech.net/categories/AI/"/>
    
    
    <category term="AI" scheme="https://pengtech.net/tags/AI/"/>
    
    <category term="vscode" scheme="https://pengtech.net/tags/vscode/"/>
    
  </entry>
  
  <entry>
    <title>SEO教程</title>
    <link href="https://pengtech.net/angular/site_seo.html"/>
    <id>https://pengtech.net/angular/site_seo.html</id>
    <published>2023-05-20T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.387Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文详细讲解了如何为网站执行 SEO, 文章中的部分内容及方法有些过时了, 但是涉及理念依然有效, 而且内容比较全面, 希望对正你的 SEO 工作有帮助.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="SEO" scheme="https://pengtech.net/categories/web/SEO/"/>
    
    
    <category term="SEO" scheme="https://pengtech.net/tags/SEO/"/>
    
  </entry>
  
  <entry>
    <title>Angular service worker介绍</title>
    <link href="https://pengtech.net/angular/angular_service_worker_introduction.html"/>
    <id>https://pengtech.net/angular/angular_service_worker_introduction.html</id>
    <published>2023-05-15T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Service Worker 增强了传统的 Web 部署模型，并使应用程序能够提供与 Native application 相当的可靠性,性能和用户体验。将服务工作进程添加到 Angular 应用程序是将应用程序转换为渐进式 Web 应用程序（也称为 PWA）的步骤之一。&lt;/p&gt;
&lt;p&gt;简单来说，Service worker 是在 Web 浏览器中运行并管理应用程序缓存的脚本。&lt;/p&gt;
&lt;p&gt;Service worker 充当网络代理。它们拦截应用程序发出的所有 HTTP 请求，并可以选择如何响应这些请求。例如，他们可以查询本地缓存并提供缓存的响应（如果有）。代理不仅限于通过编程 API 发出的请求，例如 fetch;它还包括 HTML 中引用的资源，甚至是对 index.html 的初始请求。因此，基于 Service worker 的缓存是完全可编程的，不依赖于服务器指定的缓存标头。&lt;/p&gt;
&lt;p&gt;与组成应用程序的其他脚本（如 Angular application bundle）不同，服务工作进程在用户关闭选项卡后仍然保留。下次浏览器加载应用程序时，Service worker 首先加载，并且可以截获每个资源请求以加载应用程序。如果服务工作进程被设计为这样做，它可以完全满足应用程序的加载，而无需网络。&lt;/p&gt;
&lt;p&gt;即使在快速可靠的网络中，往返延迟也会在加载应用程序时引入明显的延迟。使用服务工作进程来减少对网络的依赖可以显著改善用户体验。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Service worker和PWA</title>
    <link href="https://pengtech.net/angular/service_workers_and_pwa.html"/>
    <id>https://pengtech.net/angular/service_workers_and_pwa.html</id>
    <published>2023-05-15T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文向你介绍什么是 PWA, 以及如何在 Angular 项目中启用 PWA。然后使用一个示例向您展示一个正在运行的 service worker，演示如何加载和如何在客户端缓存数据。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>申请免费SSL证书</title>
    <link href="https://pengtech.net/nginx/apply_ssl_certificate.html"/>
    <id>https://pengtech.net/nginx/apply_ssl_certificate.html</id>
    <published>2023-05-14T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.395Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;SSL证书（SSL Certificates）可以说是现在一个网站的标配，如果没有用SSL证书，浏览器上会显示不安全，导致一部分用户以为网站有问题。另外在微信小程序和iOS APP上，提供的API必须要用HTTS协议，否则不允许上架，所以掌握好SSL证书的配置是一个后端开发必备的技能。&lt;/p&gt;
&lt;p&gt;在阿里云上，提供了每年可以申请一次的免费SSL证书，对于一些个人站点或者小公司的网站来说，确实是一个不错的选择。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>nginx配置https</title>
    <link href="https://pengtech.net/nginx/nginx_config_https.html"/>
    <id>https://pengtech.net/nginx/nginx_config_https.html</id>
    <published>2023-05-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;HTTPS 协议（HyperText Transfer Protocol over Secure Socket Layer）：可以理解为HTTP+SSL&amp;#x2F;TLS， 即 HTTP 下加入 SSL 层，HTTPS 的安全基础是 SSL，因此加密的详细内容就需要 SSL，用于安全的 HTTP 数据传输。HTTPS 相比 HTTP 多了一层 SSL&amp;#x2F;TLS.&lt;/p&gt;
&lt;p&gt;SSL（Secure Socket Layer，安全套接字层）：1994年为 Netscape 所研发，SSL 协议位于 TCP&amp;#x2F;IP 协议与各种应用层协议之间，为数据通讯提供安全支持。&lt;/p&gt;
&lt;p&gt;TLS（Transport Layer Security，传输层安全）：其前身是 SSL，它最初的几个版本（SSL 1.0、SSL 2.0、SSL 3.0）由网景公司开发，1999年从 3.1 开始被 IETF 标准化并改名，发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞，已经很少被使用到。TLS 1.3 改动会比较大，目前还在草案阶段，目前使用最广泛的是TLS 1.1、TLS 1.2。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>使用Terraform在ESXI上创建虚拟机</title>
    <link href="https://pengtech.net/linux/terraform_vm_exsi.html"/>
    <id>https://pengtech.net/linux/terraform_vm_exsi.html</id>
    <published>2023-05-11T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.393Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;ESXi 是一种用于创建和管理虚拟机（VM）的系统管理程序。然而，手动创建和管理多个虚拟机可能非常耗时且容易出错。Terraform 是一个开源 IaC 工具，可以在 ESXi 中自动创建和管理虚拟机。在本教程中，我们将学习如何使用 Terraform 在 ESXi 中创建多个虚拟机。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu服务器安装图形化界面</title>
    <link href="https://pengtech.net/linux/ubuntu_install_desktop.html"/>
    <id>https://pengtech.net/linux/ubuntu_install_desktop.html</id>
    <published>2023-05-10T16:00:00.000Z</published>
    <updated>2025-12-04T13:09:11.026Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;最近在阿里云上创建云主机, 主要是需要使用浏览某些网站, 说实在的我只需要浏览器就够用了, 但是无奈阿里云提供了桌面的镜像只有 Windows 的几个版本.&lt;br&gt;而使用 windows 得镜像要比 Linux 得镜像贵好几倍, 一来是服务器硬件资源要求较 Linux 高, 而来 Windows 镜像都是需要 License 费用或者额外购买 License 的.&lt;br&gt;于是考虑在创建 Linux 云主机后, 安装一个 Linux 桌面系统, 果然让我实验成功了, 特写此文, 以防遗忘, 另外给后来人以方便.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>使用Angular Universal时的重要注意事项</title>
    <link href="https://pengtech.net/angular/consideration_on_angular_universal.html"/>
    <id>https://pengtech.net/angular/consideration_on_angular_universal.html</id>
    <published>2023-05-04T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.338Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;尽管 Angular Universal 项目的目标是能够在服务器上无缝渲染 Angular 应用程序，但您应该考虑一些不一致之处。首先，服务器和浏览器环境之间存在明显的差异。在服务器上渲染时，应用程序处于短暂或“快照”状态。应用程序被完全渲染一次，返回完整的 HTML，而整个过程中的产生的状态被销毁，直到下一次渲染开始, 再重新计算这些状态。接下来，服务器环境本质上不具有与浏览器相同的功能（也有可能服务器拥有而浏览器没有的功能）。例如，服务器没有任何 cookie 的概念。您可以将此功能和其他功能 polyfill，但没有完美的解决方案来弥合这种差异。在后面的部分中，我们将介绍潜在的缓解措施，以减少在服务器上渲染时的错误机会。&lt;br&gt;还请注意 SSR 的目标：提高应用程序的初始渲染时间。这意味着，应该避免或充分防范任何可能在初始渲染中降低应用程序速度的情况。同样，我们将在后面的部分中回顾如何实现这一点。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular universal服务器端渲染与预渲染</title>
    <link href="https://pengtech.net/angular/angular_universal.html"/>
    <id>https://pengtech.net/angular/angular_universal.html</id>
    <published>2023-05-02T16:00:00.000Z</published>
    <updated>2025-03-20T11:58:34.598Z</updated>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E5%89%8D%E8%A8%80&quot;&gt;1. 前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E4%BB%80%E4%B9%88%E6%98%AF-angular-universal&quot;&gt;2. 什么是 Angular universal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81-ssr%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%B8%B2%E6%9F%93&quot;&gt;3. 为什么需要 SSR(服务器端渲染)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-angular-universal-%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3-fcp-%E5%92%8C-seo-%E9%97%AE%E9%A2%98&quot;&gt;4. Angular Universal 如何解决 FCP 和 SEO 问题&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%E5%BC%80%E5%90%AF-ssr&quot;&gt;5. 开启 SSR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%E5%BC%80%E5%90%AF%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B0%B4%E5%90%88client-hydration&quot;&gt;6. 开启客户端水合(Client Hydration)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%E4%BD%BF%E7%94%A8-universal-%E6%9E%84%E5%BB%BA%E5%92%8C%E8%BF%90%E8%A1%8C&quot;&gt;7. 使用 Universal 构建和运行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-prerender-%E9%A2%84%E6%B8%B2%E6%9F%93%E9%9D%99%E6%80%81-html&quot;&gt;8. Prerender 预渲染静态 HTML&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#81-%E9%A2%84%E6%B8%B2%E6%9F%93%E8%B7%AF%E5%BE%84%E9%85%8D%E7%BD%AE&quot;&gt;8.1. 预渲染路径配置&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-seo-%E4%BC%98%E5%8C%96&quot;&gt;9. SEO 优化&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#91-%E5%85%B3%E9%94%AE%E8%AF%8D%E4%B8%8E%E6%8F%8F%E8%BF%B0%E7%9A%84%E4%BC%98%E5%8C%96&quot;&gt;9.1. 关键词与描述的优化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#92-%E5%86%85%E9%83%A8%E8%B7%B3%E8%BD%AC%E4%BC%98%E5%8C%96&quot;&gt;9.2. 内部跳转优化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#93-%E6%A0%B7%E5%BC%8F%E6%96%87%E4%BB%B6%E6%89%93%E5%8C%85&quot;&gt;9.3. 样式文件打包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#94-%E6%B7%BB%E5%8A%A0-robotstxt&quot;&gt;9.4. 添加 robots.txt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#95-%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90-sitemap&quot;&gt;9.5. 自动生成 sitemap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-%E4%BD%BF%E7%94%A8-nginx-%E9%83%A8%E7%BD%B2&quot;&gt;10. 使用 Nginx 部署&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#101-%E5%AE%89%E8%A3%85-nginx&quot;&gt;10.1. 安装 Nginx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#102-%E5%AE%89%E8%A3%85-node&quot;&gt;10.2. 安装 Node&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#103-%E5%AE%89%E8%A3%85-pm2&quot;&gt;10.3. 安装 PM2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#104-%E9%85%8D%E7%BD%AE%E5%B9%B6%E5%90%AF%E5%8A%A8-pm2&quot;&gt;10.4. 配置并启动 pm2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#105-%E9%85%8D%E7%BD%AE-nginx-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86&quot;&gt;10.5. 配置 Nginx 反向代理&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#11-troubleshooting&quot;&gt;11. troubleshooting&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#111-%E9%97%AE%E9%A2%98-1-configuration-development-is-not-set-in-the-workspace&quot;&gt;11.1. 问题 1: Configuration ‘development’ is not set in the workspace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#112-%E9%97%AE%E9%A2%98-2-referenceerror-window-is-not-defined&quot;&gt;11.2. 问题 2: ReferenceError: window is not defined&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#113-%E9%97%AE%E9%A2%98-3-flex-layout-loaded-on-the-server-without-flexlayoutservermodule&quot;&gt;11.3. 问题 3: Flex Layout loaded on the server without FlexLayoutServerModule&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#114-%E9%97%AE%E9%A2%98-4-xmlhttprequest-is-not-defined&quot;&gt;11.4. 问题 4: XMLHttpRequest is not defined&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#115-%E9%97%AE%E9%A2%98-5-distdemo-webbrowserreferenceerror-image-is-not-defined&quot;&gt;11.5. 问题 5： &lt;code&gt;\dist\demo-web\browser...ReferenceError: Image is not defined&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#12-%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB&quot;&gt;12. 相关阅读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#13-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3&quot;&gt;13. 参考文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;当初选择将应用做成 SPA(单页应用)的时候主要是觉得用户体验非常丝滑, 当时也知道 SPA 很难做 SEO, 还是毅然决然的选择做成 SPA 应用. 当时还是 Angularjs 1.X 的时候, 就觉得 Angular 的理念跟自己对前端的看法特别契合, 后来将框架升级到 Angular 11 继而 13, 虽然费了很多时间和精力, 但是收获非常多, 由于本文的重点是 SSR 与 prerendering,所以这里不赘述原因了. 之前也了解到 Angular Universal 是做服务器端渲染的套件(SSR), 乘最近有空刚好将其引入到项目. 实现地过程中虽然遇到问题, 但是还是有些小兴奋的感觉, 一来解决了首次访问应用时白屏的问题, 二来将当初打算舍弃的 SEO 能力也找了回来, 而且整个对引入 SSR 实现 SEO 的过程还是相当轻松的, 特写此文, 以防遗忘, 也希望给后来者有所帮助.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="SEO" scheme="https://pengtech.net/tags/SEO/"/>
    
  </entry>
  
  <entry>
    <title>frp内网穿透</title>
    <link href="https://pengtech.net/network/frp_install.html"/>
    <id>https://pengtech.net/network/frp_install.html</id>
    <published>2023-05-01T16:00:00.000Z</published>
    <updated>2024-08-11T00:41:50.670Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件，支持 tcp, udp, http, https等协议。frp 项目官网是 &lt;a href=&quot;https://github.com/fatedier/frp&quot;&gt;https://github.com/fatedier/frp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;frp工作原理&lt;/p&gt;
&lt;p&gt;服务端运行，监听一个主端口，等待客户端的连接；&lt;/p&gt;
&lt;p&gt;客户端连接到服务端的主端口，同时告诉服务端要监听的端口和转发类型；&lt;/p&gt;
&lt;p&gt;服务端fork新的进程监听客户端指定的端口；&lt;/p&gt;
&lt;p&gt;外网用户连接到服务器端指定的端口，服务端通过和客户端的连接将数据转发到客户端；&lt;/p&gt;
&lt;p&gt;客户端进程再将数据转发到本地服务，从而实现内网对外暴露服务的能力。&lt;/p&gt;
&lt;h2 id=&quot;2-前置条件&quot;&gt;&lt;a href=&quot;#2-前置条件&quot; class=&quot;headerlink&quot; title=&quot;2. 前置条件&quot;&gt;&lt;/a&gt;2. 前置条件&lt;/h2&gt;&lt;p&gt;想要配置frp穿透，首先必须先要有一台具有外网ip(即：可以从因特网访问)的服务器。配置教程主要分为两个部分，一是服务器端(外网服务器)的配置；二是客户端(内网服务器)配置。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="frp" scheme="https://pengtech.net/categories/network/frp/"/>
    
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>Golang单元测试</title>
    <link href="https://pengtech.net/golang/go_unit_test.html"/>
    <id>https://pengtech.net/golang/go_unit_test.html</id>
    <published>2023-04-26T16:00:00.000Z</published>
    <updated>2024-08-10T01:41:16.197Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;原文: &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-write-unit-tests-in-go-using-go-test-and-the-testing-package&quot;&gt;How To Write Unit Tests in Go&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Author: &lt;a href=&quot;https://www.digitalocean.com/community/users/nullterminator&quot;&gt;Tobi Balogun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;译者：&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt;团队; 更多资讯可访问&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;单元测试是一种软件测试方法, 用于测试代码的最小可测试单元, 通常是函数或方法. 它的目的是确保每个单元都能够按照预期工作, 并且在修改代码时不会破坏现有的功能,它们是Go编程语言的关键部分。&lt;br&gt;在本教程中，您将创建一个小程序，然后使用Go的测试包和Go test命令对代码运行一系列测试。完成教程后，您将拥有一个可工作的单元测试套件，其中包括一个基于表表格的单元测试、一个覆盖率测试、一项基准测试和一个文档化的示例。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="golang" scheme="https://pengtech.net/tags/golang/"/>
    
  </entry>
  
  <entry>
    <title>mockery v2的介绍和使用</title>
    <link href="https://pengtech.net/golang/mockery_v2.html"/>
    <id>https://pengtech.net/golang/mockery_v2.html</id>
    <published>2023-04-26T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;由于项目时间比较紧, 我本来是没有打算写一篇文章来介绍mockery的, 但是无奈网上介绍mockery的文章比数量上较少(截至2023-04-27), 而且很多文章都过期了.&lt;br&gt;一方面由于golang更新比较快, 网上解释使用&lt;code&gt;go get&lt;/code&gt; 安装mockery的, 到了go 1.6以后都安装不了. 另一方面mockery自身更新也比较快, 很多文章介绍的一些用法在新的版本中已经不灵了, 比如生成mock对象的命令选项&lt;code&gt;-name&lt;/code&gt;已经调整为&lt;code&gt;--name&lt;/code&gt;, &lt;code&gt;-dir&lt;/code&gt;的意义也发生了变化等等, 出现了很多差异的地方.&lt;/p&gt;
&lt;p&gt;所以本着稳扎稳打的原则, 不得不放慢脚步, 停下来把golang mock这一块的知识库补充完整.&lt;/p&gt;
&lt;h2 id=&quot;2-mockery介绍&quot;&gt;&lt;a href=&quot;#2-mockery介绍&quot; class=&quot;headerlink&quot; title=&quot;2. mockery介绍&quot;&gt;&lt;/a&gt;2. mockery介绍&lt;/h2&gt;&lt;p&gt;Mockery是一个用于生成Golang接口的Mock的工具. Mockery可以帮助您在测试期间模拟依赖, 以便更轻松地测试代码. Mockery v2是Mocker的最新版本.&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="golang" scheme="https://pengtech.net/tags/golang/"/>
    
  </entry>
  
  <entry>
    <title>在Golang中使用Testify mock框架</title>
    <link href="https://pengtech.net/golang/mocking_in_golang_using_testify.html"/>
    <id>https://pengtech.net/golang/mocking_in_golang_using_testify.html</id>
    <published>2023-04-26T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;我使用golang已经有一段时间了，但直到最近我才终于明白如何在golang测试中进行对象mocking。由于我来自Java，所以在golang中mock对象的方式对我来说并不清楚。这篇文章是我如何达到目前理解的自我记录。在这篇文章中，我使用了来自Testify的mock功能 在阅读这篇这篇文章之前, 读者需要有golang基础。&lt;/p&gt;
&lt;p&gt;首先, 我们来创建一个非常简单的服务，如下所示：&lt;/p&gt;
&lt;p&gt;GreeterService是一个向用户打招呼的服务。其由两种问候方式：&lt;br&gt;Greet（）根据设置的语言向用户打招呼&lt;br&gt;GreetDefaultMessage（）将使用默认消息向用户打招呼致意，不涉及到语言设置.&lt;br&gt;在GreeterService内部，Greet（）将调用db.FetchMessage（lang），GreetDefaultMessage（）将呼叫db.FetchDefaultMessage（）。我们可以在真实场景想象的样子，db类是调用真实数据库的类。因此，我们需要在测试中使用mock来避免测试调用实际的数据库。golang中没有class的概念，但我们可以认为struct行为与类是等效的。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="golang" scheme="https://pengtech.net/tags/golang/"/>
    
  </entry>
  
  <entry>
    <title>Msys2安装教程</title>
    <link href="https://pengtech.net/linux/msys2_installation.html"/>
    <id>https://pengtech.net/linux/msys2_installation.html</id>
    <published>2023-04-21T16:00:00.000Z</published>
    <updated>2024-10-22T15:02:53.900Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;之前一直是使用的Cygwin作为命令行终端, 后来好像是因为Cygwin上的git不兼容还是什么原因, 具体记不太清了, 就安装了git for windows后来终端也就切换到了git bash, 使用了很长一段时间, 后面发现git for window安装不了额外的软件, 使用完整的Linux命令行都是在虚拟机上完成的, 也就一直这样别扭的用着. 今天发现一个可用在windows上使用bash并可以安装额外软件包的方法,特地写文章纪念一下.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>如何在 RHEL 系列 linux 上安装并配置 docker?</title>
    <link href="https://pengtech.net/docker/docker_install.html"/>
    <id>https://pengtech.net/docker/docker_install.html</id>
    <published>2023-04-15T16:00:00.000Z</published>
    <updated>2026-02-22T22:34:50.437Z</updated>
    
    
    <summary type="html">&lt;p&gt;Docker 是现代软件开发和运维中不可或缺的工具之一。它通过容器化技术，为开发者和运维人员提供了一个轻量级、高效且灵活的解决方案。无论是构建、测试还是部署应用程序，Docker 都能显著简化流程并提升效率。在本篇文章中，我们将详细介绍如何在 RHEL 系列 系统上安装和配置 Docker，帮助您快速上手并充分利用其强大的功能。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="docker" scheme="https://pengtech.net/categories/devops/docker/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="docker" scheme="https://pengtech.net/tags/docker/"/>
    
  </entry>
  
  <entry>
    <title>Redhat系列yum源介绍</title>
    <link href="https://pengtech.net/linux/linux_RHEL_yum_extra_repos.html"/>
    <id>https://pengtech.net/linux/linux_RHEL_yum_extra_repos.html</id>
    <published>2023-04-15T16:00:00.000Z</published>
    <updated>2024-09-07T12:30:06.469Z</updated>
    
    
    <summary type="html">&lt;p&gt;CentOS 默认自带 CentOS-Base.repo 源，但官方源中去除了很多有版权争议的软件，而且安装的软件也不是最新的稳定版。 Fedora 自带的源中也找不到很多多媒体软件，如果需要安装，必需先添加其他源，如 RPMFusion 和 RPMForge 等第三方软件库。&lt;/p&gt;
&lt;p&gt;下面鹏叔来一一介绍各种第三方软件库，以下软件库适用于与 RHEL 完全兼容的 linux 发行版&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
  </entry>
  
  <entry>
    <title>使用WireGuard内网穿透</title>
    <link href="https://pengtech.net/network/Internal_network_penetration.html"/>
    <id>https://pengtech.net/network/Internal_network_penetration.html</id>
    <published>2023-04-15T16:00:00.000Z</published>
    <updated>2025-03-08T00:21:14.393Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 威屁恩 协议，被视为下一代 威屁恩 协议，旨在解决许多困扰 IPSec&amp;#x2F;IKEv2、Open威屁恩 或 L2TP 等其他 威屁恩 协议的问题。它与 Tinc 和 MeshBird 等现代 威屁恩 产品有一些相似之处，即加密技术先进、配置简单。从 2020 年 1 月开始，它已经并入了 Linux 内核的 5.6 版本，这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。&lt;/p&gt;</summary>
    
    
    
    <category term="network" scheme="https://pengtech.net/categories/network/"/>
    
    <category term="vpn" scheme="https://pengtech.net/categories/network/vpn/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
  </entry>
  
  <entry>
    <title>如何设计一款App</title>
    <link href="https://pengtech.net/product/how_to_build_an_app.html"/>
    <id>https://pengtech.net/product/how_to_build_an_app.html</id>
    <published>2023-04-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-译者序&quot;&gt;&lt;a href=&quot;#1-译者序&quot; class=&quot;headerlink&quot; title=&quot;1. 译者序&quot;&gt;&lt;/a&gt;1. 译者序&lt;/h2&gt;&lt;p&gt;这是一篇很好的关于从零开始创建App的建议的文章, 作者的结构和思路非常清晰, 一个很好的关于创建App的结构性的建议文章. 所以我们将其翻译成中文, 期望读者能进一步以此为蓝本将创建App的想法,思路,建议丰富起来. 同时这也是我们后续编写关于创建app建议文章的蓝本.&lt;/p&gt;
&lt;p&gt;译者：&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt; 团队&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>应用推广的十个观点(译文)</title>
    <link href="https://pengtech.net/product/mobile_app_promotion.html"/>
    <id>https://pengtech.net/product/mobile_app_promotion.html</id>
    <published>2023-04-11T16:00:00.000Z</published>
    <updated>2024-08-07T16:39:14.368Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-译者序&quot;&gt;&lt;a href=&quot;#1-译者序&quot; class=&quot;headerlink&quot; title=&quot;1. 译者序&quot;&gt;&lt;/a&gt;1. 译者序&lt;/h2&gt;&lt;p&gt;这是一篇非常好的推广移动应用的想法或者说是策略, 翻译过来分享给大家. 或许有些观点已经很显而易见, 那么就权当是一个总结. 后续会基于此文章陆续更新关于应用推广方面的想法和观点.&lt;/p&gt;
&lt;p&gt;译者：&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt;团队; 更多资讯可访问&lt;a href=&quot;https://philoenglish.com/&quot;&gt;philoenglish.com&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>Angular结合quill实现富文本编辑器</title>
    <link href="https://pengtech.net/angular/angular_editor.html"/>
    <id>https://pengtech.net/angular/angular_editor.html</id>
    <published>2023-04-03T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.396Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;由于需要一个富文本编辑器来编辑一些网页内容, 手动编辑后存储到数据库比较麻烦, 所以着手实现一个自己的富文本编辑器, 来编辑和存储一些 html 文件.&lt;br&gt;这里使用 Angular 框架, 加 Quill 库实现.&lt;/p&gt;
&lt;p&gt;ngx-quill: &lt;a href=&quot;https://github.com/KillerCodeMonkey/ngx-quill&quot;&gt;https://github.com/KillerCodeMonkey/ngx-quill&lt;/a&gt;&lt;br&gt;quill 官网: &lt;a href=&quot;https://quilljs.com/&quot;&gt;https://quilljs.com/&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular injectable接口</title>
    <link href="https://pengtech.net/angular/angular_injectable_decorator.html"/>
    <id>https://pengtech.net/angular/angular_injectable_decorator.html</id>
    <published>2023-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.395Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文将使用@Injectable 装饰器创建 Angular 服务。Angular 服务是可注入的，注入器可以将其注入到我们 Angular 应用程序中的任何组件或服务中。@Injectable 装饰器在类级别的服务中使用。@Injectable 装饰器帮助注入器考虑可注入的服务。在应用程序模块中的@NgModule 装饰器的提供者元数据中配置我们的服务后，该服务将在整个应用范围内可用。&lt;/p&gt;
&lt;p&gt;要在组件中获取服务实例，我们需要为服务构造一个带参数的构造器, 并构造包含一系列可供组件或其他服务调用的方法。&lt;/p&gt;
&lt;p&gt;假设我们想要创建一个购物车应用程序。在这种情况下，服务可以包含管理商店的方法、将商品添加到购物车的方法、从购物车中删除商品的方法以及查询商品的方法等。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>vmware ESXi配置</title>
    <link href="https://pengtech.net/vmware/vmware_configuration.html"/>
    <id>https://pengtech.net/vmware/vmware_configuration.html</id>
    <published>2023-04-01T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;这篇文章主要用来收集VMWare ESXi的一些配置步骤.&lt;/p&gt;
&lt;h2 id=&quot;2-开启SSH服务&quot;&gt;&lt;a href=&quot;#2-开启SSH服务&quot; class=&quot;headerlink&quot; title=&quot;2. 开启SSH服务&quot;&gt;&lt;/a&gt;2. 开启SSH服务&lt;/h2&gt;&lt;p&gt;默认ssh服务是关闭的, 开启ssh服务过程如下&lt;/p&gt;
&lt;p&gt;进入管理&amp;#x3D;&amp;gt;服务, 找到TSM-SSH服务, 右击该服务会弹出子菜单, 点击启动.&lt;/p&gt;
&lt;p&gt;要设为开机启动, 右击服务, 选择策略, 选择随主机启动和停止&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="vmware" scheme="https://pengtech.net/tags/vmware/"/>
    
  </entry>
  
  <entry>
    <title>帮助系统设计2</title>
    <link href="https://pengtech.net/product/help_system_design2.html"/>
    <id>https://pengtech.net/product/help_system_design2.html</id>
    <published>2023-03-16T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-网站帮助中心的作用&quot;&gt;&lt;a href=&quot;#1-网站帮助中心的作用&quot; class=&quot;headerlink&quot; title=&quot;1. 网站帮助中心的作用&quot;&gt;&lt;/a&gt;1. 网站帮助中心的作用&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;通过向客户表明您了解他们所面临的问题以及如何提供帮助来建立信任；&lt;/li&gt;
&lt;li&gt;通过回答常见问题来改善客户服务，增强专业的品牌形象；&lt;/li&gt;
&lt;li&gt;通过减少重复发送给支持人员的电话和电子邮件，节省时间和金钱；&lt;/li&gt;
&lt;li&gt;增强您在搜索引擎中的知名度（包含更多关键词的帮助中心页面更易被搜索引擎喜欢）；&lt;/li&gt;
&lt;li&gt;通过轻松找到他们要寻找的内容而不是搜索站点来改善用户体验。将答案直接链接到博客文章或内容页面可以使访问者更轻松地获取其他信息；&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="design" scheme="https://pengtech.net/categories/web/design/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
  </entry>
  
  <entry>
    <title>nginx安装教程</title>
    <link href="https://pengtech.net/nginx/nginx_installation.html"/>
    <id>https://pengtech.net/nginx/nginx_installation.html</id>
    <published>2023-03-10T16:00:00.000Z</published>
    <updated>2025-11-01T12:00:36.580Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;h3 id=&quot;1-1-什么是nginx&quot;&gt;&lt;a href=&quot;#1-1-什么是nginx&quot; class=&quot;headerlink&quot; title=&quot;1.1. 什么是nginx&quot;&gt;&lt;/a&gt;1.1. 什么是nginx&lt;/h3&gt;&lt;p&gt;Nginx是一款高性能的http 服务器&amp;#x2F;反向代理服务器及电子邮件（IMAP&amp;#x2F;POP3）代理服务器。&lt;/p&gt;
&lt;p&gt;由俄罗斯的程序设计师Igor Sysoev所开发，官方测试nginx能够支支撑5万并发链接，&lt;/p&gt;
&lt;p&gt;并且cpu、内存等资源消耗却非常低，运行非常稳定。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="nginx" scheme="https://pengtech.net/tags/nginx/"/>
    
  </entry>
  
  <entry>
    <title>PostgreSQL备份与恢复</title>
    <link href="https://pengtech.net/database/postgresql_backup_restore.html"/>
    <id>https://pengtech.net/database/postgresql_backup_restore.html</id>
    <published>2023-02-23T16:00:00.000Z</published>
    <updated>2024-08-17T01:58:09.164Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;数据库的备份有多种分类方式。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按照备份后的文件类型，可以分为物理备份（文件系统级别的备份）和逻辑备份（备份后的文件是sql文件或特定格式的导出文件）；&lt;/li&gt;
&lt;li&gt;按照备份过程中是否停止数据库服务，可分为冷备份（备份过程中停止数据库服务）和热备份（备份过程中数据库服务开启并可供用户访问）；&lt;/li&gt;
&lt;li&gt;按照备份是否是完整的数据库，可分为全量备份(备份是完整的数据库)和增量备份（备份是上一次全量备份后数据库改变的内容）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Postgresql的常见备份方式有以下三种：文件系统级别的冷备份, SQL转储, 连续归档.&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>GitLab集成PlantUML</title>
    <link href="https://pengtech.net/gitlab/gitlab_plantuml_integration.html"/>
    <id>https://pengtech.net/gitlab/gitlab_plantuml_integration.html</id>
    <published>2023-02-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.438Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-摘要&quot;&gt;&lt;a href=&quot;#1-摘要&quot; class=&quot;headerlink&quot; title=&quot;1. 摘要&quot;&gt;&lt;/a&gt;1. 摘要&lt;/h2&gt;&lt;p&gt;本文提供了将PlantUML与GitLab集成的逐步指南。它涵盖了从配置PlantUML服务器到在GitLab中启用它的所有内容，并包括代码块以说明必要的命令。通过遵循本指南，您将能够使用PlantUML在GitLab snips、wikis和代码库中创建图表。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>自己动手写一个Mysql到PostgreSQL数据库迁移工具</title>
    <link href="https://pengtech.net/database/db_migrations.html"/>
    <id>https://pengtech.net/database/db_migrations.html</id>
    <published>2023-01-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;这段时间在进行 Mysql 到 PostgreSQL 数据库迁移工作.&lt;/p&gt;
&lt;p&gt;主要包含三部分工作, 其一是构建数据库对象, 包括表, 视图, 存储过程的构建, 这部分由于我在项目早期就引入了 liquibase, 所以迁移工作很简单, 所以没有总结文章.&lt;/p&gt;
&lt;p&gt;其二是代码修改, 让代码适配新的数据库, 这部分已经总结发布到了&lt;a href=&quot;https://pengtech.net/database/migrate_to_postgressql_from_mariadb.html&quot;&gt;鹏叔的技术博客 - 从 Mariadb 迁移到 postgresql&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;其三是数据迁移, 数据迁移也有一些现成的工具, 但是配置起来比较麻烦, 工具比想象中的复杂太多, 用起来也不是太顺手, 与其花时间在熟悉一次性的工具上, 不如自己写一个迁移工具. 于是就有了这篇文章.&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>使用stomp实现服务器端向web客户端推送数据</title>
    <link href="https://pengtech.net/java/websocket_java_client.html"/>
    <id>https://pengtech.net/java/websocket_java_client.html</id>
    <published>2023-01-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在上篇文章&lt;a href=&quot;https://pengtech.net/java/spring_websocket.html&quot;&gt;java实现websocket的五种方式&lt;/a&gt;, 我详细讲述了使用java实现websocket的五种方式.&lt;br&gt;五种方式都集中在服务器端的实现, 客户端我们使用的是一个在线测试工具进行测试的. 只有针对stomp这种方式我自己写了一个javascript版本的客户端. 但是随着项目的推进, 发现整个体系就像魔方或拼图一样, 在完整体系中还缺少了一块, 那就是java客户端去连接stomp websocket服务. 其作用是,在服务器端主动向客户端发送消息时, 通过stomp客户端连接stomp websocket服务, 将消息发布到某个topic, 最终被订阅消息的前端页面接收到. 三者之间的关系 java client -&amp;gt; stomp websocket服务 -&amp;gt; 前端页面. 采用的是消息订阅模式, 消息订阅并不是pull, 实际是push.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="websocket" scheme="https://pengtech.net/tags/websocket/"/>
    
    <category term="spring boot" scheme="https://pengtech.net/tags/spring-boot/"/>
    
  </entry>
  
  <entry>
    <title>Win11怎么把软件添加到开机自启动中</title>
    <link href="https://pengtech.net/windows/windows_prog_autostart.html"/>
    <id>https://pengtech.net/windows/windows_prog_autostart.html</id>
    <published>2023-01-14T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.445Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;把程序设置为开机自启或取消一些开机自选项, 对我个人来说是一个很重要的功能, 因为它能提高我的专注力. 很多时候, 我们容易被一些琐碎的事情给诱惑.&lt;br&gt;不知道大家有没有仔细观察或回味自己使用电脑的习惯.&lt;/p&gt;
&lt;p&gt;根据我以前的经验, 按下开机键后, 经过一个不算漫长的等待, 真正进入 windows 界面后, 我们往往会短暂的忘记或刻意的不想把注意力集中到我们开机前想干的事情上.&lt;/p&gt;
&lt;p&gt;开机后往往第一件事查看一下邮件, 检查一下聊天软件上的, 看看今天都发生了哪些新闻. 等这些事情完成后, 才会或者才可能想起我们开机前想要干的事情.&lt;br&gt;如果这段时间中再弹个窗, 提示软件需要杀毒, 升级某娱乐明星又爆出了什么大瓜, 某电视剧又更新到多少级了, 一断被这些信息给吸引了, 对于自制力不强的人们来说,今天这一天可能就尽是去打蚊子拍苍蝇去了, 一天又荒废了.&lt;/p&gt;
&lt;p&gt; 而将重要的应用程序放置在开机启动项，并在开机后直接弹出应用界面，可以让我们立即专注到重要事情，并有效缓解注意力被分散的状况。&lt;/p&gt;
&lt;p&gt;而此时有一个干净高效的自启动项设置, 往往有助于屏蔽这些干扰, 或提醒自己该干正事了.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>如何通过表名获取所有字段信息</title>
    <link href="https://pengtech.net/java/how_to_get_columns_by_table_name.html"/>
    <id>https://pengtech.net/java/how_to_get_columns_by_table_name.html</id>
    <published>2023-01-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;通常情况下, 如果想写一些比较通用的应用程序, 我们需要通过表名去了解整个表的情况, 才能编写一些比较通用的数据库工具.&lt;br&gt;通过表名获取字段名有多种方式:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;第一种 我们可以查询系统表或者数据字典来获取表的信息, 其优点是效率比较高, 缺点是所写的工具往往只适用与某种特定的数据库.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;第二种 通过一些标准的数据库连接库获取数据库元数据, 从而获取到相应表的结构信息, 这样做的优点是由于程序是面向标准库的API,&lt;br&gt;无论底层是何种数据库都能够兼容. 在Java领域可以通过Jdbc库提供的接口获取表信息, 在.net领域可以通过odbc, PHP领域可以使用PDO,&lt;br&gt;SQLAPI ++ 之于C++, database&amp;#x2F;sql之于golang, sqlx之于Rust等等&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文主要介绍使用jdbc获取数据库字段信息.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
  </entry>
  
  <entry>
    <title>java实现websocket的五种方式</title>
    <link href="https://pengtech.net/java/spring_websocket.html"/>
    <id>https://pengtech.net/java/spring_websocket.html</id>
    <published>2022-12-31T16:00:00.000Z</published>
    <updated>2024-08-15T21:42:47.679Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信，能更好的节省服务器资源和带宽并达到实时通讯，它建立在 TCP 之上.&lt;/p&gt;
&lt;p&gt;本文主要讲述在Java技术领域实现websocket服务的五种方式.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="java" scheme="https://pengtech.net/tags/java/"/>
    
    <category term="websocket" scheme="https://pengtech.net/tags/websocket/"/>
    
    <category term="spring boot" scheme="https://pengtech.net/tags/spring-boot/"/>
    
  </entry>
  
  <entry>
    <title>使用Gradle整合angular和Spring boot</title>
    <link href="https://pengtech.net/angular/integrate_springboot_angular_using_gradle.html"/>
    <id>https://pengtech.net/angular/integrate_springboot_angular_using_gradle.html</id>
    <published>2022-12-30T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E5%89%8D%E8%A8%80&quot;&gt;1. 前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6&quot;&gt;2. 前置条件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E5%88%9B%E5%BB%BA%E5%90%8E%E7%AB%AF%E9%A1%B9%E7%9B%AE&quot;&gt;3. 创建后端项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%E5%88%9B%E5%BB%BA%E5%89%8D%E7%AB%AF%E9%A1%B9%E7%9B%AE&quot;&gt;4. 创建前端项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%E4%BD%BF%E7%94%A8-gradle-%E5%B0%86%E5%89%8D%E5%90%8E%E7%AB%AF%E6%95%B4%E5%90%88&quot;&gt;5. 使用 gradle 将前后端整合&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#51-%E9%85%8D%E7%BD%AE-angular-%E9%A1%B9%E7%9B%AE&quot;&gt;5.1. 配置 angular 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#52-%E9%85%8D%E7%BD%AE-spring-boot-%E9%A1%B9%E7%9B%AE&quot;&gt;5.2. 配置 spring boot 项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#53-%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E7%A8%8B&quot;&gt;5.3. 自动化工程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-angular-%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0&quot;&gt;6. Angular 系列文章&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%E6%80%BB%E7%BB%93&quot;&gt;7. 总结&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3&quot;&gt;8. 参考文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文讲述如何使用 Gradle 搭建一个以 springboot 技术栈作为后端, 使用 Angular 作为前端技术栈, 同过 gradle 将其整合成一个项目的实践经验.&lt;/p&gt;
&lt;p&gt;这里只是作为一种实践, 并不建议在生产环境中将前后端耦合在一起. 本文的目的是拓展 Spring 在(SPA)Single page Application 一种能力, 即将实现项目依赖关系, 测试,打包等等自动化.&lt;/p&gt;
&lt;p&gt;实现思路就是通过 Gradle task 触发 npm build, 将编译后的静态资源文件, 部署到 springboot 的静态资源文件目录, 然后沿用后端打包过程, 将前后端应用程序整合在一起.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="springboot" scheme="https://pengtech.net/tags/springboot/"/>
    
    <category term="gradle" scheme="https://pengtech.net/tags/gradle/"/>
    
  </entry>
  
  <entry>
    <title>Cmder安装与配置</title>
    <link href="https://pengtech.net/windows/cmder_install_configuration.html"/>
    <id>https://pengtech.net/windows/cmder_install_configuration.html</id>
    <published>2022-12-21T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.445Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;相信很多开发者都在寻找一款在Windows下理想的命令行工具, 因为Windows10包括10之前自带的命令行工具真的是弱爆了, 而且它20多年都不曾经发生过太大的改变. 这种状况在应用软件快速发展的时代对很多人来说是不能忍受的, 即使在Windows 11中自带了一个叫terminal的工具, 虽然很强大但是我仍然没有打算使用它, 请容许我大胆的臆测一下它, 可能是因为WSL推出后微软实在觉得之前命令行工具太过简陋, 然后推出了Windows Powershell, 但是powershell还是难堪大任, 于是模仿市面上流行的终端推出了, terminal这样一款命令行工具. 至于之后会不会跟CMD一样数十年不再改进? 需要打一个大大的问号.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="windows" scheme="https://pengtech.net/tags/windows/"/>
    
  </entry>
  
  <entry>
    <title>如何在springboot中配置多个数据源</title>
    <link href="https://pengtech.net/java/configure_multiple_ds_in_springboot.html"/>
    <id>https://pengtech.net/java/configure_multiple_ds_in_springboot.html</id>
    <published>2022-12-20T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.391Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-配置数据库详细信息&quot;&gt;&lt;a href=&quot;#1-配置数据库详细信息&quot; class=&quot;headerlink&quot; title=&quot;1. 配置数据库详细信息&quot;&gt;&lt;/a&gt;1. 配置数据库详细信息&lt;/h2&gt;&lt;p&gt;首先，我们将配置多个数据源，在application.properties文件中提供详细信息.&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="java" scheme="https://pengtech.net/categories/language/java/"/>
    
    
    <category term="Java" scheme="https://pengtech.net/tags/Java/"/>
    
    <category term="spring" scheme="https://pengtech.net/tags/spring/"/>
    
    <category term="maven" scheme="https://pengtech.net/tags/maven/"/>
    
    <category term="IDEA" scheme="https://pengtech.net/tags/IDEA/"/>
    
  </entry>
  
  <entry>
    <title>如何手动创建一个springBoot项目</title>
    <link href="https://pengtech.net/java/how_to_create_springBoot_proj.html"/>
    <id>https://pengtech.net/java/how_to_create_springBoot_proj.html</id>
    <published>2022-12-20T16:00:00.000Z</published>
    <updated>2025-03-22T13:15:11.680Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;在本文中，您将学习如何创建一个简单的Spring Boot应用程序，以及您需要哪些依赖项和技术需要了解。&lt;br&gt;此外，我们将更深入地了解基本原理。我将解释一些最关键的工作机制，如果你想成为一名专业开发人员，你需要了解这些机制。&lt;/p&gt;
&lt;h2 id=&quot;2-创建一个SpringBoot项目&quot;&gt;&lt;a href=&quot;#2-创建一个SpringBoot项目&quot; class=&quot;headerlink&quot; title=&quot;2. 创建一个SpringBoot项目&quot;&gt;&lt;/a&gt;2. 创建一个SpringBoot项目&lt;/h2&gt;&lt;h3 id=&quot;2-1-先决条件&quot;&gt;&lt;a href=&quot;#2-1-先决条件&quot; class=&quot;headerlink&quot; title=&quot;2.1. 先决条件&quot;&gt;&lt;/a&gt;2.1. 先决条件&lt;/h3&gt;&lt;p&gt;要创建新的Spring Boot应用程序，我们需要以下开发环境：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/index.html&quot;&gt;Java 1.8&lt;/a&gt;或更高版本&lt;/p&gt;
&lt;p&gt;IDE: Spring STS, Intellij Idea或者vscode&lt;/p&gt;
&lt;p&gt;包管理工具: &lt;a href=&quot;https://maven.apache.org/download.cgi&quot;&gt;Maven 3.2+&lt;/a&gt; 或者&lt;a href=&quot;http://www.gradle.org/downloads&quot;&gt;gradle 4+&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="java" scheme="https://pengtech.net/categories/language/java/"/>
    
    
    <category term="Java" scheme="https://pengtech.net/tags/Java/"/>
    
    <category term="spring" scheme="https://pengtech.net/tags/spring/"/>
    
    <category term="maven" scheme="https://pengtech.net/tags/maven/"/>
    
    <category term="IDEA" scheme="https://pengtech.net/tags/IDEA/"/>
    
  </entry>
  
  <entry>
    <title>基于 Code-server 快速部署自己的云开发环境</title>
    <link href="https://pengtech.net/vscode/cloud_ide.html"/>
    <id>https://pengtech.net/vscode/cloud_ide.html</id>
    <published>2022-12-20T16:00:00.000Z</published>
    <updated>2025-06-17T08:09:50.914Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Web IDE，顾名思义就是云端开发环境，把 IDE 部署在云上。打开浏览器，连上云 IDE，就可以方便敲代码跑程序。想象一下，带上一台 iPad 或者华为、小米平板，配上蓝牙键盘，坐在阴凉下，或者沙滩上，吹着海风，面朝大海敲代码，多么惬意。&lt;/p&gt;
&lt;p&gt;其实 Web IDE 很早就有，但那些都只能说是玩具，直到现在才有一些不错的产品推出，比如微软和 Github 的 Visual Studio Codespaces、coding.net 的 Cloud Studio、华为云 CloudIDE 等。不过，这些产品要么还在测试，要么免费用会有限制或者价格不菲，目前还不是非常方便。&lt;/p&gt;
&lt;p&gt;如果想要低成本愉快地使用，自己动手搭建是一个不错的方案。对配置要求不高的话，一年几十块一百多块就能买到廉价的 VPS 或者云主机就足够了。&lt;/p&gt;
&lt;p&gt;自己 DIY 一套 Web IDE 比较成熟的方案有两个，code-server 和 Theia。毕竟 code-server 是基于 VS code 魔改的，与 vs code 的插件体系兼容性更好。所以更推荐 code-server。Theia 虽然有自己的插件体系，也宣称兼容 vs code 的插件，也是一套优秀的 WEB IDE 解决方案，但是兼容程度谁知道呢？&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="vscode" scheme="https://pengtech.net/tags/vscode/"/>
    
  </entry>
  
  <entry>
    <title>Windows上安装PostgreSQL 14</title>
    <link href="https://pengtech.net/database/install_postgresql_on_windows.html"/>
    <id>https://pengtech.net/database/install_postgresql_on_windows.html</id>
    <published>2022-12-04T16:00:00.000Z</published>
    <updated>2024-08-07T15:48:42.911Z</updated>
    
    
    <summary type="html">&lt;p&gt; 本文主要讲述如何在Windows上安装PostgreSQL 14。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="windows" scheme="https://pengtech.net/categories/OS/windows/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>从Mariadb迁移到postgresql</title>
    <link href="https://pengtech.net/database/migrate_to_postgressql_from_mariadb.html"/>
    <id>https://pengtech.net/database/migrate_to_postgressql_from_mariadb.html</id>
    <published>2022-12-04T16:00:00.000Z</published>
    <updated>2025-03-22T13:14:38.503Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文主要实验所用的环境, 后端是golang, gin web框架.&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>PostgreSQL高级篇</title>
    <link href="https://pengtech.net/database/postgresql_advanced.html"/>
    <id>https://pengtech.net/database/postgresql_advanced.html</id>
    <published>2022-12-04T16:00:00.000Z</published>
    <updated>2024-08-26T10:23:06.888Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-PG简介&quot;&gt;&lt;a href=&quot;#1-PG简介&quot; class=&quot;headerlink&quot; title=&quot;1. PG简介&quot;&gt;&lt;/a&gt;1. PG简介&lt;/h2&gt;&lt;p&gt;PostgreSQL是一个免费的对象-关系型数据库服务器(ORDBMS), 在灵活的BSD许可证下发行.&lt;br&gt;PostgreSQL开发者把它念作post-gress-Q-L.&lt;br&gt;PostgreSQL的Slogan是世界上最先进的开源关系型数据库.&lt;br&gt;开源界的Oracle, 去O首选&lt;/p&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>Go database/sql 教程</title>
    <link href="https://pengtech.net/golang/go_database_sql.html"/>
    <id>https://pengtech.net/golang/go_database_sql.html</id>
    <published>2022-11-29T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.390Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-简介&quot;&gt;&lt;a href=&quot;#1-简介&quot; class=&quot;headerlink&quot; title=&quot;1. 简介&quot;&gt;&lt;/a&gt;1. 简介&lt;/h2&gt;&lt;p&gt;Go使用SQL与类SQL数据库的惯例是通过标准库&lt;a href=&quot;http://golang.org/pkg/database/sql/&quot;&gt;database&amp;#x2F;sql&lt;/a&gt;。这是一个对关系型数据库的通用抽象，它提供了标准的、轻量的、面向行的接口。不过&lt;code&gt;database/sql&lt;/code&gt;的包文档只讲它做了什么，却对如何使用只字未提。快速指南远比堆砌事实有用，本文讲述了&lt;code&gt;database/sql&lt;/code&gt;的使用方法及其注意事项。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>在各种操作系统上安装和配置Rust</title>
    <link href="https://pengtech.net/rust/install_rust_on_windows.html"/>
    <id>https://pengtech.net/rust/install_rust_on_windows.html</id>
    <published>2022-11-28T16:00:00.000Z</published>
    <updated>2025-03-08T00:27:43.855Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-安装-rust&quot;&gt;&lt;a href=&quot;#1-安装-rust&quot; class=&quot;headerlink&quot; title=&quot;1. 安装 rust&quot;&gt;&lt;/a&gt;1. 安装 rust&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Rust 官网: &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;https://www.rust-lang.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-在-Linux-or-macOS-上安装-Rust&quot;&gt;&lt;a href=&quot;#2-在-Linux-or-macOS-上安装-Rust&quot; class=&quot;headerlink&quot; title=&quot;2. 在 Linux or macOS 上安装 Rust&quot;&gt;&lt;/a&gt;2. 在 Linux or macOS 上安装 Rust&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;在 Linux or Mac 上安装 Rust:&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight sh&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;curl --proto &lt;span class=&quot;string&quot;&gt;&amp;#x27;=https&amp;#x27;&lt;/span&gt; --tlsv1.2 https://sh.rustup.rs -sSf| sh&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="rust" scheme="https://pengtech.net/categories/language/rust/"/>
    
    
    <category term="Rust" scheme="https://pengtech.net/tags/Rust/"/>
    
  </entry>
  
  <entry>
    <title>在VSCode配置Rust环境</title>
    <link href="https://pengtech.net/rust/vscode_rust_ide.html"/>
    <id>https://pengtech.net/rust/vscode_rust_ide.html</id>
    <published>2022-11-28T16:00:00.000Z</published>
    <updated>2024-08-26T10:31:24.503Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;h2 id=&quot;1-安装Rust&quot;&gt;&lt;a href=&quot;#1-安装Rust&quot; class=&quot;headerlink&quot; title=&quot;1. 安装Rust&quot;&gt;&lt;/a&gt;1. 安装Rust&lt;/h2&gt;&lt;p&gt;安装Rust可以参考&lt;a</summary>
        
      
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="rust" scheme="https://pengtech.net/categories/language/rust/"/>
    
    
    <category term="Rust" scheme="https://pengtech.net/tags/Rust/"/>
    
  </entry>
  
  <entry>
    <title>Centos7上安装MariaDB</title>
    <link href="https://pengtech.net/database/install_mariadb_on_centos7.html"/>
    <id>https://pengtech.net/database/install_mariadb_on_centos7.html</id>
    <published>2022-11-26T16:00:00.000Z</published>
    <updated>2025-11-22T10:48:09.585Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-安装&quot;&gt;&lt;a href=&quot;#1-安装&quot; class=&quot;headerlink&quot; title=&quot;1. 安装&quot;&gt;&lt;/a&gt;1. 安装&lt;/h2&gt;&lt;h3 id=&quot;1-1-检查是否已安装-mariadb&quot;&gt;&lt;a href=&quot;#1-1-检查是否已安装-mariadb&quot; class=&quot;headerlink&quot; title=&quot;1.1. 检查是否已安装 mariadb&quot;&gt;&lt;/a&gt;1.1. 检查是否已安装 mariadb&lt;/h3&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;yum list installed | grep mariadb&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;h3 id=&quot;1-2-安装MariaDB&quot;&gt;&lt;a href=&quot;#1-2-安装MariaDB&quot; class=&quot;headerlink&quot; title=&quot;1.2. 安装MariaDB&quot;&gt;&lt;/a&gt;1.2. 安装MariaDB&lt;/h3&gt;&lt;p&gt;如果未安装，执行以下命令安装命令&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;yum -y install mariadb mariadb-server&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="mariadb" scheme="https://pengtech.net/categories/database/mariadb/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>Linux上安装PostgreSQL</title>
    <link href="https://pengtech.net/database/install_postgresql_on_linux.html"/>
    <id>https://pengtech.net/database/install_postgresql_on_linux.html</id>
    <published>2022-11-26T16:00:00.000Z</published>
    <updated>2025-07-04T12:24:13.747Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文以 PostgreSQL 15 为例讲解如何在 linux 上安装 PostgreSQL。&lt;/p&gt;
&lt;h3 id=&quot;1-1-本文主要内容&quot;&gt;&lt;a href=&quot;#1-1-本文主要内容&quot; class=&quot;headerlink&quot; title=&quot;1.1. 本文主要内容&quot;&gt;&lt;/a&gt;1.1. 本文主要内容&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;PostgreSQL 15 安装(yum)&lt;/li&gt;
&lt;li&gt;PostgreSQL 15 基础配置&lt;/li&gt;
&lt;li&gt;PostgreSQL 15 远程访问配置&lt;/li&gt;
&lt;li&gt;PostgreSQL 基础管理&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>PostgreSQL基础</title>
    <link href="https://pengtech.net/database/postgresql_basics.html"/>
    <id>https://pengtech.net/database/postgresql_basics.html</id>
    <published>2022-11-23T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.389Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-数据库基础知识&quot;&gt;&lt;a href=&quot;#1-数据库基础知识&quot; class=&quot;headerlink&quot; title=&quot;1. 数据库基础知识&quot;&gt;&lt;/a&gt;1. 数据库基础知识&lt;/h2&gt;&lt;h3 id=&quot;1-1-什么是数据库&quot;&gt;&lt;a href=&quot;#1-1-什么是数据库&quot; class=&quot;headerlink&quot; title=&quot;1.1. 什么是数据库&quot;&gt;&lt;/a&gt;1.1. 什么是数据库&lt;/h3&gt;&lt;p&gt;数据库(Database, DB)是一个长期存储在计算机内的, 有组织的, 有共享的, 统一管理的数据集合.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保管数据的”仓库”&lt;/li&gt;
&lt;li&gt;数据管理的方法和技术&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="database" scheme="https://pengtech.net/categories/database/"/>
    
    <category term="postgresql" scheme="https://pengtech.net/categories/database/postgresql/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="database" scheme="https://pengtech.net/tags/database/"/>
    
  </entry>
  
  <entry>
    <title>Angular PWA</title>
    <link href="https://pengtech.net/angular/angular_pwa.html"/>
    <id>https://pengtech.net/angular/angular_pwa.html</id>
    <published>2022-10-15T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.386Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;这里假设我们已经使用Angular开发了SPA应用, 我们希望在此基础上使用PWA做一些增强以获得更好的用户体验, 更好的性能.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>Angular sweetalert2</title>
    <link href="https://pengtech.net/angular/angular_sweetalert2.html"/>
    <id>https://pengtech.net/angular/angular_sweetalert2.html</id>
    <published>2022-10-15T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.338Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在本教程中，我们将学习如何在 angular 14 应用程序中使用 sweetalert2 来显示 sweetalert 弹出消息。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular上传图片</title>
    <link href="https://pengtech.net/angular/angular_upload_img.html"/>
    <id>https://pengtech.net/angular/angular_upload_img.html</id>
    <published>2022-10-15T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.386Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;在本教程中，您将学习如何在 angular 12&amp;#x2F;11 应用程序中制作带有预览功能的图像上传示例。&lt;/p&gt;
&lt;p&gt;此外，本教程将逐步指导您如何在角度 11&amp;#x2F;12 中上传图像。并且还将反应式表单与表单组一起使用，以上传带有预览的图像。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="javascript" scheme="https://pengtech.net/tags/javascript/"/>
    
  </entry>
  
  <entry>
    <title>Typescript教程</title>
    <link href="https://pengtech.net/typescript/typescript_tutorial.html"/>
    <id>https://pengtech.net/typescript/typescript_tutorial.html</id>
    <published>2022-10-15T16:00:00.000Z</published>
    <updated>2024-07-10T10:42:45.398Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-TS简介&quot;&gt;&lt;a href=&quot;#1-TS简介&quot; class=&quot;headerlink&quot; title=&quot;1. TS简介&quot;&gt;&lt;/a&gt;1. TS简介&lt;/h2&gt;&lt;h3 id=&quot;1-1-typescript是什么&quot;&gt;&lt;a href=&quot;#1-1-typescript是什么&quot; class=&quot;headerlink&quot; title=&quot;1.1. typescript是什么?&quot;&gt;&lt;/a&gt;1.1. typescript是什么?&lt;/h3&gt;&lt;p&gt;以javascript为基础构建的语言&lt;br&gt;可以在任何支持javascript的平台中执行&lt;br&gt;一个javascript的超集&lt;br&gt;typescript扩展了javascript，并添加了类型&lt;br&gt;TS不能被JS解析器直接执行，需要经过编译成javascript后被JS解析器执行。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="typescript" scheme="https://pengtech.net/categories/language/typescript/"/>
    
    
    <category term="typescript" scheme="https://pengtech.net/tags/typescript/"/>
    
  </entry>
  
  <entry>
    <title>破解Gitlab ee 15 企业版</title>
    <link href="https://pengtech.net/gitlab/gitlab_ee_crack.html"/>
    <id>https://pengtech.net/gitlab/gitlab_ee_crack.html</id>
    <published>2022-10-05T16:00:00.000Z</published>
    <updated>2024-08-15T21:27:22.057Z</updated>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E5%89%8D%E8%A8%80&quot;&gt;1. 前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E5%AE%89%E8%A3%85gitlab-ee%E4%BC%81%E4%B8%9A%E7%89%88&quot;&gt;2. 安装gitlab-ee企业版&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E7%8E%AF%E5%A2%83%E8%AF%B4%E6%98%8E&quot;&gt;3. 环境说明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%E5%AE%89%E8%A3%85%E5%BF%85%E8%A6%81%E8%BD%AF%E4%BB%B6&quot;&gt;4. 安装必要软件&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#41-%E5%AE%89%E8%A3%85ruby&quot;&gt;4.1. 安装ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#42-%E5%AE%89%E8%A3%85gitlab-license&quot;&gt;4.2. 安装gitlab-license&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%E7%A0%B4%E8%A7%A3%E6%96%B9%E6%B3%95&quot;&gt;5. 破解方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%E5%85%B3%E8%81%94%E9%98%85%E8%AF%BB&quot;&gt;6. 关联阅读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3&quot;&gt;7. 参考文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在破解之前, 我们要确保我们安装了合适版本的gitlab, 本文适用于gitlab 13, 14, 15等多个版本, 因为我是一路从gitlab13升级到15的, 对这些版本我都有亲自测试过, 此方法有效. 对于gitlab 16由于没有亲测过, 适用性未知, 希望试验过的朋友留言告知我, 在此提前表示感谢.&lt;/p&gt;
&lt;p&gt;使用此教程的前提:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要安装gitlab-ee 企业版&lt;/li&gt;
&lt;li&gt;需要安装Ruby环境&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-安装gitlab-ee企业版&quot;&gt;&lt;a href=&quot;#2-安装gitlab-ee企业版&quot; class=&quot;headerlink&quot; title=&quot;2. 安装gitlab-ee企业版&quot;&gt;&lt;/a&gt;2. 安装gitlab-ee企业版&lt;/h2&gt;&lt;p&gt;关于如何安装配置gitlab-ee可以参考我的文章 &lt;a href=&quot;https://pengtech.net/gitlab/gitlab_installation_upgrade.html&quot;&gt;鹏叔的技术博客 - gitlab安装升级及迁移&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;3-环境说明&quot;&gt;&lt;a href=&quot;#3-环境说明&quot; class=&quot;headerlink&quot; title=&quot;3. 环境说明&quot;&gt;&lt;/a&gt;3. 环境说明&lt;/h2&gt;&lt;p&gt;当前我的gitlab版本及环境如下:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;操作系统版本: Centos 7.9&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;gitlab-ee版本为: 15.8.1-ee&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>帮助系统案例与赏析</title>
    <link href="https://pengtech.net/product/help_system_design.html"/>
    <id>https://pengtech.net/product/help_system_design.html</id>
    <published>2022-09-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;网站设计师应将每一位访问我们网站的用户视为潜在的新用户，为他们提供足够的指导和指南，以完成他们的任务并熟悉网站。几乎所有类型的网站都必须帮助用户，但方式不同。网站的类型将决定您应该提供的帮助系统的类型。&lt;br&gt;此外，帮助系统的有效性直接关系到网站设计的质量。一个设计不好的帮助系统——无论其内容多么好——都会带来劣质的用户体验。在本文中，我们将通过示例研究设计有效帮助页面的一些方法，这些方法可能会启发您的工作。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="design" scheme="https://pengtech.net/categories/web/design/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
  </entry>
  
  <entry>
    <title>Angular Material实现typeahead简单示例</title>
    <link href="https://pengtech.net/material/material_typeahead.html"/>
    <id>https://pengtech.net/material/material_typeahead.html</id>
    <published>2022-08-23T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;项目中需要一个输入提示框, 之前是使用ng-bootstrap实现的. 但是由于系统框架完全迁移到了material design. 所以所有bootstrap的依赖项都要迁移到angular material design.&lt;/p&gt;
&lt;p&gt;如果您的web表单有一个包含许多选项的下拉列表，那么您可能希望通过提前键入来简化用户的生活。幸运的是，Angular Material组件可以让你很容易地做到这一点。在本指南中，我将向您展示如何实现这一点。&lt;/p&gt;
&lt;p&gt;顺便说一句：如果你不熟悉typeahead(提前输入)，这是一种在下拉列表中过滤结果的方法。用户刚开始在字段中键入字符，列表将缩小为仅以用户键入的字符开头的选项。&lt;br&gt;typeahead是一种用户友好的输入方式，因为用户不必在看似无穷无尽的列表中滚动才能找到他们想要的内容。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
    <category term="Material" scheme="https://pengtech.net/tags/Material/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - 文字排版</title>
    <link href="https://pengtech.net/material/typography.html"/>
    <id>https://pengtech.net/material/typography.html</id>
    <published>2022-07-05T16:00:00.000Z</published>
    <updated>2024-08-17T07:59:22.119Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-文字系统-（The-type-system）&quot;&gt;&lt;a href=&quot;#1-文字系统-（The-type-system）&quot; class=&quot;headerlink&quot; title=&quot;1. 文字系统 （The type system）&quot;&gt;&lt;/a&gt;1. 文字系统 （The type system）&lt;/h2&gt;&lt;p&gt;使用排版尽可能清晰有效地呈现您的设计和内容。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>值得观看的电影</title>
    <link href="https://pengtech.net/others/worth_watching_movies.html"/>
    <id>https://pengtech.net/others/worth_watching_movies.html</id>
    <published>2022-06-16T16:00:00.000Z</published>
    <updated>2025-02-19T11:09:05.515Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;值得观看的电影&quot;&gt;&lt;a href=&quot;#值得观看的电影&quot; class=&quot;headerlink&quot; title=&quot;值得观看的电影&quot;&gt;&lt;/a&gt;值得观看的电影&lt;/h2&gt;&lt;h3 id=&quot;《白日梦想家》&quot;&gt;&lt;a href=&quot;#《白日梦想家》&quot; class=&quot;headerlink&quot; title=&quot;《白日梦想家》&quot;&gt;&lt;/a&gt;《白日梦想家》&lt;/h3&gt;&lt;h3 id=&quot;《辩护人》&quot;&gt;&lt;a href=&quot;#《辩护人》&quot; class=&quot;headerlink&quot; title=&quot;《辩护人》&quot;&gt;&lt;/a&gt;《辩护人》&lt;/h3&gt;&lt;h3 id=&quot;《勇敢的心》&quot;&gt;&lt;a href=&quot;#《勇敢的心》&quot; class=&quot;headerlink&quot; title=&quot;《勇敢的心》&quot;&gt;&lt;/a&gt;《勇敢的心》&lt;/h3&gt;&lt;h3 id=&quot;《阿甘正传》&quot;&gt;&lt;a href=&quot;#《阿甘正传》&quot; class=&quot;headerlink&quot; title=&quot;《阿甘正传》&quot;&gt;&lt;/a&gt;《阿甘正传》&lt;/h3&gt;</summary>
    
    
    
    <category term="others" scheme="https://pengtech.net/categories/others/"/>
    
    <category term="movies" scheme="https://pengtech.net/categories/others/movies/"/>
    
    
    <category term="life" scheme="https://pengtech.net/tags/life/"/>
    
    <category term="English" scheme="https://pengtech.net/tags/English/"/>
    
  </entry>
  
  <entry>
    <title>Angular Flex Layout使用详解</title>
    <link href="https://pengtech.net/angular/angular_flex_layout.html"/>
    <id>https://pengtech.net/angular/angular_flex_layout.html</id>
    <published>2022-06-04T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.396Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;h3 id=&quot;1-1-update-on-5th-Apr-2023&quot;&gt;&lt;a href=&quot;#1-1-update-on-5th-Apr-2023&quot; class=&quot;headerlink&quot; title=&quot;1.1. update on 5th&amp;#x2F;Apr&amp;#x2F;2023&quot;&gt;&lt;/a&gt;1.1. update on 5th&amp;#x2F;Apr&amp;#x2F;2023&lt;/h3&gt;&lt;p&gt;根据 flex-layout 官方宣告, @angular&amp;#x2F;flex-layout 当前处于 deprecated 状态. 替代方案为 Tailwindcss 或者 Angular CDK.&lt;/p&gt;
&lt;p&gt;具体原因参考官方的 anoucement - &lt;a href=&quot;https://medium.com/@caerus.karu/farewell-flex-layout-aaa567023769&quot;&gt;Medium post&lt;/a&gt;&lt;br&gt;和 github 上的&lt;a href=&quot;https://github.com/angular/flex-layout/issues/1426&quot;&gt;讨论&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;建议新项目使用其他 css library, 旧项目考虑移植到其他 css library.&lt;/p&gt;
&lt;p&gt;迁移工具:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/migrate-angular-flex-to-tailwind&quot;&gt;migrate-angular-flex-to-tailwind&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[flex-layout-migrator](https :&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;NIPE-Solutions&amp;#x2F;flex-layout-migrator)&lt;/p&gt;
&lt;h3 id=&quot;1-2-update-on-25th-June-2023&quot;&gt;&lt;a href=&quot;#1-2-update-on-25th-June-2023&quot; class=&quot;headerlink&quot; title=&quot;1.2. update on 25th&amp;#x2F;June&amp;#x2F;2023&quot;&gt;&lt;/a&gt;1.2. update on 25th&amp;#x2F;June&amp;#x2F;2023&lt;/h3&gt;&lt;p&gt;目前 DuncanFaulkner 克隆了@angular&amp;#x2F;flex-layout 并提供社区支持, 目前以及能支持 Angular 16 了.&lt;/p&gt;
&lt;p&gt;所以使用社区版本的 flex-layout 也是一直选择, 如果重度依赖 flex-layout&lt;/p&gt;
&lt;p&gt;新家现在位于&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ngbracket/ngx-layout&quot;&gt;@ngbracket&amp;#x2F;ngx-layout&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&quot;2-安装&quot;&gt;&lt;a href=&quot;#2-安装&quot; class=&quot;headerlink&quot; title=&quot;2. 安装&quot;&gt;&lt;/a&gt;2. 安装&lt;/h2&gt;&lt;p&gt;要在 Angular CLI 项目中使用@angular&amp;#x2F;flex-layout 相当简单，只需要两个步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;安装组件指令&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;npm install @angular/flex-layout --save&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;将 Angular Flex Layout 导入到 app.module 中&lt;/p&gt;
&lt;figure class=&quot;highlight ts&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// src/app/app.module.ts&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; &amp;#123;&lt;span class=&quot;title class_&quot;&gt;NgModule&lt;/span&gt;&amp;#125; &lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;#x27;@angular/core&amp;#x27;&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; &amp;#123;&lt;span class=&quot;title class_&quot;&gt;FlexLayoutModule&lt;/span&gt;&amp;#125; &lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;#x27;@angular/flex-layout&amp;#x27;&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;meta&quot;&gt;@NgModule&lt;/span&gt;(&amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;imports&lt;/span&gt;: [&lt;span class=&quot;title class_&quot;&gt;FlexLayoutModule&lt;/span&gt;],&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title class_&quot;&gt;AppModule&lt;/span&gt; &amp;#123;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>应用angular material design</title>
    <link href="https://pengtech.net/angular/angular_material_design.html"/>
    <id>https://pengtech.net/angular/angular_material_design.html</id>
    <published>2022-05-28T16:00:00.000Z</published>
    <updated>2024-08-26T10:21:08.543Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;为什么选择 angular material design?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实际上如果想在自己的 web 项目中使用 material design 这套设计理念, 有多种选择, 一个是使用 bootstrap + mdbootstrap 这套架构和组件, 或者使用 bootstrap+materialize-css 这套解决方案. 其核心思想就是使用 bootstrap 去处理响应式 web ux 的问题以及跨浏览器, 跨各种大小屏幕兼容性问题, 而使用 mdbootstrap 或 materialize 去实现一套 material design 风格的组件库. 实际上这是一套很好的思路, 各方案专注自己的擅长的领域, 保持小而美的设计. 但是现实问题是 mdbootstrap 并不是免费的, 其 prime 版本是收费的, 而且对初创公司来说其收费还不便宜. materialize-css 是开源免费的, 但是截至 2022-05-29, 该项目已经 6 年没有更新了, 最近的一个版本是 6 年前发布的一个 1.0.0 版本.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>CentOS7搭建NAS文件共享存储</title>
    <link href="https://pengtech.net/linux/nas_installation_on_linux.html"/>
    <id>https://pengtech.net/linux/nas_installation_on_linux.html</id>
    <published>2022-05-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.446Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;h3 id=&quot;1-1-网络存储技术&quot;&gt;&lt;a href=&quot;#1-1-网络存储技术&quot; class=&quot;headerlink&quot; title=&quot;1.1. 网络存储技术&quot;&gt;&lt;/a&gt;1.1. 网络存储技术&lt;/h3&gt;&lt;p&gt;网络存储技术大概可以分为3种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DAS：直连式存储（Direct Attached Storage），直接与主机相连的存储设备。它依赖于服务器，本身是硬件的堆叠，不带有任何存储操作系统。现在常见的DAS设备：硬盘座带上 N个硬盘。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NAS：网络连接式存储（Network Attached Storage），存储设备直连网络，NAS设备和DAS设备不同在于，NAS设备一般带有存储操作系统。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SAN：存储网络（Storage Area Network），可以说是一种网络基础设施。SAN和NAS的区别主要在于：SAN针对海量、面向数据块的数据传输，而NAS则提供文件级的数据访问功能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="network" scheme="https://pengtech.net/tags/network/"/>
    
    <category term="NAS" scheme="https://pengtech.net/tags/NAS/"/>
    
  </entry>
  
  <entry>
    <title>使用gitlab issue board的四种方式</title>
    <link href="https://pengtech.net/gitlab/gitlab_issue_board.html"/>
    <id>https://pengtech.net/gitlab/gitlab_issue_board.html</id>
    <published>2022-05-11T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;构建软件和运行项目的方法有很多种。当我们开始在 GitLab 中构建产品组合和项目管理工具时，我们问自己，“您如何构建工具来支持各种工作流程，而不会因为工具本身的复杂性而陷入瘫痪？我们的结论是什么？构建更少但更灵活的工具。GitLab 的内置issue board是一个很好的例子，说明选择构建单个多功能工具可以显著降低工具维护的复杂性，同时不会限制其功能。&lt;/p&gt;
&lt;p&gt;管理项目和软件本质上是复杂的，但项目管理工具本身不一定如此复杂。无论您管理多少个项目、人员或产品，获得保持平稳运行所需的可见性应该是一件容易的事。&lt;/p&gt;
&lt;p&gt;GitLab issue board是一个使用简化方法解决复杂问题的很好的例子。我们建立在 GitLab 现有的问题跟踪功能之上，并利用 GitLab 问题标签的强大功能，将它们用作看板上的列表。您可以构建不同的问题板视图，同时保持您在问题跟踪器中看到的相同过滤和排序功能。您可以创建多个板来捕获所需可见性，并按里程碑、标签、责任人和权重定义板的范围。&lt;/p&gt;
&lt;p&gt; issue board基于其项目的标签结构，因此，它应用相同的描述性标签来定位在板上的位置，从而在整个开发生命周期中保持一致性。而且，您可以直接从开发板中单击某个问题以开始您的工作。&lt;/p&gt;
&lt;p&gt;issue board显示您的团队正在处理哪些问题，分配给每个问题的人员以及这些问题在工作流中的哪个位置&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - Applying density</title>
    <link href="https://pengtech.net/material/applying_density.html"/>
    <id>https://pengtech.net/material/applying_density.html</id>
    <published>2022-05-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Material设计为提高密度改善用户体验的用例提供高密度间距指导。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - 颜色</title>
    <link href="https://pengtech.net/material/material_color.html"/>
    <id>https://pengtech.net/material/material_color.html</id>
    <published>2022-05-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-颜色系统&quot;&gt;&lt;a href=&quot;#1-颜色系统&quot; class=&quot;headerlink&quot; title=&quot;1. 颜色系统&quot;&gt;&lt;/a&gt;1. 颜色系统&lt;/h2&gt;&lt;p&gt;Material设计颜色系统可以帮助您创建反映您的品牌或风格的颜色主题。&lt;/p&gt;
&lt;h3 id=&quot;1-1-颜色用法和调色板&quot;&gt;&lt;a href=&quot;#1-1-颜色用法和调色板&quot; class=&quot;headerlink&quot; title=&quot;1.1. 颜色用法和调色板&quot;&gt;&lt;/a&gt;1.1. 颜色用法和调色板&lt;/h3&gt;&lt;p&gt;Material设计颜色系统可帮助您以有意义的方式将颜色应用于 UI。在此系统中，您可以选择主要颜色和次要颜色来代表您的品牌。然后，每种颜色的深色和浅色变体可以以不同的方式应用于 UI。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - 导航</title>
    <link href="https://pengtech.net/material/material_navigation.html"/>
    <id>https://pengtech.net/material/material_navigation.html</id>
    <published>2022-05-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-说明&quot;&gt;&lt;a href=&quot;#1-说明&quot; class=&quot;headerlink&quot; title=&quot;1. 说明&quot;&gt;&lt;/a&gt;1. 说明&lt;/h2&gt;&lt;p&gt;导航允许用户在应用程序中移动。&lt;/p&gt;
&lt;h3 id=&quot;1-1-导航类型&quot;&gt;&lt;a href=&quot;#1-1-导航类型&quot; class=&quot;headerlink&quot; title=&quot;1.1. 导航类型&quot;&gt;&lt;/a&gt;1.1. 导航类型&lt;/h3&gt;&lt;p&gt;导航是在应用程序的屏幕之间移动以完成任务的行为。它是通过几种方式实现的：专用导航组件、将导航行为嵌入内容以及平台功能。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>gitlab CICD基础</title>
    <link href="https://pengtech.net/gitlab/gitlab-cicd-basic.html"/>
    <id>https://pengtech.net/gitlab/gitlab-cicd-basic.html</id>
    <published>2022-04-30T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.438Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Gitlab-CI-CD-基础&quot;&gt;&lt;a href=&quot;#1-Gitlab-CI-CD-基础&quot; class=&quot;headerlink&quot; title=&quot;1. Gitlab CI&amp;#x2F;CD 基础&quot;&gt;&lt;/a&gt;1. Gitlab CI&amp;#x2F;CD 基础&lt;/h2&gt;&lt;p&gt;课程主要内容&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么要做CI&amp;#x2F;CD?&lt;/li&gt;
&lt;li&gt;GitLab CI&amp;#x2F;CD&lt;/li&gt;
&lt;li&gt;GitLabCI vs JenkinsCI&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="gitlab" scheme="https://pengtech.net/categories/devops/gitlab/"/>
    
    
    <category term="gitlab" scheme="https://pengtech.net/tags/gitlab/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - Component behavior</title>
    <link href="https://pengtech.net/material/component_behavior.html"/>
    <id>https://pengtech.net/material/component_behavior.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本页描述组件在布局中的行为，包括与网格以及断点的关系。&lt;/p&gt;
&lt;h2 id=&quot;2-Position术语&quot;&gt;&lt;a href=&quot;#2-Position术语&quot; class=&quot;headerlink&quot; title=&quot;2. Position术语&quot;&gt;&lt;/a&gt;2. Position术语&lt;/h2&gt;&lt;p&gt;UI元素在每个分界点范围内的行为方式不同。UI元素、组件和表面在网格中的位置用以下术语描述。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - Elevation（标高）</title>
    <link href="https://pengtech.net/material/elevation.html"/>
    <id>https://pengtech.net/material/elevation.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-11-02T12:06:11.866Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Elevation（标高）&quot;&gt;&lt;a href=&quot;#1-Elevation（标高）&quot; class=&quot;headerlink&quot; title=&quot;1. Elevation（标高）&quot;&gt;&lt;/a&gt;1. Elevation（标高）&lt;/h2&gt;&lt;p&gt;Elevation（标高）是沿 z 轴的两个Surface之间的相对距离。&lt;/p&gt;
&lt;h2 id=&quot;2-测量标高&quot;&gt;&lt;a href=&quot;#2-测量标高&quot; class=&quot;headerlink&quot; title=&quot;2. 测量标高&quot;&gt;&lt;/a&gt;2. 测量标高&lt;/h2&gt;&lt;p&gt;Material Design中的标高为Material surfaces之间的距离。从一个Material surface的前部到另一个Material surface前面的距离沿 z 轴以与dps(density-independent pixels)为单位进行测量，并使用阴影进行描绘（默认情况下）.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design简介</title>
    <link href="https://pengtech.net/material/introduction.html"/>
    <id>https://pengtech.net/material/introduction.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-11-02T12:06:57.830Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;Material 是 Google 创建的一个设计系统，旨在帮助团队为 Android、iOS、Flutter 和 Web 构建高质量的数字体验。&lt;/p&gt;
&lt;h2 id=&quot;2-原则&quot;&gt;&lt;a href=&quot;#2-原则&quot; class=&quot;headerlink&quot; title=&quot;2. 原则&quot;&gt;&lt;/a&gt;2. 原则&lt;/h2&gt;&lt;h3 id=&quot;2-1-材料是隐喻&quot;&gt;&lt;a href=&quot;#2-1-材料是隐喻&quot; class=&quot;headerlink&quot; title=&quot;2.1. 材料是隐喻&quot;&gt;&lt;/a&gt;2.1. 材料是隐喻&lt;/h3&gt;&lt;p&gt;Material design 的灵感来自物理世界及其纹理，包括它们如何反射光线和投射阴影。Material surfaces 重新构想了纸张和墨水的介质。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bold, graphic, intentional&lt;br&gt;材质设计由印刷设计方法（排版、网格、空间、比例、颜色和图像）指导，以创建让观看者沉浸在体验中的层次结构、意义和焦点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Motion provides meaning&lt;br&gt;Motion 通过微妙的反馈和连贯的过渡来集中注意力并保持连续性。当元素出现在屏幕上时，它们会通过交互来转换和重新组织环境，从而生成新的转换。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design 基础 - Layout</title>
    <link href="https://pengtech.net/material/layout.html"/>
    <id>https://pengtech.net/material/layout.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-理解layout&quot;&gt;&lt;a href=&quot;#1-理解layout&quot; class=&quot;headerlink&quot; title=&quot;1. 理解layout&quot;&gt;&lt;/a&gt;1. 理解layout&lt;/h2&gt;&lt;p&gt;material设计布局使用统一的元素和间距，以鼓励在多种平台、环境和屏幕尺寸之间的一致性。&lt;/p&gt;
&lt;h3 id=&quot;1-1-原则&quot;&gt;&lt;a href=&quot;#1-1-原则&quot; class=&quot;headerlink&quot; title=&quot;1.1. 原则&quot;&gt;&lt;/a&gt;1.1. 原则&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Predictable(可预测的)  使用直观且可预测的布局，并具有一致的UI区域和空间组织。  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consistent(一致的) 布局应始终使用网格、关键线和填充。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Responsive(响应的) 布局是自适应的。它们对用户、设备和屏幕元素的输入做出反应。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design基础 - 光线和阴影</title>
    <link href="https://pengtech.net/material/light_shadow.html"/>
    <id>https://pengtech.net/material/light_shadow.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-光线和阴影&quot;&gt;&lt;a href=&quot;#1-光线和阴影&quot; class=&quot;headerlink&quot; title=&quot;1. 光线和阴影&quot;&gt;&lt;/a&gt;1. 光线和阴影&lt;/h2&gt;&lt;p&gt;material surface阻挡光源时会投射阴影。&lt;/p&gt;
&lt;p&gt;在material设计环境中，虚拟灯光照亮UI。关键灯光创建更清晰的方向性阴影，称为关键光阴影。环境光从各个角度出现，以创建漫射的柔和阴影，称为环境光阴影。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design基础 - Pixel Density</title>
    <link href="https://pengtech.net/material/pixel_density.html"/>
    <id>https://pengtech.net/material/pixel_density.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-像素密度-Pixel-Density&quot;&gt;&lt;a href=&quot;#1-像素密度-Pixel-Density&quot; class=&quot;headerlink&quot; title=&quot;1. 像素密度(Pixel Density)&quot;&gt;&lt;/a&gt;1. 像素密度(Pixel Density)&lt;/h2&gt;&lt;p&gt;一英寸屏幕上存在的像素数称为像素密度。&lt;/p&gt;
&lt;p&gt;屏幕像素密度和分辨率因平台而异。&lt;/p&gt;
&lt;h3 id=&quot;1-1-屏幕密度变化&quot;&gt;&lt;a href=&quot;#1-1-屏幕密度变化&quot; class=&quot;headerlink&quot; title=&quot;1.1. 屏幕密度变化&quot;&gt;&lt;/a&gt;1.1. 屏幕密度变化&lt;/h3&gt;&lt;p&gt;高密度屏幕的每英寸像素数比低密度屏幕的多。因此，相同像素尺寸的UI元素在低密度屏幕上显示得更大，而在高密度屏幕上显示得更小。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design基础 - 响应式布局网格</title>
    <link href="https://pengtech.net/material/responsive_layout_grid.html"/>
    <id>https://pengtech.net/material/responsive_layout_grid.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-响应式布局网格&quot;&gt;&lt;a href=&quot;#1-响应式布局网格&quot; class=&quot;headerlink&quot; title=&quot;1. 响应式布局网格&quot;&gt;&lt;/a&gt;1. 响应式布局网格&lt;/h2&gt;&lt;p&gt;Material Design的响应式布局网格可根据屏幕大小和方向进行调整，确保布局的一致性。&lt;/p&gt;
&lt;h3 id=&quot;1-1-Columns-gutters-and-margins&quot;&gt;&lt;a href=&quot;#1-1-Columns-gutters-and-margins&quot; class=&quot;headerlink&quot; title=&quot;1.1. Columns, gutters, and margins&quot;&gt;&lt;/a&gt;1.1. Columns, gutters, and margins&lt;/h3&gt;&lt;p&gt;响应式布局网格由三个元素组成：Columns, gutters, 和 margins。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design基础 - spacing methods</title>
    <link href="https://pengtech.net/material/spacing_methods.html"/>
    <id>https://pengtech.net/material/spacing_methods.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.587Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-spacing-methods&quot;&gt;&lt;a href=&quot;#1-spacing-methods&quot; class=&quot;headerlink&quot; title=&quot;1. spacing methods&quot;&gt;&lt;/a&gt;1. spacing methods&lt;/h2&gt;&lt;p&gt;spacing methods使用基线网格、关键线、填充和增量间距来调整比率、容器和触摸目标。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>Material Design基础 - Surfaces</title>
    <link href="https://pengtech.net/material/surfaces.html"/>
    <id>https://pengtech.net/material/surfaces.html</id>
    <published>2022-04-29T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.584Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Material-Surfaces&quot;&gt;&lt;a href=&quot;#1-Material-Surfaces&quot; class=&quot;headerlink&quot; title=&quot;1. Material Surfaces&quot;&gt;&lt;/a&gt;1. Material Surfaces&lt;/h2&gt;&lt;p&gt;Material设计具有三个维度的特质，这些品质反映在其对表面(Surfaces)、深度和阴影的使用中。&lt;/p&gt;
&lt;h3 id=&quot;1-1-Material-environment&quot;&gt;&lt;a href=&quot;#1-1-Material-environment&quot; class=&quot;headerlink&quot; title=&quot;1.1. Material environment&quot;&gt;&lt;/a&gt;1.1. Material environment&lt;/h3&gt;&lt;p&gt;在真实世界中，物体可以堆叠或相互接触，但不能相互传递。它们投射阴影并反射光线。&lt;/p&gt;
&lt;p&gt;Material设计在Material UI 中如何显示和移动曲面来反映这些品质。表面以及它们在三维空间中的移动方式以类似于它们在物理世界中移动的方式进行通信。此空间模型还可以跨应用程序一致地应用。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="material design" scheme="https://pengtech.net/categories/web/material-design/"/>
    
    
    <category term="material design" scheme="https://pengtech.net/tags/material-design/"/>
    
    <category term="design" scheme="https://pengtech.net/tags/design/"/>
    
  </entry>
  
  <entry>
    <title>安装 Golang</title>
    <link href="https://pengtech.net/golang/install_golang.html"/>
    <id>https://pengtech.net/golang/install_golang.html</id>
    <published>2022-04-21T16:00:00.000Z</published>
    <updated>2025-11-06T18:20:14.411Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Go（又称 Golang）是 Google 开发的一种静态强类型、编译型、并发型，并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫（Robert Griesemer），罗勃·派克（Rob Pike）及肯·汤普逊（Ken Thompson）于 2007 年 9 月开始设计 Go，稍后 Ian Lance Taylor、Russ Cox 加入项目。&lt;/p&gt;</summary>
    
    
    
    <category term="language" scheme="https://pengtech.net/categories/language/"/>
    
    <category term="golang" scheme="https://pengtech.net/categories/language/golang/"/>
    
    
    <category term="Golang" scheme="https://pengtech.net/tags/Golang/"/>
    
  </entry>
  
  <entry>
    <title>Angular实现登录保护</title>
    <link href="https://pengtech.net/angular/angular2_auth.html"/>
    <id>https://pengtech.net/angular/angular2_auth.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;一个网站，通常都会包含公开页面和受保护页面两种，如果是 OA 或者企业应用网站，甚至可能全部都是保护页面，访问者需要在进行身份认证后，才能正常的浏览相关页面。&lt;/p&gt;
&lt;p&gt;在本实验中, 我们会创建一个登录页面, 一个受保护的页面, 和一个面向公众公开的信息页面. 当用户访问受保护页面时, 需要先登录再访问, 而公众公开页面不需要登录即可访问.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular guard介绍</title>
    <link href="https://pengtech.net/angular/angular2_guard.html"/>
    <id>https://pengtech.net/angular/angular2_guard.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;我们在开发 web 应用时，在服务器端都会控制某种或某个用户是否有权限调用某个接口。在前端，我们除了根据用户的角色或其他特性来控制一些页面元素是否显示以外，也需要控制用户是否能够进入某些页面（例如通过直接输入 URL 的方式直接进入）。要控制是否显示，我们可以使用 *ngIf 、 [hidden] 等方式。而对于控制用户能否进入某个页面，Angular2 的路由框架也提供了非常方便的方式来实现这个功能。&lt;/p&gt;
&lt;p&gt;Angular2 提供了 2 种组件， Guard 和 Resolve 。 Guard 顾名思义就是用来保护一个路径。可以用来判断用户只有在满足一定的条件的情况下才能打开这个路径对应的页面。 Resolve 用来在进入某个路径之前先获取数据。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>深度刨析NgModule</title>
    <link href="https://pengtech.net/angular/angular2_ngmodule.html"/>
    <id>https://pengtech.net/angular/angular2_ngmodule.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;我们今天要学习的是 Angular2 的模块系统,一般情况下我们使用一个根模块去启动我们的应用,然后使用许多的功能模块去丰富我们的应用,扩展我们应用的功能.这些全部依靠我们的 NgModule 装饰器,接下来我们就来好好学习一下这个装饰器. 当然在这个过程中你会遇到一些新的指令,概念等等;但是别慌,我们会在以后的文章中一个一个的详细讲解呢.&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular中的JIT与AOT</title>
    <link href="https://pengtech.net/angular/angular_JIT_AOT.html"/>
    <id>https://pengtech.net/angular/angular_JIT_AOT.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;本文会聊聊 JIT 与 AOT 之间的区别，及前端框架中 AOT 的应用。Angular 同时提供这两种编译方案，下面我们用 Angular 举例说明两者的区别。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>深度刨析@angular/platform-browser-dynamic</title>
    <link href="https://pengtech.net/angular/angular_platformBrowserDynamic.html"/>
    <id>https://pengtech.net/angular/angular_platformBrowserDynamic.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;作为 angular 应用的入口模块，了解他的重要性是显而易见的！&lt;/p&gt;
&lt;h2 id=&quot;2-angular-之-main-ts&quot;&gt;&lt;a href=&quot;#2-angular-之-main-ts&quot; class=&quot;headerlink&quot; title=&quot;2. angular 之 main.ts&quot;&gt;&lt;/a&gt;2. angular 之 main.ts&lt;/h2&gt;&lt;p&gt;main.ts 是这个样子的，下面我就去解开 platformBrowserDynamic 神秘面纱！&lt;/p&gt;
&lt;figure class=&quot;highlight ts&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;title function_&quot;&gt;platformBrowserDynamic&lt;/span&gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  .&lt;span class=&quot;title function_&quot;&gt;bootstrapModule&lt;/span&gt;(&lt;span class=&quot;title class_&quot;&gt;AppModule&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  .&lt;span class=&quot;title function_&quot;&gt;catch&lt;/span&gt;(&lt;span class=&quot;function&quot;&gt;(&lt;span class=&quot;params&quot;&gt;err&lt;/span&gt;) =&amp;gt;&lt;/span&gt; &lt;span class=&quot;variable language_&quot;&gt;console&lt;/span&gt;.&lt;span class=&quot;title function_&quot;&gt;error&lt;/span&gt;(err));&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular platform是什么?</title>
    <link href="https://pengtech.net/angular/angular_platforms.html"/>
    <id>https://pengtech.net/angular/angular_platforms.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Angular-platform-是什么&quot;&gt;&lt;a href=&quot;#1-Angular-platform-是什么&quot; class=&quot;headerlink&quot; title=&quot;1. Angular platform 是什么?&quot;&gt;&lt;/a&gt;1. Angular platform 是什么?&lt;/h2&gt;&lt;p&gt;原文: &lt;a href=&quot;https://indepth.dev/posts/1027/angular-platforms-in-depth-part-1-what-are-angular-platforms&quot;&gt;Angular Platforms in depth. Part 1. What are Angular Platforms?&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;2-前言&quot;&gt;&lt;a href=&quot;#2-前言&quot; class=&quot;headerlink&quot; title=&quot;2. 前言&quot;&gt;&lt;/a&gt;2. 前言&lt;/h2&gt;&lt;p&gt;在这一系列文章中，我将向你们揭示 Angular 应用程序如何跨不同环境执行。此外，我们还将学习如何构建自定义 Angular Platforms 使用 ASCII 图形呈现系统终端内的应用程序。&lt;/p&gt;
&lt;p&gt;Angular 框架被设计成平台独立的。即允许在不同的环境中执行 Angular 应用程序  —  浏览器、服务器、web-worker，甚至移动设备。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular如何配置多套环境</title>
    <link href="https://pengtech.net/angular/angular_setup_multiple_envs.html"/>
    <id>https://pengtech.net/angular/angular_setup_multiple_envs.html</id>
    <published>2022-04-02T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.360Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;在 Angular 应用程序中，默认情况下构建了两个环境文件 dev 和 prod。基于目标环境，您的应用程序可能具有不同的设置。您可以根据需要配置多个自定义环境。在这里，您将看到如何配置多个环境，如 staging、beta、QA、prod 等&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>创建Angular项目</title>
    <link href="https://pengtech.net/angular/angular2_create_project.html"/>
    <id>https://pengtech.net/angular/angular2_create_project.html</id>
    <published>2022-03-12T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.421Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-说明&quot;&gt;&lt;a href=&quot;#1-说明&quot; class=&quot;headerlink&quot; title=&quot;1. 说明&quot;&gt;&lt;/a&gt;1. 说明&lt;/h2&gt;&lt;p&gt;本项目使用的 angular, nodejs, npm, cnpm 版本如下&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular CLI 安装和使用</title>
    <link href="https://pengtech.net/angular/angular2_installation.html"/>
    <id>https://pengtech.net/angular/angular2_installation.html</id>
    <published>2022-03-05T16:00:00.000Z</published>
    <updated>2024-08-26T10:22:20.250Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Angular-介绍&quot;&gt;&lt;a href=&quot;#1-Angular-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. Angular 介绍&quot;&gt;&lt;/a&gt;1. Angular 介绍&lt;/h2&gt;&lt;p&gt;关于 Angular 版本，Angular 官方已经统一命名 Angular 1.x 同一为 Angular JS；Angular 2.x 及以上统称 Angular；&lt;/p&gt;
&lt;p&gt;CLI 是 Command Line Interface 的简写，是一种命令行接口，实现自动化开发流程. 它可以创建项目、添加文件以及执行一大堆开发任务，比如测试、打包和发布。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Angular2中的路由</title>
    <link href="https://pengtech.net/angular/angular2_route.html"/>
    <id>https://pengtech.net/angular/angular2_route.html</id>
    <published>2022-03-05T16:00:00.000Z</published>
    <updated>2024-08-06T10:05:40.317Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Angular2-中的路由&quot;&gt;&lt;a href=&quot;#1-Angular2-中的路由&quot; class=&quot;headerlink&quot; title=&quot;1. Angular2 中的路由&quot;&gt;&lt;/a&gt;1. Angular2 中的路由&lt;/h2&gt;&lt;p&gt;Angular2 中建立路由的 5 个步骤.&lt;/p&gt;
&lt;h2 id=&quot;2-安装-angular-router&quot;&gt;&lt;a href=&quot;#2-安装-angular-router&quot; class=&quot;headerlink&quot; title=&quot;2. 安装@angular&amp;#x2F;router&quot;&gt;&lt;/a&gt;2. 安装@angular&amp;#x2F;router&lt;/h2&gt;&lt;p&gt;首先第一件事，我们需要安装 Angular Router。你可以通过运行以下命令进行安装.&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;npm i --save @angular/router&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;以上命令执行后，将会自动下载 @angular&amp;#x2F;router 模块到 node_modules 文件夹中。&lt;/p&gt;</summary>
    
    
    
    <category term="web" scheme="https://pengtech.net/categories/web/"/>
    
    <category term="angular" scheme="https://pengtech.net/categories/web/angular/"/>
    
    
    <category term="web" scheme="https://pengtech.net/tags/web/"/>
    
    <category term="Angular" scheme="https://pengtech.net/tags/Angular/"/>
    
  </entry>
  
  <entry>
    <title>Windows上安装git2.x</title>
    <link href="https://pengtech.net/git/windows_install_git.html"/>
    <id>https://pengtech.net/git/windows_install_git.html</id>
    <published>2022-03-05T16:00:00.000Z</published>
    <updated>2025-03-20T11:47:00.359Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-Windows上安装git2-x&quot;&gt;&lt;a href=&quot;#1-Windows上安装git2-x&quot; class=&quot;headerlink&quot; title=&quot;1. Windows上安装git2.x&quot;&gt;&lt;/a&gt;1. Windows上安装git2.x&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;转到&lt;a href=&quot;https://git-scm.com/&quot;&gt;Git download page&lt;/a&gt;并根据您的机器配置下载安装程序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;执行安装程序。 如果要在任何备用位置上安装节点，请选择安装路径。 我建议使用默认选项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;验证是否已使用此命令安装了节点。&lt;/p&gt;
  &lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;$ git --version&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;git version 2.17.1.windows.2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="tools" scheme="https://pengtech.net/categories/tools/"/>
    
    <category term="git" scheme="https://pengtech.net/categories/tools/git/"/>
    
    
    <category term="source_control" scheme="https://pengtech.net/tags/source-control/"/>
    
    <category term="Windows" scheme="https://pengtech.net/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>安装ansible</title>
    <link href="https://pengtech.net/ansible/ansible_install.html"/>
    <id>https://pengtech.net/ansible/ansible_install.html</id>
    <published>2022-01-26T16:00:00.000Z</published>
    <updated>2024-10-22T14:58:04.228Z</updated>
    
    
    <summary type="html">&lt;p&gt;Ansible 是一种基于 Python 开发的开源配置和自动化工具，专为类 Unix 系统设计。它使用 SSH 协议与节点进行通信，无需在节点上安装任何客户端。&lt;/p&gt;</summary>
    
    
    
    <category term="devops" scheme="https://pengtech.net/categories/devops/"/>
    
    <category term="ansible" scheme="https://pengtech.net/categories/devops/ansible/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="Ansible" scheme="https://pengtech.net/tags/Ansible/"/>
    
  </entry>
  
  <entry>
    <title>Linux下安装gradle</title>
    <link href="https://pengtech.net/linux/install_gradle_on_linux.html"/>
    <id>https://pengtech.net/linux/install_gradle_on_linux.html</id>
    <published>2022-01-09T16:00:00.000Z</published>
    <updated>2024-08-06T10:14:17.171Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-前言&quot;&gt;&lt;a href=&quot;#1-前言&quot; class=&quot;headerlink&quot; title=&quot;1. 前言&quot;&gt;&lt;/a&gt;1. 前言&lt;/h2&gt;&lt;p&gt;Gradle 是以 Groovy 语言为基础，面向Java应用为主。基于DSL（领域特定语言）语法的自动化构建工具&lt;/p&gt;
&lt;p&gt;下面就描述一下如何在linux环境下安装配置gradle环境.&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="gradle" scheme="https://pengtech.net/tags/gradle/"/>
    
  </entry>
  
  <entry>
    <title>在fedora35上安装virtualbox</title>
    <link href="https://pengtech.net/linux/install_virtualbox_on_fedora35.html"/>
    <id>https://pengtech.net/linux/install_virtualbox_on_fedora35.html</id>
    <published>2022-01-09T16:00:00.000Z</published>
    <updated>2025-07-13T01:03:16.908Z</updated>
    
    
    <summary type="html">&lt;h2 id=&quot;1-安装-virtualBox&quot;&gt;&lt;a href=&quot;#1-安装-virtualBox&quot; class=&quot;headerlink&quot; title=&quot;1. 安装 virtualBox&quot;&gt;&lt;/a&gt;1. 安装 virtualBox&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;首先下载oracle_vbox.asc文件到本地：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;wget -q &lt;a href=&quot;https://www.virtualbox.org/download/oracle_vbox.asc&quot;&gt;https://www.virtualbox.org/download/oracle_vbox.asc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再执行import：&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;built_in&quot;&gt;sudo&lt;/span&gt; rpm --import oracle_vbox.asc&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="virualbox" scheme="https://pengtech.net/tags/virualbox/"/>
    
  </entry>
  
  <entry>
    <title>在 fedora40 上安装 virtualbox</title>
    <link href="https://pengtech.net/linux/install_virtualbox_on_fedora40.html"/>
    <id>https://pengtech.net/linux/install_virtualbox_on_fedora40.html</id>
    <published>2022-01-09T16:00:00.000Z</published>
    <updated>2025-05-09T02:27:55.988Z</updated>
    
    
    <summary type="html">&lt;p&gt;Oracle VirtualBox 是一款功能强大的虚拟化工具，可让您在一台计算机上运行多个操作系统。如果您是 Fedora 用户，并且想要安装 VirtualBox，那么您来对地方了。本指南将指导您在 Fedora Linux 上安装 VirtualBox 的过程。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="virualbox" scheme="https://pengtech.net/tags/virualbox/"/>
    
  </entry>
  
  <entry>
    <title>Fedora linux上安装 Visual Studio Code</title>
    <link href="https://pengtech.net/vscode/how_to_install_vscode_on_fedora.html"/>
    <id>https://pengtech.net/vscode/how_to_install_vscode_on_fedora.html</id>
    <published>2022-01-01T16:00:00.000Z</published>
    <updated>2024-09-07T09:58:49.540Z</updated>
    
    
    <summary type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%E4%BB%8B%E7%BB%8D&quot;&gt;1. 介绍&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%E6%9B%B4%E6%96%B0yum%E6%BA%90&quot;&gt;2. 更新yum源&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%E5%AE%89%E8%A3%85vscode&quot;&gt;3. 安装vscode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%E8%BF%90%E8%A1%8Cvscode&quot;&gt;4. 运行vscode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-vs-code-%E6%9B%B4%E6%96%B0&quot;&gt;5. VS Code 更新&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB&quot;&gt;6. 相关阅读&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;1-介绍&quot;&gt;&lt;a href=&quot;#1-介绍&quot; class=&quot;headerlink&quot; title=&quot;1. 介绍&quot;&gt;&lt;/a&gt;1. 介绍&lt;/h2&gt;&lt;p&gt;Visual Studio Code 简称 VS Code 是微软开发的一款跨平台的源代码编辑器。 它具有内置的调试支持，嵌入式 Git 控件，语法突出显示，代码完成，代码重构和代码片段。&lt;/p&gt;</summary>
    
    
    
    <category term="OS" scheme="https://pengtech.net/categories/OS/"/>
    
    <category term="linux" scheme="https://pengtech.net/categories/OS/linux/"/>
    
    
    <category term="linux" scheme="https://pengtech.net/tags/linux/"/>
    
    <category term="vscode" scheme="https://pengtech.net/tags/vscode/"/>
    
  </entry>
  
</feed>
