Gather ye rosebuds while ye may

干啥

    Discovery

  1. step 1
    1. python
    2. linux
    3. 前端
    4. 熟练 VIM
    5. Git
  2. step 2
    1. 翻墙
    2. 前端进阶
    3. c
    4. java
    5. 关系型数据库
    6. 开发工具
    7. web 安全
      1. Web安全标准
      2. 实战环境
      3. Firefox 插件
      4. Chrome
      5. Fiddler
      6. 抓包
      7. Web2.0 Hacking
      8. HTTP代理
      9. 漏洞扫描
      10. 漏洞利用
    8. Unix/Linux
    9. 爬虫进阶
    10. 调度
    11. 并发
    12. 数据结构
    13. 数据存储及处理
    14. DevOps
    15. 调试
    16. 算法
    17. 持续集成
  3. 环境

避免自己没有事情做


step 1

至少完整看完与练习好一本书
至少过一遍官方文档

python

  • 处理文本文件,或者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)
  • 编辑urllib2的do_open里的h.set_debuglevel改为h.set_debuglevel(1),这时可以清晰看到请求响应数据,包括https
  • 《python参考手册》
  • 《python基础教程》
  • Python Challenge
  • python官方手册
  • The Hitchhiker’s Guide to Python
  • Python Module of the Week
  • PEP 8
  • 硬悟学蛇
  • 《Python核心编程2》
    • 第4章 Python对象
    • 6.8 Unicode
    • 8.11 迭代器和iter()函数
    • 第9章 文件的输入和输出
    • 第10章 错误和异常
    • 第11章 函数和函数式编程
    • 第12章 模块
    • 第14章 执行环境
    • 第15章 正则表达式 idea
    • 第18章 多线程编程
    • 20.2 使用Python进行Web应用:创建一个简单的Web客户端

linux

  • 鸟哥的Linux私房菜
  • 《Unix环境高级编程》
  • 《UNIX系统编程》
  • 学会使用man来查看帮助
  • 文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
  • 学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
  • 学会使用一些管理命令 ps/top/lsof/netstat/kill/iptables/dd…
  • 了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
  • 了解正则表达式,使用正则表达式来查找文件。

前端

  • 学习HTML基本语法
  • 学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
  • 配置Apache
  • 学习使用Javascript操纵HTML元件。
  • 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认 识。实现一个表单提交和反显的功能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
  • 跟完一个名校的网络编程课程 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时 间一定可以跟上
  • 学习一个javascript库(例如jQuery 或 ExtJS)+ Ajax (异步读入一个服务器端图片或者数据库 内容)+JSON数据格式。
  • 《HTTP: The Definitive Guide》 读完前4章你就明白你每天上网用浏览器的时候发生的事情了 (proxy, gateway, browsers)
  • 跳转
    • 302 <?php header("Location: 3.php"); ?>
    • 301 <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: 2.php"); ?>
    • u=urllib2.urlopen(url)后,u.url能得到服务端跳转后的地址 urllib2自己的特性 所谓的会跟进去
    • 浏览器跳转
      • <meta http-equiv="refresh" content="0; url=http://www.evilcos.me" /> htmlparse解析就行了
      • location.href="http:/" + "/evilcos.me"; 正则解析(弱) JavaScript引擎解析(强)

熟练 VIM

Git


step 2

翻墙

前端进阶

  • DOM

    • jQuery
      • 优秀的插件应该体验一遍,并做些尝试
      • 官方文档得过一遍
    • D3.js
    • ECharts
      • 来自百度
    • Google API
    • ZoomEye Map组件
      • ZoomEye团队自己基于开源的打造
    • AngularJS
      • Google出品的颠覆性前端框架
    • Bootstrap
      • 应该使用一遍

        c

  • 重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐 《计算机程序设计艺术》《算法导论》《编程珠玑》
  • 学习(麻省理工免费课程)计算机科学和编程导论
  • 学习(麻省理工免费课程)C语言内存管理
  • 学习Windows SDK编程(《Windows 程序设计》 ,《MFC程序设计》)
    • 写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。
    • 写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。
    • 学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。
    • 这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。
    • 不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形 界面的编程。

java

  • Java 的学习主要是看经典的Core Java 《Java 核心技术编程》《Java编程思想》(有两卷, 我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)
  • 学习JDK,学会查阅Java API Doc
  • 了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python 思考一下“跨平台”这种技术。
  • 学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
  • 建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个 PHP的小项目试着用JSP和Servlet实现一下。

关系型数据库

  • 你可以安装MSSQLServer或MySQL来学习数据库。
  • 学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……
  • 学习数据库的存过,触发器,视图,建索引,游标等。
  • 学习SQL语句,明白表连接的各种概念(参看《SQL Join的图示》)
  • 学习如何优化数据库查询(参看《MySQL的优化》)
  • 实践任务:
    • 设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文 章,评论最多的文章,最活跃用户。

开发工具

  • 学会使用SVN或Git来管理程序版本。
  • 学会使用JUnit来对Java进行单元测试。
  • 学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非 常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。
  • 推荐阅读《代码大全》`《重构》《代码整洁之道》`

web 安全

Unix/Linux

  • 《Unix编程艺术》`《Linux Shell脚本攻略》《Software Design 中文版》`
    • 用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)
    • 用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程 序。多进程多进程购票的程序。
    • 用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。
    • 学会使用gcc和gdb来编程和调试程序。
    • 学会使用makefile来编译程序。
    • IPC和Socket的东西可以放到高级中来实践。

      爬虫进阶

    • 代理池
      • 爬虫「稳定」需要
    • 网络请求
      • wget/curl
      • urllib2/httplib2/requests
      • idea scrapy
    • 验证码破解
      • pytesser

        调度

    • crontab是最原生的定时调度
    • 基于redis实现的分布式调度
    • 基于rpyc实现的分布式调度
    • celery/gearman等调度框架

      并发

    • 线程池
      • 进程内优美的并发方案
    • 协程
      • 进程内另一种优美的并发方案
      • gevent
    • 多进程
      • os.fork
      • multiprocessing

        数据结构

    • JSON
    • cPickle
    • protobuf

      数据存储及处理

    • 数据库
      • MySQL
      • MongoDB
      • Cassandra
      • Hadoop体系
      • Redis
      • Sqlite
      • bsddb
      • ElasticSearch
    • 大数据处理
      • Hive
      • Spark
    • ELK
      • ElasticSearch
      • Logstash
      • Kibana

        DevOps

    • SSH证书
    • Fabric
    • SaltStack
    • puppet
    • pssh/dsh
    • 运维进阶
    • pdb
    • logging
    • Sentry
    • strace/ltrace
    • lsof
    • 性能
    • 分词
    • 贝叶斯
    • 神经元
      遗传算法
    • 聚类/分类

持续集成

  • 自测试
  • nose
  • Jenkins

黑客与画家 浪潮之巅 重构 代码整洁之道 Rework中文版 高效程序员的45个习惯 黑客攻防技术宝典(Web实战篇) 白帽子讲Web安全 Web前端黑客技术揭秘 Web之困 SQL注入攻击与防御 自私的基因 失控

环境



页阅读量:  ・  站访问量:  ・  站访客数: