2013年11月30日星期六

BootCamp 5.0 最新版驱动下载(Win8/Win7)

用苹果iMac或者Macbook笔记本玩Windows么?那么这个文章和最新版的BootCamp 5.0.5033下载对你会有帮助。Boot Camp 5 这个新版本并不是4月份刚发的,而是苹果在3月份发布,因为有网友索要,因此特别在IT之家补上。
当买回iMac、Macbook Pro(含 Retina)、Macbook Air 新款电脑和本本后,很多国内消费者习惯性的去安装Win7Win8。不管你是彻底抹掉Mac OS X分区单装Win7、单装Win8,还是双系统保留Mac OS用Boot Camp来安装第二个系统,你都需要苹果官方最新的驱动程序下载。实际上,在Mac OS里面用Boot Camp来安装Windows 的时候,有一步是提示你下载保存Boot Camp for Windows这个苹果官方驱动包的。一般情况下,软媒小编建议大家关注并下载最新版本的Boot Camp,毕竟每次更新都能解决N多的兼容性问题,尤其是Windows8系统。
微软在2012年正式发布了Windows8正式版,但知道2013年的3月份,苹果才迟迟的推出了为Win8和Win7精心准备的驱动软件套装——BootCamp 5.0.5033 正式版驱动下载。这个版本解决了非常多的大小问题,之前当你使用Mac OS X系统里面自带的BootCamp 4 的驱动的时候,你会发现在Windows8系统里会出现发热厉害、电池表现差、系统不稳定等一些毛病,现在2013年最新版本的BootCamp 5.0 一出,完美的解决了Win8和Win7下因驱动造成的一系列问题,同时,显卡驱动方面的带来了游戏性能的大提升也是非常好的消息。
强烈建议所有安装了 Win8 的 Mac 电脑用户升级 BootCamp,基本上2010年之后的 Macbook Pro、Air、Mini 以及 iMac 均能完美支持 BootCamp 5 以及 Win8,而早于此日期的大多产品只能使用 BootCamp 4 与 Win7 了,苹果将不再提供升级了。新版本的 BootCamp 除了解决了 Win8 驱动的一系列bug之外,显卡驱动的游戏性能也有了不小提升哦……
BootCamp 5.0 版本更新简介
BootCamp 是苹果电脑的 Windows 驱动程序包的名称,BootCamp 5 主要提供了一系列的关键Bug修正和 Windows 8 系统下的硬件驱动更新,包括最新的 Macbook Pro Retina 视网膜屏幕、雷电接口、USB 3.0、Apple Trackpad触控板及所有主板芯片、WiFi网卡、声卡、蓝牙、键盘输入以及显卡的驱动等。为了你的爱机着想,使用 Mac 安装 Windows 的朋友应该没理由不更新它的。当然如果你不是使用苹果电脑的话可以完全无视这篇文章。
除了支持Win7和Win8系统这一功能之外,Boot Camp 5.0还将可以让用户在他们的Mac机中安装3TB的硬盘驱动。不过,用户在安装之前必须要确保自己的系统已经升级到OS X 10.8.3,Safari已经升级到6.0.3。
BootCamp 5 支持机型与操作系统:
基本上大部分主流的 Mac 电脑都可以升级到 BootCamp 5,包括 MacBook,Mac Mini,MacBook Pro,MacBook Air,iMac 都可以,一些如2009年前及之前的旧型号则不支持,只能安装 BootCamp 4。最简单的判断办法就是,先将 BootCamp 5 下载回去,如果安装时提示错误的话就乖乖去下回 BootCamp 4 吧。而对于操作系统的要求,Win8 和 Win7 下可以装5或4,而在 XP、Vista 下则最高只能安装4。另外 BootCamp 5 只支持64位的系统。
BootCamp 主要用于安装原生的 Windows 系统时使用,如果你使用 Parallels Desktop、VMware Fusion、VirtualBox 等虚拟机软件安装 Windows 的话是不需要安装这个驱动的。
BootCamp 5.0.5033 最新版 for Win7/Win8 下载:
Boot Camp 5 苹果官方网站:http://www.apple.com.cn/support/bootcamp/
Boot Camp 5.0.5033 苹果官方下载(简体中文版):
http://support.apple.com/downloads/DL1638/zh_CN/BootCamp5.0.5033.zip 
建议使用魔方优化大师里面的魔方U盘启动软件,来制作微软原版的Win7、Win8系统安装U盘,魔方最新版下载:点击此处
软件版本:5.0.5033
发布日期:2013-3-14
文件大小:553.62 MB
系統需求: MacBook Air(2011 年中)或更新机型、MacBook Pro(2010 年中)或更新机型、* 不支持 MacBook Pro 13 英寸 - 2010 年中、Mac Pro(2009 年初)或更新机型、Mac mini(2011 年中)或更新机型、iMac(2010 年中或更新机型)、Windows 7 x64、Windows 8 x64
软媒再次提示一:BootCamp 5.0 只支持64位的Win7或Win8系统;
软媒再次提示二:2009年前及之前的旧型号苹果Mac电脑则不支持使用BootCamp 5.0,建议依然使用BootCamp 4系列;
BootCamp 5.0.5033 最新版 for Win7/Win8 使用方法:
1、在Win7或Win8系统里将整个 .zip 文件内容解压到您指定存放的地方;
2、运行Boot Camp 文件夹里面的 setup 文件;软媒提醒:如果你抹掉了Mac OS所需的BootCamp隐藏分区,就别运行Setup了,直接找文件夹里面的驱动手动安装就可以了。
3、系统提示允许更改时,点按“是”然后按照屏幕上的说明操作。安装可能需要几分钟。请勿中断安装进程。安装完成后,在出现的对话框中点按“完成”。
4、系统重新启动对话框会出现。点按“是”以完成安装。 

2013款MacBook Air装Windows7单系统


经过两天的摸索,查找无数资料终于把2013款的MacBook Air装上了WIN 7,虽然网上有很多的资料但是都不是我想要的,第一个我的是2013款的MacBook Air,跟原来2012 11款MacBook Air完全不一样,2013款MacBook Air需要usb3的芯片驱动,要不会在装的时候导致鼠标键盘失灵,所以我们要把usb3装到系统映像文件里面,第二个我要在2013款MacBook Air装Win7单系统(这是个人喜好,苹果再占个系统会感觉很不爽),好了,我们知道我的需求之后就开始行动吧

首先准备工作:

2个4G的U盘,这样为了方便,一个U盘来做PE(最低要求WIN7PE,WIN8也行的,我这用的老毛桃),一个U盘来做系统的启动盘

要准备硬件就这么多了

第一步:做系统盘(苹果电脑下完成)

在苹果OS X系统下打开bootcamp,拷贝你的系统镜像文件到桌面,插入的U盘,这个U盘就是来做系统的启动盘了,bootcamp里面的做系统盘相信大家一看就明白了,就不多说了,大概可能就不到一个小时就完成了,完了之后就拔下U盘吧,注意:安装单系统的话就不要在bootcamp下安装系统,那个是安装双系统的



第二步:做PE启动盘(WIN 7 或WIN 8电脑下完成)

我用的时老毛桃,可以百度搜索一下老毛桃,下载最新的那个就可以了,不懂做PE的可以去百度一下。



第三步:格式化苹果系统(苹果电脑下完成)

插入你做好的PE的U盘,按下开机键时会听到苹果电脑会响一声,这时尽快按option键就会进入选择启动的系统,你会看到除了OS X系统之后后面多了一个windows系统,没错,那个就是刚刚做的PE,点PE进去系统,用DiskGenius分区工具删掉所有分区,不要犹豫,删掉苹果系统吧,然后选择磁盘,编辑选择转换成MBR格式,因为windows系统是要在MBR格式的硬盘下安装,苹果的好像是GUID什么的去了,不用管它是什么了,转换MBR格式之后然后可以用快速分区也行,按照你自己的爱好分为3个或者4个都没问题。好了,现在你的苹果系统已经没了,你开机就没有系统了,要想回去也行,开机的时候按option+command+R 联网恢复OS X系统可能需要8小时左右(可能我这网速比较慢)



第四步:把usb3芯片驱动载入到系统盘里面去(最重要的一步)

首先我们在微软的官网下载了intel c220的usb3的驱动,点击这里直接下载吧,本人就用这个亲测可用

Intel(R)_USB_3.0_eXtensible_Host_Controller_Driver.zip

下载完之后在某个盘下新建一个文件夹,为了方便,最好英文名的,如aaa。在这个文件夹下面再建立两个文件夹,一个叫usb3,一个叫mount   。
 用上面下载好的usb3驱动。一个压缩包。解压后里面drivers文件夹下有hcsswitch和xhci两个文件夹,根据你安装的win7版本32位还是64位选择相应的文件。不管是哪个版本,应该都是12个文件,拷贝出来放到刚才建立的usb3文件夹里面。
 把boot.wim和install.wim两个文件拷贝到你建立的那个母文件夹(即里面有usb3和mount的,aaa目录下)。这两个文件在win7安装盘的sources文件夹里。
windows下用管理员模式运行cmd。并进入你刚才建立的母文件夹。
 比如你在d盘建立了aaa文件夹,那你需要打两条命令:
d:回车
cd aaa 回车(我擦,回车这词暴露年龄)
 然后继续输入下面的命令。
dism /mount-wim /wimfile:boot.wim /index:2 /mountdir:mount
 dism /image:mount /add-driver /driver:usb3\iusb3hub.inf
 dism /image:mount /add-driver /driver:usb3\iusb3xhc.inf
 dism /image:mount /add-driver /driver:usb3\iusb3hcs.inf
 dism /unmount-wim /mountdir:mount /commit
上面五条命令目的是给boot.wim添加驱动。第一条的意思是挂载镜像,然后是三条添加驱动的命令,最后一条命令是把镜像卸载。
 同理,把里面的boot.wim都替换成install.wim就可以给install.wim加驱动。install.wim文件比较大,所以会花些时间。
 注意!:挂载install.wim的命令里,针对你挂载的win7版本不同,index:后面的数字也是不同的,建议大家用旗舰版,旗舰版的话对应的数字是4,即挂载的那条命令里要打
index:4
两个文件加入驱动完成后,拷贝回原来的sources文件夹,这样win7的安装盘添加驱动就完成了。



第五步:安装WINDOWS7

用刚刚添加了驱动的win7 安装盘插入到macbook air 上面,按下电源键的同时一样按option键,进入选择windows系统,好了,安装步骤你应该都知道了,祝大家能安装成功

为了很多小伙伴可能看不懂我这些步骤,下面本人提供一个windows7 旗舰版添加了USB3驱动的镜像文件,用苹果自带的bootcamp做好安装盘直接装就可以了,那个添加USB3的步骤就省了



注:如有不懂的小伙伴可以留言联系我,本文绝对原创在博客园发表,网上经本人查找基本上没找到说这个的文章....

如何在 VMware ESXi 虚拟机上运行 KVM

