Thứ Hai, 30 tháng 12, 2013

PostgreSQL : Giới thiệu psql - giao diện tương tác dòng lệnh với PostgreSQL

psql là một giao diện tương tác dòng lệnh của PostgreSQL (PostgreSQL interactive terminal) cho phép ta gõ các câu truy vấn SQL gởi đến PostgreSQL và nhận về kết quả hiển thị

Truy cập cơ sở dữ liệu (CSDL) có tên openspace_db với username là toan
$ psql d openspace_db -U toan 

Ở đây ngầm định host là local, nếu muốn truy cập PostgreSQL cài ở máy khác thì phải cung cấp thông tin host, chẳng hạn như sau :
$ psql d openspace_db -U toan -h <host name>

Sau khi truy cập ta có thể dùng meta-command \l để hiển thị các cơ sở dữ liệu (database) hiện có trong PostgreSQL
openspace_db=# \l

                                       List of databases
         Name          |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------------------+----------+----------+------------+------------+-----------------------
 openspace_db          | toan     | UTF8     | en_US.utf8 | en_US.utf8 | 

Thoát khỏi hiển thị này bằng cách gõ lệnh \q

Tạo một cơ sở dữ liệu mới mang tên openspace_vn_db, nhớ đừng quyên dấu chấm phẩy (;) ở cuối, vì psql nhận biết kết thúc dòng lệnh bằng dấu này
openspace_db=# create database openspace_vn_db;
CREATE DATABASE

Truy cập đến cơ sở dữ liệu mới tạo này bằng cách gõ lệnh \c như sau
openspace_db=# \c openspace_vn_db 
You are now connected to database "openspace_vn_db" as user "postgres".
openspace_vn_db=# 

Gõ lệnh \d để xem các quan hệ (relation : table, view, index, sequence, foreign talbe) của CSDL này
openspace_vn_db=# \d
No relations found.

Tạo một bảng dữ liệu có tên là mobile
openspace_vn_db=# create table mobile(id int, name varchar);
CREATE TABLE

Gõ lại lệnh \d, ta có
openspace_vn_db=# \d
         List of relations
 Schema |  Name  | Type  |  Owner   
--------+--------+-------+----------
 public | mobile | table | toan
(1 row)

Thêm dữ liệu vào bảng
openspace_vn_db=# insert into mobile values(0, 'Samsung Galaxy S4');
INSERT 0 1
openspace_vn_db=# insert into mobile values(1, 'iPhone 6');
INSERT 0 1

Xem dữ liệu trong bảng
openspace_vn_db=# select * from mobile;
 id |       name        
----+-------------------
  0 | Samsung Galaxy S4
  1 | iPhone 6
(2 rows)

Ta có thể nhập đọc dữ liệu vào (input) từ tập tin với lệnh \i, chẳng hạn tạo tập tin data.sql với nội dung sau :
create table provider(id int, name varchar, country varchar);
insert into provider values(0, 'Samsung', 'Korea');
insert into provider values(1, 'Apple', 'United States');

Rồi gõ lệnh
openspace_vn_db=# \i data.sql
CREATE TABLE
INSERT 0 1
INSERT 0 1
openspace_vn_db=# \d
          List of relations
 Schema |   Name   | Type  |  Owner   
--------+----------+-------+----------
 public | mobile   | table | toan
 public | provider | table | toan
(2 rows)

Ta có thể nhập nội dung vào PostgreSQL từ giao diện tương tác dòng lệnh của hệ điều hành (Ubuntu chẳng hạn). Trước hết ta xoá bảng dữ liệu provider vừa tạo và thoát khỏi psql với lệnh \q như sau
openspace_vn_db=# drop table provider;
DROP TABLE
openspace_vn_db=# \q

Rồi nhập dữ liệu vào từ tập tin như sau
$ psql -d openspace_vn_db -U toan -f data.sql
CREATE TABLE
INSERT 0 1
INSERT 0 1

Ta có thể tìm kiếm các quan hệ wildchar như sau (mo* : Các quan hệ có tên bắt đầu bằng mo)
openspace_vn_db=# \d mo*
         Table "public.mobile"
 Column |       Type        | Modifiers 
--------+-------------------+-----------
 id     | integer           | 
 name   | character varying | 


Thứ Tư, 18 tháng 12, 2013

Ubuntu : Cài đặt Glassfish trong Ubuntu

Tải glassfish về, ở đây tôi cài glassfish 3.1.2.2 tại thư mục gốc của người dùng (home)
$ wget http://download.java.net/glassfish/3.1.2.2/release/glassfish-3.1.2.2-unix.sh

Gọi thực thi tập tin vừa tải về để cài đặt glassfish
$ sh glassfish-3.1.2.2-unix.sh

Đổi tên thư mục vừa tạo thành cho gọn
$ mv ~/glassfish3 ~/glassfishv3.1.2.2

Mở tập tin .profile
$ gedit ~/.profile

rồi thêm định nghĩa biến môi trường cho Glassfish vào cuối tập tin này
# Glassfish
export GLASSFISH_HOME=/home/tcminh/glassfishv3.1.2.2/glassfish/
export PATH="$GLASSFISH_HOME/bin:$PATH"

Sau đó gọi thực thi tập tin để cập nhật biến vừa thêm vào
$ . ~/.profile

Nếu cần thiết, định nghĩa địa chỉ 127.0.0.1 cho localhost; <machine name> thay bằng tên máy của bạn chẳng hạn pc12991. Mở tập tin /etc/hosts
$ sudo gedit /etc/hosts
Thêm/sửa dòng sau
127.0.0.1    localhost <machine name>

Kiểm tra hoạt động glassfish, ở đây không chỉ rõ domain thì glassfish tự hiểu là domain1, khởi động :
$ asadmin start-domain

Dừng glassfish
$ asadmin stop-domain

Kiểm tra số tập tin tối đa cho process cho "người dùng" tên glassfish (dùng cho hoạt động của máy chủ glassfish):
$ sudo su - glassfish
$ ulimit -n

Trong truờng hợp của bạn, nếu không định nghĩa một "người dùng" glassfish thì kiểm tra với tên người dùng là bạn (trong lệnh trên thay glassfish bằng login của bạn khi đăng nhập ubuntu)

Nếu cần thiết, thay đổi giới hạn số tập tin có thể mở cùng lúc cho một người dùng bằng cách thêm thông tin sau trong tập tin /etc/security/limits.conf :
glassfish soft nofile 4096
glassfish hard nofile 8192

rồi khởi động lại Ubuntu. Chú ý, trong trường hợp của bạn nên thay "glassfish" trong hai dòng trên bằng login của bạn.

Kiểm tra một số tham số của Linux. Đôi khi ta cần điều chỉnh tham số về dung lượng bộ nhớ chia sẻ [SHMMAX : Maximum size of shared memory segment (bytes);
SHMMIN : Minimum size of shared memory segment (bytes)] với các dòng lệnh sau :
$ sysctl -e kernel.shmmax
$ sysctl -e kernel.shmall

Nếu cần, gán cứng các tham số này trong tập tin /etc/sysctl.conf bằng cách thêm các dòng sau :
kernel.shmmax=134217728
kernel.shmall=8388608

134217728 tương ứng 128MB; 8388608 tương ứng 8MB

Hoặc có thể thay đổi các giá trị này trong phiên (session) hiện hành bằng cách gõ các dòng lệnh sau :
$ sudo sysctl -w kernel.shmmax=134217728
$ sudo sysctl -w kernel.shmall=8388608

Một số lệnh khác khi dùng glassfish, ở đây không chỉ rõ domain thì glassfish tự hiểu là domain1 :
Triển khai (deploy) ear, <application name> thay bằng tên của ứng dụng cần triển khai
$ asadmin deploy <application name>.ear

Gỡ bỏ (undeploy) một ứng dụng được triển khai khỏi glassfish
$ asadmin undeploy <application name>

Liệt kê các ứng dụng hiện được triển khai trong glassfish
$ asadmin list-applications

