Rails 命令大全

1、创建一个Rails应用程序
$ rails app_name
可选项:
-d, database=xxx 指定安装一个数据库(mysql oracle postgresql sqlite2 sqlite3 ), 默认情况下是数据库
-r, ruby-path= 指定Ruby的安装路径,如果没有指定,scripts使用env去找Ruby
-f, freeze (冻结)freezes Rails在vendor/rails目录

2、API Documentation
$ gem_server
启动一个WEBrick服务器。这时候你可以通过Http://localhost:8808/ 打开浏览器去查看rails API文档

3、Rake
rake db:fixtures:load
# 载入fixtures到当前环境的数据库
# 载入指定的fixtures使用FIXTURES=x,y
rake db:migrate
# 迁移数据库通过在db/migrate目录下的脚本.可以指定版本号通过VERSION=x
rake db:schema:dump
# 创建一个db/schema.rb文件,通过AR能过够支持任何数据库去使用 继续阅读

PHP168 程序遭受注册机入侵

昨天开始我使用的php168程序开始遭受注册机不停注册新用户,一天时间注册了大约300个用户,每隔几分钟一个,每个注册用户的邮箱和IP都不一样。

by 淮南都市网

想利用过滤IP或者邮箱的方法根本不行,现在的注册机可是相当的聪明了!

作为php168的用户,对于这样的问题实在是没办法接受的,见本文的链接便知道我对此有多么痛恨了。无奈,只能到官网寻求帮助。这才发现很多朋友都遇到了跟我一样的问题,官方开发人员给出的答复是修改 reg.php 的文件名。

这样的解决办法是完全无效的,因为根本就不是通过打开网页注册的,网站的流量统计中根本就没有这些来源不明的IP。这么看来,应该是通过sql注入的了。

开启注册会员审核也不是好办法,注册机依然会继续工作。望官方早日找到症状,对症下药吧。目前最好的解决办法,暂时关闭会员注册。

 

修正 PHP168 分类信息 ajax 评论列表头像显示bug

使用PHP168有一段时间了,发现的问题真不少。这不,又一个,分类信息ajax评论列表中用户头像显示不正确。反复查找源代码,总算是弄清楚了PHP168的评论系统的实现,其中就包括用户头像的显示。

打开 fenlei/inc/job/comment_ajax.php ,174行找到如下代码

PHP代码复制内容到剪贴板
  1. $query=$db->query(“SELECT * FROM `{$_pre}comments` WHERE id=$id $SQL ORDER BY cid DESC LIMIT $min,$rows”);

修改为

PHP代码复制内容到剪贴板
  1. $query=$db->query(“SELECT A.*,B.icon,A.icon AS img FROM `{$_pre}comments` A LEFT JOIN {$pre}memberdata B ON A.uid=B.uid WHERE A.id=$id and A.yz=1 ORDER BY $orderSQL A.cid DESC LIMIT $min,$rows”);

参考文件do/comment_ajax.php

粘一个修正后的链接:http://www.i0554.com/fenlei/bencandy.php?city_id=1&fid=25&id=56

PHP168 的 RSS 优化

RSS目前还只能算是小众应用,随着QQ邮箱、QZone阅读空间的推出,相信RSS订阅会被更多人接受并使用。在Blog程序中对RSS的依赖要大于CMS程序,RSS订阅数量也作为blogger们衡量自己blog好坏的一个标准,CMS程序一般对此没有过多的追求。

在PHP168中,开启了全站静态的情况下,RSS输出中的地址仍然是动态地址。默认的模板中是没有加入RSS订阅的代码的,可能很多新手甚至不知道PHP168有RSS输出的功能。

本文将就以上问题对PHP168进行一些简单合理的优化。

1、在PHP168模板中加入RSS订阅的代码

打开head.htm模板,在<head></head>之间加入以下代码

  1. <link rel=“alternate” type=“application/rss+xml” title=“RSS” href=“$webdb[www_url]/do/rss.php?fid=$fid” />

2、修改源文件达到输出静态url的目的

