今日使用VMware中的Windows 7虚拟机(NAT模式)发现没有网络,网卡显示“网络电缆已拔出”,检查之后发现宿主机的VMware NAT service服务没有启动,手动启动弹出错误提示“1067:进程意外终止”。 由于昨日刚升级宿主机的系统,猜想可能由于某些原因破坏了某些服务的依赖文件,如果是这样可能必须重装VMware才能解决。经过一些尝试之后,找到了不需要重装VMware的解决方法: 打开VMware的虚拟网络编辑器,选择“还原默认设置”,这时它会自动删除所有的VMware网络服务和虚拟网卡并且重新安装服务。如果操作完之后VMware NAT service消失了,就再进行一次“还原默认设置”,应该能解决问题。 还原默认设置之后,VMware NAT的子网IP和DHCP设置会发生变化,如果之前有IP相关的设置(比如端口转发),则使用虚拟网络编辑器重新设置子网的IP段即可。
Matlab求解变参数常微分方程组
以下代码在Matlab R2010a运行通过。 待求解函数示例:
1 2 3 |
function dx = r1( t, x, k ) dx = -k*x; end |
k为可变参数。 求解主程序:
1 2 |
sol = ode45(@r1, [0,10], 1, [], 1) deval(sol, [2], 1) |
如上所示,在调用ODE solver时,格式为 solver(odefun, [t0 tfinal], y0, options, args...) 其中 args... 为可变参数,将被转发至待求解的方程中。 Matlab的自带帮助中并没有明确说明ODE solver支持这样的调用形式,不过这样的调用形式是符合Matlab函数定义的习惯的。上例中,ode45函数的最后一个参数(args…)为1,该参数被转发至待求解的方程中作为参数k。 上述求解过程使用了 deval() 来返回t=2时的结果,此函数的第一个实参是sol,是一个structure,要让ODE solver返回该类型,则ODE solver必须采用函数句柄的方式输入待求解的函数,若使用inline函数将无法返回该structure而仅返回积分区间。关于该structure的具体定义可查看Matlab帮助。
引起SSH no such user or key错误的不常见原因
今天花了大半天的时间在Cent OS系统上搭建了一个GitLab,本来是傻瓜式的一键安装,可是却始终无法SSH登陆获取仓库,使用HTTP登陆则可以。 Git提示SSH错误,No such user or key。 尝试修改各种设置都无果,最终发现原因是我的SSH公钥在.ssh/authorized_keys里写了两次,只要删掉其中一个就一切正常了。 为什么会被写两次呢?因为一开始我指定GitLab在Linux下使用的用户是git,之后我又修改了/etc/gitlab/gitlab.rb的设置,将它使用的用户变为了gitlab。然而gitlab-ctl reconfigure命令执行时存在问题,没有给/home/gitlab/.ssh赋予正确的用户权限。 此时我在Gitlab的网页端进行Profile管理时删除了我的SSH Key,然而由于gitlab用户并没有权限修改/home/gitlab/.ssh,导致authorized_keys并未被修改,而网站数据库中的SSH Key已经被删除了(这里实际上也是一个事务操作上的Bug)。 之后我发现用户权限不正确并修改了文件权限。此时,我为了验证authorized_keys可以被正常修改,就又从网页端添加了同一个key,导致这个key被写入了2次。
Microsoft Word中标准态符号⊖的输入方法
在化学/化工领域,经常使用Microsoft Office Word排版的人可能会对输入标准态符号⊖感到头疼,很多人在输入标准态符号时需要从“特殊符号”里找很久。近日偶然发现Word也可以实现一种类似于LaTeX的字符转义符号输入方式,和平日里常用的方法一起记录于此。 一、MathType中的输入方法 在化学平衡常数、标准电极电势这些常用到大量公式的地方,一般会选择MathType输入公式,而MathType虽然功能强大却也没有把标准态符号放入常用符号中,有些人可能会用希腊字幕θ去代替,但毕竟不是一个美观的方案。 实际上,我们可以用一个字体输入这个符号,即Webdings字体,这是Windows默认安装的一个字体。为了使用这个字体,需要修改一下MathType的Style设置。打开MathType输入窗口,选择Style菜单——Define,这里我将User 1的Font设置为了Webdings。 保存之后回到输入界面,输入一个y,选中y,将Style改为User 1,这个y就变成了⊖(当然,这样修改字体的方法也可以用在普通文本中,只是因为⊖一般和一串公式同时出现,所以这里以MathType中的方法为例)。设置界面及最终效果如图所示: 二、Word中的快速输入方法 在Word中,除了使用“特殊符号”这一较为麻烦的方式之外,实际上Word提供了一种很快的输入方式,有些类似于LaTeX的通过字义转换的数学符号输入方法。其实Word还可以使用“域”这一功能实现字义转换,输入数学公式,并且其通用可编辑性强于MathType输入的。 首先,需要对Word做一些设置,选择文件——选项——校对——自动更正选项,在“数学符号自动更正”选项卡中把“在公式区以外使用‘数学符号自动更正’规则”的勾打上。 回到Word输入界面,键入\ominus,回车,一个标准态符号就出现了,设置界面及最终效果如图所示:
已知平衡数据利用Matlab作三元相图
需准备: 平衡线数据,连接线数据 1.作直角三角形相图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
%limitline.csv 三列数据依次为平衡线上各点S,B,A的质量分数 %tieline.csv 六列数据依次为连接线上两点的S,B,A的质量分数 MLine = csvread('limitline.csv'); TLine = csvread('tieline.csv'); MLine = MLine ./100; TLine = TLine ./100; X = 0:0.01:1; Y = interp1(MLine(:,1),MLine(:,3),X,'cubic'); plot([0,1],[1,0]);hold on; plot(X,Y),axis([0 1 0 1]),axis equal,axis square pointNumber = size(TLine); for k = 1:pointNumber(1) plot([TLine(k,1),TLine(k,4)],[TLine(k,3),TLine(k,6)]) end |
2.作等边三角形相图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
%limitline.csv 三列数据依次为平衡线上各点S,B,A的质量分数 %tieline.csv 六列数据依次为连接线上两点的S,B,A的质量分数 MLine = csvread('limitline.csv'); TLine = csvread('tieline.csv'); MLine = MLine ./100; TLine = TLine ./100; X = 0:0.01:1; Y = interp1(MLine(:,1)+0.5*MLine(:,3),MLine(:,3)*sqrt(3)/2,X,'cubic'); plot([0,0.5],[0,sqrt(3)/2]);hold on; plot([1,0.5],[0,sqrt(3)/2]);hold on; plot(X,Y),axis([0 1 0 1]),axis equal,axis square pointNumber = size(TLine); for k = 1:pointNumber(1) plot([TLine(k,1)+0.5*TLine(k,3),TLine(k,4)+0.5*TLine(k,6)],[TLine(k,3)*sqrt(3)/2,TLine(k,6)*sqrt(3)/2]) end |