灵魂机器

终有一天机器也有灵魂


  • 首页

  • 分类

  • 归档

  • 标签

制作 VMware ESXI 5 U盘安装盘

发表于 2012-04-18   |   分类于 Tools   |  

有两种方法,使用 unetbootin ,或使用 LinuxLive USB Creator刻录可启动U盘。

##使用 unetbootin
这个方法最自动化,点击两下按钮即可,但是有时候会失败(我用EXSi 5.0 的ISO失败,但是用 EXSi 5.0U1可以成功),U盘启动不了。

  1. 单击 光盘镜像,选择ISO文件VMware-VMvisor-Installer-5.0.0.update01-623860.x86_64.iso。
  2. 选择U盘,点击“确定”开始刻录。刻录后用U盘启动机器开始安装即可。如下图所示。

##使用 LinuxLive USB Creator

  1. 格式化U盘,文件系统为FAT32,并设置为主分区,命令如下:
    # 使用管理员权限运行cmd 
    diskpart 
    list disk 
    select disk USB number (例如 select dist 1) 
    clean 
    create partition primary 
    active 
    format fs=fat32 quick 
    assign 
    exit
    
阅读全文 »

在Ubuntu上安装Hadoop

发表于 2012-01-03   |   分类于 Hadoop   |  

本文所使用的版本是 hadoop 1.0.0,即 2011年12月27日发布的1.0正式版。

详细安装步骤如下,有大步骤,每个步骤里面有小步骤,绝大部分是必选,只有2步是可选的,粗体表示要特别注意的地方。

##1. 用vmware workstation 新建三台虚拟机
首先用vmware workstation 新建一台ubuntu server,装好操作系统,安装各种必须的软件,包括安装好hadoop。安装好后然后用浅拷贝Create a linked clone 克隆出两台作为slave,这样有了三台ubuntu机器。启动三台机器,假设IP分别为192.168.1.131, 192.168.1.132, 192.168.1.133, 131做为master 和 SecondaryNameNode, 身兼两职,132为 slave01, 133为slave02。

##2. 修改机器名
这一步看起来貌似不必要,其实是必须的,否则最后运行wordcount等例子时,会出现“Too many fetch-failures”。因为HDFS用hostname而不是IP,来相互之间进行通信(见后面的注意1)。

  • 192.168.1.131上执行

    dev@bogon:~$ sudo vi /etc/hostname
    

输入master,重启,会发现命令提示符变为了 dev@master:~$

用同样的方法,将192.168.1.132改为slave01,192.168.1.133改为slave02。

阅读全文 »

SSH无密码登录的配置

发表于 2012-01-02   |   分类于 DevOps   |  

根据公钥加密的思想,如果机器A想无密码登录其他N台机器,只需要在自己机器上生成一对公钥和密钥,然后把密钥给这N台机器,这样,这N台机器,有了A的公钥,就可以解密A的数据包,跟A正常通信了。

通常在一个集群中,我们会选择一台机器作为跳板机,在这台机器上登录其他机器,因此,无名需要在跳板机上生成一对公钥和密钥。一般的,我们也会把跳板板机作为整个集群的master,例如Hadoop的NameNode,因此最好选一台内存比较大的机器作为跳板机。

下面详细讲解如何配置从跳板机SSH无密码登录到所有机器(包括自己)。

根据公钥加密的思想,如果机器A想无密码登录其他N台机器,只需要在自己机器上生成一对公钥和密钥,然后把密钥给这N台机器,这样,这N台机器,有了A的公钥,就可以解密A的数据包,跟A正常通信了。

通常在一个集群中,我们会选择一台机器作为跳板机,在这台机器上登录其他机器,因此,无名需要在跳板机上生成一对公钥和密钥。一般的,我们也会把跳板板机作为整个集群的master,例如Hadoop的NameNode,因此最好选一台内存比较大的机器作为跳板机。

下面详细讲解如何配置从跳板机SSH无密码登录到所有机器(包括自己)。

