Tag Archive for 'mind3'

生如夏花般灿烂

最近一些项目的进度还是不太快,不过还好,思绪未停。

身体不是很好,造成时间上的不连续和精神的分散,加上一些别的事情,几个项目的进度都被延误了。包括mind3项目,家庭银行家等。

公司里始终有很多事情,接下来又要北京车展等,忙碌是正常的生活,得闲倒是奢侈。

喜欢的事情还是坚持,知识的分享是一件高兴的事情。

生命如此短暂,在漫漫时间长河之中。

有幸将兴趣变成了工作,而工作又带来了很多乐趣,生活如此善待于我,还有什么可以不知足。

要感谢所有周围的同事和朋友,我们可以一起让梦想变成现实。有时候路很艰难,有时候路又迢迢。

有时候,需要休息一下,身心放松,为了明日之相会。

相关内容

mind3到底是什么?

mind3到底是什么?它可以完成怎么样的应用?它和现在的网站开发方式有什么不同?好处在哪里?

mind3需要学习吗?mind3怎么部署?mind3的目标是什么?

这些问题总是需要一次次解释的,所以我准备和我的团队一起做一个演示,先来解释和回答一下。

我考虑用google的演讲功能,看看是否够用。(当然,我也会考虑用keynote,那样的话,很多朋友可能只好看转换后的视频了。 )

相关内容

mind3项目要解决什么问题

mind3项目到底要解决什么问题,我这样回答:

1 目前的网站设计流程,从需求到应用,过程环节过多,变化不直观,产品经理或者项目经理对于项目的诸多环节缺乏有力的掌控(本质上的)。项目的失效时间过长,而改变的成本又过高。

2 知识没有被合理的分享,很多人力资源被浪费了,都在做重复的事情,而很多重复的事情应该让电脑去帮助完成。个人和个人之间的知识不应该有等级和界限,每个人自然对于只是理解不同,而世界应该创造足够多的机会让每个人知道想知道的事情,这样可能可以产生智慧。

3 每个人应该可以将自己的信息(可以在互联网上表现的部分)都很容易的聚合在一起,并自由和自动的更新,不应该受到限制。我们从一些垂直的领域来说,应该给用户这样的应用,比如用户买了一辆车,那么关于这辆车所有的使用情况和信息应该能够被记录和呈现,这是水到渠成的事情。

要解决的问题不少,我们相信互联网的力量,也相信基于只是本源的架构,更相信拥有最大创造力的人。

相关内容

mind3基本框架设计

重要的一些做个备份,以免上次niproject挂掉造成影响。

mind3的基本框架设计如下:

1 底层平台。称之为c1,负责解释mind3。c1测试的时候是1台服务器,以后c1只是一个代号,它是一个数据处理能力极强的服务器群,用来完成本架构中主要的数据和相应处理。c1是下面说到的mind3背后的东西,用户不会看到c1,用户只需要使用mind3就可以了。

2 mind3。用来打包和解释应用层,mind3将用户定制的应用层的诸多元素通过c1来真正的实现。从界面定制、数据格式制订、业务逻辑制订到上传,都有mind3来完成,mind3的核心业务逻辑通过c1真正实现,mind3只是一个接口。可能的话,以后我们会开发基于mind3的自动生成器、测试工具等。

3 应用层。各类应用,在第一个里程碑中是micro-blog,一个微博客系统。这个micro-blog可以通过使用mind3提供的开发接口,简单的将应用完成。并且这些应用将在未来很好的支持其他基于mind3的应用。

为了称呼方便,和考虑以后实际操作中用户的使用,mind3只是一个和用户接触的接口,一个应用平台,而它和整个项目的名称一样。实际上后台的c1和前台的各类应用也是缺一不可的。

相关内容

mind3项目重新整理的要点

之前的研究资料有很大毁损, 倒也是好事, 我可以重新整理一下思路. niproject.com暂时不再使用了,启用标准的mind3.cn域名。

关于mind3项目的要点再次思考如下:

1 mind3的基础有两个: item和person. item是信息的载体, person能够通过一些机制来获得和影响item.
2 item之间是平等的, 不论承载什么信息. item的组织依靠程序, 我们称之为robot, robot通过规则rule来和item发生各类交互, rule本身也存储在item上.
3 item通过robot的组织, 根据person的要求, 和模板template一起组装成html页面, 提供给person. 也可以按照其他组装模式生成需要的数据, 比如xml格式, 取决于robot和相关的rule.
4 item具有被聚合aggregation的特性, 聚合将形成一个新的item.
5 聚合是信息重新构造的过程, 是伴随着学习study的, robot将根据person的要求开始第一次的聚合, 之后同样规则的聚合将是自动进行的.
6 item具有分布式的特性, 同样的信息可以分布在很多地方, 为了聚合的方便.
7 person可以对item进行影响, 包括评论, 肯定, 否定, 关注等各类, 被影响后的item会和原来的item分开储存, 以对应于person. item和person不一定是一一对应的, 可能是一多对应的.
8 item经常忙于被聚合和被影响, 以及被呈现, 因此效率优先, 同时为了在不同的地域传递, 所以item的原声形态将不是存储在大型的, 不太容易被移植的数据库中. 我们会利用yaml的格式和sqlite这样的独立文件来进行item的表达和存储。

暂时重新整理这里,慢慢再补充修订。

相关内容

人和信息的关系

这里看到, 很巧在mind3的理论框架中, 我始终强调只有item和person, 而item则是信息的载体, 所以和这位作者的想法有点不谋而合.

互联网中,有两个非常重要的元素:人(用户)和信息。所有的互联网产品都是围绕着这两个元素扩展成各式各样的应用。在我看来,这两个元素有以下几种组合方式:

1、人找信息
2、信息找人
3、人找人
4、信息找信息
5、人创造信息

人找信息是互联网最基本的应用,人们上互联网最大的目的就是获取信息。互联网从诞生到现在还一直是以这个应用为基础发展的。这种应用主要有新闻媒体门户、搜索引擎、电子商务等等。

信息找人是一种扩展的应用,这种应用为公司带来了利润。信息找人的应用主要有广告(普通广告、精准广告)、订阅等。

人找人主要应用为交友,现在的交友网站、SNS包括IM等等都是人找人的应用。人找人是跟人类现实生活最为接近的一种应用,这种模式将会在未来的几年有更深远的发展。

信息找信息的模式是人找信息的一种附属引用。比如搜索引擎将问题按照关键字或者相关度聚类。

人创造信息是web2.0的典型引用,主要由人来创造信息为其他用户服务,这种行为更多的是人自发的。这种应用典型的例子有百度知道、百科、Blog等。

我认为,单一一种模式并不足以使一个公司有很大的发展,诸如Facebook、yahoo、QQ、百度他们都是覆盖了两种甚至是五种的应用。

相关内容

SQlite介绍

应该发在ni那里的, 不知道为什么从昨天晚上到现在只要post就是service error, 所以先发在这里了.

我想, mind3计划还是需要数据库的支持, 否则Item中数据的处理效率将非常成问题, 而
我又非常不愿意使用类似于mysql这样的数据库, 因为部署和同步将是一个非常复杂的问
题. 幸好有开源世界中最近越来越火的sqlite, 下面这些资料有助于帮助我们了解一
些sqlite的概貌. (其实我前面写了更多的文字, 可惜dh的server不知道出了什么问题,
wp也没有自动保存, 越发想问自己到底有没有可能有真正健壮的应用). 介绍来源.

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品
中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它
能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比
如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的
数据库管理系统来讲,它的处理速度比他们都快。

SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括:

ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE

同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有
点象,但是事实上它们区别很大。比如SQLite支持跨平台,操作简单,能够使用很多语言直
接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你
想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最
新版本是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面获得源代码和文档。
同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业
人士。

现在我们开始简单的介绍,主要我是想讲清楚几个问题,一是如何安装使用,二是如何
跟PHP结合开发。

一、安装

1. Windows平台

下载windows下的文件,其实就是一个命令行程序,(下载地
址:http://www.sqlite.org/sqlite-3_2_2.zip),这个命令行程序用来包括生成数据库文
件、执行SQL查询、备份数据库等等功能。
下载后比如我们解压缩到 D:Downloadssqlitesqlite-3_2_2 这个目录下,那么我们进
入cmd,并且进入该目录:
cd D:Downloadssqlitesqlite-3_2_2
D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db
# 如果test.db不存在,那么就产生一个数据库文件,如果存在就直接使用该数据库文件,
相当于mysql中的use
SQLite version 3.2.2
Enter “.help” for instructions
sqlite>
# SQLite的提示符,如果想查看命令帮助输入 .help,在sqlite中所有系统命令都是 . 开
头的:
sqlite> .help
.databases List names and files of attached databases
.dump ?TABLE? … Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML

code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Print STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.tables ?PATTERN? List names of tables matching a LIKE pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM … Set column widths for “column” mode
sqlite># 我们创建一个数据库catlog
sqlite> create table catalog(
…> id integer primarykey,
…> pid integer,
…> name varchar(10) UNIQUE
…> );
sqlite>
# 如果表存在就会提示:
SQL error: table catalog already exists
# 我们创建索引信息
create index catalog_idx on catalog (id asc);
# 我们查看表的信息,看有多少个表
sqlite> .table
aa catalog
# 查看表的结构:
sqlite> .schema catalog
CREATE TABLE catalog(
id integer primary key,
pid integer,
name varchar(10) UNIQUE
);
CREATE INDEX catalog_idx on catalog(id asc);
# 给数据表插入一条记录
sqlite> insert into catalog (ppid,name) values (’001′,’heiyeluren’);
# 成功无任何提示,如果表达式错误提示错误信息:
SQL error: near “set”: syntax error
# 检索有多少条记录
sqlite> select count(*) from catalog;
1
# 检索搜索记录
sqlite> select * from catalog;
1|1|heiyeluren反正使用标准的SQL来操作就没有问题,不清楚可以去官方网站上查看帮助信息。另外还
要说明的是SQLite不支持修改表结构,如果要修改表结构,只有删除表重新再建立,所以建
立表的时候一定要考虑扩展性。估计以后这方面的功能会加强。

PHP 5开始不再默认支持Mysql,而是默认支持SQLite,可见它的影响力多么大,所以如果你
想做SQLite的PHP开发,建议你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版
本,直接支持SQLite扩展,这里我就不仔细讲如何安装PHP扩展,如果不清楚可以查看PHP相
关文档。
这里我主要是讲针对SQLite的开发。目前PHP的主流DB类都支持SQLite的驱动,包
括PEAR::DB类、ADOdb类都支持,所以使用DB来来做开发也是个好的选择。

(以下操作为了简便,都是再Windows xp平台进行的)

1. 使用PHP操作已经建立好的sqlite数据库

如果你有一个已经通过sqlite.exe建立好了的数据库和表结构,那么你就能够直接对它进
行操作。php中针对sqlite的处理函数比较多,你可以查看PHP手册获得详细信息。

我们使用sqlite_open()函数来打开一个sqlite数据库,它成功返回一个操作资源,失败返
回false,那么以后的所有操作都是在这个资源上进行的,执行一个sql查询使
用sqlite_query函数。

下面我假设你在当前PHP程序目录下有一个abc.db的sqlite数据库文件,我们对该文件进
行操作:

//打开sqlite数据库
$db = @sqlite_open(”abc.db”);
//异常处理
if (!$db) die(”Connection Sqlite failed.n”);
//添加一个叫做foo的数据库
@sqlite_query($db, “CREATE TABLE foo (bar varchar(10))”);
//插入一条记录
@sqlite_query($db, “INSERT INTO foo VALUES (’fnord’)”);
//检索所有记录
$result = @sqlite_query($db, ’select bar from foo’);
//打印获取的结果
print_r(sqlite_fetch_array($result));

?>

我们看到的输出结果是:

Array
(
[0] => fnord
[bar] => fnord
)

证明我们代码执行成功,没有输入请检查程序,或者你的数据库文件是否存在。

那么有了这个基本操作,你就能够考虑使用更复杂的操作和SQL来操作它,让它帮你管理信
息,你可以做一个留言本,或者做一个CMS系统,我想都是没有问题的。

2. 使用PHP建立数据库并且操作

如果你没有任何sqlite.exe之类的工具,那么你也能够通过php来创建一个sqlite数据
库,并且对它进行管理。
其实通过sqlite.exe程序建立的数据库,内容是空的,其实只有后来等创建表,添加数据以
后,数据库文件才有,那么我们是不是能够手工添加一个文件,比如一个空的 test.db 文
件,并且对它进行操作。这是完全可以,下面我们就使用PHP程序来完成创建一个数据库,
并且执行简单的建立数据表,插入数据和检索数据的功能。

首先我们来看代码:(代码比较长,但比较容易理解)

/**
* 文件:sqlite.php
* 功能:对sqlite数据库的处理
* 作者:heiyeluren
* 时间:2005-8-5
*/
define(”LN”, __LINE__);//行号
define(”FL”, __FILE__);//当前文件
define(”DEBUG”, 0);//调试开关

$db_name = “heiyeluren.db”;
//创建数据库文件,文件内容为空
if (!file_exists($db_name)) {
if (!($fp = fopen($db_name, “w+”))) {
exit(error_code(-1, LN));
}
fclose($fp);
}
//打开数据库文件
if (!($db = sqlite_open($db_name))) {
exit(error_code(-2, LN));
}
//产生数据表结构
if (!sqlite_query($db, “DROP TABLE test”)) {
exit(error_code(-3, LN));
}
if (!sqlite_query($db, “CREATE TABLE test (id integer primary key,pid
integer,name varchar(10) UNIQUE)”)) {
exit(error_code(-3, LN));
}
//插入一条数据
if (!sqlite_query($db, ” INSERT INTO test (name) VALUES (’heiyeluren’) “)) {
exit(error_code(-4, LN));
}
//把数据检索出来
if (!($result = sqlite_query($db, “SELECT * FROM test”))) {
exit(error_code(-5, LN));
}

//获取检索数据并显示
while ($array = sqlite_fetch_array($result)) {
echo “ID: “. $array[id] .”
Name: “. $array[name] ;
}

/* 错误信息代码函数 */
function error_code($code, $line_num, $debug=DEBUG)
{
if ($code<-6 || $code>-1) {
return false;
}
switch($code) {
case -1: $errmsg = “Create database file error.”;
break;
case -2: $errmsg = “Open sqlite database file failed.”;
break;
case -3: $errmsg = “Create table failed, table already exist.”;
break;
case -4: $errmsg = “Insert data failed.”;
break;
case -5: $errmsg = “Query database data failed.”;
break;
case -6: $errmsg = “Fetch data failed.”;
break;
case -7: $errmsg = “”;
break;
default: $errmsg = “Unknown error.”;
}

$m = “[ Error ]
File: “. basename(FL) .”
Line: “. LN
.”
Mesg: “. $errmsg .”";
if (!$debug) {
($m = $errmsg);
}
return $m;
}

?>

如果你操作无误的话,那么程序最后输出:

ID: 1
Name: heiyeluren

相关内容

Sina 开发团队的开源项目: Memcachedb 与 NCache

这里看到, 我觉得一家有责任的互联网公司有一些开源项目, 用来提高整体的应用能力, 这是应该的责任, sina作为国内新闻门户的第一位, 有这样的责任和实力. 让我们一起努力, 正好昨天在google code上host了mind3项目, 希望尽自己的一份心意.

一直以为新浪是国内几家门户网站中技术比较糙的一家(也可能是太低调了),这应该是我比较无知的偏见,无意冒犯。看到这位新浪技术人员介绍的开源软件项目: NCacheMemcachedb 。挺欣赏他们这种国内环境下比较少见的分享精神。为他们喝彩!

  • NCache = Nginx Cache
  • Memcachedb = Memcached + Berkeley DB

这两个软件,应该都是从实际应用需求上得来的,可以说是”设计以致用“,不是纯用于研究的,而设计思路很有些 “Mashup”。我没有实际使用经验,不知 Memcachedb 和 Tugela Cache 二者有何差别。我对 Memcachedb 这个项目倒是比较感兴趣的,把 Cache 和 DB 有效结合起来,消除 DB 单点 I/O 承受的应用压力…而且,实现方便且廉价…十分美好的前景。

期待能有更多类似的项目涌现出来。国内的 Web 2.0 站点软件设计人员也可以借鉴一下。

相关内容