2011-07
29

揭开10年plus封印

By xrspook @ 21:21:33 归类于: 烂日记

按计划,在8月之前完成第一轮的统计学习,知道了整个课程到底是弄什么的。今天飙了两章《统计法基础知识》,觉得呢,统计法比统计实务好记忆,起码做题的时候我不用老翻书,但问题是,统计实务的题目我基本不会出错,但统计法呢,一些我觉得十拿九稳的东西居然也会出状况,也不知道是我的问题还是我看那个答案版本的问题。《统计基础知识和统计实务》要花的心思必须多,我个人觉得有用的东西也都在里面了,虽然只是基础。学那个的时候真的给我不少启发,而统计法呢,那些“有关部门”真看得我想吐,摊手。

好吧,在星期五完成任务,周末可以享受一下王老师解说的WrestleMania XXVII,应该开始看《百年孤独》了。

不知道是否真的跟豪尔赫·博尔赫斯没什么化学反应,上周终于啃完了《恶棍列传》,这书豆瓣评分很高,但个人感觉一般,不过,看过这书我算是对黑帮有了更深一层认识了。先是看了Godfather三部曲,然后看了《极恶非道》,这次又看了《恶棍列传》,算是有点眉目。我有点理解黑帮,但这个话题我不太热衷。

昨晚睡觉的时候在考虑阴刻阳刻的问题,到底哪里用阴的,哪里用阳的呢?因为不是一层,非黑则白的问题,如果被圈了,断了,怎么办呢?洗澡的时候我突然想到一个绝妙的方法——大头针固定!喷涂需要完全固定,我垂直一针,断层问题解决了!蠢蠢欲动要尝试。半小时前翻出尘封10年+的颜料们,马利牌的东西不简单!除了那些当年已经被我毁掉的,外皮已经破损的,那些用得比较少的颜色居然还很柔软,还能用,内牛满面。选了4根比较完好的——28藤黄、31普蓝、84熟褐、91青莲。哈,从前我的画里很少出现这些颜色,所以,它们逃过一劫保留至今,不过,现在我已经爱上它们了,我有这些颜色的TEE。人啊,真神奇。这充分说明兴趣不是一辈子的,我是个善变的人。

激动了,我要开始行动了!

2011-07
13

被某人雷到了

By xrspook @ 20:36:25 归类于: 烂日记

今天我听到我一位统计从业资格考试培训的同学骇人听闻的话:“考试应该不用考计算题吧?题目里好像只有选择题和判断题。”What? Really? Really? Serious? Serious?!!!! 我大大的震惊了!已经上了4次课(一共8次),她说她每次都有来,她怎么可能不知道计算题是必须的呢?!计算题都暗藏在单项、多项选择题和综合题里,不计算,你能蒙出答案?特别是,今天已经讲完了3大课程之一的“统计基础知识”,这里面除了定义就是计算,而且定义的目的就是计算,她居然说“没有计算题”?当我还在吃惊的时候,她继续说到:“老师一讲课她就困,就瞌睡,下课时,她又清醒了。”原来如此!不过,她还有更语出惊人的话,她问坐她后面的同学课程表上写实习的日子她们是正常上班还是呆在家里。毋庸置疑地,肯定是上班啦!你不上班,你的活谁干?到头来难为的是你自己,但听她的意思,可能那些天她也“瞌睡”去了。即便,她上课都在游云,但只要稍微看过书本或者习题就应该很明白计算在统计中的重要性。

世事无奇不有,今天我遇到了。

我不勤奋,但我也不甘让自己太懒惰,难道她就不担心她会考不过?她的无知让我惊讶。

今天带上了自己找的答案,因为我知道我会超前做点“统计实务”的题目,但这么一来,被我同桌发现了,然后,她把答案借了过去。我错了,我不应该拿出来,这样她就不会分心老在抄了。其实,她完全可以一开始就向我要电子版或者中午吃饭的时候去复印,但她还是选择了抄,抄到下午,觉得实在太多才问我能不能把那份东西给她。我没有给她纸质的,因为答案的背后是单位的信息,那可是一些回收纸,但我答应了发给她电子版。其实,如果我知道下周老师就会发“统计基础知识”的答案,我一定不会去花心思去自己找,因为我担心那些答案要到9月份考试前才发下来,那么我就很被动了。今天,老师已经说了,下周交作业,并在同一天把作业的答案和作业一并发回。既然如此还何苦继续抄那些不完全正确的答案并为之纠结呢?!

题目很重要,但我觉得更重要的是读懂牢记教材内容,毕竟题目不可能100%相同,但题目100%在那两本书里变化出来。

这让我想起了在WWE MAGAZINE 2011年8月刊里Alberto Del Rio引用的一段话

Best Advice From Coach
“Marco Ruas – an ultimate fighting champion from Brazil – always said: ‘People who don’t know what they’re doing. If you train hard every day, there’s no reason to be nervous because you’ll know what you’re doing there.'”

人不是生来就淡定的,淡定来自你有底,而有底来自于你的努力,就这么简单。

那个统计从业资格考试,现在我还没能100%淡定,但我知道该怎么做,该如何让自己完全淡定下来。

2011-07
12

狗屎运了

By xrspook @ 20:11:26 归类于: 烂日记

不得不说,大家一边看摔角一边讨论是很愉快的事情,即便我连视频都没看到,只看到他们在激动聊天。

昨天扫描了一大堆东西,虽然说一大堆,但实际上就约25份而已,每份扫描大概需要30秒,所以,如果搭配得当的话,是很快的。从前无聊把画贴在笔记本上,结果反倒不如那些乱扔的小纸片好扫描。老照片么,扫描是个好法子,特别是那些根本不可能找到底片的东东,不过,我怎么觉得老照片出来的效果有点怪怪的呢?扫描只是第一步,还要一份份用工具剪开,否则那些为了节省位置拼凑摆放的东东看起来真的很麻烦。还没有分解扫描图呢~~~

扫描过就知道,其实扫描一本约200页的杂志也不是很费时间。那么为什么我流口水多时的WWE MAGAZINE 2011年6、7、8月刊还不见影子呢?!!!!外国友人啊,请给力吧!如果中国的报摊也有卖的话,我会给力,但这里没有,我很摊手。

今天中午狂风暴雨,吓唬小孩般恐怖。中午还在纳闷难道这种鬼天气里我今晚要自己回广州?幸好,幸好,今天有人送我回来,狗屎运了。明天,有大人物到单位。来者何人?朱小丹是也!我再次狗屎运,逃走了,不用穿那套“工装”迎接大人物。不过其实明天的统计课程也不简单,8次课,明天已经是第4次,但显然进度还没完成1/3,不淡定不淡定,于是这两天我已经在偷步超前自学了。不喜欢被扯着鼻子走,但我又不太想主动迈步向前,囧。我这个懒骨头,才工作3年就懒成这样了,我错了,应该面壁去。

貌似我天天都很闲,但好像我天天都没干些什么,这难道就是传说中的堕落?

但其实,我有成绩的,在我的兴趣点上而已,but you already know that。

PS:20110711Raw里,ADR在6-Man Tag Team Match后清场的时候我弱弱地听到了爷们粉在喊“DEL RIO”,这是我第二次在Raw听里到他的CHANT,小感动。第一次发生在WM27后的那期他毁灭性击倒Evan Bourne的Raw里,那次CHANT比这次大声。清场是个好事,偶尔收起那个标志性的笑容发泄一下怒火是正确的。英语不好,这般狂风扫落叶的肢体语言最能说明问题了,比他吼上10分钟翻来覆去的destiny命运论管用。

2011-07
10

SD 统计 BB

By xrspook @ 23:08:36 归类于: 烂日记

上午啃完了20110708SD,中午做出了2011年第27周的摔角统计报告,下午去了看表哥的儿子。

20110708SD印象最深刻的是The Usos兄弟,C**A的比赛嘛,挺流畅了,没啥差错了,但还是那个问题——摔角不是一个人的玩意,需要你让我好看我让你好看,光让自己好看光让别人显得你好看而不为别人付出点什么,我不会认同。

摔角统计报告不知不觉已经27期,2011年就52个周,刚刚过半了!是压力也是动力,是这个工作让我坚持每周都准时下载和看完应该看完的周赛,每当PPV降临,我就会手忙脚乱,下载压力大,看的压力更大。一般每周4小时的工作量增加到7小时!现在,我已经有个建立程序筛选Excel的意向了。PHP对网页有用,如果对象是.xls呢?到底Excel里单元格数据在变量里是怎么体现的呢?但其实,或许我根本不用PHP,用Excel自带的VB弄宏神马的就好了,但我熟悉php>>>>>>VB,虽然,语言什么都是相通的。

表哥的儿子么,就是小BB罗,今天是出生后第12天。一家人围着他团团转,神马爸妈、神马爸妈的爸妈(外公、外婆、爷爷、奶奶)。但可以看出,这不是孩子自己的要求,而是老人家们太兴奋而已。至于父母么,爸妈的爸妈说他们“懒”。我呢,则觉得他们知道事情该怎么做,但调理不够清晰,因为不想做?照顾小小盆友什么的你不能不条例,无思路,见步行步会很累的。这还只是他们的第一个孩子,他们打算2年后再生一个,囧!一波接一波的折磨……今天他们曾让我抱小小盆友,我没有,不是因为我不敢,而是因为我不想,不想,纯粹是不想。我没有用奶瓶喂过小人,但我用奶瓶喂过很多小狗,人和狗完全不一样,我懂的。

就这样,周日没了。

2011-07
8

双龙出海

By xrspook @ 23:59:25 归类于: 烂日记

今天是个伟大的日子,今天我做了两件貌似简单但实际上都不容易的事情:一、用电子琴录制了Realeza(WWE Alberto Del Rio Theme 2010)并用WIDI生成了MIDI版本;二、努力奋战、冥思苦想2天后,我终于达到了我的目标,完成了大名鼎鼎YARK系列的P25 PHP小程序。

所以,对我来说,这是划时代的一天,心情大好!

一、音乐部分

几个月前我就已经挖出家里的古董电子琴(小学时期的产物)来折腾Realeza了。一般熟练,但我只会右手,和弦对我来说是浮云,正如听音乐我只能辨别出主旋律一样。我一直在奢望自己能学会哪怕一点点左手,但电子琴的变压器不行,大号电池的电量也快没了,我得在电子琴还有声音之前赶快完成录制。

以下是xrspook极其简陋的两个自创版Realeza,请凑合着欣赏:

Realeza(WWE Alberto Del Rio Theme 2010)电子琴版[mp3]

Realeza(WWE Alberto Del Rio Theme 2010)WIDI转化MIDI版[midi]

说明:mp3就是拿着个mic对着电子琴录制的,没啥好说,请原谅我的古董电子琴没有跟电脑对接输出的玩意,毕竟那是1998年以前的产物啊,还只是386、486时代呢。midi嘛,不是我自己写的,是用WIDI把mp3转出的,因为是毋庸置疑的“独奏”,所以捕捉到的绝大多数音都是我的意图,但有几个高音电脑识别出来时一个变2个,没搞懂原因,但错有错着,恰逢那是高潮部分,出现这些我意想不到的小变动反而让音乐更丰满。

二、PHP程序部分

从有思路到PHP完全成型,我用了2天,超过15个小时!累着并快乐着!我这个喜欢折磨自己的人……这不能算折磨,这应该说是定下目标然后努力实现,I’m proud of myself.

先说说这个YARK – P25的整体思路,昨天已经说过,也就是“用正则提取,table输出,然后直接Excel粘贴保存”。昨天傍晚说到,我被正则难住了,但昨天晚上,我却突然惊醒地想出了正解。在WWE P25层层div的网页里成功提取出我需要的排名部分。用的是这条正则,针对的是我需要提取信息的开头和结尾部分做筛选。

1
preg_match_all('/< div class="row(.|\n)*?<div class="clear">/', $data, $log);

这条规则是很有针对性的,可以把WWE P25页面我需要部分嵌套的div全部提取出来,但对其他嵌套div网页无效。这条规则的重点是“(.|\n)”意思是“除换行符以外的任意字符或者换行符”,也就是全包围了。从前提取img的时候“.*?”也就足够了,但提取div不一样,因为换行是习惯性的,之前我正是在换行这个问题上被卡住,看到某个网页的时候被这句很创意的“(.|\n)”激发,最终,琢磨出我的第一次正则。

筛选出的排名部分网页源代码包括神马呢?以下是详细说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="row none"> /* WWE P25页面里,一个选手的所有信息的开始,这里的class可能是row none、row fire、row ice或row (注意row后的空格)*/
	<div class="info dir-up"> /*这里的class可能是info dir-up、info dir-dn或info dir-nm,升降平,你懂的*/
		<div class="direction"></div> /*配合升降平的一个说明*/
		<div class="thisweek"></div> /*本周排位,我需要的第一个信息点*/
		<div class="lastweek"></div> /*上周排位,如果我把每周排位都收集了,某一周的上周排位对我来说当然没啥意义*/
	</div> /*info dir-up结束*/
	<div class="thumb"> /*小头像部分,这里没有我需要的信息*/
		<a href="***"></a><a href="***" class="imagecache imagecache-98x105_thumb imagecache-linked imagecache-98x105_thumb_linked"><img src="***" alt="" title=""  width="98" height="105" /></a> /*用了两层超链接,没搞懂为什么,外层没有class,内层有class,核心部分是小头像图片img,注意,有些选手是没有超链接的,比如说那些Tag Team*/
	</div> /*thumb结束*/
	<div class="thumb_none"> /*这里可能是thumb_none、thumb_ice、thumb_fire或thumb_,对应头像无特效、冰、火以及无头像状态*/
	</div> /*thumb_none结束*/
	<div class="details"> /*选手信息*/
		<h2 class="double-arrow-title"> /*二级标题开始*/
			<a href="***">***</a> /*选手名字+超链,选手名字是我需要的第二个信息点*/
		</h2> /*二级标题结束*/
		<div class="text">***</div> /*这周发生了神马事,我需要的第三个信息点*/
	</div> /*details结束*/
	<div class="clear"></div> /*纯粹的网页需要清浮处理 */
</div> /*row none结束*/

这段内容重复25次就是一个P25的完整排名信息。

第一次正则只是个开始,是把偌大一个网页的信息进行初步挖掘。其实也不能算一个网页,自从WWE 2011年头改版后,网页构成发生了巨大变化,比如说到处都有“LOAD MORE”的标志,你必须点击才能看更多内容,以P25的页面为例,我们看到的是:

http://us.wwe.com/inside/power25

但实际上,一共需要载入5个页面才能看到全部25个排名:

http://us.wwe.com/inside/power25
http://us.wwe.com/inside/power25?page=1
http://us.wwe.com/inside/power25?page=2
http://us.wwe.com/inside/power25?page=3
http://us.wwe.com/inside/power25?page=4

每个页面只有5个排名。这也就能解释为什么浏览WWE网页的速度会比从前快了,因为一次性加载的信息减少,信息加载随着浏览进程的推进而逐步增加,对于那些纯粹路过的人来说省事多了。

这5个页面的结构是一样的,对我这个需要提取信息的人来说WWE的这个“改进”完全是件坏事!一开始,我是这样提取页面信息的:

1
2
3
4
5
6
7
8
9
$data0 = get_content($_POST['url'])$data1 = get_content($_POST['url']).'?page=1'$data2 = get_content($_POST['url']).'?page=2'$data3 = get_content($_POST['url']).'?page=3'$data4 = get_content($_POST['url']).'?page=4';
 
/*经历N步操作,N步操作的工作量都是×5,我甚至都在考虑要不要来个for语句来减轻修改数字的压力了*/
 
$data = array_merge($data0[0], $data1[0], $data2[0], $data3[0], $data4[0]);

但后来,我发现完全可以这样嘛:

1
$data = get_content($_POST['url']).get_content($_POST['url'].'?page=1').get_content($_POST['url'].'?page=2').get_content($_POST['url'].'?page=3').get_content($_POST['url'].'?page=4');

如此一来,5个页面的信息也就能一次性地聚合到一起,快、准、狠!

我好像扯远了,回到第一次正则提取的内容。我昨天的思路是对其进行XML数组化,但很遗憾,XHTML网页不是XML,当信息传入外包的XML数组化程序时失败告终。于是,我就只能靠自己继续正则了。

上文已经提到,在第一次正则后的内容里,我有3个需要提取的信息点,它们分别是:

1
2
3
<div class="thisweek"></div> /*本周排名*/
<h2 class="double-arrow-title"><a href="***">***</a></h2> /*选手名字*/
<div class="text">***</div> /*发生事件*/

一次正则后选手名字里有超链,头像里也有超链,“h2”本是选手名字的唯一标记,但由于中间多了个超链,万恶,所以,我也很万恶地一句正则把我不喜欢的东西全部干掉。

