创建项目

创建package

其中package的名称可以在build.gradle中见到。

编译项目

为了更快的编译项目,在build.gradle文件中,将repositories修改为如下内容。

repositories {
    maven{ url 'https://maven.aliyun.com/repository/central' }
    maven{ url 'https://maven.aliyun.com/repository/public' }
    maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
}

参考:https://www.youtube.com/watch?v=Y8_rQ20C1CI

以下命令是一些bash的终端使用技巧,来自于youtube的一个视频,https://www.youtube.com/watch?v=V8EUdia_kOE。感觉蛮有用的,所以记载在这里。

使用sudo运行上一个命令

比如我们运行了一个查找的命令

find / -name <name>

执行过程中,可能会碰到许多路径是禁止当前用户查找的,如果我们仍然需要在这些路径中查看,应该使用sudo执行root权限,这是可以直接使用!!来代表上一个命令。

sudo !!

删除或者恢复当前命令

如果我们输入了一个很长的命令,但想删除这个命令,可以按CTRL+K。如果想从当前位置删除到开始,可以按CTRL+U。对于删除的命令内容,如果想恢复,可以按CTRL+Y

使用less而不是tail来查看日志

有时查看日志,日志非常长,这个时候大家常用tail命令,可是加载全部日志太长了,很难看到最近的内容,而截断的办法也不是那么准确。这个时候可以使用less命令。

less +F ./logs/kk.log

然后按CTRL+C,再结合$\uparrow$以及$\downarrow$按键即可从结尾处上下查看,非常方便。

输入较长的甚至换行的命令

如果使用命令行终端输入较长的甚至需要换行的命令,非常不方便。这个时候按CTRL+X+E,可在编辑器中输入命令,退出的时候,命令将自动在终端运行。如果需要指定编辑器,则可以在.bashrc文件中输入以下命令。

export EDITOR=vim

然后执行source ~/.bashrc命令即可。

输入之前命令的参数

假设我执行了一个ping 8.8.8.8命令,然后我又想执行一个mtr 8.8.8.8命令,但是我不想输入ip地址了,那么只要在输入mtr后,按ALT+.,将会自动将上一个命令的参数加上,如果多按几次,就会回溯更远的命令参数。

清除终端中之前输入的命令

reset

相比于CTRL+L只是将当前输入行置顶,该命令将清除之前输入的内容。

Drude公式以及电子伏特和波长的转换

Drude模型将金属表面的自由电子看作气体,可以很好的预测其光学性质。该模型提出了$\epsilon(\omega)$的表达式:

\[\epsilon_c = \epsilon_\infty - \frac{\omega_p^2}{\omega^2+i\gamma\omega}\]

其中$\omega_p$为块状金属的等离子体频率(rad/s),表达式为:

\[\omega_p = \sqrt{\frac{N_he^2}{\epsilon_0m*}}\]

其中$N_h$代表电子密度(计算时注意单位是$cm^{-3}$或是$m^{-3}$),m*代表有效质量。那么,如果假设$N_h$等于$1.7\times 10^{21}\;cm^{-3}$,m*为0.8 m0(m0代表电子的质量)。则$\omega_p$的结果为多少呢?

首先,公式中涉及到的常数为:

  • $e=-1.6\times10^{-19}\;C$
  • $m0=9.1093837015\times 10^{-31}\;kg$
  • $\epsilon_0=8.85418782\times 10^{-12}\; m^{-3}kg^{-1}s^4A^2$

因此:

\[\omega_p = 2.597052\times 10^{15} (rad/s)\]

转换成电子伏特

\[\omega_p = \frac{1240\cdot\omega_p(rad/s)}{2\pi c \cdot 10^{9}} = 1.7 (eV)\]

基于球形纳米颗粒的吸收光谱,得到介电常数

  • 首先将吸收光谱,转换成能量(eV)为单位的吸收光谱,代码为
# h*c/lda
evs = 1240*1e-3/lda
pl.plot(evs, qext)

然后根据吸收光谱图,找到$\omega_{sp}$,即等离子体共振峰,以及$\gamma$,即线性的增宽因子。根据文献1提供的公式,球形的微小纳米颗粒的偶极子极化率$\alpha$的公式为:

\[\alpha = 3\epsilon_0\rm{V}\frac{\epsilon - \epsilon_m}{\epsilon+2\epsilon_m}\]

当分母小时的时候,纳米颗粒会出现LSPR吸收峰,即: \(\epsilon_r = -2\epsilon_m\)

$\epsilon_r$代表介电常数的实部,根据Drude模型,其表达式为:

\[\epsilon_r = 1 - \frac{\omega_p^2}{\omega^2 + \gamma^2}\]

$\omega_p$为块状的等离子体震荡频率,因此纳米颗粒的共振频率和块状等离子体震荡频率的关系为:

\[\omega_{sp} = \sqrt{\frac{\omega_p^2}{1+2\epsilon_m} - \gamma^2}\]

