Ubuntu 上安装与配置 Android NDK

什么是 Android NDK?

NDK(Native Development Kit) 是 Android 提供的一套开发工具,用来在应用中使用 C/C++ 语言编写、编译和集成本地代码(Native Code)。它的核心作用就是:
让 Android 应用可以调用和运行底层的 C/C++ 代码,而不仅仅是 Java/Kotlin。通俗讲:Android SDK(Android SDK(Software Development Kit)) 是写 Java/Kotlin 层 的;Android NDK 是写 C/C++ 层(Native 层) 的。

在 Linux 上安装 Android NDK 有几种方式,最推荐的方法是使用 Android SDK 的命令行工具 (sdkmanager),因为这样可以保持版本一致、方便更新。

阅读更多

如何修改WordPress最大上传文件大小限制?

网上找了一堆的修改 WordPress 最大上传文件大小限制文章,有些说需要联系 vps 或站点托管管理员修改,最后发现只要在 wordpress 主目录修改添加或修改.user.ini 最有效。无论你的 web 服务器是 nginx 还是 apache 都有效。而且还有以下优势

阅读更多

Wordpress 备份与恢复

作为一个 Wordpress 网站的维护人员,懂得如何备份与恢复 wordpress 网站至关重要。当我们在升级 WordPress 的核心、主题或插件之前对 wordpress 进行备份,这样在升级的过程中遇到因为兼容性问题可能导致的网站崩溃是,不至于手足无措,游刃有余。当我们需要将主机有一个 VPS 提供商移植到到另外一个 VPS 提供商,由一台主机移植到另外一台主机时都需要掌握 wordpress 备份与恢复技巧。当然需要使用到备份与恢复技能的地方还很多。备份不仅是技术操作,更是网站运营的核心保障。通过定期备份,我们可以确保数据的完整性和安全性,避免因意外情况导致的不可逆损失。恢复则是备份的延续,能够快速将网站恢复到正常状态,减少停机时间对用户体验和业务的影响。无论是个人博客还是企业级网站,掌握备份与恢复的技巧都是不可或缺的技能。接下来,我们将详细探讨如何高效地备份和恢复 WordPress 网站,帮助您轻松应对各种挑战。

阅读更多

使用 Emlog 搭建一款多用户博客系统

个人博客早就玩得有点腻了, 独乐乐不如众乐乐,自己也写了一个多用户博客,但是集成在一个比较大的系统里面,一直想把它分拆出来进行,但是一直没有时间和精力去做,考虑到更加没有时间去做推广。花费时间意义又不太大,本着想吃鱼不必去养鱼的想法,一直在寻找一款开源的解决方案。之前试用过 wordpress 的多用户博客,体验下来不太理想。其他的比如 Astro, Strapi 加自定义前端一个比较耗时,体验也不是很好。
今天偶然间发现 emlog,我理想中的功能都有,而且还超过了我的预期。所以花了一点点时间把它安装了一下。官方教程写得不够详细,主要在数据库连接方面写得不够详细,花费了一些时间,最终选择了通用安装方式,从我的角度看比较理想。当然在此教程的基础上修改为 docker 或 docker compose 安装方案也比较容易。这里将安装过程记录下来,以便对有同样需求的人有所帮助。

阅读更多

Vultr 部署 Wordpress 博客

昨天我获得了 Vultr.com 300 美金的试用金,限期 1 个月。

这两天一直在琢磨如何把这 300 美金霍霍完,免得过期浪费。于是把之前一些好玩的东西从家里的服务器迁移到了 Vultr 上,昨天用 Vultr vps 搭建了一个了一个 WEB IDE, 过程记录在这篇文章里Vultr + Code-server 自建 Cloud IDE

Vultr 账号申请以及创建VPS过程参考这篇文章 快速注册 Vultr 账号以及创建 Vultr VPS

今天用 Vultr vps 结合 wordpress 搭建了一个动态博客网站(当然 wordpress 不只是能搭建博客这么简单), 顺便将之前的文章更新了一遍。以下是搭建的全过程。

明天打算将 kubernetes 集群也搬上 Vultr,关注我的博客,鹏叔将利用这波优惠,继续探索一些新花样。

阅读更多

如何调试Angular应用程序

本文演示如何调试 Angular 应用程序。在本文中,我们将讨论。

  • 如何在 VS Code 中调试 Angular 应用程序
  • 如何在 Chrome Dev Tool 中调试 Angular 应用程序
阅读更多

Angular HTTP 拦截器:配置多个HTTP拦截器和 4 个拦截器代码示例

拦截器在 Angular 中用于拦截 HttpRequest/HttpResponse。我们可以使用拦截器来记录 HttpRequest/HttpResponse 日志,或者在将其传递给服务器之前添加其他 HttpRequest 头部信息,以及更改请求主体或更改从服务器收到的响应的格式等。在本文中,我将解释如何使用多个拦截器以及拦截器的 6 种最常见用法(附示例)。

阅读更多

自己动手写一个Angular 日志框架

日志记录是软件行业中相当常见的话题。不幸的是,它在前端世界中并不常见,虽然在后端相关文章中经常提到。

然而,这个主题也适用于前端项目。

在本文中,我们将了解什么是日志记录以及在现代 Angular 应用程序中实现它的各种方法。

阅读更多

Angular async pipe中的异常处理

处理 web 应用程序中的错误对于获得良好的用户体验非常重要。有时会发生异常,每个应用程序都应该涵盖这些情况,以帮助用户了解发生了不好的事情。

许多教程没有显示如何在使用异步管道时处理错误/异常情况。因此,在这篇文章中,我们将研究如何处理这些错误案例的一些技术。

阅读更多

Angular SEO 友好的编码实践

如果您正在使用 Angular 开发网站或应用程序,您很可能希望它在搜索引擎中排名靠前。正如您可能已经读到的,这会带来一些挑战。Angular 是一个著名的前端框架,广泛用于构建单页面应用程序,即 SPA。它们以其流畅、即时的页面转换和出色的用户体验而闻名。但也存在一些缺点,尤其是在 SEO 性能方面。

阅读更多

深入了解 Angular 异步管道

Angular 异步管道(Async pipe)是 Angular 框架中在 HTML 模板中使用 Observables 或 Promises 的方法之一。而且在大多数情况下,我认为这是在 Angular 中处理 Observables 和 Promise 的首选方式。

当您使用异步管道订阅 Observable 或 Promise 时,您将收到 Observable 或 Promise 最后发出的值。

请注意,在 Observable 或 Promise 发出值之前,需要在 HTML 模板中初始化异步管道,否则管道不会接收任何值。

因此,如果异步管道位于 *ngIf 内,并且 Observable 在 ngIf 计算为 true 之前发出一个值,则不会显示任何内容,并且异步管道在发出新值之前不会接收任何值。

使用 Angular 异步管道很简单,并且比订阅 Observables 和 Promise 的一些更标准的方法提供了一些好处。

阅读更多