Maven 打包时丢失".properties"文件

今天在打包项目war文件的时候,突然发现居然每个action包里面的properties文件都没打进来,在网上看了半天终于找到解决方法。

问题:maven执行package命令打包时,src/main/java路径下的properties文件全部丢失。

继续阅读Maven 打包时丢失".properties"文件

macOS Sierra (10.12.3)编译Faiss

最近Facebook AI实验室开源了相似性搜索库Faiss
Faiss是用于有效的相似性搜索(similarity search)和稠密矢量聚类(clustering of dense vectors)的库。它包含了可在任何大小向量集合里进行搜索的算法,向量集合的大小甚至可达到RAM容纳不下的地步。另外,它还包含了用于评估和参数调优的支持代码。FaissC++编写,有Python/numpy的完整包装。其中最有用的一些算法则在GPU上实现。

机器上没有安装HomeBrew的,请参考让Mac也能拥有apt-get类似的功能——Brew

下面,我们介绍一下如何在macOS Sierra (10.12.3)上编译Faiss

1.下载Faiss源代码

$ git clone https://github.com/facebookresearch/faiss.git

2.安装编译需要的工具

$ brew install llvm

3.修改调整源代码,准备编译

$ cd faiss
$ cp example_makefiles/makefile.inc.Mac.brew makefile.inc

4.编译

$ make all

5.执行测试用例

#需要手工指定动态库的搜索路径,否则会提示“dyld: Library not loaded: @rpath/libomp.dylib”,导致进程无法启动

$ export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/opt/llvm/lib/
$ ./tests/demo_ivfpq_indexing

其余的示例,参考源代码中的INSTALL文件中的内容即可。

在Ubuntu 14.04 系统Tomcat 7 部署Apache Archiva 2.2.1一段时间后提示"apache archiva Login for user admin failed, message: Account admin is locked"的解决方法

参照 在Ubuntu 14.04 系统中的Apache Tomcat上部署Apache Archiva 2.2.1 一段时间后提示:

apache archiva Login for user admin failed, message: Account admin is locked

解决方法为:
1.停止Tomcat 7服务

$ service tomcat7 stop

2.移除derby数据库

$ rm -rf /data/Archiva/derby

3.启动Tomcat 7服务

$ service tomcat7 start

如此操作完成后,就可以在界面上出现重新设置admin用户密码的界面了。

默认情况下,每次重新设密码之后都是会在90之后会过期,正常情况下,我们只能通过修改这个默认时间为很长时间来规避这种情况。

$ vim /data/Archiva/conf/archiva.xml

然后找到如下内容:

<expiration>
    <enabled>false</enabled>
    <days>90</days>
</expiration>

然后修改成:

<expiration>
    <enabled>false</enabled>
    <days>999999</days>
</expiration>

接下来,需要重启Tomcat 7服务:

$ service tomcat7 restart

注意,在新版本中,貌似这样设置是无效的,重启后观察配置文件,会发现,又被改回了90天。

如何卸载Ubuntu 14.04老旧无用的Linux内核文件

相信有很多朋友会问,我已经升级 Ubuntu 内核很多次了,但要如何卸载老旧无用的 Linux 内核文件来节省磁盘空间呢?本文我们就来介绍移除老旧 Ubuntu 内核文件的方法。

在 Ubuntu 环境中,我们有很多种方式可以升级内核。 Ubuntu 桌面版本可以在每天自动更新时升级内核,Ubuntu Server 可以使用 unattended-upgrade 自动更新的方式来升级内核,当然还可以使用 apt-get 或 aptitude 来同时兼容 Ubuntu 桌面或服务器版本。

随着使用时间的推移,被替换下来的老旧内核版本将会占用一定的磁盘空间而造成浪费。每个内核映像文件和相关的模块文件/header(头文件)会占用大约 200 – 400 M 的磁盘空间,如果频繁升级内核版本,老旧内核文件对空间的浪费将会迅速增加。

继续阅读如何卸载Ubuntu 14.04老旧无用的Linux内核文件

支持向量机通俗导论(理解SVM的三层境界)

