VS2010不能连上Codeplex的TFS解决办法

VS2010不能连上Codeplex的TFS,报TF31001错误

去命令行执行以下两条语句即可

reg add hklm\SOFTWARE\Microsoft\VisualStudio\10.0\TeamFoundation\RequestSettings /v BypassProxyOnLocal /t REG_SZ /d False

reg add hklm\SOFTWARE\Microsoft\TeamFoundationServer\10.0\RequestSettings /v BypassProxyOnLocal /t REG_SZ /d False

自动下载完整的.NET源代码

    从去年MS就开始喊着要开放.NET源代码,如今终于在一个含糊不清的授权协议下,通过Source Server的方式放了出来。虽然是如愿开源,但目前只提供几个核心模块,而且还限制必须在VS2008里面在线访问。
    其实既然决定开放,何必搞那么多限制出来,让偶等用着不爽还得自己动手丰衣足食,写个程序直接模拟VS2008获取源码的行为,一次性全部拖回来备用。
    空口无凭,上载一个
System.Xml 的源码包,和一个理论上能跑的程序原型,有兴趣的朋友可以试试。回头有时间了把相关代码整理一下再放出来,下面先大概说一下思路。

    首先,VS2008虽然要
打个补丁才能用源码调试,但这并不是下载源码的必要条件。MS发布源码所依赖的Source Server的机制,很早就通过 WinDbg 的发布包引入了。有兴趣的朋友可以使用 WinDbg 工具自己架设 Source Server,具体步骤请参考 %Debugging Tools for Windows%\sdk\srcsrv\ 目录下文档和脚本。
    而这个 Source Server 说白就是从 .pdb 调试符号文件里面,获取被绑定的已索引文件列表,然后根据系统_NT_SOURCE_PATH环境变量指定的服务器,拼接出一个 URL 然后通过http下载。具体这块的配置,可以参考
    Configuring Visual Studio to Debug .NET Framework Source Code
    讨厌的是MS在dbghelp.dll里面做了一些手脚,直接通过url去下载调试符号和源码是不被允许的。刚好scz前面研究过symbol server的行为,基本确定ms服务端是根据user agent来进行判断的。也就是说在发起请求时,把当前http的user agent改成ms认可的方式,就能够模拟dbghelp.dll通过srcsrv.dll完成的工作,具体代码类似

[code:c#]

public const string DefaultUserAgent = "Microsoft-Symbol-Server/9.9.9.9 (C; V; ;)";

    public void Restart(Uri uri)
    {
      _request = (HttpWebRequest)WebRequest.Create(uri);
      _request.UserAgent = DefaultUserAgent;   

      IAsyncResult result = (IAsyncResult)_request.BeginGetResponse(
        new AsyncCallback(ResponseCallback), this);
      ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle,
        new WaitOrTimerCallback(TimeoutCallback), this, _timeout, true);     
    }

[/code]

    另外一个罗嗦的事情,是每个链接建立后,MS服务器会先返回一个罗嗦的license声明,srcsrv.dll会弹出一个对话框让你Accept才能继续下载。
    例如你通过命令行去下载一个文件

wget  --user-agent=Microsoft-Symbol-Server/9.9.9.9
    Http://ReferenceSource.microsoft.com/source/.net/8.0/DEVDIV/
    depot/DevDiv/releases/whidbey/REDBITS/ndp/fx/src/Misc/
    InvariantComparer.cs/1/InvariantComparer.cs

    会直接返回一对垃圾信息,类似

SYMSRVCOMMAND:
YESNODIALOG:
IDYES:Accept:Accept=0cf80f849aa7449e9d064ade971bd887
IDNO:Decline:Decline=0cf80f849aa7449e9d064ade971bd887
TITLE:End User License Agreement
BUTTONDESCRIPTION:Please read carefully and understand the license agreement above. 
If you want to accept the license agreement, please click the “Accept” button.
TEXT:This license applies to the .NET Framework components that Microsoft makes available to you
in source code form.  To print these terms, select the contents of this area and copy then paste
into an application that can print text.

