<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BLOG THIẾT KẾ WEB</title>
	<atom:link href="http://blogthietkeweb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogthietkeweb.com</link>
	<description></description>
	<lastBuildDate>Sun, 09 May 2010 15:00:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Những website siêu giúp ích</title>
		<link>http://blogthietkeweb.com/2010/05/nh%e1%bb%afng-website-sieu-giup-ich/</link>
		<comments>http://blogthietkeweb.com/2010/05/nh%e1%bb%afng-website-sieu-giup-ich/#comments</comments>
		<pubDate>Sun, 09 May 2010 14:54:31 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Xu hướng phát triển Web]]></category>
		<category><![CDATA[Cong nghe]]></category>
		<category><![CDATA[web 3D]]></category>
		<category><![CDATA[website thuong mai]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=324</guid>
		<description><![CDATA[Đây là những website phục vụ cực kỳ đắc lực cho bạn nhưng lại ít được biết tới. Chúng đủ tốt đến mức bạn sẽ phải tự hỏi mình đã sống như thế nào trước khi sử dụng chúng.
Hàng ngày, cuộc sống web của bạn chịu sự thống trị của một số ít những tên [...]]]></description>
			<content:encoded><![CDATA[<p>Đây là những website phục vụ cực kỳ đắc lực cho bạn nhưng lại ít được biết tới. Chúng đủ tốt đến mức bạn sẽ phải tự hỏi mình đã sống như thế nào trước khi sử dụng chúng.</p>
<p>Hàng ngày, cuộc sống web của bạn chịu sự thống trị của một số ít những tên tuổi lớn như Google, Yahoo, Microsoft, YouTube. Nhưng cùng lúc đó, mạng Web tiếp tục chào đón một dòng chảy website và dịch vụ mới không ngừng nghỉ, với độ hữu ích đáng kinh ngạc.</p>
<p><a href="http://blogthietkeweb.com/wp-content/uploads/2010/05/great_website_tkw.jpg"><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/great_website_tkw-300x168.jpg" alt="" title="great_website_tkw" width="300" height="168" class="aligncenter size-medium wp-image-325" /></a></p>
<p><span id="more-324"></span><br />
Dưới đây là những website tiêu biểu nhất:</p>
<p>- GenBook: Cho phép các khách hàng sắp xếp lịch hẹn với công ty của bạn.</p>
<p>- JobSpice: Giúp bạn tạo ra những bản CV và tóm tắt công việc trực tuyến đầy hấp dẫn.</p>
<p>- Phonebooth: Cung cấp các dịch vụ điện thoại.</p>
<p>- Zoho: Cung cấp đủ loại ứng dụng đám mây.</p>
<p>- FaxZero: Giúp bạn gửi đi các bản fax hoàn toàn miễn phí, vì chúng được hỗ trợ bằng quảng cáo.</p>
<p>- Meebo: Một trang web cho phép bạn kết nối cùng lúc với nhiều dịch vụ IM khác nhau.</p>
<p>- Tatango: Cho phép bạn phân phối tin nhắn tới nhiều nhóm nhỏ khác nhau.</p>
<p>- Nutrition Data: Liệt kê các món ăn tại nhà hàng và trong công thức nấu nướng.</p>
<p>- Dropbox: Cho bạn dung lượng lưu trữ miễn phí 2GB trên mạng, đồng thời hỗ trợ đồng bộ hoá file.</p>
<p>- Humyo: Cung cấp ổ cứng ảo miễn phí dung lượng 10 GB.</p>
<p>- Live Mesh: Đồng bộ hoá file và cho phép bạn truy cập file từ xa.</p>
<p>- Qik: Truyền video trực tiếp từ smartphone của bạn.</p>
<p>- Citrify: Cung cấp các công cụ chỉnh sửa, biên tập ảnh tốc hành.</p>
<p>- CutMP3: Cắt gọt bất cứ ca khúc nào thành độ dài của một đoạn nhạc chuông.</p>
<p>- Eventful: Liệt kê những sự kiện xảy ra trong khu vực bạn quan tâm.</p>
<p>- Pixorial: Cung cấp các công cụ biên tập video cực kỳ dễ dùng.</p>
<p>- Bubbl.us: Cung cấp các công cụ bản đồ tư duy đơn giản.</p>
<p>- LogMeIn: Cho phép bạn truy cập máy tính của mình từ xa.</p>
<p>- Mint: Đồng bộ hoá các tài khoản tài chính để giúp bạn theo dõi ngân sách của mình.</p>
<p>- Passpack: Quản lý toàn bộ mật khẩu trực tuyến của bạn.</p>
<p>- PearBudget: Theo dõi các khoản thu, chi của bạn.</p>
<p>- Smart.fm: Cung cấp các khoá học trực tuyến miễn phí.</p>
<p>- Droolr: Liệt kê những thiết bị / đồ chơi công nghệ hot nhất hiện nay.</p>
<p>- SeatExpert: Cho bạn thấy những chỗ ngồi tốt nhất trên bất cứ chuyến bay nào.</p>
<p>PCWorld</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/nh%e1%bb%afng-website-sieu-giup-ich/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lệnh điều khiển vòng lặp</title>
		<link>http://blogthietkeweb.com/2010/05/lenh-dieu-khien-vong-lap/</link>
		<comments>http://blogthietkeweb.com/2010/05/lenh-dieu-khien-vong-lap/#comments</comments>
		<pubDate>Sat, 08 May 2010 02:42:27 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Lập trình Web]]></category>
		<category><![CDATA[Php cơ bản]]></category>
		<category><![CDATA[Co ban]]></category>
		<category><![CDATA[Lap trinh web]]></category>
		<category><![CDATA[Ngôn ngữ Php]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=294</guid>
		<description><![CDATA[Điều khiển vòng lặp, tức là bạn điều khiển chương trình của bạn tự động thực hiện một đoạn mã lệnh nào đó lặp đi lặp lại nhiều lần (lặp một số lượng lần nào đó, hoặc lặp cho đến khi thoả mãn một điều kiện nào đó).
PHP cung cấp cho chúng ta hai kiểu [...]]]></description>
			<content:encoded><![CDATA[<p>Điều khiển vòng lặp, tức là bạn điều khiển chương trình của bạn tự động thực hiện một đoạn mã lệnh nào đó lặp đi lặp lại nhiều lần (lặp một số lượng lần nào đó, hoặc lặp cho đến khi thoả mãn một điều kiện nào đó).</p>
<p>PHP cung cấp cho chúng ta hai kiểu vòng lặp: vòng lặp while (lặp kiểm tra điều kiện, cho đến khi điều kiện được thoả mãn) và vòng lặp for (xác định số lần lặp lại)</p>
<p><span id="more-294"></span></p>
<p>a) Vòng lặp while</p>
<p>Vòng lặp while là một dạng vòng lặp đơn giản nhất, cấu trúc của nó gần giống như lệnh if:</p>
<p>while (điều kiện)<br />
{<br />
//Khoi cau lenh can lap<br />
}</p>
<p>Vòng lặp while sẽ ước lượng một biểu thức giá trị kiểu boolean (đúng hoặc sai).Nếu giá trị của biểu thức là false, đoạn mã trong cặp dấu ngoặc (đoạn mã cần lặp) sẽ được bỏ qua và nhảy đến đoạn mã sau vòng lặp. Nếu giá trị của nó là true, đoạn mã trong cặp dấu ngoặc sẽ được thực thi. Khi bắt gặp dấu ngoặc ôm (&#8220;}&#8221;) , điều kiện kiểm tra sẽ được tính toán lại, và nếu giá trị vẫn là true, đoạn mã trong ngoặc lại tiếp tục được thực thi. Chú ý rằng điều kiện lặp chỉ được tính toán tại thời điểm bắt đầu lặp. Vì vậy, dù điều kiện lặp có bị thay đổi trong quá trình thực thi đoạn lệnh trong cặp dấu {} thì đoạn lệnh đó vẫn được tiếp tục thực hiện cho đến hết. Muốn dừng lại ở một vị trí xác định nào đó trong khối câu lệnh, chúng ta sử dụng lệnh break:<br />
Ví dụ1: Tính tổng từ 1 đến 5:</p>
<p>&lt;?php<br />
$i=0;<br />
$tong=0;<br />
while ($i<=5)<br />
{<br />
$tong=$tong+$i;<br />
$i+=1;<br />
}<br />
?></p>
<p>Ví dụ 2: Đoạn mã sau sẽ hiển thị trên trình duyệt 3 ô textbox (Với điều kiện bạn phải save nó dưới một file *.php :</p>
<p>&lt;HTML><br />
&lt;TABLE><br />
&lt;BODY><br />
&lt;?php<br />
$i=1;<br />
while ($i<=3)<br />
{<br />
?><br />
&lt;TR>&lt;TD> &lt;INPUT type=&#34;ext&#34;> </TD></TR><br />
&lt;?php<br />
$i+=1;<br />
}<br />
?><br />
&lt;/table><br />
&lt;/body><br />
&lt;/html></p>
<p>b. Vòng lặp do&#8230;while</p>
<p>Vòng lặp này giống như vòng lặp while, nhưng thay vì kiểm tra điều kiện vào lúc đầu của đoạn lệnh cần lặp, thì nó lại kiểm tra giá trị điều kiện vào cuối vòng lặp. Điều này có nghĩa là nó luôn luôn thực hiện đoạn lệnh cần lặp ít nhất một lần.</p>
<p>Cấu trúc của nó như sau:</p>
<p>do<br />
{ Đoạn (khối) câu lệnh cần lặp<br />
} while (điều kiện);</p>
<p>Ví dụ:<br />
&lt;HTML><br />
&lt;TABLE><br />
&lt;BODY><br />
&lt;?php<br />
$i=1;<br />
do<br />
{<br />
?><br />
&lt;TR>&lt;TD> &lt;INPUT type=&#34;text&#34;> &lt;/TD>&lt;/TR><br />
&lt;?php<br />
$i+=1;<br />
}while ($i<=3);<br />
?><br />
&lt;/table><br />
&lt;/body><br />
&lt;/html></p>
<p>Để xác định lại sự khác nhau của 2 câu lệnh trên, đơn giản bạn chỉ việc thay điều kiện $i<=3 thành $i<1, bạn sẽ thấy hai kết quả khác nhau liền . Phần này dành cho bạn tự ngồi nghĩ. OK???</p>
<p>Quên mất, lúc nãy tôi đề cập đến lệnh break, nhưng chưa cho ví dụ, bây giờ chúng ta hãy xem xét ví dụ sau:</p>
<p>Các bạn biết rằng giai thừa là một con số lớn kinh khủng, và chương trình của chúng ta sẽ tính toán n giai thừa, với số n được gửi đến theo địa chỉ url: Nhanhoa.com - Offline (ở đó x là một số do người dùng tự nhập)</p>
<p>Do giai thừa là một con số cực kỳ lớn, nên chúng ta chỉ cho phép người dùng tính đến tối đa là 8 giai thừa chẳng hạn. Nếu họ nhập lớn hơn 8 thì sao? Hãy xem đây:</p>
<p>&lt;HTML><br />
&lt;?php<br />
// Ghi lai voi ten file la giaithua.php<br />
$giaithua=1;<br />
$i=1;<br />
while ( $i<=$n)<br />
{<br />
$giaithua*=$i;<br />
$i+=1;<br />
if ($i>8 )<br />
{<br />
echo (&#34;Chi tinh den 8! <BR>&#34;);<br />
break;<br />
}<br />
}<br />
echo (&#34;Ket qua la: &#34;.$giaithua);<br />
?><br />
&lt;/HTML></p>
<p>Đoạn mã trên chỉ cho phép tính đến 8 giai thừa, nếu người dùng nhập một con số lớn hơn 8 thì máy sẽ hiển thị 8 giai thừa, còn nếu nhỏ hơn thì vẫn chạy tốt.</p>
<p>c) Vòng lặp for.</p>
<p>Vòng lặp for, với ý nghĩa đầu tiên là lặp với số lần định trước, có cấu trúc như sau:</p>
<p>for ( $biến = giá_trị_đầu; $biến < (hay <=) giá_trị_kết_thúc; tăng_biến_đếm)<br />
{<br />
// Khối câu lệnh<br />
}</p>
<p>Biểu thức $biến=giá_trị_đầu, đảm bảo biến được gán một giá trị khởi đầu (1)<br />
Biểu thức $biến< (hay <=) giá_trị_kết_thúc, sẽ xác định xem biến đã đạt đến giá trị kết thúc (tức là điều kiện lặp không còn đúng nữa) chưa (2)<br />
Biểu thức tính toán tăng_biến_đếm đảm bảo để sau một số lần lặp nào đó thì biểu thức xác định điều kiện (2) sẽ dẫn đến kết quả sai (để thoát khỏi vòng lặp).</p>
<p>Ví dụ:<br />
for ( $i = 1; $i <10; ++$i)<br />
{<br />
echo (&#34;Giá trị của biến \$i là: &#34;.$i);<br />
}</p>
<p>Một biến dạng khác của vòng lặp for, gần giống như lệnh rẽ nhánh if và while:</p>
<p>for (bieu_thuc_1; bieu_thuc_2; bieu_thuc_3):<br />
// Khối câu lệnh<br />
endfor;</p>
<p>Ví dụ:</p>
<p>&lt;?php<br />
for ($i=1; $i<=10;++$i)</p>
<p>?><br />
&lt;TR>&lt;TD> &lt;INPUT type=&#34;text&#34;> &lt;/TD>&lt;/TR><br />
&lt;?php<br />
endfor<br />
?></p>
<p>OK, Như vậy các bạn đã học qua các lệnh cơ bản nhất của php, và cũng là các lệnh cơ bản của tất cả các ngôn ngữ lập trình (gán, rẽ nhánh và lặp). Sau này nếu phải triển khai trên các ngôn ngữ lập trình khác, cách viết các lệnh này có thể khác nhau, nhưng bản chất của chúng thì mãi mãi không bao giờ thay đổi.</p>
<p>Nguồn: phpvn.org </p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/lenh-dieu-khien-vong-lap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mảng trong Javascript</title>
		<link>http://blogthietkeweb.com/2010/05/mang-trong-javascript/</link>
		<comments>http://blogthietkeweb.com/2010/05/mang-trong-javascript/#comments</comments>
		<pubDate>Sat, 08 May 2010 02:40:07 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Lập trình Web]]></category>
		<category><![CDATA[Huong doi tuong]]></category>
		<category><![CDATA[Lap trinh web]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=309</guid>
		<description><![CDATA[
JavaScript cung cấp cho mảng rất nhiều tính năng để sử dụng vào nhiều mục đích khác nhau. Bài viết này cố gắng cover những tính năng về mảng, càng nhiều càng tốt.

Cách sử dụng mảng
Có 3 cách như sau:
Cách 1: Sử dụng lớp &#39;Array&#39;
Vì Array là 1 object nên phải dùng từ khóa &#39;new&#39; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogthietkeweb.com/wp-content/uploads/2010/05/MangtrongJavaScript_tkw1.jpg"><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/MangtrongJavaScript_tkw1-150x150.jpg" alt="" title="MangtrongJavaScript_tkw" width="150" height="150" class="alignnone size-thumbnail wp-image-311" /></a></p>
<p>JavaScript cung cấp cho mảng rất nhiều tính năng để sử dụng vào nhiều mục đích khác nhau. Bài viết này cố gắng cover những tính năng về mảng, càng nhiều càng tốt.</p>
<p><span id="more-309"></span><br />
Cách sử dụng mảng</p>
<p>Có 3 cách như sau:<br />
Cách 1: Sử dụng lớp &#39;Array&#39;</p>
<p>Vì Array là 1 object nên phải dùng từ khóa &#39;new&#39; để tạo mảng.</p>
<p>// Khai báo mảng<br />
var arr = new Array();</p>
<p>Nếu muốn đưa giá trị vào các phần tử của mảng thì hãy khai báo như sau:</p>
<p>// Khai báo mảng<br />
var arr = new Array(&#34;xin chào&#34;, 100, &#34;bạn là ai thế?&#34;, 0.911);<br />
// Để kiểm tra các giá trị có trong arr thì dùng đoạn mã sau:<br />
for (var x in arr) alert(arr[x]); // x là index, arr[x] là value<br />
// Hoặc tương đương với đoạn mã trên:<br />
for (var i=0; i</p>
<p>Có thể đưa mọi loại giá trị vào trong mảng Array.</p>
<p>Chi tiết về lớp Array xem phần &#39;Lớp Array&#39;.<br />
Cách 2: Sử dụng cặp ngoặc vuông &#39;[]&#39;</p>
<p>Thực ra đây là một kiểu viết khác của lớp Array. Khi khai báo mảng bằng cặp ngoặc vuông &#39;[]&#39;<br />
thì cũng sử dụng được các phương thức có trong lớp Array (xem phần &#39;Lớp Array&#39;).</p>
<p>// Khai báo mảng<br />
var arr = [];</p>
<p>Nếu muốn đưa giá trị vào các phần tử của mảng thì hãy khai báo như sau:</p>
<p>// Khai báo mảng<br />
        var arr = [&#34;xin chào&#34;, 100, &#34;bạn là ai thế?&#34;, 0.911];<br />
        // Để kiểm tra các giá trị có trong arr thì dùng đoạn mã sau:<br />
        for (var x in arr) alert(arr[x]); // x là index, arr[x] là value<br />
        // Hoặc tương đương với đoạn mã trên:<br />
        for (var i=0; i<arr.length; i++) alert(arr[i]);<br />
        // Cả 2 lệnh 'for' ở trên đều cho cùng 1 kết quả.</p>
<p>Có thể đưa mọi loại giá trị vào trong mảng Array.<br />
Vì &#39;[]&#39; giống lớp &#39;Array&#39; nên xem phần &#39;Lớp Array&#39; để biết về khả năng của &#39;[]&#39;.<br />
Cách 3: Sử dụng cặp ngoặc bao &#39;{}&#39;</p>
<p>Cách này hay dùng khi muốn tạo 1 bảng hash (hash-map):</p>
<p>// Khai báo mảng<br />
var arr = {item1: &#34;xin chào&#34;, item2: 100, item3: &#34;bạn là ai thế?&#34;,<br />
item4: 0.911};<br />
// Để sử dụng lệnh 'for' để duyệt mảng hash thì chỉ có 1 cách thôi:<br />
for (var x in arr) alert(arr[x]); // x là key, arr[x] là value</p>
<p>Khai báo tổng quát của mảng hash như sau:</p>
<p>// Khai báo chung<br />
var arr1 = {key1: value1, key2: value2, ...};<br />
// Hoặc tách các cặp (key, value) ra từng dòng riêng rẽ:<br />
var arr2 = {<br />
key1: value1,<br />
key2: value2,<br />
...<br />
}<br />
// Khi duyệt mảng hash thì dùng 'for (var x in...<br />
for (var x in arr) {<br />
// Xử lý x ở đây<br />
}<br />
// Lấy từng phần tử của mảng hash qua key của nó như sau:<br />
var value = arr[key];</p>
<p>Tuy nhiên mảng hash không sử dụng được các phương thức của lớp Array. Bù lại, cách viết này rất lý thú khi tạo lớp.<br />
Sự khác nhau giữa các cách viết mảng</p>
<p>So sánh qua bảng sau:<br />
Nội dung so sánh 	Array 	[] 	{}<br />
Phân loại 	Mảng+Hash 	Mảng+Hash 	Hash<br />
Hỗ trợ các phương thức duyệt mảng như:<br />
push, pop, shift... (nhiều đấy, google để tìm<br />
nhé) 	Có 	Có 	Không<br />
for (var x in array) 	Có 	Có 	Có<br />
for (var i=0; i<array.length; i++) 	Có 	Có 	Không<br />
Lấy kích thước bằng: array.length 	Có 	Có 	Không<br />
Hỗ trợ viết lớp 	Không 	Không 	Có<br />
Sử dụng mảng để viết lớp</p>
<p>Việc dùng mảng để viết lớp chỉ áp dụng cho cách khai báo thứ 3 (xem lại mục trên).</p>
<p>Có thể khai báo lớp như sau:</p>
<p>// Khai báo lớp không dùng mảng hash<br />
function Class() {<br />
   this.thuoc_tinh1 = &#39;thuộc tính1&#39;; // giá trị tùy ý<br />
   this.thuoc_tinh2 = 1000; // giá trị tùy ý<br />
   /* Khai báo phương thức 1 cho lớp Class */<br />
   this.phuong_thuc1 = function(){<br />
      // xử lý ở đây<br />
      alert(this.thuoc_tinh2);<br />
      alert(this.thuoc_tinh1);<br />
   }<br />
   /* Khai báo phương thức 2 cho lớp Class */<br />
   this.phuong_thuc2 = function(){<br />
      // xử lý ở đây<br />
   }<br />
}</p>
<p>Nếu dùng mảng hash thì có thể tách riêng phần hàm tạo của lớp với phần khai báo các thuộc tính<br />
và các phương thức còn lại như sau:</p>
<p>// Khai báo lớp có dùng mảng hash<br />
function Class() {} // Chỉ là hàm tạo thôi, ko chứa gì cả<br />
/* Khai báo thuộc tính và phương thức của lớp bằng mảng hash */<br />
Class.prototype = {<br />
   thuoc_tinh1: 'thuộc tính1', // giá trị tùy ý<br />
   thuoc_tinh2: 1000, // giá trị tùy ý<br />
   phuong_thuc1: function() {<br />
      // xử lý ở đây<br />
      alert(this.thuoc_tinh2);<br />
      alert(this.thuoc_tinh1);<br />
   },<br />
   phuong_thuc2: function(param1, param2...) {<br />
      // xử lý ở đây<br />
   },<br />
}</p>
<p>Lưu ý là vì dùng mảng nên phải có dấu phẩy ',' để ngăn cách các thuộc tính và phương thức của lớp. Khi dùng mảng hash thì ko cần dùng đến khai báo 'this' nhưng khi tham chiếu thì phải dùng 'this'.<br />
Hoàn toàn có thể kết hợp 2 cách khai báo lớp ở trên khi viết lớp.<br />
Lớp Array</p>
<p>Lớp Array trong JavaScript rất mạnh. Nó làm được mọi thứ:<br />
 Mảng<br />
 Stack<br />
 Queue<br />
 Hashtable<br />
Cách sử dụng<br />
Khởi tạo mảng như tạo một object trong C++, C# hay Java</p>
<p>// Array trong JavaScript là 1 object<br />
// Đặt tên Array giống tên biến<br />
var arr = new Array();</p>
<p>hoặc</p>
<p>// Tạo mảng có kích thước 100<br />
var arr = new Array(100);</p>
<p>Nếu biết trước kích thước mảng thì khai báo theo cách thứ 2 sẽ chạy nhanh hơn.<br />
Ko phải xóa bộ nhớ cho mảng vì JavaScript có bộ dọn dẹp riêng (giống Java hoặc C#).<br />
Lấy kích thước (tổng số phần tử) của mảng</p>
<p>var size = arr.length;</p>
<p>Nối các phần tử trong mảng thành 1 chuỗi dùng hàm join của Array</p>
<p>Khi dùng Array như 1 Hashtable thì ko dùng được hàm join.</p>
<p>// Muốn ngăn các phần từ bằng chuỗi gì thì đặt chuỗi đó vào giữa<br />
// 2 dấu nháy kép<br />
var s = arr.join(&#34;&#34;);</p>
<p>Các chức năng của Array<br />
Giống như 1 mảng thông thường</p>
<p>// Có thể gán mọi giá trị cho Array<br />
// vì trong JavaScript không phân biệt kiểu dữ liệu<br />
arr[i] = value;</p>
<p>Sử dụng như mảng thông thường:</p>
<p>arr[i] = arr[i+1]; ...</p>
<p>Ví dụ:</p>
<p>&lt;html><br />
        &lt;title>Array</title><br />
        &lt;head><br />
        &lt;script language=&#JavaScript”><br />
        // Khai báo mảng ko xác định kích cỡ<br />
        var arr = new Array();<br />
        // Gán giá trị cho mảng<br />
        arr[0] = 100;<br />
        arr[1] = “Array”;<br />
        arr[2] = 57.98;<br />
        arr[5] = true;<br />
        // Để nối các phần tử trong mảng dùng<br />
        var s = arr.join(“ &#8211; ”);<br />
        alert(“Mảng arr = [”+s+”]”);<br />
        &lt;/script><br />
        &lt;/head><br />
        &lt;body></body></p>
<p>Stack</p>
<p>Array cung cấp 2 phương thức là push và pop để thực hiện nhiệm vụ của Stack.</p>
<p>// Khai báo stack<br />
var stack = new Array();<br />
// Thêm 1 phần tử vào stack<br />
// value là dữ liệu bất kỳ cần đưa vào stack<br />
stack.push(value);<br />
// Lấy 1 phần tử từ stack<br />
var element = stack.pop();</p>
<p>Ví dụ:</p>
<p>&lt;html><br />
&lt;head><br />
&lt;title>Stack</title><br />
&lt;script language=&#34;JavaScript&#34;><br />
// Tạo stack<br />
var stack = new Array();<br />
// Thêm phần tử vào stack<br />
stack.push(&#34;Value 1&#34;);<br />
stack.push(&#34;Value 2&#34;);<br />
stack.push(&#34;Value 3&#34;);<br />
// Sử dụng log để hiển thị stack<br />
var log = &#34;stack = [&#34;+stack.join(&#34; -> &#34;)+&#34;]\n&#34;;<br />
// Lấy dữ liệu từ stack<br />
// Ko đặt stack.length trong vòng for vì sau<br />
// mỗi vòng lặp kích thước stack sẽ thay đổi<br />
var max = stack.length;<br />
for (var i=0; i<max; i++){<br />
   log += &#34;pop: &#34;+stack.pop()+&#34;\n&#34;;<br />
}<br />
// stack sau khi lấy hết dữ liệu<br />
log += &#34;stack = [&#34;+stack.join(&#34; - &#34;)+&#34;]&#34;;<br />
// Hiển thị stack<br />
alert(log);<br />
&lt;/script><br />
&lt;/head><br />
&lt;body></body><br />
&lt;/html></p>
<p>Queue</p>
<p>Array cung cấp 2 phương thức làm nhiệm vụ của Queue là push và shift.</p>
<p>// Khai báo queue<br />
var queue = new Array();<br />
// Thêm 1 phần tử vào stack<br />
// value là dữ liệu bất kỳ cần đưa vào queue.<br />
// Giống y trang stack, huh?<br />
queue.push(value);<br />
// Lấy 1 phần tử từ queue<br />
var element = queue.shift();</p>
<p>Ví dụ:</p>
<p>&lt;html><br />
&lt;head><br />
&lt;title>Queue</title><br />
&lt;script language=&#34;JavaScript&#34;><br />
// Tạo queue<br />
var queue = new Array();<br />
// Thêm phần tử vào queue<br />
queue.push(&#34;Value 1&#34;);<br />
queue.push(&#34;Value 2&#34;);<br />
queue.push(&#34;Value 3&#34;);<br />
// Sử dụng log để hiển thị queue<br />
var log = &#34;queue = [&#34;+queue.join(&#34; -> &#34;)+&#34;]\n&#34;;<br />
// Lấy dữ liệu trong queue<br />
// Ko đặt queue.length trong vòng for vì sau<br />
// mỗi vòng lặp kích thước queue sẽ thay đổi<br />
var max = queue.length;<br />
for (var i=0; i<max; i++){<br />
   log += &#34;shift: &#34;+queue.shift()+&#34;\n&#34;;<br />
}<br />
// Queue sau khi hết dữ liệu<br />
log += &#34;queue = [&#34;+queue.join(&#34; -> &#34;)+&#34;]&#34;;<br />
// Hiển thị queue<br />
alert(log);<br />
</script><br />
</head><br />
<body></body><br />
</html></p>
<p>Hashtable</p>
<p>Thay chỉ số (số thứ tự các phần tử trong Array) bằng chuỗi sẽ được bảng hash.</p>
<p>// Tạo bảng hash<br />
var hashtable = new Array();<br />
// Gán giá trị (key, value) cho bảng hash<br />
hashtable[key] = value;</p>
<p>Việc tạo bảng hash chỉ được 1 mức:</p>
<p>hashtable[key1][key2] = value; // error vì có 2 mức<br />
hashtable[key1] = value; // ok<br />
hashtable[key2] = value; // ok</p>
<p>Khi tạo bảng hash thì ko dùng được phương thức join và thuộc tính length.<br />
Để đọc tất cả các (key, value) trong bảng hash ko dùng vòng lặp for như sau:</p>
<p>for (var value in hashtable){<br />
   // xử lý value ở đây<br />
}</p>
<p>Ví dụ:</p>
<p>&lt;html><br />
&lt;head><br />
&lt;title>Hash Table</title><br />
&lt;script language=”JavaScript”><br />
// Tạo bảng hash<br />
var hashtable = new Array();<br />
// Thêm giá trị vào bảng hash<br />
hashtable[&#34;key1&#34;] = &#34;value1&#34;;<br />
hashtable[&#34;key2&#34;] = 2;<br />
// Hiển thị từng value theo key<br />
alert(hashtable[&#34;key1&#34;]);<br />
alert(hashtable[&#34;key2&#34;]);<br />
alert(hashtable[&#34;key3&#34;]); // kq: undefined<br />
// Hiển thị tất cả các giá trị trong bảng hash<br />
var log = &#34;&#34;;<br />
for (var value in hashtable) {<br />
   log += value+&#34;; &#34;<br />
}<br />
alert(log);<br />
&lt;/script><br />
&lt;/head><br />
&lt;body></body><br />
&lt;/html></p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/mang-trong-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chọn sản phẩm bằng cách kéo thả vào giỏ hàng sử dụng Javascript</title>
		<link>http://blogthietkeweb.com/2010/05/chon-san-pham-bang-cach-keo-tha-vao-gio-hang-su-d%e1%bb%a5ng-javascript/</link>
		<comments>http://blogthietkeweb.com/2010/05/chon-san-pham-bang-cach-keo-tha-vao-gio-hang-su-d%e1%bb%a5ng-javascript/#comments</comments>
		<pubDate>Sat, 08 May 2010 02:05:27 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Lập trình Web]]></category>
		<category><![CDATA[Huong doi tuong]]></category>
		<category><![CDATA[Lap trinh web]]></category>
		<category><![CDATA[website thuong mai]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=299</guid>
		<description><![CDATA[
Ngày trước, khi xem một website thương mại điện tử có chức năng kéo thả sản phẩm vào giỏ hàng. Đơn giản, người sử dụng chỉ cần kéo sản phẩm muốn mua vào giỏ hàng và giỏ hàng sẽ được cập nhật sản phẩm mới. Bài viết này chính là để giới thiệu chức năng [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogthietkeweb.com/"><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/giohang_thk_1.jpg" alt="" title="giohang_thk_1" width="100" height="101" class="alignnone size-full wp-image-300" /></a></p>
<p>Ngày trước, khi xem một website thương mại điện tử có chức năng kéo thả sản phẩm vào giỏ hàng. Đơn giản, người sử dụng chỉ cần kéo sản phẩm muốn mua vào giỏ hàng và giỏ hàng sẽ được cập nhật sản phẩm mới. Bài viết này chính là để giới thiệu chức năng đó. </p>
<p>Đối với ứng dụng này, mình dùng SQL Server 2005 Express để tạo một CSDL đơn giản có tên là ToyShopDatabase, có một bảng duy nhất tên là TblToys, gồm có 4 trường: ToyID, Title, ImageUrl và Price.</p>
<p><span id="more-299"></span></p>
<p><a href="http://blogthietkeweb.com"><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/giohang_thk_2.jpg" alt="" title="giohang_thk_2" width="400" height="259" class="alignnone size-full wp-image-301" /></a></p>
<p>Để hiển thị dữ liệu, mình sử dụng một Datalist. Hàm BindData() dưới đây được sử dụng để nhận dữ liệu từ CSDL.</p>
<p>private void BindData()<br />
    {<br />
        string connectionString = ConfigurationManager.ConnectionStrings[&#34;ConnectionString&#34;].ConnectionString;<br />
        SqlConnection myConnection = new SqlConnection(connectionString);</p>
<p>        SqlDataAdapter ad = new SqlDataAdapter(&#34;SELECT * FROM tblToys&#34;, myConnection);<br />
        DataSet ds = new DataSet();<br />
        ad.Fill(ds);</p>
<p>        dlToys.DataSource = ds;<br />
        dlToys.DataBind();<br />
    }</p>
<p>Bạn có thể nhìn thấy các Item được hiển thị trong hình ảnh dưới đây:</p>
<p>Chúng ta biết rằng các thẻ DIV sẽ được coi như là một đối tượng có thể kéo đi được. Tuy nhiên có rất nhiều thẻ DIV trong một trang, vậy làm thế nào có thể xác định được thẻ DIV nào thuộc đặc tính kéo và thả này?  Chúng ta sẽ sử dụng một biểu thức quy tắc để lọc những thẻ DIV đúng:</p>
<p>var dragElementPattern = &#34;.+_a$&#34;;</p>
<p>var divElements = document.getElementsByTagName(&#34;div&#34;);     </p>
<p>for(i=0;i
<divElements.length;i++)<br />
{  </p>
<p>    if(IsMatch(divElements[i].id, dragElementPattern))<br />
    {<br />
        MakeElementDraggable(divElements[i]);<br />
    }<br />
}</p>
<p>Đầu tiên, chúng ta sẽ tìm và nhận tất cả các thẻ DIV có trong  trang web, sau đó tìm các thẻ DIV đúng bằng các biểu thức quy tắc. Chức năng IsMatch() sẽ chịu trách nhiệm tìm ID của các phần tử phù hợp với Pattern:</p>
<p>function IsMatch(id, pattern)<br />
{<br />
    var regularExpresssion = new RegExp(pattern);<br />
    if(id.match(regularExpresssion)) return true;<br />
    else return false;<br />
}</p>
<p>Việc tạo một bản sao cho sản phẩm khi kéo sản phẩm vào giỏ hàng là rất cần thiết. Nếu không tạo bản sao cho thi hình ảnh thật sẽ mất đi khi chúng ta kéo và thả chúng vào giỏ hàng.</p>
<p>function InitiateDrag(e)<br />
{<br />
    mouseState = &#39;down&#39;;</p>
<p>    var evt = e || window.event;</p>
<p>    startX = parseInt(evt.clientX);<br />
    startY = parseInt(evt.clientY);   </p>
<p>    clone = obj.cloneNode(true);</p>
<p>    clone.style.position = &#39;absolute&#39;;<br />
    clone.style.top = parseInt(startY) + &#39;px&#39;;<br />
    clone.style.left = parseInt(startX) + &#39;px&#39;; </p>
<p>    document.body.appendChild(clone);    </p>
<p>    document.onmousemove = Drag;<br />
    document.onmouseup = Drop; </p>
<p>    return false;<br />
}</p>
<p>hiện nay có rất nhiều trình duyệt khác nhau, vì vậy mà việc tạo một zone thích ứng với trình duyệt tương đối khó. Sự kiện Drop chỉ thành công khi sản phẩm được thả vào đúng drop zone. Thực chất thì nó dựa vào vị trí của con trỏ khi ta thả tay và vị trí của Drop Zone.</p>
<p>function InitiateDrag(e)<br />
{<br />
    mouseState = &#39;down&#34;;</p>
<p>    var evt = e || window.event;</p>
<p>    startX = parseInt(evt.clientX);<br />
    startY = parseInt(evt.clientY);   </p>
<p>    clone = obj.cloneNode(true);</p>
<p>    clone.style.position = &#39;absolute&#39;;<br />
    clone.style.top = parseInt(startY) + &#34;px&#34;;<br />
    clone.style.left = parseInt(startX) + &#34;px&#34;; </p>
<p>    document.body.appendChild(clone);    </p>
<p>    document.onmousemove = Drag;<br />
    document.onmouseup = Drop; </p>
<p>    return false;<br />
}</p>
<p>Nếu sản phẩm không được thả vào trong vùng Drop Zone thì sản phẩm chỉ biến mất đi thôi. Tuy nhiên nếu đúng trong vùng đó thì sản phẩm sẽ được cho vào Shopping Cart. Chức năng AddPrice sẽ có nhiệm vụ cập nhật Tổng tiền và hiển thị sản phẩm trên Shopping Cart. Mỗi sản phẩm được chèn vào bên trong một thẻ DIV mà sau đó sẽ được chèn vào trong vùng Drop Zone.</p>
<p>function AddPrice()<br />
{  </p>
<p>   var title = GetProductTitle();<br />
   var price = GetProductPrice();</p>
<p>    var dZone = document.getElementById(&#34;dZone&#34;);<br />
    var textNode = document.createTextNode(title);<br />
    var priceNode = document.createTextNode(price);</p>
<p>    var spaceNode = document.createTextNode(&#39;:  $&#39;);<br />
    var paragraphElement = document.createElement(&#39;p&#39;);</p>
<p>    // create the delete button</p>
<p>    var deleteButton = document.createElement(&#39;button&#39;);<br />
    deleteButton.value = &#34;Delete&#39;;<br />
    deleteButton.innerHTML = &#39;Delete&#39;;<br />
    deleteButton.onclick = DeleteItem;</p>
<p>    var item = document.createElement(&#34;div&#34;);<br />
    item.id = &#34;itemDiv&#34; + uniqueNumber;</p>
<p>    item.appendChild(paragraphElement);<br />
    item.appendChild(textNode);<br />
    item.appendChild(spaceNode);<br />
    item.appendChild(priceNode);<br />
    item.appendChild(spaceNode);<br />
    item.appendChild(deleteButton);</p>
<p>    dZone.appendChild(item); </p>
<p>    // increment the price<br />
    IncrementTotal(price);<br />
    uniqueNumber++;</p>
<p>}</p>
<p>2 hàm GetProductTitle() và GetProductPrice() được sử dụng để lấy Title và Price từ sản phẩm. Biến uniqueNumber được sử dụng để tạo ra mã duy nhất cho mỗi thẻ DIV mới được tạo ra. Nó sẽ tăng giá trị mỗi khi một sản phẩm được cho vào giỏ hàng. Chức năng IncrementTotal() để sử dụng để tính tổng giá sản phẩm trong giỏ hàng.</p>
<p>Bên cạnh tên và giá sản phẩm, ta để luôn một nút Delete để có thể xóa sản phẩm trực tiếp. khi nhấn nút đó, sản phẩm tương ứng sẽ bị xóa ngay khỏi giỏ hàng.</p>
<p>function DeleteItem(e)<br />
{<br />
    var evt = e || window.event;<br />
    var evtTarget = evt.target || evt.srcElement;</p>
<p>    if(IsFireFox())<br />
    {<br />
        price = evtTarget.parentNode.childNodes[2].nodeValue;<br />
        evtTarget.parentNode.parentNode.removeChild(evtTarget.parentNode);<br />
    }<br />
    else<br />
    {<br />
    price = evtTarget.parentElement.childNodes[2].nodeValue;<br />
    evtTarget.parentElement.parentElement.removeChild(evtTarget.parentElement);<br />
    }</p>
<p>    DecrementTotal(price);<br />
}</p>
<p>Còn chức năng DecrementTotal() dùng để cân bằng lại tổng giá trị sản phẩm hiện có trong giỏ hàng khi mỗi sản phẩm được xóa bỏ.</p>
<p>Với bài viết này thì chức năng Shopping cart vẫn thực sự chưa hoàn thiện. Hy vọng các bạn sẽ ứng dụng được vào website của mình. Các bạn có thể download mã nguồn của chương trình <a href="http://zensoft.vn/Attachs/Articles/2893/ToyShop.zip"><strong>Tại đây</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/chon-san-pham-bang-cach-keo-tha-vao-gio-hang-su-d%e1%bb%a5ng-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gửi Mail trong PHP</title>
		<link>http://blogthietkeweb.com/2010/05/gui-mail-trong-php/</link>
		<comments>http://blogthietkeweb.com/2010/05/gui-mail-trong-php/#comments</comments>
		<pubDate>Fri, 07 May 2010 07:01:25 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Lập trình Web]]></category>
		<category><![CDATA[Ngôn ngữ Php]]></category>
		<category><![CDATA[Php cơ bản]]></category>
		<category><![CDATA[Co ban]]></category>
		<category><![CDATA[Lap trinh web]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=287</guid>
		<description><![CDATA[ 	Hướng dẫn tạo một hàm gửi send mail sử dụng PHP.
Trong PHP, chức năng gửi mail thực sự rất dễ dàng. Trong bài này, chúng tôi sẽ hướng dẫn các bạn tạo một trang send mail đơn giản. Ngoài ra các bạn có thể phát triển code trong bài này thành những chức năng [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogthietkeweb.com/wp-content/uploads/2010/05/guimailPHP_tkw.jpg"><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/guimailPHP_tkw.jpg" alt="" title="guimailPHP_tkw" width="135" height="108" class="alignnone size-full wp-image-288" /></a> 	Hướng dẫn tạo một hàm gửi send mail sử dụng PHP.</p>
<p>Trong PHP, chức năng gửi mail thực sự rất dễ dàng. Trong bài này, chúng tôi sẽ hướng dẫn các bạn tạo một trang send mail đơn giản. Ngoài ra các bạn có thể phát triển code trong bài này thành những chức năng send mail phức tạp hơn, đa năng hơn.<br />
Để send mail trong PHP, chúng ta cần sử dụng tới hàm mail().<br />
Cú pháp:</p>
<p>      mail(to,subject,message,headers,parameters)</p>
<p><span id="more-287"></span><br />
Ví dụ:</p>
<p>&lt;?php<br />
    $to = &#34;hotrolaptrinh@gmail.comhotrolaptrinh@gmail.com Địa chỉ email này đã được bảo vệ từ spam bots, bạn cần kích hoạt Javascript để xem nó. &#34;;<br />
    $subject = &#34;Test mail&#34;;<br />
    $message = &#34;Email này được gửi từ website: http://hotrolaptrinh.com&#34;;<br />
    $from = &#34; admin@hotrolaptrinh.com &#34;;<br />
    $headers = &#34;&#34;;<br />
    mail($to,$subject,$message,$headers);<br />
    echo &#34;Email đã được gửi đi thành công.&#34;;<br />
?></p>
<p>Gửi mail có sử dụng Form.</p>
<p>&lt;?php<br />
if (isset($_POST[&#39;sendmail&#39;]) &#038;&#038; $_POST[&#39;sendmail&#39;]==&#34;send&#34;){<br />
    //send email<br />
    $email = $_POST[&#39;email&#39;] ;<br />
    $subject = $_POST[&#39;subject&#39;] ;<br />
    $message = $_POST[&#39;message&#39;] ;<br />
    $to=&#34hotrolaptrinh@gmail.com&#34;<br />
    mail( $to, &#34;Subject: $subject&#34;,$message, &#34;From: $email&#34; );<br />
    echo &#34;Gửi thành công&#34;;</p>
<p>}<br />
?><br />
&lt;form method=&#34;post&#34;></p>
<p>Email: &nbsp;&nbsp;&lt;input type=&#34;text&#34; name=&#34;email&#34; />&lt;br /><br />
Subject: &nbsp;&nbsp;&lt;input type=&#34;text&#34; name=&#34;subject&#34; />&lt;br /><br />
Message:&lt;br /><br />
&lt;textarea name=&#39;message&#39; rows=&#39;15&#39; cols=&#39;40&#39;><br />
        &lt;/textarea>&lt;br /><br />
      &lt;input type=&#34;submit&#34; name=&#34;sendmail&#34; value=&#34;send&#34; /></p>
<p>&lt;/form></p>
<p>Theo hotrolaptrinh</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/gui-mail-trong-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ebook sổ tay WordPress &#124; Thủ thuật blog tiếng Việt toàn tập</title>
		<link>http://blogthietkeweb.com/2010/05/ebook-so-tay-wordpress-thu-thuat-blog-tieng-viet-toan-tap/</link>
		<comments>http://blogthietkeweb.com/2010/05/ebook-so-tay-wordpress-thu-thuat-blog-tieng-viet-toan-tap/#comments</comments>
		<pubDate>Thu, 06 May 2010 02:29:38 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Download tài liệu]]></category>
		<category><![CDATA[Thu thuat]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=278</guid>
		<description><![CDATA[Ebook, sổ tay tiếng Việt hướng dẫn toàn tập :cơ bản và nâng cao dành cho Blog WordPress
“Đây là phiên bản đầu tiên, Ebook này sẽ còn được cập nhật, chỉnh sửa và bổ sung thêm nhiều bài viết mới để nó xứng đáng được song hành cùng bạn, cùng WordPress. Nhờ mọi người đóng [...]]]></description>
			<content:encoded><![CDATA[<p>Ebook, sổ tay tiếng Việt hướng dẫn toàn tập :cơ bản và nâng cao dành cho Blog WordPress</p>
<p>“Đây là phiên bản đầu tiên, Ebook này sẽ còn được cập nhật, chỉnh sửa và bổ sung thêm nhiều bài viết mới để nó xứng đáng được song hành cùng bạn, cùng WordPress. Nhờ mọi người đóng góp ý kiến, bổ sung, sửa chữa những lỗi có thể trong nội dung quyển sổ tay này cũng như đóng góp thêm bài viết để các phiên bản sau phong phú, đầy đủ hơn.”</p>
<p><strong>Download tại đây</strong></p>
<p><a href="http://www.megaupload.com/?d=XU81D0KF">http://www.megaupload.com/?d=XU81D0KF</a></p>
<p>Tác giả VietTut</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/ebook-so-tay-wordpress-thu-thuat-blog-tieng-viet-toan-tap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Việt hóa blog WordPress</title>
		<link>http://blogthietkeweb.com/2010/05/viet-hoa-blog-wordpress-2/</link>
		<comments>http://blogthietkeweb.com/2010/05/viet-hoa-blog-wordpress-2/#comments</comments>
		<pubDate>Thu, 06 May 2010 01:54:31 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Thu thuat]]></category>
		<category><![CDATA[Ma nguon mo]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=272</guid>
		<description><![CDATA[WordPress là một trong những Blog được người Việt nam cũng như thế giới ưa chuộng, tiếc thay giao diện nó hoàn toàn là tiếng Anh nên việc làm quen và sử dụng đối với nhiều người còn khó khăn. Qua bài này, tôi xin hướng dẫn mọi người cách để Việt hóa WordPress, với [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress là một trong những Blog được người Việt nam cũng như thế giới ưa chuộng, tiếc thay giao diện nó hoàn toàn là tiếng Anh nên việc làm quen và sử dụng đối với nhiều người còn khó khăn. Qua bài này, tôi xin hướng dẫn mọi người cách để Việt hóa WordPress, với hy vọng WordPress ngày càng thân thiện hơn và phổ biến hơn nữa.</p>
<p>Yêu cầu: Blog WordPress sử dụng trên Host riêng (không áp dụng đối với blog wordpress.com) – Nếu không có Host nhưng vẫn muốn dùng thử WordPress tiếng Việt, có thể vào sky.vn đăng kí cho mình một Blog WordPress giao diện tiếng Việt với hàng đống Plugins + Themes sẵn có.<br />
Cách thức tiến hành:</p>
<p>Cách 1. Edit các file .php có trong mã nguồn WordPress và Việt hóa từng file một, kiến nghị sử dụng Notepad+++ (Download: http://notepad-plus.sourceforge.net/) và Unikey 4.0, bảng mã UTF-8 Literal và một công cụ quan trọng không thể thiếu nữa: cuốn từ điển Anh – Việt.</p>
<p><span id="more-272"></span><br />
Khuyết điểm: khá phức tạp và tốn nhiều thời gian do nhiều lúc chẳng biết đoạn cần Việt hóa nó nằm ở file nào… Khi cần nâng cấp WordPress lên phiên bản mới hơn thì coi như làm lại từ đầu.</p>
<p>Cách 2. Sử dụng .MO đã được Việt hóa sẵn. (Download here – đã việt hóa gần như hoàn toàn, cả Admin Control Panel). Giải nén và upload tập tin vi_VN.mo lên thư mục wp-includes/languages (tạo thêm nếu chưa có), mở file wp-config.php và sửa lại đoạn code define (’WPLANG’, ”); thành define (’WPLANG’, ‘vi_VN’);</p>
<p>Đến đây thì xem như đã hoàn thành 90% công việc rồi.</p>
<p>Việc còn lại là Việt hóa nốt các file trong Thư mục Theme mà bạn sử dụng + các Plugins mà bạn đã thêm vào. (Tương tự như Việt hóa các file .php trong mã nguồn WordPress. + Một số Plugins có cung cấp file .po để chúng ta việt hóa- cách sửa file .po sẽ được hướng dẫn ỡ phần tiếp theo)</p>
<p>Cách 3: Nếu bạn không thích sử dụng những cái đã có sẵn thì có thể tự mình Việt hóa WordPress theo ý mình. Để làm được điều này thì ngoài việc Việt hóa các file .php như cách 1 đã hướng dẫn thì bạn có thể việt hóa từ file .pot (Portable Object templates- file nguồn), xuất ra .mo (Machine Object – file mà wordpress cần) và chia sẻ file việt hóa của bạn cho mọi người dùng nếu muốn.</p>
<p>Công cụ cần thiết: Một trong các công cụ như PoEdit, LauchPad, KBabel, GNU Gettest và tập tin WordPress Pot: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot.</p>
<p>// // Trong bài viết này, xin hướng dẫn các bạn sử dụng PoEdit (các công cụ còn lại sử dụng tương tự):</p>
<p>Tải và cài đặt PoEdit và dùng chúng để mở tập tin wordpress.pot, khai báo một số thông tin cần thiết như tên, địa chỉ email. Sau đó bạn sẽ được trở về giao diện chính của chương trình, trong đó khung đánh dấu số 1 là đoạn văn nguyên gốc (Tiếng Anh), khung số 2 là đoạn văn đã được dịch (tiếng Việt- dùng bản mã Unicode dựng sẵn), khung 3, 4 chỉ dùng khi bạn muốn thêm các ghi chú hoặc thông tin cần thiết. Vào menu File> Preferences>thẻ Editor, bật chức năng “Automatically compile .mo file on save box.”. Sau khi dịch hết, bạn vào menu File>>Save as và lưu lại dưới đuôi .PO, file .mo sẽ tự động được tạo cùng thư mục với file .po mà bạn đã lưu. Đến đây thì bạn chỉ cần upload file .mo lên host và sửa file wp-config.php như cách 2 đã hướng dẫn.</p>
<p>         Nguồn tham khảo:</p>
<p>http://codex.wordpress.org/WordPress_in_Your_Language</p>
<p>http://codex.wordpress.org/Translating_WordPress</p>
<p>http://www.phamen.com/viet-hoa-cho-wordpress-21x/</p>
<p>Các link download những phần mềm công cụ nhắc đến trong bài</p>
<p>PoEdit: http://prdownloads.sourceforge.net/poedit/poedit-1.3.6-setup.exe</p>
<p>LauchPad: https://translations.launchpad.net</p>
<p>KBabel: http://i18n.kde.org/tools/kbabel/</p>
<p>GNU Gettext: tp://www.gnu.org/software/gettext/</p>
<p>Tập tin đã được Việt hóa sẵn: http://maicua.free.fr/language/WP_vi_VN.rar</p>
<p>Lưu ý: Nếu Blog không hiển thị được tiếng Việt trên trình duyệt IE6 (hoặc cũ hơn) thì bạn nên vào file CSS của Theme và thay thế các font không hiển thị tốt tiếng Việt bằng những font như Tahoma, Verdana, Arial, Times New Roman… chúng hỗ trợ tốt tiếng Việt hơn.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/viet-hoa-blog-wordpress-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft chính thức ra mắt bộ sản phẩm 2010</title>
		<link>http://blogthietkeweb.com/2010/05/microsoft-chinh-thuc-ra-mat-bo-san-pham-2010/</link>
		<comments>http://blogthietkeweb.com/2010/05/microsoft-chinh-thuc-ra-mat-bo-san-pham-2010/#comments</comments>
		<pubDate>Mon, 03 May 2010 04:21:58 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Tin tức và Sự kiện]]></category>
		<category><![CDATA[Cong nghe]]></category>
		<category><![CDATA[San pham]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=265</guid>
		<description><![CDATA[
 	Microsoft vừa chính thức công bố phiên bản RTM cho các sản phẩm Office 2010, SharePoint 2010, Project 2010 và Visio 2010. 

Đây là một mốc quan trọng chuẩn bị cho sự kiện ra mắt chính thức sản phẩm Microsoft 2010 dành cho các khách hàng doanh nghiệp vào ngày 12/5 trên toàn cầu, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/office2010_tkw.jpg" alt="" title="office2010_tkw" width="360" height="250" class="alignnone size-full wp-image-266" /></p>
<p> 	Microsoft vừa chính thức công bố phiên bản RTM cho các sản phẩm Office 2010, SharePoint 2010, Project 2010 và Visio 2010. </p>
<p><span id="more-265"></span><br />
Đây là một mốc quan trọng chuẩn bị cho sự kiện ra mắt chính thức sản phẩm Microsoft 2010 dành cho các khách hàng doanh nghiệp vào ngày 12/5 trên toàn cầu, trong đó có cả Office Web Apps dành cho người dùng cá nhân (chạy trực tiếp trên Skydrive) và Office Web Apps chạy trong doanh nghiệp (cho phép hosting cùng với SharePoint 2010 trên server của công ty). Office Mobile 2010 cũng ra mắt phiên bản RTM cùng ngày và chạy tốt trên Windows Mobile 6.5.</p>
<p>Tại Việt Nam, lễ công bố sản phẩm này sẽ được tổ chức vào các ngày 24 và 28/5 tại Hà Nội và TP. HCM.</p>
<p>RTM (Release To Manufacturer) là phiên bản kỹ thuật cuối cùng và cũng là phiên bản quan trọng nhất của sản phẩm phần mềm của Microsoft trước khi sản phẩm này chính thức ra mắt thị trường. Các sản phẩm Microsoft 2010 sẽ được hỗ trợ đến 37 ngôn ngữ khác nhau.</p>
<p>Theo Microsoft, kể từ khi phiên bản Beta được công bố chính thức từ tháng 11/2009, cho đến nay đã có 7,5 triệu người trên toàn thế giới tải về (nhiều gấp 3 lần so với số lượng người tải phiên bản Office 2007) và có khoảng 5.000 công ty là các khách hàng và đối tác của Microsoft đã tham gia các chương trình sử dụng thử nghiệm và cung cấp các thông tin phản hồi. Điều này đã khiến các sản phẩm mang phiên bản 2010 nói trên trở thành các sản phẩm tuyệt vời nhất, ổn định nhất và có thể chạy trên cả máy tính, ĐTDĐ cũng như trình duyệt web.</p>
<p>Office 2010 cũng cho phép người dùng chỉnh sửa video và hình ảnh, Sparklines, giaodiện Ribbon trong tất cả các ứng dụng, Backstage, Paste Preview… Làm việc cộng tác tốt hơn: nhờ các tính năng mới như co-authoring, SharePoint Workspace, Outlook Social Connector…Có thể làm việc ở bất kỳ nơi đâu: thông qua các ứng dụng như Office Web Apps, cho phép trình diễn PowerPoint thông qua web…</p>
<p>Những khách hàng có nhu cầu đặt hàng mua Office 2010 trước có thể tham khảo chương trình pre-order tại đây.</p>
<p>Ngoài ra, hiện nay Microsoft cũng đang có chương trình Microsoft Office 2010 Technical Guarantee cho phép người dùng mua Office 2007 theo hình thức OEM, FPP có thể nâng cấp hoàn toàn miễn phí lên Office 2010 (trong thời gian từ 5/3/2010 đến hết 30/09/2010). Trong thời gian này, khách hàng và người dùng cuối vẫn có thể tải bản Office 2010 beta tại http://www.microsoft.com/office/2010</p>
<p>Theo ICTnews</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/microsoft-chinh-thuc-ra-mat-bo-san-pham-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>18 điều cần biết về mạng 4G</title>
		<link>http://blogthietkeweb.com/2010/05/18-dieu-can-biet-ve-mang-4g/</link>
		<comments>http://blogthietkeweb.com/2010/05/18-dieu-can-biet-ve-mang-4g/#comments</comments>
		<pubDate>Mon, 03 May 2010 04:09:01 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Tin tức và Sự kiện]]></category>
		<category><![CDATA[Cong nghe]]></category>
		<category><![CDATA[Mang 4G]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=258</guid>
		<description><![CDATA[ 
Mạng 4G có nghĩa là gì? Nó có nhanh hơn 3G không? Giá cước của nó có rẻ hơn 3G không và bao giờ thì người dùng được “thử” công nghệ này?

1. 4G có nghĩa là gì?
Cũng giống như các thuật ngữ 2G hay 3G, 4G chỉ là một từ viết tắt của cụm [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/4g_blogthietkeweb.jpg" alt="" title="4g_blogthietkeweb" width="360" height="250" class="alignnone size-full wp-image-259" /> </p>
<p>Mạng 4G có nghĩa là gì? Nó có nhanh hơn 3G không? Giá cước của nó có rẻ hơn 3G không và bao giờ thì người dùng được “thử” công nghệ này?</p>
<p><span id="more-258"></span></p>
<p>1. 4G có nghĩa là gì?</p>
<p>Cũng giống như các thuật ngữ 2G hay 3G, 4G chỉ là một từ viết tắt của cụm từ &#8220;fourth generation&#8221;  (thế hệ thứ 4) để thuận tiện cho các chương trình marketing của các nhà mạng. Dịch vụ viễn thông hay kết nối không dây sử dụng công nghệ này thực ra rất khác biệt nhau và phụ thuộc vào các nhà cung cấp dịch vụ nhưng thông thường, một mạng không dây sử dụng công nghệ 4G sẽ có tốc độ nhanh hơn mạng 3G từ 4 đến 10 lần.</p>
<p>2. Mạng 4G sử dụng công nghệ nào?</p>
<p>Hiện thế giới đang tồn tại 2 chuẩn công nghệ lõi của mạng 4G là WiMax và Long Term Evolution (LTE). WiMax là chuẩn kết nối không dây được phát triển bởi IEEE (Institute of Electrical and Electronics Engineers) còn LTE là chuẩn do 3GPP, một bộ phận của liên minh các nhà mạng sử dụng công nghệ GSM. Cả WiMax và LTE đều sử dụng các công nghệ thu phát tiên tiến để nâng cao khả năng bắt sóng và hoạt động của thiết bị, mạng lưới. Tuy nhiên, mỗi công nghệ đều sử dụng một dải băng tần khác nhau.</p>
<p>3. Tốc độ của 4G so với 3G thế nào?</p>
<p>Các nhà cung cấp dịch vụ sử dụng công nghệ WiMax thường quảng cáo mạng của họ có tốc độ tải xuống (download) từ 2 Mbps đến 6 Mbps và đỉnh điểm nhất có thể lên tới 10 Mbps hoặc cao hơn chút nữa. Verizon, nhà mạng đang chuẩn bị triển khai mạng LTE tại Mỹ vào cuối năm nay cho biết, dịch vụ của họ sẽ có tốc độ khoảng từ 5 – 12 Mbps.</p>
<p>Hầu hết các mạng 3G hiện tại đều có tốc độ từ 400 kilobit/s  cho đến 1,5 Mbps.</p>
<p>4. Vì sao tôi cần 4G?</p>
<p>Mạng 4G với tốc độ cao hơn hẳn sẽ giúp cho tốc độ truyền tải của dữ liệu trên các hệ thống mạng được cải thiện đáng kể và đưa các dịch vụ cao cấp như sử dụng ứng dụng di động, trên video trực tiếp trên mạng, hội nghị truyền hình hay chơi game trực tuyến… sẽ bùng nổ thực sự.</p>
<p>Tuy nhiên, điểm “lợi hại” nhất của mạng 4G là nó có thể thay thế một cách hoàn hảo các đường truyền Internet cố định (kể cả đường truyền cáp quang) với tốc độ không thua kém, vùng phủ sóng rộng lớn hơn và có tính di động rất cao.</p>
<p>5. Hiện nay mạng 4G đã có chưa?</p>
<p>Câu trả lời là “Rồi” nhưng chỉ ở một số nơi nhất định.</p>
<p>Tại Mỹ, nhà mạng Sprint Nextel đã hợp tác với Clearwire để cung cấp dịch vụ 4G trên nền tảng WiMax tại 28 thành phố lớn. Trong năm 2010, liên minh này có kế hoạch phát  triển thêm dịch vụ của mình tới các thành phố như Los Angeles, New York, và San Francisco…</p>
<p>Với công nghệ LTE, Verizon là nhà mạng “nhiệt tình” nhất tại Mỹ và có kế hoạch chính thức cung cấp dịch vụ 4G thương mại tại 25 đến 30 thị trường lớn của Mỹ đến cuối năm 2010.</p>
<p>AT&#038;T cũng đã có kế hoạch triển khai mạng LTE vào năm 2011.</p>
<p>Trên thị trường quốc tế, dịch vụ trên nền WiMax đã được triển khai tại một số quốc gia như Nhật Bản, Hàn Quốc hay Nga và mới chỉ có một nhà mạng duy nhất triển khai LTE ở Thụy Điển.</p>
<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/4g_tkw_2.jpg" alt="" title="4g_tkw_2" width="360" height="250" class="aligncenter size-full wp-image-260" /></p>
<p>6. Cước phí của 4G so với 3G thế nào?</p>
<p>Hiện tại, 4G đang tỏ rõ ưu thế và sự hấp dẫn về mặt chi phí so với 3G. Liên minh Clearwire/Sprint hiện đang áp dụng các gói cước “không hạn chế dung lượng” với giá chỉ 10 đến 20 USD/tháng trong khi một gói cước 3G  tại Mỹ, người dùng phải trả khoảng 60 USD nhưng bị giới hạn dung lượng không quá 5 GB.</p>
<p>Verizon chưa công bố giá cước mà họ dự định áp dụng với mạng 4G theo chuẩn LTE.</p>
<p>7. Có thể dùng điện thoại 3G hay USB 3G để kết nối 4G không?</p>
<p>Câu trả lời là không vì 2 công nghệ này sử dụng các dải băng tần khác nhau.</p>
<p>8. 4G có hỗ trợ gọi điện thoại không?</p>
<p>Đến thời điểm hiện tại thì chưa và nếu người dùng 4G muốn “alo” với bạn bè chỉ có giải pháp duy nhất là sử dụng các dịch vụ gọi điện thoại qua Internet như Skype.</p>
<p>Một số mẫu điện thoại di động 4G mới xuất hiện gần đây thường hoạt động theo chế độ “kép” tức vẫn phải sử dụng chip kết nối 3G cho các cuộc gọi thoại và chip 4G cho các dịch vụ dữ liệu.</p>
<p>9. Đã có mẫu điện thoại di động 4G nào chưa?</p>
<p>Tính đến tháng 4/2010, thị trường Mỹ mới chỉ có duy nhất một mẫu “dế 4G” của nhà mạng Sprint phân phối mang tên HTC EVO 4G. Trước đó, HTC cũng đã giới thiệu một chiếc WiMax phone dành riêng cho các nhà mạng ở Nga.</p>
<p>Verizon tuyên bố họ sẽ có những mẫu di động LTE vào khoảng giữa năm 2011.</p>
<p>10. Tại sao không có phiên bản iPhone 4G?</p>
<p>Kể từ khi Apple bắt đầu bán iPhone tại thị trường Mỹ, AT&#038;T vẫn là nhà mạng cung cấp dịch vụ và phân phối độc quyền của sản phẩm này nên tất cả các mẫu iPhone đều được trang bị con chip kết nối với mạng 3G của AT&#038;T. Người ta hy vọng rằng trong tương lai, khi Apple quyết định mở rộng danh sách nhà mạng phân phối iPhone với Verizon và kế hoạch triển khai 4G rất sớm của nhà mạng này sẽ buộc Apple phải sản xuất những mẫu iPhone thế hệ mới hoạt động trên mạng CDMA vào cuối năm nay.</p>
<p>11. Liệu tôi có thể sử dụng 4G trên điện thoại trong khi đang di chuyển không?</p>
<p>Có. 4G mới thực sự là mạng băng rộng di động đúng nghĩa.</p>
<p>12. Có thể sử dụng 4G ở những nơi khác nhau với một chiếc di động có khả năng roaming không?</p>
<p>Tất nhiên là có với điều kiện nhà mạng của 2 nơi phải sử dụng chung chuẩn công nghệ. Nếu thuê bao của bạn thuộc về nhà mạng 4G dùng chuẩn LTE bạn sẽ không thể sử dụng dịch vụ của nhà mạng dùng chuẩn WiMax.</p>
<p>Tin vui là mới đây có một hãng sản xuất chip tuyên bố họ đang phát triển một mẫu chip có khả năng kết nối với cả 2 mạng WiMax và LTE. Dẫu vậy, người dùng sẽ còn phải đợi ít nhất vài năm nữa khi sản phẩm này được thương mại hóa phổ biến. </p>
<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/05/4g_tkw_3.jpg" alt="" title="4g_tkw_3" width="360" height="250" class="aligncenter size-full wp-image-261" /></p>
<p> 13. 4G có thể được cung cấp ở những vùng nông thôn không?</p>
<p>Với chi phí rẻ hơn và tốc độ cao hơn hẳn 3G, chắc chắn 4G sẽ là giải pháp hoàn hảo nhất cho các chương trình “phổ cập Internet băng rộng” tại hầu hết các quốc gia. Đây cũng chính là niềm hy vọng của những khu vực dân cư thưa, địa hình phức tạp và thu nhập thấp.</p>
<p>14. 4G có thể thay thế cho đường truyền ADSL hay cáp quang không?</p>
<p>Như đã nói ở trên, 4G hoàn toàn có thể khiến các mạng Internet cố định bị “tuyệt chủng” trừ phi khách hàng muốn có một đường truyền riêng (leased line).</p>
<p>15. Wi-Fi và 4G có thể “hợp tác” với nhau không?</p>
<p>Có. Clearwire và Sprint hiện đang có 2 sản phẩm bộ định tuyến (router) có khả năng thu phát cả Wi-Fi và WiMax. Các router này sẽ kết nối với mạng WiMax  và sau đó “chuyển đổi” sang dạng sóng Wi-Fi để các thiết bị khác cũng có thể sử dụng được.</p>
<p>Mẫu di động HTC EVO 4G cũng có thể đóng vai trò của một chiếc router mini cho phép chiu sẻ kết nối WiMax với 8 thiết bị khác thông qua sóng Wi-Fi.</p>
<p>16. Gần đây tôi có nghe nói về &#8220;HSPA+&#8221; hay &#8220;3,5G&#8221;. Chúng là gì?</p>
<p>Nhà mạng T-Mobile USA (Mỹ) đang trong quá trình triển khai một mạng truyền dữ liệu di động dựa trên một phiên bản tiên tiến hơn của giao thức 3G hiện nay. Trên lý thuyết, mạng này có thể có tốc độ lên tới 21 Mbps nhưng khi thử nghiệm trên thực tế gần đây nó cũng chỉ nhanh hơn mạng 3G chút ít.</p>
<p>17. Tại sao nhiều người nói mạng 4G hiện nay không phải là “4G thực”?</p>
<p>Các cơ quan tiêu chuẩn viễn thông thương đặt ra tiêu chí “chính thức” của dịch vụ 4G với một tốc độ rất “khủng” mà công nghệ của thế giới sẽ còn phải mất nhiều năm nữa mới có thể đạt được mức đó.</p>
<p>Nhưng các nhà kinh doanh và tiếp thị lại nghĩ rằng với tốc độ hiện nay, 4G đã có thể tạo ra một bước nhảy vọt và xứng đáng được gọi là mạng không dây “thế hệ kế tiếp”.</p>
<p>18. Liệu có thể có cái gọi là “4G thực” không?</p>
<p>Cả 2 chuẩn công nghệ WiMax và LTE hiện nay đều có thể đạt tới tốc độ “4G thực” tức tốc độ tải xuống tối thiểu là 100 Mbps nhưng có lẽ thế giới còn phải đợi thêm vài năm nữa.</p>
<p>Theo ICTnews</p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/05/18-dieu-can-biet-ve-mang-4g/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beginning JavaScript(Paul Wilton, Jeremy McPeak)</title>
		<link>http://blogthietkeweb.com/2010/04/beginning-javascript/</link>
		<comments>http://blogthietkeweb.com/2010/04/beginning-javascript/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:54:44 +0000</pubDate>
		<dc:creator>duc-th4nh</dc:creator>
				<category><![CDATA[Download tài liệu]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blogthietkeweb.com/?p=248</guid>
		<description><![CDATA[
Paul Wilton, Jeremy McPeak, «Beginning JavaScript, 3rd Edition»
Publisher: Wrox &#124; May 2007 &#124; ISBN: 0470051515 &#124; Pages: 767 &#124; PDF &#124; 6 Mb

Download from Easy-Share  
              
 Download from Depositfiles
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/04/ebook-javaScript-150x150.jpg" alt="" title="ebook-javaScript" width="150" height="150" class="alignleft size-thumbnail wp-image-249" /><br />
Paul Wilton, Jeremy McPeak, «Beginning JavaScript, 3rd Edition»<br />
Publisher: Wrox | May 2007 | ISBN: 0470051515 | Pages: 767 | PDF | 6 Mb</p>
<p><img src="http://blogthietkeweb.com/wp-content/uploads/2010/04/download.gif" alt="" title="download" width="126" height="31" class="alignnone size-full wp-image-252" /></p>
<li><a href="http://www.easy-share.com/1903249684/1903249684">Download from Easy-Share  </a>
              </li>
<p><a href="http://depositfiles.com/files/b5yfqadn8"> Download from Depositfiles</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogthietkeweb.com/2010/04/beginning-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
