Friday, March 27, 2009

.net interview “what is ASSEMBLIES”

INTRODUCING ASSEMBLIES
A .NET application is packaged into an assembly, which is a set of one or more files
containing types, metadata, and executable code. The .NET documentation describes
the assembly as the smallest versionable, installable unit in .NET. It is the functional
unit for code sharing and reuse. It is also at the center of .NET’s code security and
permissions model. All executable code must be part of an assembly.
When we compile a simple program, the compiler creates an assembly consisting
of a single executable file. However, assemblies can contain multiple files including
code module files and files containing resources such as GIF images. Therefore, an
assembly can be viewed as a “logical” DLL.
The assembly contains a manifest that stores metadata describing the types contained
in the assembly, and how they relate to one another. The runtime reads this
manifest to retrieve the identity of the assembly, its component files and exported
types, and information relating to other assemblies on which the assembly depends.
When an assembly consists of multiple files, one file will contain the manifest.

image

一路走来图示

zhen yang Timeline

右边链接里有个Coder’s CV,上图就是工具生成的,看起来还蛮专业的,挺有意思,呵呵。

Thursday, March 26, 2009

学习杂记 C# design pattern

Interface & Abstract class

  • Abstract class can have method that has been implemented. Can’t create an instance of abstract class. One class can only inherited from one abstract class.
  • Interface methods all must be abstract. Can’t have the implementation in the interface. A class can Inherit from multiple interface, but need to implement all its methods

UML

  • For Class Diagram, the symbols in front of the names indicate that member’s visibility, where “+” means public, “- ” means private, and “#” means protected. Static methods are shown underlined. Abstract methods may be shown in italics or, with an “{abstract}” label. Note that UML does not require that you show all of the attributes of a class, and it is usual only to show the ones of interest to the discussion at hand. clip_image002clip_image004
  • You represent inheritance using a solid line and a hollow triangular arrow. For the simple Employee class that is a subclass of Person, clip_image006
  • An interface looks much like inheritance, except that the arrow has a dotted line tail. clip_image008

Design Pattern

clip_image010

clip_image012

The Adapter pattern is used to change the interface of one class to that of

another one.

The Bridge pattern is designed to separate a class’s interface from its

implementation so you can vary or replace the implementation without

changing the client code.

The Composite pattern is a collection of objects, any one of which may be

either itself a Composite or just a leaf object.

The Decorator pattern, a class that surrounds a given class, adds new

capabilities to it and passes all the unchanged methods to the underlying

class.

The Façade pattern groups a complex set of objects and provides a new,

simpler interface to access those data.

The Flyweight pattern provides a way to limit the proliferation of small,

similar instances by moving some of the class data outside the class and

passing it in during various execution methods.

The Proxy pattern provides a simple placeholder object for a more

complex object that is in some way time consuming or expensive to

instantiate

The Single-Responsibility Principle

A class should have only one reason to change.

The Open/Closed Principle (OCP)

Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.

创业点滴:山寨项目外包网站 Elance

前段时间做的东西,发出来看看,被德明泰内部否定了,哈哈。

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

项目的市场

定位面向两头,企业及用户。

  • 网站对企业提供一个项目发布平台,使企业受益于快速完善的解决问题,及时找到优质的特种人才,并且在竞争环境下确保相对透明低廉的服务。
  • 网站对用户提供一个赚钱的途径。 用户可以是职业的自由工作者,有特殊技能的人,学生,以及中小企业。用户自由竞价,接活,网站存储这一部分信息作为用户的身份证。

可以吞噬的市场有BBS,现有外包网站,中介网站,招聘网站。 收费的模式是

基本会员费+项目成交金额提成。

时间

网站开发时间不易超过6个月。开发人数3个全职技术。0.5个全职美工。

成本

开发成本技术 4000**3.5*6

运营成本: 1U服务器 1w. 主机托管 1年6k.

维护成本: 1个工程师, 5w每年。

总共15w.

收益预期

1年内成交100w的项目为目标。成交项目数估计在1k个左右。

需要有效用户在5k人左右,有效企业在2k左右。

收取用户会员费 10元每年,共5w. (Elance $10 每月)

收取企业用户20元每年, 共4w.

成交金额的4%,共4w.

基本能够勉强收支平衡。如达到假设目标,个人认为风投指日可待。

