看看

哎,编程!!

本站旨在依靠学生团队打造一个较为专业的软件视频培训、交流、合作平台,结识更多的软件爱好者,揭开软件神秘面纱,一起为未来加油! 
 
PS:如果你觉得本站不错,请猛击右上角星星“推荐”哦!谢谢!! 
 
 
============================================================================== 
     /*  微信“求职是落点”,人人公众平台“中哥教面试”欢迎关注!*/ 
 
============================================================================== 

RSS 归档

2013互联网公司,年终奖有几何?---【网上都转爆了】

---互联网技术猎头储小浩

 

弄了一个礼拜,终于整理赶在2014年前搞清楚了各大互联网公司的年终奖,感谢积极的小伙伴们 提到年终奖貌似都很积极,个别不清楚的还去问了HR,不过毕竟不是所有信息都是通过HR了解到的,所以有个别不准的。见谅。

百度:百度offer上写得是14.6个月薪水,年中发0.6个月,年底发2个月,发稿前跟小伙伴确认了一下,年终奖是要算上公司绩效和个人绩效的,所以也不是固定的,不过上下浮动不大。话说2012年百度股票受到狙击,貌似有公司绩效都按0算了,后来有一部分人补上了,一部分没补,今年百度移动和搜索广告收入都不错,股价也稳步回升,相信不会再出现去年的情况。

阿里:去年阿里推出了一个月的集团奖励,我估计今年也差不多。按绩效最高的那一类年终奖达到9个月,所以薪水应该是16-21个月,没拿到16个月的貌似是混得比较惨,会被干掉的那种吧~话说今年阿里期权内部交易价好像跟去年差别不大,依然在25-30刀/股,内部对上市后暴富的期待貌似也没前两年那么热情高涨了。不过如果看机会,阿里肯定还是国内最好的选择之一,技术,薪水,氛围,都不错。

腾讯:北京的部门都是0-4个月年终奖,平均3个月,深圳的游戏部门和微信部门就不提了,必然是土豪,今年不同的项目组能发多少我们拭目以待,我会及时更新。

奇虎:12个月薪水,每个季度月薪*25%*个人绩效的季度奖,一年季度奖加一起是1个月薪水。年终奖是月薪*公司绩效*个人绩效。公司绩效点不知道有没有涉密,就不说了。反正一年整体薪水是14-16个月的薪水。就我自己的感觉,奇虎是喜欢高回报的无线研发和PHP工程师的的首选,BTW,今年奇虎校招应届硕士刚发出了16K的offer(前端职位)。

金山网络:14-18个月工资,具体怎么发放不清楚,貌似只拿到14个月的也是要被干掉的。金山网络今年张罗了不少人,进不去奇虎又想要高薪的很多都去了金山,加班很多,不比360轻松。

搜狐/网易:这两个公司的奖金体系很相似,没有年终奖,都是季度奖。季度奖每个部门还不一样,是按照效益来的,比较好的像汽车之类的部门季度奖相当于1-2个月月薪,这么看一年18个月薪水也不是梦想,乃们不要再黑搜狐网易薪水低了。

搜狐视频:年终奖相当于20%-30%的年薪,按季度发还是年底一起发我给忘了~

搜狗:没有年终奖~ 安啦,有季度奖。每个季度的季度奖最高相当于0.6个月薪水,这样每年最多是14.4个月薪水。

搜狐畅游:之前是很死板的12个月薪水,今年有调整,每个月多出两千的孝心奖(打到你父母卡里),全年14薪。多出了两个月年终奖怎么发放暂不清楚。

新浪:1-2个月年终奖,据传有人可以拿到3-4个月的年终奖,就我今天三月份联系2000名新浪工程师的记录来看,这样的年终奖不是给码农们准备的~

人人:季度奖,SABC打分,每个季度上限1.5个月薪水,下限…当然就是没有了~ 这样看一年最多18个月,最少12个月,不知道今年有没有人好意思拿18个月薪水的。

小米:入职发个手机(谁稀罕),今年是2-3个月年终奖,每个组奖金都不一样,不过也差不了多少。依然是每天10-11点下班,不过周六不上班了。

优酷土豆:12个月基本薪水,年中年底各有一次奖金,加一起2-3个月。另外还有一个项目奖金,如果项目评级到S,奖金相当于1.5个月月薪,前提是你加班时间得符合要求~

去哪儿:16个月薪水,新土豪,”三个人拿四个人的薪水干五个人的活”策略的坚定执行者。现在的工程师招聘说会看个人表现给期权,不过我已经见到没拿到RSU而离职的人了。晚上加班到很晚,上午十点公司没人~

五八:14.5个月薪水,年终奖1个月,还有1.5个月薪水哪儿来的我也不知道,HR很冷落我,估计是因为我长得丑~

高德:猎头的大腿,今天招了多少人HR都没算清楚。据说猎头服务费就花了小一千万,铺天盖地的做广告,薪水也不落人后。高德地图这个部门今年年终奖估计得超4个月薪水,其他部门全年年薪也都在15薪左右。

京东:每个月有1000*(0.8-1.2)的绩效,副经理以上级别2500*(0.8-1.2)的绩效。年终奖1-2个月,能拿到两个月的都是很厉害的人物了。

美团:美团喜欢用内部推荐的方式招聘,所以猎头洞悉的内部资讯也不多。只知道内部技术氛围不错,稳定度很好。年终奖1个月,每个季度的季度奖差不多是1/3的月薪。

Opera:15个月薪水,12个月工资+两个月季度奖+1个月年终奖。季度奖按2224的比例发放。

大街: 固定13薪,有季度奖,最多16个月薪水。话说大街网还是挺舍得给钱的,技术氛围没那么好,业务也不温不火,不过还是有很多人冲钱去了,隐约记得某风雨飘摇的公司跳去了一个11年本科毕业的java,给了16K,真是舍得花钱。

求职,你值得关注

为了紧跟形势,特别推出配套人人网公众平台(中哥教面试)和微信平台(求职是落点),对应素材脚本如下,欢迎关注

 


原创区:

1.       非你莫属的视频分析

2.       从招生的需求里面看你该怎么做

3.       从大学到职场系列,教你如何在大学铺垫,在职场喷发

 

资料共享区:

1.       求职的基本注意事项

2.       求职小技巧

3.       各个职业的介绍,相当于各个职业的述职报告(需要整合)

一些资料的分享(比如专家教你写好年终总结之类的)


微信二维码:(求职是落点)

求职,你值得关注

人人公众平台二维码:(中哥教面试)

求职,你值得关注

 

 

转:程序员练级之路 (作者:陈皓)

建议:

不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。

回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。

一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。

一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。

注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:

 

 

 

现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。

越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。

微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》

所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。

 

启蒙入门

1、 学习一门脚本语言,例如Python/Ruby

 

可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:

 

处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)

遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果

跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量

学会用各种print之类简单粗暴的方式进行调试

学会用Google (phrase, domain, use reader to follow tech blogs)

为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。

 

2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具

 

Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。

Source Insight (或 ctag)

使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。

 

3、 熟悉Unix/Linux Shell和常见的命令行

 

如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧

一定要少用少用图形界面。

学会使用man来查看帮助

文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …

学会使用一些文本操作命令 sed/awk/grep/tail/less/more …

学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…

了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息

了解正则表达式,使用正则表达式来查找文件。

对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。

 

4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)

 

未来必然是Web的世界,学习WEB基础的最佳网站是W3School。

 

学习HTML基本语法

学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)

学会用  Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。

学习使用Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402) 网上有免费的章节,足够用了。或参看 DOM 。

学会用  Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)

在一台机器上配置Apache 或 Nginx

学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。

把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)

跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上

学习一个javascript库(例如jQuery 或 ExtJS)+  Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。

HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)

做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)

买个域名,租个空间,做个自己的网站。

进阶加深

1、 C语言和操作系统调用

 

重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。

学习(麻省理工免费课程)计算机科学和编程导论

学习(麻省理工免费课程)C语言内存管理

学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西。

用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)

用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。

用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。

学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)

学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)

IPC和Socket的东西可以放到高级中来实践。

学习Windows SDK编程(Windows 程序设计 ,MFC程序设计)

写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。

写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。

学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。

这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。

不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。

2、学习Java

 

Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)

学习JDK,学会查阅Java API Doc http://download.oracle.com/javase/6/docs/api/

了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。

学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。

建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。

3、Web的安全与架构

 

学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。

学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章)

学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)

学习Web的静态页面缓存技术。

学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。

实践任务:

使用HTML5的canvas 制作一些Web动画。

尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。

把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站

4、学习关系型数据库

 

你可以安装MSSQLServer或MySQL来学习数据库。

学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……

学习数据库的存过,触发器,视图,建索引,游标等。

学习SQL语句,明白表连接的各种概念(参看《SQL  Join的图示》)

学习如何优化数据库查询(参看《MySQL的优化》)

实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。

5、一些开发工具

 

学会使用SVN或Git来管理程序版本。

学会使用JUnit来对Java进行单元测试。

学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。

推荐阅读《代码大全》《重构》《代码整洁之道》

高级深入

1、C++ / Java 和面向对象

 

我个人以为学好C++,Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++”

 

学习(麻省理工免费课程)C++面向对象编程

读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)

然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,异常,虚函数,等等。

实践任务:

用C++实现一个BigInt,支持128位的整形的加减乘除的操作。

用C++封装一个数据结构的容量,比如hash table。

用C++封装并实现一个智能指针(一定要使用模板)。

《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)

实践任务:

使用工厂模式实现一个内存池。

使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。

使用命令模式实现一个命令行计算器,并支持undo和redo。

使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。

学习STL的用法和其设计概念  - 容器,算法,迭代器,函数子。如果可能,请读一下其源码。

实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能

做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。

做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片。

学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE,  CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)

Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式)。

推荐阅读《Effective Java》 and 《Java解惑》

学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等。

Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。

学习使用Java做Web Service (官方教程在这里)

实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。

C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个。我个人的学习经历是:

 

深究C++(我深究C/C++了十来年了)

学习Java的各种设计模式。

2、加强系统了解

 

重要阅读下面的几本书:

 

《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。

《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。

《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。

实践任务:

理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。

写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。

写一个简易的HTTP服务器。

《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。

实践任务:

主要实践各种IPC进程序通信的方法。

尝试写一个管道程序,父子进程通过管道交换数据。

尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。

学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event,  信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。

实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。

有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)

实践任务:通过以上的所有知识,尝试

写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)

了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。

3、系统架构

 

负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)

多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。

CDN系统 – 就近访问,内容边缘化。

P2P式系统,研究一下BT和电驴的算法。比如:DHT算法。

服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。

虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。

学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。

学习Hadoop。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。

了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

