您正在查看:Noisky 发布的文章

搭建softEther,组建虚拟局域网,和基友畅玩经典单机~

受疫情影响,在家实在闲着没事,就开始瞎折腾了... 笑眼.png
主流游戏玩腻了,就想找着基友来重温经典,打打红警,玩玩cs...,感受一下全球苏维埃的成就感 滑稽.png
111.jpg
可是全国人民都在家闲着,各大对战平台都是爆满状态,浩方、游侠、红警战网.. 都非常火爆,服务器负载大了,就会就现掉线,严重影响游戏体验... 不高兴.png
索性就利用闲置的服务器,搭建一个虚拟局域网,都是自己人玩,又快又稳定~ 滑稽.png

经各方查阅资料,最终决定选用 softEther v*n 来组建虚拟局域网
官方网站:https://www.softether.org/

原理:在服务器 CentOS7 系统下配置 softEther 服务端,使用DNSmasq进行DHCP地址分配,然后通过 Win10 自带的v*n功能连接到搭建好的服务器,实现虚拟局域网从而联机打游戏~


下面开始安装和配置:

- 阅读剩余部分 -

Github中提交Commit时使用GPG进行加密

概述

GPG 是一种加密算法,在 Git 中提交 Commit 时可以使用 GPG 进行加密,来保证提交的 Commit 没有被篡改,具体体现在 Github 提交的时候会有一个 verified 的标志。
QQ截图20200121153639.png

这里我是在 Windows 下操作来生成 GPG 密钥的,其他系统环境下操作可能会有不同

准备工作

生成GPG密钥之前,可以检查当前电脑是否存在有 GPG 密钥

1 打开 Git Bash
2 使用 gpg --list-secret-keys --keyid-format LONG 命令列出同时具有公共密钥和私有密钥的GPG密钥。签名提交或标记需要私钥。

gpg --list-secret-keys --keyid-format LONG

3 检查命令输出以查看是否具有 GPG 密钥
如果没有GPG密钥对,则生成一个新的GPG密钥
2020-01-21T08:02:03.png

- 阅读剩余部分 -

饭饭's 随机图片 Api → Random-Image-Api

饭饭's 随机图片 Api → Random-Image-Api

一个能够获取随机图片的 Api,基于 Spring Boot 构建

Demo:https://api.ffis.me/imgApi/index.html
Github: https://github.com/noisky/Random-Image-Api

可读取本地图片列表的地址,并提供随机访问服务,可配置域名白名单访问

2020-01-07T16:01:56.png

项目说明

程序启动的时候会自动加载 项目路径/list 文件夹下的所有列表文件;

图片列表文件:

  • 提供访问路径为文件名的随机图片服务
  • 文件命名格式 xxx.txt 必须为 .txt 结尾,每行一个图片url

域名白名单列表文件:

  • 会开启域名白名单访问,只允许列表中的域名进行接口调用
  • 命名只能为 domains.txt,每行一个域名,支持泛域名

    • 例如输入 test.com ,则会允许所有 test.com 结尾的域名访问
  • 若域名列表文件不存在或者文件为空,则会关闭域名白名单服务,任何域名都可以进行调用。
更改列表文件后,刷新图片缓存即可生效。

编译运行

# 拉取项目
git clone https://github.com/noisky/Random-Image-Api.git
# 使用 maven 打包
mvn clean package
cd target && java -jar Random-Image-Api-1.0.0.jar
# 将写好的图片列表文件放入 list 文件夹,刷新缓存即可正常访问
http://localhost:9090/flush
# 默认访问端口 9090
http://localhost:9090/random/{图片列表文件名}
# 主页地址
http://localhost:9090/index.html

接口调用:

1、获取随机图片:

  • 请求方式:GET请求

    • 请求地址:/random/{images}
    • {images} 则对应为 images.txt 文件里面的所有图片地址

2、获取每日图片:

  • 请求方式:GET请求

    • 请求地址:/today/{images}
    • {images} 则对应为 images.txt 文件里面的所有图片地址

3、刷新图片缓存:

  • 请求方式:GET请求

    • 请求地址:/flush

已完成功能:

  • 获取每日图片
  • 读取本地列表的图片地址,提供随机访问
  • 域名白名单访问,未授权的域名访问会跳转到未授权页面

TODO:

  • 提供本地图片的随机访问
  • 接口调用统计

Centos下使用shell脚本来批量管理Spring Boot Api服务

前言

最近在部署Spring Boot构建的Api
因为有多个jar要启动,启动的参数也都不一样 不高兴.png
搞的我都蛋疼了,只好研究下使用shell脚本来一键管理了
花了两个小时,终于把脚本撸出来了 太开心.png
注意如果在windows下创建shell脚本文件,注意文档格式要转换为unix才能在linux中运行
推荐直接在linux中直接使用vi创建shell脚本文件

创建脚本

在指定路径下运行vi startAll.sh来创建脚本文件
参考如下代码:

- 阅读剩余部分 -

念念不忘,必有回响,心仪的域名终于注册成功辣~

域名注册通知.png
前些天看中了一个域名,是由我的名字简写的域名 fanhy.com,正处于赎回期,原注册者也不打算赎回了 太开心.png
于是就写了个监控域名注册的Api来监控该域名,等域名可以注册了就给我发送邮件通知 小乖.png
传送门:自己动手造了个监控域名可否注册的Api → CheckDomain
经过半个多月的等待,终于在今日凌晨,该域名终于被注册局删除 乖.png

注册域名邮件截图.png
由于我早就推算好时间,今天睡觉的时候就给邮件通知加上了铃声通知,于是凌晨3点左右就收到了域名可以注册的邮件
梦中惊醒,打开早就准备好的注册页面,下单,付款一气呵成,域名终于到手! 滑稽.png
开心~~~
哈哈.png 哈哈.png 哈哈.png

