《梦断代码》笔记一

《梦断代码》讲的的OSAF开发PIM软件Chandler的故事,可以当做小说来读的,摘录一些书中有趣的说法以及自己的感想。

  1. “Hello World”程序给程序员以乐观的想法:既然能叫它说话,就能让它做任何事。但事实可能是令人沮丧的。
  2. 计算机从0开始计数,用户从1开始计数,所以程序员花了无数精力于此。
  3. 人类文明运行于软件之上,但软件何其不靠谱,写过代码的人应该深有体会。
  4. 人月神话:往已延误的项目中补充人力,只会使其继续延误。因此,最理想的开发团队是单枪匹马。如果代码经过协调不好的一串人手,结果确实难看。
  5. 开源软件给了软件开发模式以新的思考方向,但远未解决软件开发的痼疾。
  6. 开源中的Free应理解为”自由“,而且这个自由也有其固有要求,如GPL的传染性,但国内不少公司似乎只看到了免费,大肆盗用开源代码封装商业软件。
  7. 软件是为人服务的,但通常也会要求人去适应软件的特性(或者其傻叉的地方)。
  8. 让人适应软件还是让软件适应人?这是个问题。软件能否提升人类的智慧?
  9. 很多项目开始之初都雄心勃勃,自以为与众不同,但最后都滑入深渊。
  10. 软件的制造有时会给人以严重的挫败感。悲观一点的人看目前的软件开发技术是没有希望的。个人以为好的软件如好的小说一样是奇迹。
  11. 软件的灵活性只存在于思想中,每一行代码都是毫无灵活性的。所有的想法都要寄生于结构,语言。高级语言相比人类的语言,其实太过低级。
  12. 软件领域没有摩尔定律。
  13. 变量类型这种小事,可以在代码的国度引发宗教战争般的冲突。
  14. ”雾件“,根本不知道自己在写什么东西。如果需求来自领导,会很纠结。
  15. 复用?造轮子还是买轮子,这也是个问题。买的轮子通常满足90%的需求,但剩下的10%会令人抓狂。
  16. 像搭积木一样搭房子,是程序员的乌托邦。软件开发依然在手工作坊时代,甚至难以看到彻底工业化的希望。个人觉得理解为艺术可能心安理得一些……
  17. 软件会有自己组织信息的方式,也因此割裂事物之间的联系。比如数字化的文件和非数字化的文件分类上没有多大差别。
  18. 快速、便宜、优质,最多三选其二。
  19. 程序开发是常常是不断妥协的过程,人的肆意想法与机器的机械无情之间的妥协。
  20. 程序员如何沟通,是技术问题,管理问题,哲学问题。写代码太多可能会用机器的方式思考……
发表在 学无止境 | 标签为 , | 留下评论

Web开发学习笔记(5):php数组

PHP中的数组对比C/C++的数组做了很大的增强,支持动态数组大小。

创建数组

数字数组使用数字作为索引,关联数组则使用字符串。数组的元素可是是字符串、数字乃至其他数组。

可以使用数组标识符[]赋值,不指定索引值时,PHP会自动指定。如

$weekdays[]=’Monday’;$weekdays[]=’Tuesday’;

使用array创建数字数组,如