写了那么多,回顾一下,觉得自己相当的有成就感。希望大家不要吓着,我自己这十来年也在不断地学习,今天我也在学习中,人生本来就是一个不断学习和练级的过程。不过,一定有漏的,也有不对的,还希望大家补充和更正。(我会根据大家的反馈随时更新此文)欢迎大家通过我的微博(@左耳朵耗子)和twitter(@haoel)和我交流。

 

—– 更新  2011/07/19 —–

 

1)有朋友奇怪为什么我在这篇文章开头说了web+移动,却没有在后面提到iOS/Android的前端开发。因为我心里有一种感觉,移动设备上的UI最终也会被Javascript取代。大家可以用iPhone或Android看看google+,你就会明白了。

 

2)有朋友说我这里的东西太多了,不能为了学习而学习,我非常同意。我在文章的前面也说了要思考。另外,千万不要以为我说的这些东西是一些新的技术,这份攻略里95%以上的全是基础。而且都是久经考验的基础技术。即是可以让你一通百通的技术,也是可以让你找到一份不错工作的技术。

 

3)有朋友说学这些东西学完都40了,还不如想想怎么去挣钱。我想告诉大家,一是我今年还没有40岁,二是学无止境啊,三是我不觉得挣钱有多难,难的是怎么让你值那么多钱?无论是打工还是创业,是什么东西让你自己的价值,让你公司的价值更值钱?别的地方我不敢说,对于互联网或IT公司来说,技术实力绝对是其中之一。

 

4)有朋友说技术都是工具,不应该如此痴迷这句话没有错,有时候我们需要更多的是抬起头来看看技术以外的事情,或者是说我们在作技术的时候不去思考为什么会有这个技术,为什么不是别的,问题不在于技术,问题在于我们死读书,读死书,成了技术的书呆子。

 

5) 对于NoSQL,最近比较火,但我对其有点保守,所以,我只是说了解就可以。对于Hadoop,我觉得其在分布式系统上有巨大的潜力,所以需要学习。 对于关系型数据库,的确是很重要的东西,这点是我的疏忽,在原文里补充。

 

 

 

前言

你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)

 

建议:

 

不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。

回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。

一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。

一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。

注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:

 

 

 

现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。

越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。

微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》

所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。

 

启蒙入门

1、 学习一门脚本语言,例如Python/Ruby

 

可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:

 

处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)

遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果

跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量

学会用各种print之类简单粗暴的方式进行调试

学会用Google (phrase, domain, use reader to follow tech blogs)

为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。

 

2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具

 

Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。

Source Insight (或 ctag)

使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。

 

3、 熟悉Unix/Linux Shell和常见的命令行

 

如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧

一定要少用少用图形界面。

学会使用man来查看帮助

文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …

学会使用一些文本操作命令 sed/awk/grep/tail/less/more …

学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…

了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息

了解正则表达式,使用正则表达式来查找文件。

对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。

 

4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)

 

未来必然是Web的世界,学习WEB基础的最佳网站是W3School。

 

学习HTML基本语法

学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)

学会用  Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。

学习使用Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402) 网上有免费的章节,足够用了。或参看 DOM 。

学会用  Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)

在一台机器上配置Apache 或 Nginx

学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。

把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)

跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上

学习一个javascript库(例如jQuery 或 ExtJS)+  Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。

HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)

做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)

买个域名,租个空间,做个自己的网站。

进阶加深

1、 C语言和操作系统调用

 

重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。

学习(麻省理工免费课程)计算机科学和编程导论

学习(麻省理工免费课程)C语言内存管理

学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西。

用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)

用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。

用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。

学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)

学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)

IPC和Socket的东西可以放到高级中来实践。

学习Windows SDK编程(Windows 程序设计 ,MFC程序设计)

写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。

写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。

学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。

这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。

不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。

2、学习Java

 

Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)

学习JDK,学会查阅Java API Doc http://download.oracle.com/javase/6/docs/api/

了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。

学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。

建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。

3、Web的安全与架构

 

学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。

学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章)

学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)

学习Web的静态页面缓存技术。

学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。

实践任务:

使用HTML5的canvas 制作一些Web动画。

尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。

把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站

4、学习关系型数据库

 

你可以安装MSSQLServer或MySQL来学习数据库。

学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……

学习数据库的存过,触发器,视图,建索引,游标等。

学习SQL语句,明白表连接的各种概念(参看《SQL  Join的图示》)

学习如何优化数据库查询(参看《MySQL的优化》)

实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。

5、一些开发工具

 

学会使用SVN或Git来管理程序版本。

学会使用JUnit来对Java进行单元测试。

学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。

推荐阅读《代码大全》《重构》《代码整洁之道》

高级深入

1、C++ / Java 和面向对象

 

我个人以为学好C++,Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++”

 

学习(麻省理工免费课程)C++面向对象编程

读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)

然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,异常,虚函数,等等。

实践任务:

用C++实现一个BigInt,支持128位的整形的加减乘除的操作。

用C++封装一个数据结构的容量,比如hash table。

用C++封装并实现一个智能指针(一定要使用模板)。

《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)

实践任务:

使用工厂模式实现一个内存池。

使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。

使用命令模式实现一个命令行计算器,并支持undo和redo。

使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。

学习STL的用法和其设计概念  - 容器,算法,迭代器,函数子。如果可能,请读一下其源码。

实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能

做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。

做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片。

学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE,  CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)

Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式)。

推荐阅读《Effective Java》 and 《Java解惑》

学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等。

Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。

学习使用Java做Web Service (官方教程在这里)

实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。

C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个。我个人的学习经历是:

 

深究C++(我深究C/C++了十来年了)

学习Java的各种设计模式。

2、加强系统了解

 

重要阅读下面的几本书:

 

《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。

《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。

《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。

实践任务:

理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。

写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。

写一个简易的HTTP服务器。

《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。

实践任务:

主要实践各种IPC进程序通信的方法。

尝试写一个管道程序,父子进程通过管道交换数据。

尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。

学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event,  信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。

实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。

有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)

实践任务:通过以上的所有知识,尝试

写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)

了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。

3、系统架构

 

负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)

多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。

CDN系统 – 就近访问,内容边缘化。

P2P式系统,研究一下BT和电驴的算法。比如:DHT算法。

服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。

虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。

学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。

学习Hadoop。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。

了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

写了那么多,回顾一下,觉得自己相当的有成就感。希望大家不要吓着,我自己这十来年也在不断地学习,今天我也在学习中,人生本来就是一个不断学习和练级的过程。不过,一定有漏的,也有不对的,还希望大家补充和更正。(我会根据大家的反馈随时更新此文)欢迎大家通过我的微博(@左耳朵耗子)和twitter(@haoel)和我交流。

 

—– 更新  2011/07/19 —–

 

1)有朋友奇怪为什么我在这篇文章开头说了web+移动,却没有在后面提到iOS/Android的前端开发。因为我心里有一种感觉,移动设备上的UI最终也会被Javascript取代。大家可以用iPhone或Android看看google+,你就会明白了。

 

2)有朋友说我这里的东西太多了,不能为了学习而学习,我非常同意。我在文章的前面也说了要思考。另外,千万不要以为我说的这些东西是一些新的技术,这份攻略里95%以上的全是基础。而且都是久经考验的基础技术。即是可以让你一通百通的技术,也是可以让你找到一份不错工作的技术。

 

3)有朋友说学这些东西学完都40了,还不如想想怎么去挣钱。我想告诉大家,一是我今年还没有40岁,二是学无止境啊,三是我不觉得挣钱有多难,难的是怎么让你值那么多钱?无论是打工还是创业,是什么东西让你自己的价值,让你公司的价值更值钱?别的地方我不敢说,对于互联网或IT公司来说,技术实力绝对是其中之一。

 

4)有朋友说技术都是工具,不应该如此痴迷这句话没有错,有时候我们需要更多的是抬起头来看看技术以外的事情,或者是说我们在作技术的时候不去思考为什么会有这个技术,为什么不是别的,问题不在于技术,问题在于我们死读书,读死书,成了技术的书呆子。

 

5) 对于NoSQL,最近比较火,但我对其有点保守,所以,我只是说了解就可以。对于Hadoop,我觉得其在分布式系统上有巨大的潜力,所以需要学习。 对于关系型数据库,的确是很重要的东西,这点是我的疏忽,在原文里补充。

书库网站资源 来自:豆瓣 风归时

1.http://onlinebooks.library.upenn.edu  

喜欢读英文书的朋友差不多都知道这个在线书库,该书库几乎每天都有新书增加进来,目前其所拥有的在线免费图书已超过2万本,内容涉及众多领域,阅读格式也 多种多样。最好的是,你可以通过每本书所提供的链接,还能顺藤摸瓜地找到其他很多非常有价值的在线书库和丰富多彩的内容。本文所提供的其他一些书库就是本 人通过这一书库的线索找到的。  

 

2.http://quod.lib.umich.edu/m/moa/  

Making of America(MOA)是研究美国从南北战争到重建时期社会、历史、文化的极佳的网上资源,当然其收藏内容远不止于此,欧洲各国的历史以及著名作家的经 典著作也非常之多,比如英国湖畔派诗人的全集、休谟的英国史(6卷本)、基佐的法国文明史(8卷本)等等,而且所有图书皆为图形格式或PDF格式,并且都 是扫描输入的,原汁原味。遗憾的是,出于版权保护的考虑,所收图书的作者差不多都是已故距今至少70年以上的。其中很多书都有极高的收藏价值。遗憾之处是 其PDF格式不能整本下载。  

 

3.http://posner.library.cmu.edu/Posner/  

这里还要向大家极力推荐Posner先生的这个个人藏书网站,书籍的数量虽然不是很多,但每本差不多都是善本,甚至可能有孤本。比如他所收藏的莎士比亚戏 剧集居然是第一个剧团演出本!吉本的《罗马帝国兴衰史》好像也是第一版的。所有图书皆为原书扫描输入,保留了这些善本书的全貌,非常值得藏书家收藏!缺点 也跟MOA一样,不能整本下载。 个人非常推荐!~  

 

4.http://www.archive.org/details/texts  

Internet Archive也是一个不错的在线书库,其中的百万书库项目(Million Book Project)号称到2005年底要将百万册图书数字化,不过到目前为止该书库好像只有1万多本书,但这样的成绩也很不错啦。其中的很多书都有 DjVu、PDF版,也有不少好书,值得一看。  

 

5.http://www.bartleby.com/  

Bartleby.com敢号称自己是“Great Books Online”当然有其理由,因为光它的“哈佛经典丛书”就多达100卷,哪位读者要是能将其读完,我看成为大师级人物应该不成问题。此外还有很多极有价 值的百科全书和词典,比如哥伦比亚百科全书(第六版)、美国文化遗产词典、名人名言词典等,所有的辞汇还都带发音,相当不错。  

 

