让wordpress3.0.1的主题支持菜单

升了级后,发现使用的主题不支持菜单,以前的导航都无法显示了。在主题functions.php中加入:
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'twentyten' ),
) );
但只修改这里,并不会真正在主题导航菜单上启用这个功能,只会在侧边小工具中多出custom menu小工具一项,还需修改导航部分代码,才会体验到新的功能。
一般主题导航部分代码为:
<?php wp_list_pages('title_li='); ?>
或:
<?php wp_list_categories('sorderby=name&depth=4&title_li='); ?>
改为
<?php wp_nav_menu( 'id=navbar' ); ?>
也可以根据自己使用的主题功能修改为类似:
<?php wp_nav_menu( 'id=navbar&menu_class=headermenu' ); ?>

.net framework2.0,3.0,3.5的CookieContainer的bug解决方法

用HttpWebRequest发送请求,附上了CookieContainer(CookieContainer里面确定已经包含了所有需要的Cookie),但是当发送请求后某些Cookie并没有发送出去,调试了两天,一直觉得是请求的网站设了什么古怪的限制,使请求老是发送不成功,最后用SocketSniff抓包发现少发送了几个Cookie(因为这些cookie涉及到几个子域名),检查CookieContainer,里面确实有这几个Cookie,最后只好反编译HttpWebRequest,在类CookieModule里发现方法OnSendingHeaders的如下代码,这个是把cookie设置到headers里面的关键地方:

internal static void OnSendingHeaders(HttpWebRequest httpWebRequest)
{
try
{
if (httpWebRequest.CookieContainer != null)
{
string str;
httpWebRequest.Headers.RemoveInternal("Cookie");
string cookieHeader = httpWebRequest.CookieContainer.GetCookieHeader(httpWebRequest.Address, out str);
if (cookieHeader.Length > 0)
{
httpWebRequest.Headers["Cookie"] = cookieHeader;
}
}
}
catch
{
}
}
问题出在GetCookieHeader这个方法里面,某些Cookie的domain判断错误导致没有附加上去。.Net framework4.0以下的都存在此问题。最后把程序框架调到4.0的,就没有这个问题了。当然4.0以下的框架版本可以用下面的方法处理一下CookieContainer里面domain。

  1. Don't use .Add(Cookie), Use only .Add(Uri, Cookie) method.
  2. Call BugFix_CookieDomain each time you add a cookie to the container or before you use .GetCookie or before system use the container.

    private void BugFix_CookieDomain(CookieContainer cookieContainer)
    {
        System.Type _ContainerType = typeof(CookieContainer);
        Hashtable table = (Hashtable)_ContainerType.InvokeMember("m_domainTable",
                                   System.Reflection.BindingFlags.NonPublic |
                                   System.Reflection.BindingFlags.GetField |
                                   System.Reflection.BindingFlags.Instance,
                                   null,
                                   cookieContainer,
                                   new object[] { });
        ArrayList keys = new ArrayList(table.Keys);
        foreach (string keyObj in keys)
        {
            string key = (keyObj as string);
            if (key[0] == '.')
            {
                string newKey = key.Remove(0, 1);
                table[newKey] = table[keyObj];
            }
        }
    }

Dnsever.com韩国老牌免费dns解析服务

Dnsever.com是一家韩国网站在2004年推出的域名免费DNS解析服务,界面支持朝鲜语和英文,该网站在韩国是数一数二的著名免费DNS服务商,提供的服务很稳定,支持所有英文域名,很多申请俄罗斯ru域名的喜欢用它做DNS服务器,设置记录几分钟完成解析。提供5台DNS服务器,可设置A、 MX、CNAME、 TXT、 SRV、PTR、 NS、 AAAA,TTL等解析记录, 一个账号可添加无限个域名,可设置无限个解析记录数,支持动态解析。

注册地址:http://www.dnsever.com/index.html?selected_menu=registerlanguage

注册成功后需要邮件激活,添加域名时会遇到“Memo ”为域名描述,可不填,“Template Setup”提示是否和Google Apps(主要是谷歌的免费企业邮局)或Google AdSense(谷歌广告)进行整合,不需要可不填,或以后再添加,直接点“Start DNS management for 域名”即可。

Dnsever.com的6台DNS服务器为:
ns259.dnsever.com 211.233.59.20
ns26.dnsever.com 121.254.154.156
ns41.dnsever.com 121.254.154.171
ns231.dnsever.com 125.141.231.179
ns72.dnsever.com 121.254.154.202

javascript获取某月的天数

如要获取2008年8月的天数:

new Date(2008, 8, 0).getDate();

new Date(2008, 8, 0)就是8月31号,这样就可以获取到天数了。

Google Analytics简介、功能、注册和使用

Google Analytics 简介:

  • Google 分析是 Google 提供的一款免费的网站流量分析工具。
  • 目前,对于没有 Google Adword 账户的用户每日限制500万PV的统计,Adword 用户则没有限制。
  • 操作简单:只需把一个js代码放入需要统计的每一个页面。
  • 可以选择时区。
  • 分析非常全面精确。
  • 在业界深受好评。

Google Analytics 功能(Google Analytics 功能非常强大,这里主要列出与 SEO 有关的几点):

  • 详细的流量来源数据分析,包括:直接点击、搜索引擎、推介、Adword、其他等。
  • 每个关键字的流量数据分析,包括:当天搜索量、某时间段内搜索流量趋势、流量地区分布、各搜索引擎相对关键字、跳出率。
  • 提供推介网站的来源链接。
  • 提供每个页面的浏览量。
  • 分析用户在网站的平均停留时间、新访问量所占百分比、用户地图分布、电子商务转换率。
  • 对用户客户端进行分析。
  • 可以多用户(不同帐号)一起查看分析数据。
  • 加载分析代码,对网页速度影响不大。

Google Analytics 注册和使用:

  • 访问 http://www.google.com/analytics/zh-CN/
  • 输入 Google 帐户的电子邮件和密码直接登录,如果没有 Google 帐户,则注册创建一个。
  • 注册时,记得从下拉列表中选择 http:// 或 https://,然后输入你的网址。在帐户名称字段中为该帐户输入一个别名,然后点击继续,输入联系方式。
  • 同意服务条款,提交注册,完成。

笔记本空格键左边或右边失灵的问题(x61空格键)

前天晚上发现空格键下面有点东西,就把空格键掰了下来,清理完后把空格键扣上后,发现空格用起来怎么都没有以前的那种感觉了,按下去哗哗的响,而且左边和右边不起作用了,只能按中间才行,当时折腾了半天也不知道是怎么回事,以为是把空格键掰坏了,用了两天,实在受不了了,我打字什么的都喜欢用空格键的左边,现在失灵了,超级郁闷。在百度上搜,没找到结果,还是强大的51nb论坛好,搜到几个人发帖问同样的问题,原来是空格键没有装好,我一直以为空格键上面卡的那根铁丝是用来强化支撑空格键的,原来它是可以动的,安装时先要把它弄起来,两边的勾勾要卡在盘底的两个卡子上,卡好后再按下空格键让x形支架卡住,这样就好了,又恢复了以前舒服的手感,按下去也没有声音了,左边和右边都起作用了。

几个便宜的国外vps

spacerich.com 域名注册于2005年,提供美国和德国VPS。


HostVillage 是一家新的的小VPS提供商,据官方上的介绍说,成立已经有了2年,不是one-man的公司,有四位销售人员,它们提供了很小很低价的配置方案,最便宜的只需$2.99/月起,首月使用WHT50OFF优惠码,更是低至1.5$,配置如下:

96M保证内存,128M最大内存,3G空间,300G流量, 1个独立IP。(加一个独立IP的话是1.99美元一个月)

第一个月使用优惠码只要 1.5美元,然后每个月只要2.99美元。

首月50%的优惠码:WHT50OFF


virpus.com 5美金,配置不错!IP 1.5美金一个



eNotch Networks原本在WHT上最新的优惠是$5.95/月,现有LowEndBox优惠码一枚,终身便宜25%,也就是说它们的 “Hades” package现在只需$4.47/month:

* 512MB guaranteed memory
* 20GB storage
* 10Mbps unmetered bandwidth
* 2 IP addresses
* OpenVZ
Link: http://www.lowendbox.com/blog/enotch-networks-4-47-512mb-openvz-vps/ 介绍

客户也可以在购买之后申请第三个IP. 主机位于纽约的Cogent机房(或许这能解释为什么带宽那么便宜- -)。

enotchnetworks.com貌似是一家非常老牌的提供商了,2001年开始转型做主机和web hosting业务。