打开do/rss.php,找到66行至74行 继续阅读

PHP168设置静态url时需要注意的

最近在接触一款PHP语言的CMS程序 – PHP168,总体感觉还不错,功能很全面。不过使用中遇到的问题也很多,一个一个解决,先说设置静态url的问题。

程序提供的静态网页表现形式可以很自由丰富的定义静态页面的url,支持各种参数。不喜欢废话,下面直接进入主题。

当内容页的静态页面格式设置带有时间和日期参数的标签的时候,如下面的格式:

{$time_Y}{$time_m}/{$id}-{$page}.html

这时候生成的sitemap链接会出现错误,如:

http://www.i0554.com/19700101/1064.html

不知道为什么日期变成了19700101,开始还以为是我看错了。出错的地方应该在 inc/function.inc.php 1103行的get_html_url()函数。简单尝试修改无功而返,最终放弃。

建议不要在PHP168中使用带有日期和时间参数的url,如果你使用了这种格式,偏偏又认为sitemap没说没用的话可以无视。

关于 Media RSS

先看一段代码,只是一个item节点,出自http://photo.wilf.cn/rss.asp?id=17

<item>
<title><![CDATA[黑眼圈]]></title>
<pubDate>Mon, 13 Oct 2008 07:54:03 +0800</pubDate>
<link>http://photo.wilf.cn/display.asp?id=846</link>
<description><![CDATA[><p align=center><a href="http://photo.wilf.cn/display.asp?id=846" target="_blank"><img src="http://photo.wilf.cn/photofile/200810/small_200810137543102.jpg"></a></p><p></p>]]></description>
<media:content url="http://photo.wilf.cn/photofile/200810/200810137543102.jpg" type="image/jpeg" />
<media:title>黑眼圈</media:title>
<media:text type="html"></media:text>
<media:thumbnail url="http://photo.wilf.cn/photofile/200810/small_200810137543102.jpg" width="144" height="144" />
</item>

查阅了很多资料,终于知道这个东西叫做Media RSS。Media RSS简称MRSS,MRSS是RSS的一种衍生,允许在发布文件中使用多媒体(音频,视频,图像)。MRSS诞生于2004年 by Yahoo! and the Media RSS community。

继续阅读

返回页面顶部的JS特效

一个很贴心的小功能,返回页面顶部,很多网站都有。一个文字或者图片链接,点击这个链接后就会自动跳到该页面的顶部。

常用的方法是在body标签添加一个标记。

<body>
<a name="top">

然后在需要的地方添加链接即可。

<a href="#top">返回</a>

还有更简单的,我一般都是这么干的,一个空标记就可以返回顶部,不知道为什么,反正这样行的通

<a href="#">返回顶部</a>

有朋友留言说需要这段代码,找出来贴一下 继续阅读

LUA 程序设计语言简介

LUA程序设计语言是一个简洁、轻量、可扩展的脚本语言。LUA读作/’lua/(噜啊),是葡萄牙语中"Luna"(月亮)的意思。

LUA的目标是成为一个很容易嵌入其它语言中使用的语言。很多应用程序使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中就包括魔兽世界,还有我最近在玩的剑侠世界等。

Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程式里。和许多"大而全"的语言不一样,网路通讯、图形界面等都没有默认提供。但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。

Lua是一种多重编程范式的程式设计语言:它只提供了很小的一个特性集合来满足不同编辑范式的需要,而不是为某种特定的编辑范式提供繁杂的特性支援。例如,Lua并不提供继承这个特性,但是你可以用元表来模拟它。诸如名字空间、类这些概念都没有在语言基本特性中实现,但是我们可以轻易的用表结构(Lua唯一提供的复杂数据结构)轻易模拟。Lua可以在运行时随时构造出一个函数,并把它看作一个对象(正是所谓的first class function),这个特性可以很好的满足函数式编程的需要。这是提供了这些基本的元特性,我们可以任意的对语言进行自需的改造。

Lua原生支援的数据类型非常之少,它只提供了 数字(缺省是双精度浮点数,可配置)、布尔量、字符串、表、子程序、协程(coroutine)以及用户自定义数据这几种。但是其处理表和字符串的效率非常之高,加上元表的支援,我们可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。

Lua是一个动态弱类型语言,支援增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程(coroutine)支援。

示例代码:

折叠-C/C++代码复制内容到剪贴板
  1. function pythagorean(a, b)  
  2.   local c2 = a^2 + b^2  
  3.   return sqrt(c2)  
  4.   end  
  5. print(pythagorean(3,4))  

运行结果:5

Z-Blog 站内搜索优化

使用Z-Blog的朋友也许都发现了,Z自带站内搜索的结果,摘要部分会有原始的html代码,那么也许你要问,为什么不直接显示html格式呢?

搜索结果是在内容部分 上行100个字符、下行200个字符,这时候就没办法控制不截断html代码,截断的几率还是很大的,所以只好把html代码转换成可以显示的格式一起搜索了。

那么我们有什么办法解决这样的问题呢?先看百度和Google,随便搜索一个结果,你会发现结果部分既没有html代码也不是html格式,见下图。搜索引擎爬虫抓站导入数据库的时候也是要过滤掉html代码的。

站内搜索就是一个简单的搜索引擎,如果我们把需要搜索字段的html先过滤掉,效果应该更好一些。当然了,也就不会出现奇怪的html代码在页面上了。

下面说一下针对Z-Blog的修改,打开FUNCTION/c_system_lib.asp,大约574行

ASP代码复制内容到剪贴板
  1. aryTemplateTagsValue(4)=Search(TransferHTML(Intro & Content,“[html-format]”),Request.QueryString(“q”))

找到上面的代码,修改为

ASP代码复制内容到剪贴板
  1. aryTemplateTagsValue(4)=Search(TransferHTML(Intro & Content,“[html-format][nohtml]”),Request.QueryString(“q”))

注:TransferHTML为Z-Blog自带的函数,[html-format]、[nohtml]均为可选参数,可以参考 FUNCTION/c_function.asp

就是这么多了,也许你要说用插件解决这个问题,这里我觉得还是直接修改源码更好。

isNull(str), isEmpty(str)和 str=”” 的区别

1、isNull()

Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 ("") 也不同,零长度字符串往往指的是空串。

重点使用 IsNull 函数可以判断表达式是否包含 Null 值。在某些情况下想使表达式取值为 True,例如 If Var=Null 和 If Var<>Null,但它们通常总是为 False。这是因为任何包含 Null 的表达式本身就为 Null,所以表达式的结果为 False。

下面的示例利用 IsNull 函数决定变量是否包含 Null :

Dim MyVar, MyCheck
MyCheck = IsNull(MyVar) ' 返回 False
MyVar = Null ' 赋为 Null
MyCheck = IsNull(MyVar) ' 返回 True
MyVar = Empty ' 赋为 Empty
MyCheck = IsNull(MyVar) ' 返回 False

2、isEmpty()

如果变量未初始化或显式地设置为 Empty,则函数 IsEmpty 返回 True;否则函数返回 False。如果 expression 包含一个以上的变量,总返回 False。

下面的示例利用 IsEmpty 函数决定变量是否能被初始化:

Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar) ' 返回 True
MyVar = Null ' 赋为 Null
MyCheck = IsEmpty(MyVar) ' 返回 False
MyVar = Empty ' 赋为 Empty
MyCheck = IsEmpty(MyVar) ' 返回 True

3、零长度字符串 ("")

零长度字符串往往指的是空串。str="",将空字符串赋给str变量,已经赋值了,且赋的是字符。

补充:在数据库设计中可以规定某字段为null,这样如果不再给他赋值时,此记录即为null,但是在表格输出时,null记录将破坏表格的结构,即表格中的格线将消失,很多人在可能出现这种情况时,会在数据库中设默认值或在处理时给此记录赋一个空串。

今天在处理一个变量时把isEmpty用成了isNull,浪费了许多时间,还好及时更正。

PS:记得84给我解释isNull和空字符串时,很形象的说isNull,就好比”真空“。