记得以前就有人问过 “能不能在一个虚拟机上运行虚拟机”,答案当然是可以的,Xen HVM, KVM, VMware, Qemu 等 Hypervisor 都可以这样嵌套虚拟,不过由于性能低下实际用处不大。在 VMware ESXi 虚拟机上运行虚拟机,被称为多层虚拟或者嵌套虚拟机(Nested VMs)。如果只有一台电脑想测试多节点 OpenStack 环境的话,使用 VMware ESXi 虚拟几个运行 KVM Hypervisor 的 OpenStack 计算节点是个不错的办法。VMware ESXi 5.0 默认情况下不支持嵌套虚拟,所以在 VMware ESXi 虚拟机里安装完 KVM 以后会发现 KVM 虽然能装但不可用:
# kvm-ok 
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
解决办法很简单:1、修改 VMware ESXi 的设置;2、修改对应虚拟机的设置。
登陆 VMware ESXi 控制台打开 VMware ESXi 5.0 的 SSH 服务(默认 SSH 服务是关闭的),然后用 ssh 登陆 VMware ESXi 后在 config 文件中最后加入 vhv.allow = “TRUE” 一行:
# vi /etc/vmware/config
libdir = "/usr/lib/vmware"
authd.proxy.vim = "vmware-hostd:hostd-vmdb"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
authd.fullpath = "/sbin/authd"
authd.soapServer = "TRUE"
vmauthd.server.alwaysProxy = "TRUE"
vhv.allow = "TRUE"
重启 VMware ESXi 后编辑虚拟机选项(需要先关闭虚拟机),打开 Edit virtual machine settings 对话框,在 options 页面的 General Options 选项里把 Guest Operating System 的类型换成 Other 里面的 VMware ESxi 5.x,如图:
running nested vms on vmware esxi
最后启动虚拟机后再 kvm-ok 一下就可以看到 KVM 可以用了:
# kvm-ok 
INFO: /dev/kvm exists
KVM acceleration can be used
相关阅读:
在 CentOS 上安装和配置 KVM.
在 VMware ESXi 上安装 Minix.
在 VMware ESXi 虚拟机上运行不同的 Hypervisor 可以看看 VMware 的 Running Nested VMs.

OneStack:分步部署 All-in-One 的 OneStack 实验环境

囧,上次 OneStack 项目作者 Kayven 发过来的 OneStack 介绍和配置的文章只发了一半就忘了(本来打算分两部分发的~),今天在草稿箱里把这部分整理出来了,希望文章内容还没有过时(OpenStack 和 Ubuntu 版本都有了很大变化 …)。
前部分介绍请看:OneStack:Ubuntu 12.04 上一键自动部署 OpenStack。下面介绍的是用 OneStack 分步部署 OpenStack 的方法:
1、切换 root,或者用 sudo 执行脚本:
$ sudo -i
2、(可选,如果不需要跳过本步骤):
系统语言设置,可以参考 oneStack.sh locale 部分,不在此介绍。比如设置 apt 源:
# vi /etc/apt/sources.list
3、设置网络(可以参考 oneStack.sh locale 部分):
# vi /etc/network/interfaces
4、配置参数,除了网络 ip,其它可以不变:
## 数据库
MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}
## 自行检查下面network/interfaces的两个网卡设置与此处一致
OUT_IP="192.168.139.50"
## 选择虚拟技术,裸机使用kvm,虚拟机里面使用qemu
VIRT_TYPE="qemu"
## token, 登录dashboard密码
ADMIN_TOKEN="admin"
5、部署基本系统
./setup_base.sh
6、添加镜像(Ubuntu12.04),添加一个实例,注意:里面的 ip 需要自己配置,镜像地址可以自己改动:
./setup_test.sh
7、分别部署控制节点和计算节点:
控制节点同上,可以去掉 nova-compute;
计算节点,只需要配置网络、数据库、虚拟机技术即可。
配置参数,除了计算节点 ip,其余与控制节点相同(包括 nova.conf 里的 ip)自行检查下面 network/interfaces 的两个网卡设置:
ServerControlIP=”192.168.139.50″
computeControlIP=”192.168.139.150″ # 本计算节点的外网IP
## token, 登录 dashboard 密码
ADMIN_TOKEN="admin"

## 网络配置
NETWORK_CONF=${NETWORK_CONF:-"/etc/network/interfaces"}
cat <$NETWORK_CONF
# The primary network interface
auto eth0
iface eth0 inet static
pre-up ifconfig eth0 hw ether b8:ac:6f:9a:ee:e5 #不需要绑定网卡的不需要这一行
        address 192.168.139.51 #外网ip
auto eth1
iface eth1 inet static
pre-up ifconfig eth1 hw ether b8:ac:6f:9a:ee:e5
        address 10.0.0.2 #内网IP

INTERFACES
sed -i -e "s/192.168.139.51/$computeControlIP/g" $NETWORK_CONF
/etc/init.d/networking restart
注意:以下与控制节点相同
## 配置 /etc/nova/nova.conf,这里与控制节点的配置相同!比如ip是控制节点的ip
MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}
NOVA_DB_USERNAME=${NOVA_DB_USERNAME:-"novadbadmin"}
NOVA_DB_PASSWD=${NOVA_DB_PASSWD:-"cloud1234"}
OUT_IP="192.168.139.50" 
……
## 选择虚拟技术,裸机使用 kvm,虚拟机里面使用 qemu
VIRT_TYPE="qemu"
7、执行 ./addComputeNode.sh
./addComputeNode.sh
如果对这篇有任何技术问题请直接咨询 OneStack 项目的原作者 Kayven (Hily.Hoo@gmail.com),git/github 粉也可以从这里获得源码: https://github.com/Kayven/OneStack

DMTCP 分布式多线程检查点工具

高性能计算/分布式计算等大量计算需要程序运行几天、几周甚至几个月,如果期间因为电力或者不可避免的问题导致程序中断会浪费大量的时间和人力,还有超级计算机在这段时间里运行的电力成本。我们没有遇到过电力问题,不过我们最近遇到的场景是实验室需要做强制安全检查,要求关闭所有电脑,所以我们需要一种工具能设置断点暂停程序、把状态保存到硬盘、再按照要求恢复,就像程序员用 IDE 调试程序一样,设置断点、单步跟踪(或恢复运行)。
在多主机、多线程的复杂分布式计算环境,给程序设置断点不是一件容易的事情,因为程序的某部分可能在其他主机上运行。DMTCP: Distributed MultiThreaded CheckPointing 是我们目前正在考察的一个工具之一,我们喜欢它的一个原因是它不需要修改 Linux 内核,不依赖内核和内核模块。

安装

先安装一些编译 DMTCP 需要用到的软件包:
$ sudo apt-get install build-essential
下载 DMTCP 源代码后,解压、配置、编译、安装:
$ wget http://ufpr.dl.sourceforge.net/project/dmtcp/dmtcp/1.2.7/dmtcp-1.2.7.tar.gz
$ tar zxvf dmtcp-1.2.7.tar.gz
$ cd dmtcp-1.2.7
$ make
$ sudo make install
我们先来看一个例子程序,转到 dmtcp-1.2.7 里的 test 目录运行 dmtcp1,这个例子很简单,按照顺序输出 1 2 3 … 数字:
$ cd test
$ ./dmtcp1
  1   2   3   4   5   6 ^C
接下来我们要试验的是,中断这个例子程序,然后看看能不能恢复它。步骤是:
  1. 启动控制端 dmtcp_coordinator;
  2. 用 dmtcp_checkpoint 运行这个 dmtcp1 程序;
  3. 强制中断 dmtcp1;
  4. 恢复运行 dmtcp1.

使用

开另外一个窗口或者 screen 运行控制端 dmtcp_coordinator,用 l 查看当前节点状态:
$ dmtcp_coordinator
dmtcp_coordinator starting...
    Port: 7779
    Checkpoint Interval: disabled (checkpoint manually instead)
    Exit on last client: 0
Type '?' for help.

?
COMMANDS:
  l : List connected nodes
  s : Print status message
  c : Checkpoint all nodes
  i : Print current checkpoint interval
      (To change checkpoint interval, use dmtcp_command)
  f : Force a restart even if there are missing nodes (debugging only)
  k : Kill all nodes
  q : Kill all nodes and quit
  ? : Show this message

l
Client List:
#, PROG[PID]@HOST, DMTCP-UNIQUEPID, STATE
[7845] NOTE at dmtcp_coordinator.cpp:1039 in onConnect; REASON='worker connected'
     hello_remote.from = b51cf8-7846-516fbedc(-1)
然后重新用 dmtcp_checkpoint 运行 dmtcp1 这个例子程序:
$ dmtcp_checkpoint ./dmtcp1
dmtcp_checkpoint (DMTCP + MTCP) 1.2.7
Copyright (C) 2006-2011  Jason Ansel, Michael Rieker, Kapil Arya, and
                                                       Gene Cooperman
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING file for details.
(Use flag "-q" to hide this message.)

  1   2   3
回到控制端,l 一下就会看到多了条结点状态,dmtcp1 程序[进程号 7846]运行在主机名为 vpseedev 的主机上。
l
Client List:
#, PROG[PID]@HOST, DMTCP-UNIQUEPID, STATE
1, dmtcp1[7846]@vpseedev, b51cf8-7846-516fbedc, RUNNING
现在我们在控制端设置一个检查点(checkpoint),用 c 命令:
c
[7845] NOTE at dmtcp_coordinator.cpp:1315 in startCheckpoint; REASON='starting checkpoint, suspending all nodes'
     s.numPeers = 1
[7845] NOTE at dmtcp_coordinator.cpp:1317 in startCheckpoint; REASON='Incremented Generation'
     UniquePid::ComputationId().generation() = 1
[7845] NOTE at dmtcp_coordinator.cpp:643 in onData; REASON='locking all nodes'
[7845] NOTE at dmtcp_coordinator.cpp:678 in onData; REASON='draining all nodes'
[7845] NOTE at dmtcp_coordinator.cpp:684 in onData; REASON='checkpointing all nodes'
[7845] NOTE at dmtcp_coordinator.cpp:694 in onData; REASON='building name service database'
[7845] NOTE at dmtcp_coordinator.cpp:713 in onData; REASON='entertaining queries now'
[7845] NOTE at dmtcp_coordinator.cpp:718 in onData; REASON='refilling all nodes'
[7845] NOTE at dmtcp_coordinator.cpp:747 in onData; REASON='restarting all nodes'
[7845] NOTE at dmtcp_coordinator.cpp:919 in onDisconnect; REASON='client disconnected'
     client.identity() = b51cf8-7846-516fbedc
然后用 Ctrl + c 强制中断这个正在运行的 dmtcp1:
$ dmtcp_checkpoint ./dmtcp1
dmtcp_checkpoint (DMTCP + MTCP) 1.2.7
Copyright (C) 2006-2011  Jason Ansel, Michael Rieker, Kapil Arya, and
                                                       Gene Cooperman
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING file for details.
(Use flag "-q" to hide this message.)

  1   2   3   4   5   6   7   8 ^C