1
$log[0] = preg_replace('/< a [^>]*>|< \/a>|<img [^/>]*>|\t|\r|\n/', '', $log[0]);
1
2
3
< a [^>]*>|< \/a> /*干掉所有超链*/
<img [^/> /*干掉所有图片*/
\t|\r|\n /*干掉所有制表符、回车和换行符*/

二次正则过后,提取内容变得简洁。

必须提醒:在PHP里正则针对的都是字符串,所以,如果源数据已经是数组的话,请自行拆解。否则会报错,并且会暴露出当前运行脚本的完整路径,这可是安全性的问题啊,详见这里

然后呢,因为一次正则我只提取到< div class="clear">显然后面仍应该有< /div>< /div>

才能让这个提取内容闭合完整。所以我加了这么一句:

1
$log[0] = str_replace('< div class="clear">', '<div class="clear"></div>< /div>', $log[0]);

到此为止,经过2次正则,1次字符串替换后,那坨东西符合我要求了,我可以进行第3、4、5次正则完成我的最终提取。

1
2
3
preg_match_all('/< div class="thisweek">([^< ]*)/', $log[0][$i], $rank[$i]);
preg_match_all('/<h2[^>]*>([^< ]*)/', $log[0][$i], $name[$i]);
preg_match_all('/< div class="text">([^< ]*)/', $log[0][$i], $text[$i]);

好吧,到此为止,整个分析、剥离过程完满结束,就只剩下按要求的规范化输出。就是把我提取到的东西table化,略。

整个过程的部分源程序如下:

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
49
50
function get_content($url) /*网址转化为网页内容*/
{
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_HEADER, 0);
	ob_start();
	curl_exec ($ch);
	curl_close ($ch);
	$string = ob_get_contents();
	ob_end_clean();
	return $string;
}
 
/*数据传入开始*/
 
$_POST['url'] = str_replace("www.wwe.com", "us.wwe.com", $_POST['url']);
$data = get_content($_POST['url']).get_content($_POST['url'].'?page=1').get_content($_POST['url'].'?page=2').get_content($_POST['url'].'?page=3').get_content($_POST['url'].'?page=4');
 
/*数据传入结束*/
 
/*正则提取及替换开始*/
 
$data = str_replace("&amp;", '&', $data);
preg_match_all('/<div class="row(.|\n)*?<div class="clear">/', $data, $log);
$log[0] = preg_replace('/< a [^>]*>|< \/a>|<img [^/>]*>|\t|\r|\n/', '', $log[0]);
$log[0] = str_replace('< div class="clear">', '<div class="clear"></div></div>', $log[0]);
 
for($i=0;$i < count($log[0]);$i++)
{
	preg_match_all('/<div class="thisweek">([^< ]*)/', $log[0][$i], $rank[$i]);
	preg_match_all('/<h2[^>]*>([^< ]*)/', $log[0][$i], $name[$i]);
	preg_match_all('/<div class="text">([^< ]*)/', $log[0][$i], $text[$i]);
}
 
/*正则提取及替换结束*/
 
/*table格式化开始*/
 
echo '< table>< col>';
for($i=0;$i < count($log[0]);$i++)
{
	echo '<tr>';
	echo '<td>'.$rank[$i][1][0].'</td>';
	echo '<td>'.$name[$i][1][0].'</td>';
	echo '<td>'.$text[$i][1][0].'</td>';
	echo '';
}
echo '';
 
/*table格式化结束*/

截图是必须的

这就是YARK – P25的威力!你或许会问,就那么一大坨东西有神马用呢?呵呵,真正用法需要把它们贴到Excel。

关于复制那一大坨信息的Excel粘贴也有讲究。

首先,打开Excel,然后选择“编辑 – 选择性粘贴”,然后在“方式”里选择“文本”,按“确定”。最后简单调节表格列距以及单元格格式后,你就能得到如下图的效果:

你一定会问,为神马要如此折腾“粘贴”而不用“Ctrl+V”?呵呵,这和我的用途有关,你完全可以在“选择性粘贴”里用默认的“HTML”方式,结果跟直接用“Ctrl+V”一样,所有粘贴数据都全部挤在1个单元格里,这显然不符合我的设想,如果最后得出这样一个结果的话,我之前所做的事情都白费了。

为什么一定要以现在这个各信息分离的Excel形式呈现呢?因为,我做这么多事情的目的就是能更快更直接地提取我需要的信息,做P25的每周统计。

统计!统计是我的目的!!!!

还记得2天前我做的“ADR前46周的WWE P25”?那可花费了我半天的时间打开一个个网页,一段段信息复制粘贴并最终形成图表。如果,我要对WWE所有选手都这般干的话简直是天方夜谭,但我的确想获取那些信息,知道那个趋势,该怎么办呢?所以我有了弄YARK – P25的念头,并付诸行动,最终华丽地成功了!

YARK – P25在此!聪明的你肯定知道怎么用的。

往后,随着icon化的日益加剧,我真的可能不再看WWE的摔角而转投其他联盟,但我会记住WWE的,不单是因为他们把我引入摔角门,更重要的是为了提取信息,我从他们的网页我自学到了很多,他们的网页严谨规范,虽然可能不是最好的,但我已经从中领会到很多,难道这还不够么?!

哇咔咔,今天的blog很技术,有心人,你们会懂的。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress