推荐一些网站软件书籍

好的网站

学习编程网站

http://www.acmerblog.com/   ACM之家  各大OJ题解&数据结构&算法&IT企业面试题
http://www.gnuplot.info/  绘图软件  Gnuplot是一个命令行的交互式绘图工具(command-driven interactive function plotting program)。
http://courses.csail.mit.edu/6.851/    mit 数据结构的教程
http://lua-users.org/  lua 学习网站

资讯类网站

http://www.itworld.com/    看英文it 网站

一些个人blog

http://mindhacks.cn/     刘未鹏
http://showme.codes/  翟志军blog

其他一些网站

一些好用的软件

查看源代码的软件   source insight
目录查看软件    Q-dir
思维导图软件     XMind   半开源
网站文件下载软件    Teleport Ultra
音乐软件   网易云音乐
数据库管理   sqlyog
linux 远程窗口管理软件  winscp
linux  远程登录命令行 软件   putty
云笔记   有道云笔记
广告过滤   adsafe
云盘      百度云(有待观察)
vpn   greenVpn(已经停服了)
windows 进程查看软件      ProcessExplorer
dia  一个要的绘图软件(uml  流程图),开源的
sublime  文本编辑器
sciTE    lua编辑器
gtd todolist 高效todo
KODExplorer 是一个公开源码的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的体验。

好看的书籍

思想精神类

当下的力量 艾克哈特•托勒 (Eckhart Tolle) (作者), 张德芬 (译者) 堪称心灵读物经典 认清自己寻找到真我
新世界:灵性的觉醒 艾克哈特•托勒 (Eckhart Tolle) (作者), 张德芬 (译者) 当下力量的姊妹篇
拆掉思维里的墙 古典 换个角度思考,或许你的人生会有有不同
慢慢来,一切都来得及 meiya  急不一定能成功

工作生活类

软技能:代码之外的生存指南 约翰·Z.森梅兹 (John Z.Sonmez) 认识一下编程之外的真技能
OFF学:会玩才会成功 大前研一 工作时努力工作,休息时充分享受生活

it技术类

c/c++

c语言程序设计 克尼汉 C语言入门必读
C++程序设计语言 本贾尼;斯特劳斯特鲁普 c++之父倾心之作
C++ Primer 斯坦利·李普曼 (Stanley B. Lippman) 作者是大牛,听说不错,不过这本我没看过
C++编程思想 埃克尔 (Bruce Eckel)  读完这两部没时间看primer了哈哈
C专家编程Expert C Programming Deep C Secrets  Peter Van Der Linden 确实不错,c语言进阶必读

java/android

Android 4高级编程 相对现在比较老了
JAVA核心技术

设计类

传世经典书丛:UNIX编程艺术
编程珠玑(续)
设计模式:可复用面向对象软件的基础

网络

TCP/IP详解卷 三卷 W.Richard Stevens  网络编程也就此一位神一样的存在
UNIX网络编程 两卷(卷三没来及写)  Richard Stevens 传世之作

其他类

人类简史:从动物到上帝 尤瓦尔·赫拉利 人类历史的新认知
会持续更新此文

十步学习法(二)

接着上篇文章十步学习法(一)我们来讲述十步学习法的剩下七到十步的内容。接下来四个步骤会在你的学习计划所定义的各个模块中循环往复。步骤七到十的目标是通过“学习–实践–掌握–教授”(LDLT)的方式真正领会知识。你从掌握恰到好处可以开始的基础知识开始,然后通过操作来学习,同时也通过自我探索收集问题,之后,你掌握了足够多的有用的知识。最后,你能将自己学到的教给他人,以此来弥补自己在学习过程中的不足,同时通过深入思考巩固知识。

第七步:开始学习,浅尝辄止

学习过程切忌犯的两种错误,一是在知之不多的情况下就盲目开始,行动太快。二是在行动之前准备太多,行动太晚。你要在这二者之间取得平衡。就是你掌握的知识足以让你开始学习,但又不会多到让你无力探索,这样学习效果最佳。快速学习一定的基础知识立刻开始实际操作。好像你在玩一个拼装玩具,拿到东西后,我们先看一遍说明,然后就会动手拼装了,但是用不了多久你还得重新仔细的阅读说明。

第八步:动手操作,边玩边学

在这一步,重要的就是要动手去实践去操作,学习编程语言更是要写代码。然后编译运行,修改调试。在这个过程中,你的大脑会自然的产生各种问题,也会遇到各种问题:它是如何工作的?是如何运行的?如果我这么做会发生什么?我将如何解决这个问题?等等。这个写问题将引导你走向正在重要的方向。当回过头寻找问题的答案时,不只是这些问题等到解答,而且你记得的东西比你学习的东西要多得多,因为你所学到的都是对你很重要的 东西。下面就是写个小项目来测试这一步的效果。把暂时还没答案的问题记录下来,你在下一步中会有机会找出这些问题的答案。

第九步:全面掌握,学以致用

这一步的目标就是让你找回好奇心驱动的学习,在第八步中,你通过动手操作发现了一些尚未解决的问题,现在是时候来回答这些问题了,在这一步中,你要利用先前收集到的所有资料,进行深入学习。仔细查找相关问题的内容,阅读文字、观看视频、与他人交流都是必要的手段。这个能让你沉浸在学习资料中,尽可能的汲取知识。不要害怕回头再去操作,付出更多,因为这不仅能让你找到问题的答案,也能让你学习的新的东西,给自己足够多的时间去深入理解自己的主题。不是说广度是深度的衍生物嘛。不过要记住,你依然没有必要把所有收集到的资料去不仔细看一遍。你只需要关注当前的所学相关的内容。

第十步:乐为人师,融会贯通

大多数人都不敢为人师,我曾经也是。当你在思考自己知道的东西是否值得教给别人的时候,很容易陷入自我怀疑之中,但是如果你想深入的掌握一门学问。相对这门学问做到融会贯通,那么你必须要做到“好为人师”。除此之外别无他法。

在这一步中,你要走出自己的舒适区,将自己所学到的知识教给别人。要想确定你确实掌握了某些知识,这是唯一的办法;同时,在你将自己所学介绍给他人是,这也是查漏补缺的好方法,在这一过程中,你要切实剖析并理解自己所学的知识,将其内化到自己的思想;同时,你也要用能够让他人理解的方式精心组织这些信息。你可以有多种方式将自己所学教给他人,你可以写博客,这是大多数人的选择,也可以制作视频。还可以与自己的好友探讨,重点在于你要花时间将自己学到的东西从大脑中提取出来,让别人理解明白。

最后的思考

学会自我教育需要奉献精神和辛勤的工作,但是你也能从中收获无比丰厚的回报,“十步学习法”并不是一个神奇的公式,能够让你瞬间变得聪明伶俐,但这种方法可以将学习过程更为结构化,而不是漫无目标的一头扎进浩淼的知识海洋。

如果此方法中的有些步骤对你不起作用,或者你觉得某些形式玩去没有必要,完全可以弃之不理。这些步骤并不重要,这是学习过程的背后的理念才是真正重要的。重点是你要开发出一套适合自己的自学体系,一套你可以持续不断的加以运用而获得丰硕的成果的方法体系。

十步学习法(一)

概述

程概述序这行,每天都有新的语言新的技术框架,我们怎样在这种快速迭代的的行业中保持不落后,能跟得上时代的步伐,我想只有一条道,那就是学习,那么有一个好的学习方法就是必须的了,大多数人民学习语言或者框架都是一本砖头厚的书从封面都封底,这样效率极其低下,不适合当前时代快速节奏,这里推荐一种“十步学习法”(这个方法是来自John Z. Sonmez 写《软技能(soft skills)》),是一种快速学习方法,这不是唯一的快速学习方法也不是一种魔法系统,只是通过”聚焦学习范围,让你关注重点内容“来学习的一种快速学习方法,是自我探索和主动教学的亲历过程,让真正的重要内容深入自己的大脑。

十步学习的步骤:

  1. 了解全局
  2. 确定范围
  3. 定义目标
  4. 寻找资源
  5. 创建学习计划
  6. 筛选资源
  7. 开始学习,浅尝辄止
  8. 动手操作,边学边玩
  9. 全面掌握,学以致用
  10. 乐为人师,融会贯通

对于“十步学习法”的前六个步骤,你需要集中精力完成足够多的前期调研,确保自己明确知道要学习那些内容,以及如何确认自己已经达成目标。你还将学到如何挑选组好的资源来帮助自己实现目标,定制学习计划。前六个步骤只需要针对你想学的每个主题做一次,七到十步则要针对在地五步所制定的学习计划中的每个模块循环往复,尽管一到六步只需要做一次,但他们却是最重要的步骤,因为他们将对你的未来的成败七决定性作用。在这六个步骤中。你要为自己实际的学习主题做好一切准备。

第一步:了解全局

在这一步,你要做的就是了解自己将要学习的主题的全局。这个主题在宏观上是什么样?你能从中学到足够丰富的这是以了解自己所不知道的吗?以及自己所不知道的有多少?假设你想学习python语言,你需要知道的python的起源,发展,以及将来前景和一些主要内容,你可能会在网上搜索与这个主题相关的内容浏览一下博客文章,记住我们在这一步的目的不是要掌握改主题,只是对这一主题的相关内容有一个全局性的了解。

第二步:确定范围

明确范围是个十分必要的事情,不然主题太大,会让自己很狼狈。我们要将大的主题分解为小而聚焦的主题。比如,将学习python拆分成基础语法、文件操作、网络通讯、gui、成熟框架,然后可以对这些主题继续拆分成更小更细的主题。当然明确学习范围的时候要考虑到时间因素。

第三步:定义目标

这一步的目标是形成一份简明清晰的陈述。勾勒出你学习后的成功图景,要确保其中包含具体的成功标准,从而能让你用来评估自己是否已经达成学习目标。好的成功标准应该是具体的,无二义性的。不要对自己想要完成的任务进行含糊不清的描述。相反,要列出某一特定的结果,明确能知道知己完成与否的事情。比如学习python:我要写出10个小的程序没有语法问题(什么输出helloworld,列表操作,文件读写…),我要写出一个多线程的网络服务器(具体有些什么功能)

第四步:寻找资源

尝试收集多种多样的资源以帮助你学习,而不只是读一本关于这一主题的书。不必局限于书籍。如今互联网广泛的应用。个种类的内容随处可见。通常可以在亚马逊开始看看能找到多少相关书籍。然后谷歌搜索,看看能不能找到相关的视频、博客、播客等的

信息的一下来源:

  • 图书
  • 博客文章
  • 在线视频
  • 专家或者对你所想要学习内容已经熟知的人
  • 播客
  • 源代码
  • 示例项目
  • 在线文档

第五步:创建学习计划

打造自己的学习计划,一个好的方法就是观察别人是如何加你感兴趣的主题的。可以翻看在上一步找来的图书的目录,如果几位不同的作者都把内容分解为相同的模块和顺序,那我就会遵循这样的方法制定我的学习计划。但这并不意味着只要复制一本书的目录就可以了,有的书的内容超出你的需求,还有的书结构很有问题。要综合考虑你收集来的资料来组织这些内容从而定制出符合你的学习计划。

第六步:筛选资源

现在,你知道自己要学什么以及什么顺序学了,那么是时候决定要使用哪些资源来完成学习任务了。在这个一步,可以把全部收集来的资源浏览一遍,找出哪些内容能够覆盖你的学习计划,哪些品质最高的资源

一旦完成了这一步,你就可以准备前进到学习计划中的第一个模块。在你实现自己的目标之前,你还需要为每个模块重复第七步到第十步。

我们将在下一篇《十步学习法(二)》来讲述剩下的七到十步的内容。

一个好的开发模式(svn)

项目没上线之前,想怎么搞就怎么搞,一旦上线了就要慎重了,一不小心就出差子了,我们需要定义一个良好的开发模式。版本控制系统是必须的,就拿Git来说,它很好的支持了多分支代码版本。如下图就是一款经典的分支管理规范: tu
分支的定义
最稳定的代码放在 master 分支上(相当于 SVN 的 trunk 分支),我们不要直接在 master 分支上提交代码,只能在该分支上进行代码合并操作,例如将其它分支的代码合并到 master 分支上。 我们日常开发中的代码需要从 master 分支拉一条 develop 分支出来,该分支所有人都能访问,但一般情况下,我们也不会直接在该分支上提交代码,代码同样是从其它分支合并到 develop 分支上去。 当我们需要开发某个特性时,需要从 develop 分支拉出一条 feature 分支,例如 feature-1 与 feature-2,在这些分支上并行地开发具体特性。 当特性开发完毕后,我们决定需要发布某个版本了,此时需要从 develop 分支上拉出一条 release 分支,例如 release-1.0.0,并将需要发布的特性从相关 feature 分支一同合并到 release 分支上,随后将针对 release 分支部署测试环境,测试工程师在该分支上做功能测试,开发工程师在该分支上修改 bug。待测试工程师无法找到任何 bug 时,我们可将该 release 分支部署到预发环境,再次验证以后,均无任何 bug,此时可将 release 分支部署到生产环境。待上线完成后,将 release 分支上的代码同时合并到 develop 分支与 master 分支,并在 master 分支上打一个 tag,例如 v1.0.0。
bug修复
当生产环境发现 bug 时,我们需要从对应的 tag 上(例如 v1.0.0)拉出一条 hotfix 分支(例如 hotfix-1.0.1),并在该分支上做 bug 修复。待 bug 完全修复后,需将 hotfix 分支上的代码同时合并到 develop 分支与 master 分支。 对于版本号我们也有要求,格式为:x.y.z,其中,x 用于有重大重构时才会升级,y 用于有新的特性发布时才会升级,z 用于修改了某个 bug 后才会升级。
一点小经验给大家分享,之前踩过不少的坑,希望有助于大家