##前提: 修改hosts文件
假设有三台机器,192.168.1.131, 192.168.1.132, 192.168.1.133,hostname分别是master, slave01, slave02

##1.在master上生成一对公钥和密钥

dev@master:~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

##2. 将公钥拷贝到自己

dev@master:~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

##3. 将公钥拷贝到其他机器

dev@master:~$ scp ~/.ssh/id_dsa.pub dev@slave01:~
dev@master:~$ scp ~/.ssh/id_dsa.pub dev@slave02:~
#追加到authorized_keys
dev@master:~$ ssh slave01
dev@slave01:~$ mkdir .ssh
dev@slave01:~$ cat id_dsa.pub >> .ssh/authorized_keys
dev@slave01:~$ exit
dev@master:~$ ssh slave02
dev@slave02:~$ mkdir .ssh
dev@slave02:~$ cat id_dsa.pub >> .ssh/authorized_keys
dev@slave02:~$ exit

##4. 设置.ssh目录和authorized_keys文件的权限
在被登录的每台机器上,执行如下命令:

chmod 755 .ssh
chmod 600 ~/.ssh/authorized_keys

##5. 测试一下

#在 master执行
dev@master:~$ ssh slave01

第一次还是需要密码的,exit退出再试一次,就不需要密码了。

如果登陆不上,试试先关闭所有机器的防火墙,例如Ubuntu的命令是:

dev@slave01:~$ sudo ufw disable

##参考资料
Howto Linux / UNIX setup SSH with DSA public key authentication (password less login)

HOWTO: Generating SSH Keys for Passwordless Login

用javac命令行编译多个java文件

发表于 2011-06-23   |   分类于 Language   |  
  1. CLASSPATH一定要具体到jar路径,例如
1
export CLASSPATH=/usr/lib/jvm/java-6-sun/lib/commons-codec.jar:/usr/lib/jvm/java-6-sun/lib/commons-httpclient-3.1.jar:/usr/lib/jvm/java-6-sun/lib/commons-logging-1.1.jar:/usr/lib/jvm/java-6-sun/lib/dt.jar:/usr/lib/jvm/java-6-sun/lib/htmlconverter.jar:/usr/lib/jvm/java-6-sun/lib/jconsole.jar:/usr/lib/jvm/java-6-sun/lib/junit-4.1.jar:/usr/lib/jvm/java-6-sun/lib/mysql-connector-java-5.1.16-bin.jar:/usr/lib/jvm/java-6-sun/lib/sa-jdi.jar:/usr/lib/jvm/java-6-sun/lib/tools.jar
  1. 每个java文件给出路径,最常见的是用通配符*,不支持目录递归。

  2. 最好加上 -d,这样会在这个目录下生成class文件,而不会和java文件混在一起

看我的一个具体的例子

1
javac -d /home/dfq/crawler/bin crawler/*.java weibo4j/*.java weibo4j/org/json/*.java weibo4j/*.java weibo4j/util/*.java weibo4j/http/*.java

运行时用如下命令:

1
2
cd /home/dfq/crawler/bin
java -cp .:$CLASSPATH crawler.ManagerThread

推荐给TeX新手的电子书和书籍

发表于 2011-04-17   |   分类于 Tools   |  

##CTEX自带的文档

  1. 安装好CTEX后,c:CTEXCTeXctexdoc下的两个文档,ctex-faq.pdf和lshort-cn.pdf(即93 分钟学会 LaTeX2e)
  2. ftp://ftp.ctex.org/pub/tex/documents/bible/ 下的 LaTeX_manual.zip
    对于初学者,上面3个文档足够了,在c:CTEXCTeXctexdoc目录下的其他几个文档也非常好。

    如果想进一步学习,推荐下面一本书。

  3. 《LaTeX入门与提高》,陈志杰,2008,高等教育出版社,卓越上有卖的。这里有个PDF扫描版。
阅读全文 »

基于朴素贝叶斯的文本分类算法

发表于 2010-05-28   |   分类于 Machine-Learning   |  

作者: 灵魂机器
新浪博客:www.weibo.com/soulmachine
作者博客:www.yanjiuyanjiu.com

摘要:常用的文本分类方法有支持向量机、K-近邻算法和朴素贝叶斯。其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用。本文详细介绍了朴素贝叶斯的基本原理,讨论了两种常见模型:多项式模型(MM)和伯努利模型(BM),实现了可运行的代码,并进行了一些数据测试。

关键字:朴素贝叶斯;文本分类

Text Classification Algorithm Based on Naive Bayes
Author: soulmachine
Email:soulmachine@gmail.com
Blog:www.yanjiuyanjiu.com

Abstract:Usually there are three methods for text classification: SVM、KNN and Naïve Bayes. Naïve Bayes is easy to implement and fast, so it is widely used. This article introduced the theory of Naïve Bayes and discussed two popular models: multinomial model(MM) and Bernoulli model(BM) in details, implemented runnable code and performed some data tests.

Keywords: naïve bayes; text classification

##1 贝叶斯原理

###1.1 贝叶斯公式

设A、B是两个事件,且P(A)>0,称 $$P(Y \vert X)=\dfrac {P(XY)}{P(X)}$$ 为事件A发生的条件下事件B发生的条件概率。

乘法公式 $$P(XYZ)=P(Z \vert XY)P(Y \vert X)P(X)$$
全概率公式 $$P(X)=P(X \vert Y_1)+ P(X \vert Y_2)+…+ P(X \vert Y_n)$$
贝叶斯公式 $$P(Y_i \vert X)=\dfrac{P(XY_i)}{P(X)}=\dfrac{P(X \vert Y_i)P(Y_i)}{P(X)}=\dfrac{P(X \vert Y_i)P(Yi)}{\sum\limits {j=1} ^{n} P(X \vert Y_j)}$$

在此处,贝叶斯公式,我们要用到的是 $$P(Y_i \vert X)=\dfrac{P(X \vert Y_i)P(Y_i)}{P(X)}$$

以上公式,请读者参考《概率论与数理统计(第五版)》的1.4节“条件概率”(这里将原书中的A换成了X,B换成了Y),获得更深的理解。

阅读全文 »

Java使用imageio 读写图像

发表于 2010-04-01   |   分类于 Tools   |  

Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)有三个方法:

  1. Java Image I/O API,支持常见图片,从Java 2 version 1.4.0开始就内置了。
    主页:http://java.sun.com/javase/6/docs/technotes/guides/imageio/index.html
  2. JAI 中的 Image I/O Tools,支持更多图片类型,例如JPEG-LS, JPEG2000, 和 TIFF。
    主页:https://jai-imageio.dev.java.net/。JAI 是一个关于图像处理的框架,很庞大,
    其中仅仅jai-imageio是关于图像I/O的,其他的可以不看。
  3. JAI的com.sun.media.jai.codec 也有一定的图像解码能力

当然,还有众多的java开源工具包可以读写图像,例如JIMI, JMagic等,但JDK目前本身能
够读写图片,就用JDK的,开发和部署方便,不需要额外下载jar包。

由于JAI是Java新加入的,很多组件不是正式规范,JDK不自带,因此开发和部署需要额外
安装,安装文件在官网https://jai.dev.java.net/下载得到。

如果你仅仅想读取常见格式的图片,不需要用JAI这么高级这么庞大的东西,
用Java Image I/O API即可。

下面重点介绍 Java Image I/O API。

Java Image I/O API 主要在 javax.imageio 下面。JDK已经内置了常见图片格式的插件,
但它提供了插件体系结构,第三方也可以开发插件支持其他图片格式。

阅读全文 »

Java质量检测评估工具

发表于 2010-03-31   |   分类于 Tools   |  

Java代码质量检测评估工具
“五大” 代码分析领域:

  • 编码风格
  • 冗余代码
  • 代码覆盖率
  • 依赖项分析
  • 复杂度监控

一下列举了一些目前比较流行的工具。网址后面列出了其PR值,可以反映此工具的流行度。

##1. 编码风格
CheckStyle
Home page: http://checkstyle.sourceforge.net/ (6)
对应的eclipse插件有多个,其中eclipsecs最常用
Home page: http://eclipse-cs.sourceforge.net/ (6)
eclipse插件URL:http://eclipse-cs.sf.net/update/

##2. 冗余代码
Simian http://www.redhillconsulting.com.au/products/simian/ (5)
PMD 的 CPD http://pmd.sourceforge.net/cpd.html (5)

##3. 代码覆盖率
EMMA http://emma.sourceforge.net/ (6)
Cobertura http://cobertura.sourceforge.net/ (6)
EclEmma http://update.eclemma.org/ (5)
Coverlipse http://coverlipse.sourceforge.net/ (3)

##4. 依赖项分析
JDepend http://clarkware.com/software/JDepend.html (6)

##5. 复杂度监控
Metrics http://metrics.sourceforge.net/ (4)

##6. 静态分析工具
具有以上两项或两项以上的综合工具(也称为静态分析工具):

###6.1 PMD
Home page: http://pmd.sourceforge.net/ (6)
eclipse插件URL:http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/

###6.2 FindBugs http://findbugs.sourceforge.net/ (6)
eclipse插件URL:http://findbugs.cs.umd.edu/eclipse

FindBugs 检查程序生成的class文件,即分析字节码
PMD 检查源码,分析源代码

###6.3 Jtest
http://www.parasoft.com/jtest

###6.4 Jlint
http://artho.com/jlint/ (5)

###6.5 Lint4j
http://www.jutils.com/ (4)

我个人平时最常用的是Checkstyle,其次是PMD,大家可以参考一下。

##参考资料
http://blog.csdn.net/cb_121/archive/2009/05/22/4208792.aspx

使用pdfbox 抽取PDF文件中的文本

发表于 2010-03-28   |   分类于 Tools   |  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.yanjiuyanjiu.search;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
/**
* 抽去PDF文件中的文本.
* @author soulmachine
*
*/
public final class PDFboxTest {
/** 禁止创建对象. */
private PDFboxTest() {
}
/**
* 抽取PDF中的文本.
* @param f PDF文件
* @return PDF对应的文本字符串
*/
public static String getText(final File f) {
String text = "";
try {
PDDocument pdfdocument = PDDocument.load(f);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(1); // 只抽取第1页和第2页
stripper.setEndPage(2);
text = stripper.getText(pdfdocument);
pdfdocument.close();
} catch (IOException e) {
e.printStackTrace();
}
return text;
}
/** 测试.
*
* @param args PDF文件路径
*/
public static void main(final String[] args) {
File file = new File(args[0]);
System.out.println(PDFboxTest.getText(file));
}
}

java命令行下运行class文件

发表于 2010-02-15   |   分类于 Language   |  

今天碰到了一个很变态的问题,写了一个很简单的HelloWord.java,内容如下:

1
2
3
4
5
6
7
package com.yanjiuyanjiu;
public class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello World!”);
}
}

在eclipse中运行是可以的,但是在命令行下运行总是失败。我的工程位置为 d:workspaceHelloWorld。

尝试了很多次,如下:

阅读全文 »
1…56
soulmachine

soulmachine

一些技术笔记

60 日志
14 分类
9 标签
RSS
GitHub Twitter 微博 知乎
Links
  • 连城
  • 笨狗随手留下
  • 阎栋
  • 并行实验室
  • JavaChen
  • 沈峰
  • 李海鹏
  • Eric
  • 梁兄的技术博客
  • 王孝舒的博客
  • ForeverLee
  • CMU张宇
© 2017 soulmachine
由 Hexo 强力驱动
主题 - NexT.Pisces