6.http://etext.lib.virginia.edu/  

这是美国弗吉尼亚大学的电子图书中心,你要是只看其书库分类目录,你肯定会怦然心动,感觉这个中心简直是一个宝库,然而遗憾的是,其中很多的东东只限于该校师生访问,并不对外。但是其对外的部分也算不错了,值得好好淘一淘。  

 

7.http://selfknowledge.com/index.shtml  

这个经典作家书库收集的作家和书籍颇为不少,但大多以文学为主。值得一提的是它配有百科辞典功能,每本书中的很多词汇都可链接到辞书中,读者可听到该词的正规发音以及释义,有些书还有真人阅读片断,实为外语学习的好帮手。  

 

8.http://socserv.mcmaster.ca/econ/ugcm/3ll3/  

McMaster大学的经济思想史书库,所收集的经济学家著作相当齐全,实为研究经济学的不可多得的好网站。当然,其藏书也并非全跟经济学有关,比如也亚里士多德、孟德斯纠、伯克等人的著作。  

 

9.http://oll.libertyfund.org/Home3/index.php  

这是自由基金会组织建立的在线书库,经常更新,而且差不多都是经典著作,涵盖了社会政治、哲学、经济、历史等多领域的著作,很多著作还是扫描输入的PDF 版,比如吉本的12卷本《罗马帝国兴衰史》就是原书复印的,而且可以全书下载。此外像格拉斯哥版的亚当·斯密全集据说也是斯密最好的版本。 这里也推荐~  

 

10.http://texts.cdlib.org/ucpress/  

加州大学的这个学者文库相当不错,很多书都是非常新的著作,制作也相当不错。遗憾的是也分成了对内和对外两类,好在对外的数百本书也都是不错的专著,值得好好读。其中关于中国社会、历史、经济、文化方面的书也不少,其中有一本论述达赖喇嘛的书,很值得一读。  

 

11.http://www.perseus.tufts.edu/  

帕修斯数字图书馆是研究西方古典著作的最佳网站,几乎所有目前遗存的古希腊和古罗马经典都能在此找到,很多书都有希腊文、拉丁文原本以及英文译本,而且有 希腊文和拉丁文词汇研究工具,原文著作中的几乎每一个词都可以点击察看其英文词意以及使用频率等。除此之外,该图书馆还有英国文艺复兴时期书库,有莎士比 亚和马洛的全部戏剧。 但现在外网似乎已经登不上去。  

 

12.http://www.promo.net/pg/  

古登堡项目可以说是目前全球最大的免费在线图书网站,有很多书库,包括上面的一些书库都收藏有古登堡的图书。虽然其中的大多数书籍都是TXT格式的,但也 有一部分书制作还算不错,比如爱德蒙·伯克的12卷本全集、带有著名画家达利插图的但丁《神曲》等,此外还有一些图书的音频资料。缺点是这个网站经常会上 不去。 不知道什么时候又不能上,我在学校里的网络限制还好些,很多在外网被封禁的网站都能顺利浏览。  

 

13.http://www.blackmask.com/  

这个网站收藏的图书比较多,每本书也有很多格式,我个人推荐使用微软的Reader格式。不过该网站的搜索功能不怎么样,其他方面还算不错。  

 

 

 

15.http://www.marxists.org/reference/subject/philosophy/index.htm  

这是一个哲学书库,虽然只有文本格式,但所收藏的书籍多为哲学史上的名著,从古代到当代都有,相当的丰富  

 

16. http://www.woyouxian.com/index/20index.html  

國内相當不錯的閲讀網站,雖然書少了點,但很不錯。大多是文學名著  

 

17.http://www.literature.org/  

也是一個很不錯的在綫閲讀網站。主要都是文學方面的作品。  

 

18.http://www.asiaing.com  

亞洲進行時。比较不錯的一個電子書下載網站,大部分都是PDF格式的,質量很高速度也很快。但是圖書數量有限,而且有些書只提供一些章節預讀,但對於一個正規的網路來説已經很不錯了~裏面的原版PDF真的做的挺好的  

 

19.http://www.en8848.com.cn  

一个比较不错的英文小说阅读网,很多国内流行的畅销书的PDF版都能在里面找到,而且质量通常都不错。  

 

 

20.http://library.nu/  

各学科均有涉猎,藏书量大,正在挖掘中~  

最新线报!又活了!复活万岁!  

 

 

21.http://www.ncbi.nlm.nih.gov/pubmed  

由美国国家医学图书馆和国立卫生研究院建立一个医学学术资料网站。生物医学文献超过2100万,包括论文参考文献,生命科学期刊,在线图书。  

 

 

22.http://www.gutenberg.org/  

古登堡项目,提供了超过38000名免费电子图书,包括有声读物CD、DVD等,可以下载到电脑上及其他便携设备,还可以在kindle,epub,html和txt之间进行选择,着实是下载外文读物的好去处~  

 

23.http://www.jstor.org/  

如果你是在找学术资料,这里真的很不错。有各种学术期刊,还有图片、信件等等。  

 

这里有些也主要是经典著作的小语种网站,内容主要涉及历史、文学、艺术:  

 

14.http://gallica.bnf.fr/  

这是全球互联网上大概最齐全的法语图书资源库了,也是希拉克总统希望挑战撒克逊语言在互联网上统治地位的一个阵地。对法语爱好者来说这真是不可多得的宝库,其中有巴尔扎克全集、波德莱尔全集……,还有很多中世纪的法语书籍和图形资料,原版扫描,非常宝贵。 (有部分资料是收费的)  

 

