Blog chia sẻ và thảo luận về IT|Programming Language|Search Engine Optimization|Data Base|Linux| ...

datnguyen

Lucene là gì ?

+ No comment yet

Lucene là gì?

Lucene là phần mềm mã nguồn mở, dùng để phân tích, đánh chỉ mục và tìm kiếm thông tin với hiệu suất cao bằng Java. Lucene được phát triển đầu tiên bởi Doug Cutting được giới thiệu đầu tiên vào tháng 8 năm 2000. Tháng 9 năm 2001 Lucene gia nhập vào tổ chức Apache và hiện tại được Apache phát triển và quản lý. Cần lưu ý rằng Lucene không phải là một ứng dụng mà chỉ là một công cụ đặc tả API cần thiết cho việc một search engine. Được xây dựng và thiết kế theo hướng hướng đối tượng nên các API cũng được cung cấp theo dạng hướng đối tượng. Mặc dù thiết kế và xây dựng ban đầu từ java nhưng hiện nay cũng đã có một số phiên bản cho các ngôn ngữ khác : .NET, C++, Perl, ….

Google AdWords Voucher ?

+ No comment yet

1. Adwords Voucher là gì?
Adwords voucher (hay adwords coupon, mã thưởng google) là mã giảm giá đặc biệt được tạo bởi Google bao gồm 23 kí tự có dạng: 4CWS-6MXD-AVKQ-NW15-XXX. Khi bạn nhập mã này vào account adwords, account của bạn sẽ nhận được tiền thưởng từ google. Giá trị tiền thưởng tùy thuộc vào loại voucher mà bạn nhập vào. Ví dụ: 500.000đ, 2 triệu...
2. Tôi phải dùng mã adwords voucher như thế nào để có được tiền thưởng?
Bước 1: Tạo 1 account adwords.
Bước 2: Kích hoạt account bằng thẻ tín dụng.
Bước 3: Click “Thanh toán” (Billing) > “Tùy chọn thanh toán” (Billing preferences)
Bước 4: Kéo xuống dưới cùng, nhập mã vào ô “Mã bù lại” (Redeem Coupon) rồi click nút “Lấy lại” (Redeem)
Bước 5: Bạn sẽ nhận được thông báo xác nhận thành công. Chờ 1 lát rồi vào phần Thanh toán > Tóm lược thanh toán, bạn sẽ thấy tiền được chuyển vào tài khoản.

3. Tôi có thể sử dụng bao nhiêu mã voucher với 1 account adwords?
Chỉ 1 mã voucher cho 1 account.
4. Tôi có thể dùng adwords voucher với account cũ của tôi không?
Không, Account adwords của bạn phải là account mới trong vòng 14 ngày trở lại.
5. Vậy nếu tôi đã có 1 account cũ rồi. Tôi phải làm gì để dùng voucher?
Hãy tạm dừng account hiện tại của bạn và mở 1 account mới.

Lỗi không cài được Yahoo!Messenger, vì sao?

+ No comment yet

Lỗi không cài được Yahoo!Messenger, vì sao?

Có một trong số trường hợp phổ biến không cài đặt được Yahoo! Messenger:

1/ Khi cài đặt Yahoo!Messenger mà máy bạn hiển thị thông báo lỗi “The application failed to initialize properly” hoặc "This application has failed to start because the application configuration is incorrect" là do trường hợp chương trình tối ưu hóa nào đó. Hoặc chương trình diệt virus nào đó đã chặn nhầm và đã làm tắt hoặc mất chức năng hỗ trợ Windows Installer. Vì vậy bạn nên gỡ bỏ Yahoo!Messenger rồi kiểm tra, vào menu Start mở hộp Run gõ services.msc và nhấn Enter. Ngay lập tức công cụ Services xuất hiện. Trong công cụ Services > nhấn vào cột Startup Type > tìm hàng chữ Windows Installer chọn Properties > khung cửa sổ Windows Installer Properties thì bạn kéo thanh cuộn Startup Type, chỉnh lại thành Automatic và nhấn OK để hoàn tất. Nếu sau khi thao tác xong mà vẫn không cài đặt được Yahoo!Messenger thì khi ấy, bạn cần phải cài đặt Windows Installer và Microsoft Visual C++ 2008 SP1 Redistributable Package sau đó mới tiến hành cài đặt lại Yahoo!Messenger được.

Read more

Một số thủ thuật, phím tắt trong Eclipse

+ No comment yet


Read more

Eval() và include()

+ No comment yet


Eval() và include()Có thể hiểu nôm na, eval() sẽ nhận đối số là một chuỗi và thực thi chuỗi đó như một đoạn code PHP. Vì vậy, đối số truyền cho eval() phải là một chuỗi thỏa các điều kiện về cú pháp của PHP. VD:

CODE

<?

$str = ‘echo “Hello world !!!”;’;

eval($str);

?>


Một VD khác:

CODE

<?

$a = “Hello world !!!”;

$b = “empty”;

echo “Bien \$b la: <b>$b</b><br>”;

echo “Sau khi eval(), “;

// gán giá trị biến $a cho biến $b và hiện ra thông báo về giá trị mới của biến $b

$str = ‘$b = $a; echo “bien \$b bay gio la: <b>$b</b>”;’;

eval($str);

?>


include_once() sẽ gộp một file được xác định trong quá trình một đoạn mã thực thi. Về cách hoạt động, nó rất giống include() nhưng khác ở chỗ, nếu file nào đó đã được gộp thì include_once() sẽ không gộp lại lần nữa và trả về trị là FALSE. VD:

CODE

*** File include: inc1.php **********

<?

echo “Toi duoc include.<br>”;

?>

*** File thuc thi: ex_inc_11.php ********

<?

include ‘inc1.php’;

include_once ‘inc1.php’;

?>

*** File thuc thi: ex_inc_12.php ********

<?

include ‘inc1.php’;

include ‘inc1.php’;

?>


VD khác:

CODE

*** File include: inc2.php **********

<?

echo “Toi duoc include.<br>”;

function doSth() {

echo “Hello world !!!<br>”;

}

?>


*** File thuc thi: ex_inc_2.php ********

<?

include ‘inc2.php’;

doSth();

// include ‘inc2.php’; <— sẽ có báo lỗi vì hàm doSth() đã được định nghĩa.

include_once ‘inc2.php’; // sẽ không có báo lỗi, nhưng hàm này cũng không được thực hiện

?>


Chúng ta có thể handle được các file nào đã được include trong suốt đoạn code bằng hàm get_included_files(). Hàm này sẽ trả về một mảng chứa các file đã được include. VD:

CODE

<?

include ‘inc1.php’;

include ‘inc2.php’;

$inc = get_included_files();

print_r($inc);

?>


Goodbye my lover !

+ No comment yet

Không biết người khác  khi nghe bài hát này sẽ cảm thấy ra sao nhưng với tôi  nó  thật sự hay và cảm xúc (vì phong cách của James Blunt và vì tâm trạng lúc nghe ...). Dù sao thì , tình cảm lúc nào cũng khó nói và diễn tả . Khi chia tay ai đó , nhất là với người mình đã từng yêu đều là những điều thật là khó khăn , phải không ?



Did I disappoint you or let you down?
Should I be feeling guilty or let the judges frown?
‘Cause I saw the end before we’d begun,
Yes I saw you were blinded and I knew I had won.
So I took what’s mine by eternal right.
Took your soul out into the night.
It may be over but it won’t stop there,
I am here for you if you’d only care.
You touched my heart you touched my soul.
You changed my life and all my goals.
And love is blind and that I knew when,
My heart was blinded by you.
I’ve kissed your lips and held your head.
Shared your dreams and shared your bed.
I know you well, I know your smell.
I’ve been addicted to you.
Goodbye my lover.
Goodbye my friend.
You have been the one. -*
You have been the one for me.(2x)
I am a dreamer but when I wake,
You can’t break my spirit – it’s my dreams you take. -*
And as you move on, remember me,
Remember us and all we used to be
I’ve seen you cry, I’ve seen you smile.
I’ve watched you sleeping for a while.
I’d be the father of your child.
I’d spend a lifetime with you. -*
I know your fears and you know mine.
We’ve had our doubts but now we’re fine,
And I love you, I swear that’s true.
I cannot live without you.
Goodbye my lover.
Goodbye my friend.
You have been the one. -*
You have been the one for me.(2x)
And I still hold your hand in mine.
In mine when I’m asleep.
And I will bear my soul in time,
When I’m kneeling at your feet.
Goodbye my lover
Goodbye my friend.
You have been the one.
You have been the one for me.(2x)
I’m so hollow, baby, I’m so hollow.
I’m so, I’m so, I’m so hollow.(X2)
....
Và anh yêu em, anh thề điều đó là thựcAnh không thể sống mà thiếu vắng bóng em
[x2]
Tạm biệt người yêu của anh
Tạm biệt người bạn của anh
Em là người duy nhất
Em là người duy nhất dành cho anh
Và anh vẫn nắm chặt tay em đan trong tay anh
Hai tay ta đan vào nhau khi anh ngủ vùi
Và anh sẽ kịp lúc thổ lộ tâm tư mình
Khi anh quỳ xuống cạnh chân em
Tạm biệt người yêu của anh
Tạm biệt người bạn của anh
Em là người duy nhất
Em là người duy nhất dành cho anh
[x2]
Tạm biệt người yêu của anh
Tạm biệt người bạn của anh
Em là người duy nhất
Em là người duy nhất dành cho anh
[x2]
Anh thật trống vắng, em yêu à, anh thật trống vắng