$weekdays[]=array(‘Monday’,'Tuesday’);

使用array,使用index=>value格式创建关联数组,如

$shapes=array(‘Orange’=>’Sphere’,'Phonebook’=>’Rectangle’);

测试变量是否是数组:is_array。

使用foreach循环访问数组,如

foreach($shapes as $key=>$value)print”The $key is a $ value”;

对已有数组的赋值会自动添加到数组末尾,如$weekdays[]=’Wednesday’;

count或sizeof计算数组的元素个数。

使用sort排序,数字按升序,字符串按字母序。

多维数组

由于数组的元素可以是数组,所以多维数组只不过是数组的嵌套,如

$object=array(‘Orange’=>array(‘Shape’=>’Sphere’,'Color’='Orange’));

使用list访问多维数组,如

foreach($object as $obj_key=>$obj){

echo”$obj_key:<br>”

while(list($key,$value)=each($obj)) print”The $key is a $ value”;

}

数组与普通变量

使用extract函数作用关联数组index=>value,会产生一系列普通变量,变量名为index,变量值为value。

extract(array,EXTR_PREFIX_ALL,”the prefix”)可指定型如the prefix的前缀。并可作用于数字数组。生成类似the prefix_0的变量。

可使用compact将一组变量包装为数组。

发表在 学无止境 | 标签为 , | 留下评论

Web开发学习笔记(4):php函数

PHP的函数与C/C++基本是一样的,从PHP5开始也有面向对象的特性,不过据说语言也因此弄得很繁杂。

函数的调用与创建

PHP内建了很多函数,其实目前高级语言的会考虑内建函数库,让使用者不必重复造一些简单的部件。比如phpinfo()返回PHP的配置信息。

函数名不分大小写,秉承php的弱类型特点,函数有没有返回值以及返回值类型完全是自由的,但返回值如C语言只能有一个,多返回值要考虑数组等方式了。

参数

参数传递通常有两种,一是值传递,一是引用传递。

PHP也是支持变量引用的,但没有引入强大而混乱的指针机制。

PHP支持默认参数。

文件包含

PHP中的文件包含有四种,include,include_once, require, require_one。

require方式会确保所包含文件的存在,否则停止程序,其余同include。带once的方式可以处理重复包含。

function_exists可以检查某函数是否存在,如function_exists(“test”)。

面向对象特性

使用class创建类。new创建实例。var声明变量。

构造函数可使用与类同名的方法,或__construct创建。

可用this->访问类中的变量。

extends运算符进行继承,parent运算符调用父类方法。

可使用 ::直接调用类的方法(即不用创建实例的静态调用)。

演示

暂无。

发表在 学无止境 | 标签为 , | 留下评论

“逗霸滴”手机铃声

“逗霸”是湖南方言,含义丰富,作为形容词大致可以理解为“幽默”、“有趣”、“搞笑”等,作为动词大致可以理解为“调侃”、“恶搞”、“调戏”等。

“滴”=“的”。

“逗霸客”用来形容有“逗霸”精神的人,比如古代故事中的东方朔、电视剧形象中的纪晓岚、现代开赛车的韩寒大致可当此殊荣。

最近热传的视频“逗霸滴”,即湖南经视某晚会上用湖南方言模仿”Nobody”的节目。

无聊之余截取了做手机铃声,MP3格式下载。doubadi

另外,欢迎到豆瓣小组“我们都是逗霸客!”来玩。

发表在 时光机 | 标签为 , | 留下评论

Web开发学习笔记(3):php基础

PHP语言是用C开发的,所以语法规则基本上与C是一致的,有C背景的人学起来是很容易的。

1 输出

PHP代码放在<?php>和<?>标记之间,可以嵌入到html代码中,Apache服务器检测到后解释执行,最常用的输出方式有echoprint,输出会成为html代码的一部分最终发送到客户端。

echo是命令,不能返回值。echo后面可以跟很多个参数,之间用逗号隔开。

print是函数,可以返回一个值,只能有一个参数。

2 变量

PHP中变量要用$开头,其余规则同C语言。

PHP不是强类型语言,无需指定变量类型,但如果自动处理不凑效时,可以强制类型转换

PHP变量有作用范围,global全局变量,static静态变量。(意义同C语言)

PHP提供有关脚本环境信息的超全局变量,如$_SERVER(“PHP_SELF”)代表当前的文件名。

3 字符串

字符串可用单引号或双引号,但插入变量时必须用双引号。

用双引号时可以输出转义字符,定义基本同C语言,用单引号不行。

字符串比较函数strcmp(string1,string2),strcasecmp(string1,string2),分别为不区分大小写和区分大小写。

字符串可用圆点(.)进行合并。

4 常量

常量定义型如define(“PI”,3.14)。常量不以$开头。

constant(name)返回常量的值,get_defined_constants返回常量列表。

预定义常量类似超全局变量,如_FILE_表示被执行的PHP文件的名称。

5 表达式与运算符

基本同C语言,注意弱类型的特点。

类型转换运算符:(int),(double),(string),(array),(object)。

@运算符抑制错误信息;===全等,!==非全等,用于数组。

6 条件语句与循环语句

基本同C语言。

演示

判断从1900年到2100年的每一年是否是闰年。(源码仅包括PHP嵌入部分)。效果演示点此

<?php
	for ($year=1900;$year<=2100;$year++)
	{
		if(($year%4==0) AND ($year%100!=0) OR($year%400==0))
			echo $year."年是闰年。<br />";
		else
			echo $year."年不是闰年。<br />";
	}
?>
发表在 学无止境 | 标签为 , | 留下评论

视频:大自然中的斐波那契数列

视频中的第一种生物是鹦鹉螺?,具有斐波那契数列生成的螺线。

第二种生物是向日葵,它的花盘中的种子的发散角是137.5°,恰好是圆周的黄金分割。

第三种生物是蜻蜓,没太看明白,似乎是五边形和六边形的镶嵌,就像足球?

斐波那契数列的后项与前项比是趋向于黄金分割率的。

{\lim}\limits_{n \to \infty}\frac{F(n+1)}{F(n)}=\frac{\sqrt{5}+1}{2}

发表在 学无止境 | 标签为 | 留下评论

我的boox60-100计划

去年入手了一部onyx boox60电子书,竟然没有怎么折腾它,不过到算是物尽其用,看了几本书。

最近上一路书香论坛逛了逛,才发现几个月来出了不少事,由于涉及缺陷机器容易出现无限重启,这个我也遇到过几次,最后是电耗尽为止,公司召回了产品负责更换,我一点都不知道。不过现在刷过新的固件后好像问题不大,就继续使用吧。

说说使用的基本感受:远胜于手机和电脑的阅读效果,但比书还是要差不少的,如果要不断回顾型的阅读(如看论文),基本不太行,所以主要拿来看小说之类的了。

根据初略测算,这玩意儿的花费要拿它看100本书才能保本,所以在此作出计划,但不设时限,看什么时候能达成。

下书如山倒,读书如抽丝。现在读完的有四本:《偷书贼》,《三体》,《1984》,《三体II》。

为了方便统计,做了一个豆单。深阅读的乐趣不是看看小文章可以比拟的,希望有更多的空闲用来早日达成本计划,以慰“老人头”在天之灵。

发表在 时光机 | 标签为 | 留下评论

Google,请你回来吧!

2010年1月14日我对Google说:“请你走开吧!让我相信一次,妓女也是有职业操守的!”

今天在实验室上Google,发现自动跳转到google hk了,我才后知后觉。

终于走了。

一个感慨的终于。

这个世界还有不见钱眼开的事情存在,这样简单的事实却是一个商业公司教我们的,那些自以为读懂世界的以为别人在“撒娇”的人情何以堪。

忍一时不一定风平浪静,退一步或许会海阔天空。

一个抛弃所有优秀服务但创意难以生长的互联网,一个连上了海底光缆又终于藕断丝连的互联网。

我们会一起自力更生,闭门造车。

然后,Google,希望你不要倒闭。

在你能回来之前。

Google,请你回来吧!让我相信一次,自己不是缺乏判断力而不配使用搜索服务的人。

发表在 通假时代 | 标签为 | 留下评论

修改Flickr Manager插件使其兼容WordPress新版本

Flickr Manager是一款非常强大的插件,将Flickr相册完美的整合到WordPress中来,但是原开发者似乎已不再维护该插件,版本停留在2.3,对于高版本的WordPress都存在兼容性问题(如WordPress2.8+)。

这位朋友找到了兼容性问题的根源。

去掉插件安装文件js目录下三个php文件源码中的所有’@‘即可。经我测试可行。

效果演示:

last snow

发表在 未分类 | 标签为 | 2 条评论

阿基米德的杠杆原理求抛物线形面积

近读《阿基米德羊皮书》,发现真是牛得一塌糊涂,书中写道了阿基米德用杠杆原理求抛物线形的面积。

如上图所示,求△ACZ的内接抛物线形ABC的面积。

证明中用到的条件是对于任一割线MX有  MX:OX=AC:AX

这个前提似乎不是显然的,显然要用到CZ作为切线的性质,我想不出不用切线方程如何得到这个前提,阿基米德的方法我是复现不了了,书中也没有说明。

即使接受了这个前提,阿基米德的方法依然是出奇的。

延长CK至T,使得KT=CK,平移OX至SH,T为SH中点,则MX:SH=MX:OX=AC:AC=KC:KN=TK:KN,

线段MX和SH关于点K满足杠杆原理。注意到MX,SH的重心分别为T,N,

由于MX的任意性,故△ACZ内部每根AZ的平行线与它在抛物线形ABC内部的对应线段(平移至T)关于点K满足杠杆原理,

即△ACZ的面积与抛物线形ABC的面积关于K满足杠杆原理,

△ACZ的重心在KC的1/3处,故抛物线形的重心T到△ACZ的重心的距离之比为3:1,

故抛物线形ABC的面积为△ACZ的面积的1/3,或△ABC面积的4/3。

发表在 学无止境 | 标签为 | 留下评论

浅谈群体智慧

《自然辩证法》作业照录        2010年1月4日 继续阅读

发表在 学无止境 | 标签为 | 留下评论

win7下工商银行U盾的使用

一句话,请使用管理员权限运行ie8。

发表在 学无止境 | 标签为 , | 留下评论

win7的多普达刷机小结

最近修理完dopod S1,狂刷了几次机,小结一下。

1,win7下数据线连接手机,一般会自动下载Windows Mobile设备中心和驱动,这是刷机必不可少的,即保持手机和电脑的连接。个人经验,如果连接时有时无,建议先将手机恢复出厂设置再刷机。

2,刷机需要一个刷机工具包和待刷的ROM,建议先到相关论坛多多学习并获取工具。如52dopod刷机网。个人推荐一个傻瓜刷机包,只要会按回车就好(之前还是看看包里的说明文档的好O(∩_∩)O~)。!下载地址!

3,刷机之前记得备份,推荐91手机助手,比微软自家的工具强多了。

http://www.shuaji.net/
发表在 学无止境 | 标签为 , , | 留下评论

Josephus问题c++代码

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想遵从,Josephus要 他的朋友先假装遵从,他将朋友与自己安排在第16个与第35个位置,于是逃过了这场死亡游戏。这个游戏产生的一般性问题只能采用递推的方法解决,只有在特殊情况下才有好的显式表示。以下的代码算法用到了该文献中的公式。 继续阅读

发表在 学无止境 | 标签为 , | 留下评论

在IXWebHositing主机上安装Mimetex实现在wordpress中使用latex输入数学公式

如果你的主机支持cgi,可以考虑自己安装Mimetex服务以实现latex功能,本文以IXWebHositing为例,简要说明步骤。

Mimetex的安装与使用

http://www.forkosh.com/mimetex.html获取程序,有源码和各种操作系统的编译好的版本,IXWebHositing主机不支持SSH,只能用编译好的版本,不过这也很省事。把压缩包中的mimetex.cgi文件上传到根目录的cgi-bin下,修改文件权限为可执行(如755),然后你便可以测试一下http://yourdomain/cgi-bin/mimetex.cgi?x^2+y^2, 看是否生成公式。

现在在编辑器中使用如下的代码即可。
<img src="../cgi-bin/mimetex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt"
alt="" border=0 align=middle>

Latex for WordPess插件的安装

上述调用方式太不方便,阅微堂开发了一个插件,可以使用$符号做嵌入式输出,而且也可以灵活调用服务器(适合自己安装不了的人)。插件地址!

注意阅读英文安装说明,第一是要修改latex.php中的$server变量,第二是要在wp-content下新建cache文件夹(我开始没看说明折腾了好久)。

效果演示

$$\alpha+\beta\geq\gamma$$        \alpha+\beta\geq\gamma

 
发表在 学无止境 | 标签为 , | 2 条评论