不过注册后了才发现是一时冲动,手上已经有两个域名了,拿这个域名干什么呢? 不高兴.png
不管这么多了,先拿去备案再说吧~
网站备案期间需要暂时关闭留言功能...
域名备案.png
捂嘴笑.png

博客的友情链接从首页移至内页啦

由于友情链接日益增多已经影响阅读,风格也过于单调 小乖.png
所以就抽了个时间把友链从首页移动到内页
这样就能给友链加特效啦 太开心.png
友链的风格设计 参考了 基本照抄了:https://logi.ml/

添加了头像的展示,效果如下:
QQ截图20191212235426 (1).png

没有头像的小伙伴们还不快给我留言添加头像~~~ 乖.png

解决Spring项目打成Jar包后Freemarker找不到模板的问题

昨天改完CheckDomain的bug后,打包jar准备部署到服务器上,本地测试都正常,但是扔到服务器上却发不了邮件了... 不高兴.png

经过多次测试发现,freemarker在jar包中无法使用类加载器获取resourse目录下的templates文件 泪.png

出现的问题代码如下:(本地测试正常,打包jar后无法获取模板)

/**
 * 邮件模板静态化
 *
 * @param mailTemplateModel 模板数据模型
 * @return 加上数据后的静态化模板
 */
@Override
public String getMailHtml(MailTemplateModel mailTemplateModel) {
    try {
        //创建配置类
        Configuration configuration = new Configuration(Configuration.getVersion());
        //设置模板路径
        String classpath = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates"));
        //设置字符集
        configuration.setDefaultEncoding("utf-8");
        //加载模板
        Template template = configuration.getTemplate("mailTemplate.ftl");
        //模板静态化并返回
        return FreeMarkerTemplateUtils.processTemplateIntoString(template, mailTemplateModel);
    } catch (Exception e) {
        e.printStackTrace();
        log.error("模板静态化异常", e);
        return null;
    }
}

修改后的代码:(打包jar后正常获取模板)

- 阅读剩余部分 -

自己动手造了个监控域名可否注册的Api → CheckDomain

前两天我看中了一个域名处于即将删除的状态 委屈.png ,想着如果能监控域名能注册了给我发邮件就好了,于是就花了一晚上撸出了 CheckDomain 来帮我监控这个域名 太开心.png

whois查询页面
2019-12-07T15:13:37.png

CheckDomain 是一个用来检查域名是否能注册的 Api,基于 Spring Boot 构建,使用了阿里云域名查询 Api;

可实现对域名状态查询,可注册监控等,并在可以注册的时候发送邮件通知。

也算是自己动手做的第一个完整的项目吧 笑眼.png
既然有了兴趣点,所以就准备把所学的知识给串一下,能用上的都用上,也算是学以致用吧~ 捂嘴笑.png

Github:https://github.com/noisky/CheckDomain
Demo:https://whois.ffis.me

接口调用:

1、查看域名状态:

  • 请求方式:GET请求

    • 请求地址:/domain/{name}
    • 参数说明:

      • {name}: 查询的域名

2、查看域名状态并在可注册时发送邮件通知:

1)请求方式:GET请求

  • 请求地址:/domain/{name}/{email}/{querykey}
  • 参数说明:

    • {name}: 查询的域名
    • {email}: 接受通知的邮箱地址
    • querykey: 查询密码,在 yml 配置文件中设置

2)请求方式:POST请求

  • 请求地址:/domain/{name}
  • 参数说明:

    • {name}: 查询的域名
    • POST 提交的表单:

      • email: 接受通知的邮箱地址

      • querykey: 查询密码,在 yml 配置文件中设置
可以使用第三方监控(如阿里云监控)来请求 Api 来达到监控域名注册状态

现在已经实现了基本功能:

  • 检查域名是否能注册
  • 监控域名状态,如果可以注册,发送邮件通知
  • 使用 Freemarker 实现邮件模板的静态化
  • 使用 Logback 记录系统运行日志
  • 实现域名的 whois 信息查询(参考了 tammypi 的 whoisutil 工具类)
  • 已完成编写前端页面,现在可以直接在页面上查询 whois 信息了

TODO:

  • 限制接口的调用频率
  • 统计并记录接口的调用次数,调用耗时等信息

...

- 阅读剩余部分 -

记一次解决RestTemplate无法解析api返回的xml数据问题

最近看上了个本命域名,因为过期即将被注册局删除,于是就自己写了个api接口用来监控这个域名,等可以注册了就直接发邮件通知我 吐舌.png

其中用到了阿里云域名的一个api,准备直接使用RestTemplate去请求这个接口,并将结果自动封装为Map集合方便进行进一步处理。

等到框架搭好,代码写完,以为万事大吉的时候,程序却给我来了个惊喜: 疑问.png
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [interface java.util.Map] and content type [text/plain;charset=GBK]

很明显,上面提示接口返回的是text/plain文本类型数据,RestTemplate解析数据的时候没有找到合适的解析器,就抛了异常。
WTF? what.png 我看阿里云的接口明明返回的是xml的数据啊......仔细再定睛一看,类型还真的是文本类型...

- 阅读剩余部分 -

Docker的基本操作与使用

1 Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻
量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互
之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • Docker应用场景

    • Web应用的自动化打包和发布
    • 自动化测试和持续集成、发布
    • 在服务型环境中部署和调整数据库或其他的后台应用
  • 简单的说:使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。

Docker01.jpg

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计
中,唯一不同的是:集装箱运输货物,而Docker运输软件。

- 阅读剩余部分 -

  1. 1
  2. 2
  3. 3
  4. 4
  5. ...
  6. 17