分类
日常记录

解决 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

分类
日常记录

Stylus 解决一下编写小程序写 css 难受的问题

Stylus 解决一下编写小程序写 css 难受的问题。不是很优雅,但是能解决问题,有语法提示也不会多打几个字,感觉还是很香的。

编译出来的结果还算理想,不用管生成的 wxss rpx 随便格式化会有空格的问题。

Stylus 解决一下编写小程序写 css 难受的问题

JetBrains 是我很喜欢的工具,下面是我 WebStorm 的配置。

https://stylus.bootcss.com/ 可以先去官网简单浏览一下,这里只是使用了一下函数和 unit() 内置函数。

安装 stylus:npm install stylus -g

在 WebStorm 设置 stylus 的自动处理

设置
设置

--ext .wxss 这个很关键,是定义生成文件的后缀的。要不然默认是 css 后缀。

这里推荐两个插件,对于 WebStorm 写小程序有一些帮助。

TabNine https://plugins.jetbrains.com/plugin/12798-tabnine

Wechat mini program support https://plugins.jetbrains.com/plugin/13396-wechat-mini-program-support

相关连接:

分类
日常记录

DataGrip 在 Database 表名后面显示 comment 注释

DataGrip 在 Database 表名后面显示 comment 注释

打开这个选项,就能很直观的看见注释了,对于我这种英文不好的太有用了。

DataGrip:https://www.jetbrains.com/datagrip/

相关连接:

分类
日常记录

DataGrip Compare 差异对比

https://www.jetbrains.com/help/datagrip/differences-viewer-for-routines.html

上面这个链接是 DataGrip Differences viewer for files 的文档。

大概的使用方法就是,选择两个东西,先选择的和后选择的做比较对比差异,选择顺序对对比结果有影响。

分类
日常记录

Android Studio 的 Java 可以借来用用

这个事情其实困扰我很久,我就是不想在全局安装 Java,因为不能安装安装最新的,最新的 Android 不服,非常难受。所以目前坚持不单独安装 Java。

然后就是 Flutter 环境老一个不打勾,我觉得应该和我的 Java 环境有关系。

这里面有一句 Android sdkmanager tool not found 。我发现我整个电脑里面都没有 sdkmanager 。然后就踏上了寻找 sdkmanager 的路程。

不过过了很久我发现一个获得这个文件的方法。

cmdline-tools 这个安装了就会得到 sdkmanager 这个文件。

执行了一下,开心, 环境没有 Java。

然后我坚信一定是有地方有 Java 的,我就是不安装。

搜索了一下 Java ,果然有,就选择 Android Studio 的用用试试。

好了知道怎么借 Java 用了,咱们试试 sdkmanager 。

当然,原本是有很长很长的协议需要同意的,第二次就这样了。我感觉我要解决 Flutter 的那个问题了。

然而我讲文件复制到了对应的地方,出现了新的问题,要求更新,显然是个糟糕的建议,我到这里就放弃了……

最后欣赏一下这个截图,简单来讲,就是白忙活了……

Android Studio 的 Java 可以借来用用