2007/07
25
很快的看完了XUL的
Main Tutorial,个人感觉,XUL让我使用我熟悉的脚本语言,如PHP和Javascript,来构建应用程序成为可能,从整个互联网的角度将,XUL可以用开发基于浏览器的网络操作系统的应用程序。
但是看完了XUL,感觉这个工程很庞大。整个XUL虽然是XML的一个应用,但他包括的东西,太多了。XML(Html,XUL),DTD,Javascript(DOM),CSS。这一切,不应该是一个人来解决的,尤其是这几种东西的语法和思维方式都完全不同的。虽然他们几个都是互成系统,但是,要完全分开的难度很大,分工是个问题。
不解,XUL应该怎样去获得较大的开发和应用。
虽然,相信他的前途。
Defined tags for this entry:
xul
Posted by rollenc
Last modified on 2007-07-27 21:52
2007/07
22
chrome包有三种文件类型:
Content (内容)- Windows and scripts
一般包含有文件packagename.xul,packagename.js,一些packages也包含了一个contents.rdf,用来定义chrome如何使用contents文件;
另外可以定义一些子目录,定义一些附加的组件。
Skin - Style sheets, images and other theme specific files
包含有packagename.css.和一些在界面上需要的图片文件等
Locale - Locale specific files
语言文件。All the text that is displayed within a window is stored separately. This way, a user can have a set for their own language.
包含文件langs/packages.dtd, langs/packages.properties
来源:
XUL StructureDefined tags for this entry:
xul
Posted by rollenc
Last modified on 2007-07-22 21:09
2007/07
22
Defined tags for this entry:
xml
Posted by rollenc
Last modified on 2007-07-22 21:22
2007/07
21
搜狐做了“词库门”之后,张朝阳也屡出“精彩语录”。前段时间搜狐制造出
搜狐3.0的概念,搜狐3.0就3.0吧,我不是搜狐的用户,也不关我什么太大的事。不过,
这一次张朝阳说的,就不单单是搜狐3.0了,而是说搜狐3.0是WEB3.0的样板了。作为活动在WEB中一个技术人员来讲,搜狐在这个句子中说的3.0,就不是我所能够接受的了。
如果说,web2.0的概念纯粹是一个技术概念,包括xml,ajax等技术问题的一个概念炒作。那么,3.0是什么?恐怕,目前还没有人能讲清楚,我也不希望,再次听到,web3.0的概念只不过是一堆的技术名词的组合。虽然,我也只能从技术的层面去猜想:
web3.0是web和pc的接合,比如xul,使得浏览器成为功能强大的操作系统成为可能;比如google gears,可以使你的“操作系统”在任何地方都可以使用,其数据是相同的,而且,可以不受网络的影响。
所以,根据我的理解来讲,搜狐3.0和WEB3.0是搭不上边儿的。所以,WEB3.0绝对不是所谓的搜狐3.0,搜狐3.0更加不会是WEB3.0的样板。
搜狐,还不理解什么是3.0。
还有很可笑的,就是张朝阳说的,搜狐不能被抄袭。
笑死了,在中国,没有不能被抄袭的网站。
搜狐3.0的上线,也是以搜狐的BLOG上线为宣称的,
作为技术人员,我就来
抄袭一下,看看搜狐的blog,是多么经不住复制!
Posted by rollenc
Last modified on 2007-07-30 10:07
2007/07
21
读大学时,就一直很厌烦论文,不管是试验报告,实习论文,毕业论文等,都感觉很无聊。抄抄试验方法,按照推理写个试验数据。当初的毕业论文,也是在一堆的数据中,去掉偏差很大的数据,留下趋势比较好的数据,然后对数据进行回归分析,如果分析偏差超过预期,则再删掉一些偏差数据,直到数据偏差结果可以接受为止。而且,论文中也可以直接写到:数据全部来源于试验结果。
这样的筛选方法,可以在色子中得出色子每一色都出6的结果。因为,我不会告诉你,我抛弃了我认为不精确的5/6的数据。
唉,这一切我原以为全部过去了,但前两天去图书馆借了本《软件项目管理》,回家一看,原来,自己真的不能看论文了。
对待论文上的数据和公式,看起来太累了,也很难去想像,在项目初期如何去估算他的代码行数,再根据一个不知道怎么来的代码工作量计算公司,计算出一个不知道可以代表什么意思的结果。
有意义么?
刚进入公司,也在想,怎么去学习,接触项目管理,也被PM训话说太多理论了。不过,在看到这么些论文之后,才发现,自己更喜欢一些实际的东西。比如,如果开发时遇到技术难关,如何去安排时间攻克;在开发中如果碰到不能按时交付,该使用什么样的方式去解决;等等。
老感觉,技巧,要大于理论。
Posted by rollenc
Last modified on 2007-07-22 00:32
2007/07
18
Drupal通过C风格的字符串输出格式实现了对sql语句的安全过滤。
使用方法:
db_query("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type);//正确做法
//这不等于以下语句,使用sprintf并不能避免mysql注入。
db_query(sprintf("SELECT n.nid FROM {node} n WHERE n.type = '%s'", $type)); //不正确
drupal db_query核心代码如下:
/**
* Indicates the place holders that should be replaced in _db_query_callback().
*/
define('DB_QUERY_REGEXP', '/(%d|%s|%%|%f|%b)/');
/**
* Runs a basic query in the active database.
*
* User-supplied arguments to the query should be passed in as separate
* parameters so that they can be properly escaped to avoid SQL injection
* attacks.
*
* @param $query
* A string containing an SQL query.
* @param ...
* A variable number of arguments which are substituted into the query
* using printf() syntax. Instead of a variable number of query arguments,
* you may also pass a single array containing the query arguments.
* Valid %-modifiers are: %s, %d, %f, %b (binary data, do not enclose
* in '') and %%.
*
* NOTE: using this syntax will cast NULL and FALSE values to decimal 0,
* and TRUE values to decimal 1.
*
* @return
* A database query result resource, or FALSE if the query was not
* executed correctly.
*/
function db_query($query) {
$args = func_get_args();
array_shift($args);
$query = db_prefix_tables($query);
if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
$args = $args[0];
}
_db_query_callback($args, TRUE);
$query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
return _db_query($query);
}
/**
* Helper function for db_query().
*/
function _db_query_callback($match, $init = FALSE) {
static $args = NULL;
if ($init) {
$args = $match;
return;
}
switch ($match[1]) {
case '%d': // We must use type casting to int to convert FALSE/NULL/(TRUE?)
return (int) array_shift($args); // We don't need db_escape_string as numbers are db-safe
case '%s':
return db_escape_string(array_shift($args));
case '%%':
return '%';
case '%f':
return (float) array_shift($args);
case '%b': // binary data
return db_encode_blob(array_shift($args));
}
}
参考:
http://drupal.org/node/101496
Posted by rollenc
Last modified on 2007-07-18 17:50
2007/07
12
function testComparison() {
$this->assertTrue(array() == false); // Pass
$this->assertFalse(array() == 0); //Fail
$this->assertFalse(array() == 1); //Fail
$this->assertTrue(array() == null); //True
}
根据
Comparison with Various Types, 在:
bool or null anything Convert to bool, FALSE < TRUE
(bool) null == false, (bool) array() == false;
=> null == array(); false == array();
array anything array is always greater
=> array() > any number;
并不知道php为什么这么设置,明显违反了数学法则嘛。
0 == false;
array() == false;
但
0 == array();
不成立
Posted by rollenc
Last modified on 2007-07-12 09:53
2007/07
11
Defined tags for this entry:
firefox
Posted by rollenc
Last modified on 2007-07-12 00:01
2007/07
11
DW服务器又Down了半个多小时,Down了我好几个网站。
郁闷,
现在赶快备份所有文件和数据库,小心后患。
差3个月就要续费了,不要让我失望才好!
Defined tags for this entry:
blog
Posted by rollenc
Not modified
2007/07
9
×如果你能真正制好一枚别针,应该比你制造出粗陋的蒸汽机赚到的钱更多
×每个人都拥有超出自己想像十倍以上的力量
×不推脱、不敷衍、尽全力
×超越平庸,选择完美
×永远都需要感谢
×人们之所以苛求老板,是因为对老板有太高的期望
×你所做的努力并不完全是为了老板,归根到底你是为自己
×我之所以换工作,完全是因为现在的公司和老板无法再给我带来更多的教益了
×将大学教育仅仅当成获得工作的一种途径,这是一种低级、浅薄的职业观和教育观
×正确的选择能造就你,而错误的选择则可能毁掉你
×祝福那些找到自己心爱工作的人,他们已无须祈求得到别人的幸福了
──《你属于哪种人》
Posted by rollenc
Last modified on 2007-07-10 13:26
2007/07
3
最近身体一直不舒服,不常咳,但偶尔咳的那几下让人很害怕。可能是咳的太久了,肺部有点感染,需要去医院转转了。
今天请了一天假,早上睡到了10点半。起床后开始写文章,上次斗胆答应了samon,给PHPChina写稿,最近时间上累得不可开交,也快把这事情搁一边了。5号要完稿,趁今天在家,写写。不过就怕赶出来的稿对不起全国的PHPer。
准备下午去医院,还不知道,是什么结果。特别讨厌去医院,感觉医院比屠宰场还狠,被乱宰一通还得连连点头。
唉,隔行如隔山,被宰没商量。
Posted by rollenc
Last modified on 2007-07-08 23:45
2007/07
2
一个下午,BLOG被灌了200来条垃圾评论。S9Y的第一步也过滤滤掉了一半多。没办法,紧急关闭了一下评论。
晚上回到家里,把那些垃圾网址一个一个挑出来,滤掉。
然后又打开了评论,好像没什么事情了。
不过,最近还是有可能会把评论紧急关闭的。
郁闷。
Defined tags for this entry:
blog
Posted by rollenc
Last modified on 2007-07-06 13:19