2012年2月29日星期三

文本式外链时间性传递网页权重研究

  其实外链时间性是最近在seo实践优化中发现的一点东西,对于排名提升有不小的作用。而我所说的这种外链主要指文本形式的外链。

  不知道大家有没有发觉文本式的外链其实对seo排名提升日渐突出。其实文本式的外链是十分自然的一种外链形式,但是被很多优化人员所误解。为什么说文本式外链比较自然呢?比如说你站在一个普通网友的立场来考虑,他觉得你的网站不错,去推荐你的网址,他会在这段描述中用锚文本帮你宣传呢?还是用文本纯网址帮你宣传呢?当然答案是后者。大家不要把普通网友想的太聪明了!我估计有90%的网名不知道锚文本,也不会给文字做超链接,一是麻烦,二是他们不愿意去找那个做超链接的符号。这就对啦,所以说文本式的链接是十分自然的一直链接增长形势,更符合当今用户体验。搜索引擎自然不会小看这种链接。对于文本式外链我最早发现有效是在2008年的时候,那时候记得在作弊做火狐浏览器推广,就是做个诱惑视频然后把想要看诱惑视频的人用一个网址导向我的推广火狐下载的页面(想看mm视频需要火狐浏览器支持)但是又不能以超链接的形式做导向,害怕gg追查过来,GG不允许诱惑推广,所以那时候用文本形式的链接叫用户复制网址进浏览器做导向,但是后来发现导向的网址被百度收录,所以当时就意识到文本形式的链接也能很好的被搜索发现。但是当时的理解就是顶多能收录而已。

  再说下时间性这个概念。很多站长可能发现一个新站从做好内容到发链接要至少2-3个月才能获得较好的首页排名。可能这段时间你做了很多的外链工作做了一些友情链接和锚文本链接,然后排名上来了,你就觉得这样做是对的。所以一直这样做下去,但是后来你发现能这样做链接的地方越来越少,因此也就出现了网站发展的一个瓶颈。我不否认这种方法,因为这种方法确实能提升排名。而且内链中使用这种方法也在告诉搜索引擎你这个站是什么内容。但是切不要忽视的当代搜索引擎的智商。实际上在一段描述中多次出现某个词,搜索能判断出你描述的意思,这时候加上一个网址链接搜索其实就明白了你是在说这个网址。所以这样无形又给你提供了很多发链接的地方。(很多站是不允许你做锚文本或发超链接的)但是目前发现文本链接的一个弊端就是传递权重或者说是获得排名比较慢。我的很多站都出现这个问题。比如说刚做的一个新站,这个站的标题是QQ飞车宠物名字,全站也围绕QQ飞车名字展开,但是发了许多文本链后一个多月依然没有获得任何百度排名。经我长期研究发现,这种形式的链接获得排名需要半年时间。我的其他二级域名站都是这样做了半年以后获得的排名。相信我的这个QQ飞车站在半年左右的时间也会获得排名的提升。所以我坚信只要网站主题明确,内容围绕主题展开,原创性做到,再去一些高质量的网站投放软文,坚持去按照我收集的一些资源去发链接,半载后会有不一样的收获。(投软文的一大好处也能做到外链广泛性,相信外链广泛性的重要程度不用我多说了吧,不懂的可以搜索下链接流行度这个概念)

  目前我看待做网站就好似种树,这个QQ飞车车队名字子站点就像一棵树苗。需要你精心照料,浇水施肥,还要有耐心才能茁壮成长。做站要靠毅力有时候也需要运气。但是坚持的信念绝对不能少!很多站长无所收获一个很大的原因就是死在了明天的晚上,想看见后天的太阳就需要坚持。当你成功做好了一个站后可以用相同的模式去复制下一个再下一个,成功就是简单招式练到极致,不断的去重复再重复的过程。相信广大的站长都明白。也希望互联网站长以后能够达到一个更高的层次,更愿意去分享,转载本人文章的时候保留别人的网址,这都是最基本的品质。当你的品质提升到一个高度的时候,有时候做很多事情都跟容易获得更大的回报,当你偷偷去掉了别人链接的时候其实人家也会去掉你的链接,久而久之,最终的受害者还是广大站长这个群体。广交天下愿意分享愿意付出的站长朋友QQ:279532860本文由http://qqfeiche.tusiji520.cn站长供稿!


文本式外链时间性传递网页权重研究

TAG:本文链 QQ飞车 站长 网站 网站推广 赚钱

【译】用图表展示未知

     伴随着你的经理湿润的呼吸呼到你的脖子上,你很不自然的转过椅子,告诉他你现在所完成的成果。

    “非常好”经理说道,你不禁开始想象他站在你身后摸着胡子的样子。“现在还需要一个饼图,每个报表都有饼图!”,经理说完这句话后,你发觉身后温暖的感觉消失了,取而代之的是脑中想象出经理披着邪恶的黑斗篷的样子。你重重的叹了一口气:“饼图”。

     虽然你知道并不像经理所说的那样,每一个报表都有饼图。但起码你要了解一些饼图和地图的概念来告诉经理其实并不是这么回事。本篇文章阐述报表中不同类型的可视化以及它们的应用场景。

     在开始之前,请确保你已经阅读过本系列文章之前的文章。

 

可视化

    除去基于文本的报表项之外,报表可以通过不同类型的可视化来提供有价值的信息,这些项包括图表,地图和仪表。这些项不仅能使报表的外观更加专业和美观,还能展现出其他方式无法展现出的数据。可视化在SQL Server 2008R2中的项以及他们的应用场景如下:

  • 图表展示了趋势,分析和分组信息。如果你希望用户快速理解报表信息,图表是一个正确的选择。
  • 显示地理信息,则地图是不二之选,因为地图可以在有意义的区域上覆盖信息。
  • 还有许多仪表可视化项,包括仪表,数据条,迷你图和指示器,这些将会被在后续文章介绍到。

    上面的列表中的前两项可以在工具箱中找到,如图5-1所示。

    1

     图5-1.工具箱中的可视化项

 

图表

    图表是在日常中最常用到的。我们在工作中被淹没在Excel和PowerPoint中,有时甚至每月的手机账单上面都有图表。虽然我们已经知道不同类型的图表可以突出一些趋势和数据,但如何选择该用哪种类型的图表?表5-1显示了在报表服务中的图表和他们的使用场景。

图表类型 使用场景
趋势
折线图 趋势
形状 比较
条形图 趋势
面积图 趋势
范围图 趋势
散点图 趋势,比较
极坐标图 比较

表5-1.图表类型和使用场景

 

    既然我们已经知道了该选择哪类图表,下面我们在报表中创建图表。最终完成后的报表如图5-2所示。

    2

    图5-2.完成后的报表

 

    为了完成我们的图表报表,打开BIDS,创建一个新的报表项目后创建报表。针对AdventureWorks数据库写如下查询语句.

