Submitted by gouki on 2022, March 2, 8:36 AM
如题
比如,你定义了一个方法,
PHP代码
- function test():never {
- exit(1);
- }
在其他方法使用的时候,
PHP代码
- doSomething(){
- test() ;
- echo 123;
- }
在IDE里,会提示这个echo 123;的错误是unreachable
原来phpstorm支持:#[NoReturn] 这个注释,但现在有语法级的支持,则变得更舒服。
----
然而,现在线上用的还是PHP7.3。连fn=> 这个功能都用不了。还有就是对于对象的操作$a?->b?->c也用不了。。。
只能接着忍,Laravel 9最低要8.0了,估计可能会强制更新了
PHP | 评论:0
| 阅读:3638
Submitted by gouki on 2022, March 2, 8:21 AM
在看新闻时突然看到说onedrive开始支持原生版本了,版本号是:22.022,兴冲冲的下载,结果发现还是Intel。。。
在仔细看了一下外媒新闻时,发现他们都在设置里打了勾【获取ondrive预览计划】
于是打开OneDrive的首选项,在关于页中,对【获取ondrive预览计划】进行打勾。然后关闭首选项,再次打开,这时候在关于页就有一个按钮【获取Apple silicon更新】,点击后,弹出对话框,提示在更新。此时看进程,会有一个:[OneDrive updater]在运行。(只是运行一阵后,就无响应了)
先不管它,可能是因为我在同步,让他慢慢更新了...
苹果相关 | 评论:0
| 阅读:3726
Submitted by gouki on 2022, March 1, 10:28 PM
在使用UniApp进行小程序开发的时候,总是不可避免的会使用tabbar。在小程序中tabbar的页面和普通的页面不一样,比如,他对应的页面就始终含有tabbar,而其他页面则不显示tabbar(要显示只能用自定义组件)。而且切换页面的时候,只能用switchTab,而不能用navigateTo。
这些都是平时可以看得到和可以通过报错信息查看得到的(比如navigateTo跳到tabbar时,出错信息就是提示不能跳转到tabbar的页面)。
tabbar还有一些有意思的小特性,比如,tabbar对应的页面,不能是分包里的,只能含在主包里。tabbar打开后数据加载完,默认不再刷新。这个就带来不小的问题,比如电商的首页,加载后不刷新那就一直无法获取最新数据了。
通过查看uniapp的文档,发现App.vue除了常见的onLaunch/onShow/onHide等之外,还有什么onPageNotFound(这个平时不会触发,只有扫描、转发等才会触发,navigateTo等不会触发此事件)之类的。[应用生命周期:生命周期 - uni-app官网 (dcloud.io)]
而普通页面,常用事件就是onInit/onLoad/onShow/onHide/onUnload,除此之外还有:onResize/onPullDownRefresh/onReachBottom/onPageScroll,如果是页面点击事件,还有onTabItemTap/onShareAppMessage/onNavigationBarButtonTap/onBackPress【页面生命周期:生命周期 - uni-app官网 (dcloud.io)】
当注意到onTabItemTap事件后,就想起来,可以利用此事件进行操作:onTabItemTap(e){console.log(e);},打印这个e,可以看到他是一个Json对象,有三个主要的key:index/pagePath/text,index是针对Tabbar的索引 ,pagePath是当前Tab的路径,text是tabbar对应的文字。
于是就可以利用这个pagePath:
JavaScript代码
- onTabItemTap(e){
- uni.reLaunch({url:e.pagePath});
- }
偷懒的时候就可以直接这么做。
纯记录。
Javascript | 评论:0
| 阅读:4913
Submitted by gouki on 2022, February 27, 4:04 PM
Zerotier和tailscale一样都是类似创建虚拟网络的一个软件,Tailscale有个不太好的地方就是只能用google账号登录(记不清是我当时这么选的,还是只能用这个登录了。也就导致了我在IOS上无法登录。毕竟登录google账号需要VPN,然后Tailscale如果active,就又要自己创建vpn,结果 就导致关闭了梯子的VPN,真是一个悖论。)
在电脑上使用的时候,两者差不太多,如果使用Tailscale的话,需要每个月登录一次(mac下,否则可能会token过期)。zerotier好象目前还没有遇到。
同时,zerotier可以使用moon节点加速,tailscale好象暂不行,只能通过国外中转。zerotier原来有100个免费的leaf,现在降为50个了,但对普通人说,别说50个,就是10个也足够了。所以,我其实是两个混用的。以防万一哪一个挂掉。
zerotier如果不使用moon节点,速度其实和tailscale差不太多,创建moon节点并连接上后,会发现快了很多。(然而,手机版的zerotier-one不知道怎么启用moon节点)
----如何创建moon节点?网上有很多例子,我是参考的这一篇:zerotier自建moon教程 - 方舟基地 (wnark.com)。如果要看详细的,请直接移步链接。
我取了其中的几个简化的步骤:
XML/HTML代码
- 找个好一点的机器 :
- cd /var/lib/zerotier-one
- 生成moon.json模板
- zerotier-idtool initmoon identity.public > moon.json
-
- 修改moon.json模板
- 要记住id之后加入moon服务器全靠他。检查 "id"是否为你vps的10为字符id,可在zerotier网页管理端查看,如果不是说明上一步配置有误。
- vi 编辑 moon.json,修改 “stableEndpoints” 为 VPS 的公网的 IP,以 IPv4 为例,记得带引号:
-
- "stableEndpoints": [ "8.8.8.8/9993" ]
- 生成签名文件
- 用到上一步中的 moon.json, 执行
-
- zerotier-idtool genmoon moon.json
- 执行之后生成 000000xxxx.moon 文件。
-
- 将 moon 节点加入网络
- 在 VPS 的 Zerotier 安装目录下(/var/lib/zerotier-one)建立文件夹 moons.d,将生成的 .moon文件拷贝进去。
- 重启 zerotier,重启电脑。至此,VPS 上(moon 服务器)配置完成。
-
- 客户机连接moon节点
- 其他虚拟局域网中的机器想要连接到 moon 节点的话有两种方法。
-
- 第一种方法就是使用 zerotier-cli orbit 命令。
- 使用之前步骤中 moon.json 文件中的 id 值 (10 位的字符串)分别在客户端机器里执行:
-
- zerotier-cli orbit <id> <id>
- 完成(一般来说这两个id都是相同的)
-
- [root@idv-36f9d5 ~]# zerotier-cli orbit 3ed7c***** 3ed7c*****
- 200 orbit OK
- 第二种方法是需要在 /var/lib/zerotier-one 目录下新建 moons.d 文件夹和 moon 节点一样,将 000000xxxx.moon 文件放到其中,并重启 zerotier。
直接使用Zerotier-cli orbit id id 会更方便一点。
Linux | 评论:0
| 阅读:5775
Submitted by gouki on 2022, February 15, 8:58 AM
使用fpdf读取PDF文件时,报错:This PDF document probably uses a compression technique which is not supported by the free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)
提示这个文件是采用了一个压缩格式,到官网上查看之后,发现他们提供了fpdi-pdf-paser2,但是这是收费的。。。啊啊啊,短时间内先忽略吧。毕竟这样的PDF不多。
后面再关注一下有没有类似的东西。
2、查看这里的测试代码和示例:https://www.setasign.com/products/fpdi-pdf-parser/details/
目前我是放弃了,因为,他develop version,要100欧,然而这只是我自己用来测试,没必要。
------
后记:
1、读了PDF的第一行,发现这个PDF版本是PDF1.5,尝试用chrome打开,另存为,无效。选择打印->另存为PDF,成功
PHP代码
-
- <?php
- exec('gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="'.$srcfile_new.'" "'.$srcfile.'"');
- ?>
结果,官网上没有mac的可执行文件,又不想编译,所以纯记录一下吧
-----
0227更新:
GPL Ghostscript 9.50 (2019-10-15)
Copyright (C) 2019 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
GPL Ghostscript 9.50: Cannot open X display `(null)'.
**** Unable to open the initial device, quitting.
纠结。
PHP | 评论:0
| 阅读:5127