24.http://un2sg4.unige.ch/athena/html/athome.html (法语、瑞士语、荷兰语、德语、英语等) 

 

25.http://www.fh-augsburg.de/~harsch/a_index.html (拉丁语,希腊语,法语,德语,意大利语,印度语,西班牙语,葡萄牙语,波兰语和俄语。好吧,我大部分都看不懂。。。主要是拉丁文。)  

 

26.http://www.lib.virginia.edu/wess/etexts.html(泰罗尼亚语,丹麦语,荷语,法语,加利西亚语,德语,希腊语,爱尔兰语,挪威语,葡萄牙语,西班牙语和瑞典语。) 

开发者眼中的用户【转】

开发者眼中的用户【转】
来自煎蛋

30秒让你明白什么叫做“云”!拿云来装x的二货们,受死吧!!

说白了,所谓“云技术”就是坐在服务器机房总控制室

里面,利用虚拟化技术,把运行中的应用程序不中断地

搬来搬去,使其如同漂浮在云雾之中,让服务器负载得

以均衡,或是,让一批服务器暂时性的休眠,必要时再

唤醒,达到节电的目的。这就与人工智能扯上关系了。

转载自:

http://www.jifang360.com/news/20111211/n020732259.html

(转自北邮人)offer档次排名,2014最新版。

我眼中的IT界offer。。。。。。 

个人观点,不喜勿喷。 

综合考虑发展,薪水,环境,压力。 

  

第0档:美国互联网总部special offer(15万刀起薪) 

  

第一档: 

股份制银行总行,证券公司,基金公司IT部门(民生,中信,兴业,浦发,南方基金,中信证券等等)加班多,累,但是25万+户口编制,能学习金融业务it流程。 

  

第二档: 

国内网游公司,中央金融机构IT部门(网易游戏,巨人,中国银联总部,中国结算,央行it,同业拆借中心)35万无编制,20万有编制(体面) 

  

第三档: 

硅谷互联网外企普通offer或美国投资机构,(美国10万刀,或者中国20万人民币)yahoo,微软(美国or中国),hulu,worldquant,msci量化,摩根大通量化。30万左右,不加班,前景广阔。 

  

第四档: 

四大行总行IT部门(建农工交),中央企业总部it部门(国家电网,中石油,中国移动等)普通城市银行(宁波,上海银行),农商行IT部门。工资15万+户口编制+工作相对轻松。 

  

第五档:互联网小公司或创业型公司,比如搜狗,有道,美团,去哪儿,各种页游小公司,外资小咨询公司,待遇20万+,发展快,技术能力增长快,学习东西多,存在感强,而且有一夜暴富的可能。 

  

第六档:思科(正在裁员),摩根IT部门,vmware,微策略,亚马逊(核心技术部门)等外企it。工资20万左右,工作轻松,前途一般,随时裁员。 

  

第七档:BAT。工资20万左右,加班多,无户口编制,上升空间没有小微型互联网大,而且由于企业大,工作螺丝刀化,没有股票。百度现在上升空间很小,阿里一年招一千多人 以后升职空间参考百度,而且在杭州的话,不能通过跳槽来升职涨工资(在杭州跳哪去?)。 

  

第八档:中型互联网,人人,京东,网易,sina,奇虎360。工资17万左右。发展前景还可以,无编制户口。 

  

第九档: 

信用卡中心,华为,中国银行软开(非总行编制),招商银行软开等外包银行软开,中科院下属公司,运营商普通岗位。10万,但是工作稳定。 

  

第九.五档: 

IT咨询公司,凯捷,埃森哲,四大会所it(普华it,德勤)。年薪8万左右,加班,裁员,但是能学到东西。 

  

第十档:花旗软件,汇丰it广州,渣打it天津,甲骨文,emc,爱立信(正在疯狂裁员),诺基亚,待遇10万左右,轻松,前途一般,没什么发展,随时裁员。 

  

第十一档: 

日韩台外企,三星,htc,sony,nec,xxx株式会社。待遇10万左右,加班,裁员。

人人源地址:http://blog.renren.com/blog/383581453/918600065

实习——你图的是什么?【转自人人职场】

首先说两个个例。一个是反面教材,就是我本人的大学经历。我在一个很不错的大学读中文系,中文是这个学校最好的几个专业之一,但想当然,也是最不好就业的专业之一。我在四年里几乎没有想过找工作的事情,大一大二两年拚命修完了90%的学分,做了一阵子学生干部,大三大四两年基本全都用来看动画片了。到了大四,我对什么时候开始找工作也没有概念,结果错过了大规模的招聘期。因此拿到的offer自己都不满意,最后选择了考研。

另一个例子是我同寝室的同学,她在中文系读了四年之后进了四大,做起了审计。现在四大已经一点都不热门了,不过在当年,尤其是对一个中文系本科毕业生来说,也算是一个很好的选择了。

我们在大一下半学期,有一个机会可以选修第二专业。当时我选了法律,她选了会计。直到毕业以前,我都挺无法理解她为什么要选择读会计专业的,那个时候觉得,学法律是学一门知识,学会计是学一门手艺,在大学里学这个挺没劲的。后来才知道,在企业里工作,有商科背景,对于任何职位来说,都是很有帮助的。这个姐姐在大三开始,通过师姐的介绍,先是在电台做实习编辑。然后又通过亲戚的介绍,在一家日企的会计部做实习。在这两份实习结束后,以上面两个实习为基础,她很容易地又拿到一家时尚杂志和一家大型外企财务部的实习职位。现在看来,这几项实习工作都是非常好的选择。在电台和杂志的实习经历,加上她的专业背景,为以后从事媒体工作打下了基础。而财务部的实习工作,无疑是她进四大的一个铺垫。