select t.Name as TerritoryName     , SUM(o.TotalDue) as TotalOrders     , COUNT(*) as NumberOrdersfrom Sales.SalesOrderHeader oinner join Sales.Customer c     on o.CustomerID=c.CustomerIDinner join Sales.SalesTerritory t     on c.TerritoryID=t.TerritoryIDgroup by t.Name
      代码5-3.AmountSoldByTerritory数据集

    然后我们将图表添加到报表中。从工具箱中拖入图表到设计窗口。图表向导将会打开,如图5-4所示。创建一个条形图。在条形图选项中选择第一个。

    4

      图5-4.在图表类型选择器中选择条形图

 

    单击图表会弹出图表数据窗口.添加TotalOrdersNumberOrders字段到图表数据窗口的值里。添加TerritoryName到类别组里。如果你想用动态数据值来展现不同的条形图,则序列组会很有用。

    现在看上去图表已经达到了我们的需求。但是由于轴的单位是不同的我们看不出实际的订单数量。因此我们需要为订单数量再创建一个轴。在NumberOrders值的属性窗口,在轴和图表区选择水平轴为辅助,如图5-5所示。

    5

     图5-5.序列属性窗口

   

    现在我们运行报表就可以看见,销售订单的数量在图表上面,而销售额在图表下面。最后,我们可以在序列属性窗口中修改一系列的参数,包括颜色,字体,位置。最后产生的结果应该和图5-2类似。

 

地图

    地图报表项是在SQL Server 2008R2首次引入的,你可以使用内置函数对地图上不同颜色的标记从而将数据以不同的方式展示。

    报表服务允许你从下面几种空间数据源中创建地图:

  • 地图库
  • ESRI 形状文件
  • SQL Server空间查询

    当选择好所需的空间数据源时,你就可以将数据附加到地图上了。下面是一个完成后的地图用于显示在美国的客户分布图如图5-6所示。

    6

    图5-6.完成后的地图报表

 

    下面我们来创建一个客户数量地图。使用如代码5-7所示的数据来查询SQL Server数据库。

select s.Name as StateName     , COUNT(*) as PeopleCountfrom Person.Address ainner join Person.StateProvince son a.StateProvinceID=s.StateProvinceIDgroup by s.Name

    代码5-7.CustomerCountByState数据集

 

    当数据准备好之后。将地图项拖入报表的设计窗格。地图创建向导会引导我们创建地图,我们选择了USA by State选项,如图5-8所示。

    8

     图5-8.选择美国地图的地图向导界面

 

    接下来的屏幕提供了改变地图分辨率、标尺和大小的选项。你还可以使用添加必应地图层,这个选项允许你使用必应的Web Service来现实实际的地理信息。让我们以默认选项点击下一步。

    下一个屏幕选择我们希望展示的地图类型:分别为基本图、颜色分析图和气泡图。我们选择起泡分析图后点击下一步。选择刚刚创建的CustomerCountByState数据集。现在我们需要设置好我们的分析数据了。

    接下来的屏幕如图5-9所示,第一个区域将地图文件的metadata和数据集的metadata进行匹配。第二个区域(空间数据)和第三个区域(分析数据)正如其所展示的功能那样。因为我们的数据集返回的是完整的洲名称,所以我们在空间数据集选择字段:STATENAME,在分析数据集使用字段:StateName。

    9

     图5-9.Metadata匹配后的地图向导界面

 

    最后,我们需要告诉报表服务如何弹出气泡。在接下来的的屏幕如图5-10所示,选择数据字段[Sum(PeopleCount)],然后选择主题颜色。完成后,点击完成。

    10

    图5-10.选择数据时的地图向导

 

     记住无论你进行到了哪一步你都可以点击上一步来对已经设置的数据进行修改。你还可以在设计窗格中直接对地图报表项做修改。在完成这些步骤之后,最终你能看到如图5-6所示的报表!

 

不再未知

     在读完本篇文章之后。我们已经充满希望的“用图表展示未知”并准备为报表添加一些更棒的可视化项。我们现在已经知道了如何创建不同类型的图表和使用地图来展现地理信息了。下一步,我们将会将已学到的技巧进行升级。如果你的经理喜欢饼图,那毫无疑问他也会喜欢仪表盘,我们将在下一篇文章:揭示仪表盘中进行阐述。

 

------------------------------------------------------------

原文链接:Charting the Unknown – Level 5 in the Stairway to Reporting Services

Translated by:CareySon


【译】用图表展示未知

TAG:

霍思燕优雅亮相巴黎时装周开幕酒会,东方魅力迷倒时装周主席

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕小西装搭配干练迷人

  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕在宴会门口

  酒会上,法国高级成衣协会联盟主席、巴黎时装周主席Didier grumbacah对霍思燕赞不绝口,称:"非常荣幸邀请到了霍思燕这位时尚、美丽的东方面孔为今年时装周的开幕增添星光!" Didier grumbacah对霍思燕早前在柏林电影节开幕红毯上的亮相记忆犹新,他表示:"时装、时尚、电影都是充满灵魂的、发现美丽和创造美丽的伟大事业,我眼中的霍思燕不仅是来自中国的演员,更是时尚与电影的完美结合,令人无法抗拒的美丽尤物!"


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴

  与柏林电影节上惊艳的红毯秀不同,这一次出席巴黎时装周的霍思燕,以一袭长裙外加白色西服外套,造型大方得体,清新可人,与巴黎的浪漫气质相得益彰。霍思燕将于本次时装周出席多场T台秀,并在巴黎为某时尚杂志拍摄封面大片。

 霍思燕优雅亮相巴黎时装周开幕酒会

  时装周主席与霍思燕


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  时装周主席与霍思燕


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕西装搭配长裙显得娇小可人


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴


  

 霍思燕优雅亮相巴黎时装周开幕酒会

  霍思燕赴巴黎参加巴黎时装周开幕晚宴

        爱美网猜你喜欢的文章:

        奥斯卡巨星慈善派对 惊现章子怡
        金大姐模特小妹首次拍摄比基尼大片


霍思燕优雅亮相巴黎时装周开幕酒会,东方魅力迷倒时装周主席

TAG:霍思燕 巴黎时装周 2012秋冬巴黎时装周

保存图片

System.Drawing.Image image = null;
try
{
string fileName = imgs[i];
string filePath = commonpath + imgs[i];
string localFile = localpath + imgs[i];

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(filePath);
HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();
if (webresponse.StatusCode == HttpStatusCode.OK)
{
image = System.Drawing.Image.FromStream(webresponse.GetResponseStream());
//保存在服务器的本地硬盘

image.Save(localFile);

//保存在客户端上

File.WriteAllBytes(@"D:\1.JPG",byteImage);

}
}
catch (Exception ex)
{
string result = "远程图片保存失败,原因为:\n" + ex.Message;
Response.Write(result);
Response.End();
break;
}
finally
{
if (image != null)
{
image.Dispose(); //释放资源
}

}


保存图片

TAG:

制作半透明渐显窗体

