Aside

汉字使用默认解码出现问题

–同步自GEJOIN.COM

老生常谈的一个问题,汉字编码与解码问题,各种编码就不再复制粘贴了,需要的话维基百科捡起来再看看。

名称 第一字节 第二字节
GB2312 0xB0-0xF7(176-247) 0xA0-0xFE(160-254)
GBK 0x81-0xFE(129-254) 0x40-0xFE(64-254)

遇到一个问题,一字符串以‘|’ 分隔,解析后出现各种乱码。这显然是编码重叠导致的。 举例来看: “王文弢|赵珅|刘颖弢|田東|孙炜韡” 查看这些汉字的编码,可以看到高位中正好有|这个相同编码。

那么就需要对汉字进行必要解码而不是默认。

       unsigned char ch1 = (unsigned char) *s;
       unsigned char ch2 = (unsigned char) *(s+1);
       if (ch1>=129 && ch1<=254 && ch2>=64 && ch2<=254)
       {
        ...
       }

查看其代码原来使用库函数strchr,于是重新写写这个函数:

char *StrChr (char *s,char c)
{
   while(*s!='\0'&&*s!=c)
    {
       unsigned char ch1 = (unsigned char) *s;
       unsigned char ch2 = (unsigned char) *(s+1);
       if (ch1>=129 && ch1<=254 && ch2>=64 && ch2<=254)
       {
            ++s;
        }
        ++s;
    }
    return *s==c ? s: NULL;
}

好了。以后再继续。

关于某支付公司近日某些风波的思考

关于某支付公司近日某些风波的思考

以下吐槽内容均不代表个人观点,一切风险和责任本人概不承担。
传言有时候真是略显荒唐。事件的原因就暂且不提了。某吧我是从不去的,渣浪也基本不感兴趣,所以对于那些传言从Boss的言行以及近日惨绝人寰的加班中读出四五分的真实~

事件具体产生成了什么样的影响?社会和企业以及个人,前两者自有人琢磨,对于个人,对资深苦逼的印象是深刻和值得深思的。
因此,结合本次事件反思下,主要分析项目管理上的问题。
首先,作为一个大的金融交易系统项目,没有做出具体详尽的需求分析,建设中没有业务参与,管理层的急功近利,顾此失彼,盲目乐观…有限的工期内每一环节出问题都是致命的,我认为导致系统建设问题的根本是管理层的失误。
其次,忽略服务。第三方支付系统是面向商户,给商户提供服务的,商户要的不是一个简单交易成功 ,交易的承兑和资金的通畅才是商户关心的。忽略了个性化服务而盲目追求原型中的稳定或成熟,这本身就是舍本逐末。不同于银行,商户在第三方支付中要个性的多。没有充分评估商户清算环节的重要性,未作必要的评审分析,导致清算问题突出。
第三,系统设计存在问题,不同系统之间差异天壤之别。报文+通信协议构造的联机交易系统可能大同小异,但清算系统的个性不可同日而语。联机中计费或个性处理本质没有问题,但如果这一环节出现问题,补救的难度将是巨大的。
过分依赖中间键和原型系统势必限制新系统的灵活和创新,导致建设中举步维艰,架构设计多次推翻,浪费大量时间。
引入账户体系一直作为Boss自豪的资本,可是,它居然没有用!这几乎成为一个笑话。商户个性多元的服务诉求,这个账户系统似乎不够完备暂时无法满足,于是,账户系统对于线下商户作为摆设还显得刺眼。某种意义上这样不完备的账户体系成了一块巨大的包袱。打脸-它真的没用!还是再考虑考虑完善吧~
四,沟通。管理层和各成员,信息并不能真实的被传递。过分的乐观完全压过下面反对的声音。当然领导有自己的压力,压力传递到各成员后,只有加班~没有意见~没有建议~疯狂
五,风险。一刀切,要么生,要么死,结果残了。
码到这里累了,无力吐槽。个人拙见,但愿来日不再像今日,新年后的良心发现。

个人拙见,谢绝转载。

SHELL 字符串分隔然后..

SHELL 字符串分隔然后..

