Tuesday, December 26, 2006

让 wget 忽略 robot.txt

如果想用wget来抓网页或者镜像站点但是遇到 robot.txt 不允许怎么办?比如这样的 robot.txt

User-agent: *
Disallow: /snapshots/
Disallow: /cgi-bin/
Disallow: /cgi2-bin/


在 $HOME/.wgetrc 中加入

robots = off

一切OK,镜像sina?

wget -c -m -p -q -b http://www.sina.com

-c 是继续传送, -m 是镜像, -p 是下载媒体文件,比如图片, -q 是安静模式, -b 是后台运行

Sunday, December 24, 2006

用正则表达式抓取网页


import re
import urllib
import os
import time
from urllib import urlretrieve
def spider_url(url):
r = re.compile('')
page=urllib.urlopen(url).read()
b=r.findall(page)
for x in b:
try:
type, rest = urllib.splittype(x)
host, path = urllib.splithost(rest)
#if not path or path[-1] == "/":
#path = path + "index.html"
#if os.sep != "/":
# path = os.sep.join(path.split("/"))
#if os.name == "mac":
# path = os.sep + path
path = os.path.join(host, path)
dir, base = os.path.split(path)
#i=str(time.time())+".htm"
makedirs("C:/temp/"+dir)
#i="1.htm"
#urlretrieve(x,"C:/temp/"+i)
f = open("C:/temp/"+path, "wb")
page1=urllib.urlopen(x).read()
f.write(page1)
f.close()
#self.message("saved %s", path)
print "saved %s" % x
except:pass
#return b
def makedirs(dir):
if not dir:
return
if os.path.exists(dir):
if not os.path.isdir(dir):
try:
os.rename(dir, dir + ".bak")
os.mkdir(dir)
os.rename(dir + ".bak", os.path.join(dir, "index.html"))
except os.error:
pass
return
head, tail = os.path.split(dir)
if not tail:
print "Huh? Don't know how to make dir", dir
return
makedirs(head)
os.mkdir(dir, 0777)

python抓取网页代码实例


# -*- encoding:UTF-8 -*-
'''
This is geturl.
Wirtten by yuzebin : yuzebin@gmail.com
Important:this script is running in cygwin or linux,if you run at windows
you need the curl and wget for windows .
'''
class='''
CGetPage is charge of to get a url , it have three methods to get a page : urllib,curl and wget;
CParsePage is charge of to parse the page , and return the match;
CGetMatch is the forcad class to wrap the CGetPage and CParsePage.
'''
history='''
2006.07.10 version 0.0.0.9 :
Publish this code to internet , ;-)

2006.06.27 version 0.0.0.7 :
refrectoring class CParsePage : return re.match only
refrectoring class CGetCount : rename to CGetMatch

2006.06.26 version 0.0.0.3 :
modify class CParsePage , return re.match

2006.06.22 version 0.0.0.2 :
add class CGetCount
this version is the first workable version.
add cnsky.

2006.06.21 initial version 0.0.0.1 :
add class CGetPage and CParsePage
cannot work ;-)
'''
import string,re,os,fnmatch,sys,copy,gzip,time,datetime,urllib
from types import *

isDebugMode = False

funcUrlRead = lambda url: urllib.urlopen(url).read()

def funcOutputMessage(msg):
print str(msg)

def funcDebugInfo(msg):
if(isDebugMode==True):
print str(msg)

class CGetPage:
def __init__(self,url):
if self.urlCheck(url)==True:
self.url=url
else:
return None

def urlCheck(self,url):
#todo , check the url is valid url.
return True

def getPage(self):
self.page = funcUrlRead(self.url)

def curlPage(self):
#call curl to get a page,this requir curl is installed.
self.page = os.popen("curl -A "" -s "" + self.url + """).read()

def setPath(self,path):
self.path = path

def wgetPage(self):
#call wget to download a url to path,this requir wget is installed.
os.chdir(self.path)
os.system('wget -c ' + self.url)

class CParsePage:
def __init__(self,rule,page):
if (self.ruleCompile(rule)!=False):
self.page = page
else:
return None

def ruleCompile(self,rule):
#compile the rule
try:
self.rule = re.compile(rule)
except:
return False

def parsePage(self):
self.match = re.search(self.rule,unicode(self.page,self.getCharset(self.page)))
funcDebugInfo(type(self.match))

def getCharset(self,string):
import chardet
#todo : automatic discern the charset
charset = chardet.detect(string)
return charset['encoding']

class CGetMatch:
def __init__(self,url,rule):
self.url = url
self.rule = rule
self.cgetpage = CGetPage(self.url)
self.cgetpage.getPage()
self.page = self.cgetpage.page
self.cparsepage = CParsePage(self.rule,self.cgetpage.page)

def getMatch(self,url,rule):
self.url = url
self.rule = rule
self.cgetpage.url = url
self.cparsepage.rule = rule
self.cgetpage.getPage()
self.page = self.cgetpage.page
self.cparsepage.page = self.cgetpage.page
self.cparsepage.parsePage()
self.match = self.cparsepage.match

if __name__ == '__main__':
funcOutputMessage('===This is a get url script===')
runTest()

def runTest():
#initialization
ccount = CGetMatch('http://www.sina.com.cn','')
i=0

#1
try:
sitename = 'huajun'
rule = 'hit[587]='47588,([0-9]+)'
url = 'http://www.onlinedown.net/soft/hitjs/hits47.js'
i += 1
ccount.getMatch(url,rule)
funcOutputMessage(str(i).rjust(2) + '.' + sitename.ljust(12) +':' + str(ccount.match.group(1)))
except:
pass

#2
try:
sitename = 'skycn'
rule = u'下载次数:  ([0-9]+)'
url = 'http://www.skycn.com/soft/23265.html'
i += 1
ccount.getMatch(url,rule)
funcOutputMessage(str(i).rjust(2) + '.' + sitename.ljust(12) +':' + str(ccount.match.group(1)))
except:
pass

Friday, December 22, 2006

使用Emacs作为Python开发环境

Emacs号称是编辑器之王,无所不能。可把他作为一个Python的集成开发环境

尽管Emacs那么的牛,但是从前用的多的还是简单的 vi。受不了吸引,决定开始使用Emacs进行Python的编程。

python.org上emacs的主页和对应wiki中,对python-mode竟然没有太多的介绍,反而在另外一个网站上找到了一些 emac 的资料,特别是 安装过程

安装过程总结一下:

  1. 使用最新的emacs:大于21.1的XEmacsen,或者大于20.7的Emacsen.

  2. 确保安装了prog-modes这个包,在debian中很简单:
    #apt-get install prolog-el

  3. python-mode项目中,下载python-mode.el

  4. 字节编译,在emacs中输入命令(警告信息可忽略):
    C-x C-f /path/to/python-mode.el RET
    M-x byte-compile-file RET


  5. 确保python-mode.el在加载路径中,测试方法:
    M-x locate-library RET python-mode RET
    如果没有,加入下行到自己的.emacs文件中:
    (setq load-path (cons "/dir/of/python-mode/" load-path))

  6. 文件关联,自动将py后缀的文件和pyhton-mod关联,在自己的.emacs文件中添加:
    (setq auto-mode-alist
    (cons '("\\.py$" . python-mode) auto-mode-alist))
    (setq intercodeter-mode-alis
    (cons '("python" . python-mode)
    intercodeter-mode-alist))


  7. 自动加载,将 python-mode 和文件 python-mode.elc关联,在自己的.emacs文件中添加:
    (autoload 'python-mode "python-mode" "Python editing mode." t)

  8. 语法加亮,这个功能可不能少哟:) 同样在自己的.emacs文件中添加:
    ;;; add these lines if you like color-based syntax highlighting
    (global-font-lock-mode t)
    (setq font-lock-maximum-decoration t)


  9. 支持中文,在.emacs中添加:
    (set-language-environment 'Chinese-GB)
    (set-keyboard-coding-system 'euc-cn)
    (set-clipboard-coding-system 'euc-cn)
    (set-terminal-coding-system 'euc-cn)
    (set-buffer-file-coding-system 'euc-cn)
    (set-selection-coding-system 'euc-cn)
    (modify-coding-system-alist 'process "*" 'euc-cn)
    (setq default-process-coding-system
    '(euc-cn . euc-cn))
    (setq-default pathname-coding-system 'euc-cn)



  10. 好了!进入emacs试验一下:

    $ emacs abc.py

    可以看到emacs的底部显示:Using the CPython shell。可以试着输入一些代码,加亮显示没有问题,支持自动缩进,支持自动括号匹配提示.... 使用C-h m你可以看到python模式的详细帮助文件,功能果然很强大!

Python 网页抓取

PythonGoogle公司最重要的三大开发语言之一(C++, Java, Python)

用Python语言写搜索引擎蜘蛛的脚本非常简单、轻松。给大家分享两种抓网页内容的方法

一、用urllib2/sgmllib包,将目标网页的所有URL列出。


import urllib2

from sgmllib import SGMLParser

class URLLister(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.urls = []

def start_a(self, attrs):
href = [v for k, v in attrs if k=='href']
if href:
self.urls.extend(href)

f = urllib2.urlopen("http://www.donews.com")

if f.code == 200:
parser = URLLister()
parser.feed(f.read())
f.close()
for url in parser.urls: print url


二、用python调用IE抓取目标网页(Require win32com, pythoncom)的所有图像的url和大小


import win32com.client, pythoncom
import time

ie = win32com.client.DispatchEx('InternetExplorer.Application.1')
ie.Visible = 1
ie.Navigate("http://news.sina.com.cn")
while ie.Busy:
time.sleep(0.05)

doc = ie.Document
for i in doc.images:
print i.src, i.width, i.height


这种方法可以利用IE本身的Javascript. DHTML的支持,来做自动提交Form,和处理Javascript。
有关样例可以参考http://win32com.de

Wordpress分页标签

用过wordcodess 1.5版本的朋友应该都知道编辑器有个默认的"page"按钮,这是长文章分页用的,到了wordcodess 2.0版本之后,这个默认的"page"按钮就没有了,被"more"按钮取代了,其实我们还是可以使用他,<!--nextpage--> 这个分页标签就可以做到,如果想要添加编辑器按钮,在tinymce或者简单的编辑环境中都可以,只要取掉注释就可以了

  1. 在简单的编辑环境中,wp-includes/js/quicktags.js 文件中找到

    edButtons[edButtons.length] =
    new edButton('ed_next'
    ,'page'
    ,'<!--nextpage-->'
    ,''
    ,'p'
    ,-1
    );

    去掉注释代码就可以了

  2. 在TinyMCE环境中,wp-includes/js/tinymce/plugins/wordcodess/editor_plugin.js,找到 TinyMCE_wordcodess_getControlHTML 函数,替换为

    function TinyMCE_wordcodess_getControlHTML(control_name) {
    switch (control_name) {
    case "wordcodess":
    var titleMore = tinyMCE.getLang('lang_wordcodess_more_button');
    var titlePage = tinyMCE.getLang('lang_wordcodess_page_button');
    var titleHelp = tinyMCE.getLang('lang_wordcodess_help_button');
    var buttons = '';
    return buttons;
    }
    return '';
    }

    就可以了

Thursday, December 21, 2006

PSP版[地牢围攻:痛苦王座]图文攻略

本作流程和“大菠萝”(暗黑破坏神)类似,共分三大幕,每一大幕里主线任务和分支任务穿插进行。当然你也可以完全忽略分支任务,但这样做的结果就是你将失去很多得到高级装备的机会,而庞大的装备库系统则是这款游戏的一大亮点。

斜体字部分是地名,可以参照我的大地图。

A C T . 1 THE BROKEN LANDS大地图一


psp

  1. (1)OUT OF THE FRYING PAN… 接任务处:自带。

  2. 游戏开始的一个小任务,很简单。地图右边有个BOSS。可以杀也可以不杀,出口在地图左端。

  3. 来到大地图后去SEAHAVEN VILLAGE。找到队长谈话,然后找到HENDRICK谈话,任务完成。

  4. (2)Healing the Forest 接任务处:TAAR

  5. (3)Feeding The Village 接任务处:HENDRICK
  6. (5)Big Game Hunter 接任务处:ARENA





这三个任务可以一起接了,顺路一起完成。TAAR在村庄地图右下。

  1. 出村庄后,上面有个圣坛—SHRINE OF LIFE,站在圣坛上按→键调出道具栏,选STUFF按X使用EMPTY VIAL,装买圣水。

  2. 来到左上的SCORCHED HAMLET,进去后一路向上,找到如下图的七个箱子,拿光里面的物品。返回原路出地图。
    psp

  3. 来到地图右下角的RAPTORS NEST,找到RAPTOR并杀够一定的量既可。怪物长相见下图,地图里有很多RAPTOR,一路杀过来打到小BOSS这基本就能完成任务了。够没够量可以查看任务日志,或是屏幕出现your quests have been updated这句英文都可。
    psp

  4. 初期没回城卷轴可让怪物打死快速回城。当你挂了后选择REVIVE IN SEAHAVEN这句就直接回城了。

  5. 任务奖励:一些钱、装备,和一个新随从TAAR(自然系法师,辅助MM,很有用)。



(7)Trcaking The Hunters 接任务处:HENDRICK

去地图东部找幸存者。具体位置看我的大地图,搜索位置⑥,或看下图。完成任务后回城交任务。

4.jpg

(6)LOST SETTLERS 接任务处:HENDRICK

进入地图WEEPING FOREST,找到幸存者(位置如下图),在其旁边按→键调出道具栏,选STUFF按X使用PORTAL GEM,幸存者被传送回去,回城交任务,任务完成。

psp

(10)SIN OF PRIDE 接任务处:HENDRICK

  1. 先和卖药水的NPC(ABBOT FARNS)谈话。

  2. 进入地图WINDSTONE ABBEY (这个地图没截到,不好意思,大家看自己的大地图就OK)。注:先找到下图的小山洞(CRATER RIM)然后方可传到上面去。(山洞在大地图一⑤处)

  3. 在第一层左侧找到GORVINUS并干掉它。位置见下图。
    psp

  4. 在左边找到第二层入口(DEFILED SANCTUARY)进去。在右下处可找到一祭坛(见下图),这里有4个15级的BOSS守护着,打的时候用远程攻击一个一个的消灭。 PS:我是为了截图才站这,你也站着打那就等着躺吧。。
    psp game

  5. 然后去左边的小道一直走,在下图的一个房间里还有一个BOSS,消灭它。
    game PSP


Wednesday, December 20, 2006

Google发布2006度的各种热门搜索

googleGoogle发布了其2006度的各种热门搜索,除了一般的年度热门关键字索和热门新闻搜索,这次还包括了 "热门”,“实事”,“重要事件”,“娱乐”,“体育”这几类的搜索排名。其中在“实事”中的三个TOP关键字就是“伊拉克”、“北韩”和“伊朗”。在娱乐方面,看来都是美国人比较喜欢他们"Live Show",TOP的三字关键词是"Dancing With the Stars vs. American Idol vs.Project Runway",虽然这些只是英文世界的TREND,不过有的东西还是可以借鉴一下的,BAIDU的2006度搜索报告呢?不会在那上面出现广告吧? ;)

Google.com - Top Searches in 2006



  1. bebo

  2. myspace

  3. world cup

  4. metacafe

  5. radioblog

  6. wikipedia

  7. video

  8. rebelde

  9. mininova

  10. wiki



Google News - Top Searches in 2006



  1. paris hilton

  2. orlando bloom

  3. cancer

  4. podcasting

  5. hurricane katrina

  6. bankruptcy

  7. martina hingis

  8. autism

  9. 2006 nfl draft

  10. celebrity big brother 2006

Tuesday, December 19, 2006

Smarty的section镶套

数组

Array ( [0] => Array ( [HelpClassName] => 常见问题 [HelpClassID] => 1
[Help] => Array ( [0] => Array ( [HelpSubjectName] => PERL! [HelpSubjectID] => 1 ) [1] => Array ( [HelpSubjectName] => PYTHON[HelpSubjectID] => 4 )[2] => Array ( [HelpSubjectName] => RUBY? [HelpSubjectID] => 14 ) ) )

[1] => Array ( [HelpClassName] => 关于概念 [HelpClassID] => 3 [Help] => Array ( [0] => Array ( [HelpSubjectName] => 到底什么是PHP [HelpSubjectID] => 6 ) [1] => Array ( [HelpSubjectName] => php与PYTHON的区别是什么? [HelpSubjectID] => 7 ) ) )


[2] => Array ( [HelpClassName] => 新人必读 [HelpClassID] => 4 [Help] => Array ( [0] => Array ( [HelpSubjectName] => 怎样在PHP? [HelpSubjectID] => 13 ) [1] => Array ( [HelpSubjectName] => PHP使用说明(一) [HelpSubjectID] => 15 ) [2] => Array ( [HelpSubjectName] => PYTHON使用说明(二) [HelpSubjectID] => 16 ) [3] => Array ( [HelpSubjectName] => 如何PHP? [HelpSubjectID] => 17 ) [4] => Array ( [HelpSubjectName] => RUBY(三) [HelpSubjectID] => 18 ) ) ) );

?>


smarty,section镶套












Sunday, December 17, 2006

一半的寂寞

不知道为什么会用“一半的寂寞”为题目,可能我想一半刚刚好,说明现在的我并不是完整的,现在的时间并不是完整的,现在的工作不是完整的,现在天气不是完整,总是,可能一切对我都不是完整的。所以一半就是正确的,而不是否定某某,更不是怀疑某某。不否认自己的过错,也不想拖累,于是一半也是刚刚好好,然而为什么的寂寞的?难道一半的不是一种寂寞吗?

几天和KAKA小王吃饭,他们买房子了,为他们高兴啊,不知道是什么原因,看到他们的笑容自己也是觉得幸福的,我也知道,真正幸福的是他们,或是想想来说,幸福对与这一对是应该的,你可能觉得幸福来的突然,来得简单,来得刚刚好,但对他们来说,幸福就是这个样子的 ;) 居然忘记用手机给他们拍张照片纪念一下。

值得纪念的不单单是他们吧,总是有很多的人都是值得纪念他们的这段时间,比如方哥,哈哈,嘿嘿。恩,是的看到周围的人幸福也是一种幸福。;)

值得纪念是不是还有我?2006年最后一个月的最后一次弱智?我不是观察家,不能正确看待周围的一切,原来,我真的不是。明天又是一周,上班了,发两张买的PSP的图片就睡觉吧。有了PSP,Miniplayer还是要用的~(难道不爽的时候就想买东西?不过PSP是我上个月就打算买的,后来又没有买,不过现在把钱留起来也没有什么用了,还不如用它来缓解一下弱智的神经 :( ) KAKA他们问我下个目标是什么?是DC?我也不知道,于是我说到 ”等我把PSP耍坏了再说吧“,我们都笑了 ;)

psp

psp

psp

psp

Saturday, December 16, 2006

給自己的情歌 梁詠琪

gigi
更新日期:2006-12-13 12:49:19
藝人名稱:梁詠琪
專輯名稱:給自己的情歌
發行公司:豐華
音樂型態:Pop

推薦指數:無再聽見梁詠琪,歌聲依然溫暖的如此熟悉,即使經歷了如此多的風風雨雨,即使身邊環境已是漫天芭樂狗血,即使已不再是最初懵懂而天真的小女孩,GiGi仍然繼續唱著屬於她的心聲,屬於她的歌曲。因為音樂最貼近了GIGI的情感,也因為源自於對音樂的喜愛,她始終堅持而努力著。全新專輯「給自己的情歌」是GiGi在2006年底交出的音樂作品,10首歌曲中我們聽到了不一樣的梁詠琪,卻都有著一致濃濃的真實情感,在目前國語流行樂壇與大眾媒體的強烈口味需求之下,這整張專輯可喜的並不特別強調悲傷的基調,雖然主題都圍繞在城市裡每一段交織的愛情氛圍,卻是傷心、掙扎、無奈、寂寞、出口等等所有都會人矛盾又糾結的情緒,透過GiGi特具溫暖質感的聲音表現,讓所有人痛徹心扉、感同身受,因為每首歌所探討的盡皆是都會人關於戀愛、之於生活最真實的心情寫照。或許是不懂戀愛分分合合的道理,或許是希望掙脫忙碌而乏味的日常生活,或許渴望著一段美好的奇遇,也或許是對於生命衷心的感謝,「給自己的情歌」這一張具有都會透視感的情歌專輯,是這幾年來悄悄成長的GiGi獻給樂迷,也送給自己最溫暖的年終禮物。

「給自己的情歌」紀錄著梁詠琪一年來的音樂心情日記,整張專輯由四大製作人李偲菘、馬毓芬、阿弟仔、邁克林擔綱製作;周杰倫、伍家輝、小安;陳鎮川、黃俊郎、徐世珍、易家揚、鄭淑妃、彭學斌等詞曲創作者的聯手打造,在商業通俗中呈現獨特專屬的質感與氣味,營造一種更深刻的意境,單就音樂的本質在聆聽上就自然而然產生感同身受,人性化情感力量的渲染,詞意的精準與深切更完全打動人心。


GiGi's Blog: http://www.wretch.cc/blog/gigimusic

Thursday, December 14, 2006

使用Skype在ubuntu上通话

Skype安装Skype For Debian的最新版本(我安装的是1.3.0.53)
$wget http://skype.com/go/getskype-linux-deb
$sudo dpkg -i skype_debian-1.3.0.53-1_i386.deb

注意因为在Ubuntu/Debian系统中可能会因为SCIM输入法或者其他原因导致无法启动Skype,可以用下面的启动方式解决

$ export LANG=c
$ QT_IM_MODULE=xim skype

或者在KDE环境下安装 qtimm 软件包。不过注意使用第一种方法会造成个别中文字符显示的不完整。至少可以使用SKYPE通话啦,输入法和中文的问题相信很快会解决的。

Javascript document.write

对于javascript的初学者来说,document.write 是一个非常实用的函数,它可以把Javascript中的变量等写入到HTML上


JavaScript Cookies

What is a Cookie?
A cookie is a variable that is stored on the visitor's computer. Each time the same computer requests a page with a browser, it will send the cookie too. With JavaScript, you can both create and retrieve cookie values.

Examples of cookies:

  • Name cookie - The first time a visitor arrives to your web page, he or she must fill in her/his name. The name is then stored in a cookie. Next time the visitor arrives at your page, he or she could get a welcome message like "Welcome John Doe!" The name is retrieved from the stored cookie

  • Password cookie - The first time a visitor arrives to your web page, he or she must fill in a password. The password is then stored in a cookie. Next time the visitor arrives at your page, the password is retrieved from the cookie

  • Date cookie - The first time a visitor arrives to your web page, the current date is stored in a cookie. Next time the visitor arrives at your page, he or she could get a message like "Your last visit was on Tuesday August 11, 2005!" The date is retrieved from the stored cookie


Create and Store a Cookie
In this example we will create a cookie that stores the name of a visitor. The first time a visitor arrives to the web page, he or she will be asked to fill in her/his name. The name is then stored in a cookie. The next time the visitor arrives at the same page, he or she will get welcome message.

First, we create a function that stores the name of the visitor in a cookie variable:

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

The parameters of the function above hold the name of the cookie, the value of the cookie, and the number of days until the cookie expires.

In the function above we first convert the number of days to a valid date, then we add the number of days until the cookie should expire. After that we store the cookie name, cookie value and the expiration date in the document.cookie object.

Then, we create another function that checks if the cookie has been set:

function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}

The function above first checks if a cookie is stored at all in the document.cookie object. If the document.cookie object holds some cookies, then check to see if our specific cookie is stored. If our cookie is found, then return the value, if not - return an empty string.

Last, we create the function that displays a welcome message if the cookie is set, and if the cookie is not set it will display a prompt box, asking for the name of the user:

function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
{alert('Welcome again '+username+'!')}
else
{
username=prompt('Please enter your name:',"")
if (username!=null && username!="")
{
setCookie('username',username,365)
}
}
}

All together now:

点击浏览器的后退按钮后表单内容的控制

为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了?

这是由于在表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 session_start 函数后加入

header("Cache-control: private");

注意在本行之前你的PHP程序不能有任何输出。

还有基于 session 的解决方法,在 session_start 前加上

session_cache_limiter('nocache'); // 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般

JavaScript的Cookie操作函数


//获得Cookie解码后的值
function GetCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}


//设定Cookie值
function SetCookie(name, value) {
var expdate = new Date();
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");
}


//删除Cookie
function DelCookie(name) {
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}


//获得Cookie的原始值
function GetCookie(name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}

Wednesday, December 13, 2006

Ruby on Rails Windows安装问题

Ruby on Rails使用Windows上安装Ruby on Rails的时候,在使用gem安装Rails的时候遇到这样的问题
gem install rails --include-dependencies
错误提示找不到 ssleay32.dllzlib.dll,这时候需要下载下面这几个文件放到 \ruby-version\bin 这个目录下

Tuesday, December 12, 2006

DBD::mysql安装问题

在安装perl的DBD::mysql模块的时候遇到一些问题

$ perl -MCPAN -e shell
[....]
Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.

Cannot find the file 'mysql_config'! Your execution PATH doesn't seem
not contain the path to mysql_config. Resorting to guessed values!
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Can't exec "mysql_config": No such file or directory at Makefile.PL line 454.
Failed to determine directory of mysql.h. Use
[....]

进入DBD::mysql的代码安装目录

$ cd $HOME/.cpan/build/DBD-mysql-3.0008
$ perl --mysql_config=$MYSQL_PREFIX_DIR/bin/mysql_config
$ make
$ make test
$ make install

这样就安装成功了

Perl安装问题

Perl在测试服务器上安装perl5.8.8

$./configure.gnu --codefix=$HOME/local
make

结果出错啦~

make[1]: Leaving directory `/home/.salk/ndw/src/perl-5.8.6/x2p'

Making B (dynamic)
opendir(./../../../../..): Permission denied at ../../lib/File/Find.pm line 597
Use of chdir('') or chdir(undef) as chdir() is decodecated at ../../lib/File/Find.pm line 741.
opendir(./..): Permission denied at ../../lib/ExtUtils/MakeMaker.pm line 165
Couldn't change to directory /home/.salk/ndw/C: No such file or directory at Makefile.PL line 18
Writing Makefile for B
Warning: No Makefile!
make[1]: Entering directory `/home/.salk/ndw/src/perl-5.8.6/ext/B'
make[1]: *** No rule to make target `config'. Stop.
make[1]: Leaving directory `/home/.salk/ndw/src/perl-5.8.6/ext/B'
make config failed, continuing anyway...
make[1]: Entering directory `/home/.salk/ndw/src/perl-5.8.6/ext/B'
make[1]: *** No rule to make target `all'. Stop.
make[1]: Leaving directory `/home/.salk/ndw/src/perl-5.8.6/ext/B'
make: *** [lib/auto/B/B.so] Error 2


$make minitest
来测试,结果在98.5%的地方出错了,没有办法,GOOGLE上搜索了一下,结果是编译的地方出错了,在 /tmp 下面编译一点问题都没有,看来是不是以后都要改变一下编译的习惯了? ;)
/tmp$ ./configure.gnu --codefix=$HOME/local && make && make test && make install

PHP下的文本换行替换

PHP今天遇到一个PHP下文本的换行替换问题,好无聊,在Windows或者Linux上有区别?不用管,用这个就好了
codeg_replace("~(?:\r)?\n~s", "", $str);

Sunday, December 10, 2006

QQ2006 Mobile Test 下载

qqQQ2006 Mobile是腾讯最近发布的QQ手机版本,与以前的不同,这个版本几乎拥有的PC版本QQ的所有功能,不过前提是你的手机型号是有要求的,一般来说智能手机是可以用上的,我的N3230当然可以了,现在就在用,在昨天下载的时候却遇到问题,怎么都下不到N3230版本的,后来在ZJ的帮助下,我得到了这个N3230的QQ2006test MOBILE,不需要支持其他费用,只需要支持手机上网的WAP或者GPRS费用就可以了。主要功能:
qq

  1. 好友分组

  2. QQ群

  3. 语音消息

  4. 视频聊天

  5. 传送图片

  6. 聊天室

  7. QQ秀

  8. 查看好友详细资料


怎么样,不错吧,其实腾讯早可以推出QQ的手机版本了的,为什么到等到现在,我觉得主要有这几个原因:

  1. 原来手机上使用QQ是要收费的,腾讯当然是要对赚点钱先

  2. 中国移动扬言SP业务不外包,大家都在找后路

  3. 手机通讯的巨大市场潜力,说不定两年后移动设备上的通讯将超过PC端

  4. 很多第三方面QQ手机版本的出现,好象当年的传奇私服,盛大就是一个好的例子,腾讯会凡同样的错误吗?



Friday, December 8, 2006

ruby on rails with Dream Host

Ruby on Rails最近KAKA在DH上搭建了一个Django的测试环境,感觉Python还是很强大,不过似乎做有些小而快速的WEB应用就不那么实在。今天在 Dream Host 上测试 Ruby on Rails,非常成功,安装非常简单,只要在DH的控制面板中把你Domain的FastCGI支持打开就可以了,我使用的是子目录的形式建立Ruby on Rails应用的。

不过在自己的windows上搭建开发环境的时候遇到了一点问题,在启动了服务之后出现
Application error (Rails)
的错误,后来google了一下,原来是服务的启动方式不对,必须使用
ruby script/server
才能正常工作 ;)

关于在windows上搭建 Ruby on Rails 的开发环境完全可以使用这个软件包

Jay Chou 黃金甲 - 周杰伦

Jay Chou周杰伦的新歌《黄金甲》最近发布了,可以点这里观看MV,再按这里收听电台的首播。

  周杰伦撇开擅长的R&B曲风,首度将重摇滚、街头饶舌与中国风三合一,为新片《满城尽带黄金甲》量身打造气势磅礡的主题曲《黄金甲》,花了一个月的时间才宣告完成。

  继成功打造《头文字D》及《霍元甲》主题曲,周杰伦应导演张艺谋之邀再度投身创作电影主题曲,写歌难不倒他,但要满足张导的要求,小天王坦言备感压力,在许多夜里与老搭档方文山讨论中国风歌词,也长时间待在录音室与制作人林迈可研究编曲,最后会选择“摇滚”曲风,就是为营造出千军万马的奔腾气势。

  向来以R&B曲风见长的周杰伦,往年创作仅《双刀》、《双截棍》两首歌比较偏向摇滚,如今想要突破旧思维,从现代重摇滚下手创作电影主题曲,堪称周杰伦在音乐曲风的一大突破,提及最崇拜的摇滚乐手?周杰伦陷入深思,随后才答到还满欣赏五月天的。但下一张新专辑是否会向摇滚乐靠拢或与五月天合作?他不置可否说:“再说吧!”

  推出《黄金甲》单曲EP,周杰伦除附赠自导的《黄金甲》MV,更附送《依然范特西》10首MV,他表示,此张单曲可说是集他执导的MV之大成,制作成本上千万,足够拍摄一部国片,但是否会在近期内由MV导演晋升为电影导演?阿尔发唱片表示,这需要长期规划,周杰伦也希望能早日成为电影导演,毕竟这是他的梦想。


Jay Jay Jay Jay

Wednesday, December 6, 2006

Dreamhost vs Youtube?

DreamHostLet your Dreamhost hosting as a Youtube? You can upload AVI/MOV/MPEG/MPG media files and Dreamhost can convert it to flv format for you! Like the Youtube, but, you can give faster speed to visitors, and upload media files as much as your Dreamhost space limited! I have 200G~(+1.0 GB / week). BTW, you can get more information about the media tool on Dreamhost, now!

Mini Linux

mini linux

很可能第一眼看到你会以为是一台无线路由器,可它去是你台MINI LINUX设备,甚至比MINI MAC都还要小巧,它叫做“Linutop”。

9.3 x 2.7 x 15 cm的大小和280克的重量,比Mac Mini更加小巧。采用AMD Geode低电压处理器(无需风扇,真正的静音PC),256MB内存和512MB ROM(Pocket PC?),4个USB2.0接口,100M网卡,VGA视频输出和音频输入/输出功能。估计Linutop的售价不会超过RMB1000元。

软件方面:Linutop自带Firefox浏览器、AbiWord文本编辑软件、Gaim即时通讯软件和Totem媒体播放器。很适合学校、图书馆、政府部门和一般企业的互联网应用。也可以作为Car PC。如果支持中文系统的话,可以弄一台给老爸老妈上网用。

Mini Linux Desktop

Monday, December 4, 2006

MSN80048820错误

刚刚到Office发现MSN不能连接啦 :( 搜索了一下,原来是MSN的老问题,看看我的系统间,非常正常,后来用下面这几行代码就成功修复了,保存下面的代码为msn-80048820-solved.bat 点击运行就可以了。


@ECHO OFF
ECHO.如果你msn中修复不了就运行吧.
ECHO *************************************
ECHO * This file is provided by msn-problems.com *
ECHO * Copyright (C) 2004-2005 *
ECHO *************************************
ECHO.
ECHO 等一下.

REM Following files only needed in windows XP
IF NOT "%os%"=="Windows_NT" GOTO WIN9X
regsvr32 Dssenh.dll /s
regsvr32 Gpkcsp.dll /s
regsvr32 Slbcsp.dll /s
regsvr32 Sccbase.dll /s

:WIN9X
IF NOT "%os%"=="Windows_NT" CD %windir%\System\
REM Needed by both XP and 9X
regsvr32 Softpub.dll /s
regsvr32 Wintrust.dll /s
regsvr32 Initpki.dll /s
regsvr32 Rsaenh.dll /s
regsvr32 Mssip32.dll /s
regsvr32 Cryptdlg.dll /s
regsvr32 Msxml3.dll /s
ECHO.
ECHO 搞定,还不可以到这网站的论坛询问 www.msn-problems.com
ECHO.
pause

Sunday, December 3, 2006

Top 10 Killer Apps For Linux

Nobody wants to use an operating system. They just want it be able to run the software they need. Therefore, its very important for an OS to have killer apps. Here’s a list of software that make Linux worth using.

1. Apache

Needs no introduction. The legendary web server app that probably almost every website runs on. If you even try to compare this with Microsoft’s IIS, I’m just going to burst out laughing my ass off.

2. Synaptic/Adept/YUM

How do 90% of computer users (the current windows + mac market share) even use their computers without a package manager ? Before switching to Linux, I was warned that installing software was going to be very very difficult and that alone would make me want to crawl back to my hda1 partition. The guy who said that has obviously never hurd (pun intended) of package managers.

3. Konqueror

Window File Managers simply cannot get better than this. Konqueror’s competitors - Finder and Explorer are nowhere near as good as it is. I would have try to describe the features, but there are just too many to write about. Check the wikipedia article for those details.

4. Beryl/Compiz

After 2 months of Beryl on my Ubuntu box, I can’t dream of a world without wobbly windows. Not to mention the Blur, Water, Desktop Cube, Animations, Trailfocus, Expose-like features, and Fading Windows. Makes me feel sorry for Windows users who have to stare at Luna everyday.

5. AmaroK

Brilliant music player that kicks iTunes proverbial bckside in every respect. Features include Podcasts, Internet Radio, Lyrics, Wikipedia information about the currently artist, and probably a zillion more that i haven’t discovered yet. Highly extensible with scripts and themes. The recent release also features a music store for digital music downloads (with free codeviews).

6. K3b

Windows users would say Nero is way better than K3b in terms of features and I would be forced to agree. But why the hell does a person who just wants to burn some discs also need a media player, an always-on media cataloging software, audio editor and other useless crap bundled ? K3b does what its supposed to do from a good interface and does it perfectly.

7. Apollon (frontend for giFT)

This program that surprisingly few people use is the best P2P software out there without doubt. I’ll just say this - it supports the FastTrack, Gnutella, Ares and OpenFT networks and has no added spyware. Now, if you need more convincing than that, you deserve to have your system “Kazaa-d”.

8. MPlayer + MEncoder

MPlayer is that media player that you’ve always wanted - the one that can play absolutely anything and doesn’t cost an arm, a leg and a couple of toes. And if you’re part of “the scene” there’s no better software than MEncoder to to rip those DVDs, and convert them to AVIs. And if you’re not hardcore geek enough to handle the command-line interface there are about a couple of thousand GUIs for these two programs floating around the net.

9. Deskbar

The Deskbar applet for the Gnome Panel searches liles and folders, Wikipedia, browser bookmarks and history, dictionary, Del.icio.us, address book contacts, Gmail and opens programs, web pages and even triples as a calculator. If you find another Search+Launcher+Calculator program, tell me.

10. Screem HTML/XML Editor

Yes I’ve used Dreamweaver and its very easy to use and all but if you want to really become a good web designer, you need to get rid of the WYSISWYG and actually look at the code that you put in. With Screem, you can use the markup you want rather than what the application thinks you need.

There are a lot of other programs for Linux that are really great (Firefox, OpenOffice.org, VLC Player) but they have Windows versions too and don’t qualify as killer apps for Linux. (EDIT: Apache is an exception. Although it runs on Windows and other operating systems too, it is almost always used as part of the LAMP configuration which invloves Linux)

Installing Ruby on Rails with mod_fcgi for Apache 2

railsAfter a few hours of trial and error using advice from many different sites/posts, this is the process that I found successful in getting Ruby on Rails working with the Apache 2 fcgi module on linux. I hope this helps someone hang onto a few more hair follicles.

Before we begin, I can say that this was only successful when I did the setup in this order. Perhaps others have done it in a different way, but this worked for me. BTW, I using Redhat Enterprise 4.

First, we'll install ruby.
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.4.tar.gz
tar xvfz ruby-1.8.4.tar.gz
cd ruby-1.8.4
./configure --codefix=/usr/local
make
make install
cd ..

Just to make sure everything installed properly try this:
ruby --version
It should return something like this:
ruby 1.8.4 (2005-12-24) [i686-linux]

Now let's install ruby gems.
curl -O http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz
tar xvfz rubygems-0.8.11.tgz
cd rubygems-0.8.11
ruby setup.rb
cd ..


Now we need to install the FastCGI development kit.
curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar xvfz fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure --codefix=/usr/local
make
make install
cd ..

Allrighty then. We're moving now.

Monday, November 27, 2006

Play Images

复制下面到浏览器的地址栏,回车 ;)
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);

Wednesday, November 22, 2006

Wordpress and My Life

含泪播种的人一定能含笑收获

wordcodess封锁:这几天发生了不少事,Wikipedia再次被封锁,Blogsopt又一次开放,为什么会发生这样的情况,让人觉得生活没有保障,说不定哪天你就会被XX掉,逃亡吧,如果我有实力,早就说拜拜了。

价值:这一周多少都在摆弄这个BLOG,什么优化啊,什么界面啊,让我感觉也没有什么大的变化,有一点到是被我肯定了,Google Adsense能够赚钱,网络广告也能够赚钱,不过国内的广告商似乎不是那么值得信任,至少我是这么认为的。昨天看了Keso的一篇新文章:世界能有多平?倒是很有意思。

日志:在这个wordcodess上写日志有1年了,虽然不是第一个日志,却是坚持写得最久的一个,现在在DH上,我想到了明年10月份,我还会在DH继续这个日志,时间过得出奇的快,在页面体现的是上一个10月到这个11月,在记忆中,却不知怎么去搜索。搜索... 不知道什么时候开始搜索在我的生活占据了很重要的位置,可能没有Internet我们也是在一直搜索,只不过表现形式不一样了。

Q币:1美圆兑换8Q币,科幻小说中加入这样的情节倒是不错的,听说某某某要对Q币下毒手了,原因?大家都知道,1个Q币=1¥是什么概念?虚拟的东西总是不好的,就象精神鸦片,虚拟的货币,那就更该下地狱了,至少有人是这么认为的。

未知:有人抱怨gmail异常垃圾,因为发给163的邮件总是收不到,当然肯定也收不到163发来的邮件;但是更多的人相信是网易的单方面行为,前几天网易的邮件工程师出来说明了一下为收不到gmail的邮件
  1. Gmail和国内邮件服务商之间存在一种不知名的防火墙,这个设备的存在可能直接导致某类邮件的收发畅通问题(超时、退信、直接断开或者Discard)

  2. 也是这个设备的存在,会干扰Gmail与国内邮件服务商之间某些TCP连接的状态,也就是更改SMTP会话状态.这个tcp修改动作,会严重影 响网易邮件系统MTA服务程序对连接状态的计数统计功能,相应也干扰了网易mta与gmai mta之间的连接,造成一些邮件延迟

对于以上种种,我只能感叹在外求学的朋友们以及在外生活的朋友的幸福,不发表更多言论,不卷入不必要的麻烦,这就是某人在某个地点在某个时代的生存之道。

断网:网络创造了无数的财富,创造了无数的奇迹,断网?是开历史的倒车是在审视过去展望未来,有人喜欢第一个,有人喜欢第三个,而我哪个都不喜欢,因为断网就发生在身上。

Saturday, November 18, 2006

11个网络声明的真实含义

“我们脱离了Beta”,它的意思其实是“煤体们,给我们再宣传一次”
“将推出更多的功能”,“抱歉,我们现在的功能还不多”
“我们的网站使用了最新的Web 2.0技术”,“我们解决一个简单的问题,但加了个梯子过度过度”
“Web3.0是....”,“Web 2.0我们没有赶上,但3.0不会”
“根据内部可行性研究”,“有个家伙在大厅里吃饭的时候对我说”
“根据当地法律和政策一些搜索结果没有显示”,都知道在说啥。”

From Solidot.org

Thursday, November 16, 2006

失去联络

断网,四川信产的办公室居然断网!我在那里已经两天没有上网了,真是的,他们说是2楼的机器有病毒,影响大楼所有网络通信,难道他们就没想想检查一下,只封闭几个端口就行了吗,为什么全部都被断掉,完全没有一点技术含量,今天,不知道还会不会延续前两天的状况,哎,不懂科学的人一直坐在需要技术含量的位置不断的做着没脑子的事,这难道就是现状?难道就是未来和明天?不要说我是愤青,我还没到那个等级。要是还不行,只要帮到7楼去暂时性地接受噪音污染了~

Tuesday, November 14, 2006

凌晨三点钟

今天凌晨在天虎升级博客服务,从13号下午就开始准备,到12点的时候也只是休息了1个小时左右,直到14号3点半左右才全部OK,很不舒服的睡了1个小时,早上坐车回去睡到中午1点,又跑来上班了,What a day! 还好,和那首凌晨三点钟没有一点关系 ;)

Sunday, November 12, 2006

愛到無可救藥 - 品冠

Rock Music Taiwan又是两年,品冠终于发行新专辑了,听了5首歌一遍,感觉無“可救藥”很好,然后就是非常品冠式的情歌“我以为”,不知道是落寞来是失望或是后之后觉,我以为我够坚强,却一天一天失望…… 作曲来自品冠的掏心创作,想必很多男生也会或多或少有相同的感受,以为想到做到了却没有办法做到,以为可以作到的却无能为力,原来感情的世界是有难过和痛苦了,怎么偏偏让你遇到,记忆或是忘记,坚持还是放弃,各自选择着,但请别忘记,当你幸福的时候,请把她紧紧握好。

妳曾說不想有天讓我知道
妳對他 有那麼好
妳說會懂 我的失落
不是靠寬容 就能夠解脫

我為我出現的時候剛好
妳和他 正說要分開
我以為妳 已對他不再期待
不縱容他 再給妳傷害

我以為我的溫柔 能給你整個宇宙
我以為我能全力填滿妳感情的缺口
專心陪在妳左右 彌補他一切的錯
也許我太過天真 以為奇蹟會發生

他讓妳紅了眼眶 妳卻還笑著原諒
原來妳早就想好妳要留在誰的身旁
我以為我夠堅強 卻一天天的失望(卻輸得那麼絕望
少給我一點希望 希望就不是奢望

我以為終究妳會慢慢明白
他的心 已不在妳身上
我的關心 妳依然無動於衷
我的以為 只是我以為

Google PDA search page

googleHaha, use PDA search everything on google now! You can get it on this page , and you can view the smarty news page and gmail page for PDA, fast and small for PDA. Now, you can use "Web", "Images", "Local listings" and " Mobile Web (Beta)" search service on PDA page. and view small page "News", visit "Personalized Home" and "Gmail". Also, you can set your Preferences. Of cource, google build a "Help & Terms" page for the Mobile Web (Beta) service.

linux系统下的多文件替换

又是一个老问题,不过对刚刚接触Unix/Linux的人来说还是非常管用的
find . -name "*.c" | xargs sed -i 's/xxx/yyy/g'

以安全的方式更改文件中的大小写
$cat toc.html | tr '[:upper:]' '[:lower:]' > toc1.html
$mv toc1.html toc.html

Friday, November 10, 2006

使用rewrite实现永久重定向

blogit.3322.org在DreamHost上不能使用,怎么办?使用301永久重定向吧,找个可以使用rewrite的空间,把blogit.3322.org指向那里(保持fred.oracle1.comblogit.3322.org相同的目录结构),在根目录下.htaccess写入下面内容,这样如果有人从搜索引擎比如Google访问
http://blogit.3322.org/weblog/2006/11/10/dreamhost-now/那就会自动重定向到
http://fred.oracle1.com/weblog/2006/11/10/dreamhost-now/
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*) http://fred.oracle1.com/$1 [R=301,L]


相关资料

301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

meta fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

DreamHost Now!

DreamHostNow, I'm on Dreamhost, use fred.oracle1.com forever! Becase the old domain "blogit.3322.org" can't use on DreamHost :( , ho, but not so bad. It's only a weblog for me. what should I do? Buy a domain? I link maybe, but I can build some site with webcan.cn domain or the free DreamHost suppor domain. yes, I'm coming the new world, my future!

Who are my neighbor?





What about the speed of Dreamhost? I think the speed is more faster than many chinese ISP.

DreamHost Speed

Wednesday, November 8, 2006

Dojo inlineditbox

ajax昨天白天几乎一天都在学习dojo,用 dojo.weight.inlineeditbox 做了一个工作上的东西,感觉还不错,不过发现需要去学习的真的还有很多,总结了一下 inlineeditbox :

Tuesday, November 7, 2006

Firefox 2.0 and Me

最近很忙,Blog也不是常常更新了,刚才下载了Firefox2.0来升级了,感觉很不一样了,但不知道为什么,让我想了大学2年级才玩“命运”这个网络游戏时候的feeling,可能是Firefox2.0的style的原因吧,下周看了“指环王”,感觉很不错,非常有教育意义的电影,哈哈,老土,现在才看。睡觉了,睡觉了,明天还有工作,有PHP,有MySQL,有CSS,还有等待DreamHost,等待人生的转折。WordPress都升级到2.05了,我都没时间升级,想了想可能都要等到换空间之后了,哎,最想最乱,好好睡一觉,明天继续寻找机会,继续努力!
刚才在laughingsquid发现了这个有趣的网站,关于搞怪漫画的?

Saturday, November 4, 2006

PHP 5.2.0发布

From: solidot.org
PHP"PHP开发团队与Zend放出了PHP 5.2.0,建议使用者进行升级。新版本修正了一些安全漏洞,对之前发现的缓冲溢出打了补丁,还包括了大量库的升级,bug修正,以及捆绑了一个流行扩展JSON可帮助进行AJAX开发。更多的细节可在这里浏览,下载。"

Tuesday, October 31, 2006

SSH term problem

redhat rhel4SSH登录RedHat后使用一些命令出现
unknown terminal "rxvt-unicode"

是因为远程服务器 TERM 不能识别"rxvt-unicode"
$HOME/.bash_profile 中加入下面这样的(当然还有其他地方啦)就ok了。
export PATH
if [ "$TERM" = "rxvt-unicode" ]; then
TERM="rxvt"
export TERM
fi

rxvt-unicode 改为服务器识别的就是一个道理。

Google 又不能访问

2006年10月最后一天,我正在紧张的工作着,但是Google又不能访问了!该死的GFW,他们怎么能这样,我又没有搜索什么敏感内容。10月最后一天,下雨,这几周的工作被排满,现在的内容需要在Google上个人主页的一个连接地址,打不开,等吧,于是来写这篇日志,在DreamHost买空间不是很顺利,都是VISA卡,或者是贫苦的中国人民吧,至少有很多人还过不到奢华生活,那些奢华的生活,只属于少部分人。有钱人,有权人,有势人,或者是超人?这两周自己的计划被全部打乱,完全不爽,至少我对生活的态度有些转变。现在也觉得每天上班下班有点累,不过也没什么了。:)

Friday, October 27, 2006

php.ini的注意

设置 PHP.ini 中 Include 位置 Windows 下为 ; 号 Unix为 :

就是应该注意的,我被这个东西搞了一上午。我想很多人都有同样的经历吧?

Wednesday, October 25, 2006

HOT PERL ONLINERS

Just enough perl to do most everything! Tom Christianson (spelling?)
once posted a canonical list of one line perl programs to do many common
command-line tasks.
It included:

# run contents of "my_file" as a program
perl my_file

# run debugger "stand-alone"
perl -d -e 42

# run program, but with warnings
perl -w my_file

# run program under debugger
perl -d my_file

# just check syntax, with warnings
perl -wc my_file

# useful at end of "find foo -print"
perl -nle unlink

# simplest one-liner program
perl -e 'print "hello world!\n"'

# add first and penultimate columns
perl -lane 'print $F[0] + $F[-2]'

# just lines 15 to 17
perl -ne 'print if 15 .. 17' *.pod

# in-place edit of *.c files changing all foo to bar
perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c

# command-line that prints the first 50 lines (cheaply)
perl -pe 'exit if $. > 50' f1 f2 f3 ...

# delete first 10 lines
perl -i.old -ne 'print unless 1 .. 10' foo.txt

# change all the isolated oldvar occurrences to newvar
perl -i.old -pe 's{\boldvar\b}{newvar}g' *.[chy]

# command-line that reverses the whole file by lines
perl -e 'print reverse <>' file1 file2 file3 ....

# find palindromes
perl -lne 'print if $_ eq reverse' /usr/dict/words

# command-line that reverse all the bytes in a file
perl -0777e 'print scalar reverse <>' f1 f2 f3 ...

# command-line that reverses the whole file by paragraphs
perl -00 -e 'print reverse <>' file1 file2 file3 ....

# increment all numbers found in these files
perl i.tiny -pe 's/(\d+)/ 1 + $1 /ge' file1 file2 ....

# command-line that shows each line with its characters backwards
perl -nle 'print scalar reverse $_' file1 file2 file3 ....

# delete all but lines beween START and END
perl -i.old -ne 'print unless /^START$/ .. /^END$/' foo.txt

# binary edit (careful!)
perl -i.bak -pe 's/Mozilla/Slopoke/g' /usr/local/bin/netscape

# look for dup words
perl -0777 -ne 'print "$.: doubled $_\n" while /\b(\w+)\b\s+\b\1\b/gi'

# command-line that prints the last 50 lines (expensively)
perl -e 'lines = <>; print @@lines[ $#lines .. $#lines-50' f1 f2 f3 ...

Saturday, October 21, 2006

Apache 2.2 Vhost configure

Build Vhost in "extra/httpd-vhosts.conf"



NameVirtualhost localhost
ServerAdmin root@localhost
DocumentRoot "/opt/httpd/htdocs"



# NameVirtualhost sqladmin.localhost
ServerAdmin webmaster@sqladmin.localhost
DocumentRoot "/opt/www/sqladmin"
ServerPath "/opt/www/sqladmin"
ServerName sqladmin.localhost
# ServerAlias sqladmin.localhost

Options Indexes FollowSymLinks MultiViews
IndexOptions FancyIndexing
AllowOverride None
DirectoryIndex index.php
Order Deny,allow
Allow from all

ErrorLog logs/sqladmin.localhost-error

#

# NameVirtualhost php.localhost
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot /opt/www/php
ServerPath /opt/www/php

Options Indexes FollowSymLinks MultiViews
AllowOverride None
DirectoryIndex /phpinfo.php
Order Deny,allow
Allow from all

ServerName php.localhost
ErrorLog logs/php-error_log
CustomLog logs/php-access_log common




Let test the config file!


fred@localhost:php$ sudo /opt/httpd/bin/httpd -S
VirtualHost configuration:
127.0.0.1:80 is a NameVirtualHost
default server localhost (/opt/httpd/conf/extra/httpd-vhosts.conf:29)
port 80 namevhost localhost (/opt/httpd/conf/extra/httpd-vhosts.conf:29)
port 80 namevhost sqladmin.localhost (/opt/httpd/conf/extra/httpd-vhosts.conf:35)
port 80 namevhost php.localhost (/opt/httpd/conf/extra/httpd-vhosts.conf:53)
Syntax OK

Ubuntu in my life

使用ubuntu是快乐的,不管是在Laptop还是在Workstation上。看看在我的Acer Laptop上的电池警告和系统更新提醒吧,是不是很棒呢?

Free Image Hosting at allyoucanupload.com

Free Image Hosting at allyoucanupload.com

Thursday, October 19, 2006

Perl Package Manager

这两天挺累的,有好消息,也有坏消息,我尽量保持冷静,毕竟,这是应该的。来成都第三个月,好好坏坏都经历过了,仿佛生活就是在用不同的方式去考验每一个,直到自己能够接受,或是重新再领悟过去,憧憬未来,好好过者现在。我试着去帮助每个人,而不是为了自己,我想这样生活会更有意义的,不是吗?

perl在Windows上使用Perl的模块怎么办?用CPAN很麻烦的,使用ActivePerlPPM来管理吧,安装、升级、删除都可以方便的进行,可以使用GUI也可以使用命令行。不过在Cygwin我使用PPM失败了,不知道为什么,一会检查一下,哈哈,休息一下,整理一下心情的碎片,一天接一天,幸福就会一天天接近,不是吗?

Monday, October 16, 2006

Error establishing a database connection

我快受不了现在的日志空间了,常常都是“Error establishing a database connection”错误,而且国外的访问者访问中国大陆的IP也常常出现问题,这个嘛,谁都是知道原因的。

ruby on rails现在的PHP+MySQL的博客系统是非常棒的,昨天把googleadsense加入了,并不是为了挣钱,而是为了研究一下adsense。这两天还在研究DreamHostRuby on Rails,又是一个十月,有人是幸福的,有人在痛苦着,有人住进了新房子,有人流落街头,有人换了新工作,有人却还在失业,为什么会有诧异,是命运还是人本身,没有人能解释清楚,我想人不能停止奋斗,因为每个人都是去追求幸福的理由,或是为了幸福而去追求。

又是一个十月!希望下个十月,我会满载而归。

吳克群 - 將軍令

吳克群 - 將軍令2005年,吳克群「大頑家」專輯,以「大舌頭」、「周星星」讓人耳目一新,接著「不屑紀念」更攻下KTV點唱冠軍,「我有罪」、「泛泛之輩」等慢歌深情感人,讓吳克群唱片銷量、台灣及內地人氣皆急速升高。2006年5月,克群更以「大頑家」專輯入圍第17屆金曲獎最佳國語男演唱人獎。2006年,吳克群再度推出全新的全創作專輯「將軍令」,以更磅礡的氣勢、更有趣的想法、更感人的情歌,以及吳克群一貫的顛覆性格,要給你絕對不同凡響的吳克群音樂!

這次「將軍令」專輯,克群在創作時採取「主題概念」式的做法,每一首歌都會先有一個主題,隨著概念發展出詞曲後再決定曲風、編曲等細節,讓每一個故事,都有它該有的樣子。克群說,他在創作時不會侷限自己要用什麼曲風,而是讓曲風跟著概念走,因此音樂才有無限的可能。克群說:「最近有太多的事件,侷限了人的想像,但是我覺得音樂是可以超越視覺的。這張新專輯的每一首歌,每首歌都是不同曲風,有甜蜜浪漫、無限遐想,也有自我嘲諷、對社會的看法、甚至是對自己在音樂圈的看法;但是放在一起,感覺卻能彼此協調,融合成一個完整的概念。」這次在製作專輯時,請來了暱稱小馬哥的製作人陳建良來與克群共同製作。小馬哥曾協助五月天製作出許多張膾炙人口的專輯,克群說:「我有很多音樂的想法,而小馬哥很有那種玩音樂的熱情以及豐富的經驗,我跟他溝通之後,再一起找編曲人討論,以一種像是在玩樂團的方式來撞擊出新的火花,也讓原本就有畫面感的歌曲變得更有血有肉 。」在克群與小馬哥的共同努力下,「將軍令」專輯的每一首歌都有各自的生命、各自的畫面,也更有視覺感,也比過去的作品有更多元的風格與更多的想像空間,在豐富華麗之中卻不失想要表達的精神主旨。克群說,這張專輯他想得更清楚也做得更快樂,真正做出了他心目中想要的流行歌!

Friday, October 13, 2006

一个男人把一个少女关在房间里

一个男人把一个少女关在房间里.意图不轨,然后.....


  1. 如果少女接听了一个电话并突然消失,这是一部科幻片.

  2. 如果少女这时面向镜头说:"当那个男人离我只有0.04公分.......´;´;这是一部搞笑片

  3. 如果少女爱上了这个男人.这是一部社会伦理片.

  4. 如果男人最后一刻还是放了少女.这是一部人文道德片,

  5. 如果少女变成了怪兽.这是一部美国恐怖片[带科幻]

  6. 如果男人变成了怪兽,这是一部日本恐怖片[带色情]

  7. 如果谁也没有成怪兽,只是音乐突然变的很急促,这是一部中国恐怖片[带广告]

  8. 如果少女对这个男人进行世界观和人生观的说教并成功感化他投案自首,这是一部中国大陆片.

  9. 如果少女边摇晃着染成红色的头发边骂骂咧咧地大声问男人是哪条道上混的,这是一部港产片.

  10. 如果少女开始哭哭啼啼.吵吵闹闹.而且这个无谓的镜头持续20分钟以上,这是一部台产片.

  11. 如果少女之后怀孕了并产下一个私生子,多年以后私生子和生父的后代之间发生了感情和生意上的故事,这是一部新加坡片.

  12. 如果救她的英雄马上赶到.这是一部动作片,

  13. 如果救她的英雄过几分钟才赶到,这是一部限制级片,

  14. 如果救她的英雄一直没有来,这是一部三级片,

  15. 如果救她的英雄最后来了,却加入了这个男人的行列,那么很不幸,这是一部A片.

  16. 如果少女引吭高歌,男人跟着条hip-hop的热舞,这是小甜甜布兰妮的最新MTV,

  17. 如果男人开始仔细讲解身体各个器官的名称和功能,这是一部科教片,

  18. 如果男人与少女发生搏斗,少女从7楼窗户纵身向下一跃,这是一部新闻记录片.

  19. 如果少女掏出一支小型喷雾器放倒了男人并向观众展示其品牌,这是广告片啊,

  20. 如果少女微笑着答应并对这个男人的提出了些政治上的要求,这是一部.....哦:糟糕!!对不起,拿错了,这是美凤光盘.!

Thursday, October 12, 2006

shanda 's Virus

Shanda's virus

见到上面的AVG(我在Windows下使用的一个杀毒软件)的木马提示了吗,是我在安装从盛大官方网站上下载的热血传奇安装文件,进行升级时候出现的病毒提示,就算把AVG关掉,还是无法登陆传奇和升级,我在想,TMD陈天桥,TMD盛大,你们能不能多做点测试?

10个让你的博客有更多评论的技巧

blogger来自 solidot.org 的一篇文章:
大多数网络社区都有一个1%法则。至于博客,有99%的读者都是个潜伏者,怎么让他们更多的发表评论?


这里提供了10个技巧,博客们可以试试。


  1. 邀请评论。

  2. 问一些问题。

  3. 一个开放式的结尾。

  4. 评论间的互动。

  5. 设置界限。

  6. 要谦虚,读者很多比你更高明。

  7. 成为一个绅士。

  8. 喜欢争辩,好斗?

  9. 用一些方式鼓励高明的评论,比如评分,见解深刻之类。

  10. 容易发表评论。

中国式的冷幽默

基地组织曾派五人潜入中国制造恐怖事件
一人炸立交桥 结果转晕于桥上;
一人炸公交车 结果没挤上车;
一人炸超市 结果遥控器被盗;
一人炸高楼 结果被保安狂揍:"叫你讨薪 叫你上访";
最后一人成功炸矿,死伤数百人。潜回基地后半年都没见新闻报道,遂被基地组织以"撒谎罪"处决

Monday, October 9, 2006

Oh, My God!

ubuntulinux天啊,难以置信,我居然用 Drivel 在linux下post到wordcodess了,应该是那个XML的问题解决直接导致我可以post文章了,受不了了…… 可是没有添加 Tag 的功能,是不是需要去改改Drivel的源代码呢?

未完成

发现自己在wordcodess中还有几个在 "Drafts" 中的日志:

  • Rails on Ruby fastcgi install

  • 使用Javascript+CSS实现圆角效果

  • Linux 与 Web 开发简介

来成都已经有两个月了,突然感觉时间的无情,想想人生会有几个两个月呢?不知道明天会发生什么事,所以每天都是新的,哲学家这么说,其实所有的人都是这么说。
----
日志还没写完,天府的服务器被攻击了。现在才才恢复,都不知道写到哪里了,又不想去想。不过刚刚一直在听周杰伦给梁静茹写的新歌“失忆”,还不错哦~~

Sunday, October 8, 2006

vim配置

vim大概是从大四的开始就一直在用的一些配置文件,好象是从gentoo的开发者站点上抓下来的吧 :)
[vim config file]
set ai nocp digraph ek hid ru sc wmnu noet nosol si
set bs=2 fo=cqrt ls=2 shm=at ww=,h,l ts=4 sw=4
set com=s1:/*,mb:*,ex:*/,://,b:# syn=on filetype=on
set vi=%,'50,\"50,:50 lcs=tab:>-,trail:.,extends:>
set pt= shm=I tm=750 nomore modelines=5 hls!
syn on

ino gj
ino gk
nno gj
nno gk

nno :set hls!set hls?
nno :syn clear
nno :set nu!set nu?

if has("gui_running")
colo darkblue
set gfn=Bitstream\ Vera\ Sans\ Mono\ 8
else
colo ubuntu
" colo desert
" colo elflord
endif

Thursday, October 5, 2006

博客的Feed终于正常了

FeedBurner博客的feed(RSS)差不多半年来都是“坏”掉的 ,可能不止半年了吧 :( ,这两天没放假。所以决定把它修复了。
查看了WordPress support 上了一些资料,知道是由于PHP脚本的 前后的空白行引起的,但是我查看了大部分的PHP脚本后都没有结果,最后按照这个方法,在禁用了一两个插件后终于ok了。
资料:


update/Oct,7,2006

今天终于找到原因了,结果是我使用的一个 recent comments 这个插件最后的一个空行。