冰河

十一 292010

导读:自从投身编码事业,经常会受到一些和程序相关的邮件。但只有少数邮件能清楚描述问题,而大部分邮件却令我们大费周折。

Continue reading »

十一 292010

学习是每位专业人士生命中必不可少的过程。每一个公司都希望它的新进员工能够快速的学习,并尽快创造利润。那么一个人的学识总和他的工作经验成正比吗?还是他可以快速的学习而不受资历的束缚?让我们看一看可以让专业人士在工作中快速学习的5件事:

Continue reading »

WordPress邮箱发信的那点事

Posted by 冰河 at 13:30 7 Responses » 25,130 Views
十一 272010

话说博客搬家弄的差不多了,可是突然发现自搬家以来一直没有收到博客留言的邮件通知。以前用Emlog的时候发信都的额外装插件,还得自己设置。但是WordPress好像自带这个功能吧?去后台看了下设置,没问题。博客也支持php的mail()函数。但是为什么就是收不到邮件呢?

Continue reading »

Emlog转WordPress详解

Posted by 冰河 at 14:57 19 Responses » 26,838 Views
十一 242010

其实早就萌生了转WP的念头,但是迟迟没有动手,一是懒的折腾,二是Emlog这一轻量级的开源博客程序确实好用。EM的缺点也是优点,轻量级必然功能要相对弱些。虽然有时候可以自己折腾,但是自己精力有限,而且频繁更改源代码会导致博客可维护性下降。WP的优点众所周知,功能强大,插件也多。很多人诟病WP臃肿,运行效率低,占用资源多,但是从软件开发的角度来讲,WP主题模板化、功能插件化是必然的趋势。我对插件化产生好感是因为以前做的一个项目,使用了开源搜索引擎Nutch,里面的除了内核,其他功能都是用插件实现,二次开发很方便。另一个例子就是Firefox,本身功能一般,但是配合万能的插件,很好很强大的说。使用插件的缺点就是接口多,调用多,运行效率自然就打折扣了,资源占用必然也会飙升。

Continue reading »

十一 192010

从前几天入手迈拓MSS1网络硬盘盒(二手的),到今天把程序安装好,把系统使用方法摸透,花了好大精力。盒子大致是这个样子,看着很酷!


Continue reading »

百度又点我的博客了

Posted by 冰河 at 09:47 16 Responses » 17,906 Views
十一 092010

话说前一段时间在百度site我以前的域名icyhe.com一个结果都没有。不知道是我博客里的内容百度哪点不喜欢,但是事实就是百度把我的域名K了。

上个月换了新域名binghe.org,用Google网站管理员工具进行了域名更变,Google很快收录了我。但是百度依旧是不收录,可能是新站吧。我原来的百度联盟广告也不能用了。唉。今天在cnzz上看到有来自百度的流量,惊喜之余site了一下,发现百度收录了!但是我觉得百度收录可能只是因为我是新站。K掉应该是早晚的事,毕竟内容又没换。不禁感慨百度的技术确实不如Google。附截图,大家自己看吧。

Continue reading »

libsvm函数库使用说明

Posted by 冰河 at 12:42 2 Responses » 15,893 Views
212010

本文大部分来自Felomeng的翻译,原文是《Felomeng翻译:libsvm2.88之函数库的使用》

2.88版本的README文件和libsvm3.0的README文件差不多,3.0版本的README见这里: libsvm3.0_README

Continue reading »

首先说交叉验证。
交叉验证(Cross validation)是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题。
交叉验证一般要尽量满足:
1)训练集的比例要足够多,一般大于一半
2)训练集和测试集要均匀抽样

交叉验证主要分成以下几类:
Continue reading »

在一个struts项目中,碰到这么一个问题:

用户的登录页面地址是:

http://localhost:8080/sduprs/user/user_login.jsp

登录后显示的地址为:

http://localhost:8080/sduprs/userLogin.do

更悲剧的是我们在后台使用了frame框架。这样登录后所有的操作地址都显示为上面的那个地址。大师兄不满意,要求修改为实际地址。在网上查了半天资料,发现是url转发问题,具体点就是ActionForward的问题。下面是关于ActionForward的资料:

(1)ActionForward是Struts的核心类之一,其基类仅有4个属性:name / path / redirect / classname。在基于Struts的Web应用程序开发过程中,Action操作完毕后程序会通过Struts的配置文件struts- config.xml链接到指定的ActionForward,传到Struts的核心类ActionServlet,ActionServlet使用 ActionForward提供的路径,将控制传递给下一个步骤。ActionForward控制接下来程序的走向。ActionForward代表一个 应用的URI,它包括路径和参数。
(2)ActionForward的参数除了在struts-config.xml和页面中设置外,还可以通过在Action类中添加参数,或重新在 Action中创建一个ActionForward。
(3)在ActionForward中有一个重要的属性redirect,当redirect=false时,将保存存储在http请求和请求上下文中 的所有内容,仅在同一个应用中可用。当redirect=true时,Web客户端进行一次新的http请求,请求的资源可以在同一个应用中,也可以不 在,原来的请求参数不再保存,原来的请求上下文也被清除,新的http请求仅包含ActionForward的path属性里所包含的参数。如果在同一个 应用中,用户会话的上下文会被维护。
(4)ActionForward分为全局转发和局部转发,Action的Mapping对象的findForward方法首先会检查局部转发列表,查 找失败就会到全局转发列表中查找。书写格式中,我们一般将全局变量定义为String常数,避免误解,使得转发列表结构清晰易读。

实际上,struts有两种定向方式:转发和重定向(redirect)。当我们用了重定向的时候,是把页面完全转向到请求的视图去了。同时,浏览器上边的url也更新了。这样的优点是请求完全转移,缺点是无法用request.setAttribute传递参数值;当我们使用转发的时候,是将本次请求的request传递给了要定向的jsp或者servlet。同时执行被请求的jsp或 servlet,结果显示出来。但是,浏览器上看到的依然是发出请求的url,而不是结果的url,这种方式的优点:可以向被请求的jsp或 servlet传递值request.setAttribute,缺点是url依然是请求的url,不是结果的url,刷新的话,将再次执行该请求。

根据上面的介绍我发现使用redirect必须谨慎。仔细排查了下处理登录页面的action,发现只是向session写入了user变量,并没有使用request.setAttribute传参。因此就把struts-config.xml里ActionForward的redirect属性设置为了true:

<forward name=”userLoginSuccess” path=”/user/main.jsp” redirect=”true”/>

这样我遇到的问题就解决了。

如何让GAE支持Https协议

Posted by 冰河 at 15:27 4 Responses » 26,269 Views
132010

以前上传Google Application Engine的程序都是使用Google App Engine Launcher,后来很久不用GAE就把Launcher卸载了,再后来就一直用SDUpload上传GAE的程序了。今天上传sa3upload程序(菜园子,就是大菠萝相册的作者写的网盘程序)的时候报错:

Error parsing yaml file:
Unexpected attribute ‘secure’ for object of type <class ‘google.appengine.api.appinfo.URLMap’>.
没办法只好再把Launcher装上,然后上传sa3upload程序就OK了。至于原因我想应该是SDUpload不支持attribute ‘secure’吧,毕竟SDUpload这是一个简易的第三方上传程序,在解析yaml文件的时候还是有所欠缺的。

以前没接触过secure属性(out了。。。),顺手查了查,原来是GAE的ssl协议(GAE真好啊,加一行代码就支持ssl了。独立的php服务器可是花十几$买ssl证书啊)。例如sa3upload程序的yaml文件如下:

application: ******
version: 1
runtime: python
api_version: 1

handlers:
- url: /favicon.ico
static_files: static/favicon.ico
upload: static/favicon.ico
mime_type: image/x-icon
expiration : “1d”

- url: /robots.txt
static_files: static/robots.txt
upload: static/robots.txt

- url: /static
static_dir: static
expiration : “1d”
secure: optional

- url: /rpc/.*
script: rpc.py
secure: optional

- url: /admin/.*
script: admin.py
secure: optional

- url: .*
script: main.py
secure: optional

其中secure: optional就代表支持https协议。secure共有三个属性,never、always、optional。

  1. never: 当我们使用https前缀访问时,会自动重定向到http。
  2. always: 当使用http访问时,会自动重定向到https。
  3. optional: 自由选择,http and https均可使用。

这样就可以使用https://访问了。https协议的作用相信大家都很清楚,尤其Gmail和Google Reader,访问的时候千万要用https。

© 2009 - 2018 冰河的博客