Cấu trúc thư mục và các lệnh cơ bản trên Linux

July 23, 2008
  1. Cấu trức thư mục cơ bản

Hệ thống thư mục trên Linux hơi khác một chút so với Window và hoàn toàn mang đặc trưng của hệ Unix. Tất cả các ổ đĩa, ổ CD/DVD, … đều được mount với hệ thống và như một thư mục. Dưới đây là cấu trúc cơ bản:

Reference: http://linuxcommand.org/lts0040.php#boot

Directory Description
/ The root directory where the file system begins. In most cases the root directory only contains subdirectories.
/boot This is where the Linux kernel and boot loader files are kept. The kernel is a file called vmlinuz.
/etc The /etc directory contains the configuration files for the system. All of the files in /etc should be text files. Points of interest:
/etc/passwd
The passwd file contains the essential information for each user. It is here that users are defined.
/etc/fstab
The fstab file contains a table of devices that get mounted when your system boots. This file defines your disk drives.
/etc/hosts
This file lists the network host names and IP addresses that are intrinsically known to the system.
/etc/init.d
This directory contains the scripts that start various system services typically at boot time.
/bin, /usr/bin These two directories contain most of the programs for the system. The /bin directory has the essential programs that the system requires to operate, while /usr/bin contains applications for the system’s users.
/sbin, /usr/sbin The sbin directories contain programs for system administration, mostly for use by the superuser.
/usr The /usr directory contains a variety of things that support user applications. Some highlights:
/usr/share/X11
Support files for the X Windows system
/usr/share/dict
Dictionaries for the spelling checker. Bet you didn’t know that Linux had a spelling checker. See look and ispell.
/usr/share/doc
Various documentation files in a variety of formats.
/usr/share/man
The man pages are kept here.
/usr/src
Source code files. If you installed the kernel source code package, you will find the entire Linux kernel source code here.
/usr/local /usr/local and its subdirectories are used for the installation of software and other files for use on the local machine. What this really means is that software that is not part of the official distribution (which usually goes in /usr/bin) goes here.When you find interesting programs to install on your system, they should be installed in one of the /usr/local directories. Most often, the directory of choice is /usr/local/bin.
/var The /var directory contains files that change as the system is running. This includes:
/var/log
Directory that contains log files. These are updated as the system runs. You should view the files in this directory from time to time, to monitor the health of your system.
/var/spool
This directory is used to hold files that are queued for some process, such as mail messages and print jobs. When a user’s mail first arrives on the local system (assuming you have local mail), the messages are first stored in /var/spool/mail
/lib The shared libraries (similar to DLLs in that other operating system) are kept here.
/home /home is where users keep their personal work. In general, this is the only place users are allowed to write files. This keeps things nice and clean :-)
/root This is the superuser’s home directory.
/tmp /tmp is a directory in which programs can write their temporary files.
/dev The /dev directory is a special directory, since it does not really contain files in the usual sense. Rather, it contains devices that are available to the system. In Linux (like Unix), devices are treated like files. You can read and write devices as though they were files. For example /dev/fd0 is the first floppy disk drive, /dev/sda (/dev/hda on older systems) is the first IDE hard drive. All the devices that the kernel understands are represented here.
/proc The /proc directory is also special. This directory does not contain files. In fact, this directory does not really exist at all. It is entirely virtual. The /proc directory contains little peep holes into the kernel itself. There are a group of numbered entries in this directory that correspond to all the processes running on the system. In addition, there are a number of named entries that permit access to the current configuration of the system. Many of these entries can be viewed. Try viewing /proc/cpuinfo. This entry will tell you what the kernel thinks of your CPU.
/media,/mnt Finally, we come to /media, a normal directory which is used in a special way. The /media directory is used for mount points. As we learned in the second lesson, the different physical storage devices (like hard disk drives) are attached to the file system tree in various places. This process of attaching a device to the tree is called mounting. For a device to be available, it must first be mounted.When your system boots, it reads a list of mounting instructions in the file /etc/fstab, which describes which device is mounted at which mount point in the directory tree. This takes care of the hard drives, but you may also have devices that are considered temporary, such as CD-ROMs and floppy disks. Since these are removable, they do not stay mounted all the time. The /media directory is used by the automatic device mounting mechanisms found in modern desktop oriented Linux distributions. On systems that require manual mounting of removable devices, the /mnt directory provides a convenient place for mounting these temporary devices. You will often see the directories /mnt/floppy and /mnt/cdrom. To see what devices and mount points are used, type mount.