作者:July 。致谢:pluskid、白石、JerryLead。
说明:本文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年11月。
声明:本文于2012年便早已附上所有参考链接,并注明是篇“学习笔记”,且写明具体参考了pluskid等人的文章。文末2013年的PDF是为证。

前言

动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见文末参考链接),但在描述数学公式的时候还是显得不够。得益于同学白石的数学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能足以成为一篇完整概括和介绍支持向量机的导论性的文章。

本文在写的过程中,参考了不少资料,包括《支持向量机导论》、《统计学习方法》及网友pluskid的支持向量机系列等等,于此,还是一篇学习笔记,只是加入了自己的理解和总结,有任何不妥之处,还望海涵。全文宏观上整体认识支持向量机的概念和用处,微观上深究部分定理的来龙去脉,证明及原理细节,力保逻辑清晰 & 通俗易懂。

同时,阅读本文时建议大家尽量使用chrome等浏览器,如此公式才能更好的显示,再者,阅读时可拿张纸和笔出来,把本文所有定理.公式都亲自推导一遍或者直接打印下来(可直接打印网页版或本文文末附的PDF)在文稿上演算,从而享受随时随地思考、演算的极致快感。

继续阅读支持向量机通俗导论(理解SVM的三层境界)

Python实现抓取CSDN首页文章列表

1.使用工具:

Python 3.5
BeautifulSoup

2.抓取网站:
csdn首页文章列表 http://blog.csdn.net/
3、实现代码:

__author__ = 'Administrator'
import urllib.request
import re
from bs4 import BeautifulSoup
 
 
########################################################
#
#              抓取csdn首页文章http://blog.csdn.net/?&page=1
#
#             参数baseUrl是要访问的网站地址
#
########################################################
class CsdnUtils(object):
    def __init__(self):
        user_agent='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
        self.headers ={'Cache-Control':'max-age=0',
                        'Connection':'keep-alive',
                        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                        'User-Agent':user_agent,
                        }
        self.contentAll=set()
    def getPage(self,url=None):
        request=urllib.request.Request(url,headers=self.headers)
        response=urllib.request.urlopen(request)
        soup=BeautifulSoup(response.read(),"html.parser")
        #print(soup.prettify())
        return soup
    def parsePage(self,url=None,page_num=None):
        soup=self.getPage(url)
        itemBlog=soup.find_all('dl','blog_list clearfix')
        cnArticle=CsdnUtils
        print("========================第",page_num,"页======================================")
        for i,itemSingle in enumerate(itemBlog):
            cnArticle.num=i
            cnArticle.author=itemSingle.find('a','nickname').string
            cnArticle.postTime=itemSingle.find('label').string
            cnArticle.articleView=itemSingle.find('em').string
            cnArticle.title=itemSingle.find('h3',"tracking-ad").string
            cnArticle.url=itemSingle.find("h3").find("a").get("href")
            print("数据:",cnArticle.num+1,'\t',cnArticle.author,'\t',cnArticle.postTime,'\t',cnArticle.articleView,'\t',cnArticle.title,'\t',cnArticle.url)
 
 
#######     执行    ########
if __name__ =="__main__":
 
    #要抓取的网页地址'http://blog.csdn.net/?&page={}'.format(i+1),i+1)
    url = "http://blog.csdn.net"
 
    cnblog=CsdnUtils()
    for i in range(0,2):
        cnblog.parsePage(url,i+1)

4.执行脚本

$ python3 spyder.py

继续阅读Python实现抓取CSDN首页文章列表

译文 | GAN之父在NIPS 2016上做的报告:两个竞争网络的对抗

作者:Ian Goodfellow
翻译:七月在线DL翻译组
译者:范诗剑 汪识瀚 李亚楠
审校:管博士 寒小阳 加号
责编:翟惠良 July
声明:本译文仅供学习交流,有任何翻译不当之处,敬请留言指正。转载请注明出处。

2016年的NIPS上,Ian Goodfellow做了主题为《生成对抗网络(Generative Adversarial Networks)》的报告,报告包括以下主题:
- 为什么生成式模型是一个值得研究的课题
- 生成式模型的工作原理,以及与其他生成模型的对比
- 生成式对抗网络的原理细节
- GAN相关的研究前沿
- 目前结合GAN与其他方法的主流图像模型

原英文精辟演示文稿请点击——
PDF版:www.iangoodfellow.com/slides/2016-12-04-NIPS.pdf
KeyNote版:www.iangoodfellow.com/slides/2016-12-04-NIPS.key

本站PDF版本:Generative Adversarial Networks (GANs)

本站KeyNote版:Generative Adversarial Networks (GANs)

一句话描述GAN——
GAN之所以是对抗的,是因为GAN的内部是竞争关系,一方叫generator,它的主要工作是生成图片,并且尽量使得其看上去是来自于训练样本的。另一方是discriminator,其目标是判断输入图片是否属于真实训练样本。
更直白的讲,将generator想象成假币制造商,而discriminator是警察。generator目的是尽可能把假币造的跟真的一样,从而能够骗过discriminator,即生成样本并使它看上去好像来自于训练样本一样。

继续阅读译文 | GAN之父在NIPS 2016上做的报告:两个竞争网络的对抗

CVE-2017-5638:Struts 2 远程代码执行漏洞

背景介绍

Struts2的使用范围及其广泛,国内外均有大量厂商使用该框架。

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2Struts的下一代产品,是在struts 1WebWork的技术基础上进行了合并的全新的Struts 2框架。

继续阅读CVE-2017-5638:Struts 2 远程代码执行漏洞

Ubuntu 16.04通过Ubuntu-Make安装最新版本的Eclipse-Cpp

Ubuntu-make可以非常方便的帮助开发者安装开发工具,只需要一条命令即可。但是由于Eclipse官网的调整,导致默认通过apt-get安装的Ubuntu-make无法正确的从Eclipse官网下载安装包,一直提示:

umake eclipse  Download page changed its syntax or is not parsable

因此只能是卸载默认的安装包,然后从github上手工下载安装最新的版本来解决这个问题,具体操作如下:

$ sudo apt-get remove ubuntu-make
$ sudo apt-get autoremve
$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install python3-setuptools
$ sudo apt-get install python3-yaml
$ sudo apt-get install python3-argcomplete
$ sudo apt-get install python3-progressbar
$ sudo apt-get install python3-gnupg
$ git clone https://github.com/ubuntu/ubuntu-make.git
$ cd ubuntu-make/
$ python3 setup.py build
$ sudo python3 setup.py install

$ /usr/local/bin/umake -v ide eclipse-cpp

参考链接


Can't download eclipse anymore, as download link has changed

macOS Sierra (10.12.3)编译Caffe

截止2017-03-05的最新版本代码,后续代码编译可能有所不同。为了实验目的,本次不开启GPU的支持,仅仅使用CPU。

虽然Google开源了tensorflow,但是受限于天朝的网络问题,在没有梯子的情况下,是基本上没办法编译成功的,因此我们尝试使用老牌的Caffe来进行实验,看看效果。

默认大家已经成功安装了HomeBrew,没有安装的同学参考 让Mac也能拥有apt-get类似的功能——Brew。默认大家已经安装好Xcode的最新版本,并且安装了命令行编译工具。

  • 安装Git
$ brew install git
  • 下载源代码
$ git clone https://github.com/BVLC/caffe.git
  • 安装依赖的编译库
$ brew install protobuf

$ brew install boost

$ brew install gflags

$ brew install glog

$ brew install homebrew/science/opencv

$ brew install hdf5

$ brew install leveldb

$ brew install lmdb
  • 编译Caffe
$ cd caffe

$ cp Makefile.config.example Makefile.config

修改其中的编译选项:

$ vim Makefile.config

然后修改里面的内容,找到如下内容:

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

去掉注释,修改后如下:

# CPU-only switch (uncomment to build without GPU support).
 CPU_ONLY := 1

完成设置后, 开始编译

$ make all -j4

$ make test

$ make runtest

编译好的执行程序在build/tools/目录下。