Thứ Năm, 26 tháng 4, 2012

Burg manager: tùy chỉnh giao diện màn hình boot Grub

Bài này được dẫn nguồn từ Quantrimang.com và được chỉnh sủa một số chỗ vì mình làm như trong hướng dẫn nhưng không thành công.
xem thêm bản tiếng Anh tại đây

Kể từ khi Ubuntu chính thức nâng cấp bản bootloader để sử dụng Grub 2 thì việc thay đổi màn hình Grub không còn đơn giản và dễ dàng như trước nữa. 
 Đối với những người sử dụng có kinh nghiệm thì có thể quá trình này không mấy phức tạp, còn lại là những người mới dùng hoặc có ít kinh nghiệm thì đây là 1 việc không thể. Và để hỗ trợ quá trình này, chúng tôi sẽ hướng dẫn các bạn cách thay đổi màn hình Grub với công cụ BURG Manager.
BURG là từ viết tắt của Brand-new Universal bootloadeR from Grub, thực chất đây là 1 hệ thống bootloader dựa trên Grub, hỗ trợ tố các nền theme và nhiều hệ điều hành khác nhau (Linux, Windows, Mac OS X). Mặt khác, đây cũng là 1 công cụ hỗ trợ khá đa dạng với giao diện đồ họa, dễ dàng giúp người sử dụng cài đặt và quản lý BURG bootloader, thay đổi theme, thay đổi các thiết lập của Burg hoặc boot trực tiếp từ file *.iso.
Cài đặt:

Thứ Tư, 25 tháng 4, 2012

[Ubuntu] Hướng dẫn thay đổi theme cho Ubuntu

Bài viết này sẽ hướng dẫn các bạn thay đổi theme mặc định trong Ubuntu bằng các theme bạn có thể tải trên mạng sử dụng công cụ emerald
Bài viết được dẫn từ http://zxc232.wordpress.com/2010/04/12/emerald-theme/



Emerald theme là một loại theme chạy trên nền Compiz. Cách cài và sử dụng hơi phức tạp hơn các theme bình thường khác.
Cách làm dưới đây ví dụ cho Ubuntu nhưng cũng có thể dùng cho các bản Linux khác.
  1. Cài thêm phần mềm: chạy System → Administration → Synaptic Package Manager rồi tìm cài các gói compizconfig-settings-manager, emerald.
  2. Search “emerald theme” rồi tải về các emerald theme định cài, ví dụ tại đâytại đây. Các file theme này có đuôi file là .emerald.
  3. Nhấn vào System → Preferences → Emerald Theme Manager. Trong màn hình xuất hiện, mở tab Theme Settings → Theme rồi nhấn nút Import, tìm file theme vừa tải về để import.
  4. Nhấn vào System → Preferences → CompizConfig Settings Manager. Trong màn hình xuất hiện, đánh dấu chọn mục Effects → Windows Decorations.
  5. Nhấn tiếp vào chữ Windows Decorations, trong màn hình mới xuất hiện, ở mục Command, xóa lệnh cũ (/usr/bin/compiz-decorator) thay bằng lệnh emerald – - replace. (hai dấu gạch ngắn trước chữ replace). Đóng các màn hình lại.
  6. Nhấn Alt + F2 rồi chạy lệnh emerald – - replace . Các màn hình sẽ thay đổi theo theme mới. Muốn chỉnh sửa, chạy lại Emerald Theme Manager để sửa các chi tiết.
  7. Muốn tắt Emerald theme đi, nhấn Alt + F2 rồi chạy lệnh compiz – - replace. Mở CompizConfig Settings Manager ra rồi trong mục Command thay lại lệnh cũ đã xóa ở bước 5.
  8. Chi tiết về Compiz xem tại đây.


    Đây là một số theme, sau khi tải về, giải nén, vào System --> Preference --> Emerald theme manager và import các theme này vào

Code:
http://www.mediafire.com/?dhd6dzj6ij8dim3

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



Thứ Ba, 24 tháng 4, 2012

[Qt] Giới thiệu Qt Framework

Bài viết này sẽ giới thiệu sơ qua về Qt Framework để bạn có một cái nhìn tổng quan về những gì Qt Framework có thể cung cấp cho bạn. Có lẽ thật là thiếu sót khi đến bây giờ mới giới thiệt về Qt nhưng chắc vẫn còn kịp :D