写这两个例子,说明的问题很简单。一个规划好的大学生涯,和一个缺少目标的大学生涯,是完全不同的。我觉得,从大二末大三初开始,就应该有一个比较初步的规划;经过一两次实习,就会对自己未来的职业目标有更清楚的认识,到时可以做出具体的调整和设定。

有写人到找工作的时候会问“简历应该怎么写?” 其实重要的不是简历怎么写,而是简历上写了什么。而简历上能写些什么,你的成绩在班级里的排名,你从事了哪些校园活动,你有怎样的实习经历,这些在你写简历的时候已经成为了不可改变的事实。所以,做规划,要趁早。  

大家最初对工作的事情还很模糊的时候, 可以开始上网了。实习版,找工作版等等。精华区里会有历届学生实习和找工作的心得体会。这些是一手资料。虽然不完整,不准确,但很直观。

信息包括:

1>哪些企业会大规模招聘应届毕业生。像联合利华等人员流动性特别强的公司,每年都会招聘大量的应届毕业生。再比如四大,大家为什么经常提到它们,因为它们招聘应届生的比例很高。而有一些知名公司,它们只做少量的校园招聘,大量的职位是通过社会招聘(针对有工作经验的人)填补的。它们虽然也在校园招聘季做大规模的广告和宣讲,在学校里树立自己的品牌,但招收的数量其实有限。有一些公司在全国几个城市做宣讲,但可能只招1~2名应届毕业生。

2>招聘季什么时候开始?前几年的招聘主要从9/10月份开始,10月到第二年的1月是高峰(大概的数据)。但近几年的趋势是,大企业从暑假前就开始招“暑期实习生”,再从其中选择正式录用的人。这些“暑期实习生”表现好的就会留用,也就是说,在暑期前应聘到“暑期实习生”,是未来留用这家公司的必要非充分条件。

因此,想要在好的外企找到好的工作,从大三下班学期的4/5月就要开始注意招聘信息了。的确,在大四下班学期开学以后,还有一些公司会招聘。但错过了大型企业的招聘高峰,其实就错过了应届毕业生招工作的黄金阶段。一些比较小型的企业不太喜欢高不成低不就的应届毕业生。大型企业通常比较看重学生的潜力,至于工作能力,公司会提供培训来弥补。但小型企业通常希望你上手就能干活,同时怀疑高校毕业生是否能长期安于现状,所以录用比例反而不高。

3>各公司/各岗位招聘的必要条件是什么?最看重的素质是什么?像进入中资银行,一个必要条件是当地户口,这几乎是公开的要求。像四大,比较重视学校的品牌,而不太重视专业。像一些咨询公司,因为门槛比较高,所以它们连一般公司不太看重的专业成绩都看得很重,可能只要年级前几名的学生。再比如人力资源/行政这一类职位,明显偏爱女生,因为专业限制不高,所以实习经历/学生活动经历等其他指标就特别重要。销售类职位,最好有产品相关的专业背景。而且最重要的是,对人的性格方面很有要求。内向性格的人,可能过不了面试关。技术类职位,除非是技术支持类的,公司可能会偏向于招聘研究生。这些东西从学长学姐的经验贴里都可以总结出一些。

接下来说一点找实习的体会。一份好的实习,有意义的实习是非常有帮助的。功利性地说,它是未来找工作的一个铺垫;此外,对于一个没有走上工作岗位的学生来说,实习也可以帮助自己开阔眼界,认识business world,提高待人接物的能力,重新修订自己的职业目标等等等等。

当然,起步可能是比较困难的。很少有好的公司愿意录用简历一篇空白的大三学生做实习生。它们在挑选实习生的时候,已经在用那些有相关实习背景的学生了。就我身边的例子来看,第一份实习工作多半是通过同学、学长学姐、老师、亲戚朋友介绍的。所以,不要胆怯,先通过自己的关系网络找到自己的第一份实习工作吧。

对第一份实习的要求:我觉得第一次实习的时候,追求在工作岗位上实现自我什么的是完全不切实际的。因此,工作再琐碎,再乏味,先把它做起来。在可能的条件下,对实习工作可以有以下几个要求:

1>优先选择自己喜欢的工作岗位这一点有不言而喻的重要性。以我身边的一个同学为例,她第一份实习在亲戚的介绍下做了PR的工作,接下来她再找实习工作的时候,只要是PR相关的工作,她都能轻易得到;相反,其他任何类型的工作,她连面试机会都没有得到过。所以她找正式工作的时候也只能找PR相关的工作。虽然这个岗位跟她的专业一点关系都没有。也就是说,第一份实习很可能决定一生(危言耸听……)。

2>工作单位尽可能比较正规,各部门齐全.首先,你可以在一个正规的公司里体会到公司健全的管理模式,成熟的工作方式等等;其次,如果你不喜欢自己现在的实习岗位,未来也不打算再从事相关职业的话,你可以在部门齐全的公司里看看,有哪些其他岗位是自己喜欢的,适合的。