这样在当前目录 test 下会生成一个临时文件用来保存程序镜像(稍后会看到就是通过这个文件来恢复程序的):
$ ls -l ckpt_dmtcp1_b51cf8-7846-516fbedc.dmtcp
-rw------- 1 vpsee vpsee 2532431 Apr 18 09:37 ckpt_dmtcp1_b51cf8-7846-516fbedc.dmtcp
用 dmtcp_restart 恢复就会看到 dmtp1 这个例子程序(从它中断的地方)继续运行了:
$ dmtcp_restart ckpt_dmtcp1_b51cf8-7846-516fbedc.dmtcp
dmtcp_checkpoint (DMTCP + MTCP) 1.2.7
Copyright (C) 2006-2011  Jason Ansel, Michael Rieker, Kapil Arya, and
                                                       Gene Cooperman
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING file for details.
(Use flag "-q" to hide this message.)

  9  10  11  12 ^C
DMTCP 甚至允许我们把运行了一半的程序暂停、保存到硬盘、拷贝到其他服务器上、继续运行,很酷吧~

在 CentOS 6.4 上安装 CloudStack 4.2

又到年底,下月开始休假,所以这周基本上算今年 “努力” 的最后一周,接下来六周都不会有技术文章更新。
和 OpenStack, OpenNebula 类似,CloudStack 是另一款开源云计算平台。CloudStack 的前身是 Cloud.com 家的一款商业云计算产品(也有开源版本),2011年 Cloud.com 被 Citrix 收购,2012年的时候 Citrix 将收购的云平台 CloudStack 全部捐给了 Apache 基金会,自己则以 Citrix CloudPlatform (powered by Apache CloudStack) 的形式为客户提供商业化的云计算解决方案。
按照《OpenStack, OpenNebula, Eucalyptus, CloudStack 社区活跃度比较》的统计,貌似 CloudStack 项目的活跃程度仅次于 OpenStack. 和大多数云计算、集群软件一样,CloudStack 也是控制节点+计算节点这种架构,控制节点(cloudstack-management)用来统一管理计算节点,提供资源分配和任务,提供 API、GUI、数据库等服务;计算节点(cloudstack-agent)则用来跑虚拟机。我们需要做的是,
  • 在控制节点上安装 cloudstack-management;
  • 在(每个)计算节点上安装 cloudstack-agent 和 kvm.

在控制节点上

安装完 CentOS 6.4 系统后,升级系统并修改 hostname 后重启:
# yum update

# echo "cloudstack.vpsee.com" > /etc/hostname

# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=cloudstack.vpsee.com

# echo "192.168.2.150 cloudstack cloudstack.vpsee.com" >> /etc/hosts

# reboot
添加 cloudstack 软件包的官方源,安装 ntp, cloudstack-management, mysql 数据库服务器:
# vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
enabled=1
gpgcheck=0

# yum update

# yum install ntp
# yum install cloudstack-management
# yum install mysql-server
修改 mysql 配置文件,加入下面几行,启动 ntp, mysql 服务并运行 mysql_secure_installation 给 mysql 设置密码:
# vi /etc/my.cnf
...
[mysqld]
...
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

[mysqld_safe]
...


# service ntpd start
# chkconfig ntpd on

# service mysqld start
# chkconfig mysqld on

# mysql_secure_installation
修改 SELINUX 设置,并配置防火墙允许访问 mysql 的 3306 端口:
# vi /etc/selinux/config
...
SELINUX=permissive
...

# setenforce permissive

# vi /etc/sysconfig/iptables
...
-A INPUT -p tcp --dport 3306 -j ACCEPT
...

# service iptables restart
使用 cloudstack-setup-databases 初始化 ClouStack 数据库,完成后运行 cloudstack-setup-management:
# cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:root -i 192.168.2.150

# cloudstack-setup-management
Starting to configure CloudStack Management Server:
Configure sudoers ...         [OK]
Configure Firewall ...        [OK]
Configure CloudStack Management Server ...[OK]
CloudStack Management Server setup is Done!
控制节点应该和存储分开,这里为了方便,我们把 NFS 也装在这个控制节点上,并自己挂载自己的 NFS 分区:
# yum install nfs-utils
# mkdir -p /export/primary
# mkdir -p /export/secondary

# vi /etc/exports
/export  *(rw,async,no_root_squash,no_subtree_check)

# exportfs -a
# vi /etc/sysconfig/nfs
...
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
...

# service rpcbind start
# service nfs start
# chkconfig nfs on
# chkconfig rpcbind on
# reboot

# mkdir -p /mnt/primary
# mkdir -p /mnt/secondary
# mount -t nfs 192.168.2.150:/export/primary /mnt/primary
# mount -t nfs 192.168.2.150:/export/secondary /mnt/secondary
修改防火墙配置,开放下面一些端口:
# vi /etc/sysconfig/iptables
...
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
...

# service iptables restart
# service iptables save
创建虚拟机需要有模版,这个模版可以自己做,也可以下载官方现成的。需要注意的是,官方文档中的 /usr/lib64/cloud/common/… 路径不对,应该是 /usr/share/cloudstack-common/…:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://d21ifhcun6b1t2.cloudfront.net/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2 -h kvm -s -F

在计算节点上

为了保持一致,我们在计算节点上也采用 CentOS 6.4. 在每个计算节点上都需要如下的安装和配置。升级系统并修改 hostname、重启:
# yum update

# echo "cloudstack01.vpsee.com" > /etc/hostname

# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=cloudstack01.vpsee.com

# echo "192.168.2.151 cloudstack01 cloudstack.vpsee.com" >> /etc/hosts

# reboot
添加 cloudstack 软件包的官方源,安装 ntp, cloudstack-agent 和 kvm:
# vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
enabled=1
gpgcheck=0

# yum update

# yum install ntp
# yum install cloudstack-agent
# yum install qemu-kvm
修改 libvirt 相关配置文件,去掉下面几行的注释,注意把 auth_tcp 改成 “none”,如果需要 vnc 访问的话别忘了取消 qemu.conf 里面的 vnc_listen 相关注释,重启 libvirtd 服务使配置生效:
# vi /etc/libvirt/libvirtd.conf
...
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
...

# vi /etc/sysconfig/libvirtd
...
LIBVIRTD_ARGS="--listen"
...

# vi /etc/libvirt/qemu.conf
...
vnc_listen = "0.0.0.0"
...

# service libvirtd restart
别忘了让防火墙开放必要的端口:
# iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
# iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
# iptables-save > /etc/sysconfig/iptables

测试

打开浏览器,访问控制节点 http://192.168.2.150:8080/client/ 就会看到登录界面,默认用户名和密码是 admin/password,登录后修改密码、做一些配置后就可以开始用了:
a docker web ui

用 Google Docs 监控网站是否在线

监控服务器、VPS 的工具和服务有很多,比如开源工具就有 Nagios, Cacti, Zabbix, Zenoss, Ganglia, … 如果自己不想 host 这些监控软件的话,可以考虑外包给第三方服务,比如 Pingdom, ServerDensity, ScoutApp, PagerDuty 等都做的很棒。如果自己要求不多、只是想监控一下网站(而不是整个服务器的各个性能指标的话)可以考虑一些免费监控服务,比如 monitor.us, SiteUptime, Montastic, site24x7 … 这里介绍的是完全不同的另类办法,用 Google Docs 来监控网站,还包括免费的手机报警功能哦~
点击 这里 会新建一个页面询问是否要拷贝一个文档:
Google Docs
Make a new copy of this document?
This copy will appear in your document list.
Yes, make a copy.
选择 Yes, make a copy. 后就会在自己的 Google Docs 里面生成一个名为 Copy of Website Monitor 的文件,按照提示填写要监控的Wbsite URLs,监控报警用的 Email Address,短信提示 SMS Notifications 就可以了。
Website URLs ::
Email Address ::
SMS Notifications ::
Help ::
填写完后再运行菜单上的 Website Monitor 的 Step1: Initialize 和 Step2: Start,不用了的话就 Uninstall (Stop). 默认的监控频率是每5分钟检查网站一次。
using google docs monitoring website uptime
如果对背后的代码有兴趣的话,可以看看原文 Website Monitor with Google Docs.

使用浏览器访问 Linux 终端

wssh 可以让我们通过 HTTP 来调用远程的一个 shell,也就是说我们可以用浏览器来访问某个 Linux 服务器/虚拟机的终端(只要这个服务器上运行了 wsshd 服务器端)。wssh 客户端通过 ssh 帐号连接到 wsshd 服务器端。wssh 更多的是当作库来开发一些应用,比如开发云计算、虚拟机后台控制面板的虚拟机控制台等等。我们先来玩一下简单的~
安装一些必要软件:
$ sudo apt-get install git gcc python libevent-dev python-dev python-pip
安装 wssh 需要的各种 Python 库:
$ sudo pip install gevent gevent-websocket paramiko flask
下载并安装 wssh:
$ git clone https://github.com/aluzzardi/wssh.git
$ cd wssh
$ sudo python setup.py install
运行 wsshd:
$ wsshd
wsshd/0.1.0 running on 0.0.0.0:5000
从浏览器打开 http://IP:5000 后会看到如下登陆界面:
wssh
使用 ssh 帐号登陆后就可以看到终端了:

央行划界P2P行业红线 涉嫌非法集资



据第一财经消息,11 月 25 日,由银监会牵头的九部委处置非法集资部际联席会议上,网络借贷与民间借贷、农业专业合作社、私募股权领域非法集资等一同被列为须高度关注的六大风险领域。同时人民银行条法司相关人士给出了明确的风险警示,要求明确P2P网络借贷平台的业务经营红线。
“应当在鼓励P2P网络借贷平台创新发展的同时,合理设定其业务边界,划出红线,明确平台的中介性质,明确平台本身不得提供担保,不得归集资金搞资金池,不得非法吸收公众存款,更不能实施集资诈骗。”央行负责人强调。
在央行提供的材料中,对当前一些P2P平台搞的理财产品“资金池”等模式涉嫌非法吸收公众存款和集资诈骗,做出了相对明确的界定。
据 P2P 行业门户“网贷之家”统计,10 月以来出现倒闭或资金链断裂的 P2P 平台已经达到 39 家,涉及大约 10 亿元资金。

说说 JavaEye 网站架构

