Error installing metadata: Error updating group repository metadata

当执行mvn install的时候,如果ctrl+C突然中断mvn install的执行,就可能碰到“Error installing artifact’s metadata: Error installing metadata: Error updating group repository metadata input contained no data”错误,导致mvn install失败。

搜集了半天才找到答案,这里记录一下,解决办法是:

在~/.m2/repository/目录下找到文件内容为空的maven-metadata-local.xml文件,并删除掉这个空文件,重新mvn install即可。或者直接用下面的命令也可以

 

阿里云ECS上nginx安装免费证书

可在阿里云购买免费的Symantec品牌的单域名证书(每个子域需要单独购买免费的证书),购买地址:https://common-buy.aliyun.com/?commodityCode=cas#/buy

由于一次只能购买一年,所以一年后还需要再重新购买和安装。

阿里云购买Symantec单域名免费证书
阿里云购买Symantec单域名免费证书

 

购买后按照流程需要一段时间审批下来,审批下来后在SSL证书控制台查看并下载证书zip包,比如我的下来下来是:3021562_rongmayisheng.com_nginx.zip,解压后能看到两个文件:3021562_rongmayisheng.com.key、3021562_rongmayisheng.com.pem。

接下来是把这两个证书文件复制到对应ECS的nginx的conf/cert(我机器上具体目录是/usr/local/nginx/conf/cert)目录下,然后参考阿里云的官方文档来配置nginx.conf(我机器上具体目录是/usr/local/nginx/conf/nginx.conf):

在Nginx/Tengine服务器上安装证书

期间我碰到两个问题,通过这两篇文章得到解决:

  1. Nginx配置SSL证书时——nginx:[emerg]unknown directive ssl错误
  2. nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf

最后一步,需要在ECS上增加https 443端口的安全组入口流量,操作路径:进入ECS“实例列表”–>实例后面的“更多”–>“网络和安全组”–>“安全组设置”–>“安全组列表”tab–>找到之前配置了http 80端口的安全组并点击后面的“配置规则”–>“添加安全组规则”按钮。配置如下:

阿里云ECS配置https 443端口的安全组规则
阿里云ECS配置https 443端口的安全组规则

至此访问自己的域名应该能用https://开头了

这里附上我的完整配置:

 

mac输入法切换快捷键用不了

新买的mac各种不好用不会用,拼音输入法居然不能和英文通过快捷键自由切换。网上各种搜也没有找到我想要的问题。因为大家都说按command+space就可以切换,但是我的却不行。

后来在System Preference > Keyboard中发现,拼音输入法的切换按钮上ctrl+space,但是实际上ctrl+space是打开的spotlight,mac系统初始化做得真够烂的,应该是快捷键冲突了。

于是我重置了快捷键,发现spotlight变成command+space了,输入法变成了ctrl+space,试了试,spotlight可以用,但是输入法不能切换。晕,mac默认的快捷键都不能正常工作。

于是我尝试把spotlight和输入法的快捷键换一下,勾选了输入法切换快捷键,修改快捷键为command+space,然后勾选spotlight快捷键修改成ctrl+space,经测试,都ok了。

总结下:

spotlight快捷键这样设置:ctrl+space

输入法快捷键这样设置:command+space

我的系统版本:10.11.5 (15F34)

 

macbook-pro安装adobe-flash-player后仍然不能看视频

想用刚买的mac pro看看优酷,结果提示需要安装flash player插件,然后我按照提示安装了adobe flash player,重启了safari,结果还是看不了视频,仍然提示未安装flash player。重启了机器后仍然是不行。

各种百度google搜索都没有找到办法。后来自己摸索,整好久才发现,原来默认插件安装是PPAPI Plug-in,它不是针对safari浏览器的,而是针对opera和chrome的。而NPAPI Plug-in这个才是真对safari、firefox、遨游的。要检查你安装的flash player插件是否支持safari可以这样看:系统偏好(System Preference)> Flash Player > Updates里面,效果如下:

Flash Play设置
Flash Play设置

如图所示,如果你的两个插件中NPAPI插件为安装,那么你就需要安装这个插件,安装方法如下:

首先几点上图中的install now,然后会自动打开一个adobe的网站,

安装flash player
安装flash player

 

不要点install now,因为那样会再次安装PPAPI插件,而这个插件对safari没用。应该点击左边的一个链接“Need Flash Player for a different computer”,点了以后看到的效果应该是这样的:

安装支持safari和遨游的flash player
安装支持safari和遨游的flash player

如上图的方式选择NPAPI,然后点击Downloading Now,后续按照提示一步步进行即可,然后重启浏览器就可以看视频了。

说实话,mac系统真心不如windows来得简单直接,不知道是转型mac不习惯,还是真的不好用~~

 

fastjson解析大文件时抛出java.lang.ArrayIndexOutOfBoundsException: -1

最近发现偶尔出现fastjson解析大文件时抛出java.lang.ArrayIndexOutOfBoundsException: -1异常。可以我是按照官方的中的实例代码来写的,如下的代码:

所以非常不解,我自己单独写代码解析json文件又没有问题,在应用跑了一段时间后,就突然出现这个问题。由于fastjson的代码没有深入阅读,而且异常还不是每次都能碰到,因此没有查到直接原因。但同事发现换个api来解析就不抛出异常了,因此在这里记录下,下次朋友类似的情况,也可以按照种方式来解决。代码这样改:

可能这种改法效率没有上面那个好,但是这个确实没有抛出异常了,至少在可用性方面得到保证。如果你也碰到这种情况,也可以尝试这样修改你代码。

linux管理多个ssh公钥密钥

很多网上免ssh密码使用git的命令都没有考虑到多个公钥密钥的情况,这里搜集并整理一下管理多个ssh公钥密钥的步骤。

首先生成公钥和密钥,默认情况公钥的文件名比密钥末尾多.pub,下面以管理coding.net和github.com两个git仓库的ssh公钥密钥为例(如果是在windows下,请安装git客户端然后使用git bash来键入下面的命令;如果是在linux下,则直接使用终端即可):

这个命令直接通过-f参数指定了密钥和公钥的文件名,比如-f ~/.ssh/id_rsa.coding,其生产的密钥为~/.ssh/id_rsa.coding,公钥为~/.ssh/id_rsa.coding.pub,生成好了公钥和密钥后,把公钥文件中的内容追加到~/.ssh/authorized_keys文件的末尾,同理github的公钥密钥的生成方式类似。注意追加前authorized_keys文件的末尾需要有个换行符。追加后的效果可能是这样的:

同时把这个公钥添加到git仓库ssh key管理的地方,比如github是在Settings–>SSH Keys里面

当有多个ssh密钥需要管理时,一定要修改config文件的权限,否则你配置后仍然时无效的

~/.ssh/config文件的内容为:

其中User后面的值为你访问的git ssh地址的@之前的部分,比如:git@github.com:dongritengfei/beego.git的@前面是git,所以User后面的值为git。Host就是你的git仓库的域名或者IP。

然后是用这个命令来测试是否配置ok

如果你看到这个就说明你ok了,如果你看到下面的样子:

那你需要执行:

然后再试试应该就可以了。

其他

上面的说的SSH的情况,如果你使用的HTTPS的方式clone代码的话,需要免登就需要这样:http://www.akmumu.com/2015/06/02/360.html

input不能输入空格解决方法

最近发现页面中一个有suggest功能的input不能输入空格(这个input的suggest功能用到了bootstrap的dropdown功能),但是可以输入其他的字符,非常奇怪,我自己的js代码里面根本没有对输入做过任何的处理,而且输入空格时文本框中的内容没有任何变化。

只能猜测可能是其他的js中对所有的dropdown功能的input都做了按键监听和屏蔽。

