Page 2 of 3

CI Jenkins – Cài đặt Jenkins trên máy ảo Laravel Homestead

Bài viết này hướng dẫn các bạn cài đặt Jenkins trên máy ảo Laravel Homestead. Việc cấu hình và sử dụng Jenkins mình sẽ chia sẻ trong một bài viết khác.
Ngoài ra nếu bạn chưa biết cài đặt Laravel Homestead, hãy tham khảo bài viết này: Laravel Homestead – Môi trường phát triển chuẩn cho Laravel.
Các bước hướng dẫn dưới đây là các bước sau khi các bạn chạy câu lệnh vagrant ssh  để kết nối với máy ảo.

Bước 1: Cài đặt Java

Các bạn tham khảo bài viết này nhé: Hướng dẫn cài đặt Java JDK trên Ubuntu.

Bước 2: Cài đặt Jenkins

Thêm repository key vào hệ thống: wget -q -O – https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add – .
Mở file sources.list  với câu lệnh sudo vi /etc/apt/sources.list , thêm vào cuối file deb https://pkg.jenkins.io/debian-stable binary/ .
Cập nhật package: sudo apt-get update .
Cài đặt Jenkins: sudo apt-get install jenkins .
Mặc định sau khi cài đặt Jenkins sẽ tự động chạy tại cổng 8080 , chúng ta có thể truy cập vào Jenkins thông qua trình duyệt với đường dẫn: http://ip_may_chu_cua_ban:8080 . Ví dụ: http://10.10.8.10:8080 .

Bước 3: Unlock Jenkins

Sau khi truy cập vào Jenkins thành công qua trình duyệt, chúng ta sẽ nhận được bảng thông báo như sau:

Để đảm bảo bảo mật thì Jenkins bắt buộc chúng ta phải lấy mã Admin trong file initialAdminPassword trên máy chủ.
Chạy lệnh sau để lấy mã: sudo cat /var/lib/jenkins/secrets/initialAdminPassword .
Output sẽ có dạng: d177322e66ca4ba38034fbfeada344c0 .
Copy đoạn mã và past vào ô Administrator password sau đó ấn Continue.

Bước 4: Đổi mật khẩu Admin

Sau khi đã có quyền truy cập vào Jenkins, điều đầu tiên chúng ta cần làm là đổi mật khẩu Admin.
Ở góc trên bên phải sẽ có 1 nút Admin , ấn vào đó, tiếp tục ở cột bên trái sẽ có Configure , tiếp tục ấn vào form cập nhật thông tin sẽ hiện ra.
Sau khi đổi mật khẩu admin coi như chúng ta đã tạm cài đặt xong Jenkins lên máy chủ, các bước tiếp theo mình sẽ hướng dẫn trong một bài viết khác nhé!

Hướng dẫn cài đặt Java trên Ubuntu

Để kiểm tra xem máy chủ của bạn đã được cài Java chưa, gõ lệnh: java -version .
Nếu output tương tự thế này thì máy bạn đã cài Oracle Java rồi:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Hoặc nếu output tương tự thế này thì máy của bạn đã được cài Java Open JDK rồi:

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Nếu chưa, tham khảo các bước sau để cài đặt Java:

Bước 1: Cài đặt Java thông qua apt-get

Cài đặt Java Open JDK

sudo apt-get install default-jdk

Bạn có thể thay đổi phiên bản mong muốn, ví dụ:

sudo apt-get install openjdk-8-jdk
sudo apt-get install openjdk-7-jdk

Hoặc cài đặt Oracle Java

Mặc định Java không có sẵn trong repository của Ubuntu, vì vậy ta cần add thêm:

sudo add-apt-repository ppa:webupd8team/java

Cập nhật lại Apt package:

sudo apt-get update -y

Cài đặt Oracle Java:

sudo apt-get install oracle-java8-installer

Kiểm tra lại version của Java:

java -version

Bước 2: Cấu hình JAVA_HOME

Mở file enviroment với câu lệnh: sudo vi /etc/environment
Sau đó thêm vào cuối file dòng: JAVA_HOME=”/usr/lib/jvm/java-8-openjdk-amd64″ hoặc /usr/lib/jvm/java-8-oracle/  nếu cài đặt Oracle Java.
Lưu ý đường dẫn đến Java home có thể khác tùy thuộc vào phiên bản, vì vậy cách tốt nhất các bạn cd /usr/lib/jvm  sau đó ls -la  để xác định Java home phù hợp nhé.
Bước cuối cùng, chạy lệnh source /etc/environment để tải lại file enviroment.
Chúc các bạn thành công!.

Value proposition and Good -Fast - Cheap

Hi there! This is my first post, and I will write something about “running a web development business”, something from my experience when working as a manager at Time Universal Communications (One of the top agencies in Hanoi, Vietnam).

The topic for today is defining “Value Proposition” base on 3 things: Good, Fast and Cheap.

medium.com/@toanna

“Value Proposition” is your product, service offering, what you can deliver to the customer. It is combination of skills and products.

Good, fast and cheap are 3 things that can describe your offering.

Remember, you can only be two out of three. It is impossible to be all of them.

Let’s go a little bit deeper.

Good:

It is hard to deliver quickly. You also have to pay people (your staffs or subcontractors) more for their experience.

Fast:

It means you are cutting corners somewhere, probably on quality. You have to pay people more for working over time.

Cheap:

Cutting costs on quality or delivering time, it means delivering later or lowering the quality.

“We have to optimize 2/3, and remember, not all three.”

Some kinds of works and customers that fit with the “2/3 combinations”.

Fast + Cheap: Maintenance works, companies on a budget.

Good + Cheap: Companies who do not care about quick delivery.

Good + Fast: Companies who do not care about budget.

