博客

设计时,以计算适应需求的变化

很是喜欢php里面的多维数组,可以用多维数组模拟现实的一切,从而可以进行计算。

数组是就是哈希表,哈希算法是很强大的东西,是对现实大量数据可以计算的关键算法,它的效率是很高的。

不仅仅是一个数组,一个数组里面的值可以作为另一个数组里面的键。元与值,可以根据应用,去描述与计算一切。

数据库里面的in操作也是哈希算法的,它的效率很高,而且效能也是表容的加和,而不是乘积。这是设计表时,考虑的一个方向

数据库in没法取得in表里面的字段,但是可以通过全部查出来作为数组,并通过关联的主键map到一块,这样处理的效能是很高的,而且对内容是很是具有可扩展性。

这是数组存储的多个维度,以适扩展的需要,完全可以用content type去扩展表,至于优化性能查询是很简单的事,在数据库层面存储多个维度,可以在php的计算层面很简单地缩减为一个维度。这是解决性能与扩展性矛盾的一个关键。

在drupal查询时,内容类型子表以node中的vid为主键。上百万的数据可以在秒内的时间完成。所以动态计算以适应需求完全是行得通的。

git与svn结合使用,遇到冲突怎么办

1. 新建一个工作分支,在工作分支上干活

master分支,主要用于代码的提交和更新。
如果在master上工作,就不会更新代码了,这是不能接受的。

2.在工作分支上做好功能开发或bug修补
git checkout -b [branch name]

3. 代码改好后,合并到master分支
git merge [branch name]

4.修订提交纪录里面的log message
git rebase -i HEAD~2
将最后两个提交合成一个提交

假设要合并最后的2个提交,可以按如下命令进行:

1). git rebase –i HEAD~2
2). 将第二个pick修改为squash或者s,然后输入":wq”退出。
3). 这时git会自动第二个提交合并到第一个中去。并提示输入新的message(就是我们常说的comments),如下:
4). 编辑输入新的message,然后输入":wq"退出
5). 此时本地的(HEAD中)最后两次提交已经被合并为一个。git log可以查看。

计算机位的操作

位运算组合起来,可以对存储在计算机中的各位进行自由操作。
计算机中处理的各种数据都是以二进制的位来表示的。文本是由字符所对应编码的数字串组成,各数字串最后还是还原成二进制的比特。图像数据是各个点的颜色按一定形式排列,最后也还是二进制的比特串。程序所处理的对象,甚至计算机所执行的程序本身,说到底都是二进制的比特串。
也就是说,操作二进制位就等于操作计算机的数据。

基本的位处理操作有 4 种。
1. 取出特定位的状态。
2. 特定位置位(设为 1)。
3. 特定位清零(设为 0)。
4. 特定位反转。

1 特定位的状态
要从一连串二进制位中取出某一特定位 a 的状态当然,这个功能可以用按位与(&)来实现。按位与的两方之中,只要有一方是 0,结果就必然是 0;一方是 1,另一方的结果就原封不动返回。所以准备一个数 B,只需将想取出的那一位置设为 1,其余位置设为 0,那么取 A 与 B 的按位与,就可以只取出 A 数中 a 位的状态。
A &= (1<<3)

drupal service的基本使用| 一个php写的客户端

  1. 下载,并启用 drush dl services drush en services

  2. 新建一个端点 关键是端点名,端点协议,还有端点的drupal内部路径(绝对路径作为客户端的url)

  3. 选择开放的资源

  4. 客户端注意,先连接,再发送用户名和密码过支登陆,取得登陆后的cookie后,再拿这个cookie去请求token, 取得的token是跟当前的认证会话是绑定在一起的。

  5. 带上cooke and token, 就可以进行写操作了。

github上地址

代码可视化工具+项目管理工具+项目文档工具

代码管理及可视化工具: git, gitlab or gitweb or fisheye or github or bitbucket
目的:
* 代码持续发布 --自动化布署
* 代码审查和评注  --质量审核与分工合作
* 通过代码交流 --备份代码,增强交流

项目管理工具: redmine or jira or basecamp
工作流中各个小任务的生命周期,放在网站上,以实现任务的分配/管理/交流
通过任务流的流程来实现项目的开发与维护。
* 谁都可以创建ticket, 只有项目经理可以approve ticket;
* ticket有各种状态,还有委派人和报告人,
* 可以根据工作状态,改变ticket的委派人和报告人,
* 对工作时间进行登记,
* 实时的消息通知
最关键的几种状态: backup list -> todo list -> process list -> test list -> ready for live -> deploy to live
还有根据项目的短中长计划,可以分成好几个面板,如spring, kanban。

ubuntu12 从32升级到64位

gvim:
软件中心安装,把vim73和配置文件vimrc and gvimrc给拷过去。
-------------------------------------------------------
guake:
调整下界面
-------------------------------------------------------
输入法:
language surport -> options -> add new language
加入中文,同时键盘输入方式为ibus, 这时会从网上加载中文的翻译。重启机器就可以加载中文了。
这时,就可以增加五笔的输入方式了。
-------------------------------------------------------
lnmp

内省是成长的必经之路, 而ruby是门自省的语言 | 面向对象

在ruby对象是可以审视自身里面的对象/类的名字 变量和方法,而且ruby里面的一切都是对象,就是说,无论多么强大的程序都是可以通过内省来修习掌握的。

因为它里面所有的东西都是对象,它就意味着可以对功能程序进行内省,可以把程序生到精简。

懂的内省的语言想必是门强悍的语言。
面向对象,有一个非常大的好处是,可以大体框架给写出来,可以写好上面应用的逻辑,然后,再慢慢地把功能给实现。就是画一个东西,先把骨架给画出来,最后才把功能给实现了。面向对象是大程序组织的必经之路。

面向对象的形式来组织程序也是一件非常酷的事,起初因为计算的本质,我不太喜欢面向对象,而且有时会把程序给弄得很复杂,而且把程序给变慢了,还有基本的面向过程也可以获足,还有什么面向对象是对现实事物的模拟,这不是我接受面向对象的理由,而我接受的理由是它那分布式的思想。这里面,就像是细胞的分裂,还有细胞的分化,组织上的合作与分工,可以造就很强大的个体。因为,它那分布式的思想,可以根据现实的需求,分化出各种各样的个体,这才是面向对象的真正意义。它在架构的组织上很有力,为大程序的组织提供可能,其实,这只是它那分布式思想的副作用。

人员在项目中的组织

投资人,作为股东,是项目金钱上的出资人,但是他们不懂技术;

项目要有实施的人,因为项目的需要,分工会很细,每个方面都有很深专业技术的人;

这时,会需要在他们中间设一层的技术管理人,

* 可以对底层工作进行分配,协调,质量审核,以及工作合并;
* 审核新人,对工作质量及新人进行评估,以作为投资人的参考;
* 技术管理人直接投资人负责。

其实,可以打个比喻,最下面层是工作的硬件,最上面一层是使用的人,中间层就是驱动和操作系统。

这只是一个套式,可以在工作的各个领域和方面应用这个套式,以达到生产的组织。

这里面也适应管理权与所有权的分离。

页面