admin的博客

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

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

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

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

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

人员在项目中的组织

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

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

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

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

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

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

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

Service模块的使用,drupal作为内容管理系统具有极大的适应性

drupal作为内容管理系统

service模块的使用,使得drupal可以作为一个纯粹的内容组织与管理的平台,而数据的使用,可以放在各种形式的终端里使用,这样就可以极大地扩展了应用的范围。无论是作web站点的数据,还是作为移动终端的数据,亦或是通过命令行获取里面的数据。

drupal只是作为内容组织的容器,主要是它己经很成熟,而且还有专业的社区和公司进行维护与更新。那么剩下的就可以只专注于形式的使用与应用的领域。

至于它的性能问题,现在不会很担心了,因为可以将它用作为数据的组织与管理,drupal的多站点特性,还有它代码跟数据库的完全分离,这可以使得它支撑很大数据的应用,最酷的是它甚至可以用分布式的形式来组织数据,这是我认为它这样设计最好的地方。这样的一个好处是,可以在数据库层面,支撑无限量大的数据,因为它们都是按照drupal的代码形式组织方式进行存储的。同时,在分布式里面,各个节点上数据内容是可以有千万种变化,以适应组建大系统,各个节点间是可以进行数据交互的。

这样就可根据应用的需求,用分布式组织的灵活性,来实现应用的架构。

php里面用代码生成代码

<?php
$xie = array(23,342,43,234,123,342);
$bao = array();
$codes = '';
$item = array();
foreach ($xie as $tian) {
$code =<<<code
\$item[$tian] = "jsto ftes $tian";
code;
$codes .= $code;
}
//echo $codes;
eval($codes);
print_r($item);

?>

现在这里面只是支持变量的功能,这对一般的编程是没有什么用。但对drupal类的应用就特别有用,因为drupal是把程序行为描述成数组的,依据数组的内容去解析的。因此用程序生成数组,就可以达到用程序生成程序的功用。

ubuntu13.04上成功编译并安装无线驱动8818eu, 及驱动的管理和github分布式的强大

先做环境介绍:

商品名称:迅捷(FAST)FW150US 超小型150M无线USB网卡
京东地址:http://item.jd.com/667570.html
芯片型号:rtl8188eu
设备型号:8179 (linux下面,用 lsusb 命令就可以查看设备号)
安装的操作系统:ubuntu13.04
无线USB网卡驱动地址:https://github.com/lwfinger/rtl8188eu
实现的步骤:

北京之行记录

终于从北京回来,睡在自己的床上的感觉好幸福哦。
极客公园2014创新大会,看起来好牛逼的样子,好多牛逼的人物都有参加,如果苹果公司的联合创始人沃兹,一手打造出个人电脑时代;小米的创始人雷军,百度的创始人李彥宏,金山的CEO, 总之都是些非常牛逼的人物。
极客公园能把这些牛逼的人物请过来,极客公园的CEO,也应该是个了不起的极客。唯一有点x憾的是没有见过中国年轻人的精神教父李开复。
听很是geek的洽金说极客公园是国有控股的,但办的活动是同类活动中最优秀的,有点出奇。有订阅极客公园的RSS,所以早就报名了。如果不是洽金说这个活动不错,我是应该不会去的了,再次感谢洽金^_^
只要用心发现,总会发现与收获很多。在飞机上的路上,又认识再位good man, X蛟,上海的土著,做银行类的产品,经理级的人物。他们那边一天就干我那边一周的活,还挺聊得来的,“欣欣相惜”啊,哈哈。最后留了联系方式。小宝,都有一个bao, 做珠宝类的销售,挺好交流的哥们,还跟他一起打车到朝阳区。
北京,气侯真的是很难适应。无论是从温度,还是空气,空气污染真的是非常严重。头晚睡时,空气中很敏感地闻到臭味,那睡难以入睡。第二天去geek part时,发现附近有工厂低空排放大量污染气体,难怪。

控制计算机的本质及针对应用进行程序设计的思考

其实,计算机的本质就是计算,当然不仅仅是传统的数值计算,而的计算更多是数值计算与非数值计算机的结合使用,融合在一起。编程,其基本的流程是针对现实的事物进行抽象,在计算机中用数据结构把他们描述出来,再用计算机的逻辑对按一定结构组织的数据进行计算,最实现最终求解的目的。其中,这里面有三点是最重要的:
1. 对现实的事物进行抽象;
2. 用内存中的数据结构对现实数据进行收集;
3. 写出相应的算法,对它们进行处理。

其中,
第一点,其实是个人修养与能力最为重要的一点,而且它是可以独立与任何语言的,而且针对各种语言,也出现了很多方法论,如uml建模;
第二点,数据结构里面最典型的也是最强大的是多维数组字典是现实问题的描述,我想几乎所有的现实问题都是可以通过这样的方式进行描述的吧;
第三点,表面是处理流程,现在一般典型的组织方式是函数,如果用递归的形式对结构数据进行处理,这样可以充分利用CPU的强大。而且,我想这也是一般训练的方向。

针对应用的场景,会有各种各样的语言,上面的理念,我相信是相通的。

sinatra的基本使用

安装:
1. 安装好ruby后, gem install sinatra 把它给装好
它像ROR那里,默认是使用webrick的,
建议把高性能的thin给装上, gem install thin
它里面有eventmachine,可以支持极高的并发。

2. 刷新看代码的效果,安装shotgun
gem install shotgun
不过,它默认的端口跟webrick是不一样的。
使用: shotgun myapp.eb

基本使用:
1. 非常简洁和高效的路由
get, post, put, delete实现为类方法
路由作为它们的每一个参数,有相应的方法找解析路由
它主要的作用是把URL请求转到相应的方法去

最后作为返回値的会被输出。

2. 模板也是非常的简洁
可以选择的模板是非常多的,也可以同时使用多种模板,只要加载进来就可以了。
默认:
erb :index
erb :"hello/world"

它会找到views下面的,index.erb, hello/world.erb

ruby开发环境安装(fedora)

1. 安装ruby语言的执行环境
* 源码安装
到官方下载码,装就好编译工具,编译安装就是了。gcc make

* 二进制包安装
yum 或 apt 或 exe

2. 用gem安装必须的工具
gem是ruby内置的软件包管理器,使用它可以安装和管理ruby的所有扩展

其中,扩展包有两种形式,一种是ruby的源代码,一种是二进制文件。
前面一种直接会从官网直接下载,后面那种会调用gcc来编译出相应的二进制扩展。因此必须拥有相应的编译工具,如gcc以及对应的头文件。 

因为官方的太慢了,可以用淘宝的镜像

$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***

思想快速记录的重要性

手头上带有笔和纸,随时可以记录头脑里出现的灵感。

用ruby,而不用c++都语言的原因是心理上,它们可以把个人的想法快速表达了来,这是非常重要的。

那样就可以随意的操作计算机做自己认为是很是有趣的事。

其实,编程的本质是思考,因此思想的表达是最重要的。但,思想需要太高成本去表达,会阻碍思想的快速进行。还有,一时的灵感不能表达出来,很快就会忘记的了。这些,对于创新都是很重要的。

还有交互性的编程技巧,可以极大地减少尝试的风险,可以有不断试错的机会。主要是,可以快速地实践思维里面的东西,那样思想提高很快的。编程的本质是按计算机的方式进行人脑思维的表达,但人脑的思维跟计算机的思维不是重合的,人脑里面的思维要按计算机的方式去进行表达。但人是按正常的思维去表达的,肯定不会直接按计算机的思维去思考,那样会有极大的不便和局限性。

页面