My first post is a little bit short but I think it can help you with defining your “Value Proposition” and have an overview about 3 important things: Good-Fast-Cheap, those determine our offering and products.

Hope this can help! Thanks!

(My first post on Medium on a rainy day in May 2017)

Câu chuyện về cái bẫy chuột (st)

Ở một nông trại yên bình nọ có một cặp vợ chồng nông dân sống vui vẻ. Họ có nuôi một con Gà, một con Lợn và một con Bò. Sống trong nhà còn có một con chuột nhỏ.
 
Một hôm, Chuột tình cờ thấy vợ chồng người nông dân đem về một gói hàng. Chuột ta bèn xem trộm qua kẽ tường, tự hỏi “Không biết cái gói hàng này chứa thức ăn gì đây?”. Và chuột ta kinh hoàng khi phát hiện ra gói hàng đó là một cái bẫy chuột.
 
Chạy vọt ra ngoài sân, Chuột la toáng lên với vẻ hoảng sợ: “Có một cái bẫy chuột trong nhà! Có một cái bẫy chuột trong nhà!”
 
Gà dừng bới đất, ngẩn đầu lên nói: “Anh Chuột ơi, nó đúng là nguy hiểm cho anh, nhưng tôi thấy nó chẳng dính dáng gì đến tôi cả. Cái bẫy chuột đâu có ảnh hưởng đến tôi.”
bay-chuot
Chuột quay sang Lợn và nói rằng: “Có một cái bẫy chuột trong nhà! Có một cái bẫy chuột trong nhà!”. Lợn tỏ vẻ thông cảm và nói: “Tôi rất lấy làm tiếc là tôi không giúp gì được cho anh, tôi chỉ có thể cầu nguyện cho anh không bị hại bởi cái bẫy chuột đó.”
 
Chuột bèn chạy sang Bò và nói: “Có một cái bẫy chuột trong nhà! Có một cái bẫy chuột trong nhà!”. Bò trả lời: “Tôi rất lo lắng cho anh, nhưng mà cái bẫy chuột đó chẳng làm hại tôi được.”
 
Mọi con vật trong sân tỏ ra thờ ơ với cái bẫy chuột… thế là Chuột chán nản trở vào nhà, một mình đối mặt với cái bẫy chuột đáng sợ đó.
 
Ngay tối hôm đó, khi mọi người đang ngủ ngon giấc thì một tiếng động vang lên khắp nhà – tiếng động phát ra bởi cái bẫy chuột khi có con mồi bị sập bẫy. Người vợ liền chạy ngay đến cái bẫy xem con gì bị sập bẫy. Trong bóng tối, người vợ không hề biết rằng một con rắn độc bị cái bẫy chuột kẹp trúng đuôi. Thấy người tới, con rắn bèn cắn một phát.
 
Sau đó, người vợ lên cơn sốt. Để hạ sốt, tốt nhất là cho bệnh nhân ăn cháo gà. Thế là người chồng xách rìu ra sân bắt Gà nấu cháo cho vợ ăn.
 
Bệnh tình của người vợ không thuyên giảm. Hàng xóm và bạn bè nghe tin liền đến thăm người vợ. Để đãi khách, người chồng làm thịt Lợn.
 
Cuối cùng, người vợ không khỏe lên được và chết. Rất nhiều người đến đưa tang người vợ. Người chồng phải giết Bò để phục vụ đám tang.
 
Chuột buồn bã chứng kiến toàn bộ sự việc qua kẽ tường.
 
Khi bạn biết được có người gặp rắc rối và cần sự giúp đỡ, bạn đừng nghĩ rằng chuyện đó không ảnh hưởng gì đến mình. Nên nhớ rằng khi một người gặp rắc rối, tất cả chúng ta đều có thể bị liên lụy. Tất cả chúng ta đều liên quan với nhau trong cuộc hành trình mang tên “cuộc sống”. Chúng ta phải cố gắng động viên và giúp đỡ nhau, giúp người cũng là giúp chính mình vậy.
 
(st)

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..
 

Quy trình tuyển dụng UX Designer (St)

