Tuesday, April 24, 2012

Làm reverse proxy với Linux + Apache httpd


Source: http://www.hvaonline.net/hvaonline/posts/list/100.hva

1. Giới thiệu 

Chào các fan hâm mộ Linux, 

Bài viết này chủ yếu dựa trên hai tài liệu là http://www.securityfocus.com/infocus/1739 của Ivan, tác giả mod_security và http://www.securityfocus.com/infocus/1786 của Artur Maj. Bà con có thể xem đây là một bản dịch tiếng Việt của hai tài liệu trên, kèm theo những suy nghĩ riêng của bản thân tôi dựa vào kinh nghiệm thực tế khi triển khai reverse proxy -0-

Bài viết này có thể xem là một case study thuộc tập tài liệu "Bảo vệ máy chủ an toàn với phần mềm tự do". 

Nhiệm vụ của chúng ta là bảo vệ một hay nhiều content web-server -1- nằm trong vùng Internal -2-, các web-server này có thể là Apache httpd, hoặc Microsoft IIS, hoặc có thể chỉ là một web-server đơn giản được embedded vào một ứng dụng nào đó. Để hoàn thành nhiệm vụ, chúng ta sẽ tập trung vào xây dựng một firewall/ids hoạt động ở tầng application, trong tài liệu này gọi là reverse-proxy, sử dụng Apache httpd -3- trên nền Linux. 

2. Reverse proxy là gì? 

Một proxy, theo định nghĩa, là một thiết bị đứng giữa server và client, tham gia vào "cuộc trò chuyện" giữa hai bên. Khái niệm proxy mà chúng ta thường dùng hàng ngày tốt hơn nên được gọi là một forward proxy: một thiết bị đứng giữa một client và tất cả server mà client đó muốn truy cập vào. Một reverse proxy làm công việc hoàn toàn ngược lại: nó đứng giữa một server và tất cả client mà server này phải phục vụ. Reverse proxy giống như một nhà ga kiêm một trạm kiểm soát, các request từ client, bắt buộc phải ghé vào reverse proxy, tại reverse proxy sẽ kiểm soát, lọc bỏ các request không hợp lệ, và luân chuyển các request hợp lệ đến đích cuối cùng là các server. Chú ý là một reverse proxy có thể luân chuyển request cho nhiều server cùng lúc. 

Lợi thế lớn nhất của việc sử dụng reverse proxy là ở khả năng quản lí tập trung. Một khi đã đẩy được tất cả traffic đi qua một trạm kiểm soát duy nhất (là reverse proxy), chúng ta có thể áp dụng nhiều "đồ nghề" khác để tăng cường an ninh cho hệ thống của mình. Dĩ nhiên, bất kì sản phẩm hay công nghệ nào cũng có ưu và khuyết điểm của nó, đi cùng với single point of access bao giờ cũng là "bóng ma" single point of failure. Single point of failure có thể được giải quyết bằng cách xây dựng cluster. Đây là một vấn đề hoàn toàn vượt qua khỏi phạm vi của bài viết này, tôi chỉ xin giới thiệu bồ nào muốn tìm hiểu về cluster trên Linux thì thử ghé vào http://www.linux-ha.org. Ngoài ra áp dụng reverse proxy đúng cách sẽ giúp tăng cường performance cũng như nâng cao scalability của các web-application chạy trên các content server. Chút xíu nữa, tôi sẽ đi vào chi tiết các ưu điểm của reverse proxy cũng như làm thế nào để khai thác các ưu điểm đó. 

3. Cài đặt máy chủ reverse-proxy 

3.1. Chọn và cài đặt hệ điều hành cho reverse proxy 

Dĩ nhiên là tôi sử dụng linux cho máy chủ reverse proxy. Tôi không mô tả quá trình cài đặt linux ở đây bởi có rất nhiều tài liệu hay trên Internet nói về đề tài này, và hơn nữa tôi nghĩ là một khi đã nghĩ đến chuyện làm reverse proxy thì chắc chắn chuyện cài đặt Linux không là vấn đề.Linux có quá trời distro, thế mrro chọn distro nào? Theo tôi thì distro nào cũng như nhau cả thôi, nhưng nếu ai đó hỏi tôi câu hỏi trên thì câu trả lời sẽ là Trustix -4-. Bất kể chọn distro nào, nhớ là sau khi cài đặt xong, hãy dành một chút thời gian để secure cái distro của mình lại trước khi đọc tiếp -5-. Phần tiếp theo chúng ta sẽ bàn về việc cài đặt Apache httpd cũng như các module kèm theo của nó. 

3.2. 1.3.x hay 2.x? 

Trước tiên, tôi nghĩ cần phải trả lời câu hỏi là chúng ta sẽ chọn phiên bản Apache nào để làm reverse proxy đây, 1.3.x hay 2.x? Tôi chọn 2.x vì ba lý do: thứ nhất là tôi "nghe đồn" là có rất nhiều 0-day trong phiên bản 1.3.x . Lý do thứ hai là Apache 2.x cung cấp một bộ filtering API tốt hơn so với phiên bản 1.3.x, cho phép các module có thể nhìn thấy và tương tác với nội dung của các request cũng như các response tương ứng từ trả lời từ server. Điều này rất quan trọng đối với một reverse proxy đóng vai trò là một application gateway bởi vì nó phải kiểm tra tất cả thông tin đi xuyên qua nó trước khi chuyển giao cho bên nhận. -6-. Lý do cuối cùng là Apache httpd 2.x có performance cao hơn hẳn 1.3.x khi phục vụ các static content như file HTML và file hình ảnh. Tôi quan tâm đến vấn đề này là vì tôi có ý định giảm tải cho các content server bên trong bằng cách tách content ra làm hai loại là dynamic (các loại file CGI/Perl, PHP) và static (các file HTML và file hình ảnh), các content server chỉ phục vụ dynamic content, còn tất cả static content thì đưa qua máy chủ reverse proxy luôn. Lúc đó khi các request của client đi vào reverse proxy, nếu request đó có đích đến là một static content, máy chủ reverse proxy sẽ trả lời luôn cho client mà không cần forward request đó đến content server ở phía sau, chỉ những request đến các dynamic content mới được forward để các content server xử lí. Tôi sẽ đi vào chi tiết vấn đề này ở phần sau, chỉ lưu ý một điều là cuối cùng tôi lại không dùng Apache httpd cho mục đích này mà lại sử dụng một máy chủ web khác chuyên trị static content. 

3.3. Chọn module cho Apache httpd 

Ngoài những module mà tài liệu "Securing Apache 2: step by step" đề nghị, chúng ta phải chọn thêm các module sau đây: 

- mod_rewrite, mod_proxy, mod_proxy_http: các module này sẽ hỗ trợ chúng ta trong việc thiết lập reverse proxy. 

- mod_security: module này giúp chúng ta cấu hình reverse proxy thành một application firewall để chống lại các dạng tấn công thường thấy vào các web-application chạy trên content server. -7- 

- mod_ssl: module này giúp chúng ta mã hóa dữ liệu của các kết nối từ client đến server thông qua giao thức SSL và TLS, biến giao thức HTTP không an toàn thành giao thức HTTPS rất bảo mật. -8- 

Phần quan trọng tiếp theo là chọn một MPM phù hợp với mục đích làm reverse proxy của chúng ta. MPM là viết tắt của cụm từ Multi-Processing Module, là một cải thiện đáng kể của Apache httpd 2.x so với Apache 1.x. Trong kiến trúc của Apache 2.x, MPM đóng vai trò hết sức quan trọng, nó chịu trách nhiệm lắng nghe trên các cổng mạng, chấp nhận các yêu cầu kết nối từ phía client, và chuyển các yêu cầu đó vào bên trong để Apache httpd xử lí -9-. Trong trường hợp này tôi chọn MPM worker. MPM worker sử dụng thread để phục vụ các request, do đó nó có khả năng phục vụ một lượng lớn các request nhưng lại tốn rất ít tài nguyên so với các process-based MPM khác như prefork. Đồng thời MPM worker vẫn khai thác đặc tính ổn định của cá process-based MPM bằng cách tạo ra nhiều process để trước, mỗi process có nhiều thread để sẵn sàng phục vụ client -10-

3.4. Biên dịch và cài đặt Apache httpd 

Câu hỏi kế tiếp là biên dịch các module theo kiểu nào. Như chúng ta đều biết, có hai cách biên dịch các module trong Apache httpd. Cách thứ nhất, gọi là phương pháp động, là biên dịch các module thành các thư viện liên kết chia sẻ (tương tự như các thư viện DLL trên Windows). Với cách này, các module sẽ được biên dịch thành các file .so, và sẽ được tải lên khi Apache httpd khởi động nếu cần (tùy theo các câu lệnh LoadModule trong file cấu hình conf/httpd.conf). Cách biên dịch thứ hai, gọi là phương pháp tĩnh, là gom tất cả module nhét vào trong file bin/httpd luôn (link statically). Khi khởi động và trong quá trình chạy, Apache httpd không cần phải tải thêm module nào nữa. Phương pháp tĩnh được xem là lựa chọn tốt hơn hết. 
Chọn phương pháp tĩnh, chúng ta không cần dùng đến module mod_so (module cần thiết để tải các file .so trong phương pháp động). Hơn nữa, theo khuyến cáo của Apache, sử dụng phương pháp tĩnh sẽ giúp tăng 5% về mặt performance so với phương pháp động. 

Chúng ta tải Apache httpd 2.x ở http://httpd.apache.org/download.cgi và tải mod_security tại http://www.modsecurity.org sử dụng các lệnh sau: 

Code:
localhost$ wget http://www.tux.org/pub/net/apache/dist/httpd/httpd-2.0.54.tar.gz
localhost$ wget http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz 
localhost$ tar -xzf httpd-2.0.54.tar.gz -C /usr/local/src
localhost$ tar -xzf modsecurity-1.8.7.tar.gz -C /usr/local/src


Tài liệu kèm theo của mod_security chỉ hướng dẫn cách biên dịch mod_security thành một thư viện chia sẻ của Apache httpd, do đó chúng ta cần phải chuẩn bị đôi chỗ để có thể biên dịch tĩnh mod_security: 

Code:
localhost$ cd /usr/local/src
localhost$ mkdir -p httpd-2.0.54/modules/security
localhost$ cp modsecurity-1.8.7/apache2/mod_security.c httpd-2.0.54/modules/security
localhost$ cp httpd-2.0.54/modules/echo/Makefile.in httpd-2.0.54/modules/security


Okay, xong xuôi, bắt đầu biên dịch như sau: 

Code:
localhost$ cd /usr/local/src/httpd-2.0.54
localhost$ ./configure \
                 --with-mpm=worker \
                 --disable-charset-lite \
                 --disable-include \
                 --disable-env \
                 --disable-status \
                 --disable-autoindex \
                 --disable-asis \
                 --disable-cgid \
                 --disable-cgi \
                 --disable-negotiation \
                 --disable-imap \ 
                 --disable-actions \
                 --disable-userdir \
                 --disable-alias \
                 --disable-so \
                 --with-module=security:mod_security.c \
                 --enable-modules='ssl rewrite proxy proxy_http'


Nếu quá trình biên dịch thành công, chúng ta sẽ tiếp tục như sau để cài Apache httpd vào hệ thống (tại thư mục mặc định là /usr/local/apache): 

