<?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; Web&amp;IT业界</title>
	<atom:link href="http://www.loveazure.com/archives/category/web-it/feed" rel="self" type="application/rss+xml" />
	<link>http://www.loveazure.com</link>
	<description>Lost bearings in city</description>
	<lastBuildDate>Fri, 30 Jul 2010 15:42:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>如果Java OS成功，Sun就是今天的王者</title>
		<link>http://www.loveazure.com/archives/604</link>
		<comments>http://www.loveazure.com/archives/604#comments</comments>
		<pubDate>Thu, 10 Jun 2010 07:28:30 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=604</guid>
		<description><![CDATA[这几天看了李开复的新书《世界因你不同》，谈到了当时开复在微软做Vista开发时，盖茨对Vista的三大目标，其中之一就是用C#重写Windows Vista。最终失败了，因为C#太慢了，基于当时的硬件根本系统无法跑起来。虽然如此，我还是很佩服盖茨的想法。想象一下，如果成功的话，Vista将成为一个无数程序员梦寐以求的，完美的开发平台：统一的语言，统一的接口。
Sun曾经也有过JavaOS的努力，不过貌似是在嵌入式系统领域。如果Java当时能做桌面操作系统的话，想必会有很大的成就。不过先得解决JVM速度，丑陋的界面，以及复杂的硬件驱动的问题。
在Jdk1.6之后，速度，界面等问题已经越来越不是问题，对于硬件驱动而言，可以参考Chrome OS 和Android，开源系统，基于Linux平台。
个人很看好Chrome OS 和Android，尤其是Android，因为还不清楚在Chrome OS上使用什么语言开发应用程序，但是Android程序是基于Java语言的。而且，我相信Android虽然是手机系统，但是谁能知道，在不远的将来，你的手机和PC还有什么功能上的区别吗？也许只是大小的区别了。
以上只是个人不成熟的看法。
]]></description>
			<content:encoded><![CDATA[<p>这几天看了李开复的新书《世界因你不同》，谈到了当时开复在微软做Vista开发时，盖茨对Vista的三大目标，其中之一就是用C#重写Windows Vista。最终失败了，因为C#太慢了，基于当时的硬件根本系统无法跑起来。虽然如此，我还是很佩服盖茨的想法。想象一下，如果成功的话，Vista将成为一个无数程序员梦寐以求的，完美的开发平台：统一的语言，统一的接口。</p>
<p>Sun曾经也有过JavaOS的努力，不过貌似是在嵌入式系统领域。如果Java当时能做桌面操作系统的话，想必会有很大的成就。不过先得解决JVM速度，丑陋的界面，以及复杂的硬件驱动的问题。</p>
<p>在Jdk1.6之后，速度，界面等问题已经越来越不是问题，对于硬件驱动而言，可以参考Chrome OS 和Android，开源系统，基于Linux平台。</p>
<p>个人很看好Chrome OS 和Android，尤其是Android，因为还不清楚在Chrome OS上使用什么语言开发应用程序，但是Android程序是基于Java语言的。而且，我相信Android虽然是手机系统，但是谁能知道，在不远的将来，你的手机和PC还有什么功能上的区别吗？也许只是大小的区别了。</p>
<p>以上只是个人不成熟的看法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/604/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>密码的设计和保管</title>
		<link>http://www.loveazure.com/archives/601</link>
		<comments>http://www.loveazure.com/archives/601#comments</comments>
		<pubDate>Tue, 18 May 2010 04:38:53 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[管理]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=601</guid>
		<description><![CDATA[刚才看了酷客的最新文章《如何管理并设计你的口令》，很有感触，下面是我自己的一些心得。
密码的设计：
1. 密码设计过于复杂会记不住，过于简单又不保险。所以密码的设计权衡自己的记忆能力。
2. 111111，888888，123456，000000 等密码被认为是最容易破解的密码，千万不要使用。
3. 姓名，生日，姓名+生日，生日+姓名 等密码也非常不保险，如果是你的亲密朋友，很容易通过你的个人信息组合这样的密码。
4.最安全的密码应该包含以下规则：①至少8位（不过也有人说单数的密码比双数安全） ②包含数字，字母（大小写），标点符号的组合。③字母组成最好不是英文单词或者汉字拼音 ④和账号完全没有联系
5. 有些人会用程序来随机生成一个密码，当然，这样的密码很安全，但是很难记住。所以还是推荐使用和自己相关的信息来设计密码。比如姓名汉字拼音，生日，家庭住址。当然不能直接使用，必须是处理过的（其实就是对信息的加密）。处理的方式很多。汉字的处理比如四角号码，字母的处理比如去头去尾，或者反转字母顺序。然后将字母和数字糅合在一起，具体的糅合方式有很多，就不说了。
密码的管理：
1. 不要使用同一个密码管理所有的账号，至少不同的邮箱不能使用同样的密码。
2. 注册邮箱的密码不能和注册密码相同，这个。。。你懂的。
3. 不要将密码放在网上（比如邮箱，某个空间的记事本，QQ资料），数据只要联网，什么都是不安全的。至少我觉得记在本子上更安全。
]]></description>
			<content:encoded><![CDATA[<p>刚才看了酷客的最新文章<a href="http://coolshell.cn/?p=2428">《如何管理并设计你的口令》</a>，很有感触，下面是我自己的一些心得。</p>
<p>密码的设计：</p>
<p>1. 密码设计过于复杂会记不住，过于简单又不保险。所以密码的设计权衡自己的记忆能力。<br />
2. 111111，888888，123456，000000 等密码被认为是最容易破解的密码，千万不要使用。<br />
3. 姓名，生日，姓名+生日，生日+姓名 等密码也非常不保险，如果是你的亲密朋友，很容易通过你的个人信息组合这样的密码。<br />
4.最安全的密码应该包含以下规则：①至少8位（不过也有人说单数的密码比双数安全） ②包含数字，字母（大小写），标点符号的组合。③字母组成最好不是英文单词或者汉字拼音 ④和账号完全没有联系<br />
5. 有些人会用程序来随机生成一个密码，当然，这样的密码很安全，但是很难记住。所以还是推荐使用和自己相关的信息来设计密码。比如姓名汉字拼音，生日，家庭住址。当然不能直接使用，必须是处理过的（其实就是对信息的加密）。处理的方式很多。汉字的处理比如四角号码，字母的处理比如去头去尾，或者反转字母顺序。然后将字母和数字糅合在一起，具体的糅合方式有很多，就不说了。</p>
<p>密码的管理：</p>
<p>1. 不要使用同一个密码管理所有的账号，至少不同的邮箱不能使用同样的密码。<br />
2. 注册邮箱的密码不能和注册密码相同，这个。。。你懂的。<br />
3. 不要将密码放在网上（比如邮箱，某个空间的记事本，QQ资料），数据只要联网，什么都是不安全的。至少我觉得记在本子上更安全。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/601/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>谷歌纯爷们</title>
		<link>http://www.loveazure.com/archives/553</link>
		<comments>http://www.loveazure.com/archives/553#comments</comments>
		<pubDate>Tue, 23 Mar 2010 02:00:27 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[google china]]></category>
		<category><![CDATA[谷歌]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=553</guid>
		<description><![CDATA[2006年1月26日，Google正式启用中国大陆版Google专用域名“Google.cn”﻿
2010年3月23日凌晨，谷歌将其中国网站(Google.cn)的链接自动导向了香港网站(www.google.com.hk)，并将后者的设计特别调整，与原来大陆网站接近， 同时引入了部分大陆网站原来没有的服务。
一个商业网站都能做到如此，那些持怀疑论者，持阴谋论者，难道你们不觉的羞耻吗？你们早已没有了信仰，活在这个世界，只是行尸走肉而已！
2010年3月22日凌晨，谷歌将其中国网站(Google.cn)的链接自动导向了香港网站(www.google.com.hk)，并将后者的设计特 别调整，与原来大陆网站接近，同时引入了部分大陆网站原来没有的服务。
]]></description>
			<content:encoded><![CDATA[<blockquote><p>2006年1月26日，Google正式启用中国大陆版Google专用域名“Google.cn”﻿</p>
<p>2010年3月23日凌晨，谷歌将其中国网站(Google.cn)的链接自动导向了香港网站(www.google.com.hk)，并将后者的设计特别调整，与原来大陆网站接近， 同时引入了部分大陆网站原来没有的服务。</p></blockquote>
<p>一个商业网站都能做到如此，那些持怀疑论者，持阴谋论者，难道你们不觉的羞耻吗？你们早已没有了信仰，活在这个世界，只是行尸走肉而已！</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">2010年3月22日凌晨，谷歌将其中国网站(Google.cn)的链接自动导向了香港网站(www.google.com.hk)，并将后者的设计特 别调整，与原来大陆网站接近，同时引入了部分大陆网站原来没有的服务。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/553/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>聊聊智能手机</title>
		<link>http://www.loveazure.com/archives/521</link>
		<comments>http://www.loveazure.com/archives/521#comments</comments>
		<pubDate>Fri, 01 Jan 2010 09:07:04 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[智能手机]]></category>
		<category><![CDATA[魅族]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=521</guid>
		<description><![CDATA[现在各大主流手机厂商发布的手机，几乎没有不是智能手机的。08年眼看摩托罗拉做手机快不行了，09年靠Android翻了身，而且远远跑在了其他厂商的前面。
非智能手机在未来还会一直存在，主要是两类人群。一是老人和孩子，他们强调的是手机的易用性而不是多功能。二是那些急需用手机者，他们可以购买非智能的一次性手机，因为非智能手机由于硬件的原因往往能够将成本降到很低。
智能手机相对于非智能手机，无非有这两点优势：软件多，可扩展。在智能手机刚出来的时候，塞班一度成为了智能手机的代名词，现在智能手机已经满天下了。塞班可以说是穷途末路，塞班平台软件少，开发难，而且需要软件证书，而且在缺乏很好的互联网应用的支持。iphone的成功在于全触摸屏，不过当全触摸屏已经不是什么新鲜玩意的时候，苹果及时推出了软件商店，将iphone扶上不倒的地位，这也是为什么苹果只需要推出一款手机，就能把拥有上百款手机的诺基亚搞个半死。不过听说最近诺基亚也在搞自己的软件商店。
现在的智能手机系统主流的大概有这几种，黑莓（非开放），iphone（非开放），linux，Android，windows mobile，symbiam。现在是iphone最火，个人认为Android赶超iphone只是时间上的问题。至于其他的操作系统，linux没有主流厂商支持很难发展起来，windows  mobile看起来不像是一个手机操作系统，倒有点像商务通之类的应用软件，还有塞班，在上面开发软件太复杂。其实这样比较，很容易明白一个好的手机系统需要的条件，那就是强有力的厂商支持，简单易学的软件SDK，软件商店（开发利益驱动）。现在能满足条件的只有iphone和Android这两种。iphone咱们玩不起，所以我看好Android。
之前很期待国产魅族M8，所以也当然期待M8的Android版本。不过魅族好像不太重视Android，原因好像是之前魅族花了大量了财力精力在WinCE改良后的Mymobile系统上，如果现在放弃M8，就等于前功尽弃，所以现在只能坚持Mymobile，而不能考虑别的系统。J.wong说的是，M8缺少Andorid系统所必需的两个键，menu和return，而M8在之后的手机中必然不会修改硬件外观，所以只能放弃Android。想想很可笑，我不知道M8还有多少钱能砸在这个Mymobile系统，就单说这个系统，你能靠这个系统赚多少钱？商人要做的事情是把钱砸在有价值有产出的地方上面，而不是去坚持一条死胡同。可能是J.wong太想做中国的乔布斯了，人家iphone的成功固然是因为手机系统，但是人家苹果钱多，能砸。可是魅族是不大可能有这个实力去重新砸一个系统出来的。魅族的实力在于硬件，而不是软件，我们却看到魅族貌似在成为一家软件公司。魅族没有苹果的品牌影响力，没有苹果的创新能力，却要做苹果做过的事，那结果肯定会死的很惨。我觉得魅族现在应该要回归到一个手机生产商的本质上来。魅族的UI和易用性是魅族的优势，而这些优势完全能移植到Android上来，Android的优势在于有Google的强大支持，软件多，二次开发简单，两者结合几乎完美。这也是为什么2010年山寨市场对Android机蠢蠢欲动的原因。如果魅族再不认清形势，被山寨机厂商超越，也是迟早的事。
]]></description>
			<content:encoded><![CDATA[<p>现在各大主流手机厂商发布的手机，几乎没有不是智能手机的。08年眼看摩托罗拉做手机快不行了，09年靠Android翻了身，而且远远跑在了其他厂商的前面。</p>
<p>非智能手机在未来还会一直存在，主要是两类人群。一是老人和孩子，他们强调的是手机的易用性而不是多功能。二是那些急需用手机者，他们可以购买非智能的一次性手机，因为非智能手机由于硬件的原因往往能够将成本降到很低。</p>
<p>智能手机相对于非智能手机，无非有这两点优势：软件多，可扩展。在智能手机刚出来的时候，塞班一度成为了智能手机的代名词，现在智能手机已经满天下了。塞班可以说是穷途末路，塞班平台软件少，开发难，而且需要软件证书，而且在缺乏很好的互联网应用的支持。iphone的成功在于全触摸屏，不过当全触摸屏已经不是什么新鲜玩意的时候，苹果及时推出了软件商店，将iphone扶上不倒的地位，这也是为什么苹果只需要推出一款手机，就能把拥有上百款手机的诺基亚搞个半死。不过听说最近诺基亚也在搞自己的软件商店。</p>
<p>现在的智能手机系统主流的大概有这几种，黑莓（非开放），iphone（非开放），linux，Android，windows mobile，symbiam。现在是iphone最火，个人认为Android赶超iphone只是时间上的问题。至于其他的操作系统，linux没有主流厂商支持很难发展起来，windows  mobile看起来不像是一个手机操作系统，倒有点像商务通之类的应用软件，还有塞班，在上面开发软件太复杂。其实这样比较，很容易明白一个好的手机系统需要的条件，那就是强有力的厂商支持，简单易学的软件SDK，软件商店（开发利益驱动）。现在能满足条件的只有iphone和Android这两种。iphone咱们玩不起，所以我看好Android。</p>
<p>之前很期待国产魅族M8，所以也当然期待M8的Android版本。不过魅族好像不太重视Android，原因好像是之前魅族花了大量了财力精力在WinCE改良后的Mymobile系统上，如果现在放弃M8，就等于前功尽弃，所以现在只能坚持Mymobile，而不能考虑别的系统。J.wong说的是，M8缺少Andorid系统所必需的两个键，menu和return，而M8在之后的手机中必然不会修改硬件外观，所以只能放弃Android。想想很可笑，我不知道M8还有多少钱能砸在这个Mymobile系统，就单说这个系统，你能靠这个系统赚多少钱？商人要做的事情是把钱砸在有价值有产出的地方上面，而不是去坚持一条死胡同。可能是J.wong太想做中国的乔布斯了，人家iphone的成功固然是因为手机系统，但是人家苹果钱多，能砸。可是魅族是不大可能有这个实力去重新砸一个系统出来的。魅族的实力在于硬件，而不是软件，我们却看到魅族貌似在成为一家软件公司。魅族没有苹果的品牌影响力，没有苹果的创新能力，却要做苹果做过的事，那结果肯定会死的很惨。我觉得魅族现在应该要回归到一个手机生产商的本质上来。魅族的UI和易用性是魅族的优势，而这些优势完全能移植到Android上来，Android的优势在于有Google的强大支持，软件多，二次开发简单，两者结合几乎完美。这也是为什么2010年山寨市场对Android机蠢蠢欲动的原因。如果魅族再不认清形势，被山寨机厂商超越，也是迟早的事。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/521/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim 基本操作</title>
		<link>http://www.loveazure.com/archives/509</link>
		<comments>http://www.loveazure.com/archives/509#comments</comments>
		<pubDate>Wed, 09 Dec 2009 03:24:05 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=509</guid>
		<description><![CDATA[两种模式，命令模式和普通模式。Esc键可以切换到命令模式
启动vim
vim file.txt
插入
i
查看工作模式
:set showmode
删除字符
x
删除一整行
dd
删除当前行至文件尾的内容
dG
撤销
u
撤销对一整行的操作
U
反转撤销
CTRL-R
退出vim
ZZ
存储
:w
退出
:q
放弃编辑
:q!
搜索字符串
/string
复制粘帖
先输入v
用光标选中要复制的文字，输入y，复制
光标移动到要粘帖的位置，输入p，粘帖
浏览
Ctrl+B 上一页
Ctrl+F 下一页
gg 文件头
G 文件尾
]]></description>
			<content:encoded><![CDATA[<p>两种模式，命令模式和普通模式。Esc键可以切换到命令模式</p>
<p><strong>启动vim</strong><br />
vim file.txt</p>
<p><strong>插入</strong><br />
i</p>
<p><strong>查看工作模式</strong><br />
:set showmode</p>
<p><strong>删除字符</strong><br />
x</p>
<p><strong>删除一整行</strong><br />
dd</p>
<p><strong>删除当前行至文件尾的内容</strong><br />
dG</p>
<p><strong>撤销</strong><br />
u</p>
<p><strong>撤销对一整行的操作</strong><br />
U</p>
<p><strong>反转撤销</strong><br />
CTRL-R</p>
<p><strong>退出vim</strong><br />
ZZ</p>
<p><strong>存储<br />
</strong>:w</p>
<p><strong>退出<br />
</strong>:q</p>
<p><strong>放弃编辑</strong><br />
:q!</p>
<p><strong>搜索字符串</strong><br />
/string</p>
<p><strong>复制粘帖</strong><br />
先输入v<br />
用光标选中要复制的文字，输入y，复制<br />
光标移动到要粘帖的位置，输入p，粘帖</p>
<p><strong>浏览</strong><br />
Ctrl+B 上一页<br />
Ctrl+F 下一页<br />
gg 文件头<br />
G 文件尾</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/509/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>事关浏览器</title>
		<link>http://www.loveazure.com/archives/457</link>
		<comments>http://www.loveazure.com/archives/457#comments</comments>
		<pubDate>Sun, 23 Aug 2009 06:15:49 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=457</guid>
		<description><![CDATA[IE的最大问题就是启动慢，打开页面慢，经常假死。IE8我还没碰到很明显的假死情况，但安装了很多浏览器扩展后，速度就变的很慢。内存占用也是个很大的问题。
Maxthon应该是我最早使用的非IE浏览器（当时还叫做MYIE），多标签，功能丰富，界面简洁，广告过滤，这都是它的优点。当然最大的优点就是Maxthon2之后的书签同步，实在是一个非常好的功能。但是它的缺点也太明显，就是假死。尤其是当你打开了很多标签页后，其中一个页面假死，所有页面都无法浏览。在经历了无数次的奔溃之后，我决定换浏览器。
通过cnbeta认识了世界之窗浏览器。世界之窗在功能上没有maxthon那么丰富，但是它所提供的功能都是简单实用的。界面也比maxthon清爽很多。唯一的缺点，就是不支持书签同步（这个功能对我来说还是挺重要的）。
Firefox,以页面打开速度快和扩展功能丰富著称，但我却对它一直不感冒。理由就是，太麻烦。我不过就是想上个网而已，又不是做开发，需要什么功能，还得去网上找插件，然后一个个配置，我不爱折腾。
chrome最近又更新了，增加了书签同步功能。书签是同步到google doc上面的，经过这几天的试用,感觉相当不错，简洁，方便，快速。
我曾经说过，非IE核心浏览器最大的问题，就是网银支持。到现在为止，我现在还没发现国内哪个可以支持非IE核心浏览器的。假使Chrome能解决这个问题，比如开放一些浏览器接口，使得银行能很方便的开发自己的网银插件，浏览器的霸主就非它莫属了。
]]></description>
			<content:encoded><![CDATA[<p>IE的最大问题就是启动慢，打开页面慢，经常假死。IE8我还没碰到很明显的假死情况，但安装了很多浏览器扩展后，速度就变的很慢。内存占用也是个很大的问题。</p>
<p>Maxthon应该是我最早使用的非IE浏览器（当时还叫做MYIE），多标签，功能丰富，界面简洁，广告过滤，这都是它的优点。当然最大的优点就是Maxthon2之后的书签同步，实在是一个非常好的功能。但是它的缺点也太明显，就是假死。尤其是当你打开了很多标签页后，其中一个页面假死，所有页面都无法浏览。在经历了无数次的奔溃之后，我决定换浏览器。</p>
<p>通过cnbeta认识了世界之窗浏览器。世界之窗在功能上没有maxthon那么丰富，但是它所提供的功能都是简单实用的。界面也比maxthon清爽很多。唯一的缺点，就是不支持书签同步（这个功能对我来说还是挺重要的）。</p>
<p>Firefox,以页面打开速度快和扩展功能丰富著称，但我却对它一直不感冒。理由就是，太麻烦。我不过就是想上个网而已，又不是做开发，需要什么功能，还得去网上找插件，然后一个个配置，我不爱折腾。</p>
<p>chrome最近又更新了，增加了书签同步功能。书签是同步到google doc上面的，经过这几天的试用,感觉相当不错，简洁，方便，快速。</p>
<p>我曾经说过，非IE核心浏览器最大的问题，就是网银支持。到现在为止，我现在还没发现国内哪个可以支持非IE核心浏览器的。假使Chrome能解决这个问题，比如开放一些浏览器接口，使得银行能很方便的开发自己的网银插件，浏览器的霸主就非它莫属了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/457/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几点总结</title>
		<link>http://www.loveazure.com/archives/433</link>
		<comments>http://www.loveazure.com/archives/433#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:32:57 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=433</guid>
		<description><![CDATA[1.项目开始前先确定数据表结构，逻辑关系一定要理顺。
2.根据需求自定义数据类，以及自定义exception类，在自定义类中对各种例外进行处理
3.中间层很好用，比如nhibernate这种架构，虽然还没用过。
4.在用户登录系统的时候提取用户权限等基本信息在cookies中，最好是加过密的。当然判断登录状态还得用session。
5.用户系统中，菜单栏由于权限不同导致显示不同，必须将其做成控件，便于修改和维护。
6.最好引入日志系统如log4net，便于测试以及后期维护。
ps：上面几点很多都是从java中取得的经验，引入到asp.net项目中。等时间充裕的时候好好研究C#桌面程序，感觉应该不难。哈哈，由于java桌面程序太烂实在是没兴趣做，这次终于可以施展一下了，顺便比较下java 和C#的区别
]]></description>
			<content:encoded><![CDATA[<p>1.项目开始前先确定数据表结构，逻辑关系一定要理顺。</p>
<p>2.根据需求自定义数据类，以及自定义exception类，在自定义类中对各种例外进行处理</p>
<p>3.中间层很好用，比如nhibernate这种架构，虽然还没用过。</p>
<p>4.在用户登录系统的时候提取用户权限等基本信息在cookies中，最好是加过密的。当然判断登录状态还得用session。</p>
<p>5.用户系统中，菜单栏由于权限不同导致显示不同，必须将其做成控件，便于修改和维护。</p>
<p>6.最好引入日志系统如log4net，便于测试以及后期维护。</p>
<p>ps：上面几点很多都是从java中取得的经验，引入到asp.net项目中。等时间充裕的时候好好研究C#桌面程序，感觉应该不难。哈哈，由于java桌面程序太烂实在是没兴趣做，这次终于可以施展一下了，顺便比较下java 和C#的区别</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/433/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于饭否</title>
		<link>http://www.loveazure.com/archives/420</link>
		<comments>http://www.loveazure.com/archives/420#comments</comments>
		<pubDate>Mon, 25 May 2009 01:48:46 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[微博客]]></category>
		<category><![CDATA[饭否]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=420</guid>
		<description><![CDATA[微博客受到越来多人的认可，其实是从QQ签名中单独剥离出来的的一种互联网应用形式。微博客的好处在于实时性和随意性。从07年开始用饭否，到现在快两年了。关于饭否，想说几点
1.饭否可以针对好友进行回复，但是无法体现主题-跟贴这样的关系。往往看到很多好友在@别人的留言，但经常不知道他们在聊什么。当两个人在用饭否进行对话，其中一个人不是我好友的时候，我无法知道这个人在说什么。当我的好友在一个较短的时间发了多条饭否留言，而我对他的任何一条留言进行回复，他都不知道这条回复是针对哪条留言的，这样往往就会造成误解。解决这个问题的有效方法是设置饭否留言两种显示形式，一种是根据留言时间排列，一种根据留言回复关系排列。
2.饭否可以添加好友，但是当好友数量太多，而且其中很多好友是话痨的时候，你会发现你无法顺利查看好友留言。因为留言数量实在是太多了，想找到某一个人的最新留言可能要翻好几页才能找到。而另一些人的留言，铺天盖地的显示在你的饭否上。解决这个问题的方法是后台设置单个好友一天最多显示的留言条数，前台针对好友有一个选项，显示全部留言 or 显示最新留言。
3.饭否可以收藏别人的留言，但是这个功能确实相当的鸡肋。因为收藏的留言没有任何动态信息。一个比较不错的方法是将收藏改为分享，当分享某人的留言时，这条留言就会被其他好友看到。或者改为“顶”和“踩”，当你“顶”了某好友的留言后，饭否上会显示相关信息。在这个基础上可以做一个饭否排行榜，统计一天中被分享次数最多的留言（或者是被顶次数最多，被踩次数最多）。
饭否应该是一个web2.0时代的产物，但他现在确实做得不够web2.0. 希望饭否的开发者们如果看到了我这篇日志，多多采纳我的建议。如果做得好的话，饭否应该能超越twitter，至少占领中国市场应该是没问题的。
]]></description>
			<content:encoded><![CDATA[<p>微博客受到越来多人的认可，其实是从QQ签名中单独剥离出来的的一种互联网应用形式。微博客的好处在于实时性和随意性。从07年开始用饭否，到现在快两年了。关于饭否，想说几点</p>
<p>1.饭否可以针对好友进行回复，但是无法体现主题-跟贴这样的关系。往往看到很多好友在@别人的留言，但经常不知道他们在聊什么。当两个人在用饭否进行对话，其中一个人不是我好友的时候，我无法知道这个人在说什么。当我的好友在一个较短的时间发了多条饭否留言，而我对他的任何一条留言进行回复，他都不知道这条回复是针对哪条留言的，这样往往就会造成误解。解决这个问题的有效方法是设置饭否留言两种显示形式，一种是根据留言时间排列，一种根据留言回复关系排列。</p>
<p>2.饭否可以添加好友，但是当好友数量太多，而且其中很多好友是话痨的时候，你会发现你无法顺利查看好友留言。因为留言数量实在是太多了，想找到某一个人的最新留言可能要翻好几页才能找到。而另一些人的留言，铺天盖地的显示在你的饭否上。解决这个问题的方法是后台设置单个好友一天最多显示的留言条数，前台针对好友有一个选项，显示全部留言 or 显示最新留言。</p>
<p>3.饭否可以收藏别人的留言，但是这个功能确实相当的鸡肋。因为收藏的留言没有任何动态信息。一个比较不错的方法是将收藏改为分享，当分享某人的留言时，这条留言就会被其他好友看到。或者改为“顶”和“踩”，当你“顶”了某好友的留言后，饭否上会显示相关信息。在这个基础上可以做一个饭否排行榜，统计一天中被分享次数最多的留言（或者是被顶次数最多，被踩次数最多）。</p>
<p>饭否应该是一个web2.0时代的产物，但他现在确实做得不够web2.0. 希望饭否的开发者们如果看到了我这篇日志，多多采纳我的建议。如果做得好的话，饭否应该能超越twitter，至少占领中国市场应该是没问题的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/420/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>使用SyntaxHighlighter插件使代码高亮显示</title>
		<link>http://www.loveazure.com/archives/396</link>
		<comments>http://www.loveazure.com/archives/396#comments</comments>
		<pubDate>Tue, 07 Apr 2009 18:33:50 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[代码高亮]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/archives/396</guid>
		<description><![CDATA[效果：

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace LiTianPing.SQLServerDAL //可以修改成实际项目的命名空间名称
{
    /// &#60;summary&#62;
    /// Copyright (C) 2004-2008 LiTianPing
    /// 数据访问基础类(基于SQLServer)
    /// 用户可以修改满足自己项目的需要。
    /// &#60;/summary&#62;
    public abstract class DbHelperSQL
    {
        [...]]]></description>
			<content:encoded><![CDATA[<p>效果：</p>
<pre name="code" class="csharp:collapse"  >
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace LiTianPing.SQLServerDAL //可以修改成实际项目的命名空间名称
{
    /// &lt;summary&gt;
    /// Copyright (C) 2004-2008 LiTianPing
    /// 数据访问基础类(基于SQLServer)
    /// 用户可以修改满足自己项目的需要。
    /// &lt;/summary&gt;
    public abstract class DbHelperSQL
    {
        //数据库连接字符串(web.config来配置)
        //&lt;add key="ConnectionString" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" /&gt;
        protected static string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
        public DbHelperSQL()
        {
        }

        #region  执行简单SQL语句

        /// &lt;summary&gt;
        /// 执行SQL语句，返回影响的记录数
        /// &lt;/summary&gt;
        /// &lt;param name="SQLString"&gt;SQL语句&lt;/param&gt;
        /// &lt;returns&gt;影响的记录数&lt;/returns&gt;
        public static int ExecuteSql(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        connection.Close();
                        throw new Exception(E.Message);
                    }
                }
            }
        }

        /// &lt;summary&gt;
        /// 执行多条SQL语句，实现数据库事务。
        /// &lt;/summary&gt;
        /// &lt;param name="SQLStringList"&gt;多条SQL语句&lt;/param&gt;
        public static void ExecuteSqlTran(ArrayList SQLStringList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                SqlTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    for (int n = 0; n &lt; SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n].ToString();
                        if (strsql.Trim().Length &gt; 1)
                        {
                            cmd.CommandText = strsql;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    tx.Commit();
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    tx.Rollback();
                    throw new Exception(E.Message);
                }
            }
        }
        /// &lt;summary&gt;
        /// 执行带一个存储过程参数的的SQL语句。
        /// &lt;/summary&gt;
        /// &lt;param name="SQLString"&gt;SQL语句&lt;/param&gt;
        /// &lt;param name="content"&gt;参数内容,比如一个字段是格式复杂的文章，有特殊符号，可以通过这个方式添加&lt;/param&gt;
        /// &lt;returns&gt;影响的记录数&lt;/returns&gt;
        public static int ExecuteSql(string SQLString, string content)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(SQLString, connection);
                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
                myParameter.Value = content;
                cmd.Parameters.Add(myParameter);
                try
                {
                    connection.Open();
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    cmd.Dispose();
                    connection.Close();
                }
            }
        }
        /// &lt;summary&gt;
        /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
        /// &lt;/summary&gt;
        /// &lt;param name="strSQL"&gt;SQL语句&lt;/param&gt;
        /// &lt;param name="fs"&gt;图像字节,数据库的字段类型为image的情况&lt;/param&gt;
        /// &lt;returns&gt;影响的记录数&lt;/returns&gt;
        public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(strSQL, connection);
                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
                myParameter.Value = fs;
                cmd.Parameters.Add(myParameter);
                try
                {
                    connection.Open();
                    int rows = cmd.ExecuteNonQuery();
                    return rows;
                }
                catch (System.Data.SqlClient.SqlException E)
                {
                    throw new Exception(E.Message);
                }
                finally
                {
                    cmd.Dispose();
                    connection.Close();
                }
            }
        }

        /// &lt;summary&gt;
        /// 执行一条计算查询结果语句，返回查询结果（object）。
        /// &lt;/summary&gt;
        /// &lt;param name="SQLString"&gt;计算查询结果语句&lt;/param&gt;
        /// &lt;returns&gt;查询结果（object）&lt;/returns&gt;
        public static object GetSingle(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        connection.Close();
                        throw new Exception(e.Message);
                    }
                }
            }
        }
        /// &lt;summary&gt;
        /// 执行查询语句，返回SqlDataReader
        /// &lt;/summary&gt;
        /// &lt;param name="strSQL"&gt;查询语句&lt;/param&gt;
        /// &lt;returns&gt;SqlDataReader&lt;/returns&gt;
        public static SqlDataReader ExecuteReader(string strSQL)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(strSQL, connection);
            try
            {
                connection.Open();
                SqlDataReader myReader = cmd.ExecuteReader();
                return myReader;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }

        }
        /// &lt;summary&gt;
        /// 执行查询语句，返回DataSet
        /// &lt;/summary&gt;
        /// &lt;param name="SQLString"&gt;查询语句&lt;/param&gt;
        /// &lt;returns&gt;DataSet&lt;/returns&gt;
        public static DataSet Query(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                    command.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds;
            }
        }
        #endregion
    }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/396/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>免费定制天气预报短信服务</title>
		<link>http://www.loveazure.com/archives/376</link>
		<comments>http://www.loveazure.com/archives/376#comments</comments>
		<pubDate>Tue, 31 Mar 2009 01:39:47 +0000</pubDate>
		<dc:creator>低调の华丽</dc:creator>
				<category><![CDATA[Web&IT业界]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[天气预报]]></category>
		<category><![CDATA[短信提醒]]></category>

		<guid isPermaLink="false">http://www.loveazure.com/?p=376</guid>
		<description><![CDATA[1.首先，打开谷歌短信提醒页面。
2.选择提醒城市，单击免费订阅。

3.在弹出页面中填入自己的手机号，点击点击此处按钮，一分钟后收到谷歌提供的短信验证码。

4.填入验证码，点击成功，订阅成功。每天一条，包括今明两天的温度，气候，风力等信息。
既然google提供这么好的服务，还要定制（移动/联通/电信）的天气预报服务（3元/月）干嘛？
]]></description>
			<content:encoded><![CDATA[<p>1.首先，打开<a href="http://www.google.com/sms/alerts">谷歌短信提醒页面</a>。<br />
2.选择提醒城市，单击免费订阅。</p>
<p><img class="size-full wp-image-377 alignnone" title="123" src="http://www.loveazure.com/wp-content/uploads/2009/03/123.png" alt="123" width="270" height="128" /></p>
<p>3.在弹出页面中填入自己的手机号，点击<strong>点击此处</strong>按钮，一分钟后收到谷歌提供的短信验证码。</p>
<p><img class="alignnone size-full wp-image-378" title="1231" src="http://www.loveazure.com/wp-content/uploads/2009/03/1231.png" alt="1231" width="223" height="252" /></p>
<p>4.填入验证码，点击成功，订阅成功。每天一条，包括今明两天的温度，气候，风力等信息。</p>
<p>既然google提供这么好的服务，还要定制（移动/联通/电信）的天气预报服务（3元/月）干嘛？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loveazure.com/archives/376/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