废话不说,直接上代码:
方案一:

divStrArry () {
    str=$@;
    OLD_IFS="$IFS"
    IFS="/"
    arr=($str)
    IFS="$OLD_IFS"
    num=${#arr[@]}
    for i in ${arr[@]}
    do
      echo $i
    done 
}

方案二:

divStrArry () {
    str="$@";
    set -A arr $(echo $str|tr '/' ' '|tr -s ' ')
    num=${#arr[@]}
    for i in ${arr[@]}
    do
      echo "$i"
    done
}

那么有一个需求:使用shell脚本FTP 建立多级目录:包括子目录。不支持mkdir -p的。
同样直接上代码

funnc() {
    local r
    local a
    r="$@"
    while [[ "$r" != "$a" ]] ; do
        a=${r%%/*}
        echo "mkdir $a"
        echo "cd $a"
        r=${r#*/}
    done
}
ftp -inv 0.0.0.0 < < EOF
user username pass
bin
$(funnc Misc/Sub/acct/${host_date})
mput xw.TXT
bye
EOF

其它废话也不说了…

Remix OS 一款全新的桌面操作系统

Remix OS 一款全新的桌面操作系统

Remix OS 一款全新的桌面操作系统,你所需的只有一个PC或Mac再加上一个USB3.0的U盘。
–已些内容都直接复制自官网。详细的就直接去这里看吧:
mmexport1453220433693

mmexport1453220451303
http://www.jide.com/remixos-for-pc

直接下载尝试再说:—–>前往

  • Remix OS for PC Package (Legacy)  [国际版][中国版]
  • Remix OS for PC Package (EFI)[国际版][中国版]

系统配置要求

  • 存储容量 8GB 及以上,存储格式为 FAT32,且支持 USB 3.0 的闪存设备(建议写入速度大于 20MB/s)
  • 一台64位CPU的个人电脑

Remix OS PC 版安装方法(PC 产品)

  1. 下载 Remix OS PC 版镜像文件以及 Remix OS USB Tool 写入工具至 PC 电脑;
  2. 将 U 盘接入 PC 电脑;
  3. 打开 Remix OS USB Tool 写入工具,跟随引导项将 Remix OS PC 版镜像烧录至 U 盘;
  4. 重启电脑并进入 BIOS 菜单;
  5. 将 “USB存储设备” 调整为第一启动项;
  6. 保存设置并重启电脑;
  7. 待系统启动后,选择“Guest Mode(访客模式)”或“Resident Mode(普通模式)”即可运行 Remix OS PC 版。

* 不同品牌和型号电脑进入 BIOS 菜单以及调整启动项的方法存在差异,请根据实际情况自行查阅

Remix OS PC版安装方法(Mac 产品)

  1. 下载 Remix OS PC 版镜像文件以及 Remix OS USB Tool 写入工具至 PC 电脑;
  2. 将 U 盘接入 PC 电脑;
  3. 打开 Remix OS USB Tool 写入工具,跟随引导项将 Remix OS PC 版镜像烧录至 U 盘;
  4. 将 U 盘接入 Mac 产品;
  5. 点按电源键,并长按 option 键进入启动菜单;
  6. 选择并进入 U 盘内容;
  7. 待系统启动后,选择“Guest Mode(访客模式)”或“Resident Mode(普通模式)”即可运行 Remix OS PC 版。

安卓电脑的又一次革命

在 Android-x86 项目的基础上,开发并推出了 Remix OS PC 版。这是 Remix OS 的一个新阶段,也将成为安卓电脑的又一座里程碑。
Remix OS PC 版能够运行在超过半数的现存 Intel PC 中(包含部分 Mac 产品)。即便是老旧配置的个人电脑,也能焕发新的青春活力。
凭借整体基于 Android 系统深度定制的优势,Remix OS PC 版继承了安卓生态中多达 160 万的 App 资源,相对于传统 Windows 应用来说有着更快的更新节奏,而相对于 iOS 系统则有着明显的量级优势。
便携,重新定义
Remix OS PC 版依附于闪存设备的特性,令其更适于随身携带。试想,当运行 Remix OS PC 版的个人电脑与搭载 Android 系统的智能手机形成绝配之势,移动体验将变得更加不可思议。而在占据全球个人电脑绝大多数的 x86 架构产品中寻找一台宿主,似乎也不是一件困难的事。

 

Install Scrapy on OSX|mac OSX 上安装Scrapy[SYN:gejoin.com]

Install Scrapy on OSX|mac OSX 上安装Scrapy[SYN:gejoin.com]

注:文章同步自我的[SYN:gejoin.com]

顺利的话,一句命令搞定:
sudo pip install Scrapy
OSX还是需要额外一些包或升级的,包括:

cssselect, queuelib, six, w3lib, lxml, Twisted, characteristic, pyasn1, pyasn1-modules, service-identity

幸运的是pip或者easy_install 可以自动为你安装,但是其中的问题:

Found existing installation: six 1.4.1
DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Uninstalling six-1.4.1:

OSError: [Errno 1] Operation not permitted: ‘/tmp/pip-qeBchm-uninstall/System/Library/Frameworks/Python.framework/
Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info’

python

显然升级six是出错了,使用sudo
pip install six --upgrade 或者 pip uninstall six
都会遇到同样的错误。无论什么用户,多大权限。想必下载包安装也会同样问题。我只能这么认为:这都是pip的错。
好吧,那就easy_install试试吧。

sudo easy_install –upgrade six
Searching for six
Reading https://pypi.python.org/simple/six/
Best match: six 1.10.0
Downloading https://pypi.python.org/packages/source/s/six/>six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55
Processing six-1.10.0.tar.gz

Installed /Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg
Processing dependencies for six
Finished processing dependencies for six

继续使用easy_install 安装Scarpy吧:…

sudo easy_install Scrapy

看起来挺顺利..
可是….

In file included from src/lxml/lxml.etree.c:323:
src/lxml/includes/etree_defs.h:14:10: fatal error: ‘libxml/xmlversion.h’ file not found
#include “libxml/xmlversion.h”
^
1 error generated.
Compile failed: command ‘cc’ failed with exit status 1
/tmp/easy_install-U7v3Lb/lxml-3.5.0/temp/xmlXPathInitxO27oS.c:1:10: >fatal error: ‘libxml/xpath.h’ file not found
#include “libxml/xpath.h”
^
1 error generated.

看来libxml2 需要额外安装的

xcode-select --install

以下就顺利完成安装

sudo pip install Scrapy
OR
sudo pip easy_install Scrapy

CICS配置管理TIPS

CICS配置管理TIPS

配置CICS

Forked from http://gejoin.com/2016/01/02/CICS-management-tips.html

配置 CICS REGION:

cicscp -v start sfs_server SFS_NAME	
cicscp -v create region REGION_NAME DefaultFileServer=

配置 RD:

cicsupdate -c rd -r REGION_NAME XPRecvTimeout=300 
cicsupdate -c rd -r REGION_NAME MinServer=30 
cicsupdate -c rd -r REGION_NAME MaxServer=80 
cicsupdate -c rd -r REGION_NAME MaxRegionPool=62914560 
cicsupdate -c rd -r REGION_NAME MaxTaskPrivatePool=20971520 
cicsupdate -c rd -r REGION_NAME MaxTSHPool=41943040
cicsupdate -c rd -r REGION_NAME TraceFlagMaster=on 
cicsupdate -c rd -r REGION_NAME TraceFlagSystem=on 
cicsupdate -c rd -r REGION_NAME TraceFlagUser=on AllowDebugging=yes

其中 REGION_NAME 需更改为您的 CICS REGION 名称。

配置 LD:

cicsadd -c ld -r REGION_NAME LD1 TCPAddress="backend_server" TCPService="tran-host" SNAServerTransport=TCP

其中 backend_server 是后端服务器的 IP 地址。
添加以下行以编辑 /etc/services 文件:

tran-host port_number/tcp

其中 port_number 是端口号。请确保此端口号与 /etc/services 文件中的其他端口号不冲突。

配置环境变量:

添加以下行,编辑/var/cics_regions/REGION_NAME/environment

COBPATH=/user/bin:/usr/lpp/cobol/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11
CICS_PROGRAM_PATH=/home/cbod/cbodload/load:/usr/lpp/cics/lib:.
DB2INSTANCE=db2inst1
COB_CPM_SIZE_MAX=0
EXTSHM=ON
DB2NOEXITLIST=ON

配置 WD:

cicsupdate -c wd -r REGION_NAME MDCL Permanent=no RecoverTerminal=no
cicsupdate -c wd -r REGION_NAME MDCI Permanent=no RecoverTerminal=no 配置WD

配置 TD:

cicsadd -c td -r REGION_NAME TCCZ ProgName="DFHMIRS" Timeout=5 TWASize=32767
cicsadd -c td -r REGION_NAME INQY ProgName="GCCBINQY" Timeout=5 TWASize=32767
cicsadd -c td -r REGION_NAME TCCA ProgName="GCCBMMN" Timeout=5 TWASize=32767 TWASize 大小不能忽略。

配置 PD:

cicsadd -c pd -r REGION_NAME GCCBMMN PathName="GCCBMMN" RSLKey=public
cicsadd -c pd -r REGION_NAME GCCBINQY PathName="GCCBINQY" RSLKey=public
cicsadd -c pd -r REGION_NAME GCCBCOP PathName="GCCBCOP" RSLKey=public 添加PD 查看和删除PD方法类似。

配置 XAD

cicsadd -c xad -r REGION_NAME cicsdb2 SwitchLoadFile="/usr/lpp/cics/bin/db21pc" XAOpen="DBNAME,USER_ID,PASSWORD"

其中 REGION_NAME、DBNAME、USER_ID 和 PASSWORD 需相应地替换为您环境中的信息。

配置 CTG:

要配置 ctg.ini 文件,请在 /opt/IBM/cicstg/bin/ctg.ini 文件中添加以下行:

SECTION SERVER = REGION_name
            UPPERCASESECURITY=N
            PROTOCOL=TCPIP
            NETNAME=IP_address
            PORT=port_number
            CONNECTTIMEOUT=0
            TCPKEEPALIVE=N
ENDSECTION
  • 其中 REGION_name、IP_address 和 port_number 需相应地替换为您环境中的信息。
  • 使用 root 用户帐户完成以下步骤以重新启动 CTG:
    • 运行 cicscli -s 命令以启动 CTG。
    • 可选: 要验证是否已成功启动 CTG,请运行 cicscli -l 命令。

停启CICS

cicscp -v stop region REGION_name
cicscp -v start region REGION_name StartType=cold

——–
IPC支持
EXTSHM=ON

DB2NOEXITLIST=ON

Db2中出现的超时产生core : Transaction ‘CPMI’, Abend ‘A147’, at ‘???’.
以及对于一些莫名产生core信息只能看到数据库断开信息如:
IOT/Abort trap in pthread_kill at 0xd0540a14
0xd0540a14 (pthread_kill+0xb4) 80410014            lwz   r2,0x14(r1)
pthread_kill(??, ??) at 0xd0540a14
_p_raise(??) at 0xd053fe64
raise.raise(??) at 0xd0120c20
SupOS_CicsCOREDump() at 0xdc9eedb4
SupOS_TurnSignalToException(??, ??, ??) at 0xdc9ed5dc
sqleUCdisconnect(??) at 0xd86743b0
sqleUCtermAllCtx(??, ??) at 0xd8673ef0
sqleterm(char,sqlca*)(??, ??) at 0xd8cec01c
sqle_ctx_exit_function()() at 0xd88f1e7c
sqle_myexitlist_function()() at 0xd88f1cf0
sqleExitApplicationEnvironment(unsigned int)(??) at 0xd88f12d0
sqloipdc.sqlo_execute_list@AF34_4(??) at 0xd8804858
sqlo_execute_list() at 0xd88047ac
exit(??) at 0xd017cf70
bde_thread_TaskExit(??) at 0xdc323b18
bde_Exit(??) at 0xdc333dc4
SupOS_Exit(??) at 0xdc9ed494
....
可以尝试添加环境变量 DB2NOEXITLIST=ON
有两种方法可以达到这个目的:
1. Set the environment variable DB2NOEXITLIST=ON for the DB2 client environment on the system with the TXSeries region.
a) db2set DB2NOEXITLIST=ON
b) db2 terminate
c) re-start CICS region
2. Set DB2NOEXITLIST=ON in the region's environment and re-start the region.
Refer to DB2 manual for more information on the DB2NOEXITLIST environment variable.
设置成yes似乎也可以,未验证...
Set the environment variable DB2NOEXITLIST=yes in DB2 client env.
1.Set db2set DB2NOEXITLIST=yes.
2.Terminate DB2 and restart the region.
Set DB2NOEXITLIST=yes in region's environment