偶然看到了Robbin的一篇文章,说到了一些JavaEye的一些实现解密,那就来看看有哪些有意思的东西。
我正在参与做的一个项目,在某某地方上线,需要几十块单板集群;在某某地方上线,又需要怎样的一个集群组网。咋听起来兴许觉得能有怎样的业务逻辑处理和怎样的用户量呢?可是JavaEye让我很吃惊,我先前只知道与CSDN比起来,JavaEye确实是一个小规模一些的网站,专业一些的网站,可是服务器呢?只有两台!
这是那台Web Server:
• AMD Opteron 2.4GHz单核 * 2 颗
• 8G内存
• 146G SCSI硬盘
这是那台DBServer:
• AMD Opteron 2.0GHz单核 * 2 颗
• 4G内存
• 73G SCSI硬盘
实在不能说有多么优秀的硬件配置,JavaEye又得面对怎样的访问量呢?
150万动态请求/天
image
这个是JavaEye封杀网络爬虫的简单匹配表达式:
image
JavaEye采用Ruby作为实现语言,看来Ruby很慢是没有说头的,看看Google Adplanner Data:
image
这张图表就很有意思了:
image
CSDN拥有JavaEye的3.5倍访问量,但使用了三十多台服务器集群,中国最大的几个IT站点,使用ASP.NET、Ruby、PHP的都有,但看起来JavaEye的性能或许是最佳的。
-----------------------------------------------------------------------------------------------------------------------------------------------------
JavaEye网站架构进化:
(1)2006年9月
• lighttpd
• ruby 1.8.4, rails 1.1.2, 以fastcgi方式运行
• mysql5.0
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。因为是多进程,所以比CGI多线程消耗更多的服务器内存,举例来说,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
其实小网站来说,使用FastCGI+Lighttpd是一个非常优秀的组合
(2)2007年1月
• 添加了第2台服务器
• 把web和DB分开
• 系统瓶颈在数据库IO端
系统瓶颈出现在DB IO上面是很正常的,我自己这边的项目经常遇到在Java侧锁瓶颈,无疑是非常奇怪的,一方面是性能测试的用例未必能反映现网真实情况导致,另一方面我还是觉得当整个架构过于复杂,远程方法过多,就会导致这样的问题。
(3)2007年2月
• 把posts表的大字段剥离出来
• posts表的select count操作从30秒减少到
0.1秒
把大表的大字段剥离出来,这是一种基于性能考虑的常用的DB重构方法
剥离前:
• posts(id, ..., body)
• 磁盘存储空间2GB
剥离后:
• posts(id, post_text_id,...) 50MB
• post_texts(id, body) 2GB
(4)2007年3月
• 数据库瓶颈仍然存在
• 引入memcached和CachedModel
• 自己编写了简单的查询缓存
• 240 sql query/s 下降到 140 sql query/s
• memcached缓存命中率在75%
这一次的改进主要在缓存上面,其实在做性能优化的时候,需要经常关注的一个东西就是缓存命中率。
(5)2007年9月
• 引入全文检索
• 使用ruby的ferret
• 中文分词使用单字拆分法
主要是对搜索引擎的优化。
(6)2008年1月
• JavaEye网站代码重写
• 缓存框架改用cache_fu
• 缓存命中率上升到84%
• sql query下降到 50条/s
回去打算去了解一下cache_fu,这里有两篇文章可以参考:
• cache_fu不对AR对象进行任何拦截,全部交给用户编程
• 用户有完全的控制权,但所有的缓存代码要自己手工编写
(7)2008年5月
• 中文分词算法改用rmmseg-cpp
(8)2008年10月
• 自制山寨cache plugin
• 缓存命中率上升到96%以上
• 抛弃ferret,自己编写全文检索服务器
• 使用Java的lucene作为全文检索引擎
• 自己实现C/S架构的内部调用
(8)2008年11月
• 实现博客,新闻制作PDF功能
(9)2009年3月
• SNS feed功能
• twitter绑定功能
• 开放API
• 废弃Google Analytics
• 自己编写简单的网站流量分析系统
image
(10)2009年12月
• 添加Web IM
• 添加一台服务器
• 合理规划服务器
image
一个生命周期较长的WEB应用每发展到一定阶段一定要面对的是架构上的重组,有时哪怕牺牲一些性能的代价,有时则是牺牲可维护性的代价,带来的是结构层次清晰,便于短期内扩展等好处。这个过程每次都可能是痛苦的,但又是不可避免的。同时,我认为,在项目初期不应当也不可能把架构的融合性和扩展性考虑得太远,那样反而作茧自缚。而在应用发展过程中不断地重构却是更有价值的。
-----------------------------------------------------------------------------------------------------------------------------------------------------
进化总结:
(1)对象缓存原则:
• 数据库表的设计要细颗粒度
• 把有冗余字段的大表拆分为n个互相外键关联的小表
• ORM的性能瓶颈不在于表关联,而在于大表的全表扫描
• 尽量避免join查询,多制造n+1条SQL
上面第一条我觉得还是要看表容量而定,第四条我深有体会,记得在iBatis的使用中还有这样一个专题。
(2)对象缓存的意义:
• Web应用很容易通过集群方式实现横向扩展,系统的瓶颈往往出现在数据库
• 数据库的瓶颈往往出现在磁盘IO读写
• 因此要避免数据库的全表扫描和大表的数据扫描操作
• 如何避免:拆表和臭名昭著的n+1条SQL
……
image
• memcached缓存命中率96%
• cache get : sql query = 4 : 1
另外,Robbin还提到,Ruby的字符串处理,尤其是正则表达式处理性能不好,解决方法也是使用缓存。
cache_money:
• 出自twitter开发团队之手
• 可能是目前最强大的ruby cache框架
• 支持分页查询缓存,支持条件查询缓存
全文检索:
image

金融业摆脱 IOE 束缚 云计算帮助企业减负



“IOE”作为“买计算机”时代的产物,正在被云计算所重塑,变成低成本、高可用的买“计算”时代。
 11月27日,阿里云高调发布金融云服务,借助阿里巴巴集团去“IOE”(IOE分别代表着IBM的小型机,Oracle的数据库,及EMC存储设备)转型云架构的成功经验,把阿里集团大规模的云计算集群资源开放给金融行业用户,使其获得安全、便捷的云计算服务,以摆脱传统IOE的束缚,拥抱互联网金融。
对传统金融企业来说,几乎所有的核心系统都依赖“IOE”的标配。他们每年要为这些设备支付高额的购买与维护费用。但互联网大数据时代已经来临,电子银行蓬勃发展,随之而来的是爆发性增长的用户数量和交易量,这让绝大部分金融企业对计算资源的需求难以通“IOE”来满足。
特别是对于城镇银行来说,科技水平落后仍然是制约其科技创新和产品创新的短板。山西省晋中市榆次融信村镇银行行长薛建华表示,该行三年多来虽然在“支农支小”和发展传统金融业务上有了长足的发展,并取得了全国金融IC卡公共应用试点,但由于没有网银,卡功能的发挥及应用受到诸多限制。今年以来,通过阿里金融云,该行支付宝快捷支付系统即将上线运行。
同样通过云计算受益的,还有像天弘基金这样的证券企业。
天弘基金旗下的余额宝产品,在整个“双十一”期间,购物消费笔数达到1540万笔,购物消费金额37.93亿元,以99.9%以上的支付成功率成为当日成功率最高的支付方式,稳定性远胜网银。这一切,始于其通过云计算展开的去“IOE”创新。
余额宝产品一期是基于传统的“IOE”来设计的,但是系统上线第一天,网站系统就瘫痪了。天弘基金管理有限公司创新支持部总经理樊振华介绍,因为要参与双十一,我们必须选择云计算,选择阿里云金融云服务,因为传统的“IOE”投入产出无法承受这样巨大的成本压力。
天弘基金在其金融产品解决方案提供商金证科技的协助下,通过三个月时间,成为国内第一个将核心系统放在云上的基金公司。使用阿里云金融云服务之后,其交易笔数由原来“IOE”时期的3亿笔,累计上升达到7.2亿笔,成本则节省超过四千万元。
云计算时代,传统硬件、软件及整体解决方案的优势不在。中国最大的电子银行供应商科蓝软件CIO戴林巧介绍,阿里金融云服务不仅将银行人员从繁重的系统建设、运维工作中解脱出来,从而使其能够集中优势人力专注于业务创新。还将银行系统从传统机房的“IOE”中解放出来,提供按需定制、随时增减容的能力,随时应对突发情况,从而最大化的节省成本。
转载请注明作者、来源和原文链接 | 编辑张超

2013年11月29日星期五

P2P网络借贷 不是什么人都能玩

  如果说什么人都能玩P2P网络借贷,那么也不至于倒闭那么多平台了。
  据不完全统计,截止11月底P2P网贷平台已经倒闭50多家,且目前受央行界定非法集资一说,有人预测未来P2P网贷将以两天倒闭一家的“患情”肆虐扩散。
  而对于这么多平台倒闭,笔者发现了一个现象——基本倒闭的网贷平台的创始人都不是专业的金融或者互联网行业的专业人士。不信,笔者给你列举几个看看:
  1、做五金的开起了1000万资本的众贷网
  2013年3月初上线的众贷网,注册资金1000万,隶属于海南众贷投资咨询公司,总部在海口市,定位为中小微企业融资平台。2013年4月,上线刚满一个月就宣布破产。
  而如此快倒闭的原因不得不说他的创始人——卢儒化,他既没有金融方面的专业知识,更没有互联网方面的经验,之前的工作是一个五金模具工人,在看到网贷行业暴利的情况下,萌生了创业网贷的思想。这也直接导致其创始人在管理团队经验的缺乏,造成了公司运营风险的发生,在开展业务的时候没有把控好风险这一关,最终造成了无法挽回的损失,倒闭破产。
  2、做林木的玩起了上亿元担保的都梁创投
  都梁创投是由钱广程、刘其军二位股东组建的南京都梁金融信息服务有限公司的全资专业P2P网贷平台,该平台是由钱广程实力企业,江苏省省级林业龙头企业《江苏绿然花木有限公司》的林权证,评估价10822.75万元,提供本息保障。
  然而,表面这家公司看起来有上亿元的花木有限公司承担,实际上他们也存在一个与众贷网一样的问题,创始人没有任何互联网、金融方面的经验。唯一能说的出口的则是这个老板是个种植花木方面的专家,拥有大量的种植基地和植物。
  就这样,因为无相关知识傍身,缺乏管理团队经验,都梁创投歇业了。目前,由于资金链缺失较大,很多投资人都未收回投资成本。
  3、做通讯设备的人玩网赢天下
  相比上面的众贷网和都梁创投,网赢天下实在是比他们强太多,没得说啊,人家网赢天下声称背后是一家准上市公司在支撑。
  从网赢天下官方上可以看到:“该平台是由深圳市网赢天下电子商务有限公司运营,成立于2013年3月28日。公司注册资金2000万元,是一家准上市企业创办的网络借贷平台,由旗下深圳市华龙天投资担保有限公司提供担保服务。”
  同时笔者了解到,这家公司表面上的法人叫龙兴国,实际背后BOSS叫做钟文钦,为网赢天下第一大股东。而这个钟文钦他还持有华润通39.03%的股。说道这里就要说说华润通了。这家公司全名为华润通光电股份有限公司,于2005年9月在深圳注册成立,主要从事光电器件及通信设备的研发、生产与销售业务。虽然目前还未正式上市,但它就是网赢天下官网上所说的准上市企业了。
  今年四月初网赢上线,笔者就和几名散户讨论对其不太看好,毕竟一个搞通讯设备的人来搞互联网金融有点太跨界了。虽然钟懂点儿投资,但P2P网贷是那么简单的吗?最后思量再三,笔者忍住那20%的高效益诱惑,把钱还是稳稳当当的放在了银行里——果不其然,没过几月,钟文钦公开对投资人发布了《承诺书》,表示“网赢天下网络借贷平台经营出现问题,致使在该平台投资的广大投资人不能正常提现自己的投资款”,同时“为确保平台继续运营,保障广大投资人的合法权益,本人愿为深圳市网赢天下电子商务有限公司提供连带责任担保”。
  歇菜倒闭了,对,网赢天下真的歇菜倒闭了。且目前仍有近千名用户的借款未能收回,金额大约在2亿元。
  看了上面三个案例,笔者要表达的意思很明确:“P2P网贷,不是什么人都能玩”。这个新生儿,要想成功活下去最起码要懂三方面的知识。
  1、IT技术与互联网运营
  除去那些本来就打算骗钱的人,这点你可以忽略,直接上淘宝花个20元买开源技术就行。而要正经的进入该行业的,那就要下心思了。毕竟P2P网贷是依托于互联网,那么该网站就要有简单方便的操作模式,安全的技术控制,以及高大上的品质。除了这些,网站还需要产品经理、运营经理,只有如此,才能促使网站变的越来越好,运营的越来越好,而不是几年不变,还是最初的那个站。
  2、银行理论及借贷金融知识
  还是一样,除去那些骗钱的人。如果你要长期干这一行,借贷、融资、投资方面的金融知识以及银行的那套体系必须要学会,不然你连怎么倒闭都不知道。
  3、营销及管理知识
  营销不用说,每一个企业要想成功这一点至关重要。而对于P2P网贷,管理知识更是关键中的关键,创始人以及管理团队不仅要对员工进行有效的管理、运营,其中对于投资人、借贷人之间的环节风险控制尤为重要——在很多倒闭的网贷平台以及现在持续收不回钱的平台中,大多都是因为风险控制不严,导致资金回收困难,甚至出现多名多金额的老赖,拖公司后腿,最终蚕食企业。
  以上三点还是最起码的知识,如果三方面你不懂两个,那么笔者奉劝你一句:“别玩了,迟早要倒闭的。”