hwshosting.net 一家英国公司IT网站,域名注册时间是2008年6月5日,2008年7月份开始提供VPS业务,目前提供美国、英国两个机房的VPS——–已经购买了3个月(7/19)


DashingHost提供便宜VPS,最便宜的VPS的Start型号只要2.99美元一个月,80M内存保证,128M内存突发,2G容量,50G流量,含一个独立IP,VPS在LA的Take2Hosting机房,ping延迟190ms左右,速度很不错,VPS最低是季付,也就是8.97美元,支持paypal付款———————–已经购买了3个月(7/19),开通速度极快!

PHP的常量和预定义常量

1.区分大小写,在定义时可以指定是否大小写敏感

2.常量的值只能是特定类型:整数型,浮点型,字符串和布尔值

如何定义?

1)define()函数定义

2)constant()动态获取常量值

3)defined()函数判断一个常量是否已经定义,

4)get_defined_constants()函数获取当前定义的所有常量

// 预定义常量

__FILE__ :php程序文件名

__LINE__:程序行数

PHP_VERSION:PHP版本

PHP_OS:操作系统信息

E_WARNING:指到最近的警告处

E_ERROR:指到最近的错误处

E_PARSE:解析语法有潜在问题

E_NOTICR:常量发生异常,但不一定是错误处

C#用MD5CryptoServiceProvider把字符串加密成32位和16位Hash值

using System.Text;
using System.Security.Cryptography;

方法1:

16位

public string GetMd5(string str)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();
string a=BitConverter.ToString(md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(str)),4,8);
a=a.Replace("-","");
return a;
}

32位

public string GetMd5(string str)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();
string a=BitConverter.ToString(md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(str)));
a=a.Replace("-","");
return a;
}

方法2:

public string Hash(string toHash)
{
MD5CryptoServiceProvider crypto = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF7.GetBytes(toHash);
bytes = crypto.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
foreach (byte num in bytes)
{
sb.AppendFormat("{0:x2}", num);
}
return sb.ToString();        //32位
return sb.ToString().Substring(8,16);        //16位
}



在美国Apple Online Store订购iPad的攻略

原创文章,转载请注明出处 http://wuhongsheng.com/

在美国Apple Online Store订购iPad的攻略

文章开篇前,我们先来算个帐:32G Wifi+3G版本的iPad,在淘宝上面销售的均价是人民币7850元。官方售价为美元729,折合人民币4980元。中间奸商赚取差价2870元。

然后我们再算算,从美国购买iPad发国际快递回国内,价格为官方价格729美元+国际快递费用27美元,折合人民币5162元。

足足比淘宝上面便宜了2688元。如果购买两台,那么省下来的钱,足够买第三台了。

相信大家都比我会算数。

当然,也有很多人想到这点了。但是他们没法买。为什么?因为在美国的Apple Online Store购买iPad,必须要有美国的地址。身在国内的人们,运气好的在美国有朋友可以帮忙代购,运气不好就只能干瞪眼。那些找美国朋友的,也会欠下一 个人情,早晚要还。而且现在美国全境大部分的线下商店的iPad都早已脱销了,就算有钱也不一定能买到。最后还是需要在Apple Online Store预定。

OK,我们来总结下在Apple Online Store订购iPad所需要具备的条件吧。

1.一个美国的地址
2.一张支持美元支付的信用卡,国内国外的无所谓,卡上的额度必须要够,为你所购买的iPad价格的2倍。比如购买32G Wifi+3G版本,价格是729美元,那么卡上就必须要够729*2=1458美元(等额10000人民币)。为什么要这么多,我会在后面说明。
3.关税问题
4.足够的耐心,把本文看完,并且可以等待10个工作日的订货周期

我们继续,先解决第一个也是最重要的一个问题,美国的地址。

中华民族的智慧是无穷的,包括身在海外的华人。在遥远的大洋彼岸,有为数众多的,华人开的快递公司,比如AAE。他们除了运营着中美之间的快递业务 外,还提供了一些增值服务,比如为你提供美国地址,然后把美国地址所收到的包裹快递回国内。

看到这里,你就知道,美国地址的问题有解了。

当然,Apple也不是吃素的。由于提供转运服务的快递公司能提供的收件点有限,一个地址被无数人使用,所以是绝对过不了苹果的审核关的。因为 iPad现在的产能严重不足,全球严重缺货,所以苹果使用了机器+人工的方式对地址进行识别。对于同一个地址,一定时间内订购超过2台以上iPad的,就 会被取消订单。

