CategoriesDevOpsLearn

Học Javascript qua ví dụ – Learn Javascript by examples

Bài viết tổng hợp các ví dụ về Javascript, qua đó có thể giúp chúng ta củng cố, nắm chắc kiến thức về Javascript hơn.

Mục lục

  1. Toán tử delete
  2. Closure trong vòng lặp

1. Toán tử delete

Xét đoạn code, và đoán xem các output sẽ là gì?

//Ví dụ 1:
var myCar = 'Range Rover';
var getMyCar = (function(){
    delete myCar;
    return myCar;
});
console.log(myCar); //Kết quả 1
//Ví dụ 2:
function RangeRover(){};
RangeRover.prototype.color = 'White';
RangeRover.prototype.year = '2016';
var myCar = new RangeRover();
delete myCar.year;
console.log(myCar.year); //Kết quả 2
//Ví dụ 3:
delete RangeRover.prototype.color;
console.log(myCar.color); //Kết quả 3

Kết quả:

Range Rover //Kết quả 1
2016 //Kết quả 2
undefined //Kết quả 3

Giải thích:
Ví dụ 1: Toán tử delete  dùng để xoá một thuộc tính của một đối tượng, myCar  là một biến và không phải là một đối tượng, vì thế kết quả cuối cùng vẫn là Range Rover  vì toán tử delete  không ảnh hưởng đến myCar .
Ví dụ 2: Như đã nói ở trên, toán tử delete  dùng để xoá một thuộc tính của đối tượng, vậy tại sao myCar.year  vẫn không bị ảnh hưởng bởi toán tử delete ? Lí do là vì myCar.year  là một thuộc tính kế thừa từ RangeRover.year , nên myCar.year  cũng không bị ảnh hưởng bởi delete .
Ví dụ 3: Kết quả là undefined  vì thuộc tính color  đã bị xoá trong RangeRover.prototype.color , đồng thời thuộc tính kế thừa color  của instance myCar  cũng bị loại bỏ theo.

2. Closure trong vòng lặp

Đang cập nhật..
 

CategoriesDevOpsDo

Cài đặt Laravel Homestead – môi trường phát triển chuẩn cho Laravel – sử dụng Vagrant, Virtual Box

Hãy hình dung, bạn có một nhóm cùng với nhau phát triển một dự án, khi đó vấn đề nảy sinh là: Mỗi thành viên trong team sử dụng một hệ điều hành khác nhau, dẫn đến khả năng phát sinh lỗi khi phát triển là rất cao, nhiều khi dự án chạy trên máy người này thì ổn, nhưng sang máy của một thành viên khác thì lại lỗi, gây khó khăn cho cả nhóm, tốn thời gian sửa lỗi không cần thiết. Vấn đề này không chỉ nảy sinh với những nhóm phát triển Laravel mà nó cũng là vấn đề với bất kỳ nhóm phát triển nào.

Vậy thì, làm thế nào để giải quyết vấn đề này?

Ý tưởng: Tất cả các thành viên trong nhóm sẽ cài đặt một máy ảo trên máy của mình và làm việc trên đó, máy ảo này sẽ được cài đặt đầy đủ tương đương với môi trường khi deploy.
Vấn đề phát sinh tiếp theo là mỗi thành viên khi cài đặt máy ảo của mình thì chưa chắc đã cài đặt đủ, đúng phiên bản các công cụ, dịch vụ, và hơn nữa là cũng khá tốn thời gian để cài đặt từng cái.
Và một vấn đề nữa, nhiều bạn đọc đến đây chắc vẫn đang băn khoăn “Nếu cài máy ảo thì tôi lại phải code trên máy ảo à? tôi không thích như vậy! tôi thích làm việc trên hệ điều hành quen thuộc của tôi cơ!”.
Chúng ta có quá nhiều vấn đề nhỉ, nhưng không sao, Vagrant có thể giúp chúng ta xử lý hết những vấn đề ở trên.
Trước hết hãy tìm hiểu xem “Vagrant là gì?”

Vagrant là gì?

Vagrant là một sản phẩm của HashiCorp, nó là một công cụ giúp chúng ta xây dựng môi trường phát triển. Hiểu đơn giản thì vagrant sẽ là cầu nối giữa máy tính cá nhân của chúng ta và máy ảo. Chúng ta vẫn code trên máy chúng ta như bình thường, và vagrant sẽ tự động đồng bộ nó với máy ảo, và máy ảo sẽ làm nhiệm vụ biên dịch và thông dịch, và hơn nữa máy ảo này có thể share được cho mọi người trong nhóm. Cool 😀
Hiểu sơ sơ vậy đủ rồi, giờ bắt tay vào cài đặt thôi.

Cài đặt Virtual Box

Đầu tiên chúng ta sẽ cài Virtual Box, đây là phần mềm tạo và cài đặt máy ảo, trên máy ảo sẽ được cài đặt sẵn môi trường làm việc phù hợp.
Ví dụ máy ảo để lập trình Laravel (Web/PHP) sẽ bao gồm:

  • Ubuntu 14.04
  • Git
  • PHP 7.0
  • HHVM
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • Postgres
  • Composer
  • Node (With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd

Chú ý, theo kinh nghiệm cá nhân mình, phiên bản ổn định nhất của Virtual Box hiện tại là phiên bản 4.0.10 hoặc 4.0.12.

Cài đặt Vagrant

Tiếp theo chúng ta sẽ cài Vagrant, như đã nói ở trên thì Vagrant sẽ là cầu nối giữa máy chúng ta đang làm việc và máy ảo, mọi cập nhật trên máy chúng ta sẽ được đồng bộ với máy ảo ngay lập tức.

Add Vagrant Box

Sau khi cài đặt xong Virtual Box và Vagrant, bước tiếp theo chúng ta sẽ add box trên Vagrant. Vagrant cung cấp khái niệm box, mỗi box tương đương với một máy ảo. Tuỳ vào ngôn ngữ chúng ta sử dụng và yêu cầu của từng team chúng ta sẽ chọn những box khác nhau, danh sách các box được chia sẻ và tổng hợp tại hashicorp.
Với Laravel thì chúng ta sẽ chọn laravel/homestead. Bạn có thể thấy nó ở ngay trang đầu trên hashicorp.
Mở Terminal và gõ vagrant box add tên_box, VD: vagrant box add laravel/homestead
Máy tính bạn sẽ tự động tải bộ cài máy ảo tương ứng, dung lượng khoảng 1GB nên thời gian chờ cũng khá lâu.

Trường hợp mạng yếu tải Vagrant Box xảy ra lỗi

Có một số trường hợp do mạng yếu mà không thể tải được, để ý một chút chúng ta có thể thấy bên trong thông báo lỗi có đường dẫn tải box, chúng ta có thể copy link đó và tải trên trình duyệt, tốc độ sẽ nhanh và ổn định. Sau khi tải xong chúng ta lại chạy câu lệnh add như ở trên nhưng thêm path đến file vừa tải vào cuối.
vagrant box add /Volumes/Data/Setup/Homestead/hc-download
Với trường hợp này, để tránh phát sinh thêm lỗi về sau khi vagrant up, chúng ta tạo một file metadata.json, chứa nội dung như sau:

{
    "name": "tên_box",
    "versions": [{
        "version": "0.4.0",
        "providers": [{
            "name": "virtualbox",
            "url": "đường_dẫn_đến_file_box_đã_tải "
        }]
    }]
}

Sau đó chạy câu lệnh: vagrant box add metadata.json
Mình khuyến khích các bạn dùng cách này, vì sau này khi muốn add lại box mình không mất công tải lại box, chỉ cần add lại file metadata.json  là xong.

Trường hợp box đã tồn tại

Sử dụng lệnh vagrant box list  để hiển thị các box đang có.
Dùng lệnh vagrant box remove tên_box  để xoá box.
Xoá Vagrantfile hiện tại rm Vagrantfile .
Tiếp đến quay lại bước vagrant box add .

Config Vagrant

Tiếp theo chúng ta phải config lại vagrant một chút. Trước khi làm việc đó thì chúng ta chạy một vài câu lệnh nhỏ sau đây để khởi tạo.

git clone https://github.com/laravel/homestead.git Homestead
cd Homestead
bash init.sh
ssh-keygen -t rsa -C "you@homestead"

Chú ý, nếu bạn cài đặt trên Window thì có thể vào thẳng folder Homestead và chạy file init.bat .
Sau đó chúng ta sẽ có 1 folder .homestead  và file ~/.homstead/Homestead.yaml
Mở file Homestead.yaml , chúng ta cần chỉnh sửa một chút cho phù hợp, chú ý đoạn sau:

ip: "10.10.8.10"
...
folders:
- map: /Users/Jeremy/Homestead
to: /home/vagrant/Code
sites:
- map: toanf.dev
to: /home/vagrant/Code/toanf.com/public

Nhìn qua chắc bạn cũng có thể hình dung ra, mọi thứ trong /Users/Jeremy/Homestead  trên máy thật sẽ được đồng bộ với /home/vagrant/Code  trên máy ảo.
10.10.8.10  chính là ip của máy ảo, bạn có thể đổi tuỳ ý, miễn là không bị trùng với local của bạn là được.
toanf.dev  bạn có thể hiểu đơn giản nó là domain mà bạn sẽ gõ trên trình duyệt, còn /home/vagrant/Code/toanf.com/  là nơi chứa code laravel. Tất nhiên bạn sẽ phải add 10.10.8.10 toanf.dev  vào file hosts  trên máy bạn thì nó mới có thể chạy được.
Sắp xong rồi, giờ chúng ta mở terminal trong folder ~/Homestead  và chạy câu lệnh: vagrant up  để khởi động máy ảo.
Chúng ta cũng có thể connect với máy ảo qua ssh bằng câu lệnh: vagrant ssh
Vậy là xong, giờ chúng ta đã có môi trường ngon lành để làm việc với đầy đủ các công cụ, dịch vụ cần thiết mà không cần mất công đi cài đặt từng cái một, config từng cái một.
Một số câu lệnh làm việc với Vagrant

vagrant up #Khởi động máy ảo
vagrant reload #Restart máy ảo
vagrant halt #Tắt máy ảo
vagrant ssh #Truy cập máy ảo qua ssh

Chú ý, sau này khi muốn tương tác với máy ảo chúng ta cần mở terminal trong folder ~/Homestead  hoặc gõ lệnh vagrant global-status  để liệt kê các máy ảo, tiếp theo gõ câu lệnh vagrant theo cú pháp vagrant [lệnh] [id_máy_ảo] , ví dụ: vagrant up 1f5321 .
Ở bài viết này, mình chỉ đề cập chi tiết cách cài với mục đích sử dụng để phát triển Laravel, ứng với yêu cầu của team mình thì các bạn có thể tự tìm hiểu thêm nhé.

Bổ sung cách khắc phục một số lỗi phát sinh.

Lỗi:

==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'poweroff' state. Please verify everything is configured
properly and try again.
If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run vagrant up while the
VirtualBox GUI is open.

Khắc phục: thêm đoạn config sau vào Vagrantfile

config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--accelerate3d", "off"]
end