完全跨域单点登录实现原理

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

跨域单点登录分为以下两种:

1、跨子域单点登录。如 blog.a.com 和 news.a.com 这2个站点同属一个主域.a.com,实现跨子域单点登录很简单,可以利用cookie,设置Domain为".a.com'即可,这里就不再赘叙。

2、完成跨域单点登录。如 http://www.abc.com/ http://www.xyz.com/ 这2个站点之间实现共享一个身份验证系统,只需在一处地方登录,下面主要谈下这种方式的实现方法。

下面简单说说跨域单点登录实现原理:

当用户第一次访问web 应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,返回给用户一个认证的凭据;用户再访问别的web应用的时候就会将这个Token带上,作为自己认证的凭据,应用系统接受到请求之后会把Token送到认证中心进行效验,检查Token的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。所有应用系统共享一个身份认证系统。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志,返还给用户。另外,认证系统还应该对Token进行效验,判断其有效性。 所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。比如说,我现在有3个分站点和1个认证中心(总站)。当用户访问分站点的时候,分站点会发Token到验证中心进行验证。验证中心判断用户是否已经登录。如果未登录,则返回到验证中心登录入口进行登录,否之则返回Token验证到分站点,直接进入分站点。

C#读取Word的内容

下了一个电子书,里面居然全部都是word格式的文件,一点都不便于阅读,连个目录都不好翻,只好把它读出来,弄成html格式的。下面是读取word内容的代码,比较简单了。

using System;
using System.IO;
using System.Reflection;
using Word;   

//----------------------------------------------------------------------
static string WordReader( string path )
{
	string WordContent = "";

	Word.Application app = new ApplicationClass();

	object fileName = path;
	object optional = Missing.Value;
	object visible = true;
	if( File.Exists( fileName.ToString() ) )
	{
		Word.Document doc = app.Documents.Open(
		 ref fileName,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref visible,
		 ref optional,
		 ref optional,
		 ref optional,
		 ref optional );

		WordContent = doc.Content.Text;

		object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
		object originalFormat = Missing.Value;
		object routeDocument = Missing.Value;
		app.Quit( ref saveChanges, ref originalFormat, ref routeDocument );
	}
	else
	{
		return string.Empty;
	}

	return WordContent;

}

工程中引用“Microsoft Word 11.0 object library”的Microsoft COM组件。该组件提供的类和方法来读取Word文档

貌似百度不惩罚首页了

以前的小站,首页总是不在site的第一位,但近段时间发现几个站site首页都跑到第一了,心中窃喜,难道是百度改变了规则?但快照更新得慢很是郁闷,得找点高质量的友链了,慢慢弄了。

靠百度来流量还不如弄google,至少google不会随便k你。

新的一年开始了,得找点事情来做了!

代发Flasher招聘的内容

代朋友发个招聘信息,喜欢Flash开发的朋友可以看看。

Flash开发工程师(程序员)

* 性别、年龄、学历不限;
* 工作经验2年及以上者;
* 精通Action Script3语言,熟悉Socket通讯编程,熟悉OOP设计方式;
* 熟练使用Flex3\Flash CS3等编程工具,掌握SVN等团队协作工作软件;
* 具备良好的协调沟通能力和团队协作能力;
* 有网络游戏、商务应用、娱乐多媒体系统开发经验者优先;

Flash开发工程师助理(程序员助理)

* 性别男,年龄26周岁及以下,大学及以上学历;
* 工作经验1年及以上者;
* 熟悉Action Script2.0或者3.0语言,接触或曾经参与过Socket通讯编程;
* 能使用Flex3\Flash CS3等编程工具;
* 具备良好的协调沟通能力和团队协作能力;
* 有网站、多媒体、游戏开发经验者优先;

这个公司是湖北一家比较出名的游戏开发、运营企业,在全国也小有名气。有7年多的互联网业务经验和70多人的团队。企业业务管理与行政管理比较完整规范,薪资待遇和发展机会还是不错的。有兴趣的朋友可以联系我朋友的信箱:dick.yeah[at]gmail.com

修改window2003远程连接的默认3389端口

3389端口是Windows2003 Server远程桌面的服务端口,可以通过这个端口,用”远程桌面”等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑,因此远程服务器一般都将这个端口修改数值者者关闭,修改数值的话需要修改注册表的两个地方:

第一个地方:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp] PortNumber值,默认是3389,修改成所希望的端口,比如6123
第二个地方:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
PortNumber值,默认是3389,修改成所希望的端口,比如6123

现在这样就可以了。重启系统就可以了.
注意:如果设置了防火墙的端口过滤,具体是在tcp/ip的属性设置里头有个”高级”按键,然后点里面最后一个”选项”按钮,在tpc/ip筛选里面,请一定允许更改过的远程端口,比如6123,不然远程不上;

二十个SEO经典问答

1、搜索引擎搜索结果页面,简称 SERP,全称 Search Engine Results Page

2、Inbound Links 指反向链接,又称导入链接,外部链接

3、说法错误的是,搜索引擎对新站排名更好。新站在前100天左右,基本上很难有较高的流量。

4、一个 SEO 良好的网站,其主要流量往往来自内容页面,因为网站的内容数目庞大,长尾关键词会给网站带来大量流量,这远远超出首页带来的流量。

5、新站登录搜索引擎最佳的时间是:把网站架构基本完善后,提交给搜索引擎。网站架构指网站的目录格局,和页面分布。很多人认为“先做一个静态的首页,提交给搜索引擎。这样可以让搜索引擎早一点收录。”但搜索引擎收录之后,你进行大规模的修改,会延迟搜索引擎对站点的信任。

6、关键词密度多少最佳,7%

7、选择热门关键词,一旦成功就会有非常高的流量。这个思路是错误的。因为对于新站,热门的关键词往往需要非常长的时间才能做到,选择中级热门的关键词,在将来再转换到热门关键词。这是过渡策略。

8、目标关键词放在标题标签中效果最佳。

9、重复关键词以增加关键词密度。 这个做法是不可取的,原因请参考第6题。

10、对 PR 值影响比较大的导入链接是:PR 值很高,但无相关性的站点。这里,我们考虑的只是 PR 值的影响。但因为 PR 值对排名的影响非常大,所以当现实中要进行连接时,要在这三个情况中选择一个,还是优先选择 PR 值很高,但无相关性的站点链接。

11、向 PR 值高的站点购买链接。这是Google明确禁止的行为,当然,Google会惩罚的是被多次举报的链接卖家。

12、在百度知道、Google论坛等发表文章,并留有链接。这个行为并没有作弊,也不可能是因为这个原因而被搜索引擎封掉。

13、说法错误的是:SEO服务保证关键词长期排名。

14、对于热门关键词,搜索引擎隔一段时间对排名进行更新和保存。所以,当我们搜索一个热门关键词的时候,搜索引擎提供的 SERP 其实是一个“静态页面”。对于冷门关键词,搜索可能是实时的。

15、目前看来,搜索引擎无法实现:判断被大量转载的文章的原创站点。比如,大量的站点转载了 SEO 十万个为什么的这篇文章 http://www.seowhy.com/27_85_zh.html ,那么搜索引擎能否判断,这篇文章的原载是 http://www.seowhy.com 呢?这表现在排名的时候,是否都是本站排在前面。但目前看来,搜索引擎这个方面还做得不是很好。

16、从 SEO 的角度,网页设计采用 div+css 的主要好处是什么?网页大小大幅缩小,搜索引擎对内容的抓取更方便。

17、竞价排名与SEO的投入收益对比分析。竞价排名价高,见效快。SEO见效慢,长期深度收益。

18、如果每个站都做SEO了,那时怎么办?那时,网站内容是搜索引擎排名的主要规则,所以定位、服务等会使竞争的焦点。

19、举出三个增加导入链接的办法。
1. 在艾瑞、Donews等IT行业新闻网站发布高质量文章。这些网站的排名很好,除了增加反向链接,还会给你带来高质量的流量。
2. 向行业网站和论坛提交文章。如SEO的研究性文章,提交给SEO信息资料网站或SEOWHY论坛。
3. 发送新闻稿。高质量的新闻稿提交给新闻门户网站。
4. 跟踪发布你文章的站点。给他们提供稿件来源。
5. 与其他网站交换文章发表。
6. 把文章发送给RSS网站如抓虾、鲜果等。
7. 做一个让人觉得自己很重要的调查,比如关于家庭主妇的研究等。如果你让别人觉得自己重要,别人会免费为你宣传。

20、首页采用flash的方式,为什么不利于SEO?Flash上的内容和链接都无法被搜索引擎读取。

在WebBrowser中用SendMessage模拟鼠标点击

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace BrowserMouseClick
{
  public partial class Form1 : Form
  {
	  [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
	  static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

	  [DllImport("user32.dll", SetLastError = true)]
	  static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);

	  [DllImport("user32.dll", CharSet = CharSet.Auto)]
	  static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

	  public Form1()
	  {
		  InitializeComponent();
	  }

	  private void Form1_Load(object sender, EventArgs e)
	  {
		  webBrowser1.Navigate("http://www.devpub.com");
	  }

	  private void btnMouseClick_Click(object sender, EventArgs e)
	  {
		  int x = 100; // X coordinate of the click
		  int y = 80; // Y coordinate of the click
		  IntPtr handle = webBrowser1.Handle;
		  StringBuilder className = new StringBuilder(100);
		  while (className.ToString() != "Internet Explorer_Server") // The class control for the browser
		  {
			  handle = GetWindow(handle, 5); // Get a handle to the child window
			  GetClassName(handle, className, className.Capacity);
		  }

		  IntPtr lParam = (IntPtr)((y << 16) | x); // The coordinates
		  IntPtr wParam = IntPtr.Zero; // Additional parameters for the click (e.g. Ctrl)
		  const uint downCode = 0x201; // Left click down code
		  const uint upCode = 0x202; // Left click up code
		  SendMessage(handle, downCode, wParam, lParam); // Mouse button down
		  SendMessage(handle, upCode, wParam, lParam); // Mouse button up
	  }
  }
}

想在WebBrowser控件里面模拟鼠标点击,在百度上找了半天,怎么也找不到,还是google强大,在一个国外网站上找到的,代码比较清楚了,不做说明。

用SendMessage在不同程序间发送消息

窗体1中的代码:

	/////////////////////////////////////////
	///file name: Note.cs
	///
	public class Note
	{
		//声明 API 函数
		[DllImport( "User32.dll", EntryPoint = "SendMessage" )]
		private static extern int SendMessage(
			  int hWnd,     // handle to destination window
			  int Msg,     // message
			  int wParam,   // first message parameter
			  int lParam   // second message parameter
		);
		[DllImport( "User32.dll", EntryPoint = "FindWindow" )]
		private static extern int FindWindow( string lpClassName, string lpWindowName );
		//定义消息常数
		public const int USER = 0x500;
		public const int TEST = USER + 1;

		//向窗体发送消息的函数
		private void SendMsgToMainForm( int MSG )
		{
			int WINDOW_HANDLER = FindWindow( null, @"Note Pad" );
			if( WINDOW_HANDLER == 0 )
			{
				throw new Exception( "Could not find Main window!" );
			}
			SendMessage( WINDOW_HANDLER, MSG, 100, 200 );
		}
	}

(全文 ...)

如何启动Android SDK 1.5版的模拟器

装完Java JDK后。。。进入CMD....

如何启动Android SDK 1.5模拟器 (全文 ...)

javascript里面的小数计算出现近似值的解决办法

在javascript里面,小数只能进行相似计算,例如:5.06+1.30,你得到的结果会是6.359999999999999,但有的小数计算又是正确的,如果计算出现了近似值,你可以用如下的方法计算:

var number1 = 5.06;
var number2 = 1.30;
var sum = (number1 * 100 + number2 * 100) / 100; //sum=6.36,不是一个近似值

这样计算可以得到一个准确的结果。