Code:
localhost$ make
localhost$ su
localhost# umask 022
localhost# make install
localhost# chown -R root:sys /usr/local/apache


3.5. Đổi "root" của server 

Phần này xin vui lòng tham khảo tài liệu "Securing Apache 2:Step by Step." 

(còn tiếp) 

Phần sau: 
4. Cấu hình Apache httpd làm reverse proxy- 

---------------------- 
-0-: Thực tế phần tiếng Việt của tài liệu "Securing Apache 2: Step-by-Step" tôi sao chép khá nhiều từ bản dịch và mở rộng tài liệu "Securing Apache: Step-by-Step" http://www.securityfocus.com/infocus/1694) của hnd (aka conmale) 

-1-: ngoài web-server ra, giải pháp reverse proxy (hoặc tương tự) có thể áp dụng cho các dịch vụ khác như VNC (xem thử http://sourceforge.net/projects/vnc-reflector/), mail (xem thử tài liệu "Qmail as the mail gateway" của hnd@diendantinhoc.org). Chỉ duy nhất một dịch vụ tui chưa làm được reverse proxy là FTP, bồ nào có thông tin về ftp reverse proxy thì cho tui vài xu. 

-2-: chúng ta vẫn có thể thiết lập reverse proxy để bảo vệ cho các web-server nằm ở ngay vùng DMZ, hoặc thiết lập một reverse-proxy đặt ngay trong vùng Internal để bảo vệ các web-server ở vùng Internal từ các mối hiểm họa đến từ bên trong. 

-3-: Ngoài Apache httpd ra, còn có rất nhiều software khác có thể được ứng dụng để làm reverse proxy mà đáng kể nhất là pound. Thao khảo thêm tại địa chỉ http://www.apsis.ch/pound/. 

-4-: Trustix là một distro nhỏ gọn (trọn bộ cài đặt chỉ có một CD duy nhất) được xây dựng dựa trên RedHat với hai mục tiêu chính là bảo mật và ổn định. Phiên bản stable mới nhất của Trustix là 2.2, phiên bản unstable là 3.0 RC2. Tham khảo thêm tại http://www.trustix.org 

-5-: Tham khảo tài liệu Linux Security HOWTO có tại http://www.tldp.org để biết thêm chi tiết. Phần mềm Bastille-Linux cũng sẽ rất hữu dụng trong việc secure cho các Linux server. 

-6-: Chỉ có sử dụng Apache 2.x thì những luật cản lọc OUTPUT của mod_security mới có tác dụng. 

-7-: Tham khảo thêm tài liệu về mod_security tại địa chỉ http://www.modsecurity.org và loạt kí sự của conmale về các vụ tấn công DDoS vào HVA. 

-8-: Kể từ phiên bản Apache httpd 2.0, mod_ssl đã được chính thức đưa vào Apache httpd. Tham khảo thêm tài liệu về mod_ssl tại địa chỉ http://www.modssl.org. 

-9-: Chọn lựa MPM cho Apache 2.x là một vấn đề cực kì quan trọng, ảnh hưởng rất nhiền đến performance của server, do đó tôi đề nghị những ai quan tâm đến Apache 2.x, nên tham khảo thêm tài liệu về MPM tại http://httpd.apache.org/docs-2.0/mpm.html 

-10-: Tại sao thread lại "ngon" hơn process về performance? Những ai quan tâm đến vấn đề này xin tìm các tìm đọc các tài liệu sau đây: 
- Advanced Linux programming http://www.advancedlinuxprogramming.com
- Understanding the Linux kernel. 


Tác giả Mrro 

Monday, April 23, 2012

MySQL Master Master Replication Tutorial


Source: http://www.howtoforge.com/mysql_master_master_replication

This tutorial describes how to set up MySQL master-master replication. We need to replicate MySQL servers to achieve high-availability (HA). In my case I need two masters that are synchronized with each other so that if one of them drops down, other could take over and no data is lost. Similarly when the first one goes up again, it will still be used as slave for the live one.
Here  is a basic step by step tutorial, that will cover the mysql master and slave replication and also will describe the mysql master and master replication.

Notions: we will call system 1 as master1 and slave2 and system2 as master2 and slave 1.

Step 1:
Install mysql on master 1 and slave 1. configure network services on both system, like 
Master 1/Slave 2 ip: 192.168.16.4
Master 2/Slave 1 ip : 192.168.16.5 

Step 2:
On master 1, make changes in my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

log-bin
binlog-do-db=<database name>  # input the database which should be replicated
binlog-ignore-db=mysql              # input the database that should be ignored for replication
binlog-ignore-db=test

server-id=1

[mysql.server]
user=mysql
basedir=/var/lib


[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Step 3:
On master 1, create a replication slave account in mysql.
mysql> grant replication slave on *.* to 'replication'@192.168.16.5 \
identified by 'slave';
and restart the mysql master1. 

Step 4:
Now edit my.cnf on Slave1 or Master2 :

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
server-id=2

master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


 Step 5:
Restart mysql slave 1 and at
mysql> start slave;
mysql> show slave status\G;

*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.16.4
                Master_User: replica
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: MASTERMYSQL01-bin.000009
        Read_Master_Log_Pos: 4
             Relay_Log_File: MASTERMYSQL02-relay-bin.000015
              Relay_Log_Pos: 3630
      Relay_Master_Log_File: MASTERMYSQL01-bin.000009
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 4
            Relay_Log_Space: 3630
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 1519187
1 row in set (0.00 sec)
Above highlighted rows must be indicate related log files and  Slave_IO_Running and   Slave_SQL_Running: must be to YES.

Step 6:
On master 1:
mysql> show master status;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
|MysqlMYSQL01-bin.000008 |      410 | adam         |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

The above scenario is for master-slave, now we will create a slave master scenario for the same systems and it will work as master master.

Step 7:
On Master2/Slave 1, edit my.cnf and master entries into it:
 [mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
server-id=2

master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306

log-bin                     #information for becoming master added
binlog-do-db=adam

[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Step 8:
Create a replication slave account on master2 for master1:
mysql> grant replication slave on *.* to 'replication'@192.168.16.4 identified by 'slave2';

Step 9:
Edit my.cnf on master1 for information of its master.
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1


log-bin
binlog-do-db=adam
binlog-ignore-db=mysql
binlog-ignore-db=test

server-id=1
#information for becoming slave.
master-host = 192.168.16.5
master-user = replication
master-password = slave2
master-port = 3306
[mysql.server]user=mysqlbasedir=/var/lib 

Step 10:
Restart both mysql master1 and master2.
On mysql master1:
mysql> start slave;
On mysql master2: 
mysql > show master status;
On mysql master 1:
mysql> show slave status\G;

*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.16.5
                Master_User: replica
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: Mysql1MYSQL02-bin.000008
        Read_Master_Log_Pos: 410
             Relay_Log_File: Mysql1MYSQL01-relay-bin.000008
              Relay_Log_Pos: 445
      Relay_Master_Log_File: Mysql1MYSQL02-bin.000008
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 410
            Relay_Log_Space: 445
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 103799
1 row in set (0.00 sec)

ERROR:
No query specified
Check for the hightlighted rows, make sure its running. Now you can create tables in the database and you will see changes in slave. Enjoy!! 

Study English Q&A

Answer: doremon-nobita


1. Hỏi: Một ngày em học 3-6h... vậy nên bố trí thời gian học như thế nào? 

Đáp: Vì bạn là người mới nhập môn, nên nếu bạn học liên tục 1 lúc 3...6...8 h toàn Tiếng Anh, thì bạn sẽ cảm thấy nhức đầu, vì bộ óc của chúng ta chưa thích nghi được với nó. Cho nên cách học tốt nhất và không gây nản lòng là: chia nhỏ khoảng thời gian bằng cách học nhiều lần trong 1 ngày, mỗi lần 45'-1h30' 

2. Vẫn có nhiều bạn chưa hiểu bài Repetition and Distinction nên các bạn không biết cách áp dụng. Vậy bây giờ nên áp dụng như thế nào? 

Đáp: Như đã nói giấc ngủ đối với Phân Tâm học có tác dụng là lọc các thông tin trong ngày mà bộ óc thu được từ nói, nghe, sờ... Cho nên sau khi ngủ dậy thì bộ óc của bạn đã "hoàn toàn sạch", bởi vậy để thúc đẩy quá trình thành công xảy ra nhanh hơn, thì nên học nhiều hơn vào lúc mới ngủ dậy-để đảm bảo lượng thông tin được "đổ" vào bộ óc đầu tiên phải là Tiếng Anh. Ngược lại nếu các bạn sau khi ngủ dậy... học thứ khác... làm việc... vui chơi, giải trí... sau đó mới học Tiếng Anh thì lúc này việc học khó mà vô, vì bộ óc đã đầy thông tin rồi, muốn nhét vào cũng chỉ là miễn cưỡng, điều này dễ gây nản lòng và lâu tiến bộ 

3. Hỏi: Em muốn học để thành công cho nhanh, nhưng lại học không nỗi vì thời gian ít mà lượng bài nhiều, vậy phải làm sao? 

Đáp: Topic này chỉ dành riêng cho những ai muốn dùng Tiếng Anh như Tiếng Việt, nên việc đốt cháy giai đoạn là điều cấm kỵ. Cho nên hãy cứ thong thả, thà học chậm mà chắc, còn hơn là cố đi cho nhanh sau đó chả nhớ được gì 

4. Có nên luyện nói song song với việc học Listening_Practice_Through_Dictation? 

Đáp: Có-điều này đã được trình bày trong các bài viết trước. Và hãy chú ý đến giáo trình American spoken english và Mastering the American Accent, còn cái pronunciation workshop là phụ. Lý do 

Việc tập nói để bạn học phát âm các âm căn bản, các từ đơn. Song song với tập nói thì cứ nghe và nhìn Listening_Practice_Through_Dictation để bộ óc được "tắm ngôn ngữ Tiếng Anh". Sau khi tập nói hết mấy từ đơn, thì đọc lại bài văn. Việc đọc lại bài văn sẽ trở nên dễ dàng và chính xác như người bản xứ, nếu bạn đã biết phát âm các âm cơ bản và "tắm Tiếng Anh" trong 1 thời gian dài, nhờ việc "tắm" mà bộ óc được làm quen dần với các tần số Tiếng Anh. Nếu ai đó phát biểu rằng: chúng ta là người Việt Nam, không phải người Anh-Mỹ nên việc nói giống như người bản xứ là điều không thể- điều này hoàn toàn không có cơ sở khoa học, chỉ là phát biểu dựa trên cảm nhận. Vì Doremon đã "giận" nên không phân tích nhiều như trước, ai không tin thì thôi, còn ai muốn biết thì xem lại Thuyết Tiến Hoá. Ai đó có ở miền Bắc, thì chỉ cần vào miền Nam sinh sống vài năm, "tắm trong ngôn ngữ của Miền Nam" 1 thời gian dài, để rồi xem người miền Bắc này có nói y chang người miền Nam không? Nếu không là do người này cửa đóng, then cài, màn che, rèm phủ, không tiếp xúc với người khác... 

Cái pronunciation workshop phát âm dở, nó chỉ là phần phụ trợ để học phát âm các âm còn thiếu trong American spoken english, nhưng nếu các bạn thích pronunciation workshop thì đó là tự do. Còn ai đó phát biểu cái Mastering the American Accent không có hình ảnh để học phát âm, thì câu trả lời: bạn chưa học hết American spoken và pronunciation workshop 

5. Trong tất cả cách học mà các bạn chia sẻ ở nơi khác về topic này thì Doremon thấy các bạn đã bỏ sót 1 điều: phim. Đó là hầu như tất cả chỉ chăm chủ vào nói với Listening_Practice_Through_Dictation mà không thấy ai đề cập đến phim. Vậy tác dụng của phim như thế nào? 

Đáp: như đã trình bày, phim có tác dụng là giúp bạn học Tiếng Anh kèm theo hình ảnh, âm thanh, nhân vật... cho nên không gây chán như mấy cái khác. Cho nên mỗi bữa nên coi phim Friends, mặc dù chưa hiểu gì thì cứ kệ nó, vì đây là giai đoạn mà các bạn "tắm Tiếng Anh". Cứ nghe nhân vật trong phim nói và nhìn vào sub Tiếng Anh-không hiểu cũng kệ 

Turn off laptop screen

In order to save power, I often turn off my LCD monitor when I away from keyboard for long. Bare in mind, blank screen is not consider turn off the monitor, because it still uses backlight. To do that, first you need to make sure you have ACPI enabled in your kernel.
cat /proc/acpi/info
If this exist, then you can turn off the monitor by running the command line bellow.
xset dpms force off 
xset is a util for setting property of X, dpms force off is to turn off the backlight.
What if I want to set it so that it can be done automatically? Check out xscreensaver at advance tab, there are power management where your can set the duration of getting idle it turns off the backlight. Another alternative you can do is to edit your xorg.conf. Check out this gentoo wiki and mini-HowTo for more information.

Tuesday, April 17, 2012

Recursive DNS

Source: http://unix.stackexchange.com/questions/24383/what-is-a-recursive-dns-query

A recursive DNS query happens when the DNS server you asked for the address of, say, unix.stackexchange.com doesn't know the answer itself, so it has to check with another server.
Normally this is actually how DNS works -- the DNS server of your ISP does not have the entire internet's domain records permanently memorized for obvious reasons, so the following exchange happens under the hood:
You: Hey, browser, show me http://unix.stackexchange.com
Browser: Sure thing! ... Hm. I don't actually know what IP address that is. Hey, OS, can you tell me where to find unix.stackexchange.com?
OS: Sure thing... Hmm. It's not in my own hosts file. Lemme just check my resolver configuration... Hey, ISP's DNS server, can you tell me where to find unix.stackexchange.com ?
ISP's DNS server: Sure thing! ... Hmmm. That one isn't in my list of authoritative domains, and right now I don't have that answer cached. Hey, internet root servers, can you tell me who is authoritative for stackexchange.com ?
Internet Root Servers: Sure thing! According to our records, you want ns1.serverfault.com, ns2.serverfault.com, or ns3.serverfault.com.
ISP's DNS server: Thanks, Internet Root Servers! Hi there, ns2.serverfault.com, can you tell me where to find unix.stackexchange.com ?
ns2.serverfault.com Sure thing! That's address 64.34.119.12
ISP's DNS server: Great, thanks! OS, the number you're looking for is 64.34.119.12.
OS: Great, thanks! Browser, you need address 64.34.119.12
Browser: Great, thanks! Okay, calling up the page now.
You: Yay, thanks Browser!
Now bear in mind that there are actually two types of name servers queried here -- authoritative DNS servers (the so called "root" servers that told your ISP's DNS server where to find SE.com's DNS server, and SE.com's authoritative DNS server) and recursing or forwarding DNS servers (your ISP's DNS server).
Normally, the former type is not supposed to respond to recursive queries, especially not from outside their own domain. Smaller ISPs sometimes save on costs by having their primary authoritative name server be the same server as their primary forwarding nameserver, but that's somewhat unsafe policy - especially if you don't configure your server to refuse recursive queries from outside your own IP range.
TL;DR: Recursive queries are part of the way the internet and DNS work, but not all DNS servers should be receiving recursive queries, and when the ones that shouldn't respond do respond you can get problems.

Difference Between JPA and Hibernate


Almost all of enterprise applications are required to access relational databases regularly. But a problem faced with earlier technologies (such as JDBC) was the impedance mismatch (difference between object-oriented and relational technologies). A solution for this problem was introduced through the introduction of an abstract layer called Persistence layer, which encapsulates database access from the business logic. JPA (Java Persistence API) is a framework dedicated for the management of relational data (using the persistence layer) in Java applications. There are many vendor implementations of JPA used within the Java developer community. Hibernate is the most popular such implementation of JPA (DataNucleus, EclipseLink and OpenJPA are some others). The newest JPA version (JPA 2.0) is fully supported by Hibernate 3.5, which was released in March, 2010.

What is JPA?
JPA is a framework for managing relational data for Java. It can be used with applications utilizing JSE (Java Platform, Standard Edition) or JEE (Java Platform, Enterprise Edition). Its current version is JPA 2.0, which was released on 10 Dec, 2009. JPA replaced EJB 2.0 and EJB 1.1 entity beans (which were heavily criticized for being heavyweight by the Java developer community). Although entity beans (in EJB) provided persistence objects, many developers were used to utilizing relatively lightweight objects offered by DAO (Data Access Objects) and other similar frameworks instead. As a result, JPA was introduced, and it captured many of the neat features of the frameworks mentioned above.

Persistence as described in JPA covers the API (defined in javax.persistence), JPQL (Java Platform, Enterprise Edition) and metadata required for relational objects. State of a persistence entity is typically persisted in to a table. Instances of an entity correspond to rows of the table of the relational database. Metadata is used to express the relationships between entities. Annotations or separate XML descriptor files (deployed with the application) are used to specify metadata in entity classes. JPQL, which is similar to SQL queries, are used to query stored entities.

What is Hibernate?
Hibernate is a framework that can be used for object-relational mapping intended for Java programming language. More specifically, it is an ORM (object-relational mapping) library that can be used to map object-relational model in to conventional relational model. In simple terms, it creates a mapping between Java classes and tables in relational databases, also between Java to SQL data types. Hibernate can also be used for data querying and retrieving by generating SQL calls. Therefore, the programmer is relieved from the manual handling of result sets and converting objects. Hibernate is released as a free and open source framework distributed under GNU license. An implementation for JPA API is provided in Hibernate 3.2 and later versions. Gavin King is the founder of Hibernate.

What is the difference between JPA and Hibernate?
JPA is a framework for managing relational data in Java applications, while Hibernate is a specific implementation of JPA (so ideally, JPA and Hibernate cannot be directly compared). In other words, Hibernate is one of the most popular frameworks that implements JPA. Hibernate implements JPA through Hibernate Annotation and EntityManager libraries that are implemented on top of Hibernate Core libraries. Both EntityManager and Annotations follow the lifecycle of Hibernate. The newest JPA version (JPA 2.0) is fully supported by Hibernate 3.5. JPA has the benefit of having an interface that is standardized, so the developer community will be more familiar with it than Hibernate. On the other hand, native Hibernate APIs can be considered more powerful because its features are a superset of that of JPA.




Source: http://stackoverflow.com/questions/9881611/whats-the-difference-between-jpa-and-hibernate

Some things are too hard to understand without a historical perspective of the language and understanding of the JCP.

Often there are third parties that develop packages that perform a function or fill a gap that are not part of the official JDK. For various reasons that function may become part of the Java JDK through the JCP (Java Community Process)

Hibernate (in 2003) provided a way to abstract SQL and allow developers to think more in terms of persisting objects (ORM). You notify hibernate about your Entity objects and it automatically generates the strategy to persist them. Hibernate provided an implementation to do this and the API to drive the implementation either through XML config or annotations.

The fundamental issue now is that your code becomes tightly coupled with a specific vendor(Hibernate) for what a lot of people thought should be more generic. Hence the need for a generic persistence API.

Meanwhile, the JCP with a lot of input from Hibernate and other ORM tool vendors was developing JSR 220 (Java Specification Request) which resulted in JPA 1.0 (2006) and eventually JSR 317 which is JPA 2.0 (2009). These are specifications of a generic Java Persistence API. The API is provided in the JDK as a set of interfaces so that your classes can depend on the javax.persistence and not worry about the particular vendor that is doing the work of persisting your objects. This is only the API and not the implementation. Hibernate now becomes one of the many vendors that implement the JPA 2.0 specification. You can code toward JPA and pick whatever compliant ORM vendor suits your needs.

There are cases where Hibernate may give you features that are not codified in JPA. In this case, you can choose to insert a Hibernate specific annotation directly in your class since JPA does not provide the interface to do that thing.

Monday, April 9, 2012

Hàm cộng hai số nguyên không dấu 32-bit viết bằng JavaScript

// Đây là hàm cộng 2 words lX và lY. Mỗi word được biểu diễn bằng 32 bits.
// Basics:
// Trước tiên ta cần hiểu bản chất của phép cộng 2 words. Bản chất của phép cộng là gồm phép XOR và phép AND các bits.
// Phép XOR tạo ra tổng 1. Phép AND tạo ra carry out (phần nhớ).
// Sau khi tính được carry out thì ta dịch trái 1 bit carry out này rồi lại đem cộng với tổng 1.
// Sở dĩ ta phải dịch trái 1 bit vì theo quy tắc thì phần carry out phải được cộng vào phần đứng trước.
// Việc cộng này lại quay về phép XOR và phép AND. Cứ lặp đi lặp lại XOR rồi AND đến khi carry out gồm toàn bit 0.
// Đến đây phép cộng hoàn tất. Kết quả của phép cộng là kết quả của phép XOR cuối cùng.

// Gọi r là kết quả của phép cộng.
// Nếu r >= (2 mũ 32) thì kết quả trả về là 1 số được biểu diễn bằng 32 bits thấp của r.
// Công việc chủ yếu của hàm này là đi cắt ra 32 bits thấp của r.
// Ban đầu sẽ lấy 30 bits thấp của 2 words đem cộng với nhau tạo ra số lResult.
// Lúc này ta đem lResult cộng với bit thứ 31 và 32 của lX và lY.
// Dựa vào bit thứ 31 của các số lX, lY và lResult mà tạo ra kết quả đúng đắn.
// Ta có trường hợp bit thứ 31 của lX và lY đều là bit 1. Khi đó ta ko cần care đến bit thứ 31 của lResult.
// Trường hợp bit thứ 31 của lX hoặc lY là bit 1. Khi đó ta lại xét tiếp hai trường hợp của bit thứ 31 của lResult.
// Trường hợp bit thứ 31 của lX và lY đều là bit 0. Khi đó ta cũng ko cần care đến bit thứ 31 của lResult.
function AddUnsigned(lX,lY) {
var lX4,lY4,lX8,lY8,lResult;
lX8 = (lX & 0x80000000); // Lấy bit thứ 32 của lX
lY8 = (lY & 0x80000000); // Lấy bit thứ 32 của lY
lX4 = (lX & 0x40000000); // Lấy bit thứ 31 của lX
lY4 = (lY & 0x40000000); // Lấy bit thứ 31 của lY

// Ta có 2 tables sau:
//   lX8|0 0 1 1  lX4|0 0 1 1
//   ---|------- (1)  ---|------- (2)
//   lY8|0 1 0 1      lY4|0 1 0 1

lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); // Lấy 30 bits thấp của lX + 30 bits thấp của lY

if (lX4 & lY4) { // Nếu cả lX và lY đều có bit thứ 31 là 1
// lResult có dạng
// lResult = 0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (x là 0 hoặc 1)
// lResult ^ 0x80000000 = 1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Lý do mà ta lấy lResult XOR với 0x80000000 là vì cả lX và lY đều có bit thứ 31 là 1 thế nên
// lấy bit thứ 31 của lResult (là 1 hoặc 0) đem cộng với bit thứ 31 của lX và lY thì đều carry out bit 1.
// Bây giờ ta có bit thứ 32 của lResult là 1.
// Việc còn lại phải làm là đem bit thứ 32 của lResult cộng với bit thứ 32 của lX và lY tức là cộng với
// lX8 và lY8. Phép cộng 3 bits này với nhau thực ra là đem 3 bits này XOR với nhau, lúc này ta không quan
// tâm đến bit carry out của phép cộng này vì chúng ta đang tiến hành phép cộng của 2 số được biểu diễn bằng
// 32 bit. Nếu phép cộng mà tạo ra kết quả lớn hơn hoặc bằng (2 mũ 32) thì ta chỉ lấy 32 bit thấp của kết quả
// này làm kết quả của phép cộng.
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}

if (lX4 | lY4) { // Nếu một trong hai số lX4 và lY4 có bit thứ 31 là bit 1
if (lResult & 0x40000000) { // Nếu bit thứ 31 của lResult là bit 1

// lResult = 01xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       lResult = 01xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// lX4     = 01000000000000000000000000000000  hoặc lX4     = 00000000000000000000000000000000
// lY4     = 00000000000000000000000000000000       lY4     = 01000000000000000000000000000000
// lResult ^ 0xC0000000 = 10xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);

} else { // Nếu bit thứ 31 của lResult là bit 0
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}

Addition of two words 32-bit

a word is a 32-bit quantity
addition of words i.e., modulo-2^32:
Lấy 2 words cộng với nhau sau đó lấy kết quả của phép cộng đem đi mod vơi 2^32. Kết quả của phép mod chính là kết quả của phép cộng 2 words.
Lý do: Gọi kết quả của phép cộng 2 words là R, khi đó nếu R < 2^32 thì suy ra R cũng là 1 word 32-bit. Khi đó R mod 2^32 = R
Nếu R >= 2^32 thì suy ra R không phải là một word 32-bit. Lúc này ta cần phải cắt lấy 32 bits thấp của R để làm kết quả của phép cộng 2 words. Việc cắt này chính là việc lấy R mod 2^32

Sunday, April 8, 2012

Earthquake, tsunami and nuclear crisis in Japan (March 2011)

English Homework

On March 11, 2011, one of the most powerful earthquakes in recorded history, and the most powerful ever in Japanese history, hit the northern part of the island of Honshu, in the Japanese Archipelago. It occurred off the coast of Miyagi Prefecture, with a magnitude of 9.0 MMS, causing enormous damage and rocking the island of Honshu up to 400 kilometers away. Immediately following the earthquake a massive tsunami bored into the coastline, with waves up to 10 meters (33 feet) high, some estimates bring it up to 15 meters (49 feet) and even 20 meters (66 feet) at the forefront of the wave, inundating huge areas of city and farmland, destroying everything in its path and killing thousands of people.

Japan also faced with a nuclear crisis: The quake damaged a nuclear power plant on the coast 240km north-east of Tokyo (Fukushima Dai-ichi (No. 1)). Radiation levels rised after four explosions at the plant and the cooling systems for the six reactors were knocked by the tsunami. After the quake, 11 of roughly 50 nuclear plants stopped producing power. As of late March 26, some 99 products, including milk and vegetables, had been found to be contaminated in Tokyo and five prefectures to its north and east.

Saturday, April 7, 2012

Install ibus-unikey on CentOS

1. Install ibus from yum
    # yum install ibus*

2. Go to googlecode
    http://code.google.com/p/ibus-unikey/downloads/list?can=1&q=ibus-unikey
    Download rpm file and install

Install g++ on CentOS

1. You must install RPMForge
The preferred rpmforge-release package to retrieve and to install in order to enable that repository is one of the two listed above.

Install DAG's GPG key
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
Verify the package you have downloaded
rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm
 
<!> Security warning: The rpmforge-release package imports GPG keys into your RPM database. As long as you have verified the md5sum of the key injection package, and trust Dag, et al., then it should be as safe as your trust of them extends.

Install the package
rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm
 
This will add a yum repository config file and import the appropriate GPG keys.

2. Using yum
# yum install gcc-c++

Friday, April 6, 2012

MP3 decoder and AVI decoder plugins for Movie Player on CentOS

If you are using CentOS and want to play MP3 files by Movie Player program. You should install MP3 decoder plugin:
# yum install gstreamer-plugins-ugly

AVI decoder:
# yum install gstreamer-ffmpeg

Cách học Tiếng Anh Hiệu quả nhất? (Phần 5)

Chào các bạn smilie . Có lẽ đây là bài cuối cùng trong loạt bài này. Doremon định viết thêm 2 bài nữa, nhưng suy đi tính lại nên thôi vì thấy không cần thiết

Chú ý: Trước hết các bạn đính chính lại giùm Doremon nhá, chẳng hiểu sao mấy bài trước lại gõ lộn tên phương pháp và tác giả. Tên đúng: Effortless English-AJ Hoge chứ không phải Effectless English-AJ Hope

Bài viết hôm nay có tựa đề: [color=orange]Effortless English[/color]

Đây là bài viết có mục đích: Phân tích công dụng và cách học Effortless English kèm theo đó là các tài liệu cần thiết-cho nên bài này dễ hiểu

1. Bao nhiêu là đủ?

Trước khi học có lẽ chúng ta nên bỏ chút thời gian để xem xét về vấn đề này: 1 ngày học Tiếng Anh bao nhiêu là đủ? Câu trả lời tuỳ thuộc vào điều kiện và hoàn cảnh của mỗi người, thế nhưng thành công không phải là 1 kết quả ngẫu nhiên, đó không phải là 1 sự may rủi như khi ta chơi 1 ván bài, mà nó bắt nguồn từ các quy luật, từ cách làm việc khoa học có thứ tự và nghiêm túc

Thế khoa học ở đây là gì? Như bài trước Doremon có nói về Quy luật chuyển hoá lượng chất, đó là thời gian để "chất và lượng cũ" chuyển hoá sang "chất và lượng mới" phụ thuộc vào trình độ của mỗi cấp bậc. Nếu bạn đang ở trình độ thấp thì để lên trình độ cao thời gian chuyển hoá sẽ ngắn, nhưng từ trình độ cao này để chuyển hoá lên trình độ cao nữa thì thời gian càng dài. Do vậy hãy quyết định mình muốn lên trình độ nào thì đầu tư lượng thời gian tương ứng với nó

Giả sử nếu 1 ngày bạn học 3h, thì kết quả mà bạn đạt được sẽ tương xứng với 3h, đó là trong giai đoạn đầu bạn sẽ tiến bộ rất nhanh, nhưng sau khi lên đến 1 trình độ nào đó (tương ứng với 3h được đầu tư cho mỗi ngày) thì bạn sẽ không bao giờ tiến lên được nữa. Điều này là do quy luật chuyển hoá lượng chất qui định. Nếu bạn muốn đun ấm nước thì để nó từ 25 độ C lên 50 độ C ta chỉ cần vài cục than, dăm ba thanh củi, và khi lên đến 50 độ C thì nhiệt độ sẽ không tăng nữa-nhiệt độ này tương xứng với nguồn nhiệt (than, củi) mà bạn đã đầu tư.

Do vậy hãy dành thời gian suy nghĩ về vấn đề này, có thể là 1 ngày, vài ngày thậm chí là vài tháng. Và nếu thật sự các bạn hiểu về bài viết Repetition ở trên, thì các bạn sẽ không bao giờ có câu hỏi: vì sao tôi thất bại. Vì bài viết trên đã trả lời về vấn đề này. Muốn trở thành Master thì có cái giá của nó, và cái giá này cao hơn nhiều so với cái giá của trình độ bình thường. Vậy 1 ngày nên học bao nhiêu là đủ?

Doremon đề nghị: các bạn 1 ngày nên học ít nhất là 6h. Thế nhưng ở đây lại nảy sinh vấn đề khác: tôi không đủ thời gian, tôi có công việc... Rất nhiều lí do, nhưng các lí do này hoàn toàn không có cơ sở để tồn tại nếu bạn chịu đặt câu hỏi: thời gian mà tôi đầu tư cho các lĩnh vực khác có giá trị hơn thời gian tôi đầu tư cho Tiếng Anh? Và Doremon sẽ nêu lên 1 vài giá trị để các bạn tự so sánh

Mỗi 1 người chỉ có 1 cuộc đời duy nhất, các bạn có muốn suốt cuộc đời mấy chục năm này ta quanh đi quẩn lại vẫn và "cái xó". Và các bạn có biết đây là thời đại của kỹ thuật số, của sự phát triển và thay đổi đến chóng mặt, cho nên đừng vì sự thiếu hiểu biết mà chỉ đặt câu hỏi: Ta nên làm nghề gì? Câu hỏi này được hình thành do kết quả của sự trì trệ về tri thức ở nơi mà ta đang sống. "Con muốn làm nghề gì? "Em muốn làm nghề gì?" "Mày muốn học cái gì?"... Và những con người này luôn cho rằng: họ chỉ làm mỗi 1 nghề cho tới khi chết. Và đây là câu hỏi cực kì giá trị của những chuyên gia dự báo về tương lai, của những con người có bộ óc sắc bén và tầm nhìn vượt lên trên đám đông, đó là: Ta nên làm nghề gì đầu tiên?

Ta nên làm nghề gì đầu tiên? Vâng, có nghĩa là để sinh tồn thì ta bắt buộc phải làm tới cái nghề thứ 2 và thứ 3... Khi thế giới đã chuyển mình qua thời đại kỹ thuật số, thì không có cái nghề nào là bền vững và cố định. Cho nên nếu bạn không muốn bị xã hội đào thải thì hãy thuận theo tự nhiên-Đạo Lão-Trang, xã hội đi đến đâu ta sẽ theo đến đó. Rất có thể bạn chưa đủ tầm nhìn để thấy được điều này, nhưng hãy cứ dùng bản thân của mình để trải nghiệm, sẽ tới 1 lúc nào đó mà cái nghề bạn đang học, công việc bạn đang làm, "cái ghế" bạn đang ngồi sẽ không 1 công ty nào cần nữa. Lúc này số phận bạn sẽ như thế nào? Bạn sẽ bị đào thải, có nghĩa là bị thất nghiệp và phải chấp nhận con đường làm công nhân để kiếm sống, vì tri thức mà bạn được học đã không còn hợp với thời đại nữa

Cho nên để đảm bảo ta không bị đào thải, thì ta phải có "cái thứ" mà xã hội luôn luôn cần. "Cái thứ" này là khả năng học tập tri thức mới. Và công cụ để đạt được mục đích trên là: Tiếng Anh-vì sao thì chúng ta nên tự nghiền ngẫm. Chỉ cần bạn sở hữu Tiếng Anh thì cũng đủ để bạn sinh tồn mà không cần bất cứ một tri thức chuyên ngành nào, bạn sẽ tin nếu bạn chịu lật các mục việc làm đang in đầy trên báo. Nhưng chúng chỉ là sự thật khi bạn đạt đến trình độ Master. Vấn đề này muốn viết thì còn dài lắm

Khi bạn đã đạt đến 1 trình độ nào đó về Tiếng Anh thì lúc này bạn sẽ không còn "học" nữa, vì đây là lúc bạn ứng dụng nó vào cuộc sống, bạn đọc sách tiếng anh, bạn xem phim tiếng anh... Cho nên trong giai đoạn đầu, bạn phải hi sinh thời gian ở các hoạt động khác cho môn này, và đây là giai đoạn khó khăn nhất

2. Effortless English





Nhìn vào ảnh ta thấy nó gồm nhiều phần, và phần mà các bạn nên học là Power English Now, vì
1. Các phần khác chỉ là "bản nháp" của phần trên
2. Là phần mở rộng
3. Chưa đầu tư nhiều...


Trong Power English gồm 30 bài, mỗi bài có nội dung như ảnh




Riêng từ bài 9 trở lên, có thêm POV text




Và dưới đây là nội dung của từng phần

1. Main text: Đây là phần AJ Hoge trình bày về các bài viết có liên quan đến phương pháp học, hay cách sống của ông ta để làm khơi dậy ước mơ người học-quan trọng: đây là bài viết có ý nghĩa

VD:




2. Vocab text: Phần này AJ Hoge giải thích ý nghĩa của các từ vựng mà ông ta cho là khó hiểu trong bài Main text-đây là phần vô nghĩa, tức là nó không có ý nghĩa gì hết, chỉ là để giải thích từ A có nghĩa là gì...

VD:




3. MS text: Đây là phần quan trọng nhất và dựa theo hiểu biết của Doremon thì trên thế giới chưa hề có 1 tài liệu nào như thế này. Đây là nơi mà AJ Hoge đã cố tình thiết để để ta học ngữ pháp 1 cách tự nhiên mà không cần đến bất cứ 1 cuốn sách ngữ pháp nào

VD:




Nhìn vào ảnh ta thấy:
- Bài MS text là 1 câu chuyện có ý nghĩa
-Toàn là câu ngắn, dễ hiểu
-AJ Hoge cố tình sử dụng các từ vựng được cho là khó hiểu trong bài Main, và được diễn tả lại trong Vocab text để tạo nên câu chuyện-mục đích là repetition-cái này quan trọng ra sao các bạn đã biết
-Các dạng câu rất cơ bản, và được sử dụng đi sử dụng lại rất rất nhiều lần-với mục đích vẫn là repetition. Cụ thể trong ảnh AJ Hoge sử dụng câu để diễn tả những việc xảy ra trong quá khứ. Các bạn không cần biết cấu trúc câu của thì quá khứ như thế nào, các động từ, tính từ... nằm ra làm sao. Mà các bạn chỉ cần hiểu cái câu trong bài MS text là được. Và đương nhiên, không phải nghe và nhìn 1 lần là hiểu và thuộc mà phải nhiều lần. Tất cả các câu trên đều được dùng lặp đi lặp lại rất rất là nhiều lần-1 bài MS text dài hơn 8 trang pdf. Hơn nữa 30 bài MS text đều sử dụng cùng loại câu này, cái khác là động từ, là chủ ngữ...

VD: bài MS text khác




Do vậy ở đây chúng ta thấy rằng: AJ Hoge đã thiết kế ra cái khung, là các dạng câu để nói về quá khứ mà Người Anh-Mỹ dùng. Cho nên các bạn phải sử dụng tốt cái này: nếu các bạn muốn đạt được trình độ ngữ pháp mà không học ngữ pháp thì các bạn phải nghe đi nghe lại MS text rất rất nhiều lần. Khi lặp đi lặp lại đã đủ nhiều thì như Phân Tâm học chúng sẽ được lưu trữ ở phần tiềm thức, và đến 1 lúc nào đó "lượng và chất cũ" đã chuyển hoá sang "lượng và chất mới" thì các bạn có thể dùng lại các câu này cho việc nói viết của mình mà không cần phải "ý thức"-tức là thành phản xạ hay bản năng. Điều này các bạn hãy dùng bản thân mình để kiểm chứng

Khi từ bài 9 trở lên AJ Hoge thêm vào POV là các câu diễn tả tương lai, diễn tả ý khác chứ không là quá khứ

VD:




Nhìn vào ảnh ta thấy những câu đó là để diễn tả ý: kể từ khi... A ( B hay C...) đã làm cái gì...

vd: Since she was a child Jan has always been very rude

Đương nhiên những cấu trúc câu này cũng được lặp đi lặp rất rất nhiều lần, nên các bạn sẽ quen. Các bạn không cần biết cấu trúc nó ra sao, vị trí từ... chỉ cần hiểu cái nghĩa và dùng nhiều thì "bộ óc" sẽ tự động sắp xếp sao đó, và ta sẽ lấy lại mấy câu này để dùng cho ta. Điều này chỉ xảy ra khi và chỉ khi: lặp đi lặp lại quá nhiều lần-vẫn phải nhắc lại điều này

Tương tự cho câu ở tương lai





Nhưng việc nghe đi nghe lại vẫn chưa đủ, còn đủ thì như thế nào, Doremon sẽ mô tả chi tiết sau, đây là giới thiệu sơ lược

3. Nên học Effortless như thế nào?

AJ Hoge có hướng dẫn sử dụng các phần trên, nhưng Doremon dùng nó theo cách khác. Lí do là AJ Hoge có góc nhìn riêng của ông ta, đó là góc nhìn của 1 nhà sư phạm có mấy chục năm kinh nghiệm giảng dạy, 1 người đã đọc không biết bao nhiêu công trình Ngôn Ngữ học và là tác giả của Effortless English. Nhưng Doremon cũng có góc nhìn riêng cuả mình dựa vào các mảng tri thức khác, và hơn nữa: các bạn chỉ có thể hiểu Effortless English khi mà các bạn đọc bài Main text cho nên AJ Hoge nói đây là phần đầu tiên phải học, riêng Doremon vì đã giảng giải cho các bạn ý nghĩa của phương pháp này nên Doremon đề nghị bạn học MS text trước. Tức là ở đây có sự khác biệt về thứ tự sử dụng bài học giữa Doremon và AJ Hoge. Vấn đề còn lại: các bạn nên học theo ai? Đây là quyền tự do lựa chọn của các bạn, các bạn có thể học theo Doremon hay AJ Hoge hay là theo con đường riêng của mình

AJHoge trình bày cách học thứ tự như sau:
-Học Main text trước, học đi học lại nhiều lần
-Tới Vocab text, học đi học lại nhiều lần để biết các từ vựng khó trong Main text
-Học MS
Doremon chỉ trình bày sơ bộ thôi, ai muốn cụ thể thì cứ đọc Main text sẽ rõ

Doremon trình bày cách học thứ tự như sau

-Học MS trước, và học hết 30 bài MS (từ bài 1-30smilieower English gồm 30 bài). Mục đích là cung cấp cho các bạn 1 lượng lớn repetition về các câu ở quá khứ
-Học POV, và học hết 22 bài (từ bài 9 trở lên mới có POV). Mục đích là cung cấp cho các bạn 1 lượng lớn repetition về các câu ở tương lai và hoàn thành
-Học Main text và học hết 30 bài
-Cuối cùng là Vocab text

Lí do vì sao Doremon lại xếp như vậy

1. Đa phần các bạn trình độ là nhập môn, nên làm sao các bạn có thể hiểu được bài Main text gồm 5 trang pdf dày đặt chữ, với các cấu trúc câu phức tạp? Nếu muốn hiểu các bạn phải tra từ điển, phải dịch... và làm điều này rất chán, dễ nản lòng và các bạn cũng chưa đủ khả năng để thực sự hiểu bài Main Text. Trái ngược lại là bài MS-câu chuyện có ý nghĩa, toàn là câu ngắn, hơn nữa từ vựng chỉ vài ba từ lặp đi lặp lại cho tới hơn 8 trang pdf. Cho nên Doremon nói học cái này trước vì nó sẽ cung cấp cho bộ não các bạn 1 lượng lớn các câu căn bản, lặp đi lặp lại, cho nên nếu học xong thì có gặp lại những câu này trong Main text các bạn không cần dịch cũng hiểu.Tiếp theo từ vựng ít, nên các bạn có thể "hốt hết" từ vựng của MS mà không gặp khó khăn gì vì nó cứ lặp đi lặp lại. Toàn những câu căn bản và giống nhau về cấu trúc, nên chỉ cần bạn hiểu được 1 câu thì các câu sau tốc độ xử lí thông tin sẽ nhanh hơn, và cứ thế cho đến 1 lúc nào đó các bạn sẽ không cần dịch mà vẫn hiểu câu đó như thường. Vì câu ngắn, gắn liền với câu chuyện của MS, nên nếu các bạn không hiểu câu nào thì: chỉ cần dựa vào câu trước nó và câu sau nó thì các bạn cũng phần nào đoán ra cái nghĩa của nó mà không cần đến từ điển. Và từ vựng chính trong MS là các từ khó trong Main text, nên nếu thuộc hết các từ này thì khi đọc Main text các bạn sẽ không còn thấy khó khăn, lúc này ta chỉ quan tâm đến nội dung của Main text. Tương tự cho POV

2. Sau khi học hết 30 bài MS và 22 bài POV thì các bạn đã có 1 lượng lớn từ vựng và cấu trúc căn bản. Cho nên lúc này các bạn có thể học Main text mà không khó khăn gì

3. Sau khi học hết 30 bài MS, 22 bài POV và 30 bài Main text thì ta sẽ quay lại để tiến lên trình độ mới. Lúc này các bạn mới có lí do để học Vocab. Vì trong bài Main, MS, POV các bạn sẽ bắt gặp những câu hay từ vựng mà dù các bạn có tra từ điển cũng không thể nào hiểu được, đó là các từ quá nhiều nghĩa, hay các câu slang... Cho nên nếu trong quá trình học MS, POV hay Main mà có câu hay từ nào đó ta không hiểu từ cứ kệ nó, đừng cố gắng hiểu mà hãy cứ để nó vào tai và mắt tự nhiên. Vocab sẽ giúp ta làm điều này: gọt giũa khả năng hiểu từ, hiểu câu. Doremon khuyên dùng nó sau cùng, vì lúc này ta mới có lí do để dùng, nếu dùng trước thì rất chán, vì cả đoạn văn dài chả có ý nghĩa gì hết, chỉ giải thích từ A có nghĩa... từ B là... Nhưng nếu dùng sau thì lại khác, vì sau khi học đi học lại nhiều lần MS, POV, Main mà ta vẫn chưa thực sự hiểu hết cái bài đó thì "tức" lắm, lúc này muốn hiểu thì Vocab

3. Nên học Effortless khi nào?

Như Doremon đã trình bày ở bài số 1, chỉ nên học Effortless English sau 6 tháng hay ít hơn, vì

1.Bài nào của Effortless English cũng dài, nên các bạn sẽ ngán liền khi va vào nó, vì việc lặp đi lặp lại 1 bài dài hơn 8 trang pdf không phải ai cũng làm nổi. Doremon muốn các bạn làm quen với English trước đã, và Doremon đã giới thiệu Listening_Practice_Through_Dictation. Lí do đã trình bày: bài này ngắn, 1 bài khoảng 1 phút 30'... nên việc lặp đi lặp lại cũng dễ dàng hơn nhiều. Sau khi học hết 4 cấp độ thì lúc này các bạn sẽ cảm thấy dễ dàng hơn với việc lặp đi lặp lại 1 bài dài 15 phút

2. Sau khi học hết Listening_Practice_Through_Dictation thì các bạn đã có 1 lượng từ vựng để có thể hiểu dễ dàng MS mà không cần dùng tới từ điển (trừ những từ khó như đã nói), lúc này ta chỉ chú tâm vào Distinction-cái này nói sau

3. Doremon muốn các bạn dùng Effortless tốt hơn nữa. Trong thời gian chuẩn bị để học Effortless khoảng 3-6 tháng thì các bạn phải nỗ lực tập phát âm theo 3 giáo trình đã giới thiệu. Hãy học đi học lại 3 cái phát âm này để làm sao đạt đến trình độ là đọc các âm cơ bản gần như người bản xứ. Chỉ cần các bạn khổ luyện nói đi nói lại nhiều lần thì sẽ thành công. Ai lười học, học qua 1 lần thì hãy nhớ lấy: Không repetition thì học lỗ tai bên trái sau đó ra lỗ tai bên phải. Sau đó tiến vào MS của Effortless thì sau khi các bạn nghe đã đủ nhiều thì hãy pause để đọc lại cái câu đó-tức là lúc này học phát âm, mà là phát âm cả câu dài chứ không phải là từ đơn

Doremon không muốn các bạn học phát âm bằng từ điển hay phần mềm vì âm rất không chính xác, hơn nữa 1 từ đơn đứng 1 mình nó đọc sẽ khác, nếu đứng trong 1 câu thì đọc sẽ khác. Nếu ai chịu học kỹ 3 giáo trình phát âm thì sẽ thấy họ có nói đến điều này. Cho nên MS trong Effortless English sẽ được sử dụng như là công cụ để ta học phát âm cả 1 câu, điều này còn có tác dụng Repetition-các bạn sẽ nhớ tốt hơn và dùng tốt hơn cái cấu trúc câu đó khi đọc nó thành tiếng

Chú ý: Dù phát âm từ đơn hay 1 câu thì phải càng to càng tốt, thậm chí là gào. Điều này AJ Hoge có nói và Lí Dương-tác giả của English Crazy cũng tương tự. Bạn chỉ có thể tự tin cũng như sử dụng tiếng anh 1 cách tốt nhất, nếu bạn đọc nó to lên, cho nên đừng có lí nhí

Định viết dài cái khúc này mà hết thời gian


4.Mối quan hệ tương hỗ

Nghe, đọc (bằng mắt), nói và viết có mối quan hệ sau, Doremon chỉ nêu lên mối quan hệ dễ thấy

1. Việc nói (to thành tiếng) tốt là kết quả của việc tập nói và nghe nhiều. Cho nên ai đó có hỏi nên học nghe trước hay nói trước, thì câu trả lời: học song song.

2. Việc nghe tốt là kết quả của việc nói tốt và nghe nhiều

3. Việc đọc (bằng mắt) tốt là kết quả của việc nói, nghe, đọc, viết

4. Việc viết tốt là kết quả của việc đọc nhiều

Vì thời gian có hạn nên Doremon trình bày "cẩu thả" như sau, đó là nhớ đâu, viết đấy

-Effortless English chỉ có tác dụng là cung cấp cái khung ngữ pháp, cho nên đừng hỏi tại sao ta học xong mà vẫn không giỏi ngữ pháp, vẫn chưa viết được. Nó chỉ là cái khung, là cái nền, và cái nền móng này sẽ giúp ta học cao lên. Đó là muốn viết hay, viết giỏi như tiếng việt tức là viết theo phản xạ, thì đó là kết quả của việc đọc nhiều. Hãy đọc sách Tiếng Anh nhiều vào, nhưng vẫn nhớ giùm: repetition. Các bạn vẫn chưa đủ trình độ để đọc 1 cuốn sách Tiếng Anh 1 lần xong rồi vứt, mà đọc xong nó 1 lần, hãy đọc lại nhiều lần, sau đó viết lại cái cuốn sách vừa đọc. Hãy nên nhớ để viết được Tiếng Việt thì ta đã viết nát không biết bao nhiêu cuốn vở, và nên đọc cuốn sách nào thì Doremon sẽ giới thiệu

- Để tăng khả năng dịch không cần hiểu, thì:

Các bạn phải đảm bảo có được lượng từ vựng cơ bản, đó là lí do tại sao Doremon khuyên nên học hết Listening_Practice_Through_Dictation, sau đó hạn chế tối đa việc dùng từ điển Anh -Việt. Có nghĩa là nếu học xong Listening_Practice_Through_Dictation, rồi học Effortless English thì chỉ được phép học các giáo trình thoả mãn điều kiện sau để đạt được sự tiến bộ nhanh nhất: có audio+pdf+bài văn+có diễn giải các từ khó

VD:



Tức là luôn có sự giải nghĩa những từ hoặc câu khó bằng Tiếng Anh dựa vào các từ cơ bản, như mind numbing= very boring, tức là ta chỉ cần biết nghĩ từ boring và very, sau đó ta sẽ biết mind numbing mà không cần dựa vào tiếng việt. Chỉ có làm điều này các bạn mới hiểu Tiếng Anh bằng chính Tiếng Anh. Sau đó nhờ đọc các sách nhiều mà mới biết khi nào là dùng mind numbing, khi nào very boring, giống như từ Việt Nam có rất nhiều từ đồng nghĩa như: ghê gớm, đáng sợ, kinh tởm... và tuỳ vào từng tình huống cụ thể mà ta dùng cho thích hợp. Và các tình huống này các bạn chỉ biết được khi các bạn đọc các câu truyện Tiếng Anh, đọc nhiều thấy người ta dùng ra sao thì ta bắt chước

VD: giáo trình Slang

Slang hay idiom mà những câu mà bạn không thể nào hiểu được nếu tra từ điển

VD:




Nhìn vào ảnh ta thấy cụm beat around the bush=...


5. Các giáo trình

Doremon tặng các bạn các giáo trình sau, Doremon chỉ giới thiệu tên sách và các bạn phải tự tìm link. Nếu các bạn có muốn học theo giáo trình nào thì hãy đảm bảo nó thoả điều kiện: Có audio+pdf+đoạn văn+giải nghĩa. Muốn biết vì sao thì đọc lại bài viết đầu tiên, và các tài liệu này trên mạng rất nhiều, ai không tìm được là do lười

1. Các giáo trình về slang

Nhìn vào cái hình cho nhanh




Chú ý: Đặc điểm của mấy giáo trình trên là ngắn, cho nên hãy học thuộc, nếu muốn tiến bộ nhanh. Còn muốn học thuộc thì: nghe nhiều+ đọc lại nhiều+viết lại và tra nghĩa+học thuộc

2. Các giáo trình tập đọc

Đây là link torrent 27 GB, gồm rất nhiều bài đọc thoả mãn: dài khoảng 30 trang, câu chuyện, trình độ thấp cho tới cao và có audio. Chỉ cần học hết Effortless English và "hốt hết" từ vựng của nó thì đọc mấy cái này vô tư và không cần dịch

http://kat.ph/usearch/English%20Graded%20Readers%20Mega%20Collection%20%2815.2.2012%29/

Lưu ý: chỉ nên nghe mấy giáo trình có audio trước, vì trong đó có cái có cái không

Chỉ cần đọc hết đống sách đó nhiều lần là bạn đã đủ khả năng viết vô tư và đọc các sách cấp cao vô tư. Ráng đọc 6 tháng mà hết là quá giỏi

3. Phim :

Tác dụng ra sao thì các bạn đã biết, và nó còn có tác dụng đó là: Nếu lúc nản hay chán mà vẫn phải đun nước thì phim

Đây là các bộ phim còn lưu trong máy của Doremon, giới thiệu các bạn, ai muốn xem gì thì xem. Và xem mình cần coi thể loại nào. Anh em coi thử xem có xxx trong đó không, do nhiều phim quá, tới gần 2T nên nhiều khi để nhầm smilie

1. Thể loại sôi động: xem cái này có sức sống để thấy yêu đời, muốn "vận động"




Chú ý là cái Victoria Secret Fashion show: cái này mấy em chân dài mỏ đỏ. Chán đời coi cái này thấy yêu đời lại liền smilie

2. Thể loại liên quan đến thảm hoạ




3. Thể loại kinh dị-cái này anh em cẩn thận, ai yếu tim coi có gì Doremon không chịu trách nhiệm




4. Thể loại lịch sử-thần thoại




Chú ý:Hãy để dành phim 300 cho tới khi nào ta chán đời hay mệt mỏi hay chán nản thì nó sẽ vực dậy lòng ham sống, ham học trong bạn.

5. Phim để học Tiếng Anh-đa phần là hài




6. Phim khoa học của BBC-cái này là thuốc bổ đây. Vì ta sẽ biết được thế giới là gì, các kì quan thắng cảnh, các chân trời rộng lớn...




Chú ý bộ phim HOME


7. Các bộ phim có giá trị nhân văn, hay dành cho thiếu nhi hay nhất




8. Phim chiến tranh, đấm đá





Bây giờ mới nhớ tới Distinction. Hãy nhớ rằng sự phân biệt là kết quả của việc lặp đi lặp lại quá nhiều lần. Cho nên giai đoạn đầu các bạn cứ lặp đi lặp lại, sau đó bắt đầu chú ý vào cái câu, cái từ, xem thử chúng giống nhau và khác nhau ở chỗ nào. Distinction là giai đoạn cao nhất và cuối cùng, ai làm được điều này thì coi như là đã tới đích, nhưng nó là kết quả của việc lặp đi lặp lại quá nhiều lần

Kết luận: Theo phương pháp mà Doremon giới thiệu thì các bạn sẽ không thấy chán, vì không phải học ngữ pháp, không làm bài test, không chọn đáp án A,B,C,D... Mà ta học Tiếng Anh đi vào đời sống, đọc sách tiếng anh có ý nghĩa với ta chứ không phải mấy bài "cùi bắp" trong giáo trình giảng dạy, chán thì coi phim vừa học vừa giải trí. Và trong này có 3 cột mốc

1. Chỉ cần bạn chinh phục được Listening_Practice_Through_Dictation thì đã khoẻ, vì sao thì đọc lại. Ráng 3-6 tháng là hết

2. Sau đó đến Effortless English, ráng phấn đấu thì 3-6 tháng là hết. Sau khi hết cái này thì bạn sẽ không còn học Tiếng Anh nữa. Vì lúc này bạn đã đủ dùng nó vào cuộc sống, bạn đọc sách thiếu nhi mà Doremon giới thiệu để giải trí, xem phim để thư giãn và cải thiện Tiếng Anh...

3. Đọc 1 lượng sách thiếu nhi khổng lồ, sau đó tăng dần cấp độ

Hết 3 giai đoạn này bạn dùng Tiếng Anh như người bản xứ vô tư

Có 1 vài lưu ý

1. Giai đoạn đầu chỉ tập trung nói (phát âm) và nghe
2. Nếu có xem phim thì chỉ xem phim Friend vì phim này có tác dụng học nhiều hơn là các phim khác, và 1 ngày xem khoảng 1h 30' Friend và xem cho hết 10 season sau đó xem lại...
3. Repetition sau đó Distinction-cái này nhắc liên tục, nếu ai đó mà quên thì thua. Các bạn chỉ đủ khả năng đọc sách, hay nghe bài nào đó 1 lần rồi vứt khi bạn lên đến trình độ cao
...

Thôi anh em học tốt, và đọc lại nhiều lần các bài viết trước để sắp xếp sau đó học cho hợp lý cũng như có thất bại thì cũng biết vì sao

Nhái lại giọng trên TV: Chương trình học Tiếng Anh của Doremon đến đây là hết, xin thân ái và chào tạm biệt các bạn

Cách học Tiếng Anh Hiệu quả nhất? (Phần 4)

Bài viết hôm nay có tựa đề: Repetition And Distinction

Đây là bài viết quan trọng nhất trên con đường thành công nhanh nhất. Vì quan trọng nên Doremon sẽ triển khai nó bằng Triết học và Phân Tâm học, cho nên có lẽ đây là bài viết khó hiểu nhất trong các bài đã viết. Nhưng các bạn hãy bỏ chút thời gian để suy tư về bài viết này, vì bài viết này có tác dụng lên mọi lĩnh vực và ngóc ngách của cuộc sống chứ không riêng gì anh văn, và nó sẽ trả lời cho các bạn câu hỏi: Vì sao tôi thất bại?

Trước khi viết Doremon cũng xin nhắc vài lời, vì là triết học, nên sẽ có 1 số anh em không thích, do các bạn bị ám ảnh bởi thứ triết học có tên gọi "Mac-Lenin". Nhưng sau bài viết này, mong các bạn thay đổi quan điểm, vì
triết học được cho là của Mac-Lenin, thật ra là của các bậc tiền bối khác, và trong biển rộng mênh mông của triết học thì Mac-Lenin chỉ là giọt nước. Doremon luôn cố gắng tránh các loại kiến thức này, vì nó quá trừu tượng, nhưng ngay tại đây, nếu không trình bày thì các bạn sẽ không có 1 cơ sở nào để tin rằng: bạn không đủ kiên nhẫn để repetition-sự lặp lại, thì bạn nên bỏ cuộc sớm để khỏi thất vọng. VD ngay tại thời điểm này Doremon khuyên các bạn nên nghe mỗi bài 500 lần-mấy ai đủ cam đảm để làm việc này, các bạn sẽ chán ngay lập tức, và cái chán này sẽ dẫn đến kết quả hiển nhiên: bạn học cả đời cũng không đạt được điều mình muốn. Nhưng nếu bạn hiểu được tầm quan trọng của repetition và bạn biết cách để repetition mà không chán, thì bạn sẽ thành công. Do vậy Doremon sẽ cố gắng trình bày thật gọn để các bạn hiểu được, nhưng các bạn phải cần "động não" thật sự, vì triết học không phải là môn học nói mấy câu là hiểu


Giới thiệu 3 ông tổ của triết học Phương Tây

Socrates (469–399 TCN)





Platon ( 427-347 TCN)-học trò của Socrates




Aristoteles ( 384 – 322 TCN)-học trò của Platon




Do vậy khi nhắc đến thuật ngữ "Triết học" chúng ta nên nhớ đến bộ ba thầy trò này, vì họ mới thực sự là người xứng đáng được nhắc đến với tên gọi "Nhà Triết học"



1. Qui luật chuyển hoá từ những sự thay đổi về lượng thành những sự thay đổi về chất và ngược lại

Sau thời gian ngồi gần 1h để suy ngẫm, Doremon quyết định thôi không viết cụ thể về vấn đề này, vì nó quá trừu tượng và sử dụng thuật ngữ triết học quá nhiều, nên Doremon sẽ miêu tả nó đơn giản như sau.

Bất cứ 1 sự vật nào trong tự nhiên cũng bao gồm 2 mặt: chất và lượng. Các bạn có thể không cần hiểu chất và lượng là cái gì, nhưng cái mà các bạn cần hiểu: mỗi 1 sự vật thì có chất và lượng tương ứng với nó. Cái bàn thì có "cái thứ" tạo nên cái bàn và qui định nó là cái bàn chứ không thể là cái khác. Tương tự cái ghế thì có "cái thứ" qui định nó là cái ghế... "Cái thứ" ở đây là chất với lượng. Cũng như mỗi 1 người trong chúng ta có những yếu tố qui định ta là ta chứ không thể là ai khác

VD: Nguyễn Văn A, sinh năm 1990, nhà xxx, quê xxx

Như vậy chỉ cần 1 yếu tố cấu thành cái bàn bị thay đổi, thì các yếu tố khác sẽ thay đổi theo từ đó dẫn tới cái bàn sẽ không còn là cái bàn nữa mà nó là cái khác

VD: Nước ở 25 độ C, nếu ta đun nóng nó lên tới hơn 100 độ C thì lúc này nó vẫn là nước, nhưng nước này đã ở thể khí chứ không còn thể lỏng như ban đầu

Vì sao Doremon phải viết cái khúc khó hiểu này? các bạn đọc hết bài sẽ rõ

2. Plateaus

Bạn hãy tưởng tượng xem, còn gì kinh khủng hơn khi ta học ngày này qua ngày khác mà mọi thứ vẫn như cũ. Nguyên nhân nào? Có phải do ta lười biếng, hay ta không được thông minh? Mục này sẽ trả lời cho bạn câu hỏi đó. Plateaus-có thể hiểu đây là trạng thái bình ổn hay trạng thái bảo toàn, nơi mà không có gì thay đổi. Đây là 1 điều hoàn toàn bình thường mà bạn nên chuẩn bị tâm lí để đối mặt dù bạn có học môn gì đi nữa.

Đến đây Doremon mới cho các bạn thấy sự quan trọng của: Qui luật chuyển hoá từ những sự thay đổi về lượng thành những sự thay đổi về chất và ngược lại. Hãy hình dung ví dụ về ấm nước, khi nó đang được đun từ 25 độ C lên khoảng gần 100 độ C thì nó vẫn là nước mặc dù ta cứ đun

Trong việc học hành cũng vậy, khi bạn học anh văn sẽ tới lúc bạn nản lòng vì mình đã cố gắng nhưng vẫn không tiến bộ. Lí do không phải vì bạn sử dụng sai phương pháp, cũng không phải bạn cố gắng chưa đủ mà vì "lượng và chất" chưa chuyển hoá đủ để cái cũ biến thành cái mới. VD: Bạn là A (với trình độ anh văn thấp) tương ứng với "lượng A và chất A", để "lượng A và chất A" chuyển hoá thành "lượng B và chất B" (tương ứng với trình độ anh văn cao) thì cần phải có thời gian để lượng và chất chuyển hoá

Trong thời gian lượng A và chất A (tương ứng với trình độ anh văn thấp của bạn) chưa chuyển hoá xong thì dù bạn có nỗ lực mấy mọi thứ vẫn không hề thay đổi. Vd như ấm nước, bạn đun nó từ 0 độ C đến gần 100 độ C, mặc dù bạn cứ đun liên tục qua ngày qua tháng, nhưng nếu bạn đun không vượt qua ngưỡng 100 độ C thì nước đó vẫn ở thể lỏng, chứ không thể nào chuyển hoá qua thể khí

Đây là chân lí cực kì quan trọng mà ít ai chịu để ý, đó là người ta hay nản lòng. Thế tại sao các bạn lại nản? Vì học hoài mà không thấy khá hơn. Thế tại sao không khá hơn? Câu trả lời là đây: Khi bạn đã biết được trạng thái bảo toàn-trạng thái Plateaus là nơi mà ta có học mấy cũng không tiến bộ, là do nó cần thời gian để "chất và lượng cũ" chuyển hoá thành "chất và lượng mới". Khi ta đã nắm bắt được điều này thì cái mà ta có thể làm được là: thúc đẩy quá trình chuyển hoá lượng chất để nó xảy ra nhanh hơn

VD: cũng là ấm nước với nhiệt độ 25 độ C ban đầu ở thể lỏng, nếu bạn đun chậm thì nhiệt độ nó sẽ tăng chậm và có thể bạn đun 6 tháng nó mới lên hơn 100 độ C và nước chuyển sang thể khí. Trái ngược lại nếu bạn đun 1 cách tốc lực ngày qua ngày thì có thể 3 tháng nó sẽ chuyển lên thể khí (hơn 100 độ C)

Nhưng câu hỏi ở đây là: Nếu bạn vừa đun vừa ngừng thì sao?-vấn đề này Doremon sẽ mổ xẻ ở phần Kaizen way

Như vậy ở đây chúng ta sẽ thấy rõ được điều này, khi bạn học bất kì môn học nào, sẽ xuất hiện giai đoạn (khoảng thời gian) mà bạn nỗ lực mấy cũng không thấy nó tiến bộ, đây là điều hoàn toàn tự nhiên, không phải do bạn không đủ trí thông minh hay bạn sử dụng sai phương pháp. Mà đó là khoảng thời gian mà "lượng cũ và chất cũ" chuyển hoá thành "lượng mới và chất mới", cái mà ta có thể làm trong giai đoạn này là phải tăng tốc quá trình chuyển hoá từ cái cũ sang cái mới, từ trình độ thấp lên trình độ cao. Do vậy khi các bạn rơi vào giai đoạn này thì thay vì nản lòng do học không tiến bộ, ta càng phải nỗ lực hơn trước để đẩy nhanh quá trình

Và "khoảng thời gian chuyển hoá" là phụ thuộc vào trình độ. Nếu xét về tài năng bình thường thì có rất nhiều người và càng lên cao thì càng giảm, cho lên loại trung bình thì nhiều, khá thì ít, giỏi thì chẳng có mấy ai và thiên tài thì trở thành đồ quí. Cho nên trong giai đoạn đầu-giai đoạn chưa biết gì, các bạn học Tiếng Anh sẽ tiến bộ rất nhanh, nhưng càng về sau "thời gian để các bạn tiến bộ càng dài", và cứ thế

Cho nên hãy chuẩn bị tâm lí cho trạng thái Plateaus-hãy thích thú với trạng thái này, thay vì nản lòng sao ta học không tiến bộ-đây là qui luật của tự nhiên mà không một ai tránh được. Rất có thể sẽ đến lúc bạn nghe tiếng anh đã dễ dàng nhưng lại không nói được, đọc sách không cần dịch vô tư nhưng lại không viết được. Những lúc thế này bạn phải tiếp tục học theo cách mà Doremon sẽ chỉ, chứ không được nản lòng, vì đây là sự trễ pha, là thời gian mà "chất và lượng cũ" đang chuyển hoá. Nếu bạn cố gắng đủ mạnh, đủ nhiều, thì nó sẽ chuyển sang "chất và lượng mới"-lúc này bạn sẽ nói viết vô tư


3. Kaizen Way

Ta quay lại câu hỏi: Liệu vừa đun vừa ngừng 1 ấm nước thì hậu quả ra sao? Tức là trong giai đoạn Plateaus, vì học không tiến bộ nên nản và bỏ thì điều gì sẽ xảy ra?

Khi ấm nước 25 độ C, nếu được đun, nhiệt độ sẽ tăng lên, khi không đun nữa thì nhiệt độ sẽ tụt xuống-không ai có thể phủ nhận chân lí này. Cho nên trong việc học hành, nếu bạn vừa học, vừa bỏ, hay sắp xếp lịch học theo kiểu: học 1 ngày bỏ 1 ngày, thì có thể bạn sẽ học cả đời mà không đạt được điều mình muốn

VD: Khi ấm nước 25 độ C, đun 1 ngày nó lên 50 độ C, bỏ 1 ngày nó tụt lại 25 độ C, vậy ta đun cả đời nó cũng không lên được hơn 100 độ C để qua thể khí. Nếu bạn đung theo kiểu, nỗ lực đun 1 ngày từ 25 chuyển lên 70 độ C, sau đó bỏ 1 ngày nó tụt xuống 40 độ C. Rồi hôm sau lại đun tiếp từ 40 độ C lên 80 độ C, rồi bỏ. Rất có thể sau 1 thời gian dài nó sẽ lên hơn 100 độ C để qua thể khí, nhưng cách học này rất mất thời gian. Vậy nên học thế nào?

Kaizen way-đây là thuật ngữ bắt nguồn từ Nhật Bản, nội dung của "Kaizen Way" tương tự như câu nói "Nước chảy đá mòn". Để đạt được sự tiến bộ bạn sẽ có 2 con đường, thứ nhất bạn nỗ lực liên tục trong 1 thời gian ngắn và thứ 2 là nước chảy đá mòn. Và nước chảy đá mòn là phương châm của AJ Hope và cũng là cách đun nước hiệu quả nhất

Để đảm bảo thành công nhanh nhất: nếu bạn cảm thấy hưng phấn thì hãy học Anh Văn cực kì nỗ lực, còn không thì học vừa đủ, nhưng không được phép bỏ ngày nào. Lí do vì sao thì hãy nhớ lại việc đun nước

Kaizen way là phương châm của Nhật Bản, mỗi 1 ngày cải thiện 1 ít và cải thiện liên tục không bỏ ngày nào. Nước chảy đá mòn là như thế, nếu bạn muốn đi con đường ngắn nhất thì dựa vào tri thức triết học mà Doremon đã phân tích: Kaizen way-đun nước liên tục không bỏ ngày nào để "lượng và chất cũ" chuyển hoá sang "lượng và chất mới" trong thời gian ngắn nhất

4. Repetition And Distinction

Đây là điều mà bất kì ai cũng chán nản, đó là tại sao tôi phải cứ lặp đi lặp lại 1 động tác? Michael Jordan-người hùng bóng rổ đã thổ lộ cảm xúc trên, ông ta đã ném những quả bóng cơ bản đến hơn 20 năm, tức là không biết bao nhiêu lần. Tiger Woods-người hùng sân gôn cũng lâm vào tình trạng tương tự, đó là ông ta cũng phải thực hiện các động tác đánh bóng căn bản đến hơn 20 năm. Một nhạc sĩ thiên tài ở thế kỷ 20 (quên mất tên) đã trả lời cho học trò câu hỏi: "Tại sao ngày nào thầy cũng phải đánh lại bản nhạc này?" "Vì mọi thứ tuyệt vời nhất đều là những thứ cơ bản"

Cho nên đây là tin buồn nếu bạn thiếu kiên trì, việc lặp đi lặp 1 động tác, hay học đi học lại 1 bài là điều mà không 1 ai muốn. Nhưng rất tiếc, cái gì cũng có giá của nó, bất cứ 1 chuyên gia nào cũng thừa nhận: "Đó là con đường để trở thành Master"

Và ở đây Doremon sẽ dùng Phân Tâm học để trả lời cho các bạn tại vì sao để trở thành Master thì ta phải lặp đi lặp lại. Như đã trình bày ở phần trước, bộ não chúng ta có 3 phần: ý thức, tiềm thức và vô thức. Trong đó nhiệm vụ chính của tiềm thức và vô thức là giải toả sự căng thẳng của não bộ. Và sự căng thẳng của não bộ có nguồn gốc từ ý thức, ý thức là 1 thành phần tệ hại nhất mà chúng ta lại đi ca ngợi như: anh có ý thức không vậy smilie ? ý thức thằng đó kém... smilie

Thế ý thức tệ hại ở chỗ nào? Đó là ý thức chỉ có thể quan sát và giải quyết sự kiện theo từng bước 1, và nó có giới hạn về khả năng chịu đựng. Giả sử nếu bạn suy nghĩ cũng 1 lúc quá nhiều vấn đề thì bạn sẽ thấy nhức đầu, cho nên bạn chỉ có thể suy nghĩ theo từng bước 1: tình yêu-gia đình-công việc... Cho nên không phải ngẫu nhiên mà có câu nói: "Nghĩ nhiều làm chi cho mệt óc". Khi ý thức đã bị "nhồi nhét" vượt quá ngưỡng chịu đựng thì người đó sẽ bị "điên". Cho nên Phân Tâm học của Sigmund Freud không phải ngẫu nhiên mà nó thành công, bởi vì dựa theo lí thuyết của nó mà người ta đã chữa khỏi không biết bao nhiêu căn bệnh tâm thần, mất trí nhớ và Sigmund Freud được mệnh danh là Albert Einstein của Vật Lí học

Hãy tưởng tượng ý thức có bộ nhớ 10 MB, nếu nhồi nhét vượt quá ngưỡng thì nó sẽ bị "nổ", cho nên ai đó có cảm thấy mình bị áp lực, hay căng thẳng thì tạm thải bớt thông tin ra không khéo "nổ". Và khi thông tin được chuyển vào não bộ quá nhiều, thì ý thức sẽ đẩy bớt thông tin xuống tiềm thức và vô thức, và phần vô thức là "bãi rác"-có nghĩa là nếu bạn nhìn, nghe... bất cứ 1 thông tin gì thì chúng đều lưu lại trong bộ óc, giống như cỗ máy tính ta đang dùng. Nhưng ta tưởng rằng ta quên, vì thông tin đó đã chìm xuống vô thức, nhưng thật ra không phải vậy, chỉ cần có sự can thiệp đúng đắn và chính xác của y học thì họ có thể "moi" thông tin đó ra-nhưng tạm thời chưa ai đủ bản lĩnh, vì "không có gì bí hiểm hơn là thứ đang nằm trong não của chúng ta"

Ý thức chỉ giữ lại những thông tin quan trọng, cần dùng, như "Mới thấy cô nàng tóc xanh, mỏ đỏ thì nhớ cái tên đã smilie ". Và cứ thế, nên trong 1 ngày bộ óc của ta thu nhận không biết bao nhiêu thông tin, và ý thức chỉ giữ lại cái cần sau đó thải hết thông tin thừa xuống tiềm thức và vô thức. Thế nhưng chúng ta lại cần đến 1 lượng lớn thông tin để sinh tồn, tức là ổ chứa phải nhiều hơn 10 MB. Hầu như ai cũng thấy, ta nói câu nào đó thì chúng đều tuỳ vào hoàn cảnh mà tuôn ra chứ không phải ta "ý thức"-tức nhớ nó trong đầu như thuộc lòng, hay việc ta nhớ 1 kỷ niệm nào đó, lúc cần thì ta mới nhớ, không thì quên. Những lượng thông tin "cần thiết" này được cất giữ ở phần tiềm thức, và ý thức có thể "moi" thông tin đó lên khi cần thiết. Và để "moi" được lên thì: lượng thông tin được cất giữ ở phần tiềm thức phải được lặp đi lặp lại quá nhiều lần, hay nó có liên quan đến các trạng thái cảm xúc đặc biệt.

Điều này có nghĩa là, tất cả mọi thông tin đi vào bộ óc chúng ta sẽ được sàng lọc: Nếu thông tin nào được lặp đi lặp lại quá nhiều lần, hay gắn liền với sự kiện đặc biệt gì đó, thì nó sẽ được cất giữ ở phần tiềm thức-lúc cần ý thức có thể "moi" lượng thông tin này lên, còn các thông tin không thoả mãn những điều kiện trên sẽ tuột hết xuống vô thức-nơi mà ta chả biết gì. Quá trình sàng lọc thông tin diễn ra khi ngủ, cho nên khi ta mới ngủ dậy thấy đầu óc minh mẫn, sảng khoái, do nó đã loại hết thông tin, và sau 1 ngày lao động mệt nhọc thì lại đầy-phải ngủ...

Và đây là lí do tại sao: nếu 1 bài học hay 1 động tác bạn làm chưa đủ nhiều lần thì nó hoàn toàn vô bổ. Có nghĩa là muốn dùng thì bạn phải ráng nhớ, nhưng bộ nhớ của ý thức có hạn, phải chuyển hết thông tin đó xuống tiềm thức bằng cách lặp đi lặp lại nhiều lần, để rồi thông tin cứ "đọng" ở tiềm thức, và khi cần dùng thì "moi" lên-hay là bản năng hay phản xạ

Như vậy nếu bạn không repetition thì đồng nghĩa với việc "học lỗ tai bên trái sau đó đó ra bên phải". Cho nên đây là điều bắt buộc dù có muốn hay không vì bộ não chúng ta được thiết kế như thế, và Doremon chỉ có thể giúp các bạn bằng cách: làm thế nào để repetition ít chán nhất? Cái này dành cho bài sau

Nhân tiện ở đây nói thêm về "Con người thiên tài trong mỗi chúng ta", vì cái này bổ ích. Như đã nói là mọi thông tin không cần thiết đều bị đẩy xuống hết vô thức, thế các bạn có bao giờ tự hỏi: ý thức-phần ta cho là trí tuệ, thông thái đến cỡ nào? Cùng lắm để giải quyết 1 vấn đề, chúng ta chỉ "ý thức" được vài sự kiện, sau đó tích phân, tổ hợp, đạo hàm... rồi cho ra kết quả-và ta tin rằng kết quả này tuyệt vời. Thế nhưng theo phân tâm học, thì giờ ta thấy: vô thức chứa đựng 1 lượng thông tin lớn đến cỡ nào, mọi thông tin từ lúc ta ra đời, nghe thấy và nhìn đều chứa hết chỗ này.

Vậy nếu có 1 vấn đề rắc rối nào đó, chỉ dựa vào lượng thông tin ít ỏi mà ta "ý thức" được, thì ta có đủ khả năng để giải quyết? Nếu không giải quyết được thì ta bó tay và chấp nhận "giới hạn ta tới đó", "tài năng ta chỉ vậy". Nhưng nếu dựa vào lượng thông tin khổng lồ chứa ở phần "vô thức" thì vấn đề có thể giải quyết hay không? Giải quyết tốt ấy chứ, vì vô thức chứa thông tin nhiều hơn ý thức đến vô cùng lần. VD: Để tìm ra kẻ trộm ta chỉ có vài thông tin mà ta nhìn, thấy, nghe... mà chưa chắc đã thấy rõ, nghe rõ... thế nhưng chỉ cần ai đó cung cấp cho ta vài thông tin về kẻ trộm nữa thì thằng trộm này đố mà thoát

Do vậy hãy giải phóng thiên tài ra đi, muốn làm điều này thì nhắc lại: Ước mơ cho lớn để bị ám ảnh, sau đó cứ học hành, và rồi một ngày nào đó khi thông tin tích luỹ đủ nhiều, sự ám ảnh đủ mạnh thì vô thức sẽ giúp chúng ta 1 tay. Và: Khi thiên tài đã thức dậy thì không có gì là không thể