2013年11月28日星期四

中国古代特种兵:大秦铁鹰锐士 无坚不破


中国古代特种兵:大秦铁鹰锐士 无坚不破
唐朝明光铠。
中国古代特种兵:大秦铁鹰锐士 无坚不破
资料图:三菱透甲锥。
真实再现中国当代特种兵神秘和传奇军旅生活的电视剧《我是特种兵》,吸引了很多观众的视线。残酷的训练、精良的装备、出神入化的战术技能……不少观众不由得慨叹“惊呆了”。从严格的意义上说,特种兵的出现始于二战时期,但在中国古代战争中,早已不乏“特种兵”的身影,如战国时期的铁鹰锐士、东汉的陷阵营、东晋的北府兵、隋朝的燕云十八骑、唐代的玄甲军、南宋的背嵬军、元代的怯薛军以及明代的蒙骑克星神机营、威震日寇的戚家军……
秦国
铁鹰锐士  剑术马战步战阵战皆精
“锐士”是战国时秦国经过选拔训练有素的步兵。秦孝公时商鞅变法,奖励耕战,按军功给予爵位和田宅,军力大盛,士兵的战斗力很强。秦国锐士可以以一敌十魏武卒,《荀子》中曾对秦国军事实力有过高度评价:“齐之技击不可以遇魏氏之武卒,魏氏之武卒不可以遇秦之锐士”。当时,步兵以魏国武卒最为精锐,天下呼之为“魏武卒”。骑战则以赵国的“胡刀骑士”和齐国的“技击骑士”并称精锐。商鞅变法后,秦国新军在收复河西的大战中横空出世,被天下惊呼为“锐士”。据《商君书·境内》记载,秦军中最小战术单位为伍,由五个士兵组成。十个伍组成一个屯,由五十名士兵组成。两个屯组成一个将,由一百名士兵组成。五个将组成一个主,由五百名士兵组成。两个主组成一个大将,由一千名士兵组成(此处的大将是秦军建制单位,非指将领)。军队在作战时,伍、屯、将、主、大将等战术组织联系紧密,配合默契。以一个伍为例,防守时五名军卒互相保护,进攻时如有人数优势则围攻敌人。混战时,伍内部兵卒之间始终保持紧密联系,不会被轻易击破。
铁鹰锐士是秦国最精锐的部队,由上将军司马错创立。铁鹰锐士不仅剑术超凡,而且要马战步战样样精通。铁鹰锐士的选拔极为苛刻:第一是体魄关。司马错在魏国名将吴起当年训练魏武卒“手执一支长矛、身背二十支长箭与一张铁胎硬弓、同时携带三天军粮,连续疾行一百里,能立即投入激战”的基础上,又增添了全副甲胄、一口阔身短剑、一把精铁匕首与一面牛皮盾牌,总负重约在八十余斤。通过了第一关,方能进入步战、骑战等各种较武关,以及各种阵式结阵而战的阵战关。据说,“十万秦卒出三千锐士”,秦国新军二十万,其中的“铁鹰锐士”只有一千六百人。
东汉
陷阵营  “铠甲具皆精练”每所攻击无不破者
陷阵营是东汉末年的一支精锐部队:“将众整齐,每战必克”。其统帅为吕布帐下的中郎将高顺。人称高顺“所将七百余兵,号为千人。”陷阵营“铠甲具皆精练齐整,每所攻击无不破者”,故名 “陷阵营”。
据《三国志》记载,吕布复为袁术使高顺攻刘备,公遣夏侯惇救之,不利。备为顺所败。(高)顺为人清白有威严,少言辞,将众整齐,每战必克。布性决易,所为无常。顺每谏曰:“将军举动,不肯详思,忽有失得,动辄言误。误事岂可数乎?”然而,“布知其忠而不能从。建安三年,布遂复从袁术,遣顺攻刘备於沛,破之。曹操遣夏侯惇救备,为顺所败……”南朝宋时裴松之为《三国志》注释时,曾专门引用《汉末英雄记》的内容,对陷阵营评价颇高。
遗憾的是,吕布不是一个帅才,“布知其忠,然不能用。布从郝萌反后,更疏顺。以魏续有外内之亲,悉夺顺所将兵以与续……”吕布的悲剧,也成为陷阵营这支精兵的悲剧!
东晋
北府兵  骁勇善战攻无不克战无不捷
北府兵是东晋孝武帝初年谢玄组建训练的军队,又名北府军。《晋书·刘牢之传》记载:“太元初,谢玄北镇广陵。时苻坚方盛,玄多募劲勇,牢之与东海何谦、琅邪诸葛侃、乐安高衡、东平刘轨、西河田洛及晋陵孙无终等以骁猛应选。玄以牢之为参军,领精锐为前锋,百战百胜,号为北府兵。”《资治通鉴》也云:“玄募骁勇之士,得彭城刘牢之等数人,以刘牢之为参军,常领精锐为前锋,战无不捷,时号北府兵。”
东晋孝武帝太元二年(377年),由于前秦已一统北部中国,东晋王朝受到空前的军事压力,因此诏求良将镇御北方。当时的重臣谢安遂任命其侄子谢玄应举。朝廷任命谢玄为建武将军、兖州刺史、领广陵相、监江北诸军事,镇广陵。其时广陵和京口聚居着大量逃避北方战乱而来的流民,谢玄到任后,在流民中选拔骁勇士卒,建立了一支军队,太元四年(379年),谢玄改镇京口,因为当时京口又名北府,故其所率军队得名北府兵。
太元八年(383年),北府军在淝水之战中一举击败前秦大军,刘牢之一度追到邺城,由此名声大振。晋安帝元兴元年(402年),北府军奉命征讨在荆州割据的桓玄,刘牢之投降桓玄。桓玄称帝后大大削减了刘牢之的兵权,刘牢之欲起兵反抗,但已众叛亲离,最后自杀而亡。元兴三年(404年),原北府军参军刘裕率余部在京口起兵,杀死桓玄。此后,北府军成为刘裕的军事支柱。420年,刘裕废东晋恭帝司马德文,自立为帝,建立大宋政权,北府军成为其皇家军队的中坚。
隋代
燕云十八骑  快如风烈如火以一敌百
在电视剧《隋唐英雄传》中,燕云十八骑曾被描绘得神乎其神。相传,燕云十八骑是由罗成父亲靖边侯罗艺率领的精锐骑兵,总共由十八个人组成,他们腰佩弯刀,脸戴面罩,头蒙黑巾,只露双眼,身披黑色长披风,脚踏胡人马靴,马靴配有匕首,众人背负大弓,每人负箭十八支,同时都配有清一色的圆月弯刀。燕云十八骑一般都是在大漠活动。据说,当年辽部察哈合台带领辽兵一万人,侵入燕门关抢掠,燕云十八骑暗中偷袭,一夜之间杀其三千多人,察哈合台带领余部逃回大漠,十八骑穷追不舍,一直追至察哈合台的家乡,察哈合台及全族二万余人被诛灭。此后,辽人都远走戈壁。再也没敢进犯。靠山王杨林曾经对燕云十八骑这样评价:快如风,烈如火,所到之处,寸草不留。强弓弯刀,善骑善射,以一敌百,未尝一败。燕云十八骑神出鬼没,并且个个都戴着面罩,从来没有人看到过他们的真面目。靖边侯罗艺死后,燕云十八骑被罗成解散。
然而,也有历史学者认为,燕云十八骑及其故事大多属于“演义”。
唐代
玄甲军  皂衣玄甲势如破竹无坚不摧
玄为黑色,甲即盔甲,玄甲军是唐朝初年的一支精锐骑兵部队,士兵身着黑铁盔甲纵横驰骋,所向披靡。《资治通鉴》一书对于玄甲军有这样的记载:“秦王世民选精锐千馀骑,皆皂衣玄甲,分为左右队,使秦叔宝、程知节、尉迟敬德、翟长孙分将之。每战,世民亲披玄甲帅之为前锋,乘机进击,所向无不摧破,敌人畏之。行台仆射屈突通、赞皇公窦轨将兵按行营屯,猝与王世充遇,战不利。秦王世民帅玄甲救之,世充大败,获其骑将葛彦璋,俘斩六千馀人,世充遁归。”
在唐武德三年著名的虎牢关之战,李世民率领数千唐军与十几万夏军对峙,用1000玄甲精兵大破王世充,斩俘6000余人。据说,李世民几乎每战都身先士卒,他自己同样是一身玄甲,率领着骑兵如同黑云一般压向敌阵,势如破竹,无坚不摧。特别值得一提的是,唐军的铠甲抛弃了魏晋时期的具装铠,演变为以明光铠为代表的唐十三铠,明光铠是一种护胸镜锃亮的板式铠甲,非常华丽,而且重量更轻,防御力大大提升。据《唐六典》记载,唐十三铠,有明光、光要、缀鳞、山文、乌锤、白布、皂绢、布背、步兵、皮甲、木甲、锁子、马甲十三种。白居易赞道:“太宗十八举义兵,白旄黄钺定两京。擒充戮窦四海清,二十有四功业成。”
南宋
背嵬军  五百精兵破金军十万
背嵬军是南宋抗金英雄岳飞统领的一支精锐骑兵部队,挂帅的是其子岳云。对于背嵬军的解释,岳飞之孙岳珂在《鄂国金佗粹编》卷二十二《淮西辩》中称:“背嵬之士,先臣之亲军也”。南宋赵彦卫撰写的《云麓漫钞》记载:“韩、岳兵尤精,常时于军中角其勇健者,别置亲随军,谓之背嵬,一入背嵬,诸军统制而下,与之亢礼,犒赏异常,勇健无比,凡有坚敌,遣背嵬军,无有不破者。”
岳家军鼎盛时期约有十万人,分为前军、后军、左军、右军、中军、游奕军、踏白军、选锋军、胜捷军、破敌军、水军和背嵬军十二军,其中背嵬军骑兵8000人,步兵亦有数千。在绍兴十年与金军在颍昌、郾城的一系列战斗中,背嵬军起到了中流砥柱的作用。郾城一战,岳飞的背嵬军先以步兵大破金军精锐“拐子马”,再以极少的精锐骑兵猛冲敌阵,大败金兀术的精骑15000人,金兀术叹道:“自海上起兵,皆以此胜,今已矣!”然而,金兀术不甘心失败,又集结三万骑兵攻打颍昌,背嵬军再次大破金军精骑,直杀得“人为血人、马为血马”,大部队随后跟进,“杀兀术婿夏金吾、副统军粘罕索孛堇,兀术遁去”。在朱仙镇之战,背嵬军更创下500背嵬精兵大破十余万金军的辉煌战绩。金人曾发出“撼山易,撼岳家军难”的感慨。宋代袁甫在其撰写的《蒙斋集》中大赞背嵬军:“背嵬军马战无俦,压尽当年几列侯,先辈有闻多散佚,后生谁识发潜幽。”
(原标题:中国古代战争中的“特种兵”:战国时期身影已现)

