Spring Boot 【2】 使用 Thymeleaf 模板引擎

现在网站大致就是两种方案,服务器端渲染HTML或者单页面应用+API的方式。

服务器端渲染以前有 JSP 这样的方案,但由于 JSP 中要夹杂很多的 Java 代码,和前端开发一起工作的时候会前端可能会看不懂 JSP 的页面,不知道哪些部分可以修改。而使用 Thymeleaf 来进行开发的话,它的语法就和现在的前端框架很接近。而且 Thymeleaf 的 HTML 文件脱离了我们 Java 后端的数据,依然可以在浏览器中看到页面的效果,对前端开发比较友好。

当然,如果写习惯了 JSP,也没有使用过一些常见的前端框架的话,可能就对 Thymeleaf 的语法比较陌生了。

 

开始使用

我们这个项目是 Maven 构建的,所以先在 pom.xml 中添加所需要的依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

 

保存之后,IntelliJ 会提示我们是否导入我们添加的依赖,点击 Enable Auto-Import ,以后我们修改了 pom.xml 中的依赖它就会自动开始下载了。

打开 resources 下的 application.properties ,在里面添加一行

spring.thymeleaf.cache=false

这样子可以关闭掉 Thymeleaf 的缓存,target 中的文件改变之后不需要重启 Spring Boot 应用(Tomcat)就可以刷新看到变化。

 

打开之前创建的 HomeController ,然后我们把 index 方法改成这样

@GetMapping("/")
public String index(Model model) {
    model.addAttribute("message", "Hello Thymeleaf");
    return "index";
}

Read More

Spring Boot 【1】 开始你的第一个 Spring Boot 项目

序言

这大概会是写成一个很长的系列。将会使用 Spring Boot、Spring Data JPA、Spring Secutiry、 Thymeleaf、 Bootstrap 等制作一个包括支持数据库增删查改、用户注册登录等功能的完整网站,所以可能会严重拖更。

这个系列开始于 2019年10月18日 ,尽可能使用当前新的版本的来讲解,所以将基于 Spring Boot 2.2.0。

其他的一些基础信息:使用 Maven 、 IntelliJ IDEA 、 MariaDB(MySQL)

 

使用 Spring Initializer 开始你的项目

使用最方便的 Spring Initializer 来初始化我们的项目,链接是:

https://start.spring.io

spring-initializer

上面就是 Spring Initializer 的界面。选择好 Maven 项目、 Java 、Spring Boot 的版本号,此处选择 2.2.0

填写 Group 和 Artifact ,接下来就可以在下面添加依赖了。

这一篇只是最基础的部分,所以只需要添加 Spring Web 和 Spring Boot DevTools 两个依赖就可以了。输入名字即可搜索添加。

 

添加完成之后点击 Generate 就可以获得一个 zip 文件,里面就是项目文件了。

Read More

为 Imagick 添加 webp 支持 (Ubuntu 16.04)

Ubuntu 16.04 源里面安装的 Imagick 不支持 webp ,所以得自己编译一个。

编译 ImageMagick

首先下载源码

wget https://imagemagick.org/download/ImageMagick.tar.gz

解压并打开

tar xvzf ImageMagick.tar.gz
cd ImageMagick-7.0.8

打开webp支持
./configure --with-webp=yes

编译

make
make install

更新一下lib的绑定
ldconfig /usr/local/lib

运行一下可以发现已经有 WebP 的支持了
convert -list format | grep WebP

 

编译 PHP 模块

首先要有phpize,下面的命令可以安装

sudo apt-get install php7.0-dev

 

克隆下面这个git仓库,编译安装

git clone https://github.com/mkoppanen/imagick.git imagick
cd miagick
./configure
make
make install

 

文件编译在当前目录的 modules 下,会有提示 Libraries have been installed in:

修改/etc/php/7.0/fpm/php.ini,添加一行

extension=/root/imagick/modules/imagick.so

 

重启一下 php 和 nginx 的服务

systemctl restart php7.0-fpm
systemctl restart nginx

此时已经完成,Imgick 有 WebP 的支持了

中国版 节奏过山车 :音炫轨道 试玩

听闻两台场测的 GC 拉回了广州,周末立刻就去试玩了。

中国版也采用的是音炫轨道RYTHMVADERS 这个标题。

由于这两台机之前已经有展出大半个月了,所以上方按键已经开始不灵敏了,长按过程中轻轻推动助力器会导致按键接触不良,需要经常维护才行了。

上手之后,感觉这个中国版还是很有诚意的。虽然现在测试阶段并未有广域网联网服务,但店内联网功能可以正常使用。

最重要的是,这个游戏现有的三个领航员都进行了完整的中文配音,而且不是崩掉的配音,感觉已经到了日语原配的级别了。

我录了一个一局游戏的流程视频,包括新手教程,里面也是有配音的。

http://www.bilibili.com/video/av45947546
按键坏坏的,录像的时候都 Fail 了。

还有一点是这个中国版框体采用的是 TAiTO Type X4 基板,性能比日版还要高(然而这游戏用不到)。实际上游玩中的操作反应也十分快,几乎没有任何加载等待的时间就进入游戏了。

在玩游戏的时候刚好见到了华立的 STAFF ,GC 之后应该是会配上二维码登录的功能的。顺便提到了一下 maimai DX 的事情,据说还要看日方那边的安排,最早也要到年底了。

附带一个国版目前拥有的歌单:

http://www.bilibili.com/video/av45966678

 

2019-05-01更新

华立偷偷把系统版本号从

1.1001更新到了1.1002,但具体的更新内容看不出来。

在 OpenWrt 上使用 华为 E5573s

华为 E5573s 可能是国内卖得最火的 随身WiFi 了。不过它本身不能刷 OpenWrt,所以只能把他插在一个 OpenWrt 的路由器上。

这也是 OpenWrt 上装4G模块最方便的方法了。

有的人可能会用 OpenWrt 去桥接 E5573s 的 WiFi,不过无线的连接怎么都没有有线来得稳定。

如果有人试过把 E5573s 的 USB 连接到电脑上,会发现可以直接当作一个 USB 4G 网卡来用,那么插在 OpenWrt 上也是可以的。

 

首先在 OpenWrt 上查找到了 这篇wiki《Use RNDIS USB Dongle for WAN connection》

简单的安装了下面这两个软件包之后,发现并不能行。

kmod-usb-net-rndis usb-modeswitch

查看 dmesg,发现识别到了 usb 设备,但是出现的是存储设备,就是电脑上会显示的那个驱动盘。

Mon Jan 14 11:06:52 2019 kern.info kernel: [  431.813541] usb 1-2: new high-speed USB device number 2 using xhci-mtk
Mon Jan 14 11:06:52 2019 kern.info kernel: [  431.996638] usb-storage 1-2:1.0: USB Mass Storage device detected
Mon Jan 14 11:06:52 2019 kern.info kernel: [  432.003928] scsi host0: usb-storage 1-2:1.0
Mon Jan 14 11:06:53 2019 kern.notice kernel: [  433.014461] scsi 0:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2

 

我之前就知道华为的随身WiFi还需要再安装一个 kmod-usb-net-huawei-cdc-ncm 的软件包才能正常工作,但是我装上重新插拔发现日志还是和上面的一样,只出现了驱动盘。

想了想应该是 E5573s 认为主机端的驱动没装好,只显示出驱动分区,但还缺什么才能让它识别出来呢?

于是上网搜索了一下,找到了 这一篇文章

按照文中所说的,把以下所有的软件包都装上了。

opkg install kmod-usb-net-rndis comgt-ncm kmod-usb-net-huawei-cdc-ncm kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi kmod-usb-net-cdc-mbim umbim

 

装好之后重新插拔,这次能够重新识别到了。

 

观察日志中,随身WiFi 注册在了 eth1 上,于是去 OpenWrt 上添加 eth1 的接口即可。

 

很奇怪的是,以前只要有 huawei-cdc-ncm 就可以让 E5573s 识别出来了,但现在要装更多的软件包才能正常识别。

而且以前这个设备是注册在 usb0 接口上的,现在又跑到了 eth1 上,不知道是哪里变了。

DANCERUSH STARDOM 舞律炫步 在中国

记录用。为了方便查看,改为时间倒序。

2019年4月

这个月在各地机厅举办了多个小型比赛,还有北京展的比赛。

4月30日公布了新的会员制度,版本号更新为:REC:C:A:A:2019042500

实际上的更新是从5月1日开始的,主要的更新内容有:

实装新会员制度、歌曲解禁系统。

新会员制度修改为两个档次:

基本会员 VIP会员
费用 15 E-am点/月

60 E-am点/半年

30 E-am点/月

120 E-am点/半年

曲库 58首(隐藏20首) 79首(隐藏26首)
解锁消费 2 E-am点/次 1 E-am点/次

