前段时间看到一个php的飞信模拟接口,可以实现免费短信发送,所以我就将其拿来做了个自己用的API。
前一段时间由于各种事务的繁忙,我几乎没有什么时间来查邮件,现在趁着这几天难得的假,我就写了一段用Ruby的Mechanize来获取Gmail或Google Apps Mail的代码。
这种模拟登录抓取网页内容的程序写出来就是比较乱,写注释以后自己都不一定记得,呵呵。
前期写模拟抓取网页和登录的时候还算顺利,但是抓取到的信息就是死活发不出去。(我用的是一个web接口,实际发短信部分是用php实现的,不是我写的,但我忘了是从哪里拿来的了,原作者看到请联系我。)
经过调查发现原来得到的信息不是纯的UTF-8编码,必须要转成纯UTF-8的形式才能顺利在手机端被识别。代码如下:
require 'rubygems'
require 'mechanize'
require 'iconv'
def check(address,email,passwd,phone,phonepw)
agent = WWW::Mechanize.new
agent.user_agent = 'Opera Mini'
agent.follow_meta_refresh = true
page = agent.get address
form = page.forms.first
form.Email = email
form.Passwd = passwd
page = agent.submit form #login
tmp = []
page.body.scan(/<b>(.*)</){|str| tmp.push(Iconv.conv('UTF-8//IGNORE', 'UTF-8', str[0][0..-5]))}
#get new email and push them in to tmp after encode it in to pure UTF-8
tmp.delete_at(-1) #delete extra shit
msg = []
exit if tmp.size ==0 #exit if theres none
for i in 0..tmp.size/2-1 #form messages
msg.push("#{tmp[i*2][0..-2]}--#{tmp[i*2+1]}")
end
page.links[0..(msg.size-1)].each{|l| l.click} #click those new links to make it as read
for t in msg #send each
page = agent.get('http://x.rookee.net')
form = page.forms.first
form.pn = phone
form.pw = phonepw
form.to = phone
form.msg = t
page = agent.submit form
end
end
用法实例:
check('http://mail.google.com/','你的邮件地址','你的密码','移动手机号','飞信密码')
PS:其实一开始我准备用rfetion来做(rfetion是一个Ruby的飞信接口,很不错),但是不知道为什么收到的短信总是不全。所以就改用了php的接口。
Tags: API, Email, Gmail, Mechanize, rfetion, Ruby, 接口, 短信, 飞信
今天看到某两人的对话,大概是这样的:
现在得甲流的80%都发烧!
楼上说得不对吧,应该是现在80%发烧的得的都是甲流!
仔细想想,这个问题其实很有趣。设想:如果以上两条都成立,也就是得甲流80%发烧、发烧的80%是甲流,我们能推出什么结论呢?
其实这是一个典型的条件概率问题。一般的,在B发生的情况下A发生的概率可以表示为P(A|B)。那么“得甲流80%发烧”可以表示为P(发烧|甲流)=0.8。不妨用P(甲流)来表示得甲流的概率(得甲流人数与总人数的比值,下似),那么P(甲流)×P(发烧|甲流)就是既得甲流又发烧的概率,既P(甲流)×P(发烧|甲流)=P(甲流∩发烧)。同样的,“发烧的80%是甲流”可以表示为 P(甲流|发烧)=0.8、P(发烧)表示发烧的概率,那么P(甲流∩发烧)又可以表示为P(发烧)×P甲流|发烧)。于是,我们得到了一个这样的推论:P(甲流)×P(发烧|甲流)=P(发烧)×P(甲流|发烧)。由于P(发烧|甲流)=P(甲流|发烧)=0.8,所以P(甲流)=P(发烧)
而刚才我们得到的推论,也就是贝叶斯定理,其一般形式为:

请设想下面一个情景:某种酒精检测仪在对吸烟的人使用时99%报阳性、1%报阴性,而在对不吸烟的人使用的时候99%报阴性、1%报阳性。已知学校中吸烟的学生大概占1%,请问如果对某学生的检验程阳性,那么该学生吸烟的概率是多少?
肯能你会很果断得从直觉判断99%,但是有时候人的直觉却是错的。
其实如果检验程阳性学生吸烟的概率就是P(吸烟|阳性)。根据贝叶斯公式:P(吸烟|阳性)=P(阳性|吸烟)P(吸烟)/P(阳性)。P(阳性|吸烟)和P(吸烟)都是已知条件,而P(阳性)其实就是P(吸烟)×P(阳性|吸烟)+P(不吸烟)×P(阳性|不吸烟)。化简整理,P(阳性|吸烟)P(吸烟)/[P(吸烟)×P(阳性|吸烟)+P(不吸烟)×P(阳性|不吸烟)]=(0.99×0.01)/(0.99*0.01+0.01*0.99)=50%!远远低于99%!而如果把原数据中的“学校中吸烟的学生占1%”改成“0.5%”,所求概率将进一步降低到33.22%!
另外,贝叶斯定理还在中文分词、机器翻译、垃圾邮件过滤和人工智能方面有着很多的应用。在这里我就不多写了,更多请看这篇强文!
Tags: Probability, 概率, 甲流, 贝叶斯
今天突然了解到原来Wordpress从2.7开始就开始支持回复嵌套了,但是这个主题却没有支持回复嵌套功能。
没办法,只好自己来做了。
首先要改 comments.php
post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
?>
This post is password protected. Enter the password to view comments.
<!-- You can start editing here. -->
<h3 id="respond" class="post">Leave a Reply</h3>
// comments are closed
<h2 class="nocomments post">Comments are closed.</h2>
You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.
<div id="respond">
<form id="commentform" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post">
Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"></a>. <a title="Log out of this account" href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout">Log out »</a>
<input id="author" class="text" name="author" size="23" type="text" value="<?php echo $comment_author; ?>" tabindex="1" />
<label for="author"><small>Name </small></label>
<input id="email" class="text" name="email" size="23" type="text" value="<?php echo $comment_author_email; ?>" tabindex="2" />
<label for="email"><small>Mail (will not be published) </small></label>
<input id="url" class="text" name="url" size="23" type="text" value="<?php echo $comment_author_url; ?>" tabindex="3" />
<label for="url"><small>Website</small></label>
<strong>XHTML:</strong> You can use these tags:
<textarea id="comment" class="text textarea" cols="100%" rows="10" name="comment"></textarea>
<input id="submit" class="btn submit btn-<?php echo $style; ?>" name="submit" type="submit" value="Submit" tabindex="5" />
ID); ?>
<div id="cancel-comment-reply">
<span class="teal weight-bold verdana block large"><small></small></span></div>
</form></div>
Wordpress2.7引进了wp_list_comments()函数来处理回复嵌套,因为需要自行修改默认的模板,所以需要传递一个callback。
在function.php中添加
function x_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li> id="li-comment-">
<div id="comment-<?php comment_ID(); ?>">
<div class="comment-author vcard">
%s<span> <span class="says">says:</span>'), get_comment_author_link()) ?>
</span></div>
comment_approved == '0') : ?>
<em> </em>
<span class="small verdana light">on </span>
<div class="reply">
<span class="teal weight-bold verdana block large"> $depth, 'max_depth' => $args['max_depth']))) ?></span></div>
</div>
<strong>在hearder.php中wp_head();前添加需要需要用的js文件的引用</strong>
<pre lang="php">if ( is_singular() ) wp_enqueue_script( 'comment-reply' );
修改style.css中的comments部分
/* 00 - COMMENTS
/* ----------------------------------------------*/
.alt {
margin: 0;
padding: 10px;
}
.commentlist {
padding: 0;
text-align: justify;
line-height: 1.4em;
}
.commentlist li {
margin: 15px 0 10px;
padding: 5px 5px 10px 10px;
list-style: none;
}
.commentlist li ul li {
margin-right: -5px;
margin-left: 10px;
}
.commentlist p {margin: 5px 5px 5px 0;}
.children {padding: 0;}
#commentform p {margin: 5px 0;}
.nocomments {
text-align: center;
margin: 0;
padding: 0;
}
.commentmetadata {
margin: 0;
display: block;
}
.commentlist li .avatar {
float: right;
border: 1px solid #EEEEEE;
padding: 2px;
background: #FFFFFF;
}
.thread-alt{background: #EDEDEE;}
.commentlist .even, .alt {border-left:10px solid #CCCCCC;}
.commentlist .depth-1 { border:1px solid #DDDDDD;}
安装并配置HGK SMTP和Comment Reply Notification。
完成!
Tags: Email, Plugin, Wordpress
换了个主题、装了个Wordpress Super Cache、安装了一个Ajax的回复插件,可以嵌套回复发提示邮件等等…
这个主题我一眼就看上了!颜色比以前亮了很多!安了WPSC后,CPU使用率明显下去了,以前每次页面请求能到5%左右CPU使用率(邪恶的Wordpress),现在一个请求也就0.3%的CPU使用率!因为这个主题默认没有回复功能,只好自己再装个插件。话说这个插件挺半成品的,我得自己改很多东西才能和风格不冲突。
Tags: Ajax, Cache, Theme, Wordpress
前几天突然发现服务器流量猛增,查了查记录发现基本都是请求wp-content/uploads/***.mp3—-被盗链了!当时往上放mp3的时候还真没想到被盗链的后果,现在我算是发现了。
于是我赶紧将那些mp3删除。但是问题又出现了,Wordpress自带的404页面太妃资源了,而且那些mp3的请求很多,导致cpu占用率猛增。没办法,只好把mp3文件都重定向到一个静态html上了:
RewriteRule ^(.*)\.mp3$ mp3.html [R=301,L]
这才终于解决了问题,以后我再也不敢往服务器上传大量mp3了,教训啊。
Tags: 盗链