社交网络(The Social Network)-励志电影

这部电影对科技创业者来说很有启发,从产生最早的商业理念、确定要包括哪些功能、申请融资、雇佣员工等等,这个故事分解了一家高科技创业公司整个生命周期里会经历的许多自然增长阶段。


电影剧情

  2003年秋,哈佛大学。恃才放旷的天才学生马克·扎克伯格(Jesse E isenberg 饰)被女友甩掉,愤怒之际,   马克利用黑客手段入侵了学校的系统,盗取了校内所有漂亮女生的资料,并制作名为“Facemash”的网站供同学们对辣妹评分。他的举动引   起了轰动,一度   致令哈佛服 务器几近崩溃,马克因此遭到校方的惩罚。正所谓因祸得福,马克的举动引起了温克莱沃斯兄弟的注意,他们邀请马克加入团队,共同建立一个社交网站。与此同时,马克也建立了日后名声大噪的著名社交网站“Facebook”。   经过一番努力,Facebook的名气越来越大,马克的财富与日俱增。然而各种麻烦与是非接踵而来,昔日的好友也反目成仇……

专业影评

  影片《社交网络》改编自本·麦兹里奇(Ben Mezrich)的小说《意外的亿万富翁:Facebook的创立,一个关于性、金钱、天才和背叛的故事》,讲述的是全球第一大SNS社交网站Facebook创始人和CEO马克·扎克伯格(Mark Zuckerberg)的创业史,以及后来创业伙伴为了利益而分道扬镳的故事。就电影本身而言,技艺可谓炉火纯青,以交织而紧凑有序的情节构架、倒叙的叙述方式、高超又超速的对白、跳跃的场景和幽暗的影调,让众多观者大呼过瘾,也为影片这股子高智商的特质所折服。可以说,《社交网络》非但不是Facebook的浮光掠影,还在很大程度上,诠释出Facebook理念,并探讨了关于社交数字化的点点滴滴。   

        剧中的天才男主角马克,无疑是个彻头彻尾的极客,不善社交的他几乎像是台机器,加上傲慢、冷漠、急躁等各种性格弱点,他身边的朋友自然少得可怜。哈佛的校园社交网站让他得到了灵感,决定要把人们的整个社交体验搬上网络,搬到他最熟悉的世界。于是,他找到了自己的同学爱德华多·萨维林,请他担任联合创始人和CFO。在小有成就后,马克又得到了肖恩·帕克的帮助。迅速扩张规模的Facebook,终于铸就了宅男宅女社交的模式。然而,温克莱沃斯兄弟告马克窃取创意,爱德华多也把马克告上了法庭。当镜头一次次精准地从马克的两场官司上各方陈词时切入创立Facebook时候的往事,我们看到了两条主线共同叙述的完整故事,流畅而富有节奏感。   

        针对网络时代的年轻人,影片更提出了Facebook的宏大构想,这可能还是对社交网络服务早已习以为常的我们所不曾深究的:它绝不是一个简单的社交网站,而是一个容纳数亿人的数字化帝国,并且仍在不断扩大。它提供了用户聊天、交友、互动和活动的强大系统化平台,又极其微妙地展示和影响着真实生活。电影在这一点上,直面展现编程思维的困难,从不空谈理论,好似将诸多插件环环相扣起来,成就了相当了不起的全局。   影片《社交网络》编剧阿伦·索金(Aaron Sorkin)表示,该片呈现了各家之言,但孰是孰非,并未加以评论。不过,观众对其中人物塑造和剧情不必太当真,影片公司也直言“这是好莱坞处理”。当然,种种争议会让该片和扎克伯格本人都更受关注。而值得肯定的是,不论这部既作传记片又作剧情片的电影究竟有多真实,从各方面来看,都不愧为大卫·芬奇式的精品。

 

社交网络(The Social Network)在线观看地址:http://my.tv.sohu.com/u/vw/15815522

 

代码分析工具FindBugs详细配置使用教程

一,关于FindBugs

 (1) FindBugs 是由马里兰大学提供的一款开源 Java 静态代码分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题(先对编译后的class进行扫描,然后进行对比),寻找出真正的缺陷和潜在的性能问题。在开发阶段和维护阶段都可使用。

  现今检测的类型如下:

  正确性:如强制类型转换
  标准:如某个类实现了equals方法但未实现hashCode方法
  多线程:主要在同步和多线程问题
  性能:潜在的性能委托
  安全:相关
  高危:导致Bug的可能性最高
  更多的Bug描述:http://findbugs.sourceforge.net/bugDescriptions.html

二,下载FindBugs

 (1) 可以在官方网站 http://findbugs.sourceforge.net/downloads.html 下载相应的版本(命令行版本,swing版本,ant版本,eclipse插件版本-离线包和在线更新两种方式)。