其中解锁消费的部分和新实装的歌曲解禁系统有关。

游玩上锁的歌曲需要消费额外的点数,不同会员的价格不同。

当上锁歌曲游玩10次超过80分以上,即可解锁到日常曲库,无需再额外消费。

EXTRA STAGE曲目也是同样,但需要10次90分以上可以解锁到日常曲库。

 

其次是每局可游玩的STAGE数的修改

会员(包括基本会员和VIP会员)都为2+1首,游客为2首。

2+1的含义是,前两首保底曲目,当前两首总分相加达到180分以后,可以游玩第三首。

此时第三首会出现游玩普通曲目还是EXTRA STAGE专用曲目的选项,游玩EX曲需要消耗对应解锁点数。并且EX曲目的锁血机制已经取消,掉10个的话会STAGE FAIL。

 

目前,基本会员暂时没有补差价升级VIP会员的功能。

关于老会员的补偿方案还未公布。

 

以及目前我玩到的几个BUG

基础会员在普通难度下看不到待解禁列表,只显示在简单中。

部分歌曲无法显示解锁进度(目前服务端已经重新统计完的样子)

 

顺便吐槽一句,直到这个版本,DRS还是使用U盘升级的方法。

2019年3月

版本更新为:REC:C:A:A:2019032200
本次更新内容主要是修改了歌曲数,从1+1改为了2+1

关于本月主要发生的事情是KONAMI日本方面过来中国做调研。在51区那边和几个群友大佬面对面聊了一下,主要还是价格调整方面的事情。

顺便这次来的人里面有4c,谈判的大佬还合照了。

第二天在另一边发生了一些滑稽的事情就不说了。

2019年2月

2月1日很多地方都装好开机了。

版本更新为:REC:C:A:A:2019013001

广州在停机坪有台,和SDVX一起,是2币1局。

然后正佳也买了台,设置4币1局。

能扫码登录,有部分版权曲。

这里具体解释一下 ,初始的这个版本,有30、50、70元三个级别的月费会员。

但只有70元的会员才能进入EXTRA STAGE。

然后机台的stage数固定为1,在test menu中无相关设置。

也就是说只投币,只能玩一首歌。如果开了70元的会员,才能玩两首歌。

在加上开了会员之后,血条不掉,意味着70元会员保底二曲。

那么机台定价如果是4币1局的话,以1元1币计算,玩18局就会值回会员价格。

但对于轻度游戏的玩家,一个月可能玩不到一两次来计算,这个VIP制度很不友好。如果一个月玩一两次,但每个月都要充70块,那是很不值的,毕竟机台本身还要投币呢。但是如果没有会员,有些歌曲只在EXTRA STAGE里面,你就无法游玩这些歌曲。

 

这里由于各地机器上线的时间刚好是19年春节,所以不管玩家怎么吐槽,世宇方面也放假了,没法进行更新以及和K社谈判。

对了,这里再提一下,这个会员制度定价是KONAMI方面决定的,不是世宇决定的。以K社以往的那种态度来看,不是一群玩家过去一直反馈,它肯定是不会轻易修改定价的。

 

新机器目前也有一些感应上的问题,经常会误触发导致识别出多个踩踏点。由于地板使用的是红外触摸技术,所以只能多擦干净四周和中间部分,实在飘得太厉害,就只能重启机器让屏幕自动校准了。

2019年1月

DRS应该也会采用微信登陆的方式。

目前确认会有 Extra Stage ,据说使用 点数 (当然不是 PASELI ),而不是加投币的方式。

目前全国第一批货已发出,机台版本号为

REC:C:A:A:2018121900

开机需要联网,不能离线稼动。

除了上海其他地方都在进行等配件大活动。

2018年12月

2018-12-11公布官方售价。预计将于2019年1月2月开始铺货。

世宇代理中国版本,约10月左右宣布。

2018年11月

2018 CGL正式发布。

2018 中山游博会展出。

kX Driver 的连线教程

虽然 kX 驱动已经是上古产物了,不过现在 Win10 还能用,刚好声卡也在,就先用着。研究了半天,总算可以知道各个部分的意思了。

kX DSP

FXBus

FXBus 就是电脑内部的音频输出,比如说系统内的声卡选择,ASIO音频输出等等。

在我的电脑上面,输出是这样子的。

也就是说,往这几个音频设备里面播放,会对应从FXBus的2~7里面输出。

