《财富自由之路》笔记

## 1.你知道自己未来的样子吗?

如果你笃信自己的未来是那样一条曲线,那么在成本线被突破之前那段长长的时间里,你能赚到的钱实际上全部是“小钱”,小到“不值得节省”的地步,就算要省,也省不出多少。

## 2.你知道那条曲线究竟是什么吗?
只要是能积累的东西,大都会产生复利效应。在智力上、知识上、经验上,复利效应对每个人来说都是存在的。仔细观察一下每个人的成长过程就能明白,从出生开始,所有人都不断习得各种技能,不断积累,只不过很多人在20岁以后就停止学习,所以没有机会在自己的未来体会到复利效益。早晚有一天终生成长者会跨过那个拐点(也就是里程碑),然后扬长而去,这就是复利效益的威力。

## 3.究竟什么是财富自由?
所谓“个人财富自由”,是指某个人再也不用为了满足生活必需而出售自己的时间了。
财富自由根本不是终点站,那只是一座里程碑,在那之后还有很长的路要走。

## 4.起步时最重要的是什么?
快速入门不仅绝对有可能,而且绝对必要。
在学习任何一个学科的知识时,都有一个很重要的概念:最少必要知识。当需要获得某项技能的时候,一定要想办法在最短的时间里弄清楚都有哪些最少必要知识,然后迅速掌握它们。如果掌握了这些知识,你就已经入门了,接下来只剩所谓“执行”,一个字——用。

学习能力也好,执行力也罢,核心只有一个:在刚开始的时候,平静地接受自己的笨拙。接受自己的笨拙,理解自己的笨拙,放慢速度尝试,观察哪里可以改进,反复练习,观察哪里可以进一步改进,进一步反复练习….这是学习一切技能的必需过程,关键在于:

  • 尽快开始这个过程
  • 尽快度过这个过程

## 5.你认真考虑过自己的商业模式吗?
所谓个人商业模式,就是一个人出售自己时间的方式。
仔细看看个人的商业模式的基本分类:

  • 第一种:一份时间只出售一次(零工或者上班)
  • 第二种:同一份时间出售很多次(作者)
  • 第三种:购买他人的时间再卖出去(创业和投资)

笼统的看,对个体而言,所谓进步,就是逐步学会并使用各种个人商业模式,然后想办法优化属于自己的商业模式。

## 6.如何优化第一种个人商业模式?

IT工作之感悟篇

本篇仅以一名IT程序员的视角来阐述我的感悟,充满了比较理性的色彩。

总结一句话

IT工作,其实是不断的学习能力,通过反复的练习,在工作当中输出你的成果。

何为「输入」和「输出」。打一个比方,或许会更加容易理解。

作为一名销售,「输入」是学习产品的相关知识、收集相关的资料。「输出」是收集客户名单、分析客户信息、寻找目标客户对象、开始进行客户的沟通…省略N字…最终销售产品、维护客户。

通过这样一个例子,进一步理解「输入」与「输出」之间的关系,两者缺一不可。

回到工作中来讲,「输入」可以理解为,你对这份工作所需要学习的技能。「输出」可以理解为,你实际的工作付出。

理解了这些基本概念以后,我们对于IT工作的理解,实际上就是找到这种类型的工作的「输入」与「输出」了。

相比其他行业,IT工作的学习,也就是我们提到的输入,随着IT技术的变化飞快而变得输入也需要保持更新,否则你可能无法很好的输出,也就是无法更高效的开展你的工作,你的工作技能得到了退化。

至于,什么是IT工作的输出,想必不用做出过多的解释了。如果没有输出,等于没有给企业创造产出,作为一名IT程序员的产出,就是你的代码量,而且是有效的高质量的代码量。

说了,这么多,有人会问那么,我们应该如何做,才能更加有效了。

正确的方法如下,指定任务:每天学习并记录成文档,每周发布博客,每月完成一个项目示例,将代码进行开源、分享。比如,常见的视频学习,要坚持整理成文档,而不是一看而过,定期以项目的方式,来完成一个阶段的学习。IT工作其实和其他类型的工作一样,也需要反复训练,甚至需要付出更多的心血。

作者:这个大叔不太冷 (有很多能力,正在退化,比如写作!)

2017年11月25日

编程之路:2个月,可以入门!

平凡之路
平凡之路

经过2个月的学习,完成了1个PHP电子商城的网站。源代码待项目审核后放出!

先记录一些项目过程当中主要的问题:
1、项目节奏(项目启动,项目实施,需求变更,代码完善),好的节奏非常重要,有助于提高开发效率!通过1个项目的练习,逐步发现了知识储备的不完善!毕竟1个人完成1个项目,要求的知识非常全面,这一点需要在项目总结的时候,列出一些知识要点,巩固知识要点。

2、代码冗余。面向过程的开发思维主要是函数的结构化编程,WEB开发的套路熟悉以后,可以多读读好的源码,平时多练习过几个项目,应该是可以逐步的改善代码冗余的问题。

3、代码注释。以往可能会认为代码的注释有时候是一种多余(这原来是一种错觉),但是在项目开发中,由于项目的持续时间比较长,模块之间有不少的关联,大型的项目还涉及到团队成员的合作。好的代码注释,对于阅读源码的人,更加方便理解(有注释可以秒懂,没有注释可能需要前后去分析当时写这段代码的目的是什么),注释的地方主要包含:功能模块,函数说明,补充功能的代码用途。

4、项目经验。首先思路很重要,如果你的思路很清晰,写起来会如鱼多水,可以更加轻松的规划好整个项目,这一点可能需要持久的培养和阅读项目。每一个项目就是很好的锻炼机会,平时就可以多整理好优秀的代码,可以放在下一个项目中。这一点是一个程序的基本功,不是每次等到项目开始的时候,才整理资料。

通过这个WEB开发项目,培养了程序员的思维模式,也开启了心智。下一步如何走,看你自己结合实践吧!后续再来分享。

关于2个月入门,你可以认为一门编程语言,你发一点时间,就可以上手!这就有很多可能性,专注一门,熟练掌握多个技术,只要你努力点,勤奋点!

朴树有首歌曲《平凡之路》,正如”我曾经失落失望失掉所有方向,直到看见平凡才是唯一的答案”这句歌词的意境一样。开启你的编程之路,只要2个月!就这么写着、写着……一直写着,就很美好!

忽然觉得我朝着“会敲代码的伪文艺范”的目标而去了。

从绘画角度理解:编程思维之结构化编程

大家好,这篇文章主要面向没有学习过编程或者学习编程不久的人,用几个比较形象的例子来介绍有关编程思维方面的内容。

例子1:
如果你要计算:两个数的和,你需要的是两个数分别的值。比如:a=1, b=100。那么他们的和就是a+b。
如果用编程语句来表达就是:
function sum($a, $b){
return $a+$b;
}
这就是一个简单的函数,函数的作用是计算2个数的和。在你代码的任何地方,你都可以使用这个函数,来计算2个值的和。
调用的方法就是:sum($a, $b)。你需要的就是定义$a = 1; $b=100(计算机智能的地方就在于,你可以给他任何数值,它就可以返回给你他们的和)。然后函数就会自动返回这2个数的和。

上面的例子非常简单,可能你会觉得这个太简单了,我不用计算机也可以计算出来!但是假如是计算一个圆的面积呢?面积公式是(π*r*r),这个就可以提现计算机的作用了。你只需要传入一个圆的半径大小给一个求面积的函数,它就可以给你计算出这个圆的面积。

这个例子可能非常的简单,但是足以说明,计算机非常擅长计算,人们只需要给他一些数值,它就可以在极短的时间内返回计算的结果给你,哪怕你的计算过程很复杂,都是如此,而且不会出错。

例子2:
回到有关编程的话题。我们引入一个实际编程工作当中的一个案例。实现一个验证码,用于注册或者登陆功能,当用户输入正确的验证码以后,才可以成功的登录,目的是防止机器注册。

我们把验证码进行分解,实际上它就没有我们看上去那么的神奇,也是有规律的。
01.只有背景色的验证码;
02.加入了干扰字符的验证码;
03.加入了干扰线的验证码;
验证码的实现过程
这里简单的解释一下验证码的实现步骤:
第一步:准备好一张画布;
第二步:画背景色(你需要准备背景的颜色,而且每次的颜色可以不一样);
第三步:写上随机的英文字符或中文字符,数字等(你需要准备这些随机的字符,使用一个类似随机生成字符的函数即可)
第四步:你可以选择加入一些干扰的点,或者干扰的随机字符(你需要准备的是干扰的点的随机坐标,干扰的点的颜色、或者是字符)
第五步:你可以选择制造一些干扰的线(你需要准备干扰线的数量,每条干扰线的起始和终点坐标)

最后一步:生成一张验证码图片,并显示在浏览器上。

第一步的代码:
$image = imagecreatetruecolor($width, $height);
参数:画布宽度;高度
返回结果:画布资源

第二步的代码:
imagefill($image, $x, $y, $color);
参数:第一步创建的画布资源;填充的坐标X,坐标Y,颜色;
操作:给画布填充了背景色

第三步:在画布上写上随机字符
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
参数说明:
$image:画布
$size:字体大小
$angle:字符旋转的角度
$x:字符坐标X
$y:字符坐标Y
$color:画笔颜色
$fontfile:字符的字体
$text:字符(使用另外的函数随机生成1个字符)

一般如果你需要生成4个字符的验证码,就是上面的步骤循环4步,每次的X坐标往右移动1个字符距离。Y坐标保持不变。每次的角度可以随机生成,看看每个字符是不是角度不一样了。每次画笔的颜色也可以不同,是不是每个字符的颜色不一样了。所以生成的字符效果就如同下图所示:

verfiy3

第四步:画点,随机取坐标
imagesetpixel($image, $x, $y, $color)
参数说明:
$image: 画布
$x:点的坐标X
$y: 点的坐标y
$color: 点的颜色

第五步:画干扰线
imageline($image, $x1, $y1, $x2, $y2, $color)
参数说明:
$image: 画布
$x1, $y1: 线的起点坐标X,Y
$x2, $y2: 线的终点坐标X,Y
$color: 线的颜色
效果如图:

随机线条


最后一步:
imagejpeg($image);
生成图像

通过验证码的生成的讲解,总结如下:
1、每一个步骤,都由一个函数执行,按照一定的步骤的发送给计算机一些执行指令。就好像绘画里面,我们得先画轮廓,再依次画人物的五官(眼睛,鼻子,耳朵,嘴巴……),再描绘一些细节,最后上色。绘画的过程
2、每一个函数的执行,都需要提供一些参数。就好像你要求2个数的总和,首先你得提供两个数。程序员所需要做的就是在每一个步骤,使用正确的函数,并且传递正确的参数。比如我需要画一条线,那么你就找到画线的方法(程序里面叫函数)imageline(),然后提供正确的参数:参数一般都是数值或者字符串。比如画线你需要准备:线的2端的坐标。就如:imageline($image, $x1, $y1, $x2, $y2, $color)。$color代表颜色。如果你需要画30条线,那么就重复执行这个画线的步骤(在计算机里,这叫做循环,计算机最擅长的事情就是判断真假、和循环执行)。
3、每一个步骤所使用的函数,都是编程语言已经提供好的方法。就如同计算2个数值的和一样,为我们准备好了!像这样的函数,PHP编程语言为我们准备了数千个!常用的有200多个,你想开发一般的网站都可以够用了!

那么有人问了,是否我们每次要实现验证码都需要这么复杂呢?当然不是,程序员其实也是很懒的,既然我们已经知道怎么实现验证码了,那么我们就可以把这个验证码的代码,封装起来形成1个更大的函数。那么我们要实现验证码的时候,就像求2个数的和一样简单了,方法实际上是一样的。

比如实现的代码语法就是:function_name();
(语法说明:function_name就是我们给生成验证码这个功能取得一个名字,()括号里面就是填入参数的地方,不同的参数之间要使用’,’分隔开)

实现方式如下:
生成验证码(‘4个字符’,’颜色随机’,’背景色随机’,’有干扰线条’);
当你在程序当中调用这个方法,提供一些参数,它就可以生成一个验证码。

所以你发现:实现验证码是一个由更多的系统函数,按照一定的逻辑过程组合在了一起,来生成了一个更复杂的功能的过程

我们可以想象一下,程序员的工作就是按照一定的业务逻辑,正确的使用函数的方式(提供这个函数需要的各个参数。),或者把一些函数封装成一个功能更大的函数,而这些函数是可以重复使用提升效率(等同于你不需要每次从0开始,你甚至可以借用,前人已经开发好的函数,或者自己之前写好的函数)来一步步的达到自己想要实现的功能(就好像绘画的过程,先画轮廓,再画五官,最后描绘细节)。

以上,就是有关编程思维的一些解释。限于时间和经验有限,可能描述的还不是非常便于理解,在计算机的专业术语上,函数的这种调用过程有一个专业的名字解释,叫做结构化编程

最后我想说的就是,正确的编程思维,会帮助你更好的理解程序代码,有助于写出更加清晰的代码,和理解别人写的代码,从而学会编程。反之,就如同绘画不是从轮廓、五官、细节,而是至上而下,最终可能画出一副很奇怪的画,毕竟我们不是打印机可以自上而下的完成绘制过程。

打印机打印过程

编程是一个什么鬼,新手学习编程的心得(末尾有彩蛋)

这篇文章是讲述一下我对编程目前的理解,也是作为一个新手刚学习编程不久的一些不太成熟的想法。(备注:如果您没有学习编程语言的经历,理解起来可能有一些不适应!)

编程语言拿到一门编程语言,首先要从概念上去理解这一门编程语言是属于什么类型。

比 如是编译型还是解释型。像解释型的就一般使用文本代码编辑器,就可以开始编程了,因为编写出来的都是文本文件,放在服务器运行环境,解释器可以解析成计算 机可以理解的二进制代码,用户调用时才返回或者输出结果。至于编译型,我们可以这么理解,就是更加接近计算机而不是人可以理解的接近底层的代码了。

所 以像大部分比较容易掌握和使用的代码就都是解释型编程语言,比如PHP, PYTHON。那么为什么还有编译型语言呢?像C++,Java,因为他们不需要解释器解释就可以编译成二进制的机器代码执行,所以效率要高。比如开发游 戏,工具,对机器的执行效率要求往往很高,就都使用编译型语言啊!

我目前所学习的就是比较容易掌握的解释型编程语言:PHP。

一 般的学习过程就是:基本语法(变量及变量的定义,常量的定义),基本数据类型(整型、浮点数、布尔值、字符串),流程控制语句(假设判断,循环判断,特殊 控制语句),函数(函数的定义与调用,常用的系统函数,系统函数的参数类型,一些函数的特性:匿名函数、回调函数、闭包),复杂的数据类型(数组:可以存 储多个值得数据类型),对象(一种更加牛逼的数据类型,包含了更多函数,变量,常量)。接着就是一些常见的字符串处理函数(包括正则表达式),文件系统处 理,图像系统函数(可生成一些简单的图像,如验证码)。

总结编程就是:数据类型 + 流程控制 + 系统函数。

数据类型和流程控制一般比较容易掌握,熟悉基本的语法后,加以一定的实例代码的简单练习即可!

系统函数的熟悉需要一段比较长的过程,现在的方法是:先背诵一遍,再默写,基本知道有哪些常见的系统函数,然后通过写字符串函数处理、验证码输出、文件系统管理,就可以大致的熟练一些常用的系统函数的使用,然后可以灵活的使用这些系统函数。

最近做的最多的还是多熟悉几遍这些系统函数的简单应用吧! 培养使用编程开发的思维,以及熟悉这些系统函数。后续再去熟悉更多的系统函数也就不会有一种恐惧感。其实可能没有那么恐怖,无非就是一些系统函数的使用。 即使很复杂的系统函数的调用,也不过是参数个数比较多,而参数一般往往无非就那么常见的几种:随机数、变量、数组、一些函数作为参数等等;技术上是很好理解的。

现在,还没有开始学习,面向对象的编程思维,从面向过程的思维转变到面向对象的一些心得,就等下回分享吧!

广州
2016-5-22

520