MICROSOFT .NET FRAMEWORK REFERENCE LICENSE
.NET FRAMEWORK REFERENCE SOURCE CODE


This license governs use of the accompanying software. If you use the software, you accept this license.
If you do not accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction" and "distribution" have the same meaning here as under U.S. copyright law.

    解决方法很简单,直接用正则表达式找到里面一个随机生成的id,然后程序自动Accept即可,代码类似

[code:c#]

private static Regex _accept = new Regex(@"IDYES:Accept:Accept=(\w*)");

          if (task._auth)
          {
          }
          else
          {
            string license = Encoding.Unicode.GetString(task._buf, 0, read);

            Match m = _accept.Match(license);

            if (m.Success)
            {

              task._auth = true;

              string id = m.Groups[1].Value;

              _logger.DebugFormat("Accept license id {0} for {1}", id, task._request.Address);

              Uri uri = new Uri(string.Format("{0}?Accept={1}", task._uri.ToString(), id));

              task.Restart(uri);
            }
          }

[/code]

其他的基本上没什么需要说明的,就是很基本的http请求调用啥的,呵呵

至于从.pdb里面获取文件名列表,需要调用dbghelp.dll里面的一组api
SymInitializeW/SymCleanup用来初始化和析构symbol engine
SymLoadModuleExW/SymUnloadModule64用来加载要便利源代码的模块
SymEnumSourceFilesW用来遍历一个有.pdb符号且包含已索引源码的列表
SymGetSourceFileW和SymGetSourceFileTokenW/SymGetSourceFileFromToken两套API,都可以用来获得特定源码的下载URL,然后把这个地址用上面两个方法处理一下即可。

注意:目前的实现只是个原型,需要手动下载和配置.pdb文件,并且直接发起大量的异步http请求,对网速慢的朋友,可能需要用 -i 参数增加超时时间(确实15分钟)

Silverlight 2 Beta 1, IE 8 Beta 1, ASP.NET MVC 预览版2 可以下载了

1. Microsoft Silverlight Tools Beta 1 for Visual Studio 2008
http://www.microsoft.com/downloads/details.aspx?FamilyID=e0bae58e-9c0b-4090-a1db-f134d9f095fd&DisplayLang=en

内含:
  • Silverlight 2 Beta 1
  • Silverlight 2 SDK Beta 1
  • KB949325 for Visual Studio 2008
  • Silverlight Tools Beta 1 for Visual Studio 2008
这里有一个贴子,列出了可以单独下载的组件的详细链接:
http://silverlight.net/forums/t/10586.aspx

Mr. “IronRuby” John Lam 有一个贴子,展示如何在Silverlight中使用IronRuby(还没有下载链接):
Dynamic Silverlight Part 1: Hello, World!
http://www.iunknown.com/2008/03/dynamic-silverl.html

 

2. Expresssion Blend 2.5三月份预览版:
Microsoft Expression Blend 2.5 March 2008 Preview
http://www.microsoft.com/downloads/details.aspx?FamilyID=32a3e916-e681-4955-bc9f-cfba49273c7c&DisplayLang=en

 

3. 这次MIX08大会主题演讲还宣布了IE8 Beta1的发布,可以在这里下载:
http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm

其中的2个新功能是ActivitiesWebSlices! 这里有个演示:
First Look at IE8 Activities and WebSlices
http://visitmix.com/blogs/Joshua/IE8-Activities-With-Jane-Kim/

 

4. ASP.NET 3.5 Extensions Preview 2 (包括 ASP.NET MVC Preview 2):
http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c6bc06-b894-4b11-8300-35bd2f8fc908&DisplayLang=en

 

5. ASP.NET MVC Preview 2的单独下载:
http://www.microsoft.com/downloads/details.aspx?FamilyID=38cc4cf1-773a-47e1-8125-ba3369bf54a3&displaylang=en

动网论坛掉线的问题分析和处理方法

关于掉线,我想使用动网论坛的不少朋友都会遇到过。为了能让大家正确的理解掉线,我们先来看看动网论坛身份验证的依据和原理。
当您访问论坛页面的时候,服务器会提取您的浏览器保存的cookie信息,根据cookie信息的内容来判断您是否是登录状态。
下面就几种常见的掉线现象分析其原因
1、无法写cookie信息到客户端,表现为登录提交密码和帐号后没提示有错误,但用户仍然是处于未登录的状态。
根据经验,发生这问题的原因多为:
a、用户的电脑时间不正确,比如用户的系统时间已经设置到2007年了。这就算写入了cookie也会被视为过期了。
b、客户端因为浏览器设置了禁止cookie,无法保存cookie.
以上两种情况是客户端问题,表现为个别或部分用户有问题。
以下的则是服务器或站点设置的原因:
c、服务器的时间设置不对,如服务器时间是2004年,则就算写入了cookie也被视为过期。
e、采用异域的框架的页面无法正确写入cookie.
什么是异域的框架呢?比如你访问的页面为 http://www.aspsky.net/main.asp 这是一个框架页。
其子框架访问的是bbs.dvbbs.net 这时候,尽管你看到的是bbs.dvbbs.net的内容,如果你在这个地址登录,客户端会把cookie当成是www.aspsky.net的当你提交cookie的时候,则是提取bbs.dvbbs.net.造成错误。
这个有的人用的是二级域名转址的,就是这个情况了。二级域名转址是用了框架的。
切记,不要使用异地域名框架,上面的例子里,如果框架页是bbs.dvbbs.net/main.asp则是无问题的,因为是和论坛同一个站同一个域。
2、偶然性的掉线。
分析:这个一点都不希奇的,因为我们是身处网络环境,既然我们验证身份的依据是cookie,而cookie则是依靠网络传输的,总不能每次都无错是不是?
当频繁的出现,这才需要想办法去解决。
另外一个因素,因为我们的cookie也是动态的,会变的,当服务器更新了你的cookie,而刚好你的电脑又写入失败。。。。
还有,我们除了使用cookie也同时使用了session (会话) 这个会话,是客端和服务器端临时的身份证,当服务器重启动IIS的时候,所有的会话都会注销。。。。。这时候也可以造成掉线。
如果您的服务器状态不好,频繁的重启动IIS进程,会话被频繁注销,那么你掉线的机会就大增了。
这个会话的问题,还影响到后台登录,下面第三点就是说这个
3、进入后台一会就掉出来,本来,会话是有时间控制的,当你一定时间内不访问页面,会话就会被注销,这个时间通常设置为20分钟,为什么你进了后台几分钟会几十秒就掉了出来呢?
这除了服务器设置的会话时间过短造成之外,更主要的原因就是你的服务器的IIS频繁的回收会话。频繁回收的原因多是因为服务器内存不足,如果是虚拟主机,出这样的问题一点都不奇怪了。

解决方法
对前面说的第一、二类问题,可以就具体情况处理,既然已经详细分析了原因,那就不用说也知道如何解决了。
对第三种情况,就是进入后台掉线,服务器会话频繁回收的问题。可以有如下几个解决措施:

1、合理设置会话回收时间。(具体操作暂不说,有服务器的控制权)
2、如确认为内存不足,可以采取禁止session的方法来减少内存消耗,从而达到减少掉线机会的目的,不过这个对需拟主机的可能没什么作用,如果服务器本身内存不足,其他站点使用内存过多,也会影响到你的站点的。
禁止session的方法:
Conn.asp的设置的修改。
Const EnabledSession=True 这里设置为Ture 则使用session记录用户临时信息,可以减少访问数据库的次数以提高效率,缺点是占用服务器内存稍大。

3、独立主机用户增加服务器的物理内存。并且合理的设置服务器的IIS进程。(我不是这方面的专家,我就不说怎样搞了,自己去研究啦)

用好VS2005之扩展membership服务

ASP.NET 2.0中新增的最佳功能之一是新的成员身份服务,它提供了用于创建和管理用户帐户的易于使用的API
  ASP.NET 2.0中新增的最佳功能之一是新的成员身份服务,它提供了用于创建和管理用户帐户的易于使用的API。ASP.NET 1.x大规模引入了窗体身份验证,但仍然要求您编写相当数量的代码来执行实际操作中的窗体身份验证。成员身份服务填补了ASP.NET 1.x窗体身份验证服务的不足,并且使实现窗体身份验证变得比以前简单得多。
  成员身份API通过两个新的类公开:Membership和MembershipUser。前者包含了用于创建用户、验证用户以及完成其他工作的静态方法。MembershipUser代表单个用户,它包含了用于检索和更改密码、获取上次登录日期以及完成类似工作的方法和属性。通过这两个新的类,我们可以不用写一行代码,方便得完成对用户的管理。 但是在实际开发过程中,绝对不能满足我们日常开发的需要。经过日常项目的开发和网络上资料的搜索,现将其一一列出:
  一、默认的各类的数据库是使用sql express的,而我们在实际开发中往往使用sql sever 2000或者sql server 2005,这时就需要我们修改数据库的类型。
  微软给我们提供了一个Aspnet_regsql的命令来修改默认数据库。打开 Visual Studio 2005 命令提示,输入aspnet_regsql,按照提示一步一步进行即可。
  此时打开数据库,可以发现多处来了一系列"aspnet_"开头的存储过程,这就是我们使用membership所必需的存储过程。
  此时打开IIS,[属性] →[ASP.NET] →[编辑配置]:
  [常规],连接参数LocalSqlServer按照普通的sql连接字符串格式。
  [身份验证],模式为Forms,管理提供程序的minRequiredNonalphanumericCharacters为0,这时就可以去掉默认变态的必需需要输入字母,数字等组合的密码安全了。此步也可修改密码最低长度和最大长度等等。
  经过此步骤,系统会自动在web.config中配置好了我们所需的规则。很方便,修改web.config以后都可以通过这种图形化工具来了。
  二、由于自带的login控件和membership类,只提供了简单的用户信息录入,不能满足我们项目的需要。例如:我们要用户注册的时候同时输入QQ号码,电话号码,家庭地址。那么默认的是没有办法解决的。我这里给出两种解决方案。我分别用在了不同的项目中。优缺点大家自行判断。
  1、使用profile。此类方法网上教程已经很多。不在出重复叙述,免去赚稿费的嫌疑:)。这里只是给出网上没有的部分说明。
