Heo Mọi's blog

Just another WordPress.com weblog

Mirror repository for VirtualBox 11/04/2012

Filed under: Linux — heomoi @ 10:44 chiều
Tags: ,

If you are among users of VirtualBox under Debian/Ubuntu, usually keeping an eye on VirtualBox update, you may get frustrated with the speed of the default repository.

You are happy with the mirror system of Debian/Ubuntu repository, which help to get update with maximum speed. But when come to 3rd party, without a mirror system, you may feel suffer the speed drop.

So here is a mirror  of VirtualBox repo for Debian/Ubuntu, based on Sun’s CDN (Content Deliver Network):

http://dlc.sun.com.edgesuite.net/virtualbox/debian/

 

Font tiếng Việt cho Maemo 21/03/2012

Filed under: Điện thoại — heomoi @ 11:35 chiều
Tags: ,

Hệ điều hành Maemo trên N900 có vẻ khá ít font, và font tiếng Việt lại càng ít. Với những ai có nhu cầu đọc báo, nhắn tin, soạn danh bạ bằng tiếng Việt, mình xin giới thiệu vài font hỗ trợ tốt tiếng Việt.
1. DejaVu
Đây là bộ font quốc tế mã nguồn mở và miễn phí, khởi đầu dành cho Linux. Trên các HĐH Linux khác, DejaVu luôn được cung cấp trong kho phần mềm đi kèm. Tuy nhiên, không hiểu sao Maemo lại không có. Bộ font này đươc cập nhật đều đặn, tuy nhiên có lẽ do nguồn lực có hạn nên hiện chỉ mới có DejaVu Sans là có đủ các ký tự tiếng Việt. Các font khác như Serif, Mono vẫn còn thiếu vài chữ.

Download (deb package): http://virror.hanoilug.org/ubuntu/archive/pool/main/t/ttf-dejavu/ttf-dejavu_2.33-1ubuntu1_all.deb

(Đây là gói lấy từ kho của Ubuntu. Vì là đây font, không phụ thuộc kiến trúc vi xử lý (i386 hay arm) nên có thể dùng lẫn giữa Debian/Ubuntu và Maemo.

2. Droid

Đây là font do Google thuê tạo ra và dành cho HĐH Android của hãng. Trong kho của Maemo có sẵn gói ttf-droid là font này, nhưng bản khá cũ và có lỗi khó chịu là chữ “ờ” bị biến thành chữ “ớ”.

Tiếc thay phiên bản mới hơn khá khó kiếm. Có lẽ có thay đổi về giấy phép sử dụng nên kho phần mềm của Ubuntu không còn có bản cập nhật cho Droid font nữa. Tuy nhiên sau một hồi lần mò lùng sục, mình cũng kiếm được bản cập nhật của nó (phiên bản 2011).

Download: http://ubuntuone.com/1VBfytmSzBNabpQrp1wk48

Một điều bất tiện là link ở trên chỉ cung cấp gói zip, thay vì gói deb nên không cài nhanh được. Cách cài như sau:

- Cài gói ttf-droid cũ có sẵn trong kho của Maemo.

- Giải nén gói Droid mới ra 1 thư mục trong Maemo, chẳng hạn ~/MyDocs/Droid.

- Mở X-Termial, “cd” đến thư mục đó và chạy lệnh (giả sử bạn đã cài sudser để cho phép dùng lệnh sudo mà không cần gõ password):

sudo cp ttf/*.ttf /usr/share/fonts/truetype/ttf-droid/

(lệnh này chép tất cả các file *.ttf trong gói Droid mới vào thư mục font của ttf-droid cũ)

- Tiếp theo, gõ lệnh sau để cập nhật font cache:

sudo fc-cache -rv

3. Font của Windows

Các font của Windows sau đây hỗ trợ đầy đủ ký tự tiếng Việt:

Arial, Verdana, Tahoma (mình không kể Times New Roman vì font này thuộc loại Serif, coi trên màn hình không tiện cho mắt).

Các font của Windows có thể cài đặt theo cách tương tự font Droid.

 

Bộ sách Nguyễn Ngọc Tư cho điện thoại 16/12/2011

Filed under: Truyện,Điện thoại — heomoi @ 7:32 chiều
Tags:

Đây là bộ truyện (tiểu thuyết, truyện ngắn, tản văn) của nhà văn Nguyễn Ngọc Tư, được mình tập hợp thành 1 file ebook để đọc trên điện thoại hay máy đọc sách điện tử (do nhu cầu đọc sách lúc nằm trên giường hay trong toilet). Ebook được đóng gói dưới dạng file EPUB với mục lục để tiện tra tìm. Screenshot dưới đây được chụp trong Nokia N900:

Sách được lấy từ trang http://www.viet-studies.info/NNTu, có chỉnh sửa về trình bày, chủ yếu là để hiển thị tốt trên màn hình điện thoại và để phần mềm chuyển đổi nhận biết và sắp xếp được.

Phần mềm chuyển đổi: Calibre trên Ubuntu Oneiric Ocelot (11.10).

Vì số lượng truyện khá nhiều (294 truyện) nên mình không thể chỉnh sửa hết. Bà con có phát hiện chỗ nào hiển thị méo mó thì báo cho mình sửa nhé.

Download: http://ubuntuone.com/3uiqSvABOXnBvVHIGgOrIk

http://ubuntuone.com/36ane6e7gC9q1I7gDkSSfy

Nếu yêu mến bộ sách, xin vui lòng mua sách in ủng hộ nhà văn :)

Update:

17/12/2011: Sửa lỗi mất chữ ở chế độ dọc do hình bị cố định kích thước.

 

[Học Python qua ví dụ] 1) Tính lương 25/02/2009

Filed under: Python — heomoi @ 6:00 chiều
Tags:

Viết 1 chương trình tính lương và thưởng cho nhân viên như  sau:

  • Công ty có 2 loại nhân viên: nhiên viên quản lý và công nhân.

  • Mỗi nhân viên có 1 mã số nhân viên,họ tên, ngày sinh, ngày vào làm.

  • Lương nhân viên quản lý tính bằng số ngày công làm việc * 300.000

  • Lương công nhân tính bằng số sản phẩm làm ra * 10.000

  • Thưởng nhân viên quản lý bằng lương tháng * thâm niên

  • Thưởng công nhân bằng 2 tháng lương.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time

class Staff:
        def __init__(self, personal, grade=0):
                self.code = personal['code']
                self.name = personal['name']
                self.birthday = personal['birthday']
                self.entrance_day = time.strptime(personal['entrance_day'], "%d %m %Y")
                # personal['entrance_day'] is like "27 01 2006"
                self.grade = grade        #grade: 0-worker, 1-manager
                self.workingdays = 0      #number of working days this month
                self.products = 0         #quantity of products the worker has made this month

        def salary(self):             #salary this month
                if self.grade == 0:
                        return self.products*10000
                else:
                        return self.workingdays*300000

        def bonus(self, day=None):
                if self.grade == 0:
                        return 2*self.salary()
                else:
                        if day != None:
                                try:
                                        today = time.strptime(day, "%d %m %Y")
                                except ValueError:
                                        print "Please give day in format: dd mm yyyy"
                                        return
                        else:
                                today = time.localtime()
                        return (today[0] - self.entrance_day[0])*self.salary()

###------- Example ----------###

p = {
        'code': 20402050,
        'name': 'Nguyễn Hồng Quân',
        'birthday': '27 01 1987',
        'entrance_day': '31 01 2001'
        }
nv = Staff(p, 1)
nv.workingdays = 20
print 'The salary of ', nv.name, 'is ', nv.salary()
print 'The bonus is ', nv.bonus()

 

How to delete Pidgin’s status text 19/09/2008

Filed under: Uncategorized — heomoi @ 12:03 chiều

Pidgin automatically save your status text regardless if you want or not. However, only saved intentionally ones can be deleted with a button, while non-saved can not.

To delete these (on Linux), you might do as following:
Go to your home folder with Nautilus, then press Ctrl + H to show hidden files. Go to folder .purple, open file status.xml , now you can’t see your status texts here. Simply delete it and make sure to keep XML structure of the content.

 

Phimtat_mo_nhanh_ung_dung 07/09/2008

Filed under: Uncategorized — heomoi @ 2:51 sáng

Gán phím tắt để mở nhanh ứng dụng thường dùng trong Ubuntu Linux

Phím tắt là một phương tiện có ích rất nhiều trong sử dụng máy vi tính. Hầu như trong mọi chương trình máy tính đều có phím tắt để thực hiện nhanh một tác vụ nào đó. Nếu dùng chuột thì ta phải tốn thời gian di chuyển chuột tìm đến menu lệnh và nếu như 2 bàn tay ta đang gõ trên bàn phìm thì lại mất công với tay đến chuột nữa. Phím tắt ngoài giúp ta tiết kiệm được những hao phí thời gian vừa kể, lại giúp ta tận dụng được tay trái thường xuyên rảnh rỗi nữa, chỉ có một hạn chế là ta phải nhớ phím tắt nào dùng cho lệnh nào. Tuy nhiên sẽ chẳng còn là vấn đề nếu ta sử dụng nhiều thành quen.

Phím tắt để thực thi tác vụ nào đó của một chương trình thì khỏi phải bàn, nhưng có khi nào bạn thấy thật là khó chịu khi không có phím tắt để mở một chương trình hay dùng đến? Trên Windows, điều đó thật bất tiện nhưng trên Linux Ubuntu, vấn đề này lại giải quyết dễ dàng.

Để cấu hình phím tắt, ta cần nhờ đến Configuration Editor có sẵn trong Ubuntu. Mới đầu ta không thấy nó trong Main menu do nó bị ẩn. Để làm nó có mặt trong Main menu, ta phải sửa lại thiết lập trong đó bằng cách vào Main menu -> Preferences -> Main menu. Trong danh sách, ta tìm đến System Tools rồi đánh dấu vào Configuration Editor -> Close

Khi Configuration Editor đã có mặt trong Main menu rồi, ta mở nó lên rồi tìm đến thông số theo đường dẫn /apps/metacity/keybinding_commands. Lúc này, nhìn sang bên phải ta sẽ thấy Metacity (chương trình trang trí cửa sổ mặc định của Ubuntu) có để chỗ cho ta gán phím tắt cho 12 lệnh. Muốn sử dụng phím tắt cho việc mở ứng dụng nào, ta nhập lệnh gọi ứng dụng ấy vào một trong các dòng command. Ví dụ tôi muốn gán phím tắt để mở nhanh SearchStadict, tôi sẽ nhập lệnh gnome-search-tool vào command_1 và stardict vào command_2.

Tiếp đến, ta đến cấu hình theo đường dẫn /apps/metacity/keybinding_commands (ngay bên trên cái vừa nãy) để nhập phím tắt tương ứng cho những lệnh ban nãy. Ở trường hợp của tôi, tôi muốn mở nhanh Search bằng phím F12, tôi sẽ ghi F12 vào run_command_1 và ghi F3 vào run_command_2 để mở nhanh Stardict bằng cụm phím Alt+F3

Chú ý, trước khi định phím tắt, bạn nên kiểm tra xem phím tắt bạn muốn dùng đã được gán cho tác vụ nào trước đó hay chưa. Bạn có thể xem chúng trong Main menu -> Preferences -> Shortcut keys.

Nếu bạn không biết lệnh gọi chương trình nào đó và nó có mặt trong Main menu thì bạn có thể xem được lệnh gọi nó bằng cách vào Main menu -> Preferences -> Main menu. Trong danh sách, nhấp chuột phải lên tên chương trình cần xem, chọn Properties, bạn sẽ thấy được lệnh gọi chương trình.

 

Thao tac file RAR trong Linux 12/05/2008

Filed under: Uncategorized — heomoi @ 3:22 chiều

Thao tác với file nén *.rar trong Linux

Định dạng file nén *.rar (RAR Archiver) được sử dụng rất phổ biến trong Windows. Công cụ để giải nén thì phong phú do plug-in xả nén file *.rar được cung cấp miễn phí cho các chương trình tạo archive (file nén) nhưng muốn tạo file *.rar thì chỉ có RAR Archiver, do vấn đề tác quyền. Trong Windows, RAR Archiver được cung cấp dưới dạng phần mềm WinRAR có giao diện đồ hoạ hoặc dòng lệnh nhưng phải trả tiền còn trên Linux, RAR được cung cấp miễn phí nhưng lại chỉ có phiên bản dòng lệnh. Tuy nhiên, không phải đã hết lạc quan cho những ai thích dùng file RAR trên Linux nhưng ngại dùng dòng lệnh (mất công phải nhớ thêm cú pháp câu lệnh) vì ta có thể tích hợp WinRAR vào File Roller, một chương trình tạo archive có giao diện đồ hoạ của Linux (môi trường đồ hoạ GNOME).

Đầu tiên ta phải tải bản RAR Archiver dành cho Linux từ www.rarlab.com/download.html, ta sẽ được file rarlinux-[version].tar.gz (tại thời điểm viết bài này thì có rarlinux-3.7.1.tar.gz)

Cài đặt RAR Archiver:
- Giải nén rarlinux-3.7.1.tar.gz




- Vào trong thư mục vừa được tạo (rar), mở Terminal và chạy lệnh sudo make install để tiến hành cài đặt (bạn phải cài nautilus-open-terminal trước để cho phép chạy Terminal từ trong Nautilus)

Tích hợp RAR Archiver vào File Roller:


Mở file /usr/lib/mime/packages/file-roller, kiểm tra có 2 dòng này hay chưa:

application/x-rar; /usr/bin/file-roller ‘%s’; test=test -n “$DISPLAY” -a -e /usr/bin/unrar -o -e /usr/bin/rar ; priority=5

application/x-rar-compressed; /usr/bin/file-roller ‘%s’; test=test -n “$DISPLAY” -a -e /usr/bin/unrar -o -e /usr/bin/rar ; priority=5

Nếu chưa, hãy thêm vào và lưu lại.

Để ý những dòng trên, ta thấy File Roller sẽ chạy RAR Archiver tại /usr/bin/rar /usr/bin/unrar để làm việc với file *.rar. Do vậy, ta cần chép 2 file rarunrar vào theo đường dẫn trên (hoặc sửa lại đường dẫn đến nơi mà RAR Archiver được cài vào). Cách chép thì đơn giản: Vào thư mục đã giải nén vừa rồi, mở Terminal và gõ lệnh:

sudo cp rar /usr/bin/rar
sudo cp unrar /usr/bin/unrar

 

Ve_logo_PFIEV_(Unicode) 16/08/2007

Filed under: Uncategorized — heomoi @ 9:38 sáng

Vẽ logo PFIEV bằng Inkscape

Giới thiệu về Inkscape:

Inkscape là một chương trình đồ họa chuyên dùng để vẽ các ảnh vector tương tự CorelDraw, Adobe Illustrator.

Ảnh vector là dạng ảnh mà khi phóng to không bị bể hạt, ngược lại với ảnh bitmap. Hình ảnh trong loại ảnh vector được tạo dựng từ sự phối hợp các họa tiết cơ sở, không như ảnh bitmap là sự phân bố các điểm ảnh mang các tính chất màu sắc, đậm nhạt khác nhau. Bạn có thể liên hệ khái niệm vector này với cái mà bạn đã học trong Đại số tuyến tính về không gian vector, các cơ sở, các vector độc lập tuyến tính.

Ảnh vector có ưu điểm không bị bể hạt khi phóng to, nhưng có khuyết điểm (do bản chất của nó) là không phù hợp với những hình ảnh có các mảng chuyển tiếp liên tục. Tức là, ảnh vector chỉ phù hợp với những hình ảnh với các đường nét, hình khối phân biệt như logo dưới đây, còn với ảnh thiên nhiên thì chỉ có ảnh bitmap thể hiện được.

Cho tới bây giờ, đa số các định dạng ảnh vector (như của CorelDraw, Adobe Illustrator …) hầu như chỉ tồn tại trong khâu thiết kế, khi ứng dụng vào mục đích cụ thể như đưa lên web, chèn vào các tài liệu, chia sè ảnh thì vẫn phải chuyển thành ảnh bitmap vì ngoài chương trình thiết kế ra, chẳng có chương trình nào chịu hỗ trợ chúng (ngoại trừ một số chương trình xem ảnh hỗ trợ đa định dạng).

Tuy nhiên, có một định dạng ảnh vector non trẻ đã vượt qua phần nào những giới hạn ấy. Đó là định dạng SVG (Scalable Vector Graphics). Nhưng có một điều hơi tếu là SVG vốn dĩ chẳng phải là loại file binary như các định dạng ảnh (nói chung) khác, thực ra nó chỉ là một file …text viết theo lối XML (Extensible Markup Language). Do vậy, bạn có thể tạo ra nó thông qua bất cứ chương trình text editor nào (Notepad chẳng hạn), miễn là bạn biết về code SVG (có thể học trên www.w3schools.com).

SVG ra đời với mục đích biểu thị đồ họa vector trên web mà máy tính nào cũng có trình duyệt web nên SVG portable hơn các dạng ảnh vector kia. Tuy thế điều đó vẫn chưa hoàn toàn vì phần nhiều máy tính bây giờ vẫn còn sử dụng trình duyệt Internet Explorer lạc hậu với version 6- chưa hỗ trợ SVG, trong khi các trình duyệt khác như Mozilla Firefox, Opera đều đã hỗ trợ sớm. Nhưng nói gì thì nói, tương lai của SVG là rất sáng sủa, hứa hẹn cùng với ứng dụng ngày càng phổ biến của web và chuẩn XML.

Thông tin thêm về SVG nằm ở http://www.w3schools.com/svg/svg_intro.asp.

Tại sao từ nãy giờ chỉ thấy tôi nói về SVG mà không thấy đả động gì về Inkscape? Vì SVG chính là dạng file mà Inkscape làm việc. Sử dụng Inkscape trong bài này như là một cách cổ vũ cho việc sử dụng Inkscape, do tính tiện ích của file SVG và do Inkscape là phần mềm nguồn mở, miễn phí (định dạng SVG cũng là định dạng mở, không thuộc riêng hãng nào như các định dạng của CorelDraw, Adobe Illustrator).

Inkscape có thể được download từ website www.inkscape.org. Việc cài đặt rất đơn giản do không phải bẻ khóa chi hết (miễn phí mà), chỉ có OKNext.

Nào, bây giờ hãy mở Inkscape lên và bắt đầu bài tập thứ nhất. Nhớ maximize cửa sổ chương trình lên nhá (để đảm bảo không có nút nào bị che khuất)

Tutorial 1: Vẽ logo PFIEV

(PFIEV: Programme de Formation d’Ingénieurs Excellent au Vietnam: nơi tôi đang theo học)

Đầu tiên hãy hình dung, tính toán trước hình dạng, kích thước. Dựa vào hình mẫu, tôi đã đo được tỉ lệ kích thước như ở hình dưới (hãy xem trên thước, với đơn vị pixel).

Để trợ giúp cho việc vẽ chính xác theo một kích thước định trước, Inkscape cung cấp tính năng gọi là snap. Như đã làm quen hồi học AutoCAD, các bạn có thể hiều Snap là sự bắt dính, thu hút trỏ chuột vào một điểm cố định có vị trí mà ta mong muốn đưa được trỏ chuột đến. Tuy nhiên, snap của Inkscape không giống nhiều snap của AutoCAD.

Hãy xem qua các kiểu snap của Inkscape bằng cách vào File > Document Properties > Snap:

Object Snapping: Snap dựa vào một đối tượng đã có trên hình

Grid Snapping: Bản vẽ sẽ được đặt dưới một mạng lưới và snap dựa vào các nút lưới. Lưới này chỉ phục vụ cho snap khi thiết kế chứ không hiện ra trong bản vẽ kết quả.

Guide Snapping: Snap dựa vào những đường gióng ngang dọc gọi là guide. Chuột sẽ bị bắt dính để di chuyển dọc theo các đường này hoặc bị bắt vào giao điểm các đường. Cũng như Grid, Guide không hiển thị trong bản vẽ kết quả.

So với AutoCAD, snap của Inkscape còn làm việc với điểm, cạnh của đối tượng mà ta đang dùng chuột để di chuyển, co kéo.

Bây giờ ta hãy bắt tay vào thực hành với kỹ năng sử dụng snap, kỹ năng mà nếu thiếu nó thì công việc của bạn sẽ trở nên nhọc nhằn biết bao!

Dựng Grid: Vào menu View > Grid để cho hiện Grid. Tiếp theo chọn độ Zoom là 160%, độ zoom này thuận lợi cho kích thước mà tôi đã tính ở trên (với màn hình 800×600, chỗ thay đổi độ zoom sẽ bị che khuất nếu cửa sổ không được maximize).

Dựng Guide:

Guide được tạo ra đơn giản bằng cách bấm chuột vào thước (ngang dọc tùy guide ngang hay dọc) rồi kéo rê vào khung vẽ. Bỏ Guide đi bằng cách bấm vào Guide và kéo vào thước. Tuy nhiên đừng vội mừng vì gian nan là ở chỗ đặt Guide vào đúng vị trí. Tại thời điểm viết bài này, Inkscape chưa cho nhập tọa độ nơi Guide cần đặt nên tôi phải di dời Guide một cách thủ công. Để biết Guide đã đến đúng chỗ chưa, hãy vừa di dời vừa quan sát tọa độ chuột nơi góc dưới bên phải: Hệ tọa độ gồm trục X hướng ngang sang phải, trục Y hướng lên và gốc tọa độ nằm ở góc trái phía dưới.

Với bài này, ta đặt các Guide dọc ở vị trí (X) 125, 200, 225, 250, 300, 350, 375, 400 và 475, các Guide ngang ở vị trí (Y) 500, 450, 400. Hãy xem lại hình minh họa thứ 2.

Phù, vậy là đóng xong cọc rồi đấy. Tiếp theo là xây nhà.

Vẽ đường cong đầu tiên bên trái: Có 2 cách vẽ đường cong này, bạn có thể chọn 1 trong 2 hoặc phối hợp cả 2, nhưng tốt hơn hãy thực hành hết cho quen tay.

Trước tiên, hãy vào Document Properties kiểm tra xem các tùy chọn về snap đã được bật lên chưa (không cần phải bật hết mà chỉ cần bật những cái nào thích hợp thôi, như sắp tới đây ta sẽ chấm các điểm dựa theo grid và guide nên phải bật hết những cái Snap pointaSnap nodes).

Cách 1: Chọn công cụ Draw Bezier curves and straight lines (Shift – F6), chấm một đường vào điểm có tọa độ (125, 400). Do ta đã dựng 2 đường guides giao nhau tại đây nên việc chấm đúng vào điểm (125, 400) trở nên rất đơn giản, chỉ việc đưa chuột lại gần đó rồi click. Tiếp theo chấm vào 2 điểm (200, 450) và (225, 500). Sau khi chấm vào điểm thứ 3 này, nhấn Enter để kết thúc dựng các nút. Như vậy ta đã có một đường gấp khúc và sẽ dựng đường cong dựa trên đường gấp khúc này.

Giữ đường gấp khúc còn trong trạng thái được chọn, chọn công cụ Edit path nodes or control handles (F2).

Chấm vào node giữa

Trông lên thanh công cụ phía trên, bấm vào Make selected nodes symmetric

Node mà ta chọn sẽ trở thành một tiếp điểm đường cong và tiếp tuyến qua nó là một đoạn thẳng 2 đầu đối xứng. Dùng chuột di dời 2 đầu (điểm tròn màu trằng) sẽ làm đường gấp khúc uốn cong.

Trong trường hợp này, tôi nhận thấy rằng do hai đầu luôn đối xứng nhau nên đường cong mà nó tạo ra không có được dáng như tôi muốn. Để công việc dễ dàng hơn, ta cần sửa đổi một chút công cụ của mình bằng cách chấm lại vào node giữa (hình vuông) rồi bấm chọn nút Make selected nodes smooth

.

Bây giờ thì 2 đầu vẫn thẳng hàng với nhau qua node giữa nhưng ta đã có thể thay đổi khoảng cách 2 bên để tạo ra đường cong có dáng mong muốn.

Sau khi vẽ xong đường cong, bấm chuột trở lại vào công cụ đầu tiên (Select and transform objects) để kiểm tra kết quả.

2) Cách 2: Cũng dùng công cụ vẽ đường thẳng như trên, nhưng lần này vẽ một đoạn thẳng thay vì đường gấp khúc, từ điểm (125, 400) đến (225, 500)

Chọn công cụ Edit path nodes, chọn đoạn thẳng vừa vẽ rồi bấm chọn nút Make selected segments curves ở thanh công cụ phía trên

Đoạn thẳng bây giờ trở thành đường cong với 2 tiếp tuyến ở 2 đầu. Hãy dùng chuột di chuyển các đầu tiếp tuyến cho đến khi ra được đường cong mong muốn.

Vậy là xong đường cong bên trái, bây giờ ta sẽ dựng đường cong bên phải. Để ý rằng, đường bên phải là ảnh đối xứng qua trục dọc của đường cong bên trái, do vậy ta không cần phải vẽ mà chỉ việc sao chép rồi xoay chuyển lại cho thích hợp.

Đầu tiên, bấm chọn đường cần sao chép, nhấn Ctrl+D hoặc right-click > chọn Duplicate, ta sẽ có một bản sao nằm chồng lên đường cũ. Hãy bấm chọn nó rồi kéo sang phải:

Tiếp theo bấm vào nút Flip selected objects horizontally trên thanh cong cụ phía trên.

Hình cong đã được lật ngang, bây giờ ta chỉ cần nương theo các guide mà đặt nó vào đúng vị trí. Xong!

Tới đây có lẽ bạn đã thạo việc vẽ các đoạn thẳng và dựa vào guide để chấm điểm chính xác rồi, cho nên việc vẽ các đường ngang dọc cho thành cầu của chúng ta rất đơn giản, tôi không cần phải trình bày phần này mà nhảy đến phần vẽ đoạn cong giữa của cây cầu luôn.

Theo như tôi đoán, đường cong giữa cầu không phải là một đường cong tự do mà là một cung tròn nên tôi sẽ không vẽ như hai đường cong trên mà sẽ vẽ một cung tròn đi qua 3 điểm (225, 500), (300, 450) và (375, 500). Tất nhiên bạn có quyền phản đối tôi và vẽ theo ý bạn, nhưng tại sao ta không thử xem cách vẽ một cung tròn nó như thế nào nhỉ? Sẽ có lợi lắm đó.

Inkscape không phải là AutoCAD, cho nên bạn không thể vẽ cung tròn theo kiểu AutoCAD là chọn công cụ vẽ cung tròn (arc), chọn 3 điểm mà cung tròn đi qua rồi bấm Enter được. Inkscape không có công cụ vẽ cung tròn, cũng không có chỗ nhập tọa độ, tính sao đây?

Nói rằng Inkscape không có công cụ vẽ cung tròn, nhưng thực ra không phải vậy. Inkscape có công cụ vẽ elipse rất linh hoạt. Bạn có thể dùng nó vẽ đường tròn, sau đó co kéo, co kéo thế nào đó cho nó thành một phần chiếc bánh (như biểu đồ tròn) hay thành một cung tròn. Chúng ta hãy khám phá nhé.

Vậy là ta sẽ phải vẽ một đường tròn đi qua 3 điểm cố định, thế nào nhỉ? Công cụ elipse chỉ cho vẽ đường tròn từ một góc ngoại tiếp, hoặc từ tâm chứ đâu cho vẽ qua điểm? Ta phải dùng chút Toán học để giải quyết vấn đề này thôi.

Hãy nhớ lại bài toán xác định tâm đường tròn đi qua 3 điểm cho trước. Biết rằng tâm đường tròn ngoại tiếp tam giác sẽ có tâm là giao điểm các đường trung trực của tam giác đó nên ta sẽ dùng nguyên lý này để tìm tâm.

Để ý rằng ta đã có trước một đường trung trực là cái đường guide dọc ở vị trí 300, như vậy ta chỉ phải vẽ một đường trung trực của cạnh xiên bên phải thôi.

Đầu tiên vẽ cạnh xiên đó rồi đổi màu, đổi nét cho khác với các đường khác để ta nhớ rằng đường này chỉ là tạm thời, sẽ xóa đi sau. Chỗ để thay đổi tinh chất của nó là góc dưới bên phải cửa sổ, double-click vào đó sẽ làm hiện ra hộp thoại Fill and Strock giúp bạn thay đổi các tính chất mong muốn.

Để tạo đường vuông góc của cạnh xiên, ta Duplicate (Ctrl+D) nó rồi xoay 90° bản sao vừa tạo này:

Để ý rằng đường vuông góc vừa tạo ra nằm ngay chóc vị trí đường trung trực (hú hồn). Bây giờ ta chỉ việc kéo dài cho nó cắt đường guide – trung trực thứ nhất thôi.

Để làm vậy, hãy vào Document Properties (Shift+Ctrl+D) > Snapping, chỉ chọn mỗi Snap bounding boxes to guides thôi (quan trọng, nếu các snap khác còn bật, chúng sẽ ảnh hưởng đến thao tác sắp tới của bạn!). Sau đó zoom lên mức cao hơn (320% chẳng hạn) để ngắm cho rõ rồi vừa ấn giữ phím Ctrl (hoặc Ctrl+Shift) vừa dùng chuột kéo đầu trên của đường trung trực về phía guide 300. Khi đến gần guide thì click rồi thả ra, đầu mút sẽ tự động cắm ngay ngắn vào guide, chỗ cắm ấy chính là tâm đường tròn.

Bây giờ quay lại mức zoom cũ (160%), mở Document Properties lên và thêm 3 tùy chọn Snapping là Snap nodes to object, Snap to object path Snap to object nodes.

Để vẽ đường tròn, click chuột chỗ tâm đường tròn, chuột của bạn sẽ được bắt dính vào đầu mút đường trung trực, tức là ngay tâm. Tiếp theo, vừa ần giữ Ctrl + Shift, vừa kéo chuột chéo xuống. Hãy căn khi đường tròn đi qua 3 điểm mong muồn thì thả ra.

(Ctrl giúp vẽ đường tròn và Shift giúp vẽ từ tâm)

Bây giờ thì ta biến đường tròn thành vòng cung bằng cách click chuột vào dấu tròn phía phải của đường tròn rồi kéo ngược chiều kim đồng hồ. Thật kỳ diệu, đường tròn biến đổi như ta đang gấp chiếc quạt vậy.

Hãy để ý 2 công cụ Open arcMake whole. Open arc cho phép chuyển đổi qua lại giữa cung tròn (bật) và hình quạt (tắt). Còn Make whole giúp biến trở lại thành đường tròn kín ban đầu.

Xong xuôi, xóa các đường tạm đi, ta có logo gần hoàn tất.

À, có 2 đường dọc phía dưới chưa đủ dài kìa, hãy kéo nó lên chạm vào cung tròn nhé. Tiếp đến, quét chọn tất cả các đường rồi chỉnh lại thông số Fill and Stroke (Shift+Ctrl+F) để nét dày lên chút (4 pixels)

Để thêm các chữ P.F.I.E.V bên dưới, dùng công cụ Create and edit text objects (chữ A), chọn font Arial, cỡ 36 rồi click vào bản vẽ mà gõ chữ. Cuối cùng sắp xếp lại cho ngay ngắn.

À, còn khi lưu bản vẽ, hãy lưu ý các định dạng như sau:

Inkscape SVG là dạng SVG mà Inkscape dùng để lưu lại công việc dang dở, nó khác chút với loại SVG nói ở đầu bài (Plain SVG) vì nó phải lưu thêm những dữ liệu của việc thiết kế như Guide, Snap, Layer v.v… Mặc dù Inkscape SVG có thể dùng cho web được nhưng chỉ nên dùng nó để lưu bản thiết kế, còn khi đưa vào sử dụng thì nên chuyển qua lưu dưới dạng Plain SVG.

Trước khi sử dụng bản vẽ vào những việc thông thường khác như chia sẻ, chèn vào tài liệu, bạn nên export nó ra thành dạng ảnh Bimap (vào menu File > Export Bitmap), do hiện tại sự hỗ trợ ảnh vector chưa phổ biến. Khi export, nên chọn đuôi PNG hoặc GIF để đảm bảo nén ảnh tốt. (Chú thích: PNG và GIF phù hợp để nén ảnh mà các mảng, các chi tiết phân biệt rạch ròi, còn JPG phù hợp nén ảnh mà các mảng chuyển tiếp liên tục hay phân biệt không rõ rệt)

Nguyễn Hồng Quân

ng.hong.quan@gmail.com

15/08/2007

 

FreeDictionaries 14/08/2007

Filed under: Uncategorized — heomoi @ 8:37 sáng

Những bộ từ điển miễn phí

Hiện nay đa số người dùng máy tính Việt Nam chúng ta khi nói đến từ điển Anh – Việt đều nghĩ ngay đến bộ từ điển thương mại Lạc Việt. Tuy nhiên không có nhiều người biết rằng còn ít nhất là hai bộ từ điển khác có số lượng từ nhiều hơn hẳn (đặc biệt là từ chuyên ngành) mà lại miễn phí. Trong bài này tôi xin đề cập đến 2 chương trình từ điển, một của Hồ Ngọc Đức và một là Lingoes. Hai chương trình này cùng dùng chung một nguồn dữ liệu của Dự án từ điển tiếng Việt miễn phí The Free Vietnamese Dictionary Project. Hướng dẫn này dành cho máy sử dụng hệ điều hành Windows.

  1. Từ điển Hồ Ngọc Đức:

Đây là chương trình từ điển đầu tiên của Dự án từ điển tiếng Việt miễn phí. Dự án này bắt đầu từ 1997 và có trang chủ đặt tại http://www.informatik.uni-leipzig.de/~duc/Dict/. Tại đây bạn cũng có thể tìm thấy phần mềm từ điển mà Hồ Ngọc Đức viết cho Dự án. Nhờ sự đóng góp của nhiều người, Dự án đã có đến 9 bộ từ điển cho tiếng Việt, gồm: Anh – Việt (110.000 từ), Việt – Anh (23.000 từ), Pháp – Việt (48.000 từ), Việt – Pháp (39.000 từ), Đức – Việt (45.000 từ), Việt – Đức (12.000 từ), Việt – Việt (30.000 từ), Na Uy – Việt (20.000 từ) và Nga – Việt. Ngoài ra, do dữ liệu tuân theo định dạng DICT của www.dict.org nên chương trình có thể sử dụng được những dữ liệu từ điển khác cùng định dạng DICT. Cũng do định dạng này được công khai nên người dùng có thể thêm mở rộng dữ liệu. Chương trình của Hồ Ngọc Đức có 2 cách dùng: chạy trên web và chạy như một ứng dụng độc lập. Để download, bạn vào http://www.ifis.uni-luebeck.de/~duc/Dict/install.html rồi tải về các file TuDienHND_Win32.exe và các file zip data.

Cài đặt:

Chạy file TuDienHND_Win32.exe và chọn thư mục để nó giải nén các file chương trình vào

Tiếp theo giải nén các bộ từ điển (trong file ZIP) vào thư mục data trong thư mục cài đặt từ điển. Mỗi bộ là một thư mục cùng với file .ini của nó. Hãy kiểm tra file danhsach.txt đã có ghi đường dẫn đến file .ini của bộ từ điển mới thêm vào hay chưa. Thông thường thì bạn có thể yên tâm vì nó thường được ghi sẵn.

Vì chương trình viết bằng Java nên máy bạn buộc phải có cài Java Runtime Environment (JRE) thì mới chạy từ điển được. Để kiểm tra máy đã cài JRE chưa, bạn mở Command Prompt lên (Run > cmd) và gõ vào dòng lệnh java –version.Nếu kết quả tương tự thế này là ổn.

java version “1.6.0_02″
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)

Còn nếu không thấy có sự hiện hữu của Java hoặc version hơi cũ (1.2.x chẳng hạn) thì bạn nên download bản JRE mới về cài (www.sun.com)

Tới đây, bạn đã có thể ung dung mà xài từ điển bằng cách double-click lên file vietdict.jar trong thư mục cài đặt.

Lưu ý rằng nếu tạo shorcut cho chương trình, bạn phải đảm bảo thư mục khởi động (start folder) của shorcut là chính thư mục cài đặt từ điển. Nếu để trống thì chương trình sẽ chạy trong thư mục làm việc khác và không tìm đâu ra từ điển cả.

Từ điển này còn có thể sử dụng qua giao diện web. Cách làm như sau:

Từ thư mục cài đặt, chạy file vd-start.bat. Cửa sổ đen ngòm của Command Prompt hiện ra, hãy cứ để đấy, đừng dóng lại mà hãy mở trình duyệt (Internet Explorer, Mozilla Firefox hay bất cứ loại nào cũng được) lên rồi gõ vào địa chỉ http://localhost:8080. Chương trình bây giờ chạy như một server và bạn có thể tra từ trên địa chỉ này.

Server sẽ tắt nếu bạn đóng cửa sổ Command Prompt của vd-start.bat. Nếu muốn server luôn luôn chạy, bạn hãy chạy file setup.bat. Đánh dấu vào Start TudienHND automatically with Windows rồi bấm Setup. Từ đây bất cứ lúc nào mở trình duyệt lên và đến http://localhost:8080 bạn cũng có thể sử dụng được từ điển.

Sau một thời gian, để ý rằng cho server chạy tự động vầy thì máy hơi nặng, bạn có thể thôi cho nó chạy tự động bằng cách vào thư mục cài đặt > template rồi chạy file tdservice_remove.bat (thật tình là không hiểu sao ông ấy lại giấu nó vào đây), chờ đợi đến khi xuất hiện dòng Press any key to continue . . . thì nhấn phím bất kỳ để kết thúc.

Sửa đổi nho nhỏ: Một tính năng của từ điển (chạy trên web) này là cho phép tra nghĩa của một từ trong trang kết quả bằng cách bôi đen từ cần tra rồi click chuột phải lên. Chuột phải bây giờ đảm trách nhiệm vụ tra từ nên nó phải không làm hiện ra menu ngữ cảnh (hay menu chuột phải). Tuy nhiên, do cách lập trình “không theo chuẩn” mà kết quả mong muốn này chỉ xảy ra trên Internet Explorer, còn với Firefox, menu chuột phải vẫn đường hoàng nhảy ra, kèm theo là một thông báo lỗi (trong Error Console). Cách sửa đơn giản như sau: Vào thư mục cài đặt từ điển > template, mở file result.html bằng Notepad, tìm đến dòng function nocontextmenu() và sửa lại thành function nocontextmenu(event) sau đó restart lại server (tắt đi mở lại) và reload (refresh) lại trang web.

Chức năng này, tiếc thay lại không làm việc trên Opera. Có lẽ khi nào có hứng tôi sẽ tìm cách chữa thêm. Và biết đâu một ngày đẹp trời nào đó tôi sẽ bắt tay vào viết lại, bổ sung những thiều sót của chương trình này. Có điều, dù đã có ý định nhưng tôi chưa thể vào việc vì tôi chỉ mới bắt đầu học Python, ngôn ngữ lập trình mà tôi chọn để viết chương trình này.

Từ điển Hồ Ngọc Đức có thể sử dụng nhiều nguồn dữ liệu từ khắp nơi, miễn có định dạng DICT, nhưng có bất lợi là phần phát âm chỉ dùng được nếu máy tính nối mạng và chạy từ web. Chế độ chạy từ web này có đủ chức năng nhưng lại hơi chậm, nặng nề, còn chế độ kia nhanh nhưng lại thiếu thốn chức năng rất nhiều. Ngoài ra giao diện chương trình lại hơi …xấu. Nhưng ta không phải thất vọng lâu vì còn có chương trình từ điển khác rất tuyệt, cao hơn về tính tiện dụng và chỉ có một điểm thua là không thể sử dụng dữ liệu từ điển định dạng DICT từ nguồn khác do nó có định dạng dữ liệu riêng, và định dạng này không được công khai nên người dùng chưa thể mở rộng dữ liệu. Đó là chương trình tôi sắp nói sau đây:

  1. Lingoes

Cũng như từ điển Hồ Ngọc Đức, từ điển này được download riêng rẽ chương trình chính và dữ liệu (file .lds). Việc cài đặt rất đơn giản, chỉ việc chạy file cài đặt (lingoes_1.51.0007.exe) rồi bấm Next và OK, không phải mất công bẻ khóa. Dữ liệu thì rất phong phú (có cả những bộ từ điển nổi tiếng của Oxford, WordNet), ngoại trừ hạn chế như nói ở trên và những từ điển tiếng Việt thì khá nghèo nàn, chỉ có 2 bộ Anh – Việt, Việt – Anh.

Sau khi cài đặt chương trình, bạn double-cick lên các file .lds để cài đặt dữ liệu.

Trong hộp thoại Install Dictionary:

  • Add To “Index Group”: Dữ liệu này sẽ được dùng để tra nhanh ngay khi đang gõ từ cần tra.

  • Add To “Cursor Translator Group”: Dữ liệu sẽ được dùng khi tra từ cửa sổ của chương trình khác như Word, PowerPoint, trình duyệt web…

Khi tra từ, chương trình này có thể tra cùng lúc trong nhiều bộ từ điển, những kết quả sẽ được sắp xếp theo thứ tự quy định trong Dictionaries Options. Bạn có thể thay đổi thứ tự trong đó (theo cách tra – ứng với mỗi group), ngoài ra còn có thể thêm bớt, kích hoạt/bỏ kích hoạt các bộ từ điển.

Để tra từ trong cửa sổ một ứng dụng khác, bạn có 2 cách: dùng chuột hoặc dùng clipboard. Trước khi dùng phương pháp này, hãy chắc chắn rằng Lingoes đang chạy dưới khay hệ thống (system tray) và chế độ tra mà bạn cần đã được kích hoạt (Hic, bị nhiễm cách nói của người Anh rồi). Ngoài ra, để biết (và thay đổi) cách dùng chuột thế nào để tra, bạn hãy vào Configuration > Translate > Cursor Translate Mode

Cách dùng chuột cho phép tra từ trên những ứng dụng văn phòng như Word, Excel, OpenOffice, trên web… nhưng lại không có tác dụng trên các chương trình đọc file PDF hoặc các chương trình “lạ” khác. Đó cũng là khó khăn mà các chương trình từ điển khác như Lạc Việt, Click’nSee vấp phải. Để giải quyết vấn đề này, Lingoes dùng cách tra qua clipboard.

Cách tra này cũng rất đơn giản: bôi đen từ cần tra, ấn Ctrl+C (hay right-click –> Copy), tất nhiên là phải bật chế độ Clipboard Translator của Lingoes trước đã.

Cách này dùng được bất cứ nơi nào có thể copy text.

Bên cạnh tính năng phong phú: tra nhiều từ điển cùng lúc, nhiều cách tra, có phát âm (nhưng không phải giọng người mà của speech engine), tra cứu trên những từ điển online, từ điển bách khoa, dịch văn bản nhờ các Online Translator như Google, BabelFish…, tra cứu nhanh từ trong phần kết quả, Lingoes còn có giao diện phong cách Windows Vista rất đẹp, xứng đáng thay thế những chương trình thương mại khác.















Một ghi chú nhỏ: Cơ sở dữ liệu của 2 bộ từ điển Anh-Việt, Việt-Anh lấy từ Free Vietnames Project mà chuyển đổi qua. Tiếc thay, những người làm công việc chuyển đổi đã làm việc không hết mình nên phần kết quả trên 2 bộ từ điển này vừa sơ sài vừa rồi rắm ( T_T ).



Nguyễn Hồng Quân

ng.hong.quan@gmail.com

 

PHP là gì? (Phần 1) 26/07/2007

Filed under: Uncategorized — heomoi @ 1:19 chiều

(Download bài viết này: http://ng.hong.quan.googlepages.com/PHPlg-p1.doc)

Viết bài này, không phải mình viết với tư cách một chuyên gia về PHP (www.php.net), trình độ PHP của mình vẫn còn thấp lắm, có lẽ chỉ mới ở bậc 2,5/6 (dựa theo bảng phân cấp của ông cụ pcdinh – leader (hình như thế!) của group PHPVietnam). Mình viết bài này giống như một thằng ku vớ phải một cục kẹo, hay một món đồ chơi rồi lon ton đi khoe với bạn bè rằng cái cục kẹo đấy ngon như thế nào, rằng cái đồ chơi ấy hay ra làm sao. Vậy thôi.

Bây giờ thì mình đang trầm ngâm không biết nên viết thế nào…

Thôi thì bắt đầu bằng tại sao mình lại quan tâm đến PHP. Xin kể về hoàn cảnh mà mình viết những dòng mã PHP đầu tiên.

Như mấy bạn cũng biết là hầu hết các ngôn ngữ lập trình đều hỗ trợ vòng lặp (for, while) và lần đầu sử dụng PHP mình đã dùng nó để ghi ra những dòng chữ giống nhau, thay vì phải làm thủ công, mệt!

Thế này, hồi đấy mình đang say mê theo dõi bộ truyện tranh One Piece download từ trên mạng. Truyện kể về cậu bé hải tặc cao su Luffy mơ trở thành vua hải tặc và truyền thuyết về “Hải trình vĩ đại” cùng kho báu khồng lồ “One Piece”. Mà thôi, mình không nên sa đà vào câu chuyện trong bài viết về PHP như thế này. Tóm lại nó từng xuất bản ở Việt Nam dưới tiêu đề “Truy tìm kho báu hải tặc”, xuất bản hai lần nhưng chẳng lần nào phát hành hết bộ truyện, đơn giản vì khi nó đang được phát hành ở Việt Nam thì khi ấy bên Nhật nó vẫn còn đang được viết .

Hồi đó mình may mắn vớ được trang www.any-otaku.com có cho download bộ này (mặc dù không đầy đủ nhưng cũng nhiều lắm). Khổ nỗi bộ này khá dài, có đến hơn 400 chapter mà trang www.any-otaku.com lại cứ cho download từng chapter một trong một file ZIP. Nghĩ coi, cứ mỗi file download về là phải 3 – 4 cái click chuột mà cả trăm chapter thì …rã hết cả tay, chưa kể tốn thời giờ cho click chuột nữa. Dạo đó mình hay dùng chương trình tăng tốc download là FlashGet (nhưng giờ thì không vì càng ngày nó càng nặng, ghét, chuyển qua OrbitDownloader <~~ thằng này có Grab++ giúp download multimedia rất tiện) và FlashGet có cho hỗ trợ download hàng loạt – ghi tất cả những URL (địa chỉ) của những file cần download vào một file text rồi import vào FlashGet. Sau khi chọn thư mục mà FlashGet sẽ lưu thì chỉ còn mỗi việc là rung đùi ngồi chờ. Còn những file truyện trên www.any-otaku.com thì có URL giống nhau, khác mỗi tên file và tên file đặt theo số thứ tự chapter (chẳng hạn http://www.any-otaku.com/manga/onepiece/121.zip) . Như vậy, mình chỉ cần viết chương trình cho lặp lại thao tác viết ra URL nhưng sau mỗi vòng lặp thì cho tên file thay đổi bằng cách tăng con số lên 1. Tất cả những URL sẽ viết vào một file text và mình chỉ việc lấy file text đấy giao cho FlashGet làm phần còn lại. Quá khỏe! Vậy là mình gấp rút lên mạng, download tài liệu PHP về đọc và bắt tay vào viết.

Sẽ có người thắc mắc, mấy thao tác lặp rồi ghi thành file thì dùng C viết là được rồi, cần qué gì phải dùng PHP? Ấy là tại mình không thích một chương trình chạy trên dòng lệnh Command Prompt tối thui (hồi học C toàn viết ra những chương trình thế này) mà trình độ của mình lại chưa biết tạo giao diện đồ họa cho chương trình (cái nì phải dùng Visual C++, nhưng hồi đó chưa nắm được cách dùng IDE Visual C++). Với lại mình đã có “toan tính” học PHP từ trước, vì thích thiết kế web, nhưng cứ mỗi lần lôi cuốn dạy PHP bằng tiếng Việt ra là thấy đom đóm nổ trước mắt, đất trời đảo lộn, chẳng hiểu gì hết (Sau này tởn chẳng dám đụng đến mấy cuốn dạy tin học bằng tiếng Việt nữa, hic).

PHP dùng trong lập trình web như thế nào?

Tất cả những gì trên mạng, từ trang web, video, nhạc, hình, software đến email v.v… thực ra đều được lưu trên những máy tính nối mạng Internet 24/7 (đủ 24h trong ngày và đủ 7 ngày trong tuần – nhưng chỉ tương đối thôi, máy tính cũng phải có lục trục trặc mà bị rớt mạng chứ!). Những máy tính này được cài những phần mềm server (web server, mail server, ftp server, tùy!) và được gán cho một địa chỉ (giống như mỗi căn nhà trong phố đều có địa chỉ vậy, hay nếu không có được tấm biển địa chỉ gắn lên tường thì ít nhất cũng phải có cái tên gọi như nhà ông X, nhà cô Y…). Khi mình cần xem một trang web của Yahoo chẳng hạn, mình đánh dòng chữ www.yahoo.com lên trình duyệt (hay còn gọi là browser mà Internet Explorer là một trong số đó), không phải chỉ đơn giản là trình duyệt sẽ lấy trang web về như hái quả trên cây đâu. Trình duyêt kết nối đến server của Yahoo, gửi yêu cầu “Eh bro, cho tớ xem trang web của Yahoo với!” (tất nhiên là nó không nói như thế này, mà gửi những câu lệnh mà “loài” máy tính sử dụng thôi) và nếu server không bị cảm cúm và cái mà mình muốn xem không bị liệt vào danh mục “hàng cấm” thì nó sẽ gửi trang web về cho mình xem, điều đó cũng tương tự với khi download nhạc, hình, v.v… Nếu ta sử dụng PHP, ta có thể can thiệp vào quá trình server phân tích yêu cầu để quyết định trả về cái gì, không trả về cái gì và còn hơn thế nữa.

Và bạn có để ý rằng khi vào một forum, nếu bạn đăng nhập thì trang web sẽ khác với lúc chưa đăng nhập, đã thế nó còn biết tự động gửi mail cho bạn khi đến ngày sinh nhật, nó cũng biết được lúc này lúc kia đang có bao nhiêu người xem và biết được bạn là thành viên bình thường hay người quản trị để mà cung cấp cho bạn những quyền tương ứng với cấp bậc như sửa bài, xóa bài, sắp xếp v.v…

Để làm được như thế, bạn phải viết trang web dưới dạng những dòng mã lập trình (script) theo một ngôn ngữ lập trình nào đó. Ngoài ra trên server cũng phải cài bộ thông dịch của ngôn ngữ đó. Khi bạn gửi yêu cầu xem trang web lên server, chẳng hạn muốn xem trang http://www.yahoo.com/example.php?param=3 thì bộ thông dịch sẽ đọc script trong file example.php và thi hành những mã lập trình trong đó với tham số truyền vào là param=3 rồi trả về kết quả cho trình duyệt của mình. Khi bộ thông dịch làm việc thì nó có thể xem xét được bạn là ai, có phải là admin không để trả về nội dung trang web phù hợp, hay nó có thể tính được hôm nay là ngày mấy, trùng sinh nhật của ai để gửi email chúc mừng. Vậy đó.

Những ngôn ngữ dùng đề lập trình web như thế thì có nhiều: loại thương mại thì có ASP (của Microsoft, mới ra đời thế hệ sau của nó là ASP.NET), JSP (của Sun, hãng tạo ra Java), ColdFusion (của Macromedia), loại miễn phí, nguồn mở thì có PHP, Perl, Python (Python không chỉ để lập trình web mà còn lập trình ứng dụng desktop nữa)… Trong đó được ưa chuộng nhất là PHP với nhiều ưu điểm (nhanh, hỗ trợ nhiều loại server, database, cộng đồng phát triển đông đảo), hầu hết những website lớn: Google, Yahoo, Flickr, Digg, Wikipedia… đều dùng PHP. Tuy nhiên, ở Việt Nam thì ngược lại, PHP được doanh nghiệp sử dụng và được giảng dạy không nhiều (thậm chí khoa CNTT của trường KHTN TpHCM không hề dạy), trong khi ASP đang dần trôi vào quên lãng trên thế giới thì vẫn còn phổ biến tại Việt Nam.

Bây giờ xin nói về lịch sử PHP. Phần này rút từ cuốn “PHP Manual” chứ không phải mình tự viết à nha.

PHP là viết tắt hồi quy của PHP Hypertext Preprocessor. Cái kiểu viết tắt này có vẻ được ưa dùng trong thế giới phần mềm nguồn mở, chẳng hạn GNU Not Unix, KDE Desktop Environment, LAME a MP3 Encoder. PHP có tiền thân là PHP : Personal Home Page do Rasmus Lerdoft tạo ra năm 1995, khi ấy chỉ một tập sơ sài những mã script Perl để theo dõi những truy cập vào trang web cá nhân của ông. Sau đó nó được phát triển nhiều tính năng hơn, thi hành kiểu C và có tên là PHP/FI – Personal Home Page/Form Interpreter. Trước 1997, PHP/FI vẫn còn khiêm tốn với chỉ hàng ngàn người dùng và khoảng 50.000 tên miền cài đặt, chiếm 1% các tên miền trên Internet.

PHP3 là phiên bản đầu tiên của PHP gần với PHP ngày nay, được viết lại bởi Andi Gutmans và Zeev Suraski, khi họ đang tìm kiếm một công cụ để thực hiện một dự án trong Đại học của họ. Một trong những sức mạnh to lớn nhất của PHP là khả năng mở rộng mạnh mẽ của nó. Bên cạnh việc cung cấp cho người dùng cuối với một cơ sở hạ tầng cho nhiều hệ cơ sở dữ liệu, giao thức và API khác nhau thì khả năng mở rộng của PHP3 đã thu hút nhiều nhà phát triển tham gia và cung cấp những modul mở rộng cho nó. Đây là chìa khóa cho sự phát triển khủng khiếp của PHP3. Cũng từ đây, PHP bắt đầu hỗ trợ lập trình hướng đối tượng và được đặt tên như ngày nay.

Cuối 1998, PHP có hàng chục ngàn người và được cài đặt trên hàng trăm ngàn website, vào lúc cao điểm là 10% web server trên Internet.

Trước mùa đông 1998, sau khi PHP 3.0 được phát hành không lâu, Andi và Zeev bắt đầu viết lại phần lõi của PHP nhằm tăng cường sự vận hành những ứng dụng phức tạp và nâng cao tính modul của PHP. Hai người đã cho ra đời “Zend Engine” (giữa năm 1999). PHP4 dựa trên engine này và được bổ sung hàng loạt tính năng (hỗ trợ nhiều web server, HTTP session, output buffering, bảo mật hơn, và nhiều cấu trúc ngôn ngữ mới), đã chính thức phát hành vào tháng 5 – 2000.

PHP4 đã tăng số người dùng PHP đến hàng trăm ngàn và hàng triệu site đã cài đặt nó (20% tên miền trên Internet).

PHP5 ra đời vào tháng 6 – 2004 sau một thời gian dài phát triển và thử nghiệm với nhiều cải tiến và đổi mới, nhất là về hướng đối tượng. Tuy nhiên nhiều người vẫn chưa muốn rời PHP4 bởi vậy hơi khó khăn để tìm kiếm server hỗ trợ PHP5. Bản thân mình lại khi học là học ngay PHP5 nên cảm thấy gò bó khi phải lập trình theo PHP4. Nhưng giờ thì mình bắt đầu dễ chịu rồi vì mới đây đội ngũ phát triển PHP đã thông báo sẽ không còn hỗ trợ PHP4 vào cuối năm 2007 này, điều đó buộc các server sẽ phải mau chuyển qua PHP5. Tốt lắm.

Cộng đồng PHP chẳng bao giờ chịu ngồi yên vì vừa phát hành PHP5 là họ lại nghĩ đến PHP6 và hiện tại đã có vài thông tin về những cái mới trong PHP6 rồi đấy.

PHP ra đời từ Perl, và học tập nhiều ưu điểm từ C, C++, Java. Tuy nhiên xin đừng nói PHP “từ C mà ra” như thói thường những người đề cao C vẫn nói. C, C++, Java là những ngôn ngữ mà nó cần trình biên dịch (compiler) để dịch ra thành những ứng dụng chạy độc lập, còn PHP là loại ngôn ngữ “thông dịch”, cần những trình thông dịch (interpreter) thực thi theo script (kịch bản) mà người lập trình viết nên. Nói vậy nhưng không có nghĩa là PHP không có khả năng tạo ra những chương trình chạy độc lập như C làm. Thật thế, đội ngũ PHP đang phát triển một dự án tên là PHP-GTK nhằm cho phép dùng PHP viết nên ứng dụng chạy độc lập (desktop application) bằng cách kết hợp PHP với bộ công cụ giao diện đồ họa GTK (GNU Toolkit). Chỉ có điều, những trình biên dịch cho nó chưa nhiều và mạnh.

(Còn nữa)

 

 
Follow

Get every new post delivered to your Inbox.