Tuesday, July 1, 2014

8 cách loại bỏ vết xước trên màn hình điện thoại

1. Kem đánh răng:

Chẳng phải tìm kiếm đâu xa, ngay trong phòng tắm nhà bạn cũng có một dụng cụ có thể giúp bạn loại bỏ những vết xước nhỏ trên màn hình điện thoại. Quan trọng là bạn phải dùng kem đánh răng thực sự, không dùng kem đánh răng dạng gel.
Dưới đây là cách thực hiện: 
  1. Thoa một lượng nhỏ kem đánh răng vào đầu tăm bông hoặc một miếng vải sạch, mềm.
  2. Nhẹ nhàng chà xát tăm bông hoặc vải theo vòng tròn trên màn hình cho tới khi bạn không còn nhìn thấy vết xước. 
  3. Sau đó lau màn hình bằng một miếng vải mềm, ẩm để loại bỏ kem đánh răng còn sót lại.
2. Kem loại bỏ vết xước của xe hơi:

Các loại kem loại bỏ vết xước của xe hơi như Turtle Wax, 3M ScratchSwirl Remover có thể giảm thiểu và loại bỏ các vết trầy xước trên màn hình điện thoại. Rất đơn giản, bạn chỉ cần thoa kem lên một tấm vải mềm, sạch và lau màn hình của bạn bằng theo vòng tròn một cách nhẹ nhàng.

3. Giấy nhám hoặc máy mài:

Mài các vết trầy xước cứng đầu trên điện thoại của bạn bằng giấy nhám hoăc máy mài là một giải pháp cực kỳ quyết liệt, nhưng nó có thể giúp bạn loại bỏ những vết trầy xước sâu, tệ hại trên điện thoại của bạn. Tốt nhất là bạn nên sử dụng phương pháp này để làm mịn các vết trầy xước trên mặt sau của điện thoại.
Khi sử dụng giấy nhám, bạn nên chọn loại giấy có độ mài mòn ít nhất và nhấn nhẹ vào điện thoại. Trong khi loại bỏ các vết trầy xước bạn cần lưu ý để tránh gây thiệt hại cho màn hình.
Lưu ý: Nếu bạn không cẩn thận, phương pháp này thậm chí còn có thể gây ra nhiều thiệt hại và trầy xước hơn nữa.
4. Baking soda (Thuốc muối):

Baking soda có thể được sử dụng để loại bỏ vết xước trên màn hình điện thoại. Dưới đây là cách sử dụng:
  1. Trộn hai phần baking soda với một phần nước trong một cái bát. 
  2. Khuấy đều cho tới khi tạo ra một dung dịch kem nhão. 
  3. Thoa dung dịch lên một miếng vải mềm, sạch và chà nhẹ theo vòng tròn trên những điểm bị xước trên màn hình điện thoại. 
  4. Sau đó lau màn hình điện thoại của bạn bằng một miếng vải mềm, mới, ẩm để loại bỏ những dung dịch dư thừa.
 5. Phấn trẻ em:
Trộn phấn trẻ em với nước có thể tạo ra một dung dịch có khả năng loại bỏ vết xước trên màn hình điện thoại của bạn. Các bước thực hiện tương tự như phần 4 nhưng thay baking soda bằng phấn trẻ em.

6. Dầu thực vật:
Dầu thực vật có tác dụng rất tốt khi được sử dụng để loại bỏ những vết trầy xước nhỏ, ẩn. Nhỏ một giọt dầu thực vật lên trên các vết xước để loại bỏ chúng.

7. Trứng và kali nhôm sulfat:

Một hướng dẫn trực tuyến trên Yahoo nói rằng, hỗn hợp lòng trắng trứng và kali nhôm sulfat có thể giúp bạn loại bỏ các vết trầy xước. Tuy nhiên phương pháp này rất phức tạp.

Những dụng cụ bạn cần là một miếng vải sợi nhỏ, một quả trứng, giấy nhôm và kali nhôm sulfat (có thể mua được tại các nhà thuốc).
  1. Trộn lòng trắng trứng và một muỗng cà phê phèn trong một cái chảo. Đun nóng hỗn hợp này ở nhiệt độ 65,5 độ C. 
  2. Nhúng miếng vải sợi nhỏ vào trong hỗn hợp trên. 
  3. Đặt miếng vải trên giấy nhôm, và sau đó đặt vào lò vi sóng ở nhiệt độ khoảng 65,5 độ C cho tới khi miếng vải khô hoàn toàn. 
  4. Lấy miếng vải ra và rửa trong nước lạnh trong khoảng 20 đến 30 giây. 
  5. Lặp lại các bước trên ba lần và sau đó để miếng vải trong không khí khô trong vòng 48 giờ. 
  6. Sử dụng miếng vải để loại bỏ những vết xước.
8. Các chất đánh bóng:
Bạn cần lưu ý rằng sử dụng các chất đánh bóng như Brasso và Silvo có thể loại bỏ lớp phủ trên màn hình và khiến các vết xước trở nên lớn hơn.
Đổ chất đánh bóng vào một cái bát. Tốt nhất là bạn nên đặt một chiếc khăn bên dưới bát để chất đánh bóng không bị vương vãi khi bạn thao tác.
  1. Nhúng miếng vải mềm vào chất đánh bóng. 
  2. Chà lên và xuống trên vết xước theo chuyển động tròn. 
  3. Sau đó, lau màn hình của bạn bằng một miếng vải sạch để loại bỏ những phần dư thừa.
Những vết trầy xước quả thực là rất khó chịu. Tuy nhiên, bạn nên cẩn thận khi thực hiện những thao tác loại bỏ chúng, nếu không muốn làm mọi việc trở nên tệ hại hơn.
Tất nhiên, chúng ta chỉ nên dùng tới những phương pháp "cực chẳng đã" ở trên khi smartphone/tablet của bạn bị trầy xước. Cách tốt nhất vẫn là giữ gìn và sử dụng máy cẩn thận, tránh các va đập mạnh có thể gây trầy xước bên ngoài và ảnh hưởng tới các chức năng của máy.

Saturday, August 3, 2013

HTML: Special Characters

HTML Entities and/or ISO Latin-1 codes can be placed in source code like any other alphanumeric characters to produce special characters and symbols that cannot be generated in HTML with normal keyboard commands.



For example, to render Düsseldorf the HTML source should read
Düsseldorf or Düsseldorf
While many similar lists are available on the Web (run your favorite search engine using "ISO Latin" or "HTML Entities"), none I've seen account for the standard character sets of different operating systems (e.g. Windows vs. DOS vs. Macintosh, etc.); this list should produce the same results on all platforms.
PunctuationHTML Entity
(case sensitive)
ISO Latin-1 codename or meaning
––en dash
——em dash
¡¡¡inverted exclamation
¿¿¿inverted question mark
"""quotation mark
““left double curly quote
””right double curly quote
''apostrophe (single quote)
‘‘left single curly quote
’’right single curly quote
«

»
«

»
«

»
guillemets (used as quotation marks in some languages, e.g., French)
  
(Its there, but you can't see it!)
  non-breaking space
Symbols
&&&ampersand
¢¢¢cent
©©©copyright
÷÷÷divide
>>>greater than
<&lt;&#60;less than
µ&micro;&#181;micron
·&middot;&#183;middle dot
&para;&#182;pilcrow (paragraph sign)
±&plusmn;&#177;plus/minus
&euro;&#8364;Euro
£&pound;&#163;British Pound Sterling
®&reg;&#174;registered
§&sect;&#167;section
&trade;&#153;trademark
¥&yen;&#165;Japanese Yen
Diacritics
á

Á
&aacute;

&Aacute;
&#225;

&#193;
lower-case "a" with acute accent

upper-case "A" with acute accent
à

À
&agrave;

&Agrave;
&#224;

&#192;
lower-case "a" with grave accent

upper-case "A" with grave accent
â

Â
&acirc;

&Acirc;
&#226;

&#194;
lower-case "a" with circumflex

upper-case "A" with circumflex
å

Å
&aring;

&Aring;
&#229;

&#197;
lower-case "a" with ring

upper-case "A" with ring
ã

Ã
&atilde;

&Atilde;
&#227;

&#195;
lower-case "a" with tilde

upper-case "A" with tilde
ä

Ä
&auml;

&Auml;
&#228;

&#196;
lower-case "a" with diaeresis/umlaut

upper-case "A" with diaeresis/umlaut
æ

Æ
&aelig;

&AElig;
&#230;

&#198;
lower-case "ae" ligature

upper-case "AE" ligature
ç

Ç
&ccedil;

&Ccedil;
&#231;

&#199;
lower-case "c" with cedilla

upper-case "C" with cedilla
é

É
&eacute;

&Eacute;
&#233;

&#201;
lower-case "e" with acute accent

upper-case "E" with acute accent
è

È
&egrave;

&Egrave;
&#232;

&#200;
lower-case "e" with grave accent

upper-case "E" with grave accent
ê

Ê
&ecirc;

&Ecirc;
&#234;

&#202;
lower-case "e" with circumflex

upper-case "E" with circumflex
ë

Ë
&euml;

&Euml;
&#235;

&#203;
lower-case "e" with diaeresis/umlaut

upper-case "E" with diaeresis/umlaut
í

Í
&iacute;

&Iacute;
&#237;

&#205;
lower-case "i" with acute accent

upper-case "I" with acute accent
ì

Ì
&igrave;

&Igrave;
&#236;

&#204;
lower-case "i" with grave accent

upper-case "I" with grave accent
î

Î
&icirc;

&Icirc;
&#238;

&#206;
lower-case "i" with circumflex

upper-case "I" with circumflex
ï

Ï
&iuml;

&Iuml;
&#239;

&#207;
lower-case "i" with diaeresis/umlaut

upper-case "I" with diaeresis/umlaut
ñ

Ñ
&ntilde;

&Ntilde;
&#241;

&#209;
lower-case "n" with tilde

upper-case "N" with tilde
ó

Ó
&oacute;

&Oacute;
&#243;

&#211;
lower-case "o" with acute accent

upper-case "O" with acute accent
ò

Ò
&ograve;

&Ograve;
&#242;

&#210;
lower-case "o" with grave accent

upper-case "O" with grave accent
ô

Ô
&ocirc;

&Ocirc;
&#244;

&#212;
lower-case "o" with circumflex

upper-case "O" with circumflex
ø

Ø
&oslash;

&Oslash;
&#248;

&#216;
lower-case "o" with slash

upper-case "O" with slash
õ

Õ
&otilde;

&Otilde;
&#245;

&#213;
lower-case "o" with tilde

upper-case "O" with tilde
ö

Ö
&ouml;

&Ouml;
&#246;

&#214;
lower-case "o" with diaeresis/umlaut

upper-case "O" with diaeresis/umlaut
ß&szlig;&#223;ess-tsett
ú

Ú
&uacute;

&Uacute;
&#250;

&#218;
lower-case "u" with acute accent

upper-case "U" with acute accent
ù

Ù
&ugrave;

&Ugrave;
&#249;

&#217;
lower-case "u" with grave accent

upper-case "U" with grave accent
û

Û
&ucirc;

&Ucirc;
&#251;

&#219;
lower-case "u" with circumflex

upper-case "U" with circumflex
ü

Ü
&uuml;

&Uuml;
&#252;

&#220;
lower-case "u" with diaeresis/umlaut

upper-case "U" with diaeresis/umlaut
ÿ&yuml;&#255;lower-case "y" with diaeresis/umlaut
´

`
&#180;

&#96;
acute accent with no letter

grave accent/reversed apostrophe with no letter

Notes:
  1. The &quot; entity was mistakenly omitted from the HTML 3.2 specification. While use of &quot; generates error reports when validating against 3.2, browsers have continued to recognize the entity and its use is generally safe (sticklers may wish to use &#34; instead). The omission has been corrected in the HTML 4.0 specification.
  2. The non-breaking space (&nbsp; or &#160;) can be used not only to prevent the separation of words by line wraps, but also to force a space equal in size to a keyboard/spacebar space (useful for indentation or wider word separation) or to "hold" space in the empty cell of a table (as in the table above).
  3. The middle dot (&middot; or &#183;) can be used as a bullet and embedded anywhere in text. Because it is equal in size to a period, however, it may be necessary to apply <B> </B> or tags to enhance its graphic effect (use of <FONT SIZE="x"> </FONT> or <BIG> </BIG> elements is not recommended, as these will alter the character's vertical spacing relative to other characters in the same line).

Thursday, July 18, 2013

How to create a 301 Redirect

301 Redirect

301 redirect is the most efficient and Search Engine Friendly method for webpage redirection. It's not that hard to implement and it should preserve your search engine rankings for that particular page. If you have to change file names or move pages around, it's the safest option. The code "301" is interpreted as "moved permanently".
You can Test your redirection with Search Engine Friendly Redirect Checker
Below are a Couple of methods to implement URL Redirection via code and htaccess redirect


IIS Redirect

  • In internet services manager, right click on the file or folder you wish to redirect
  • Select the radio titled "a redirection to a URL".
  • Enter the redirection page
  • Check "The exact url entered above" and the "A permanent redirection for this resource"
  • Click on 'Apply'

ColdFusion Redirect

<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.new-url.com"> 

PHP Redirect

<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.new-url.com" );
?> 

ASP Redirect

<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.new-url.com/"
%> 

ASP .NET Redirect

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
</script>

JSP (Java) Redirect

<%
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%> 

CGI PERL Redirect

$q = new CGI;
print $q->redirect("http://www.new-url.com/"); 


Ruby on Rails Redirect

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end

Redirect Old domain to New domain using htaccess redirect

Create a .htaccess file with the below code, it will ensure that all your directories and pages of your old domain will get correctly redirected to your new domain.
The .htaccess file needs to be placed in the root directory of your old website (i.e the same directory where your index file is placed)
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
Please REPLACE www.newdomain.com in the above code with your actual domain name.
In addition to the redirect I would suggest that you contact every backlinking site to modify their backlink to point to your new website.
Note* This .htaccess method of redirection works ONLY on Linux servers having the Apache Mod-Rewrite moduled enabled.

Redirect to www using htaccess redirect

Create a .htaccess file with the below code, it will ensure that all requests coming in to domain.com will get redirected to www.domain.com
The .htaccess file needs to be placed in the root directory of your old website (i.e the same directory where your index file is placed)
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
Please REPLACE domain.com and www.newdomain.com with your actual domain name.
Note* This .htaccess method of redirection works ONLY on Linux servers having the Apache Mod-Rewrite moduled enabled.

How to Redirect HTML

Please refer to section titled 'How to Redirect with htaccess', if your site is hosted on a Linux Server and 'IIS Redirect', if your site is hosted on a Windows Server.

Saturday, July 13, 2013

Working With Dates and Times in PHP

Working with Dates and Times prior to PHP 5.2 meant using date(), strtotime(), and other date related functions sometimes in convoluted ways to get to the date(s) you were looking for. Fortunately with PHP 5.2 the DateTime() class were introduced. (DateTimeZone() was introduced as well but is not covered here). It was further enhanced in PHP with additionally methods as well as the new DatePeriod() and DateInterval() classes.

Getting Started

Before we get started I will link to the relevant pages in the PHP manual for the classes that we will be using here. All of these require running PHP 5.2 or newer. Make sure you check your version of PHP before using any of this code.
Also, keep in mind that when using DateTime(), when passing a Unix Timestamp as a parameter requires prepending an @ to the timestamp for it be recognized as a timestamp.
1
$datetime = new DateTime('@123457890');

Getting the difference between two dates

1
2
3
4
5
6
$datetime1 = new DateTime();
$datetime2 = new DateTime('2013-01-03 17:13:00');
$interval  = $datetime1->diff($datetime2);
$elapsed   = $interval->format('%y years, %m months, %a days, 
                                %h hours, %i minutes, %S seconds');
echo $elapsed;
See it in action

If you want to eliminate any periods that have zero values you can use the snippet below to remove them.
1
2
3
4
5
6
7
8
9
$elapsed = $interval->format('%y years, %m months, %d days, 
                              %h hours, %i minutes');
$elapsed = str_replace(array('0 years,', ' 0 months,', ' 0 days,', 
                            ' 0 hours,', ' 0 minutes,'), '', $elapsed);
$elapsed = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ', 
                             ' 1 hours, ', ' 1 minutes'), array('1 year, ', 
                             '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), 
                       $elapsed);
echo $elapsed;
See it in action

Birthdays/calculate age

1
2
3
4
$today     = new DateTime();
$birthdate = new DateTime("1973-04-18");
$interval  = $today->diff($birthdate);
echo $interval->format('%y years');
See it in action

Adding period of time to a date

For PHP 5.3 or newer
1
2
3
$datetime = new DateTime();
$datetime->add(new DateInterval('P6M'));
echo $datetime->format('Y-m-d');
See it in action

For PHP 5.2
1
2
3
$datetime = new DateTime();
$datetime->modify('+6 months');
echo $datetime->format('Y-m-d');
See it in action

Start date for a given week

1
2
3
4
$start_date  = new DateTime("2013-05-13");
$day_of_week = $start_date->format("w");
$start_date->modify('-' . $day_of_week . ' day');
echo $start_date->format('l, F jS, Y');
See it in action

Looping through the days between two dates

For PHP 5.3 or newer
1
2
3
4
5
6
7
8
9
$start    = new DateTime('2013-02-01');
$end      = new DateTime('2013-02-17');
$interval = new DateInterval('P1D');
$period   = new DatePeriod($start, $interval, $end);
 
foreach ($period as $dt)
{
    echo $dt->format("l Y-m-d") . PHP_EOL;
}
See it in action

An alternative way to do this using DateInterval::createFromDateString()
1
2
3
4
5
6
7
8
9
$start    = new DateTime('2013-02-01');
$end      = new DateTime('2013-02-17');
$interval = DateInterval::createFromDateString('1 day');
$period   = new DatePeriod($start, $interval, $end);
 
foreach ($period as $dt)
{
    echo $dt->format("l Y-m-d") . PHP_EOL;
}
See it in action

For PHP 5.2
1
2
3
4
5
6
7
$start = new DateTime('2013-02-01');
$end   = new DateTime('2013-02-17');
while ($start < = $end)
{
    echo $start->format("m/d/Y") . PHP_EOL;
    $start->modify("+1 day");
}
See it in action

List all days in a month

1
2
3
4
5
6
7
8
9
$start    = new DateTime('first day of this month');
$end      = new DateTime('first day of next month');
$interval = DateInterval::createFromDateString('1 day');
$period   = new DatePeriod($start, $interval, $end);
 
foreach ($period as $dt)
{
    echo $dt->format("l Y-m-d") . PHP_EOL;
}
See it in action

For PHP 5.2
1
2
3
4
5
6
7
$start = new DateTime('2013-01-31');
$end   = new DateTime('2013-02-05');
while($start < = $end)
{
    echo $start->format("m/d/Y"). PHP_EOL;
    $start->modify("+1 day");
}
See it in action

Get first day of the month

1
2
$datetime = new DateTime('first day of this month');
echo $datetime->format('jS, F Y');
See it in action

Get last day of the month

1
2
$datetime = new DateTime();
echo $datetime->format('Y-m-t');
See it in action

1
2
$datetime = new DateTime('last day of this month');
echo $datetime->format('F jS');
See it in action

Getting tomorrows date

1
2
$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d');
See it in action

Or alternatively
1
2
3
$datetime = new DateTime();
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d');
See it in action

For PHP 5.2
1
2
3
$datetime = new DateTime();
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d');
See it in action

Compare dates & times

1
2
3
4
5
6
7
8
9
10
$date1 = DateTime::createFromFormat('H:i', '08:00');
$date2 = new DateTime();
if ($date1 > $date2)
{
    echo 'It is after 08:00';
}
else
{
    echo 'It is not after 08:00';
}
See it in action

Tuesday, July 9, 2013

Tối ưu CSS

Viết CSS đã khổ, tối ưu nó còn khổ hơn.
Đặc biệt là còn phải đạt chuẩn W3C nữa thì càng chết nữa :(

Nhiều tập tin CSS có thể lên tới và nghìn dòng, viết xong rồi ngồi mà tối ưu lại chắc ít người đủ kiên trì quá, haizzz....

Dẫu sao thì internet là 1 kho tàng kiến thức và công cụ khổng lồ, vì thế mà điều than phiền này sẽ bớt đi được kha khá đấy :D

Để tối ưu và đặc biệt là làm giảm khích cỡ tập tin CSS thì bạn nên dùng cái này:


Có thể paste đoạn CSS của mình vào, hoặc paste URL của tập tin CSS vào rồi bấm vô Process CSS và đợi chút xíu thôi.
Bên cạnh là các tùy còn nén và tối ưu bạn có thể tìm hiểu thêm.

Chú ý: Trên đời này không có gì là hoàn hảo cả, vì vậy khi sử dụng công cụ này bạn phải sao lưu tập tin CSS của mình trước khi làm, vì sau khi tối uu thì mọi định dạng của bạn sẽ bị sai lệch so với bạn đầu.

Chú thích trong: HTML, CSS, PHP, Javascript, SQL & ASP

Lúc viết code thì điều cần thiết là chú thích đoạn code mình viết ra là gì? Nhưng rất rất nhiều bạn không biến đến điều này, thậm chí là không biết ký tự chú thích trong ngôn ngữ mình dùng bắt đầu và kết thúc như thế nào.


Dưới đây là bảng danh sách mô tả cho các ngôn ngữ cơ bản của bộ môn Thiết kế website.
Language Single/Multi-Line Start with End with Example
HTML Single & Multi-Line <!– –> <!– This is an HTML Comment –>
PHP Single Line // // This is a PHP Comment
PHP Mutli-Line /* */ /* This is a PHP Comment */
JavaScript Single Line // // This a JScript Comment
JavaScript Mutli-Line /* */ /* This is a JavaScript Comment */
CSS Single & Multi-Line /* */ /*This is a CSS comment*/
ASP Single & Multi-Line ‘ This is an ASP Comment
SQL Single & Multi-Line { } { This is an SQL Comment }
SQL Single – (Two dashes) – This is an SQL Comment

Xóa Cache trình duyệt bằng PHP

Đối với 1 lập trình viên website, đặc biệt là lập trình PHP thì cache là 1 điều rất quan trọng. Vì nó có thể ảnh hưởng rất nhiều đến tốc độc của ứng dụng web.
Thường thì 1 website được chia ra 2 thành phần mà người dùng bình thường hầu  như ít người biết đến.
Đó là Front EndBack End (có thể hiểu nôm na là phần TrướcSau). Vậy Trước là gì? và Sau là gì?

Trước:
Đó là phần hiện thị khi bạn gõ tên miên và bấm enter.
Sau:
Đó là phần điều khiển của người quản trị, nó chỉ dành cho nhóm Admin (quản trị) mà thôi. Muốn sử dụng thành phần này thì cần phải biết được dẫn bí mật và bắt buộc phải có tài khoản đăng nhập admin.

Nhưng tôi sẽ không nói đến vấn đề này, mà chỉ đề cập đến vấn đề Cache mà thôi. Nhưng tại sao tôi lại nói về TrướcSau?

Đơn giản là vì khi sử dụng Cache người lập trình luôn cố gắng để tối ưu cho phần Trước nên sử dụng Cache là rất cần thiết. Tất nhiên còn phụ thuộc vào hoàn cảnh để áp dụng cache.

Còn phần Sau thì sao?
Vì đây là khu vực chỉ dảnh cho những người đặc biệt nên bắt buộc nó phải được bảo mật nên việc lưu Cache có lẽ rất ít lập trình viên nào áp dụng cho khu vực này. Vậy làm sao để làm được điều này?

Thật đơn giản!

Với HTML thì chỉ việc thêm đoạn code sau vào giữa cặp thẻ Header.
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache">
Nhưng bạn hoàn toàn có thể linh động sử dụng với PHP, và hãy chèn đoạn code này vào dòng đầu tiên của tập tin .php
header ("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
Mục đích việc làm này là nó sẽ không lưu cache các Form trong Admin mà bạn thường xuyên thay đổi.
Tôi đã gặp phải tình trạng bị luu cache này khi cố gắng thay đổi nội dụng 1 record, nhưng thật không may vì lưu cache nên sau khi submit form rồi xem lại thì thấy mọi thứ không hề thay đổi. Nhưng thực ra thì mọi thứ đã thay đổi theo ý mình, nhưng vì bị cache nên mới bị thế, và cứ phải refresh lại trình duyệt thì mới có thể thấy sự thay đổi.

Đây là kinh nghiệm tôi muốn chia sẻ với các bạn khi muốn tối ưu website bằng Cache, hy vọng nó giúp ích được nhiều cho các bạn.

Friday, July 5, 2013

Kiểm tra khả năng nén website của server thông qua: Deflate và Gzip

Trang web này hỗ trợ bạn check tính năng nén trên server (hosting) mà bạn đang sử dụng.
Nó sẽ check 2 module mở trộng của php đó là: mod_deflatemod_gzip
Điều này rất quan trọng, nếu 2 tính năng này được mở trên server thì bạn có thể tận dụng lới thế nén dữ liệu của nó để tối ưu tốc độ tải trang web của mình.

Để có thể biết được server của mình có hỗ trợ hay không, bạn chỉ việc vào trang:
http://www.gidnetwork.com/tools/gzip-test.php

Rồi nhập địa chỉ website của mình vào ô: Web Page URL rồi bấm Check và chờ trong giây lát sẽ có kết quả cho bạn.



Nếu server đã được bật 2 tính năng trên và code website của bạn tốt thì độ nén (Compression) của nó là rất cao, có thể đạt tới gần 90% Thế nên tốc độ tải trang của web bạn là rất nhanh.

How to Enable Gzip Compression

Why use gzip to compress your webpages?

Compressing your HTML and CSS files with gzip typically saves around 50 to 70 percent of the file size. This means that it takes less time to load your pages, and it also means less bandwidth is used over all. It is pretty much the standard now and if you are not using it for some reason, your webpages are slower than your competitors.

How to enable Gzip on your website

Compression is enabled by adding some code to a file called .htaccess on your web host/server. This means going to the file manager (or wherever you go to add or upload files) on your webhost. The .htaccess file controls many important things for your site. If you are not familiar with the .htaccess file, please read my working with .htaccess article to get some know how before changing it.
The code below should be added to your .htaccess file...
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Save the .htaccess file and then refresh your webpage.
Check to see if your compression is working using the Gzip compression tool.

What does this do?

Adding this code to your .htaccess file will enable Gzip compression for the most commonly gzipped files and will help your webpages load faster. This not only helps your web page speed, but it also reduces your bandwidth so those who are paying for bandwidth can save real money by doing this.


Enable compression on Apache webservers
The instructions above will work on Apache.
Enable compression on NGINX webservers
To enable compression in NGINX you will need to add the following code to your config file
gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

# Disable for IE < 6 because there are some known problems
gzip_disable "MSIE [1-6].(?!.*SV1)";

# Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6
gzip_vary on;
Enable compression on Litespeed webservers

The ideal way to enable compression in Litespeed is to do it through the configuration under "tuning". Just go down to "enable compression" and check to see if it is on, if not click "edit" then choose to turn it on. While you are there, look over the several Gzip options that are nearby. The resource covering this is here.
Source: feedthebot.com

Thursday, July 4, 2013

Vì sao bạn chọn PHP làm bạn đồng hành để thiết kế website?

Khác với mô hình lập trình Desktop thông thường, lập trình trên môi trường web chủ yếu dựa vào mô hình Client-Server và giao thức HTTP để làm việc. Hiện tại, có khá nhiều ngôn ngữ cho phép chúng ta lập trình web như Java, .NET, PHP, Perl, Python, Ruby on Rails…Mỗi ngôn ngữ đều có những ưu và khuyết điểm riêng. Nội dung của bài viết này sẽ đi vào một số điểm nổi bật của PHP và một số nhân tố khiến PHP ngày càng trở nên phổ biến như ngày nay.
Tôi chọn PHP vì:

Mã nguồn mở

  • Có lẽ nhiều bạn cũng biết PHP là một sản phẩm mã nguồn mở (Open-source) nên việc cài đặt và tùy biến PHP là miễn phí và tự do.
  • Vì có ưu thế nguồn mở nên PHP có thể được cài đặt trên hầu hết các Web Server thông dụng hiện nay như Apache, IIS…

Tính Cộng đồng của PHP

  • Là một ngôn ngữ mã nguồn mở cùng với sự phổ biến của PHP thì cộng đồng PHP được coi là khá lớn và có chất lượng.
  • Với cộng đồng phát triển lớn, việc cập nhật các bản vá lỗi phiên bản hiện tại cũng như thử nghiệm các phiên bản mới khiến PHP rất linh hoạt trong việc hoàn thiện mình.
  • Cộng đồng hỗ trợ, chia sẽ kinh nghiệm của PHP cũng rất dồi dào. Với rất nhiều diễn đàn, blog trong và ngoài nước nói về PHP đã khiến cho quá trình tiếp cận của người tìm hiểu PHP được rút ngắn nhanh chóng.

Thư viện phong phú

  • Ngoài sự hỗ trợ của cộng đồng, thư viện script PHP cũng rất phong phú và đa dạng. Từ những cái rất nhỏ như chỉ là 1 đoạn code, 1 hàm (PHP.net…) cho tới những cái lớn hơn như Framework (Zend, CakePHP, CogeIgniter, Symfony…) ,ứng dụng hoàn chỉnh (Joomla, WordPress, PhpBB…)
  • Với thư viện code phong phú, việc học tập và ứng dụng PHP trở nên rất dễ dàng và nhanh chóng. Đây cũng chính là đặc điểm khiến PHP trở nên khá nổi bật và cũng là nguyên nhân vì sao ngày càng có nhiều người sử dụng PHP để phát triển web.

Hỗ trợ kết nối nhiều hệ cơ sở dữ liệu

  • Nhu cầu xây dựng web có sử dụng cơ sở dữ liệu là một nhu cầu tất yếu và PHP cũng đáp ứng rất tốt nhu cầu này. Với việc tích hợp sẵn nhiều Database Client trong PHP đã làm cho ứng dụng PHP dễ dàng kết nối tới các hệ cơ sở dữ liệu thông dụng.
  • Việc cập nhật và nâng cấp các Database Client đơn giản chỉ là việc thay thế các Extension của PHP để phù hợp với hệ cơ sở dữ liệu mà PHP sẽ làm việc.
  • Một số hệ cơ sở dữ liệu thông dụng mà PHP có thể làm việc là: MySQL, MS SQL, Oracle, Cassandra…

Lập trình hướng đối tượng

  • Ngày nay, khái niệm lập trình hướng đối tượng (OOP) đã không còn xa lạ với lập trình viên. Với khả năng và lợi ích của mô hình lập trình này nên nhiều ngôn ngữ đã triển khai để hỗ trợ OOP.
  • Từ phiên bản PHP 5, PHP đã có khả năng hỗ trợ hầu hết các đặc điểm nổi bật của lập trình hướng đối tượng như là Inheritance, Abstraction, Encapsulation, Polymorphism, Interface, Autoload…
  • Với việc ngày càng có nhiều Framework và ứng dụng PHP viết bằng mô hình OOP nên lập trình viên tiếp cận và mở rộng các ứng dụng này trở nên dễ dàng và nhanh chóng.

Tính Bảo mật

  • Bản thân PHP là mã nguồn mỡ và cộng đồng phát triển rất tích cực nên có thể nói PHP khá là an toàn.
  • PHP cũng cung cấp nhiều cơ chế cho phép bạn triển khai tính bảo mật cho ứng dụng của mình như session, các hàm filter dữ liệu, kỹ thuật ép kiểu, thư viện PDO (PHP Data Object) để tương tác với cơ sở dữ liệu an toàn hơn.
  • Kết hợp với các kỹ thuật bảo mật ở các tầng khác thì ứng dụng PHP sẽ trở nên chắc chắn hơn và đảm bảo hoạt động cho website.

Khả năng mở rộng cho PHP

  • Bằng việc xây dựng trên nền ngôn ngữ C và là mã nguồn mở nên khả năng mở rộng cho ứng dụng PHP có thể nói là không có giới hạn.
  • Với thư viện phong phú và khả năng mở rộng lớn, ứng dụng PHP có thể tương tác với hầu hết các loại ứng dụng phổ biến như xử lý hình ảnh, nén dữ liệu, mã hóa, thao tác file PDF, Office, Email, Streaming…
  • Bạn hoàn toàn có thể tự xây dựng cho mình các Extension để tối ưu, bổ sung các chức năng cho PHP cũng như tối ưu luôn Core của PHP để phục vụ cho các mục đích mở rộng website của mình.

Liệu biết PHP là đủ?
Như nhiều bạn lập trình viên có khả năng học khá nhiều ngôn ngữ lập trình nói chung và ngôn ngữ lập trình web nói riêng thì việc chỉ biết mỗi PHP thì có lẽ chưa “thỏa mãn”. Biết một ngôn ngữ chưa hẳn là ít, nếu bạn chú tâm và đào sâu thì mỗi ngôn ngữ luôn có những tầng khác nhau để khám phá. Không sợ học hết, chỉ sợ học không nổi mà thôi!

Nói đi cũng phải nói lại, nếu chỉ biết mỗi PHP thì thật sự bạn khó có khả năng triển khai 1 website. Bởi vì trong một hệ thống website, Coding PHP chỉ là một mảng nhỏ trong khâu sản xuất web mà thôi. Bạn cần phải trang bị một số kiến thức khác trong công nghệ web như : HTML, CSS, Javascript, SEO, UML, Database, Networking…để đảm bảo bạn nắm được những gì sẽ xảy ra trong quá trình làm web vì nó sẽ rất có ích cho bạn khi triển khai PHP.

Như vậy có nghĩa là học lập trình web thì bạn phải vừa học theo chiều sâu và học theo chiều rộng. Ngôn ngữ lập trình web phía Server (PHP) thì học càng sâu càng tốt và các công nghệ của web thì tìm hiểu càng rộng càng tốt. Có như vậy bạn mới có một cái nhìn toàn diện hơn về ứng dụng web và dễ dàng hoàn thiện website.

Môi trường làm việc, thị trường & tương lai của PHP

Để học tập và nghiên cứu PHP thì triển khai môi trường để tiến hành rất dễ. Bạn có thể cài các bộ ứng dụng đầy đủ để tạo mô hình Client-Server ngay trên máy của mình để học (AppServ, WAMP, XAMPP…) .
Nếu bạn không muốn code từ đầu thì có thể nghiên cứu các Framework PHP để phát triển ứng dụng trên đó như là Zend, CakePHP, CodeIgniter…

Như hầu hết các ngôn ngữ lập trình hiện đại khác, bạn cũng có thể sử dụng các IDE để phát triển ứng dụng PHP như Zend Studio, Nusphere PhpED, NetBeans…Với các tính năng nổi bật như là Code & Syntax Highlighting, Auto-Complete, Project Manager, Code Navigator, Debug…thì việc code PHP sẽ trở nên dễ dàng và nhanh chóng hơn.

Với việc ngày càng có nhiều ứng dụng lớn viết bằng PHP, sự đa dạng trong ứng dụng và Framework làm cho thị trường và tương lai dành cho các bạn yêu thích PHP là rất lớn. Ngoài ra, bạn có thể thử sức với chứng chỉ ZCE của Zend trong lĩnh vực PHP. Rất nhiều công ty đang chọn PHP làm ngôn ngữ phát triển website cho khách hàng cũng như sản phẩm của riêng họ nên việc hiểu biết và chuyên sâu về công nghệ web nói chung và chuyên sâu về PHP nói riêng sẽ là một lợi thế rất lớn cho các bạn.

(Bài viết được sưu tầm trên internet)