复旦投毒案三大疑问获解:剧毒品窃自医院(图)(全文)



新华网上海11月27日电  27日,备受关注的“复旦研究生投毒案”在上海市第二中级人民法院公开开庭审理,被告人林森浩涉嫌以投毒方式故意杀人被提起公诉。林森浩当庭供认了起诉书指控其采用投毒的方法致黄洋死亡的事实。林森浩为何要狠心毒害“同窗室友”?涉案剧毒化学品来自何处?投毒后林森浩是否企图逃脱惩罚?庭审细节回应了公众对此案的主要疑问。

是“愚人节玩笑”还是“故意杀人”?

庭审中,上海市人民检察院第二分院起诉书指控,林森浩与黄洋均为复旦大学学生,居住在同一寝室内。林森浩因琐事与黄洋不和,逐渐对黄怀恨在心。2013年3月底,林森浩决意采取投毒的方法杀害黄洋。

庭审中,林森浩对作案动机、目的和犯罪故意进行了辩解。他表示,自己和黄洋并无严重冲突,只是一个愚人节整人的巧合。“当时愚人节要到了,黄洋拍着我同学的肩膀说他要整人,我在一旁玩电脑,心里想着那我也来整你一下吧。我只想让他难受一下而已,以为只是一个病理过程,没想到会死亡。”林森浩说。

“以前做实验时大部分老鼠都没死,熬过去就好,而且越到后面越 生龙活虎 。” 林森浩补充道。

多位黄洋及林森浩的同学证言显示,黄洋和林森浩之间确因“生活琐事”产生过矛盾:“黄洋外向、有主见,且爱干净、较强势,林森浩比较内向,且记仇、顾家。黄洋曾假借林森浩之名批评另一名室友葛某乱扔东西,被林森浩知道后很是不满。还有一次林森浩获得了国家奖学金,大家起哄让他请客,他却拒绝了,黄洋当场对此表达不满,嫌弃他小气。此外,黄洋还曾提议毕业旅行去东南亚,也曾开过一些玩笑,也许在无形中伤害了经济拮据的林森浩。”

而对此,林森浩表示:“每个人的看法不同,这是他们的看法,我没有意见。”在林森浩看来,他平时只是和黄洋关系一般,“不是很铁,他觉得我没有生活情调,我觉得他自以为是。我们人生观、价值观不是很相近,但他很聪明,勤奋好学,很优秀。”

公诉机关认为,林森浩实施犯罪行为具有明确的犯罪动机,将至少30毫升二甲基亚硝胺注入饮水机,超致人死亡剂量10倍以上,应从重处罚。

公诉人还指证,攻读硕士学位期间,林森浩向实习所在科室的博士生导师提出过报考其博士研究生的愿望,但遭到该导师的婉言谢绝。之后林森浩又联系了其他医院的一位博士生导师,该博士生导师也答应林森浩可以攻读他的博士生,但林森浩考虑他是跨专业去报考,有各种各样的难处,以及家庭的经济状况等因素,最终决定放弃考博,与一家外地医院签订就业协议。

而与此形成反差的是,今年3月中旬,黄洋考博的初试成绩揭晓,黄洋名列前茅,同学纷纷向黄洋表示祝贺。但林森浩在3月却又一次因为一些事情受到了实习单位博士生导师的当众批评。“所有的不顺、挫折,对于性格较为内向,而且又一直自恃甚高的林森浩来说,是一种打击。 愚人节玩笑 这一说法只是为了掩饰其故意杀人动机的托辞和借口罢了。”公诉人表示。

涉案剧毒化学品来自何处、如何取得?

因为此案,一种名为“二甲基亚硝胺”的化学品进入了公众的视野。而最早怀疑黄洋中毒,并指出此种有毒化学物品的人,是黄洋和林森浩的室友葛某,他打电话并进行了短信通知,但为时已晚。

根据公诉机关提供的证人证言显示,涉案的二甲基亚硝胺原液是复旦大学上海医学院影像医学与核医学专业博士研究生吕某某于2011年从天津市化学试剂研究所购买的。实验结束后,所剩试剂就放置于中山医院的实验室内,由于经常一起做实验,吕某某与林森浩都知道该原液摆放的位置。

起诉书称,3月31日14时许,林森浩以取实验用品为名从他人处取得钥匙后进入其曾实习过的复旦大学附属中山医院影像医学实验室,趁室内无人,取出装有剧毒化学品二甲基亚硝胺的试剂瓶和注射器,并装入一只黄色医疗废物袋内,随身带离。由于当日下午和中山医院某科室的一位老师有约,林森浩将装有剧毒化学品的袋子放置在某楼梯转角处。随后,林和一位同学去医院食堂吃饭,由于袋子颜色过于显眼,林森浩“冒着被人发现的危险”,将袋子继续留在该处,吃完饭后返回取走并带回寝室,并趁寝室无人将化学品注入寝室饮水机。“也想过放在黄洋的喝水杯中,但由于那个水杯是白色的,化学品是黄色的,太显眼了。”林表示。

投毒后林森浩是否试图逃脱惩罚?

“愚人节早上8点多,黄洋起床了,他像往常一样去倒水喝。我躺在床上睡觉,听见他倒了水,用勺子舀了舀,后来吐了出来,干呕了几声,后来他就把水桶和饮水机整个拿出去洗了。我没有看见,只是听见。”林森浩回忆事发当天的情况,“后来我的手机忽然响了,我马上起来,出门去了,没有和他说话。”

公诉机关提供的证据显示,黄洋喝水前后数日,林森浩多次在网上以“二甲基亚硝胺”为关键词查询该化学物味道、毒性及检测方法。“我就是浏览了一下,确认了二甲基亚硝胺对肝脏有损害。”林森浩说。

4月2日,黄洋在几个同学的陪同下来到林森浩实习的超声室作检查。“我帮黄洋作完检查后说胃没有问题,肝脏也没问题,但一说出口我就知道说多了,就把话题扯开了,自己做过的事还是有点心虚,没有告诉他们黄洋发病的原因。”


知道涉案饮用水被送去鉴定机构检验后,还是因为“心虚”,林森浩没有去看望黄洋。4月3日,他将涉案水桶拿到盥洗室去冲洗,以挥发有毒化合物。4月4日,林森浩看着黄洋的父亲和同学将饮水机和水桶取走送检,但事后并没有检测出毒物,林森浩觉得很奇怪。水桶被送回后,林森浩就“因为心虚”将水桶还给楼下的宿舍阿姨。随后,林森浩曾3次前往医院看望黄洋,但不敢和黄洋说话,“主要想看看黄洋好转了没有。”后来林森浩多次通过黄洋父母了解黄洋的病情发展情况。

而据黄洋及林森浩同学的证言显示,林森浩对黄洋的病情显得较为冷谈,曾说过“是否可用中医”、“肠胃炎有什么好做B超的”等言论。

庭审辩论结束后,林森浩在最后陈述中说:“我在看守所几个月,一直尝试在找自己犯罪的根源,我的行为导致我的同学黄洋死亡,给他的家庭带来了巨大打击,我也对不起父母近30年的养育之恩,愿意接受法院所判的任何处罚。”

2013年11月26日星期二

凭刷POS机刷卡数据 可贷款百万



凭刷POS机的数据,你可贷款百万1
  今年6月以来,在阿里巴巴、百度、腾讯等互联网巨头们的搅动下,互联网金融愈发凶猛,对传统金融的冲击愈发强烈。其中受到冲击最严重的便是银行的存款,根据央行最新发布的10月份金融统计数据报告显示,10月份人民币存款减少4027亿元,居民存款减少
相关公司股票走势

招商银行10.83+0.010.09%
光大银行2.83+0.000.00%
平安银行13.47-0.03-0.22%
中信银行3.98-0.01-0.25%
民生银行8.47-0.04-0.47%
了8967亿元,成为今年以来存款流失最为严重的月份。
  面对互联网金融的崛起,银行也渐渐感受到了大数据时代来临所面临的压力,同时也意识到深挖数据所带来的强大竞争力,互联网和金融“双向融合”的趋势愈加明显。其中最鲜明的例子便是,今年以来多家股份行开始推行线上的贷款业务—POS贷。
  针对小贷
  多家银行推POS网贷
  依靠手中掌握着海量商户的真实交易数据,阿里小贷获得了巨大的成功,但不少人断言阿里小贷的经验难以复制,原因就是其他企业公司包括银行在内,难以掌握海量用户的交易数据。
  不过,随着银行和银联的合作,POS贷的问世可谓打破了这一断言。所谓POS贷,即各银行主要依据小微企业POS机刷卡交易的流水,来测算其经营规模,再根据交易流水来给予小微企业贷款。据记者了解,目前招商银行、中信银行、民生银行、平安银行、光大银行均推出了此类产品。
  某银行的相关工作人员告诉记者:“POS商户网络贷款的优势很明显,它不用抵押物,只需提供身份证、执照、银行卡复印件,即可申请纯信用贷款。”
  这种POS贷的核心便是银联系统所掌握的海量用户交易流水。公开资料显示,银联商务的业务网络覆盖了全国所有地级以上城市,合作商户和维护的POS终端分别超过200万户、300万台,占银行卡收单市场40%的份额。
  通过这种方式,银行可以看出企业的运营能力、资金需求等数据和信息,从而掌握企业真实的信息。根据小微企业POS机刷卡交易的资金结算量及稳定性的不同,小微企业最高可获得50万—150万元的贷款,无需抵押、担保,年化贷款利率12%—14.4%,最快几分钟即可申请成功,并且按天计息,随借随还,一次申请可循环使用。
竞争激烈
  各行力拼网贷市场
  据了解,目前大多数银行在网络循环贷的基础上,加紧研发和推广各类线上融资贷款,力拼“网贷”市场。
  民生银行全新推出了“微贷”金融服务品牌。“用户只要办理一张我们的银行卡,日常的经营、结算全部在这张银行卡上进行,我们就可以根据客户在银行卡上的结算情况来发放贷款。”民生银行上述人士说道,民生银行的微贷同样是一款线上产品,无需任何抵押、担保,24小时内即可轻松获得最高50万元人民币循环信用贷款,现在还能支持移动终端(手机、IPAD等)进行在线申请。
  今年6月初,招商银行与国内最大的外贸电子商务网站敦煌网签约,并发行了“敦煌网生意一卡通”联名卡。招行将根据该网站注册商户的交易和信用记录,为其提供包括融资、结算、理财、生活等小微金融服务。
  平安银行则采取自建电商平台与其他已经成熟的电商平台合作的模式,并通过打通产业链,兼顾全行业上下游的模式,分行业开展线上金融业务。此外,平安银行还想通过电销模式推广微小贷款业务。
关于POS贷>
  现身说法:贷款50万5分钟搞定
  在朝天门做批发生意的小陈,成功申请获得了POS网络贷款。他告诉记者,当时他在线完成了贷款申请资料的填写,通过了银行网络信贷业务平台的自动审批,当场就收到了50万元贷款到账的手机短信。
  “当时我对这种贷款也是抱着将信将疑的态度,不过资金周转迫在眉睫,我还是决定试试。我先去网点开通了网上银行,然后就在网络上申请POS贷款。”小陈打开了自己的网银向记者进行了演示。
  “看,进入网银登录界面就有POS网络贷款的选项,整个流程都有提示,按着提示一步步来就可以了。”在小陈输入身份证号后,网上银行显示,他是银联商务POS机商户,小陈点击了“贷款申请”这栏,进入了相关资料的填写。“填写完资料后,贷款额度就批下来了,我获得了50万的贷款,整个过程不超过5分钟吧!”小陈说。
  本版文/重庆晨报记者 赵鹏 吴黎帆 刘洋
 优点多多:随借随还,按日计息
  据中信银行重庆分行网络银行部产品经理王珏介绍,“POS商户网络贷款”是中信银行专门针对生产经营良好的小微企业和个体商户量身定做的网络贷款产品。适合短期资金需求在50万元以内的银联商务POS商户。其特点是实现了贷款申请、审批、放款和还款等业务环节的全线上管理模式。
  “我们有一整套的POS流水数据模型,依靠这些数据模型,结合客户的个人征信记录,电脑会自动计算出相应的贷款额度,然后自动放款给客户。”王珏强调说,只要客户的资料、操作过程等没有问题,申请POS商户贷最快只需要几分钟时间,而且客户从申请贷款到还款都不需要到银行柜台办理,可以完全通过网银来进行。
  民生银行推出的流水贷与之类似,同样是针对使用POS机进行结算的商户,不过民生银行的授信额度更高,商户最高可申请150万元的贷款,贷款期限可以达到1年。“民生银行会进行行业的细分,即不同的行业在申请流水贷时有不同的数据标准,最大程度地帮助各行业的小微企业。”民生银行相关人士介绍。
  对于企业主来说,POS贷的最大好处就是无需抵押、担保且申请贷款方便、迅速。此外,按日计息、随借随还,无疑也为企业主们节省了不少的贷款成本。据王珏介绍,从10月底中信银行重庆分行推出这款产品以来,短短半个月的时间已有近百家小微企业申请了POS贷。
  据王珏介绍,目前重庆大约有3万户商户使用银联系统的POS机进行结算。“据我们了解,银联在每个城市的份额基本都是最高的。但除了银联之外,我们还会寻找其他合适的第三方支付公司合  也有风险:成银行“圈贷”市场
  记者在采访中了解到,商家在申请POS网络贷款时,银行一般都会要求他们先安装POS机。而且是本行的POS机或者合作的POS机才可以申请。
  对此,重庆某银行的相关人士告诉记者:“各家银行都巴不得商户安装自己的POS机,毕竟自己的POS机处理起来也更加方便,而且对商家申请资质、交易信息比较熟悉。另一方面,别的POS机,即使你想去合作,他们也不会轻易给你数据,银行也在互掐。”
  某业内人士表示,随着网贷的价值逐渐被挖掘,POS机正在成为各大银行跑马圈地的新市场,但风险也暗藏其中。“虽然POS机积累的商户流水量、反映的商户经营状况等为银行信贷提供了依据,但由于这一数据不能与商户其它经营数据互联互通,比如许多商户可能同时配备不止一家的POS机,在数据获取方面存在较大差异和难度,甚至有的商户可能已经在某P2P网贷平台有了贷款,所以POS机流水能否准确地反映商户的还贷能力和信用等级有待商榷,毕竟各家银行都有自己的‘如意算盘’。”
  贷款申请流程>
  1.登录个人网银或银联商务客户管理平台系统提出申请;
  2.填写相关资料上传身份证文件;
  3.提交贷款申请;
  4.后台自动完成审核申请;
  5.审核通过后24小时内登录网站确认放款信息;
  6.签署放款协议;
  7.提款。
  (以中信银行为例)
  部分银行POS贷介绍
  银行 产品 贷款 申请 最高贷款
  名称 期限 速度 额度(元)
  中信银行 POS 3个月 数分钟 50万
  商户网贷
  民生银行 流水贷 12个月 1天 150万
  光大银行 POS 24个月 1天 100万
  快贷
  招商银行 POS 12个月 1天 150万作。”民生银行的相关人士说道。


2013年11月24日星期日

英媒称两场战争让解放军明白不能再靠农民军



英国《经济学家》11月23日文章,原题:保持警惕 副题:经济成就给了中国更大分量,但尚不足以打破平衡

1980年中国占全球产出的比重才2.2%,未来10年将跃升至20%。不久前中国人还活在围墙内,如今满世界找原材料。中国是亚洲多数国家的最大贸易伙伴,其外交受到似乎无穷的大订单支持……外界看来,中国经济将彻底改变世界。但鲜被提及的问题是,北京究竟如何将被追捧的经济奇迹转化为地缘政治力量。

自然,中国变得越来越自负。财富增长刺激了权力欲望,它要求更多尊重,不愿意接受拒绝。财富增长为打造强军提供了资金。目睹美国的精确武器在海湾战争和科索沃发挥破坏性威力后,中国认定不能再依赖农民大军。苏联的崩溃又说明与美国军备竞赛的危险。于是北京将资源集中于两点:能武力夺取台湾和阻止美国军舰进入其沿海。中国潜艇、导弹、太空和网络武器并用,希望阻挠拥有航母和海外基地的美国。

然而,在经济、军事和外交每个领域,中国打破美国体系的空间仍然有限,可能今后多年都将如此。

一个经济体的地缘政治效应,不仅源自经济产出,也源自财富。中国人均收入仍与匈牙利相当,还不及美国人一半富有。美国的技术、人力和金融资本更雄厚,在地缘政治上,这些都比中国单纯的人头数更有效。


此外,中国经济繁荣离不开与外界的密切联系,挑战美国必然对其经济增长造成重创。北京若试图抛售巨额美债,不仅会损失投资,还会受累于由此导致的全球衰退,中国作为投资者和供应者的名声也将毁于一旦。对一个通过贸易而繁荣的经济体而言,这像自杀。若为国家荣耀而牺牲商贸,中国不仅会丧失最大客户,且其经济仰赖的霍尔木兹和马六甲海峡都处于美国控制下。打造蓝水海军是个办法。但即便中国继续增加、美国继续削减军费,双方差距仍会巨大。更重要的是,别忽视美军在战斗中积累的经验,而中国的作战系统和学说从未经历实战检验。

俄罗斯目前是中国最有用的盟友,但若北京真挑战美国,莫斯科或许惊慌失措,且中俄间的问题由来已久。而柬埔寨、巴基斯坦等国在挑战美国方面帮不上什么忙……中国挑战只是地区性的,对美国霸主之位不构成挑战。即便构成,也要在军事和外交上翻越大山,世界会有几十年的预警。

(原标题:英媒称两场战争让解放军顿悟不能再靠农民军队)

河南开封农信社招考现阴阳成绩单:29分变85.5


有网友近日以“开封农信社还我们考生公平”为题在网上发帖,举报河南开封市农村信用社在2013年员工招聘考试中批量修改考生成绩:“有24个人的成绩改动过,从三四十分改成80多分,进了面试。”

记者调查发现,开封农信社此次招考确实疑点重重,不仅出现两份不同的成绩单,在考生举报后,开封农信社又发布了不同的面试名单,最初面试名单中被举报的24人在最新发布的面试名单中不见踪影,另外20名成绩靠前的考生入替。

【事件】

阴阳成绩单:24人改分

今年10月31日,河南省农村信用社联合社开封市办公室发布2013年开封市农村信用社招考公告,宣布其辖内兰考、杞县、通许、尉氏四县农村信用合作联社计划面向全省招聘工作人员120名。11月16日全省2000余名考生进行了笔试,11月19日,面试人员名单及成绩公布。

一位考生向记者反映,他从河南农信社官方网站下载了用EXCEL表格制作的面试名单,发现里面只有进入面试的187名考生的成绩,其他考生的成绩并不在其中。后来,经过熟悉EXCEL使用方法的人士指点,他发现这份EXCEL表格中还有一份隐藏的成绩单,这份成绩单显示了所有参加此次招考的考生姓名及成绩。

令他感到意外的是,通过对比,他发现进入面试名单的考生中,有24人在两份成绩单中成绩不符,他们在完整版成绩单上的成绩只有三四十分,而在进入面试人员成绩单上,他们的成绩却变成了80多分。