Kiểm tra sự tồn tại file ảnh (image)

+ No comment yet
Hôm nay tôi đã fix 1 lỗi về đường dẫn file ảnh, công việc của tôi là kiểm tra file ảnh đó có tồn tại hay không và nếu không tồn tại thì phải thay bằng một ảnh mặc định nào đó.  Nếu là bạn, bạn sẽ dùng hàm gì ? Tôi nghĩ sẽ có nhiều người nghĩ ngay đến hàm file_exists() đã khá quen thuộc.  Nhưng khi tôi thử áp dụng thì nó lại cho kết quả không đúng mặc dù file ảnh mà tôi kiểm tra là có thực. Sau một hồi tìm kiếm, tôi đã có câu trả lời, đó là trong trường hợp này hàm  file_exists() sẽ kiểm tra thư mục của file ảnh, do đó nó sẽ luôn trả về false. Đồng thời tôi cũng tìm được giải pháp cho vấn đề trên, đó là hàm getimagesize() .
Tại sao là hàm getimagesize() ?
Hàm này sẽ trả về kích thước của một file ảnh bất kì, kết quả được chứa trong một mảng (array) với 7 phần tử. Nói cách khác là nếu hàm này trả về array thì file ảnh đó là có thực. (Không có ảnh thì lấy đâu ra kích thước ^^)
Để hiểu hơn, các bạn có thể xem ví dụ dưới đây
<?php
    $file_path = 'http://tanviet.speedymirror.com/wp-content/uploads/2011/07/border_radius.jpg' ;
    //Ham file_exists()
    if (file_exists($file_path)) {
        echo "This file exists!";
    }
    else {
        echo "This file does not exist";
    }
    //Ham getimagesize() cho ket qua chinh xac hon
    $url = getimagesize($file_path);
    if(is_array($url)){
        echo "<br />This file exists!";
    }
    else {
         echo "<br />This file does not exist!";
    }
?>
Kết quả
This file does not exist 
This file exists!

 

Kết luận,

Qua kết quả nhận được có thể nhận thấy sự khác nhau khi sử dụng hàm file_exists()  getimagesize(), từ đó bạn có thể áp dụng cho nhiều trường hợp khác. Tôi hi vọng bài viết này sẽ giúp ích phần nào cho công việc lập trình của các bạn.

HTML5