Frm_Main.cs

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8
9 namespace GraduallyForm
10 {
11 public partial class Frm_Main : Form
12 {
13 public Frm_Main()
14 {
15 InitializeComponent();
16 }
17
18 private void timer1_Tick(object sender, EventArgs e)
19 {
20 this.Opacity += 0.1;//设置窗体的不透明级别
21 }
22 }
23 }

Frm_Main.designer.cs

View Code
 1 namespace GraduallyForm
2 {
3 partial class Frm_Main
4 {
5 /// <summary>
6 /// 必需的设计器变量。
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// 清理所有正在使用的资源。
12 /// </summary>
13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows 窗体设计器生成的代码
24
25 /// <summary>
26 /// 设计器支持所需的方法 - 不要
27 /// 使用代码编辑器修改此方法的内容。
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.components = new System.ComponentModel.Container();
32 this.timer1 = new System.Windows.Forms.Timer(this.components);
33 this.button1 = new System.Windows.Forms.Button();
34 this.SuspendLayout();
35 //
36 // timer1
37 //
38 this.timer1.Enabled = true;
39 this.timer1.Interval = 1000;
40 this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
41 //
42 // button1
43 //
44 this.button1.Location = new System.Drawing.Point(500, 338);
45 this.button1.Name = "button1";
46 this.button1.Size = new System.Drawing.Size(47, 25);
47 this.button1.TabIndex = 0;
48 this.button1.Text = "button1";
49 this.button1.UseVisualStyleBackColor = true;
50 //
51 // Frm_Main
52 //
53 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
54 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
55 this.BackgroundImage = global::GraduallyForm.Properties.Resources.C_编程词典;
56 this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
57 this.ClientSize = new System.Drawing.Size(404, 253);
58 this.Controls.Add(this.button1);
59 this.Name = "Frm_Main";
60 this.Opacity = 0.3;
61 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
62 this.Text = "制作半透明渐显窗体";
63 this.ResumeLayout(false);
64
65 }
66
67 #endregion
68
69 private System.Windows.Forms.Timer timer1;
70 private System.Windows.Forms.Button button1;
71 }
72 }



作者:王雄飞(当冬夜渐暖)
出处:http://www.cnblogs.com/ynbt/
关于作者:专注于.Net、WCF和移动互联网开发。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过ynbt_wang@163.com联系我,非常感谢。 。
制作半透明渐显窗体

TAG:

网站优化常见问答一:新站为什么不被收录

  相信很多站长都对这个问题非常感兴趣吧,笔者大大小小做站几十个,从一开始的每天查询自己的网站是否有收录到现在基本上不再关心新站不会收录的问题了。其实随着搜索引挚对新站的照顾,一般网站上线一个星期内必然会被收录,只要不是违法的或者是内容不健康的,亦或者刚上线就产生大范围的优化痕迹出现的都会被收录。今天笔者来给大家讲一下新站不收录的原因及其解决方法。

  新站不收录的原因主要有哪些?

  1、空间不稳定。这是老生常谈的话题了,不过笔者也要把它列出来,因为空间对新站是否快速收录是最重要的,空间不稳定,蜘蛛无法爬行,自然就不会收录页面。

  2、代码冗余。据笔者所知很多的网站程序都是从网络上下载的,自己不处理一下多余的代码,如JS代码封装、FLASH文件去除、ROBOTS设置等,都是造成不被收录的原因。

  3、网站结构不利于蜘蛛爬行。

  4、首页内容不丰富或者是采集内容过多。

  5、域名存在被K的不良记录。

  6、刚上线就急急忙忙的做不恰当的优化,如把标题改来改去、页面调整、路径修改等。

  7、桥页、跳转页面设置,对于新站千万不要在上线之后就设置桥页和跳转页面,这样会影响到网站在搜索引挚的友好度,同时对收录也非常不利。

  8、隐藏链接或文字与背景颜色相同,搜索引挚最反感这类的优化作弊了,特别是新站千万不要使用这些优化处理。

  9、关键词堆砌。一般新站上线之后,只要设置好标题、关键词标签、描述就行了,不必为了快速收录而堆砌关键词,堆砌很容易让网站毁掉在搜索引挚心中的形象。

  那么对于新站不被收录的解决方法有哪些呢?

  1、新站上线之后保持空间的稳定性。这点是非常重要的,即使你不做外链、不交换友情链接也要先确保自己的空间稳定,只要空间打得开才能让蜘蛛爬行,才会收录。

  2、新站上线之后,设置好标题、关键词、描述就不会改动,同时不要堆砌关键词。

  3、把网站提交到搜索引挚的登陆入口,每个新站提交一次即可。

  4、适当的增加一些外链。这里笔者建议新站增加外链的方法主要选择百度百科、百度知道和百度空间和查询类型的网站几种方式。

  5、内容必须合法。这是重点,如果你的内容违法的或者是不健康的,即使做再多也不会被收录的。因为搜索引挚都屏弊了这类的内容。

  6、新站如何一个星期还不被收录的话,那么站长可以到百度投诉中心投诉一下,理由尽量写好一点。

  7、交换友情链接。如果你有人脉资源或者自己有老站的话,那么可以给新站增加三五条友情链接适当的带动一下,这种方法比较高效,而且还可以自己控制的。

  8、每天在搜索引挚中查询一下自己的网站名称。这个应该很少站长知道吧,笔者也是通过长期的测试的,首先每天在搜索引挚中查询一下自己的网站名称和网址,同时在百度指数中查询一下自己独有的网站名称和域名,坚持一个星期以上,就能加快收录速度。

  对于新站不被收录,其实只要找到其中的原因自然就可以快速的找到解决的方法了。而新站不被收录的原因主要是以上几点,同时对于解决新站不被收录的方法笔者也归纳起来了,上面所讲到的都是笔者经过实战得来的,希望可以帮到您吧。本文就讲到这里,由冲锋衣(www.jf59.com)独家供稿,转载请注明,谢谢!


网站优化常见问答一:新站为什么不被收录

TAG:网站 优化 常见问 新站 什么 收录 相信 多站 这个 问题 站长 网站 网站推广 赚钱

看看谷歌In

  什麼是In-House SEO? 也就是公司内部自己进行SEO作业,称为In-House SEO。要能够负责公司内部的SEO不是一件简单的事情,因为他必须具备许多特质,我们来看看吧,经常被问到,到底我们是属于技术性的SEO? 还是营销性的SEO? 他的回答是: 我是具有技术的营销人。

  这个也是许多人对于SEO这个领域的疑问,例如就经常有人问说,我们的SEO课程是营销导向? 还是技术导向? 我们也都认为应该是: 以技术为基础,达成最高效率的营销目的。

  由于现在的SEO必须跨越「营销」与「技术」,甚至于还可能带点「艺术」的味道。最早以前是要网页设计师 (Webpage Designer) 变成美工艺术设计师 (Webpage Art Designer),要变成网站管理者 (Webmaster)、网站规划师 (Website Architect),后来是要网页设计师变成搜寻优化策略师 (SEO Strategist),现在更是要求变成全方位的Organic Web Strategist、ZMOTer,也就是「网络营销策略规划师」... 这是SEO工作者的机会与挑战。

  作者认为现在的企业并不需要去僱用一个In-House SEO来产生经常性报表或是把排名往上推,这个早就已经有人做了,而是需要一个In-House SEO更具分析能力及专注在投资回报率上。

  因此作者认为In-House SEO应该具备以下特质:

  (1)必须是思想的领导者

  因为SEO人可以看到哪些作为可以协助企业,因此在各种情况下,SEO人员在思考的问题,可能是许多人观察不到的,因此SEO人员必须有能力成为思想的领导者,来引导企业思考。

  (2)必须是能够影响别人的人

  既然SEO人员会观察到许多别人无法观察的事物,或是思考别人没有想到的问题,因此他也就必须把这些观察及思考的结果来影响别人,所以SEO人员必须有能力去影响别人。

  (3)必须是具有销售能力的人

  因为SEO的最终目标在于提高销售,因此在整个过程中,SEO人员必须随时带有销售的概念,在最合乎成本效益情况下,去追求最高的获利,并且在SEO过程中,就是不断的销售概念给企业,因此具备销售能力,可以让SEO工作更容易获得进展。

  (4)必须是具有协调能力的人

  SEO虽然只牵涉到技术与销售,但是很可能牵涉的范围可能包括整个企业,除了可能会有部门间的本位主义之外,还可能会牵涉到不团小团体的对抗,因此SEO人员必须是具有协调能力的人,否则可能许多策略都只是纸上谈兵而无法推展。

  (5)必须是具有教育能力的人

  因为SEO策略的推动牵涉到上述的许多层面,因此除了协调之外,还需要去告诉各阶层的人员所能获得的好处,因此就必须能够将理念传达出去,因此SEO不能够过于木訥寡言,必须要能够去教育别人,并且让对方接受,况且太多人不瞭解SEO,更是需要不断的教育与开导。

  (6)必须是具有分析能力的人

  这点我们已经说过太多了,SEO作业中有太多杂乱的资料需要进行分析解读,如果没有能力去独自瞭解,就无法瞭解策略应该进行的方向,也无法得知是否获得最高的利益。

  (7)必须是具有逻辑建立能力的人

  这个逻辑建立能力应该可以分成两个方面,第一个是跟程式设计有关,另外一个是跟整体SEO策略的逻辑有关。前者是让SEO人员容易与程式设计师沟通,后者是为了建立整个SEO策略的远景,因为一个逻辑错误的SEO策略是无法让人信服的。

  (8)必须是具有耐心的人

  这点应该不必多说,因为大多数企业各种阶层的人员大多不瞭解SEO,因为SEO人员更是必须具有耐心去沟通与协调。

  (9)必须是具有整合不同意见能力的人

  没有一个策略是百分之百完美,因为需要妥协许多实际状况,因此当企业有许多不同意见时,SEO人员就必须在眾多意见中去整合必须整合的意见,让不是百分之百完美的SEO策略能够带来最大的效益。

  应该再加上一项被作者忽略的项目,那就是

  (10)必须是具有各种网路技术的人

  SEO本身是极具技术性的,如果不具备各种网路技术,这个SEO就不是SEO,而是一般的网路营销,也无法获得SEO应该达成的效益。

  看完上述的十个特质,更应该瞭解企业的SEO策略绝对不是交待给一个助理去完成,而是关係到整个企业的流程,当然我们这边所指的SEO是指广义的SEO,而不是只为了建立一个search engine friendly的网站而已。

  全面的In-House SEO需要这些十项特质,也必须高层实际参与及授权,如果把In-House SEO定义在改善网站,那麼能够获得的效益就很有限了。

  本文作者:你不在 来源 http://www.comseo.net/szseo/223.html QQ:304465896 欢迎交流


看看谷歌In

TAG:In House SEO 站长 网站 网站推广 赚钱

Android开发_Animation(2)

新建项目:

http://www.cnblogs.com/hongten/gallery/image/112169.html

项目结构:

http://www.cnblogs.com/hongten/gallery/image/112168.html

main.

 1 <? 2 <RelativeLayout  3     android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7
8 <!-- translate移动位置 -->
9 <Button
10 android:id="@+id/btn_translate"
11 android:layout_width="fill_parent"
12 android:layout_height="wrap_content"
13 android:layout_alignParentBottom="true"
14 android:text="测试translate移动动画效果"
15 />
16 <!-- alpha淡入淡出效果 -->
17 <Button
18 android:id="@+id/btn_alpha"
19 android:layout_width="fill_parent"
20 android:layout_height="wrap_content"
21 android:layout_above="@id/btn_translate"
22 android:text="测试alpha淡入/出效果"
23 />
24 <!-- rotate旋转效果 -->
25 <Button
26 android:id="@+id/btn_rotate"
27 android:layout_width="fill_parent"
28 android:layout_height="wrap_content"
29 android:layout_above="@id/btn_alpha"
30 android:text="测试rotate旋转效果"
31 />
32 <!-- scale伸缩效果 -->
33 <Button
34 android:id="@+id/btn_scale"
35 android:layout_width="fill_parent"
36 android:layout_height="wrap_content"
37 android:layout_above="@id/btn_rotate"
38 android:text="测试scale伸缩效果"
39 />
40 <LinearLayout
41 android:orientation="vertical"
42 android:layout_width="wrap_content"
43 android:layout_height="wrap_content"
44 >
45 <!-- 存放测试图片 -->
46 <ImageView
47 android:id="@+id/imageViewId"
48 android:layout_width="wrap_content"
49 android:layout_height="wrap_content"
50 android:layout_centerInParent="true"
51 android:layout_marginTop="100dip"
52 android:src="@drawable/icon"
53 />
54 </LinearLayout>
55 </RelativeLayout>

anim/alpha.

 1 <? 2 <set  3     android:interpolator="@android:anim/accelerate_interpolator">
4 <!-- 淡入淡出,从完全不透明变化到完全透明,持续时间为5秒 -->
5 <alpha
6 android:fromAlpha="1.0"
7 android:toAlpha="0.0"
8 android:startOffset="500"
9 android:duration="5000"
10 />
11 </set>

anim/translate.

 1 <? 2 <set  3     android:interpolator="@android:anim/accelerate_interpolator">
4 <!-- 移动位置,持续时间为5秒 -->
5 <translate
6 android:fromXDelta="50%"
7 android:toXDelta="50%"
8 android:fromYDelta="0%"
9 android:toYDelta="100%"
10 android:duration="5000"
11 />
12 </set>

anim/scale.

 1 <? 2 <set  3     android:interpolator="@android:anim/accelerate_interpolator">
4 <!-- 伸缩,从不可见状态变化到原本状态,持续时间为5秒 -->
5 <scale
6 android:fromXScale="0.0"
7 android:toXScale="1.0"
8 android:fromYScale="0.0"
9 android:toYScale="1.0"
10 android:pivotX="50%"
11 android:pivotY="50%"
12 android:duration="5000"
13 />
14 </set>

anim/rotate.

 1 <? 2 <set  3     android:interpolator="@android:anim/accelerate_interpolator">
4 <!-- 旋转,根据自己的中心位置旋转,持续时间为5秒 -->
5 <rotate
6 android:fromDegrees="0"
7 android:toDegrees="+350"
8 android:pivotX="50%"
9 android:pivotY="50%"
10 android:duration="5000" />
11 </set>

MainActivity.java

 1 package com.b510;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.View.OnClickListener;
7 import android.view.animation.Animation;
8 import android.view.animation.AnimationUtils;
9 import android.widget.Button;
10 import android.widget.ImageView;
11
12 /**
13 *
14 * @author Hongten
15 *
16 */
17 public class MainActivity extends Activity {
18 /** 图片显示 */
19 private ImageView imageView;
20 /** 旋转 */
21 private Button rotate;
22 /** 淡入淡出 */
23 private Button alpha;
24 /** 伸缩 */
25 private Button scale;
26 /** 移动位置 */
27 private Button translate;
28
29 /** Called when the activity is first created. */
30 @Override
31 public void onCreate(Bundle savedInstanceState) {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.main);
34
35 imageView = (ImageView) findViewById(R.id.imageViewId);
36
37 rotate = (Button) findViewById(R.id.btn_rotate);
38 alpha = (Button) findViewById(R.id.btn_alpha);
39 scale = (Button) findViewById(R.id.btn_scale);
40 translate = (Button) findViewById(R.id.btn_translate);
41
42 rotate.setOnClickListener(new OnClickListener() {
43 @Override
44 public void onClick(View v) {
45 // 使用AnimationUtils装载动画设置
46 Animation animation = AnimationUtils.loadAnimation(
47 MainActivity.this, R.anim.rotate);
48 // 使用imageView对象的startAnimation方法执行动画
49 imageView.startAnimation(animation);
50 }
51 });
52 alpha.setOnClickListener(new OnClickListener() {
53 @Override
54 public void onClick(View v) {
55 // 使用AnimationUtils装载动画设置
56 Animation animation = AnimationUtils.loadAnimation(
57 MainActivity.this, R.anim.alpha);
58 // 使用imageView的startAnimation方法执行动画
59 imageView.startAnimation(animation);
60 }
61 });
62 scale.setOnClickListener(new OnClickListener() {
63 @Override
64 public void onClick(View v) {
65 // 使用AnimationUtils装载动画设置
66 Animation animation = AnimationUtils.loadAnimation(
67 MainActivity.this, R.anim.scale);
68 // imageView对象调用startAnimation方法执行动画
69 imageView.startAnimation(animation);
70 }
71 });
72 translate.setOnClickListener(new OnClickListener() {
73 @Override
74 public void onClick(View v) {
75 // 使用AnimationUtils装载动画设置
76 Animation animation = AnimationUtils.loadAnimation(
77 MainActivity.this, R.anim.translate);
78 // imageView对象调用startAnimation方法执行动画
79 imageView.startAnimation(animation);
80 }
81 });
82 }
83 }

运行效果

1.初始化

http://www.cnblogs.com/hongten/gallery/image/112170.html

2.scale效果

http://www.cnblogs.com/hongten/gallery/image/112171.html

3.rotate效果

http://www.cnblogs.com/hongten/gallery/image/112172.html

4.alpha效果

http://www.cnblogs.com/hongten/gallery/image/112173.html

5.translate效果

http://www.cnblogs.com/hongten/gallery/image/112174.html


Android开发_Animation(2)

TAG:android animation 动画

Android开发_Animation

新建项目:

http://www.cnblogs.com/hongten/gallery/image/112163.html

项目结构:

http://www.cnblogs.com/hongten/gallery/image/112162.html

p1.png是自己添加进去的,当然也可以使用其他图片

main.

 1 <? 2 <RelativeLayout  3     android:id="@+id/layoutId"
4 android:orientation="vertical"
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 >
8 <LinearLayout 9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent"
11 >
12 <!-- 添加图片 -->
13 <Button
14 android:id="@+id/btn_add"
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text="添加图片"
18 />
19 <!-- 删除图片 -->
20 <Button
21 android:id="@+id/btn_delete"
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:text="删除图片"
25 />
26 </LinearLayout>
27 <!-- 显示图片 -->
28 <ImageView
29 android:id="@+id/iv_image"
30 android:layout_width="wrap_content"
31 android:layout_height="wrap_content"
32 android:layout_centerInParent="true"
33 android:layout_marginTop="120dip"
34 android:layout_marginLeft="50dip"
35 android:src="@drawable/p1"
36 />
37 </RelativeLayout>

Main.java

 1 package com.b510;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.util.Log;
6 import android.view.View;
7 import android.view.ViewGroup;
8 import android.view.View.OnClickListener;
9 import android.view.animation.AlphaAnimation;
10 import android.view.animation.Animation;
11 import android.view.animation.Animation.AnimationListener;
12 import android.widget.Button;
13 import android.widget.ImageView;
14
15 public class Main extends Activity {
16 private static final String TAG="Main";
17 /** 添加图片 */
18 private Button addButton;
19 /** 删除图片 */
20 private Button deleteButton;
21 /** 显示图片 */
22 private ImageView imageView;
23 /** RaletvieLayout布局,他是包含了</br>Button,ImageView控件,定义在main.*/
24 private ViewGroup viewGroup;
25
26 /** Called when the activity is first created. */
27 @Override
28 public void onCreate(Bundle savedInstanceState) {
29 super.onCreate(savedInstanceState);
30 setContentView(R.layout.main);
31 // 从main.
32 addButton = (Button) findViewById(R.id.btn_add);
33 deleteButton = (Button) findViewById(R.id.btn_delete);
34 imageView = (ImageView) findViewById(R.id.iv_image);
35 viewGroup = (ViewGroup) findViewById(R.id.layoutId);
36
37 deleteButton.setOnClickListener(new OnClickListener() {
38
39 @Override
40 public void onClick(View v) {
41 // 申明一个AlphaAnimation对象,从完全不透明到完全透明
42 AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
43 // 设置动画持续时间为2秒钟
44 alphaAnimation.setDuration(2000);
45 // 执行动画前,延迟0.5秒钟
46 alphaAnimation.setStartOffset(500);
47 //为Animation对象设置监听器
48 alphaAnimation.setAnimationListener(new AnimationListener() {
49 @Override
50 public void onAnimationStart(Animation animation) {
51 Log.i(TAG, "start");
52 }
53
54 @Override
55 public void onAnimationRepeat(Animation animation) {
56 Log.i(TAG, "repeat");
57 }
58
59 @Override
60 public void onAnimationEnd(Animation animation) {
61 Log.i(TAG, "end");
62 //从viewGroup中移除imageView
63 viewGroup.removeView(imageView);
64 }
65 });
66 imageView.startAnimation(alphaAnimation);
67 }
68 });
69
70 addButton.setOnClickListener(new OnClickListener() {
71 @Override
72 public void onClick(View v) {
73 // 申明一个AlphaAnimation对象,从完全透明到完全不透明
74 AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
75 // 设置动画持续时间为2秒钟
76 alphaAnimation.setDuration(2000);
77 // 执行动画前,延迟0.5秒钟
78 alphaAnimation.setStartOffset(500);
79 viewGroup.addView(imageView);
80 // 启动动画
81 imageView.startAnimation(alphaAnimation);
82 }
83 });
84 }
85 }

