22 tháng 11, 2016

Tạo column kiểu số có giá trị tự động tăng trong Oracle Database

Để tạo được một column có kiểu là NUMBER mà giá trị của column đó có thể tự động tăng khi thực hiện câu lệnh INSERT trong hệ quản trị cơ sở dữ liệu Oracle ta sẽ phải sử dụng đến SEQUENCE kết hợp với TRIGGER.

Muốn thực hiện được điều này, đầu tiên phải tạo một SEQUENCE:

CREATE SEQUENCE name_of_sequence
  START WITH 1
  INCREMENT BY 1
  MAX VALUE 999999
  CACHE 100;

Đến đây, mỗi khi thực hiện câu lệnh INSERT, chỉ cần thực hiện như sau là đã có thể lấy được giá trị tăng kế tiếp để insert vào database:

INSERT INTO table_name(column_increment, other_column) 
  VALUES (name_of_sequence.NEXTVAL, other_column_value);

Ngoài ra, để thực hiện insert giá trị tự động tăng này vào column mà không cần gọi trực tiếp đến column đó trong câu lệnh, ta sẽ phải tạo ra một TRIGGER để thực hiện được điều này.

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  SELECT name_of_sequence.NEXTVAL
    INTO :new.primary_key_column
  FROM dual;
END;

Từ phiên bản Oracle 11.1 về sau, ta có thể đơn giản khối lệnh tạo TRIGGER bên trên như sau:

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  :new.primary_key_column := name_of_sequence.NEXTVAL;
END;

20 tháng 11, 2016

Cài đặt và tùy biến Fedora Linux 24 trên máy tính Sony VAIO SVF14217SGB (Phần 1)

I. Cài đặt Fedora Linux lên máy

Tải file iso từ trang chủ của Fedora và sử dụng phần mềm Rufus tạo một usb boot cài đặt Fedora, sau đó tiến hành cài đặt bình thường.

II. Cài đặt và cấu hình Fedora Linux

1. Cài đặt wireless driver

Máy tính Sony VAIO SVF14217SGB sử dụng broadcom chipset BCM43142, driver của chipset này không còn được hỗ trợ cho Linux từ trang chủ Broadcom. Vì vậy, để có thể sử dụng được wifi ta sẽ phải cài đặt gói broadcom-wl từ RPM Fusion.

Để máy tính có thể sử dụng được wifi, ta cần phải kết nối internet thông qua dây nối và thực hiện các bước sau:

1.1. Thêm rpmfusion repository:

$ su -c 'dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'

1.2. Update lại toàn bộ hệ thống:

$ sudo dnf update

1.3. Sau khi update thành công, tiến hành build kernel mới nhất:

$ sudo dnf install kernel-devel -y

Sau khi build thành công, khởi động lại hệ thống, và chọn kernel mới nhất từ menu boot.

1.4. Cài đặt gói broadcom-wl

$ sudo dnf install broadcom-wl

Khởi động lại một lần nữa sẽ thấy menu setting cho wifi. Quá trình cài đặt hoàn tất.

2. Cài đặt, chỉnh sửa font mặc định và font chuyển đổi trên Fedora Linux.

Cài đặt các font cần thiết vào thư mục /usr/share/fonts (nếu muốn sử dụng cho tất cả user) hoặc ~/.local/share/fonts (nếu chỉ sử dụng cho user hiện tại).

Sau khi đã có các font cần sử dụng, tiến hành tạo cấu hình font cho Fedora Linux như sau:

2.1. Tạo file cấu hình font

Tiến hành tạo file fonts.conf tại thư mục /etc/fonts (nếu muốn tùy biến cho tất cả user) hoặc tại thư mục ~/.config/fontconfig/ (nếu chỉ muốn tùy biến cho user hiện tại).

2.2. Đặt nội dung sau vào file cấu hình và login lại vào hệ thống.

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Set preferred serif, sans serif, and monospace fonts. -->
  <alias>
    <family>serif</family>
    <prefer><family>Noto Serif</family></prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer><family>Arimo</family></prefer>
  </alias>
  <alias>
    <family>sans</family>
    <prefer><family>Arimo</family></prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer><family>Monaco</family></prefer>
  </alias>
  <!-- Fedora font -->
  <match target="pattern">
    <edit name="dpi" mode="assign">96</edit>
  </match>
  <match target="font">
    <edit mode="assign" name="antialias" >
      <bool>true</bool>
    </edit>
  </match>
  <match target="font">
    <edit mode="assign" name="hinting" >
      <bool>true</bool>
    </edit>
  </match>
  <match target="font">
    <edit mode="assign" name="hintstyle" >
      <const>hintslight</const>
    </edit>
  </match>
  <match target="font">
    <edit mode="assign" name="rgba" >
      <const>rgb</const>
    </edit>
  </match>
  <match target="font">
    <edit mode="assign" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
  </match>
  <!-- Aliases for commonly used MS fonts. -->
  <match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Verdana</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Tahoma</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <!-- Insert joke here -->
    <test name="family"><string>Comic Sans MS</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Arimo</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times New Roman</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Tinos</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Times</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Tinos</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Courier New</string></test>
    <edit name="family" mode="assign" binding="strong">
      <string>Cousine</string>
    </edit>
  </match>
</fontconfig>

III. Cài đặt bộ gõ Tiếng Việt

Ta sẽ sử dụng input method framework Fcitx với engine Fcitx-Unikey để gõ Tiếng Việt trên Fedora Linux.

Thực hiện các bước sau để cài đặt:

1. Thực hiện các lệnh cài đặt fcitx sau đây:

$ sudo dnf install fcitx
$ sudo dnf install kcm-fcitx
$ sudo dnf install fcitx-unikey
$ sudo dnf install fcitx-qt5
$ sudo dnf install fcitx-configtool

2. Tạo cấu hình cho fcitx

Tạo file fcitx.sh trong thư mục /etc/profile.d/, và thêm vào nội dung sau:

#!/bin/bash
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx

3. Khởi động lại hệ thống và mở fcitx để gõ Tiếng Việt

Note : để gõ được chữ ư=uw ơ=ow chọn Enable Marco trong phần cấu hình của Fcitx.