ASP.NET的IIS权限设置和故障排查

2008-02-03 6:32| 分类:tech| 9,808 次点击

在上一篇文章中提到了在虚拟机上的2003系统下IIS出现的一些问题,具体是以下这个错误:

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 加载配置文件时出错: 未能开始监视对“\\.host\Shared Folders\chenfangyi.com”的更改。

源错误:

[没有相关的源行]

源文件: \\.host\Shared Folders\chenfangyi.com\web.config    行: 0

——————————————————————————–
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832

现在来研究下错误出现的原因:

探讨过程:

1、这里有篇文章(虚拟一个win2003做服务器运行asp.net程序,共享文件夹权限问题)认为是共享文件夹权限的问题,不过我都可以在虚拟机里直接创建.aspx文件,并且把网站程序直接复制到虚拟机里也是同样情况,所以可以确定是IIS问题而不是共享文件夹权限问题。(后来证实在虚拟机里直接创建aspx是可以的,确实是虚拟机的共享文件夹问题)

2、也非目录文件名问题,我把共享文件夹的文件路径全部都设为英文,仍然是那个错误。

3、甚至我还按这里说的放到根目录下,作为一个虚拟目录而不是网站,也不行。

4、按这里说的把文件所在的目录设置为应用程序,在属性-主目录中设置,却出现了另外一种情况:

服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。

管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。

5、后来我还是把网站文件移到虚拟机中 ,新建了一个站点,没有进行其他配置,无意竟发现可以了,一切正常。

查看了下正常状态下的权限和应用服务器设置,现在,可以找出这个问题的真正原因了:

IIS6.0的默认设置是(我推算出来,而且还再虚拟了个2003才验证得出的结论啊):

1、默认网站的权限安全里没有everyone组
2、aspnet_client及下级目录的权限安全里有everyone组
3、默认网站有创建一个应用程序“默认应用程序”
4、aspnet_clent没有应用程序,需要自己创建。
5、新建站点或目录没有everyone组。无论此站点或目录的上级文件夹是否有everyone权限。(第一次新建站点或目录都只开放Administrators跟system权限)
6、新建站点或目录会新建应用程序,无论此应用程序的上机目录或网站是否有应用程序。
7、但IIS有个特性,就是创建新站点时的权限并非按他默认的设置,而是按你上一次的设置而创建。比如上次如果给某个网站开放everyone权限,那么这次新建的网站就会是everyone权限的。反之则创建的网站或目录没有everyone权限。上面的3、4两点就失效了。
8、不过应用程序设置并无这个特性,新建站点或目录时都会自动创建应用程序。

而aspx网站需要正常运行的配置为:

1、权限安全组里必须包含ereryone。而IIS6里的那个“默认网站”下的aspnet_client目录安全里就有everyone权限组,所以才如上面第三点说的,有人把网站放到默认网站的目录下就可以了。注意:“默认网站”安全里并无everyone组,所以我之前做的把网站放在跟aspnet_client并列的目录是不行的,因为那样跟随的就是“默认网站”的目录安全设置,没有开放everyone权限。

2、必须创建应用程序,不管是网站还是虚拟目录。不过默认其实都是帮我们创建好的,

错误速查:

1、.html可正常访问,访问.asp出现:HTTP/1.1 新建应用程序失败;访问aspx文件出现:

无法显示网页
您正在查找的页当前不可用。 网站可能遇到支持问题,或者您需要 调整您的浏览器设置。
….

找不到服务器或 DNS 错误
Internet Explorer

则是整个站点都没有创建应用程序(不管整个站点是不是everyone权限)

2、.html可正常访问,.asp可正常访问;而任何.aspx都出现:

服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。

管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。

则应该是整个网站或整个目录都没有everyone权限(肯定有创建应用程序,否则就是上面的那种情况了)

4、.html可正常访问,.asp可正常访问;而.aspx正常或出现:

“/”应用程序中的服务器错误。
——————————————————————————–

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 加载配置文件时出错: 由于访问被拒绝,未能开始监视对“C:\Inetpub\wwwroot\chenfangyi.com\web.config”的更改。

源错误:

[没有相关的源行]

源文件: C:\Inetpub\wwwroot\chenfangyi.com\web.config    行: 0

——————————————————————————–
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832

 

这就是我一开始出现的问题。这样则说明该站点(上级的上机目录)有应用程序,有两种可能:(1)、当前虚拟目录既没有创建应用程序也没有开放everyone目录(比如开始时我把虚拟目录架设在默认网站下,就是这个情况)。(2)、虽然有创建应用程序,但权限无法更改(比如我开始时把网上邻居里的目录设为网站或者某个目录就老出现这个情况) 。

第一种情况很好解决,为此目录开放everyone权限并创建应用程序即可。而第二种情况暂时还无法解决。

5、html可正常访问,.asp可正常访问;而.aspx出现:

“/chenfangyi.com11”应用程序中的服务器错误。
——————————————————————————–

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。

源错误:

行 9:      </connectionStrings>
行 10:     <system.web>
行 11:         <authentication mode=”Forms”>
行 12:             <forms timeout=”60″ />
行 13:         </authentication>

源文件: C:\Inetpub\wwwroot\chenfangyi.com\web.config    行: 11

显示其他配置错误:

在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。 (C:\Inetpub\wwwroot\chenfangyi.com\web.config line 14)

——————————————————————————–
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832

 

或类似的“应用服务器错误”,那说明是站点(上级的上机目录)有应用程序,但当前虚拟目录却没有创建应用程序。为此目录创建应用程序即可解决。


6、.html可正常访问,.asp可正常访问;而.aspx正常或出现:

“/”应用程序中的服务器错误。
——————————————————————————–

编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误信息: ASPNET: 请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如 Page 或 UserControl)是正确的。

源错误:

行 10: using System.Web.UI.HtmlControls;
行 11:
行 12: public partial class Default : System.Web.UI.Page
行 13: {
行 14:     protected void Page_Load(object sender, EventArgs e)

源文件: c:\Inetpub\wwwroot\chenfangyi.com\Default.aspx.cs    行: 12

显示详细的编译器输出:

或类似的错误,则说明IIS设置正常,只是普通的aspx页面代码错误。

参考资料:
CSDN:求助 — 加载配置文件时出错,未能开始监视对web.config的更改
访问被拒绝。未能开始监视文件更改错误
应用程序中的服务器错误的解决方法
2003 IIS6 ASP http 500 – 内部服务器错误解决方法
“/”应用程序中的服务器错误

vmware组建XP+windows 2003开发者模式

6:24| 分类:tech| 4,866 次点击

起因:

1、急需一个.net的开发环境,而这个xp系统已经用了快一年了,有太多习惯设置了,vista和ubuntu也没能让我离开她。但也正因为太多设置了,所以IIS的问题早就一大堆了,现在IIS服务都启动不起来,每次调试程序都得上传到服务器再刷新浏览器调试,累得很,所以xp下开发行不通。

2、如果另外装一个windows server 2003系统,我的效率又会大大降低,还是因为xp的配置已经非常顺手了,转换的成本极高。而如果组建双系统,那我装好后就是三个操作系统了(xp、ubuntu、2003),我深知每次启动菜单项上ubuntu和xp之间选择的痛苦。那些抉择让我确信:我每个时候只会使用一个系统,就像女朋友一样。3、

3、IE7、Firefox、opera、safari,需要考虑到的浏览器,除了IE6因为微软的原因无法同IE7共同存在,其他都有了。而如果有个虚拟机的话,还可以附赠一个IE6。

4、内存刚刚加到2.5G,得好好利用。

所以虚拟机上的2003,应该是最好的选择。

安装过程:

1、安装vmware:我选择的是这里的汉化精简版,才20多M,原版可要300多M,且是英文版。下载下来后是一个.rar,解压后运行“!)绿化.BAT”即可。

2、安装虚拟机:新建一个2003虚拟机,我分配给它C盘5G的动态空间(不是立即分配5G,因为C盘空间也吃紧)和1G的内存。然后“设置”- CDROM – 使用ISO镜像 – 选择要安装的ISO镜像。我使用的是雨林木风 Windows Server 2003 SP2 企业安装版 Y1.0

这么搭配的原因是:原本我选择virtual PC 2007,确实更容易上手,但virtual pc似乎不支持chost出来的iso,我用ylmfwin2003.iso(634MB,打的是sp1补丁)加载后可以进入菜单页面,但无法安装,总是提示“找不到GHOSTERR.TXT”,而下载了这个YlmF_2K3SP2_Y1.0.iso(693MB,打的是sp2补丁),加载iso后菜单画面都是一片乌黑。所以放弃virtual pc。

3、安装vmware tools:根据这里这里的解释,是汉化版的问题,于是按虚拟机之家上说的:在VMware Workstation的菜单栏找到 “虚拟机”—-“设置”—–“CD-ROM” —-“使用ISO镜像” —–“浏览” 定位到VMware Workstation的安装目录中windows.iso文件,然后进入虚拟系统,打开“我的电脑”—-“光驱”—-找到“setup.exe”文件执行安装。

4、配置虚拟机的网络:因为使用的是精简版的,所以需要自己启动网络服务,否则会提示:“网络电缆没有插好”,驱动实际上是装好的,用的是vmvare的虚拟网卡驱动,所以是因为这个精简版没有启动相关的网络服务(在帮助txt里有提到)。启动方法很简单,运行“绿化.bat”,选择启动第一个和第五个服务即可。(可能第一个服务不必启动都可以,我没有试过)

5、启用主机和虚拟机的文件夹共享(这样子网站可以直接在主机上用vs等编辑,虚拟机里可以实时接收到变动,不必拖到虚拟机里就可以直接运行),把网站所在的目录共享。

6、配置IIS6.0和IE相关:这个ISO不知道为什么已经把IIS6.0和.net framework 2.0(包括程序和语言包,可在添加删除程序里查看)都安装上了,倒是省了我不少事,配置过程如下:
(1)、允许web 服务器扩展里的asp、asp.net、服务器端包含;
(2)、新建网站,端口改为81,路径输入网上邻居中网站的路径。比如\\.host\Shared Folders\site;
(3)、去掉IE的友好错误信息选框,否则所有错误都是500内部服务器错误。
(4)、启用父路径(非必须,没什么必要)

7、可以查看asp文件了,但查看.aspx会出现:

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 加载配置文件时出错: 未能开始监视对“\\.host\Shared Folders\chenfangyi.com”的更改。

源错误:

[没有相关的源行]

源文件: \\.host\Shared Folders\chenfangyi.com\web.config    行: 0

——————————————————————————–
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832

这个问题的原因见我的下一篇文章。

 

参考资料:ASP.NET2.0服务器的搭建~汗,网上资料少得可怜(就是文章让我下决心把这次配置步骤写下来,并且也是模仿他的形式,方便)
2003 IIS6 ASP http 500 – 内部服务器错误解决方法

DIV、UL、li、image水平竖直居中代码大全(for ie firefox opera)

2008-01-30 18:10| 分类:tech| 8,820 次点击

居中是写css最常用到的技能。但css中居中却不如table来的简单,并且实现跨浏览器同效果很麻烦。这里总结出各个元素的水平居中代码(IE7、Firefox2、Opera9.5下通过):

最好先有这句声明:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>

1、DIV在整个body中水平居中:

#DivComment{
    position:absolute;
    top: 90%;
     left: 45%;
    width:40%;
    margin:0 0 0 -240px;
    padding: 10px 10px 0px 0px;
}

效果见:这里的评论层

2、DIV在另一个DIV中水平居中:

#div1{
TEXT-ALIGN: center;
}
#div2{
MARGIN-RIGHT: auto;
MARGIN-LEFT: auto;
height:200px;
background:#F00;
width:400px;
}

在要居中的div的父级元素(未必是div,可以是ul、li等)中设置TEXT-ALIGN: center;即可实现此div居中,但仅限于IE6&IE7。在此div中加上MARGIN-RIGHT: auto; MARGIN-LEFT: auto;或者margin: 0 auto;即可实现在firefox中也居中。

3、UL居中和li水平居中:

其实任何居中,只要是web元素,可加上id属性的都可以使用上面的方法。只是要记住需把ul、li的宽度设置一下才,最好加个背景色才可以看出是否居中。否则ul、li默认是一条撑满div的“楼梯”,是看不出是否居中的。

4、image居中:

也可用上述方法,但我发现有时直接用最简单的<div align=center><img src=”xxx.jpg”></div>,维护起来更方便

5、DIV垂直居中

可参考以下文章:
div+css实现Firefox和IE6兼容的垂直居中
CSS如何使DIV层居中之我见
css中如何使div居中(垂直水平居中)

 

参考资料:
关于DIV在Mozilla Firefox中的居中问题
DIV 居中的绝好解决方法
标准与习惯:在解决ul居中问题时想到的
求助:如何让LI居中(这次应该说明白了)
关于DIV居中布局的几种实现方法

用Google Ajax Feed API的Slide Show实现图片幻灯片展示

2008-01-29 16:51| 分类:tech| 6,578 次点击

有一个项目需要用到酷炫一些的幻灯片展示效果,于是我在《免费的 Ajax & Javascript 图片画廊(二)》看到可用我熟悉的jQuery插件(mashup出品的jQuery Cycle Plugin)和现在很热门的google api实现。因为以前使用过几个mashup出品的jQuery插件,所以用jQuery的那个插件是没有难度的,于是打算试试google的这个新的API:Google AJAX Slide show 

我的本意只是为网站首页加个最新图片的调用,并用ajax的幻灯片效果来展示出这些照片。不过google的这个API实际上是操作feed,读取出feed里的图片(因为google要做的是用脚本实现跨域调用,所以必须用feed,原因以下会提到),所以我必须为网站新建一个rss feed。

一、用自己的网址获得google的api key:
在这里注册:http://code.google.com/apis/ajaxfeeds/signup.html
注意,只需填写自己的域名,域名目录下的所有地址都会生效了。并且这个域名上所有Google API都可以使用这个Key, 不需要为每个API服务申请一遍

二、创建ajax feed支持的rss:
在介绍上看到,google ajax feed api暂时只支持读取用Yahoo Media RSS Module创建的rss,比如PhotoBucket, Flickr, and Picasa Web Albumsyahoo media rss 开发文档太冗长,于是打算直接拿个现成的参考, flickr和picasa都被gfw了,所以我选择了photobucket。

随便打开一个photobucket的rss,修改如下保存为accrount.rss,上传到一个网站,比如www.xxx.com/account.rss:

<?xml version=”1.0″ encoding=”utf-8″?>
<rss version=”2.0″ xmlns:dc=”http://purl.org/dc/elements/1.1/” xmlns:media=”http://search.yahoo.com/mrss/”>
    <channel>
        <language>en-us</language>
        <ttl>60</ttl>
        <item>
            <guid>点击图片要打开的网址</guid>
            <media:content medium=”image” url=””>
                <media:thumbnail url=http://www.xxx.com/xxx.jpg />
            </media:content>
        </item>
        <item>
            <guid>http://www.xxx.com/bbs</guid>
            <media:content medium=”image” url=””>
                <media:thumbnail url=http://www.xxx.com/xxx.jpg />
            </media:content>
        </item>
    </channel>
</rss>

三、创建你的Hello world:
把以下代码保存为google.html

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
  “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
  <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>
  <title>Google AJAX Feed API – AJAX Slide Show Sample</title>
  <script src=http://www.google.com/jsapi/?key=yourkey
    type=”text/javascript”></script>
  <script src=”http://www.google.com/uds/solutions/slideshow/gfslideshow.js”
    type=”text/javascript”></script>

  <style type=”text/css”>
    .gss a img {border : none;}
    .gss {
      width: 288px;
      height: 216px;
      color: #dddddd;
      background-color: #000000;
      padding: 8px;
    }

  </style>
  <script type=”text/javascript”>
    function load() {
      var samples = “http://www.xxx.com/account.rss”;
      var options = {
          fullControlPanel : true,
    pauseOnHover : false,
        displayTime: 2000,
        transistionTime: 600,
        linkTarget : google.feeds.LINK_TARGET_BLANK
      };
      new GFslideShow(samples, “slideshow”, options);

    }
    google.load(“feeds”, “1”);
    google.setOnLoadCallback(load);
  </script>
</head>

<body>
  <div id=”body”>
    <div id=”slideshow” class=”gss”>Loading…</div>
  </div>
</body>
</html>

关于这个google官方提供的hello world,其实可用更简单的方法写个hello world:
这里
This afternoon Google extended the AJAX Feed API with a new Slide Show Control. This control allows you to easily embed a slide show of images from PhotoBucket, Flickr, Picasa Web Albums, or any feed that uses the Media RSS extensions. With just a few lines of code:
new GFslideShow(“http://dlc0421.googlepages.com/gfss.rss”,
document.getElementById(“slideshow”));
You can insert a slide show like this on your site or blog:
As always, let them know what you think in the Google AJAX API developer forum.

四、直接打开google.html,即可看到已经实现了ajax slideshow效果

接下来谈谈google的feed api的问题:
一、我在第二步创建rss文件的过程中,发现只要你的rss第一次被google收录后,几个小时内不管你怎么修改rss,google只认你第一次rss的内容,不会实时更新rss,即使你删了这个rss,google的ajax slideshow仍然可以通过原本保存在他的服务器的feed内容得到feed中原来引用的图片的链接。就像google reader一样(更新了rss的内容但reader中显然不会实时更新)。事实上,google官方的hello world中的地址已经都是失效的,你可以查看hello world中的samples地址:http://dlc0421.googlepages.com/gfss.rss ,将返回一个google pages上的404错误页。看来这个页面不知道删除多久了,但在google的feed中仍然存在。

(这里就对google的隐私策略有点小担心了,只要google愿意,你的那个rss上的内容就永远在他的服务器上了)

二、鉴于第一个问题,所以不管调试还是实际应用时,想要更改feed中的内容调用,只能在第三步里修改samples地址,samples地址为修改后的rss地址,比如www.xxx.com/account2.rss

三、正因为如此,跨域实现调用rss中的图片内容并不是实时的,而我的项目需要实时显示出最新的,最终放弃这个方案,但google的这个feed api因为是全javascript的,所以不会占用服务器资源,在一些博客上实现一些应用,是很合适的,比如这里的打造基于Google API的文章关联服务

四、不过虽然放弃这个方案, 但并非我就一无所获。google的这个api提醒我可以用读取rss(当然不再是跨域读取,因为跨域读取不会是实时的;我可以试试这里提示的jQuery的getScript函数)的方式来实现图片的展示,创建一个基于yahoo media rss的标准rss是很有利的,这样还可以开放自己网站的api,让别的站点调用自己站点rss上的图片(当然,这时可以用google的api了,对其他站上调用自己站上的图片要求不那么高,并不要求实时)。

五、现在就掌握了三种比较可行的ajax图片调用方法:
1、我一直用的jQuery+简单的服务器端代码实现图片展示
1、采用服务器端脚本对文件夹内的图片调用,如(E)2 Photo Gallery
3、采用(跨域)读取rss的服务器端代码

参考资料:PicLens 扩展简介 
Google AJAX Feed API 与 Cross Site AJAX
Google Ajax Feed API 发布
Google AJAX Feed API入门
Google 小工具:Media RSS Slide Show
王建硕:google.loader 代码欣赏

使用WP-PostViews为wordpress加上单篇日志浏览统计

2008-01-24 23:28| 分类:wordpress| 4,222 次点击

本来这个博客是有页面浏览统计功能的,后来改了模板就没了,一直都懒得加上,而且第一次做好后没记下过程,现在都忘了当时是怎么弄的,今天重新加上。

我用的是WP-PostViews,因为我记得这个不会统计管理员自己后台登录时的浏览量。而且这个插件似乎是属于这里的一个系列:http://lesterchan.net/portfolio/programming.php ,所以更新有保证。

下载安装并启用后(此过程略去),在themes需要加入统计数字的地方,index.php和single.php(有的模板没有这个single.php文件就不用加了)加上如下代码:

| <span>php if(function_exists(‘the_views’))the_views();?></span>
比如我的这个模板是在index和single.php中的:
<abbr title=”<?php the_time(‘Y-m-d\TH:i:sO’); ?>”><?php unset($previousday); printf(__(‘%1$s &#8211; %2$s’), the_date(”, ”, ”, false), get_the_time()) ?></abbr> <!– by <?php the_author() ?> –>
后面都加上上面那句即可,效果见本博客。

偏执wordpress seo教程之一——永久链接permalink的搜索引擎优化

2008-01-23 21:54| 分类:wordpress| 标签: | 11,108 次点击

wordpress seo第一步,我认为就是设定好合适的永久链接(permalinks),因为其他的优化都是在wordpress内部,以后修改也可以,而永久链接以后是出现在各个网站和搜索引擎上的,更换链接会造成page 404,成本就很高,所以本教程首先从permalinks入手。

本篇深入讨论wordpress日志页的永久链接(permalinks)问题,permalink可在“管理后台-设置-永久链接(Customize Permalink Structure)”里设置。这里的permalink指的是你发表的日志页面的永久固定链接,比如这篇文章的permalink是:http://www.chenfangyi.com/wordpress-seo-permalinks-customize-permalink-structure.html,wp有强大的自定义链接功能,几乎可以实现定制任何形式的文章链接。现在分析下如何选择适合自己的链接结构。

一、目录式结构还是html伪静态?

1、目录式URL会导致存在domain.com/post-name/和domain.com/post-name的两个URL,搜索引擎对这两个URL是分开对待的,两个URL相同内容,可能导致搜索引擎误判为复制网页,并且两个URL的PR也不会一致,总之不利于SEO。而如果是html就不会有这个问题。
2、从实际例子上看:google的博客服务blogger和百度的博客服务百度空间都是使用html静态化而不是使用目录式结构。搜索引擎本身当然可以对自己旗下的网站提高权重,而不需要通过seo来实现良好的排名,但不止他一个搜索引擎,blogger会想从yahoo搜索中拉些流量,百度知道和百度空间也需要针对google做一些优化,所以搜索引擎自身的服务seo也很重要。显然我们看到百度这这两个服务的seo做的非常好,在google中排名很高,这已很能说明问题,html静态化比目录式结构更有利于SEO。

所以我的建议是URL采用html伪静态而非目录式结构。

二、要不要把文章分类存放(从URL上看去)?

有的博客的永久链接为:domain.com/wordpress/wordpress-seo.html,看链接就像是把每篇文章放在所属的专辑里。
这种把文章永久链接放在各个category的子目录下的作法,在我看来是很没道理的。因为在windows下的惯性思维使我们觉得categoryname是一个个文件夹,把文章统一放在存档的文件夹里或者归类了存放似乎理所当然,但其实:

1、在apache上的wp中categoryname/完全只是一种分类方式,与2008/1/或者tag/tagname/没有本质区别,都是一种虚拟目录形式的归类方式,并不是实际的文件夹。

2、既然这只是一个归类方式,那就可以把它当成是一个文件(url格式的文件)清单列表。只不过这个清单的自身url看起来很友好,后面连html都没有!

3、更形象点的比喻,这个清单就是一个简易的自己站点上的hao123,或者是供访客查看的sitemap。提供各个博文的链接。

4、从wp自带的程序框架上看(wp的编程过程中其实已经自建了一个php框架),域名后跟的那个categoryname其实只是类似于ruby on rails中的反斜杆后的参数。有的人却把categoryname理解为文件夹。

所以没有理由让存档的日志保存在分类的文件夹里。
再逆向思考一下,假设这么做了:

1、就等于认同了在分类下放文章的作法。因为前面说了,tag和category同是分类系统。
既然跟据categoly的分类规则有:domain.com/wordpress/wordpress-seo.html
那么跟据tag又要有:domain.com/tags/wordpress/wordpress-seo.html
而跟据日期又要有:domain.com/2008/1/wordpress-seo.html
显然这是不可能的。想想tag系统都没让日志保存在各个tag下,为何就要保存在自建的category中呢?(而且还不是默认的/category/categoryname/下)如果一定要保存,也应该保存在更具永久性的时间文件夹中啊。(就像wp官方博客服务那样)

2、在用tag或者日期检索时,打开文章却跑到categoryname/里,莫名其妙,违背了分类的初衷,分类是为了找到文章,而不是让你再分类。

3、就是用category检索,也会由category/categoryname/跑到上一级目录:categoryname/wordpress-seo.html,更容易让人混崤。

加上一些主观的原因:

1、你可能哪天想更改某个分类,那就得改动URL
2、你可能喜欢把文章归为多个分类,那会造成混乱,所以我说这种分类不及时间分类永久。
3、你可能觉得分类有助于SEO,比如分类在/wordpress下的文章就都有了天生的wordpress关键字。但想想,你写关于wordpress的文章的标题中不会含有wordpress吗?这样反而会造成重复。而且分类常常是大范围的,如technology,这样的关键字并不会被拿来搜索,对SEO无用。

所以我不赞成使用从URL看上去分类存放的方式(暂时也没看到哪家大的博客托管商用这种方式组织URL)。

三、要不要把发表的日志归档到一个文件夹里,比如archives文件夹?

应该说这是超级流行的做法,甚至我在搜索引擎里辨别是否blog就是看这个blog文章的地址是否有archives目录。但有必要启用吗?还是就像我这里的,直接放在根目录下?

这里涉及到个人的建站哲学和生活方式。就我而言:
1、既然选择了www.chenfangyi.com直接作为blog,那么就等于认同了此顶级域名(也可把域名YY成一个目录)以下的每篇文章就是博文,所以可以直接放在这个根目录下,没有必要再用一个存档文件夹。
2、在我看来,如果建一个archives目录,就像是建了一个blog目录。这样就出了问题:一边你用了一个blog文件夹,一边却又让人访问你的域名即为访问blog首页,让人感觉思维不够清晰。
3、如果启用archives目录,那么archives也可理解为一个分类了,而既然只有一个分类,何必还要分类?
4、不过如果启用archives目录或者blog目录,从其他的分类进博文时,跳到archives分类下的文件,而不是根目录下的文件,就这点倒是更符合博客的分类规则。
5、类似于我在生活中的组织文件的方式,在一个页面内,只要是站内的链接,尽量追求只进到下一级的目录,而不是N级深的目录。
6、SEO考虑:直接把html放在根目录比放在archives目录少了一级,有人认为google是不在意目录层次的,而只在意“链接到层次”,即从首页通过几次链接然后到达此页面。但我可以证明google和其他搜索引擎是在意目录层次的,以后的SEO文章中会阐述。所以从SEO上考虑,也是不归档,直接放在根目录占优。
7、从wordpress本身程序架构上考虑:Wordpress作为一个博客程序(如果你是把wp当成cms来用,那另当别论),其实在最终对外浏览的数据结构上只有一层树状结构,内容也只有两样,即管理页面里发表的“文章”和“页面”,所有的内容均来自这里,没有任何其他的内容了。访客看到的那么多其他的链接都是围绕着这些页面的归类连接。所以把文章放在根目录下合情合理(从数据结构层面上看,很符合wp的数据结构模式)。

再逆向思考下,假设文章放在了domain.com/archive或者article/的目录下,则:

1、访客会认为domain.com/archive也可以访问,但默认wp不自动构建这个存档页面的管理页面,会提示404。
2、当然你可以新建一个名为archive的页面,页面就是显示所有存档文章的标题,这样就不会404了。但是这样这个页面与主页类似,又成了一个博客,只不过这个博客是标题输出的,而不像根目录下的那个博客是全文输出或者摘要输出的。这样又会让人感觉思维混乱。
3、如果一定要有一个显示所有文章标题的article目录,则可以加一个参数来表达“阅读方式”:domain.com/?readingmethod=articles ,并设置为此页面不被收录,比加个/archive归类阅读的方法要清晰的多。

所以我的建议是:除非你以后还想发布自己的摄影集之类的另外形式的博客,那时需要一个博客归类还有一个图片归类(photoarchives),否则既然顶级域名就是博客,那么直接使用http://www.chenfangyi.com/wordpress-seo-permalinks-customize-permalink-structure.html 的URL形式。

四、要不要以日期形式组织文章URL?

类似于这样http://www.chenfangyi.com/2008/01/13/wordpress-seo.html
blogger.com 就是类似这样

1、日志url的格式是按月归档,我看到很多国外的seo专家推荐这种格式,他们认为google可以跟据url中的日期参数而得知网页的更新时间,而网页地址能提供给google的信息越多,google就越喜欢。
2、不过就我看来,google不需要日期格式的url也能得知网页的更新时间的,对wp这么流行的博客程序,google在收录时,应该可以从文章页面的代码中得知发布时间。
3、使用包含日期的url会造成目录层次过深,在国内,对百度等其他搜索引擎就不够友好。
4、google对url中关键字的态度类似于对文章中关键字的态度,也会考察"皮配度"。比如搜索wordpress seo时,domain.com/123/wordpressseo就不如domain.com/wordpressseo权重,因为前者url中除了wordpressseo关键字外,还有其他关键字"123"(虽然看起来123不像是关键字,但这这是一个例子),皮配度不如后者。所以url尽量短,目录层次尽量低,是有道理的。

综上,我的建议是:
1,写文章的url时,要注意这就像写网页的meta属性,也不能堆砌关键字。
2,不用日期归档文章的URL形式。

最终我选择的链接格式是在根目录下直接存放每篇文章的html格式的链接,即在永久链接里选择第四个选项(自定义),并加上这个规则:/%postname%.html,效果可见本文的地址栏。

参考资料:
雪山飞猪:WP SEO 技巧:结构化永久链接(译文)
nicky: SEO for WordPress 完全指南
十大WordPress的SEO优化技巧-月光博客
Sheawey:关于Wordpress自定义Permalink
雪山飞猪:WordPress 2.3 SEO 优化
Blog的目录结构优化 (车东[Blog^2])
如何设置WP的友好链接(Permalinks) – Nicky’s blog
Sparanoid:WordPress 更换永久链接不完美解决方案
WordPress的SEO技巧完全指南 at catch the digital flow 北极冰仔部落格
seo之url优化篇-seo草根优化
5月设计–目录与html格式的权重
titan » Blog Archive » 伪装的谬论——论网站URL静态化
网站不一定要静态化才是好的SEO – 网站策划
升级到WordPress 2.2后permalink的反斜杠问题

过一会儿就忘了

2008-01-21 10:16| 分类:babamama life thinking 技术无关| 2,722 次点击

现在手头上事很多,纷繁。事多也不要紧,问题是这些事交叉在一起,我在做一件事的时候总会想另外一件事,极易分心。

于是我在记忆里寻找解决方法。当事务繁忙时如何保持良好的状态对待各件事。

高三时也曾这样子过,不过当时问题严峻的多,有一件我认为很可怕的事环绕在我心头,让我无法看得下书,那个问题几乎是每时每刻都占据着大脑的。如果一直这样下去肯定是不行的,于是我想出了一个办法,让自己至少能保持一会儿看得下的状态。

那就是:每当在学习时浮现出那个想法时,我就马上告诫自己:这些想法,等下就会忘掉,而当前的事情重要得多,所以还是看书吧!于是我又可以把自己拉到学习中来。

不过其实这个方法在那时并不很奏效,因为我面对的是一件让我害怕的事,是在心理上冲击我的,而不仅只是在大脑皮层的回忆,所以这个方法只可以支撑我一段时间。

但现在状况好多了,再多的事,也只是阶段性的,风险不大的,于是这个方法就可以很有效:

倘若你分心时所想得不是一件让你害怕的事,也不属于灵感忘了不可惜,那么完全可以这么告诉自己:现在想的,如果不继续想下去,呆会儿就会忘掉。

"呆会儿就会忘掉",这是从经验和医学上都可以得出的结论,已经在我的脑海里扎根,所以我不是逼自己这么想,而是真的就是这样子。一闪而过的想法,如果没有意义,且占用了你的时间,何不按这个"呆会儿就会忘掉"的理论,直接就不想呢?现在我就打算这么做,在24号前,做好一个学生该做的;而有空闲的时间,做好一个站长该做的;其它的事情,过会儿就会忘了。

哪个银行的网上银行最好用

2008-01-18 17:43| 分类:Internet 技术无关| 10,666 次点击

今天有一同学想买机票,付款遇到问题,于是我推荐她用工商银行的网上银行。

为什么不推荐建设银行呢?我自己可是用了两年的建行网银啊。以下原因导致我让她选择工商银行:
建行的网银默认是使用证书来验证的,网银开通后若本机没有安装证书只可以登录查看余额等,没有支付转账功能,只有安装了证书才可以在各个购物网站正常购物充值。而工行是使用动态口令卡,没有动态口令卡登录都无法登录。(建行也给我寄过动态口令卡,但我一直都没有用)这两种密码保护的优劣如下:
1、对网络安全知识不是很了解的人来说,“动态口令卡”比“签约证书”更安全。因为你的电脑可能借给别人,黑客也可能使用你的电脑,证书有可能被盗。而密保卡是实物,只要你不把密码保存在电脑上或网上,就不会有这种危险(除非你家里被盗)。
2、但对网络安全很熟悉的人来说,证书显得更为方便,因为不用每次都拿张卡来对着输密码。
3、“证书模式”下换个电脑了就不能直接使用,必须重新导入,没有固定上网地点的人就很不方便。而动态口令卡到处都可以使用,只要你带着口令卡。
4、重装系统后,证书也没了,除非你有备份,可以导入,否则还得再去银行重新开通。而动态口令卡没有这个问题。
5、证书还可能过期,据我了解,建行的证书,只有两年的使用期限。我就曾因为这个问题浪费了一下午的时间

因为我那同学也不是很懂安全方面的,但是她懂得游戏里的“密保卡”,这与网银是相通的,所以我推荐她使用工商银行的网银。

Dreamhost发错续费邮件

2008-01-16 11:54| 分类:博客维护 服务器| 标签: | 842,856 次点击

今天早上收到DH发来的续费信和一封致歉信:

发件人

DreamHost Billing Team <billing@dreamhost.com>
隐藏详细信息
1月15日 (16小时前)

日期
2008-1-15 18:48

主题
[chefan 15614572] DreamHost Web Hosting Due Payment Notice

邮送域
dreamhost.com

This is just a notice that your DreamHost Account #355696
(“chen’s Account”) has a balance of $119.40 (including any charges not
due until 2009-01-19), with $119.40 due (since 2008-12-19).
You also have $119.40 past due (owed since 2008-11-19), and if
by 2009-01-19 you do not pay at least the $119.40 part, your
account will be automatically suspended until payment is received.
If you would like to CLOSE your account with DreamHost, just visit:
https://panel.dreamhost.com/?tree=billing.accounts
Log in if you need to, then click the “close this account” link. If you close
your account you won’t be charged $119.40 on 2009-01-19… please stay!
| NOTE: Any account with any charges 60 days past due is considered
| delinquent and will have service discontinued until payment is made,
| so it is very important for you to make your payment as soon as you
| can. In order to help prevent a service outage, we will send you
| periodic reminders until payment is made.
WHAT DO YOU OWE MONEY FOR?
We have the last payment on this account to be $97.00 on 2007-10-19 19:16:47.
Since then the following charges have been made to the account:
2008-10-19 – $119.40 for “My Happy Hosting” through 2009-10-18.
For full information on your previous balance please visit your account
invoice, which you may view from the web panel, here:
https://panel.dreamhost.com/?tree=billing.invoice
TO MAKE PAYMENT VIA CREDIT CARD OR PAYPAL
Pay your bill securely and instantly online at this url:
https://panel.dreamhost.com/?tree=billing.payment
TO MAKE PAYMENT VIA CHECK OR MONEY ORDER
Please make checks or money orders out to “DreamHost” and send to:
DreamHost
Attn: Payments
PMB #257
417 Associated Rd.
Brea, CA 92821
USA
Be sure to write your account number (“355696”) on your check.
| NOTE: Please remember that all balances and transactions at DreamHost
| are in US dollars ($USD). As this is the case, all payments must also
| be made in US dollars.
IF THIS BILL IS IN ERROR OR YOU NEED MORE TIME TO PAY
Please just contact us (by replying to this email) and we will be more
than happy to work with you to resolve whatever the problem may be.
Thank you for choosing DreamHost!
Sincerely,
The Happy DreamHost Billing Team
http://www.dreamhost.com/
FAX: +1-714-990-2600

看了这篇吓了我一跳,买的空间不到两个月就让我续费了,要119美元啊。。不过看到DH还发来了一封信:

发件人

DreamHost Billing Team <support@dreamhost.com>
隐藏详细信息
5:17 (6小时前)

日期
2008-1-16 5:17

主题
[chefan 15742553] Accidental Multiple Billings!

邮送域
dreamhost.com

Hi chen!
Ack. Through a COMPLETE bumbling on our part, we’ve accidentally attempted
to charge you for the ENTIRE year of 2008 (and probably 2009!) ALREADY

(it was all due to a fat finger)!
We’re really really realllly embarassed about this, but you have nothing
to worry about. Please ignore any confusing billing messages you may have
received recently; we’ve already removed all those bum future charges on
your account (#355696) and fixed everything up.
Thank you very very much for your patience with this.. we PROMISE
this won’t happen again. There’s no need to reply to this message unless
of course you have any other questions at all!
Sincerely,
The Foolish DreamHost Billing Team!

看来是发错信了,认错态度真好,虚惊一场

Dreamhost上.htaccess被覆盖导致wordpress404错误的解决方法

2008-01-13 19:35| 分类:tech| 11,277 次点击

wordpress已经实现静态化,但我还想把自己站下的一个论坛伪静态化,那个论坛在站点的bbs目录下。于是先是在discuz后台打开了静态化功能,在这里下载了一个discuz的.htaccess文件并修改上传:——————————————————————————————————————————————————

# 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /bbs

# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

上传到根目录,但是马上就出现问题了:所有真实目录都可以访问(所以wordpress管理页面没有任何问题),但虚拟目录(比如任何一篇正文)就全部不行了,提示:

Not Found

The requested URL /about was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

看来是wordpress本来的.htaccess被我的这个discuz的给替换了,

一、有四种方法可以解决这个问题:

方法一、使用FTP软件删除掉.htaccess,但一般FTP软件没有显示服务器上的隐藏文件,所以就需要设置一下,比如让cuteftp显示隐藏文件必须这么设置:站点属性-动作-过滤-启用服务器端过滤-远程过滤中填上:-a,即可。重新连接即可看到.htaccess,删掉。
不过,此时访问你的博客,仍然是主页可访问,但文章页404,你需要让wordpress重新生成.htaccess,方法是这样:进入管理后台-设置-永久链接,然后不要做任何改动,点击“更新永久链接结构”,即可。
这时wordpress已经自动生成了.htaccess,博客恢复正常。

方法二、打开命令提示行cmd,输入ftp,然后输入:
open ftp地址 回车,然后就是用户名密码,再在这个窗口中切换到wordpress目录下,用dele .htaccess删除掉htaccess。
删除完后按第一步接下来的步骤做。

方法三、在Dreamhost的webftp中删掉.htaccess,再按第一步接下来的步骤做。

方法四、登录Dreamhost的webftp,在线编辑.htaccess为以下内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress

保存后wordpress就正常了。标题的问题解决了。

二、实现架设在wordpress文件夹下的discuz论坛静态化(失败)

先尝试着编辑.htaccess成:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteBase /bbs
RewriteRule ^archiver/((fid|tid)-[0-9]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

</IfModule>

# END WordPress

但仍然访问http://www.chenfangyi.com/bbs/forum-2-1.html 会是wordpress的404提示,说明还是wordpress的rewrite规则在起作用。

后来我又把这个discuz的那个.htaccess做了修改,放进bbs文件夹里,仍旧不行,所以暂时放弃。
两点:1、discuz的.htaccess会和wordpress的.htaccess冲突。
2、discuz不能像wp等博客那样自动生成.htaccess,还必须自己去上传这个东西。

参考文章:
Permanent Link to .Htaccess与WP的Permalinks滴冲突
怎样删除主机上的.htaccess文件 – Nings blog

双硬盘光盘安装ubuntu7.04,实现xp与ubuntu双系统解决方案

12:56| 分类:tech ubuntu| 5,155 次点击

因为选择了.net,所以开发环境转到了window xp下,大概一个月左右都没启动linux了。这篇是以前写的安装心得,今天正好整理安装笔记,所以就发上来。

本来Ubuntu安装是很简单的,对一个新的盘,只需一步步Next就可以了,可惜我盘里有数据,且是两个硬盘,所以每步都很小心。装系统是非常无聊的,而最好的打消无聊的方法是边装边写安装心得:

系统硬件环境:一个80G戴尔西数主硬盘(SATA 1.0a),主要数据都在这里;一个40G的希捷备份硬盘(IDE,Ultra ATA-100)数据丢失也不甚重要;一个光驱,所以不用考虑无光驱安装;一张Ubuntu光盘(我用的是同学收到的邮寄过来的)。

系统软件环境:一个安装在F盘的英文windows xp,一个安装在

期望:xp已经安装在主硬盘上了,因为未使用过linux,不知道linux的文件系统会否对windows中的文件有影响,所以希望UBunutu能安装在从盘上。这样子确保对主盘上的任何数据都没有影响。

但是暑假里曾经安装过一次。那时就是怕把主盘的数据弄没了,所以只敢装在从盘,但装好了却怎么也找不到linux启动菜单。于是今天放弃安装在从盘上。

今天共安装了三遍ubuntu

Ubuntu第一次安装

先拔掉自己的一个从硬盘(因为那个盘上有主硬盘上的备份数据怕被linux搞坏),然后再用xp安装光盘格式化掉那个装vista的分区(在xp下看到是e盘(最后一个盘),其实那只是第2个分区而不是第5个分区,之所以说这个是因为后来这个导致了我非常大的麻烦)。此时并没有在xp的安装光盘下分区,所以在后来的linux分区时显示的是free space。

Ubuntu2次安装

这次我非常小心,给windows做了个万无一失的boot.ini,因为之前已经把第一次安装的linux格式化,所以已有多余空间,于是就没放xp盘直接放进ubuntu安装。

当然此时我也没分区,也就是都是未使用的分区,想不到后来在安装时检测不到主盘而只有从盘,幸好我以前也遇到过这个情况且在手机上做过笔记,于是一查,看到这段话:

“之前在xp光盘下把一个10g的分区给删了,而且没有重新分区,后来在ubuntu的安装里,怎么也看不到80g的那个硬盘的分区(只有一个大的80g),但在media里却可以看到。后来用xp安装光盘再把这个未划分的空间给分成10g,在ubuntu安装光盘的安装选项里就可以看到了。”

于是我又拿起xp光盘给那个未使用的空间分了区,果然在linux下就可以识别所有的分区了。

所以就明白了在双硬盘的情况下会有这个问题,应该算是ubuntu光盘的bug吧

于是开始安装,可到第5步时会出现:

The fats don’t match,if you don’t know what this means ,then select cancel …

还好这个问题以前也出现过也有做笔记,点忽略就是。

这次记得上次的教训,退出d盘,可还是出现了d盘无法unmount的错误,正好看到桌面上有个d盘的图标,于是右键,unmount就没了,然后就没有再出现那个问题了。但仍旧会有那个the fat don’t match的提示。

在安装时好像又是一个bug,显示的只能是一个minisize的安装窗口,没法最大化也没法看安装速度。我没管,反正很快就安装完了。安装完后重启,于是重启,看到了自己做的那个夸张的启动菜单,选择第5分区,进不去,而选择了第四分区,进去了,我想想不对,应该换成了第5或第6分区,而不是原来的四区啊。突然又一想,咦?怎么没有linux启动菜单?靠,原来又像暑假里第一次安装那样,装好了找不到!没看见linux启动菜单(这时的环境是双硬盘,且此时bios中开启了第二块硬盘,按暑假的经验,即便没开启,应该也会被linux识别,最终同样会安装后找不到)。不知道是不是跟硬盘的接口也有关系,总之我的两块硬盘linux无论装在哪个盘重启后都无法找到。

综上,两个不同接口的硬盘装linux,问题很多,上面提到的那些应该不是bug而是linux在这种类型硬盘下的局限。所以装linux,最好用一个硬盘(而若还有个windows系统,最好linux是装在最后一个分区,但如果windows在c盘的话则不必)

注意安装时必须清空回收站的内容,不然到最后一步时会提示无法挂载而得重来。

Ubuntu3次安装

因为已经搞熟了,所以不看那个安装的pdf就会自己安装了,可以看到swap区用了0m,而xt3区用了2200m,于是先delete partition,然后再分区,此时那个ext3区格式化的选项并未打钩,于是点下一步时出现:ext3系统未格式化。所以我在返回时把那个勾就给打上了(即选择了格式化),而swap区无法打钩格式化。最终都很顺利,没再出现任何提示。安装的那个窗口也很正常。(最后一步确认时,最后两行写的也是将格式化swap和ext3区)

安装完后重启,又像第一次安装时那样,检测时有个红色的failed,然后系统自动重启,一切ok,可以进入系统

所以,只要一个硬盘安装linux,是绝对简单没有问题的。

使用双系统一段时间后,我把那个从硬盘装上,在ubuntu下找不到这个硬盘,但在xp下就可以。(好像现在又可以了?下次进linux时我看看)

附:暑假安装笔记:

之前在xp光盘下把一个10g的分区给删了,而且没有重新分区,后来在ubuntu的安装里,怎么也看不到80g的那个硬盘的分区(只有一个大的80g),但在media里却可以看到每个分区。后来用xp安装光盘再把这个未划分的空间给分成10g,在ubuntu安装光盘的安装选项里就可以看到了。
这次Ubuntu成功安装是按以下这些条件的:
一、在bios中设置第一个硬盘不启动(但事实上ubuntu光盘系统里可以看到)
二、选择英文进入系统
三、进入系统马上安装,浏览器什么的都不要开
四、在40g的第二个分区上安装
五、期间会出现两次让你选择安装方式的选项(共四个选项)
六、会出现一个错误提示the fats don’t match ,if you don’t know what this means , then select cancel 我选择的是第一个,忽略掉。

新的一年了,我也来小总结一下,去年一年的系统使用情况:
去年寒假前:window server 2003&windws xp,当时在做一个asp的项目,2003下IIS比较好用,但声卡驱动似乎总是不行。
寒假里:windows vista ultimate,当时连续几个晚上泡在远景(vistafans.com)上,现在都不去了,快一年没去了
第一学期开学后:开学第一天vista就提示过期了,原来我是忘了激活了,系统进都进不去,无语,幸好系统里还有一个xp的家庭版(应该是在F盘的),而且我2月25日在家下载了WindowsXP professinoal sp2的原版英文版,于是进那个家庭版xp,直接把WindowsXP PRO_VOL_SP2_EN.iso解压为文件夹后点setup安装,选择全新安装,但也只能安装在原来的F盘,而不能选择其他区。所以现在F盘下Documents and Settings下有几个是home产生的文件夹,而且professional的文件夹命名是类似于:All Users.WINDOWS、LocalService.NT AUTHORITY.000的。
暑假里:忙着网站的开发,当然就不理系统了,一直用xp pro xp2英文的。期间安装过ubuntu,但安装后找不到  – -!
第二学期开学后:在网站上线后,觉得没什么项目了,就想用PHP做个东西,且想了解下linux,于是在9月23日重新安装ubuntu,与xp共用了一段时间。感觉同样的配置,除了浏览器是firefox慢,其他ubuntu快多了。
现在:因为确定了语言(.net),所以一直都用xp了,且花了一些时间把xp配置的更适合自己,就更不想用ubuntu了。

现在,我已经对系统没了兴趣,这个英文的xp系统,已经有太多的个性话设置了,比如开始菜单,鼠标手势,盘符、文件夹显示,程序启动方式(win+run)。浏览器也不想换了,现在基本是TW+Opera+Prism,估计08一年就在这个平台上了。

(目前硬盘接口类型不算多,主要有IDE、SCSI、SATA三种。IDE许多时候以Ultra ATA代替,很多人习惯将Ultra ATA硬盘称为IDE硬盘,关于IDE接口http://www.51hei.com上有详细介绍,但需要说明的是IDE的概念要大于ATA——原则上所有硬盘驱动器集成控制器的设计都属于IDE,SCSI也不例外。当然,以IDE指代ATA已经形成很大的惯性,SATA开始将IDE与ATA区别开来。成熟廉价的是IDE,最新兴的是SATA,稳定价高的SCSI。最早出现的是IDE接口,后来出现SCSI接口,主要面向服务器。如果仔细观察,你可以发现,最近电脑业界的系统总线都是朝串行发展,硬盘的接口总线SATA是个代表,包括今后的将要顶替AGP接口的图形接口标准PCI-Express,都朝着串行方向发展。)

动网Dvbbs v7.1.0sp1整合Oblog4.6

2008-01-09 10:47| 分类:tech| 3,323 次点击

幸好上次没答应在那家广告公司兼职做技术员 – – ! 现在发现自己手头的项目实在太多了。本来最能让我有兴趣的应该是一个.net的开发项目,涉及到其他网站的反馈接口和稍微有点像样的数据库操作,而且只有一个乱七八糟的ASP系统让我参考,全程都需要自己写代码,这让我感觉很有挑战性,而且最重要的是这个.net项目意义重大。可是今天看到前段时间做的另外一个项目,感觉甚不爽,只有一个论坛,连个主页都没有,而且不是在论坛根目录而是以一个/bbs作为论坛地址,所以感觉浪费了很多优质的外链,如果把根目录下的站点做起来的话,pr就不止是2了。

加上今天一时兴起,对升级网站有了兴趣,于是就打算搞一搞系统整合,为那个论坛加上多人blog系统,我用过techweb的博客,感觉很不错,所以就定下了用oblog了,oblog在asp多用户博客中的地位似乎就像是动网在asp论坛中的地位。

首先下载个Oblog4.6,把blog文件夹上传到wwwroot目录下。按如下修改:

1、修改数据库名为:oblog4.60.mdb(当然我都是假定的,你要修改的复杂一点,且不让人能下载)
2、修改conn.asp为:db =    “/blog/oblog4.60.mdb”

(注意,这里的数据库存放位置不像动网那样可以自由移动到根目录之上,比如与wwwroot同级的文件夹databases下(databases文件夹不公开web访问权限,所以数据库在databases文件夹下不用担心数据库被下载的问题,所以一般建议都是把access数据库放在这里)oblog在conn.asp的注释中很清楚的写到:“此处必须为以根目录开始,最前面必须为/号”,我开始时就是不信,动网都可以,oblog为何不行,后来证明的确不行,因为他的管理页面不像动网是根目录下的admin_login.asp文件,而是在admin目录下,conn.asp中的连接如果不是以绝对路径(”/”开头的路径就叫相对于根目录的绝对路径)写的话,等下include conn.asp的文件就有麻烦了,所以在blog下的页面可以连接数据库,但admin目录下的文件就都不行了。当然你可以重新建一个不同的conn.asp来被包含,但难保oblog不会有其他下级文件夹要使用到数据库,有可能得改很多。所以干脆还是把数据库放到wwwroot里再做些防下载的措施更方便,oblog和动网数据库结构的最大区别在于的,oblog是多用户的,每个用户都还有一个manage文件夹,所以也会有很多二级目录,所以数据库链接只能采取从根目录开始路径的方式)

3、访问:yourdomain/blog/ ,正常,但验证码没显示出来,google了下,原来是我没修改config.asp文件,于是修改config.asp中的一句为:Const blogdir       =    “/blog/”

4、访问:yourdomain/blog/ ,验证码也正常,但填写完提交后出现:

Microsoft VBScript 运行时错误
错误 ‘800a0009’

下标越界: ‘oblog.CacheConfig’

/reg.asp,行 444

google了下好像是这个Oblog4.6 1月3号补丁的问题
http://bbs.oblog.cn/dispbbs.asp?boardid=93&ID=130942&replyID=130942
http://bbs.oblog.cn/dispbbs.asp?BoardID=93&replyID=180022&id=130948
我下载的就是这个1月3号打完补丁的版本,按第二篇文中说的做了,“初始化用户二级选项”了就正常了

5、因为要整合动网,所以修改了blog/api/Api_Config.asp,同时动网也进行了修改,修改了那几个api,参考下面这篇文章:
《最新版本的动易+动网+oBlog三站整合方法》
我暂时不管admin管理员账户,先把整合做好再说,把oblog的Api_Config.asp改为:

Const API_Enable = True     ‘是否整合,如果整合请设为True,否则为False。
Const oblog_Key = “API_TEST”    ‘网站key,必须与整合端的key一致。
Const strTargetUrls = http://yourdomain/bbs/dv_dpo.asp      ‘要整合的程序的完整URL(以“http://”开头,以接口文件的文件名结尾),如果有多个系统要整合,每个URL间用“|”分隔
Dim aUrls
aUrls=Split(strTargetUrls,”|”)
%>

dvbbs的dv_dpo\Api_Config.asp改为:

‘DvApi_Enable 是否打开系统整合(默认闭关: False ,打开:True )
Const DvApi_Enable    = True
‘DvApi_SysKey 设置系统密钥 (系统整合,必须保证与其它系统设置的密钥一致。)
Const DvApi_SysKey    = “API_TEST”
‘DvApi_Urls :整合的其它程序的接口文件路径。多个程序接口之间用半角”|”分隔。
Const DvApi_Urls    = http://yourdomain/blog/api/API_Response.asp
%>

6、测试注册,先是在oblog中注册一个testfromoblog,发现怎么也注册不上,总是提示“您提交时间过长或者过短,我想您如果不是机器的话,那就刷新下重新注册一下吧.”怎么刷新也没用,于是在动网中注册testfrombbs,但总会返回oblog的注册错误信息:“oblog45:没有填写密码提示”,我想起我的动网曾经做过简化注册的设置,就是去掉了填写密码提示问题和答案。所以才导致数据库里没有这些值,oblog就返回没填写的信息。

解决:开始时,我是想去掉填写Oblog的密码提示问题的步骤,但是看了这里这两句话:“这样改动就大了,关联的文件太多了,不仅仅是reg.asp文件,很多不能为空的数据库字段如果为空的话会出问题的”“注册页的每个选项都是跟数据库以及程序的功能相关联的,所以建议您最好不要修改,那样会牵涉到许多地方的改动”,我就打消了这个念头。

后来想到:既然数据库里不好没有值,那我就默认给数据库传一个固定的值,反正那个找回密码的功能一般用不到。而html中option的checked和input的value参数就可以直接提供默认值。于是:

1、修改oblog的reg.asp文件的下面三个地方:

<option  value=””””>–请您选择–</option>” & vbcrlf

<option selected value=””我的宠物名字?””>100*100=?</option>” & vbcrlf

<input value=””10000″” name=””answer”” type=””text”” id=””answer””

这样子修改后,再给这些东西加一个width和height等于0的div,就可以隐藏了,注册时就默认是这么填表的,这样子数据库里就可以得到值。

不过,我这么改完后发现注册时oblog仍旧会返回那个提示。看来我之前是没有理解出API整合的真正含义,在oblog的reg.asp页面所做的,在论坛端登录时并不会用到这个页面,API整合的含义应该是在数据库中就进行交互的,所以我应该改的是论坛端的注册页面。

2、于是重新给论坛的reg.asp加上(本来下面的是被我删了的):

If Request.form(“quesion”)=”” Then
        ErrCodes=ErrCodes+”<li>”+template.Strings(11)
    Else
        quesion=Request.form(“quesion”)
    End If
    If Request.form(“answer”)=”” Then
          ErrCodes=ErrCodes+”<li>”+template.Strings(11)
    ElseIf Request.form(“answer”)=Request.form(“oldanswer”) Then
        answer=Request.form(“answer”)
    Else
        answer=md5(Request.form(“answer”),16)
    End If

并在论坛的模板页面按如下修改:

<TR>
<TD class=tablebody1><B>密码问题</B>:<BR>忘记密码的提示问题</TD>
<TD class=tablebody1>
<INPUT type=text size=30 name=quesion value=”100*100=”>
</TD></TR>
<TR>
<TD class=tablebody1><B>问题答案</B>:<BR>忘记密码的提示问题答案,用于取回论坛密码</TD>
<TD class=tablebody1>
<INPUT type=text size=30 name=answer value=”10000″>
</TD></TR>

修改之后在论坛端注册,同时oblog中也新增了一个用户,而且状态已经都是登录,所以可以实现同步登录和退出。但在oblog中注册,仍然提示“您提交时间过长或者过短,我想您如果不是机器的话,那就刷新下重新注册一下吧”,返回错误信息太笼统,不明所以。

还发现了几个问题:
1、论坛已经运行了一段时间,所以原有论坛中的用户数据oblog中是没有的,需要再进行数据转换,我在oblog和dvbbs的官方下载站上都找到一个转换程序:UserSynchro_v2.0.1026,可是这个程序是动易开发的,所以必须先转换到动易,再转换到oblog,我没有安装动易,想想太麻烦了,于是放弃用这个转换。
2、我选择的cms系统是创立(CreateLive)的,但因为当时做网站时美化存在问题且网站没有内容所以没有最终用上,也没有尝试过整合,可想而知若是加上一个创立,则有三个数据表完全不一样的数据库,而用户没有一个统一的管理页面,会很不友好。
3、之前整合系统时考虑过恒浪系统整合专家,试过,感觉页面很不错,也不难,但最终不知为何也不了了之,但肯定会比自己整合省事。

所以,最终还是打算过段时间用恒浪系统整合来整合,到时一起加上创立来做一个新闻系统,现在最迫切的并不是博客或者cms系统,而是网站的首页,而首页又需要内容来填充,没内容连首页都做不起来,内容需要不断的更新,这样子首页才能更新,搜索引擎会光顾的勤奋些,所以先把重点放在首页上吧。在多余的时间里构思出一个单页面主页。

不该记住的故事

2008-01-07 11:04| 分类:babamama life thinking 技术无关| 2,073 次点击

现在,我来讲一个绝对虚构,如有雷同,纯属巧合的故事:

“一个女人,让一个男人等了十年,十年里,这个男人给女人买了房子车子还有一切女人需要的,自己却只能过上基本的温饱生活;
而十年里,这个女人有手有脚但什么工作都不做,都是依靠这个男的,一直骗着那个男的感情,让他养着却不跟那男的结婚。
男人给出的理由是‘那女的是第一个爱上的,难以忘怀’。”

就这么简单,故事完了。你除了气愤同情不解外是不是还想得出什么结论?

应该说,这个故事是有人告诉我的,所以我知道已经有人对这个故事做了总结,她从这个故事中得出了结论并奉之为前车之鉴。

大致是这样的总结:
1、第一个爱上的(初恋)最放不下
2、人不能宠着,宠着了他就不珍惜了

现在我想问:这样的结论是正确的吗?

我们知道,这个故事里的两个人,之所以能让我们震撼,正是因为他们的做法与正常人的做法不同。的确,这本就是一件不正常的事,属于不正常的人之间发生的事,你却得出了所谓的"总结",然后用到正常人的身上,这显然是错误的逻辑。或者从生活的体验角度上说,这是一种固执和不知变通。

我并非要针对什么人,我只是觉得:你可以从别的正常一点的生活例子中得出同样的结论,这没有问题,但你从这么一个不具备代表性的属于人间奇闻,不会被人们广为传颂反而是不解的例子中得出的结论,属于“从错误的事情得出的结论”,正确性与否,实在值得斟酌。

对那两个“总结”,在这个故事里的确很合适,但在正常的人身上就不一定合适了:初恋“难忘”,但初恋“最放不下”,是没有根据的,“放得下不”,取决于爱和依赖的程度;“宠着了就不珍惜了”,对不懂事的孩子是这样的,但对一个成熟的人就完全相反了,有良知的人都会感动并懂得知恩图报的,而不会像故事中的女主角一样孩子似的越惯越坏。

这种故事,你不该感动,感动在这里没有价值,男人不懂爱,女人根本就没有爱,除了让你感叹大千世界无奇不有外,我找不出还有什么值得深究的价值。所以我称之为“不该记住的故事”。不能从这个故事中得出任何所谓的经验或者教训来。如果一定要从这样的故事中得出的结论,要么你自己属于那种人,要么得出的“交往经验”也只能用在那样的人身上。如果相信自己是正常的,并不想跟那类(比如那个女的)人打交道,听过了这样的故事,你尽可以一笑而置之脑后。

不是所有的先例都有经验价值,不是所有的错误都有教训意义。生活是一个用心体会的过程而不是一个套公式经验的过程。不分角色不分意境的对同样的人都做同样的“经验套用”,实在不是理智的生活方式。

从“不应该从一件让你震撼的事情中得出太绝对的结论,因为你能震撼,说明价值观相差太大,所以得出的结论就不适合你和你周围的人”这个观点延伸开来,感动——这个难以名状的情感也是如此。感动的,都应该是平平常常的事,而不应该是奇闻。甚至你所感动的,都应该是那些自己也能做到的事,自己做不到的事,可能并不会感动流泪。

比如电视上常常报道的,孝子与父母,这很平常却也让人感动。正是因为这事情平常,符合大众的价值观,属于正常的人做出的正确的事,你遇到同样的情况时也会这么做的,所以你才会感动。

(附:关于写博)

为何我不像那么多的blogger,看到一个热点,尤其是一些震撼的事件,就想着发表些感慨。就是因为我不屑于没有现实意义的事件,与自己价值观和世界观都搭不着边的,我一概不会去总结,不会妄图从这类是件中总结出适合自己的。

比如前段时间我在《我猜》上看到了一个关于家庭暴力的节目,我感到很是震撼,这个社会上竟会有此等事情,但我也只是震撼后就彻底丢开了这个事,就是因为前面所说的,对这样的事做总结,没有意义。

不过看到“张斌与妻子胡紫薇大闹央视发布会”的事情,我倒觉得很有写的必要,因为张斌和胡紫薇在这件事上的表现都是正常的,并且情况也相当普遍,看到时其实我是相当感慨的,有机会我会炒一下冷饭。

其实写博时我都会先衡量的,意义大不,自己写完后会不会舒服些,一般不会逼自己写。

新版QQ(QQ2007II_Trial)的聊天记录保存分析

2008-01-05 10:08| 分类:tech| 5,374 次点击

前段时间,我的QQ速度反应奇慢,用Fineplus什么的优化也没用,后来发现是因为QQ产生的那个号码文件夹太大了(240多M)才使得反应这么慢,于是准备换个QQ的文件储存位置,优化下QQ。

此版本之前的QQ(不包括代号为蜂鸟的TM2008)聊天记录都是保存在QQ程序文件夹下的qq号文件夹下。而从QQ2007II_Trial开始,腾讯把qq的很多个人文件夹写入的windows的用户账户文件夹里,比如帐户名/My Documents下。腾讯在whatsnew里写到:“优化用户个人文件夹的存储位置”,但是很多人却因此找不到自己qq原来的分组、表情和聊天记录。这里我详细分析下这个新版QQ对聊天记录文件夹和聊天中产生的图片保存的处理。

安装QQ2007II_Trial并第一次登陆一个qq号后,会在以下这些位置有qq号码的信息:(假设qq号为123456,windows xp帐户为Administrator,QQ安装在F:\Program Files\Tencent\QQ2007II_Trial 下)
1、F:\Program Files\Tencent\QQ2007II_Trial\123456 (以前所有的聊天记录都在这里,但现在此文件夹一般为空)
2、F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456 (qq把这个文件夹称之为“个人文件夹”,可以在程序里更改目录)
3、F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456
4、F:\Documents and Settings\Administrator\My Documents\My QQ Files (此文件夹下并无qq号码信息,但你接收到的所有文件默认储存在这里,可以更改路径,我一般直接改为储存在桌面上)
5、F:\Documents and Settings\Administrator\My Documents\我的视频\123456 (这是你储存视频截图的默认文件夹,可以更改路径)

这里,腾讯用了一个我从未见过的命名文件夹的方式,竟然把安装的路径都写在安装的文件夹名上,就像这里的“QQ_F_Program Files_Tencent_QQ2007II_Trial”,令人匪夷所思,可能有助于以后迁移数据吧。

这些文件夹多吧?没想到现在一个QQ会在这么多的地方产生这么多的隐私信息。以上还只是可能暴露隐私(qq号码)的地方的文件夹,腾讯还在windows账户的其他地方生成了不下5个文件夹。

这似乎是很流氓的做法,但也不能怪腾讯,因为微软是推荐这种开发方法的,把私人信息都保存在账户名下的各个文件夹里,比如My Ducument(我的文档)是存放程序最终产生的私人信息文件的,而Application Data(程序数据)里是存放程序运行过程中产生的数据。按接下来的分析也确实看出来这个QQ是符合这种开发思维的。市场稳定了,腾讯也就敢做出这么大的变动,应该也算是一种大胆的进步吧。

聊天记录的文件没有多大变化,仍然是那个MsgEx.db,而不像TM中搞出一个Msg2.0.db,所以我这里只谈QQ对图片的保存方式。分七种情况:

一、自己发送给别人的截图(我用两个方法测试:1、用新版发送给上一个版本即QQ2007II_Beta2SP1.exe,2、在这个新版里加自己为好友,然后发送):

你第一次截图(用qq自带截图或者printscreen屏幕截图都一样,但如果复制一个图片时就不一样了,另当别论)时,当把图片粘贴在聊天窗口的发送框时,会在F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456下生成一个SCreen文件夹(退出qq时这个文件夹消失),然后发送给自己的qq号时,就会把这个SCreen文件夹下的bmp文件复制到Temp文件夹(此文件夹不同于SCreen,在qq退出时并不删除自身和以下的文件)下,并且改名了!与此同时,qq的个人文件夹下(我这里是F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456)也会有一个同名的bmp文件,但bmp文件已经被qq处理,大小已经变小,只有几k左右且打开看都是黑的。
再次截图时,SCreen下又会出现一个bmp,再次发送,则temp里的文件被清空,被这个新的bmp代替。所以temp里始终只有最后一次发出的图的那张照片,qq的个人文件夹与第一次截图时的反应一样。同样是生成一个同名的但比较小的bmp文件,查看是黑的,看不了。
这样子难道qq没有保存给自己发送的图片吗?不是的,当你点击“聊天记录”时,qq又在F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456\Temp 生成你正在查看的那些图片bmp,估计是根据个人文件夹的image里的同名bmp生成的(因为同名嘛),且可以正常打开看,但注意:大小与之前SCreen或者Temp中删除的一样,但文件名是与image里的文件或者说Temp里的文件同名,而不是跟之前SCreen产生的同名。

以上就可以解释这个问题:我之前的一个qq文件夹(F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_Z_QQ_QQ2007II_Trial\123456\Temp)里有17张可查看的未经缩小的bmp,那应该就是最后一次退出qq时查看了一下我发送给自己的聊天记录(都是图片)。

二、别人用QQ发送给你的截图(我用上一个版本即QQ2007II_Beta2SP1.exe发给这个新版测试的):

这种情况比较简单,直接以jpg形式保存在个人文件夹的image下

三、自己发送给自己(在这个新版里加自己为好友,然后发送):
不管新版旧版,这时,肯定是会进行第一个步骤的,即最终只在image里存一个不可直接浏览的bmp文件,这样子你在picasa里就看不到了。但有时又会在image中留下jpg文件,暂不清楚为何有时会留有时又不会留jpg,可能跟网络有关吧。

这样就可以解释这个现象:
发送给自己的图片虽然在聊天记录里都可以看到,但在picasa中只看到几张存在于123456的文件夹下,看来其他的就是不可直接查看的bmp格式了。

四、别人用QQ发送给你的自定义表情(我用上一个版本即QQ2007II_Beta2SP1.exe发给这个新版测试的):

直接以jpg形式保存在个人文件夹的CustomFaceRecv下,如果是gif则可能连文件名也没变就存里面了(没测试)

五、别人用TM发送给你的截图和表情:
不管是截图还是表情,都是保存在F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456\CustomFaceRecv 即个人文件夹的CustomFaceRecv中以jpg格式保存。也就是只要是TM客户端登陆的,即便发的是截图而不是表情,QQ2007II_Trial也识别为表情。只保存在CustomFaceRecv,不保存在image文件夹里。

六、QQ群发送给你的图片(即群里接受的图片):

这种情况比较简单,直接以jpg形式保存在个人文件夹的image下

七、自己发送到QQ群的图片(自己其实也在接受):
为了节省流量考虑,且群里的图片隐私要求就没有单聊的高,所以群里的图片都会先在SCreen里生成bmp的文件,但不会转移到Temp,发送出去后就是直接转换为.jpg(文件名当然也全改了)格式的到个人文件夹的image文件夹下,不会经过temp文件夹。因为最终都清除了SCreen和Temp,所以自己在群里发的和别人在群里发的其实保存的结果是一样的。

结论:
一、F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456 里并不保存数据,但有时却会遗漏些qq信息(比如退出之前查看了下自己的聊天记录,而聊天记录里有图片)。产生的数据其实都是在程序运行时的(这点符合微软推荐的开发方式),可根据个人文件夹里动态产生,所以这个文件夹应当删除。
二、对自己发送出去的图片并不好管理,一般情况下只能在qq的聊天记录中查看,在picasa中看不到。
三、既然微软推荐,腾讯也配合,而且把所有个人信息都保存在windows的帐户信息下也不难管理,那我还是按默认的方式安装和配置,让qq的号码文件夹资料按上述归档。

委屈之美

2008-01-03 17:05| 分类:babamama life thinking 技术无关| 1,891 次点击

“你知道吗,他们看了你写的,说你不好”
“哦,你是这么认为我的”
“不是,不是的,是他们这么说你的”
“他们?好,很多人这么说吧,你觉得我这样吧”
“不是,我没有这么觉得”
“可是你说那么多人觉得我那样”
“不是,不是这样的,就一个这么说你的”
“你说了是‘他们’的”
“不是的……”(哽咽着)“不是的……,我没有这么觉得,我从来没有这么说过,只有一个人这么说,我没有听他的……”(哭泣声)

是,她是说错了一点点,只是一个人说的,她说成了“他们”,因为想让自己的话更有底气。可是她却没有料到我并不反驳她的,反而推回来让她自己去评判我。所以就乱了,我一再反问时,她更是成为一个纯粹的失去逻辑的女孩了,我听出来,到哽咽的第二声“不是,不是的”时,已经是很委屈了。

因为有过先例,我承认自己不好,说自己一无是处时,就会有大的变故。而她害怕这种变故,所以就从心底害怕我一反常态不争辩而承认自己不好的做法。她害怕那句“既然你认为我不好……”,可是我却抓住她这一点,强调了“很多人”和“我差”,让她受了言语上的委屈。

这已是一个多月前的事了,事后,我万分责备自己,怎么可以这么委屈一个人。一声声“不是的”,“我没有”一直在脑中徘徊,之所以那么久了场景对话还能记得那么清,就是因为那难以承受的委屈之重!

“你跟别人说了?”
“没有,我没有说”
“哦”
“我真的没有,没有跟其他人说”
“知道了”
“我没有说……”(一个劲的)“我没有说”
“恩,我知道啊”
“好吧,以后我再也不跟你说你不喜欢听的了”

这是昨晚电话里说的,又是我一个刁钻的问话“你跟别人说了”,让她紧张于我的怀疑,而做出一系列委屈的反应——而接下来一直在强调自己的“没有说”。显然我根本不是个多疑的人,我当然相信她没有说。只是不懂得我那时何种居心竟然陶醉于她的委屈。

突然我明白了,并不是我有何居心,而是因为委屈,也是一种美,我会陶醉其中。那时觉得女人比男人要接近小孩的多了,因为女人委屈时的样子跟孩子一模一样。而男人不会让自己的委屈被别人看到。虽然,总让人委屈的人真的是邪恶的,他自己也应该会愧疚,但不可否认,受委屈的女孩,在我看来,是很美的。

人家在解释了,这已经是在承受委屈了,解释了三四遍,更可以证明委屈之深。我却无动于衷,这是现在唯一感觉到自己邪恶且深为愧疚的一点了。所以今后有人解释时,你一定要听,而不是不在意。

女人是像孩子的,柔弱,常受委屈,而委屈时柔弱需要保护的本性也就出来了,所以感受到这种她们的委屈时,多数人都会为之动容恻隐。这是一种美,看不下去的美,我宁可不要,但这种美也总会不时的让我感受到。

最后,我又想到那一脸委屈的样子,想到紧张的说出“不是的,不是这样的”,我就感到莫名的善,莫名的怜。

在dreamhost上升级wordpress2.3.1至wordpress2.3.2

2007-12-31 1:01| 分类:tech wordpress| 2,053 次点击

由于上一次已经记录了升级到wordpres2.3.1的过程,所以这次升级更快。这次是在windows下,附上图:

一、用CuteFTP把wordpress-2.3.2.zip上传到DH根目录,然后在webftp里解压,见下图:

1

点击那个绿色的勾,即开始解压。(先保证你主机上没有wordpress文件夹,以防被覆盖)

之所以用CuteFTP是因为leapftp这个轻量级的死活连接不上DH的主机,而CuteFTP却很快。

二、解压完后应该在DH主机的根目录下看到wordpress文件夹

2

三、发现了竟然CuteFTP有复制文件和文件夹的功能,之前用leapftp都没有复制功能,汗。于是直接在CuteFTP中复制粘贴, 而不是在DH的Webftp中,那个慢啊。

把原来的wp文件夹中(chen)的wp-content文件夹里的内容复制到新文件夹的wp-content中,CuteFTP速度很快。

四、把wp-config.php复制到新的wordpress文件夹内

五、把原来的文件夹改名成chen2.3.1,把wordpress文件夹改名为chen,升级成功。但主题又跑回原来的默认主题,登录更改下主题即可。(我现在使用的是这个Silver Light主题)

(本篇图文均发于live writer 2008,还是windows下效率高啊,另外,今晚DH的速度可真快,包括chenfangyi.com的访问速度和CuteFTP的连接速度,不亚于国内的主机)

淘米所应该具备的心态——如何买到心仪的好米

2007-12-30 17:54| 分类:Internet 域名投资| 标签: | 1,874 次点击

本文于2007-12-30发表于域名城,今日(2009-09-10)整理旧文,把域名类的文章也大胆公布在博客上,按第一次发表的时间归档。

虽然现在1元cn米炒得火热,很多人都投资新煮1元cn米去了,但我相信仍有相当多的老米农仍然坚持“淘米”(从已注册的域名中淘到好米然后购买)。“淘米”的金钱投入可能要比一元CN米大,但因为“淘米”一般都是好米,所以米量少,时间花的也少,时间精力成本较低,详见我之前写的《高价域名和煮一元域名的投入产出比率问题》。

不过今天我只谈买米不谈煮米,就“淘米”这个问题深入,结合自己近来收的一些米,谈一谈买米所应具备的心态,文章重点在“心态”,而不是“眼光”上。所以重点并不是在米质上,而是在交易的情境上,也即假定要买的米都是不错的,而交易的具体环境却不一样。

我把我们买米的具体情形分为四种:

一、自己非常心仪那个域名,自己主动找卖家的买卖。

有很多这样的情况,尤其是拼音米,比如厦门书生的域名,大都是米农或终端主动询价的。就我自己的感受,一般我们偏爱一个域名时,就会稍显不理智,因为喜欢嘛,就会把这个米的价格的心理价位定的高些。可能只是一个普通的词,但你比较喜欢这个词,所以报价多高也不觉得高。

这时最好不要抱着“喜欢,多贵也得买下来”的心态,要承认你对这个米已经有了偏见,是以喜欢的心态而不是投资的心态来买米了,所以你给它定的心理承受价格已经不客观了,可能过高了。你应该分析下这种交易情形的特殊之处,这种交易情形不同于下面要说到的“卖家大范围发帖出售”的情形,此时,跟卖家较量价格的只有你一个,不用太担心短时间内卖家就出售给第二个人。此时最重要的是要沉稳和冷静,千万不要急,不要觉得差不多可以承受了就敲定价格。虽然米对你而言是很好,但卖家没有公开出售,所以知道的人并不多,跟你争的短期内也没有,你有的是时间来调整自己的心态,同时和卖家谈个更合适的价格。

总之,记住,这种情形的买卖,虽然是你找上门,但如果卖家有意卖的话,其实你在交易中占优,因为卖家不懂得用“公开出售,培养竞标对手,急死潜在买家”的策略来使利益最大化。可以慢慢磨价,此时除非价格实在低,否则太快接受报价是不明智的。

(以上是针对域名投资者而非域名收藏爱好者的,收藏爱好者尽可以不看论述,否则没拿到心爱的域名不要怪我)

二、卖家主动大范围发帖出售的买卖。

“大范围”是相对的,相对于上面说的一对一谈判交易,此类销售一般就是在论坛上标明出售意愿,然后由有意向的米农联系购买的。

因为我前面假定了米质都不错,所以这时卖家既已决定要出手,卖家就有很大的优势了。一方面,米质不错不怕没人一要,另一方面,大家都看到了出售贴,我们每个买家都有了对手了。的确,这种情况下就不能像上一种情形那样花几天几周时间磨了,不买就没了,这时要有的心理素质就是“敏感”和“果断”,敏感的发现域名价值,果断的买下来。这时的投资情形虽与正常的股票市场有点像,但因为米的唯一性和个人喜好性,同样的情形做出的反应却不一样。
这种情形,虽然是卖家主动卖,但因为米已经公开了,所以潜在对手很多,买家心理上并不占优势,所以这种情形反而应该快速出击,该收就收,否则就会因被别人捷足先登而锤足顿胸。

三、自己主动找卖家,卖家正好也在公开卖。

也就是,以上两种情况同时符合,比如你一直想买一个域名,而恰好这个域名大张旗鼓的在某个论坛标价出售。此时你一边会兴奋一边又会担心,兴奋的是卖家终于不捂着了主动出售了,担心的是好多人也看到了这个域名了,可能被别人抢先了去。

我遇到过几次这种情况,这种情形需要进一步细分,要分析潜在竞争买家的数量和处于出售状态的时间。比如,虽然卖家已经公开出售了,但时间已经过了几个月了,仍旧没有售出,那么这种情形就偏向于第一种情况——自己主动求购的情形。因为时间越久没售出,说明看上的人越少或者价位不适合他们。那么潜在竞争买家就少了,可以用第一种情形下的心态去对待这个米。

而如果是一个刚刚开始的售卖贴,价位又是大多数米农都能接受的,则这种情形就偏向于第二种,应多点第二种情形下的心态。况且自己之前就看上过这个米,更不能有懈怠的心态,应该尽快做出决定。

四、卖家主动上门推销给你的买卖。

这就是我们米农推销给终端的情况了,米农自己一般不会遇到推销给自己的,所以这里不谈这一情形。

总结:

近来收了一些米,有的满意,有的并不满意,满意不满意是取决于米的质量吗?不是,满意不满意是时刻跟你收过来的价格相关的。普通三字母cn是好米没错,但如果是你几万块收来的估计你看着那米也觉得买贵了,感觉不爽,那就是不满意;而若是几十快就收来一个三字母cn那肯定越看越满意。所以我们应该以合适的价格收到好米,保证看每个米都很满意。买米是一种买卖行为,比自己煮米更接近于传统的市场投资行为,所以心态对买米的重要性甚至大于煮米。因为有时自己也脑子发热做出不甚理智的投资,所以深切体会心态的重要性,现记录下,与大家分享并为自己今后投资做参考。

米市,既已成“市”,则必然有买有卖,而不只是一昧的“卖”,只卖而不懂买,不足以称之为“米农”。本文从投资心态的角度小谈了下“买米”的技巧。也以此文祝大家元旦快乐,来年米仓粒粒饱满!

假设我是其他人,假设过了几年

2007-12-27 14:46| 分类:babamama life thinking 技术无关| 1,746 次点击

——面子,自恋与换位思考

关于面子,我曾经在第一年高三那段身体不适但内心平静的日子里阐述过,因为出了点不大不小的事,使得我不得不离开高三一段时间,现在想想,那是我一生中难得的平静的时光,让我有大把的时间反思过去的十几年。

那时“换位思考”的思维方式占据着我的大脑。举几个例子就知道那时我是多么的放得开:

一、假设你总是把曾经做过的糗事放在心上,难以忘怀,试着换位下,如果你是其他人,那其他人也只会记得他们自己的糗事,怎么回去在意别人(你)的呢?每个人自己的事情都一大堆,没有可能那么把你放心上。

——把自己当成其他人,就不会在心里翻旧账,一切该忘的就会忘掉。

二、假设你今天做了一件有失面子的事,怎么也放不下,那么想想以前的你吧(换位思考除了把自己换成他人,也可以把自己换成自己以前的角色)。以前你也做过这样的事,但时间过了这么久了,你还记得吗?同样,现在的这个面子上的顾虑,不就马上会忘掉?

事实也正是这样,我现在已经完全记不得曾经发生过的“碍面子”的事。

——把自己当成三年后的自己,让自己心情已经过了三年,自然没了当前的烦恼。 真的,高三那时,我就是这么想的,这么想之后,我就忘了很多改忘的,也越来越记不清不开心的事了。大学以后,我就没有再静下心考虑过这些问题,但因为近来越来越感觉自己死要面子,并给自己的心情造成了一定的影响,于是就让以前的自己来感化下现在的我。

之所以那时心境能如此平和,现在想起来,是因为当时我远离同学和朋友了,终于感受到被遗忘的感觉了(其实一点也不难受,甚至觉得清净了),所以从心底就要降低自己在他人心中的地位。还因为即便我不在学校,但仍有高考这个涉及大面子的工程,所以对小事情就很不在意。

显然,现在这些外界条件都变了,可是当时的思维方式却让我很感动。想想现在人们普遍把自己看得太重,觉得周围人都是围着自己转的,自恋成风,自大当道,不知会有多少人能找个安静处,换换角度,体会那种卑微之道。

“死要面子”是因为过分在意自己在他人心中的地位,也是一种自恋。高三那时脑中还并无“自恋”这个词,可却懂得换换位置,把自己看得轻些,也就不会有那么多烦恼。

现在虽然我还懂得这个道理,但现在却比那时浮躁的多,浮躁了,就不会认真想问题,也就肤浅了,也就开始要面子了。

用户群体模糊项目目的不纯蚂蚁怪兽难有作为

2007-12-13 15:16| 分类:Internet 业界评论| 标签: | 1,743 次点击

一个网站,再怎么耍概念,最终离不开的都是用户,都要面对特定的用户群体。所以用户群体,是在建站之初就要考虑的。

既是群体,也就如生物学上的种群,必有一些共同的属性。如同校内网用户的共同属性是“在校大学生”,而豆瓣用户的属性是“爱书之人”,就连饭否滔滔也有如我上一篇博文所说的“想表达,但表达欲望不强的人”的属性。而就是在这几种属性中,也有差别之分,校内网和其他一些地区SNS网站一样,更多拥有的是“社会属性”(即都是社会带给他的属性——同在大学,或者同在一个地方)。而豆瓣和饭否,他们更多相似的是“内在属性”(即有共同爱好或性格)。

确定了用户群体,才能有针对性地进行推广。可以说,推广方式,取决于用户群体,而用户群体,反过来又作用于推广效果。准确的用户群体推广起来非常好办,我仍举校内网这个例子。麦田在他的一篇文章中提到校内网的执行力很高,他表示出需要学习校内网的执行力,但我想说,蚂蚁网,无论聘请多么有经验的推广人员,执行力也不会比校内网高。为什么呢?因为麦田只看到了“执行力高”这个表面现象,却没有深究为什么他的执行力会这么高。

校内网的用户群体非常集中,简直不用大脑想就知道将来的注册用户就是那些人,而蚂蚁网呢?蚂蚁网必须先给大家灌输一些分享的观念,还得让注册得到的好处让大家看到,才可能得到一个用户,这种用户极难取得,可以说打着电子商务社区旗号的每个用户,都是网站方培养起来的。而且这些用户还只是注册,参与性如何还不知道,这种用户群体,在初期粘性的培养上与校内网的用户群体不可同日而语。校内网在校园的环境下,用户群体集中,网站只需打一些旗号,用户甚至可以自发的形成有组织的推广,面向这种这种人群做推广的执行力,想不高都难(本文暂不考虑市场竞争)。而蚂蚁和怪兽,若不是靠口碑而是靠有意针对人群的广告投放,绝不会有校内网的这种效果(你无法得知你广告受众有多少是有这种“内在属性”的人)。

事实上,蚂蚁网对自己用户群的定位并不清晰,哪些人喜欢消费推荐?哪些人喜欢推荐消费?这很难分清,且不说有多少专业的消费品交流平台(如手机论坛),消费品不同于书籍,很多人只会在需要消费的时候看些消费推荐,买完就算了,哪来那么多的交流。消费品推荐类网站用户群体模糊,在推广时很难把握。

以上只是其一,而这点并不是校内网推广如此之好的最重要原因,也不是本文要讲的重点,重点是第二点。

第二点。执行力的高低,除了团队的核心和团队成员的素质外,还取决于项目的目的是否高尚,团队人员是否觉得有意义。为什么校内网推广时从团队人员到校园大使的执行力都那么高?因为他们都被灌输了一种观念,他们做的是一件有意义的事,一件可以联系起所有大学生的事,联系起以前同学的事,这听起来多么伟大多么美好啊,所以他们在执行的过程中不会有任何犹豫。而蚂蚁和怪兽呢?办一个展示自己消费品的平台?消费推荐?这的确是麦田和腾龙的初衷,网站方极力宣传是要分享,但对于网站会员,恐怕更多的是一个可以炫耀自己“败家”的平台。这种有些“炫耀”性质的网站,至少在中国现在的这个环境下,动机就不那么美好。所以就连网站推广人员甚至麦田,在推广时都无法理直气壮的让人家来注册。麦田或许已经感到在推广蚂蚁的过程中有点力不从心了,即便他现在只是用自己的博客写些软文推广。事实上,麦田在对校内网评论的言语中,无不透露出对陈一舟的这笔收购的羡慕。

(插一句关于豆瓣的:电子消费品不同于书籍,书籍可以分享,因为知识类的东西,在人们观念中就没有炫耀一说。)

综上,“用户群体集中”、“项目在推广人员意识中有很大意义”(暂不考虑市场竞争),这两点导致了校内网推广时势如破竹,注册量节节攀升。而也正是由于这两点的限制,导致蚂蚁怪兽等“内在属性”用户类网站,无法有很高的执行力来推广。

我自己也在做一个类社区(不是社区类)网站,为了不被说成是软文,就不说是什么站了。网站是可以马上发布的,可是在将要发布推广时,却有如上等种种担心,我也很坦白的跟团队人员说过这些问题。也就是说,我也面临着以上那些困扰,目前正考虑着寻找另一条发展方式。

此文首发于我的techweb博客

rails学习第二天:解决radrails导入新项目出现的问题

2007-12-09 11:28| 分类:tech web开发| 标签: | 4,266 次点击

一、

第一次导入depod_k项目,会自动使用3001端口,不过访问
http://localhost:3001/查看环境或者直接访问
http://localhost:3001/admin时
都会出现:

Application error (Apache)

Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html
而我按《敏捷开发》里一步步做出来的却没有这个问题。于是我把自己根据书里创建的项目中的environment.rb代码覆盖到导入的项目上,再重启webrick,查看环境就没有问题了。此问题解决。

二、

不过访问:
http://localhost:3001/admin又出现:

Errno::ENOENT in AdminController#index

No such file or directory – /tmp/mysql.sock

RAILS_ROOT: script/../config/..
而同样我按《敏捷开发》里一步步做出来的却没有这个问题。于是我把整个database.yml都复制到导入的文件里,仍然不行(后来才知道是忘了重启)。于是google到这里:http://rc.org.cn/viewthread-162:

在Ubuntu下用apt-get默认安装了Mysql后运行rails程序会出现

QUOTE:

No such file or directory – /tmp/mysql.sock

这样的错误,其实是由于MySQL没有安装在默认的地址下的原因,解决办法是如果您有安装phpmyadmin的话,登录进去,选择系统变量会看到一项

QUOTE:

socket /var/run/mysqld/mysqld.sock

这样的字眼,后面的就是socket的地址,把database.yml里加上一行:

QUOTE:

socket: /var/run/mysqld/mysqld.sock

再中止Webrick,重新启动就可以正常运行了。

我是直接把database.yml里的代码复制过去,但是没有重启Webrick,于是重启了下,刷新,发现就没有问题了。

三、

后来我又导入depod_r,一切都按刚才导入depod_d时操作,但访问:http://localhost:3002/admin,又出现:
ActiveRecord::StatementInvalid in AdminController#index

Mysql::Error: #42S02Table ‘depot_development.users’ doesn’t exist: SHOW FIELDS FROM users

RAILS_ROOT: ./script/../config/.. 估计是由于数据库没有那个表。因为这个项目是最后的项目了,中间肯定还得修改下数据库。说实话,这本《Web开发敏捷之道--应用Rails进行敏捷Web开发(第2版)》看得我是一头雾水,即便结合操作也仍不明白怎么回事,跟以往ASP、PHP开发流程太不一样了,看来得直接找个项目直接做了,不懂再看书

Pages: Prev 1 2 3 ...8 9 10 11 12 13 14 15 16 Next