运行效果

1.初始化

http://www.cnblogs.com/hongten/gallery/image/112164.html

2.点击删除图片按钮

http://www.cnblogs.com/hongten/gallery/image/112165.html

3.点击添加图片按钮

http://www.cnblogs.com/hongten/gallery/image/112166.html

4.后台运行情况

http://www.cnblogs.com/hongten/gallery/image/112167.html

当我们点击删除按钮的时候,android系统会自动调用onAnimationStart()方法,再调用onAnimationEnd()方法。


Android开发_Animation

TAG:android animation 动画

【译】Tablix指南

   “Ah ha,发现你了!”你的经理突然从桌子后面的假花旁冒出来,发出胜利的叫声。你沮丧地转过头看着经理。

   “我已经创建了一个基本报表,并抓取了一些数据,我正打算-”你在他打断你之前快速的解释着。

    “赶紧做完就好,大BOSS需要这个报表,越快越好”留下这些话后,你的经理扬长而去。

      你心情沉重的坐下,打开SQLServerCentral.com,又到了读本系列文章的时候了。本篇文章阐述如何分组信息,调整动态列和行分组以及在Reporting Service中使用Tablix。

 

Table + Matrix + List = Tablix

    Tablix是SSRS展示数据的工具。SQL Server Reporting Services 2008之后才有的报表项。由三个之前具有相似性的报表项组成:表、矩阵、列表。Tablix的视图如图4-1所示。

    1

    图4-1.Tablix视图

 

    你并不能在Business Intelligence Development Studio (BIDS)的工具箱中找到Tablix工具。取而代之的是,你可以在图二分别看到表、矩阵和列表项,无论你将这三个项中的哪个项拖入报表,报表服务其实使用的都是Tablix。

    2

     图4-2.工具箱中展现Tablix模板

     注意:如果你在BIDS中看不到工具箱,点击视图->工具箱选项或者按快捷键Ctrl + Alt + X.在工具箱中,所有的报表项都放在“报表项”头下。

     下面我们来看第一个tablix模版:表

 

    表是一个可以展示分组和聚合后数据的简单对象。如果数据包含的列是固定的,则可以使用表项。让我们从将”表”拽到报表上开始,在上一章中我们已经设置了数据集,这里直接为表使用这个数据集。每一个表只能从一个数据集中抓取数据。你可以从属性窗格中->DataSetName属性的下拉列表中选择数据集。属性窗格如图4-3。

    3

     图4-3.属性窗格和DataSetName属性

 

    现在我们可以使用数据集中的字段来涉及表了,我们可以通过如下几种方式来在表中插入字段:

  •     从报表数据窗格中拽入字段
  •     从每一个格子中右上角的下拉列表中选择字段,如图4-4所示
  •     在每个格子的属性窗格里进行选择

    4

    图4-4.表字段的选择

 

    使用那种方式设置字段并不重要,一个简单表布局如图4-5所示。

    5

    图4-5.简单的表布局

 

分组

    Tablix可以通过每一个“详细信息”分组来显示表。“详细信息”组为我们提供了一个了解分组原理的基本概念。每一次报表服务看到一个唯一行,它都会创建一个详细信息组。与这个原理相同,每一个所创建的分组都对唯一值再次创建一个详细信息组,下面我们来通过实例阐述这个概念。

    在分组窗格中。在SSRS2008之前的版本中,你可以在表和矩阵的属性窗格中看到这个窗格,而在之后的版本中,你直接在BIDS的底部就能看到这个窗格,如图4-6所示。

    6

     图4-6.行和列的分组窗口

 

     因为我们在表模版上工作,让我们来创建一个行组。点击行组窗格下的详细信息右边的下拉箭头,你会看到多个选项,包括”添加组”。选择添加组->父组选项,然后选择分组的条件列。如果需要添加组头和组尾,选择对应的Checkbox.完成的截图如图4-7所示。

    7

    图4-7.完成的Tablix组窗口

 

    当你点击完成后,你可以在表设计界面中看到如图4-8所示。

    8

     图4-8.分组后的表设计

 

    你可以在组头或组尾加入聚合函数或敲入一个标题来描述这一列。下面通过一个表达式来创建一个累加聚合。右键表格右下角处于行和列最后的那个单元格,右键点击文本单元格属性,在值那一栏填入:=SUM(Fields!TotalDue.Value),如图4-9所示。

    9

    图4-9 文本框属性

 

     在开始运行报表之前,让我们来看一下Tablix的矩阵模版。在讨论矩阵之前我们首先讨论分组是因为这是理解表和矩阵之前区别的关键点。接下来我们来看矩阵。

 

矩阵(Matrix)

     和表类似,矩阵也有对行或列进行聚合分组的功能。分组后的结果在x轴和轴上进行增长。创建列组和行组的方法很类似,唯一的区别是对属性的设置一个在行组窗格,一个是在列组窗格。下面例子是使用矩阵的报表按照不同月和销售地区对销售报表进行汇总的例子。如图4-10所示。

    10

     图4-10. 矩阵的布局

 

列表(List)

    列表在讨论tablix时经常会被遗忘因为它实在是太简单了。数据集中的每一行都会在列表中生成一行和一列。如果你需要在报表中创建一个不受限于当前格式元素,你可以使用列表。你可以在列表中键入任何文本框来满足最终用户所希望的布局。

 

格式(Formatting)

    报表的最终用户通常都希望数据以既定的格式显示。因为格式所应用的最小单元是文本框。所以你可以通过对表格,矩阵和列表来设置格式从而应用到tablix。在对我们已经创建好的基于表的报表中,我们对列排序规则和字体属性做一些改变。

 

列排序

    几乎每一张报表都需要应用列排序从而将数据以既定的排序展示。通过点击tablix的任何一出,在出现灰色框中点击右键,选择Tablix属性,如图4-11所示。

    11

    图4-11.选择Tablix属性窗口

 

    在属性窗口中,在左边的选项中选择排序。选择希望按照规则排序的列并选择排序顺序为A-Z,也就是升序。完成的窗口如图4-12所示。记住分组本身也带有排序,如果你运行报表后发现排序有问题,检查以确保其他类型的排序不会覆盖掉当前的排序。

    12

      图4-12.完成后的排序窗格

 