无耐之下,用排除法,一个个的把页面中引入的js移除,查看输入框能否输入空格,经测试发现当删除了bootstrap的js引入后,input就可以输入空格了,说明问题在bootstrap.js里面,所以进到源码里面看了看,发现版本是v3.3.0,因此试试最新的版本v3.3.2,替换最新的版本后,恢复正常了。然后用svn的diff功能看了下两个版本源码中的区别,发现v3.3.2中修复了v3.3.0中的这个bug,增加了一个判断条件把文本框类型的控件过滤掉了。如下图:

bootstrap的bug:input不能输入空格
bootstrap的bug:input不能输入空格

参考ASCII表,空格的ascii码是32,还有三个按键也被屏蔽了,分别是:&、(、escape键。v3.3.0中的代码可以看到,如果是空格、&、(、escape键这4个按键中的任何一个,则执行:

e.preventDefault()
e.stopPropagation()

也就是说如果按的是上面的4个按键中的任何一个,就阻止这个事件的默认行为,所以文本框中的内容没有变化。v3.3.2版本中增加了一个控件tagName的判断,如果是input或者textarea就不做上面的阻止行为。这样正好解决了问题。

结论是:bootstrap v3.3.0里面的bug,bootstrap升级到最新的3.3.2就可以了。

skype在红米note上打不出电话

MIUI6
MUI6

前不久放出来的小米note没有抢到,于是干脆买了个红米note增强版,用起来还不错,所以软件都正常,但是唯独skype在红米上打不出电话,很奇怪,百度了一下搜集了一些意见,有人说要下载官方版本的skype,不要下载小米应用商店的,于是尝试了一下,发现确实官网的可以电话,看来如果下次再碰到应用超市的不能正常使用,就直接用浏览器进入官网直接下载安装,或者百度,或者在小米论坛里看看帖子。

java.lang.UnsupportedOperationException at javax.crypto.CipherSpi.engineGetKeySize

Unlimited Strength Java(TM) Cryptography Extension (JCE)
Unlimited Strength Java(TM) Cryptography
Extension (JCE)

java.lang.UnsupportedOperationException at javax.crypto.CipherSpi.engineGetKeySize的原因是默认的jdk的key长度有128bit限制,所以需要把这个长度限制放宽。官方有个无长度限制版的JCE jar包,下载地址:

jdk6:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

jdk7:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

解压后,将两个jar包(local_policy.jar、US_export_policy.jar)放在如下的目录下:

<java-home>/lib/security              [Unix]
<java-home>/jre/lib/security        [Unix]

<java-home>\lib\security              [Win32]
<java-home>\jre\lib\security        [Win32]

Reference

http://docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html#Introduction

local_policy.jar and US_export_policy.jar different with Unlimited Strength Vs Default.

 

https://wprp.zemanta.com/static/js/loader.js影响wordpress页面加载速度

最近发现我的wordpress博客访问速度又变慢了,在chrome下F12打开network一看,发现有这样一个请求无法连接:https://wprp.zemanta.com/static/js/loader.js?version=3.5.3。

于是用老方法,notepad++查找wordpress所有文件的代码(相关的方法请看:WordPress搭建的博客访问变慢的解决方案),发现public_html\wp-content\plugins\wordpress-23-related-posts-plugin\config.php文件中有两处出现了https://wprp.zemanta.com/static/(除了cache的文件以外)。

这样就清晰了,原来是WordPress Related Posts插件导致的,这个插件用于自动生成文章末尾的相关文章,这个插件是外国人开发的,所以引入了被墙的js。而现在国内支持各种相关链接的有很多:比如:无觅推荐、百度推荐、友荐等,我网站上已经使用百度推荐,于是可以直接删掉WordPress Related Posts插件,还顺带提升下性能。当然博客的内链少了一些,因为WordPress Related Posts插件是同步展示推荐的相关文章的,而百度推荐等其他的推荐都是js异步的。

现在博客速度恢复正常。