由于membership只能列出来指定组的用户名,而不能列出其他的详细信息,我们实际使用中,往往需要对组中的其它信息进行同时修改。我采用的是自行构造datatable的方法。见代码:
public static DataTable listuser(string userRoles)//列出指定组的用户信息
{
 string[] users = Roles.GetUsersInRole(userRoles);
 //列出指定组下的用户
 DataTable dt = new DataTable();
 dt.Columns.Add("username", System.Type.GetType("System.String"));
 dt.Columns.Add("QQ", System.Type.GetType("System.String"));
 dt.Columns.Add("phone", System.Type.GetType("System.String"));
 dt.Columns.Add("address", System.Type.GetType("System.String"));
 dt.Columns.Add("email", System.Type.GetType("System.String"));
 //以上构造一个数据表
 foreach (string i in users)
 {
  DataRow dr = dt.NewRow();
  MembershipUser mu = Membership.GetUser(i);
  得到用户基本信息
  ProfileCommon p = Profile.GetProfile(i); //得到用户的profile信息
  dr[0] = mu. username;
  dr[1] = p. QQ;
  //profile是强类型,可以很方便的通过感知来添加。
  dr[2] = p. phone;
  dr[3] = p. address;
  dr[4] = mu. email;
  dt.Rows.Add(dr);
  dt.AcceptChanges();
 }
 return dt;
}
public static void deleteuser(string username)/删除指定用户
{
 Membership.DeleteUser(username);
 //系统会自动删除profile下的指定用户的信息
}
public static void updateuser(string username)/更新指定用户
{
 ProfileCommon p = Profile.GetProfile(i);
 //得到用户的profile信息
 p. phone="电话";
 p. address="地址;
 p. QQ="QQ号码";
 p.Save();
 //保存所作修改。
}
  2、自定义一个membershipinfo表格,同membership系统标关联起来。自己编写SQL语句来进行查询,修改等功能。
