分类
日常记录

spring boot 的报错

1.dao 字段名字没映射好

...

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-09-03 19:39:23.978 ERROR 28777 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract com.gdp.demo3.entity.User com.gdp.demo3.dao.UserDao.findByUsername(java.lang.String)!

...

大概这样一段报错,实际是我数据库和实体类字段没对应上。

package com.xxx.xxx.entity

import java.util.*
import javax.persistence.*
import javax.validation.constraints.NotEmpty
import javax.validation.constraints.Size

@Table(name = "user")
@Entity
class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Long = -1

    @Column(unique = true)
    @NotEmpty(message = "用户名不能为空")
    @Size(message = "用户名长度在1~20之间", max = 100, min = 1)
    var userName: String = ""

    @NotEmpty(message = "密码不能为空")
    @Size(message = "密码长度在6~100之间", max = 100, min = 6)
    var password: String = ""
}

数据库中 userName 是全部小写,没有任何分割符的,改成 username 就好了。

2.Freemarker 页面老是 404

Spring Boot 2.3.3 的时候发现的,Freemarker 的默认后缀发生了变化,以前可能是 .ftl,现在是 .ftlh。可能是这个造成不能找的模板的。

application.properties 文件设置 spring.freemarker.suffix=.ftlh 可以自己随意设置后缀。

spring boot 的报错

分类
日常记录

IntelliJ IDEA 写 spring boot 代码 处理 Cannot resolve table ‘xxx’ 警告

大概长这样:

解决办法:

解决后的效果:

IntelliJ IDEA 写 spring boot 代码 处理 Cannot resolve table ‘xxx’ 警告

分类
日常记录

iOS 升级了测试版本 电脑不想升级 真机调试 Flutter 应用

iOS升级了开发者版本。这个时候调试 Flutter 会见到下面这段日志。

Launching lib/main.dart on 郭大鹏的iPhone in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: BBAXGSNKQ3
Running Xcode build...
Xcode build done.                                           29.1s
Installing and launching...                                     




Installing and launching...                                        13.1s
2020-07-07 14:43:14.160 ios-deploy[28235:306916] [ !! ] Unable to locate DeviceSupport directory with suffix 'DeveloperDiskImage.dmg'. This probably means you don't have Xcode installed, you will need to launch the app manually and logging output will not be shown!
Could not run build/ios/iphoneos/Runner.app on d0801019273b8ab47b043e04519da43b76a32c03.
Try launching Xcode and selecting "Product > Run" to fix the problem:
  open ios/Runner.xcworkspace

Error launching application on 郭大鹏的iPhone.

调试没成功。这个时候不要慌,下载开发者版本的 Xcode 里面有你需要的。

➜  DeviceSupport pwd
/Users/felix/Downloads/Xcode-beta.app/Contents/Developer/platforms/iPhoneOS.platform/DeviceSupport
➜  DeviceSupport sudo cp -R 14.0  /Applications/Xcode.app/Contents/Developer/platforms/iPhoneOS.platform/DeviceSupport
Password:

大概的意思是 Xcode 软件的 Contents/Developer/platforms/iPhoneOS.platform/DeviceSupport 这个目录里面,有各个 iOS 版本对应的文件,复制过去,就可以了。

Launching lib/main.dart on 郭大鹏的iPhone in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: BBAXGSNKQ3
Running Xcode build...
Xcode build done.                                           25.5s
Installing and launching...                                        27.4s
Debug service listening on ws://localhost:1024/ws
Syncing files to device 郭大鹏的iPhone...

然后就成功了。

iOS 升级了测试版本 电脑不想升级 真机调试 Flutter 应用

分类
日常记录

Homebrew 安装 node

安装最新版本:

brew install node

安装指定版本:

brew install node@12

安装后可能不能使用。有一些提示。不过有一条命令可以比较简单的让 node 可以直接使用。

brew link --overwrite --force node12

Homebrew 安装 node

分类
日常记录

解决 nuxtjs TS2307: Cannot find module ‘xxx’.

事情是这个样子的,我是一个前端小白,使用 nuxtjs 做 vue SSR 的项目开发。

但是一开始就发现,老是说 module 找不到,但是还是能点击过去,另外不适用 ts 的话貌似不会出现这个问题,这个问题也不影响 build。

但是不想让 IDE 提示警告,这样很不容易发现一些标签不闭合这类低级bug。然后就开始了漫长的尝试,终于在一个日语写的东西里面发现了解决办法。

https://qiita.com/ryo511/items/0408d3763af797a16a7a

好吧,咱们直接上图。

如图。TS2307: Cannot find module '~/components/VideoPlayerPortrait.vue'.出现了这样的警告。

在根目录创建 shims-vue.d.ts 文件,里面写一点代码。

declare module '*.vue' {
}

就这样,解决了,因为是前端小白,所以并不明白 ts 这里到底干嘛了。能正常 build,也没有这个烦人的警告了。

分类
日常记录

用宝塔 Supervisor管理器 启动 Workerman

宝塔 安装了 Supervisor管理器 后,就可以添加守护了。

这里要注意,为了能看日志,能启停,启动参数不要加 -d。

启动后可以看日志。

这样以后就不用担心重启服务器忘记启动一些东西了。

分类
日常记录

Workerman wss 宝塔 Apache2.4 配置

我测试的是 https://www.workerman.net/workerman-chat 项目。

Workerman 文档:http://doc.workerman.net/315297

    # Proxy Config
    SSLProxyEngine on

    ProxyRequests Off
    ProxyPass /wss ws://127.0.0.1:7272/wss
    ProxyPassReverse /wss ws://127.0.0.1:7272/wss
// 证书是会检查域名的,请使用域名连接
ws = new WebSocket("wss://guodapeng.icu/wss");

ws.onopen = function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};

浏览器跑一下这个js,连接成功了。

分类
日常记录

灰度站点

body *{
	-webkit-filter: grayscale(100%); /* webkit */
	-moz-filter: grayscale(100%); /*firefox*/
	-ms-filter: grayscale(100%); /*ie9*/
	-o-filter: grayscale(100%); /*opera*/
	filter: grayscale(100%);
	filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); 
	filter:gray; /*ie9- */
}

大概就是这样一段样式。

分类
日常记录

一些 ssl 证书 与 http2.0 可能让 iOS 设备请求 httpcode 421

事情是这样的,我在开发微信小程序直播的相关工作,我的主力机是华为的,本来事情进展的还不错。不过当我用 iPhone 测试的时候,步入入了两天的噩梦。

经过一番调查,我觉得我解决了问题。

我的环境使用的是 Let’s Encrypt 泛域名证书。直播使用的是七牛云的demo,因为先完成测试才会进入真正的开发。这个七牛云的demo是 node 写的,我在服务器上用宝塔提供的工具进行了部署。

部署完成后,其他 PHP 部分的请求都还好用,不知道为啥,七牛云的demo也很好用。但是把他们的代码放到我的小程序里面就不好用了。

服务器接收到了请求,长的下面这个样子:

[03/Apr/2020:12:00:50 +0800] "GET /wechat/api/activeuser HTTP/2.0" 421 391 "https://servicewechat.com/wx3f5537d8cddc233a/0/page-frame.html" "Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.12(0x17000c27) NetType/WIFI Language/zh_CN"

我们可以看出,这是个 http2.0 的请求。返回数据是下面这个样子:

Misdirected Request
The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.

Apache Server at live.guodapeng.icu Port 443

这件事情看上去很不简单,相当可怕,不过我发现是 Apache 干的。那么问题就有了方向,不断探索后返现下图内容:

LoadModule http2_module modules/mod_http2.so

注释掉这一行,重启服务。天下太平……

分类
日常记录

用 Docker 启动 MySQL

事情是这样的,我们已经把项目交付给了甲方,甲方还想进一步开发,但是我们的报价让甲方不满意。甲方就找了其他人开发。讲真,一分钱一分货,那伙人把服务器搞摊跑路了,各种服务全挂了。

要知道,把他们搞坏的修好,还不如重装系统比较快,何况是云服务器。

我复制下来数据库的文件们,大概长这样。

因为是 mysql 5.7 的数据库。先下载一个镜像。

docker pull mysql:5

然后在这个目录启动起来。

docker run -d \
 --name mysql \
 -v $PWD:/var/lib/mysql \
 -p 3306:3306 \
mysql:5

Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.

出现这个错误启动不起来时,可能是 MySQL 版本问题,我用的版本比之前的低了,5.7 用了 5.6 的 MySQL,报错直接退出了。

-e MYSQL_ROOT_PASSWORD=123456如果加这个,可以指定root用户密码。

然后进入容器看看。

docker exec -it mysql bash

这时候我发现我不能连接数据库,因为密码不对,不管是啥原因,反正是不对,我猜是跑路那群人把密码改了(有点腹黑),然后就要 skip-grant-tables,但是发现没有 vi。

没关系,办法总比困难多。

复制出来改。

docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf ~/Desktop

改完复制回去。

docker cp ~/Desktop/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf

好了,可以重启试试了。我就不截图了。

docker restart mysql

然后还有没有好玩的?当然还可以继续,上 phpMyAdmin 哇。我目标是吧数据掏出来重新部署哇,当然有很多方法,但是我习惯 phpMyAdmin。

docker pull phpmyadmin/phpmyadmin
docker run --name myadmin -d \
 -p 8088:80 \
 -e PMA_ARBITRARY=1 \
phpmyadmin/phpmyadmin

注意数据库用户是否能在容器外访问。

好了,这样可以比较友好的操作这个数据库了,至少这样的方案是免费的。

https://my.oschina.net/guodapeng/blog/3212147