<?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>.::灵狼天::. &#187; How-To</title>
	<atom:link href="http://icyleaf.com/category/how-to/feed/" rel="self" type="application/rss+xml" />
	<link>http://icyleaf.com</link>
	<description>icyleaf&#039;s blog - 心外无理，心外无物，心外无事</description>
	<lastBuildDate>Tue, 13 Dec 2011 02:34:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>如何在开发和发布环境使用 Android Map Key</title>
		<link>http://icyleaf.com/2011/05/how-to-using-android-map-key-both-in-development-and-production/</link>
		<comments>http://icyleaf.com/2011/05/how-to-using-android-map-key-both-in-development-and-production/#comments</comments>
		<pubDate>Mon, 02 May 2011 08:56:18 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=867</guid>
		<description><![CDATA[在项目中第一次使用并涉及 Google Map 的功能，而由于 Google 的限制，Google Map 模块出来需要单独下载模块之外，对于每一个应用还都必须具有一个 Google Map Key，这点和使用 Web 开发调用 Google Map API 是一致的。 对于 Android 采用的 Google Map Key 来说，是由一串 MD5 值（类似这样：94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98）生成的。那么这个 MD5 是哪来的呢？ 1. 开发环境的 Google Map Key 这个比较简单，网上大面积教程所采用的 android 系统默认带有一个 debug.keystore。假如开发使用 Eclipse，在其 windows -&#62; &#8230; <a href="http://icyleaf.com/2011/05/how-to-using-android-map-key-both-in-development-and-production/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>在项目中第一次使用并涉及 Google Map 的功能，而由于 Google 的限制，Google Map 模块出来需要单独下载模块之外，对于每一个应用还都必须具有一个 Google Map Key，这点和使用 Web 开发调用 Google Map API 是一致的。</p>
<p>对于 Android 采用的 Google Map Key 来说，是由一串 MD5 值（类似这样：94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98）生成的。那么这个 MD5 是哪来的呢？</p>
<p>1. 开发环境的 Google Map Key</p>
<p>这个比较简单，网上大面积教程所采用的 android 系统默认带有一个 debug.keystore。假如开发使用 Eclipse，在其 windows -&gt; Preference -&gt; Android -&gt; Build 下，其中 Default debug keystore 的值便是 debug.keystore 的路径。</p>
<p>在命令行或者终端执行下面命令（注意指明 debug.keystore 的路径）即可获取到 MD5 值。</p>
<pre lang="bash">keytool -list -keystore debug.keystore</pre>
<p>2. 发布环境的 Google Map Key</p>
<p>假如你的应用需要上线到官方的 Google Market 上面，则需要根据其 apk 的签名证书（keystore）的 MD5 值去生成，方法也很简单，发布的签名同样可以使用 Eclipse 的 Export 工具制作。制作完毕后（或许这个生成的签名没有 .keystore 后缀，不用在意）。同样也使用上面的命令获取其 MD5 值。</p>
<pre lang="bash">
# 比如，证书路径 /home/icyleaf/android/ews
keytool -list -keystore /home/icyleaf/android/ews
...
#  查询到了 MD5 值
Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
</pre>
<p>使用其 MD5 值在 <a href="http://code.google.com/android/maps-api-signup.html">Sign Up for the Android Maps API</a> 页面填写生成即可。</p>
<p>接下来的步骤就没什么了，又是搜索出千篇一律的教程，大家 Google 之。</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2011/05/how-to-using-android-map-key-both-in-development-and-production/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSX: Finder 和 Terminal 的切换</title>
		<link>http://icyleaf.com/2010/12/switer-between-finder-and-terminal-in-osx/</link>
		<comments>http://icyleaf.com/2010/12/switer-between-finder-and-terminal-in-osx/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 06:21:38 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[Termianl]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=833</guid>
		<description><![CDATA[在 Finder 打开 Terminal 并切换到当前目录 安装一个开源的 Finder 辅助工具：cdto。功能只有一个就是实现在 Finder 打开 Terminal 并切换到当前 Finder 目录。找到你系统的版本的 app （支持当前 OS X 10.4 以上版本，应该都是雪豹了 吧）拷贝到 Applications 下并把它拖到 Finder 的工具栏上即可。 从 Terminal 中用 Finder 打开当前路径的目录 open . PS，如果是 Ubuntu 系统的话请安装 nautilus，然后在 Terminal 里面输入 nautilus .]]></description>
			<content:encoded><![CDATA[<p><strong>在 Finder 打开 Terminal 并</strong><strong>切换到当前目录</strong></p>
<p>安装一个开源的 Finder 辅助工具：<a href="http://code.google.com/p/cdto/" target="_blank">cdto</a>。功能只有一个就是实现在 Finder 打开 Terminal 并切换到当前 Finder 目录。找到你系统的版本的 app （支持当前 OS X 10.4 以上版本，应该都是雪豹了 吧）拷贝到 Applications 下并把它拖到 Finder 的工具栏上即可。</p>
<p><strong>从 Terminal 中用 Finder 打开当前路径的目录</strong></p>
<blockquote><p>open .</p></blockquote>
<p>PS，如果是 Ubuntu 系统的话请安装 nautilus，然后在 Terminal 里面输入</p>
<blockquote><p>nautilus .</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2010/12/switer-between-finder-and-terminal-in-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 Git Hooks 实现自动项目部署</title>
		<link>http://icyleaf.com/2010/09/apps-auto-deploy-with-git/</link>
		<comments>http://icyleaf.com/2010/09/apps-auto-deploy-with-git/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 01:36:36 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[自动部署]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=808</guid>
		<description><![CDATA[最近在某服务器上面搭建 git 开发和部署环境，git 开发环境很简单，按照 ProGit 一书的相关知识就可以轻松搞定，实现了类似 Github 的使用 SSH + 私有 Clone 的方式。 关于部署，奇迹上是自动部署，起初的想法是使用 bash shell 制定一个定时任务去不断 git pull 产品代码，后来记得 Git 带有 Hooks，索性在 ProGit 一书翻了翻： Git 本身可以调用自定义的挂钩脚本，其中有两组：客户端和服务器端。客户端挂钩用于客户端的操作，如提交和合并。服务器端挂钩用于 Git 服务器端的操作，如接收被推送的提交。详情请查看 ProGit 相关章节 如果这样就简单了，利用服务器端调用想要的挂钩（Hook），即可实现自动部署的方案，为了保证不被肆意部署，特加了一个对需要部署 commit 的判断，利用读取 commit subject 并匹配想要的字符串才去部署，这样我认为是一个比较安装的部署方案。 Git的挂钩（Hook）主要包含： applypatch-msg post-update &#8230; <a href="http://icyleaf.com/2010/09/apps-auto-deploy-with-git/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近在某服务器上面搭建 git 开发和部署环境，git 开发环境很简单，按照 ProGit 一书的相关知识就可以轻松搞定，实现了类似 Github 的使用 SSH + 私有 Clone 的方式。</p>
<p>关于部署，奇迹上是自动部署，起初的想法是使用 bash shell 制定一个定时任务去不断 git pull 产品代码，后来记得 Git 带有 Hooks，索性在 ProGit 一书翻了翻：</p>
<blockquote><p>Git 本身可以调用自定义的挂钩脚本，其中有两组：客户端和服务器端。客户端挂钩用于客户端的操作，如提交和合并。服务器端挂钩用于 Git 服务器端的操作，如接收被推送的提交。详情请查看 <a href="http://progit.org/book/zh/ch7-3.html">ProGit 相关章节</a></p></blockquote>
<p>如果这样就简单了，利用服务器端调用想要的挂钩（Hook），即可实现自动部署的方案，为了保证不被肆意部署，特加了一个对需要部署 commit 的判断，利用读取 commit subject 并匹配想要的字符串才去部署，这样我认为是一个比较安装的部署方案。</p>
<p>Git的挂钩（Hook）主要包含：</p>
<ul>
<li>applypatch-msg</li>
<li>post-update</li>
<li>pre-rebase</li>
<li>commit-msg</li>
<li>pre-applypatch</li>
<li>update</li>
<li>post-commit</li>
<li>pre-commit</li>
<li>post-receive</li>
<li>prepare-commit-msg</li>
</ul>
<p>这里我们只需要使用 post-receive 这个 Hook：在接收 post(push) 请求之后执行。其他大部分我也没有大多研究，不过看名字不算难理解，我觉得其中大部分包含 commit 的属于客户端。</p>
<p>好了，部署开始：</p>
<p>1. 在服务器 git 仓库（注意是 bare 仓库，不是代码仓库）的 Hooks，编辑 post-receive（如果没有自行创建），贴入下面代码（Feed 用户请看<a href="http://gist.github.com/566767">这里</a>）：<br />
<script src="http://gist.github.com/566767.js"></script><br />
这里会先判断脚本所在目录是否是 bare git 仓库，然后获取最新 commit 的 subject，并匹配是否包含 [deploy] 字样，如果包含，则继续检查产品代码仓库路径是否存在，如果存在则执行 git pull 操作。</p>
<p>2. 对刚才编辑的 post-receive 执行下面命令以保证脚本可执行：</p>
<pre lang="bash">$ chmod +x post-receive
</pre>
<p>3. 完成！</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>对于自定义脚本，其实不仅限于 bash shell，你可以使用你熟悉的语言，然后把你的脚本路径在 hooks 脚本中加载即可。</p>
<p>脚本还会继续更新，下面需要增加关于测试部分的相关判断和部署。 bash shell 还需要进一步学习，上面脚本是我第一次写，如有不妥之处，请指教，感谢！</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2010/09/apps-auto-deploy-with-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何获取 Element 的 XPath [PHP/Javascript]</title>
		<link>http://icyleaf.com/2010/04/how-to-get-xpath-of-an-element-for-php-and-javascript/</link>
		<comments>http://icyleaf.com/2010/04/how-to-get-xpath-of-an-element-for-php-and-javascript/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 03:04:20 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[网络开发]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XPath]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=759</guid>
		<description><![CDATA[这两天研究 HTML 的 DOM 需要寻找某个 Element 元素的完整 XPath 路径，由于使用的是 PHP Simple HTML DOM Parser 开源库，这个库类的使用方法几乎兼容 Javascript 的 DOM 语法并附带 DOM 选择器。虽然功能强大但是并不能直接获取 Element 的 XPath。这个怎么办呢，依稀记得 Firebug 有一个功能，选择某个元素在它的控制台可以显示 XPath。嗯，着手实践一下发现不仅可以显示而且还可以复制 XPath。 于是想，如果可以找到 Javascript 版的相关代码就一定可以改成 PHP 版本的，结果在 Google 搜索找到了&#8230; var elt = document.getElementById('table'); var &#8230; <a href="http://icyleaf.com/2010/04/how-to-get-xpath-of-an-element-for-php-and-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这两天研究 HTML 的 DOM 需要寻找某个 Element 元素的完整 XPath 路径，由于使用的是 <a href="http://simplehtmldom.sourceforge.net/manual.htm">PHP Simple HTML DOM Parser</a> 开源库，这个库类的使用方法几乎兼容 Javascript 的 DOM 语法并附带 DOM 选择器。虽然功能强大但是并不能直接获取 Element 的 XPath。这个怎么办呢，依稀记得 Firebug 有一个功能，选择某个元素在它的控制台可以显示 XPath。嗯，着手实践一下发现不仅可以显示而且还可以复制 XPath。</p>
<p>于是想，如果可以找到 Javascript 版的相关代码就一定可以改成 PHP 版本的，结果在 Google 搜索找到了&#8230;</p>
<pre lang="javascript" line="1" colla="+">
var elt = document.getElementById('table');
var xpath = getElementXPath(elt);
alert(xpath);

// Get full XPath of an element
function getElementXPath(elt)
{
	var path = "";
	for (; elt &#038;&#038; elt.nodeType == 1; elt = elt.parentNode)
	{
		idx = getElementIdx(elt);
		xname = elt.tagName;
		if (idx > 1) xname += "[" + idx + "]";
		path = "/" + xname + path;
	}

	return path;
}

// Get Idx of an element
function getElementIdx(elt)
{
    var count = 1;
    for (var sib = elt.previousSibling; sib ; sib = sib.previousSibling)
    {
        if(sib.nodeType == 1 &#038;&#038; sib.tagName == elt.tagName)	count++
    }

    return count;
}
</pre>
<p>PHP 改进版：</p>
<pre lang="php" line="1" colla="+">
// Use it before import PHP Simple HTML DOM Parser
$html = file_get_html('http://www.google.com/');
// find a sample element by id
$elt1 = $html->find('#footer', 0);
// find a sample element by tag name
$elt2= $html->find('div', 10);

// it will return if found it: //*[@id="footer"]
$xpath = getElementXPath($elt1);

// it will return if found it: html/body/div[10]
$xpath = getElementXPath($elt2);

function getElementXPath($elt)
{
	$path = '';
	$first = TRUE;
	for(; ($elt AND $elt->nodetype == 1); $elt = $elt->parent())
	{
		$xname = $elt->tag;
		$idx = getElementIdx($elt);

		if ($first AND isset($elt->attr['id']))
		{
			$path = '//*[@id="' . $elt->attr['id'] . '"]';
			break;
		}

		if ($idx > 1)
		{
			$xname .= '[' . $idx . ']';
		}

		$path = '/'.$xname.$path;

		$first = FALSE;
	}

	return $path;
}

function getElementIdx($elt)
{
    $count = 1;
    for($sib = $elt->prev_sibling(); $sib ; $sib = $sib->prev_sibling())
    {
        if($sib->nodetype == 1 &#038;&#038; $sib->tag == $elt->tag)
        {
        	$count++;
        }
    }

    return $count;
}
</pre>
<p>大家同样可以把上面的代码直接 crack 到 PHP Simple HTML DOM Parser 库中。</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2010/04/how-to-get-xpath-of-an-element-for-php-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>克隆 Ubuntu 安装程序</title>
		<link>http://icyleaf.com/2008/10/cloning-your-ubuntu-installation/</link>
		<comments>http://icyleaf.com/2008/10/cloning-your-ubuntu-installation/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 02:12:17 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=416</guid>
		<description><![CDATA[原文链接：Cloning your Ubuntu Installation 对于两台以上的不同配置的机器，对于初学者来说（我也算，呵呵）想要每台机器安装同样的软件是非常麻烦的事情。下面在这篇文章中原作者提供了一种简单的方式解决了这个问题，核心思路为：如何把一台 Ubuntu 的已安装包列表导出并把它们导入到到其他机器的 Ubuntu 系统之中。 复制系统软件源文件 复制 /etc/apt/sources.list 文件到U盘（或其他移动设备）上面。 导出已安装包列表 $ dpkg --get-selections &#124; grep '[[:space:]]install$' &#124; \\ awk '{print $1}' > ~/package.list 复制 package.list 文件到U盘（或其他移动设备）上面。 设置目标系统 更新软件包列表，以确保获得最新版本的软件包 $ apt-get update 导入包列表 $ cat ~/package.list &#124; &#8230; <a href="http://icyleaf.com/2008/10/cloning-your-ubuntu-installation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>原文链接：<a href="http://phpimpact.wordpress.com/2008/10/22/cloning-your-ubuntu-installation/" target="_blank">Cloning your Ubuntu Installation</a></p>
<p>对于两台以上的不同配置的机器，对于初学者来说（我也算，呵呵）想要每台机器安装同样的软件是非常麻烦的事情。下面在这篇文章中原作者提供了一种简单的方式解决了这个问题，核心思路为：如何把一台 Ubuntu 的已安装包列表导出并把它们导入到到其他机器的 Ubuntu 系统之中。</p>
<p><strong>复制系统软件源文件</strong><br />
复制 /etc/apt/sources.list 文件到U盘（或其他移动设备）上面。</p>
<p><strong>导出已安装包列表</strong></p>
<pre lang="text" line="1" colla="+">
$ dpkg --get-selections | grep '[[:space:]]install$' | \\
awk '{print $1}' > ~/package.list
</pre>
<p>复制 package.list 文件到U盘（或其他移动设备）上面。</p>
<p><strong>设置目标系统</strong><br />
更新软件包列表，以确保获得最新版本的软件包</p>
<pre lang="text" line="1" colla="+">
$ apt-get update
</pre>
<p><strong>导入包列表</strong></p>
<pre lang="text" line="1" colla="+">
$ cat ~/package.list | xargs apt-get install
</pre>
<p>完成！所有包列表的程序都会导入到新的系统当中，但这并不意味着所有的设置已经克隆。为了完成这一点，您可能会需要从 /etc 目录复制配置文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/10/cloning-your-ubuntu-installation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>校内网，海内网，开心网用户隐私查看器</title>
		<link>http://icyleaf.com/2008/10/the-school-network-network-happy-at-home-and-network-user-privacy-viewer/</link>
		<comments>http://icyleaf.com/2008/10/the-school-network-network-happy-at-home-and-network-user-privacy-viewer/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 09:56:03 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Webware]]></category>
		<category><![CDATA[生活记录]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[开心网]]></category>
		<category><![CDATA[校内网]]></category>
		<category><![CDATA[海内网]]></category>

		<guid isPermaLink="false">http://icyleaf.com/?p=398</guid>
		<description><![CDATA[更新：目前校内网已经修补了此漏洞，所以大家可以放弃了，除非你想抓住那 1% 的机会 你想查看他或她的私隐信息吗？如果你说的他或她是校内网，海内网，开心网的用户，那么请你尝试一下，校内网，海内网，开心网用户隐私查看器。通过这个工具，你可以轻松的获得用户的相册照片，日志文章以及状态（迷你博客）的内容。恩&#8230;趁着目前都还没有打补丁之前。不要做坏事哦～ 工具 校内网，海内网，开心网用户隐私查看器 此工具重点做的是校内网的功能模块，对于海内网和开心网的用户，只是显示了用户的相关链接。 使用说明 首先！必须先登录网站系统之后才进行操作！ 无论是校内网，海内网还是开心网的用户，首先都需要获得用户的ID，那么怎么获得呢，很简单，只要打开用户的个人界面，查看地址的末尾的数字。一般会以下列的方式出现： http://xiaonei.com/profile.do?id=123456 http://www.hainei.com/user?r=123456 http://www.kaixin001.com/home/?uid=123456 数字前面的就可以看出来是用户ID。获得用户ID之后，只要把用户ID填入到校内网，海内网，开心网用户隐私查看器的相应输入框，并选择是哪个网站的用户，点击”Get it!“，稍等片刻就会获得用户的相关链接。 原理 由于校内网和海内网均属于一个团队开发出来的，所以在系统但自身机制上的问题， 可以通过地址绕过的方式查看用户的相册，日志，状态记录等等非用户资料信息。但是开心网可能考虑到用户的安全性，在默认选项上安全系数提高了一级。那么到底是哪里提供了呢，好的，我简单讲解一下，对于校内网和海内网，用户无论是创建相册还是添加日志和状态记录，默认的隐私属性（谁能浏览）为”全站用户可见”，这就导致了校内网，海内网，开心网用户隐私查看器的出现。而开心网除了日志之外，其相册，记录默认为“好友可见”。所以，可查看的资源只有日志，还有极少数的用户可能会把相册的隐私属性设置为”全站用户可见”。 补救方法 等待系统的修改，或者系统可能就是为了这样&#8230; 手动修改&#8230;把隐私属性修改为“好友可见”或其他。 特别声明 本工具只为技术交流使用，请勿做非法事情，如有此事请自己承担法律责任！切记！切记！]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>更新</strong>：目前校内网已经修补了此漏洞，所以大家可以放弃了，除非你想抓住那 1% 的机会</p></blockquote>
<p>你想查看他或她的私隐信息吗？如果你说的他或她是校内网，海内网，开心网的用户，那么请你尝试一下，校内网，海内网，开心网用户隐私查看器。通过这个工具，你可以轻松的获得用户的相册照片，日志文章以及状态（迷你博客）的内容。恩&#8230;趁着目前都还没有打补丁之前。不要做坏事哦～</p>
<p><strong>工具</strong><br />
<a href="http://labs.icyleaf.com/tools/sns_user_informations.php" target="_self">校内网，海内网，开心网用户隐私查看器</a></p>
<p>此工具重点做的是校内网的功能模块，对于海内网和开心网的用户，只是显示了用户的相关链接。</p>
<p><strong>使用说明</strong><br />
首先！必须先登录网站系统之后才进行操作！         	无论是校内网，海内网还是开心网的用户，首先都需要获得用户的ID，那么怎么获得呢，很简单，只要打开用户的个人界面，查看地址的末尾的数字。一般会以下列的方式出现：</p>
<blockquote><p>http://xiaonei.com/profile.do?id=123456</p>
<p>http://www.hainei.com/user?r=123456</p>
<p>http://www.kaixin001.com/home/?uid=123456</p></blockquote>
<p>数字前面的就可以看出来是用户ID。获得用户ID之后，只要把用户ID填入到校内网，海内网，开心网用户隐私查看器的相应输入框，并选择是哪个网站的用户，点击”Get it!“，稍等片刻就会获得用户的相关链接。</p>
<p><strong>原理</strong><span id="more-398"></span><br />
由于校内网和海内网均属于一个团队开发出来的，所以在系统但自身机制上的问题，         		可以通过地址绕过的方式查看用户的相册，日志，状态记录等等非用户资料信息。但是开心网可能考虑到用户的安全性，在默认选项上安全系数提高了一级。那么到底是哪里提供了呢，好的，我简单讲解一下，对于校内网和海内网，用户无论是创建相册还是添加日志和状态记录，默认的隐私属性（谁能浏览）为”全站用户可见”，这就导致了校内网，海内网，开心网用户隐私查看器的出现。而开心网除了日志之外，其相册，记录默认为“好友可见”。所以，可查看的资源只有日志，还有极少数的用户可能会把相册的隐私属性设置为”全站用户可见”。</p>
<p><strong>补救方法</strong></p>
<ol>
<li>等待系统的修改，或者系统可能就是为了这样&#8230;</li>
<li>手动修改&#8230;把隐私属性修改为“好友可见”或其他。</li>
</ol>
<p><strong>特别声明</strong><br />
本工具只为技术交流使用，请勿做非法事情，如有此事请自己承担法律责任！切记！切记！</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/10/the-school-network-network-happy-at-home-and-network-user-privacy-viewer/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>如何制定免费短信提醒新邮件</title>
		<link>http://icyleaf.com/2008/06/how-to-prepare-for-free-sms-alerts-for-new-mail/</link>
		<comments>http://icyleaf.com/2008/06/how-to-prepare-for-free-sms-alerts-for-new-mail/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 10:22:53 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[免费短信]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.icyleaf.cn/?p=206</guid>
		<description><![CDATA[邮箱每个人都有，而且大部分应该还不只一个而已，分类使用，工作用一个，生活用一个，申请会员/社区再用一个&#8230;.不过多少个一般都会有一个比较重要的，和朋友交流的email。比如我，平时和朋友聊天以及WordPress的留言自动邮件都是发到一个指定的邮件里。一旦到了周六，周日休息的时候，可能会错过一些重要的邮件，而用手机上网收发邮件虽然可以，但是我们总可能一直在刷新吧，所以几天突然想起来邮箱都是由自动转发功能的，那么利用什么做中间介质发短信通知到自己的手机上呢？ 中国移动间接的为我们提供了一个非常棒的服务：手机邮箱(又名139邮箱)，中国移动免费提供1G的服务，直接申请就可以了，然后无论什么时候，只要139邮箱有了新邮件，它就会发一个免费短信到自己的手机上，而且还支持在手机上阅读哦！那么我们开始行动吧。 如果你要设定转发所有的邮件请按照这个步骤： 这里我拿Gmail做例子，点击设置（settings）-&#62; 转发和POP/IMAP（Forwarding and POP/IMAP）。勾选“转发邮件副本到（Forward a copy of incoming mail to）”再在后面填写上你的手机邮箱填上，在保存即可。 如果你要设定转发符合条件的邮件请按照这个步骤： 同样以Gmail为例子，点击设置（settings）-&#62;关铝其（Filters），点击新建过滤器（Create a new filter)，然后根据提示的配置框填写你指定的参数即可，填写完成后，点击”测试搜索&#8221;可以预览你的设置是否符合你的要求，如果没有达到，请重新设置，再测试，直到达成你的要求后点击下一步，然后勾选倒数第二项，“转发到（Forward it to）”然后再在后面填写上你的手机邮箱填上，在保存即可。 注意：这两个方法不能同时实现，任选其一。 再找一个邮件测试下，一会你就能听到自己手机的短信铃声咯～祝大家好运!]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uvsc.edu/email/images/email-at1.gif" alt="email" width="431" height="304" /></p>
<p>邮箱每个人都有，而且大部分应该还不只一个而已，分类使用，工作用一个，生活用一个，申请会员/社区再用一个&#8230;.不过多少个一般都会有一个比较重要的，和朋友交流的email。比如我，平时和朋友聊天以及WordPress的留言自动邮件都是发到一个指定的邮件里。一旦到了周六，周日休息的时候，可能会错过一些重要的邮件，而用手机上网收发邮件虽然可以，但是我们总可能一直在刷新吧，所以几天突然想起来邮箱都是由自动转发功能的，那么利用什么做中间介质发短信通知到自己的手机上呢？</p>
<p><span id="more-206"></span>中国移动间接的为我们提供了一个非常棒的服务：<a href="http://mail.139.com" target="_self">手机邮箱(</a>又名139邮箱)，中国移动免费提供1G的服务，直接申请就可以了，然后无论什么时候，只要139邮箱有了新邮件，它就会发一个免费短信到自己的手机上，而且还支持在手机上阅读哦！那么我们开始行动吧。</p>
<p><strong>如果你要设定转发所有的邮件请按照这个步骤：</strong><br />
这里我拿Gmail做例子，点击设置（settings）-&gt; 转发和POP/IMAP（<span>Forwarding and POP/IMAP）。勾选</span><span>“转发邮件副本到（</span><span>Forward a copy of incoming mail to）”</span><span>再在后面填写</span><span>上你的手机邮箱填上，在保存即可。</span></p>
<p><strong>如果你要设定转发符合条件的邮件请按照这个步骤：</strong><br />
同样以Gmail为例子，点击设置（settings）-&gt;关铝其（<span>Filters），点击新建过滤器（</span><span id="1et1" class="GaVz0">Create a new filter)，然后根据提示的配置框填写你指定的参数即可，填写完成后，点击”测试搜索&#8221;可以预览你的设置是否符合你的要求，如果没有达到，请重新设置，再测试，直到达成你的要求后点击下一步，然后勾选倒数第二项，</span>“转发到（Forward it to）”然后<span>再在后面填写</span><span>上你的手机邮箱填上，在保存即可。<br />
注意：<strong>这两个方法不能同时实现，任选其一</strong>。</span></p>
<p>再找一个邮件测试下，一会你就能听到自己手机的短信铃声咯～祝大家好运!</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/06/how-to-prepare-for-free-sms-alerts-for-new-mail/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress插件教程：如何编写TinyMCE插件</title>
		<link>http://icyleaf.com/2008/06/how-to-load-tinymce-plugins-for-wordpress/</link>
		<comments>http://icyleaf.com/2008/06/how-to-load-tinymce-plugins-for-wordpress/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 07:30:03 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[WS Audio Player]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.icyleaf.cn/?p=202</guid>
		<description><![CDATA[编写WordPress（以下简称wp）插件难免要和关联着wp的某一个或多个方面的东西，就拿我的刚更新的WS Auido Player插件来说，它需要提供一个窗口使得用户输入某些值来达到简化用户记忆以及操作的功能。自己敲一个两个代码还好，如果全部都是自己写的话，那和写HTML有什么区别呢？这个就是TinyMCE编辑器面世的主要目的之一。 其实想这个部分的东西，主要是因为国内也没出几个这样的插件（或者是我不知道而已）再者是也蛮少有人来写这方面的教程，网上找到的只有干巴巴、苦涩的英文句子，看着就是没中国字舒服，呵呵(^___^)，所以我就花了点时间自己整理出了这个教程。当然wp官方也有提到如何编写只不过写了一些核心的几句代码（看这里），剩下的还让你自己参考wp系统中tinymce插件。为什么要看wp系统中tinymce插件，而不是看tinymce官方的文档呢，这里要说句牢骚的话。wp其中使用到了很多及其优秀的开源代码，而且每个东西还或多或少的修改修改。这一下让我们看开源代码不是，看wp系统又感到迷茫。最好的是两者都得看。 书归正传，首先我们先简述下Tinymce在wp中用到版本。在wp 2.1.x &#8211; 2.3.x版本中使用到的是一直没有更改Tinymce 2。而在Tinymce 3推出不久，wp做了重大的版本变动，也就是现在的2.5，其中更新至tinymce3。而tinymce3也是一个大变动的版本，其中较大的改写了tinymce插件的函数。当然这也是为了方便用户而改进的。注意由于wp2.3.x版本已经老了，本教程只支持wp2.5以上版本。 首先，构建wp插件必要的文件以及基本代码，这里我把插件项目的名称叫做“SimplePlugins”以便记忆。首先我们先看下主文件的全部代码：]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://i2.6.cn/tu.6.cn/94/e5/5a/1a1624cb0d5f7ae890fb0d019218ad43.jpg" alt="#Header" width="450" height="120" /></p>
<p>编写WordPress（以下简称wp）插件难免要和关联着wp的某一个或多个方面的东西，就拿我的刚更新的<a href="http://www.icyleaf.cn/projects/ws-audio-player/" target="_self">WS Auido Player</a>插件来说，它需要提供一个窗口使得用户输入某些值来达到简化用户记忆以及操作的功能。自己敲一个两个代码还好，如果全部都是自己写的话，那和写HTML有什么区别呢？这个就是TinyMCE编辑器面世的主要目的之一。</p>
<p>其实想这个部分的东西，主要是因为国内也没出几个这样的插件（或者是我不知道而已）再者是也蛮少有人来写这方面的教程，网上找到的只有干巴巴、苦涩的英文句子，看着就是没中国字舒服，呵呵(^___^)，所以我就花了点时间自己整理出了这个教程。当然wp官方也有提到如何编写只不过写了一些核心的几句代码（<a href="http://codex.wordpress.org/TinyMCE_Custom_Buttons" target="_self">看这里</a>），剩下的还让你自己参考wp系统中tinymce插件。为什么要看wp系统中tinymce插件，而不是看tinymce官方的文档呢，这里要说句牢骚的话。wp其中使用到了很多及其优秀的开源代码，而且每个东西还或多或少的修改修改。这一下让我们看开源代码不是，看wp系统又感到迷茫。最好的是两者都得看。<br />
<span id="more-202"></span><br />
书归正传，首先我们先简述下Tinymce在wp中用到版本。在wp 2.1.x &#8211; 2.3.x版本中使用到的是一直没有更改Tinymce 2。而在Tinymce 3推出不久，wp做了重大的版本变动，也就是现在的2.5，其中更新至tinymce3。而tinymce3也是一个大变动的版本，其中较大的改写了tinymce插件的函数。当然这也是为了方便用户而改进的。<strong>注意由于wp2.3.x版本已经老了，本教程只支持wp2.5以上版本</strong>。</p>
<p>首先，构建wp插件必要的文件以及基本代码，这里我把插件项目的名称叫做“SimplePlugins”以便记忆。首先我们先看下主文件的全部代码：<br />
<coolcode lang="php"><br />
<?php<br />
/*<br />
Plugin Name: Simple Plugins<br />
Plugin URI: http://www.icyleaf.cn/<br />
Description: Simple Plugins<br />
Version: 1.0<br />
Author: icyleaf<br />
Author URI: http://www.icyleaf.cn/<br />
*/</p>
<p>// 定义一个常量并判断wp是否是2.5以上版本<br />
define('IS_WP25', version_compare($wp_version, '2.4', '>=&#8217;) );</p>
<p>// 定义插件目录的常量<br />
$myabspath = str_replace(&#8220;\\&#8221;,&#8221;/&#8221;,ABSPATH);  // 针对Windows &#038; XAMPP<br />
define(&#8216;WINABSPATH&#8217;, $myabspath);<br />
define(&#8216;WSAPFOLDER&#8217;, dirname(plugin_basename(__FILE__)));<br />
define(&#8216;WSAP_ABSPATH&#8217;, $myabspath.&#8217;wp-content/plugins/&#8217; . WSAPFOLDER .&#8217;/');<br />
define(&#8216;WSAP_URLPATH&#8217;, get_option(&#8216;siteurl&#8217;).&#8217;/wp-content/plugins/&#8217; . WSAPFOLDER.&#8217;/');</p>
<p>if (IS_WP25){<br />
function SinmplePlugins_addbuttons() {<br />
	// 权限判断，若没有撰写日志和页面的权限就返回。<br />
	if ( !current_user_can(&#8216;edit_posts&#8217;) &#038;&#038; !current_user_can(&#8216;edit_pages&#8217;) ) return;</p>
<p>	// 仅在Visual（可视化）模式下添加<br />
	if ( get_user_option(&#8216;rich_editing&#8217;) == &#8216;true&#8217;) {<br />
	        // 添加必要的函数到wp hook里面<br />
		add_filter(&#8220;mce_external_plugins&#8221;, &#8220;add_SinmplePlugins_tinymce_plugin&#8221;, 5);<br />
		add_filter(&#8216;mce_buttons&#8217;, &#8216;register_SinmplePlugins_button&#8217;, 5);<br />
	}<br />
}</p>
<p>// 在wp2.5的tinymce编辑器注册按钮插件，名字要独一无二<br />
function register_SinmplePlugins_button($buttons) {<br />
	array_push($buttons, &#8220;separator&#8221;, &#8220;PluginsName&#8221;);<br />
	return $buttons;<br />
}</p>
<p>// 加载自定义的TinyMCE插件：editor_plugin.js (wp2.5)<br />
function add_SinmplePlugins_tinymce_plugin($plugin_array) {<br />
	$plugin_array['PluginsName'] = WSAP_URLPATH.&#8217;tinymce3/editor_plugin.js&#8217;;<br />
	return $plugin_array;<br />
}</p>
<p>function SinmplePlugins_change_tinymce_version($version) {<br />
	return ++$version;<br />
}</p>
<p>// 当你的tinyMCE插件改变了就修改tinyMCE插件版本号。<br />
add_filter(&#8216;tiny_mce_version&#8217;, &#8216;SinmplePlugins_change_tinymce_version&#8217;);</p>
<p>// 插件初始化<br />
add_action(&#8216;init&#8217;, &#8216;SinmplePlugins_addbuttons&#8217;);<br />
}<br />
?><br />
</coolcode></p>
<p>可能大家通过上面的代码还不明白，我这里简单讲述一下核心的东西。wp2.5版本把之前的钩子替换掉了，在wp2.5+中关系Tinymce3，主要是由以下两个钩子：<br />
<strong>mce_buttons</strong>：通过一个以按钮名字做参数的（输入输出）PHP函数来注册按钮并返回。 &#8220;|&#8221;符合可以使用separator代替。<br />
<strong>mce_external_plugins</strong>：通过一个输入输出PHP函数关联数组：&#8217;plugin_name&#8217; => &#8216;plugin_url&#8217;<br />
<strong>tiny_mce_version</strong>：通过版本号码作为一个字符串，它可以自动改变tinyMCE插件的版本号。</p>
<p>另外，tinymce插件是放在名为tinymce3的文件夹下面，当然名字是自定义的。对于tinymce插件这里还需要大家看一下tinymce3的文档，其配置文件名为editor_plugin.js，通过点击按钮加载的显示窗口的文件是window.php，然后再通过一个js脚本（tinymce.js）来把设置的内容添加到编辑器中。</p>
<p><coolcode lang="javascript"><br />
// Docu : http://wiki.moxiecode.com/index.php/TinyMCE:Create_plugin/3.x#Creating_your_own_plugins</p>
<p>(function() {<br />
	// 多语言支持的插件标识，和langs的各个语言文件匹配<br />
	tinymce.PluginManager.requireLangPack(&#8216;SimplePlugins&#8217;);</p>
<p>	tinymce.create(&#8216;tinymce.plugins.SimplePlugins&#8217;, {<br />
		/**<br />
		 * 初始化插件， 在创建完成后就可以显示执行了<br />
		 * @参数 {tinymce.Editor} ed 编辑器初始化点。<br />
		 * @参数 {string} url 插件位置的绝对URL。<br />
		 */<br />
		init : function(ed, url) {<br />
			// 加载按钮时，执行此函数，名字以小写的mce开头，后面接注册插件的名字。<br />
			ed.addCommand(&#8216;mceSimplePlugins&#8217;, function() {<br />
				ed.windowManager.open({<br />
					file : url + &#8216;/window.php&#8217;,  //显示窗口的文件<br />
					width : 360 + ed.getLang(&#8216;SimplePlugins.delta_width&#8217;, 0),<br />
					height : 210 + ed.getLang(&#8216;SimplePlugins.delta_height&#8217;, 0),<br />
					inline : 1<br />
				}, {<br />
					plugin_url : url // 插件的绝对URL.<br />
				});<br />
			});</p>
<p>			// 注册按钮<br />
			ed.addButton(&#8216;SimplePlugins&#8217;, {<br />
				title : &#8216;SimplePlugins.desc&#8217;,<br />
				cmd : &#8216;mceSimplePlugins&#8217;,<br />
				image : url + &#8216;/simple.png&#8217;  //按钮的图标<br />
			});</p>
<p>			// Add a node change handler, selects the button in the UI when a image is selected<br />
			ed.onNodeChange.add(function(ed, cm, n) {<br />
				cm.setActive(&#8216;SimplePlugins&#8217;, n.nodeName == &#8216;MP3&#8242;);<br />
			});<br />
		},</p>
<p>		/**<br />
		 * Creates control instances based in the incomming name. This method is normally not<br />
		 * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons<br />
		 * but you sometimes need to create more complex controls like listboxes, split buttons etc then this<br />
		 * method can be used to create those.<br />
		 *<br />
		 * @param {String} n Name of the control to create.<br />
		 * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.<br />
		 * @return {tinymce.ui.Control} New control instance or null if no control was created.<br />
		 */<br />
		createControl : function(n, cm) {<br />
			return null;<br />
		},</p>
<p>		// 插件信息<br />
		getInfo : function() {<br />
			return {<br />
					longname  : &#8216;SimplePlugins&#8217;,<br />
					author 	  : &#8216;icyleaf&#8217;,<br />
					authorurl : &#8216;http://www.icyleaf.cn/how-to-load-tinymce-plugins-for-wordpress&#8217;,<br />
					infourl   : &#8216;http://www.icyleaf.cn&#8217;,<br />
					version   : &#8220;1.0&#8243;<br />
			};<br />
		}<br />
	});</p>
<p>	// 注册插件<br />
	tinymce.PluginManager.add(&#8216;SimplePlugins&#8217;, tinymce.plugins.SimplePlugins);<br />
})();<br />
</coolcode></p>
<p>这个是一个典型的配置文件，不好意思英语很烂，只能简单翻译，在这个文件的开头是加载语言的标识，语言文件都放在其插件的langs文件夹下面，一每个国家的语言缩写作为其语言，比如，美式英语：en_US.js；中国的简体中文，那就是cn_ZH.js。</p>
<p>window.php是窗口显示的文件，这里就不在多说了，大家自己看下<a href="http://www.icyleaf.cn/projects/ws-audio-player/" target="_self">WS Auido Player</a>插件的代码就知道了，那么如何把填写好的配置返回到编辑器里面呢，如果你注意看window.php，你会发现，他在提交时调用了一个js函数。这个函数是放在插件的tinymce.js文件里面。然后通过tinymce.js主函数的处理就把相关的代码插入到编辑器当中了：）</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/06/how-to-load-tinymce-plugins-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>网上关注汶川地震指南[转载]</title>
		<link>http://icyleaf.com/2008/05/internet-guide-to-the-earthquake-concern-wenchuan-reprint/</link>
		<comments>http://icyleaf.com/2008/05/internet-guide-to-the-earthquake-concern-wenchuan-reprint/#comments</comments>
		<pubDate>Thu, 15 May 2008 01:47:11 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[地震]]></category>

		<guid isPermaLink="false">http://www.icyleaf.cn/?p=192</guid>
		<description><![CDATA[文章转自：风言疯语之IT罗盘 天气：中央气象台、天气在线 地图：“地震形势图”（Google），位置地标和地震形势地标(GoogleEarth) 地震信息：地震数据共享中心（可通过twitter获取信息）、中国地震局、全球最近7天地震信息 专题报导：四川在线、新华网、腾讯网、新浪网、搜狐网、网易网、中华网、TOM网、凤凰网 网友讨论：天涯汶川地震讨论区、天涯地震吧、百度地震吧、百度汶川吧、百度四川吧、百度都江堰吧、百度汶川地震祈福吧、百度汶川地震寻人吧 迷你博客：饭否直播(手机版)、jiwai.de 电视直播：CCTV新闻频道、四川卫视 搜救资料：《城市灾难搜救火线手册》(PDF,线上版)、地震中逃生十大法则、如何对地震预防自救、实用避震手册、地震应急手册 民间活动：多背1kg、牛博网、NGO救援联合行动信息汇总 背景资料：阿坝州汶川县情况、汶川县_百度百科资料 收音频率：成都市FM103.7，AM639，攀枝花FM101.4，AM981德 阳市FM88.4绵阳市FM95.1，广元市FM91.0，AM981，内江市FM82.2，乐山市FM92.1，AM1008。巴中市FM93.2，阿 坝藏族羌族自治州AM639，甘孜藏族自治州91.3，AM981，凉山彝族自治州AM981。 募捐资料：易宝捐款、淘宝网友捐款（支付宝） 、腾讯网友捐款（财富通） 、中国扶贫基金会募捐、日本网友募捐、捐款情况汇总 另外，亦可通过中国红十字会总会李连杰壹基金计划进行捐款， 登陆淘宝网进行支付宝在线捐赠 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 希望献血的朋友注意，现在重庆、北京的血库已经饱和，暂时不能再接受献血。 （信息来自新闻早报）]]></description>
			<content:encoded><![CDATA[<p>文章转自：<a href="http://www.kuangfeng.cn/blog">风言疯语之IT罗盘</a></p>
<div class="postContent">
<p style="text-align: center;"><span style="color: #ff0000;"><span style="color: #000000;"><strong><a href="http://www.kuangfeng.cn/blog/wp-content/uploads/2008/05/dzbanner.gif"><img class="alignnone size-full wp-image-1619 aligncenter" title="dzbanner" src="http://www.kuangfeng.cn/blog/wp-content/uploads/2008/05/dzbanner.gif" alt="" width="468" height="60" /></a></strong></span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"><strong>天气：</strong></span><a href="http://www.weather.com.cn/special/earthquake/1/">中央气象台</a><span style="color: #000000;">、</span><a href="http://www.t7online.com/Sichuan.htm">天气在线</a></span></p>
<p><strong>地图：</strong><a href="http://ditu.google.com/maps/ms?hl=zh-CN&amp;ie=UTF8&amp;oe=UTF8&amp;msa=0&amp;msid=105498083399349668294.00044d0490f73e7f5c173&amp;mid=1210583203" target="_blank"><strong>“</strong>地震形势图”</a>（Google），<a href="http://earthquake.usgs.gov/eqcenter/recenteqsww/Quakes/us2008ryan.kml">位置地标</a>和<a href="http://earthquake.usgs.gov/eqcenter/catalogs/eqs7day-age.kmz">地震形势地标</a>(GoogleEarth)</p>
<p><strong>地震信息：</strong><a href="http://data.earthquake.cn/">地震数据共享中心</a>（可通过<a href="https://twitter.com/earthquake_cn">twitter</a>获取信息）、<a href="http://www.cea.gov.cn/">中国地震局</a>、<a href="http://earthquake.usgs.gov/eqcenter/recenteqsww/">全球最近7天地震信息</a></p>
<p><strong>专题报导：</strong><a href="http://www.scol.com.cn/nsichuan/ztxw/2008512172745.htm">四川在线</a>、<a href="http://www.xinhuanet.com/politics/kzjz/">新华网</a>、<a href="http://news.qq.com/zt/2008/dizhen/">腾讯网</a>、<a href="http://news.sina.com.cn/z/08earthquake/index.shtml">新浪网</a>、<a href="http://news.sohu.com/s2008/dizhen/">搜狐网</a>、<a href="http://news.163.com/special/00012MS5/sichuan0512.html">网易网</a>、<a href="http://news.china.com/zh_cn/focus/2008dizhen/">中华网</a>、<a href="http://news.tom.com/2008/wenchuan/index.html">TOM网</a>、<a href="http://news.ifeng.com/special/0512earthquake/">凤凰网</a></p>
<p><strong>网友讨论：</strong><a href="http://cache.tianya.cn/publicforum/articleslist/0/help.shtml">天涯汶川地震讨论区</a><strong>、</strong><a href="http://laiba.tianya.cn/laiba/Community?cmm=281">天涯地震吧</a>、<a href="http://tieba.baidu.com/f?kw=%B5%D8%D5%F0">百度地震吧</a>、<a href="http://www.kuangfeng.cn/f?kw=%E3%EB%B4%A8&amp;frs=yqtb" target="_blank">百度汶川吧</a>、<a href="http://www.kuangfeng.cn/f?kw=%CB%C4%B4%A8&amp;frs=yqtb" target="_blank">百度四川吧</a>、<a href="http://www.kuangfeng.cn/f?kw=%B6%BC%BD%AD%D1%DF&amp;frs=yqtb" target="_blank">百度都江堰吧</a>、<a href="http://www.kuangfeng.cn/f?kw=%E3%EB%B4%A8%B5%D8%D5%F0%C6%ED%B8%A3&amp;frs=yqtb" target="_blank">百度汶川地震祈福吧</a>、<a href="http://www.kuangfeng.cn/f?kw=%E3%EB%B4%A8%B5%D8%D5%F0%D1%B0%C8%CB&amp;frs=yqtb" target="_blank">百度汶川地震寻人吧</a></p>
<p><strong>迷你博客：</strong><a href="http://fanfou.com/hxsazhibo">饭否直播</a>(<a href="http://m.fanfou.com/browse/1">手机版</a>)、<a href="http://jiwai.de/t/%E5%9C%B0%E9%9C%87/">jiwai.de</a></p>
<p><strong>电视直播：</strong><a href="http://www.8000tv.com/html/60/107/152.htm">CCTV新闻频道</a>、<a href="http://www.8000tv.com/html/60/142/670.htm">四川卫视</a></p>
<p><strong>搜救资料：</strong><a href="http://innobook.googlecode.com/files/Earthquake_Search_Strategy_and_Tactics_Yeeyan.pdf"><strong>《城市灾难搜救火线手册》</strong></a>(PDF,<a href="http://www.yeeyan.com/articles/view/zww/7740">线上版</a>)、<a href="http://news.163.com/08/0512/15/4BOLQHFQ0001124J.html">地震中逃生十大法则</a>、<a href="http://news.21cn.com/cartoon/life/2005/11/29/2379548.shtml">如何对地震预防自救</a>、<a href="http://news.sohu.com/s2006/sybzsc/">实用避震手册</a>、<a href="http://news.qq.com/zt/2008/dizhen/fangzaisc.htm">地震应急手册</a></p>
<p><strong>民间活动：</strong><a href="http://dizhen.1kg.org/events/">多背1kg</a>、<a href="http://www.bullog.cn/blogs/liuyanban/archives/136782.aspx">牛博网</a>、<a href="http://www.ngocn.org/bbs/viewthread.php?tid=9706&amp;extra=page%3D1">NGO救援联合行动信息汇总</a></p>
<p class="desc"><strong><span style="color: #000000;">背景资料：</span></strong><a href="http://news.qq.com/a/20080512/003383.htm">阿坝州汶川县情况</a>、<a href="http://bk.baidu.com/view/960916.htm">汶川县_百度百科资料</a></p>
<p class="desc"><strong>收音频率：</strong>成都市FM103.7，AM639，攀枝花FM101.4，AM981德 阳市FM88.4绵阳市FM95.1，广元市FM91.0，AM981，内江市FM82.2，乐山市FM92.1，AM1008。巴中市FM93.2，阿 坝藏族羌族自治州AM639，甘孜藏族自治州91.3，AM981，凉山彝族自治州AM981。</p>
<p><strong>募捐资料：</strong><a href="http://www.yeepay.com/mlove/">易宝捐款</a>、<a href="http://www.taobao.com/cn/theme/site/scdz_080512.php">淘宝网友捐款（支付宝）</a> 、<a href="http://gongyi.qq.com/juanzeng/llj_dizhen.htm">腾讯网友捐款（财富通）</a> 、<a href="http://news.sina.com.cn/c/2008-05-12/230015524111.shtml">中国扶贫基金会募捐</a>、<a href="http://volunteer.yahoo.co.jp/donation/detail/1301007/index.html">日本网友募捐</a>、<a href="http://finance.sina.com.cn/blank/zzqyxd.shtml">捐款情况汇总</a></p>
<p><a href="http://finance.sina.com.cn/blank/zzqyxd.shtml"></a></p>
<h3>另外，亦可通过中国红十字会总会李连杰壹基金计划进行捐款， <a href="http://www.taobao.com/onefound/1jijin.php">登陆淘宝网进行支付宝在线捐赠</a></h3>
</div>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>希望献血的朋友注意，现在<a href="http://cq.qq.com/a/20080514/000493.htm" target="_blank">重庆</a>、<a href="http://fzwb.ynet.com/article.jsp?oid=39436954" target="_blank">北京</a>的血库已经饱和，暂时不能再接受献血。 （信息来自<a href="http://www.izaobao.com/" target="_self">新闻早报</a>）</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/05/internet-guide-to-the-earthquake-concern-wenchuan-reprint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS中background-image的另类使用</title>
		<link>http://icyleaf.com/2008/05/css-background-image-in-the-use-of-alternative/</link>
		<comments>http://icyleaf.com/2008/05/css-background-image-in-the-use-of-alternative/#comments</comments>
		<pubDate>Sat, 10 May 2008 02:56:25 +0000</pubDate>
		<dc:creator>icyleaf</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[网络开发]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.icyleaf.cn/?p=190</guid>
		<description><![CDATA[在CSS众多的样式当中，background可以说是扮演着重要的角色，它可以设置对象的背景样式。如颜色或者使用一张图片代替，今天我要多说两句的就是使用一张图片的参数：image。准确的来说应该是background-image。我们可以这样用它： body{ background-image: url(http://www.icyleaf.cn/logo.jpg); } /* 也可以直接使用background 代替 */ body{ background: url(http://www.icyleaf.cn/logo.jpg); } 这都是可以的，所以说css的自由度很高，这点我很喜欢。其实css显示图片分3种，第一种是单纯的显示一个图片；第二种称之为CSS Sprites，也就是说把若干小图片合成一个大图片，然后通过background的postion参数实现效果，第三种就是我们今天说的另类用法，它也有学名称之为Inline images。实现声明一点，这个方法不适用于IE浏览器，恩，没错，IE，我们都遗弃你了。（关于CSS Sprites 的描述信息来自7career.org） CSS Sprites是一种把所有的图片都以base64编码以源代码的形式写在CSS文件里，格式是这样的：data:[&#60;mediatype&#62;][;base64],&#60;data&#62; data:URL标签是在1995年第一次提出，按RFC2397规范的描述：它是&#8221;allows inclusion of small data items as &#8216;immediate&#8217; data.（允许在页面中包含一些小的即时数据）&#8221;。如一个内嵌的的图片可以这样引用： body{ background-image:url(data:image/gif;base64,R0lGODlhCAAIAJEAAOnp6eTk5O7m8AAAACH5BAEAAAIALAAAAAAIAAgAAAINjAMJh2q6DnxOVsqmLQA7); } 这段代码可以在firefox浏览器运行，恩，图片是我取自mg12当前模板的背景图，呵呵(^___^) base64编码简单的说是，Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。最早使用在windows系统的电子邮件传输的，主要是附件的传输。在那个时候的黑客们也流行过一段base64编码版的木马和病毒。为了简单篇幅，想了解的看这里。 第一次我也是通过这个方法获取的图片的base64编码，主要原因是网上没有现成的转换这种编码的工具，估计已经被大家所遗忘掉了。我这里简单的写了个PHP代码，实现了图片编码的转换： 在线转换：Demo &#124; Download 这个在线转换的背景就是上面那段代码，大家可以通过查看网页源码看到。图片的代码转换原理也很简单，通过读取图片的文件并把图片储存在一个数组（或字符串）里面，然后使用base64_encode转换即可～ok，讲解完毕。]]></description>
			<content:encoded><![CDATA[<p><img src="http://tu.6.cn/img/id/b438d4bdb329a74340c79037c2261021" alt="CSS-background" width="550" height="269" /><br />
在CSS众多的样式当中，background可以说是扮演着重要的角色，它可以设置对象的背景样式。如颜色或者使用一张图片代替，今天我要多说两句的就是使用一张图片的参数：image。准确的来说应该是background-image。我们可以这样用它：</p>
<pre lang="css">body{
background-image: url(http://www.icyleaf.cn/logo.jpg);
}
/* 也可以直接使用background 代替 */
body{
background: url(http://www.icyleaf.cn/logo.jpg);
}</pre>
<p>这都是可以的，所以说css的自由度很高，这点我很喜欢。其实css显示图片分3种，第一种是单纯的显示一个图片；第二种称之为<strong>CSS Sprites</strong>，也就是说把若干小图片合成一个大图片，然后通过background的postion参数实现效果，第三种就是我们今天说的另类用法，它也有学名称之为<strong>Inline images</strong>。实现声明一点，这个方法不适用于IE浏览器，恩，没错，IE，我们都遗弃你了。（关于CSS Sprites 的描述信息来自<a href="http://7career.org/2008/02/hpws-1.html" target="_self">7career.org</a>）</p>
<p>CSS Sprites是一种把所有的图片都以base64编码以源代码的形式写在CSS文件里，格式是这样的：<strong>data:[&lt;mediatype&gt;][;base64],&lt;data&gt;<br />
</strong></p>
<p>data:URL标签是在1995年第一次提出，按<a href="http://tools.ietf.org/html/rfc2397">RFC2397规范的描述</a>：它是&#8221;allows inclusion  of small data items as &#8216;immediate&#8217;  data.（允许在页面中包含一些小的即时数据）&#8221;。如一个内嵌的的图片可以这样引用：</p>
<pre lang="css">body{
background-image:url(data:image/gif;base64,R0lGODlhCAAIAJEAAOnp6eTk5O7m8AAAACH5BAEAAAIALAAAAAAIAAgAAAINjAMJh2q6DnxOVsqmLQA7);
}</pre>
<p>这段代码可以在firefox浏览器运行，恩，图片是我取自<a href="http://www.fighton.cn" target="_self">mg12</a>当前模板的背景图，呵呵(^___^)</p>
<p>base64编码简单的说是，Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。最早使用在windows系统的电子邮件传输的，主要是附件的传输。在那个时候的黑客们也流行过一段base64编码版的木马和病毒。为了简单篇幅，想了解的看<a href="http://www.5dmail.net/html/2004-1-30/200413084348.htm" target="_self">这里</a>。<br />
第一次我也是通过这个方法获取的图片的base64编码，主要原因是网上没有现成的转换这种编码的工具，估计已经被大家所遗忘掉了。我这里简单的写了个PHP代码，实现了图片编码的转换：<br />
在线转换：<a href="http://www.icyleaf.cn/labs/tools/IMG2BASE64/IMG2BASE64.php" target="_self">Demo</a> | <a href="http://www.icyleaf.cn/labs/tools/IMG2BASE64/IMG2BASE64.zip">Download</a></p>
<p>这个在线转换的背景就是上面那段代码，大家可以通过查看网页源码看到。图片的代码转换原理也很简单，通过读取图片的文件并把图片储存在一个数组（或字符串）里面，然后使用base64_encode转换即可～ok，讲解完毕。</p>
]]></content:encoded>
			<wfw:commentRss>http://icyleaf.com/2008/05/css-background-image-in-the-use-of-alternative/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