需要调查

  1. bbs上每天大概有多少精华帖
  2. 规模多大的项目会是这个模式的极限
  3. IT以及非IT理想情况是各占半壁江山,包括翻译,写作,体力活等等都可以是网站的货源。

Wednesday, March 25, 2009

java how to convert int to Byte array, and how to assign int value to Byte

Byte only have a constructor which takes Byte itself, so anything like

Byte b = new Byte(1);

or

Byte b = 1;

will all fail;

 

The easiest way to assign int to Byte is using the empty constructor, then = operator.

Byte b;

b = 1;

To convert int to Byte array, try the following:

t[0] =(Byte)( foo >> 24 );
t[1] =(Byte)( (foo << 8) >> 24 );
t[2] =(Byte)( (foo << 16) >> 24 );
t[3] =(Byte)( (foo << 24) >> 24 );

how to: Windows Form GUI application take command arguments

It is not unusual to start an GUI application with some parameters passed in through command line. We are familiar with how it the work when create a console project, but the default GUI project won’t take any parameters.

To achieve this task, you can simply edit the Program.cs:

static void Main() ==> static void Main(string[] args)

Now you can use args. This easy? Yep.

Tuesday, March 24, 2009

Deterministic Finalization in C#

这个翻译过来应该是确定性终止化。问题的关键是.net里面,这个基本是不确定的。写程序的时候时常会碰到这个问题,建议如下:

  1. 使用using
  2. 如1无效(比如没有实现IDisposable接口),则自己写一段finally{if(xxx!=null) dispose_xxx();}

看书上说这个不确定性也不一定不好,有可能更高效,但本人觉得还是需要对程序有所控制的。

Friday, March 20, 2009

[创业杂记] 项目管理

今天看到几篇文章不错,分享一下。

第一篇文章在 http://www.kuqin.com/software-engineer/20090318/40907.html

有几点比较值得注意:

1) 软件质量分内外,所以我为什么强调要注意细节,做好界面

2) 对待task需要按功能优先级,8020法则,完整性,可持续性几个方面考虑。

3) 重构的重要性。

第二篇 http://www.kuqin.com/projectmanage/20090318/40902.html

这篇纯理论,看看说不定能有点启发和感触。

Wednesday, March 18, 2009

澳大利亚移民信息分享

  • 阿德雷德有400来个工作人员, 布里斯班只有80来个
  • 两边基本互不通气,接线的officer在我的多次提示下,悟到了布里斯班的家伙们才处理到10月2号,没可能10天内分下CO。
  • 最近电话系统改了,好打了很多,说不定和我的投诉有关,哇哈哈哈
  • 每周一次性分配一个列表里的东西,如果超过了移民局给的例子而没有分配到,会被手工加到列表里,通过post-lodge那里发信就可以,看信的家伙就能加。
  • 如果以前没有优先级,后来有了优先级,处理的日期还是按提交的日期,而不是变更的日期。(3个officer都是这么说的,但是没有正式的哪里写着)

Tuesday, March 17, 2009

c# how to read write excel spreedsheet

用.net读写excel文件有很多种方法,这里介绍一种比较简单的:

使用Microsoft.Office.Interop.Excel

下面是一个我项目中的一个读取函数的删减版本,要用上using Excel = Microsoft.Office.Interop.Excel;

除了读取一个Range里的东西,下面的函数演示了怎么枚举所有的行列,这样就可以不用事先知道Range了。

private void LoadExcelFile(string annotationFile)
{
Excel.Workbooks objBooks;
Excel.Sheets objSheets;
Excel._Worksheet objSheet;
Excel.Range range;

try
{
// Instantiate Excel and start a new workbook.
objApp = new Excel.Application();
objBooks = objApp.Workbooks;
objBook = objBooks.Open(annotationFile, Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
objSheets = objBook.Worksheets;
objSheet = (Excel._Worksheet)objSheets.get_Item(1);


//Get a range of data.
range = objSheet.get_Range("A1", Missing.Value);
range = range.get_Resize(1, 1);
double videoTimeOffset = (double)range.get_Value(Missing.Value);

//Another way of getting data
string output = "";
int rowIndex = 3;
//object colIndex2 = 11;
while (((Excel.Range)objSheet.Cells[rowIndex, 1]).Value2 != null)
{
string tmp = "";
int lapID;
SwimLap.StrokeTypeEnum strokeType;
string lapType; //Warm Up/Down Main

tmp = (((Excel.Range)objSheet.Cells[rowIndex, 1]).Value2 == null) ? "-" : ((Excel.Range)objSheet.Cells[rowIndex, 1]).Value2.ToString();
if (tmp.Equals(" ") || tmp.Equals("-"))
lapID = 0;
else
lapID = Convert.ToInt32(tmp);

tmp = (((Excel.Range)objSheet.Cells[rowIndex, 2]).Value2 == null) ? "-" : ((Excel.Range)objSheet.Cells[rowIndex, 2]).Value2.ToString();
strokeType = SwimLap.GetStrokeTypeEnum(tmp);

lapType = (((Excel.Range)objSheet.Cells[rowIndex, 3]).Value2 == null) ? "-" : ((Excel.Range)objSheet.Cells[rowIndex, 3]).Value2.ToString();


SwimLap sl = new SwimLap(videoTimeOffset,lapID,strokeType,lapType,lapTime,lapVideoStartTime,lapVideoEndTime,strokeCount,confidence,isTurn,isVideoFullLap,startType,strokeRate);

ss.AddLap(sl);

rowIndex++;

}

objBooks.Close();
objApp.Quit();

}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}

Monday, March 16, 2009

从口说无凭想开的

今天有看到一个新闻,说澳洲移民2009财政年将减少配额,删除部分紧缺职业,突然想起前段时间在google reader上看推荐的一个财经博客,博主信口开河预测经济危机,澳洲会放宽移民,让国人去拯救经济,非常的可笑。这里我不点名了。

博客就是这样,自己写自己的,爱看的看,吹捧也好,鄙视也好,基本都是小众们自娱自乐罢了。可出名了之后就不一样了,人怕出名猪怕壮,出名之后“说”错了话,后果就严重了。一个很奇怪的特例,就是别留下证据。口说无凭啥事没有,写出来了就被人抓小辫子咯。

例子太多太多了:

最近新闻了那个撒谎的喇嘛,被逮住了吧;

那些没事语言的家伙,大家都当你放屁了吧;

弄虚作假的鬼子们,事实面前过不去了吧;

从这里想开,大家平时还真要注意了:

职场里,没事别发email了,交流用口;

生活中,没事别发sms了,交流用口;

项目里,跟客户打交道尽量有事用笔头,白字黑字,签个字,赖不掉了。

澳洲移民2009财政年将减少配额,删除部分紧缺职业

如题,经济危机影响到了你我他,这不,移民政策又要变了。

 

  * Building, manufacturing jobs protected
    * Gates to shut on 18,500 foreign workers
    * Unions expected to welcome move
LOCAL building and manufacturing jobs will be firewalled, with the Rudd Government set to close the gate on about 18,500 foreign workers this year.
Immigration Minister Chris Evans will reveal the Government is to cut its permanent skilled migration program this financial year by 14 per cent to protect Australian jobs.
"Clearly the economic circumstances in Australia have changed as a result of the global financial crisis so it is prudent to reduce this year's migration intake accordingly," Senator Evans said.
The changes mean building and manufacturing trades will be removed from Australia's critical skills list, protecting local bricklayers, plumbers, welders, carpenters and metal fitters.
But employers will still be able to access skilled workers such as doctors and nurses in industries and sectors where acute skills shortages exist.
The critical skills list will now comprise mainly health and medical, engineering and IT workers.

Cabinet agreed last week to slash the permanent skilled migration program intake because of the worsening global economic situation.
The Government will reduce the planned record intake of 133,500 workers in 2008-09 to 115,000.
The move is expected to be welcomed by unions, which have been agitating for months for a reduction in imported labour because of the international downturn.
Queensland's mining sector has been gutted by the world recession, and across the state, job vacancies for skilled workers have plunged.
The latest Treasury figures forecast Australia's unemployment rate will peak at 7 per cent mid next year. In February, the jobless rate spiked to the highest monthly level since the 1991 recession at 5.2 per cent.
The reduction in this financial year's intake follows measures announced in December that resulted in only those migrants sponsored by an employer or in an occupation on the critical skills list being granted visas under the permanent skilled migration program.
Almost half of the permanent visas granted are to applicants already living and working in Australia.
Senator Evans said the Government intended to constantly review the critical skills list and remove occupations if demand for the skills could be met by Australian workers.
The 2009-10 migration program will be set in the May Budget and reflect the economic climate.

Saturday, March 14, 2009

创业期的股权分配

创业初,最难的就是股权分配。当时几个人在一起开会讨论,总是很难让大家都满意,其中无非就是和尚打水、按劳分配几点,很难量化。后来采取了先大锅饭,后稀释、转让的办法,其中的灵感便是来自浪潮之巅。

浪潮之巅的一系列文章我都非常喜欢。耳濡目染了不少风投案例,我一概归纳为“讲故事”。从讲给自己听,到催眠自己相信自己的故事,然后再讲给风投听。这个想法我在德明泰提出过多次,也被否决过多次。大家都想一门心思脚踏实地做实业,我也只能搁置一下自己的梦想了。

Friday, March 13, 2009

写了个小程序,parse网页的traceroute信息

动态域名服务商基本都被屏蔽了,DNS解析不了,只能通过IP访问。写了个程序解决这个问题。

 

以google为例子,程序会抓取信息,然后放到你的hosts文件里面,这样www.google.com就可以直接用了。 目标地址是 http://www.telstra.net.au/cgi-bin/trace?www.google.com 如果你的机器能够访问的话,应该程序就能使。代码如下,想修改的自己可以拿c#改。


static void Main(string[] args)
        {
            try
            {
                StringBuilder sb = new StringBuilder();
                byte[] buf = new byte[8192];
                // prepare the web page we will be asking for
                HttpWebRequest request = (HttpWebRequest)
                    WebRequest.Create(@"http://www.telstra.net.au/cgi-bin/trace?www.google.com");
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream resStream = response.GetResponseStream();
                string tempString = null;
                int count = 0;
                do
                {
                    count = resStream.Read(buf, 0, buf.Length);
                    if (count != 0)
                    {
                        // translate from bytes to ASCII text
                        tempString = Encoding.ASCII.GetString(buf, 0, count);
                        sb.Append(tempString);
                    }
                } while (count > 0);
                string resovle_to_ip = "\twww.google.com";
                string regexPattern = @"traceroute to www.l.google.com \((?<ip>[^a-zA-Z]+)\),";
                Regex re = new Regex(regexPattern, RegexOptions.ExplicitCapture);
                Match m = re.Match(sb.ToString());
                resovle_to_ip = m.Groups["ip"].Value + resovle_to_ip;
                try
                {
                    using (StreamReader rfile = new StreamReader(@"C:\WINDOWS\system32\drivers\etc\hosts"))
                    {
                        using (StreamWriter wfile = new StreamWriter(@"C:\WINDOWS\system32\drivers\etc\hosts_temp"))
                        {
                            string line;
                            while ((line = rfile.ReadLine()) != null)
                            {
                                if (!line.Contains("www.google.com"))
                                    wfile.WriteLine(line);
                            }
                            wfile.WriteLine(resovle_to_ip);
                            wfile.Close();
                        }
                        rfile.Close();
                    }
                    File.Copy(@"C:\WINDOWS\system32\drivers\etc\hosts_temp", @"C:\WINDOWS\system32\drivers\etc\hosts", true);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                Console.WriteLine("({0}) successfully written to hosts file.", resovle_to_ip);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }

办理技术移民澳大利亚的坎坷

我是ANU的硕士Research毕业,没赶上07年的老政策。新政策下,唯一的出路就是ielts 7分,或者工作经验1年。运气一直不好,英文挺好,就是过不了。具体大家看成绩。
# 07AU  L 6.0 , R 7.0 , W 7.0 , S 6.0 , O 6.5 (I didn't appeal this
one since I failed in Listening, but I believe my Speaking deserve
more)
# 07AU  L 7.5 , R 8.5 , W 6.5 , S 8.0 , O 7.5 (writing changed from
6.0 to 6.5 due to a successful appeal)
# 07AU  L 8.0 , R 6.5 , W 7.5 , S 7.0 , O 7.5
# 08AU  L 8.0 , R 7.5 , W 6.5 , S 7.0 , O 7.5 (speaking changed from
6.5 to 7.0 due to a successful appeal)
# 08AU  L 7.5 , R 6.5 , W 7.0 , S 7.5 , O 7.0
最后连续报了2次考试,第一次考试总算通过了。
L9.0, R7.5 W7.0 S7.5  O 8.0