+ No comment yet
Các bạn thân mến, các bài trước chúng ta đã tìm hiểu về việc thiết kế web bằng html5, cách cắt bố cục website với html5 … Có lẽ các bạn cũng nhận thấy được điểm khác biệt cơ bản nhất của html4 và html5 là việc ra đời tag <section>, <header>, <article>, <aside>, <footer>, <nav> … thay thế cho <div>.  Như vậy khi html5 phổ biến, tag <div> sẽ còn tồn tại không, có thể thay thế hoàn toàn div không bằng tag khác, vậy nên kết hợp chúng như thế nào, bài viết sẽ chia sẽ cho chúng ta các điểm khác biệt và gợi ý cho việc kết hợp của các tag trên.
Trước tiên mời các bạn tìm hiểu công dụng của các tag:
<div> :  dùng để chứa một nội dung gồm tất cả các dạng và vị trí.
<header> – html5:  chuyên dùng để thể hiện nội dung nằm trên cùng
<nav> – html5:  thể hiện menu ngang cho site
<aside> – html5:  chuyên dùng thể hiện những phần trong khung nội dung nhưng được cố định không thay đổi như các menu phụ ở cột right, left, …
<section> – html5: thể hiện một nội dung cụ thể
<article> – html5: thể hiện một phần độc lập của site, có thể bao gồm nhiều section và ngược lại.
<footer> – html5:  thể hiện nội dung ở phần cuối trang.
Qua tìm hiểu sơ qua về các tag mới, mọi người thấy rằng trước đây <div> thống lĩnh với các thuộc tính id, class kèm theo. Giờ đây html5 cho thêm các tag thật ra chúng cũng chỉ là div nhưng định dạng sẵn vị trí để người cắt web đỡ mệt hơn và đặc biệt là đỡ rối hơn (vì trước đây 1 site toàn div thì thật mệt phải không).
Vậy <div> sẽ bị cho vào quên lãng chăng, thật sự không thể bỏ do thói quen người cắt html dù có thể thay thế hoàn toàn div bằng section. Nhưng điều quan trong hơn hết mà chúng ta cần tìm hiểu là cách kết hợp nhưng tag trên sao cho tốt nhất.
Cuộc chiến <div>, <section>, <article> … có lẽ sẽ không mấy gay cấn vì chúng có thể kết hợp với nhau khá tốt, giúp người cắt nhẹ hơn và đỡ nhứt mắt hơn.
Các gợi ý để kết hợp các tag trên:
Trước đây, người cắt html đã quen dùng tất cả là <div>, dù có id, class nhưng cũng không ít khó khăn, giờ đây các bạn có thể kết hợp các tag trên theo 1 trình tự mà bản thân mình thấy thích nhất. Sau đây là các gợi ý:
Gợi  ý 1:
  • Thay tag <header>, <footer>, <nav> vào các ví trí tương tự của chúng.
  • Thay tag <aside> vào vị trí nội dung cố định các trang
  • Thay tag <article> vào vị trí nội dung có thay đổi
  • <section> sẽ thay thế cho những mục lớn bên trong của article, aside
  • Những mục nhỏ trong section ta dùng div cho linh động và dễ dàng.
Cách này rất thuận tiện và dễ truy vấn bởi sử dụng rải các tag ra trên site, những tag nhỏ ta dùng div nên rất linh động. Nhưng có một điểm yếu là nếu website có cấu trúc phức tạp một chút thì hơi khó áp dụng.
Gợi ý 2:
Dùng các tag mới bổ sung từ html5 cho những gì cố định và được thể hiện trong template, có nghĩa là tất cả những gì có trong template không dùng div mà chỉ dùng những tag mới.
Tương tự những phần bên thay đổi từ các trang thì các bạn chỉ dùng div, và như vậy mỗi lần chỉnh sửa ta có thể nhìn vào tag là biết được nên sửa trang ngoài hay template.

Html5 chỉ là sự kế thừa chứ không phải đối mới, điều quan trọng là anh em dânthiết kế web biết cách kết hợp và chọn lựa cách cắt web phù hợp nhất. Trên đây chỉ là những gợi ý, các bạn hãy tự tạo một cái cho riêng mình nha.

Chúc các bạn thành công.

Những công cụ hỗ trợ SEO 2012

+ No comment yet

I. KEYWORDS - Tools dùng phân tích từ khóa...

GOOGLE KEYWORD TOOL - https://adwords.google.com/select/KeywordToolExternal
GOOGLE SUGGEST AND GOOGLE RELATED SEARCHES - http://www.google.com/
KEYWORD SPY - http://www.keywordspy.com/
SPYFU - http://www.spyfu.com/
WORDPOT - KEYWORD DISCOVERY TOOL - http://www.wordpot.com/
GOOGLE INSIGHTS FOR SEARCH - http://www.google.com/insights/search/#
GOOGLE TRENDS - http://www.google.com/trends
ISPIONAGE - http://www.ispionage.com/
KEYWORD DENSITY CALCULATOR - http://www.xml-sitemaps.com/keyword-density-tool.html
KEYWORD NICHE FINDER - http://www.wordstream.com/keyword-niche-finder/
KEYWORD RESEARCH TOOL - http://tools.seobook.com/keyword-tools/seobook/
META GLOSSARY - http://www.metaglossary.com/
METAMEND - KEYWORD DENSITY TOOL - http://www.metamend.com/seo-tools/ke...-analyzer.html
RELATED KEYWORD FINDER - http://www.gorank.com/seotools/ontology/
SEO CENTRO'S KEYWORD SUGGESTION TOOL - http://www.seocentro.com/tools/searc...uggestion.html
SEOCENTRO'S KEYWORD DENSITY TOOL - http://www.seocentro.com/tools/seo/keyword-density.html
THESAURUS.COM - http://thesaurus.com/
UBERSUGGEST - http://ubersuggest.org/
WEBCONFS.COM - KEYWORD DENSITY TOOL - http://www.webconfs.com/keyword-density-checker.php
WORDLE.NET - CREATE WORD CLOUDS - http://www.wordle.net/create
QUINTURA - http://www.quintura.com/

II.PAGE TAGS - Tool dùng phân tích onpage...

META TAG ANALYZER FROM SEOCENTRO - http://www.seocentro.com/tools/searc...-analyzer.html
KEYWORD DENSITY CALCULATOR - http://www.xml-sitemaps.com/keyword-density-tool.html
METAMEND - KEYWORD DENSITY TOOL - http://www.metamend.com/seo-tools/ke...-analyzer.html
PAGERANK.NET - KEYWORD DENSITY ANALYZER - http://www.pagerank.net/keyword-density-analyzer/
PEAR ANALYTICS - META ANALYSIS TOOL - http://www.pearanalytics.com/
PINEBERRY SEO - KEYWORD VS. TAG ANALYSIS TOOL - http://www.pineberry.com/en/analysis-tool/
SEO BROWSER - AS THE SEARCH ENGINE SEE YOU - http://www.seo-browser.com/
SEOCENTRO'S KEYWORD DENSITY TOOL - http://www.seocentro.com/tools/seo/keyword-density.html
TITLE TAG RELEVANCY CHECKER - http://int-seo.com/title_creator_tool.php
WEBCONFS.COM - KEYWORD DENSITY TOOL - http://www.webconfs.com/keyword-density-checker.php
WOORANK - http://www.woorank.com/
BRUCE CLAY'S SEOTOOLSET TOOLS - http://www.seotoolset.com/tools/free_tools.html
LETTER COUNT UTILITY - http://www.lettercount.com/
LINK NINJAS ON PAGE OPTIMIZATION TOOL - http://www.internetmarketingninjas.c...-optimization/
SEO NINJAS ON PAGE COMPARISON TOOL - http://www.internetmarketingninjas.c...s/seo-compare/
SEO PAGE TAG COUNTER TOOL - http://intinc.com/support/title-desc...unter-tool.htm
SEOWORKERS.COM PAGE CHECKER - http://www.seoworkers.com/tools/analyzer.html
SPYDERMATE - http://spydermate.com/
TAG CROWD - KEYWORD DENSITY AND TAG ANALYSIS - http://www.tagcrowd.com/

III. LINK BUILDING - Tool hỗ trợ xây dựng backlink...

LINKDIAGNOSIS.COM - http://www.linkdiagnosis.com/
OPEN SITE EXPLORER - http://www.opensiteexplorer.org/
TOPSY - http://topsy.com/
AHREFS - http://ahrefs.com/
BACKLINK WATCH - http://www.backlinkwatch.com/
MAJESTIC SEO - https://www.majesticseo.com/
SEOCENTRO'S PAGERANK CHECKER - http://www.seocentro.com/tools/searc.../pagerank.html
SOLO SEO LINK SEARCH TOOL - http://www.soloseo.com/tools/linkSearch.html
WEBMASTER TOOLS FROM BING - http://www.bing.com/toolbox/webmasters/
ALEXA SITEINFO - http://www.alexa.com/siteinfo
PRCHECKER - PAGERANK CHECKER - http://prchecker.info/
SEO LINK BUILDING QUERY GENERATOR - http://tools.buzzstream.com/link-bui...uery-generator
THE FREE LINK TOOL - http://www.thefreelinktool.com/
TOUCH GRAPH'S LINK TOOL - http://www.touchgraph.com/seo

IV. NEWS - Tools hõ trợ PR...

PRESSRELEASE POINT - http://www.pressreleasepoint.com/
PRLOG - FREE PRESS RELEASE SERVICE - http://www.prlog.org/
PRWEB - http://www.prweb.com/
RELEASE NEWS - http://www.release-news.com/
ONLINE PR NEWS - http://www.onlineprnews.com/
PRESS RELEASE CREATOR - http://www.ducttapemarketing.com/IPR.htm
1888PRESSRELEASE - http://www.1888pressrelease.com/
GOOGLE NEWS SEARCH - http://news.google.com/
PRESS ABOUT - http://www.pressabout.com/
ADD PR - http://www.addpr.com/
BRIEFINGWIRE.COM - http://www.briefingwire.com/
ERELEASES - AN AFFILIATE OF PRNEWWIRE - http://www.ereleases.com/
MEDIASYNDICATE - http://www.mediasyndicate.com/
PR URGENT - http://prurgent.com/
CLICK PRESS - http://www.clickpress.com/releases/
FREE PRESS RELEASE.COM - http://www.free-press-release.com/
NEWS WIRE TODAY - http://www.newswiretoday.com/
PITCHENGINE - http://www.pitchengine.com/
PR INSIDE - http://www.pr-inside.com/
PRES***POSURE - http://pres***posure.com/
THE OPEN PRESS - http://theopenpress.com/


V. RANK

SEOBOOK - FIREFOX RANK CHECKER - http://www.seobook.com/
SITEMAPDOC'S SERP RANK CHECKER - http://www.sitemapdoc.com/Serp-Rank.aspx
CUTERANK - http://cuterank.net/
DYNAMIC KEYWORD GENERATOR TOOL - http://www.rustybrick.com/keyword-phrase-tool.php
GOOGLE RANKCHECKER.NET - http://googlerankchecker.net/
GOOGLE SERP RANK CHECKER - http://www.siteexpert.net/google-position-checker.html
GOOGLE SERP RANK CHECKER - http://www.web-backlinks.com/google-...on-checker.asp
RANK CHECKER FROM SEO CENTRO - http://www.seocentro.com/tools/searc...-position.html
SEARCH ENGINE SATURATION (INDEXED) TOOL - http://www.seocentro.com/tools/searc...aturation.html
SEM RUSH - http://www.semrush.com/
HIDE MY ASS - http://hidemyass.com/
KEYWORD ENVY - http://www.keywordenvy.com/
KPMRS SERP RANK TOOL - http://www.kpmrs.com/
RANK PANEL - http://www.rankpanel.com

VI. WEBSITE STRUCTURE

GOOGLE WEBMASTER TOOLS - http://www.google.com/webmasters/tools
XML SITEMAPS.COM - SITEMAP GENERATOR - http://www.xml-sitemaps.com/
GOOGLE WEBMASTER BLOG - http://googlewebmastercentral.blogspot.com/
GOOGLE WEBMASTER HELP - http://www.google.com/support/webmasters/
FREE SITEMAP GENERATOR - http://www.freesitemapgenerator.com/
GOOGLE (AND YAHOO!) SITEMAP GENERATOR FOR WINDOWS - http://gsitecrawler.com/
GOOGLE'S FREE PAGE SPEED TOOL - https://developers.google.com/pagespeed/
SEO BROWSER - AS THE SEARCH ENGINE SEE YOU - http://www.seo-browser.com/
SEO TRAINING KEYWORD DOMAIN TOOL - http://www.webconfs.com/keyword-rich...uggestions.php
WEBMASTER TOOLS FROM BING - http://www.bing.com/toolbox/webmasters/

VII. LOCAL SEARCH

GOOGLE'S PLACES BLOG - http://places.blogspot.com/
GOOGLE PLACES USERS GUIDE - http://support.google.com/places/bin...=1660711&answe...
GOOGLE PLACES USERS GUIDE - http://www.google.com/support/places...ide.cs&guide=2...
GOOGLE PLACES FORUMS - http://www.google.com/support/forum/p/Places
GOOGLE PLACES HELP - http://www.google.com/support/places/
BING LOCAL - http://www.bing.com/businessportal/

VIII. GOOGLE+

GOOGLE+ BLOG POST (BUSINESSES ON GOOGLE+) - http://googleblog.blogspot.com/2011/...t-with-all-thi...
GOOGLE AUTHORSHIP PROGRAM - https://www.google.com/insidesearch/authorship.html
GOOGLE+ DEVELOPERS SITE - https://developers.google.com/ /
GOOGLE+ LEARNING SITE - http://www.google.com/ /learnmore/
GOOGLE+ +1 BUTTON - https://developers.google.com/ /plugins/ 1button/
GOOGLE+ BADGE - https://developers.google.com/ /plugins/badge/config
GOOGLE+ FOR BUSINESS - http://www.google.com/ /business/
GOOGLE+ HANG OUTS - http://gphangouts.com/
GOOGLE+ STATISTITCS - http://socialstatistics.com/
WIDGETS PLUS - http://widgetsplus.com/
...

IX. METRICS

GOOGLE ANALYTICS - http://www.google.com/analytics/
GOOGLE WEBMASTER TOOLS - http://www.google.com/webmasters/tools
GOOGLE ANALYTICS APP GALLERY - http://www.google.com/analytics/apps
GOOGLE ANALYTICS CHANNEL ON YOUTUBE - http://www.youtube.com/googleanalytics
GOOGLE ANALYTICS SEMINARS - http://www.google.com/adwords/seminars/analytics1.html

X. GOOGLE RESOURCES

GOOGLE SPECIAL SEARCH CHARACTERS - http://www.google.com/support/websea...&answer=134479
GOOGLE BLOG SEARCH - http://www.google.com/blogsearch
GOOGLE PLACES - FORMERLY GOOGLE LOCAL - http://www.google.com/places
GOOGLE ADWORDS BLOG - http://adwords.blogspot.com/
GOOGLE WEBMASTER BLOG - http://googlewebmastercentral.blogspot.com/

Nguồn: tổng hợp từ Internet

PHP Basic

+ No comment yet
Đây là bài viết tổng hợp kiến thức Php căn bản mình sưu tầm trên google nên sẽ không theo một chủ đề hay Tuturial nào. Hi vọng sẽ cập nhật thường xuyên ....

I .  Phép toán  === (3 dấu bằng) là sao vậy ?

So sánh giá trị và kiểu dữ liệu:
Ví dụ nhé:
Mã: 
<?php
$a = 0;
if ($a == false) {
   echo "aaaaaaaaaaaa";
}
else {
   echo "bbbbbbbbbbbb";
}
?>

Đoạn code trên sẽ in ra: aaaaaaaaaaaa
Nhưng đoạn code sau:
Mã:
<?php
$a = 0;
if ($a === false) {
   echo "aaaaaaaaaaaa";
}
else {
   echo "bbbbbbbbbbbb";
}
?>

thì in ra: bbbbbbbbbbbb

