Đổi NLS_CHARACTERSET trong Oracle

Khi chuyển đổi dữ liệu Oracle từ máy này sang máy khác. Tôi gặp một số trường hợp bị lỗi font Tiếng Việt trên máy đích.

Có một nguyên nhân sinh lỗi font đó là do NLS_CHARACTERSET trên máy nguồn và máy đích khác nhau.

1, Kiểm tra NLS_CHARACTERSET trên mỗi máy.

$sqlplus /nolog

$conn / as sysdb

>SELECT value$ FROM sys.props$ WHERE name = ‘NLS_CHARACTERSET’ ;

2, Nếu NLS_CHARACTERSET trên mỗi máy khác nhau, cách khả thi nhất là chuyển NLS_CHARACTERSET

máy đích về AL32UTF8

2.1 Đăng nhập tài khoản quản trị sysdba giống như bước 1

2.2 Tắt hệ thống,  sao lưu dữ liệu.

> SHUTDOWN IMMEDIATE;

2.3 Bật dưới chế độ RESTRICT

> STARTUP RESTRICT;

2.4 Chuyển các tham số về mặc định:

> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

2.5 Chuyển NLS_CHARACTERSET

> ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

2.6 Tắt CSDL và khởi động lại CSDL ở chế độ bình thường:

> SHUTDOWN IMMEDIATE;
> STARTUP;

Import export dữ liệu trên Oracle sử dụng exp, imp

Cuyển dữ liệu oracle schema từ máy này sang oracle schema trên máy khác sử  dụng exp, imp

Giả định:

Máy 1: user1, passwd1

Máy 2: user2, passwd2

Bước 1: Đăng nhập bằng tài khoản chạy oracle trên linux terminal vào máy 1.

Chạy lệnh sau:

$exp user1/passwd1 file=data_from_m1.dmp log=export_data.log

Sau khi chạy xong ta được file data_from_m1.dmp.

Bước 2: Copy file này sang máy 2. Đăng nhập bằng tài khoản chạy oracle trên linux terminal máy 2.

Chạy lệnh sau:

$imp user2/password2 file=data_from_m1.dmp log=import_data.log fromuser=user1 touser=user2

Giới thiệu về NoSQL

NoSQL là gì?nosql-databases

NoSQL bao gồm một loạt các công nghệ cơ sở dữ liệu khác nhau và đã được phát triển để đáp ứng với sự gia tăng khối lượng dữ liệu được lưu trữ về người sử dụng, các đối tượng và các sản phẩm, tần suất truy cập, hiệu suất và nhu cầu xứ lý. Cơ sở dữ liệu truyền thống – SQL, không được thiết kế để đối phó với những thách thức về sự tăng trưởng về mặt quy mô và những thay đổi nhanh chóng mà các ứng dụng hiện đại đang phải đối mặt, SQL cũng không được thiết kế để tận dụng lợi thế của việc lưu trữ giá rẻ và khả năng xử lý hiện nay.

Các loại Cơ sở dữ liệu NoSQL phổ biến

  • Document databases (CSDL kiểu tài liệu): Dữ liệu được lưu trữ dưới dạng một cặp khóa và dữ liệu có cấu trúc được gọi là document (tài liệu). Trong mỗi tài liệu có thể chứa nhiều cặp key-value. Mỗi cặp key-value này có thể chứa các cặp key-value lồng nhau.
  • Graph stores (CSDL kiểu đồ thị) được sử dụng để lưu thông tin về mạng kết nối, ví dụ như kết nối trong mạng xã hội. CSDL đồ thị được biết đến gồm: Neo4J và HyperGraphDB.
  • Key-value là kiểu CSDL NoSQL đơn giản nhất. Mỗi mẩu dữ liệu được lưu với thông tin về tên (hoặc “key”), và giá trị tương ứng . Ví dụ về CSDL key-value là Riak và Voldemort. Một số CSDL key-value khác,  như Redis, cho phép các giá trị được lưu trữ theo kiểu khác nhau ( kiểu “integer”, …).
  • Wide-column giống như Cassandra và HBase được thiết kế để tối ưu cho việc truy vấn trên tập dữ liệu cực kỳ lớn. Thay vì lưu trữ dữ liệu trên các hàng(rows), nó lưu trữ dữ liệu theo cột (columns).

Lợi ích của NoSQL

Khi so sánh với CSDL quan hệ (SQL),  CSDL NoSQL dễ dàng mở rộng hơn và tốc độ nhanh hơn rất nhiều. Bởi vì, thiết kế mô hình dữ liệu tập trung vào các vấn đề mà CSDL quan hệ không được thiết kế:

  • Khối lượng lớn dữ liệu có cấu trúc, bán-cấu-trúc(semi-structure), và không có cấu trúc
  • Ứng dụng thay đổi thường xuyên dẫn đến mô hình dữ liệu thay đổi thường xuyên
  • Lập trình hướng đối tượng mềm dẻo và dễ dàng sử dụng
  • Tính hiệu quả, kiến trúc theo hàng-ngang bằng nhiều thiết bị giá rẻ thay vì kiến trúc theo hàng-dọc với một số ít các thiết bị cấu hình mạnh, đắt tiền.

(Tobe cont…)

Giới thiệu về mô hình MVC, ví dụ sử dụng ngôn ngữ Python

MVC là gì?

MVC là cách thiết kế ứng dụng thành  các phần với các chức năng riêng biệt.

MVCinAction

Lịch sử của MVC

MVC là  viết tắt của Model-View-Controller. MVC được mô tả đầu tiên bởi  Trygve_Reenskaug  vào năm 1979. Tuy đã hơn 30 năm qua, nhưng khái niệm này không những bị lãng quên,… ngày nay, nó được dùng vào hầu hết các web framework và GUI framework, gồm có:

  • Ruby On Rails: Một web-framework viết trên Ruby rất thịnh hành.
  • Apple Cocoa: Apple’s framework cho phát triển các ứng dụng Mac OS và iOS.
  • ASP.Net Framework: Microsoft’s web-framework để phát triển các ứng dụng web trên .NET.
  • Apache Struts: Một Java web-framework rất phổ biến
  • … và rất nhiều framework khác.

Các thành phần trong MVC

Model-View-Controller theo đúng như  tên gọi của nó, được chia  thành 3 phần chính:

Model: Kết nối với cơ sở dữ liệu và thực hiện các tương tác với cơ sở dữ liệu

View: Hiển thị trên giao diện(UI) các kiểu dữ liệu đó.

Controller: Nhận các tương tác của người dùng, điều hướng, gọi các hành vi từ Model và hiển thị lên View tương ứng.

Tuy rằng chưa có mẫu chuẩn MVC, nhưng các framework áp dụng MVC cũng không khác nhau nhiều. Các framework này đều cố gắng đạt được:

  • Tách lớp trình diễn (Presentation) với lớp thao tác dữ liệu (Model)
  • Tách lớp điều hướng(Controller) với lớp hiển thị (View)

Ví dụ sử dụng MVC trong Python

Bỏ chế độ cài đặt đóng gói egg trong python

Khi chạy python với công cụ IDE. Có một số thư viện đã được cài đặt.

Tuy nhiên, IDE lại không tìm thấy mã nguồn để thực hiện autocomplete.

Sau một hồi tìm hiểu, tôi xác định được nguyên nhân là do có một số thư viện được cài dưới dạng .egg

nên phát sinh tình huống như vậy.

Cách để bỏ chế độ đóng gói khi cài bằng pip hoặc easy_install

sửa file pydistutils.cfg trong thư mục “$PYTHON_PATH/lib/python2.7/distutils”

thêm dòng sau:

zip_ok = false

Nếu không được có thể dùng lệnh

easy_install -Z <tên-thư-viện>

Sử dụng Cache Pip Downloads trong Python