Công ty mình có một bộ phận gọi là Talent Acquisition (tạm dịch là săn nhân tài), bộ phận này sẽ đóng vai trò tìm kiếm và hỗ trợ suốt quá trình phỏng vấn.
Kế hoạch tuyển dụng được CEO approve (do ở cty mình Design Manager report trực tiếp cho CEO) thì Design Manager sẽ bắt đầu chuẩn bị Job Description (JD) và các yêu cầu kèm theo. Sau đó Design Manager setup một cuộc họp với Talent Acquisition Manager để brief yêu cầu về vị trí cần tuyển.
Sau đây là cụ thể các bước chi tiết.
Bước 1: Tìm kiếm ứng viên
Ở bước này công ty có các nguồn như sau:
Nguồn riêng của TA.
Bên cạnh đó, TA họ cũng sẽ báo cho một loạt Recruitment Agencies (head hunter) đã có hợp đồng với công ty. Các head hunter này cũng sẽ bắt đầu tìm kiếm và liên lạc trong database của họ.
Ngoài ra thì team TA cũng đăng lên website của công ty và các trang web tuyển dụng (ở Úc thì chủ yếu là LinkedIn và Seek).
Design Manager cũng sẽ chủ động tìm kiếm trong network, hỏi thăm bạn bè, lần mò trên LinkedIn để xem có ai phù hợp thì sẽ chuyển qua cho TA để họ liên lạc.
Thứ tự ưu tiên của TA sẽ là:
Nhóm được Design Manager recommend trực tiếp sẽ không phải qua sàn lọc, TA sẽ liên hệ trực tiếp.
Kế đến là nhóm ứng viên được giới thiệu từ head hunter.
Chót cùng mới là nhóm ứng viên nộp đơn trực tiếp qua website hay các website tuyển dụng.
Với nhóm 2 và 3, TA sẽ xem xét hồ sơ, các yếu tố xem xét bao gồm:
Số năm kinh nghiệm làm việc (bao nhiêu năm, đã làm với các công ty nào).
Các dự án đã làm: có lớn không, làm ở Úc hay là ở nước ngoài (ưu tiên các ứng viên đã làm các dự án lớn ở Úc hoặc Mỹ), dự án ở các nước khác thì ưu tiên thấp
hơn, dự án không tên tuổi mà họ không check được thì ưu tiên thấp nhất.
Reference letter từ các công ty cũ, recommendation trên hồ sơ LinkedIn, người recommend là ai,…
Bước 2: Phone interview với TA
Những ứng viên qua được bước 1 sẽ nhận được phone interview từ TA.
Trong buổi phone interview này TA sẽ hỏi những câu hỏi tổng quát mà như kinh nghiệm làm việc, đã tham gia những dự án nào, công ty ra sao, công việc ra sao,…
TA ít khi hỏi sâu về vấn đề chuyên môn và các dự án. Bước này chủ yếu để đảm bảo là CV đúng sự thật, kỹ năng trình bày giao tiếp ra sao,…
Bước 3: Design Manager duyệt
Qua được bước này, nếu TA thấy ứng viên tiềm năng thì họ sẽ chuyển hồ sơ cho Design Manager kèm theo một giới thiệu ngắn về cảm nhận của họ sau phone interview.
Design Manager sẽ duyệt và chọn xem muốn phone interview với ai. Chủ yếu Design Manager sẽ nhìn vào portfolio xem những ứng viên nào có dự án chất lượng. Nhấn mạnh portfolio là yếu tố then chốt ở bước này.
Hiểu nôm na kiểu như TA kiểm tra về đức ở bước 2, còn Design Manager kiểm tra về tài ở bước này 🙂
Bước 4: Skype Interview
Những ứng viên được chọn sẽ được setup một cuộc phỏng vấn trực tuyến với team Product Design (thật ra gọi Skype Interview là do quen miệng, chứ ứng viên có thể dùng HangOut hay Facetime cũng được). Thường sẽ là trực tiếp với Design Manager và một thành viên trong team.
Design Manager cố gắng giữ cho cuộc phỏng vấn này ngắn, không mất quá nhiều thời gian (tối đa 30 phút). Chủ yếu là để hỏi sâu hơn vào các dự án mà người đó đã làm, mục tiêu là để cảm nhận xem vai trò của họ trong dự án đó đến đâu, dự án có phức tạp không, họ đảm nhiệm những công việc gì, các thông tin mà họ viết trong CV có thực không hay là “quăng lựu đạn”… Chủ yếu dựa vào trực giác, quen rồi thì chúng ta sẽ sense được khá sớm là người này có đáng để đi tiếp hay không.
Cách Design Manager làm là mặc định xem như họ không đủ tiêu chuẩn và ứng viên có 30 phút để thay đổi nhận định đó. Nghe có vẻ hơi lạ nhưng mục tiêu của bước này là để loại càng nhiều càng tốt.

