Thứ Năm, 20 tháng 11, 2014

Tự học Javascript (phần 1): variables,literals

1. VARIABLES
Biến dùng để lưu trữ 1 giá trị trong Javascript
Khai báo biến: dùng ký tự var để khai báo biến: var x = 3;, var name = 'Join';
Một biến được khai báo nhưng không gán giá trị thì sẽ là undefined
NaN được trả về khi 1 hàm toán học tính toán thất bại hay convert sang number lỗi. VD: parseInt('aa') => NaN
Trong javascript có thể sử dụng biến trước khi khai báo mà không gây ra lỗi, gọi là hoisting
VD: console.log(x); // x sẽ có giá trị là undefined
var x = 3; // x sẽ có giá trị là 3
const dùng để khai báo 1 hằng số ( giá trị cố định cho biến Constant )
const f = 50;
Tên của Constant không được trùng với tên hàm, tên biến.
const có thuộc tính giống như 1 biến

2. LITERALS
Literal (giá trị gán cho biến) trong Javascript
1. Array:

  • Array có thể chứ 0 hoặc nhiều phần tử.
  • Chiều dài mảng tùy thuộc vào số lượng phần tử trong mảng.
  • Cấu trúc khai báo giống như biến. VD: var myArray = ['a','b',1];
  • Array có thể chứ nhiều kiểu dữ liệu cùng lúc, vừa number, vừa string.. VD: var myArray = ['a','b',1];
  • Nếu đặt 2 dấu phẩy liền nhau trong Array, thì phần tử giữa 2 dấu phẩy là undefined. VD: var myArray = ['a',,1] // myArray[1] = undefined
2. Object

  • Là một danh sách các cặp dữ liệu dạng key - values, cách nhau bằng dấu phẩy. VD: var myObject = {name: 'Join', age: 25}
  • Để truy cập dữ liệu trong 1 object có 2 cách
    • C1: object[key]. VD: myObject["name"] // Join
    • C2: object.key. VD: myObject.name // Join

Chú ý: key có thể là 1 string hoặc 1 number. VD: var myObject = {1: 'One', 2: "Two"}
Nếu key là 1 số thì không thể truy cập dữ liệu bằng cách object.name. VD: myObject.2 // error

3. String
string trong javascript được khai báo trong ngoặc kép "" hoặc ngoặc đơn ''
string literal có thể sử dụng các hàm của string object vì javascript tự động convert string literal sang string object tạm, gọi hàm và huỷ string object tạm đó

Thứ Ba, 11 tháng 11, 2014

So sánh variable, constant, literal


  • Variable: là tên của vị trí trong memory nơi  lưu giá trị  để sử dụng.
  • Constant: Giống như biến nhưng nhưng không thể thay đổi giá trị sau khi khai báo.
  • Literal: là giá trị được gán cho biến hay constant.
Ví dụ: Trong Javascript ta khai báo:
var myVar = 10; // myVar là variable, 10 là literal.
const myConstant = 50; // myConstant là Constant , 50 là literal.

Thứ Hai, 16 tháng 6, 2014

Git Basic

Record change to the repository

As we add or modify a file, Git sees them as modified or new file. After added / modified, we have to stage the modified file and commit it to Git repository.


The lifecycle of the status of your files.

Some basic command in Git

  1. git status : to check status of file
  2. git add <file name>: to tracking a new or modified file.
  3. git commit:  commit new / modified file to Git database.
  4. git diff: To see what you have changed.  Note: git diff  just show the change when the file not yet staged. To see what you have change in staged, use git diff --cached
  5. git rm: remove the file from repository and working directory. To remove file only in repository (untracked file) . Use: git rm --cahed

Thứ Sáu, 14 tháng 9, 2012

Thực thi chương trình Python

        I.            Quá trình thực thi của chương trình Python
Quá trình thực thi của chương trình Python gồm 2 giai đoạn:
1.       Source code của chương trình Python được thông dịch sang dạng mã byte code bởi Python Interpreter.
2.       Mã byte code sau khi được thông dịch sẽ được chuyển cho Python Virtual Machine thực thi.

Python Interpreter là gì?
Interpreter( trình thông dịch) là một chương trình thực thi các chương trình khác.
Python Interpreter chỉ là một chương trình được viết bằng C (đây là lý do Python còn được gọi là Cpython),  nó sẽ đọc source code của chường trình python và thực thi source code đó.

Thông dịch chương trình Python
Khi một chương trình Python được thực thi.  Đầu tiên, Python Interpreter sẽ thông dịch code của chương trình Python thành mã byte code.  Mã bytecode sẽ được lưu vào file có đuôi là *.pyc.  Sau đó, Python sẽ thực thi mã byte code đó
Và khi chương trình được thực thi vào các lần tiếp theo, nếu source code của chương trình không thay đổi, Python sẽ load mã byte code từ file pyc này để thực thi mà không cần thực hiện lại quá trình thông dịch source code thành mã Byte code. Như vậy, chương trình sẽ được thực thi nhanh hơn.
Vậy làm sao biết source code của chương trình Python đó có thay đổi hay không để tiến hành thông dịch lại ở các lần thực thi tiếp theo, hay chỉ cần load mã byte code từ file pyc để thực thi? Câu trả lời là Python sẽ dựa vào ngày chỉnh sửa của file (Date modified), nếu ngày chỉnh sửa của file Source code (.py) và file chứa mã byte code (pyc) khác nhau thì nó sẽ tiến hành thông dịch lại source code thành byte code.
Nếu Python không có quyền ghi  (write access) trên máy tính, thì nó sẽ lưu mã byte code vào memory, rồi thực thi, và mã byte code này sẽ bị xoá khi thoát chương trình. Vậy, để cải thiện hiệu năng của chương trình, Python interpreter nên có quyền ghi file trên ổ đĩa.

Python Virtual Machine (PVM)
Python Virtual Machine là một phần và là bước cuối cùng trong quá trình thực thi chương trình python của . Sau khi thông dịch source code thành mã byte code , mã bytecode này sẽ được chuyển giao cho PMV thực thi,  PVM sẽ duyệt qua từng mã byte code và thực thi nó. Vậy PVM chính là run-time engine của python




      II.            Hiệu xuất của Python
Vì là ngôn ngữ thông dịch nên tốc độ thực thi của Python không bằng với những  ngôn ngữ biên dịch như: C#, Java…. vì Python được biên dịch thành mã bytecode, không phải dạng mã máy ( mã nhị phân). Mã bytecode này được thực thi bởi Python  Virtual Machine (PVM) mà không phải được thực thi trực tiếp bởi CPU.

    III.            Các biến thể khác của Python
                            i.        Cpython
Cpython chính là python, vì Interpreter của nó được viết bằng C nên nó còn được gọi là CPython
                             ii.      Jython
                Còn được gọi là Jpython,  là một biến thể khác của Python, nó được tạo ra cho mục đích tích hợp Python với ngôn ngữ lập trình Java. Các lập trình viên vẫn viết các lệnh, cú pháp của Python vào file py, sau đó, file py sẽ được thông dịch thành mã bytecode của Java và mã Byte code đó được thực thi bởi Java Vitual Machine (JVM).
                             iii.      IronPython
Là một phiên bản khác của Python, nó mới hơn Cpython và Jython. Nó được thiết kế mục đích để tích hợp với các ứng dụng  được viết bằng .NET Framework của Microsoft. Cũng như Jython, IronPython vẫn sử dụng cú pháp của Python vào file py, nhưng nó được thực thi trong môi trường .NET.


Thach Nguyen