一些错误分析:
LINK和START调用的主要返回值解释如下:
1、LINK错误码分析
 
INVREQ(请求非法)
交易状态不对(有无SYNCONRETURN混用)
TRANSID全空
 
LENGERR
DATALENGTH选项为负值
DATALENGTH选项比LENGTH选项长
 
NOTAUTH
权限问题
使用了SYSID选项,但是RSLCheck没有设置为NONE
 
PGMIDERR
PD不存在
PD被disabled.
 
ROLLEDBACK
被LINK的程序无法执行syncpoint
 
SYSIDERR
CD不存在或错误
对方域不存在或已经宕机
网络不通
在本地TD:timeout时,远端交易还在队列
通信错误码:15a00002/15a00102
 
TERMERR
会话失败,TRANSID不存在
在本地TD:timeout时,远端交易还在运行。通信错误码:15a00007/a0000100
RD:MaxTClassLim引起的Reject。通信错误码:15a00007/84b6031
 
2、START错误码分析
 
INVREQ(请求非法)
Hours超范围
Minutes超范围
Seconds超范围
指定REQID但是该TSQ已经存在(在Pool不足时可能出现)
 
IOERR
SFS满
 
ISCINVREQ
ISC失败
 
LENGERR
使用LENGTH(0).
 
NOTAUTH
权限不足
使用了SYSID选项,但是RSLCheck没有设置为NONE
 