列出指定组的用户
select * from aspnet_membership inner join aspnet_users on
aspnet_membership.userid=aspnet_users.userid left join memberinfo on aspnet_membership.userid=memberinfo.userid
where aspnet_membership.userid=(select userid from aspnet_usersinroles inner join
aspnet_roles on aspnet_usersinroles.roleid=aspnet_roles.roleid where rolename='admin')
  
  删除、修改等功能比较简单,这里就不作叙述。可以采用membership的createuser方法建立,然后再用sql语句写入memberinfo表。
  对于建立用户,我们可以采取扩展CreateUserWizard控件,或者自行写登陆界面。
  1、采取扩展CreateUserWizard控件,我们可以使用它的模版列,此时需要注意的是:用户名,密码,提示问题,提示问题答案,Email,他们的ID一定要分别是username,Password,Question,Answer,Email否则会出错,而且此时验证控件均不能使用。怀疑是IDE的一个Bug。
  如下所示,我们定义好的样式应当是:
<WizardSteps>
<asp:CreateUserWizardStep runat="server"> 自定义代码部分<ContentTemplate>
</ContentTemplate>
</asp:CreateUserWizardStep>
</WizardSteps>
代码部分:
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
 //由于系统会自动给们建立基本的信息表,所以我们只需要对profile或者membershipinfo标进行修改即可。   
 Roles.AddUserToRole(CreateUserWizard1.UserName, "shop"); 
 //添加用户到相应的组
 ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);
 p. QQ = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("QQ")).Text.Trim();
 p.address= ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("address")).Text.Trim();   
 p.phone = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("phone")).Text.Trim(); p.Save();//保存所作修改
}
  2、采取自己写UI,个人推荐使用这种方法。灵活性比较大,而且可以使用2005强大的验证控件。
  页面部分比较简单略过不再陈述。下面详细介绍一下代码部分。
  此时我们需要使用membership的CreateUser()方法。语法我们就不再介绍。他会根据建立用户的结果返回成一个MembershipCreateStatus枚举类,它详细的包含了所有建立用户不成功的错误信息。我们只需要根据他的值,就可以返回给界面相应的提示,如:用户名已经存在,电子邮件已经存在等等。
  对于自定义用户信息部分我们仍然可以采取profile或者自定义membershipinfo表的方法。
  列出profile建立用户的方法。SQL语句比较简单,略过不写。