Khởi động lại
$ asadmin restart-domain
Lệnh này tương đương với lệnh sau
$ asadmin restart-domain domain1

Thay đổi cấu hình của một ứng dụng triển khai trong glassfish được định nghĩa trong tập tin domain.xml (ở đây glassfish được cài đặt tại thư mục gốc của người dùng)
$ gedit ~/glassfishv3.1.2.2/glassfish/domains/domain1/config/domain.xml

Nếu ứng dụng của bạn xài hệ quản trị cơ sở dữ liệu PostgreSQL chẳng hạn, bạn cần tải driver của PostgreSQL về chẳng hạn cho phiên bản postgresql-9.3 tại đường dẫn sau http://repo1.maven.org/maven2/org/postgresql/postgresql/9.3-1100-jdbc41/postgresql-9.3-1100-jdbc41.jar

Sau đó chép driver này vào thư mục /usr/share/java/ cho dễ quản lý
Vào thư mục sau của glassfish
$ cd ~/glassfishv3.1.2.2/glassfish/domains/domain1/lib/ext

Rồi tạo đường dẫn biểu tượng đến driver vừa chép vào thư mục /usr/share/java/ như sau :
$ ln -s /usr/share/java/postgresql-9.3-1100-jdbc41.jar postgresql.jar


Thứ Ba, 17 tháng 12, 2013

Ubuntu : Cài đặt Java trong Ubuntu

Bài này giới thiệu cách cài đặt thủ công Java (jdk) trong Ubuntu.

Trước hết cần kiểm xem máy của bạn là 32 hay 64 bit để tải gói jdk thích hợp về cài đặt với lệnh sau :
$ uname -a

Sau đó tải gói jdk tương ứng về máy của bạn, ở đây tôi tải jdk-6u37-linux-x64.bin (cho 64 bit) (hay jdk-6u37-linux-i586.bin cho 32 bit) tại đường dẫn sau http://www.oracle.com/technetwork/java/javase/downloads/jdk6u37-downloads-1859587.html

Chép tập tin tải về (trong thư mục Downloads tại Home) vào thư mục /usr/lib/jvm bằng tài khoản root (sudo)
$ sudo cp Downloads/jdk-6u37-linux-x64.bin /usr/lib/jvm/

Vào thư mục /usr/lib/jvm/
$ cd /usr/lib/jvm/

rồi gán quyền thực thi cho tập tin với lệnh chmod như sau
$ sudo chmod u+x jdk-6u37-linux-i586.bin

Sau đó ta có thể gọi thực thi tập tin này
$ sudo ./jdk-6u37-linux-i586.bin

lệnh này sẽ tạo thư mục /usr/lib/jvm/jdk1.6.0_37 chứa jdk cài đặt
Xoá đường dẫn tượng trưng (symbolic link) /usr/lib/jvm/java-6-sun nếu có. Rồi tạo đường dẫn tượng trưng mới đến thư mục vừa cài đặt jdk
$ sudo ln -s /usr/lib/jvm/jdk1.6.0_37 /usr/lib/jvm/java-6-sun 

Mở tập tin .profile; <user name> ở đây là tên thư mục gốc của người dùng
$ gedit /home/<user name>/.profile


Rồi thêm biến JAVA_HOME bằng cách thêm vào cuối tập tin này nội dung sau :
# Java
export JAVA_HOME="/usr/lib/jvm/java-6-sun"
export PATH="$JAVA_HOME/bin:$PATH"


Trong /home/<user name> gọi thực thi tập tin .profile như sau
$ . .profile

Kiểm tra phiên bản java vừa cài đặt bằng cách gõ lệnh sau
$ java -version


Tôi có kết quả như sau
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)


Trong trường hợp gõ lệnh này mà thấy lỗi, nên kiểm tra biến môi trường JAVA_HOME có được định nghĩa chính xác hay không với lệnh : 
$ export


Một khi cài đặt xong xuôi, xoá tập tin jdk-6u37-linux-i586.bin
$ sudo rm jdk-6u37-linux-x64.bin