2. Các lệnh cơ bản

- pwd: Hiển thị thư mục đang đứng

[me@linuxbox me]$ pwd
/home/me

- cd: Dịch chuyển đến thư mục cần thiết

cd / : Dịch chuyển đến thư mục gốc
“cd” hoặc “cd ~”: về thư mục home
“cd ..” về thư mục cha
“cd -” về thư mục trước đó, back

- ls: liệt kê nội dung thư mục

ls /bin: liệt kê nội dung thư mục bin.

ls -l: liệt kê file theo dạng long format

- less filename: xem nội dung file

- vim dùng để soạn thảo file

Ngoài ra có thể dùng nano

3. Các lệnh hệ thống

- sudo: khi cần thực hiện thao tác với quyền root, thêm câu lệnh này phía trước câu lệnh thao tác.

sudo nautilus: khi thao tác với quyền root và không muốn phải gọi sudo nhiều lần. Sau khi thực hiện lệnh này, nó sẽ cho ta một console mới mà ta có quyền root trong đó.

- shutdown: Dùng để khơi động lại hoặc shutdown hệ thống

shutdown -r now: khởi động hệ thống ngay

shutdown -p now: shutdown hệ thống.

JUnit cho J2ME

July 7, 2008

I. Tổng quan về Unit test.

II. Sử dụng Unit test trong Java và các tools kết hợp

1. Giới thiệu

2. Ví dụ về cách sử dụng JUnit test.

3. Mocktest – Test Driven Development

4. Các tools kết hợp.

a. Như ta đã biết trong phần Mocktest, đôi khi chúng ta cần các tools hay các bộ thư viện để mô phỏng hoạt động của các tác nhân ngoài.

Ví dụ: Khi thực hiện unit test cho một test case mà có phần thao tác với database, chúng ta không thể lúc nào cũng dựng database đó lên, chúng ta cũng không nhất thiết phải viết các hàm để truy cập thao tác với database. Vì thế, chúng ta sẽ cần các tools, các framework giúp chúng ta thực hiện việc này.

Các tools gồm có:
DBUnit
MockRunner
EasyMock
JMock
Selenium

b. Các tool kiểm tra khối lượng phần trăm testcase đã bao gồm trong project

Cobertura
Emma
EclEmma

III. Giới thiệu về Unit test trong J2ME

Để viết unit test cho Java, chúng ta khá quen với khái niệm và cách làm việc của JUnit. Tương tự như vậy, đối với J2ME chúng ta cũng có một số unit testing framework phục vụ cho vấn đề này: JMUnit, JMEUnit và Sony Ericsson Mobile JUnit test 1.0.

So sánh và đánh giá các Unit test cho J2ME

Giới thiệu cơ bản cách sử dụng của JMUnit và JMeUnit với Netbean

Nhược điểm của Unit test cho J2ME là quá ít MockObject tool cho nó. Tuy nhiên, hiện tại cũng có một số OpenSource cho MockObject như: Hammock, … mặc dù nó chưa đủ mạnh như trên Unit Test

IV. Tham khảo

http://www.devx.com/wireless/Article/32540

http://www.bobmccune.com/2006/12/09/unit-testing-best-practices/

http://javasoapbox.blogspot.com/2008/02/unit-testing-j2me-applications.html

Các chú ý khi chọn mua điện thoại

July 1, 2008

Khi mua điện thoại, đặc biệt là điện thoại cũ, nên chú ý:

- Kiểm tra bề ngoài điện thoại, có bị xước, bị móp do va đập,

- Kiểm tra xuất xứ điện thoại, bấm *#06# đễ xem số imei và so sánh với số imei sao máy, chú ý đên xuất xứ dựa vào imei.

