<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ThinkSOA</title>
	<atom:link href="http://www.thinksoa.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.thinksoa.cn</link>
	<description>一切为了更自由</description>
	<lastBuildDate>Mon, 04 Jul 2011 02:27:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Ecshop文件结构备份,自己看的!也分享一下!</title>
		<link>http://www.thinksoa.cn/news/230.html</link>
		<comments>http://www.thinksoa.cn/news/230.html#comments</comments>
		<pubDate>Mon, 04 Jul 2011 02:24:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ecshop]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/230.html</guid>
		<description><![CDATA[ECShop 2.6.2 的结构图及各文件相应功能介绍ECShop2.6.2 upload 的目录┣ activity.php 优惠活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ animated_favicon.gif 动态icon┣ article.php 文章内容┣ article_cat.php 文章分类列表┣ auction.php 拍卖前台文件┣ brand.php 品牌列表┣ captcha.php 生成验证码┣ catalog.php 列出所以分类及品牌 ┣ category.php 商品分类┣ comment.php 提交用户评论┣ compare.php 商品比较程序┣ cycle_image.php 轮播图片程序┣ exchange.php 积分商城┣ favicon.ico 网站icon┣ feed.php RSS Feed 生成程序┣ flow.php 购物流程┣ gallery.php 商品相册┣ goods.php 商品详情┣ goods_script.php 生成商品列表(站外商品广告js调用)┣ group_buy.php 团购商品前台文件┣ htaccess.txt 伪静态规则┣ index.php [...]]]></description>
			<content:encoded><![CDATA[<p>ECShop 2.6.2 的结构图及各文件相应功能介绍<br />ECShop2.6.2 upload 的目录<br />┣ activity.php 优惠活动列表<br />┣ affiche.php 广告处理文件<br />┣ affiliate.php 生成商品列表<br />┣ animated_favicon.gif 动态icon<br />┣ article.php 文章内容<br />┣ article_cat.php 文章分类列表<br />┣ auction.php 拍卖前台文件<br />┣ brand.php 品牌列表<br />┣ captcha.php 生成验证码<br />┣ catalog.php 列出所以分类及品牌</p>
<p><span id="more-230"></span>
<p>┣ category.php 商品分类<br />┣ comment.php 提交用户评论<br />┣ compare.php 商品比较程序<br />┣ cycle_image.php 轮播图片程序<br />┣ exchange.php 积分商城<br />┣ favicon.ico 网站icon<br />┣ feed.php RSS Feed 生成程序<br />┣ flow.php 购物流程<br />┣ gallery.php 商品相册<br />┣ goods.php 商品详情<br />┣ goods_script.php 生成商品列表(站外商品广告js调用)<br />┣ group_buy.php 团购商品前台文件<br />┣ htaccess.txt 伪静态规则<br />┣ index.php 首页文件<br />┣ message.php 留言板<br />┣ myship.php 支付配送DEMO<br />┣ pick_out.php 选购中心<br />┣ pm.php 短消息文件<br />┣ quotation.php 报价单<br />┣ receive.php 处理收回确认的页面<br />┣ region.php 地区切换程序<br />┣ respond.php 支付响应页面<br />┣ robots.txt 对漫游器进行限制<br />┣ search.php 搜索程序<br />┣ sitemaps.php google sitemap 文件<br />┣ snatch.php 夺宝奇兵前台页面<br />┣ tag_cloud.php 标签云<br />┣ topic.php 专题前台<br />┣ user.php 会员中心<br />┣ vote.php 调查程序<br />┣ wholesale.php 批发前台文件<br />┣ admin文件夹<br />┃ ┣ account_log.php 管理中心帐户变动记录<br />┃ ┣ admin_logs.php 记录管理员操作日志<br />┃ ┣ ads.php 广告管理程序<br />┃ ┣ adsense.php 站外JS投放的统计程序<br />┃ ┣ ad_position.php广告位置管理程序<br />┃ ┣ affiliate.php 程序说明<br />┃ ┣ affiliate_ck.php 程序说明<br />┃ ┣ agency.php 管理中心办事处管理<br />┃ ┣ area_manage.php 地区列表管理文件<br />┃ ┣ article.php 管理中心文章处理程序文件<br />┃ ┣ articlecat.php 文章分类管理程序<br />┃ ┣ article_auto.php<br />┃ ┣ attention_list.php<br />┃ ┣ attribute.php 属性规格管理<br />┃ ┣ auction.php 管理中心拍卖活动管理<br />┃ ┣ bonus.php 红包类型的处理<br />┃ ┣ brand.php管理中心品牌管理<br />┃ ┣ captcha_manage.php<br />┃ ┣ card.php 贺卡管理程序<br />┃ ┣ category.php 商品分类管理程序<br />┃ ┣ check_file_priv.php 系统文件检测<br />┃ ┣ comment_manage.php 用户评论管理程序<br />┃ ┣ convert.php 转换程序<br />┃ ┣ cron.php 计划任务<br />┃ ┣ database.php 数据库管理<br />┃ ┣ ebao_commend.php 易宝推荐<br />┃ ┣ edit_languages.php 管理中心语言项编辑(前台语言项)<br />┃ ┣ email_list.php 邮件列表管理<br />┃ ┣ favourable.php 管理中心优惠活动管理<br />┃ ┣ flashplay.php<br />┃ ┣ flow_stats.php 综合流量统计<br />┃ ┣ friend_link.php 友情链接管理<br />┃ ┣ gen_goods_script.php 生成显示商品的js代码<br />┃ ┣ get_password.php 找回管理员密码<br />┃ ┣ goods.php 商品管理程序<br />┃ ┣ goods_auto.php<br />┃ ┣ goods_batch.php 商品批量上传、修改<br />┃ ┣ goods_booking.php 缺货处理管理程序<br />┃ ┣ goods_export.php<br />┃ ┣ goods_type.php 商品类型管理程序<br />┃ ┣ group_buy.php 管理中心团购商品管理<br />┃ ┣ guest_stats.php 客户统计<br />┃ ┣ index.php 控制台首页<br />┃ ┣ integrate.php 第三方程序会员数据整合插件管理程序<br />┃ ┣ magazine_list.php<br />┃ ┣ mail_template.php 管理中心模版管理程序<br />┃ ┣ message.php 管理中心管理员留言程序<br />┃ ┣ navigator.php<br />┃ ┣ order.php 订单管理<br />┃ ┣ order_stats.php 订单统计<br />┃ ┣ pack.php 包装管理程序<br />┃ ┣ payment.php 支付方式管理程序<br />┃ ┣ picture_batch.php 图片批量处理程序<br />┃ ┣ privilege.php 管理员信息以及权限管理程序<br />┃ ┣ sale_general.php 销售概况<br />┃ ┣ sale_list.php 销售明细列表程序<br />┃ ┣ sale_order.php 商品销售排行<br />┃ ┣ searchengine_stats.php 搜索引擎关键字统计<br />┃ ┣ search_log.php<br />┃ ┣ shipping.php 配送方式管理程序<br />┃ ┣ shipping_area.php 配送区域管理程序<br />┃ ┣ shophelp.php 帮助信息管理程序<br />┃ ┣ shopinfo.php 网店信息管理页面<br />┃ ┣ shop_config.php 管理中心商店设置<br />┃ ┣ sitemap.php 站点地图生成程序<br />┃ ┣ sms.php 短信模块 之 控制器<br />┃ ┣ snatch.php 夺宝奇兵管理程序<br />┃ ┣ sql.php sql管理程序<br />┃ ┣ tag_manage.php 后台标签管理<br />┃ ┣ template.php 管理中心模版管理程序<br />┃ ┣ topic.php 专题管理<br />┃ ┣ users.php 会员管理程序<br />┃ ┣ users_order.php 会员排行统计程序<br />┃ ┣ user_account.php 会员帐目管理(包括预付款，余额)<br />┃ ┣ user_msg.php 客户留言<br />┃ ┣ user_rank.php 会员等级管理程序<br />┃ ┣ view_sendlist.php<br />┃ ┣ virtual_card.php 虚拟卡商品管理程序<br />┃ ┣ visit_sold.php 访问购买比例<br />┃ ┣ vote.php 调查管理程序<br />┃ ┣ wholesale.php 管理中心批发管理<br />┃ ┣ help 的目录 后台操作帮助文件<br />┃ ┣ images 的目录<br />┃ ┣ includes 的目录<br />┃ ┃ ┣ cls_exchange.php 后台自动操作数据库的类文件<br />┃ ┃ ┣ cls_google_sitemap.php Google sitemap 类<br />┃ ┃ ┣ cls_phpzip.php ZIP 处理类<br />┃ ┃ ┣ cls_sql_dump.php 数据库导出类<br />┃ ┃ ┣ inc_menu.php 管理中心菜单数组<br />┃ ┃ ┣ init.php 管理中心公用文件<br />┃ ┃ ┣ lib_goods.php 管理中心商品相关函数<br />┃ ┃ ┣ lib_main.php 管理中心公用函数库<br />┃ ┃ ┗ lib_template.php 管理中心模版相关公用函数库<br />┃ ┣ styles 的目录<br />┃ ┣ templates 的目录<br />┃ ┗ js 的目录<br />┃ ┣ colorselector.js<br />┃ ┣ common.js<br />┃ ┣ listtable.js<br />┃ ┣ md5.js<br />┃ ┣ selectzone.js<br />┃ ┣ tab.js<br />┃ ┣ todolist.js<br />┃ ┣ topbar.js<br />┃ ┗ validator.js 表单验证类<br />┣ api 的目录<br />┃ ┣ checkorder.php 检查订单 API<br />┃ ┣ cron.php<br />┃ ┗ init.php API 公用初始化文件<br />┣ cert 的目录<br />┣ data 的目录<br />┃ ┣ ffiliate.html<br />┃ ┣ goods_script.html<br />┃ ┣ order_print.html<br />┃ ┣ afficheimg 的目录<br />┃ ┣ brandlogo 的目录<br />┃ ┣ captcha 的目录 验证码背景图片存放位置<br />┃ ┣ cardimg 的目录<br />┃ ┣ feedbackimg 的目录<br />┃ ┣ images 的目录<br />┃ ┣ packimg 的目录<br />┃ ┗ sqldata 的目录<br />┣ images 的目录<br />┃ ┗ upload 的目录<br />┃ ┣ File 文件上传存放处<br />┃ ┣ Flash flash上传存放处<br />┃ ┣ Image 图片上传存放处<br />┃ ┗ Media 视频上传存放处<br />┣ includes 的目录<br />┃ ┣ cls_captcha.php 验证码图片类<br />┃ ┣ cls_ecshop.php 基础类<br />┃ ┣ cls_error.php 用户级错误处理类<br />┃ ┣ cls_iconv.php 字符集转换类<br />┃ ┣ cls_image.php 后台对上传文件的处理类(实现图片上传，图片缩小， 增加水印)<br />┃ ┣ cls_json.php JSON 类<br />┃ ┣ cls_mysql.php MYSQL 公用类库<br />┃ ┣ cls_rss.php RSS 类<br />┃ ┣ cls_session.php SESSION 公用类库<br />┃ ┣ cls_sms.php 短信模块 之 模型（类库）<br />┃ ┣ cls_smtp.php SMTP 邮件类<br />┃ ┣ cls_sql_executor.php SQL语句执行类。<br />┃ ┣ cls_template.php 模版类<br />┃ ┣ cls_transport.php 服务器之间数据传输器<br />┃ ┣ inc_constant.php 常量<br />┃ ┣ init.php 前台公用文件<br />┃ ┣ lib.debug.php<br />┃ ┣ lib_article.php 文章及文章分类相关函数库<br />┃ ┣ lib_clips.php ECSHOP 用户相关函数库<br />┃ ┣ lib_code.php 加密解密类<br />┃ ┣ lib_common.php 公用函数库<br />┃ ┣ lib_goods.php 商品相关函数库<br />┃ ┣ lib_insert.php 动态内容函数库<br />┃ ┣ lib_main.php 前台公用函数库<br />┃ ┣ lib_order.php 购物流程函数库<br />┃ ┣ lib_passport.php 用户帐号相关函数库<br />┃ ┣ lib_payment.php 支付接口函数库<br />┃ ┣ lib_time.php 时间函数<br />┃ ┣ lib_transaction.php ECSHOP 用户交易相关函数库<br />┃ ┣ codetable 的目录<br />┃ ┃ ┣ big5-gb.table<br />┃ ┃ ┣ big5_utf8.php<br />┃ ┃ ┣ gb-big5.table<br />┃ ┃ ┣ gb_utf8.php<br />┃ ┃ ┗ ipdata.dat<br />┃ ┣ fckeditor 的目录 fckeditor编辑器目录<br />┃ ┗ modules 的目录<br />┃ ┣ convert 的目录<br />┃ ┃ ┣ shopex46.php vshopex4.6转换程序插件<br />┃ ┃ ┗ shopex47.php shopex4.7转换程序插件<br />┃ ┣ cron 的目录<br />┃ ┃ ┣ auto_manage.php 自动上下架管理<br />┃ ┃ ┗ ipdel.php 定期删除<br />┃ ┣ integrates 的目录<br />┃ ┃ ┣ bmforum.php 会员数据处理类<br />┃ ┃ ┣ discuz.php<br />┃ ┃ ┣ discuz55.php<br />┃ ┃ ┣ dvbbs.php<br />┃ ┃ ┣ ecshop.php<br />┃ ┃ ┣ integrate.php<br />┃ ┃ ┣ ipb.php<br />┃ ┃ ┣ molyx.php<br />┃ ┃ ┣ phpbb.php<br />┃ ┃ ┣ phpwind.php<br />┃ ┃ ┣ phpwind5.php<br />┃ ┃ ┗ vbb.php<br />┃ ┣ payment 的目录<br />┃ ┃ ┣ alipay.php 支付宝插件<br />┃ ┃ ┣ balance.php 余额支付插件<br />┃ ┃ ┣ bank.php 银行汇款（转帐）插件<br />┃ ┃ ┣ cappay.php 首信易支付插件<br />┃ ┃ ┣ chinabank.php 网银在线插件<br />┃ ┃ ┣ cncard.php 云网支付插件<br />┃ ┃ ┣ cod.php 货到付款插件<br />┃ ┃ ┣ ctopay.php Ctopay 支付插件<br />┃ ┃ ┣ express.php express支付系统插件<br />┃ ┃ ┣ ips.php ips支付系统插件<br />┃ ┃ ┣ kuaiqian.php 快钱插件<br />┃ ┃ ┣ nps.php NPS支付插件<br />┃ ┃ ┣ pay800.php 800pay 支付宝插件<br />┃ ┃ ┣ paypal.php 贝宝插件<br />┃ ┃ ┣ paypalcn.php 贝宝中国插件<br />┃ ┃ ┣ post.php 邮局汇款插件<br />┃ ┃ ┣ tenpay.php 财付通插件<br />┃ ┃ ┣ udpay.php 网汇通插件<br />┃ ┃ ┣ xpay.php 易付通插件<br />┃ ┃ ┗ yeepay.php YeePay易宝插件<br />┃ ┗ shipping 的目录<br />┃ ┣ cac.php 上门取货插件<br />┃ ┣ city_express.php 城际快递插件<br />┃ ┣ ems.php EMS插件<br />┃ ┣ flat.php 邮政包裹插件<br />┃ ┣ fpd.php 到付运费插件<br />┃ ┣ post_express.php 邮政包裹插件<br />┃ ┣ post_mail.php 邮局平邮插件<br />┃ ┣ presswork.php 挂号印刷品插件<br />┃ ┣ sf_express.php 顺丰速运 配送方式插件<br />┃ ┣ sto_express.php 申通快递 配送方式插件<br />┃ ┣ yto.php 圆通速递插件<br />┃ ┗ zto.php 中通速递插件<br />┣ install 的目录 安装文件目录<br />┣ js 的目录<br />┃ ┣ auto_complete.js<br />┃ ┣ calendar.php<br />┃ ┣ common.js<br />┃ ┣ compare.js<br />┃ ┣ global.js<br />┃ ┣ lefttime.js<br />┃ ┣ myship.js<br />┃ ┣ region.js<br />┃ ┣ shopping_flow.js<br />┃ ┣ transport.js<br />┃ ┣ user.js<br />┃ ┣ utils.js<br />┃ ┗ calendar 的目录<br />┣ languages 的目录 语言风格文件<br />┃ ┣ zh_cn 的目录<br />┃ ┃ ┣<br />┃ ┃ ┣ admin 的目录<br />┃ ┃ ┣ convert 的目录<br />┃ ┃ ┣ cron 的目录<br />┃ ┃ ┣ payment 的目录<br />┃ ┃ ┗ shipping 的目录<br />┃ ┗ zh_tw 的目录<br />┃ ┣ admin 的目录<br />┃ ┣ convert 的目录<br />┃ ┣ cron 的目录<br />┃ ┣ payment 的目录<br />┃ ┗ shipping 的目录<br />┣ plugins 的目录<br />┣ templates 的目录<br />┃ ┣ backup 的目录<br />┃ ┃ ┗ ibrary 的目录<br />┃ ┣ caches 的目录<br />┃ ┗ compiled 的目录<br />┃ ┗ admin 的目录<br />┣ themes 的目录<br />┃ ┣ default 的目录<br />┃ ┃ ┣ images 的目录<br />┃ ┃ ┗ library 的目录<br />┃ ┗ sport 的目录<br />┣ wap 的目录<br />┃ ┣ article.php<br />┃ ┣ brands.php<br />┃ ┣ buy.php<br />┃ ┣ category.php<br />┃ ┣ comment.php<br />┃ ┣ goods.php<br />┃ ┣ goods_list.php<br />┃ ┣ index.php<br />┃ ┣ user.php<br />┃ ┣ includes 的目录<br />┃ ┃ ┣ init.php<br />┃ ┃ ┣ lib_main.php<br />┃ ┗ templates 的目录<br />┃ ┣ article.wml<br />┃ ┣ article_list.wml<br />┃ ┣ brands.wml<br />┃ ┣ buy.wml<br />┃ ┣ category.wml<br />┃ ┣ comment.wml<br />┃ ┣ goods.wml<br />┃ ┣ goods_img.wml<br />┃ ┣ goods_list.wml<br />┃ ┣ index.wml<br />┃ ┣ login.wml<br />┃ ┣ order_list.wml<br />┃ ┗ user.wml<br />┗ widget 的目录<br />┣ blog_sohu.php<br />┣ blog_sohu.xhtml<br />┗ images 的目录</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/230.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>无聊帖广告:昂山素季</title>
		<link>http://www.thinksoa.cn/news/228.html</link>
		<comments>http://www.thinksoa.cn/news/228.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:18:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[健康生活]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/228.html</guid>
		<description><![CDATA[　　昂山素姬（AungSanSuuKyi）：1945年出生，缅甸政治家，1991年诺贝尔和平奖得主。 　　昂山素姬是领导缅甸独立的民族英雄昂山将军的女儿。在她两岁的时候，父亲遇刺身亡，她在母亲的抚养下成为牛津大学的哲学、政治学、经济学学士，毕业后留校任职，并任职于联合国、不丹外交部等处，在缅甸以外的国家生活了28年。 　　在1991年，她获授予“萨哈罗夫思想自由奖”（SakharovPrizeforFreedomofThought），随后更多的奖章接踵而至，把她推上全球偶像的高度。 　　1960年15岁的她，随担任大使的母亲到了印度。在当地一所女子学院学习期间，“圣雄”甘地的政治和哲学“渗入她慢慢发展的心灵”。在佛教的薰陶下，她能保持心理平静，甚至是最严重的挫折也不能干扰她。 　　1972年，昂山素姬与研究西藏文化的英国学者、牛津大学教授迈克·阿里斯（MichaelAris）结婚。奈温政权的喉舌批评她背叛了佛教。在婚后的头15年生活中，她在牛津照顾家庭，生养孩子，静静地过日子，避免跟流亡的缅甸异见人士接触。她甚至回避对奈温的谴责，不展示任何直接卷入缅甸政治的迹象。直到1988年3月，当她匆匆告别丈夫与两个儿子，回到仰光照顾因中风病危的母亲时，正值缅甸人民发起反抗军政权的游行示威，遭到军队和警察的残酷镇压，共有两百多名无辜民众死难，举国弥漫着恐怖气氛。很多受害者、激进分子和退役高级军官，要求她出来领导民主运动。 　　1988年8月26日，仰光近百万群众在瑞德贡大金塔西门外广场集会，昂山素姬第一次面对这么多的民众发表演说。在她首次公开发表重要演讲的前夕，政府散播有关要刺杀她的谣言，但她对任何威胁都是温文不惊。“我不能对祖国所发生的一切熟视无睹。”在集会上，她一身雪白的长裙，宛如一只从仙境飞来的白天鹅。她那慷慨激昂的神态、铿锵有力的声调、掷地有声的言词，令所有在场的民众印象深刻，并让他们想起了她的父亲昂山，“父女两人如同一个模子塑造出来的”。缅甸人民发现，他们盼望已久的领袖诞生了。从那一刻起，昂山素姬不再是一名旁观者。其实，她并不喜欢政治，她更想当作家，“但是，我参加了，就不能半途而废。”从此，昂山素姬，这个外表柔弱、身材单薄的女子，成了军政府最头疼的人物。她没有权力、没有金钱、没有官衔，却拥有了缅甸人民的心。 　　昂山素姬深知，绝对不能采取以暴易暴的方法来解决国内的危机，这种方法表面上看最有效果，实际上却让自己堕落为与军政权同样的地步。在《自由》一书中，昂山素姬指出：“一些人改变是因为他们别无选择。当南非的旧政府、拉丁美洲的军事专政进行独裁统治发生变化的时候，他们认识到这些变化不可避免，这是他们所能选择的最好道路。我所表达的真正改变是通过理解、同情、正义、爱心后的内在变化。” 　　1988年9月27日，昂山素姬组建了自己的、也是缅甸人民的政党——缅甸全国民主联盟，并出任总书记。民盟很快发展壮大，成为全缅最大的反对党。1989年7月20日，军政府以煽动骚乱为罪名对昂山素姬实行软禁,她拒绝了将她驱逐出境而获自由的条件。。 　　1990年5月，缅甸举行大选，昂山素季的政党“全国民主联盟”赢得了绝对优势，赢得了议会四百九十五个议席中的三百九十二席。在正常情况下，她应该成为国家总理，但是，军政府对大选的结果不予承认，宣布民盟为非法组织，继续监禁昂山素姬。军方组建了“恢复国家法律和秩序委员会”来掌握政权，后来又将其改名为“国家和平与发展委员会”。 　　1991年，昂山素姬获得了诺贝尔和平奖。她无法亲自前往挪威领奖，只好让儿子代替自己发表了答词。这份答词中引述了昂山素姬的名言：“在缅甸追求民主，是一国民作为世界大家庭中自由与平等的成员，过一种充实全面、富有意义的生活的斗争。它是永不停止的人类努力的一部分，以此证明人的精神能够超越他自然属性的瑕疵。”她将诺贝尔和平奖的130万美元奖金交付信托，用于缅甸人民的健康与教育。对于昂山素姬无法亲自前来受奖，诺贝尔委员会主席弗兰西斯?塞耶斯泰德回顾了历史上与之相同命运的其他三位获奖者：德国的卡尔·冯·奥西埃茨基、苏联的萨哈罗夫和波兰的瓦文萨。卡尔·冯·奥西埃茨基是反抗纳粹暴政的英雄，他的获奖被视为诺贝尔和平奖在人权方面最早的授奖。然而，这个巨大的荣誉并没有改变其悲惨的遭遇：他死在了希特勒的集中营中。但是，萨哈罗夫和瓦文萨看到了他们斗争的胜利，看到了他们的祖国终于获得了自由和民主。因此，弗兰西斯?塞耶斯泰德发出了他美好的祝愿：“我们希望昂山素姬也看到她的斗争戴上胜利的花冠。” 　　1994年10月21日，联合国下属有关机构在菲律宾召开“文化与经济发展关系”国际研讨会，被缅甸军政府软禁的昂山素季寄去一篇论文，由菲律宾前总统科·阿基诺夫人在会上代为宣读，文章尖锐地驳斥关于发展中国家“应该经济先走，民主缓行”的观点；指责许多当权者不分青红皂白，将民主运动与要求落实人权问题一概说成是受西方意识形态影响而加以否定；呼吁联合国重视和支持发展中国家特别是贫穷落后国家的民主运动和人权问题。这篇演讲也在整个亚太地区造成了很大的轰动效应。 　　1995年7月间她被释放，然而她很清楚，一旦离开缅甸赴英国探视家人，她很有可能永远不能再次回到缅甸。结果她选择留下，从此再也没有机会与她的丈夫见面。她的丈夫于1999年去世。 　　对比她坎坷的政治经历，更让人感到扼腕叹息的是她和那位英国丈夫之间凄美的爱情。 　　早于1970年代，两人在牛津订下婚姻盟誓前，研究西藏文化的英国学者迈克·阿里斯已经知道，有一天命运会叫他们在家与国之间作出抉择。他清楚知道，眼前这个容颜清丽的妻子绝非一般缅甸女子，她体内流着的是缅甸独立运动领袖昂山的血，生来就跟国家人民扣连一起。她内心明白，当人民需要她，她必会毫不犹豫付出自己。 　　婚后十多年，她随他在牛津静静过日子，照顾家庭，让他专心学术研究，那是他们婚姻中最美好祥和的时光。直至1988年3月，昂山素姬获悉母亲中风病危，便匆匆告别丈夫与两个儿子，赶返缅甸侍母，想不到此一去，却是夫妻天涯断肠之始。 　　此后，阿里斯多次要求到缅甸探妻，均遭到军政府拒绝。几经争取，几年间两人只短暂会面五次。 　　夫妻最后的相聚是在1995年底，可是此后他便不再获准进入缅甸。1999年3月，阿里斯因癌症在牛津逝世，在军政府多番阻挠下，昂山素姬最终也无法赴英奔丧。 　　“我永远不会站在你和你的祖国之间。”当年阿里斯这句爱的承诺，最后通过死亡来体现。他的爱，是别在昂山素姬发上的那朵白花，素净而坚贞。而今，则化作她孤独长路上的一盏温柔的灯，静静为她照亮前路。 　　昂山素姬得知丈夫去世的消息，悲痛欲绝。军政权催促她去英国，与两个儿子团聚。但是，昂山素姬知道，自己一旦离开祖国，就再也不能回来了。她在日记中写道：“我的家庭的分离，是我争取一个自由的缅甸所必须付出的代价之一。” 　　自1989年7月第一次被软禁以来，在过去的20年里，昂山素姬有14年的岁月是在监狱或居家软禁中度过的。2007年5月27日，原本是她软禁令届满的日子，按道理她应该能够自由地走出家门，与民众接触，但是缅甸军政府提前2天到她的住所，通知她软禁期将继续延长。 　　2005年6月19日：全球14个国家爆发反缅甸示威，要求释放昂山素季因为这一天是她60岁的生日。DamienRice的这首UnplayedPiano也创作于此。据说被软禁期间，昂山素季没有消沉。她的生活十分规律，阅读诗歌、散文，学习法语和日语。她爱听摇滚乐，美国摇滚乐队“感激的死者”是她最喜欢的一支摇滚乐队。她还经常在夜里独自弹奏钢琴曲，但是她的钢琴坏掉之后想修复却受到了层层的阻挠。这也是damien这首歌歌名《unplayedpiano》的来源。]]></description>
			<content:encoded><![CDATA[<p>　　昂山素姬（AungSanSuuKyi）：1945年出生，缅甸政治家，1991年诺贝尔和平奖得主。  </p>
<p>　　昂山素姬是领导缅甸独立的民族英雄昂山将军的女儿。在她两岁的时候，父亲遇刺身亡，她在母亲的抚养下成为牛津大学的哲学、政治学、经济学学士，毕业后留校任职，并任职于联合国、不丹外交部等处，在缅甸以外的国家生活了28年。  </p>
<p>　　在1991年，她获授予“萨哈罗夫思想自由奖”（SakharovPrizeforFreedomofThought），随后更多的奖章接踵而至，把她推上全球偶像的高度。  </p>
<p>　　1960年15岁的她，随担任大使的母亲到了印度。在当地一所女子学院学习期间，“圣雄”甘地的政治和哲学“渗入她慢慢发展的心灵”。在佛教的薰陶下，她能保持心理平静，甚至是最严重的挫折也不能干扰她。  </p>
<p>　　1972年，昂山素姬与研究西藏文化的英国学者、牛津大学教授迈克·阿里斯（MichaelAris）结婚。奈温政权的喉舌批评她背叛了佛教。在婚后的头15年生活中，她在牛津照顾家庭，生养孩子，静静地过日子，避免跟流亡的缅甸异见人士接触。她甚至回避对奈温的谴责，不展示任何直接卷入缅甸政治的迹象。直到1988年3月，当她匆匆告别丈夫与两个儿子，回到仰光照顾因中风病危的母亲时，正值缅甸人民发起反抗军政权的游行示威，遭到军队和警察的残酷镇压，共有两百多名无辜民众死难，举国弥漫着恐怖气氛。很多受害者、激进分子和退役高级军官，要求她出来领导民主运动。 </p>
<p><span id="more-228"></span>
</p>
<p>　　1988年8月26日，仰光近百万群众在瑞德贡大金塔西门外广场集会，昂山素姬第一次面对这么多的民众发表演说。在她首次公开发表重要演讲的前夕，政府散播有关要刺杀她的谣言，但她对任何威胁都是温文不惊。“我不能对祖国所发生的一切熟视无睹。”在集会上，她一身雪白的长裙，宛如一只从仙境飞来的白天鹅。她那慷慨激昂的神态、铿锵有力的声调、掷地有声的言词，令所有在场的民众印象深刻，并让他们想起了她的父亲昂山，“父女两人如同一个模子塑造出来的”。缅甸人民发现，他们盼望已久的领袖诞生了。从那一刻起，昂山素姬不再是一名旁观者。其实，她并不喜欢政治，她更想当作家，“但是，我参加了，就不能半途而废。”从此，昂山素姬，这个外表柔弱、身材单薄的女子，成了军政府最头疼的人物。她没有权力、没有金钱、没有官衔，却拥有了缅甸人民的心。  </p>
<p>　　昂山素姬深知，绝对不能采取以暴易暴的方法来解决国内的危机，这种方法表面上看最有效果，实际上却让自己堕落为与军政权同样的地步。在《自由》一书中，昂山素姬指出：“一些人改变是因为他们别无选择。当南非的旧政府、拉丁美洲的军事专政进行独裁统治发生变化的时候，他们认识到这些变化不可避免，这是他们所能选择的最好道路。我所表达的真正改变是通过理解、同情、正义、爱心后的内在变化。”  </p>
<p>　　1988年9月27日，昂山素姬组建了自己的、也是缅甸人民的政党——缅甸全国民主联盟，并出任总书记。民盟很快发展壮大，成为全缅最大的反对党。1989年7月20日，军政府以煽动骚乱为罪名对昂山素姬实行软禁,她拒绝了将她驱逐出境而获自由的条件。。  </p>
<p>　　1990年5月，缅甸举行大选，昂山素季的政党“全国民主联盟”赢得了绝对优势，赢得了议会四百九十五个议席中的三百九十二席。在正常情况下，她应该成为国家总理，但是，军政府对大选的结果不予承认，宣布民盟为非法组织，继续监禁昂山素姬。军方组建了“恢复国家法律和秩序委员会”来掌握政权，后来又将其改名为“国家和平与发展委员会”。  </p>
<p>　　1991年，昂山素姬获得了诺贝尔和平奖。她无法亲自前往挪威领奖，只好让儿子代替自己发表了答词。这份答词中引述了昂山素姬的名言：“在缅甸追求民主，是一国民作为世界大家庭中自由与平等的成员，过一种充实全面、富有意义的生活的斗争。它是永不停止的人类努力的一部分，以此证明人的精神能够超越他自然属性的瑕疵。”她将诺贝尔和平奖的130万美元奖金交付信托，用于缅甸人民的健康与教育。对于昂山素姬无法亲自前来受奖，诺贝尔委员会主席弗兰西斯?塞耶斯泰德回顾了历史上与之相同命运的其他三位获奖者：德国的<a href="http://baike.baidu.com/view/4887754.htm">卡尔·冯·奥西埃茨基</a>、苏联的<a href="http://baike.baidu.com/view/423029.htm">萨哈罗夫</a>和波兰的<a href="http://baike.baidu.com/view/395948.htm">瓦文萨</a>。卡尔·冯·奥西埃茨基是反抗纳粹暴政的英雄，他的获奖被视为诺贝尔和平奖在人权方面最早的授奖。然而，这个巨大的荣誉并没有改变其悲惨的遭遇：他死在了希特勒的集中营中。但是，萨哈罗夫和瓦文萨看到了他们斗争的胜利，看到了他们的祖国终于获得了自由和民主。因此，弗兰西斯?塞耶斯泰德发出了他美好的祝愿：“我们希望昂山素姬也看到她的斗争戴上胜利的花冠。”  </p>
<p>　　1994年10月21日，联合国下属有关机构在菲律宾召开“文化与经济发展关系”国际研讨会，被缅甸军政府软禁的昂山素季寄去一篇论文，由菲律宾前总统科·阿基诺夫人在会上代为宣读，文章尖锐地驳斥关于发展中国家“应该经济先走，民主缓行”的观点；指责许多当权者不分青红皂白，将民主运动与要求落实人权问题一概说成是受西方意识形态影响而加以否定；呼吁联合国重视和支持发展中国家特别是贫穷落后国家的民主运动和人权问题。这篇演讲也在整个亚太地区造成了很大的轰动效应。  </p>
<p>　　1995年7月间她被释放，然而她很清楚，一旦离开缅甸赴英国探视家人，她很有可能永远不能再次回到缅甸。结果她选择留下，从此再也没有机会与她的丈夫见面。她的丈夫于1999年去世。  </p>
<p>　　对比她坎坷的政治经历，更让人感到扼腕叹息的是她和那位英国丈夫之间凄美的爱情。  </p>
<p>　　早于1970年代，两人在牛津订下婚姻盟誓前，研究西藏文化的英国学者迈克·阿里斯已经知道，有一天命运会叫他们在家与国之间作出抉择。他清楚知道，眼前这个容颜清丽的妻子绝非一般缅甸女子，她体内流着的是缅甸独立运动领袖昂山的血，生来就跟国家人民扣连一起。她内心明白，当人民需要她，她必会毫不犹豫付出自己。  </p>
<p>　　婚后十多年，她随他在牛津静静过日子，照顾家庭，让他专心学术研究，那是他们婚姻中最美好祥和的时光。直至1988年3月，昂山素姬获悉母亲中风病危，便匆匆告别丈夫与两个儿子，赶返缅甸侍母，想不到此一去，却是夫妻天涯断肠之始。  </p>
<p>　　此后，阿里斯多次要求到缅甸探妻，均遭到军政府拒绝。几经争取，几年间两人只短暂会面五次。  </p>
<p>　　夫妻最后的相聚是在1995年底，可是此后他便不再获准进入缅甸。1999年3月，阿里斯因癌症在牛津逝世，在军政府多番阻挠下，昂山素姬最终也无法赴英奔丧。  </p>
<p>　　“我永远不会站在你和你的祖国之间。”当年阿里斯这句爱的承诺，最后通过死亡来体现。他的爱，是别在昂山素姬发上的那朵白花，素净而坚贞。而今，则化作她孤独长路上的一盏温柔的灯，静静为她照亮前路。  </p>
<p>　　昂山素姬得知丈夫去世的消息，悲痛欲绝。军政权催促她去英国，与两个儿子团聚。但是，昂山素姬知道，自己一旦离开祖国，就再也不能回来了。她在日记中写道：“我的家庭的分离，是我争取一个自由的缅甸所必须付出的代价之一。”  </p>
<p>　　自1989年7月第一次被软禁以来，在过去的20年里，昂山素姬有14年的岁月是在监狱或居家软禁中度过的。2007年5月27日，原本是她软禁令届满的日子，按道理她应该能够自由地走出家门，与民众接触，但是缅甸军政府提前2天到她的住所，通知她软禁期将继续延长。  </p>
<p>　　2005年6月19日：全球14个国家爆发反缅甸示威，要求释放昂山素季因为这一天是她60岁的生日。DamienRice的这首UnplayedPiano也创作于此。据说被软禁期间，昂山素季没有消沉。她的生活十分规律，阅读诗歌、散文，学习法语和日语。她爱听摇滚乐，美国摇滚乐队“感激的死者”是她最喜欢的一支摇滚乐队。她还经常在夜里独自弹奏钢琴曲，但是她的钢琴坏掉之后想修复却受到了层层的阻挠。这也是damien这首歌歌名《unplayedpiano》的来源。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/228.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress 编程接口记录</title>
		<link>http://www.thinksoa.cn/news/225.html</link>
		<comments>http://www.thinksoa.cn/news/225.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 02:54:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Blogger]]></category>
		<category><![CDATA[metaWeblog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/225.html</guid>
		<description><![CDATA[找了很久才找到,记录下来,以备不时之需! Blogger API 部分,这里的wordpress的blogid 用1就好了,如果实在不相信,可以先看下http://youname/xmlrpc.php&#160; 返回里面就有. blogger.newPost说明： 建立一则新文章，并选择性地将其出版。 参数： 字符串 appkey, 字符串 blogid, 字符串 username, 字符串 password, 字符串 content, 布尔值 publish 传回值： 成功时为新发表文章的字符串 postid ；失败时为 fault blogger.editPost说明： 更新既有文章的信息。 参数： 字符串 appkey, 字符串 postid, 字符串 username, 字符串 password, 字符串 content, 布尔值 publish 传回值： 成功时为布尔值 true ；失败时为 fault blogger.deletePost说明： 删除一篇文章。 参数： 字符串 appkey, 字符串 postid, 字符串 username, [...]]]></description>
			<content:encoded><![CDATA[<p>找了很久才找到,记录下来,以备不时之需!</p>
<p>Blogger API 部分,这里的wordpress的blogid 用1就好了,如果实在不相信,可以先看下<a href="http://youname/xmlrpc.php">http://youname/xmlrpc.php</a>&nbsp; 返回里面就有.</p>
<p>blogger.newPost<br />说明： 建立一则新文章，并选择性地将其出版。 参数： 字符串 appkey, 字符串 blogid, 字符串 username, 字符串 password, 字符串 content, 布尔值 publish <br />传回值： 成功时为新发表文章的字符串 postid ；失败时为 fault </p>
<p>blogger.editPost<br />说明： 更新既有文章的信息。 参数： 字符串 appkey, 字符串 postid, 字符串 username, 字符串 password, 字符串 content, 布尔值 publish <br />传回值： 成功时为布尔值 true ；失败时为 fault </p>
<p><span id="more-225"></span>
</p>
<p>blogger.deletePost<br />说明： 删除一篇文章。 参数： 字符串 appkey, 字符串 postid, 字符串 username, 字符串 password, 布尔值 publish <br />传回值： 成功时为布尔值 true ；失败时为 fault  </p>
<p>blogger.getRecentPosts<br />说明： 传回系统中最近发表的文章清单。 参数： 字符串 appkey, 字符串 blogid, 字符串 username, 字符串 password, 整数 numberOfPosts <br />传回值： 成功时为包含有 ISO.8601 dateCreated, 字符串 userid, 字符串 postid, 字符串 content 结构的数组；失败时为 fault <br />请注意： dateCreated 会以Blog blogid 的时区来表示  </p>
<p>blogger.getUsersBlogs<br />说明： 传回某个作者所拥有发表文章权限的Blog清单。 参数： 字符串 appkey, 字符串 username, 字符串 password <br />传回值： 成功时为包含有字符串 url, 字符串 blogid, 字符串 blogName 结构的数组；失败时为 fault  </p>
<p>blogger.getUserInfo<br />说明： 传回系统上某个作者的信息。 参数： 字符串 appkey, 字符串 username, 字符串 password <br />传回值： 成功时为包含有字符串 userid, 字符串 firstname, 字符串 lastname, 字符串 nickname, 字符串 email, 字符串 url 的结构；失败时为 fault <br />请注意： firstname 是 Movable Type 的使用者名称中，第一个空白字符之前的部分；而 lastname 则是那个使用者名称中，第一个空白字符之后的部分。  </p>
<p>&nbsp; </p>
<p>metaWeblog API部分,这些很多都不懂!慢慢学习慢慢研究!  </p>
<p>metaWeblog.newPost<br />说明： 建立一则新文章，并选择性地将其出版。 参数： 字符串 blogid, 字符串 username, 字符串 password, 结构 content, 布尔值 publish <br />传回值： 成功的时候为新文章的字符串 postid ；失败的时候为 fault <br />请注意： 结构 content 可以包含下列的标准键：文章项目的标题 title 、文章项目的本体 description 以及文章项目的写作日期 dateCreated 。除此之外，在 Movable Type 所植入的版本中，还能让你传递五个其它键的值：整数 mt_allow_comments 是 allow_comments 字段的值；整数 mt_allow_pings 是 allow_pings 字段的值；字符串 mt_convert_breaks 是 convert_breaks 字段的值；字符串 mt_text_more 是文章项目额外文字的值；字符串 mt_excerpt 是文摘字段的值；字符串 mt_keywords 是关键词字段的值；而数组 mt_tb_ping_urls 则是该文章项目引用通告网址的清单。如果加以指定的话， dateCreated 应该要是 ISO.8601 格式。  </p>
<p>metaWeblog.editPost<br />说明： 更新既有文章的信息。 参数： 字符串 postid, 字符串 username, 字符串 password, 结构 content, 布尔值 publish <br />传回值： 成功的时候为布尔值 true 失败时为 fault <br />请注意： 结构 content 可以包含下列的标准键：文章项目的标题 title 、文章项目的本体 description 以及文章项目的写作日期 dateCreated 。除此之外，在 Movable Type 所植入的版本中，还能让你传递五个其它键的值：整数 mt_allow_comments 是 allow_comments 字段的值；整数 mt_allow_pings 是 allow_pings 字段的值；字符串 mt_convert_breaks 是 convert_breaks 字段的值；字符串 mt_text_more 是文章项目额外文字的值；字符串 mt_excerpt 是文摘字段的值；字符串 mt_keywords 是关键词字段的值；而数组 mt_tb_ping_urls 则是该文章项目的引用通告网址清单。如果加以指定的话， dateCreated 应该要是 ISO.8601 格式。  </p>
<p>metaWeblog.getPost<br />说明： 传回特定文章的信息。 参数： 字符串 postid, 字符串 username, 字符串 password <br />传回值： 成功的时候为包含字符串 userid, ISO.8601 dateCreated, 字符串 postid, 字符串 description, 字符串 title, 字符串 link, 字符串 permaLink, 字符串 mt_excerpt, 字符串 mt_text_more, 整数 mt_allow_comments, 整数 mt_allow_pings, 字符串 mt_convert_breaks, 字符串 mt_keywords 的结构；失败时为 fault <br />请注意： link 和 permaLink 都是指到已汇编文章的网址；前置有 mt_ 的字段实际上是 Movable Type 的 metaWeblog.getPost API 扩展部分。  </p>
<p>metaWeblog.getRecentPosts<br />说明： 传回系统中最近发表的文章清单。 参数： 字符串 blogid, 字符串 username, 字符串 password, 整数 numberOfPosts <br />传回值： 成功的时候为包含 ISO.8601 dateCreated, 字符串 userid, 字符串 postid, 字符串 description, 字符串 title, 字符串 link, 字符串 permaLink, 字符串 mt_excerpt, 字符串 mt_text_more, 整数 mt_allow_comments, 整数 mt_allow_pings, 字符串 mt_convert_breaks, 字符串 mt_keywords 结构的数组；失败时为 fault <br />请注意： dateCreated 会以Blog blogid 的时区来表示； link 和 permaLink 都是指到已汇编文章的网址  </p>
<p>metaWeblog.newMediaObject<br />说明： 上传某个档案到你的网页服务器。 参数： 字符串 blogid, 字符串 username, 字符串 password, 结构 file <br />传回值： 要上传档案用的网址。 <br />请注意： 结构 file 应该要包含两个键： base64 bits （以 base64 编码过的档案内容）和字符串 name （文件名）。 type 键（档案的媒体类别）目前会被忽略掉。  </p>
<p>mt.getRecentPostTitles<br />说明： 传回一份低频宽即可便利取得的系统最近文章清单。 参数： 字符串 blogid, 字符串 username, 字符串 password, 整数 numberOfPosts <br />传回值： 成功的时候为包含 ISO.8601 dateCreated, 字符串 userid, 字符串 postid, 字符串 title 结构的数组；失败时为 fault <br />请注意： dateCreated 会以Blog的时区 blogid 来表示  </p>
<p>mt.getCategoryList<br />说明： 传回所有Blog中所定义的类别清单。 参数： 字符串 blogid, 字符串 username, 字符串 password <br />传回值： 成功的时候为包含字符串 categoryId 和字符串 categoryName 结构的数组；失败时为 fault  </p>
<p>mt.getPostCategories<br />说明： 传回某文章所指定的所有类别清单。 参数： 字符串 postid, 字符串 username, 字符串 password <br />传回值： 成功的时候为包含字符串 categoryName, 字符串 categoryId, and 布尔值 isPrimary 结构的数组；失败时为 fault <br />请注意： isPrimary 代表某个类别是否为该文章的主要类别。  </p>
<p>mt.setPostCategories<br />说明： 为某篇文章设定类别。 参数： 字符串 postid, 字符串 username, 字符串 password, 数组 categories <br />传回值： 成功的时候为布尔值 true ；失败时为 fault <br />请注意： 数组 categories 是包含字符串 categoryId 和 布尔值 isPrimary 结构的数组。你不一定要用 isPrimary 来设定主要类别 &#8212; 没有这个旗标时，数组里的第一个结构会被指定成这篇文章的主要类别。  </p>
<p>mt.supportedMethods<br />说明： 取得服务器所支持的 XML-RPC 方法信息。 参数： 无 <br />传回值： 服务器所支持的方法数组  </p>
<p>mt.getTrackbackPings<br />说明： 取回送到特定文章项目上的引用通告清单。这个方法可以用来以程序化的方式取回特定文章项目的引用通告清单，而无须对同一个文章项目反复查询通告，直到建立起特定文章主题对其他文章参考的关系网为止。 参数： 字符串 postid <br />传回值： 成功的时候为包含字符串 pingTitle （送出通告的文章项目标题）, 字符串 pingURL （文章项目的网址）和字符串 pingIP （送出通告的主机 IP 地址）结构的数组。  </p>
<p>mt.publishPost<br />说明： 出版（重建）所有跟你的Blog上特定的文章项目相关的静态档案。相当于把文章项目储存到系统内（但是不送出任何通告）。 参数： 字符串 postid, 字符串 username, 字符串 password <br />传回值： 成功的时候为布尔值 true ；失败时为 fault<br />请注意： appkey 的值在所有的 Blogger XML-RPC 方法中都会被 Movable Type 所忽略。</p>
<p>个人测得，ｍｔ的接口要强很多，更加符合wordpress等的程序,blogger很简单,用在wordpress不是很合适</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/225.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>nginx wordpress rewrite 最新配置方法</title>
		<link>http://www.thinksoa.cn/news/222.html</link>
		<comments>http://www.thinksoa.cn/news/222.html#comments</comments>
		<pubDate>Thu, 30 Jun 2011 08:10:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[nginx wordpress rewrite]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/?p=222</guid>
		<description><![CDATA[最近很郁闷,因为虚拟主机上运行的都是我自己写的程序,忘记了wordpress的路径是不一样的,既然给配置成了我自己写的路径的方式了,今天加个统计代码,才看到出错了,郁闷死了. 现在说下,wordpress配置的一些问题,为了安全,我关闭了nginx php-cgi的自动路径寻找选项,根据80后的方法配置了,回来发现在网上找的wordpress的rewrite规则都不可以用,没办法,只能自己写个了.现在放出来,当做是给博客增加个博文吧!汗,其实自己很少写博文的!!!!!!!!! rewrite ^/(?!xmlrpc\.php&#124;wp.+)(.+) /index.php?/$1 last; 记得重新加载下配置 (命令):nginx -s reload]]></description>
			<content:encoded><![CDATA[<p>最近很郁闷,因为虚拟主机上运行的都是我自己写的程序,忘记了wordpress的路径是不一样的,既然给配置成了我自己写的路径的方式了,今天加个统计代码,才看到出错了,郁闷死了.</p>
<p>现在说下,wordpress配置的一些问题,为了安全,我关闭了nginx php-cgi的自动路径寻找选项,根据80后的方法配置了,回来发现在网上找的wordpress的rewrite规则都不可以用,没办法,只能自己写个了.现在放出来,当做是给博客增加个博文吧!汗,其实自己很少写博文的!!!!!!!!!</p>
<p><code><br />
rewrite ^/(?!xmlrpc\.php|wp.+)(.+) /index.php?/$1 last;<br />
</code></p>
<p>记得重新加载下配置 (命令):nginx -s reload</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/222.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>收集下各大搜索引擎蜘蛛的名字,应该有用!</title>
		<link>http://www.thinksoa.cn/news/219.html</link>
		<comments>http://www.thinksoa.cn/news/219.html#comments</comments>
		<pubDate>Tue, 10 May 2011 03:04:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[搜狗]]></category>
		<category><![CDATA[搜索引擎]]></category>
		<category><![CDATA[网络蜘蛛]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/219.html</guid>
		<description><![CDATA[一：百度蜘蛛baidu的蜘蛛的名字：baiduspider&#160; 访问互联网上的html网页，建立索引数据库，使用户能在百度搜索引擎中搜索到您网站的网页。更多请了解-百度百科-百度蜘蛛 二：Google的机器人，爬虫Google的蜘蛛的名字：GooglebotGooglebot 是Google 的web 抓取漫游器。它从web上收集文档，为Google搜索引擎建立可搜索的索引。 三：腾讯Soso的蜘蛛的名字：SosospiderSOso已经采用独立的引擎技术，未来在中过搜索引擎行业的竞争力是蛮巨大的，很看好SoSo &#160; 四：Yahoo的蜘蛛的名字：Yahoo SlurpYahoo做了一个很可惜的决定，希望雅虎能坚持做下去。 五：搜狗的蜘蛛名称：sogou spider （Sogou+web+spider 网页蜘蛛） 六：有道的蜘蛛名称：YodaoBot 七：Live综合索引蜘蛛：MSNBot对于每个搜素引擎蜘蛛上述的并不完全是蜘蛛，比如以下的列表更详尽的Google机器人 GooglebotGoogle对一般网页的索引蜘蛛Googlebot-MobileGoogle对于移动设备，如手机网页的索引蜘蛛Googlebot-ImageGoogle专门用来抓取图片的蜘蛛Mediapartners-Google这是Google专门为放置了Google Adsense广告联盟代码的网站使用的专用蜘蛛，只有网站放置了Google Adsense代码的情况下，Google才会使用这个蜘蛛。这个蜘蛛的作用是专门抓取Adsense广告内容Adsbot-Google这是Google专门为Google Adwords客户设计的蜘蛛，如果你使用了Google的Adwords服务，那么这个蜘蛛就会派出这个蜘蛛来衡量放置了你广告的网站的质量。通过对于各搜索引擎蜘蛛的了解，无论对于蜘蛛爬行自己站点的情况进行了解而且就对屏蔽蜘蛛爬行也是十分的必要的，对于每种蜘蛛都有很多内容。]]></description>
			<content:encoded><![CDATA[<p>一：百度蜘蛛<br />baidu的蜘蛛的名字：baiduspider&nbsp; <br />访问互联网上的html网页，建立索引数据库，使用户能在百度搜索引擎中搜索到您网站的网页。<br />更多请了解-百度百科-百度蜘蛛  </p>
<p>二：Google的机器人，爬虫<br />Google的蜘蛛的名字：Googlebot<br />Googlebot 是Google 的web 抓取漫游器。它从web上收集文档，为Google搜索引擎建立可搜索的索引。  </p>
<p>三：腾讯Soso的蜘蛛的名字：Sosospider<br />SOso已经采用独立的引擎技术，未来在中过搜索引擎行业的竞争力是蛮巨大的，很看好SoSo</p>
<p><span id="more-219"></span>
<p>&nbsp; </p>
<p>四：Yahoo的蜘蛛的名字：Yahoo Slurp<br />Yahoo做了一个很可惜的决定，希望雅虎能坚持做下去。  </p>
<p>五：搜狗的蜘蛛名称：sogou spider （Sogou+web+spider 网页蜘蛛）  </p>
<p>六：有道的蜘蛛名称：YodaoBot  </p>
<p>七：Live综合索引蜘蛛：MSNBot<br />对于每个搜素引擎蜘蛛上述的并不完全是蜘蛛，比如以下的列表更详尽的Google机器人  </p>
<p>GooglebotGoogle对一般网页的索引蜘蛛<br />Googlebot-MobileGoogle对于移动设备，如手机网页的索引蜘蛛<br />Googlebot-ImageGoogle专门用来抓取图片的蜘蛛<br />Mediapartners-Google这是Google专门为放置了Google Adsense广告联盟代码的网站使用的专用蜘蛛，只有网站放置了Google Adsense代码的情况下，Google才会使用这个蜘蛛。这个蜘蛛的作用是专门抓取Adsense广告内容<br />Adsbot-Google这是Google专门为Google Adwords客户设计的蜘蛛，如果你使用了Google的Adwords服务，那么这个蜘蛛就会派出这个蜘蛛来衡量放置了你广告的网站的质量。<br />通过对于各搜索引擎蜘蛛的了解，无论对于蜘蛛爬行自己站点的情况进行了解而且就对屏蔽蜘蛛爬行也是十分的必要的，对于每种蜘蛛都有很多内容。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/219.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>获取搜索引擎的来源和其中的关键字的简单方法!</title>
		<link>http://www.thinksoa.cn/news/216.html</link>
		<comments>http://www.thinksoa.cn/news/216.html#comments</comments>
		<pubDate>Tue, 10 May 2011 01:27:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Referer]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/216.html</guid>
		<description><![CDATA[在做商务E流量分析的时候，需要实现一个功能：如果访客是通过搜索引擎的搜索找到客户网站的，要统计出访客是通过哪个搜索引擎访问到页面，并且统计出是通过 什么关键字搜索到该网站的。在网上google一下，发出对这方面的描述文档还是比较少的，在做这个功能的过程中有些经验给人家分享一下。实现这样的功能，基本原理是获取到来源地址，然后分析其中的内容，把所需要的搜索引擎名称和关键字取出。获取来源地址很简单，在servlet 中可以通过HttpServletRequest.getHeader(&#8220;Referer&#8221;)方法取得,jsp页面中可以通过 request.getHeader(&#8220;referer&#8221;)取得。取得来源地址后便可以通过分析得到的来源地址分析出我们所需要的内容。通常我们常用的搜 索引擎有以下14个。 http://www.google.com;http://www.google.cn;http://www.sogou.com;http://so.163.com;http://www.iask.com;http://www.yahoo.com;http://www.baidu.com;http://www.3721.com;http://www.soso.com;http://www.zhongsou.com;http://www.alexa.com;http://www.search.com;http://www.lycos.com;http://www.aol.com;　　要获取我们所需要的内容，我们必须分析 各个引擎的特性，由于各个搜索引擎的格式不一样，获取到的来源地址必然也不一致，下面我们来分析一下各种搜索引擎的地址格式。　　在搜索引擎里输入关键字，点击搜索之后地址栏中的内容就是我们通过HttpServletRequest.getHeader(&#8220;Referer&#8221;)或 request.getHeader(&#8220;referer&#8221;)取得的来源地址。google搜索引擎：http://www.google.com/search?hl= zh-N&#38;newwindow=1&#38;q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&#38;btnG= %E6%90%9C%E7%B4%A2&#38;lr=http://www.google.cn/search?hl= zh-N&#38;newwindow=1&#38;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF&#38;btnG= %E6%90%9C%E7%B4%A2&#38;meta=　　从这里我们可以得到我们所需要的搜索引擎名称和关键字。其中，搜索引擎显而易见，是google;而关键字呢？经过我仔细观察、测试后发现关键字是编码后放 在参数q里，也就是说%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80和%E6%B0 %B8%E5%AE%89%E8%B7%AF%E7%81%AF就是输入的关键字。　　(有人会问，那btnG这个参数的值是什么来头,他也编过码 啊?是用来干嘛的呢？呵呵，它什么来头都没有，什么也没干，多余的！你试试输入关键字之后点击搜索按钮看看地址栏，然后再试试输入关键字之后回车，再看看 地址栏，看出两种做法在地址栏中的一点点差别之后你就会明白的啦) baidu搜索引擎：(1)http://www.baidu.com/s?ie=gb2312&#38;bs=%CB%B3%B5%C2%BC%D2%BE%DF&#38;sr=&#38;z=&#38;cl=3&#38;f=8&#38;wd=%BD%F1%BF%C6%BF%C6%BC%BC&#38;ct=0(2)http://www.baidu.com/baidu?tn=nanlingcb&#38;word=%CB%B3%B5%C2%BC%D2%BE%DFbaidu 搜索引擎，这里需要说明一下，当我们在通过在http://www.baidu.com中 输入搜索关键字，获取的来源地址为(1)字符串；当通过其它方式，比如在一些浏览器插件中输入关键字搜索的获取的来源地址为(2)字符串。通过获取来的这来源地，我也可以很容易的知道当前的搜索引擎是baidu；而关键字呢?看看(1),这里有两个经过编码的字符串，到底哪个是关键字呢？wd的值是关键字！信我啦！那bs的值是什么呢？你输入关键字多搜索几次，看看你有什么发现？发现了吧，bs是你上一次搜索的关键字！这个我们不管，它不是我们所要的东 西。分析得知，在baidu搜索引擎里有两个地方放关键字，一个地方是编码后放在在参数wd里，另外一个地方是编码后放在word参数里。明白了吧？：) sogou搜索引擎http://www.sogou.com/web?query=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC这个就没这么复杂了，我们通过字符串可以知道搜索引擎为sogou，关键字经编码后放在参数query里,这里值为%BD%F1%BF%C6%D0%C5 %CF%A2%BF%C6%BC%BC,有时候也会附带多一些参数，但附带的这些参数对我们来说是没用的。 163搜索引擎http://cha.so.163.com/so.php?in=seek&#38;c=26&#38;key=032152284&#38;q=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC&#38;x=61&#38;y=19这个也不复杂，分析得知，搜索引擎名称为163,关键字在参数q里,这里值为%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC yahoo 搜索引擎http://search.cn.yahoo.com/search?p=%D3%C0%B0%B2%C2%B7%B5%C6&#38;source=toolbar_yassist_button&#38;pid=58061_1006&#38;ei=gbkhttp://search.cn.yahoo.com/search?lp=%E4%B8%AD%E5%B1%B1%E5%8F%A4%E9%95%87%E7%81%AF%E9%A5%B0&#38;p=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&#38;pid=&#38;ei=UTF-8很容易得到，搜索引擎名称为yahoo,那关键字是哪些呢?关键字是放在参数p里，而参数lp的值跟baidu类似，也是上一次搜索的关键字。 lycos 搜索引擎http://search.lycos.com/?query=website这 个我们用得比较少，同样我们通过这个字符串得出搜索引擎为lycos，关键字放在query里. 3721搜索引擎http://seek.3721.com/index.htm?name=%D6%E9%BA%A3%CF%E3%D6%DE%C0%CD%CE%F1%CA%D0%B3%A1容易得到，搜索引擎名称为3721，关键字放在name里 search搜索引擎http://www.search.com/search?lq=d%25E4%25B8%25AD%25E5%259B%25BDd&#38;q=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%9B%BD%E5%92%8C这 个我们用得很少，也容易得到搜索引擎名称为search,关键字放在p里，而lp放的是什么呢？尚未弄清楚，反正与我们所要的东西无关。 soso 搜索引擎http://www.soso.com/q?w=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC12&#38;sc=web&#38;bs=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC1&#38;ch=w.soso.pr&#38;uin=&#38;lr=chs&#38;web_options=on可 以看出搜索引擎名称为soso，关键字放在参数w里，需参数bs的值跟baidu相似，是上一次搜索的关键字 zhongsou搜索引擎http://p.zhongsou.com/p?w=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC&#38;l=&#38;jk=&#38;k=&#38;r=&#38;aid=&#38;pt=1&#38;dt=2可 以看出搜索引擎名称为zhongsou,关键字在参数w里。alexa搜索引擎http://www.alexa.com/search?q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80得出搜索引擎名称为zhongsou，关键字放在参数q里。 对各种搜索引擎的url的分析已完成，大家都对这些常用的搜索引擎的url的格式有所了解了，下面我们看看怎样从我们所取得的这些字符串中得到我们所要的信息,也就是怎样从这些字符串中提取我们所需的搜索引擎名称和搜索关键字.这里理所当然使用功能强大的正则表达式了.好,现在我们逐个逐个地分析各个搜索引擎用什么正则表达式提取我们所需要的内容.首先还是先分析 google搜索引擎:上面已经提到我们取得的google搜索引擎的地址是这样的:http://www.google.com/search?hl= zh-N&#38;newwindow=1&#38;q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&#38;btnG= %E6%90%9C%E7%B4%A2&#38;lr=http://www.google.cn/search?hl= zh-N&#38;newwindow=1&#38;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF&#38;btnG= %E6%90%9C%E7%B4%A2&#38;meta=其 实它还有一种形式是这样的:(3)http://www.google.com/custom?hl=zh-CN&#38;inlang=zh-CN&#38;ie=GB2312&#38;oe=GB2312&#38;newwindow=1&#38;client=pub3261928361684765&#38;cof=FORID%3A1%3BGL%3A1%3BBGC%3AFFFFFF%3BT%3A%23000000%3BLC%3A%230000ff%3BVLC%3A%23663399%3BALC%3A%230000ff%3BGALT%3A%23008000%3BGFNT%3A%230000ff%3BGIMP%3A%230000ff%3BDIV%3A%23336699%3BLBGC%3A336699%3BAH%3Acenter%3B&#38;q=%C5%B7%C2%FC%D5%D5%C3%F7&#38;lr=OH,my god,是不是看得头晕了?先不要晕,往下看你就不会觉得晕的啦&#8230;.我们仔细观察一下,这三种格式都有一个共通点,大家有没有发现呢?就是 他的格式都是这样的:http://www.google.[...]/[...]&#38;q= [关键字][...][...]表示有一个以上的字符.就如(2)我们在里面放入一些[]就可以看得更清楚了:http://www.google.[cn]/[search?hl=zh-CN&#38;newwindow=1]&#38;q=[%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF][&#38;btnG=%E6%90%9C%E7%B4%A2&#38;meta=]看明白了吧?看明白了我们就接下去了.于是我们可以得出google搜索引擎的正则表达式了:http:\\/\\/www\\.google \\.[a-zA-Z]+\\/.+[\\&#38;\\?]q=[^\\&#38;]*。&#160;&#160; 现在解释一下这个正则表达式的意思。http:\\/ \\/www\\.这一段是匹配http://www., 为什么这里多了这么多\呢?因为字符 &#8216;/&#8217;和字符&#8217;.'在正则表达式中有特殊意义,要用&#8217;\'对这两个字符转义,&#8217;/'通过&#8217;\/&#8217;转义,相似的.也通过&#8217;\.&#8217;转义,而字符&#8217;\'在 java里也是一个特殊字符,本身也需要转义,所以&#8217;\/&#8217;写成&#8217;\\/&#8217;,类似的&#8217;\.&#8217;写成&#8217;\\.&#8217;；接下来google\\.[a-zA-Z]+ \\/.+匹配google.com/search?hl=zh-CN&#38;newwindow=1,这里解释一下[a-zA-Z]+,意思是最少有 一个(包括一个)以上英文字母,[a-zA-Z]表示从a到z,从A到Z的字符,+表示至少一个以上,[\\&#38;\\?]q=[^\\&#38; amp;]*匹配的是&#38;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF,[\\&#38;\\?],表示字符&#38; [...]]]></description>
			<content:encoded><![CDATA[<p>在做商务E流量分析的时候，需要实现一个功能：如果访客是通过搜索引擎的搜索找到客户网站的，要统计出访客是通过哪个搜索引擎访问到页面，并且统计出是通过 什么关键字搜索到该网站的。在网上google一下，发出对这方面的描述文档还是比较少的，在做这个功能的过程中有些经验给人家分享一下。<br />实现这样的功能，基本原理是获取到来源地址，然后分析其中的内容，把所需要的搜索引擎名称和关键字取出。<br />获取来源地址很简单，在servlet 中可以通过HttpServletRequest.getHeader(&#8220;Referer&#8221;)方法取得,jsp页面中可以通过 request.getHeader(&#8220;referer&#8221;)取得。取得来源地址后便可以通过分析得到的来源地址分析出我们所需要的内容。通常我们常用的搜 索引擎有以下14个。</p>
<p><span id="more-216"></span>
<p>http://www.google.com;<br />http://www.google.cn;<br />http://www.sogou.com;<br />http://so.163.com;<br />http://www.iask.com;<br />http://www.yahoo.com;<br />http://www.baidu.com;<br />http://www.3721.com;<br />http://www.soso.com;<br />http://www.zhongsou.com;<br />http://www.alexa.com;<br />http://www.search.com;<br />http://www.lycos.com;<br />http://www.aol.com;<br />　　要获取我们所需要的内容，我们必须分析 各个引擎的特性，由于各个搜索引擎的格式不一样，获取到的来源地址必然也不一致，下面我们来分析一下各种搜索引擎的地址格式。<br />　　在搜索引擎里输入关键字，点击搜索之后地址栏中的内容就是我们通过HttpServletRequest.getHeader(&#8220;Referer&#8221;)或 request.getHeader(&#8220;referer&#8221;)取得的来源地址。<br />google搜索引擎：<br />http://www.google.com/search?hl= zh-N&amp;newwindow=1&amp;<br />q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&amp;<br />btnG= %E6%90%9C%E7%B4%A2&amp;lr=<br />http://www.google.cn/search?hl= zh-N&amp;newwindow=1&amp;<br />q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF&amp;<br />btnG= %E6%90%9C%E7%B4%A2&amp;meta=<br />　　从这里我们可以得到我们所需要的搜索引擎名称和关键字。其中，搜索引擎显而易见，是google;而关键字呢？经过我仔细观察、测试后发现关键字是编码后放 在参数q里，也就是说<br />%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80和<br />%E6%B0 %B8%E5%AE%89%E8%B7%AF%E7%81%AF<br />就是输入的关键字。<br />　　(有人会问，那btnG这个参数的值是什么来头,他也编过码 啊?是用来干嘛的呢？呵呵，它什么来头都没有，什么也没干，多余的！你试试输入关键字之后点击搜索按钮看看地址栏，然后再试试输入关键字之后回车，再看看 地址栏，看出两种做法在地址栏中的一点点差别之后你就会明白的啦)</p>
<p><strong>baidu搜索引擎：</strong><br />(1)http://www.baidu.com/s?ie=gb2312&amp;bs=%CB%B3%B5%C2%BC%D2%BE%DF&amp;sr=&amp;z=&amp;cl=3&amp;f=8&amp;<br />wd=%BD%F1%BF%C6%BF%C6%BC%BC&amp;ct=0<br />(2)http://www.baidu.com/baidu?tn=nanlingcb&amp;word=%CB%B3%B5%C2%BC%D2%BE%DF<br />baidu 搜索引擎，这里需要说明一下，当我们在通过在http://www.baidu.com中 输入搜索关键字，获取的来源地址为(1)字符串；当通过其它方式，比如在一些浏览器插件中输入关键字搜索的获取的来源地址为(2)字符串。通过获取来的这来源地，我也可以很容易的知道当前的搜索引擎是baidu；而关键字呢?看看(1),这里有两个经过编码的字符串，到底哪个是关键字呢？wd的值是关键字！信我啦！那bs的值是什么呢？你输入关键字多搜索几次，看看你有什么发现？发现了吧，bs是你上一次搜索的关键字！这个我们不管，它不是我们所要的东 西。分析得知，在baidu搜索引擎里有两个地方放关键字，一个地方是编码后放在在参数wd里，另外一个地方是编码后放在word参数里。明白了吧？：)</p>
<p><strong>sogou搜索引擎</strong><br />http://www.sogou.com/web?query=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC<br />这个就没这么复杂了，我们通过字符串可以知道搜索引擎为sogou，关键字经编码后放在参数query里,这里值为<br />%BD%F1%BF%C6%D0%C5 %CF%A2%BF%C6%BC%BC,有时候也会附带多一些参数，但附带的这些参数对我们来说是没用的。</p>
<p><strong>163搜索引擎</strong><br />http://cha.so.163.com/so.php?in=seek&amp;c=26&amp;key=032152284&amp;q=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC<br />&amp;x=61&amp;y=19<br />这个也不复杂，分析得知，搜索引擎名称为163,关键字在参数q里,这里值为%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC</p>
<p><strong>yahoo 搜索引擎</strong><br />http://search.cn.yahoo.com/search?p=%D3%C0%B0%B2%C2%B7%B5%C6&amp;<br />source=toolbar_yassist_button&amp;pid=58061_1006&amp;ei=gbk<br />http://search.cn.yahoo.com/search?lp=%E4%B8%AD%E5%B1%B1%E5%8F%A4%E9%95%87%E7%81%AF%E9%A5%B0&amp;<br />p=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&amp;pid=&amp;ei=UTF-8<br />很容易得到，搜索引擎名称为yahoo,那关键字是哪些呢?关键字是放在参数p里，而参数lp的值跟baidu类似，也是上一次搜索的关键字。</p>
<p><strong>lycos 搜索引擎</strong><br />http://search.lycos.com/?query=website<br />这 个我们用得比较少，同样我们通过这个字符串得出搜索引擎为lycos，关键字放在query里.</p>
<p><strong>3721搜索引擎</strong><br /><a href="http://seek.3721.com/index.htm?name=%D6%E9%BA%A3%CF%E3%D6%DE%C0%CD%CE%F1%CA%D0%B3%A1">http://seek.3721.com/index.htm?name=%D6%E9%BA%A3%CF%E3%D6%DE%C0%CD%CE%F1%CA%D0%B3%A1</a>容易得到，搜索引擎名称为3721，关键字放在name里</p>
<p><strong>search搜索引擎</strong><br />http://www.search.com/search?lq=d%25E4%25B8%25AD%25E5%259B%25BDd&amp;<br />q=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%9B%BD%E5%92%8C<br />这 个我们用得很少，也容易得到搜索引擎名称为search,关键字放在p里，而lp放的是什么呢？尚未弄清楚，<br />反正与我们所要的东西无关。</p>
<p><strong>soso 搜索引擎</strong><br />http://www.soso.com/q?w=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC12&amp;sc=web&amp;<br />bs=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC1&amp;ch=w.soso.pr&amp;uin=&amp;lr=chs&amp;web_options=on<br />可 以看出搜索引擎名称为soso，关键字放在参数w里，需参数bs的值跟baidu相似，是上一次搜索的关键字 </p>
<p><strong>zhongsou搜索引擎</strong><br />http://p.zhongsou.com/p?w=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC&amp;l=&amp;jk=&amp;k=&amp;r=&amp;aid=&amp;pt=1&amp;dt=2<br />可 以看出搜索引擎名称为zhongsou,关键字在参数w里。<br />alexa搜索引擎<br />http://www.alexa.com/search?q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80<br />得出搜索引擎名称为zhongsou，关键字放在参数q里。</p>
<p>对各种搜索引擎的url的分析已完成，大家都对这些常用的搜索引擎的url的格式有所了解了，下面我们看看怎样从我们所取得的这些字符串中得到我们所要的信息,也就是怎样从这些字符串中提取我们所需的搜索引擎名称和搜索关键字.这里理所当然使用功能强大的正则表达式了.好,现在我们逐个逐个地分析各个搜索引擎用什么正则表达式提取我们所需要的内容.<br />首先还是先分析 google搜索引擎:<br />上面已经提到我们取得的google搜索引擎的地址是这样的:<br />http://www.google.com/search?hl= zh-N&amp;newwindow=1<br />&amp;q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80&amp;<br />btnG= %E6%90%9C%E7%B4%A2&amp;lr=<br />http://www.google.cn/search?hl= zh-N&amp;newwindow=1<br />&amp;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF&amp;<br />btnG= %E6%90%9C%E7%B4%A2&amp;meta=<br />其 实它还有一种形式是这样的:<br />(3)http://www.google.com/custom?hl=zh-CN&amp;inlang=zh-CN&amp;ie=GB2312&amp;oe=GB2312&amp;newwindow=1&amp;<br />client=pub3261928361684765&amp;cof=FORID%3A1%3BGL%3A1%3BBGC%3AFFFFFF%3BT%3A%23000000%3BLC%3A<br />%230000ff%3BVLC%3A%23663399%3BALC%3A%230000ff%3BGALT%3A%23008000%3BGFNT%3A<br />%230000ff%3BGIMP%3A%230000ff%3BDIV%3A%23336699%3BLBGC%3A336699%3BAH%3Acenter%3B<br />&amp;q=%C5%B7%C2%FC%D5%D5%C3%F7&amp;lr=<br />OH,my god,是不是看得头晕了?先不要晕,往下看你就不会觉得晕的啦&#8230;.<br />我们仔细观察一下,这三种格式都有一个共通点,大家有没有发现呢?就是 他的格式都是这样的:<br />http://www.google.[...]/[...]&amp;q= [关键字][...]<br />[...]表示有一个以上的字符.<br />就如(2)我们在里面放入一些[]就可以看得更清楚了:<br />http://www.google.[cn]/[search?hl=zh-CN&amp;newwindow=1]<br />&amp;q=[%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF][&amp;btnG=%E6%90%9C%E7%B4%A2&amp;meta=]<br />看明白了吧?看明白了我们就接下去了.于是我们可以得出google搜索引擎的正则表达式了:<br />http:\\/\\/www\\.google \\.[a-zA-Z]+\\/.+[\\&amp;\\?]q=[^\\&amp;]*。<br />&nbsp;&nbsp; 现在解释一下这个正则表达式的意思。<br />http:\\/ \\/www\\.这一段是匹配http://www., 为什么这里多了这么多\呢?因为字符 &#8216;/&#8217;和字符&#8217;.'在正则表达式中有特殊意义,要用&#8217;\'对这两个字符转义,&#8217;/'通过&#8217;\/&#8217;转义,相似的.也通过&#8217;\.&#8217;转义,而字符&#8217;\'在 java里也是一个特殊字符,本身也需要转义,所以&#8217;\/&#8217;写成&#8217;\\/&#8217;,类似的&#8217;\.&#8217;写成&#8217;\\.&#8217;；<br />接下来google\\.[a-zA-Z]+ \\/.+匹配google.com/search?hl=zh-CN&amp;newwindow=1,这里解释一下[a-zA-Z]+,意思是最少有 一个(包括一个)以上英文字母,[a-zA-Z]表示从a到z,从A到Z的字符,+表示至少一个以上,[\\&amp;\\?]q=[^\\&amp; amp;]*匹配的是&amp;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF,[\\&amp;\\?],表示字符&amp; amp;或字符?由于&amp;和?都是特殊字符，所以都要用转义符转义,q=[^\\&amp;]*表示q=后面是零个（包括零个）以上的非&amp; 字符,[^\\&amp;]表示不为&amp;的字符,为什么不为&amp;呢，因为&amp;后面的字符也经不再属于参数q的值了，我们要取的是q=之 后，字符&amp;之前的字符串.这个正则表达式的解释就到此了。现在这个正则表达式已经可以从众多的获取过来的来源地址中分辩出哪些是google搜索引擎了，但是有一个问题，假如以后google搜索引擎不是这样，换成http://search.google.com/search?hl=zh- CN&amp;newwindow=1&amp;q=%E6%B0%B8%E5%AE%89%E8%B7%AF%E7%81%AF<br />&amp;btnG=%E6%90%9C%E7%B4%A2&amp;meta= 呢，<br />那这个正则表达式就不合适了，怎样能在以后改动之后我们写的正则表达式还适用呢？很简单，我们把它改成这个样子:\\.google\\.[a- zA-Z]+\\/.+[\\&amp;\\?]q=[^\\&amp;]*,意思是我们不必匹配http://www这 一串字符串。这样如果google搜索引擎做了类似http://search.google.com/&#8230;.. 的修改，我们写的正则表达式也适用了，那假如它把域名也改了就没得说了,:);还有一种情况，在地址栏里输入www.google.com:80/也可以正常访问google,也就是说还有 一种情况就是加端口的访问，这种情况也要考虑到，因此之前我们的正则表达式应改成：\\.google\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=[^\\&amp;]*， (:\\d{1,}){0,1}是什么意思呢？他匹配类似&#8221;:80&#8243;也就是说冒号(:)后跟1个以上的数字字符，而端口是可选的，并且如果出现只会出现一 次，所以用{0,1}.这个正则表达式的用途是用于获取关键字，所以这里我把关键字部分划分为一个组(这在下面会用到),因此，最终的正则表达式为:<br />\\.google\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)<br />对 google搜索引擎已经说得很详细，接下来的我就简略的说说了，原理都差不多的了。<br />baidu搜索引擎：<br />分 析得知baidu搜索引擎的正则表达式为：<br />\\.baidu\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]wd=([^\\&amp;]*) 或<br />\\.baidu\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]word=([^\\&amp;]*)<br />sogou 搜索引擎<br />http://www.sogou.com/web?query=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC<br />正 则表达式:<br />\\.sogou\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]query=([^\\&amp;]*)</p>
<p>yahoo搜索引擎<br />正 则表达式:<br />\\.yahoo\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]p=([^\\&amp;]*)<br />lycos 搜索引擎<br />http://search.lycos.com/?query=website<br />正 则表达式:<br />\\.lycos\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.*[\\&amp;\\?]query=([^\\&amp;]*)<br />3721 搜索引擎<br />http://seek.3721.com/index.htm?name=%D6%E9%BA%A3%CF%E3%D6%DE%C0%CD%CE%F1%CA%D0%B3%A1<br />http://seek.3721.com/index.htm?q=%D6%E9%BA%A3%CF%E3%D6%DE%C0%CD%CE%F1%CA%D0%B3%A1<br />正 则表达式:<br />\\.3721\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]p=([^\\&amp;]*) 或<br />\\.3721\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]name=([^\\&amp;]*)<br />search 搜索引擎 <br />正则表达式:<br />\\.search\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)  </p>
<p>soso搜索引擎<br />正 则表达式:<br />\\.soso\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]w=([^\\&amp;]*)  </p>
<p>zhongsou搜索引擎<br />http://p.zhongsou.com/p?w=%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC&amp;l=&amp;jk=&amp;k=&amp;r=&amp;aid=&amp;pt=1&amp;dt=2<br />正 则表达式:<br />\\.zhongsou\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]w=([^\\&amp;]*)  </p>
<p>alexa搜索引擎<br />http://www.alexa.com/search?q=%E4%BB%8A%E7%A7%91%E4%BF%A1%E6%81%AF%E7%A7%91%E6%8A%80<br />正 则表达式:<br />\\.alexa\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)  </p>
<p>iask搜索引擎<br />正则表达式:<br />\\.iask\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]k=([^\\&amp;]*) 或<br />\\.iask\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]_searchkey=([^\\&amp;]*)<br />好了，正则表达式已经写出来了，事情已经完成一半了。现在我们把话题转一下，等会我们再转回来，现在我们先看看如何获取搜索引擎的名称。同样，也 需要用正则表达式，正则表达式实在太强了：)。<br />我们可以通过以下的正则表达式匹配到google搜索引擎：<br />http:\\/\\/.* \\.google\\.com(:\\d{1,}){0,1}\\/或<br />http:\\/\\/.*\\.google\\.cn(:\\d{1,}){0,1}\\/<br />类 似的也可以匹配其它搜索引擎，我把他们写在一起:<br />http:\\/\\/.*\\.(google\\.com(:\\d{1,}){0,1}\\/|google\\.cn(:\\d{1,}){0,1}\\/|<br />baidu\\.com(:\\d{1,}){0,1}\\/|yahoo\\.com(:\\d{1,}){0,1}\\/|<br />iask\\.com(:\\d{1,}){0,1}\\/|sogou\\.com(:\\d{1,}){0,1}\\/|<br />163\\.com(:\\d{1,}){0,1}\\/|lycos\\.com(:\\d{1,}){0,1}\\/|<br />aol\\.com(:\\d{1,}){0,1}\\/|3721\\.com(:\\d{1,}){0,1}\\/|<br />search\\.com(:\\d{1,}){0,1}\\/|soso.com(:\\d{1,}){0,1}\\/|<br />zhongsou\\.com(:\\d{1,}){0,1}\\/|alexa\\.com(:\\d{1,}){0,1}\\/)<br />通过以下程序可以获取到搜索引擎的名称:
<pre>import java.util.regex.*;
public class GetEngine
{
public static void main(String[] arg)
{
   GetEngine engine=new GetEngine();

   String referer="http://www.baidu.com/s?wd=java%D1%A7%CF%B0%CA%D2";
   String engineName=engine.getSearchEngine(referer);
   System.out.println("搜索引擎名称:"+engineName);
}
public String getSearchEngine(String refUrl) {
    if(refUrl.length()&gt;11)
    {
       //p是匹配各种搜索引擎的正则表达式
      Pattern p = Pattern.compile("http:\\/\\/.*\\.(google\\.com(:\\d{1,}){0,1}\\/|        google\\.cn(:\\d{1,}){0,1}\\/|baidu\\.com(:\\d{1,}){0,1}\\/|
        yahoo\\.com(:\\d{1,}){0,1}\\/|iask\\.com(:\\d{1,}){0,1}\\/|
        sogou\\.com(:\\d{1,}){0,1}\\/|163\\.com(:\\d{1,}){0,1}\\/|
        lycos\\.com(:\\d{1,}){0,1}\\/|aol\\.com(:\\d{1,}){0,1}\\/|
        3721\\.com(:\\d{1,}){0,1}\\/|search\\.com(:\\d{1,}){0,1}\\/|
        soso.com(:\\d{1,}){0,1}\\/|zhongsou\\.com(:\\d{1,}){0,1}\\/|
        alexa\\.com(:\\d{1,}){0,1}\\/)");
      Matcher m = p.matcher(refUrl);
      if (m.find())//如果来源地址可以匹配以上的pattern
      {
//因为m.group(0)是域名，m.group(1)才是我们最合适我们所要的
        return insteadCode(m.group(1),"(\\.com(:\\d{1,}){0,1}\\/|\\.cn(:\\d{1,}){0,1}\\/|
\\.org(:\\d{1,}){0,1}\\/)","");//把.com,.cn,.org替换为""
      }
    }
    return "未发现搜索引擎";
}
public String insteadCode(String str,String regEx,String code){
    Pattern p=Pattern.compile(regEx);
    Matcher m=p.matcher(str);
    String s=m.replaceAll(code);
    return s;
}
}
</pre>
</p>
<p>通过以上的代码即可得出搜索引擎名称了，似乎任务完成一大半了。只是接着下来的要做的事情比之前所做的要麻烦点点,麻烦就麻烦在编码上。<br />现在我样回过头看我们上面写的一大堆各种搜索引擎的正则表达式。<br />由于这里要大量的字符串操作，这里使用StringBuffer来做字符串的连接。<br />StringBuffer sb=new StringBuffer();<br />sb.append(&#8220;\\.google\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.iask\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]k=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.iask\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]_searchkey=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.sogou\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]query=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.163\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.yahoo\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]p=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.baidu\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]wd=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.baidu\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]word=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.lycos\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.*[\\&amp;\\?]query=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.aol\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]encquery=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.3721\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]p=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.3721\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]name=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.search\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.soso\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]w=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.zhongsou\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]w=([^\\&amp;]*)&#8221;)<br />.append(&#8220;|\\.alexa\\.[a-zA-Z]+(:\\d{1,}){0,1}\\/.+[\\&amp;\\?]q=([^\\&amp;]*)&#8221;);
</p>
<p>这个正则表达式是把所有搜索引擎用或&#8221;|&#8221;连接起来，因为只要匹配其中一个搜索引擎的正则表达式就可以。<br />前面已经说到，关键字是经过编码 的，我们直接取出的关键字会像%BD%F1%BF%C6%D0%C5%CF%A2%BF%C6%BC%BC12,<br />这样的关键字我们无法读懂，因些需要对这 些关键进行反编码，这要用到java.net.URLDecoder.decode(String s,String enc),这个方法有两个参数，一个参数是要进行反编码的字符串，另一个是指定的字符集。第一个参数很简单，只要我们把取得的关键放到这个参数里，至于第 二个参数怎样呢？这里我只讨论中文的情况，这些搜索引擎有两种字符集编码方式，一种是UTF-8，另外一种是GBK。<br />只有GBK一种编码方式的搜 索引擎：<br />3721，iask，sogou，163，baidu，soso，zhongsou<br />只有UTF-8一种编码方式的搜索引擎:<br />lycos,aol,search,alexa<br />有 两种编码方式的：<br />google,yahoo
</p>
<p>只有一种编码方式的问题容易解决，有两种编码方式的怎办呢？办法总比问题多，其实采用哪一个编码方工，它是有”暗示“的，对于google，大多数情况下它是采用UTF-8的编码方式，我们在浏览器的地址栏上输入<a href="http://www.google.com/">www.google.com</a>搜索的都是以这种方式来编码的，但有种情况如：<br />http://www.google.com/custom?hl=zh-CN&amp;inlang=zh-CN&amp;ie=GB2312&amp;oe=GB2312&amp;newwindow=1&amp;client=pub-3261928361684765&amp;<br />cof=FORID%3A1%3BGL%3A1%3BBGC%3AFFFFFF%3BT%3A%23000000%3BLC%3A%230000ff<br />%3BVLC%3A%23663399%3BALC%3A%230000ff%3BGALT%3A%23008000%3BGFNT%3A%230000ff%3BGIMP%3A<br />%230000ff%3BDIV%3A%23336699%3BLBGC%3A336699%3BAH%3Acenter%3B&amp;q=%C5%B7%C2%FC%D5%D5%C3%F7&amp;lr=<br />这种情况下就不一定是UTF-8编码了，这种情况下以ie这个参数指定，这里ie=gb2312,所以编码方式为gb2312，而gb2312是gbk的字 集，所以这里我们用gbk而不用gb2312;对于yahoo情况类似，只不过yahoo在大多数情况下使用GBK编码，如：<br />http://search.cn.yahoo.com/search?p=%C5%B7%C2%FC%BF%C6%BC%BC%CA%B5%D2%B5<br />&amp;source=toolbar_yassist_button&amp;pid=54554_1006&amp;f=A279_1<br />就是GBK编码,但这种情况:<br />http://search.cn.yahoo.com/search?ei=gbk&amp;fr=fp-tab-web-ycn&amp;source=errhint_up_web<br />&amp;p=%BD%F1%BF%C6&amp;meta=vl%3Dlang_zh-CN%26vl%3Dlang_zh-TW&amp;pid=ysearch<br />就 用ei参数里指定的纺码方式了,这里有可能指定的是gbk，也有可能指定的是UTF-8。<br />根据以上的解释，于是有以下的程序来获得各种搜索引擎的关键字:
<pre>import java.util.regex.*;
import java.sql.*;
import java.net.URLDecoder;
import java.io.*;
public class GetKeyword
{
public static void main(String[] arg)
{
   String referer="http://www.baidu.com/s?wd=java%D1%A7%CF%B0%CA%D2";
   if(arg.length!=0)
   {
    referer=arg[0];
   }
   GetKeyword getKeyword=new GetKeyword();
   String searchEngine=getKeyword.getSearchEngine(referer);
   System.out.println("searchEngine:"+searchEngine);
   System.out.println("keyword:"+getKeyword.getKeyword(referer));
}
public String getKeyword(String refererUrl)
   {
     StringBuffer sb=new StringBuffer();
     if(refererUrl!=null)
     {
       sb.append("(google\\.[a-zA-Z]+/.+[\\&amp;|\\?]q=([^\\&amp;]*)")
           .append("|iask\\.[a-zA-Z]+/.+[\\&amp;|\\?]k=([^\\&amp;]*)")
           .append("|iask\\.[a-zA-Z]+/.+[\\&amp;|\\?]_searchkey=([^\\&amp;]*)")
           .append("|sogou\\.[a-zA-Z]+/.+[\\&amp;|\\?]query=([^\\&amp;]*)")
           .append("|163\\.[a-zA-Z]+/.+[\\&amp;|\\?]q=([^\\&amp;]*)")
           .append("|yahoo\\.[a-zA-Z]+/.+[\\&amp;|\\?]p=([^\\&amp;]*)")
           .append("|baidu\\.[a-zA-Z]+/.+[\\&amp;|\\?]wd=([^\\&amp;]*)")
           .append("|baidu\\.[a-zA-Z]+/.+[\\&amp;|\\?]word=([^\\&amp;]*)")
           .append("|lycos\\.[a-zA-Z]+/.*[\\&amp;|\\?]query=([^\\&amp;]*)")
           .append("|aol\\.[a-zA-Z]+/.+[\\&amp;|\\?]encquery=([^\\&amp;]*)")
           .append("|3721\\.[a-zA-Z]+/.+[\\&amp;|\\?]p=([^\\&amp;]*)")
           .append("|3721\\.[a-zA-Z]+/.+[\\&amp;|\\?]name=([^\\&amp;]*)")
           .append("|search\\.[a-zA-Z]+/.+[\\&amp;|\\?]q=([^\\&amp;]*)")
           .append("|soso\\.[a-zA-Z]+/.+[\\&amp;|\\?]w=([^\\&amp;]*)")
           .append("|zhongsou\\.[a-zA-Z]+/.+[\\&amp;|\\?]w=([^\\&amp;]*)")
           .append("|alexa\\.[a-zA-Z]+/.+[\\&amp;|\\?]q=([^\\&amp;]*)")
           .append(")");
       Pattern p = Pattern.compile(sb.toString());
       Matcher m = p.matcher(refererUrl);
       return decoderKeyword(m,refererUrl);
     }
     return null;
}
public String decoderKeyword(Matcher m,String refererUrl)
{
   String keyword=null;
   String encode="UTF-8";
   String searchEngine=getSearchEngine(refererUrl);
   if(searchEngine!=null)
   {
     if ((checkCode("3721|iask|sogou|163|baidu|soso|zhongsou",searchEngine)
	 ||(checkCode("yahoo",searchEngine)&amp;&amp;!checkCode("ei=utf-8",refererUrl.toLowerCase()))))
     {
       encode = "GBK";
     }

     if (m.find())
     {
       for (int i = 2; i &lt;= m.groupCount(); i++)
       {
         if (m.group(i) != null)//在这里对关键字分组就用到了
         {
           try
           {
             keyword = URLDecoder.decode(m.group(i), encode);
           }
           catch(UnsupportedEncodingException e)
           {
             System.out.println(e.getMessage());
           }
           break;
         }
       }
     }
   }
   return keyword;
}
public String getSearchEngine(String refUrl) {
    if(refUrl.length()&gt;11)
    {
      //p是匹配各种搜索引擎的正则表达式
      Pattern p =
	  Pattern.compile("http:\\/\\/.*\\.(google\\.com(:\\d{1,}){0,1}\\/|
       google\\.cn(:\\d{1,}){0,1}\\/|baidu\\.com(:\\d{1,}){0,1}\\/|
       yahoo\\.com(:\\d{1,}){0,1}\\/|iask\\.com(:\\d{1,}){0,1}\\/|
       sogou\\.com(:\\d{1,}){0,1}\\/|163\\.com(:\\d{1,}){0,1}\\/|
       lycos\\.com(:\\d{1,}){0,1}\\/|aol\\.com(:\\d{1,}){0,1}\\/|
       3721\\.com(:\\d{1,}){0,1}\\/|search\\.com(:\\d{1,}){0,1}\\/|
       soso.com(:\\d{1,}){0,1}\\/|zhongsou\\.com(:\\d{1,}){0,1}\\/|
       alexa\\.com(:\\d{1,}){0,1}\\/)");
      Matcher m = p.matcher(refUrl);
      if (m.find())
      {
        return insteadCode(m.group(1),
		"(\\.com(:\\d{1,}){0,1}\\/|\\.cn(:\\d{1,}){0,1}\\/|\\.org(:\\d{1,}){0,1}\\/)","");
      }
    }
    return "未发现有搜索引擎";
}
public String insteadCode(String str,String regEx,String code){
    Pattern p=Pattern.compile(regEx);
    Matcher m=p.matcher(str);
    String s=m.replaceAll(code);
    return s;
}
public boolean checkCode(String regEx,String str){
    Pattern p=Pattern.compile(regEx);
    Matcher m=p.matcher(str);
    return m.find();
}
}
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/216.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDO使用手册</title>
		<link>http://www.thinksoa.cn/news/214.html</link>
		<comments>http://www.thinksoa.cn/news/214.html#comments</comments>
		<pubDate>Sat, 07 May 2011 05:20:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/214.html</guid>
		<description><![CDATA[PDO(PHP Data Object) 是PHP 5新出来的东西，在PHP 6都要出来的时候，PHP 6只默认使用PDO来处理数据库，将把所有的数据库扩展移到了PECL，那么默认就是没有了我们喜爱的php_mysql.dll之类的了 【PDO是啥】 PDO是PHP 5新加入的一个重大功能，因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理，什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite，同样的，我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们，无比烦琐和低效，毕竟，php代码的效率怎么能够我们直接用C/C++写的扩展斜率高捏？所以嘛，PDO的出现是必然的. 1先找到配置文件php.ini中以下几项扩展 extension=php_pdo_firebird.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll extension=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll 2.使用PDO连接数据库(注意执行结束时注消当然不注消也不会出现错误): $dbh = new PDO(&#8220;mysql:host=localhost;dbname=$dbname&#8221;, $user, $pwd); $dbh = null; //(unset) 3.一些简单的执行(关键字:exec) &#60;?php $dbname=&#8221;myzjh&#8221;; $user=&#8221;root&#8221;; $pwd=&#8221;123456&#8243;; $dbh = new PDO(&#8220;mysql:host=localhost;dbname=$dbname&#8221;, $user, $pwd); $result = $dbh-&#62;exec(&#8220;INSERT INTO test SET name = &#8216;seal&#8217;,age=&#8217;20&#8242;&#8221;); [...]]]></description>
			<content:encoded><![CDATA[<p>PDO(PHP Data Object) 是PHP 5新出来的东西，在PHP 6都要出来的时候，PHP 6只默认使用PDO来处理数据库，将把所有的数据库扩展移到了PECL，那么默认就是没有了我们喜爱的php_mysql.dll之类的了  </p>
<p>【PDO是啥】  </p>
<p>PDO是PHP 5新加入的一个重大功能，因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理，什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite，同样的，我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们，无比烦琐和低效，毕竟，php代码的效率怎么能够我们直接用C/C++写的扩展斜率高捏？所以嘛，PDO的出现是必然的.  </p>
<p>1先找到配置文件php.ini中以下几项扩展 </p>
<p><span id="more-214"></span>
</p>
<p>extension=php_pdo_firebird.dll  </p>
<p>extension=php_pdo_mssql.dll  </p>
<p>extension=php_pdo_mysql.dll  </p>
<p>extension=php_pdo_oci.dll  </p>
<p>extension=php_pdo_oci8.dll  </p>
<p>extension=php_pdo_odbc.dll  </p>
<p>extension=php_pdo_pgsql.dll  </p>
<p>extension=php_pdo_sqlite.dll  </p>
<p>2.使用PDO连接数据库(注意执行结束时注消当然不注消也不会出现错误):  </p>
<p>$dbh = new PDO(&#8220;mysql:host=localhost;dbname=$dbname&#8221;, $user, $pwd);  </p>
<p>$dbh = null; //(unset)  </p>
<p>3.一些简单的执行(关键字:exec)  </p>
<p>&lt;?php<br />
<blockquote>
<p>$dbname=&#8221;myzjh&#8221;;  </p>
<p>$user=&#8221;root&#8221;;  </p>
<p>$pwd=&#8221;123456&#8243;;  </p>
<p>$dbh = new PDO(&#8220;mysql:host=localhost;dbname=$dbname&#8221;, $user, $pwd);  </p>
<p>$result = $dbh-&gt;exec(&#8220;INSERT INTO test SET name = &#8216;seal&#8217;,age=&#8217;20&#8242;&#8221;);  </p>
<p>$result=$dbh-&gt;exec(&#8220;delete from test where name=&#8217;seal&#8217;&#8221;);  </p>
<p>$dbh = null;</p>
</blockquote>
<p>?&gt;  </p>
<p>执行失败则返回0;  </p>
<p>4.查询输出数据常用方法一:  </p>
<p>$rs = $dbh-&gt;query(&#8220;select * from test&#8221;);  </p>
<p>while($row = $rs-&gt;fetch()){  </p>
<p>echo $row[name].$row[age];  </p>
<p>}  </p>
<p>5.查询数据方法二:  </p>
<p>foreach ($dbh-&gt;query(&#8216;SELECT * from test&#8217;) as $row) {  </p>
<p>echo $row[name].$row[age];  </p>
<p>}  </p>
<p>6.查询数据方法三:  </p>
<p>$stmt = $dbh-&gt;prepare(&#8220;select * from test&#8221;);  </p>
<p>if ($stmt-&gt;execute()) {  </p>
<p>while ($row = $stmt-&gt;fetch()) {  </p>
<p>print_r($row);  </p>
<p>}  </p>
<p>}  </p>
<p>6.1 PDO::prepare 别类查询方式(execute功能很强大):  </p>
<p>$stmt = $dbh-&gt;prepare(&#8220;select * from test where name = ?&#8221;);  </p>
<p>if ($stmt-&gt;execute(array(&#8220;zjh&#8221;))) { //zjh为查询的条件  </p>
<p>while ($row = $stmt-&gt;fetch()) {  </p>
<p>print_r($row);  </p>
<p>}  </p>
<p>}  </p>
<p>7.执行的别种方式(也是用execute)  </p>
<p>$stmt = $dbh-&gt;prepare(&#8220;insert into test (name, age) values (?, ?)&#8221;); //and updata  </p>
<p>$stmt-&gt;bindParam(1, $name);  </p>
<p>$stmt-&gt;bindParam(2, $age);  </p>
<p>$name = &#8216;one&#8217;; // insert one row  </p>
<p>$age = 1;  </p>
<p>$stmt-&gt;execute();  </p>
<p>$name = &#8216;two&#8217;; // insert another row with different values  </p>
<p>$age = 2;  </p>
<p>$stmt-&gt;execute();  </p>
<p>&nbsp; </p>
<p>查询操作主要是  </p>
<p>PDO::query(): 主要是用于有记录结果返回的操作，特别是SELECT操作  </p>
<p>PDO::exec(): 主要是针对没有结果集合返回的操作，比如INSERT、UPDATE、DELETE等操作，它返回的结果是当前操作影响的列数  </p>
<p>PDO::prepare(): 主要是预处理操作，需要通过$rs-&gt;execute()来执行预处理里面的SQL语句，这个方法可以绑定参数，功能比较强大  </p>
<p>获取结果集操作主要是：  </p>
<p>PDOStatement::fetchColumn(): 是获取结果指定第一条记录的某个字段，缺省是第一个字段  </p>
<p>PDOStatement::fetch():是用来获取一条记录  </p>
<p>PDOStatement::fetchALL():是获取所有记录集到一个中，获取结果可以通过PDOStatement::setFetchMode来设置需要结果集合的类型。  </p>
<p>另外有两个周边的操作，  </p>
<p>PDO::lastInsertId():是返回上次插入操作，主键列类型是自增的最后的自增ID。  </p>
<p>PDOStatement::rowCount() :主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集，对PDO::exec()方法和SELECT操作无效。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/214.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql索引是否工作,sql语句索引是否最高效</title>
		<link>http://www.thinksoa.cn/news/212.html</link>
		<comments>http://www.thinksoa.cn/news/212.html#comments</comments>
		<pubDate>Fri, 06 May 2011 03:23:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/212.html</guid>
		<description><![CDATA[用explain 来执行检验sql 例如 explain select * from a +&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+&#124; id &#124; select_type &#124; table &#124; type&#160; &#124; possible_keys&#160; &#124; key&#160; &#124; key_len &#124; ref&#160; &#124; rows &#124; Extra &#124;+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+&#124;&#160; 1 &#124; SIMPLE&#160; &#124; t3&#160; &#124; const &#124; PRIMARY,idx_t3_id &#124; PRIMARY &#124; 4&#160; &#124; const &#124;&#160; 1 &#124;&#160; &#124;+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+ 第四列 type 这列很重要,显示了连接使用了哪种类别,有无使用索引.从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL (1).system这是const联接类型的一个特例。表仅有一行满足条件. 2).const表最多有一个匹配行，它将在查询开始时被读取。因为仅有一行，在这行的列值可被优化器剩余部分认为是常数。const表很快，因为它们只读取一次！ 3). eq_ref对于每个来自于前面的表的行组合，从该表中读取一行。这可能是最好的联接类型，除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY [...]]]></description>
			<content:encoded><![CDATA[<p>用explain 来执行检验sql 例如  </p>
<p>explain select * from a  </p>
<p>+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+<br />| id | select_type | table | type&nbsp; | possible_keys&nbsp; | key&nbsp; | key_len | ref&nbsp; | rows | Extra |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+<br />|&nbsp; 1 | SIMPLE&nbsp; | t3&nbsp; | const | PRIMARY,idx_t3_id | PRIMARY | 4&nbsp; | const |&nbsp; 1 |&nbsp; |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;-+  </p>
<p>第四列 type  </p>
<p>这列很重要,显示了连接使用了哪种类别,有无使用索引.<br />从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL</p>
<p><span id="more-212"></span>
</p>
<p>(1).system<br />这是const联接类型的一个特例。表仅有一行满足条件.  </p>
<p>2).const<br />表最多有一个匹配行，它将在查询开始时被读取。因为仅有一行，在这行的列值可被优化器剩余部分认为是常数。const表很快，因为它们只读取一次！  </p>
<p>3). eq_ref<br />对于每个来自于前面的表的行组合，从该表中读取一行。这可能是最好的联接类型，除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY。<br />eq_ref可以用于使用= 操作符比较的带索引的列。比较值可以为常量或一个使用在该表前面所读取的表的列的表达式。  </p>
<p>(4).ref<br />对于每个来自于前面的表的行组合，所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀，或如果键不是UNIQUE或PRIMARY KEY（换句话说，如果联接不能基于关键字选择单个行的话），则使用ref。如果使用的键仅仅匹配少量行，该联接类型是不错的。<br />ref可以用于使用=或&lt;=&gt;操作符的带索引的列。  </p>
<p>(5).&nbsp; ref_or_null<br />该联接类型如同ref，但是添加了MySQL可以专门搜索包含NULL值的行。在解决子查询中经常使用该联接类型的优化。<br />在下面的例子中，MySQL可以使用ref_or_null联接来处理ref_tables：<br />SELECT * FROM ref_table<br />WHERE key_column=expr OR key_column IS NULL;  </p>
<p>(6). index_merge<br />该联接类型表示使用了索引合并优化方法。在这种情况下，key列包含了使用的索引的清单，key_len包含了使用的索引的最长的关键元素。<br />例如:<br />mysql&gt; explain select * from t4 where id=3952602 or accountid=31754306 ;<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />| id | select_type | table | type&nbsp; | possible_keys&nbsp; | key&nbsp; | key_len | ref&nbsp; | rows | Extra&nbsp; |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />|&nbsp; 1 | SIMPLE&nbsp; | t4&nbsp; | index_merge | idx_t4_id,idx_t4_accountid | idx_t4_id,idx_t4_accountid | 4,4&nbsp; | NULL |&nbsp; 2 | Using union(idx_t4_id,idx_t4_accountid); Using where |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />1 row in set (0.00 sec)<br />(7). unique_subquery<br />该类型替换了下面形式的IN子查询的ref：<br />value IN (SELECT primary_key FROM single_table WHERE some_expr)<br />unique_subquery是一个索引查找函数，可以完全替换子查询，效率更高。<br />(8).index_subquery<br />该联接类型类似于unique_subquery。可以替换IN子查询，但只适合下列形式的子查询中的非唯一索引：<br />value IN (SELECT key_column FROM single_table WHERE some_expr)<br />(9).range<br />只检索给定范围的行，使用一个索引来选择行。key列显示使用了哪个索引。key_len包含所使用索引的最长关键元素。在该类型中ref列为NULL。<br />当使用=、&lt;&gt;、&gt;、&gt;=、&lt;、&lt;=、IS NULL、&lt;=&gt;、BETWEEN或者IN操作符，用常量比较关键字列时，可以使用range<br />mysql&gt; explain select * from t3 where id=3952602 or id=3952603 ;<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />| id | select_type | table | type&nbsp; | possible_keys&nbsp; | key&nbsp; | key_len | ref&nbsp; | rows | Extra&nbsp; |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />|&nbsp; 1 | SIMPLE&nbsp; | t3&nbsp; | range | PRIMARY,idx_t3_id | idx_t3_id | 4&nbsp; | NULL |&nbsp; 2 | Using where |<br />+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />1 row in set (0.02 sec)<br />(10).index<br />该联接类型与ALL相同，除了只有索引树被扫描。这通常比ALL快，因为索引文件通常比数据文件小。<br />当查询只使用作为单索引一部分的列时，MySQL可以使用该联接类型。<br />(11). ALL<br />对于每个来自于先前的表的行组合，进行完整的表扫描。如果表是第一个没标记const的表，这通常不好，并且通常在它情况下很差。通常可以增加更多的索引而不要使用ALL，使得行能基于前面的表中的常数值或列值被检索出。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/212.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几款离线博客编辑工具试用比较(windows Live Writer,zoundry Raven,Qumana，ScribeFire)</title>
		<link>http://www.thinksoa.cn/news/210.html</link>
		<comments>http://www.thinksoa.cn/news/210.html#comments</comments>
		<pubDate>Tue, 19 Apr 2011 05:19:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/210.html</guid>
		<description><![CDATA[本人不经常更新博客，所以平时直接在wp后台的在线发布就能满足需求，由于近来网络不是很好，所以找了几款离线博客发布工具来试用一下。 1.windows live writer: 这是一款十分实用的博客发布工具，功能十分的强大。有多种编辑模式，还可以方便的预览当前编辑的文档。不足之处就是些浏览器与windows操作系统关联大多。对系统要求也比较多。用起来有点不便。 2.zounday Raven, 功能也是十分的强大，不过编辑式不像writer那么多。导入bolg步骤有点复杂,而且在导入的时候还会出现错误,但又不影响便用，不知道为什么。我推荐这一款工具,请您试一下吧，太强了。 3.Qumana 这款工具最大的特点就是安装十分傻瓜化，而且设置也十分的简单，强化了基本的操作。ui也十分的清晰。只是与前面两款比较起来，功能显得有些少。我最想要的发布为草稿却没有提供（不知道是不是我没有找到，呵呵）。喜欢简单的用户可能这款会适合你的。对了这款工具还集成广告平台，可插入来自Qumana广告平台的广告. 4.ScribeFire 很有意思，这款工具是fireFox浏览的插件，如果您是fireFox的爱好者，我想这款比较适合你了，你不用再装其它附加软件.平常在ff中看博客的时候就可以随手用这个扩展写自己的博客，是不是很方便呢，哈哈。不太好的就是如果你是非ff迷的话，就无法用这款工具了。我这个文章就是用这个发布的，今天，本来想用 “windows live writer”的，但是发现少了设置字体颜色的按钮，就下了个来编了，所以使用体验暂时不是很清楚！]]></description>
			<content:encoded><![CDATA[<p>本人不经常更新博客，所以平时直接在wp后台的在线发布就能满足需求，由于近来网络不是很好，所以找了几款离线博客发布工具来试用一下。</p>
<p>1.windows live writer:</p>
<p>这是一款十分实用的博客发布工具，功能十分的强大。有多种编辑模式，还可以方便的预览当前编辑的文档。不足之处就是些浏览器与windows操作系统关联大多。对系统要求也比较多。用起来有点不便。</p>
<p>2.zounday Raven,</p>
<p>功能也是十分的强大，不过编辑式不像writer那么多。导入bolg步骤有点复杂,而且在导入的时候还会出现错误,但又不影响便用，不知道为什么。我推荐这一款工具,请您试一下吧，太强了。</p>
<p>3.<font color="#cc0000">Qumana</font></p>
<p>这款工具最大的特点就是安装十分傻瓜化，而且设置也十分的简单，强化了基本的操作。ui也十分的清晰。只是与前面两款比较起来，功能显得有些少。我最想要的发布为草稿却没有提供（不知道是不是我没有找到，呵呵）。喜欢简单的用户可能这款会适合你的。对了这款工具还集成广告平台，可插入来自Qumana广告平台的广告.</p>
<p>4.<font color="#cc0000">ScribeFire</font></p>
<p>很有意思，这款工具是fireFox浏览的插件，如果您是fireFox的爱好者，我想这款比较适合你了，你不用再装其它附加软件.平常在ff中看博客的时候就可以随手用这个扩展写自己的博客，是不是很方便呢，哈哈。不太好的就是如果你是非ff迷的话，就无法用这款工具了。我这个文章就是用这个发布的，今天，本来想用 “windows live writer”的，但是发现少了设置字体颜色的按钮，就下了个来编了，所以使用体验暂时不是很清楚！</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=d4df634b-6c00-895c-bc18-c5e69ddc8288" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/210.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zend studio 5.5快捷键一览表</title>
		<link>http://www.thinksoa.cn/news/204.html</link>
		<comments>http://www.thinksoa.cn/news/204.html#comments</comments>
		<pubDate>Tue, 19 Apr 2011 03:45:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.thinksoa.cn/news/204.html</guid>
		<description><![CDATA[本文省略“通用快捷键”描述，诸如：ctrl+N=新建，ctrl+O=打开，ctrl+C=复制，ctrl+V，ctrl+X……等等几乎所 有软件都通用的一组快捷键，而着重介绍zde独有的快捷键，了解并灵活运用这些快捷键以后，一定能帮助您在实际的项目操作中更加游刃有余。（怎么越写越觉 得我是在做游戏秘籍，哈哈！）编辑功能 组合键&#160;&#160;&#160;&#160; 实现功能&#160;&#160;&#160;&#160; 适用条件Ctrl+/&#160;&#160;&#160;&#160; 单行注释。当前为php代码时，则在光标所在行添加双斜杠行注释，选择多行则每一行都添加双斜杠；而当代码为html时则在行前后添加&#60;!– –&#62;注释，选中多行将在选区前后添加&#60;!– –&#62;注释，而非每行添加&#160;&#160;&#160;&#160; PHP代码、html代码全部适用，不适用于CSS部分Ctrl+Shift+/&#160;&#160;&#160;&#160; 块注释，为选择的PHP代码添加/* */块注释，如果没有选择任何代码，则将光标所在行添加块注释&#160;&#160;&#160;&#160; PHP代码适用，对HTML代码其功能与Ctrl+/相同 Ctrl+U&#160;&#160;&#160;&#160; 选择的代码片段全部转换为大写&#160;&#160;&#160;&#160; php、html等均适用Ctrl+L&#160;&#160;&#160;&#160; 选择的代码片段全部转换为小写&#160;&#160;&#160;&#160; php、html等均适用Ctrl+D&#160;&#160;&#160;&#160; 复制光标所在行&#160;&#160;&#160;&#160; 所有代码均适用Ctrl+E&#160;&#160;&#160;&#160; 删除光标所在行&#160;&#160;&#160;&#160; 所有代码均适用Tab/Shift+Tab&#160;&#160;&#160;&#160; 按tab增加代码缩进，默认为4个空格位置，可在首选项中进行设置，Shift+Tab则减少缩进，此操作对多行操作同样有效。即多行同时增加/减少缩进。&#160;&#160;&#160;&#160; 所有代码均适用Ctrl+Alt+F&#160;&#160;&#160;&#160; 在文件中查找，打开“在文件中查找”对话框&#160;&#160;&#160;&#160; 整个ZDE环境适用Ctrl+BackSpace&#160;&#160;&#160;&#160; 删除光标前一个单词，或者一个符号，注意这里的“一个单词”是由ZDE自行理解的，与英文中的一个单词有一定出入&#160;&#160;&#160;&#160; 所有代码均适用Ctrl+G&#160;&#160;&#160;&#160; 转到行。打开转到行对话框，填写行数字即可转到相应行，此为通用快捷键&#160;&#160;&#160;&#160; 整个ZDE环境适用Alt+ →,←&#160;&#160;&#160;&#160; 右箭头是定位到光标的下一个位置，左箭头则是定位到光标的上一个位置。&#160;&#160;&#160;&#160; 整个ZDE环境适用 环境切换 组合键&#160;&#160;&#160;&#160; 实现功能&#160;&#160;&#160;&#160; 适用条件Esc&#160;&#160;&#160;&#160; 隐藏辅助窗口，以便让编辑区域最大，而文件管理器窗口不会隐藏&#160;&#160;&#160;&#160; 整个ZDE环境适用Ctrl+W&#160;&#160;&#160;&#160; 切换自动换行，即当代码超长时是否出现横向滚动条Ctrl+Tab&#160;&#160;&#160;&#160; 在各个编辑器标签页之间切换，也可描述为在多个打开的文件窗口间切换Ctrl+F4&#160;&#160;&#160;&#160; 关闭当前标签页，Alt+F4是关闭整个ZDE环境，注意下区别 HTML标记 组合键&#160;&#160;&#160;&#160; 实现功能&#160;&#160;&#160;&#160; 适用条件Ctrl+1,2,3&#160;&#160;&#160;&#160; 分别添加一对&#60;h1&#62;、&#60;h2&#62;、&#60;h3&#62; html标签，&#160;&#160;&#160;&#160; 所有代码部分Ctrl+Enter&#160;&#160;&#160;&#160; 断行，即产生一个&#60;br /&#62;标签，这里注意ZDE自动产生的为&#60;br&#62;标签，不符合web标准Ctrl+~&#160;&#160;&#160;&#160; 空格即一个 注意：~键位于PC键盘数字1左侧，tab键上方Ctrl+B&#160;&#160;&#160;&#160; 粗体，产生一对&#60;b&#62;标签，web标准似乎提倡使用&#60;strong&#62;&#60;/strong&#62;Alt+I&#160;&#160;&#160;&#160; 斜体，产生一对&#60;i&#62;标签 [...]]]></description>
			<content:encoded><![CDATA[<p>本文省略“通用快捷键”描述，诸如：ctrl+N=新建，ctrl+O=打开，ctrl+C=复制，ctrl+V，ctrl+X……等等几乎所 有软件都通用的一组快捷键，而着重介绍zde独有的快捷键，了解并灵活运用这些快捷键以后，一定能帮助您在实际的项目操作中更加游刃有余。（怎么越写越觉 得我是在做游戏秘籍，哈哈！）<br /><strong>编辑功能 组合键&nbsp;&nbsp;&nbsp;&nbsp; 实现功能&nbsp;&nbsp;&nbsp;&nbsp; 适用条件</strong><br /><font color="#ff0000">Ctrl+/</font>&nbsp;&nbsp;&nbsp;&nbsp; 单行注释。当前为php代码时，则在光标所在行添加双斜杠行注释，选择多行则每一行都添加双斜杠；而当代码为html时则在行前后添加&lt;!– –&gt;注释，选中多行将在选区前后添加&lt;!– –&gt;注释，而非每行添加&nbsp;&nbsp;&nbsp;&nbsp; PHP代码、html代码全部适用，不适用于CSS部分<br /><font color="#ff0000">Ctrl+Shift+/</font>&nbsp;&nbsp;&nbsp;&nbsp; 块注释，为选择的PHP代码添加/* */块注释，如果没有选择任何代码，则将光标所在行添加块注释&nbsp;&nbsp;&nbsp;&nbsp; PHP代码适用，对HTML代码其功能与Ctrl+/相同  </p>
<p><font color="#ff0000">Ctrl+U</font>&nbsp;&nbsp;&nbsp;&nbsp; 选择的代码片段全部转换为大写&nbsp;&nbsp;&nbsp;&nbsp; php、html等均适用<br /><font color="#ff0000">Ctrl+L</font>&nbsp;&nbsp;&nbsp;&nbsp; 选择的代码片段全部转换为小写&nbsp;&nbsp;&nbsp;&nbsp; php、html等均适用<br /><font color="#ff0000">Ctrl+D</font>&nbsp;&nbsp;&nbsp;&nbsp; 复制光标所在行&nbsp;&nbsp;&nbsp;&nbsp; 所有代码均适用<br /><font color="#ff0000">Ctrl+E</font>&nbsp;&nbsp;&nbsp;&nbsp; 删除光标所在行&nbsp;&nbsp;&nbsp;&nbsp; 所有代码均适用<br /><font color="#ff0000">Tab/Shift+Tab</font>&nbsp;&nbsp;&nbsp;&nbsp; 按tab增加代码缩进，默认为4个空格位置，可在首选项中进行设置，Shift+Tab则减少缩进，此操作对多行操作同样有效。即多行同时增加/减少缩进。&nbsp;&nbsp;&nbsp;&nbsp; 所有代码均适用<br /><font color="#ff0000">Ctrl+Alt+F</font>&nbsp;&nbsp;&nbsp;&nbsp; 在文件中查找，打开“在文件中查找”对话框&nbsp;&nbsp;&nbsp;&nbsp; 整个ZDE环境适用<br /><font color="#ff0000">Ctrl+BackSpace</font>&nbsp;&nbsp;&nbsp;&nbsp; 删除光标前一个单词，或者一个符号，注意这里的“一个单词”是由ZDE自行理解的，与英文中的一个单词有一定出入&nbsp;&nbsp;&nbsp;&nbsp; 所有代码均适用<br /><font color="#ff0000">Ctrl+G</font>&nbsp;&nbsp;&nbsp;&nbsp; 转到行。打开转到行对话框，填写行数字即可转到相应行，此为通用快捷键&nbsp;&nbsp;&nbsp;&nbsp; 整个ZDE环境适用<br /><font color="#ff0000">Alt+ →,←</font>&nbsp;&nbsp;&nbsp;&nbsp; 右箭头是定位到光标的下一个位置，左箭头则是定位到光标的上一个位置。&nbsp;&nbsp;&nbsp;&nbsp; 整个ZDE环境适用 </p>
<p><span id="more-204"></span>
</p>
<p>环境切换 组合键&nbsp;&nbsp;&nbsp;&nbsp; 实现功能&nbsp;&nbsp;&nbsp;&nbsp; 适用条件<br /><font color="#ff0000">Esc</font>&nbsp;&nbsp;&nbsp;&nbsp; 隐藏辅助窗口，以便让编辑区域最大，而文件管理器窗口不会隐藏&nbsp;&nbsp;&nbsp;&nbsp; 整个ZDE环境适用<br /><font color="#ff0000">Ctrl+W</font>&nbsp;&nbsp;&nbsp;&nbsp; 切换自动换行，即当代码超长时是否出现横向滚动条<br /><font color="#ff0000">Ctrl+Tab</font>&nbsp;&nbsp;&nbsp;&nbsp; 在各个编辑器标签页之间切换，也可描述为在多个打开的文件窗口间切换<br /><font color="#ff0000">Ctrl+F4</font>&nbsp;&nbsp;&nbsp;&nbsp; 关闭当前标签页，Alt+F4是关闭整个ZDE环境，注意下区别  </p>
<p>HTML标记 组合键&nbsp;&nbsp;&nbsp;&nbsp; 实现功能&nbsp;&nbsp;&nbsp;&nbsp; 适用条件<br />Ctrl+1,2,3&nbsp;&nbsp;&nbsp;&nbsp; 分别添加一对&lt;h1&gt;、&lt;h2&gt;、&lt;h3&gt; html标签，&nbsp;&nbsp;&nbsp;&nbsp; 所有代码部分<br />Ctrl+Enter&nbsp;&nbsp;&nbsp;&nbsp; 断行，即产生一个&lt;br /&gt;标签，这里注意ZDE自动产生的为&lt;br&gt;标签，不符合web标准<br />Ctrl+~&nbsp;&nbsp;&nbsp;&nbsp; 空格即一个 注意：~键位于PC键盘数字1左侧，tab键上方<br />Ctrl+B&nbsp;&nbsp;&nbsp;&nbsp; 粗体，产生一对&lt;b&gt;标签，web标准似乎提倡使用&lt;strong&gt;&lt;/strong&gt;<br />Alt+I&nbsp;&nbsp;&nbsp;&nbsp; 斜体，产生一对&lt;i&gt;标签  </p>
<p>书签操作 组合键&nbsp;&nbsp;&nbsp;&nbsp; 实现功能&nbsp;&nbsp;&nbsp;&nbsp; 适用条件<br />F2&nbsp;&nbsp;&nbsp;&nbsp; 添加/删除书签&nbsp;&nbsp;&nbsp;&nbsp; 所有代码部分<br />Ctrl+F2&nbsp;&nbsp;&nbsp;&nbsp; 跳到当前文件的下一个书签<br />Alt+F2&nbsp;&nbsp;&nbsp;&nbsp; 在当前项目的所有书签间切换<br />Ctrl+Shift+F2&nbsp;&nbsp;&nbsp;&nbsp; 删除所有书签<br />Ctrl+Shift+M&nbsp;&nbsp;&nbsp;&nbsp; 显示书签对话框  </p>
<p>Zend Studio调试快捷键列表 组合键&nbsp;&nbsp;&nbsp;&nbsp; 实现功能&nbsp;&nbsp;&nbsp;&nbsp; 适用条件<br />F9&nbsp;&nbsp;&nbsp;&nbsp; 添加/删除断点&nbsp;&nbsp;&nbsp;&nbsp; 所有代码部分<br />F10&nbsp;&nbsp;&nbsp;&nbsp; 逐过程。单步执行调试文件到下一行<br />F5&nbsp;&nbsp;&nbsp;&nbsp; 开始执行。执行调试文件，直到遇到断点。<br />F8&nbsp;&nbsp;&nbsp;&nbsp; 调试URL。打开调试URL对话框<br />F12&nbsp;&nbsp;&nbsp;&nbsp; 概要文件URL。打开profile URL对话框<br />Shift+F8&nbsp;&nbsp;&nbsp;&nbsp; 添加监视点。打开添加监视点对话框<br />Shift+F11&nbsp;&nbsp;&nbsp;&nbsp; 跳出。单步执行到返回后执行的第一行<br />F11&nbsp;&nbsp;&nbsp;&nbsp; 逐语句。单步执行到下一被执行的行<br />Shift+F10&nbsp;&nbsp;&nbsp;&nbsp; 执行到光标行。执行代码到光标所在行。<br />Ctrl+F5&nbsp;&nbsp;&nbsp;&nbsp; 无中断的执行脚本<br />Shift+F5&nbsp;&nbsp;&nbsp;&nbsp; 停止调试器<br />Ctrl+Alt+B&nbsp;&nbsp;&nbsp;&nbsp; 在浏览器中显示</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinksoa.cn/news/204.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

