Jirairya

技能树--CS打怪升级


CS打怪升级


启蒙入学

  1. 学习脚本语言
    • 处理文本文件,或者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. 熟用编辑器、基本工具
    • Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
    • Source Insight (或 ctag)

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

  1. 熟悉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你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。

  1. 学习Web基础(HTML/CSS/JS)+服务端技术(LAMP)
    • 学习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语言和操作系统调用

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

2.学习Java 3.Web的安全架构

4.学习关系型数据库

5.一些开发工具


高级深入

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

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

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

2.加强系统了解

重要阅读下面的几本书:

*《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。 *《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。 *《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。 实践任务:

3.系统架构


转自陈皓

Content