前提条件
你要有下面这些东西才能实现文章中的解决方案:
- 一台带公共ip的外网服务器
- 一个域名
1. 申请一个域名
域名可以在cloudflare或者onamae上申请,花不了几个钱。
2. 申请一个证书
证书可以通过acme这种工具来自动发行和更新。
2.1 先在自己的服务器上安装acme.sh
把my@example.com替换为自己的邮件地址,执行下面的命令。
1 | curl https://get.acme.sh | sh -s [email protected] |
前提条件
你要有下面这些东西才能实现文章中的解决方案:
域名可以在cloudflare或者onamae上申请,花不了几个钱。
证书可以通过acme这种工具来自动发行和更新。
把my@example.com替换为自己的邮件地址,执行下面的命令。
1 | curl https://get.acme.sh | sh -s [email protected] |
买了Just Dance 2022的北美版,跳的上瘾,决定买Just Dance Unlimited。
买完之后又发现无法使用,刚开始以为是自己买的游戏北美版的原因,
经过一番折腾才发现是「いつもあそぶ本体」的设置问题。
只有把你现在玩的机器设置成「いつもあそぶ本体」,才能使用Just Dance Unlimited。
官方回答在这里
https://support.nintendo.co.jp/app/answers/detail/a_id/36096
从2022年10月开始,已打了3针疫苗的旅客赴日本已不需要核酸。
请时刻关注日本领事馆信息,注意政策变化。
作者在日本工作,因为家里老二出生,请了3个月的假期回国,现在假期结束了,5月4号回到了日本。
记录一下回日本的过程,希望能对读者有用。
日本政府强烈推荐来日本的人用推荐格式的核酸报告,而青岛能提供这种格式的医院有四个。
【青岛市】
笔者的核酸检测是在齐鲁医院(青岛)做的。总共花费24元。
临来之前在小红书上查了很多教程,多是在市立医院做核酸的教程,选来选去决定在齐鲁医院做。
笔者选择齐鲁医院的原因有两个:
一个全栈的小项目,里面既有前端也有后端,在这里前端是vue
, 后端是flask
。
前端的编译结果输出到flask/dist
文件夹里。
后端的flask程序做成了模块,也就是说在flask/app/__init__.py
里有一个create_app()的函数。
现在的问题是,怎样把它们一起部署到heroku上, 并在部署时完成自动编译?
1 | your-app |
如果flask没有做模块化,部署方式也很简单
通常flask的主程序都是这么写的:
一个名为app.py
的程序,内容如下
1 | from flask import Flask |
记录一下升级PandoraBox差点变砖,却成功挽救的经历。
之前通过刷机把自家的小米路由器3Pro升级到了PandoraBox系统。
之后就一直放着没有用,后来偶然的机会发现PandoraBox升级了好几个版本,就想着把自己的路由器也升级一下。
本以为通过Pandorabox系统自带的升级功能,选择固件更新,再上传system upgrade文件就可以了,结果直接变半砖。
升级完之后无线不可用,指示灯闪烁。还想着再刷回R3P自带的系统,结果也不成功。
好像第一次升级成PandoraBox之后就无法回退到厂家自带的系统了。至于原理自己不了解,有懂的朋友请赐教。
就在一筹莫展的时候,想起来路由器可以通过网线连接,结果连上之后,ssh竟然连上了。
系统的密码是root/admin.
接下来跟着网上的教程照猫画虎,因为ssh可用,所以通过wscp软件将需要升级的系统文件上传到路由器的/tmp文件夹中。
接下来通过执行以下命令,顺利实现了升级!
mtd -r write /tmp/XXX.img Bootloader
在Vue程序中,有时需要引入jQuery,比如你习惯了用$.ajax来进行网络请求,或者进行一些控件操作。
可以通过加载jQuery的module来实现:
1 | npm install jquery --save |
1 | import $ from 'jquery' |
但问题是这样编译出来的结果会更大,从而造成一些性能问题。
可以简单地通过在index.html中直接引入jQuery的链接来使用jQuery,但是编译的时候又会报错。
1 | <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> |
编译的错误如下:
1 | Uncaught ReferenceError: jQuery is not defined |
怎么解决这个错误呢,通过配置eslint来解决!
eslint在Vue中被用来检测程序是否有一些不规范的写法,通过让eslint来识别jQuery,就可以来规避编译时的报错了。
OData的日期类型无法原样显示在SAPUI5的页面上,怎样解决这一问题。
Date String Received from OData.
Date string from OData Service is like below:
1 | "SalesOrderDate": "/Date(1587945600000)/", |
这样的数据无法直接显示在SAPUI5的View里面。
即便你设置data type为日期类型,也是无法直接识别的。
Create your date formatter.
在View的Controller里创建自己的formatter,然后在View中进行相应的设置。
JS代码中用到了正规法则,识别一段字符串中的数字,然后将这一串数字作为timestamp来生成一个Date类型的变量,
再通过sap.ui.core.format.DateFormat来设置格式。
1 | sap.ui.define([ |
1 | <Text text="{ |
在SCPI里可以通过创建Groovy Script来对数据进行一些处理,比如解析csv文件并处理里面的数据。
当然我们可以自己写代码来解析csv文件,但通常是重复造轮子。
因为这个世界上已经存在着很多优秀程序员写好的类库,我们只需要在自己的程序中调用一下就可以了,没必要重复造轮子。
SCPI中也支持引入外部的jar文件,以CSV文件的解析为例,为了能在程序中使用groovycsv这个库,我们需要引入以下两个jar文件:
下面解释一下怎样在SCPI的Flow里面引入jar文件
Spring Batch默认的JobLauncher执行Job的方式是同步的。
如果需要执行异步Job,则需要定义能执行异步Job的JobLauncher。
在Configuration Class中定义SimpleJobLauncher, 设置其TaskExecutor为异步的SimpleAsyncTaskExecutor
1 | @Configuration |
在调用Launcher的主程序中设置自动注入,就可以使用了。
1 | @Autowired |
在往SAP Cloud Platform Neo上部署war文件后,有时会出现程序无法启动的错误。
通过排查错误日志,发现log中有类似下面的描述:
1 | 2019 05 28 09:31:00#+00#ERROR#org.slf4j.helpers.Util##anonymous#localhost-startStop-1#na#xxxx#sampleapp#web##na#na#na#na#SLF4J: Class path contains multiple SLF4J bindings. | |
仔细观察发现该错误是slf4j和logback的依赖冲突导致的。
通过参考gradle-exclude-dependencies这篇文章,尝试了如下解决办法:
通过对spring boot的依赖添加exclude描述来排除特定依赖。
1 | compile("org.springframework.boot:spring-boot-starter-web:${project.bootVersion}"){ |