因此,如果知道$\omega_{sp}$和$\gamma$,可以算出$\omega_p$。如文献5所示,假设$\omega_{sp}$为0.98 eV,FWHM(也即$\gamma$)为0.66 eV。当溶液的介质为水,折射率为1.33。那么根据上述公式,$\omega_p$大约为2.26 eV。接着,设置一个初始的$\epsilon_\infty$,然后按照$\epsilon_c$的公式,计算得到纳米颗粒的介电常数$\epsilon$,然后根据mie公式的python代码,计算得到吸收光谱,最后根据将其与实验得到吸收光谱进行比较,校正$\epsilon_\infty$。这里我们校正得到$\epsilon_\infty$为1.8是比较符合文献的数据。

根据经验$\epsilon_\infty$和$\omega_p$都能够调节LSPR的峰位,而$\gamma$可以调节半峰宽,且$\epsilon_\infty$越小,LSPR越红移(波长越长)。

参考文献

  1. https://doi.org/10.1038/NMAT3004
  2. https://doi.org/10.1038/ncomms4548
  3. https://www.osapublishing.org/abstract.cfm?uri=ao-22-7-1099
  4. Frequency - Wavelength - Energy Converter
  5. https://link.springer.com/article/10.1557/adv.2018.91
  6. https://pubs.acs.org/doi/abs/10.1021/nn400894d

创建百度网盘应用,得到开发者信息

前往https://pan.baidu.com/union/console/applist?from=header,创建一个个人应用,然后得到AppID、Appkey、Secretkey以及Signkey等信息。

获取access_token

根据http://developer.baidu.com/wiki/index.php?title=docs/oauth/application的说明,获取access_token。

  • 首先使用浏览器前往http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=netdisk&display=page,其中YOUR_CLIENT_ID为Appkey,如果不知道怎么设置YOUR_REGISTERED_REDIRECT_URI,可以设置为oob,然后得到CODE,尤其需要注意的是,scope决定你可以拿到的access_token的权限,例如basic、netdisk等等。(详细的参数设置说明,参见:http://developer.baidu.com/wiki/index.php?title=docs/oauth/authorization
  • 使用浏览器前往https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI,得到access_token。

根据api进行开发

参考https://pan.baidu.com/union/document/basic,根据api说明,可以实现百度网盘的开发。

示例开发,将百度网盘当做网站的文件存储服务器

  • 通过浏览器插件,得到文件的fsid

  • 由于fsid是固定的,那么在前端指定文件(例如图片、视频)等的fsid,通过后端的api,将fsid转换为dlink,则可以实现将百度网盘用作文件存储工具(不足之处,该api的使用频率限制比较严格)。

查看示例播放器:游西湖。更新:貌似当做文件下载可以,但是作为网站上的播放源出现403,后面再去看看是什么问题。

额外参考链接:flask中生成ssl证书的方式,https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https

4月29日更新

目前已经探明,请求dlink资源时,如果带了referrer,服务器会返回403。这个时候将referer设置为no-referrer值,可以解决防盗链问题。类似a、area、img、iframe、link等标签,可以设置referrerpolicy属性解决此问题。不过这些设置不是在所有浏览器都会生效。目前来看,Chrome是支持的,但是最新的Edge似乎并不支持。

<meta name="referrer" content="no-referrer">

Word文档虽然非常常见,但是不便于通过网站给别人浏览,因此需要将其转换成HTML文件。Word应用是自带转换功能的,只需将其另存为HTML文件即可。不过这个另存为功能在转后将自动切换到HTML文件,由于我们有时只是需要将文档转换成HTML文件,但是仍然还要在这个Word文档上工作,修改文件内容,那么这个功能就稍微显得麻烦一些。如果解决这个办法呢,可以使用VBA脚本来解决。

  • 设置路径变量
Let strDocName = ActiveDocument.Name
Let intPos = InStrRev(strDocName, ".")
Let strDocName = Left(strDocName, intPos - 1)
Let htmlFileName = strDocName & ".htm"
Let htmlDir = ActiveDocument.Path & "\html"
Let htmlFullPath = htmlDir & "\" & htmlFileName
  • 判断路径是否存在
If Dir(htmlDir, vbDirectory) = "" Then
    MkDir htmlDir
End If
  • 创建新的文档
Dim oNewDocument As Document
Set oNewDocument = Documents.Add(Template:=ActiveDocument.FullName, DocumentType:=wdNewBlankDocument, Visible:=False)
  • 另存为HTML文件
oNewDocument.SaveAs2 FileName:=htmlFullPath, FileFormat:=wdFormatHTML
oNewDocument.Close SaveChanges:=False
  • 清除对象
Set oNewDocument = Nothing

在将这个vba脚本和一个按钮对应起来,这样以后,只需要点击一个按钮,就可以生成该Word文档的HTML版本,非常方便。