Đoàn Và Tôi – Tuổi Trẻ, Ai Cũng Qua Một Lần… Ngại Gì Không Sống Cho Hết Mình??

Bốn năm học đại học, hết hơn ba năm giành cho công tác đoàn… Với mồ hôi, nước mắt, đôi khi còn kèm cả máu…. Nhưng nhiều nhất vẫn là tiếng cười, và niềm vui….

Tôi của hôm nay, đã tuyệt vời hơn tôi của hôm qua… Tôi học đại học vào tháng 8 năm 2015, với bao nhiêu hoài bão và ước mơ… Thiếu chính xác là 0.25 điểm để vào được bách khoa Đà Nẵng ngành CNTT… Chuyện đó đã làm tôi buồn suốt một vài tháng cho đến khi vào trường, khoa và gặp những đàn anh, đàn chị đi trước… Tôi mới biết, còn có những điều rất đẹp đang đợi mình…

Ngay khi vừa vào trường, thầy chủ nhiệm hỏi :

  • Có ai muốn làm Bí thư không?
  • Em ạ!

Không ngại ngùng tôi xung phong, với kinh nghiệm một thời gian làm công tác đoàn, chả mấy chốc tôi đã làm quen với nhịp sinh hoạt của đoàn trường, của đoàn khoa… Tất nhiên lúc vào tôi chỉ một thành viên mang tư cách là Bí thư của lớp 15CNTT1 ( năm nhất )

Và hôm gặp mặt anh chị lần đầu tiên, tôi cực kỳ ấn tượng với những người hiện tại là Bí thư, Phó bí thư và những anh chị đã từng làm đều có một phong thái rất vui vẻ, tri thức và tuyệt vời như những gì tôi nghĩ… Sau này tôi mới biết, những anh chị đó không chỉ thành công trong công tác đoàn mà còn cả trong công việc, cuộc sống cũng rất thành công.

Lại nhớ hôm đó, với kinh nghiệm làm photoshop hết sức kém cỏi, không hiểu vì sao tôi lại nói là tôi muốn làm photoshop, và cuối cùng tôi phải làm thật… Là làm thật chứ hông phải được người khác dạy… Và với khả năng học hỏi tuyệt vời của mình, tôi đã hoàn thành tốt background cho buổi 20/11 năm đó… Tiếc là giờ trong máy không còn chứ không đã có thể cho mọi người thấy background kinh khủng đó.. :V :v

Đó là những trải nghiệm đầu tiên khi vào đoàn khoa, rồi thời gian thế nhẹ nhàng trôi… Cũng như việc học của tôi, việc đoàn cũng không kém phần thú vị… Nào bóng đá, nào thiết kế, rồi lại nào là tình nguyện…. Mọi thứ cứ như một câu chuyện dài khi tôi nhớ lại và viết những dòng này…. Haizzz… Mọi thứ đã quá xa rồi, nhưng người cùng tôi đi hoạt động năm nhất giờ chẳng còn lại mấy người còn trong trường…

Rồi, tuổi trẻ cứ nhẹ nhàng trôi… cũng có vài câu lạc bộ tôi tham gia nhưng không gắng bó được lâu dài… Tôi vẫn đi chung với liên chi… lại một năm trôi qua..

Năm hai, với tư cách là một đàn anh, tôi lại đón các bạn tân sinh viên như cái cách mà anh chị đã đón tôi… Nhiệt tình, vui vẻ và cũng không kém phần nguy hiểm… Vậy là một năm học mới lại bắt đầu…

Năm nay đại hội khoa, trường…. và chẳng ngoài dự đoán khi số phiếu của tôi là cao nhất, cao hơn cả thầy bí thư…. Hí hí…

Tôi làm phó bí thư cùng một chị khóa trên, và mọi thứ khó khăn hơn từ đây… ( Đây là chức vụ cao nhất mà sinh viên có thể làm )…

Việc làm bí thư với 50 con người, chỉ nhận chỉ thị từ phía trên về và triển khai… Nó khác với làm phó bí thư một liên chi hơn 600 con người, phải vừa nhận chỉ thị từ bên trên, vừa tố chức ra một số hoạt động riêng cho liên chi mình….

Sự kiên đầu tiên tôi đích thân là người cầm quyền tổ chức và cực kỳ sợ nó tạch là “Văn nghệ 20/11 năm 2018 của Khoa”, nghe thì đơn giản nhưng khi tổ chức thì cực kỳ khốn nạn, mọi thứ linh tinh nó cứ phát sinh… Từ còn người, tài chính ..vân vân, mây mây… Nói chung là khốn nạn… Tuy nhiên, buổi văn nghệ đó vẫn rất thành công, nếu só sánh với những năm gần đây… Tôi được một vài người thầy, bạn bè khích lệ vì nỗ lực đó…

Rồi bao nhiêu sự kiện, rồi trại ( Chỉ năm chúng tôi mới lần đầu tiên triển khai và hợp tác với Khoa Lý), rồi lại tình nguyện…. Nói chung mọi thứ cứ thế mà trôi qua nhẹ nhàng….

Rồi lại năm ba, mọi thứ cứ từ từ diễn ra như năm hai, không có gì quá nhiều khó khăn vì toàn những việc tôi đã làm rồi, đàn anh, đàn chị thân thiết của tôi cũng lần lượt rời khỏi trường để lại bao nhiêu thứ tâm trạng…