三,使用FindBugs

  (1) 开发可以使用eclipse插件方式安装好FindBugs,然后在eclipse中的Package Explorer 或者Navigater 里面,右键点击项目,在弹出的右键菜单中即可选中FindBugs运行。

  (2) 运行完成后代码中会有相应Bug级别的虫子样式标识(红色图标表示 bug 较为严重,黄色的图标表示 bug 为警告程度),鼠标移动到相应的虫子上,可查看详细描述和建议方案。

  (3) 高级运用:在eclipse中的属性配置可以针对不同的项目配置不同的FindBugs属性。

  (4) 在ant中也可以配置FindBugs;其他使用如:命令行检查,swing检查等

  (4) 在项目中设置自动运行:选中项目-右键-FindBugs-Run automatically

四,检查Bugs

1.找出 hash equals 不匹配

  List、Map、Set 等都调用equals() 和 hashCode(),重写对象的 equals() 方法,但是没有重写它的 hashCode 方法,或者相反的情况时。

2.忽略方法返回值
/**
* 对点评内容中的一些对页面有影响的字进行替换
* @param content
* @return*/
private final String convert(final String content) {
    if (null != content) {
       
content.replaceAll("\"", "\\\\\"").replaceAll("<", "<").replaceAll(">", ">");
       
return content;
    }
   
 return null;
}

   注:replaceAll基于正则表达式来转换的
3.Null指针
private void nullPoint(){
     OverrideEquals oe=oMap.get(“str”);
     if(oe!=null){
       oe .process();  
      }
      System.out.println(oe.getName());

}

 
4.初始化之前读取数据
private List<String> strList;
private void readList(String strings){
   StringTokenizer st=new StringTokenizer(strings);
   while(st.hasMoreTokens()){
      strList.add(st.nextToken());
   }

}

5.使用泛型时如非必要 可以加入:@SuppressWarnings("rawtypes")

 

ILMerge 合并dll和exe文件

ILMerge runs in the v2.0 .NET Runtime, but it is also able to merge v1 or v1.1 assemblies. However it can merge PDB files only for v2 assemblies.

Currently, ILMerge works only on Windows-based platforms. It does not yet support Rotor or Mono.

Download: http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-4252-8F6D-A3129A069F79/ILMerge.msi

 

當 .NET 專案開發越來越多的情況下,通常會有一大堆組件的情況,微軟提供一套 ILMerge 免費工具可以協助你將多個組件合併成單一個 .NET 組件,有效減少部署檔案的數量以及增加部署的彈性。

由於 ILMerge 是指令列工具,在安裝完成之後,所有檔案都放在 C:\Program Files\Microsoft\ILMerge 目錄下,目錄下的 ILMerge.doc 檔案有完整的說明,以下是我閱讀完後的一些摘要筆記:

  • 並非所有組件都能 Merge,例如有些組件包含 unmanaged code 就不一定能 Merge 成功,建議在 Merge 完後利用 PEVerify 工具 (the .NET Framework SDK tool) 驗證輸出的組件是否有效。
  • 執行 ILMerge 時的組件清單(input assemblies)的第一個組件主要組件(primary assembly),如果第一個組件為執行檔(*.exe),則 ILMerge 過的組件就會以此組件中定義的執行入口點(Main method)為主。
  • 如果主要組件(primary assembly)有強式名稱簽章過,而且參數也有指定 snk 檔時,ILMerge 過後會自動重簽(re-signed)。

因为使用了3层架构,运行目录下有很多dll文件,最终发布时,我打算将dll文件都合并到exe文件中去。微软发布的免费软件ILmerge可以完成这项工作。

以下是一些使用範例:

1. 將多個組件合併成一個,其中第一個組件為「主要組件」,通常是執行的主要程式

ILMerge.exe /out:Merged.Output.exe Assembly1.exe Assembly2.dll Assembly3.dll

2. 將多個類別庫組件合併成一個,而且除了主要組件外,任何其他組件都不會公開給其他組件使用

ILMerge.exe /internalize /out:Merged.Output.dll Assembly1.dll Assembly2.dll

3. 在合併完組件後重新利用強式名稱簽名過

ILMerge.exe /keyfile:my.snk /out:Merged.Output.dll Assembly1.dll Assembly2.dll

4. 在組合的時候留下 ILMerge 的紀錄 ( 當 /log 參數不加上 :Output.log 則會將 Log 輸出到 Console )

ILMerge.exe /log:Output.log /out:Merged.Output.dll Assembly1.dll Assembly2.dll

注意:合并为exe时,myapp.exe必须写在file1.dll、file2.dll前面

完 成之后,就得到了一个exe文件,如果想做一些邪恶的事情,可以将一些破解软件的dll合并到你的exe中去。前提是,所有的dll都是托管的,如果尝试 合并C++写的dll,则会失败。有一个工具,叫做mergebin.exe,可以合并托管和非托管dll,用法我还没研究出来,似乎比较困难的样子。这 个工具是ADO.NET 2.0 Data Provider for SQLite的作者写的,他发布的System.Data.SQLite.dll可以被dotNet程序引用,还可以直接被C/C++程序调用,这个 dll就是托管和非托管混合的dll,果然是很牛的!mergebin.exe在其源码包里,有兴趣的朋友可以研究一下。

 

如果不習慣用指令用工具的人也可以考慮使用 ILMerge-GUI 幫你組合組件,操作畫面友善許多,如下圖:

ILMerge-GUI 1.0.0

使用上應該沒多大問題,就不再贅述了。