protected void Button1_Click(object sender, EventArgs e)
{
 MembershipCreateStatus status;
 MembershipUser newUser = Membership.CreateUser(username.Text.Trim(), Password.Text.Trim(),  Email.Text.Trim(), Question.Text.Trim(), Answer.Text.Trim(), true, out status);
 //使用membership建立用户,并把建立结果返回给MembershipCreateStatus
  if (newUser == null)//没有新用户,则意味着出错。
  {
  GetErrorMessage(status);
  //调用GetErrorMessage函数,返回详细错误信息
  } else {
   Roles.AddUserToRole(newUser.UserName, "jiancai");
   //添加用户到相应组 ProfileCommon
   p = (ProfileCommon)ProfileCommon.Create(newUser.UserName, true);
   p.QQ = QQ.Text.Trim();
   p.address= address.Text.Trim();
   p.phone= phone.Text.Trim();
   p.Save();
  }
 }
public void GetErrorMessage(MembershipCreateStatus status)
{
 switch (status)
  {
   case MembershipCreateStatus.DuplicateUserName: DisplayAlert("当前用户已经存在,请重新选择");
    break;
    //其余各种错误信息,请查看MSDN的MembershipCreateStatus枚举类。
   default: DisplayAlert("注册00000000用户失败,请检查您的用户名,密码等信息");
    break;
  }
}
  个人见解:采取profile的方法,比较方便,由于profile 是强类型,可以通过智能感知功能减少代码的输入量。采取自定义数据表的方法,需要输入大量的sql语句,但是查询速度比较快,性能比较强,由于Roles.GetUsersInRole()方法无法分页读取数据,只能一次性读出来所有数据,而自写SQL 语句可以很方便的根分页结合起来。随着用户量的增多,故不推荐profile方法。
  三、密码问题。
  个人觉得密码是一个比较头疼的问题。我们在实际开发中总是需要admin组有对用户进行密码修改的权限。Membership提供的修改密码方法只能在已经知道密码提示答案的时候才能修改。而admin组根本不可能知道用户的密码提示答案的。这里有点好笑。难道是中西方文化差异?
  列出个人对membership密码研究的一些心得。
  大家都知道machine.config和web.config,如果两者发生冲突,那么以web.config优先。
  默认状态下,membership是采用SHA1的方法进行加密,然后采取一种机制,与passwordsalt进行再次加密,最后形成数据库中显示的密码。可见随着MD5加密的破解,微软对密码的安全也煞费苦心。
  有的朋友不喜欢默认的SHA1加密形式,我们只需要在web.config中设置以下代码来覆盖machine.config中对密码的设置就好了:
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
decryption="Auto"
validation="MD5/SHA1/Clear" />
  其中:
  Clear - 密码以明文形式存储。用户密码可与此值直接比较,而不需要进行进一步的转换。
  MD5 -使用消息摘要 5 (MD5) 哈希摘要存储密码。为了验证凭据,将使用 MD5 算法对用户密码进行哈希运算并将计算出来的值与存储的值进行比较。使用此值时,从不存储或比较明文密码。此算法的性能比 SHA1 好。
  SHA1 -使用 SHA1 哈希摘要存储密码。为了验证凭据,将使用 SHA1 算法对用户密码进行哈希运算并将计算出来的值与存储的值进行比较。从不存储明文密码。使用该算法可以获得比 MD5 算法高的安全性。
  然而虽然MembershipUser提供了GetPassword 方法,但是这是后只有在加密形式设置成Clear,即密码在数据库中以明码的形式存在,才能得到密码。而ChangePassword必须要提供旧密码或者密码提示答案才可以修改。对用户管理造成了很大的不便。找了许多资料无解。顺便提带一下:微软的membership机制起源于csblog,并进行了一定的修改。
  Csblog对密码的策略:首先对用户输入的密码进行加密(SHA1或者MD5),然后根据系统自动生成的密匙再次对加密后的密码进行DES加密。不过我按照csblog 的方法进行加密的时候,形式相同,密码却不同,目前正在演就中。也欢迎大家共同讨论。
  如果passwordsalt和password固定,那么用户密码肯定一定。所以目前我采取的一个方法就是给用户重新设置成固定密码的功能。
  首先取得已知用户密码的passwordsalt和password,然后替换相应用户的passwordsalt和password字段。这时,用户的密码就已经恢复成已知的密码了。
  不可否认,membership给我们开发中创造了很大的便利,其方便的Roles功能,对于我们进行权限管理的时候提供了很好的解决方案。2005许多功能均进化自csblog这优秀的开源项目,有兴趣者可以研究csblog,以进一步的了解membership的运作机制。限于篇幅,MSDN上边有做介绍的我就不再重复叙述。只介绍MSDN上没有列出的技巧跟我在项目开发中的一些心得。 ASP.NET 2.0为使用窗体身份验证的Web站点提供了重要的安全性优势。通过提供用户配置文件储备库以及对角色的支持,窗体身份验证将走出ASP.NET内行的视野,而得以更广泛地实现。

互联网公司老板的十大谎言

1、我们承诺未来给你很丰厚的期权奖励,到时你将成为百万富翁、千万富翁

记住老板给出的诱人的承诺大多是空头支票,而且多半是让你留下来死心塌地加班加点干活的借口,就算是真心实意的话,也多半是盲目乐观最后连自己怎么倒台都不知的傻老板

2、很多投资商在和我们接触

最大的谎言就是根本没有投资商和他在接触,说这些话只是让你相信他们是受到投资者亲睐,企业未来是非常光明的;又或者只是在某个会议上和投资商交谈了几句而已,就算是投资商说有兴趣,但从兴趣到最终实施投资并不是顺理成章的事情,而且对投资者来讲,说不错、感兴趣的话语往往都是些场面话、���套话而已

3、这个产品只有我们在做,我们是业界的先驱者

在中国能准确预料先机并开创新模式的企业非常少见,很多情况是这个市场根本不成熟还未到时机;也许根本没有市场;也许这位老板只是井底之蛙,根本看不到其他竞争对手;也许只是个引君入瓮的谎言。就算是首先copy国外的模式,但是只要你一出现,随后肯定会诞生大批复制者,你能担保你的实力比他们都强?

4、市场很大,我们只要占据1%就能成功

既然这样,那肯定还有占据更多市场份额的公司会比这家更成功;又或者市场实在太大,以公司的实力和发展速度要占据1%的市场份额并没有想象中容易,过分乐观的估计只能让自己放松警惕放松努力,而不能预见100倍的困难,所以这仅仅是个美好的憧憬而已。