Rồi vài sự kiện tình cảm tan vỡ, vài mối quan hệ khó khăn ập đến… Mọi thứ cứ vậy làm tôi xao nhãng việc đoàn một thời gian.. Nhưng nhờ những người anh, người chị, người bạn… Và nhất là thầy cô đã an ủi, tôi cũng vượt qua được thời kỳ tăm tối đó..

Và một anh phó bí thư tuyệt vời lại trở về với Đoàn khoa.. :V :v

Rồi chẳng mấy chốc, vài sự kiện… Vài buổi nhậu… lại cuốn tôi, à mà có thể nói là chúng tôi đi nhanh… Chẳng mấy chốc nhìn lại tôi đã làm Đại hội Liên chi lần 2, mà lần này thì tôi là người trở thành người ngồi trên bàn Đoàn chủ tịch và báo cáo lại kết quả của nhiệm kỳ vừa qua… Có khen, có chê, có thông kê ưu điểm, nhược điểm và trình bày lý do… Mọi thứ cứ như vậy nhẹ nhàng đọc qua…

21 năm, tôi đã làm nhiều thứ nhưng hối hận thì chẳng có mấy điều…. Và tôi luôn học cách đi qua những khó khăn mà không bao giờ hối hận… Tôi quay lại để cảm ơn vì tất cả chứ không phải vì buồn vì những cái giá đã trả cho tuổi trẻ này…

Từng có những ngày, thức trắng đêm để thiết kế cho xong cái background ngày mai đem đi in, hay để hoàn thành cái form danh sách trại sinh…. Mọi thứ cứ như thế, nhẹ nhàng trôi như một câu chuyện cổ tích… Như một giấc mộng nhẹ nhàng cho thời thanh xuân của mình….

Quen bạn mới, học kỹ năng mới…. Được rất nhiều thứ và mất cũng rất nhiều thứ… Tôi quen rất nhiều người, tôi được rất nhiều kỹ năng trong ba năm qua… Gặp rất nhiều người, và nghe rất nhiều câu chuyện là những gì tôi cảm thấy tuyệt vời nhất khi làm đoàn…

Và cuối cùng, như bản dạo đầu cho cuộc đời đầy sóng gió… Trên đời này, vốn chẳng có gì là thập toàn thập mỹ… Vậy tại sao không thử nhiều hơn để trải nhiệm nhiều hơn… Cứ sống trong cái kén của mình… Ngại đổ mồ hôi, ngại khổ thì bao giờ mới trở thành được một kẻ đứng đầu…

Cuối cùng, xin trích lại một đoạn mà tôi thích nhất:

Nhiều năm qua, tôi luôn học tập một việc, chính là không quay đầu lại, chỉ vì bản thân chưa từng làm chuyện gì phải hối hận, không hối hận vì những chuyện mình đã làm. Mỗi bước đi của cuộc sống, đều phải trả giá đắt. Tôi có được một ít những gì mình muốn, mất đi một ít những gì mình không muốn mất. Vậy thôi, đây là mấy lời thật tâm không trau chuốt bằng văn vẻ hoa mỹ… Hôm nào nhìn lại, tôi sẽ sửa, có thể có lỗi chính tả nhưng tôi không sửa vào hôm này…

Những hỏi thường gặp về SQL khi đi phỏng vấn…

Bài này không phải mình viết mà mình lấy ở trên 50 câu Q&A thường gặp về SQL dành cho Tester, chủ yếu để mình chuẩn bị cho đợt phỏng vấn thực tập năm cuối.. ( Lâu rồi toàn làm việc với noSQL, nên quên hết cmnr.. :V :V  )

1. SQL là gì?

=>  SQL là viết tắt của cụm từ “Structured Query Language.” – ngôn ngữ truy vấn mang tính cấu trúc. Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). SQL là ngôn ngữ cơ sở dữ liệu, được dùng để tạo, xóa, lấy các hàng và sửa đổi các hàng, … Tất cả hệ quản trị cơ sở dữ liệu (Database Management System – DBMS) như MySQL, Oracle, MS Access, Sybase, Informix, Postgres và SQL Server đều sử dụng SQL như là ngôn ngữ cơ sở dữ liệu chuẩn.

2. Làm thế nào để lấy được tất cả các bản ghi trong một bảng xác định?

=> Dùng lệnh: SELECT * FROM table_name

3.  Định nghĩa từ khóa “JOIN” và các loại “JOIN” khác nhau?

=> “JOIN” được sử dụng để lấy dữ liệu từ 2 hay nhiều bảng liên quan.  Đây là phép kết hợp các dòng dữ liệu từ nhiều bảng lại với nhau. Khi bạn cần truy vấn các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một tập kết quả, bạn cần dùng từ khóa “JOIN”.

Một câu lệnh JOIN cơ bản:

SELECT NAMES.Id, NAMES.Name, AGES.Age
FROM NAMES
INNER JOIN AGES ON NAMES.Id=AGES.Id;

Các loại JOIN :

  • INNER JOIN (Hoặc JOIN)
  • LEFT OUTER JOIN (Hoặc LEFT JOIN)
  • RIGHT OUTER JOIN (Hoặc RIGHT JOIN)
  • FULL OUTER JOIN (Hoặc OUTER JOIN)
  • CROSS JOIN
  • SELF JOIN