SYSIDERR
CD不存在或错误
对方域不存在或已经宕机
网络不通
通信错误码:15a00002/15a00102
 
TERMIDERR
TERMID选项非法
 
TRANSIDERR
TRANSID选项非法
 when ('NORMAL')       return ('0');
    when ('ERROR')        return ('1');
    when ('RDATT')        return ('2');
    when ('WRBRK')        return ('3');
    when ('EOF')          return ('4');
    when ('EODS')         return ('5');
    when ('EOC')          return ('6');
    when ('INBFMH')       return ('7');
    when ('ENDINPT')      return ('8');
    when ('NONVAL')       return ('9');
    when ('NOSTART')      return ('10');
    when ('TERMIDERR')    return ('11');
    when ('DSIDERR')      return ('12');
    when ('FILENOTFOUND') return ('12');
    when ('NOTFND')       return ('13');
    when ('DUPREC')       return ('14');
    when ('DUPKEY')       return ('15');
    when ('INVREQ')       return ('16');
    when ('IOERR')        return ('17');
    when ('NOSPACE')      return ('18');
    when ('NOTOPEN')      return ('19');
    when ('ENDFILE')      return ('20');
    when ('ILLOGIC')      return ('21');
    when ('LENGERR')      return ('22');
    when ('QZERO')        return ('23');
    when ('SIGNAL')       return ('24');
    when ('QBUSY')        return ('25');
    when ('ITEMERR')      return ('26');
    when ('PGMIDERR')     return ('27');
    when ('TRANSIDERR')   return ('28');
    when ('ENDDATA')      return ('29');
    when ('INVTSREQ')     return ('30');
    when ('EXPIRED')      return ('31');
    when ('RETPAGE')      return ('32');
    when ('RTEFAIL')      return ('33');
    when ('RTESOME')      return ('34');
    when ('TSIOERR')      return ('35');
    when ('MAPFAIL')      return ('36');
    when ('INVERRTERM')   return ('37');
    when ('INVMPSZ')      return ('38');
    when ('IGREQID')      return ('39');
    when ('OVERFLOW')     return ('40');
    when ('INVLDC')       return ('41');
    when ('NOSTG')        return ('42');
    when ('JIDERR')       return ('43');
    when ('QIDERR')       return ('44');
    when ('NOJBUFSP')     return ('45');
    when ('DSSTAT')       return ('46');
    when ('SELNERR')      return ('47');
    when ('FUNCERR')      return ('48');
    when ('UNEXPIN')      return ('49');
    when ('NOPASSBKRD')   return ('50');
    when ('NOPASSBKWR')   return ('51');
    when ('SYSIDERR')     return ('53');
    when ('ISCINVREQ')    return ('54');
    when ('ENQBUSY')      return ('55');
    when ('ENVDEFERR')    return ('56');
    when ('IGREQCD')      return ('57');
    when ('SESSIONERR')   return ('58');
    when ('SYSBUSY')      return ('59');
    when ('SESSBUSY')     return ('60');
    when ('NOTALLOC')     return ('61');
    when ('CBIDERR')      return ('62');
    when ('INVEXITREQ')   return ('63');
    when ('INVPARTNSET')  return ('64');
    when ('INVPARTN')     return ('65');
    when ('PARTNFAIL')    return ('66');
    when ('USERIDERR')    return ('69');
    when ('NOTAUTH')      return ('70');
    when ('VOLIDERR')     return ('71');
    when ('SUPPRESSED')   return ('72');
    when ('WRONGSTAT')    return ('73');
    when ('NAMEERROR')    return ('74');
    when ('CCERROR')      return ('76');
    when ('NOSPOOL')      return ('80');
    when ('TERMERR')      return ('81');
    when ('ROLLEDBACK')   return ('82');
    when ('END')          return ('83');
    when ('DISABLED')     return ('84');
    when ('ALLOCERR')     return ('85');
    when ('STRELERR')     return ('86');
    when ('OPENERR')      return ('87');
    when ('SPOLBUSY')     return ('88');
    when ('SPOLERR')      return ('89');
    when ('NODEIDERR')    return ('90');
    when ('TASKIDERR')    return ('91');
    when ('CONTAINERERR') return ('110');
    when ('TOKENERR')     return ('112');
    when ('CHANNELERR')   return ('122');
    when ('CCSIDERR')     return ('123');

 

 
Chrome OS 双系统安装

Chrome OS 双系统安装

上一篇post [虚拟机中安装Chrome OS(cloudready)]我实践了在虚拟机中安装ChromeOS,从中得出启发,成功的在我的一台PC上装上了Windows 10 和Chrome OS。虽然Chrome OS 处于安全因素并不支持(推荐)双系统安装启动(DUAL BOOT)。但是理论上是可行的。
我的想法:既然我已经可以在Chrome OS上使用命令指定目标硬盘进行安装,那么如果电脑有两块或以上的硬盘,那么不可以轻松安装和启动吗。的确这样,我在我的Acer Inspire V7,该机器带有一块20G 的SSD。Windows 系统安装在机械硬盘上。

我的实施步骤:
1.设置好Boot,EFI启用。安装好Windows 操作系统在原500G的硬盘上。
2.下载CloudReady或其他版本的Chrome OS。点击这里去下载->
3.制作USB启动盘。Chrome 浏览器安装Chromebook Recovery Utility,Mac,PC版本的Chrome都支持:(1).Chrome 安装 Chrome Web Store地址, 安装:

step_cr_1


(2)选择Local image 浏览到刚刚下载的CloudReady  镜像文件cloudready-free-44.1.9.bin.zip

step_cr_2


(3)写入U盘,注意U盘需要大于4G,建议8G以上。

step_cr_3

 

4.U盘系统盘制作完成后就可以安装,开机进入Boot选择界面,选择U盘安装介质。
5,进入CloudReay安装界面后,Ctrl + Alt + F2进入命令行界面,
使用用户
chronos,密码chrome,查看安装目标磁盘。 

sudo fdisk -l

找到目标盘,比如我的20g的SSD 是/dev/sdb

sudo chromeos-install –dst /dev/sdb

6.等待安装完成,Ctrl + Alt + F1 回到图型界面,重启电脑。
7.开机使用选择BOOT的方式可以进入Chrome OS。

mychrome

 

 

虚拟机中安装Chrome OS(cloudready)

虚拟机中安装Chrome OS(cloudready)

CloudReady 是基于Chromium OS 编译版本,硬盘安装非常简便,支持非常多的老机器,个人用户可以免费从其网站上下载获取。一些其它特性自行搜索了解吧。硬盘安装的步骤非常简单,但是会擦出所有数据,请谨慎操作。本文只讲如何在虚拟机中安装chrome os.

1.首先,需要 安装Vitrual Box 虚拟机;mac ,pc版都可以:点击这里下载
2.安装虚拟机完成后,新建一个Virtualbox VM 比如命名ChromeOS,类型为linux,other linux。参考的设置参数:

设置内存大小 1024 (1 GB)
创建 VDI disk,假设命名chromehd.vdi,设置为Sata,大小(12 GB) ,
Enable EFI
Enable PAE
2个CPU
网络选择 “桥接”[gfw,登陆google 建议使用ss,LAN proxy]

3.下载CloudReady。点击这里去下载->
下载完成后文件cloudready-free-44.1.9.bin.zip,解压出cloudready-free-44.1.9.bin 文件。Mac 建议使用The Unarchiver.注意解压出的文件后缀是.bin.
4.转换文件为vdi.
mac 下,在终端中,进入 /Applications/VirtualBox.app

./VBoxManage convertfromraw /Users/XX/Downloads/cloudready-free-44.1.9.bin /Users/XX/Downloads/cloudready.vdi

等待片刻完成。
5. 设置VitrualBox VM,配置虚拟机ChromeOS。在存储管理标签添加cloudready.vdi,并设置为port 0,chromehd.vdi  port为1.Screen Shot 2015-11-13 at 6.37.44 PM

6.设置完成,启动虚拟机。进入CloudReady 界面。按Ctrl + Alt + F2进入命令行,以下是节选官方手动安装步骤 。使用用户chronos,密码chrome,执行sudo chromeos-install –skip_src_removable –dst /dev/sdb

  • When the first screen comes up and asks you to select your network, press Ctrl + Alt + F2.
  • You will find yourself at a command line.
  • the username is: chronos
  • the password is: chrome
  • FIRST, determine your install destination by running “sudo fdisk -l
  • You can look at the device sizes to find out which device is your HDD (usually sda)
  • To install, type the following commands:
  • cd /usr/sbin
  • sudo chromeos-install –dst /dev/sdX
  • NOTE: If the above cmd fails, try “sudo chromeos-install –skip_src_removable –dst /dev/sdX”
  • replace “sdX” above with the letter of your drive
  • Type the password listed above (chrome)
  • You will be asked to confirm the source and destination – don’t proceed if you aren’t sure (or unconcerned with wiping any device)
  • When sure, type Y and press enter.
  • Now you wait. You may see some errors or warnings – don’t worry unless everything fails
  • As far as I can tell, they can be ignored. Maybe someone can shed some light on the error and the cause. Maybe even a prevention/fix.
  • The process will take 5-10 minutes.
  • When the message “Please shutdown, remove the USB device, cross your fingers, and reboot.” appears,
  • Press CTRL + ALT + F1 to get back to the Welcome screen.
  • Click Shutdown, remove your USB stick, and reboot.
  • Marvel in your awesome, you are now !

7.至此,安装完成,暂时不要重启虚拟机,设置cloudready.vdi port 为3 ,大于1就可以,重新启动。aa

8.多么亲切熟悉的界面:

Screen Shot 2015-11-13 at 5.19.16 PM

Ingress Agent战场指南-欢迎来到 Ingress

Ingress Agent战场指南-欢迎来到 Ingress