记者拿到了这份EXCEL表格,发现确如这位考生所说。记者发现,有些考生在完整版成绩单上成绩只有29分,却进入了面试名单,成绩也变成了85.5分,若按照完整版成绩单上的成绩,这些成绩不符的考生均无法进入面试名单。

【追访】

新名单:改分者全未入围

这位考生说,他们发现这种情况后,向河南省银监局、河南省农信社等部门反映,目前,没有任何部门给他们说法。不过,他们反映后,开封农信社又发布了一份面试名单,入围人员同第一份面试名单并无不同,唯一不同的是,这份用EXCEL制作的面试名单中,已无法找到那份隐藏的完整版成绩单。

不过,21日晚,开封农信社发布了第三份面试名单,并发公告称,由于委托承办笔试阅卷工作的第三方在成绩汇总时出现技术故障和失误,造成部分考生成绩错乱,他们发现后立即组织进行了认真核查,现将核实后的成绩及进入面试人员名单予以公布。

记者发现,这份面试名单的入围人员同前两份相比发生了较大变动。被举报的24人全部消失,成绩排序靠前的另外20人入替,最终入围人数也从187人,变成了183人。

【回应】

农信社:系技术故障,承认把关不严

22日,开封农信社纪检监察室一位张姓主任称,第三方是谁不方便告知,什么样的技术故障她并不了解。


此后,开封农信社一位负责人联系记者称,此次招考委托给了上海一家第三方,成绩汇总之后,第三方给了他们一份入围名单和成绩,他们并未同原始成绩进行核对,便上报发布,考生反映后,他们立即调查,发现第三方因为技术故障导致入围成绩部分存在错误,便立即进行了纠正,这一过程中,他们确实存在把关不严之处,今后的面试等环节,他们将引以为戒,严格把关。

对此,一些考生称,技术故障怎么能解释24个人的成绩发生改动,举报后,这24个人立马从最新的面试名单中消失,反而,更说明其中存在猫腻。希望相关部门能对此予以彻查。

据新华社

2013年11月21日星期四

How to Call Web Service in Android Using SOAP

Introduction

In this tutorial, we will learn how to call a Web Service using SOAP (Simple Object Access Protocol). 

Prerequisites

Web Service, SOAP envelope, WSDL (Web Service Definition Language)

What is SOAP?

SOAP is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks. It relies on Extensible Markup Language (XML) for its message format, and usually relies on other Application Layer protocols, most notably Hypertext Transfer Protocol (HTTP) and Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission. The following is the structure of SOAP Envelope:

AndWeb1.jpg

Step 1:

First create a "New Android Project". Name it "WebServiceDemo" like below.

AndWeb2.jpg

AndWeb3.jpg

AndWeb4.jpg

Step 2:

Now right-click on your "WebServiceDemo" project and select "New -> Folder"

AndWeb5.jpg


Now, give it a name it "lib". We need to add a SOAP library into this directory.

AndWeb6.jpg

Step 3:

Now download the attached library named "ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar". Copy that file and paste it into the "lib" directory.

After copying, do the following steps:
  1. Right-click on the project.
  2. Go "Build Path -> Configure Build Path"

    AndWeb7.jpg
     
  3. Now, click on "Add Jars" and select ".jar" file from "project -> lib" directory.

    AndWeb8.jpg
     
  4. Click on "Ok" to finish the procedure of adding library to Android application.
Step 4:

Next we need to create a layout of screen. To do so, go to "WebServiceDemo -> res -> layout -> main.xml"
Open this xml file in editing mode, and place below code.

Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fahrenheit"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/txtFar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Celsius"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/txtCel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btnFar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Convert To Celsius" />

        <Button
            android:id="@+id/btnCel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Convert To Fahrenheit" />

    </LinearLayout>


    <Button
        android:id="@+id/btnClear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Clear" />

</LinearLayout>

This will create simple following screen.

AndWeb9.jpg


Step 5:

Now, find out any Web Service, make sure that you can view its WSDL file by writing "?wsdl" after that address.

For example, you have a web service like http://www.w3schools.com/webservices/tempconvert.asmx",  so to view the WSDL file, simply write "?wsdl" after this address like:
http://www.w3schools.com/webservices/tempconvert.asmx?WSDL".  

You are now done with the Web Service part from the internet. Now you need to extend some portion of the WSDL file. Open the first link in your browser, it will display 2 conversions for you:
  • CelsiusToFahrenheit
  • FahrenheitToCelsius
Select anyone of them, and you will see following screen:

AndWeb10.jpg

For CelsiusToFahrenheit:
  1. NAMESPACE = "http://tempuri.org/";
  2. METHOD_NAME = "CelsiusToFahrenheit";
For FahrenheitToCelsius:
  1. NAMESPACE = "http://tempuri.org/";
  2. METHOD_NAME = " FahrenheitToCelsius ";
Step 6:

You need to understand some classes before proceeding to use a Web Service.
  1. SoapObject ( 

    A simple dynamic object that can be used to build SOAP calls without implementing KvmSerializable. Essentially, this is what goes inside the body of a SOAP envelope - it is the direct subelement of the body and all further sub elements. Instead of this class, custom classes can be used if they implement the KvmSerializable interface.

    Constructor:

    SoapObject (java.lang.String namespace, java.lang.String method) 
     
  2. SoapSerializationEnvelope

    This class extends the SoapEnvelope with Soap Serialization functionality.

    Constructor:
    SoapSerializationEnvelope (int version)

    Fields:
    Type
    Field
    Description
    boolean
    dotNet
    Set this variable to true for compatibility with what seems to be the default encoding for .Net-Services.
    Methods:
    Return Type
    Method Name
    Description
    void
    setOutputSoapObject(java.lang.Object soapObject)
    Assigns the object to the envelope as the outbound message for the soap call.

  3. HttpTransportSE (org.ksoap2.transport.HttpTransportSE)

    A J2SE based HttpTransport layer.

    Constructor:

    HttpTransportSE(java.lang.String url)

    Method:
    Return Type
    Method
    Description
    void
    call(java.lang.String SoapAction, SoapEnvelope envelope)
    set the desired soapAction header field
Step 7:

Open your "WebServiceDemo -> src -> WebServiceDemoActivity.java" file and enterr following code:

WebServiceDemoActivity.java
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class WebServiceDemoActivity extends Activity
{
    /** Called when the activity is first created. */
      private static String SOAP_ACTION1 = "http://tempuri.org/FahrenheitToCelsius";
      private static String SOAP_ACTION2 = "http://tempuri.org/CelsiusToFahrenheit";
      private static String NAMESPACE = "http://tempuri.org/";
      private static String METHOD_NAME1 = "FahrenheitToCelsius";
      private static String METHOD_NAME2 = "CelsiusToFahrenheit";
      private static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";

      Button btnFar,btnCel,btnClear;
      EditText txtFar,txtCel;
     
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        btnFar = (Button)findViewById(R.id.btnFar);
        btnCel = (Button)findViewById(R.id.btnCel);
        btnClear = (Button)findViewById(R.id.btnClear);
        txtFar = (EditText)findViewById(R.id.txtFar);
        txtCel = (EditText)findViewById(R.id.txtCel);
       
        btnFar.setOnClickListener(new View.OnClickListener()
        {
                  @Override
                  public void onClick(View v)
                  {
                        //Initialize soap request + add parameters
                  SoapObject request = new SoapObject(NAMESPACEMETHOD_NAME1);       
                 
                  //Use this to add parameters
                  request.addProperty("Fahrenheit",txtFar.getText().toString());
                 
                  //Declare the version of the SOAP request
                  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                 
                  envelope.setOutputSoapObject(request);
                  envelope.dotNet = true;
                 
                  try {
                        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                       
                        //this is the actual part that will call the webservice
                        androidHttpTransport.call(SOAP_ACTION1, envelope);
                       
                        // Get the SoapResult from the envelope body.
                        SoapObject result = (SoapObject)envelope.bodyIn;

                        if(result != null)
                        {
                              //Get the first property and change the label text
                              txtCel.setText(result.getProperty(0).toString());
                        }
                        else
                        {
                              Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show();
                        }
                  } catch (Exception e) {
                        e.printStackTrace();
                  }
                  }
            });
       
        btnCel.setOnClickListener(new View.OnClickListener()
        {
                  @Override
                  public void onClick(View v)
                  {
                        //Initialize soap request + add parameters
                  SoapObject request = new SoapObject(NAMESPACEMETHOD_NAME2);       
                 
                  //Use this to add parameters
                  request.addProperty("Celsius",txtCel.getText().toString());
                 
                  //Declare the version of the SOAP request
                  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                 
                  envelope.setOutputSoapObject(request);
                  envelope.dotNet = true;
                 
                  try {
                        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                       
                        //this is the actual part that will call the webservice
                        androidHttpTransport.call(SOAP_ACTION2, envelope);
                       
                        // Get the SoapResult from the envelope body.
                        SoapObject result = (SoapObject)envelope.bodyIn;

                        if(result != null)
                        {
                              //Get the first property and change the label text
                              txtFar.setText(result.getProperty(0).toString());
                        }
                        else
                        {
                              Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show();
                        }
                  } catch (Exception e) {
                        e.printStackTrace();
                  }
                  }
            });
       
        btnClear.setOnClickListener(new View.OnClickListener()
        {
                  @Override
                  public void onClick(View v)
                  {
                        txtCel.setText("");
                        txtFar.setText("");
                  }
            });
    }
}

Step 8:

Now, open your "WebServiceDemo -> android.manifest" file. Add the following line before the <application> tag:

<uses-permission android:name="android.permission.INTERNET" />

This will allow the application to use the internet.

Step 9:

Run your application in the Android Cell. You will get the following outcome:

Note: In the emulator, we need to fix a proxy, so try the application in an Android Cell.

AndWeb11.jpg

Summary

In this brief tutorial, we learned about Web Services, SOAP envelopes, WSDL files, HTTP transport, and how to use the in an Android application.
 
Article Extensions
Contents added by pugazhendhi p on Jul 22, 2013
Contents added by Chintan Rathod on Nov 21, 2012
Hi Friends,

I searched for the actual error that has Eclipse problem for "NoClassFound".
I have fixed this by following.

------------------

Right click "project" -> Properties -> Java Build Path -> Order And Explort

------------------



Now, make sure that, you have "Checked" that external added "jar" file as you can see in the snap.
Make sure that order of that external jar file also same like displayed in snap.

Now, Run your project and enjoy.

Thanks & Regards
---------------------
Chintan Rathod
Contents added by Chintan Rathod on Oct 23, 2012
Following are steps for How to configure Proxy in "Run Configuration" when you are using emulator

Step 1:


Right click on "project" -> Run As -> Run Configuration



Proxy -> your internet access IP address
port    -> default 8080

Then click on "Apply".

Now, you can try to run web application in emulator, it will not give you any error regarding network connection.