Jinzhe Zeng's Blog

苟利国家生死以,岂因祸福避趋之

0%

坐标江苏南京,光猫型号是华为HG8120C,路由器是刷了最新版padavan的斐讯k2。光猫为桥接模式,路由器为路由模式。

一、配置

首先要确定光猫已经有IPv6业务了,不支持的话就是白搭。

接着务必把光猫的DHCPv6关掉:

接着在路由器的IPv6设置界面,选择Native DHCPv6,下面两个选择Stateless。

过一会路由器就有IPv6地址了:

同时电脑和手机上也能收到240e开头的IPv6地址:

WSL里面ifconfig的显示(eth2和eth3分别是有线和无线网卡):

二、体验

1.test-ipv6.com测试满分:

2.外网可以直接连通内网机器,无需进行端口映射。

为了实验外网的连通性如何,我拿位于上海的实验室里面2001开头的教育网电脑做了测试,

可以ping通:

甚至电信没有屏蔽80端口:

有IPv6的朋友们可以连接http://[240e:ec:865:fd00:951b:d8c1:c33e:c791]/看看能不能访问,目前显然是没有屏蔽任何端口的,不过相信很快像IPv4一样屏蔽了。

3.动态

经过测试,分到的IPv6地址是动态的,第三位和第四位会变。如果需要绑定稳定的域名,从来在外面访问,就需要一个DDNS了。

(绑定了IPv6的域名)

4.连通性

(1)QQ可以毫无压力的ping通

(2)Google能获取地址,无法ping通,也上不了,显然那啥已经建成

(3)中文维基百科能ping通但访问不了,显然那啥已经升级。

(4)有些ip教育网能ping通,电信网ping不通,显然那啥也会区别对待

(5)Telegram可以连接

2018-09-28

为了在无GUI的环境下登陆校园网,我们编写了 ecnunetwork ——一个Python模块,在Python 2.7和Python 3.6均通过测试,
因为目前校园网IPv6无需登陆,所以可以直接使用pip安装:

$ pip install ecnunetwork

如果提示权限不足,可在当前用户下安装:

$ pip install ecnunetwork --user

使用时,输入network即可连接校园网:

$ network

如果提示找不到命令,可以进入Python运行:

$ python

>>> import ecnunetwork
>>> ecnunetwork.ecnunetwork().connect()

首次连接会要求输入用户名和密码:

Please input your ECNU id: xxxxxx
Please input your password: xxxxxx
Successfully connected to the Internet.
Save password? [Y/n] y

2018-09-23

1.安装Intel® MPI Library并激活,如source /share/apps/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
2.编译LAMMPS前,make yes-user-intel激活USER-INTEL package。
3.用make intel_cpu_intelmpi编译LAMMPS。
4.用KMP_BLOCKTIME=0 mpirun -np 36 lmp_intel_cpu_intelmpi -pk intel 0 omp 2 -sf intel -in in.script运行LAMMPS。
5.在in.script的开头加入processors * * * grid numa
参考资料:https://lammps.sandia.gov/doc/Speed_intel.html

2018-08-20

conda install --channel "anaconda" package

安装Anaconda

使用conda install需要安装Anaconda,安装方式见 #18 。
但也可以用我写的一键脚本安装:
wget https://raw.githubusercontent.com/njzjz/ChemAutoInstaller/master/ChemAutoInstaller.sh && bash ChemAutoInstaller.sh --anaconda

添加清华镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes

经测试,在华东师范大学校园网下可以满速下载。

常用软件

一些最常用的软件,如numpy、scipy已经预装在Anaconda中。剩下一些常用的软件(其实是我常用的)安装命令(-y可以跳过确认):
TensorFlow(含cuDDN)
conda install tensorflow-gpu
OpenBabel
conda install openbabel
RDkit
conda install rdkit
高版本GCC
conda install libgcc
DeePMD
conda install -c deepmd.kit deepmd

搜索软件

anaconda.org可以搜索安装包,资源非常丰富。

2018/08/07

环境准备

1.安装酷Q和HTTP API插件

酷Q:https://cqp.cc/
CoolQ HTTP API 插件:https://github.com/richardchien/coolq-http-api
将HTTP API插件放置于app文件夹中,启动并登陆酷Q,在菜单中启用插件。
HTTP API插件的默认地址为http://localhost:5700/

2.安装cqhttp

pip install cqhttp
安装后在Python中使用:

from cqhttp import CQHttp
bot = CQHttp(api_root='http://219.228.63.56:5700/')
bot.send_group_msg(group_id=599070209,message='hello world')

default

第二行定义了一个机器人,第三行让这个机器人发一条hello world的消息。