07年10月参加工作,边等1年,边靠雅思。 过雅思之前,延期了学生签证(等论文结果),然后4月中提交了485, 6月底过了雅思之后,提交了885。 中间一直不知道可以交886,应为职业不在ACT州政府的list上面。(错误1)

等啊等,等到10月底,工作满一年,想加到MODL里面,和移民局周旋了一下子,他们同意了,反过头去找ACS,发现ACS不同意,说我毕业超过6个月,appeal超过2个月,不能当毕业生,工作经验未满4年。。。。我当时虽然很气愤,但是移民局说MODL的优先级只是当天优先,而且大部分人都是MODL,我加不加无所谓,我就忍了。

等啊等,12月底,又出了新政策,发现自己不在MODL上,所以不在CSL上。狂晕,还差一点点了,当时纸板已经到9月了,我电子版,只批到4月底,所以电话去问咋办。回复是没办法,让我试州政府,或者雇主担保。 一看雇主担保要年薪要15w+, (错误2)直接放弃,州政府还是不在list上,也放弃,等待1月份的自动回复信件看具体怎么回事。

1月份信件说三无人员不批了,顿时着急起来。这是唯一能做的就是找ACS做认证。周旋了很久,没有成功,但他们承认他们的系统有缺陷。IT毕业生就算不是CSL,但是2年之后认证失效,不管是否工作2年,居然不再是IT专家,不可理解。 转而继续周旋移民局。 移民局消极怠工,post-lodge 的邮件2周不回,打通了电话立马回信说你已经和我们电话过了,所以就不回信了,非常恶心。

