Live Messenger要退出舞台了,原messenger account要与skype合并,但据说唯独中国区还要保留messenger,不清楚细节。中国的skype是被强奸的版本,我用的一直是国际版本的skype。所以需要把两者帐号合并在一起。
- 登录skype
- 使用messenger帐号登录
- 点存在已有skype帐号,按提示合并帐号。现在contacts里就包括了skype和messenger两者的全部帐号了。
- 以后用messenger原帐号登录就好。
Live Messenger要退出舞台了,原messenger account要与skype合并,但据说唯独中国区还要保留messenger,不清楚细节。中国的skype是被强奸的版本,我用的一直是国际版本的skype。所以需要把两者帐号合并在一起。
终于没有抵住ssd高速的诱惑,决定在x220上加一块mSATA SSD(固态硬盘)。
除原机械硬盘位外,第二块硬盘可以放在3G模块位置上。x220要求是mSATA接口的超薄SSD。现在此类硬盘还是很贵,比如Intel msata ssd 310系列 80G的都还要1300多块。所以这次选了一个kingston的SSDNow mSATA 64G。原想着ssd上只放windows 7系统,也该足够。不过现在发现,64G还有些小,windows 7就占了20G,再Office, Matalab, ArcGIS等几个大头下来,系统盘已经所剩不多了。
安装流程可以参照网上很多图文并茂的教程来进行。比如这里。其中键盘连接线,手托的卡口其实都不需要拔下来,往边上挪挪就有足够空间出来安装ssd了。尤其是键盘的连接线看样子插的很紧,不好拔,强烈建议不要硬拔下来。
在安装新系统的时候,按网上的建议,先把原系统盘抽出来。把系统安装在ssd上,然后把原系统盘放进去,做为数据盘。原因是ssd安全性没有机械盘可靠,系统坏了可以重装,数据丢了就可惜了。
接下去要处理的原机械盘上的系统文件,占了大量的空间,现在可以移去。但这些系统文件都有严格权限控制,要删除并不容易。我采用的一个笨法子就是,先把原数据备份,然后格式化此盘,再把原数据导回来。由于采用的增量备份,原数据备份只花了几分钟就完成。但把原数据导回来,就要花很长时间,我是晚上下班后,把机器开着第二天上班的时候一切OK。
安装后的windows performance index如下,
硬盘速度提升到7.1。系统启动基本在15s左右完成。
Zhuotong Nan ([email protected])
前些天知道Freenet是在一个技术论坛上,有人提出一种基于p2p的实现,但有人指出,p2p无法解决用户以及数据的分布式管理。有人给了freenet这个链接。这两天初步了解了一下Freenet,被其中的一些设计所吸引。以下的内容是很简要的一点关于freenet的描述,懂技术的人是可以从中看出很多东西来。
—
Freenet是为匿名、更安全的浏览、发布、共享文件和聊天的网络平台。通过一些p2p(点对点)的专门设计,Freenet可以不必象传统网络一样担心其传递的信息被审查,也提高了其安全性,不易被攻击。而且,Freenet支持一种叫 darknet 模式,这种模式只允许连接到朋友(或者朋友的朋友的朋友……)可信用户机器上,从而间接连接到互联网上。
加入Freenet的节点间的通信是加密的,并且通过专门的路由设计,使得请求数据节点以及请求内容都被保护。
这种非集中式的设计面临的一个难题是数据的存储。Freenet的每个用户除了需要贡献一部分网络带宽(这是p2p应用都必须付出的,每个节点都尽可能从邻近的节点处获取可用的数据),还需要提供一部分的硬盘存储。Freenet上的数据不存储在中央服务器,而是分解下来放到每用户的硬盘上,当然这种数据是加密的,用户是不能通过反向工程了解其数据内容。当然用户数量很大时,这种存储方式也可以保证数据不丢失。然而,一些过旧的没人感兴趣的数据会自动被丢弃。聊天室、网站、搜索等各种功能都是建立在这种分布式的数据存储上面。
Freenet开发后,在中国和中东国家被用于回避这些国家的网络审查。不管这个是不是作者最早的目的,Freenet中间蕴含的一些设计理想是相当出色的。其作者2000年发布的学术论文 Freenet: A Distributed Anonymous Information Storage and Retrieval System 大概是2000年被引用次数最多的文章,并且有很多新的想法是受到Freenet的启发而产生。
网址:https://freenetproject.org (在国内可能受屏蔽)
当前最新版本是 0.75 build 1407, 发布于2012年4月14日。
—
我在想,这种分布式数据存储对于gis这种海量地图遥感数据处理,有没有什么启发呢。
本文实现一个较为复杂的自动化流程,从多Web页面中提取到我们需要的信息。
要求
具体需要实现的完整流程描述如下:
1. 访问 http://fahao.07073.com/19547.html,截图如下:
2. 点击每一个 “淘号”,如果没有登录,即提示登录,如果已经登录,则在一个弹出的iframe里显示一个号码。
我们需要把这个号码得到。
3. 每页25个号码,一共74页,第一页url为 http://fahao.07073.com/19547.html,第二页为http://fahao.07073.com/19547-2.html,第三页为 -3,类推。
简单的方法恐怕不行,我们需要一种更为合理的方法。
实现
先看一下点击淘号时发生了什么,每点击,其实是调用一个叫activate()的javascript函数,参数是8位的数字id。这个函数把 id组装到类似下面的url里,
http://fahao.07073.com/?action=sumtao&id=15721753
其中 15721753便是其中的id。通过访问此url,返回iframe里的内容,iframe里的号码以”XX4670t6XF21783″的形式表达,前2个是XX打头,其后是13位或字母或数字。
因此我们的实现流程就简单了,分为四步,1. 根据页面pattern下载全部的74个网页的内容,存在本地;2. 利用规则表达式提取到id;3. 利用id组装合适的url,再次把全部的iframe 下载到本地;4. 对全部的iframe进行分析,提取礼包号码。
其中,几个规则表达式的pattern可以表示为,
id: “activate(d{8})”
礼包号: “value=””w{15}”””
对应与流程,实现为4个ahk脚本。
dl_all_pages.ahk,下载全部页码的网页内容,保存在pages目录下,命名为 页码.html,如9.html表示第9页的内容,70.html表示第70页的内容。其中使用了ahk自带的 urldownloadtofile函数。
; Author: Zhuotong Nan ([email protected])
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
pg :=74
;download all pages
loop,%pg%
{
pageurl_pat = http://fahao.07073.com/19547-%A_Index%.html
urldownloadtofile,%pageurl_pat%,pages%A_Index%.html
}
find_ids.ahk,从74页内容html文件中提取到全部的id,保存在ids.txt文件里。id以分号(;)分隔。
; find ids
ids :=””
outfile_ids := “ids.txt”
loop,pages*.html
{
fileread,file_cont,pages%a_loopfilename%
;parse “activate(16492748)” from file_cont
startpos :=1
loop
{
pos :=regexmatch(file_cont,”activate(d{8})”,””,startpos)
startpos := pos+17
if pos=0
break
id:=substr(file_cont,pos+9,8)
ids = %id%;%ids%
}
}
fileappend,%ids%,%outfile_ids%
dl_wl3hao.ahk,根据id号,下载全部的iframe,iframe里包括需要的礼包号码,每个id下载过来的内容保存在以id命名的txt里,放在nos目录下。
id_file :=”ids.txt”
fileread,file_cont,%id_file%
;http://fahao.07073.com/?action=sumtao&id=15721753
loop,Parse,file_cont,;
{
urldownloadtofile,http://fahao.07073.com/?action=sumtao&id=%a_loopfield%,nos%a_loopfield%.txt
}
find_wl3_gifts.ahk,根据iframe内容,利用规则表达式得到需要的信息。保存在gifts.txt里,每行一个礼包号。
; find wl3 gift no
gifts :=””
outfile_gifts := “gifts.txt”
loop,nos*.txt
{
fileread,file_cont,nos%a_loopfilename%
;parse value=”XX4670t6XF21783″ from file_cont
pat:= “value=””w{15}”””
pos :=regexmatch(file_cont,pat)
gift:=substr(file_cont,pos+7,15)
gifts = %gift%`r`n%gifts%
}
fileappend,%gifts%,%outfile_gifts%
最终的gifts.txt 如下图所示。
结论
本文演示了如何从一个比较复杂的多网页批量提取需要的数据。利用了一些基本的网络函数,和规则表达式。使用AHK实现。有关AHK的更多介绍可以参阅其官方网站,google, autohotkey即可找到。
Zhuotong Nan ([email protected])
原x220 4286-CTO 是320GB 7mm硬盘。已经没有空间了。买了一块500GB的日立 Hitachi Z7K500 (7200转)7mm硬盘。我此前写过一个x200更换硬盘并迁移数据的帖子。那里面描述的方法肯定是可以用的。但这次尝试另一种更为简便的方法。
1. 笔记本里原硬盘的数据必要备份。以免万一。
2. 拆硬盘的视频可以看这里,从2分05秒开始。准备后十字螺丝刀。
3. 用Orico 6628 series 的tool free dual bay hard drive dock 进行盘对盘clone。注意,源盘和目标盘一定不要弄错了,所以在切换为clone模式,按下start前务请确认没有错。
*一定注意源盘(source)和目标盘(target),不要放错。源盘要放原笔记本里的盘,目标盘是新的500G盘。
4. 开始clone,指示灯为闪红,大约需要30分钟。结束的时候有三声鸣音,指示灯变蓝后为合适了。
5. 把新盘装进x220。重启。
6. 进disk management,把未分配的空间并入原盘(my option),或者建新盘。如果built-in功能不好用,建议用acronis的相关工具。
7. 扩展后的结果如下图。
一切OK。
Author: Zhuotong Nan ([email protected])
好像是更新完bluetooth后,系统栏里的网络图标就坏了,无论有无连接,都是显示没有连接的图标。
在adpaters列表里禁止了 Wireless Network Connection,再插拔有线网络,发现图标显示正常。但加上无线网络后,就仍然一直是没有连接状态(事实上无线可以连接到网络)。初步判断是无线网络驱动的问题。该无线网卡1×1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter的信息如下:
通过windows Update目前没有更新的驱动。
登录进lenovo的官方网站,通过查找本机型号,进而找到 wireless lan下仍然是发布5月9日的此版本(driver date是3/6)。下载过来备用。名称是7zw406ww.exe (~12MB)。注意以下的操作会丢失无线网络的配置和保存的无线密码等。
接下去,我准备移除此前的安装,具体是双击7zw406ww.exe,自动解压缩到c:driverswinwlanrtlk 目录下,双击 setup,进行安装,在安装界面选择 remove (移除)。这个操作会把此前的wlan安装去掉。
重启机器,remove操作并没有要求重启,但一定要重启才能移除干净。
接下去,很关键,重启成功后,跑到 device manager(设备管理器),发现wlan 设备(仍然显示为1×1之类的文字)图标角上是有问号(或者打叉)。右键 Uninstall ——十分重要!彻底把wlan设备移除掉了。
点设备管理器工具栏的 更新设备 ,这时,设备列表里会找到未知的network controller,右键,Update driver(更新驱动),点Browse my computer for driver software (浏览我的计算机更新驱动),在文件夹框里填上 c:drivers,并确认 include subfolers 打勾。
点next下一步,安装驱动的安装。
然后再测试一下,此前出现的问题已经被 fix了。Bingo!!!!
总结一下步骤,1. 移掉此前的driver;2. 重启,在设备管理器里移掉设备,搜索新设备;3. 在设备管理器里更新未知网络设备的驱动 (没有测试用wlanrtlk下的setup安装是否可行)。里面很关键是第2点,我前面没有做第2点,一直不能修复此问题。
Author: Zhuotong Nan ([email protected])
AHK是很好用的在windows下实现自动化的脚本语言,对于有一定编程基础的童鞋,很快就可以上手写代码。ahk的官方网址是http://www.autohotkey.com/,其forum里有大量的他人写好的脚本。
本文实现一个从网页里自动提取数据的一个例子。
从40407.com网站里自动批量得到《武林3》70区豪侠礼包代码。原始网站界面如下,
1. 进入http://fahao.40407.com/11417.html,点击“淘号”按钮,如果未登陆,则提示登录。登录后弹出淘号界面如下图,
从界面中获取以XX打头的15位代码。
2. 关闭“查看卡号”,然后重复步骤1,可以得到一系列的代码。
现在的目的是实现其自动化,并把得到的代码保存到一个文本文件(gifts.txt)里。
1. 点击“我要淘号”时,本地与远程有一个通讯。利用chrome自带的inspect element的network功能(也可以用任何网络分析工具),在“我要淘号”上右键选 inspect element, 到Network tab上,这时点一下“我要淘号”执行一次通讯,Network将捕捉到通讯信息。
我们可以看到通讯的header。我们需要做的是模拟chrome的通讯用ahk来实现。
2. ahk有几个有用的他人写的http通讯脚本,一个叫httpquery,一个叫httprequest,都很优秀,但前者2010年后已经不再继续支持,并且不支持cookies文件头。而cookie信息是我们这个任务里的关键,否则“我要淘号”返回是要求登陆的信息。httprequest可以从这个网址下载:http://www.autohotkey.com/community/viewtopic.php?t=73040
3. 代码实现。本代码实现了自动获取500个号码。
; Author: Zhuotong Nan ([email protected])
; Date: 8/8/2012loop, 500
{
url := “http://fahao.40407.com/app/common.php”
data := “a=taohao&id=11417”header :=”Cookie: PHPSESSID=da317c26545caafa204520e4c89276c9; DedeUserID=427080; DedeUserID__ckMd5=d770e5fdd4d5a237; DedeLoginTime=1344523159; DedeLoginTime__ckMd5=2233e446322305d5; Hm_lvt_75e3d45d3ad80ecb1af209e743d1b514=1344521115290,1344521187845,1344523168489; Hm_lpvt_75e3d45d3ad80ecb1af209e743d1b514=1344523168489`nReferer: http://fahao.40407.com/11417.html`nConnection: keep-alive”
options :=””bytes := httprequest(url, data, header, options)
sleep 500
;parse gift code
pos:=Regexmatch(data,”XXw{13}”)if pos!=0
{
code := substr(data,pos,15)
fileappend,%code%`n,gifts.txt
}sleep 1000
fileappend,%data%`n,test.html
}#include httprequest.ahk
ESC::
exitapp
4. 注意httprequest有4个参数,参数1是访问的地址,参数2是上传的数据(post data)和下载过来的内容(放同一个参数里),参数3是上传的http头,响应的http头也在参数3里,参数4是选项。我们需要使用的是前3个参数。注意参数3 header的构造,不同的key-value对使用分行符(`n)来分隔。而且这里必须要增加cookie信息,这个信息可以从chrome里分析得到。传回来的数据存放在参数2,data里。
5. 使用了正则表达式,从下载过来的data 里进行pattern分析。礼包代码是以XX开头的15长度的大小写字母和数字组成。表达式为XXw{13}。
6. #include httprequest.ahk 把httprequest脚本包括进来,所以前文可以调用httprequest函数。
7. 获取的代码存放在 gifts.txt里。
8. 使用本代码前,必须事先用chrome (或者IE等别的浏览器,需要对应获取其cookie)登录成功。按esc键随时退出。
本文演示了使用AHK从网页自动批量获取指定数据。使用了httprequest方法,其中关键是必须维持cookie信息。
我的笔记本电脑8个G的内存,大可把再多的程序都一并装载到内存使用。但随着程序安装的越来越多,启动越来越慢,原因是启动项里被安装了大量的程序,比如在启动时要执行声卡的一些控制程序,蓝牙,输入法,thinkpad本身的一些不知道干啥的程序,这些启动时就消耗了大量的时间。下图是我机器上的启动项。估计多数人的机器里启动项只会比这个多,而不是少。
想着能不能把一些不必要的内容延迟启动。网上当然有一些现成的工具是做延迟启动的,但这么简单的事情,有必要搞的这么复杂吗,我们用autohotkey自己弄一个得了。
首先建一目录,比如在C:WORKSPACESTARTUP目录下,把延迟启动的内容的快捷方式(注意是快捷方式,不是程序本身)放在这里,如下图。
然后把对应的启动项给禁止掉。我用的是 You Uninstaller!的starter manager来关掉启动项的。比如下图,我把 Evernote Clipper, 三星同步软件Kies等给关掉,其中 Evernote Clipper延迟启动,做了个快捷方式放到刚才建好的C:WORKSPACESTARTUP目录下。
在C:WORKSPACESTARTUP目录下新建一个autohotkey脚本,取名autorun.ahk,用记事本打开,在里面放如下内容:
folder = C:WORKSPACESTARTUP
Loop, %folder%*.lnk
;遍历全部的快捷方式, 非快捷方式不启动
{
run %folder%%A_LoopFileName%
; run 命令,等一个程序启动后再循环启动下一个程序,直到循环自动退出。
}
ExitApp
; 自动退出
然后把autorun的快捷方式放到开始菜单里的启动项(startup)里。
开机试试效果。
—
1. AHK 快餐店 – 开机自动运行程序的延迟启动[绿色版], http://www.appinn.com/ahk-23-run-later/
2. autohotkey, http://www.autohotkey.com
By Yanbo Zhao (赵彦博)
1. 硬件连接
安装好硬盘,将一台PC用网线连到iSUM430的管理端口,用于初始配置。接通电源。
2. 基本配置
iSUM430管理端口默认地址是192.168.0.200, 所以将PC也配置到这个网段。
在PC上通过浏览器访问http://192.168.0.200, 以Configuration用户的身份登录。
如果已有局域网不是这个网段,首先修改管理端口和通道端口的IP,设置password,然后把管理端口和通道端口都接到交换机上,这样就可以离开机房回到办公桌前进行后面的配置。
3. 创建RAID
登录配置页面,”Logical Drive”/”Create Logical Drive”, 从机柜图标中点选要使用的硬盘,我选了全部16块,RAID Level选RAID6。Stripe Size要考虑IO配置、数据库系统、并发用户数等不少因素,此处不详细计较。Write Policy选择Write-Back。点击Apply按钮后,开始创建RAID,会有进度条显示出来,这个很慢,我16个2TB的硬盘,用了大概15个小时。
4. 创建逻辑卷
“Logical Volume”/”Create Logical Volume”,选中可用Drive,按应用按钮即可。
5. 分区
“Logical Volume”/”Set/Delete Logical Volume”,选中卷,按Partition,在分区页面按”+”创建分区。
6. 创建LUN
选中要映射的分区,指定Channel Physical No和LUN No, 按Apply按钮即可。
我打算把两个分区分配到两个不同子网,所以创建的两个LUN在两个不同的Physical Channel。
到这里磁盘阵列的主要配置完成,再转到服务器上配置iSCSI Initiator
Windows:
1. Windows vista/7等都已经内置了iSCSI,只是默认没有打开该服务。开始菜单搜索框中键入iSCSI即可找到iSCSI Initiator. 启动iSCSI Initiator,按提示启用iSCSI服务。
2. Discovery标签中,按Discover Portal添加磁盘阵列对应Physical Channel的IP地址。
3. Targets标签中,选中已发现的目标,按connect建立连接。
4. 打开计算机管理/磁盘管理,会看到新添加的硬盘,右键菜单”初始化硬盘”,”创建卷”,”格式化”,就可以用了。
初始化硬盘是请选择GPT而非MBR,因后者不支持2T以上。
Ubuntu:
1. 安裝open-iscsi
#sudo apt-get install open-iscsi
2. 查找iSCSI Target
#sudo iscsiadm -m discovery -t st -p IP
找到后会列出可用的iSCSI Target名称,并在/etc/iscsi/nodes下产生对应目录。
3. 连接
#sudo iscsiadm -m node -T 要登入的Target名称 -p NAS的IP -l(小写L)
4. 查看硬盘位置
#fdisk -l
5. 分区
fdisk有2TB的限制,所以用parted来分区
#sudo parted /dev/sdc //选中要格式化的硬盘
(parted) mklabel gpt //转换成GPT格式
(parted) print
(parted) mkpart primary 0 15.7TB
(parted)quit //退出
#sudo mkfs.ext4 -F /dev/sdc1 //格式化硬盘
6. 挂载
#mount ……
#df -h //查看是否格式化挂载成功
7. 开机自动连接iSCSI Target
#sudo iscsiadm -m node -T Target名称 -p NAS的IP -o update -n node.conn[0].startup -v automatic
#sudo /etc/init.d/open-iscsi restart
8. 其它相关命令
a. 断开连接
#sudo iscsiadm -m node -T 已登入的Target名称 -p NAS的IP -u
b. 开机自动连接iSCSI Target。针对设定之后,新加入的Target:
编辑/etc/iscsi/iscsid.conf,将node.startup 设为 automatic
#sudo /etc/init.d/open-iscsi restart
大于20T的硬盘在Ubuntu中识别、分区、挂载都不少麻烦,所以干脆将RAID6之后26TB可用空间分了两个区,一个15T挂服务器上,一个10T挂Windows工作站上。
后来王老师提醒用NFS解决数据跨平台共享问题,了解一下NFS和Samba,NFS主要用于Unix/Linux机器之间的资源共享,配置简单;据说Samba更适合Windows和Linux之间资源共享,配置较NFS要麻烦点。但目前我们需求不太明确,估计目前方案已够用,就此打住不再折腾了,毕竟咱不是网管。
参考资料:
http://163.20.124.8/~t301000/wordpress/?p=388
http://codingstandards.iteye.com/blog/816441