开始编写程序

1.获取任务状态

import subprocess as sp
class CQJobMonitor():
    def jobstate(self):
        states=sp.check_output(self.command.split()).decode('utf-8').split("\n")
        states=[' '.join(line.split()) for line in states if any([keyword in line for keyword in self.keywords])]
        return states

这里self.command为获取任务状态的命令,如qstatself.keywords为关键词,如['jzzeng']。如此即可返回含有关键词的任务状态。

2.发送消息

import time
from cqhttp import CQHttp
class CQJobMonitor():
    def sendstate(self):
        localtime = time.asctime(time.localtime(time.time()))
        message=localtime+"\n"+self.tip+"\n"
        message+="\n".join(self.jobstate())
        self.bot.send_group_msg(group_id=self.group_id,message=message)

调用定义好的CQHttp类发送消息,顺便带上当前时间。

3.循环发送

设置每300秒发送一次:

from threading import Timer
import os
class CQJobMonitor():
    def loopmonitor(self):
        while not os.path.exists("pause"):
            timer=Timer(self.timeinterval,self.sendstate)
            timer.start()
            timer.join()
        print("Exit per signal.")

这里self.timeinterval设置为300.

运行

完整的程序如下:

import os
import subprocess as sp
from cqhttp import CQHttp
import time
from threading import Timer

class CQJobMonitor():
    def __init__(self,command="qstat",cqroot='http://219.228.63.56:5700/',group_id=312676525,keywords=['jzzeng'],timeinterval=300):
        self.tip="JobMonitor"
        print(self.tip)
        self.command=command
        self.group_id=group_id
        self.keywords=keywords
        self.bot = CQHttp(api_root=cqroot)
        self.timeinterval=timeinterval

    def jobstate(self):
        states=sp.check_output(self.command.split()).decode('utf-8').split("\n")
        states=[' '.join(line.split()) for line in states if any([keyword in line for keyword in self.keywords])]
        return states

    def sendstate(self):
        localtime = time.asctime(time.localtime(time.time()))
        message=localtime+"\n"+self.tip+"\n"
        message+="\n".join(self.jobstate())
        self.bot.send_group_msg(group_id=self.group_id,message=message)

    def loopmonitor(self):
        while not os.path.exists("pause"):
            timer=Timer(self.timeinterval,self.sendstate)
            timer.start()
            timer.join()
        print("Exit per signal.")

代码已上传至pypi,可用pip install CQJobMonitor安装。
编写monitor.py

from CQJobMonitor import CQJobMonitor
CQJobMonitor(command="qstat",cqroot='http://219.228.63.56:5700/',group_id=312676525,keywords=['jzzeng'],timeinterval=300).loopmonitor()

并在后台运行:

nohup python monitor.py >/dev/null &

image

即可定时发送任务情况。

2018/07/26

1.安装

可用Anaconda安装conda install openbabel -c conda-forge或参照 此文 自己编译。

2.转换格式

把xyz格式文件转换成pdb格式文件:
obabel C.xyz -ixyz -opdb -O C.pdb
支持118种格式,如xyz、mol、mol2、pdb、smi,Gaussian文件gjf、log、fchk,ChemDraw文件cdx等。
可以从没有成键信息的xyz文件转换为有成键信息的mol文件。

3.转换SMILES

生成甲烷的mol文件:
obabel -:C --gen3d -omol -O C.mol
若要得到坐标,--gen3d不可少。
SMILES会默认补氢至饱和,将C补成甲烷,若要得到单个碳的mol文件:
obabel -:[C] --gen3d -omol -O C.mol
若要生成甲基的文件:
obabel -:[CH3] --gen3d -omol -O CH3.mol
或:
obabel -:"[C]([H])([H])[H]" --gen3d -omol -O CH3.mol
若SMILES有括号时,务必要加上引号。
获取C.xyz、C.pdb等多个文件的SMILES:
obabel C.mol C.mol2 C.pdb C.xyz --osmi -O C.smi

4.生成结构式的图像

cys

phosphate

obabel -:"C([[email protected]@H](C(=O)O)N)S" -opng -O cys.png
即可生成半胱氨酸的结构式:

亦可生成矢量图像:
obabel -:"C([[email protected]@H](C(=O)O)N)S" -osvg -O cys.svg
可以将文件直接转换为图像:
obabel phosphate.log -ilog -opng -O phosphate.png

5.配合Gaussian使用

从SMILES直接生成Gaussian输入文件:
obabel -:CC --gen3d -ogjf|sed "1c %nproc=28\n#opt b3lyp/6-31g(d,p)" >CC.gjf
从已有文件或上一步的log文件中得到下一步的输入文件:
obabel CC.log -ilog -ogjf|sed "1c %nproc=28\n#freq b3lyp/6-31g(d,p)" >CC2.gjf

