2009年10月26日 星期一

[SEO]讓GOOGLE重新收錄被封的站

不知大家沒有用過google網站管理員工具,其實很好用的,功能也很強大。建議SEOer都要去熟悉的操作這個平臺,google網站管理員工具的確是給我們帶來了很多方便,在這裡風采依揚講一下被google封殺的網站怎麼樣去讓google重新收錄。
當發現被google封殺的站,在沒有建立google網站管理員工具時,建議大家馬上去註冊,添加被封殺的網站進去。

可以說目前google的反作弊小組的效率是很高的了,以上截圖中提示站長目前該站被K站並且告訴站長為什麼要封殺該站,點擊:消息中心,googe反作弊小組會把封殺網站的理由發到消息中心中。

仔細看gogle發給你的信,並瞭解Google 品質指南的內容,並處理掉你作弊的痕跡,以下是消息中心詳細內容:

仔細看gogle發給你的信,並瞭解Google 品質指南的內容,並處理掉你作弊的痕跡,以下是消息中心詳細內容:

Good!當我們瞭解為什麼被K站,並去掉了作弊痕跡,去google網站管理員工具提交“提交重新審核申請”,提交重新審核申請的內容要寫誠懇一點,並保證遵守 Google 品質指南。
這裡要提到的是,被K的站被google解封,之後又被封,那麼這站就別想讓google再解封的了,因為google只有給你一次機會的,所以要好好的珍惜這一次的機會。
再次表揚一下google作弊小組的效率,在怎麼短的時間內處理重新審核網站,目前來說處理好的話三天內可以重新被收錄,風采依揚試過提交一天后被重新收錄。

2009年10月23日 星期五

apache net helpmsg 3547

這個問題搞了我好久
apache一直不能啟動

最後發現

是因為80port被吃掉了

是誰吃掉勒

開始>執行>cmd

輸入netstat -nab


哈 有沒有找到一個:port 80

轉載至 http://orange21.pixnet.net/blog/post/17512253



原來有這麼方便的技巧

cmd指令真是太神奇了

2009年10月21日 星期三

希望你能喜歡這個故事並希望它能為你帶來好運。

一天,一個盲人帶著他的導盲犬過街時,一輛大卡車失去控制,直衝過來,盲人當場被撞死,他的導盲犬為了守衛主人,也一起慘死在車輪底下。

主人和狗一起到了天堂門前。
一個天使攔住他倆,為難地說:對不起!現在天堂只剩下一個名額,你們兩個中必須有一個去地獄。
主人一聽,連忙問:我的狗又不知道什麼是天堂、什麼是地獄,能不能讓我來決定誰去天堂呢?
天使鄙視地看了這個主人一樣,皺起了眉頭,她想了想說:很抱歉!先生,每一個靈魂都是平等的,你們要通過比賽決定由誰上天堂。
主人失望地問:哦!什麼比賽呢?
天使說:這個比賽很簡單,就是賽跑,從這裡跑到天堂的大門,誰先到達目的地,誰就可以上天堂。不過,你也別擔心,因為你已經死了,
所以不再是瞎子,而且靈魂的速度跟肉體無關,越單純善良的人速度越快。
主人想了想,同意了。

天使讓主人和狗準備好,就宣佈賽跑開始。她滿心以為主人為了進天堂,會拼命往前奔,誰知道主人一點也不忙,慢吞吞地往前走著。
更令天使吃驚的是,那條導盲犬也沒有奔跑,它配合著主人的步調在旁邊慢慢跟著,一步都不肯離開主人。
天使恍然大悟:原來,多年來這條導盲犬已經養成了習慣,永遠跟著主人行動,在主人的前方守護著他。
可惡的主人,正是利用了這一點,才胸有成竹、穩操勝券,他只要在天堂門口叫他的狗停下就可以了。
天使看著這條忠心耿耿的狗,心裡很難過,她大聲對狗說:你已經為主人獻出了生命,現在你這個主人不再是瞎子,你也不用領著他走路了,你快跑進天堂吧!

可是,無論是主人還是他的狗,都像是沒有聽到天使的話一樣,仍然慢吞吞地地往前走,好像在街上散步似的。
果然,離終點還有幾步的時候,主人發出一聲口令,狗聽話地坐下了,天使用鄙視的眼神看著主人。
這時,主人笑了,他扭過頭對天使說:我終於把我的狗送到天堂了,我最擔心的就是它根本不想上天堂,只想跟我在一起…所以我才想幫它決定,請你照顧好它。天使愣住了。

主人留戀地看著自己的狗,又說:能夠用比賽的方式決定真是太好了,只要我再讓它往前走幾步,它就可以上天堂了。
不過它陪伴了我那麼多年,這是我第一次可以用自己的眼睛看著它,所以我忍不住想要慢慢地走,多看它一會兒。
如果可以的話,我真希望永遠看著它走下去,不過天堂到了,那才是它該去的地方,請你照顧好它。
說完這些話,主人向狗發出了前進的命令,就在狗到達終點的一刹那,主人像一片羽毛似的落向了地獄的方向。
他的狗見了,急忙掉轉頭,追著主人狂奔。滿心懊悔的天使張開翅膀追過去,想要抓住導盲犬,不過那是世界上最純潔善良的靈魂,速度遠比天堂所有的天使都快。
所以導盲犬又跟主人在一起了,即使是在地獄,導盲犬也永遠守護著它的主人。
天使久久地站在那裡,喃喃說道:我一開始就錯了,這兩個靈魂是一體的,他們不能分開…

最後,我要說:這個世界上,真相只有一個,可是在不同人眼中,卻會看出不同的是非曲直。
這是為什麼呢?其實,道理很簡單。因為每個人看待事物,都不可能站在絕對客觀公正的立場上,而是或多或少地戴上有色眼鏡,用自己的經驗、好惡和道德標準來進行評判,結果就是——我們看到了假像。

友誼的幸福之一,是知道了可以向誰傾吐秘密。
如果你收到了這封信,是因為有人在默默的祝福你,因為你也愛你身邊的一些人。
如果你總說太忙,不能將這封信轉寄出去,老是說:改天再寄。你將永遠都不會去做這件事的。
所以,不要找藉口,靜心的看看這篇古老印度來的故事,然後決定為你的朋友們作一些事,從傳寄這封信開始。
當你說:你是我的好朋友時,請認真的說出來。
當你道歉時請看著對方的眼睛。
永遠不要嘲笑別人的夢想。
不要隨便給一個人定性。
說話時要慢,思想時要快。
打電話的時候請你微笑,對方一定感覺得到。

2009年10月15日 星期四

How do I use jQuery’s form.serialize but exclude empty fields

You could do it with a regex...

var orig = $('#myForm').serialize();
var withoutEmpties = orig.replace(/[^&]+=\.?(?:&|$)/g, '')
Test cases:

orig = "a=&b=.&c=&d=.&e=";
new => ""

orig = "a=&b=bbb&c=.&d=ddd&e=";
new => "b=bbb&d=ddd&" // dunno if that trailing & is a problem or not

.replace(/[^&]+=\.?(&|$)/g, '') covers both cases. But I'd add .replace(/&$/, '') to remove the trailing &

2009年10月12日 星期一

Stop net-snmp log messages

I, along with many of my peers, complain that snmpd (from net-snmp) writes too many messages to the log file.

Jan 8 13:45:02 example snmpd[2048]: Connection from UDP: [10.0.0.1]:51890
Jan 8 13:45:02 example snmpd[2048]: Received SNMP packet(s) from UDP: [10.0.0.1]:51890
Jan 8 13:45:02 example last message repeated 2 times
Now imagine that repeated in every server, every time your monitoring server polls your host. This is a major mess and fills up the logs with crap. (If you can't imagine, it's 1,440 messages per host, and I monitor 18 hosts, which is 25,920 messages a day.)

The fault lies with tcpwrappers support. The firewalls are configured so that only the monitoring host can connect to the snmpd port. If you're not supposed to connect to snmpd, you can't. Thus, every connection is legitimate and doesn't need to be logged.

But how does one stop the logging?

The man page refers to a configuration option, dontLogTCPWrappersConnects, however this doesn't actually work and just gives an error. Let's ignore that then.

Reading the source (for 5.3.2) we find that the errors are written as follows: Skip code

--- net-snmp-5.3.2/agent/snmp_agent.c 2007-08-17 01:31:40.000000000 +1200
if ((log_addresses && (1 == rc)) ||
netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_VERBOSE)) {
snmp_log(LOG_INFO, "Received SNMP packet(s) from %s\n", addr);
}
...
if (hosts_ctl(name, STRING_UNKNOWN, sbuf, STRING_UNKNOWN)) {
snmp_log(allow_severity, "Connection from %s\n", addr_string);
} else {
snmp_log(deny_severity, "Connection from %s REFUSED\n",
addr_string);
As you can see, legitimate connections are logged at LOG_INFO and allow_severity (which is also set to LOG_INFO). Unfortunately, pretty much every other important message from snmpd is logged at this level, so if you're going to disable this silly chatter you have to disable almost every log message. If you're good at coding C, find the above blocks of code and comment out the snmp_log calls.

How? On Redhat Server 5 and Redhat Enterprise Linux 4 you simply create the file /etc/snmp/snmpd.options and put in there:

OPTIONS="-Lf /dev/null -p /var/run/snmpd.pid"
This is pretty much the default options (grep OPTIONS /etc/init.d/snmpd to compare) but with the removal of -Lsf, thus disabling logging.

For Fedora Core 10 and CentOS 5.2 the options file can be in /etc/sysconfig/snmpd.options, and if that file exists, use it instead.

Thank goodness for quiet log files!

摘自:http://www.stat.auckland.ac.nz/~kimihia/net-snmp

2009年10月11日 星期日

How To Count Inodes For Each Directory

Hostgator whom this website is hosted with limits you to 50,00o inodes per account. So it not unlimited as they claim but nonetheless its pretty good hosting ..

Here is a script that I wrote which helps you count each inodes in a directory

#!/bin/bash
# count inodes for each directory
LIST=`ls`
for i in $LIST; do
echo $i
find $i -printf "%i\n" | sort -u | wc -l
done
Also this line seems good for figuring out which directory is using up the most space

du -ks ./* | sort -n

2009年10月9日 星期五

Linux Ramdisk安裝教學2

我目前是使用這個方法
$ mkdir /path/to/ramdisk
$ echo "#partition of ramdisk
ramdiskTitle /path/to/ramdisk tmpfs defaults,size=2000M 0 0" >> /etc/fstab
$ mount -a

2009年10月8日 星期四

如何方便的找出容量很大的資料夾

find / -type d | xargs -i du -sh {} | sort -n > /tmp/biggggggg.log

2009年10月7日 星期三

於CentOS 5將snmpd log從messages中獨立出來

由於snmpd記錄筆數相當多,造成在閱讀messages其他log的不便,因此將snmpd的log用另一個檔案獨立紀錄。
假設將snmpd的log記錄到syslog facility local0中:

首先在syslog中設定local0
/etc/syslog.conf

local0.* /var/log/snmpd.log
接著更改snmpd的參數
/etc/sysconfig/snmpd.option

OPTIONS="-Ls 0-4 0 -A -Lf /dev/null -p /var/run/snmpd.pid"
再來重新啟動syslogd與snmpd

service syslog restart
service snmpd restart

摘自:http://kaien.wikidot.com/linux:rhel-snmp-syslog

2009年10月6日 星期二

非mmcache!Memcached的應用:多網站伺服器 PHP 共享 Session

請注意是 Memcached 不是 mmcache,很多人搞不清楚他們兩個的不同!多半玩過 PHP 的人大概都聽過 mmcache,它是一個預編譯緩衝的 PHP 加速程式,能夠提升 PHP 的執行效能。但很少人聽過 Memcached ,因為大多人乍看之下都以為它是mmcache,使得它沒什麼機會介紹自己。事實上,若您正打算架構一個真正高負載的大型網站系統,你需要了解的並不是 mmcache,而是 memcached。

Memcached 是什麼?顧名思義,他是由記憶體(Memory)和暫存(cache)所組合起來的常駐程式(Daemon),你也可以稱它為『暫存伺服器』。 Memcached 能提供一個暫存資料的服務,透過網路供其他電腦使用。Memcached 有什麼用途?最常見的應用就是在網站伺服器的叢集,它能讓許多的網站伺服器 Session 互相流通使用。如果你正在傷透腦筋煩惱這一點,恭喜你找到解決方法了!

想要在網站伺服器的叢集中,多網站伺服器 Session 互相流通使用,首先你必須將 Memcached 架起來當 Session 分享伺服器,這邊建議你使用大的記憶體,最好是能多大就有多大,因為 Memcached 並不會以硬碟當資料暫存,而是會完全跑在記憶體上,所以若記憶被用完了,Memcached 就會無法再存放更多資料。

接著,你必須修改 PHP 的 Session Save Handler,讓 PHP 懂得利用 Memcached Server 存放 PHP 的 Session 資料並能從 Memcached Server 取出 Session 的資料。PHP提供了 session_set_save_handler() 函式讓我們能輕易修改 Session Save Handler ,以下是我修改後的 PHP 程式碼,你必須在呼叫 session_start() 之前使用:




define("SHARED_SESS_TIME", 3600); // Timeout

// Session Class by Fred

class Shared_Session
{
function init()
{
ini_set("session.use_trans_sid", 0);
ini_set("session.gc_maxlifetime", SHARED_SESS_TIME);
ini_set("session.use_cookies", 1);
ini_set("session.cookie_path", "/");
ini_set("session.cookie_domain", ".yourdomain.com.tw");

session_module_name("user");
session_set_save_handler(
array("Shared_Session", "open"),
array("Shared_Session", "close"),
array("Shared_Session", "read"),
array("Shared_Session", "write"),
array("Shared_Session", "destroy"),
array("Shared_Session", "gc")
);
}

function open($save_path, $session_name) {
return true;
}

function close() {
return true;
}

function read($sesskey) {
global $memcache;

return $memcache->get($sesskey);
}

function write($sesskey, $data) {
global $memcache;

$memcache->set($sesskey, $data, SHARED_SESS_TIME);

return true;
}

function destroy($sesskey) {
global $memcache;

$memcache->delete($sesskey);
$memcache->flush_all();

return true;
}

function gc($maxlifetime = null) {
return true;
}
}

$GLOBALS["memcache"] = memcache();
$GLOBALS["memcache"]->add_server("192.168.1.1", 11211);
$GLOBALS["memcache"]->add_server("192.168.1.2", 11211);
Shared_Session::init();

?>


其中粗字體的部分,是要特別修改的地方:

3600 是 Session 的生命周期﹝以秒為單位﹞,這應該不用再做太多解釋。
yourdomain.com.tw 是你的網域名稱:想像一個情況若是 Loadbalance 在用戶第一次連線分配用戶到A伺服器,第二次連線分配給同一用戶到B伺服器,會導致 B 伺服器無法透過 cookies 取得 A 伺服器分配給用戶的 session_id,因為 cookies 無法跨網域存取,解決方法是必須修改 cookies 的網域設定,讓 www1.yourdomain.com.tw、www2.yourdomain.com.tw、www3.yourdomain.com.tw...等等,都可以共同存取同一個 cookies ,以取得同一個 session_id,故此時你必須設定成為『.yourdomain.com.tw』。
192.168.1.1 這是你的 Memcached Server 的 IP 位置,這裡值得提的是 add_server() 方法,你可以有多行設定許多 IP 做 Loadbalance 負載分配,前面也講到 Memcached 是純粹使用記憶體,若其中一台機器記憶體滿了,本方法可以從中找到另一台可用的機器使用。故你可以建立一個 Memcached 的叢集來處理 Session。

因為我偷懶, Memcached 的安裝方法就沒寫了,去求助 google 大神,它應該會告訴你更多詳細的安裝資料。其實 Memcached 除了可應用在 Session 共享上,也可以應用在資料庫的資料暫存緩充,降低SQL Server負擔以提升速度。Memcached多好用?就看你怎麼用了!

摘自:http://fred-zone.blogspot.com/2006/08/mmcachememcached-php-session.html

2009年10月5日 星期一

pause in setTimeout

Hi, I have implemented a wrapper for "pausing a timed functional call using setTimeout" function in javascript. Here is the code ..

function Animator_Class(){
this.TID = null ;
this.funvar = null;
this.interval = null;
this.start_time = null;
}

Animator_Class.prototype.start_timer = function(){
this.TID = window.setTimeout(this.funvar , this.interval);
this.start_time = (new Date()).getTime();
}


Animator_Class.prototype.pause_timer = function(){
var curr_time = (new Date()).getTime();
var elapsed_time = curr_time - this.start_time ;
this.interval = this.interval - elapsed_time;
window.clearTimeout(this.TID);
}

Animator_Class.prototype.setTimeout = function(funvar, interval){
this.funvar = funvar;
this.interval = interval;
this.TID = window.setTimeout(funvar,interval);
this.start_time = (new Date()).getTime();
}
Animator_Class.prototype.clearTimeout = function(){
window.clearTimeout(this.TID);
}

Now if you want to use it in your code, use like this,,

TOB = new Animator_Class();
TOB.setTimeout('alert("OK")', 5000);

and in html forms use like,,





simple but important hack,,,,,,,,, :)

摘自:http://techfandu.blogspot.com/2009/02/pause-in-settimeout.html

2009年10月2日 星期五

Optimize your URLs , Best practices for crawling & indexing

Agenda

1.Context: Why do you care?
2.Reduce inefficient crawling of your site
 1.Avoid maverick coding practices
 2.Remove user-specific details from URLs
 3.Optimize dynamic URLs
 4.Rein in infinite spaces
 5.Disallow actions Googlebot can’t perform
2.Get your preferred URLs indexed
3.Resources


Why do you care?
The Internet from > 10^6feet

How do search engines deal with this?

Focus on efficiency in below steps:
1.Discover unique content
2.Prioritize crawling
 1.Crawl new content
 2.Refresh old content
 3.Crawl fewer duplicates
3.Keep all the good stuff in the index
4.Return relevant search results

Funnel your crawling “budget” toward your most important content


Avoid maverick coding practices
Discourage alternative encodings
shop.example.com/items/Periods-Styles__end-table_W0QQ_catrefZ1QQ_dmptZAntiquesQ5fFurnitureQQ_flnZ1QQ_npmvZ3QQ_sacatZ100927QQ_trksidZp3286Q2ec0Q2em282
Where [W0 = ?] and [QQ= &]

Eliminate expand/collapse "parameters"
www.example.com/ABN/GPC.nsf/MCList?OpenAgent&expand=1,3,15

Remove user-specific details from URLs
Remove from the URL path
www.example.com/cancun+hotel+zone-hotels-1-23-a7a14a13a4a23.html
www.example.com/ikhgqzf20amswbqg1srbrh55/index.aspx?tpr=4&act=ela
Creates infinite URLs to crawl

Difficult to understand algorithmically
Keywords in name/value pairs are just as good as in the path
www.example.com/skates/riedell/carrera/
www.example.com/skates.php?brand=riedell&model=carrera

Optimize dynamic URLs
Dynamic URLs contain name/value pairs
skates.php?size=6&brand=riedell

Create patterns for crawlers to understand
www.example.com/article.php?category=1&article=3&sid=123
www.example.com/article.php?category=1&article=3&sid=456
www.example.com/article.php?category=2&article=3&sid=789

Use cookies to hide user-specific details
www.example.com/skates.php?query=riedell+she+devil&id=9823576
www.example.com/skates.php?ref=www.fastgirlskates.com&color=red

Rein in infinite spaces
Uncover issues in CMS
www.example.com/wiki/index.php?title=Special:Ipblocklist&limit=250&offset=423780&ip=

Disallow actions Googlebot can’t perform
Googlebot is too cheap to ‘Add to cart’
Disallow shopping carts
http://www.example.com/index.php?page=EComm.AddToCart&Pid=3301674647606&returnTo=L2luZGV4LnBocD9wYWdlPUVDb21tLlByb2QmUGlkPTMzMDE2NzQ2NDc2OTI=

Googlebot is too shy to ‘Contact us’
Disallow contact forms, especially if they have unique URLs
http://www.example.com/bb/posting.zsp?mode=newtopic&f=2&subject=Seeking%20information%20about%20roller%20derby%20training

Googlebot forgets his password a lot
Disallow login pages
https://www.example.com/login.asp?er=43d9257de47d8b08a91069cccb584ab83ff21140bd46e81656dab3507f45d1ab079cd77244231e557d724dc1df1a641

Get your preferred URLs indexed
Set your preferred domain in Webmaster Tools
www.example.com vs. example.com

Put canonical URLs in your Sitemap

Use the new rel=“canonical” on any duplicate URLs


Get feedback in Webmaster Tools

摘自:http://docs.google.com/present/view?id=dgk2ft62_18cvjx4nk4

wibiya widget