首页
友情链接
点点滴滴
关于本站
秋码记录
一个游离于山间之上的Java爱好者 | A Java lover living in the mountains
累计撰写
139
篇文章
累计创建
308
个标签
累计创建
46
个分类
栏目
首页
友情链接
点点滴滴
关于本站
搜索
置顶
一套由 Hugo 驱动的博客主题 hugo-theme-kiwi 开源啦
自 秋码记录 没再为云服务器续费那会儿起,便选用了由Hugo驱动的博客主题,来迁移秋码记录 上的所有文章,然而,在众多Hugo博客主题之列,竟找不出一套属于自己想要的风格的主题,故而,也只能暂且套用了一个还算可以的博客主题。 那套没有秋码记录 博客风格的主题,终究是会被替换的,一切都只是时间问题。可没想到的是,暂时选用那套博客主题,竟然暂时了这么久,这一搁就是好几个月了。还记得,秋码记录 云服务器到期是在 6 月 20 日,那是一个盛夏的季节,可如今呢,却是一个寒冬腊月、冷风凌冽、大雪纷飞的残冬时节,我不禁感叹,时间真的过的好快啊!快的让人喘不过气来。 其实,一套拥有 秋码记录 风格的主题,早已在云服务器到期之际,便应运而生了,可为什么一直拖到现如今呢?想必这也是您想问的吧!拖本不是我的本意,奈何有其他事傍身,无暇他顾,故而一拖再拖,拖到这寒冬腊月,窝在室内,身披被子,势必也要写出它来。 hugo-theme-kiwi 名字的缘故 说出来不怕您笑话,我很喜欢吃猕猴桃(也可以叫奇异果),而kiwi便是奇异果的英文,所以就将这套具有 秋码记录 博客风格的主题称为 hugo-theme-kiwi了。 或许您会问,那为什么不叫qiyiguo或mihoutao,也不是不可以,只是个名称而已嘛!何必那么讲究呢!只要自己欢喜,那么起什么样的名称,又有什么关系呢!还管业内人士怎么说,说这个太 low了,然而,我们又何必去在乎那些所谓的”技术专家“呢!说这个不符合命名规范,我们不要去在意别人怎么说,人生苦短,何必将自己束缚的那么紧绷呢!我们应该摒弃掉人生当中的各种条条框框。 扯多了,还是回到为何将这套主题叫hugo-theme-kiwi呢?其实,起初,我本想将这套主题叫hugo-theme-qiucode,然而,这个想法也只在我脑中停留了几秒钟,像是一阵轻风拂过,吹乱了头发,然而,下一秒,我却及时的将头发捋好,仿佛那阵风并为吹过一般。 也许是因为qiucode比kiwi多了几个字符吧!但还是由于qiucode太过于局限了,总抵不过kiwi来得更加宽泛,没有专为某人而设计的主题! hugo-theme-kiwi目下拥有的功能 我们讲完了hugo-theme-kiwi名称的由来,我们也该聊聊它到底有哪些功能?当然,这些才是您浏览本文的最终目的,毕竟,一套好看的hugo主题总是那么吸引人,好比我们走在街上,忽然,迎面走来一位牵手高挑的美女,我想,那一刻,任一男人都会将目光迅速地移到那位美女身上的!当然咯,相貌与身材不及那位美女的其他女人(多是相貌平平),她们对那位美女瞬间把那条街所有男人的心给俘获了,心中难免怨恨,嘴角略微上扬,轻轻地一声“啧”,和那默契的翻白眼(或许,这才是女人与男人见到美女的所表现出的天然之别的情绪) hugo-theme-kiwi V0.01已实现如下功能: 1、首页文章列表展示,以文章缩略图和文章摘要显示(毕竟是图文内容嘛!总得给个文章缩略图吧!) 2、是列表,那它就需要分页,而这套主题摒弃了随着滚动条触底而加载下一页数据(让人感觉有种加载不完数据) 3、文章详情页,当然,与用户交互那是必须的,所以加入了评论,也就是您可以对某篇文章进行评论。 4、文章详情页右侧,自动识别出文章目录,点击目录可以快速到达您所感兴趣的目录下阅读,减少了您宝贵的时间。 5、友情链接,用于添加拥有个人博客网站链接,虽然你我身处天南地北,但能在此处以博客会友建立了(可以称为博友)“友情”。 6、右侧侧边栏,分类和标签各自跳转到各自的页面 还未实现的功能: 1、首页文章搜索 2、时间轴 3、右侧侧边栏,分类与标签跳转页面优化 …… 今夜是平安页,您吃了苹果了吗?我衷心的祝愿您和您家人一生平安,同时,我也祈愿我和我的家人以及我身边的人一生平安!
2023-12-24
[Hugo]
不说是彻底搞懂,至少让你不再惧怕c/c++指针,以及各种奇葩指针变种
经历过C/C++的Coder,说起指针,无不是摇头晃脑的。 然而,没弄懂指针,可以说是无法在C/C++世界里徜徉,毕竟指针可是C/C++的灵魂所在。 由于C/C++的Coder可以通过指针自由玩转内存,从而让外界给C/C++戴上了一顶内存不安全的语言。 相较于现代语言,诸如,Java、golang、python、PHP等这些具有垃圾回收机制的语言来说,C/C++把操控内存的主动权交给了Coder,之所以会被誉为内存不安全的语言,其最大责任便是Coder使用指针不当而引发内存崩溃。 什么是指针呢? 对于初学者而言,到底什么是指针(pointer)呢?我们光从字面上就大抵能猜出个一二,指针,指针,无非就是一个事物指向另一个事物。 说起指针,便无法抛开内存而不谈。 我们知道数据(Data)+ 算法(algorithm)= 程序(program),那么程序的本质就是在操控数据,而内存便是存放数据(这里存放数据,不要与数据库存放的数据混淆了。) 由于变量的类型和作用域所限制,内存可分为:堆(heap)、栈(stack)、全局(global)以及静态存储(static)。 无论是C/C++,抑或是Java等其他高级语言,最终都是要编译成汇编语言,而这种语言它可不管你为变量起了个多么好听的名字,在它那里统统都转变成了内存寻址。 而指针便是存放着某一块的内存地址,可以是某个基础类型变量的地址,也可以是复合类型变量的地址,甚至还可以是指针的地址。 #include <iostream> using namespace std; int main() { int a = 10; int* ptr = &a; //声明一个int类型的指针,并指向变量a的地址 cout << "变量 a 的地址=" << &a << endl; cout << "指针变量 ptr 存放着变量 a 的地址=" << ptr << endl; cout << "通过 * 解引用操作,间接获得变量 a 的值=" << *ptr << endl; *ptr = 15; //通过 * 解引用操作,来修改指针指向的内容。 cout << "通过 * 解引用操作,间接修改变量 a 的值=" << a << endl; return 0; } 数组名就是指针 在初步了解了什么是指针的前提下,我们将继续探讨下一个话题,数组与指针到底有着怎样的联系呢?
2024-11-29
[c/c++]
解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题
在日新月异的信息化下,软件也在跟随着互联网的脚步,逐步推进着各项计划。 近些年,各大语言像是不约而同的都在改进或优化,从而能让programmer在开发效率上有所提升,还使得软件在升级了新版本的program language加持下,运行速度和处理并发的能力得到前所未有的提升。 Java自2014年发布了新的里程碑的Java 8版本号,之后,Oracle变向外界承诺每三年发布一个LTS(Long Time Support)长期支持版本,每年的三月份和九月份都发布一个版本。然而,java社区可不管java发布了多少个新版本,他们依旧是在使用Java 8版本。 直到Java 17的发布,且Oracle更改了协议,或许是促使开发者使用Java 17 LTS,由享誉全球、Java 开发离不开的Spring framework牵头,也就是Spring framework 6.x 及以上版本必须使用Java 17、而Springboot 3.x版本及后续版本也必须是Java 17,因为Srpingboot 3.x依赖的是Spring framework 6.x。 而php5.6.x版本后,也在响应着互联网的潮流,顺应当下瞬息万变的信息化,也在改进着、优化着,或许试图挽回曾今那句PHP是世界上最好的语言!而努力奋进。 即使我们没有使用PHP新版本的特性,只要你的软件运行在新版本的PHP下,性能那跟之前的,可就没的说了。(这里说的不单单只是PHP,像Java、C/C++、Python、golang、C#等) 下载 Apache 对于php7.4及PHP 5版本而言,可以下载Apache历史版本。 Apache 历史版本链接:https://www.apachelounge.com/download/additional/ 。 我们将下载下来的压缩包进行解压,打开其根路径下的conf文件夹,用你常用的IDE编辑httpd.conf文件。 #php5 support LoadModule php5_module "D:/software/php-5.6.30/php5apache2_4.dll" AddHandler application/x-httpd-php .php # configure the path of php ini PHPIniDir "D:/software/php-5.6.30" 有时,你可能还需要开启URL重写模块。 而对于PHP7.X版本,其实是与PHP5.X配置大同小异。 #php7 support LoadModule php7_module "D:/software/php-7.4.8/php7apache2_4.dll" AddHandler application/x-httpd-php .php .html .htm #configure the path to php.ini PHPIniDir "D:/software/php-7.4.8" #startup openssl LoadFile "D:/software/php-7.
2024-11-27
[PHP]
在 Windows8.1 下编译 Chromium (103.0.5060.68 之三)
说在前面的话 或许你在看到文章标题中的windows8.1,难免会让你望而却步。 谁说不是呢!毕竟按chromium官方文档要求,win8.1是达不到编译 chromium高版本的要求的。 但不管怎么样,我的win8.1电脑最终还是编译出了chromium,足以说明win8.1系统编译chromium是可行的。 虽然在编译期间,占有了电脑大量使用时间,好在我都是在白天出门前,电脑开着让它静静地build。 让我庆幸的是,在那漫长的编译过程中,竟没有因errorhuofailed而中断,就连warning也是瞧不见身影。 编译途中出现error或failed总是再所难免`的,但却平添了我们去解决该问题的时间。 下载 chromium 源码 据Chromium官方文档来看,是需要至少100G的空闲磁盘,为此,我查看电脑里的几个盘,最终还是选择了C盘,清理了很大一部分空间出来,也就是你现在看到的下图这般。 新建一个名为chromium的文件夹,名字你可以随意起,这个倒无所谓的! chromium 官方文档是通过fetch chromium来下载代码,但是这种下载是chromium最新代码,还包括历史log,虽然可以带上--no-history参数,它终究还是拉取最新代码。 在当前文件夹内,空白地方鼠标右键,再弹出的选项列表里,选择Git Bash here,再弹出的对话框中输入以下命令。 第一种方案: git clone --depth 100 -b 103.0.5060.68 https://chromium.googlesource.com/chromium/src.git src 直接从chromium 官网拉取源码,下载的速度取决于你的网络。 第二种方案(我采取这种方案,为的是节省网络流量): git clone --depth 100 -b 103.0.5060.68 https://gitee.com/mirrors/chromium.git src # 还原git仓库地址 cd src git remote set-url origin https://chromium.googlesource.com/chromium/src.git cd .. 参数说明: --depth 100 意思是拉取深度为100,这将会拉取一些 log,因为编译脚本会基于仓库的 log 反查版本发布时间。如果这个值太小,可能会查不到,因而报错。所以,建议设为 100 或更大些。或者,直接去掉这个参数,但这样将拉取全部的 log,特别慢。 -b 103.0.5060.68 指定拉取的 tag 版本。 不管你采取了那种方案,在git或cmd总是要设置好网络,至于怎么设置网络,可以查看秋码记录,这里将不再赘述,毕竟后面同步第三方依赖,是必须要用到网络的! 若你的电脑安装过了git工具,可以在Git Bash,输入上述任何一种方案。 假使你电脑没安装过git,那么直接在cmd中,输入上述任何一种方案。 生成 .
2024-09-27
[chromium]
安装 depot_tools 和 Windows 10 SDK 为在Windows下构建基于 chromium 的浏览器(103.0.5060.68 之二)
为何要安装depot_tools 虽然我们在上一篇 Windows构建基于 Chromium 的浏览器之环境准备篇安装 Visual Studio(103.0.5060.68 之一) ,已经在Windows系统安装好了Visual Studio 2019 Community版本。 然而chromium源码工程之庞大,并不是我们平时坐在写字楼里,捣鼓了几个月,勉强符合上级领导的要求而上线的项目,这也就为什么chromium 官方文档里要求你在build里,需要有100G的空闲磁盘的缘故了。 那么,如此巨大的项目,以及如何很好来管理chromium依赖的第三方library呢? 我想这时,肯定会脱口而出,“使用git来管理项目,并且还能有效地处理好第三方library。” 的确,chromium官方就是采用了git来管理这么庞大的项目。 但chromium 源码所依赖的第三方library可不是一两个而已,我们从图中也是可以看出,chromium依赖的第三方library可不是一般的多啊!那是非常的多啊! 我借助了visual studio code这款IDE,在Terminal中输入以下命令,可以计算出当前路径下拥有多少个子文件夹(直到第一级,不会去递归计算哦!) (Get-ChildItem -Directory | Measure-Object).Count 注意:这行命令只在`PowerShell`中生效,这也就为什么我会借助`visual studio code`这款`IDE`的缘故。 或许你有点纳闷,这visual studio code是不是我们在上一篇安装的visual studio呢? 初次捣鼓的你,难免会被这两者给弄混淆了。 这其实也不能全怪你啦!毕竟visual studio系列与visual studio code的应用程序图标是一样,只是颜色差异而已罢了,且它们同是microsoft公司的产品。 对于chromium依赖了这么多第三方library,你总不可能对每个library手动写git submodule吧! 而此时的你可能会想到可以借助python来编写脚本,用来synchronized(同步)chromium第三方library。 为此,chromium 官方提供了一个用于synchronized第三方library的工具,它不仅能synchronized thried_party,而且还能build chromium,那么,它是谁呢? 它就是本文的主角——depot_tools.depot(是仓库的意思)。 安装depot_tools 要想安装depot_tools工具,那么毫无疑问的是从chromium官网上下载depot_tools工具。 下载地址 https://storage.googleapis.com/chrome-infra/depot_tools.zip,将其解压至 任意不包含中文或空格的目录里。 注意:不要使用鼠标拖拽或复制粘贴,否则其中 .git 目录可能不会正常复制过来,请使用 zip 压缩包管理工具直接解压到目标目录。 当我们解压下载下来的depot_tools压缩包后,需要在系统环境变量中添加depot_tools的路径。 注意:如果你的电脑安装了`python`和`git`,请将`depot_tools`路径添加在它们之前,因为`depot_tools`工具里内置了`python`和`git`。 随后,我们需要再设置一个DEPOT_TOOLS_WIN_TOOLCHAIN的变量名,其变量值为0。作用是让 depot_tools 使用本地安装的 Visual Studio 版本(默认情况下,depot_tools 将尝试使用 google 内部版本): 然后cmd一个命令窗口,先是设置网络。 注意:该设置网络只会在当前窗口有效,也就说你每新打开一个新窗口,都需要设置网络`。 # windows set http_proxy=127.
2024-09-22
[chromium]
Windows构建基于 Chromium 的浏览器之环境准备篇安装 Visual Studio(103.0.5060.68 之一)
引言 在信息快速发展的当今,人们似乎对电子设备依赖层度越来越深了,尤其是智能手机的普及,逐渐改变了人们在网上冲浪的方式,除非了是需要在电脑上处理的事情,才会去打开那落满灰尘的电脑。 手机本就是为了能与方便交流沟通而诞生的,虽然现如今,在手机前加了智能两字,并不是说这手机能有多智能,它无非是能像电脑一样,能浏览各大网站,玩游戏,看视频,网上购物等等。 甭管是在电脑上,抑或是在智能手机里,我们想要搜查资料,第一得先打开浏览器应用程序,一般浏览器都默认为用户选定了一个搜索引擎,第二,我们在搜索引擎的输入框打上要查找资料的相关信息,等输入好了,等它个几百毫秒之后,你会看到,搜索引擎为你罗列出了与你在输入框填写文字相关的内容。第三,点击列表中你看似符合你要求的结果。 说起浏览器,可谓是五花八门,王婆卖瓜,自卖自夸。如果你不是一个IT人士,那么你的电脑装上了国内的360浏览器、2345浏览器、hao123浏览器、qq浏览器……(毕竟你作为一个非互联网人,不知道国内的这些流氓软件还可原谅,这其中尤以360浏览器最为离谱,了解过360杀毒的,都知道它自己本身就一个病毒)。 可假使你是一位互联网从业人员,却在电脑里安装了360极速浏览器的话,那么只能说明你是……(自行脑补吧!) 市场份额排在第一的Chrome(身为一个IT人员,对它应该不陌生吧!它可是google公司的开发的浏览器,而且还是基于google开源的chromium V8),你却不用,非要使用国内的360浏览器,可当你电脑安装了360浏览器之后,时不时的会在电脑右下角弹出广告(也就是显示日期和时间的那个角落里弹出一个广告,这是不是很恶心,这就是这些国内浏览器的套路和玩法!) 除了Chrome,你也可以选择其他的浏览器,诸如:Mozilla出品的firefox(火狐),它也是基于Mozilla公司开源的浏览器,microsoft公司的Edge(Edge也是基于chromium开源项目的浏览器)、Apple公司的Safari浏览器,opera浏览器也是基于chromium的,…… 序言 我想要构建一个基于Chromium内核的浏览器由来已久,可为什么直到现如今才着手开始搭建呢? 拖大抵是人类的通病吧,但最主要的莫过于把空闲时间用在了旅游(无非是逛逛商场,虽然鲜少在商场内购物,但我还是比较逛的)、爬爬山去暂时的放空心灵,暂避那喧嚣的都市。 逛商场,目之所及皆是人来人往,有人手里拎着好多东西,与同伴有说有笑着,从我身旁路过;而有些人则是将商场几个层楼,都绕了一圈下来,也没见他进哪家店里买东西,我就是属于这类人,纯粹是来这里感受下商场里人流量的震撼。 信步登山,不单单只是放空自己,远离那喧嚣的都市;而是在贴近大自然,你可以把生活或工作的烦闷给释放出来,甚至你大可吼一声。 不管是购物时的满心欢悦,抑或是爬上山巅坐在石凳,惬意的度过一个下午,但你终究还是要回到现实生活中来,闲暇的时光总是那么短暂的。 那么现在怎么就能把闲暇时间用起来呢?难道不去逛商场了吗?亦不去登山了? 也全是,商场该逛还是会去逛的,山也会去爬,偶尔也会在山巅吼上那么一嗓子的,但是现在,也该做些自己曾说过要做的事情了。 必备准备 在编译chromium源码之前,我们有必要为电脑配置好所需的environment(环境)。 作为一名coder(程序员或码农),深知开发一套软件或是编译知名的开源项目时,系统里总是免不了配置好符合当前开发软件或编译开源软件的必要environment(环境),这就好比,想要开发C/C++软件,那么你的电脑是少不了安装GCC/g++decompiler(编译器),其次你还需有一个对C/C++语法支持且纠错的IDE。 要说哪款IDE广受C/C++程序员的热捧,那么microsoft公司出品的Visual Studio无疑是登上C/C++ IDE宝座的王者,想必是无人敢反驳吧! 还有一个必要的条件,那就是你的电脑能正常访问以下网站(至于怎么可以正常访问呢?却不在本文范畴内,我想你总能找得到)。 1、Chromium官网:https://www.chromium.org/ 2、Chromium git 仓库:https://chromium.googlesource.com/chromium/src.git 3、Chromium 版本分支说明:https://chromiumdash.appspot.com/branches 从chromium 官网文档中可以看出,你的电脑还必须具备以下条件: 1、64 位 Intel电脑,至少 8GB 内存。 强烈建议超过 16GB。 2、NTFS 格式硬盘至少有 100GB 可用磁盘空间。 FAT32 将无法使用,因为某些 Git 包文件大于 4GB。 3、安装相应版本的Visual Studio。 4、Windows 10 或更新版本。 然而我的电脑除了不是Intel外,系统还达不到要求,还是贫民级别的Win8.1。 为此我还特意把电脑磁盘空间清理了下,看看最后哪个盘符下最接近100G的可用空间。 安装Visual Studio 2019 Community 对于Windows系统想要build(构建)chromium,安装Visual Studio版本是有要求的: Chromium 需要 Visual Studio 2017 (>=15.7.2) 来构建,但首选 Visual Studio 2019 (>=16.
2024-09-21
[chromium]
为什么网站加载速度总是那么不尽如人意呢?(网站优化篇)
那些年,但凡一得空,便会去逛逛公园、爬爬山,让那颗浑浊的心灵,能在这大自然中洗涤。 公园树荫下,总是有那么多人,他们或坐于石凳与好友畅聊,或是往那石桌上摆下棋盘,你总能遇到对手。 既然选择放空自己,不管是与好友们闲聊,抑或是棋逢对手,就不要把生活中的不如意或当下的困境说出来,因为这里并不是宣泄消极情绪的好地方。 然而,快节奏生活的当下,鲜有人会在公园逛那么一个下午了。 快节奏的生活,逐渐使人们失去了耐心,同时也让人变得很容易烦躁。 即便是当下人手一部智能手机(更有甚者多达好几部),也不愿花几秒钟来等待访问某个网站,页面却一直处在加载中。用户会毫无犹豫的关掉这个网站。 因为等待让人觉得烦躁,这便是时下快节奏的生活所导致的! 用户评判一个应用(APP)、网站的体验效果好坏,其中很重要的一点便是,产品的响应速度是否能控制在用户接受的范围之内(除非你的应用或网站是知名的,如:阿里云、腾讯云等网站响应速度何止是慢。) 网站优化方案 无论是简单的企业门户网站,还是看似复杂的博客网站,它们总是由html、javascript、css、图片文件等构成的,而呈现在用户眼前,便是通过这些文件拼凑而来的一个页面。 提升服务器带宽 在你访问网站时,网站文件所在的服务器在接受到你的指令后,是要将服务器上相对应的html、javascript文件等响应给你,也就是浏览器请求这些资源(可以说从服务器下载这些资源)。 我们深知,但凡从网络上下载任何文件,它总是跟你的网速有关的,若你带宽是100M的话,那么下载那是很快。当然咯,网站所搭载的服务器带宽若不是很好,网站加载慢那是再所难免的!这便是网站优化的方案之一,关于这一块,是需要花费的成本的。 使用 CDN 有没有那么一种可能,那就是你把服务器的带宽提升上去了,可用户访问你的网站,依旧是页面处于正在加载中。那可能是浏览器访问你的网站,需要请求很多javascript、css文件等资源,虽然用户与你的网站服务器同属在国内,但不免由于地域的缘故。 为了解决用户在不同地域访问你的网站,能以用户所能承受的加载时间范围内,渲染出网站页面出来,那么,这样对用户来说,你的网站算是一个用户体验不错的网站。 我们既然知道了,导致网站加载慢的症结是javascript等资源,那么,我们可以将这些文件托管在距离用户较近区域的节点上,让用户在访问你的网站,不再是请求服务器的javascript等资源,而是从歫用户较近的节点上读取这些文件,从而使得用户所在的区域访问你的网站便快了。 没错,这便是内容分发(CDN)。它不单是在国内每个区域设有节点,还遍布全球,你可以把原先放在服务器上的javascript等文件,迁移到CDN上,这样一来,继而减轻了服务器的”压力“,又能让你的网站在用户眼前加载起来快如闪电。当然咯,这也需要你额外付出成本的! 压缩静态资源 若你不想再额外花钱的话,那么,就要从javascript、css等文件大小上来考虑,相对于网络传输来讲,当然是文件小一些,它自然快于大文件的传输速度了。 虽然,市面上有公共CDN,但那也都是些知名的第三方library,自己的网站,总是离不开自定义的javascript、css等文件。 对于压缩方式可以选择,网上在线压缩,前提是你只定义了那么一两个javascript、css文件。 可若是你为你的网站自定义了好些个javascript、css,那么,在线压缩就不适合了,一来文件多了,处在起来还是比较麻烦的,二来文件一多,处理起这些繁杂的工作,总是让人很是烦躁。 既然在线压缩,处理多个文件,委实使人力不从心,那么,我们可以借助程序来实现文件压缩啊。 Gulp 压缩静态资源 至于gulp是什么呢? https://www.gulpjs.com 介绍说它是自动化构建你的项目,减少你浪费的时间,从而创造出更大的价值。(虽然口气有点大) 首先,你的确保你的电脑是否安装了node.js,如果没有,那么可以去 https://nodejs.com 进行下载安装。安装nodejs还是比较简单的,一路Next。 若你的电脑已安装过nodejs的话,那么,你可以使用以下命令来检查,你电脑安装的nodejs版本。 node --version 在nodejs高版本,都会在你安装了nodejs之后,同时默认的安装了npm(用于管理nodejs的library,就像java的maven、gradle,PHP的composer,golang的module等一样),和npx,同样的话,可以使用以下命令来检查npm、npx的版本。 npm --version npx --version 随后,我们通过以下命令来全局安装gulp。 npm install --global gulp-cli 创建项目 我们可以在一个空文件下,再次新建一个空文件夹,而后通过npm init来初始化项目,这条命令能为我们在当前文件夹下自动生成一个package.json文件。 npm init 之后我们再项目安装gulp依赖,来为项目实现自动化构建。 npm install --save-dev gulp 创建 gulpfile.js文件来压缩静态资源 我们在项目根路径下,新建一个名为gulpfile的javascript文件,文件名必须叫gulpfile这个名称,若你问我为什么?那我只能回答你,那是因为gulp规定的,也就是gulp-cli会读取这个名为gulpfile的javascript文件,若你改成了其它名称,那么gulp-cli是无法找到名为gulpfile`文件的,那么也就无法进行下去了。 在编写gulpfile.js文件之前,我们的项目需要安装几个依赖,它们适用于压缩javascript、css文件的。 npm install --save-dev gulp-uglify npm install --save-dev gulp-minify-css 安装好library后,那么,我们可以对gulpfile.js进行编辑了。 const { src, dest, series } = require('gulp'); const uglify = require('gulp-uglify'); const minifyCss = require("gulp-minify-css"); //在 gulp 里 这就是一个任务 function miniCss () { return src('src/css/*.
2024-09-14
[建站]
海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)
通过前两篇的实践,我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库,一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而,在这请求量与日俱增的情况下,MariaDB数据库显然是在超负债·的工作,压力那不是一般的大。 为了缓解mariaDB数据库的压力,我们可以采取缓存策略,也就是那些请求量比较频繁的数据,可以缓存起来,以便用户再次请求时,不再去读取数据库数据,而是将缓存数据响应给用户,从而减少了因频繁读取数据给数据库带来的压力。 我们可以使用业界、开源界享誉盛名的NoSQL——redis。它是一个K/V 键值对存储,内存型的非关系型数据库,也正是由于它是内存型存储方式,所以它在读写方面快于SSD 型存储的数据库。 下载 redis 由于redis都是通过源码编译进行安装的,故而我们首先得下载redis源码,随后在Linux 发行版进行编译安装。 redis官方地址: https://redis.io/downloads/ 截止发稿前,redis最新版本已经到7.4.x了,然而7.x版本以上是需要商业授权的,这也是众多开源软件走向商业化的途径。 当然咯,redis官方还是会一如既往地向公众开源,但那只是community(社区版),却足以应对日常问题了。 我们将下载下来的tar压缩包,通过SSH工具上传到海外云服务器/VPS对应的目录下。 解压压缩包 首先我们进入到刚刚上传过来的redis压缩包目录下。 使用以下命令进行解压: tar -zxvf redis-6.2.14.tar.gz 在Terminal执行完这行命令后,会在当前目录下多了一个与压缩包同名的文件夹。 编译并安装 redis 由于redis采用C language编写,而想要编译C language的话,是需要专门用来编译的C language 的编译器。 首先,我们先在Terminal输入gcc -v命令,查看当前的Linux 发行版是否安装了gcc,假使你在输入命令后,得到了如下与下图一样的提示信息,那么说明当前的Linux 发行版是没有安装过gcc,你可以从提示信息中看到,有一行apt install gcc的信息,瞬间让你觉得很是贴心,虽然当前Linux 发行版没有gcc环境,但你可以通过apt install gcc来安装gcc。 你可以使用apt update命令来更新你的系统镜像源。 apt update apt install gcc gcc -v 随后,我们再次输入gcc -v命令,terminal便输出了刚刚安装gcc版本信息了。 之后,我们进入redis刚解压的目录内,对redis源码进行编译。 提示:某些`linux 发行版`可能出现以下信息,那么,按照提示信息进行操作即可。 root@XXXX:/usr/local/redis# cd redis-6.2.14/ root@XXXX:/usr/1ocal/redis/redis-6.2.14# make Command 'make' not found, but can be installed with: apt install make apt install make-guile root@XXXX:/usr/1ocal/redis/redis-6.
2024-09-07
[海外云服务器]
海外云服务器安装 MariaDB 10.6.X (Ubuntu 18.04 记录篇二)
MariaDB 的由来(历史) 谈起新秀MariaDB,或许很多人都会感到陌生吧,但若聊起享誉开源界、业界知名的关系型数据库——Mysql,想必混迹于互联网的人们(coder)无不知晓。 其实mariaDB是由Mysql分支出来的一个项目,而且同属于同一个作者(Michael Widenius)。或许你会纳闷,既然Mysql如此优秀,作者而又为什么再次创造出一个新的数据库呢? 谈起mariadb的诞生,那就不得不说Mysql那命运多舛的际遇咯!起初,Mysql以开源的形式瞬间火爆互联网圈,这其中就包括创造出 Java 的公司—— sun,彼时的他们亟需一套小巧且功能强大的数据库,来摆脱其他商业化数据库。故而,sun 公司看准了时机,斥巨资收购了彼时还处在蓬勃发展的Mysql。 时间一晃,来到了2009年,号称全球数据库巨头 Oracle以当时看来是天价的价格收购了sun 公司,作为sun 公司的附庸品,当然也卖身到新雇主,Mysql再次改投公司,并非它所愿,实是无奈之举。 倘若sun 公司没被Oracle收购,或许不会出现mariaDB,毕竟sun 公司创造出了java这一从它诞生以来稳居于年度 program language(编程语言)排行榜前三,毫不夸张的说,它影响了一代的互联网的进程。 可事与愿违,sun 公司终将被oracle 公司收购了。自打oracle公司并购了sun 公司,全球数以千万计的Java Engineer,便开始为Java是否还会开源起了忧虑之心。 果不其然,oracle 公司还是向java开刀了,他们修改了java的一些开源策略,如:商业授权…… 也正源于此,作为Mysql的作者,不得不为mysql的未来而担忧。然而,现在的mysql已经属于Oracle 公司,看似开源出来,但Oracle 公司随时都有可能将它闭源化。可他唯一能做的就是从开源的mysql开出一个分支,构建出一个新的数据库,而它将改进Mysql所出现的问题,虽然mariadb是由mysql作者主导的,但主要还是靠开源社区来贡献代码。 安装前准备 我们知道大多数开源软件,多多少少会使用第三方(开源工具类库)软件包。虽然,你的项目大可不必依赖第三方类库,完全由自己着手编码来实现,那也是没问题,但在编写完这些工具库时,你的项目引入之前,你总得为你所编写的类库做unit test吧! 工具类库代码量不是非常庞大的话,由你自己编写,亲自做unit test,这都没什么,毕竟自己从零开始实现一个与第三方相似的工具类库,给自己带来的不单单是一种炫技感,更多的是成就感、喜悦感。 可倘若工具类库代码行数达到上万,甚至十来万行呢?此时的你,再想从头写起与第三方类库类似的功能,怕是力不从了吧!且不说编写那十来万行的代码所消耗的时间,而是在接下来的事,是需要对它做unit test,将会让你开始怀疑人生。 一个开源项目/产品能赢得越来越多用户的追捧,其中最为重要的一点莫过于产品的迭代更新速度是否快于竞争对手/友商。 为了能使产品在迭代更新上快于他人,产品的研发团队往往会将项目中公共模块抽取出来,形成一个工具类库,或是使用了第三方开源类库,从而降低了花在这上面的时间以及精力4,以便能够全身心的着眼于产品本身。 安装所需的软件包 至于安装mariaDB前,为何要安装software-properties-common这个软件包呢?其实你也是可以不安装这个依赖库,而是直接安装MariaDB,那也是没问题的!只是在安装MariaDB过程中,会出现Error,最终导致无法正常的安装MariaDB,而出现错误的原因却是当前Linux发行版还未安装某个软件包。 为了使MariaDB能够继续的安装下去,你便按照error提示,安装MariaDB所需的第三方类库。 既然是这样的话,我们何不将MariaDB所需的软件包提前安装呢! apt install software-properties-common -y 添加 MariaDB 镜像仓库 无论你当前系统属于哪个Linux 发行版,使用在线安装软件时,总是会在当前系统的镜像库搜寻,以此来下载软件。 当然咯,系统里的镜像仓库的软件版本或许有些旧,毕竟某些软件更新迭代快,以至于Linux 发行版来不及去更新镜像仓库内的软件版本。 故而,我们可以将需要下载哪个版本的MariaDB添加到系统镜像仓库里面。 至于那个MariaDB key 是官方所要求的,你将它下载下来就对咯! apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.ustc.edu.cn/mariadb/repo/10.6/ubuntu bionic main' 安装 mariadb-server 和 mariadb-client 热身的差不多了,是该真正露出本领的时刻了,此处应有振聋发聩的掌声,不绝于耳的那种掌声。
2024-09-04
[海外云服务器]
海外云服务器安装 JDK8 (Ubuntu 18.04 记录篇)
曾几何时,我可是国内云厂商的忠实用户啊。 而今,却不再为云服务器(尤指国内云厂商)续费了,作为我的个人网站 秋码记录 选择了托管在 gitlab.com Pages服务上。 国内云厂商对新老用户持有两种截然不同的价格,致使众多用户在云服务到期之际,便毅然决然地弃用了这家云厂商。 国内云厂商对同一配置、同一规格、同一型号、同一时限……的云产品来说,新用户总是能得到低于市场同类产品的价格,这便是国内云厂商让利于新用户,以求得在用户量上碾压行业内竞争对手。 反观老用户,通常老用户是指,但凡在国内云厂商某个平台购买了云产品,那么,你的身份便由新用户转换为老用户了(美其名曰:会员),那么,彼时的你是再也无法享受只专供于新用户的优惠云产品咯。而这样的规则,却不局限于互联网这个圈子,可以说,整个国内各行各业都在运用这条规则,小到街边门店,大到商场酒楼……,随处可见它的身影。 云服务器即将到期了,作为老用户是很少会选择续费的(除了特别有钱的企业或个人),那是对该云服务器续费价格望而却步,或有转场它处继续前行下去,也是大有人在,几轮下来,国内各大云厂商你都混了个脸熟,这也就是近几年来国内各大云厂商的新用户增长量有所放缓的缘故。 新用户增长量持续放缓,那说明了云产品卖不出去了,因为国内云厂商销售云产品很大程度上是靠新用户,虽然从新用户身上得到的利益明显少于老用户,但也总比老用户不再卖他家的云产品强,正所谓,苍蝇再小,它也有肉。 国内云厂商的云产品卖不出去了,不单单是市场饱和了,还有更多深层次问题(我相信你是懂得,倘若你不懂的话,那就忽略它。其实,懂得太多,它也是一种烦恼!)。 国内云厂商的窘迫该如何有效的决解呢?其实我不知道,但从年初 罗永浩直播卖阿里云服务,揭秘中国云计算走向衰落的真相 便能瞧出国内云厂商的穷途末路(虽然有点夸张的成分)。 在说完国内云厂商的那摊破事,也该聊聊本文的标题海外云服务/VPS了。或许,你会问,“你不是说了,qiucode.cn 租用的国内云服务器不再续费了吗?难不成国外的云服务器/VPS就很便宜了,就算国外云服务器/VPS便宜,但在国内访问起来,那犹如蜗牛爬树——何时能爬上啊?” “qiucode.cn 现在既没有选择国内云服务器,也没有改用国外云服务器/VPS产品,依旧托管于 gitlab.com pages,而标题中的海外云服务,那是一客户租用的,我搭建了Linux·基础环境,在这里只是纯粹做个记录而已罢了!” 将JDK 上传到服务器 首先我们先到oracle官网下载JDK8,至于该怎么下载,可以浏览 虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇),这里就不再赘述。 你可以选择惯用的SSH工具,进行操作。 虽然,也是可以在云服务器内使用wget命令来直接下载JDK的tar压缩包文件,究其原因,无非是云服务器带宽所限。 我们将下载下来的JDK tar压缩包,通过SSH工具,上传到云服务器。 我们可以将中间件及基础环境同一放在/usr/local/目录下。 cd /usr/local mkdir java 对 tar 压缩包进行解压 等待JDK压缩包上传成功后,我们便要对压缩包进行解压。 tar -zxvf jdk-8u421-linux-x64.tar.gz 当压缩包解压好了之后,我们要对解压后的文件夹进行重命名,那是因为,tar命令默认将压缩包文件名作为解压后的目录名,除非你带了参数-O 目录名称。 可以使用mv命令对目录名,进行重命名。 mv jdk-8u421-linux-x64 jdk-8u421 配置环境变量 配置JDK环境变量犹如一道魔咒,始终盘旋在即将踏入Java Engineer的上空,给他们带去了无法抹去的记忆。 我们打开/etc/profile文件,在其末尾追加上以下内容。 `JAVA_HOME`是你`JDK`解压缩的文件路径(需根据实际情况,做出相应修改)。 export JAVA_HOME=/usr/local/java/jdk1.8.0_421 export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 若你使用的是像我这样的可视化编辑器,那么你可以直接按住键盘上的Ctrl + s组合键,进行保存。 可假使你使用的是Terminal Command的话,如:vi、vim等命令,那么你需先按住键盘上的Esc,之后输入:wq,在按Enter键即可。 配置好了JDK环境变量后,先是让/etc/profile文件生效。
2024-09-01
[海外云服务器]
1
2
...
14