2018年6月22日发表于微信公众号 (需已经安装好EndNote)

  1. 下载EndNote引用文件:①打开Google Scholar,②搜索文献,③点击文献下方的引用按钮,④点击EndNote下载,⑤打开下载好的EndNote文件:

2.在EndNote中选中刚刚导入的文献: 3.插入文献:①光标移到想插入文献的位置,②点击选项卡中EndNote X8,③点击Insert Citation,④点击Insert Selected Citation(s): 效果图: 自动插入了1. Jiang, Z.-m., Reflections on energy issues in China. Journal of Shanghai Jiaotong University (Science) 2008, 13 (3), 257-274. 注:

  1. Style一栏可以选择文献格式,大多数期刊都会提供格式文件:
  2. 可以多次加入同一文献,或在同一位置加入多个文献;
  3. 可以给Reference加个标题。

2018/06/20

免密和别名。

免密

ssh-keygen -t rsa

一路回车,将在~/.ssh/目录下生成密钥(id_rsa)和公钥(id_rsa.pub)。

<span class="c1" style="font-style: italic;color: rgb(153, 153, 153);">#以106.14.182.145这个服务器为例</span>
ssh-copy-id [email protected]

输入密码后,即把公钥信息(id_rsa.pub)拷入服务器的authorized_keys中。再次登录:

ssh [email protected]

再也不用输密码了。

别名

vi ~/.ssh/config

在config文件中输入:

Host aliyun
HostName 106.14.182.145
User root

Host xxx
HostName xxx.xxx.xx.xxx
User xxx
Port xx

保存,然后将config文件的权限设置为600:

chmod 600 ~/.ssh/config

现在,ssh可以用aliyun替代[email protected]了:

ssh aliyun

备注

这两步设置后,Ubuntu子系统是Windows最好的ssh软件。

2018/6/20

以我瞎写的四个公式为例:

在一个公式后面输#(),并且把光标放到两个括号之间:

点击插入-文档部件-域:

类别选编号,域名选AutoNum,格式选1,2,3,…,确定:

复制#(1):

光标移到#(1)后面(光标**务必要在公式里面**),按Enter回车,这时(1)自动到了公式最右边,退格键删掉这个段落符号:

将刚才复制的#(1)粘贴到第二个公式后面,发现已经变成了#(2):

同样回车,退格:

依葫芦画瓢,搞定剩下的公式,完工:

(本文中Word版本为Word 2016,版本1807,内部版本10301.20006)

参考资料

  1. 知乎. 如何解决word中公式加编号之后变为内嵌格式?. https://www.zhihu.com/question/65751973/answer/365060085
  2. 知乎. 你可能从未使用过的Word内嵌编号功能. https://zhuanlan.zhihu.com/p/22436463

2018年6月17日

本文将介绍 LAMMPS 在 Intel® MPI 、Open MPI 和 Ubuntu 下的安装方法。

#下载解压
wget http://lammps.sandia.gov/tars/lammps-stable.tar.gz
tar -vxf lammps-stable.tar.gz
cd lammps-16Mar18/src
#安装Package,例如这里安装USER-REAXC
make yes-user-reaxc
#所有Package的列表可见http://lammps.sandia.gov/doc/Section_packages.html

Intel® MPI

根据官方资料(Intel® MPI Library),Intel® MPI比Open MPI快数倍。

配置好Intel® MPI的环境变量后,只需:

make intel_cpu_intelmpi

即开始编译。

Open MPI

若已装Open MPI,可直接编译:

make mpi

若机器上没有装任何MPI,可自行安装Open MPI:

wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.0.tar.bz2
tar -vxf openmpi-3.1.0.tar.bz2
cd openmpi-3.1.0/
./configure --prefix=$(pwd)
make all install

在$HOME/.bashrc中加入环境变量:

export PATH=/home/njzjz/soft/openmpi-3.1.0/bin:$PATH
export LD_LIBRARY_PATH=/home/njzjz/soft/openmpi-3.1.0/lib:$LD_LIBRARY_PATH

然后在LAMMPS的src目录下编译:

source $HOME/.bashrc
make mpi

Ubuntu

先用管理员权限安装一些软件,再编译:

sudo apt install g++ mpi-default-bin mpi-default-dev libfftw3-dev libjpeg-dev libpng-dev
make ubuntu

最后

在当前目录下一键设置环境变量:

echo 'export PATH=$PATH:'$(pwd)>>$HOME/.bashrc
source $HOME/.bashrc