4. Dùng cú pháp nào để thêm bản ghi vào một bảng?

=> Đơn giản là : INSERT INTO NAMES VALUES(1,'Tom');

Khỏi chụp hình vì các ví dụ ở trên đã làm rồi… :)))

5. Bạn thêm một cột vào bảng như thế nào?

=> Như thế này: ALTER TABLE AGES ADD IsDie BIT;

Hôm này tới đây, hôm nào rảnh cập nhập tiếp… :V :V (16/11/2018)

6. Xoá theo điều kiện trong CSDL?

=> Như thế này:

DELETE FROM NAMES
WHERE Name = 'Jane';

7. COMMIT là gì?

=> Lưu tất cả các thao trong transaction và thực thí nó… Transaction đảm bảo tất cả các cập nhật đều được thực hiện thành công ( nếu lỗi thì nó huỷ toàn bộ )

Giống thế này:

BEGIN TRANSACTION;

/* Create a table called NAMES */
CREATE TABLE NAMES(Id integer PRIMARY KEY, Name text);

/* Create few records in this table */
INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');
INSERT INTO NAMES VALUES(4,'Jane');
INSERT INTO NAMES VALUES(5,'Robert');
COMMIT;

8. Primary key là gì?

=> Là khoá chính.

Là một trường trong một bản mà nó là duy nhất của bản đó, dùng để nhận diện bản đó… Các dữ liệu trong Primary key thì không được dùng lại và bắt buộc không cho  phép có giá trị là NULL…

9. Foreign keys là gì?

=> Là khóa ngoại! Là một trường của bản…. Dùng để tạo sự liên kết giữa các bản… Thường giống với tên của khoá chính của bản cần liên kết. Chấp nhận giá trị NULL hay giống nhau.

10. CHECK Constraint là gì?

=> Là kiểm tra ràng buộc! Dùng để giới hạn giá trị nhập vào… Nếu không đáp ứng được yêu cầu thì sẽ không được ghi vào… Cú pháp thì khá nhiều kiểu , bạn có thể xem thêm ở đây.

Mình chỉ ví dụ với SQLite

CREATE TABLE AGES(
    Id integer PRIMARY KEY, 
    Age integer CHECK(Age>=18)
);

Thôi, tạm dừng ở đây…

Phần 2: Thuật Toán Sắp Xếp chèn ( Insertion sort ) với Node.js

Insertion sort ( sắp xếp chèn ) cũng là một thuật toán sắp xếp nằm ở mức simple sort , cách thực hiện thì giống như người ta sắp xếp khi chơi tiến lên vậy.. Cứ lấy quan nhỏ chèn vào ví trí thích hợp nhỏ phía trước theo thứ tự..

Giống Thuật Toán Sắp Xếp Bubble Sort  độ phức tạp thuật toán là: O(n2) nhưng sắp xếp chèn lại cho ra số lần thực hiện ít hơn… nên sẽ nhanh hơn..

1. Ý Tưởng Thuật Toán:

Chú ý cái ảnh gif này:

Hiểu đơn giảnt thì thuật toán này nó thể này:

  • Giả sử ta cho key cứ chạy, và ta mặc định là từ i=0 đến i=key là một dãy đã sắp xếp.
  • Lấy số thứ key+1 đem ra mà tìm vị thích hợp ghép vào trong mảng i đến key
  • Lặp lại cho đến khi key = n

2. Giải thuật:

3. Code đơn giản với Node.js:

Sau khi chạy code thì sẽ được như thế này:

Như bạn thấy…

  • Vòng đầu tiên nó sắp xếp phần tử thứ 1, và 2 tức là 4 với 5
  • Sau vào tiếp theo lại là phần tử thứ 1, 23
  • Tương tự đến khi sắp xếp xong.

Phần 1: Thuật Toán Sắp Xếp Bubble sort với Node.js

Từ hôm nay mình sẽ chuyển sang viết về các series về các thuật toán đơn giản.. :V :V Bắt đầu là series về thuật toán sắp xếp,,,

Bubble sort hay đơn giản hơn thường gọi nó là sắp xếp nổi bọt, hay nói đơn giản hơn nữa là thuật toán đổi phần tử liền kề nhau.. :V :V  Đây là giải thuật đơn giản nhất, dễ hiểu nhất, chậm nhất thường được đưa vào trong chương trình khi đề đề cấp đến vấn đề sắp xếp…

Bắt đầu nào..

1. Ý tưởng thuật toán:

Nhìn vào hình sau, các bạn có thể hiểu sơ qua về ý tưởng thuật toán của phương pháp này…

Nguồn: Wiki

Xuất phát từ phần tử đầu tiên, sau đó so sánh với phần tử bên phải nó, nếu phần tử bên phải nhỏ hơn phần tử bên trai đang xét thì ta đổi vị trí hai phần tử đó, thực hiện như vậy cho đến phần tử thứ n-1 thì ta xác định vị trí bên phải cuối cùng là phần tử lớn nhất.

Sau đó, quay lại so sánh (và đổi chố nếu cần) hai phần tử đầu cho đến khi so sánh với phần tử thứ n-2…. Khi nào không còn phần tử nào thì coi như xong thuật toán…

Kiểu mình nói bên trên là sắp xếp từ trên xuống, nên chính xác thì không thể nói nó là nổi bọt được, sắp từ dưới lên mới gọi là nổi bọt.. :V :V Để tìm hiểu thêm bạn có thể xem thêm tại đây.

Độ phức tạp thuật toán là: O(n2)

2. Giải thuật:

Giải thuật đơn giản là giống hình này:

3. Code với Node.js:

Có thể viết một hàm đơn giản như thế này:

Kết quả sau khi test thì thế này, hàng cuối cùng là kết quả return về:

4. Kết bài:

Hôm nay chỉ đơn giản như vậy, series này còn rất dài và rộng… Hơn nữa còn rất nhiều thuật toàn và nhiều cách giải quyết khác nhau đang đợi Sói viết.. :V :V

Thất vọng với Windows, tôi trở về với Linux

Nghe cũng kỳ cục khi Sói vừa mới viết bài Hôm Nay, Tôi Bỏ Linux Để Về Dùng Windows vào một ngày rất gần đây, chính xác là tuần trước đó… Vậy mà hôm nay sói lại ngay lập tức về với Linux…

Haizz… Không muốn nói nhưng sau một tuần sử dụng Windows, phải nói là mình ngán nó đến tận cổ:

  • Trời ơi, cái cảm giác cập nhật bên Windows phải nói là kinh khủng… Cài xong hệ điều hành là phải cập nhật, lâu kinh khủng mà mình cũng chẳng biết nó cập nhật cái gì luôn… Thật đáng sợ…
  • Rồi tìm phần mềm cài vào, không biết nói thế nào cơ mà mỗi lần cứ phải lên google tìm, rồi lại phải tải về và sau đó là hàng đống nhưng cái next… next… Thật kinh khủng…
  • Rồi cái giao diện chẳng bao giờ thay đổi, dù có muốn thay đổi một chút mà lên mạng tìm hiểu thì thấy thật rắc rối… Lười chả muốn làm…
  • Rồi lại tài nguyên… Chả hiểu Windows 10 nó làm cái mẹ gì trong máy mình mà chỉ khởi động và nó ngốn mất của mình gần 2Gb RAM… Trong khi bên Manjaro của mình thì 2Gb RAM là một đống thứ đang được bật… Thật khó hiểu…
  • Mình mới dùng nên chả biết Windows 10 nó bảo mật thế nào cơ mà cứ mỗi lần cần quyên admin là click một phát… Nó cấp ngay… Thật khó hiểu cách quản lý của Windows 10… Ngay cả mật khẩu cũng chỉ nhập một lần..
  • Ời, thì nó hỗ trợ tốt phần cứng của mình đấy nhưng mà lại chả hiểu nổi nó.. :V :v
  • À, mà vấn đề quan trọng nhất là cái cmd hay cái powershell gì gì đó của Windows 10, phải nói là nó kinh khủng thật… Giống như một thứ lắp ráp từ một đống thứ linh tinh vào… Giao diện xấu kinh tởm…

À, mà mình không dùng cũng không nên nói lời cay đắng nhỉ… Nói chung là dù có nhiều bất cập nhưng Linux vẫn tuyệt với nhất… :V :v

Dùng Node.js gửi mail khi người dùng nhập form liên hệ

Khi người dùng nhập vào form liên hệ và ngay lập tức sẽ có một gmail gửi tới mình thông tin mà người dùng đã liên hệ mình, nghe thật hay đúng không… Vậy tại sao ta không dùng Node.js để giải quyết vấn đề đó nhỉ?

Bắt đầu với Sói nào…

1. Khởi tạo project:

Vì bản thân Sói rất là lười nên sói sẽ dùng express-generator để khởi tạo một project express cho nhanh nhé.. Nếu bạn chưa cài thì cài bằng lệnh:

yarn global add express-generator

Rồi lại tạo một project với lệnh:

express --view=hbs email-contact

Sau đó nó sẽ tạo ra một thư mục chuẩn của express, giờ thử chạy proejct bằng mấy lệnh sau:

cd email-contact
yarn install
nodemon

Ổn rồi… :V :V

2. Bắt đầu vào việc chính:

Tạo form liên hệ vào route trỏ đến nó

Các bạn thêm một router và khi get đến địa chỉ contact thì nó sẽ render contact và post đến địa chỉ đó thì nó sẽ render file thanks ra…

Tạo thêm 2 file và contact.hbsthanks.hbs ở thư mục views nhé.

Ở file layout.hbs thì thêm boostrap,  jquery vào nhé, code là:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

Bạn có thể thêm vào giữa cặp thẻ head cũng được:

Rồi ở body thì thêm mấy dòng html này để có được một cái menu:

<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
      </button>
      <a class="navbar-brand" href="/">MrSoi</a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="/about">About</a></li>
        <li><a href="/contact">Contact</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
      </ul>
    </div>
  </div>
</nav>

File layout.hbs của bạn có thể nó sẽ giống như thế này:

Rồi load lại trang khi nãy, click vào contact… Thấy mộ trang trống giống như hình mình là oke:

Giờ thì thêm html cho cái form là được rồi nè!!

Bạn sửa file contact.hbs thành như thế này:

<h1 class="text-center">{{{title}}}</h1>
<br/>
<div class="row">
    <div class="col-sm-6 col-md-offset-3">
        <form class="form-horizontal" method="post">
            <div class="form-group">
                <label for="name" class="col-sm-2 control-label">Name</label>
                <div class="col-sm-10">
                    <input name="name" type="text" class="form-control" id="mame" placeholder="Name" value="">
                </div>
            </div>
            <div class="form-group">
                <label for="email" class="col-sm-2 control-label">Email</label>
                <div class="col-sm-10">
                    <input name="email" type="email" class="form-control" id="email" placeholder="Email" value="">
                </div>
            </div>
            <div class="form-group">
                <label for="message" class="col-sm-2 control-label">Message</label>
                <div class="col-sm-10">
                    <textarea name="message" class="form-control" rows="3" id="message" placeholder="Message"></textarea>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default">Send</button>
                </div>
            </div>
        </form>
    </div>
</div>

Giờ đã có một cái form khá đẹp:

Sửa cài file thanks.hbs thành:

Xong… Giờ ta lại click vào button Send đi nào:

Tuyệt vời… Chúng ta đã đi được một nửa chặng đường rồi…

Kiểm tra dữ liệu người dùng trước khi cho phép họ gửi:

Chúng ta express-validator để kiểm tra dữ liệu đầu vào:

Như thông thường, trước tiên ta sẽ thêm module vào bằng lệnh yarn add express-validator vào.

Require nó vào và use với express:

var expressValidator = require('express-validator');
app.use(expressValidator());

Xong, sẽ được như hình này:

Qua bên index.js trong thư mục routes để thêm phần kiểm tra khi dữ liệu được post lên:

Bên file contact.hsb thì chúng ta thêm đoạn code hiển tị thông báo lỗi nếu có và giữ lại dữ liệu sau khi post:

Bạn để ý vòng lặp show ra thông báo lỗi và value của các input.

Quá đẹp trai luôn rồi… :V :V

Gửi mail đến cho mình khi người dùng liên hệ

Đây mới là phần quan trọng nhất của bài viết này mà:

Mình dùng nodemailer để giải quyết vấn đề này nhé…

Lại là câu lệnh thần thánh yarn add nodemailer.

Giờ tạo một file config.js ở thư mục gốc với nội dung như sau:

module.exports = {
    mailer:{
        service: 'Gmail',
        auth: {
            user: 'example@gmail.com',
            pass: '******'  //Pass gmail của bạn
        }
    }
}

Rồi qua bên index.js ở route thêm đoạn code này:

var nodemailer = require('nodemailer');

var config = require('../config');
var transport = nodemailer.createTransport(config.mailer);

Sửa lại một vài đoạn code thì toàn bộ code nó như thế này:

Rồi quay lại test trên trình duyệt:

Ngay lập tức có email gửi tới ( Thật ra là tự mình gửi cho mình, hí hí…)

Xong… Quá tuyệt vời… Sói thật tuyệt vời phải không nào.. Hí hí…

3. Một số lỗi khi làm theo:

Không thấy mail gửi tới:

Có thể là do bạn chưa bật less secure apps, có thể click đây để bật nó.

4. Lời nói cuối:

Hôm nay sói chẳng có gì muốn nói cả, mệt mỏi vì nhiều thứ lắm luôn….

Phần 2: Kiến trúc của điện toán đám mây

Phần này mình sẽ trình bày kiến thức về điện toán đám mây ở mức sâu hơn, không nằm ở mức độ xử lý nữa mà nằm ở phần kiến trúc…

1. Kiến trúc điện toán đám mây:

Hạ tầng cơ sở của điện toán đám mây ngày nay là sự kết hợp của các dịch vụ đáng tin cậy được phân phối bởi các nhà phát triễn CNTT hàng đầu thế giới như Microsoft , Amazon , Google… dựa trên nền tảng côn nghệ ảo hoá(virtualized) .về cơ bản ĐTĐM được chi thành các lớp cơ bản có tác động qua lại lẫn nhau:

  • Lớp hạ tầng và lưu trữ (lớp dưới cùng): là phần cứng được cung cấp như lầ các dịch vụ , nghĩa là được chia sẻ và có thể được sử dụng lại dễ dàng  . các tài nguyên phần cứng được cung cấp theo thời gian cụ thể theo yêu cầu . Dịch vụ kiểu này giúp cho khánh hàng giảm chi phí sử dụng , chi phí bảo hành . Phần lưu trữ trong ĐTĐM là phần được tách riêng khỏi phần hạ tầng cung cấp sức mạnh  xử lí của phần cứng . có thể nằm ở vị trí cách xa nơi chứa hạ tầng xử lí chính . lưu trữ đám mây cũng bao gồm các dịch vụ CSDL , ví dụ như Bigtable của Google , SimpleDB của Amazon,…
  • Lớp Cloud Runtime: là hệ thống phần mềm quản lí các yêu cầu đến phần cứng ở lớp dưới .Ví dụ như giao diện web để đặt hàng server ảo (VPS) , hoặc giao diện dòng lệnh (comand line) để thực hiện các yêu cầu lên hệ thống phần cứng thông qua các câu lệnh.
  • Lớp Dịch vụ đám mây (cloud service): tập hợp các dịch vụ thường giao tiếp thông qua các API để thực thi các yêu cầu của các ứng dụng trên Internet. Bằng việc kết hợp nhiều dịch vụ khác nhau .Ví dụ như Google map , các dịch vụ thanh toán linh hoạt sử dụng Internet.
  • Lớp ứng dụng phần mềm riêng : các nhà phát triển phát triển các phần mềm trên nền tảng hạ tầng đám mây, để sẵn sàng phục vụ nhu cầu của người dùng, loại bỏ sự cần thiết phải mua phần mềm, cài đặt vận hàng và duy trì ứng dụng tại máy bàn /thiết bị của người dùng. Ứng dụng đám mây  loại bỏ được các chi phí để bảo hành và vận hành các chương trình ứng dụng
  • Lớp hạ tầng khách hàng (client instrured) là những yêu cầu phần mềm hoặc phần cứng để sử dụng các dịch vụ ĐTĐM trên Internet . Thiết bị cung cấp cho khách hàng  có thể là trình duyệt máy tính để bàn , máy tính xách tay , điện thoại di động .