2月初,公司一个人拿着移民跟我炫耀,说雅思还没考,移民下来了。。我狂晕,此前他和我咨询过填表的事,我拿着结果看了下,一看果然是3天就下来了。当时眼睛发花,看成了887,立即大吐苦水,说移民局不负责人,ACT根本就不是regional地区。。。怎么能申请887。。。 冷静了一个小时,再去看了一次,看清楚了原来是857,边远地区雇主担保。一看网站,果然是比886优先级还高。 当时非常激动,拍了自己一巴掌,怎么会犯这种低级错误呢,ACT原来是边远地区,雇主担保的条件低太多了(见错误2)。。。直接跳过老板,找到大老板,要求担保! 大老板当天就说同意,然后让HR给办。
回家之后,一边埋怨自己,一边开心。这时候老婆提示,是不是会锁定公司工作期限。 一看,果然是2年,随后冷静了。移民就是为了换工作,锁定了意义不大了。这时候老婆又提示,听说不少毕业生都办了州政府,难道都在list上? 第二天仔细研究了一下,果然在一个很隐蔽的地方,说有工作也行。。。当时又拍了自己一通,然后打电话咨询了一下几个朋友的朋友,虽然他们不清楚(通过中介)具体情况,但确定是走了886,同样是IT毕业非MODL。 确认了之后就花了半个小时,在网上把886申请了(朋友被中介收了2k),然后半个小时把材料打包,email了出去。 同时通知HR雇主担保先停下来,我可以州政府担保,给雇主省钱。

2月12号递了州政府后,等待。 州政府官方说30工作日,一般1、2周就下来,我等了2周,没有消息(这期间485签证CO联系我、批下了485、我给州政府发信说已经485了),随后打电话去问,说材料未收到。。。狂晕,再发了一次,立马说收到了。。。当时有求于人,于是很委婉的把责任推给了电脑系统。她们倒也帮忙,说把我放回队列12号。三天后来信,说有个签名要补。。一看原来是扫描的时候没注意反面还有。。补了之后等了一周,又没消息,再打电话,又说没收到。。。再发,再次装孙子,怪系统,她们又说给我加急一下。。总算第二天下午得到担保,问我要TRN号码。。。我早就告诉他们办了885,给了她们,这群人真是不知道怎么干活的。。。随机发了三次邮件,然后拜了菩萨希望她们收到了别删掉。。。3月12号,刚才总算是说收到了,1100表发给移民局了。