Sau buổi interview này Design Manager sẽ feedback lại cho TA về các ứng viên mà mình ưng. Những ứng viên mà Design Manager không feedback đồng nghĩa với bị loại. Trừ một số trường hợp đặc biệt tuy bị loại nhưng Design Manager vẫn feedback (tuy nhiên không nhiều).
Về phía ứng viên, họ sẽ nhận được 1 cuộc điện thoại từ head hunter hoặc TA để:
Hoặc là chúc mừng và thông báo bước tiếp theo,
Hoặc là rất tiếc đã bị loại vì lý do ABCD (trường hợp có feedback),
Đa số trường hợp là chỉ thông báo rất tiếc đã bị loại.
Bước 5: Off-site Test
Công ty mình có một loạt các bài test, các bài test này do team design phối hợp với một số công ty tư vấn xây dựng sẵn. Design Manager sẽ chọn ngẫu nhiên để chuyển cho TA. TA sẽ chuyển cho ứng viên.
Format của các bài này thường là đưa ra một vấn đề hoặc một feature nào đó trong sản phẩm đang có vấn đề (xuất phát từ thực tế các dự án đã làm), các ứng viên muốn hoàn tất bài test sẽ cần phải tiến hành một chút research, một chút design thinking, tư duy cho user flow, goal và cách giải quyết vấn đề, kể cả kỹ năng trình bày.
Các bài test này không quan trọng là câu trả lời đúng hay sai mà chủ yếu để xem cách mà ứng viên tiếp cận vấn đề, design thinking, process mà ứng viên làm, cách ứng viên trình bày,…
Với Visual Designer thì cũng tập trung vào design thinking, xem cách phân chia bố cục nội dung, có quan tâm đến chi tiết hay không (pixel perfect), có hiểu biết về responsive design không, có dùng grid không,…
Mục tiêu của bước này là để đánh giá năng lực và kinh nghiệm thực sự của ứng viên (nhằm loại bỏ các ứng viên chỉ biết lý thuyết mà thiếu kinh nghiệm thực tế).
Bước này cũng để xem ứng viên có thực sự mong muốn làm việc ở công ty và có nghiêm túc đầu tư công sức cho việc đó hay không (nhằm loại những ứng viên chuyên đi rải CV).
Và cuối cùng là để đảm bảo họ xứng đáng để chuyển sang bước tiếp theo. Vì bước tiếp theo là On-site Interview. Bước này sẽ cost thời gian của khá nhiều người trong công ty và cả chi phí kha khá của công ty (vì trường hợp ứng viên sống ở bang khác, công ty sẽ đài thọ toàn bộ chi phí khách sạn và máy bay cho họ đến Sydney làm On-site Interview).
Bước 6: On-site Interview
Ở bước này ứng viên sẽ được mời đến công ty để tham gia một số workshop khoảng 4 tiếng (đối với UX Designer).
Về phía công ty sẽ có: Design Manager, một hoặc một vài thành viên của team design, một vài stakeholder đại diện cho các team khác (thường là bên team product hoặc marketing), một người đại diện của TA.
Bước này chủ yếu để đào sâu 2 vấn đề:
Cơ hội cho ứng viên trình bày cách tư duy giải quyết vấn đề của mình, cách các ứng viên tranh luận và thương lượng với các stakeholder khi bị họ thử thách ra sao, kỹ năng trình bày thuyết trình ra sao.
Xem phong cách của ứng viên có phù hợp với phong cách làm việc của nhóm hay không.
Bước 7: Ứng viên điền một số form
Sau khi về thì TA sẽ gọi điện thoại cảm ơn này nọ và gửi một số form cho ứng viên điền (điền online), trong đó thu thập những thông tin như mức lương hiện tại, mức lương mong muốn, thông tin cá nhân, tiền án tiền sự này nọ, refference letter,…
Bước 8: Design Manager & CEO Approve
Về phía công ty, sau bước 6 thì TA sẽ giúp thu thập tất cả các phản hồi của mọi người lại.
Design Manager sẽ cân nhắc và sẽ là người ra quyết định cuối cùng để đưa lên cấp Executive duyệt (trường hợp của mình là CEO), bên bộ phận kỹ thuật thì Manager sẽ chuyển lên CTO.
Qua được bước này thì xem như ứng viên cơ bản đã được công ty chọn, vì thường thì các cấp executive sẽ đồng ý theo đề xuất của Design Manager đưa lên. Trừ những trường hợp rất đặc biệt, ví dụ có một vị trí nào đó mà CEO đặc biệt quan tâm muốn tham gia trong bước 7 – Onsite Interview. Và trong buổi interview đó chẳng may CEO cảm thấy ko ổn thì CEO có thể đưa ra quan ngại của mình.
Về lý thuyết CEO có thể overwrite quyết định của Design Manager. Nhưng thực tế thì chưa lần nào xảy ra vì CEO không muốn tạo ra cảm giác họ đang can thiệp vào nội bộ công việc của team bên dưới.
Như đã nói, mục đích của bước này là để CEO lắng nghe ý kiến của Design Manager, lý do tại sao họ quyết định chọn ứng viên đó, dựa trên căn cứ gì. Sau đó CEO sẽ approve.
Bước 9: Offer
Mỗi 6 tháng thì các manager phải lên kế hoạch một lần, trong đó có kế hoạch về nhân sự và ngân sách cho nhân sự trong 6 tháng tiếp theo. Kế hoạch này sẽ được approve bởi CEO. Trước khi tuyển dụng một vị trí mới, Design Manager sẽ chia sẻ những thông tin về ngân sách lương này với TA Manager.
Dựa trên ngân sách lương + kết hợp với những thông tin mà ứng viên đã điền trong các form ở bước 7 + cộng thêm phản hồi của Design Manager về ứng viên (độ khao khát muốn nhận ứng viên đó 🙂 + mức lương thị trường cho vị trí đang tuyển. TA sẽ xây dựng một package cho ứng viên, package này sẽ được Design Manager và CEO duyệt.
Bước 10: Negotiate
Nếu package đưa ra mà ứng viên cảm thấy không hài lòng thì có thể thương lượng ở bước này. TA sẽ phản hồi lại mong muốn của ứng viên, Design Manager sẽ trao đổi với CEO để ra quyết định. Trong thực tế ở công ty mình thì đa số trường hợp các ứng viên đều cơ bản hài lòng với mức lương offer nên cũng ít khi phải deal tới deal lui.

Tổng cộng có 10 bước như vậy, về phía ứng viên thì có thể có thêm một số bước khác nếu đi qua con đường head hunter (do head hunter họ sẽ có riêng một số phỏng vấn của họ).
(St)

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 "[email protected]"

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

Bí quyết đọc sách (St)

1. “Tớ vừa đọc XONG một cuốn sách”

Câu này mang nhiều hàm nghĩa khác nhau: “tôi vừa lướt qua cái mục lục chi tiết của cuốn sách”, hoặc “tôi vừa đọc từ đầu đến cuối cuốn sách”, hoặc “tôi vừa đọc lần thứ 10 cuốn sách này”. Tất cả đều là “đọc xong một cuốn sách”. Chẳng có gì sai khi nói câu đó cả.
Điều tôi muốn nói ở đây là có nhiều mức độ đọc sách khác nhau. Với mỗi cuốn sách, bạn định đọc nó ở mức độ nào?
Khoảng hơn tám năm trước tôi đọc “Khởi thuật” của Guy Kawasaki, thấy sách viết hay và viết khéo nên làm một lèo chừng hơn 2 tiếng là xong hết, chả bỏ chữ nào.
Năm năm trước tôi đọc lại khi cùng anh em thành lập một tổ chức phi lợi nhuận, vẫn thấy mới quá. Ba năm trước, khi một dự án thất bại, tôi lại vác sách ra đọc, vẫn thấy nhiều cái lúc bấy giờ mới vỡ ra được. Vừa mới tuần trước thôi, tôi mang ra đọc lại và phải thốt lên với anh bạn khốt “Cái quy tắc 10/20/30 cực kì vĩ đại, càng ngày càng thấy nó vĩ đại!”. Vậy là tôi “đọc” cuốn khởi thuật này mất tám năm.
Tôi hỏi thật, bạn định đọc một cuốn sách trong bao lâu: hai tiếng hay tám năm?

2. Có nhất thiết phải đọc sách phù hợp với trình độ và lứa tuổi?

Con gái học lớp Hai của tôi bắt đầu đọc “Đất rừng phương Nam” từ tuần trước, trong khi bố nó ngày xưa đến cấp 3 đọc chả hết thì bỏ dở. Cô bé hăng say đọc Đoàn Giỏi, Phạm Hổ hay Vũ Tú Nam ngang như say mê Doreamon như nhiều đứa trẻ cùng tuổi khác. Tôi không ép gì cô nàng đọc sách này sách kia, cũng không vội lo lắng “bé tí chưa đọc được” đến mức phải cấm đoán hay ngăn cản. Sách do nàng tự chọn khi ra hiệu sách, tự đặt lên giá của mình, tự biết lúc nào thì đọc, và tự lôi ra đọc khi thấy hứng.
Một đứa 7 tuổi sẽ tiếp cận sách kiểu 7 tuổi. Khi lớn lên sẽ tiếp cận kiểu người lớn, dù vẫn là cuốn sách ấy thôi. Bố nó cũng vậy, bây giờ đọc “Khởi thuật” đã khác xưa nhiều lắm, sau khi đã đọc “Lean Startup”, “Founders’ Dilemma”, “Business Model Generation” và trải nghiệm những thứ hầm bà lằng nhằng khác nữa.
Nếu bạn chưa học triết học bao giờ, liệu có nên từ chối ngay từ ban đầu khi nhìn thấy “Phê phán lí tính thuần túy?” vì sợ không? Nhìn thấy một cuốn sách kinh doanh được khen là “tuyệt đỉnh”, bạn có ngại đến mức không dám đọc vì trông nó dày quá, sợ không có thời gian? Tôi cho là chả cần thiết phải sợ nhiều thứ như vậy. Nếu đã có chút ý định, thì cứ đọc thôi, còn hiểu được đến đâu, thì … hậu xét J
Cô nàng “bố láo” của tôi đọc xong “Đất rừng phương Nam” rồi, nàng mới thông báo với bố là cô đang rất háo hức với “Những tấm lòng cao cả”. Cũng tốt thôi hehe.

3. Đọc sách để làm gì?

Tôi không phải là người “sống ảo” đến mức suốt ngày vùi đầu vào thế giới của sách vở theo kiểu “Nếu không đọc thì chết mất” như câu hát trong bài “Chuyện 5 người” của nhạc sĩ Trần Tiến, nên cũng không có ý định chê những người không đọc sách là “thất phu”, “thất thê” hay “bọn không có tâm hồn”. Tuy vậy, tôi thấy mình cũng không phải là người dễ dãi chấp nhận những lí do từ bỏ việc đọc sách chỉ vì “Internet suốt ngày rồi, thiếu gì thông tin”, hay “không có thời gian”, hay “đọc sách chán lắm”.
Đọc sách có nhiều kiểu. Mục đích đọc sách sẽ quy định việc ta sẽ đọc sách gì và như thế nào, bao nhiêu lâu, nhiều hay ít.
Có người đọc sách để cho vui, có người đọc sách chỉ vì là một thói quen, có người đọc sách vì “trong bụng thích đọc sách, thế thôi”, có người đọc sách như là kênh học hỏi chính yếu rẻ tiền và đỡ tốn thì giờ.
Bạn hãy chọn cho mình một cách tiếp cận đọc sách cho phù hợp. Tôi thì thích cách đọc sách một cách có chủ đích, có thói quen, có kế hoạch, có thu hoạch, và có tính mở mang. Tôi thấy đầu tư cho việc đọc sách vừa hiệu quả vừa thú vị và có tính thưởng thức rất cao 🙂
Phần sau đây tôi chỉ đề cập đến việc đọc sách để lấy thông tin và kiến thức, phục vụ công việc và học tập. Từ phần này trở về sau, “sách” có nghĩa là “non-fiction book”. Các “doanh nhân” hay “nhân viên” chưa ham đọc và lúc nào cũng thấy thiếu thời giờ vì bận việc, các “sinh viên” lúc nào cũng thấy “tán gái” hoặc “đàn đúm” vui hơn đọc sách nhưng vẫn muốn đọc đôi chút để có thông tin cần thiết phục vụ công việc, đặc biệt là thấy mình “thế mà đần”, có thể đọc tiếp phần dưới đây. Còn không thì dừng được rồi 🙂

4. Đọc sách như thế nào?

Đọc sách cũng phải luyện tập. Thật đấy! Tôi không đùa đâu.
Có người vặn: cứ tưởng học đọc từ Tiểu học là xong chứ, sao lại còn phải học đọc nữa? Như tôi quan sát thấy thì trong hai ba chục năm trở lại đây việc dạy đọc ở
Tiểu học chỉ giúp ta đọc với trình độ của một … học sinh Tiểu học. Cho tới tận hết đại học, vẫn cái trình độ ấy là chủ yếu. Vì chả mấy khi ta luyện tập gì thêm cả.
Thế cho nên không lạ nếu ta có gặp một người kêu đọc cả tháng được 1 cuốn sách mà kêu mệt, thấy người khác đọc được dăm cuốn đã vội nắc nỏm khen siêu nhân.
Bạn biết đấy, chú Mark Zuckerberg bận rộn với đế chế Facebook là thế, mà năm ngoái chú đều đặn đọc mỗi tuần xong một cuốn.
Như tôi quan sát trên cộng đồng đọc sách Goodreads.com thì những người đọc hơn anh chàng Mark nhiều không đếm xuể!
Câu hỏi đặt ra là: vậy làm thế nào để đọc cho hiệu quả, đọc thế nào cho nhanh, đọc thế nào cho có ích?
Ta sẽ xử lí từng vấn đề nhỏ đó ngay sau đây.

Câu hỏi một: Làm sao để đọc được nhiều?

Có bảy điều bạn cần nhớ và vận dụng như dưới đây.
Một: Sách phải sẵn.
Nếu bạn giàu thì chả nói, bạn có thể mua cả một thư viện về nhà. Nếu bạn nghèo như cánh startup tôi đây, vẫn có vài cách.
Đăng kí đọc sách trên Alezaa một năm 365 nghìn (vị chi mỗi ngày tốn một nghìn, bằng một phần ba cốc trà đá vỉa hè), bạn có ngay hai trăm nghìn cuốn sách, thích lúc nào đọc lúc ấy, trên mọi thiết bị: Laptop, iPad, iPhone, Samsung Notes 5…
Lên mạng tìm ít sách miễn phí, đầy rẫy cả ra.
Nếu bạn là fan ruột của sách giấy, thì hãy ra ngoài hiệu sách cũ, hiệu sách giảm giá, hội chợ sách, chợ phiên sách cũ, để ý các thư viện thanh lí sách cũ … Chịu khó tha về. Chưa đọc cũng hãy cứ tha về những quyển ưa thích, hoặc những quyển quan trọng, hoặc những quyển được khuyên đọc. Chưa bao giờ sách ê hề như bây giờ, giá rổ lại rất dễ chịu nếu chịu khó tìm kiếm. Có anh ku bạn mua được hai thùng sách quý (lúc mới ra mỗi cuốn 100-200 Mĩ kim) chỉ với hai trăm nghìn đồng ông Cụ. Rẻ thối!
Tiết kiệm hơn nữa là đến thư viện nhà nước hoặc trường học mà mượn, có thể hơi bất tiện tí nhưng mà rẻ hehe 🙂
Việc trong nhà sẵn tủ sách, ba lô sẵn vài cuốn, Kindle/iPad sẵn ebook là cực kì quan trọng. Nó giống như tạo dựng cơ sở hạ tầng vậy. Có nó rồi thì xe pháp mới băng băng được. Không sách, đọc sách kiểu gì?
Hai: Đọc sách ở mọi nơi
Trước khi đi ngủ, đọc 20 phút, bét cũng được chục trang.
Sáng dậy sớm, đọc chừng 15 phút lúc cafe, bét cũng được dăm bẩy trang.
Lúc nghỉ trưa, đọc chừng 15 phút sau bữa trưa trước lúc ngủ trưa, bét cũng được dăm bẩy trang nữa.
Đấy, mỗi ngày nếu đặt mục tiêu khiêm tốn, bạn đọc được năm chục trang. Chẳng cần cố gắng, một tuần xơi được một cuốn vừa vừa.
Đấy là chưa kể bạn sẽ có những lúc trên tàu điện, ngồi chờ khách, hoặc lúc thư giãn sau khi nấu cơm xong chờ vợ tập gym về xơi cùng 🙂
Tôi đang tính với người đọc với tốc độ đọc hơi “rùa bò”. Chứ với người đọc khá, với sách không quá khó thì có thể đọc được 1000-2000 chữ/1 phút, tương đương 30 phút khoảng năm chục trang. Đến đây các bạn “thế mà đần” đừng vội cho là tôi bốc phét về tốc độ đọc, và tự hỏi “đọc nhanh thế thì nhớ được gì, mình đọc từng chữ còn chẳng ăn ai?”. Hãy kiên nhẫn chút đi, “thế mà đần”!
Ba: Đừng dừng lại, cần phải đọc như ăn cướp
Được rồi, tôi sẽ nói về chuyện đọc nhanh!
Có mấy thói quen xấu mà nhiều người mắc khi đọc sách (PS. Ngày xưa tôi cũng mắc phần lớn các lỗi này):
Sai lầm thứ nhất: Đọc từ nọ sang từ kia, dòng nọ nối dòng kia. Đây là một thói quen cực xấu và phản tự nhiên. Mắt bạn được sinh ra là để “chụp lại một trang sách”, hoặc chí ít là chụp lại một khối chữ, chứ không phải từng chữ cái một. Đọc từng chữ một khiến mắt vừa mỏi lại vừa khiến bạn đọc chậm đi trông thấy. Hãy cứ để mắt mình lướt nhanh qua các con chữ, rồi xa nữa là chụp theo khối. Nhưng bạn tự hỏi: đọc thế làm sao nhớ được gì? Cứ để việc ghi nhớ sau, sẽ có cách giải quyết!
Sai lầm thứ nhì: Cố hiểu cho thật kĩ rồi mới đọc tiếp. Đấy tôi đã nói bên trên rồi. Kể cả bạn có đọc đến lần thứ mười sẽ vẫn có chỗ bạn không hiểu hết cuốn sách. Đừng có tự làm khổ mình với mục tiêu “hiểu kĩ”. Não bộ hoạt động kiểu khác cơ! Khi bạn đọc, dữ liệu được tạm thời lưu chuyển vào bộ nhớ tạm, nó lưu lại đó đã. Khi bạn dừng việc đọc, bạn liên kết các dữ liệu lại với nhau, lúc đó mới hiểu. Tức là khi bạn “đọc như ăn cướp”, rồi sau đó gấp sách lại, bạn sẽ hiểu kĩ hơn là dò từng dòng một.
Sai lầm thứ ba: Cứ phải là tuần tự từ đầu đến cuối mới là đọc đúng cách. Thực ra các cuốn sách dích dắc hơn chúng ta tưởng. Mỗi chương thường có độ độc lập nhất định. Nếu mỗi ngày chỉ đọc một chương sách, có thể ta đọc chương 2 có vấn đề ưa thích trước khi đọc chương 1. Chẳng ảnh hưởng đến việc thu nhận thông tin lắm đâu! Thỉnh thoảng có thể để mình tự do một chút. Các mảnh ghép sẽ tạo thành bức tranh lớn đầy đủ ở phút cuối cùng.
Bốn: Đọc như trai tân tán gái
Hehe. Rõ là không phải chuyện bông lơn đâu. Một anh ku tán gái sẽ phải tìm hiểu xem gái này đặc điểm thế nào, thích cái gì, gia đình thế nào, bạn bè ra sao, motif ăn ở thế nào thì khi tán cô gái dễ đổ hơn. Nhiều người cầm sách xong là bộp phát vào chương Một ngay. Như thế chưa chắc đã là cách hay. Một cuốn sách sẽ được tác giả cấu trúc theo một logic nhất định, với những cách triển khai có phong cách nhất định. Khi ta tìm được logic ấy là lúc sẽ biết được “xử lí” cuốn này như thế nào. Cho nên hãy học anh ku chuyện tán gái để áp dụng vào việc đọc.
Hãy nhìn vào cấu trúc cuốn sách (lời nói đầu, lời cuối, cách phân chương, mục lục, index, đồ họa) để nắm sơ bộ. Tìm hiểu về tác giả để xem phong cách, bối cảnh, độ “nặng đô” của cuốn sách mình sắp đọc, như thế chàng trai sắp đến gặp đối tượng để tán tỉnh vậy!
Năm: Đọc sách như thể chụp X-Quang
Tiếp điều Năm. Sau khi nắm được sơ sơ cấu trúc, hãy tiến hành lướt thật nhanh các phần xương sống của cuốn sách: Tựa đề, Mục lục, Mục lục chi tiết, Index, Nói đầu/Tóm lược. Lướt qua những cái này, bạn đã túm được 20-30% thông tin chính của cuốn sách rồi. Thật đấy. Đặt ra vài câu hỏi đáng quan tâm, đánh dấu vài từ khóa cần tìm hiểu (ghi trong Mục lục hoặc Index) rồi lật nhanh đến phần chưa hiểu, ta sẽ kiếm thêm chút thông tin nữa. Rồi lướt nhanh các trang sách như thể quét một chiếc máy chụp x-quang lên cuốn sách. Làm thế này, chỉ chưa đầy nửa tiếng, đến nửa thông tin chính thức của cuốn sách đã hiển hiện trong đầu bạn rồi.
Sau đó, bạn có thể từ tốn hơn đọc từng chương sách quan tâm, từng chương từng chương cho đến hết. Đây là cách đọc có phân tích, vừa giúp bạn tăng tốc độ đọc sách, vừa giúp bạn hiểu ý chính dễ dàng hơn.
Sáu: Đọc liên văn bản đồng chủ đề
Khi bạn đã quen với các miếng võ bên trên rồi, có thể tiến thêm một bước nữa. Hãy đọc sách theo chủ đề. Nếu đọc “Lean Startup”, có thể đặt cùng “Running Lean”, và “Startup Owner’s Handbook”, “Business Model Generation”. Chụp X-Quang tất cả bọn chúng, rồi tiến hành đọc liên văn bản.
Khi đọc đến một chủ điểm chính, ví dụ: “Business Canvas”, có thể nhảy từ “Lean Startup” sang “Business Model Generation” với phần tương ứng (có thể dùng Index hoặc Mục lục để định vị địa điểm cần nhảy sang), rồi nhảy sang phần đó ở “Running Lean”.. Bằng cách đó, ta có thể thâu gom lại các ý tưởng chính của những tác giả chính yếu trong cùng một chủ đề. Việc đọc kiểu này tiết kiệm chí ít 1/3 thời gian đọc sách. Nó sẽ giúp bạn tăng tốc rất đáng kể.
Đây chính là cách mà tôi dùng để “xử gọn” 5 cuốn trong một tuần, khi cần nhiều thông tin để làm việc.
Bảy: Đọc có kế hoạch
Bạn thấy đấy, để thực hiện được việc đọc “liên văn bản”, cần phải có kế hoạch từ trước. Bạn làm việc gì cũng cần kế hoạch mới mong hiệu quả, tại sao lại không lập kế hoạch cho việc đọc?
Này nhé, Goodreads gợi ý một cách lập kế hoạch đơn giản thế này: Hãy lập ba dánh sách: Sách muốn đọc, Sách đang đọc và Sách đã đọc xong. Giới hạn số sách đang đọc xuống (ví dụ: 4 cuốn thôi). Sắp xếp thứ tự sách sẽ đọc trong danh sách “Sách muốn đọc”, đại ý là “tuần này sẽ đọc những sách gì”, tiếp theo sẽ là sách gì. Khi đọc cuốn nào thì đưa nó sang danh sách “Sách đang đọc” (nhớ đừng để quá nhiều, gây đình trệ, lâu dần dẫn đến mất hứng vì đọc mãi không xong). Đọc xong cuốn nào, nghiệm thu xong thì quẳng nó sang “Sách đã đọc xong”. Cuối tuần/Tháng ngồi tổng kết lại xem tình hình đọc có ổn không, cần cải thiện gì không. Bạn có thể tổ chức nhiều hơn một danh sách, tương ứng với những “giá sách” khác nhau. Rồi lần lượt xử lí chúng theo nhu cầu đọc của bạn.
Khi đã có mục đích đọc sách rõ ràng, thì việc lập kế hoạch cho đọc sách cũng sẽ giúp ta đạt được mục đích đó dễ dàng như ăn cơm hằng ngày thôi!
Đến đây mới xong được chữ “lượng” trong việc đọc, một điều mong mỏi của rất nhiều người đọc sách. Rõ ràng là để có kĩ năng đọc được nhiều, bạn cũng cần phải kiên trì luyện tập một chút. Không có bữa trưa nào miễn phí cả.
Còn sau đây chúng ta bàn thêm một chút về chữ “chất”.

Câu hỏi hai: Làm sao để đọc thật sâu?

Để đọc được thật sâu, thì phải đọc lại!
Đơn giản phải không? Hehe.
Mỗi lần đọc lại, một lần ngộ thêm. Đó là sự thật.
Phàm phải sách nào hay, và quan trọng, hãy đọc đi đọc lại. Đấy là bí quyết hàng đầu.
Bí quyết số hai là hãy tổ chức lại thông tin thu được sau khi đọc sách. Não bộ sẽ củng cố thông tin và lưu vào bộ nhớ dài hạn (longterm memory) nếu bạn làm điều này: Ôn lại thông tin đọc sách.
Bằng cách ghi lại một bài blog cảm nhận về cuốn sách, hoặc tạo lập một bản đồ tư duy, trả lời các câu hỏi trong sách hoặc tự đặt ra, bạn sẽ thực sự hiểu sâu về cuốn sách.
Trong quá trình đó, có thể bạn sẽ cần đặt ra những câu hỏi phản biện, hoặc liên kết với những kinh nghiệm mà bạn đã có sẵn trong người, hoặc liên hệ/đối chiếu với những nội dung từ các cuốn sách/bài báo khác. Hãy nêu rõ những chỗ đồng tình, chỗ phản đối, chỗ nghi vấn.
Chất hơn nữa, bạn có thể làm theo các ý tưởng ở phần sau.

Câu hỏi ba: Làm sao để việc đọc thật hữu ích?

Hãy kể cho người khác nghe 10 điều thú vị mà bạn vừa nhận được từ cuốn sách (đè thằng bạn thân ra mà kể nhân lúc nó đang bận uống cafe buổi sáng, hoặc post lên Facebook).
Hãy chia sẻ trên Facebook về cảm nhận đối với cuốn sách.
Hãy làm một bài nhận xét trên Goodreads.
Hãy làm một buổi thuyết trình/seminar cho đồng nghiệp nghe.
Hãy vận dụng một điều trong cuốn sách vào công việc hiện tại của mình, hoặc người thân.
Hãy biến kiến thức trong sách thành tiền, giải pháp, hoặc ý tưởng để triển khai dự án mới.
Và những cách khác nữa, miễn là khiến chữ nghĩa trong sách “bay ra” đời thực.
Đấy, tất cả những điều căn bản nhất về việc đọc sách chỉ có thế. Nếu bạn chịu đọc đến đây thì đúng là “thế mà đần”.
Bài tập cuối cùng: Hãy vận dụng điều cuối cùng “Để việc đọc thật hữu ích”, hãy chia sẻ những điều hữu ích của bài này, và vận dụng nó ngay vào việc đọc sách của bạn!
(Sưu tầm từ Dương Trọng Tấn)

Bài học từ sự thất bại của Nokia

Trong buổi họp báo sự kiện Microsoft sẽ chính thức mua lại Nokia, giám đốc điều hành của Nokia đã kết thúc bài phát biểu của mình, “Chúng tôi không làm gì sai cả, nhưng theo một cách nào đó, chúng tôi đã thua cuộc.”. Đội ngũ quản lý của ông, và cả chính bản thân ông đều cảm thấy thực sự buồn khi ông phải nói ra điều này, thậm chí họ đã khóc.
Nokia CEO
Nokia đã từng là một công ty lớn và rất đáng được kính trọng. Họ không làm gì sai trong việc kinh doanh của mình, tuy nhiên, thế giới thay đổi quá nhanh và những đối thủ của họ thì quá mạnh.
Họ đã bỏ lỡ việc học tập, họ đã bỏ lỡ sự thay đổi, và vì thế họ để vuột mất cơ hội trong tầm tay để có thể khiến chính mình lớn hơn. Họ không chỉ mất cơ hội kiếm tiền mà họ còn vuột mất cả cơ hội sống xót.
Thông điệp của câu chuyện này là nếu bạn không thay đổi, bạn sẽ bị đẩy khỏi cuộc đua.
Không có gì sai nếu bạn không muốn học thêm những thứ mới mẻ. Tuy nhiên, nếu suy nghĩ và tư duy của bạn không bắt kịp với thời gian, bạn sẽ bị loại bỏ.
Kết luận:

  1. Những lợi thế mà bạn có ngày hôm nay, sẽ có thể bị thay thế bới xu hướng của ngày mai. Bạn không cần phải làm gì sai cả, khi những đối thủ của bạn bắt kịp “làn sóng” và họ làm đúng, bạn sẽ có thể thua cuộc.
  2. Thay đổi và cải thiện bản thân chính là cho bản thân mình một cơ hội thứ hai. Bị ép buộc thay đổi bởi thế giới xung quanh, cũng giống như đang dần bị loại bỏ.

Những người từ chối học hỏi và cải thiện, một ngày nào đó chắc chắn sẽ trở nên dư thừa và không còn liên quan gì đến ngành công nghiệp, không liên quan đến sự phát triển của thế giới nữa. Họ sẽ phải học một bài học đắt giá.

Set Phrase Story – The Little Match Girl (From AAT)

The little match girl was out in the snowstorm. Her feet were like ice cubes and her fingertips had frostbite. She hadn’t sold any matches since daybreak, and she had a stomachache from the hunger pangs, but her stepmother would beat her with a broomstick if she came home with an empty coin purse. Looking into the bright living rooms, she saw Christmas trees and warm fireplaces. Out on the snowbank, she lit a match and saw the image of a grand dinner table of food before her. As the matchstick burned, the illusion slowly faded. She lit another one and saw a room full of family members. On the last match, her grandmother came down and carried her home. In the morning, the passersby saw the little match girl. She had frozen during the nighttime, but she had a smile on her face.

© 2019 AT Nguyen

Theme by ATUp ↑