5、我们有很多的盈利模式,盈利前景非常乐观

真正成功的公司最开始的盈利模式都是很单一的,盈利模式越多,表示老板对公司的盈利模式的认识越模糊,甚至不够自信,又或者是根本不懂这一行,这样的情况非常多

6、我们正在打造一个大而全的平台和系统

创业型公司很少一开始就去搭建大而全的平台,就算Google、腾讯、阿里巴巴这样成功的企业最开始也都是从一个点开始成长的,可以说只有将公司所有资源集中到一个地方使用,在一个地方开花才更容易培育成功,这样有了成功的信心和收获之后,做平台和系统才能逐渐水到渠成,前期盲目贪大求全往往会走很大的弯路。

7、没有其他公司能追得上我们

老板历数总总的优势,但是在互联网行业,没有绝对的领先,后来居上的现象是屡屡皆是,随便一个门户网站或者一个融到资的竞争对手都可以轻而易举的将你打败,夜郎自大终究都是没有好下场的

8、我们有几十万、几百万会员

当老板报给客户、合作者、投资商的时候,这个数多半是假的虚报的;就算有这么多会员,但会员数量并不代表一切,很多机器人软件都可以自动注册网站会员,或者大部分都是一次性会员不活跃会员,真正有价值的数据是收费会员或者说高质量会员的数量,所以只是简单的说整体会员量这个数据可以说毫无意义

9、我们的Alexa排名很高

任何数据都有造假的可能,彰显网站实力的Alexa排名更是当仁不让成为造假数据的主力,Alexa排名完全可以通过各种技术手段来实现作弊,专业的排名公司更是可以把alexa排名曲线伪装得更加逼真,不仅符合节假日的规律,偶尔还会小幅下降等等。

10、我们的困难只是暂时的,很快我们就会度过难关

当老板这样说的时候,公司的运营状况多半是非常的严重了,这句话的潜台词对员工而言,就是让员工安心,你们需要继续努力加班干活,但实际上公司已经面临倒闭,上个月的工资可能都发不出来;如果对投资者而言,就是让投资者放心继续投钱,但实际上公司经营状况混乱,核心骨干都已经离开,公司亏损状况十分严重。

所以不管是你准备投资、合伙,还是加盟,又或是求职的时候,都要注意对方是否有以上的言辞,当出现以上任何一条时你就要对这家公司打上很大的问号,虽然不是放之四海而皆准,但毫无疑问这是互联网企业老板最爱使用的十大谎言。