本来我这里名称为 “Main Out 2/3” 的设备应该是 0/1 从 FXBus 0 和 1 输出的,但不知道为什么也是走 2/3 输出,和另一个 2/3 都从 FXBus 2/3 输出。改了 Router 里的通道也没用,估计是 Win10 上有的 bug。我这里只有 ASIO 的 0/1 通道会走 FXBus 0/1。然而奇怪的事情是当 ASIO 占用了 0/1 通道之后,那个 Main Out 设备会提示被占用,它明明走的是 2/3 ???

如果往最顶上的那个 SPDIF/AC3 Output 输出音频,将会按照声道从 FXBus 2~7 对应输出。

如果要用 AC3 输出设备的话要进去修改支持的格式,只能选 Dolby Digital 。

OpenWrt 多WAN口以及扩展WAN口详细配置教程

本文适用于:

1.我想把 OpenWrt 的 LAN 口当作 WAN 口用

2.路由器上的 WAN 口也不够用了,我要外接交换机扩展 WAN 口

OpenWrt的交换机配置

首先打开 LuCI 中的交换机页面。

首先,你可能会听说过路由器有外挂交换机等等的说法。如上图所示的那样子,下面默认有两个 VLAN ,而且 WAN 口在单独不同的一个 VLAN 中时,就是外挂交换机的路由器。

简单比喻就是路由器的 CPU (或者说 SoC ) 上只有一个网络端口,路由器后面的这么多个端口都是靠连接到另一个交换机芯片分出来的网口。

你还可以用别的方法确认路由器的类型。像这张图的路由器,接口名称是 eth0 和 eth1 的就不是外挂交换机的,如果接口名是 eth0.1 eth0.2 这样子的就是外挂交换机的路由器。

在 OpenWrt 中,ethX.Y 的 X 代表物理端口,Y 代表这个端口的 VLAN。

实际上 eth0 eth1 这种接口名称的也是有外挂交换机的,意思是 SoC 提供了两个以太网口,一个是直连到 WAN 口,四个 LAN 口也是从 SoC 的第二个以太网口中分出来的。所有口都是直连 SoC 的路由器我就还没见过。。。 Read More

谈谈街机游戏存储卡片

在街机市场中有着各种各样的卡片,e-Amusement Pass、Aime 、BANA PASSPORT以及部分机台的专用卡片。后来 Amusement IC 出现了,想要统一三大家的储存卡片,那么使用各种不同标准的厂商怎么统一到一张卡片上了呢?

简单来说,他们三家统一到了 Felica 标准上。Felica 标准主要采用在日本的交通卡以及各种门卡,手机钱包,还有八达通上面。国内的主流是 Mifare 卡,也是从交通卡到门禁卡各种都有。

 

Read More

压缩和整理数字电视录像文件手记

数字电视录像的ts文件太乱,打算整理一下。现在记录一下使用到的一些脚本。

由于电视节目时间长,不能纯 CPU 跑 x264,否则转跟不上文件生成的速度了。

这个是使用 N 卡硬解硬压,硬件反交错,压入字幕的脚本:

D:\ffmpeg-20181116-fc94e97-win64-static\bin\ffmpeg.exe -c:v h264_cuvid -deint 2 -drop_second_field 1 -i "%~dp1%~nx1" -c:v h264_nvenc -preset medium -rc vbr -cq 10 -b:v 8M -minrate 500k -maxrate 15M -vsync cfr  -filter_complex [0][0:s:0]overlay=shortest=1,aresample=async=1000 -map  -map 0:a  -c:a aac -s 1920*1080 -aspect 16:9 -f matroska "%~dp1%~nx12.mkv"

pause

这个是使用 Intel QSV 硬压,软件解码,压入字幕的脚本

D:\ffmpeg-20181116-fc94e97-win64-static\bin\ffmpeg.exe  -y -rtbufsize 256MB -i "%~dp1%~nx1" -filter_complex idet,yadif=0:deint=interlaced[v1],[v1][0:s:0]overlay=shortest=1,aresample=async=1000 -map  -map 0:a -c:a aac -s 1920*1080 -aspect 16:9  -c:v rawvideo -pix_fmt yuv420p -f nut - | D:\QSVEnc_3.16\QSVEncC\x64\QSVEncC64.exe --avsw --audio-codec aac --quality best -i - -o "%~dp1%~nx12.mp4"

这个脚本在我电脑上54分钟的视频耗时18分钟,还可以接受