December 29, 2011

I don't want to miss a thing - Anh không muốn bỏ lỡ bất cứ điều gì (Aerosmith)

"Anh không muốn bỏ lỡ mất bất cứ điều gì..." Có phải đây những lời tâm sự của một người con trai trong cái đêm trước khi phải xa người mình yêu. Anh ta chỉ còn một đêm duy nhất để được ở bên cạnh người mình yêu?

"Anh ngắm nhìn em ngủ say sưa, ngắm nhìn gương mặt yêu kiều, lắng nghe từng hơi thở, từng nhịp đập của trái tim em." Giây phút này... khoảng khắc này... Anh nằm thao thức suốt đêm, anh không muốn hay không dám chìm vào giấc ngủ?

December 22, 2011

Some tip to improve performance PHP

1 - Không dùng các biến chưa khai báo.
Nếu chúng ta thực hiện phép tăng hoặc giảm ( ++, +=, --, -= ) cho 1 biến chưa khai báo trước thì nó chậm gấp 9, 10 lần so với việc ta khai báo nó xong mới thực hiện toán tử.

2 - Hạn chế tối đa việc gọi hàm trong vòng lặp.
Hàm sẽ được thực thi xuyên suốt vòng lặp. Đặc biệt không dùng for($i = 0; $i < count($arr); $i++)

December 18, 2011

Optimize front-end to improve performance - Part 2

Trong phần 1 của loạt bài "Optimize front-end to improve performance" mình đã giới thiệu tới các bạn 2 kỹ thuật nhưng cả 2 kỹ thuật đó đều nhằm một mục đích là làm giảm số lượng request lên server. Số lượng request server càng ít mà vẫn đáp ứng đủ nhu cầu website thì sẽ cải thiện rất đáng kể về tốc độ thực thi website đó.
Trong phần 2 này, mình cũng giới thiệu thêm 1 kỹ thuật và mục đích cũng là làm giảm số lượng request lên server. Trong phần 1, việc kết nối các file css, hay file js là chúng ta làm một cách thủ công. Nhưng đôi khi sẽ xảy ra trường hợp tại trang A.php tôi cùng dùng a.js, b.js nhưng tại trang B.php tôi lại muốn dùng a.js, c.js. Nên việc chúng ta dùng thủ công kết nối các file này sẽ rất khó khăn hoặc là chịu sự chồng chéo. Điều này dễ bị dẫn tới tình trạng không cải thiện được mà còn thêm xấu đi. Dưới đây là kỹ thuật kết nối các file này một cách tự động.

December 4, 2011

PHP MVC Framework - Made in "Cá Nhân"

Như vậy là sau hơn một tháng trời cặm cụi ngồi nhai cái này thì cuối cùng hôm nay mình cũng cho ra được cái MVC Framework tự tay làm. Mừng quá nên post lên đây chia sẻ cho những ai quan tâm đến mô hình MVC framework và có cái nhìn tổng quan về mô hình này.
Sẽ có người hỏi, tại sao không dùng những framework có sẵn vì trên thị trường, cái này là rất nhiều mà hoàn toàn free cũng không ít. Hiện tại, tại công ty mình thì vẫn sử dụng Zend Framework (ZF), theo đánh giá cá nhân thì đây là bộ framework rất mạnh, chuẩn và đầy đủ nhất. Có ý kiến cho rằng ZF là bộ framework rùa bò nhất trong tất cả, mình không phản đối ý kiến này, nhưng nhìn lại ZF là một gã khổng lồ thì dĩ nhiên di chuyển có phần chậm chạp nhưng sức càn quét thì không ai so sánh được đâu ^^

December 1, 2011

Optimize front-end to improve performance - Part 1

Loạt bài viết tiếp theo của blog cá nhân, mình sẽ giới thiệu tới mọi người kỹ thuật optimize front-end nhằm nâng cao tốc độ cho việc load webpage. Nếu như website bạn có thể áp dụng được tất cả những kỹ thuật bên dưới, bạn sẽ thấy tốc độ được cải thiện một cách rõ rệt và đáng kể.

November 13, 2011

PHP - Design Pattern - Multiton & Factory

Tiếp nối chuỗi bài Design Pattern bằng ngôn ngữ PHP, hôm nay mình giới thiệu thêm 2 mẫu thiết kế cũng rất phổ biến và thông dụng, đó là mẫu Multiton và mẫu Factory.
Mẫu Multiton được mở rộng từ mẫu singleton. Nếu bạn nào để ý sẽ phát hiện ngay trong mẫu singleton phần contructor hoàn toàn không có tham số trong đó. Nhưng trong rất nhiều trường hợp, chúng ta cần khởi tạo một đối tượng với những thông số cấu hình nhất định, và cũng chính vì điều này mà multiton ra đời.

Multiton
<?php
class Multiton
{
    private static $_instances = array();
    private static $_key;
    private $_opt1;
    private $_opt2;
    protected function __construct($param1, $param2)
    {
        $this->_opt1 = $param1;
        $this->_opt2 = $param2;
    }
    public static function getInstance($param1, $param2)
    {
        self::$_key = $param1 . $param2;
        if(!self::$_instance[self::$_key] instanceof self)
            self::$_instance[self::$_key] = new self($param1, $param2);
        return self::$_instance[self::$_key];
    }
}

November 6, 2011

PHP - Design Patterns - Singleton & Registry

Hôm nay mình chia sẻ tới mọi người một khía cạnh khác trên blog cá nhân của mình - code PHP. Mình giới thiệu tới mọi người 2 mẫu design patterns rất phổ biến và đơn giản, đó là mẫu Singleton và mẫu Registry.
Singleton là mẫu thiết kế rất phổ biến trong OOP. Với singleton, sẽ hạn chế việc tạo nhiều thực thể trên cùng  một lớp đối tượng, mà thay vào đó nó sẽ cho phép chúng ta sử dụng chung một thực thể, hay nói một cách khác là dùng một shared instance. Việc này sẽ có lợi điểm cho bộ nhớ của hệ thống, không phải cứ phát sinh  đối tượng tùm lum ra.

Singleton:
<?php
class Singleton
{
    private static $_instance;
    protected function __contruct(){}
    public static function getInstance()
    {
        if (!isset (self::$_instance)) 
            self::$_instance = new self;
        return self::$_instance;
    {
}

October 16, 2011

Memcached - Data PHP Caching

Tiếp nối chủ đề cache trên PHP, hôm nay mình giới thiếu tiếp đến các bạn một kỹ thuật cache nữa cũng rất phổ biến. Đó là data caching. Ở những loạt bài trước mình đề cập tới việc Opcode caching dành cho PHP, tuy nhiên nếu chỉ dừng lại tại mức đó thì performance cho web vẫn chưa có gì cải thiện lắm, và vẫn bị bottlenecks khi truy xuất DB. Và giải pháp data caching ra đời nhằm mục đích giải quyết cái bottlenecks này. Bài viết sau nhằm chia sẻ tới mọi người tổng quan việc cải thiện performance nhờ data caching, và một công cụ hữu dụng của việc này là Memcached

October 14, 2011

XCache - Opcode Cache dành cho PHP

Hôm nay, mình giới thiệu thêm 1 công cụ hỗ trợ opcode cache PHP khác, đó là XCache. XCache cũng là 1 extension PHP hoàn toàn miễn phí, và cũng như APC đã giới thiệu ở bài trước, XCache có thể cài đặt trên Windows và Linux. Nhưng mình cũng chỉ tập trung vào Linux

October 12, 2011

Chuyện chiếc xe buýt

Mấy ngày nay dân tình xôn xao đề tài xe buýt, văn hóa buýt, và vấn đề cấm xe cá nhân lưu thông. Mình cũng đóng góp 1 bài viết cho nó thêm phần sinh động và cũng để relax cho cái blog chuyên mảng IT của mình.
Bài viết mang chủ nghĩa cá nhân và tầm nhìn kém cỏi của một con người bé tí, nên cần trao đổi mọi người có thể để lại lời nhắn bên dưới.
Xe buýt ra đời và đã hoạt động hơn 10 năm nay, nhưng nhìn lại, những gì mong ước từ buýt đã không thể đến với người dân, mà thậm chí, chất lượng ngày càng đi xuống rõ rệt. Trong suốt 10 năm hoạt động của buýt, mình chỉ tham gia duy nhất 1 năm đi học ĐH, vì khi đó trường mình trên Thủ Đức nên phải đi xe buýt cho nó nhẹ cái "hầu bao". Và cũng 10 năm hoạt động của buýt, hầu như "Chưa thấy ai khen, nhưng la ó thì nhiều"

October 5, 2011

APC - PHP Opcode Caching


Hôm nay, mình giới thiệu tới các bạn một kỹ thuật rất phổ biến khi làm việc với PHP nhưng cũng còn nhiều người chưa biết. Đã là dân lập trình, hẳn không ai trong chúng ta chưa từng nghe qua 2 cụm từ: "Biên dịch" và "Thông dịch". Và hầu như ai cũng biết là các chương trình dạng "biên dịch" sẽ chạy nhanh hơn so với các chương trình dạng "thông dịch", nhưng tại sao nó lại như vậy và có cách nào để cải thiện vấn đề này không. Bài viết sau, nhằm mục đích chia sẽ tới mọi người rõ hơn vì sao "thông dịch" chậm hơn "biên dịch" và 1 giải pháp giúp cải thiện đó là APC - Alternative PHP Caching

October 3, 2011

Cài đặt PhpMyAdmin trên CentOS

PhpMyAdmin là 1 chương trình giao tiếp, xử lý database thuộc dạng web base. Tức là PhpMyAdmin là một web application. Tuy vậy, nó không hề kém cạnh gì so với các chương trình thuộc dạng Desktop Application. Bài viết sau sẽ giúp mọi người cài đặt PhpMyAdmin vào hệ điều hành CentOS và sau đó bật các tính năng cao cấp của PhpMyAdmin

Cài đặt CentOS làm LAMP Server (kỳ cuối)

Đây là bài cuối trong loạt bài cài đặt LAMP trên hệ điều hành CentOS, và sau này các bạn có thể tự xây dựng những website trên một server hẳn hoi. Bây giờ chúng ta cùng tiếp tục công việc cài đặt.

September 30, 2011

Cài đặt CentOS làm LAMP Server (kỳ 2)


Trong kỳ 1, mình chỉ dừng lại ở việc cài đặt hệ điều hành CentOS. Và giờ chúng ta bắt tay vào cài cái LAMP theo đúng cái nghĩa của nó.

September 29, 2011

Cài đặt CentOS làm LAMP Server (kỳ 1)


Giới thiệu sơ qua thì CentOS là một hệ điều hành thuộc dòng Linux, và nó là hoàn toàn miễn phí. Miễn phí không có nghĩa là "của rẻ là của hôi", mà trái ngược lại, CentOS là một hệ điều hành thật sự rất mạnh, ổn định và an toàn. LAMP là từ viết tắt của Linux, Apache, Mysql, và Php.
Bài viết sau sẽ giúp mọi người tự cài đặt một máy LAMP Server để tiến hành thử nghiệm và làm web trên đây. Bài viết chỉ mang tính giới thiệu, nếu các bạn muốn phát triển thành 1 server có thể chạy được trên môi trường thật, thì bài viết vẫn chưa đủ giúp các bạn làm điều đó

September 23, 2011

Phật từ đâu?

Thuở xưa, có anh chàng đọc kinh nghe nói về Phật, thích lắm, quyết định đi tìm gặp Ngài bằng được. Anh chàng khăn gói quả mướp ra đi. Sau khi trải qua không biết cơ man nào là núi sông, thành phố, hầm hố gian nguy hiểm trở… Chàng vẫn chưa gặp được Phật giống như hình dạng trong Kinh đã diễn tả.

“Thân Phật sắc vàng, cao một trượng sáu, đầy đủ ba mươi hai tướng tốt, tám mươi vẻ đẹp, hào quang chói sáng. ”

Một hôm tại một sườn non, chàng trai tình cờ gặp một cụ già râu tóc bạc phơ, cốt cách siêu phàm, mừng quá, chàng khẩn khoản:

- Thưa cụ, cụ có biết Phật đang ngụ ở đâu không… Xin chỉ dùm cho con với.