Một số nhà cung cấp dịch vụ ĐTĐM : Amazon , Microsoft , Google…

2. Phân tích, so sánh với các mô hình điện toán khác:

Nếu như so sánh với các dịch vụ điện toán khác thì điện toán đám mấy có gì khác…

Tính toán lưới (Grid computing):

Tính toán lưới là một loại hệ thống phân tán, bố trí song song, cho phép linh hoạt chia sẻ, tuyển lựa và tập hợp các nguồn tài nguyên độc lập và rải rác tùy theo khả năng sẵn có, công suât hoạt động, chi phí và yêu cầu về chất lượng của người dùng.

Tính toán lưới có nghĩa là tất cả hoặc phần của một nhóm máy tính , máy chủ , và thiết bị lưu trữ trong mạng doang nghiệp, được ảo hóa thành một cỗ máy tính lớn .

Tính toán lưới giải phóng những khả năng tính toán không được sử dụng tại một thời điểm bất kì, cho phép các doanh nghiệp tăng cường tốc độ, sức mạng xử lý thông tin và sự liên kết, thúc đẩy các quá trình tính toán tốc độ cao. Giống như dùng dịch vụ web, người dùng chỉ thấy nội dung thống nhất qua trang web, người sử dụng tính toán lưới cũng nhìn thấy một máy tính ảo cực lớn duy nhất.

Phần mềm hoạt đọng như một dịch vụ (SaaS –Software as a service)

là một mô hình triển khai phần mềm, là một nhánh của điện toán đám mây. Trên một mô hình này các nhà phát triễn cung cấp phần mềm như các dịch vụ theo yêu cầu khách hàng.

Tính toán theo yêu cầu (Utility Computing):

Cung cấp các dịch vụ tính toán, người dùng thanh toán cho những phần đã dùng giống như việc sử dụng điện /nước trong các gia đình . tất cả các tài nguyên tính toán được cung cấp cho khách hàng đều dưới dạng dịch vụ theo yêu cầu , bao gồm phần cứng (Hardware as a service ) , cơ sở hạ tầng (Iaas – infrastyre as a service ) nền tảng (Paas –platform as a service ) . tất cả đều được cung cấp như là các dịch vụ.

Dịch vụ web cung cấp các dịch vụ nội dung để người dùng có thể kết nối thông qua trình duyệt , các dịch vụ này chạy trên máy chủ được kết nối với Internet.
MSP-Managed service Provider: mô hình dành chủ yếu cho giới chuyên môn hơn là người dùng cuối  , ví dụ: Dịch vụ quét virus cho email.

3. Ưu điểm và hạn chế của điện toán đám mây:

Ưu điểm:

  • Tốc độ xử lí nhanh ,cung cấp cho người dùng những dịch vụ nhanh chóng và giá thành rẻ dựa trên nền tảng cơ sở hạn tầng tập trung.
  • Chi phí đầu tư ban đầu về cơ sở hạ tầng máy móc nguồn nhân lực của người sử dụng điện toán đám mây được giảm đến mức thấp nhất có thể.
  • Không còn phụ thuộc và thiết bị và vị trí địa lý , cho phép người dùng truy cập và sử dụng hệ thống thông qua trinh duyệt web ở bất kì thiết bị nào mà họ sử dụng.
  • ĐTĐM có độ tin cậy cao , không chỉ dành cho người dùng phổ thông mà còn đáp ứng yêu cầu cao và liên tục của các công ty công nghệ và các nghiên cứu khoa học.
  • Khả năng mở rộng được , giúp cải thiện chất lượng của các dịch vụ được cung cấp trên “đám mây”.
  • Khả năng bảo mật được cải thiện do sự tập trung về dữ liệu.
  • Các ứng dụng các ĐTĐM dễ dàng để sửa chữa hơn vì chúng ko được cài đặt cố định trên một máy tính nào. Chúng cũng dễ dàng hỗ trợ và cải thiện về tính năng.
  • Tài nguyên sử dụng của ĐTĐM luôn được quản lí theo từng ngày , từng tuần , từng tháng , Điều này đảm bảo cho việc định giá cả của dịch vụ do ĐTĐM cung cấp để người dùng có thế lựa chọn phù hợp
  • Chia sẻ tài nguyên và chi phí trên một địa bàn rộng lớn . mang lại nhiều lợi ích cho người dùng như :
    • Tập trung cơ sở hạ tầng tại một vị trí giúp người dùng không tốn nhiều giá thành đầu tư về trang thiết bị .
    • Công suất xử lí nhanh hơn do tài nguyên được tập trung. Ngoài ra, người dùng không cần phải đầu tư về nguồi nhân lực quản lí hệ thống .
    • Khả năng khai thác và hiệu suất được cải thiện hơn so với hệ thống máy tính cá nhân thông thường .

Hạn chế:

  • Tính riêng tư: các thông tin người dùng và dữ liệu được chứa trên ĐTĐM có đảm bảo được riêng tư  và liệu các thông tin có bị sử dụng vì một mục đích nào khác?
  • Tính sẵn dùng: liệu các dịch vụ đám mây có bị treo bất ngời , khiến cho người dùng không thể truy cập được các dịch vụ và dữ liệu của mình trong khoảng thời gian nào đó khiến ảnh hưởng đến công việc?
  • Mất dữ liệu: lo ngại về việc các dịch vụ lưu trữ đám mây bất ngờ dừng hoạt động hoặc không tiếp tục cung cấp dịch vụ , khiến cho người dùng phải sao lưu dữ liệu của họ về máy tính cá nhân. Điều này sẽ mất nhiều thời gian .Thậm chí trong vài trường hợp , vì một lí do nào đó , dữ liệu người dùng có thể bị mất và không thể phục hồi được.
  • Tính di dộng của dữ liệu và quyền sở hữu: Một câu hỏi được đặt ra là liệu người dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ đám mây khác? hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụ cung cấp từ đám mây. Liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ đám mây . và làm cách nào để người dùng chắc chắn rằng các dịch vụ dám mây sẽ không huỷ toàn bộ dữ liệu của họ trong trường hợp dịch vj ngừng hoạt động?
  • Khả năng bảo mật: vấn đề tập trung dữ liệu trên các đám mây là cách hiệu quả để tăng cường bảo mật . nhưng mặt khác cũng chính là mối lo của người dùng khi sử dụng dịch vụ của ĐTĐM . bởi vì một khi các đám mây bị tấn công hoặc đột nhập thì toàn bộ dữ liệu sẽ bị chiếm dụng. Tuy nhiên đây không thực sự là vấn đề riêng của ĐTĐM , bỏi vì tấn công đánh cắp dữ liệu là vấn đề gặp phải trên bất kì môi trường nào , ngay cả trên các máy tính cá nhân.

Phần 1: Tổng quan về điện toán đám mây

Hầy… Mình đang học môn điện toàn đám mây nên viết mấy câu tổng quan lại kiến thức coi như là giúp ích cho đời, giúp cho mình… :V :V

1. Khái niệm:

Thuật ngữ điện toán đám mây xuất hiện vào năm 2007, đó là kiểu triển khai hệ thống mà tài nguyên lưu trữ được cung cấp  như dịch vụ trên internet.

  • Theo Wikipedia thì điện toán đám mây là một môi trường tính toán trên internet mà ở đó tất cả phần mềm, dữ liệu, tài nguyên được cung cấp dựa theo nhu cầu.
  • Theo tổ chức xã hội máy tính IEEE: điện toán đám mây là hình mẫu trong đó thông tin được lưu trữ thường trực tại các máy chủ trên internet và chỉ được lưu trữ tạm thời ở các máy khách như máy tinh cá nhân, thiết bị giải trí, các máy tính cầm tay.

2. Các tính chất cơ bản của điện toán đám mây (Cloud Computing):

  • Tự phục vụ theo yêu cầu (On-demand self-service): Đặc tính kĩ thuật của cloud computing cho phép khách hàng tự thiết lập các nguồn lực/tài nguyên đáp ứng nhu cầu của hệ thống như: thời gian sử dụng máy chủ, dung lượng lưu trữ, hệ thống mạng, sức mạnh của máy chủ, bộ nhớ RAM, loai ổ đĩa(SSD,HDD)…
  • Truy xuất diện rộng (Broad network access): Cloud computing cung cấp các dịch vụ chạy trên môi trường internet là có thể sử dụng được dịch vụ. Các thiết bị truy xuất thông tin không yêu cầu có cấu hình cao (thin-client platform) như: mobile phone, laptop, table…
  • Dùng chung tài nguyên (resource pooling): Tài nguyên của nhà cung cấp dịch vụ được dùng chung, phục vụ cho nhiều người dùng dựa trên mô hình “Multi-tenancy”. Mô hình này cho phép tài nguyên phần cứng và tài nguyên ảo hóa sẽ được phát động đựa trên nhu cầu của người dùng. Khi nhu cầu người dung giảm xuống hoặc tăng lên thì tài nguyên sẽ được cấp phát tương ứng theo nhu cầu.