补一下今天早上给移民局打电话的经历。从ACT时间9点开始打,电话说移民局没开门。打到移民局开门9:30 (安德雷的时间),就一直打不通,说有很多人打,我不是第一个,也是前几个吧。。太无耻了,忍了之后继续打,打了约20个左右,还是打不通,随机试了下general的那个电话,被放到队列里去了,挂断电话,得出结论,安德雷的不想接电话。。然后打了投诉电话投诉,倒是直接就有人,很热情,不过也没解决问题。10点30开始幻想电话号码被blacklist了,换电话打,失败。。。继续用原来的电话,又打了10来个,期间边写程序,边机械的重播,按2,按0。。。直到一个bug没调出来正郁闷呢,打通了。。。放队列里等了20分钟,然后转到一个officer,没人接了10分钟,期间怕被踢掉,超紧张,还好最后还是有人接了。告诉她我的885要改886,她说好,没收到1100表前不能干啥,我说行。套完近乎,直入主题,收到1100之后,我要拍多久队。。交流了10分钟,期间她询问了上司,得出结论就是我不用管邮件里的日期,因为已经过了我提交的日期。她同时提出那个日期不是12月18号,其实还是10月,不过我是6月交的,所以一进入priority list,就应该可以批了。挺满意,感谢了一下,挂断。

本人所有的签证都是DIY,没用过中介,虽然过来了,但是走了不少辛苦路。07年10月那会儿,直接找公司,就可以申请;等到08年3月毕业,雅思没考过,耽误了3个月,当初要早考过雅思,也就早下来了。08年3月那会儿又不知道符合州政府条件,放弃了一个机会。这些失误希望大家引以为戒吧。

从参与别人创业到自己创业

很久以前看到“赢在中国”栏目里有我的前boss钱江,今天又看到了这个名字,随即跟踪搜索了一下,感慨良多啊。

03年底国庆前,刚大三,手头奇缺钱,随即着手找活干。偶然的机会发现师兄mono再内部bbs上发文找人,壮了下胆子,看了看对方的网站,就去了。说实话当时没怎么看明白,SNS这个概念也是刚出来不久,heiyou那会儿刚起来,东西挺乱的,真不知道是干啥的。

当天去就去办公室,见了Mono,和大老板田范江。俩人都是清华计算机系的师兄,非常和蔼,友善,在我表达了不太会那些技术之后,都让我试试学学,说我肯定没问题,让我对这个公司好感倍加。面试主要是他们谈了谈SNS的构想,以及来上班的一些细节,我没资历,就坐那听啊听。

去上班了,很拼命的干活,希望不辜负期望。我以前的性格就是拿人钱财,给人拼命,所以国庆7点在大哥老家沧州闭关,闭到第6天扛不住了,病倒了。。。那时候还仰仗大哥跟我一起功课难题,现在想起来,这段经历非常宝贵。在Heiyou上班,最羡慕的就是老板的本事。三剑客都是同学,什么沃顿商学院,麦肯锡,埃森哲,副总裁,乱七八糟的头衔太多了,而且都以战养战,外面做咨询,内部搞创业。期间还见过一个海外回来的股东,也是牛烘烘的,所以当时都没怎么觉得自己幸运,能受这些人的指点,光羡慕去了。。。

现在入了职场,又想起他们的一些处事手段,真的很厉害。

04年底做了个手术,之后就离开公司了,现在想起来,一是人事变动,我的上司mono走了;二是自己也没了拼劲,懒惰了;三是公司换主营业务了,改百合网了。没有看到百合的发展,非常遗憾,但见证了一个创业公司怎么熬初期,特别是几个经验丰富的大老板,受益匪浅。

手术之后还没休息够,mono师兄的老婆介绍我去另一家创业公司Feedsky做技术负责人。那时候心里有点底了,趾高气昂就去了。见到了一群自称草根的人,吕总,邢总和我打交道最多,给我印象最深刻。他们虽然没有无敌的文凭头衔,可有一种独特的社会经验。当时公司刚租好办公室,连具体想干啥都没很清楚,不停地想创意,我负责做国外网站的研究,然后和他们讨论,然后做有中国特色的山寨模型。Feedsky我只呆了不到10个月,当时要出国,而Feedsky的风投始终未到,权衡之下,就舍弃了。Feedsky对我很好,当初让老婆陪着上班,估计也是首创吧。没我之后,他们又到处找牛人,构架,公司最后也有很了不起的成就,细节我也不清楚了,人走茶凉的事。在Feedsky学的东西,主要是技术上的,很多事亲自动手,还有一些管理小屁的错误,都是那时候悟到的。 吕欣欣是非技术的技术爱好者,每天都想用新技术,想着公司以技术为核心,网上看看采访他的稿子,他都多次提到。我感觉这个还是一个市场策略,国内就兴这一口子,其实在和草根对立的“精英”眼里,web2.0和技术牛也没啥关系,牛的做算法,得图灵奖,写操作系统内核去了。。。

两家创业公司,两种风格,共同点有:

  • 一分钱掰开用 (民宅,请大妈做饭,找学生兼职)
  • 专注品牌,干活拼命 (每次加班吕总必在)
  • 创新而非走老路子 (百合的婚介,独创)

还有很多总结不出来,只能在德明泰上轨道之后碰上了,试着套一套了。感受最深的就是觉得当初不应该光干事,还应该看人家怎么干事的。大哥、猴子去过heiyou一段时间,cg去过feedsky一段时间,不知道你们学到了什么。

德明泰经过最近3个月的发展,通过几个软件项目磨合,已经基本完善了软件工厂所需要的规章制度,之后就是几位牛人带领小屁做项目,攒经验了。公司把软件服务作为定位,是在没有金点子的情况下走传统的路线完善自我,在自我完善中慢慢自主研发,做强靠实力,做大还是靠创新吧。

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

百合:

几个月后,开始有很多人打听这个网站“是谁在做”。百合网飞速的发展,让风险投资商们没有料到,于是纷纷找上门来。就在三人身上只剩1000块钱的时候,终于有风险投资商决定投钱。仅几个月时间,境遇天壤之别!三人感慨良多,“心情很激动,明白了所谓‘天道酬勤’。投资者也是看中你的团队是不是有勇往直前的决心。再有就是证明了我们当时的决定是正确的,我们辞职创业是正确的,开始决定不去融资也是正确的。” 拿到了钱,三人换了一幢商住两用公寓办公。钱是有了,他们却又遇到了招不来人的尴尬。很多应聘者一听他们是婚恋交友网站都认为是骗人的,他们跟人家说拿到了200万美元的风投,可人家一来面试,看到他们的办公环境,便说什么也不肯来上班了。通过朋友,费了九牛二虎之力,田范江总算聘请了一位人力资源管理人员,“我面试那位人力资源管理人员特意选在了外面的咖啡厅,可人家第一天来上班原本是来辞职的,却没想到,我们热情的招呼使得他最终没有说出口来,就这样留了下来。”
在资金和人才的双重助力之下,百合网很快就拥有了100万的注册用户,VC又开始了新一轮的攻势,先前冷眼看百合网的那些VC们纷纷找上门来,劝说田范江再融一笔资金。“我们并不想继续融资稀释自己的股份,第一笔200万美元我们只花了很小的一部分,因为一直自己打工创业,养成了很多省钱的习惯,200万美元足够我们运营很长的时间。”但还是有一个VC说动了他们,对方说:“不要看风险资金进入时稀释了多少自己的股份,关键要看退出时你所拥有的股份的价值。有人肯投钱,就应该先拿着,因为你永远也预测不了未来会发生什么。有了这些钱,至少是发展的保证。” 此时的百合网员工都像上了发条那样拼命工作,加班是常事,创业的氛围感染着所有员工。那位VC约田范江晚上8点多在百合网的办公地点见面,当他故意11点多赶到的时候,还有一半的员工在工作。这种创业团队的精神坚定了VC一定投钱给百合网的决心。就这样,被风险投资商追着,第二次融资,他们拿到了900万美元。
爱情猎头拿到第二笔资金后,百合网的发展势如破竹,注册用户一跃达到500万。公司的规模也开始快速扩张,从7、8人迅速扩张到70多人。田范江现在回头想想,觉得那钱拿得还是有点早了,“拿到钱有好有坏,快速的扩张冲淡了我们刚刚建立的创业公司文化,几乎每周五下午我们都会召开新人见面会,发展太快,有的时候我们还顾不上加固公司的文化。” 这仅是一个小小的阻力,田范江很快控制了扩张的速度,他希望每一步都稳扎稳打。在公司发展进入轨道后,钱江选择了离开公司管理团队,去开创新的事业,“我们当年未雨绸缪建立的完善退出机制在这个时候起到了很好的效果,钱江顺利地退出,但他依旧是公司的大股东,依旧关注着百合网的成长。”百合“三剑客”的时代并没有真正意义上的结束,而是从内部的三角稳定支撑,转换到内外结合的三角稳定支撑。在一步步稳扎稳打中,百合网的盈利模式也逐渐清晰。一开始,百合网的盈利方式主要集中在无线增值业务和少许广告,然而无限增值业务很容易受到政策的影响,十分不稳定,田范江觉得应该改变盈利的模式,然而改变却并非易事。

Wednesday, March 11, 2009

Career Couch - Don’t Neglect to Send a Cover Letter When Applying for a Job - Interview - NYTimes.com

Career Couch - Don’t Neglect to Send a Cover Letter When Applying for a Job - Interview - NYTimes.com

Career Couch

A Cover Letter Is Not Expendable

Published: February 14, 2009

Q. You are getting ready to apply for a job electronically, and your résumé is ready to go. Do you need to prepare a cover letter? Are they necessary in this day and age?

A. Cover letters are still necessary, and in a competitive market they can give you a serious edge if they are written and presented effectively.

Cover letters are a graceful way to introduce yourself, to convey your personality and to impress a hiring manager with your experience and your writing skills, said Katy Piotrowski, an author of career books and a career counselor based in Fort Collins, Colo. You can also tailor them to a specific company in ways that you cannot with a résumé.

Ms. Piotrowski recently had a job opening at her small company, Career Solutions Group, and she was dismayed when about a quarter of the 200 applicants did not send cover letters. Most were within five years of graduating from college, she said, reflecting a more informal mind-set among younger people.

Q. How should your cover letter be organized, how long should it be, and what should it say?

A. First, do your best to find the decision maker’s name, and use it in the salutation. If you are applying to a blind ad, say “Dear Sir or Madam” or “To the Hiring Manager.” Ms. Piotrowski said she received cover letters that had no salutation at all or began with “Hey there” — not a strong start. If you want to be on the safe side, use a colon after the salutation, although some people now feel it is permissible to use a comma in an e-mail message.

Your cover letter should be short — generally no longer than three or four paragraphs, said Debra Wheatman, a career expert at Vault, a jobs Web site.

In your first paragraph, explain why you are writing — it may be that you are answering an ad, that you were referred to the company through networking, or that you learned that the company is expanding, said Wendy S. Enelow, author of “Cover Letter Magic” and a professional résumé writer in Virginia.

In the middle paragraphs, explain why you are a good candidate, and show that you are knowledgeable about the company. Then convey a clear story about your career, and highlight specific past achievements. This can either be done as a narrative or in bullet points, Ms. Enelow said.

You can also highlight qualities you possess that may not fit the confines of a résumé, Ms. Wheatman said.

She once worked in human resources at Martha Stewart Living, and recalls reviewing applications for a chef in a test kitchen. One woman had a career in manufacturing, but her cover letter described how she had grown up in a family that was passionate about cooking and where she had frequently made meals from scratch. The woman got the job despite her peripheral work experience.

Finish your letter by indicating that you will follow up in the near future (and make good on that promise). Sign off with a “Sincerely,” “Cordially,” “Thank you for your consideration” or similar closer, followed by your name and, if you like, your e-mail address.

Q. Where should your cover letter appear, in an e-mail or in an attachment?

A. You can include your letter in the actual text of your e-mail message or place it above your résumé in an attachment. If you put it in a separate attachment from your résumé, you run the risk that a harried hiring manager will not click on it at all. If you place it in the text of your e-mail message, it should generally be shorter than if you use an attachment, Ms. Enelow said.

Then, if you really want to make an impression, make a hard copy of your cover letter and résumé and send it to the hiring manager by regular mail. Attach a handwritten note that says, “Second submission; I’m very interested,” Ms. Piotrowski said. “I’ve had clients double their rate of interviews simply from doing that,” she said.

Ms. Enelow calls this “double-hitting,” and says she has seen it work remarkably well. She said a senior-level client of hers got an interview and was hired because the hard copy of his cover letter and résumé reached the company president, whereas his electronic application was rejected by someone in human resources because it did not meet certain rigid criteria.

Q. What are some common mistakes in cover letters?

A. A cover letter with typos, misspellings and poor sentence structure may take you out of the running for a job. If you cannot afford to pay someone to review your cover letter and résumé, enlist a friend or a family member with good language skills to do it instead.

Another misguided thing people do is to make the cover letter all about them: “I did this, I’m looking for, I want to ... I, I, I.” Structure your letter so that it stresses the company and what you can do to help it reach its goals, Ms. Piotrowski and others said.

Another danger is including too much information — for example, very specific salary or geographic requirements, Ms. Enelow said. It is also unwise to point out that you do not meet all the criteria in the job description, she said. You can deal with that later, if you get an interview.

Hiring managers are looking for ways to exclude you as they narrow down their applications, she said. Do not give them that ammunition.