II . Một số chú ý khi viết mã PHP để tối ưu tốc độ ....



  1. Viết các phương thức, hàm có thể được dưới dạng Static để tăng tốc độ thực thi.
  2. Sử dụng echo thay cho print.
  3. Dùng echo để xuất các biến nối tiếp nhau thay cho việc xuất các chuỗi liên tiếp.
  4. Gán giá trị lớn nhất cho biến chạy trong vòng lặp for, thay vì gán bên trong như thông thường. VD: $maxvalue = 100/10; for($i=0; $i<$maxvalue; $i++){ // Code } sẽ nhanh hơn: for($i=0; $i<100/10; $i++){ // Some code }
  5. Unset các biến để giải phóng bộ nhớ, đặc biết là các mảng lớn.
  6. Hạn chế dùng các hàm __get, __set, __autoload
  7. Hàm require_once() nên sự dụng hạn chế.
  8. Sử dụng được dẫn đầy đủ ở các hàm includes và requires.
  9. Nếu bạn cần biết thời gian lúc đoạn script bắt đầu thực thi, hàm $_SERVER[’REQUEST_TIME’] được ưu tiên sử dụng hơn time()
  10. Nếu có thể, nên sử dụng strncasecmp, strpbrk và stripos thay cho regex.
  11. Dùng str_replace nhanh hơn preg_replace, nhưng hàm strtr lại nhanh hơn str_replace.
  12. Nếu trong các hàm, như là hàm thay thế chuỗi, sử dụng tham biến gồm cả chuỗi và kí tự, nên viết thêm 1 vài hàm thay thế từng kí tự một trong chuỗi, thay vì sử dụng 1 dòng code tìm và thay thế nhiều chuỗi.
  13. Sử dụng lệnh rẽ nhánh switch tốt hơn 1 lô lốc các lệnh if,else if chồng nhau.
  14. Chặn lỗi bằng kí tự @ rất chậm.
  15. Bật hàm mod_deflate của apache.
  16. Đóng kết nối với CSDL khi các thao tác với nó đã hoàn thành.
  17. $row[’id’] nhanh hơn 7 lần so với $row[id]
  18. Các thông báo lỗi (Error Messages) rất tốn tài nguyên.
  19. Không sử dụng các hàm bên trong vòng lặp, ví dụ: for ($x=0; $x < count($array); $x) , hàm count() sẽ được gọi mỗi lần lặp.
  20. Tăng giá trị 1 biến cục bộ (local variable) bên trong phương thức của nó thì nhanh hơn. Gần như việc gọi 1 biến cục bộ trong 1 hàm.
  21. Tăng giá trị của biến toàn cục (global variable) chậm hơn 2 lần so với biến cục bộ.
  22. Tăng giá trị thuộc tính của 1 object (vd: $this->prop++) thì chậm hơn 3 lần so với biến cục bộ.
  23. Tăng giá trị của 1 biến cục bộ chưa được định nghĩa sẽ chậm hơn 9-10 lần so với 1 biến đã được cài đặt sẵn từ trước.
  24. Chỉ khai báo 1 biến toàn cục mà không sử dụng nó trong một hàm cũng làm chậm tốc độ (bằng khoảng thời gian như việc tăng giá trị 1 biến cục bộ). PHP hầu như phải kiểm tra xem biến này có tồn tại trước đó hay không.
III. 
Tớ đang có project cần làm 1 cái schedule . Hiện tại đang vật vã vì thiếu kinh nghiệm xử lý các kiểu dữ liệu về ngày tháng , thời gian .
Giờ trong database của tớ có 2 column . 1 cái format theo date , 1 cái theo time . VD :
Date : 2008-08-27 ( 0000-00-00 )
Time : 10:00:00 ( 00:00:00 )
Tớ cần xử lý 1 số vấn đề sau :
- So sánh thời gian hiện tại với dữ liệu trong db . VD lấy ra tất cả nội dung trong ngày 27/8/08 .Hay lấy các event sắp đến . VD lúc 10h30 học Toán , 10h45 học Lý , 11h học Hoá .v.v...
- Tách riêng từng phần tử trong CSDL khi lấy ra = php để xử lý . Đại loại như : getDate("2008-08-27") => 27 . Hoặc getHour("10:00:00") => 10
Hiện tại đang khá bế tắc . Ví dụ như hàm time() nó lại trả theo kiểu unix còn của mình lưu trữ theo date , time hoặc datetime muốn so sánh phải dùng hàm date format lại :( Còn những trường hợp như tớ đề cập ở trên VD tớ muốn lấy các event sau 10h thì phải so sảnh thế nào ? :(  Ai biết xin hướng dẫn tớ với .

Vụ này tớ chưa làm chi tiết bao giờ , nhưng theo tớ nhớ là giữa timestamp của MYSQL và UNIX nó khác nhau 1 trời 1 vực , của mysql là yyyy-mm-dd hh:mm:ss , còn UNIX Timestamp là 123123213 gì gì đó , do đó việc so sánh trực tiếp là ... ko thể , phải trải qua các ông mai bà mối trung gian :d
Mysql có hàm để chuyển UNIX TimeStamp sang MYSQL Timestame là FROM_UNIXTIME() , dùng tạm nó để so sánh cũng được .
Àh , mà sao ko dùng kiểu DATETIME hay Timestamp mà lại chia ra thành 2 field thế nhỉ ...

Khi bạn gọi hàm time() không tham số thì hàm sẽ trả về Unix timestamp, tức là số giây tính từ thời điểm bắt đầu có khái niệm Unix (January 1 1970 00:00:00 GMT). Bạn có thể vào đây để tham khảo về tham số của hàm time() -> http://www.php.net/manual/en/function.time.php.

Link: http://www.ddth.com/showthread.php/42124-xin-hỏi-về-hàm-time()-trong-php?s=49a41c459e605f63ef331f4000185241#ixzz2ECLHeQMF

4.
Các bác cho em hỏi cái:
Em tạo một trang để thu thập dữ liệu qua form HTML như sau:
Code: [Select]
<form action="check02.php" method="post">
<input type="text" name="hoten" value="Ho va Ten"><BR>
<input type="text" name="ngaysinh" value="Ngay sinh DD/MM/YY"><BR>
<input type="submit" name="submit" value="Add">
<input type="reset" name="reset" value="Clear">
</form>

Sau đó kết quả sẽ đưa về trang check02.php để xử lý, như sau:

Code: [Select]
<?php
if (isset($_POST[submit])&&($_POST[submit] == "Add"))
{echo "<B>Cam on ban da gui thong tin</B>";}
else{
?>
<form action="check02.php" method="post">
<input type="text" name="hoten" value="Ho va Ten"><BR>
<input type="text" name="ngaysinh" value="Ngay sinh DD/MM/YY"><BR>

<input type="submit" name="submit" value="Add">
<input type="reset" name="reset" value="Clear">
<?php
}
?>

Tuy nhiên, sau khi ấn Submit, thì nó hiện thông báo
Notice: Use of undefined constant submit - assumed 'submit' in C:\wamp\www\check02.php on line 2
Notice: Use of undefined constant submit - assumed 'submit' in C:\wamp\www\check02.php on line 2
Cam on ban da gui thong tin

Em hiểu ở đây là nó báo lỗi biến submit ở trang check02.php chưa được khai báo (vì nó nhận dữ liệu ở trang trước đó).

Cấu hình multi modules trong Zend 1.x

+ No comment yet
Cấu trúc URL trong zend , ( multi modules )
http://zf/modules/controller/action/id/1....


File Aplication.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = template
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1