字体属性

    下一步,让我们来看字体属性。这个设置可以让字体更加好看。选择所有列的头那行,在属性窗格中,选择字体属性->FontWeight属性->粗体选项,如图4-13所示。

    13

    图4-13.在属性窗格中的字体属性选择

 

    在所有的这些准备,分组和格式设置完成后,我们迎来了完成的报表。点击预览标签,可以看到如图4-14所示。

    14

    图4-14.最终的报表视图

 

接下来:饭后甜点

    现在,我们已经完成了报表服务中报表的一些核心概念的学习。我们在表和矩阵中展示数据,并对其进行分组,排序和设置格式。这可以让我们的报表满足大多数用户的需求。因为我们总是想给用户最棒的产品,接下来我们学习如何在报表中添加图表和地图使我们给大BOSS的报表看上去充满活力。我将在本系列文章的下一篇以图表展示未知中进行阐述。


【译】Tablix指南

TAG:

SilverLight学习点滴二

如何将多个参数通过CommandParameter传入到ViewModel中呢??

找到一篇好文,备忘一下。

如何在xaml里,把多个参数传入到command

 

牛人就是多啊。。继续学习。。。


SilverLight学习点滴二

TAG:

创建非矩形窗体

Frm_Main.cs

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Runtime.InteropServices;
9
10 namespace RectangleForm
11 {
12 public partial class Frm_Main : Form
13 {
14 Bitmap bit;//声明一个Bitmap位图对象
15 public Frm_Main()
16 {
17 InitializeComponent();
18 }
19
20 private void Form1_Load(object sender, EventArgs e)
21 {
22 bit = new Bitmap("bccd.png");//从指定的图像初始化Bitmap对象
23 bit.MakeTransparent(Color.Blue);//使用默认的透明颜色对Bitmap位图透明
24 }
25 protected override void OnPaint(PaintEventArgs e)
26 {
27 e.Graphics.DrawImage((Image)bit, new Point(0, 0));//在窗体上绘制图片
28 }
29
30 private void label1_Click(object sender, EventArgs e)
31 {
32 this.Close();//关闭窗体
33 }
34 }
35 }

Frm_Main.designer.cs

View Code
 1 namespace RectangleForm
2 {
3 partial class Frm_Main
4 {
5 /// <summary>
6 /// 必需的设计器变量。
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// 清理所有正在使用的资源。
12 /// </summary>
13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows 窗体设计器生成的代码
24
25 /// <summary>
26 /// 设计器支持所需的方法 - 不要
27 /// 使用代码编辑器修改此方法的内容。
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.label1 = new System.Windows.Forms.Label();
32 this.SuspendLayout();
33 //
34 // label1
35 //
36 this.label1.BackColor = System.Drawing.Color.Transparent;
37 this.label1.Location = new System.Drawing.Point(280, 42);
38 this.label1.Name = "label1";
39 this.label1.Size = new System.Drawing.Size(17, 16);
40 this.label1.TabIndex = 0;
41 this.label1.Click += new System.EventHandler(this.label1_Click);
42 //
43 // Frm_Main
44 //
45 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
46 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
47 this.BackColor = System.Drawing.SystemColors.Control;
48 this.ClientSize = new System.Drawing.Size(300, 300);
49 this.Controls.Add(this.label1);
50 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
51 this.Name = "Frm_Main";
52 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
53 this.Text = "创建非矩形窗体";
54 this.TransparencyKey = System.Drawing.SystemColors.Control;
55 this.Load += new System.EventHandler(this.Form1_Load);
56 this.ResumeLayout(false);
57
58 }
59
60 #endregion
61
62 private System.Windows.Forms.Label label1;
63
64 }
65 }

作者:王雄飞(当冬夜渐暖)
出处:http://www.cnblogs.com/ynbt/
关于作者:专注于.Net、Windows Phone 7和移动互联网开发。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过ynbt_wang@163.com联系我,非常感谢。 。
创建非矩形窗体

TAG:

mvc3实现用户自定义二级域名

第一个代码文件

View Code
 public class DomainRoute : Route
{
private Regex domainRegex;
private Regex pathRegex;

public string Domain { get; set; }

public DomainRoute(string domain, string url, RouteValueDictionary defaults)
: base(url, defaults, new MvcRouteHandler())
{
Domain = domain;
}

public DomainRoute(string domain, string url, RouteValueDictionary defaults, IRouteHandler routeHandler)
: base(url, defaults, routeHandler)
{
Domain = domain;
}

public DomainRoute(string domain, string url, object defaults)
: base(url, new RouteValueDictionary(defaults), new MvcRouteHandler())
{
Domain = domain;
}

public DomainRoute(string domain, string url, object defaults, IRouteHandler routeHandler)
: base(url, new RouteValueDictionary(defaults), routeHandler)
{
Domain = domain;
}

public override RouteData GetRouteData(HttpContextBase httpContext)
{
// 构造 regex
domainRegex = CreateRegex(Domain);
pathRegex = CreateRegex(Url);

// 请求信息
string requestDomain = httpContext.Request.Headers["host"];
if (!string.IsNullOrEmpty(requestDomain))
{
if (requestDomain.IndexOf(":") > 0)
{
requestDomain = requestDomain.Substring(0, requestDomain.IndexOf(":"));
}
}
else
{
requestDomain = httpContext.Request.Url.Host;
}
string requestPath = httpContext.Request.AppRelativeCurrentExecutionFilePath.Substring(2) + httpContext.Request.PathInfo;

// 匹配域名和路由
Match domainMatch = domainRegex.Match(requestDomain);
Match pathMatch = pathRegex.Match(requestPath);

// 路由数据
RouteData data = null;
if (domainMatch.Success && pathMatch.Success)
{
data = new RouteData(this, RouteHandler);

// 添加默认选项
if (Defaults != null)
{
foreach (KeyValuePair<string, object> item in Defaults)
{
data.Values[item.Key] = item.Value;
}
}

// 匹配域名路由
for (int i = 1; i < domainMatch.Groups.Count; i++)
{
Group group = domainMatch.Groups[i];
if (group.Success)
{
string key = domainRegex.GroupNameFromNumber(i);

if (!string.IsNullOrEmpty(key) && !char.IsNumber(key, 0))
{
if (!string.IsNullOrEmpty(group.Value))
{
data.Values[key] = group.Value;
}
}
}
}

// 匹配域名路径
for (int i = 1; i < pathMatch.Groups.Count; i++)
{
Group group = pathMatch.Groups[i];
if (group.Success)
{
string key = pathRegex.GroupNameFromNumber(i);

if (!string.IsNullOrEmpty(key) && !char.IsNumber(key, 0))
{
if (!string.IsNullOrEmpty(group.Value))
{
data.Values[key] = group.Value;
}
}
}
}
}

return data;
}

public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return base.GetVirtualPath(requestContext, RemoveDomainTokens(values));
}