Khi sử làm việc với Python trên môi trường virtualenv và pip. Ta cần cài đặt một gói thư viện python, ta có thể tạo thư mục cache để pip tìm trong thư mục đó trước khi lên mạng để giảm thời gian download và công việc cài đặt sẽ nhanh hơn:
$ vi .bash_profile
thêm dòng sau:
export PIP_DOWNLOAD_CACHE=$HOME/.pip-download-cache

Mật khẩu cho màn hình quản trị Tomcat 7 trong Debian

1, Sửa file sau:
/etc/tomcat7/tomcat-users.xml
Thêm các dòng:

<role rolename=”manager-gui”/>
<user username=”tomcat” password=”tomcat” roles=”manager-gui”/>

2, /etc/init.d/tomcat7 restart

Máy học là gì?(Marchine Learning- Week1)

Theo wikipedia:

Học máy, có tài liệu gọi là Máy học, (tiếng Anh: machine learning) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc phát triển các kĩ thuật cho phép các máy tính có thể “học”. Cụ thể hơn, học máy là một phương pháp để tạo ra các chương trình máy tính bằng việc phân tích các tập dữ liệu. Học máy có liên quan lớn đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp của các giải thuật trong việc thực thi tính toán. Nhiều bài toán suy luận được xếp vào loại bài toán NP-khó, vì thế một phần của học máy là nghiên cứu sự phát triển các giải thuật suy luận xấp xỉ mà có thể xử lí được.

Học máy có tính ứng dụng rất cao bao gồm máy truy tìm dữ liệu, chẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nóichữ viết, dịch tự động, chơi trò chơicử động rô-bốt (robot locomotion).

 

Theo như  gợiý của bác Hà Dương Tuấn về cách viết Tiếng Việt, tôi viết là Máyhọc cho nó ngắn gọn.

theo Athur Samuel(1959): Machine learning: field of study that give computers the ability to learn without being explicitly programmed.

Theo Athur Samuael(1959): Máyhọc là lĩnh vực nghiên cứu về khả năng học của máy tính mà không cần phải lập trình tường minh ngay từ đầu.

Tom mitchel:   A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

Ví dụ: Chơi cờ
E = Kinh nghiệm chơi các rất nhiều ván cờ khác nhau

T = Công việc chơi cờ

P = Xác xuất chương trình sẽ thắng trong ván cờ tiếp theo.

Học có giám sát(Supervised learning)

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.

Trong học có giám sát, ta cho trước một tập các dữ liệu đầu vào và các kết quả đầu ra tương ứng. Ta phải xây dựng ánh xạ(idea) về mối quan hệ giữa dữ liệu đầu vào và dữ liệu đầu ra.

Supervised learning problems are categorized into “regression” and “classification” problems. In a regression problem, we are trying to predict results within a continuous output, meaning that we are trying to map input variables to some continuous function. In a classification problem, we are instead trying to predict results in a discrete output. In other words, we are trying to map input variables into discrete categories.

Có 2 loại bài toán được quan tâm là: “hồi quy”(regression) và “phân loại” (classification). Đối với bài toán hồi quy, ta mong muốn dự đoán kết quả đầu ra ở dạng liên tục, có nghĩa là ta xây dựng hàm đầu ra liên tục tương ứng với biến đầu vào. Đối với bài toán phân loại, kết quả đầu ra ở dạng rời rạc.

Examples: given data about the size of houses on the real estate market, try to predict their price. Price as a function of size is a continuous output, so this is a regression problem.

Ví dụ: Cho dữ liệu về diện tích của ngôi nhà trong thị trường bất động sản, ta dự báo giá nhà. Giá nhà là một hàm liên tục, như vậy ta xếp nó vào bài toán hồi quy.

Học không có giám sát

Unsupervised learning, on the other hand, allows us to approach problems with little or no idea what our results should look like. We can derive structure from data where we don’t necessarily know the effect of the variables.

Khác với học có giám sát, học không giám sát ít hoặc không quan tâm đến kết quả đầu ra như thế nào. Ta chỉ quan tâm đến việc đưa ra cấu trúc từ dữ liệu mà không cần biết ảnh hưởng của các biến đầu vào.

We can derive this structure by clustering the data based on relationships among the variables in the data.

Ta có thể đưa ra cấu trúc dữ liệu bằng cách “phân cụm” dữ liệu dựa trên các biến liên hệ trong tập dữ liệu đó.

With unsupervised learning there is no feedback based on the prediction results, i.e., there is no teacher to correct you. It’s not just about clustering. For example, associative memory is unsupervised learning.

Với học không giám sát, ta không có phản hồi dựa trên kết quả dự đoán, nói nôm na là, không có người giám sát kết quả đúng sai của bạn. Nó chỉ là việc phâncụm dữ liệu.

Examples: Clustering.-Take a collection of 1000 essays written on the US Economy, and find a way to automatically group these essays into a small number that are somehow similar or related by different variables, such as word frequency, sentence length, page count, and so on.

Ví dụ: Phâncụm.-Lấy 1000 bài viết về kinh tế Mỹ, và tìm cách tự động phân nhóm chúng thành các nhóm nhỏ hơn dựa trên các tiêu chí khác nhau, như tần suất từ, độ dài câu, …

Associative.- Suppose a doctor over years of experience forms associations in his mind between patient characteristics and illnesses that they have. If a new patient shows up then based on this patient’s characteristics such as symptoms, family medical history, physical attributes, mental outlook, etc the doctor associates possible illness or illnesses based on what the doctor has seen before with similar patients. This is not the same as rule based reasoning as in expert systems. In this case we would like to estimate a mapping function from patient characteristics into illnesses.

Tiếng Việt trong Django model phiên bản 1.4

Mình theo tài liệu này để hiển thị tên Model trong phần quản trị của Django

https://docs.djangoproject.com/en/1.4/topics/i18n/translation/

của Django. Tuy nhiên, mình thấy dài dòng quá, đọc rất mất thời gian.
Mình tóm tắt lại như sau:

Bước 1,
Vào settings.py, đổi, hoặc thêm mới:
    LANGUAGE_CODE = ‘vi-vn’
    LOCALE_PATHS = (‘PATH_TO_LOCALE’,)
    USE_I18N = True

Bước 2:
Với mỗi Model
Thêm class Meta  với các trường thuộc tính
    verbose_name
    verbose_name_plural
Thêm verbose_name vào trường thuộc tính.
Ví dụ: name = models.CharField(max_length=128, verbose_name=_(“Category name”))

Bước 3,

Đứng tại thư mục  gốc của project
Tạo một thư mục là “locale”. Sau đó, chạy lệnh sau
$django-admin.py makemessages -l vi
Lệnh này sẽ tự động sinh ra file
locale/vi/LC_MESSAGES/django.po

Bước 4,
Mở file bằng PlainText Editor (Notepad++, EmEditor, …), dịch.
Chạy lệnh sau để complile thành file django.mo :
$django-admin.py compilemessages

Hướng dẫn cài đặt Sun Java trên Debian 6 Squeeze

Khi cài Aptana Studio 3 trên Debian 6, tôi có gặp một số lỗi.
Nguyên nhân là: ở chế độ mặc định, Debian chỉ cài Java 1.5. Sau khi googling tôi tìm được hướng dẫn cài đặt Sun Java 6.
1, Đăng nhập với acc root, thêm dòng sau vào file /etc/apt/source.list
deb http://ftp.us.debian.org/debian/ squeeze main non-free
2, Cập nhật
#apt-get update
3, Cài đặt
#apt-get install sun-java6-jdk

4, Sau khi cài đặt xong, kiểm tra phiên bản Java
#java -version
Nếu vẫn là 1.5. Bạn cần chạy thêm câu lệnh sau:
#update-alternatives –config
chọn java-6-sun

Follow

Get every new post delivered to your Inbox.