– VD:  Một server vật lí được ảo hóa (virtualize) thành nhiều server ảo (VPS-Virtual Private Server) Người dùng không cần quan tâm tới việc điều khiển hoặc cũng không cần biết chính xác vị trí của các tài nguyên sẽ được cung cấp: bộ nhớ, CPU, băng thông, điện, làm mát….

  • Khả năng co dãn (Rapid elasticity): Cloud Computing có khả năng cho phép tự động mở rộng hoặc thu nhỏ hệ thống theo yêu cầu cảu người dùng một cách nhanh chóng làm cho việc sử dụng tài nguyên hiệu quả, tận dụng triệt để tài nguyên dư thừa,phục vụ được nhiều khách hàng. Đối với người dùng giúp giảm chi phí do chỉ phải trả cho những tài nguyên thực sự dùng.
  • Khả năng đo lường (Measured service ) – chi trả theo thực dụng: Tương tự với các phục vụ cho các tiện ích theo nhu cầu truyền thống như điện, nước, tiền mạng… Cloud Computing cho phép giới hạn dung lượng lưu trữ, băng thông, tài nguyên tính toán, số người dùng được kích hoạt theo thời gian được chỉ định.

3. Các mô hình cloud computing:

Được phân theo 2 cách: mô hình dịch vụ (Service Models) và mô hình triển khai (Deployment Models)

Mô hình dịch vụ:

SaaS (Software as a service), Paas (Platform as a Service ), Laas (Infrastructure as a service)

  • Software as a service: Nhà cung cấp dịch vụ sẽ cung cấp cho khách hàng một phần mềm dạng dịch vụ hoàn chỉnh khách hàng chỉ cần lựa chọn ứng dụng phần mềm phù hợp với nhu cầu và chạy ứng dụng đó trên cơ sở hạ tầng đám mây. Mô hình này giải phóng người dùng khỏi việc quản lí hệ thống cơ sở hạ tầng,hệ điều hành…. Tất cả sẽ do nhà cung cấp dịch vụ quản lí và kiểm soát để đảm bảo ứng dụng luôn sẵn sàng và hoạt động ổn định.

 VD: Office365, GoogleDrive(google Docs,Spreadsheet,…)

  • Platform as a Service: Nhà cung cấp dịch vụ cung cấp một nền tảng cho khách hàng để tự phát triển các ứng dụng của mình trên Platform đó. Khách hàng không cần phải quản lí hoặc kiểm soát các cơ sở hạ tầng bên dưới bao gồm: mạng máy chủ, hệ điều hành, trình dịch… nhưng quản lí các ứng dụng mình cài đặt và phát triển.

VD:  Heroku, google app engine, Microsoft Azure,…

  • Infrastructure as a Service: Khách hàng thuê tài nguyên máy tính cơ bản(bộ xử lí,dung lượng,lưu trữ,kết nối mạng… ) khách hàng cài đặt hệ điều hành cấu hình các ứng dụng thư viện theo nhu cầu nhà cung cấp dịch vụ sẽ quản lí hệ điều hành các thư viện, các ứng dụng triển khai trên hệ thống, các kết nối giữa các thành phần.

VD: Digitalocean,HostGator…

Mô hình triển khai:

Có thể chia làm public cloud, private cloud, hybrid cloud…

  • Public cloud: các dịch vụ cloud được nhà cung cấp dịch vụ cung cấp cho mọi người sử dụng rộng rãi. Các dịch vụ và quản lí bởi nhà cung cấp dịch vụ và các ứng dụng đều nằm trên hệ thống Cloud.
  • Private cloud: cơ sở hạ tầng và dịch vụ được xây dựng để phục vụ cho 1 tổ chức (doanh nghiệp) duy nhất. Điều này giúp cho doanh nghiệp có thể kiểm soát tối đa đối với dữ liệu bảo mật và chất lượng dịch vụ.
  • Hybrid Cloud: là sự kết hợp của public cloudprivate cloud. Trong đó doanh nghiệp sẽ thuê dịch vụ public cloud cho một vài chức năng nghiệp vụ và dữ liệu. Đồng thời doanh nghiệp tự triển khai mô hình private cloud đối với những dữ liệu tối quan trọng,không muốn để trên đám mây công cộng

4.  Một vài ứng dụng của điện toán đám mây:

  • Ứng dụng lưu trữ trực tuyến: google drive, dropbox, ubuntuone, onedrive,…
  • Ứng dụng webmail: gmail, yahoo mail, hotmail…
  • Ứng dụng công cụ trên đám mây: google docs, anti-virus, phần mềm dịch….

Viết cho tôi của những ngày chông chênh!!!

Cuộc đời cũng như cuộc sống, ai rồi cũng có những ngày chông chênh, những ngày trong tay bản thân chưa có gì cả… Những ngày chông chênh lạc lối, những ngày không biết nên đi đâu, về đâu… không biết bản thân đã làm gì, đã được gì…

Bản thân cố gắng làm nhiều thứ mà thấy mọi việc chẳng đến đâu… Đã cố gắng sống cho không hối tiếc về tuổi trẻ, về thanh xuân mà sao vẫn thấy tương lai vẫn rất mịt mù…

Những ngày, thấy mọi thứ thật trống rỗng, chẳng có gì cả… Trống rỗng… Và có những ngày chỉ mong ai đó, ở cạnh bên, chẳng cần họ làm gì cả… Chỉ cạnh bên thôi….

Dẫu biết, cuộc sống sẽ có những ngày buồn, những ngày vui mà sao hôm nay thấy mọi thứ thật kỳ lạ… Trống rỗng một  cách kỳ lạ… không buồn, không vui cũng chăng đau khổ… Chỉ đơn giản là có những ngày trống rỗng như vậy đó…