3>个人觉得,发传单,做家教,肯德基麦当劳这一类工作都可以不必去做。当然,它们体现了你精力旺盛,乐于实践,吃苦耐劳等美好品德,还能赚到钱。但它们对你了解企业的运行,一个岗位是做什么样的工作,企业需要一个什么样的员工,等等,帮助都不大。  (家教无用论仅对找工作而言,还有我是不是太绝对了点啊……)

接下来,一份正式的实习。在第一份甚至前几份实习工作的基础上,找到一份正式的实习就比较容易了。你经过几次实习,可能是短暂的实习之后,你可能比较清楚自己到底想做什么工作了。其实每一种工作可能都没有自己想像中那么美好,但你一定已经比以前更清醒了。

我所说“正式的实习”有以下几个要求:

1>公司提供正式的实习岗位我觉得有一些工作不可以称之为实习,而只是兼职工作。也就是说,不是internship,而是parttime job。在兼职的岗位上,公司就是把你当成廉价劳动力,它要求你做的工作,都是简单的重复劳动,不会提高你的能力与价值。而有些公司会长期的,大量的招聘实习生。在这样的实习岗位上,你可以获得比较高价值的工作,获得一些培训(虽然可能是非正规的),上司会给你一些反馈和评价,你可以深入了解这个岗位的工作内容,发展前景等等等等。这样的公司其实挺多的,因为很多公司的人员结构都快变成倒金字塔了,就是经理级员工很多,但没有底层的正式员工,真正在底层办事的,都是实习生。(不清楚为什么,可能是为了节省成本)在这样的公司,你可能被当成一个真正有用的人使用,尤其当你遇到一个好上司的时候,会获得非常大的提升。

2>比较长的实习期非正式的实习可能是1个月,甚至是几天。我就在一个公司的市场部做过10天实习,工作内容就是打电话。短期的实习不可能教会你很多东西,一来,很多东西要靠时间来领悟,二来,有些工作短期内不能上手,如果你没有稳定性的话,公司不愿意花时间来coach你,因此,如果一个实习设定的就是短期,它的工作内容必定非常单一。比较合适的实习期可能是3-6个月。

3>合适的岗位综合上述两点,你投入那么多时间和精力的一份实习,几乎必然就是你未来职业的起点了,所以慎重地选择吧。

找实习的方式, 还是那几种:

1>招聘网站和高校BBS;高校BBS上的信息其实是非常有用的,因为各大公司很可能在高校有联系人,会第一时间贴出招聘信息的。但请注意时效,这个职位一经贴出,可能在几天内就找到合适的人了。所以请经常关注招聘信息,坚持不懈地投简历。上面说过,我在本科阶段是很懒惰的,从来不上学校的JOB版和Parttime版。但事后想起来,如果你在找工作阶段都如此懒散的话,其实必然适应不了外企高节奏的工作方式和巨大的工作压力的。

2>请同学和学姐学长介绍这种途经的成功率非常高。当一个同学或者学姐学长结束实习的时候,可能会像公司推荐继任者,因为公司也想省时省力地找到合适的人选,所以多半就直接录用被推荐的人选了。当时,推荐的人选也必然是各方面素质都很好的人。同学或者学姐学长也不太愿意推荐一个不好的继任者,而给自己实习过的公司留下不好的印象。所以,“推荐”只是同等条件下优先录取的道路而已。

通过实习可以获得的:

1>工作能力的提高工作能力的提高不意味着你多学会几种EXCEL技巧,打字变快了等等,而是体现在一些非常抽象的层面上。像我在实习中,日常的工作确实就是处理表格,整理档案,负责联络等等很琐碎的事情,但是几个月下来,还是很有收获的。比如,我以前说话语速很快,我的上司说这样会让对方觉得,你对说话的内容没有把握,而且没办法很好的记住你说话的内容。所以我降低了说话的速度,而且谈吐看起来沉稳了一点:P 而且你用压迫的语气说话,还是用商量的语气说话,办事效果完全不同。这在有很多社会经验的人看来完全是不值一提的,但对于没走上过社会的学生来说,第一次走进办公室的时候,你可能会觉得自己跟周围环境格格不入,直到几个月后,才会通过各方面的改变融入整个环境。再比如,学会适时跟上司汇报工作进度。再比如,合理安排工作的priority。等等等等,都可以看做是工作能力的提升。

2>提升责任心在一份正式的实习里,你要为你的工作负责。虽然比正式员工承担的责任小的多,但还是经常有你不认识的人,跑到你的上司那里去challenge你的工作成果。这些都压迫着你把事情做到最好。 3>更了解你未来的工作这一点是非常重要的。在一个比较长期稳定的实习里,你可以充分了解到你这一类工作的工作职责和人才需求。而且,你可以通过方方面面了解得到,你这个岗位在不同行业,不同公司里的状况,这对未来找工作的时候很有帮助。  

怎么看招聘广告: 可以说,直到实习以后,我才了解到招聘的时候,我们都会看到的招聘广告中的“职位说明”的重要意义。

Job responsibility就是这个职位的工作职责。你如果看到这个工作内容里有你一点都不认识的单词或者缩写(比如一些工科类,IT类,财务金融类的术语),极端地说,我觉得完全没必要投这个职位了。因为这说明我对这个职位的工作内容在哪个领域都不知道。当然,如果你知道这个单词或者缩写的意义,只是自己目前还不太熟练或者不太在行,这倒可以以后弥补,起码工作是属于哪个领域自己是清楚的。

Requirements是这个职位的招聘需求。一般一个职位会写明要求的学历、专业、工作经验、学习成绩、