Wednesday, July 25, 2007

Wine là gì ? Cùng tìm hiểu về Wine trong Linux và Ubuntu

1 .Khó khăn từ Window và Linux
Những pần mềm khác nhau được thiết kế cho những hệ điều hành( OS) khác nhau, và hầu như ko chạy trên những OS khác mà chúng đã được thiết kế. Dí dụ, các software xài cho Win ko chạy trên nền Linux được, bởi vì nó chứa những lệnh mà Linux ko hiểu hay ko có thư viện hỗ trợ cho tới khi nó được biên dịch trong môi trường Window. Những software của Linux cũng như zậy, Window OS ko hiểu hết những tất cả những lệnh của nó.
Trường hợp này đã bộc lộ vấn đề cơ bản cho những ai muốn chạy chương trình trong cả 2 OS Linux và Window. Một giải pháp phổ biến cho vấn đề này là cùng cài cả 2 OS trong máy, được gọi như là "dual booting"( tam dịch là "khởi động kép"). Khi cần chạy 1 software của Window thì chuyển qua Win OS, nếu cần chạy 1 software của Linux thì bạn phải restart lại Linux OS. Lựa chọn này gây ra khó khăn lớn cho người dùng cuối bởi việc tái khởi động máy nhiều lần, những chương trình viết cho cả 2 OS ko thể chạy đồng thời. Hơn nữa những chương trình chạy trên Window thường rất mắc( cái này Vietnamese chắc ko thành vấn đề j !), yêu cầu phân vùng ổ cứng khác nhau, nên ko thể đọc hầu hết các kiểu định dang file hệ thống, làm cho việc share dữ liệu trở nên khó khăn jữa những OS.
2. Wine là gì ?
Wine làm cho những chương trình của Window có thể chạy song song với bất kì OS giống Unix và Linux nói riêng. Thực ra, Wine là một sự thực thi của thư viện Windows Application Programing Interface (API), hoạt động như 1 cầu nối juã7 Windos và Linux. Bạn hãy nghĩ Wine như 1 lớp tương thích, khi 1 software Window yêu cầu thực thi 1 hàm mà Linux ko hiểu một cách thông thường, Wine sẽ dịch lệnh của chương trình vào 1 trình hỗ trợ của nó bởi hệ thống. Cho ví dụ, nếu chương trình yêu cầu hệ thống tạo ra 1 pushbutton hay 1 trường text-edit, Wine sẽ chuyển lệnh đó thành những lệnh tương đương của Linux trong dạng 1 lệnh đến trình quản lí cửa sổ dùng giao thức chuẩn X11.
Nếu bạn fải truy xuất mã nguồn của những chương trình Window, Wine có thể cũng được dùng để biên dịch ngược( recompile) chương trình vào 1 dạng mà Linux có thể hiểu một cách dễ dàng hơn. Wine vẫn cần bắt đầu chương trình trong dạng biên dich ngược của nó, tuy nhiên có vài ưu điểm để biên dịch chương trình Window một cách tự nhiên trong Linux.
3.Những đặc tính của Wine :( bữa nào típ ngen)

Bài này tui được dịch từ winehq.org , các bạn có thể xem fiên bản English tại đây

What is Wine ?

1.2.1. Windows and Linux

Different software programs are designed for different operating systems, and most won't work on systems that they weren't designed for. Windows programs, for example, won't run in Linux because they contain instructions that the system can't understand until they're translated by the Windows environment. Linux programs, likewise, won't run under the Windows operating system because Windows is unable to interpret all of their instructions.

This situation presents a fundamental problem for anyone who wants to run software for both Windows and Linux. A common solution to this problem is to install both operating systems on the same computer, known as "dual booting." When a Windows program is needed, the user boots the machine into Windows to run it; when a Linux program is then needed, the user then reboots the machine into Linux. This option presents great difficulty: not only must the user endure the frustration of frequent rebooting, but programs for both platforms can't be run simultaneously. Having Windows on a system also creates an added burden: the software is expensive, requires a separate disk partition, and is unable to read most filesystem formats, making the sharing of data between operating systems difficult.

1.2.2. What is Wine, and how can it help me?

Wine makes it possible to run Windows programs alongside any Unix-like operating system, particularly Linux. At its heart, Wine is an implementation of the Windows Application Programing Interface (API) library, acting as a bridge between the Windows program and Linux. Think of Wine as a compatibility layer, when a Windows program tries to perform a function that Linux doesn't normally understand, Wine will translate that program's instruction into one supported by the system. For example, if a program asks the system to create a Windows pushbutton or text-edit field, Wine will convert that instruction into its Linux equivalent in the form of a command to the window manager using the standard X11 protocol.

If you have access to the Windows program's source code, Wine can also be used to recompile a program into a format that Linux can understand more easily. Wine is still needed to launch the program in its recompiled form, however there are many advantages to compiling a Windows program natively within Linux. For more information, see the Winelib User Guide.

1.2.3. Wine features

Throughout the course of its development, Wine has continually grown in the features it carries and the programs it can run. A partial list of these features follows:

  • Support for running Win32 (Win 95/98, NT/2000/XP), Win16 (Win 3.1) and DOS programs

  • Optional use of external vendor DLL files (such as those included with Windows)

  • X11-based graphics display, allowing remote display to any X terminal, as well as a text mode console

  • Desktop-in-a-box or mixable windows

  • DirectX support for games

  • Good support for various sound drivers including OSS and ALSA

  • Support for alternative input devices

  • Printing: PostScript interface driver (psdrv) to standard Unix PostScript print services

  • Modem, serial device support

  • Winsock TCP/IP networking support

  • ASPI interface (SCSI) support for scanners, CD writers, and other devices

  • Advanced unicode and foreign language support

  • Full-featured Wine debugger and configurable trace logging messages for easier troubleshooting

Mình đã dịch bài này ra tiếng Việt tại đây

Convert .flv (Google Videos) to .mpg using ffmpeg

FFmpeg is a complete solution to record, convert and stream audio and video. It includes libavcodec, the leading audio/video codec library. FFmpeg is developed under Linux, but it can compiled under most operating systems, including Windows. In ubuntu This package contains the ffplay multimedia player, the ffserver streaming server and the ffmpeg audio and video encoder. They support most existing file formats (AVI, MPEG, OGG, Matroska, ASF, …) and encoding formats (MPEG, DivX, MPEG4, AC3, DV, …).

ffmpeg Features

  • ffmpeg is a command line tool to convert one video file format to another. It also supports grabbing and encoding in real time from a TV card.
  • ffserver is an HTTP (RTSP is being developped) multimedia streaming server for live broadcasts. Time shifting of live broadcast is also supported.
  • ffplay is a simple media player based on SDL and on the FFmpeg libraries.
  • libavcodec is a library containing all the FFmpeg audio/video encoders and decoders. Most codecs were developped from scratch to ensure best performances and high code reusability.
  • libavformat is a library containing parsers and generators for all common audio/video formats.

Install ffmpeg Ubuntu

sudo apt-get install ffmpeg

convert .flv to .mpg using ffmpeg

First you need to download your .flv file to a folder and you need to Open a terminal window and go in to the .flv file folder and type the following command

ffmpeg -i jokes.flv -ab 56 -ar 22050 -b 500 -s 320×240 jokes.mpg

jokes.flv is the file you want to convert, so the name must be the same as the source file.You can name jokes.mpg whatever you want as long as it has the .mpg extension.

-b bitrate: set the video bitrate in kbit/s (default = 200 kb/s)

-ab bitrate: set the audio bitrate in kbit/s (default = 64)

-ar sample rate: set the audio samplerate in Hz (default = 44100 Hz)

-s size: set frame size. The format is WxH (default 160×128 )

.Mình đã dịch bài này sang tiếng Việt các bạn có thể xem tại đây .

Monday, July 23, 2007

FFmpeg

FFmpeg là 1 giải pháp khá tốt để ghi âm, chuyển đổi kiểu file, hay nghe stream audio-video. FFmpeg bao gồm cả libavcode, đang là 1 thư viện mã hàng đầu về audio/video. FFmpeg được phát triển trên Linux, nhưng nó có thể được biên dịch ở tất cả các hệ điều hành, kể cả Win. Trong Ubuntu, gói này chứa các thành phần sau: ffplay multimedia player, ffserver streaming server, ffmpeg audio và video encoder. Chúng hỗ trợ hầu hết các kiểu định dạng file (AVI, MPEG, OGG, Matroska, ASF, …) và các kiểu định dạng mã (MPEG, DivX, MPEG4, AC3, DV, …).
Những đặc tính của FFmpeg :
Đây là công cụ dòng lệnh để chuyển đổi định dạng video sang các kiểu khác. Nó cũng hỗ trợ cả việc ghi lại và mã hoá theo thời gian thực từ card TV.

  • ffserver là HTTP (RTSP đang được phát triển) multimedia streaming server cho truyền thông trực tiếp. Sự thay đổi thời gian của truyền thông trực tiếp cũng được hỗ trợ.
  • ffplay là một trình nghe nhạc đơn giản dựa trên SDL và trên những thư viện FFmpeg.
  • libavcodec là một thư viện chứa tất cả những phương pháp mã hoá và giải mã FFmpeg audio/video.Hầu hết các mã được pát triển từ đầu để chắc chắn chạy tốt nhất và việc tái sử dụng mã cao.
  • libavformat là một thư viện chứa những kiểu phân tích và khai sinh cho tất cả những định dạng audio/video phổ biến.
Cài ffmpeg Ubuntu :
sudo apt-get install ffmpeg

Chuyển .flv sang .mpg dùng ffmpeg

Trước tiên, bạn cần down file .flv vào thư mục. Mở Teminal lên và chuyển vào thư mục chứa file .flv hồi nãy, rồi gõ lệnh này:

ffmpeg -i tên_file_gốc.flv -ab 56 -ar 22050 -b 500 -s 320×240 tên_file_kết_quả.mpg

-b bitrate: thiết lập độ nén trên kbit/s (mặc định = 200 kb/s)

-ab bitrate: thiết lập độ nén audio trên kbit/s (mặc định = 64)

-ar sample rate: thiết lập tỉ lệ audio mẫu trên Hz (mặc đinh = 44100 Hz)

-s size: thiết lập kích thước khung. Định dạng là WxH(Rộngx Cao) (mặc định 160×128 )

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

Lịch sử Unix, Linux và phần mềm mã nguồn mở-miễn phí

1. Unix

Giữa năm 1969 - 1970, Kenneth Thompson, Dennis Ritchie và những người khác của phòng thí nghiệm AT&T Bell Labs bắt đầu phát triển một hệ điều hành nhỏ dựa trên PDP-7. Hệ điều hành này sớm mang tên Unix, một sự chơi chữ từ một dự án hệ điều hành có từ trước đó mang tên MULTICS. Vào khoảng 1972 - 1973, hệ thống được viết lại bằng ngôn ngữ C và thông qua quyết định này, Unix đã trở thành hệ điều hành được sử dụng rộng rãi nhất có thể chuyển đổi được và không cần phần cứng ban đầu cho nó. Các cải tiến khác cũng được thêm vào Unix trong một phần của sự thoả thuận giữa AT&T Bell Labs và cộng đồng các trường đại học và học viện. Vào năm 1979, phiên bản thứ 7 của Unix được phát hành, đó chính là hệ điều hành gốc cho tất cả các hệ thống Unix có hiện nay.

Sau thời điểm đó, lịch sử Unix bắt đầu trở nên hơi phức tạp. Cộng đồng các trường đại học và học viện, đứng đầu là Berkeley, phát triển một nhánh khác gọi là Berkeley Software Distribution (BSD), trong khi AT&T tiếp tục phát triển Unix dưới tên gọi là “Hệ thống III” và sau đó là “Hệ thống V”. Vào những năm cuối của thập kỷ 1980 cho đến các năm đầu thập kỷ 1990, một “cuộc chiến tranh” giữa hai hệ thống chính này đã diễn ra hết sức căng thẳng. Sau nhiều năm, mỗi hệ thống đi theo những đặc điểm khác nhau. Trong thị trường thương mại, “Hệ thống V” đã giành thắng lợi (có hầu hết các giao tiếp theo một chuẩn thông dụng) và nhiều nhà cung cấp phần cứng đã chuyển sang “Hệ thống V” của AT&T. Tuy nhiên, “Hệ thống V” cuối cùng đã kết hợp các cải tiến BSD, và kết quả là hệ thống đã trở thành sự pha trộn của 2 nhánh Unix. Nhánh BSD không chết, thay vào đó, nó đã được sử dụng rộng rãi trong mục đích nghiên cứu, cho các phần cứng PC, và cho các server đơn mục đích (vd: nhiều website sử dụng một nguồn BSD).

Kết quả là có nhiều phiên bản Unix khác nhau, nhưng tất cả đều dựa trên phiên bản thứ bảy ban đầu. Hầu hết các phiên bản Unix đều thuộc quyền sở hữu và được bảo vệ bởi từng nhà cung cấp phần cứng tương ứng, ví dụ Sun Solaris là một phiên bản của “Hệ thống V”. Ba phiên bản của BSD của nhánh Unix cuối cùng đã trở thành mã nguồn mở: FreeBSD (tập trung vào sự cài đặt dễ dàng trên phần cứng của dòng máy PC), NetBSD (tập trung vào nhiều kiến trúc CPU khác nhau) và một bản khác của NetBSD, OpenBSD (tập trung vào bảo mật).

2. Tổ chức phần mềm miễn phí (Free Software Foundation)

Vào năm 1984, Tổ chức phần mềm miễn phí (FSF) của Richard Stallman bắt đầu dự án GNU, một dự án tạo ra một phiên bản miễn phí của hệ điều hành Unix. Miễn phí, theo Richard Stallman nghĩa là tự do sử dụng, đọc, chỉnh sửa và phân phối lại. FSF đã thành công trong việc xây dựng một lượng khổng lồ các thành phần hữu ích, bao gồm một trình biên dịch C (gcc), một trình hiệu chỉnh văn bản khá ấn tượng (emacs) và một loạt các công cụ cơ bản. Tuy nhiên, vào những năm 1990, FSF đã gặp khó khăn trong việc phát triển kernel hệ điều hành [FSF 1998] mà nếu không có kernel này thì giấc mơ hoàn thành một hệ điều hành miễn phí của họ sẽ không thể hoàn tất.

3. Linux

Vào năm 1991, Linus Tovalds bắt đầu phát triển một kernel hệ điều hành, lấy tên của anh ta “Linux” [Tovalds 1999]. Kernel này có thể kết hợp với các tài liệu của FSF và các thành phần khác (cụ thể là một vài thành phần của BSD và phần mềm MIT của X-Windows) để có thể giới thiệu một hệ điều hành vô cùng hữu ích và có thể tự do chỉnh sửa.

Trong cộng đồng Linux, nhiều tổ chức khác nhau đã kết hợp các thành phần khác có sẵn. Mỗi một sự kết hợp đó được gọi là một bản phân phối (distribution) và các tổ chức phát triển các bản phân phối đó gọi là các nhà phân phối (distributors). Các bản phân phối thông dụng gồm có Linux Red Hat, Mandrake, SuSE, Caldera, Corel và Debian. Có những sự khác nhau giữa các bản phân phối đó, nhưng tất cả các bản phân phối đó đều dựa trên cùng nền tảng: kernel của Linux và các thư viện của GNU. Cả hai thứ đã kết hợp lại tạo thành một giấy phép kiểu “copyleft”, thay đổi những nền tảng cơ bản này phải được làm sẵn cho tất cả, một sự bắt buộc thống nhất giữa các bản phân phối Linux mà điều này không hề có trên BSD và các hệ thống Unix kế thừa từ AT&T.

4. Phần mềm miễn phí / Phần mềm mã nguồn mở

Sự quan tâm đến các phần mềm miễn phí được chia sẻ ngày càng tăng đã làm tăng sự cần thiết phải chỉnh sửa nó. Điều kiện được sử dụng rộng rãi là “Phần mềm mã nguồn mở” đã được định nghĩa trước đó. Phần mềm mã nguồn mở là những phần mềm được sử dụng mà mã nguồn được cung cấp nhưng không có sự giới hạn về bản quyền: người dùng có quyền sử dụng, xem, sửa đổi hay phân phối mã nguồn. Nó khác với những điều kiện của “Phần mềm miễn phí”. Phần mềm miễn phí thường gây rắc rối với những chương trình chỉ thực thi theo cách cho trước và không thay đổi được, cũng như mã nguồn không được xem, không được chỉnh sửa cũng như không được phân phối. Các bạn có thể đọc thêm về định nghĩa phần mềm miễn phí ở http://www.opensource.org/osd.html

Richard Stallmann, người đi tiên phong trong việc chống lại sự sở hữu phần mềm “làm của riêng” đã đưa khái niệm này ra trong dự án GNU hồi năm 1984. Theo Richard Stallmann một Free software phải đem đến cho người sử dụng các quyền tự do sau đây:

+ Quyền tự do 1: Tự do chạy chương trình vì bất kỳ lý do gì.

+ Quyền tự do 2: Tự do nghiên cứu chương trình làm việc như thế nào, được phép sửa đổi cho phù hợp với nhu cầu của người dùng cụ thể. Mã nguồn mở là điều kiện tiên quyết cho quyền tự do này

+ Quyền tự do 3: Tự do phân phối các bản sao để giúp đỡ những người khác có nhu cầu.

+ Quyền tự do 4: Tự do cải tiến chương trình và đưa sự cải tiến này ra cho cộng đồng cùng hưởng lợi. Đương nhiên, mã nguồn mở là điều kiện tiên quyết. Stallmann và những người ủng hộ đã dùng Free software để đối lập với proprietary software (phần mềm sở hữu riêng). Phần mềm sở hữu riêng cấm đoán người khác chỉnh sửa và phân phối lại, nó là tài sản và là bí mật riêng của cá nhân, công ty, tổ chức.

Tuy nhiên Free software không nhất thiết phải là Freeware, nghĩa là không nhất thiết phải miễn phí. Stallmann nhắc đi nhắc lại ”free” trong từ “free software” không phải là không tốn tiền mà là có tự do (“free as in free speech not as in free bear”), đặc biệt là quyền được thay đổi và đóng góp cho cộng đồng qua việc có thể nắm được mã nguồn của chương trình.

Vì vậy, tính chất mã nguồn mở của chúng (open source) là khác biệt rất quan trọng với phần mềm đóng (close source), cho dù phần mềm đóng có miễn phí hay không.

Tất nhiên, phần mềm mã nguồn mở luôn rẻ hơn phần mềm đóng vì việc chỉnh sửa sẽ ít tốn công sức hơn việc tạo mới từ đầu. Một khía cạnh khác của mã nguồn mở là tính an ninh trong sử dụng.

Phần mềm mã nguồn mở mà điển hình là Linux với các bản phân phối thương mại như Red Hat là một ví dụ chứng minh cho tư tưởng free software và tính khả thi của tư tưởng này.

Đáng buồn là ở nước ta, khi nghĩ đến …WARE thì đại đa số người dùng đồng nghĩa hóa nó với “xài chùa”. Phần mềm tự do, cụ thể là những phần mềm mã nguồn mở là lối thoát hầu như duy nhất cho một đất nước đang phát triển. Là đối trọng đáng kể cho những phần mềm thương mại của các đại gia phải biết điều (Microsoft đã phải hạ giá bán, phải công bố một số mã nguồn trước áp lực của free software).


Cài XAMPP(Linux, Apache, MySQL, PHP, Perl) cho Ubuntu

Bước 1: Download XAMPP Linux 1.6.2
Lưu ý : nếu bạn download trong Window thì nên tắt chương trình McAfee đi, nếu nó đang chạy thì bạn sẽ gặp báo lỗi virus, chỉ có vấn đề đó.
Bước 2: Cài đặt
Sau khi download xong bạn mở Terminal ra, gõ các lệnh sau:
1. Bạn nên login vào với wuyền root với lệnh sau :
su
rồi nhập password. Để giải nén file vừa down về, bạn vào thư mục chứa file đó, rồi gõ lệnh sau để bung nó ra vào folder /opt
tar xvfz xampp-linux-1.6.2.tar.gz -C /opt
Chú ý :
* Nếu bạn đã cài các version cũ của XAMPP thì các lệnh trên sẽ ghi đè lên.
F...ù ! Zậy là xong. XAMPP đã được cài vào folder /opt/lampp .
Bước 3 : Khởi động lên.
Nhập lệnh sau để khởi động :
/opt/lampp/lampp start
Bạn sẽ nhìn thấy những dòng sau trên màn hình :

Starting XAMPP 1.6.2...
LAMPP: Starting Apache...
LAMPP: Starting MySQL...
LAMPP started.

MySQL và Apache đã chạy rồi.
Bước 4 : Kiểm tra
Cài đặt thiệt là dễ phải ko các bạn. Nhưng làm sao mình biết là đã thành công và sẵn sàng làm việc rồi ? Hãy gõ vào web browser quen thuộc của bạn như sau :
http://localhost
Bạn sẽ thấy màn hình như sau :
Vậy là hoàn thành rồi, bạn có thể tự tìm hiểu thêm và tui cũng zậy. Hẹn gặp lại sau !!!
Ps: Thư mục gốc của web server sẽ là /opt/lampp/htdocs ;).

Thursday, July 19, 2007

Cùng làm đẹp cho giao diện Ubuntu, phần con trỏ chuột và SplashScreen

Trước đây, xài Win chúng ta có thể dễ dàng thay đổi các thiết lập cho giao diện nguời dùng ( GUI) như hình dạng mouse, các themes cho cửa sổ, hộp thoại( dialog)... Bên Ubuntu thì phải làm thế nào nhỉ. Hôm nay xin post một bài hướng dẫn lên đây chia sẻ cùng các bạn blog kĩ thuật nhỏ này ( bạn nào pro rồi đừng cười nhé !).

1. Các kiểu dáng con trỏ chuột ( Mouse cursor theme) :
Nếu bạn download các gói ( package) thì cách dễ dàng là nên save ở Desktop( /home/username/Desktop ) Cài package gcursor bằng Synaptic Package Manager hay vào Terminal gõ lệnh app-get.

* Synaptic : MainMenu\System\Administration
Check vào Apply ròi nó sẽ update cho bạn.

* Terminal : MainMenu\Accessories\Terminal
gõ lệnh : sudo aptitude install gcursor

Bây giờ, bạn mở
MainMenu\System\System sẽ thấy mục Cursor Selection, chọn nó sẽ show ra dialog như hình sau :
Bạn hãy chọn các kiểu con trỏ mình thích, chỉnh size cho cursor, ròi Close là xong.

À, nhưng bạn có muốn cài thêm các kỉu con trỏ đẹp ko !!! Dĩ nhiên rồi ;)i.
Các bạn có thể down về tại đây
Khi down về bạn cần nhớ save ở đâu. Bạn giải nén (extract) nó ra, chép 2 folder default và 1 folder có tên của theme vào folder /home/username/.icons ( username là tên account của bạn trong Ubuntu). Vậy là xong đó, bạn hãy mở Cursor Selection lại lần nữa sẽ thấy có Theme mà bạn mới cài.

Bây giờ, mình chỉnh tiếp Splash Screen. Tui cũng ko biết định nghĩa Splash Screen là gì, nói theo tui hiểu là vầy, nó là ảnh đầu tiên hiện ra khi chúng ta khởi động vào Ubuntu và gõ xong password và username. Thực ra tui thấy có lẽ việc hiệu chỉnh này ko ảnh hưởng gì tới "dung nhan" Ubuntu của mình, tại vì nó chỉ show lên khi Startup thôi. Nhưng chúng ta có thể đưa hình yêu thích của mình show lên( khoe "chân dung" của mình chẳng hạn).
Bạn có 2 cách để thêm cái này vào : Synaptic Package Manager hay Terminal cũng được( cách mở 2 anh này các bạn có thể coi ở đây)

*Synaptic : bạn chọn gnome-splashscreen-manager ròi Apply thoi
*Terminal : khỏ zô sudo apt-get install gnome-splashscreen-manager
Bây giờ bạn mở MainMenu\System\System sẽ thấy mục Splash Screen. Các bạn có thể chèn các hình tuỳ thích vào, hay lên mạng down các Splash Screen mà người ta design sẵn rất đẹp cho mình tại đây