还是那句话,中华民族的智慧是无穷的。

废话说了很多,我们先开始吧。既然是攻略,总要有步骤的。

我们先去gels注册一个帐号。gels是AAE旗下一家专门提供运转服务的公司,他们为不同等级的会员提供美国各个州的收件地址。我们要知道,在 美国买东西,都是有消费税的,每个州的税率都不一样,有些州还免税,比如阿拉斯加、俄勒冈,都是免税的州。gels就提供了两个俄勒冈的收件地址,这样我 们用来购买iPad就不用交税了,可以省下至少7%的消费税。

gels的注册地址(必须要从这个地址注册,而且要在推荐注册人里面留下我的ID,没有推荐人的话你是无法注册成功的): http://url.cn/2038Ab

gels注册完后,你是看不到任何可用的收件地址的。提供运转服务毕竟不是什么光明正大的事情(从推荐注册的方式就能看出来)。你需要先充值一定的 金额,获得相应的会员级别后,才能看到对应级别会员可用的地址。等级越高,可用的地址就越多,而且会有免税州的地址,费用也能更加便宜。充值进去的金额会 被直接充当快递费。如果你不需要用他们的服务了,充值的费用可以退还,但必须要扣人民币50元的手续费。

这里我建议大家直接充值1000块钱升级为白金会员。因为只有这个等级的会员才能拥有免税州的地址,这样购买iPad才能免税。等iPad到手后, 再要求他们把剩余的钱都退回来,也就只需要再付50块钱而已。

OK,这里我假设大家都升级为白金会员了。这时可以在个人页面上看到“美国俄勒冈州GELS仓库(OR)收货地址”,我们就选这个地址吧。但这个地 址不能直接用,还需要单独处理下。

注意!!请不要使用备用地址里面的OR收货地址!!这个地址可能会导致收货失败!!血的教训,不止我一 个人因为寄送到这个地址而导致无法收货!!

然后就是激动人心的下订了。我们打开 http://store.apple.com/us/browse/home/shop_ipad/family/ipad ,选上一款自己心仪的iPad,丢进购物车,然后去结算。

结算页面,首先是填收货地址。要注意的地方来了,我们!!千万!!不能按照gels给的地址原样填上。

首先是为了确保收货人的唯一性,gels给每个会员分配了一个ID,比如ABCDE,这个ID必须要填写到名(First Name)上。如果你这个地方填错了,那么你就收不到货了。切记,这个ID不能填写到别的地方,包括填到姓(Last Name)里面。原创文章http://wuhongsheng.com/

把ID填写到first name里面后,last name就没关系了。我们可以随便乱填,不填你的名字都无所谓,这个不影响收货。比如我们可以在last name里面填上kelwen甚至ungi啥的。但如果万一订单出了问题,你要打国际长途查询,对方要求你的名字,你就要能正确说出来,避免杯具。

接着是Area Code和Primary Phone,这里填写的是电话号码。最好我们直接使用gels给的号码,或者你对自己修改后的地址很有信心,那么可以自己填一个。比如前阵很流行的 Google Voice,注册成功的朋友肯定都搞到了一个美国的电话号码。如果没有,可以把gels给的号码后面四位改改填上去。最后Area Code里面填写电话号码的前三位数字,如503,Primary Phone填写电话号码的后四位,如666-6666。反正这里自己发挥想象力,确保电话号码是一个格式上合法的假号码,或者真号码,都可以。

Email Address和Company Name都可以留空不填

最重要的地方来了,地址填写部分。地址填写一共有两栏,一栏写不下可以写另外一栏。按照gels给的地址,肯定是一栏可以写下的,但我们不能这样 干,否则Apple第一关,电脑自动检查重复地址就过不去了。Apple的程序对地址的自动识别率还是非常高的。原创文章 http://wuhongsheng.com/

我们在这里要做的,就是把地址改为程序识别不出来,但快递员人工又能正常的阅读并且投递。

聪明的小朋友一定想到了,我们加一些无关紧要的话进去不就好了吗?bingo!

比如,我们可以把地址拆成两部分,然后在第一部分的开头加上一些东西,在第二部分结尾也加上一些东西,地址里面的数字改改(当然不是单纯的把 first改为1st这么简单,这样的话程序也是可以识别出来的)。