- Kiểm tra chất lượng gọi nghe điện thoại, gọi thử để xem tiếng điện thoại có trong không, có bị ồn không, có thể vặn volume to hết cỡ đễ xem chất lượng thế nào.

- Kiểm cha chất lượng âm thanh, chơi một vài bài hát và vặn thử loa to hết cỡ.

- Kiểm cha chất lượng mic, ghi âm lại giọng nói.

- Kiểm cha chất lượng chụp ảnh, chụp thử trong điều kiện tối, chụp vật chuyển động, xem ảnh có bị nhiễu?

- Nếu điện thoại có wifi, nên vào thử các trang web để đọc, tải dữ liệu xem tốc độ wifi.

- Ngoài ra, nên kiểm tra qua các tính năng kèm theo máy, bluetooth, gprs, ứng dụng, …

- Nếu là máy cũ, tốt nhất nên chọn máy còn thời hạn bảo hành ít nhất là 3 tháng.

Các vấn đề với Linux

March 30, 2008

1. Cài các module cho Linux từ đĩa DVD thay vì từ Internet

Một vấn đề hay gặp khi cài là chúng ta phải connect vào Internet để cài các phần mềm trong kho dùng chung của cộng đồng Linux. Đối với những nơi mà giá thành và tốc độ Internet là một vấn đề nan giải, thì cách đơn giản nhất là có một bộ DVD cho Linux resipontory. Sau đấy, chúng ta sẽ setup để câu lệnh sudo apt-get sẽ cài từ đĩa DVD đó. [1]

Các bước thực hiện việc cài từ DVD:

- Cho đía DVD vào và từ terminal gõ: sudo apt-cdrom add

Từ Sypnatic: chọn “Settings > Repositories”, chọn “Add Cdrom” và cho DVDs vào ổ DVD-ROM, đợi đến khi CD-ROM kết thúc việc scan.

- Cuối cùng ta có thể cài bình thường với câu lệnh: sudo apt-get install app_name

[1] Một số đỉa chỉ có thể download bộ DVD (Chú ý: Các link này có thể không hoạt động trong tương lai)

3 DVD cho uBuntu

4 DVDs cho uBuntu 7.04

Read more »

Linh tinh về Lamp

March 30, 2008

1. Giới thiệu và cài đặt Lamp

Lamp là gi nhỉ? Đơn giản thôi

LAMP = LINUX + APACHE + MYSQL + PHPA

2. Tham khảo phần cài đặt

Bài trên trang Quản trị mạng

Bài từ trang nước ngoài

Bài từ trang nước ngoài 2

Một số phần mềm dùng cho uBuntu

March 30, 2008

Download Manager Tools

Wget:

Default download manager for UBuntu 6

Aria:

sudo apt-get install aria

Curl:

sudo apt-get install curl

Downloader for X

sudo apt-get install d4x

Gwget

sudo apt-get install gwget

So sánh các cache framework cho Java

March 27, 2008

Một trong những đặc điểm quan trọng khi lập trình là chúng ta cần chú ý là làm sao thực hiện việc cache dữ liệu cho hiệu quả. Chọn một phương pháp caching tốt, phù hợp sẽ cải thiện đáng kể hiệu năng, tính ổn định của hệ thống và thời gian lập trình. Cân nhắc lựa chọn caching phù hợp phụ thục vào rất nhiều yếu tố: bao nhiêu mức cache (tầng Presentation, domain object ở tầng truy xuất database trong các ORM, ..), khả năng cache (cache trong vùng nhớ, cache trên local disk hoặc hở trợ mức distributed…), tính dễ sử dụng, tài liệu tốt, hiệu năng, độ phức tạp, …. Trong các Framework có sẵn, chúng thường tích hợp sẵn một bộ Cache mặc định nào đó. Ví dụ, Spring chọn EHCache làm default. Nhưng nó cũng support chúng ta khả năng khai báo để cài đặt một hệ thống Caching khác hệ thống default. Dưới đây là bảng so sánh đánh giá được lấy từ trích dẫn từ trang developer.com [1]

Bảng so sánh đánh giá

Để hiểu sâu về từng hệ thống cache, các bạn có thể tìm hiểu qua tài liệu cụ thể đi kèm hệ thống đó. Hoặc cũng có thể tìm hiểu cơ bản một số hệ chính qua bài báo [2]

Biên dịch và sưu tầm: Giang Phạm

References

[1] http://www.developer.com/img/2007/09/Table.htm

[2] http://www.developer.com/open/article.php/10930_3700661_1

Cách dùng Profiler để quản lý và hiệu chỉnh bộ nhớ trong Java

March 26, 2008

1. Tổng quát

    Trong quá trình viết code của giai đoạn phát triển phần mềm, chúng ta thường phải đối mặt với bài toán quản lý tài nguyên bộ nhớ của hệ thống và đảm bảo hiệu năng của hệ thống. Muốn vậy, chúng ta phải giải quyết được các vấn đề như: Memory leak , mối quan hệ và sự tồn tại của các object trong vùng nhớ heap, hiệu năng của CPU và kiểm soát được trạng thái các tiến trình (Thread)

    Để tìm hiểu kĩ hơn về cơ chế giải phóng bộ nhớ trong Java, cách sử dụng bợ nhớ và tiến trình, các bạn có thể tham khảo thêm trong các sách về Java.

    Hiện nay, chúng ta thấy có rất nhiều tool phục vụ cho công việc này, có thể liệt kê ở đây các tool như: Netbean Profiler, Yourkit Java Profiler, JProfiler, …

    Tuy nhiên, chúng ta sẽ chọn Netbean Profiler để tìm hiểu vì rất đơn giản, nó là một tool phổ biến nhất, tiện lợi và hoàn toàn free đi kèm với bộ Netbean IDE

    2. Giới thiệu các tính năng chính của Netbean Profiler

    Trong Netbean Profiler 6.0, chúng có những tính năng chinh sau đây.

    a. Monitoring an Application:

    Chức năng này sẽ giúp ta có được những thông tin hữu ích về ứng dụng đang chạy do máy ảo cung cấp.
    Các bước thực hiện:

    • Đặt ứng dụng bạn thành ứng dụng chính. (Set to main project)
    • Chọn Profile > Profile Main Project từ main menu
    • Chọn Monitor trong Select Profiling Task dialog box
    • Chọn Run để chạy

    Sau khi chạy, chúng ta quan sát cứa sổ bên trái sẽ thấy các mục chính sau:

    • Control the profiling task
    • See the status of the current profiling task
    • Display profiling results
    • Manage profiling results snapshots
    • See basic telemetry statistics

    Với Telemetry overview, chúng ta có thể quan sát được tổng quát dữ liệu điều khiển theo thời gian thực

    b. Analyzing CPU Performance

    Chức năng này cho phép chúng ta đo được hiệu năng (thời gian thực thi) của toàn bộ quá trình chạy hay một phần của quá trình, thậm chí có thể từng đoạn code.
    Toàn bộ ứng dụng: Chế độ này cho phép theo dõi thời gian thực thi của toàn bộ quá trình chạy, theo dõi thời gian thực thi qua mỗi từng phương thức.
    Một phần ứng dụng: Theo dõi một phần code của ứng dụng. Trước hết, chúng ta phải chọn root methods. Tại đó, profiling data sẽ được tập hợp khi một tiến trình của ứng dụng vào và ra khỏi root method đó. Profiling data sẽ không được ghi lại cho đến khi có một tiến trình chạy root method.
    Các bước thực hiện:

    • Chọn Profile \ Profile Main Project từ main menu
    • Chọn CPU trong Select Profiling Task dialog box
    • Chọn Part of Application.
    • Ấn vào define để chọn root method
    • Ấn vào Add để mở Select Root Methods dialog box
    • Chọn OK
    • Chọn Profile only project classes for the Filter value: Chỉ xét đến các class trong project này
    • Chọn Run: Sau khi chạy, bạn click vào phần Profiling results\live results để xem thông tin.
      Thông tin gồm 2 phần, Selftime nghĩa là thời gian cho root method, Invocation có nghĩa là số lần kích hoạt

    Kiểm soát được tài nguyên bộ nhớ , khi nào thì đối tượng được tạo ra và khi nào thì bị hủy. Mối quan hệ và sự tồn tại của các đối tượng trên vùng heap.

    c. Analyzing Memory Usage

    Chức năng này cho phép chúng ta theo dõi được các thông tin về objects như số lượng còn tồn tại, bao nhiêu cái được cấp phát, nơi các đối tượng được cấp phát.

    Có 2 lựa chọn cho chúng ta ở chức năng này

    • Record object creation only: Chỉ lưu thông tin cơ bản về các object được tạo ra
    • Record both object creation and garbage collection: Thông tin về các object được tạo ra, số lượng còn tồn tại, kích thước, thời gian tồn tại trung bình

    Các bước thực hiện:

    • Chọn Profile \ Profile Main Project từ main menu
    • Chọn Memory trong Select Profiling Task dialog box
    • Chọn Record both object creation and garbage collection
    • Chọn tỉ lệ lấy mẫu: Leave the Track every N object allocations at the default value of 10. Có nghĩa là mỗi class thực thi, cách 10 phần tử thì lấy mẫu một phần tử.
    • Chọn Record stack traces for allocation.
    • Run

    d. Taking Snapshots

    Nó dùng để lưu lại hình ảnh của profiling data tại thời điểm chụp
    Tuy nhiên, nó khác với living results ở những điểm sau

  1. Snapshots có thể xem khi mà không có profiling nào được chạy
  2. Chứa đựng chi tiết hơn về profiling data
  3. Có thể dễ dàng so sánh
  4. e. Kết luận

    Qua phần trên, chúng ta đã tìm hiểu sơ qua và có cái nhìn cơ bản về cách sử dụng Profile trong Netbean. Tuy nhiên, để sử dụng thành thạo chúng ta cần phải có nhiều kinh nghiệm thông qua các project hay các ví dụ cụ thể.

    Phần dưới đây sẽ trình bày các ví dụ mẫu được tham chiếu từ [3] nhằm giúp chúng ta sử dụng công cụ này thành thạo hơn.
    Ngoài ra, chúng ta có thể tham khảo [2] để nâng cao kĩ năng.

    3. Ví dụ

    Do thời gian có hạn, tôi chưa có kịp thời gian biên dịch nên các bạn có thể vào [3] để tham khảo. Mong các bạn thông cảm :(

    Nếu có thắc mắc về bài viết cũng như các ví dụ, mong nhận được những câu hỏi phản hồi.

    Read more »

    Cách chọn mua TV LCD high-definition

    March 26, 2008

    Công nghệ LCD đã có mặt hàng thập kỷ nhưng chỉ thời gian gần đây công nghệ này mới xuất hiện tại các gia đình dưới hình thức tivi màn hình phẳng.

    Mặc dù LCD và plasma vẫn đang cạnh tranh gay gắt nhưng trên thị trường TV LCD vẫn phổ biến nhất với loại màn hình 26 inch và 32 inch mà công nghệ plasma khó lòng cạnh tranh được.

    Cuộc cạnh tranh sẽ còn khốc liệt nhưng điều đáng mừng là cũng nhờ đó mà giá của các loại TV sẽ giảm xuống rõ rệt.

    1. Màn hình LCD

    Mặc dù hầu hết các loại TV màn hình phẳng lớn đều sử dụng công nghệ plasma nhưng LCD cũng không ngừng phá vỡ những giới hạn này. Hiện nay trên thị trường đã có một số TV LCD 52 inch.

    lcd.jpg

    Là công nghệ xuất hiện sớm hơn nên TV LCD thường có giá thấp hơn so với TV plasma cùng kích cỡ và công nghệ này cũng cho phép hỗ trợ 1080p hoặc Full HD, hình ảnh.

    Độ sáng và độ sâu màu có vẻ tốt hơn plasma nhưng LCD lại có độ tương phản thấp hơn và gặp khó khăn khi xử lý hình ảnh động.

    2. 1080p hay không cần 1080p?

    Một TV có tên ‘HD Ready’ có khả năng nhận và hiển thị tín hiệu rõ nét từ DVD hoặc máy chạy Blu-ray, đầu thu kỹ thuật số.

    Độ phân giải ít nhất phải là 720p- có nghĩa là 720 dòng thẳng một độ phân giải hoặc 1,280 dòng ngang thông qua một phương pháp có thên là quét lũy tiến.

    Độ phân giải 720p có thể xử lý loại 1080 dòng thẳng đứng và 1920 dòng ngang bằng phương pháp có tên là 1080i nhưng với chất lượng thấp hơn. Trên thực tế cả hai phương pháp đều cho chất lượng hình ảnh như nhau.

    1080p giống 1080i ở chỗ đều phát ra cùng một tín hiệu 1920×1080 nhưng thông qua cách quét lũy tiến. Điều này đánh dấu bước tiến quan trọng về chất lượng, được đặt tên là ‘Full HD’. Tuy nhiên bạn sẽ không thể phát hiện ra sự khác biệt và hiện tại tất cả các chương trình HD đều được truyền bằng 720p.

    3. Thử TV

    Trong khi cuộc cạnh tranh giữa các nhà sản xuất đang ngày càng gay gắt thì mỗi công ty đều có công nghệ xử lý hình ảnh riêng, đưa ra những cái tên thật kêu đôi khi trái ngược hẳn so với chất lượng TV. Vì vậy hãng thử sản phẩm trước khi mua đơn giản vì công nghệ tưởng chừng thông minh nhưng chưa chắc chất lượng sản phẩm đã tốt.

    Công nghệ xử lý hình ảnh không ngừng phát triển. Đôi khi những sản phẩm khá tốt lại có giá cả hấp dẫn đơn giản vì nó sử dụng công nghệ xử lý hình ảnh cũ hơn của công ty.

    4. Kết nối chính xác

    Khi mua TV bạn sẽ được nhận thêm một hộp Sky hoặc cái gì đó tương tự, một số loại máy chạy đĩa và amply AV hoặc loa. Chất lượng hiển thị tín hiệu TV tốt ngang với tín hiệu truyền hình cáp do đó kết nối là vấn đề cần xem xét trước khi mua.
    HDMI là kết nối lý tưởng cho tín hiệu HD và hầu hết các loại TV cấp cao đều có 3 kết nối HDMI. Thành phần video, RGB Scart hoặc S-video cũng là lựa chọn được khuyên dùng, Scart và video ghép cũng có chức năng kết nối các thiết bị cũ với màn hình.

    5. Khuyến nghị

    Số lượng TV LCD nhiều gấp 3 lần số lượng TV plasma trên thị trường và cuộc cạnh tranh cực kì khốc liệt đặc biệt là ở thị trường 26 inch và 32 inch.

    Cứ một tháng là nhà sản xuất lại cập nhật sản phẩm để cố gắng chiếm thị phần lớn hơn trên thị trường. Điều đó đồng nghĩa với việc 12 tháng là giá sản phẩm chỉ còn một nửa so với giá gốc và thậm chí các loại TV mới với chất lượng cao cũng có giá thành chấp nhận được.

    6. Danh sách các mục cần kiểm tra

    • Kích thước hiển thị
    • Độ phân giải tự nhiên
    • Đầu ra 1080p
    • Độ tương phản
    • Cổng HDMI
    • Phím chuyển kênh Freeview

    7. Những điểm cần lưu ý khác

    Tần số

    Tần số mới của kết nối 1080p là 24Hz. Các phim được quay với tốc độ 24 khung mỗi giây và đầu đĩa Blu-ray hiển thị hình ảnh với tần số 24Hz. TV có tần số 24Hz giúp hiển thị hình ảnh chất lượng tốt nhất.

    Điểm chết

    Màn hình LCD gồm rất nhiều điểm nhỏ hoạt động và cả không hoạt động. Những điểm không hoạt động được gọi là điểm chết. Nếu màn hình có hơn hai điểm chết trên một triệu điểm thì đó

    (Nguồn: Handheld VN)