<?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>Narga &#187; PHP</title>
	<atom:link href="http://www.narga.org/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.narga.org</link>
	<description>Ideas and inspiration in my opinion!</description>
	<lastBuildDate>Tue, 20 Jul 2010 16:42:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>10 dự án lập trình viên PHP nên trải qua</title>
		<link>http://www.narga.org/10-projects-every-php-developer-should-use/</link>
		<comments>http://www.narga.org/10-projects-every-php-developer-should-use/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 10:00:05 +0000</pubDate>
		<dc:creator>Narga</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.narga.net/342/10-projects-every-php-developer-should-use/2007/11/17</guid>
		<description><![CDATA[Đối với một lập trình viên PHP bạn luôn hiểu rằng PHP là một ngôn ngữ phổ biến và có một lượng khổng lồ mã nguồn để tham khảo, đa số các thành phần của một Website đã được phát triển dưới dạng nguồn mở việc sử dụng nó yêu cầu tuân thủ theo giấy [...]


Related posts:<ol><li><a href='http://www.narga.org/10-frequently-words-of-developers/' rel='bookmark' title='Permanent Link: 10 câu thường nói của lập trình viên!'>10 câu thường nói của lập trình viên!</a></li>
<li><a href='http://www.narga.org/sinh-vien-viet-trong-mat-nguoi-nga/' rel='bookmark' title='Permanent Link: Sinh viên Việt trong mắt người Nga !'>Sinh viên Việt trong mắt người Nga !</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Đối với một lập trình viên PHP bạn luôn hiểu rằng PHP là một ngôn ngữ phổ biến và có một lượng khổng lồ mã nguồn để tham khảo, đa số các thành phần của một Website đã được phát triển dưới dạng nguồn mở việc sử dụng nó yêu cầu tuân thủ theo giấy phép của tác giả đôi khi không bao gồm sự ràng buộc nào. Việc mở mã nguồn mang lại rất nhiều lợi ích so với việc bạn giữ mã nguồn của mình trừ trường hợp thương mại hóa sản phẩm, đơn cử như:</p>
<ul>
<li>Mã nguồn mở được đóng góp bởi nhiều người, kết quả của sản phẩm được làm bởi nhiều người sẽ tốt hơn rất nhiều so với việc bạn phát triển một mình.</li>
<li>Dễ dàng cập nhật tính năng mới dựa trên sự đóng góp mã nguồn của các nhà phát triển khác nhau.</li>
<li>Giảm thời gian phát triển, giảm giá thành sản phẩm&#8230;</li>
<li>và nhiều lợi ích khác nữa&#8230; <img src='http://www.narga.org/wordpress/wp-includes/images/smilies/1.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p><span id="more-342"></span><a href='http://www.narga.net/wordpress/uploads/2007/11/php_modules.png' title='PHP modules'><img class="center-element" src='http://www.narga.net/wordpress/uploads/2007/11/php_modules.png' alt='PHP modules' /></a><br />
Tớ đã làm việc với PHP trong khoảng 4 năm trở lại đây, bản thân là một <em>Freelance Developer</em> nên không tự cho rằng mình là Master PHP bởi tớ luôn sử dụng PHP như một thành phần phát triển theo ý thích chứ không tâm niệm mình phải làm chủ được ngôn ngữ đó  <img src='http://www.narga.org/wordpress/wp-includes/images/smilies/4.gif' alt=':d' class='wp-smiley' /><br />
Những dự án dưới đây là những thành phần phổ biến của một Website, tính thông dụng của nó như là một bắt buộc phải biết đối với Web Developer.</p>
<ul>
<li><strong>Gửi eMail</strong>: Đây là tính năng phổ biến nhất của mọi Website, hàm <a href="http://www.php.net/manual/en/function.mail.php" class="outlink">mail();</a> là đủ cho hầu hết các yêu cầu khác nhau của người dùng, ngoài ra PHP còn hỗ trợ một số hàm khác nếu bạn muốn đính kèm tập tin hay gửi mail của SMTP server để có thể dễ dàng tạo một chương trình gửi eMail.</li>
<li><strong>Hỗ trợ người dùng</strong>: cho phép cá nhân hóa nội dung Website, có thể đa sở hữu, phân cấp quyền quản lý thông tin của cá nhân cũng như các nội dung khác. Tính năng chính của thành phần này hỗ trợ việc đăng nhập, truy vấn sửa đổi cơ sở dữ liệu, phiên làm việc&#8230;</li>
<li><strong>Tạo RSS, tin rút gọn Feeds</strong>: Thời điểm hiện tại Website của bạn sẽ được đánh giá  là tụt hậu nếu không hỗ trợ Feed trong việc cung cấp thông tin, lấy tin bằng Feed cho phép người dùng đơn giản hóa việc theo dõi nội dung của một Website nào đó. Tớ sử dụng <a href="http://magpierss.sourceforge.net" class="outlink">Magpie RSS</a> trong phần lớn các dự án của mình.</li>
<li><strong>Xác định vị trí</strong>: xác định vị trí địa lý của người dùng đơn giản nhằm thống kê lượng người truy cập nội dung từ nước nào để có thể phục vụ tốt hơn, tính năng này không thật sự quan trọng nhưng đôi khi lại khá hiệu quả nếu bạn muốn biết người của nước nào hay vào Website mình nhất  <img src='http://www.narga.org/wordpress/wp-includes/images/smilies/4.gif' alt=':d' class='wp-smiley' /> </li>
<li><strong>Lấy thông tin từ xa</strong>: truy vấn thông tin từ nhiều nguồn khác nhau, thích hợp với một cổng thông tin tổng hợp, các nội dung này được lưu vào cơ sở dữ liệu.</li>
<li><strong>Lưu tạm dữ liệu</strong> {<em>Cache data</em>}: giảm truy vấn tới cơ sở dữ liệu, tránh quá tải hệ thống do phần lớn các dự án cá nhân không được tối ưu về mã nguồn cũng như hiệu xuất làm việc, lưu tạm dữ liệu là một giải pháp đơn giản đề tối ưu hệ thống Website có thể hoạt động ổn định.</li>
<li><strong>Hệ thống giao diện</strong>: Dễ dàng thay đổi giao diện Website, đơn giản hóa quá trình thiết kế, giảm công sức tạo lập Website mới. Một hệ thống giao diện tốt không có nghĩa là phải đầy đủ tính năng mà chỉ cần đáp ứng được đúng nhu cầu sử dụng, tốt nhất là bạn nên tự viết sẽ hoàn hảo hơn sử dụng của người khác, theo tớ thì Hệ thống giao diện gần như là nhân {core} của một hệ thống quản lý nội dung. Tiêu biểu như <a href="http://smarty.php.net/" class="outlink">Smarty</a> của PHP</li>
<li><strong>BBcode</strong>: Tính năng thường thấy của các diễn đàn, nó đơn giản hóa việc trình bày nội dung giúp người sử dụng thông thường có thể tạo một văn bản chuyên nghiệp mà không cần biết về mã HTML, khách hàng của bạn sẽ dễ dàng sử dụng nó như một ứng dụng văn phòng mà thôi. Hãy thử <a href="http://christian-seiler.de/projekte/php/bbcode/index_en.html" class="outlink">StringParser_BBcode</a> vì nó rất dễ tùy biến theo ý muốn của bạn.</li>
<li><strong>Hệ thống truy vấn cơ sở dữ liệu</strong>: Cơ sở dữ liệu là phương án tối ưu nhất để lưu trữ dữ liệu của bạn, dữ liệu của bạn có thể lưu trong một hệ CSDL lớn như Mysql hay đơn giản như là một Text file thì hệ thống truy vấn cơ sở dữ liệu sẽ hỗ trợ việc truy vấn dữ liệu, đơn giản và giản lược mã nguồn đi rất nhiều, giảm bớt công sức viết mã nguồn. Cũng như hệ thống giao diện nó là một trong những thành phần quan trọng nhất của tớ khi viết một dự án Web. Hãy thử <a href="http://www.woyano.com/jv/ezsql" class="outlink" >ezSQL</a> để giảm bớt khai báo truy vấn cho từng query của bạn.</li>
<li><strong>Môi trường nhập liệu văn bản</strong>: Về cơ bản nó là một dạng xử lý nội dung form được hỗ trợ bở Javascript và kết hợp BBCode nhằm phục vụ người dùng một cách tốt nhất có thể, mục đích của nó là cố gắng mô phỏng môi trường làm việc như các ứng dụng văn phòng. <a href="http://www.fckeditor.net/">FCKEditor</a> là một ví dụ đơn giản nhất  <img src='http://www.narga.org/wordpress/wp-includes/images/smilies/1.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>Mỗi người một quan điểm khác nhau nhưng ít nhiều ai cũng từng phải làm việc qua một trong những dự án trên, 10 thành phần đó không phải là toàn bộ mà chỉ là thông dụng thôi.  <img src='http://www.narga.org/wordpress/wp-includes/images/smilies/3.gif' alt=';-)' class='wp-smiley' /> </p>


<p>Related posts:<ol><li><a href='http://www.narga.org/10-frequently-words-of-developers/' rel='bookmark' title='Permanent Link: 10 câu thường nói của lập trình viên!'>10 câu thường nói của lập trình viên!</a></li>
<li><a href='http://www.narga.org/sinh-vien-viet-trong-mat-nguoi-nga/' rel='bookmark' title='Permanent Link: Sinh viên Việt trong mắt người Nga !'>Sinh viên Việt trong mắt người Nga !</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.narga.org/10-projects-every-php-developer-should-use/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Huyền thoại Ruby on Rails đã sụp đổ nhờ PHP</title>
		<link>http://www.narga.org/7-reasons-i-switched-back-to-php/</link>
		<comments>http://www.narga.org/7-reasons-i-switched-back-to-php/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 07:51:04 +0000</pubDate>
		<dc:creator>Narga</dc:creator>
				<category><![CDATA[Công nghệ]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Phát triển Web]]></category>

		<guid isPermaLink="false">http://www.narga.net/202/7-reasons-i-switched-back-to-php/2007/10/05</guid>
		<description><![CDATA[Đã lâu mới lại đọc được một bài hay của bác P. C. Định về PHP. Cách đây 3 năm Ruby on Rails bắt đầu tấn công vào cộng đồng Java nhờ những lời lẽ khoa trương về sức mạnh của nó. Dereck Sivers của CDBay đã bị xao động và quyết định viết lại [...]


Related posts:<ol><li><a href='http://www.narga.org/do-you-know-the-truth-of-eggs/' rel='bookmark' title='Permanent Link: Sự thật và huyền thoại về trứng'>Sự thật và huyền thoại về trứng</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Đã lâu mới lại đọc được một bài hay của bác <a href="http://groups.google.com/group/phpvietnam/msg/24ff9a081512ef3b" class="outlink">P. C. Định</a> về PHP.<br />
<a href="http://www.zooomr.com/photos/narga/3441695/" title="Zooomr Photo Sharing :: Photo Sharing" rel="neighbor"><img class="right-element" src="http://static.zooomr.com/images/3441695_1c4491298a_o.png" width="87" height="112" alt="Ruby and Rails"/></a><br />
<em>Cách đây 3 năm Ruby on Rails bắt đầu tấn công vào cộng đồng Java nhờ những lời lẽ khoa trương về sức mạnh của nó. <a href="http://www.oreillynet.com/pub/au/1841" class="outlink">Dereck Sivers</a> của <a href="http://www.cdbaby.com/" class="outlink">CDBay</a> đã bị xao động và <a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html" class="outlink">quyết định viết lại website</a> của ông ta dựa tên Rails sau khi tuyển mộ một trong các nhân vật chủ chốt của cộng đồng Rails, 2 năm sau đó Dereck đã thấm đòn . Ruby và Rails <a href="http://paul-m-jones.com/blog/?p=259" class="outlink">không phải là các viên đạn bạc</a> cho các ứng dụng web.</em></p>
<p><span id="more-202"></span></p>
<blockquote><p>Ông ta đã tiến hành viết lại site của mình bằng PHP trong 2 tháng và giảm số dòng code từ 90 000 dòng <a href="http://www.rubyonrails.org" class="outlink">Ruby/Rails</a> xuống còn 12 000 dòng PHP với những bài học rút ra được từ cách tổ chức ứng dụng theo tinh thần của Rails. Những gì ông ta có được đều rất đáng kể: tốc độ, khả năng bảo trì của ứng dụng, không còn ác mộng về Rails.</p>
<p>Trên thực tế Dereck trở về với PHP không phải là ko có lý do. Rails đã cho ông ta bài học khá tốt về lập trình hướng đối tượng theo phong cách mới khi mà năm 2005, cộng đồng PHP chưa đủ chín cho việc đó. Năm này, tôi có bài viết đầu tiên của mình về PHP5 với các tính năng hướng đối tượng trên PCWorld nhưng 2 năm sau đó cộng đồng PHP ở VN vẫn dẫm chân tại chỗ. Nhưng cũng phải mất 2 năm tôi mới thực sự hiểu lập trình hướng đối tượng trong PHP khi đánh vật với framework của riêng mình trong 16 tháng qua. Mọi vấn đề chỉ có thể được đào xới thông qua lao động thực sự. Nhưng những điều tốt đẹp đã hẳn không thể đến sau vài năm ngắn ngủi nếu như đã không có sự chuyển biến rất lớn trong cách tư duy của cộng đồng PHP: đó là mô hình hướng đối tượng ngày càng được hoàn thiện từ bản 5.0 sang 5.1. Hiện tại chúng ta đã có bản 5.2 ổn định hơn rất nhiều. Bản 5.3 sẽ xuất hiện sau 3-4 tháng nữa với Late static binding và name space hứa hẹn sẽ hoàn thiện hơn mô hình OOP của PHP. Cùng lúc đó người dùng không cần chờ đến PHP6 để có được sự hỗ trợ Unicode buit-in trong PHP mà extension intl đã được back port sang PHP5. Và lập trình viên PHP (như tôi) đã có 2 năm để đánh vật với lập trình hướng đối tượng trong PHP5 đủ để hiểu những chi phí ẩn và lợi ích đi kèm. Nhiều người đã phải cần đến một công nghệ khác làm nền tảng (với tôi là Java) khi mà common sense trong cộng đồng PHP còn khá khiêm tốn. Mọi người cũng đã thấy sự hoàn thiện dần của Zend Framework, SolarPHP, CakePHP, Symfony, sự ra đi của Mojavi, Phrame, Blueshoes &#8230; và vô số các framework khác như là sự kết thúc các thử nghiệm thất bại trong việc tìm ra một mô hình phát triển đúng đắn cho PHP framework. Mặc dù tất cả các web framework đương đại đều có các điểm yếu riêng của nó khiến một ai đó trong chúng ta không hài lòng (trong đó có tôi) thì chúng ta cần thừa nhận rằng sự phát triển đó đã rút ngắn khoảng cách công nghệ giữa Ruby và PHP trên một số phương diện thuần ngôn ngữ. Dereck vốn có quan hệ thân thiết với một số key figure trong cộng đồng PHP và hiển nhiên đã nhận thức được điều này. Thế là cuộc phiêu lưu với Rails chấm dứt.</p>
<p><em>Bài học của Dereck để lại vài nhận thức:</em></p>
<ul>
<li><strong>Thế giới PHP đã có quá nhiều thay đổi</strong>: các lập trình viên PHP nên ngừng code và nghe ngóng đi kẻo tư duy của bạn đã lạc hậu so với phần còn lại của thế giới.</li>
<li><strong>Đứng cố theo đuổi một công nghệ cho một dự án</strong> nếu như với loại dự án đó nó không work. Hãy cân nhắc nó trong tương lai. Hãy nhận thức điều đó sớm hơn nếu muốn tránh hiệu ứng hệ thống thứ 2 trong công nghệ phần mềm.</li>
<li><strong>Chọn công cụ đúng</strong>：Ngôn ngữ là một công cụ nhưng framework cũng là một công cụ theo nghĩa hẹp hơn hơn nhiều. Nó không phải là viên đạn bạc. Ví dụ dùng PHP để lập trình Desktop application vào thời điểm hiện tại là dở hơi. Ví dụ PHP có thể không hiệu quả như Perl trong các ứng dụng system scripting. Và nó chỉ đúng khi nó vừa tay với bạn. Tôi đố bạn trở thành chuyên gia của mọi loại ngôn ngữ nhất là khi đối với bạn, ngôn ngữ lập trình hay công nghệ chỉ là cái tivi, bật nó trong 8 tiếng xem qua ngày rồi tắt nó đi. Một chuyên gia công nghệ không thể chỉ là người thành thạo API (các bạn có các certification cho ngôn ngữ nọ kia dừng xúc động) mà bạn còn cần đến sự hiểu biết ở mức low-level mới mong xây dựng được các hệ thống high traffic kiểu như CDBaby. Đây chính là một trong các lý do khiến dự án Rails thất bại.</li>
<li><strong>Liên tục theo dõi sự phát triển của công nghệ</strong>： Dereck hiển nhiên đã thấy bứt rứt vì thành công của Digg, Facebook, Friendster, Technorati, Flickr, Wikipedia&#8230; các ứng dụng PHP khổng lồ về phương diện traffic và sự ngao ngán của những người sáng lập Twitter về sự yếu kém của Rails trong vấn đề tương tự.</li>
<li><strong>Ngôn ngữ là cái gì đó cố định</strong>: Tôi là người thừa nhận &#8220;language matters&#8221; chứ không như một số em chã khác. Cho dù quảng cáo gì về tính general purpose của 1 language thì rút cục thông qua lao động, người ta luôn thấy một ngôn ngữ đều làm tốt một số vai trò của nó tốt hơn một số ngôn ngữ khác. Đây chính là tiền đề cho DSL của Martin. Nhận thức được điều này đồng nghĩa với việc bạn chọn được công cụ đúng. Tính mềm dẻo của một ngôn ngữ thể hiện ở chỗ nó có hòa hợp được với các chuẩn công nghiệp thường gặp hay không: hỗ trợ XML/JSON/SWX, design pattern, OOP, AOP, SOAP, SOA. Cú pháp của PHP có thể xấu xí nhưng khi đi vào lập trình hướng đối tượng nó không khác gì Java về cả phương diện tổ chức lẫn cú pháp vì Java đẻ ra mô hình hướng đối tượng cho PHP. PHP là đủ mềm dẻo để lập trình viên lựa chọn mô hình lập trình cho mình. Những ai nhìn thấy tính cố định của một mô hình lập trình (ví dụ nhiều người code Java thấy PHP toàn được mix vào HTML và coi đó là cách phát triển PHP duy nhất) chỉ cho thấy là họ có hạn chế nhất định về mặt tư duy công nghệ trên các ngôn ngữ mục đích chung. Trường hợp của Dereck cho thấy ông ta đã thu nhận được kiến thức từ chuẩn công nghiệp của ngành và nhanh chóng áp dụng nó một cách thành công sau 2 tháng với PHP. Nhưng để học được kiến thức đó, ông ta cần đến 2 năm trả giá.</li>
<li><strong>Tooling</strong>: đây là một vấn đề mà Dereck đã mắc phải và phải trả giá cho nó. Không có một tool nào là viên đạn bạc. Rails là một loại cool tool dành cho một lớp các vấn đề. Nó có thể giúp giải quyết 95% vấn đề thường gặp chỉ bằng 5% nỗ lực nhưng khi miền vấn đề của ứng dụng đã vượt ra khỏi 5% đó, chúng ta sẽ phải lấp kín 95% còn lại bằng sự đau đớn. Trường hợp ASP.NET cũng như vậy. Không có gì khiến chúng ta thất vọng hơn là sự phụ thuộc vào một IDE, một thứ kiến trúc trâu chẳng ra trâu ngựa chẳng ra ngựa và một cộng đồng toàn những morons. Hiệu suất của tooling luôn đi kèm với tính độ sâu của abstraction, độ giảm của flexibility và nhiều khi nó làm cho ứng dụng dựa trên tool như là một black hole. Điều này dễ hiểu tại sao lập trình viên Rails là morons và lập trình viên ASP.NET là những morons cấp &#8220;cao&#8221; hơn.</li>
<li><strong>Khi bạn lập một dự án hoàn chỉnh để kiếm tiền, bạn chọn một hệ thống, một cộng đồng chứ không phải là một framework, một ngôn ngữ</strong>: Dereck sai lầm vì chọn Rails thay vì chọn một hệ thống trong khi cái phục vụ người dùng là hệ thống chứ không phải là Rails. Dereck bị quyến rũ bởi API trong khi ông ta không tính toán kĩ API đó sẽ đem lại user experience như thế nào và chi phí của nó là bao nhiêu. Khi Rails phù hợp với một hệ thống không work theo nhu cầu của ông ta thì dự án thất bại. Dereck sai lầm vì chọn một cộng đồng quá nhỏ, mọi thứ đều rất mới và khi cộng sự của ông ta ra đi, di sản để lại là không thể gánh được. Quay trở lại cộng đồng PHP, ông ta sẽ đối mặt với một thách mức mới: dân cư PHP đông đến mức nếu ông ta để lộ mã nguồn thì tôi tin rằng ngay ngày mai sẽ có CDBaby đánh số từ 1 đến 1000 xuất hiện. Kinh nghiệm triển khai các hệ thống lớn với PHP đã được đăng tải trên web công cộng dày đặc đến mức có lẽ cần lập riêng một nhà xuất bản để in lại. Dereck rời bỏ một cộng đồng đã quá chín muồi và đang nâng cấp level để đến một cộng đồng còn quá trẻ nhưng không đóng bảo hiểm tai nạn. Thế có buồn không?</li>
</ul>
<p>Dù sao xin chúc mừng đứa con xa quê trở lại.</p></blockquote>


<p>Related posts:<ol><li><a href='http://www.narga.org/do-you-know-the-truth-of-eggs/' rel='bookmark' title='Permanent Link: Sự thật và huyền thoại về trứng'>Sự thật và huyền thoại về trứng</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.narga.org/7-reasons-i-switched-back-to-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP:  on the day</title>
		<link>http://www.narga.org/php-on-the-day/</link>
		<comments>http://www.narga.org/php-on-the-day/#comments</comments>
		<pubDate>Wed, 26 Oct 2005 09:17:32 +0000</pubDate>
		<dc:creator>Narga</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.narga.net/?p=64</guid>
		<description><![CDATA[Getting the current full URL in PHP Sometimes, you might want to get the current full URL in PHP. Here is how you do that. Add the following code to a page: function selfURL() { $s = empty($_SERVER[&#34;HTTPS&#34;]) ? '' : ($_SERVER[&#34;HTTPS&#34;] == &#34;on&#34;) ? &#34;s&#34; : &#34;&#34;; $protocol = strleft(strtolower($_SERVER[&#34;SERVER_PROTOCOL&#34;]), &#34;/&#34;).$s; $port = ($_SERVER[&#34;SERVER_PORT&#34;] [...]


Related posts:<ol><li><a href='http://www.narga.org/making-adsense-work-with-xhtml/' rel='bookmark' title='Permanent Link: Making AdSense work with XHTML'>Making AdSense work with XHTML</a></li>
<li><a href='http://www.narga.org/how-to-delete-existing-wordpress-post-revisions-storedsaved-and-disable-and-turn-off-post-revisions-tracking/' rel='bookmark' title='Permanent Link: Tắt tính năng quản lý phiên bản của bài viết trên WordPress'>Tắt tính năng quản lý phiên bản của bài viết trên WordPress</a></li>
<li><a href='http://www.narga.org/thiet-ke-cac-phan-hoi-bai-viet-tuong-thich-voi-wordpress-2-7/' rel='bookmark' title='Permanent Link: Thiết kế các phản hồi bài viết tương thích với WordPress 2.7.x'>Thiết kế các phản hồi bài viết tương thích với WordPress 2.7.x</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(0, 119, 0);"><b>Getting the current full URL in PHP</b></span><br />
Sometimes, you might want to get the current full URL in PHP. Here is how you do that. Add the following code to a page:</p>
<pre class="brush: php;">
function selfURL() {
	$s = empty($_SERVER[&quot;HTTPS&quot;]) ? '' : ($_SERVER[&quot;HTTPS&quot;] == &quot;on&quot;) ? &quot;s&quot; : &quot;&quot;;
	$protocol = strleft(strtolower($_SERVER[&quot;SERVER_PROTOCOL&quot;]), &quot;/&quot;).$s;
	$port = ($_SERVER[&quot;SERVER_PORT&quot;] == &quot;80″) ? &quot;&quot; : (&quot;:&quot;.$_SERVER[&quot;SERVER_PORT&quot;]);
	return $protocol.&quot;://&quot;.$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
	}
function strleft($s1, $s2) {
	return substr($s1, 0, strpos($s1, $s2));
	}
</pre>
<p>You can now get the full URL using the line:</p>
<pre class="brush: php;">print(selfURL());</pre>
<p><span id="more-64"></span> <span style="color: rgb(0, 119, 0);"><b>Removing empty elements in a PHP array</b></span><br />
This works like the @Trim formula in Notes/Domino</p>
<pre class="brush: php;">
/**
* Trims an array from empty elements. *
* @param $a the array to trim.
* @return a new array with the empty elements removed. */
function array_trim($a) {
	$j = 0;
	for ($i = 0;
	$i &amp;lt;
	count($a);
	$i++) { if
	($a[$i] != &quot;&quot;) { $b[$j++] = $a[$i];
	} } return $b;
}
</pre>
<p>Use it like this:</p>
<pre class="brush: php;">
$a[0]=&quot;&quot;;
$a[1]=&quot;An entry&quot;;
$a[2]=&quot;Another one&quot;;
$a[3]=&quot;&quot;;
$b=array_trim($a);
</pre>
<p>The resulting <span style="color: rgb(0, 0, 189);">$b</span> array will have two entries, with the two empty ones removed.</p>
<p><span style="color: rgb(0, 119, 0);"><strong>How to figure out your server&#8217;s real name</strong></span><br />
It is sometimes necessary to figure out the real server name. There are several ways to do this, but in PHP, a simple way is this:</p>
<pre class="brush: php;">
$IP = gethostbyname ($SERVER_NAME);
$server = gethostbyaddr($IP);
echo &quot;&lt;br /&gt;Server IP: $IP&quot;;
echo &quot;&lt;br /&gt;Server Name: $server&quot;;
</pre>
<p>If you do not want to see the IP address of your website, you can use this single line of code:</p>
<pre class="brush: php;">
echo &quot;Server Name: &quot; . gethostbyaddr (gethostbyname ($SERVER_NAME));
</pre>


<p>Related posts:<ol><li><a href='http://www.narga.org/making-adsense-work-with-xhtml/' rel='bookmark' title='Permanent Link: Making AdSense work with XHTML'>Making AdSense work with XHTML</a></li>
<li><a href='http://www.narga.org/how-to-delete-existing-wordpress-post-revisions-storedsaved-and-disable-and-turn-off-post-revisions-tracking/' rel='bookmark' title='Permanent Link: Tắt tính năng quản lý phiên bản của bài viết trên WordPress'>Tắt tính năng quản lý phiên bản của bài viết trên WordPress</a></li>
<li><a href='http://www.narga.org/thiet-ke-cac-phan-hoi-bai-viet-tuong-thich-voi-wordpress-2-7/' rel='bookmark' title='Permanent Link: Thiết kế các phản hồi bài viết tương thích với WordPress 2.7.x'>Thiết kế các phản hồi bài viết tương thích với WordPress 2.7.x</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.narga.org/php-on-the-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP4 hay PHP5 ?</title>
		<link>http://www.narga.org/php4-hay-php5/</link>
		<comments>http://www.narga.org/php4-hay-php5/#comments</comments>
		<pubDate>Thu, 26 May 2005 05:12:00 +0000</pubDate>
		<dc:creator>Narga</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quan điểm]]></category>

		<guid isPermaLink="false">http://www.narga.net/?p=9</guid>
		<description><![CDATA[Đọc bài viết này của pcdinh trên Goldenkey Forum có nội dung khá sâu sắc: Việc chuyển từ PHP4 sang PHP5 không hề đơn giản. Những sai lầm trong PHP4 đã khiến cho con đường đi đến thành trì của PHP5 chứa đầy sỏi đá và chẳng bằng phẳng. Thứ nhất, có quá nhiều ứng [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Đọc bài viết này của pcdinh trên Goldenkey Forum có nội dung khá sâu sắc:</p>
<blockquote><p>Việc chuyển từ PHP4 sang PHP5 không hề đơn giản. Những sai lầm trong PHP4 đã khiến cho con đường đi đến thành trì của PHP5 chứa đầy sỏi đá và chẳng bằng phẳng.</p></blockquote>
<p><span id="more-9"></span>Thứ nhất, có quá nhiều ứng dụng PHP viết theo kiểu cấu trúc khiến cho tính OO trong PHP5 không hề hấp dẫn. Viết lại chúng ư? Một công việc khổng lồ. Ai sẽ trả tiền?<br />
Thứ hai, có nhiều ứng dụng xen lẫn cả thủ tục và đối tượng, nhưng là một thứ đối tượng dở người của PHP4. Việc chuyển sang chạy trên PHP5 sẽ tạo ra các điểm break mà phát hiện ra chúng không hề dễ dàng.<br />
Thứ ba, dân lập trình PHP đa phần là dân tài tử. PHP đã tạo nên một hàng rào rất thấp khiến cho ai cũng có thể trở thành một lập trình viên. Không có coding convention thống nhất, API thì phi chuẩn, code mã thì thủ tục, không có tiền lệ sử dụng các design pattern, không có sự khuyến khích dùng lại mã, không khuyến khích các best practice trong lập trình, không khuyến khích test driven&#8230; Trở nên chuyên nghiệp hơn với OOP ư? Ai sẽ trả tiền?<br />
Thứ tư, đa số các ứng dụng PHP là viết vì lý do cá nhân hoặc là mã nguồn mở viết vì vui thích hay một nhu cầu trước mắt. Điều này khác với Java, một công nghệ hướng vào thị trường doanh nghiệp, nơi mà người ta khuyến khích dùng lại mã vì&#8230; ông chủ không vui khi trả tiền 2 lần để có cùng một đoạn mã và này, các lập trình viên trẻ, hãy viết ra sao để khi các cậu đếch làm cho tôi nữa thì sẽ có người khác gánh vác công việc của cậu vì khách hàng đó còn làm việc với chúng ta dài đấy.<br />
Thứ năm, hướng đối tượng ư? Doanh nghiệp ư? Tại sao không phải là Java mà lại là PHP5? Tôi tưởng PHP chỉ dùng để code forum, mấy trang tin nhỏ nho hay đại loại cái gì đó be bé thôi chứ? Cộng đồng PHP ư? Ôi cộng đồng là một lũ nhăng nhố, nay ở mai đi, ai dám khẳng định họ sẽ cam kết cho sự phát triển kinh doanh của tôi? Mã nguồn mở? Chúa ơi, tôi là một bậc thầy về kinh doanh mà Thượng Đế của tôi lại là lợi nhuận. Xin lỗi nhé ông ta không biết đọc mã nguồn. Hãy chỉ cho tôi ai là người có khả năng đọc nó. Chúng tôi cần tiết kiệm tiền nhưng chúng tôi cũng cần nhanh chóng và rủi ro thấp nữa. Mã nguồn mở không có nghĩa là phi rủi ro.<br />
Thứ năm, chúa ơi, Andi và Gutman có biết đến câu Tồi hơn là tốt hơn không vậy? Xin đứng bắt tôi học thêm. Tại sao tôi phải học nấu cơm trong khi tôi đã có sẵn mì ăn liền. Lập trình PHP4 dễ như đi câu cá. Xin đừng làm cho tính lãng mạng của tôi bị ảnh hưởng với sự trừu tượng của OOP. Đẳng cấp doanh nghiệp ư? Xin đừng làm tôi mê muội bằng những ngôn ngữ mang tính dịch thuật và marketing của nhóm PHPVietnam. Tôi ngán chúng nó đến tận cổ rồi. Dù có thêm PHP5 hay PHP6 thì tôi vẫn chỉ code PHP cho cá nhân tôi và cái phần mềm của tôi vẫn be bé như thế. 10.000 hay 20.000 request 1 giây ư? Lạy chúa, băng thông của con chỉ có 3GB 1 tháng. Xin chúa rủ lòng thương.<br />
Tóm lại, việc chuyển từ PHP4 sang PHP5 đang bị chi phối rất nhiều vào tầm cỡ cộng đồng (dân PHP không có nhiều người thông minh đâu), tính tương thích của các ứng dụng đang dùng, số ứng dụng mới có khả năng thay thế chạy được trên PHP5, tâm lý chống đối và ngại chuyển đổi, sự đón nhận PHP từ phía doanh nghiệp. Đây là những điều mà tôi đã rút ra sau khi đã lập ra PHPVietnam.<br />
Thời gian sẽ trả lời và việc quyết định là tùy ở bạn<br />
Thân ái<br />
và thêm nữa của lineage</p>
<blockquote><p>em có đọc một bài của một tiền bối với 30 năm kinh nghiệm làm về software engineering ở Carnegie Mellon University (một trong những trường dạy về Khoa học máy tính danh tiếng nhất nhì thế giới) , ông ấy nói rằng giới trẻ đừng bao giờ nên học .NET trước tiên mặc dù .NET rất là mạnh. Hãy học về Java, Perl hay Python trước để nắm được cái nền tảng về lập trình hướng đối tượng rồi sau đó học .NET sẽ nhanh hơn, hiểu rõ hơn. Ông ấy nói với cách học này ông tin chắc rằng người học sẽ tiến xa hơn rất nhiều, giỏi hơn nhiều so với những anh lười nhác chỉ biết dựa vào những công cụ có sẵn trong .NET.<br />
Ông ấy nói Java và .NET không có khác gì nhau xét về nguyên lý vì .NET là một bản sao của Java về mặt ý tưởng + phong cách và những toan tính của Microsoft mà thôi. Microsoft bao giờ cũng là công ty có khả năng tạo ra các công cụ dễ làm việc nhất. Nhưng trong khi tạo điều kiện về mọi thứ thì user lại hòan toàn bị lệ thuộc. Họ chỉ biết kéo và thả hoặc chỉ biết ấn nút chứ đâu có biết cái gì nằm bên dưới. Rồi dần dần, cái ấn nút và kéo thả làm cho họ lười đi, họ quen với cái đó, họ không thể dứt ra được. Họ bị chi phối hòan toàn bởi M$.<br />
Chuyển sang một ngôn ngữ mới ư ? Nhiều người chuyên về .NET (không phải tất cả) sẽ hỏi: nó có kéo thả không, nó có tiện ích như Visual Studio không&#8230;. Nghĩa là tài năng của họ đang thui chột, tính cơ động và khả năng ứng biến của họ đang giảm sút rõ rệt. Những người như thế khi công nghệ thay đổi họ dễ bị đứt quá vì khả năng học của họ giảm đi quá nhiều. Giống như con gà tre (sống bờ bụi) với con gà công nghiệp ấy mà. Dân .NET nhiều người tự biến họ thành con gà công nghiệp.<br />
Các bác không tin ư? Cứ hỏi mấy bác chuyển từ VB 6 sang Java mà xem: luôn miệng hỏi: công cụ nào hỗ trợ kéo và thả để tạo giao diện. Ở Java không có tiền lệ đó mặc dù NetBeans có hỗ trợ kéo và thả. Chính vì thế, giới lập trình luôn coi trọng trình độ của dân Java hơn dân .NET. Do phải suy nghĩ nhiều hơn, làm việc nhiều hơn nên giới công nghệ ở Mĩ gọi dân Java là dân smart (thông minh).<br />
Điều không may là ở giới PHP có nhiều người thiếu chuyên nghiệp, họ viết mã nhưng lại không hiểu gì về software engineering vì họ chẳng quan tâm đến điều đó. Trên các diễn đàn quốc tế, em gặp khối đứa có 12-13 tuổi code PHP ầm ầm. Hi vọng PHP5 sẽ trấn chỉnh lại hàng rào gia nhập đội ngũ PHP coder, yêu cầu họ nghĩ nhiều hơn trước khi viết, buộc họ đánh giá lại PHP và không coi PHP là ngôn ngữ mì ăn liền nữa.</p></blockquote>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.narga.org/php4-hay-php5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