1. Qt Framework là gì?
      Qt là một Framework cho phép xây dựng các ứng dụng có giao diện chạy trên nhiều nền tảng: bao gồm  hệ điều hành Symbian, Meego, Windows, Linux, Mac.
      Qt framework bao gồm một thư viện hỗ trợ chạy đa nền, tích hợp với các công cụ phát triển và các IDE. Với Qt framework bạn có thể lập trình một ứng dụng trên Windows và biên dịch để chúng chạy trên Linux hoặc Mac mà không phải thay đổi mã nguồn của chương trình.
       Qt cũng hỗ trợ đa ngôn ngữ lập trình, ngoài phiên bản chính thức hỗ trợ cho C++, Qt còn có các phiên bản binding cho các ngôn ngữ khác như Pascal, C#, Python, Ruby ......

2. Lịch sử phát triển của Qt framework.
     Qt framework được khởi xướng bởi Haavard Nord (Trolltech's CEO) và Eirik Chambe-Eng (Trolltech's president) từ năm 1991 (ban đầu họ chỉ là những lập trình viên bình thường). Đến năm 1995 phiên bản đầu tiên của Qt được công bố ra cộng đồng, đó là phiên bản Qt 0.9.0.
     Năm 1999 Qt giành được giải thưởng Linux World cho thư viện/công cụ tốt nhất. Và cũng trong khoảng thời gian này, công ty Trolltech được thành lập.
     Năm 2008 Nokia mua lại Trolltech, từ đây Qt được sở hữu và phát triển bởi Nokia. Mã nguồn của Qt cũng được công bố cho cộng đồng mã nguồn mở.
     Hiện nay Qt có 2 phiên bản: Môt phiên bản mã nguồn mở và một phiên bản thương mại. Với phiên bản thương mại thì người lập trình không phải công bố mã nguồn với cộng đồng.

3. Các thành phần của Qt
  • QtOpenGl
  • QtSvg
  • QtWebkit
  • QtXmlPatt
  • Qt3Support
  • QtGui
  • QtNetwork
  • QtSql
  • QtXml
  • QtScript
  • Phonon
4. Các ưu điểm của Qt 
- Code 1 lần và chạy khắp mọi nơi: code trên Windows, chạy trên Linux, Mac, thiết bị di động, thiết bị nhúng...
- Các thư viện class trực quan, đơn giản và dễ sử dụng.
- Tạo ra code dễ đọc, dễ mở rộng và dễ tái sử dụng.
- Ứng dụng tạo ra có hiệu suất xử lý cao và chạy khá nhanh.
- OpenWebkit cho phép xây dựng và chạy các ứng dụng dựa trên nền web, ví dụ như game viết bằng Html5, Css, JavaScript. 

5. Kết luận
       Nếu bạn đang lựa chọn một ngôn ngữ để phát triển các ứng dụng chạy đa nền tảng, thay vì phải phải chọn một ngôn ngữ mới như Java bạn hãy chọn Qt Framework.
      Tại sao? Bởi vì với Qt bạn sẽ phát triển các ứng dụng trên ngôn ngữ C++ mà không phải học thêm ngôn ngữ mới. Hơn nữa Qt sử dụng C/C++ sẽ đem lại performance cao hơn so với Java vì nó chạy trực tiếp mà không phải dùng máy ảo.
     Hãy trải nghiệm!

Download Tài liệu học lập trình giao diện trên Qt


---wolfSpirit---

Thứ Hai, 23 tháng 4, 2012

[Blogger] Hiển thị source code trong Blogger

Bài viết này sẽ hướng dẫn các bạn hiển thị source code hightlight trong blogger

Bước 1: Copy source CSS
 Vào trang địa chỉ  http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css và copy tất cả code CSS trong trang đó.

Bước 2: Dán code CSS vào template
Mở chế độ chỉnh sửa HTML (Từ trang chủ click  Thiết kế ở góc trên bên phải click vào button Chỉnh sửa HTML )
Dán code Css vừa copy vào ngay trước dòng ]]--></b:skin>

Bước 3: trỏ đường link tới file javascript

Copy toàn bộ nội dung sau 
 <!-- Add-in CSS for syntax highlighting -->  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js' type='text/javascript'></script>  
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js' type='text/javascript'></script>  




và Paste vào trước thẻ </head>

Bước 4: Copy và past đoạn code sau vào trước thẻ </body>
    <!-- Add-in Script for syntax highlighting -->  
    <script language='javascript'>  
    dp.SyntaxHighlighter.BloggerMode();  
    dp.SyntaxHighlighter.HighlightAll('code');  
    </script>  


Bước 5. Click "Xem trước" để kiểm tra xem liệu trang blog của bạn có bị hỏng bố cục hay không.

Bước 6: Sử dụng
Khi soạn thảo code , bạn vào chế độ soạn thảo HTML 
    
  
    ...Your html-escaped code goes here...  
    

Để hiển thị đúng thì các bạn phải dùng một chương trình để encode sourcode
ví dụ http://www.opinionatedgeek.com/dotnet/tools/htmlencode/encode.aspx
để encode của bạn về HTML rồi mới past vào (khi đang ở trong chế độ HTML)

Tips: Để đơn giản, các bạn paste code vào trang soạn thảo ở chế độ bình thường và chuyển qua chế độ HTML rồi thêm 2 tag mở và đóng ở đầu và cuối đoạn code là được


Để hiển thị các source code của các ngôn ngữ khác nhau các bạn có thể thay thế "cpp" bằng  c, c++, c#, c-sharp, csharp, css, delphi, pascal, java, js, jscript, javascript, php, py, python, rb, ruby, rails, ror, sql, vb, vb.net, xml, html, xhtml, xslt

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

"Nguồn: http://heisencoder.net/2009/01/adding-syntax-highlighting-to-blogger.html" 
 
 


Chủ Nhật, 22 tháng 4, 2012

[Qt] Biên dịch một ứng dụng Qt đơn giản từ dòng lệnh (Command line) trong Window

Bài viết này sẽ hướng dẫn các bạn build một ứng dụng Qt đơn giản từ dòng lệnh của Window 

tham khảo thêm phần thiết lập biến môi trường bài
http://skywolfbiz.blogspot.com/2012/04/qt-cai-at-qt-sdk-va-qt-creator-tren.html


Bước 1: các bạn tạo thư mục hello và một  file hello.c với nội dung

 #include <QApplication>
 #include <QLabel>
 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QLabel *label = new QLabel("Hello Qt!");
     label->show();
     return app.exec();
 }
Sau khi lưu file lại, các bạn mở công cụ dòng lệnh, chuyển đến thư mục hello

Bước 2: tạo file Project
gõ lệnh:
qmake -project
 file hello.pro sẽ được tạo ra.

Bước 3:  tạo file make
gõ lệnh:
qmake hello.pro

Bước 4: Biên dịch:
Nếu muốn tạo ra file debug các bạn gõ lệnh:
make 
hoặc
make -f Makefile.debug

Nếu muốn tạo ra phiên bản release thì gõ lệnh:
make -f Makefile.release

Bước 5: chạy kết quả
Các bạn vào thư mục release hoặc thư mục debug vừa mới tạo ra và chạy file hello.exe.
Kết quả như sau:

[Qt] Cài đặt Qt SDK và Qt Creator trên Windows dùng MinGW

Trong bài viết này mình sẽ hướng dẫn các bạn cài đặt Qt trên Windows.
Với các bạn không sử dụng biên dịch từ dòng lệnh thì chỉ cần xem từ bước 1 đến bước 4 và phần chú ý.


Bước 1:  Download bộ cài Qt
Các bạn vào trang chủ của Qt download Qt Library và Qt Creator phiên bản mới nhất
Hoặc phiên bản 4.8.1 theo link sau:
- Qt libraries 4.8.1 for Windows (minGW 4.4, 319 MB)
- Qt Creator 2.4.1 for Windows (53 MB)

Bước 2:  Cài đặt Mingw
Các bạn tải bộ cài đặt MinGW  theo link sau
 - http://sourceforge.net/projects/mingw/files/latest/download?source=files
 hoặc tải file zip tại đây:
- http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip
Đối với file zip thì sau khi tải về các bạn chỉ cần giải nén là dùng được.

Bước 3: Cài đặt Qt Library
Các bạn cài Qt Library trước bằng cách chạy file  qt-win-opensource-4.8.1-mingw.exe
Quá trình giải nén khá tốn thời gian. Sau khi giải nén xong, các bạn nhấn next liên tiếp cho đến khi gặp màn hình chọn Mingw.
Các bạn nhấn nút browse và trỏ đến thư mục bạn cài đặt MinGW hoặc nơi bạn giải nén file zip. Và click Next đến khi hoàn thành.

Bước 4 : Cài đặt Qt Creator. Các bạn chỉ cần chạy và Click Next cho đến khi hoàn thành.

Bước 5: Thiết lập biến môi trường
Click chuột phải vào My computer chọn Properties
sau đó chọn tiếp như trong hình
Trong cửa sổ mới hiện ra chọn tab Advance --> Environment Variables...
Tiếp theo chọn dòng có tên là path và double click vào đó.

Trong ô nhập Variable value các bạn thêm đường dẫn đến thư mục bin của thư mục cài Qt Library và Mingw
Ví dụ như các bạn cài Mingw và Qt Library trong ổ C thì thêm vào ;C:\Qt\4.8.1\bin;C:\MinGW\bin
các bạn nhớ là đường dẫn tới Qt Library trước nha vì nó sẽ tiện nhiều cái, và các bạn chú ý dấu chấm phẩy ngăn cách các đường dẫn   nếu không có dấu chấm phẩy thì sẽ không chạy được.


Bước 6: Kiểm tra đã cài đặt thành công chưa.

 Các bạn mở command promt và gõ 2 lệnh
qmake -v
make -v
nếu 2 lệnh chạy không bị lỗi là cài thành công.
Kết quả của mình như sau:

C:\Users\BlueZky>qmake -v
QMake version 2.01a
Using Qt version 4.8.1 in C:/Qt/4.8.1/lib

C:\Users\BlueZky>make -v
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  

Bước 7: Tạo một ứng dụng đơn giản với Qt Creator.
Các bạn vào File--> New file or project , chọn Qt Application


Nhập tên và chọn vị trí lưu project

Chọn Version của bộ thư viện:

Click Next đến khi hoàn tất. Nhấn Ctrl + R để build và chạy


Lưu ý:
Khi tạo project bạn có thể bị lỗi không xác định SDK. Để sửa lỗi này bạn làm như sau:
Vào Tool --> Option --> Build & Run
Click Add  và trỏ đường dẫn đến file qmake.exe trong thư mục bin của bộ Qt. ví dụ như của tôi là
C:\Qt\4.8.1\bin\qmake.exe và click OK.

Bây giờ bạn có thể tạo project bình thường như trong bước 7.

Thứ Tư, 18 tháng 4, 2012

[Qt] Bắt một sự kiện giao diện bất kỳ cho một đối tượng control

Ban đầu mình cố gắng connect sự kiện của một đối tượng QLineEditBox nhưng tìm mãi không thấy.
Lên mạng tìm hiểu thì ra nó không có hỗ trợ sự kiện đó nhưng có một cách thay thế đó là viết hàm bắt tất cả sự kiện trên control đó rồi chọn ra sự kiện muốn xử lý bằng cách overide lại hàm eventFilter().

Ví dụ mình muốn bắt sự kiện focus trong QLineEditBox:
class MainWindow : public QMainWindow

 {

 public:

     MainWindow();

 protected:

    //Khai báo là sẽ override hàm eventFilter()

     bool eventFilter(QObject *obj, QEvent *ev);

 private:

     QLineEdit *textEdit;

 };

 MainWindow::MainWindow()

 {

     textEdit = new QLinEdit;

     setCentralWidget(textEdit);

   

    // Câu lệnh này cài đặt eventFilter cho đối tượng textEdit

    //và đối tượng xử lý eventFilter là đối tượng hiện tại (MainWindow)

     textEdit->installEventFilter(this);

 }

 /*

    Obj là đối tương phát sinh sự kiện

    Event là loại sự kiện

 */

 bool MainWindow::eventFilter(QObject *obj, QEvent *event)

 {

    // Nếu đối tượng là textEdit

     if (obj == textEdit) {

        // Nếu sự kiện là focus

         if (event->type() == QEvent::FocusIn) {

            // mỗi lần click vào sẽ chọn tất cả nội dung trong textEdit box.

             textEdit->selectAll();

             // Trả về true nếu sự kiện xử lý thành công

             return true;

         } else {

             return false;

         }

     } else {

         // Nếu không phải là sự kiện cần bắt, trả về cho thằng cha xử lý

         return QMainWindow::eventFilter(obj, event);

     }

 }

[Qt] Truyền giá trị cho các tham số trong câu lệnh sqlite

Một số cách để truyền giá trị cho tham số trong câu truy vấn SQLite trong QT

Gán giá trị theo tên tham số
QSqlQuery query;
query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(":id", 1001);
query.bindValue(":forename", "Bart");
query.bindValue(":surname", "Simpson");
query.exec();

Gán giá trị theo thứ tự tham số

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (:id, :forename, :surname)");
query.bindValue(0, 1001);
query.bindValue(1, "Bart");
query.bindValue(2, "Simpson");
query.exec();

Gán giá trị cho trường hợp sử dụng truyền tham số theo thứ tự(version1)

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (?, ?, ?)");
query.bindValue(0, 1001);
query.bindValue(1, "Bart");
query.bindValue(2, "Simpson");
query.exec();
Gán giá trị cho trường hợp sử dụng truyền tham số theo thứ tự(version 2):
Sử dụng AddBinValue(giá trị) thay vì bindValue. Nhưng lưu ý là thứ thự các câu lệnh AddBinhValue phải theo đúng thứ tự tham số muốn truyền vào

query.prepare("INSERT INTO person (id, forename, surname) "
"VALUES (?, ?, ?)");
query.addBindValue(1001);
query.addBindValue("Bart");
query.addBindValue("Simpson");
query.exec();