Đăng ký nhận RSS Feed

<?php echo 'Welcome to my blog!' ?>

one true brace

viết về những thứ tớ quan tâm, thế là đủ

jgrabber hay câu chuyện về một trong những project của tớ

Sở thích của tớ là code, và thường thì tớ hay có nhiều ý tưởng đủ thú vị để mình bỏ ra ít nhất vài ngày và biến nó thành hiện thực. Một trong những ý tưởng đó là jgrabber - project mà tớ tự hào là đã đi đủ hết mọi giai đoạn: từ nằm trong đầu đến thực hiện rồi ra mắt, kế đó được cập nhật liên tục trong một thời gian và… bỏ lửng đấy cho chết còng queo.

Tính đến jgrabber đã “thoi thóp” khoảng nửa năm, và chiều nay nếu không tình cờ chat với một người muốn tớ phát triển tiếp thì có lẽ phải khoảng ngần đó thời gian nữa tớ mới thăm lại xem project này đã “đi” thật chưa.

Bài viết này coi như để “tưởng nhớ” một project với hơn 600 nghìn lượt sử dụng…

Đọc tiếp →

Bài viết được gửi hôm 05.03.08 · Mang các từ khóa , · Phản hồi [2]


Từ Lightbox đến Slimbox

Như đã nhắc đến trong bài viết Blog và những thứ thừa thãi, sau khi nhận thấy thư viện prototype.js được include 2 lần trong thẻ <head>, tớ đóng cửa blog và tu sửa lại toàn bộ. Plugin to bự Lightbox đã được thay bằng một plugin nhẹ hơn hẳn dựa trên mootools - Slimbox . Về cơ bản, Slimbox tạo hiệu ứng không khác gì Lightbox, nhưng có một điểm rất bất tiện: Nếu như với Lightbox tớ chỉ việc activate plugin và không phải sửa sang gì trong nội dung các bài viết thì ở Slimbox, mặc định tớ cần phải thêm attribute rel=”lightbox” vào tất cả các link muốn áp dụng hiệu ứng.

Đọc tiếp →

Bài viết được gửi hôm 04.03.08 · Mang các từ khóa , , , · Phản hồi [5]


Làm back end trong CakePHP

Một trong những phần việc tớ luôn phải làm mỗi khi thực hiện một mini project bằng CakePHP là tạo khu vực back end để quản lý dữ liệu trong database. Trong bài viết này tớ muốn chia sẻ một chút kinh nghiệm liên quan, để giúp bạn phần nào giảm bớt được thời gian tìm kiếm thông tin nếu mới bắt đầu làm quen với Cake.

Tớ giả định bạn sử dụng Cake phiên bản 1.2 beta. Phiên bản 1.1 tớ không còn dùng nên không rõ những điều tớ viết có áp dụng với nó hay không.

1. Tách biệt front end và back end

a. Admin routing

Việc đầu tiên là tách biệt front end và back end thông qua admin routing. Chỉ việc uncomment dòng code Configure::write(’Routing.admin’, ‘admin’); trong file config/core.php là bạn đã có thể sử dụng tính năng này.

Với giá trị Routing.admin là ‘admin’, các action mang tiền tố ‘admin_’ trong các controller của bạn sẽ được coi là thuộc back end. Nghĩa là thay vì truy cập action đó bằng URL /controller/action, bạn sẽ sử dụng URL /admin/controller/action. Tương tự, nếu Routing.admin mang giá trị ‘acp’, các action của bạn sẽ cần có dạng acp_add, acp_edit, acp_delete…

b. Layout

Thường thì khu vực front end và back end sẽ mang layout khác nhau. Để thay đổi layout, tớ đặt điều kiện kiểm tra vào function beforeFilter() trong file app_controller.php:

function beforeFilter() {
  if (strpos($this->action, 'admin_') !== false) {
    $this->layout = 'admin';
  }
}

Không thuộc back end đồng nghĩa với action sẽ mang layout ‘default’.

Và nếu tớ không nhầm thì ngoài cách kiểm tra tiền tố, bạn còn có thể kiểm tra xem $this->params['admin'] có tồn tại hay không để xác định phạm vi action hiện tại.

c. Dashboard

Không biết bạn thế nào, chứ tớ hay làm thêm một controller mang tên dashboard, coi đó là điểm đến ngay khi người dùng phía back end login. Controller này không gắn với table nào trong database, tuy nhiên có thể sử dụng dữ liệu của các table khác (để hiển thị thông số thống kê chẳng hạn). Tớ khai báo biến $uses trong file dashboard_controller.php như thế này:

class DashboardController extends AppController {
  var $name = 'Dashboard';
  var $uses = array('User', 'Group');
}

Sau đó, tớ thêm một dòng vào file config/routes.php để gắn URL /admin với trang dashboard:

Router::connect('/admin', array('controller' => 'dashboard', 'action' => 'index', 'admin' => 1));

d. URL

Ở View, khi bạn đặt liên kết tới action nào, thường có thể sử dụng HTML helper:

echo $html->link('View this post', array('controller' => 'posts', 'action' => 'view', $post['Post']['id']))

Nếu đó là action phía back end, bạn cần sửa sang lại một chút:

echo $html->link('Edit this post', array('controller' => 'posts', 'action' => 'edit', $post['Post']['id'], 'admin' => 1))

Nhớ thay ‘admin’ bằng giá trị Routing.admin mà bạn đặt từ trước.

(Còn tiếp)

Bài viết được gửi hôm 03.03.08 · Mang các từ khóa , · Phản hồi [4]


Blog và những thứ thừa thãi

Một trong những thói quen mỗi ngày mà tớ không thể bỏ là đọc tin RSS. Tớ subscribe tất cả 84 feed, trong đó không dưới 10 feed cập nhật nhiều lần trong ngày, đồng nghĩa với việc hôm nào cũng bị khủng hoảng thông tin. Chính vì thế nên tớ rất lười phải rời bỏ Google Reader mà mò tới tận blog để đọc các bài viết. Thử tưởng tưởng mỗi tin chiếm một tab trong Firefox của tớ - RAM không biết bao nhiêu là đủ đây?

Mà đến tận blog gốc không phải đã xong ngay, tớ còn phải đợi load hết trang mới có thể đọc. Tớ ở ký túc, mạng wireless lởm (cái này ai chat với tớ đều biết - 5 phút out 6 lần có lẻ) nên nhiều khi chờ dài cổ mới đọc được hết một bài - mất hết cả hứng.

Nói dông dài như thế để thấy là, tớ rất rất dị ứng với những blog load chậm. Thà chậm bởi bài viết dài thì không nói, đằng này nhiều cái trở nên chậm vì quá nhiều những thứ thừa thãi - thật không thể hiểu nổi tại sao chủ nhân blog lại đưa vào?

Đọc tiếp →

Bài viết được gửi hôm 03.03.08 · Mang các từ khóa · Phản hồi [12]


4 tháng {one true brace

Hôm nay là blog tớ tròn 4 tháng tuổi. Nghĩa là mới 1/3 của một năm, một thời gian không dài theo thời gian thực, nhưng không đến nỗi quá ngắn theo thời gian internet, và đáng để nhìn lại một chút.

1. Về domain. Về host. Về quảng cáo.

Ban đầu khi chọn domain tớ có 4 “ứng cử viên sáng giá”: uncategorizable.com, decryptable.com, introvertr.com và onetruebrace.com. Cuối cùng tớ chọn cái cuối. Lý do đơn giản là tớ thích nó hơn 3 domain kia.

Về host cũng không cần nhắc đến nhiều, vì thực tế tớ đã có 2 bài viết về vấn đề này rồi: Servage - Review sau một ngày sử dụng 17 tiếng downtime. Đến giờ tớ vẫn sử dụng A Small Orange và rất hài lòng với nó.

Đặt quảng cáo trên trang web - đấy là thứ tớ rất ghét. Cứ “suy bụng ta ra bụng người” thôi, mình ghét quảng cáo như thế nào thì chắc chắn không ít người cũng như vậy. Cách đây 4 năm, khi tớ làm blog đầu tiên của mình, tớ duy trì nguyên tắc “không quảng cáo” trong suốt thời gian tồn tại của blog đó - 10 tháng. Giờ thì quan điểm của tớ khác hơn một chút - “không phải quảng cáo nào cũng gây mất cảm tình như nhau”, nên tớ chấp nhận để text link trên sidebar của blog này. Thu nhập đủ để chi trả cho tiền host. Và cái chính là không làm người đọc (cũng như tớ) thấy khó chịu. Text link hơn hẳn banner hay animated GIF ở khoản đó.

Đọc tiếp →

Bài viết được gửi hôm 01.03.08 · Mang các từ khóa · Phản hồi [9]


Trang 6 trên tổng số 17 trang« Trang đầu...«45678»...Trang cuối »