浪费的打印纸

李娜在一家民营企业做文秘工作,该企业创业伊始,人力资源部特别强调增收节支,把节约纳入绩效考核的内容。对打印部提出的要求是:节约用纸,一张纸要正反两面用,非正式文件,一般不得用空白纸。

打印部照章办事。有一次,废纸用完了,李娜只好用空白纸打印,人力资源部经理一看用的不是废纸,脸色陡变,说:“为什么不用废纸打呀,打印室不是有明文规定,非正式文件要用废纸吗?

李娜解释说:“废纸用完了。”

人力资源部经理似信非信:“每天打印那么多文件,我就不相信打印室没有一张废纸!”

又有几次没有废纸的时候,李娜不得不用空白纸打印必须要打印的东西。人力资源部经理不相信,亲自到打印室检查,翻箱倒柜,还真找出几张废纸。李娜很是尴尬,几乎掉下了泪。

在月末例行的会议上,人力资源部经理对打印室提出了尖锐批评,还扣了李娜当月的奖金。

从此以后,每到实在没有废纸可用的时候,李娜就非常着急。后来,有人指点:没废纸的时候,就把空白纸先打印一份其他文件,然后翻过来再打印。这样就永远有了用不完的废纸。从此,李娜再也没有挨过人力资源部经理的批评。

又到了月末例会,人力资源部经理对打印部的工作非常满意,提出表扬,还发了100元的节约奖。

管理启示:本意是强调增收节支,奖励勤俭节约,但因为制度的不合理性,相反却惩罚了遵守制度的,奖励了浪费行为。这样的制度,不仅不会给企业带来好处,还会给企业带来无穷无尽的隐患。

制度是重要的,但任何一种制度都是人定的,在操作上都应有一定的弹性。物极必反,当它的执行者刻板到“无以复加”的时候,人力资源管理就成了表面文章。

在联想实验室看到的几个比较感兴趣的项目

1、Lenovodata (http://www.lenovodata.com/index.php)

社会性的文件分享社区,免费提供了5GB的网络存储空间,还有配套的桌面客户端进行文件的自动同步、备份以及断点续传等;LenovoData除了提供网络硬盘服务外,你可以在其中轻松创建专属于自己和好友们的圈子或者二人世界,享受私密的分享文件以及网络社交给我们带来的不一样的感觉。

2、Best4C-最好的web画图工具 (http://www.best4c.com/)

什么语言最挣钱?PPT!一个精美的PPT的核心是图形,怎么才能做出一个好看而又表达准确的图片?需要有好的画图工具,需要大量的图片资源,所有这些,尽在Best4C-联想在线画图服务为您提供国际一流的画图工具,通过图片共享功能,您可迅速得到大量精美模版!

3、MindMap-思维脑图项目 (http://lenovolabs.com/labs_mindmap_web/jsp/mindMapHtml/index.html)

MindMap-思维脑图项目(利用盛行于欧美,风靡于全球的思维导图理论)将会成为未来人类离之不得的全脑思维伴侣,它利用计算机软件技术和全脑思维艺术将人们的大脑和思维带入一个积极、高效的全新领域,MindMap将会在人们日常办公和生活中帮助用户增强记忆、规划写作、促进团队合作和内部沟通,在客户演示、会议记录、个人计划、项目管理、青少年教育等方面更是发挥着不可估量的作用。

微软发布Windows Vista不兼容程序列表

微软如约发布了最新的一份兼容性列表,但这次却有点不太一样---提供的是Windows Vista不兼容的程序列表.

别以为不兼容Vista的都是老程序,包括BitDefender 10,江民KV2008,趋势Internet Security 2008在内的最新安全软件成了重灾区,一起来关注一下!

点击查看详细:已知在基于 WindowsVista Service Pack 1 - 计算机上运行时会丧失的功能的程序信息