面对一种神秘的能量,你会怎么做?如果你认为这种能量是邪恶的,那就选择保护人类免遭入侵,如果你认为这种能量是上天的启蒙,就正确驾驭,为人类铺就一条未来之路。无论选择哪种立场,你都需要找到同盟:加入 Resistance Faction 或Enlightened Faction 来完成自己的使命吧。你需要尽全力去寻找 Portal 并把找到的 Portal 连结起来,建立与地理区域相对应的 Control Field,进而控制所覆盖的人口。Intel 地图会不断跟踪两大阵营所控制的 Mind Unit。

你的最终目标是与世界各地同一 Faction 中的战友并肩作战,保卫或解放全世界。请参阅此战场指南,踏上你的游戏之旅吧!要下载本指南以备随时参考,请点击以下链接。

Ingress 特工领域指南:反抗军(PDF)–链接来自google
Ingress 特工领域指南:启蒙军(PDF)–链接来自google

ingress01

新手 Agent 核对清单

  • 选择你的 Codename。
  • 选择一个 Faction。请谨慎选择。一旦做出选择,你便无法更改。
  • 熟悉 Scanner
  • 查阅 Agent Protocol
  • 查阅术语表和库存物品列表
  • 完成训练任务。

    选择一个 Faction 并完成训练

  • 探索外面的真实世界、四处走走、收集 XM、Hack Portal、赚取 Access Point(AP)。你可以通过赚取 Access Point (AP) 来实现“升级”。升级后,你就能使用能量更高的 Item,最终接管更多 Mind Unit,从而壮大同盟 Faction 的力量。
  • 你可以通过 Ingress G+COMMFacebook 等平台与其他玩家联系。加入本地 Ingress 社区还可以与附近的 Agent 保持联系。与更多经验丰富的玩家组队协作,会为新手 Agent 带来更美妙的成功体验!
  • 推荐新 PortalPortal 通常是时尚炫酷的地方和趣味十足的 Item,它们必须安全可靠,对公众开放。如果你在寻找附近的 Portal 时遇到问题,请参阅 Intel 地图,查看世界各地的 Portal。放大地图,查看尚未占领的(灰色)或第 1 级的 Portal,这样你就可以着手部署 Resonator 并发动 Hack,从而赚取 Item。

高手提示:如果你的住所附近没有 Portal,你可以随时推荐新 Portal 来填补你周围区域的空白,但前提是你提交的 Portal 推荐符合我们的候选 Portal 标准。如果推荐的 Portal 通过审核,你还会获得 AP 奖励。

 

Ingress Agent战场指南-扫描器概述

Ingress Agent战场指南-扫描器概述

扫描器是手机的核心技术。它可以检测到 Portal,并与 Exotic Matter (XM) 和 XM 承载物(例如 Resonator 和 XMP)互动。

ingress_02
启蒙军扫描器

下载完整版启蒙军全套快速指南

ingress_03

反抗军扫描器

下载完整版反抗军全套快速指南
  • AP 进度条:你得到的 Action Point 越多,等级越高,进度条填得就越满。
  • XM 存储条:此条显示你收集了多少 Exotic Matter (XM)。特工在每次行动中都要消耗 XM,所以 XM 多多益善。
  • 获得的 AP:点按你的特工名称可查看自己的 AP。第一个数字表示目前为止你累积的 AP 数量。第二个数字表示你还需要多少 AP 才能晋升到下一个 Access 级别。要想得到 AP,就要执行 Portal 行动,比如放置 Resonator 或建立 Link。
  • Access 级别:特工的当前级别。
  • 你的位置:特工目前所在的位置。
  • 行动范围:可供你与 Portal 互动或捡取物品的区域。
  • COMM:COMM 可让你与其他特工交流、收看警报,以及查看你所在区域的 Portal 活动。
  • Exotic Matter (XM):发光的粒子就是 Exotic Matter (XM)。请收集这些 XM 来储藏能量,以便与 Portal 互动。

Ingress 扫描器(Android 和 iOS 版)现已支持多种语言。如果系统支持你的语言,扫描器应该能够根据你设备的语言设置自动选择语言。你也可以依次点按 OPS > 设备 > 语言,手动更改语言。