public DomainData GetDomainData(RequestContext requestContext, RouteValueDictionary values)
{
// 获得主机名
string hostname = Domain;
foreach (KeyValuePair<string, object> pair in values)
{
hostname = hostname.Replace("{" + pair.Key + "}", pair.Value.ToString());
}

// Return 域名数据
return new DomainData
{
Protocol = "http",
HostName = hostname,
Fragment = ""
};
}

private Regex CreateRegex(string source)
{
// 替换
source = source.Replace("/", @"\/?");
source = source.Replace(".", @"\.?");
source = source.Replace("-", @"\-?");
source = source.Replace("{", @"(?<");
source = source.Replace("}", @">([a-zA-Z0-9_]*))");

return new Regex("^" + source + "$");
}

private RouteValueDictionary RemoveDomainTokens(RouteValueDictionary values)
{
Regex tokenRegex = new Regex(@"({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?({[a-zA-Z0-9_]*})*-?\.?\/?");
Match tokenMatch = tokenRegex.Match(Domain);
for (int i = 0; i < tokenMatch.Groups.Count; i++)
{
Group group = tokenMatch.Groups[i];
if (group.Success)
{
string key = group.Value.Replace("{", "").Replace("}", "");
if (values.ContainsKey(key))
values.Remove(key);
}
}

return values;
}
}

第二个代码文件

    public class DomainData
{
public string Protocol { get; set; }
public string HostName { get; set; }
public string Fragment { get; set; }
}

在global里注册实现

            routes.Add("DomainRoute", new DomainRoute(
"{subdomain}.您的域名.com", // Domain with parameters
"{controller}/{action}/{id}", // URL with parameters
new { subdomain = "", controller = "Home", action = "Index", id = "" } // Parameter defaults
));


在HomeController的index 里获取域名值

            //获取二级域名
var subdomain = RouteData.Values["subdomain"].ToString();

剩下的工作接着做




mvc3实现用户自定义二级域名

TAG:mvc3

怎么样成为一个合格的SEOER?

  怎么样成为一个合格的SEOER?网络营销和网站优化也是一个现在比较热门的词语,这主要是现在的人工作、生活是越来越依靠网络了,一个公司或者企业想要立于不败之地,必须在网络这块市场中挣下自己的一块蛋糕。网络营销包含的内容和工作有很多,网站优化只是其中的一个小类别,很多人对于网站优化这一块也有一定的理解,但是理解的并不深刻,并不知道具备哪些东西才可以成为一个优秀的站长。

  一:具有建设网站的能力,这个方面可能也是很多做网站优化最欠缺的部分,因为只有网站建设的能力,但可以对网站结构、页面布局和内链布置这方面做到更加到位,不仅如此,比如网站需要做301、404等设置,都是需要用到代码的东西的,所以知道代码、了解建站对于一个站长是非常的有必要的。

  二:空间域名方面的知识,这个当然也不需要说了,如果想让一个网站在搜索引擎上有一个好的排名,那么选择一个稳定的空间,历史表现好的域名对于网站以后能获得更好的排名是非常的有好处的。如果空间经常不稳定、域名受过惩罚,那么在这种条件下优化起来就非常的困难。

  三:了解做优化最需要的东西和搜索引擎的算法变化,这点可能很多从事过优化的人都有一定的了解,最主要的就是做好内容的添加和外部连接的添加,内容最好是可以原创,要把握好原创度的问题,外链就是要寻找一些好的资源,可以在这些网站上加上我们网站的链接,当然某一段时间之内百度的算法会发生一定的变化,作为一位合格的站长必须能够通过自己和别人网站的表现来推测百度的算法变化,这点也是很重要的。

  四:资源和人脉,当页面的结构和程序都做好之后,就是添加文章和增加外链,对网站排名产生影响比较大的往往就是外链的多少和好坏,如果你拥有很多的外链资源,这样肯定可以在短时间之内网站就能获得好的排名,好的人脉也可以为你带来好的外部链接和最新的一些优化信息和策略,让网站表现的更好。

  好了,今天先总结这几点,可能总结的还不到位,希望大家一起共勉。文章首发于:http://www.809seo.com/Article/64.aspx,转载请说明出处。


怎么样成为一个合格的SEOER?

TAG:seo 站长 网站 网站推广 赚钱

建立字体形状窗体

Frm_Main.cs

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Runtime.InteropServices;
9
10 namespace FontForm
11 {
12 public partial class Frm_Main : Form
13 {
14 Bitmap bit;//声明位图对象
15 public Frm_Main()
16 {
17 InitializeComponent();
18 }
19
20 private void Form1_Load(object sender, EventArgs e)
21 {
22 bit = new Bitmap("font.jpg");//从指定的图像初始化Bitmap类对象
23 bit.MakeTransparent(Color.Blue);//使用默认的透明颜色对Bitmap位图透明
24 }
25 protected override void OnPaint(PaintEventArgs e)
26 {
27 e.Graphics.DrawImage((Image)bit, new Point(0, 0));//在指定位置按指定大小绘制图片的指定部分
28 }
29
30 private void label1_Click(object sender, EventArgs e)
31 {
32 this.Close();//关闭当前窗体
33 }
34 }
35 }

Frm_Main.designer.cs

View Code
 1 namespace FontForm
2 {
3 partial class Frm_Main
4 {
5 /// <summary>
6 /// 必需的设计器变量。
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// 清理所有正在使用的资源。
12 /// </summary>
13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows 窗体设计器生成的代码
24
25 /// <summary>
26 /// 设计器支持所需的方法 - 不要
27 /// 使用代码编辑器修改此方法的内容。
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.label1 = new System.Windows.Forms.Label();
32 this.SuspendLayout();
33 //
34 // label1
35 //
36 this.label1.BackColor = System.Drawing.Color.Transparent;
37 this.label1.Location = new System.Drawing.Point(261, 56);
38 this.label1.Name = "label1";
39 this.label1.Size = new System.Drawing.Size(17, 16);
40 this.label1.TabIndex = 0;
41 this.label1.Click += new System.EventHandler(this.label1_Click);
42 //
43 // Form1
44 //
45 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
46 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
47 this.BackColor = System.Drawing.SystemColors.Control;
48 this.ClientSize = new System.Drawing.Size(346, 204);
49 this.Controls.Add(this.label1);
50 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
51 this.Name = "Form1";
52 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
53 this.Text = "非矩形窗体";
54 this.TransparencyKey = System.Drawing.SystemColors.Control;
55 this.Load += new System.EventHandler(this.Form1_Load);
56 this.ResumeLayout(false);
57
58 }
59
60 #endregion
61
62 private System.Windows.Forms.Label label1;
63
64 }
65 }

作者:王雄飞(当冬夜渐暖)
出处:http://www.cnblogs.com/ynbt/
关于作者:专注于.Net、Windows Phone 7和移动互联网开发。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过ynbt_wang@163.com联系我,非常感谢。 。
建立字体形状窗体

TAG: