Thứ Năm, 7 tháng 10, 2010
Làm việc
Làm việc là vì muốn khẳng định bản thân, không phải vì chưa hết giờ làm.
Làm việc là vì muốn trau dồi kiến thức, không phải để copy chỗ này rồi paste sang chỗ kia.
Làm việc, nghĩa là tập trung, không facebook, không chat chit nữa. Haizz.
Phải biết quản lý tốt thời gian của mình chứ. zzZZ
Rất giàu lòng quyết tâm, nhưng chưa đủ kiên nhẫn.
Rất giàu ý tưởng, nhưng vẫn rất ham vui.
Mỗi ngày nhích một tý, rùi sẽ tới được đích ;)
Ở bãi gửi xe
Chú bảo vệ, khoảng 40->50 tuổi: Đi chỗ khác mà gửi.
Nga đang loay hoay lấy xe gần đấy.
Chú bảo vệ: Con người phải biết tôn trọng nhau chứ cháu nhỉ?
Nga: Hoan hô chú :D
Thứ Ba, 5 tháng 10, 2010
Nguyên tắc của coder
Dù đã từng bị bắt lỗi, bị phạt tiền, mình vẫn thường xuyên dính lỗi này ;(. Giờ mới thấy rằng nhìn coding convention ngon, đẹp, rõ ràng, comment đầy đủ Anh ra Anh, Việt ra Việt thật là đã mắt )
vài điều thấy cần nhớ:
- Luôn có comment về người tạo, package, thời gian update, version trên đầu mỗi trang.
- Các hàm, class, comment… khi viết cần thống nhất dùng một thứ ngôn ngữ, Anh, Việt, hay Nhật. Cá nhân mình ủng hộ việc viết toàn bộ bằng tiếng Anh, tại như thế sẽ ít gặp lỗi về font, người upgrade sau này không phải lo không hiểu “thằng cha trước” nó viết gì )
- Bản trên svn, dù cho là server test cũng không nên để lại các lỗi về cú pháp, không tìm thấy file hay còn nguyên các hàm debug, test xử lý logic bên trong.
- Không nên tiết kiệm các dấu xuống dòng, các comment, nhìn một page toàn code là code dính sát sàn sạt nhau thấy vô cùng hãi hùng :-S
- Hãy luôn luôn suy nghĩ đến cụm từ “tối ưu”, dù là một dòng lệnh, một đoạn code hay khi thiết kế cơ sở dữ liệu. Mình chứng kiến rất nhiều người đi lo tối ưu đâu đâu trong khi code thì nham nhở, truy vấn cơ sở dữ liệu thì cái gì cũng SELECT *, thiết kế csdl thì loằng ngoằng phức tạp.
- Không bao giờ tác động thẳng vào core code, sau này làm sao update được.
- Chỉ cần một cái tặc lưỡi, bạn sẽ đổ xuống sông công sức coding convention bạn làm bấy lâu. Chỉ cần một cái à uôm bỏ qua, phần mềm (trang web) của bạn sẽ bị giảm chất lượng đi vài phần. Vì thế, dù cho bạn thuộc nằm lòng các qui tắc, hãy nhớ rằng thuộc chưa đủ mà còn phải biết vận dụng nó nữa.
(Chưa đủ, sẽ sưu tập dần dần)
Chữ ký trong thư điện tử
Thế nào là một chữ ký chuẩn, haiz, có lẽ không có định nghĩa, nhưng theo mình một chữ ký có thể chấp nhận được sẽ gồm có:
Câu kết (Thanks and best regards, sincerely…)
Họ và tên
Chức danh
Bộ phận – Công ty
Địa chỉ công ty
Website công ty
skype:
mobile
email.
cũng không khó để nhớ, tuy nhiên để viết chuẩn được thì lại không phải là một điều dễ dàng, nhất là trong trường hợp viết bằng tiếng Anh.
Hôm trước lướt một vòng mail của những người trong hòm mail của mình, mới thấy giật mình vì mỗi người ký một kiểu. Tên công ty thậm chí có người còn viết chưa chuẩn (thực ra trước đó mình cũng ghi sai tên công ty =))), địa chỉ công ty cũng mỗi người ghi mỗi kiểu, rồi có người ghi lẫn cả Anh lẫn Việt, có người đưa quá nhiều thông tin vào chữ ký làm bức mail trở nên dài loằng ngoằng, hoặc có bạn lại ghi chữ THANKS AND BEST REGARDS to đùng, đọc như bị hét vào mặt chứ chẳng phải lời lịch sự gì cho cam. Nhân đây mình cũng phô trương chữ ký của mình, biết đâu ai đó ghé thăm nhận ra lỗi sai thì comment giúp ^^
Thanks and Best regards,
Hồ Thị Nga
—————————————–
Web Developer
SOHA Game Team
Vietnam Communications Corporation
Addr: 23rd floor, Vincom City Towers B, 191 Ba Trieu, Hai Ba Trung, Hanoi
Skype: abcxyz
Mobile: 097….
Xem chừng mình hay để ý những điều rất nhỏ, nhưng mình thấy rằng có một chữ ký đẹp cũng thể hiện được mức độ chuyên nghiệp của người sở hữu mail, và quan trọng là cái gì có thể làm tốt được thì nên cố gắng để làm tốt nó ^^.
Thứ Hai, 1 tháng 3, 2010
I'm return..
But from now, I'm return to paint my dream.
It's too difficult, but I will not give up.
Hand my hands...
Thứ Tư, 22 tháng 7, 2009
Zend paginator example!
If you have already created pages and you want to apply pagination to them, it would not be a big deal.
Pagination is three step process.
1. you will need to create template file. In template file you can specify layout of your pagination. i.e. how your first, previous, next and last etc will be displayed.
2. instantiate your pagination class in the controller and pass data source- data source can be an array, values fetched form the database etc.
3. make some change in your template file, where you are showing your records.
Lets have a simple example.
First create a template file pagination.phtml in your “/application/view/script/” folder and place the following code
previous)): ?>
url(array('page' => $this->first)); ?>">Start |
Start |
previous)): ?>
url(array('page' => $this->previous)); ?>">< Previous |
< Previous |
pagesInRange as $page): ?>
current): ?>
url(array('page' => $page)); ?>">
next)): ?>
| url(array('page' => $this->next)); ?>">Next > |
| Next > |
next)): ?>
url(array('page' => $this->last)); ?>">End
End
Page current; ?> of last; ?>
The code above is self explanatory. We are creating links for the pagination.
Next add the following code in your controller.
$sql = 'SELECT * FROM table_name ';
$result = $db->fetchAll($sql);
$page=$this->_getParam('page',1);
$paginator = Zend_Paginator::factory($result);
$paginator->setItemCountPerPage(10));
$paginator->setCurrentPageNumber($page);
$this->view->paginator=$paginator;
In the code above we first fetch records from our database. Then instantiate our paginator by writing
$paginator = Zend_Paginator::factory($result);
And pass it results we have fatched.
We then set number of items per page and current page. On our first visit $page will have value 1.
At the end we assign this paginator to our view template.
And now in view template add the following code
foreach($this->paginator as $record)
{
echo $record['firstname'].'\n';
echo $record['lastname']. '\n'
...
...
}
paginationControl($this->paginator, 'Sliding', 'pagination.phtml'); ?
We are applying foreach loop to our paginator and echo our records. I assume that you have fistname, lastname columns in your table where you are fetching records form.Last line is compulsory. you need to call the paginator contorller and give it the $paginator, style of the pagination and the file name of the pagination template.
copy from here
will "viet hoa" late.
Thứ Sáu, 10 tháng 7, 2009
PHP with PDO - Phần 3
Phần II: Xây dựng một kết nối đơn giản và truy vấn tới CSDL
Phần III: Tương tác dữ liệu qua PDO
Nếu như các bạn làm theo những bước ở trên thì chưa đủ, ta phải tìm cách lấy dữ liệu trả về từ các query (VD như truy vấn Select chẳng hạn).
Để làm điều này, trước tiên chúng ta phải sử dụng một phương thức khác của PDO là PDO->query(). Phương thức này có nhiệm vụ thực thi một truy vấn SQL và trả về tập kết quả. Thường thì tập kết quả này sẽ được một lớp đối tượng khác là PDO Statement xử lý. Đây là tập các phương thức chuyên dụng để xử lý kết quả trả về, nó cũng gần giống như cái recordset vậy.
PDO {
PDOStatement query(string sql);
}
Các bạn cần chú ý phân biệt giữa hai phương thức exec() và query(). Exec() thực thi một truy vấn và trả về số các dòng bị ảnh hưởng bởi truy vấn, còn query() trả về một tập kết quả (thường là một recordset hoặc giá trị false). Người ta thường dùng exec() để truy vấn các câu lệnh như Insert, delete, update..., và dùng query() để truy vấn các câu lệnh Select.
Chúng ta có thể lấy kết quả ra theo hai cách: Lấy về từng dòng hay lấy về toàn bộ. Điểm đặc biệt là cũng như với các hàm xử lý MySQL, kết quả trả về thường được lưu trữ dưới dạng một mảng, rất thuận tiện và dễ dùng
I. Lấy kết quả về theo từng dòng
Để lấy kết quả theo từng dòng (tương tự như hàm mysql_fetch_array()), chúng ta có thể sử dụng phương thức PDOStatement->fetch().
PDOStatement {
mixed fetch(int fetch_style,
int cursor_orientation,
int cursor_offset);
}
Hàm này sử dụng 3 tham số tuỳ chọn:
- Fetch_style xác định cách thức lấy dữ liệu. Nó có thể nhận một trong các giá trị sau:
- PDO::FETCH_ASSOC: Trả về một mảng được đánh chỉ số bởi tên cột (field) (Tương tự như MYSQL_ASSOC)
- PDO::FETCH_BOTH (mặc định): trả về một mảng được đánh chỉ số bởi tên cột và chỉ số số nguyên bắt đầu từ 0. (tương tự như MYSQL_BOTH)
- PDO::FETCH_NUM: trả về một mảng được đánh chỉ số bởi số thứ tự của cột (xuất hiện trên query SELECT), bắt đầu = 0 (Tương tự như MYSQL_NUM)
... và một vài giá trị khác, tham khảo thêm trong manual, nhưng vì chưa đến lúc sờ đến nên CMXQ không liệt kê ở đây.
Cũng tương tự như mysql_fetch_array, phương thức này lấy một dòng từ vị trí con trỏ hiện tại và đẩy con trỏ sang dòng kế tiếp.
Ví dụ:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$stmt = $dbh->query("SELECT * FROM user where user_id<10")>";
while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) {
echo "${row['user_name']}${row['e-mail']}\n";
}
echo "";
II. Lấy toàn bộ dữ liệu và đưa vào mảng.
Để thực hiện điều này, chúng ta cần phải sử dụng một phương thức khác thay cho fetch, đó là fetchall(). Cách thức dùng cũng tương tư nặng thằng fetch, chỉ có điều nó đưa tất cả dữ liệu vào một mảng.
Ví dụ:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');--------------------------------------------
$stmt = $dbh->query("SELECT * FROM user where user_id<10") result="$stmt-">fetchAll();
print_r($result);
copy from phpvietnam