再说明白一点。比如gels给出来的地址是1 NW 3 ST,那么拆成两部分就是1 NW和3 ST,我们把第一部分改为PLS SHIP TO #1 NW,第二部分改为#3 ST PORTLAND OR,这样就可以了。但我建议大家还是继续发挥自己的想像力,尽量区别开来。

改了地址后,请到http://maps.google.com/,输入修改后的地址,看看google搜索出来的地址是否还是原来的位置。如果 是,那么就没问题。

最难的一部分已经搞定了,后面的Zip Code输入邮编,然后把This is a business address选上,点击Continue保存并且进入到下一步的信用卡信息填写。

信用卡资料填写,大部分的地方都和收件地址一样。但是First Name和Last Name必须要填写你信用卡上面的英文名字。因为信用卡支付要匹配这部分的。所以这里必须要填写真实信息。其余部分照抄收件信息即可。

之后就是Continue,然后苹果会对你的信用卡进行两次1美元的扣款(也有一次的),以确认你的信用卡可用。然后苹果会再扣你所购买的iPad 的金额(比如729美元)。这三次对信用卡的扣款都是预授权形式的。也就是并没有实际进行消费,只对信用卡里面相应的金额做冻结。只有在苹果给你寄出 iPad以后才会正式扣款

只要扣款成功,苹果就会给你显示一个订单概况。但这个概况不代表苹果和你之间的合约已经构成。

说说文章开头提到额度的问题。不知道是因为国内信用卡在苹果上面走的通道有问题,还是其他原因。我的几张信用卡(中行和招行)在苹果寄出iPad后 正式扣款的时候,并没有对原先做的预授权进行完成预授权,而是重新扣了一次同样额度的刷卡消费。这样造成的后果是,产生了两笔同样金额的消费,但只有后面 一笔是刷卡消费,前面一笔仍然是预授权冻结的状态。所以造成了我中行的卡上没有留下足够的额度,造成苹果扣款失败。之后打了中行的电话要求临时提额,并且 打了一个国际长途用我蹩脚的英语找苹果的人给重新扣款,但最后还是因为成功扣款太晚,fedex没收到扣款后的结果,最后把我这个订单给退回了苹果的回收 站ELK GROVE, CA,导致购买失败。原创文章http://wuhongsheng.com/

所以为了保险,建议大家一定要在卡上留有足够的额度,以防出现意外的情况。

继续回到刚才的流程。支付后,在苹果销售部门正常上班的情况下,你会在一个小时内收到苹果发来的一封名为“Order Acknowledgement”的邮件。收到这封邮件表明苹果已经收到你的订单和付款,并且订单已经通过了初步的审核。同样,这封邮件也不会构成苹果和 你之间的任何合约,苹果一样能随时取消你的订单。

之后的时间就是看人品了。在订单提交成功的3个工作日内,苹果会有人工对订单进行复审。只要在3个工作日内你没收到苹果发来的,标题为 “Action Required”的邮件,那么恭喜你,你的订单基本上已经成功,并且已经提交到富士康进行生产了。之后你会有两个星期的漫长等待,中间你不会收到任何苹 果发来的邮件,就跟石沉大海一样。在后台查询订单的状态都是 Not yet shipped 原创文章http://wuhongsheng.com/

在9-10个工作日左右,登录Apple Online Store查询订单的Status,订单状态会变为 Prepared for Shipment,在这个状态下,就是iPad生产好,准备从富士康发货了。一般会在1-2天内从富士康通过fedex发到美国。

所有发出来的iPad,都是先从深圳,过关到香港,然后从香港空运到美国,之后在美国中转几次,最后送到gels的地址。

gels在签收后,会对货物统一整理,然后到他们的大仓库。这个时候在gels的网站就可以对货物进行操作了。在gels上面提交运单,等上几 天,iPad就会原包送到你手上。因为没有你的允许,gels是不会拆开包裹的。他们寄送的时候,会在原有的fedex包装上面重新打包一层寄给你。真正 做到了原包未拆封。原创文章http://wuhongsheng.com/

OK!整个购买iPad的攻略就到此为止。如果你不再需要gels的帐号,可以联系他们的客服要求退回余额。

最后说说关税,一般情况下,你需要如实申报寄送的物品,但是否需要交关税主要看海关抽查,运气不好被抽上的话,只要属于正常的自用范围,是不需要征 税的。如果超出范围,那么一台iPad需要交600-1000的关税。但就算要缴税,也比淘宝上面买的便宜1000多。