Lập trình Game2D trên Android bằng Java thuần (bài 2)


Bài 1

Phát triển Game về bản chất vẫn là làm phần mềm nên cũng gồm nhiều công đoạn khác nhau, đại khái qui trình làm Game gồm các khối công việc như sau:

game

Trong các loạt bài này chúng ta chỉ thực hiện  ở nhóm công việc 02 là chủ yếu, các giai đoạn còn lại đòi hỏi phải có thêm kiến thức vể hình ảnh, âm thanh, kịch bản, ….

Trong trò chơi chúng ta chia làm 02 nhóm tài nguyên là hình ảnh và âm thanh được lấy từ bài 01.

Để dễ hình dung chúng ta xem hình sau

game2

Giao diện để thể hiện trò chơi trên Android chúng ta sẽ sử dụng Activity đơn giản để sẽ nhé 😀 về xử lý chúng ta có 02 đối tượng

  1. Đối tượng chức các hình vẽ  (GamePanel)
  2. Đối tượng để xử lý các hình vẽ (Game)

Việc vẽ các đối tượng (30 lần trong 1 giây) và xử lý các đối tượng phải tiến hành song song nhau, ở đây tôi chọn GamePanel ở luồng chính và xử lý các đối tượng tôi sẽ tách chạy luồng riêng. Các thao tác này sẽ lặp đi lặp lại trong cả quá trình trò chơi diễn ra

Nói nhiều cũng rối giờ chúng ta tạo Project Android và 02 đối tượng GamePanel, Game như sau:

game4

Cấu trúc thư mục như trên

Chạy thử nhe

OK như vậy là chúng ta vừa tạo được vòng lặp cho trò chơi của mình.

Nội dung lớp Game

package vn.cusc.javagame2d;
import android.graphics.Canvas;
import android.util.Log;
import android.view.SurfaceHolder;
import java.util.Timer;
import java.util.TimerTask;
/**
 * Created by ntdan on 2/7/17.
 */
public class Game extends Thread {
    public GamePanel gamePanel;
    public SurfaceHolder surfaceHolder;
    Timer timer;
    TimerTask task;

    boolean dangChay = true;
    int soLan =1;

    public Game(final GamePanel gamePanel, final SurfaceHolder surfaceHolder) {
        this.gamePanel = gamePanel;
        this.surfaceHolder = surfaceHolder;

        timer = new Timer();
        task = new TimerTask() {
            @Override
            public void run() {
                if(dangChay)
                {
                    // goi thao tac cap nhat
                    // goi thao tac ve lai
                    gamePanel.capnhat();
                    Canvas canvas = surfaceHolder.lockCanvas();
                    if(canvas != null) {
                        gamePanel.draw(canvas);
                        surfaceHolder.unlockCanvasAndPost(canvas);
                    }
                    // in ra de xem vong lap nhe
                    Log.d("Lan: ", ""+soLan++);
                }else
                {
                    timer.cancel();
                }
            }
        };
    }

    @Override
    public void run() {
        super.run();
        // co nghia la 1000/30 mili giay se goi thuc thi task 1 lan
        timer.scheduleAtFixedRate(task, 0, 1000/30);
    }
}

Lớp GamePanel

package vn.cusc.javagame2d;

import android.content.Context;
import android.graphics.Canvas;
import android.view.SurfaceView;

/**
 * Created by ntdan on 2/7/17.
 */

public class GamePanel extends SurfaceView {
    Game game;

    // cac doi tuong can ve

    public GamePanel(Context context) {
        super(context);
        game = new Game(this, this.getHolder());
    }

    public void chay()
    {
        // tien hanh phan luong
        // luong se thuc thi noi dung o ham run cua lop Game
        game.start();
    }

    public void dung()
    {
        game.dangChay = false;
        game.interrupt();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        ve(canvas);
    }

    public void capnhat()
    {
        // cap nhat cac doi tuong
    }

    public void ve(Canvas canvas)
    {
        // ve lai
    }
}

Thay thế giao diện ứng dụng bằng trò chơi

package vn.cusc.javagame2d;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    GamePanel gamePanel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //setContentView(R.layout.activity_main);

        gamePanel = new GamePanel(MainActivity.this);

        setContentView(gamePanel);
    }

    @Override
    protected void onResume() {
        super.onResume();

        gamePanel.chay();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        gamePanel.dung();
    }
}

Dừng bài 02 đây nhé =>>

LẬP TRÌNH Scratch (Thầy Bùi Việt Hà)


LẬP TRÌNH Scratch

Cuốn sách sẽ bao quát tất cả các chủ đề chính của môi trường lập trình Scratch bao gồm: chuyển động, đồ họa, âm thanh, hội thoại, cảm biến, biến nhớ, xử lý số – xâu ký tự – mảng số, thủ tục và clone. Đối tượng của sách có thể là giáo viên tin học, giáo viên thường, học sinh tất cả các cấp từ Tiểu học, THCS, THPT.Về định hướng nội dung của cuốn sách này sẽ là một trung dung giữa ứng dụng thuần túy thực tế và kiến thức hàn lâm của khoa học máy tính. Chúng tôi không đi quá sâu vào học thuật sẽ gây nhàm chán, khó hiểu với học sinh, nhưng cũng không sa đà quá nhiều vào các kỹ năng thiết kế trò chơi, phim hoạt hình, …Nội dung sách sẽ được chia thành nhiều bài học nhỏ. Mỗi bài học đều có chung 1 cấu trúc nhất định. Người học có thể tự học hoặc học, thực hành dưới sự hướng dẫn của giáo viên.tu_hoc_scratch_noindex

MÔ HÌNH SCRUM (Post lại)


Tài liệu không có tiêu đề

TÌM HIỂU VỀ MÔ HÌNH SCRUM

1 Tìm hiểu về phương thức agile:

1.1 Agile là gì ?

1.2 Các tuyên ngôn của Agile :

1.3 Những nguyên tắc của Agile

2. Tìm hiểu Scrum

2.1 Scrum là gì ?

2.2. Ba chân (hay giá trị cốt lõi) của Scrum

2.2.1 Minh bạch (transparency):

2.2.2 Thanh tra (inspection)

2.2.3 Thích nghi (adaptation

2.3 Một số ưu điểm, nhược điểm đặc điểm của Scrum:

2.3.1 Ưu điểm :

2.2.3 Nhược điểm:

3. Quy trình của Scrum :

4. Công cụ Scrum :

4.1 Product backlog :

4.2 Sprint backlog:

4.3. Burndown Chart:

5. Các cuộc họp trong crum:

5.1 Sprint Planning (Họp Kế hoạch Sprint):

5.2 Daily Scrum (Họp Scrum hằng ngày):

5.3 Sprint Review (Họp Sơ kết Sprint):

5.4 Sprint Retrospective (Họp Cải tiến Sprint):

6. Các vai trò sau :

6.1 ScrumMaster :

6.2 Product Owner:

6.3 Team :

6.4 User :

6.5 Stakeholders:

7. Scrum vận hành như thế nào ?

8. Mô hình Scrum:

9. So sánh mô hình thác nước với mô hình Scrum.

10. Tài liệu tham khảo


Mô hình Scrum

Khi tôi viết bài này thì tôi cũng có tìm hiểu về mô hình Scrum trên mạng có rất nhiều nhưng quả thật để đọc và hiểu về mô hình thật là một vấn đề không dễ lúc đầu tôi đọc suốt đọc suốt mình thật sự cũng có được nghe giảng qua nhưng chưa hiểu rồi tôi tiếp tục tìm thêm tài liệu trên mạng về vấn đề này .

Để đi vào vấn đề thì bạn cần hiểu về aglie là gì ? Tại sao mô hình này được gắn với phương thức agile, Scrum là gì, các ưu nhược điểm? Liệu rằng đọc xong tài liệu nào đó bạn thực sự đã hiểu về mô hình? Cách thức hoạt động của mô hình thế nào? Trong mô hình có những ai tham gia? Trước mô hình này đã có mô hình khác, mô hình này đã là được nâng cao từ các mô hình khác như thế nào? Mình có lúc tự đặt quá nhiều câu hỏi rồi không biết trả lời thế nào ? những lúc đó mình đi hỏi đi tìm tài liệu và quả là không đơn giản để hiểu cặn kẽ một vấn đề mà mình là người bước vào nghề với vị trí tester, mình cũng mong qua bài này có gì sai các anh chị đóng gióp thêm cho mình nha kiến thức vô bờ khi ta tìm được gì đó là giống như lượng được một hạt cát nhỏ trên xa mạc vô tận vậy ,

Thôi nói quá nhiều rồi giờ đi vào vấn đề chính, có mấy vấn đề như đã nói ở trên muốn hiểu phải tìm hiểu khái niệm Scrum bạn trước tiên phải biết về agile, qua vài điều sau , agile là gì các tuyên ngôn của agile và nguyên tắc của agile.

1 TÌM HIỂU VỀ PHƯƠNG THỨC AGILE:

1.1 AGILE LÀ GÌ ?

Agile là Phương thức phát triển phần mềm linh hoạt (Agile Software Development) trong vòng đời phát triển phần mềm và đã trở nên phổ biến trong ngành phát triển phần mềm hiện nay.

1.2 CÁC TUYÊN NGÔN CỦA AGILE :

  • Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ”
  • Sản phẩm xài được quan trọng hơn tài liệu về sản phẩm”
  • Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng”
  • Phản hồi với sự thay đổi quan trọng hơn bám theo kế hoạch”

1.3 NHỮNG NGUYÊN TẮC CỦA AGILE

  • Thỏa mãn yêu cầu của khách hàng thông qua việc giao hàng sớm và liên tục
  • Chào đón việc thay đổi yêu cầu, thậm chí là những thay đổi yêu cầu muộn
  • Giao phần mềm chạy được cho khách hàng một cách thường xuyên (giao hàng tuần hơn là hàng tháng)
  • Nhà kinh doanh và kỹ sư lập trình phải làm việc cùng nhau hàng ngày trong suốt dự án
  • Các dự án được xây dựng xung quanh những cá nhân có động lực. Cung cấp cho họ môi trường và sự hỗ trợ cần thiết, và tin tưởng họ để hoàn thành công việc
  • Trao đổi trực tiếp mặt đối mặt là phương pháp hiệu quả nhất để truyền đạt thông tin
  • Phần mềm chạy được là thước đo chính của tiến độ
  • Phát triển bền vững và duy trì được nhịp độ phát triển liên tục
  • Liên tục quan tâm đến kĩ thuật và thiết kế để cải tiến sự linh hoạt
  • Sự đơn giản là cần thiết – nghệ thuật tối đa hóa lượng công việc chưa hoàn thành
  • Nhóm tự tổ chức
  • Thích ứng thường xuyên với sự thay đổi

Trên mình đã giới thiệu sơ qua về agile , sau đây cùng tìm hiểu về Scrum, quy mô và quy trình của nó như thế nào nhé.

2. TÌM HIỂU SCRUM

2.1 SCRUM LÀ GÌ ?

Scrum là một phương pháp linh hoạt (agile), được áp dụng phổ biến, vì thế nó tuân thủ các nguyên tắc của Agile Manifesto (xem thêm Tuyên ngôn Agile) với các đặc điểm lặp và gia tăng cho phép các tổ chức điều chỉnh nhanh chóng khi có sự thay đổi các yêu cầu .

2.2. BA CHÂN (HAY GIÁ TRỊ CỐT LÕI) CỦA SCRUM

Ngoài ra Scrum hoạt động dựa trên ba giá trị cốt lõi, còn gọi là Ba chân của Scrum bao gồm Minh bạch, Thanh tra và Thích nghi.

2.2.1MINH BẠCH (TRANSPARENCY):

Trong Scrum, tính minh bạch được đề cao như là giá trị cốt lõi cơ bản nhất. Muốn thành công với Scrum, thông tin liên quan tới quá trình phát triển phải minh bạch và thông suốt. Các thông tin đó có thể là: tầm nhìn (vision) về sản phẩm, yêu cầu khách hàng, tiến độ công việc, các khúc mắc và rào cản v.v. Từ đó mọi người ở các vai trò các nhau có đủ thông tin cần thiết để tiến hành các quyết định có giá trị để nâng cao hiệu quả công việc. Các công cụ và cuộc họp trong Scrum luôn đảm bảo thông tin được minh bạch cho các bên.Sự minh bạch yêu cầu các yếu tố này cần được định nghĩa theo một tiêu chuẩn để những người quan sát có thể hiểu những gì họ thấy theo cùng một cách.

Ví dụ:

  • Một ngôn ngữ chung về quy trình cần phải được chia sẻ cho tất cả các bên tham gia.
  • Một định nghĩa chung về “Hoàn thành”1 phải được chia sẻ bởi những người đảm đương công việc và những người chấp nhận sản phẩm của công việc đó.

2.2.2 THANH TRA (INSPECTION)

Người sử dụng Scrum phải thường xuyên thanh tra các đồ nghề và tiến độ đến đích để phát hiện các bất thường không theo ý muốn. Tần suất thanh tra không nên quá dày để khỏi ảnh hưởng đến công việc. Công tác thanh tra có ích nhất khi được thực hiện bởi người có kĩ năng tại các điểm quan trọng của công việc.

2.2.3 THÍCH NGHI (ADAPTATION)

Nếu một người thanh tra xác định được rằng có vấn đề nào đó vượt quá giới hạn cho phép, và hậu quả của vấn đề đó đối với sản phẩm là không thể chấp nhận được, thì quy trình hoặccác vật liệu được xử lý (processed material) phải được điều chỉnh. Sự điều chỉnh phải được tiến hành càng sớm càng tốt để giảm thiểu các sai sót khác có thể xảy ra.Scrum cung cấp bốn cơ hội chính thức cho việc thanh tra và thích nghi trong. Scrum có thể phản hồi lại các thay đổi một cách tích cực, nhờ đó mang lại thành công cho dự án.các Sự kiện Scrum, bao gồm:

  • Buổi Họp Kế hoạch Sprint (Sprint Planning Meeting)
  • Họp Scrum hằng ngày (Daily Scrum)
  • Sơ kết Sprint (Sprint Review)
  • Cải tiến Sprint (Sprint Retrospective)

2.3 MỘT SỐ ƯU ĐIỂM, NHƯỢC ĐIỂM ĐẶC ĐIỂM CỦA SCRUM:

2.3.1 CÁC ĐẶC ĐIỂMCỦA SCRUM

  • Là một khuôn khổ quy trình nhẹ phù hợp với sự phát triển nhanh.
  • Là được sử dụng rộng rãi.
  • Thường áp dụng để quản lý phần mềm phức tạp và phát triển sản phẩm, dùng lặp đi lặp lại và gia tăng
  • Giảm thời gian dành cho quản lý, tăng thời gian dành cho việc phát triển,Tăng chất lượng sản phẩm và so với các mô hình cổ điển như mô hình thác nước
  • Cho phép các tổ chức dễ điều chỉnh khi có sự thay đổi yêu cầu nhanh chóng, và sản xuất ra một sản phẩm đáp ứng mục tiêu kinh doanh phát triển.

2.3.2 ƯU ĐIỂM:

  • Một người có thể làm nhiều việc ví dụ như dev có thể test
  • Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
  • Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồi sớm.
  • Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu.

2.2.3 NHƯỢC ĐIỂM:

  • Trình độ của nhóm là có một kỹ năng nhất định
  • Phải có sự hiểu biết về mô hình aglie .
  • Khó khăn trong việc xác định ngân sách và thời gian.
  • Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài khi có quá nhiều yêu cầu thay đổi từ khách hàng.
  • Vai trò của PO rất quan trọng, PO là người định hướng sản phẩm. Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung

3. QUY TRÌNH CỦA SCRUM :

Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.

Một sprint hoàn thành một chức năng , mục đích nào đó trong toàn hệ thống .Các nhiệm vụ của sprint được chia thành danh mục, đội phát triển sẽ làm việc và đánh giá lại sao cho đạt mục tiêu ban đầu trong khoảng thời gian đề ra.

4. CÔNG CỤ SCRUM :

4.1 PRODUCT BACKLOG :

Đây là danh sách ưu tiên các tính năng (feature) hoặc đầu ra khác của dự án, có thể hiểu như là danh sách yêu cầu (requirement) của dự án. Product Owner chịu trách nhiệm sắp xếp độ ưu tiên cho từng hạng mục (Product Backlog Item) trong Product Backlog dựa trên các giá trị do Product Owner định nghĩa (thường là giá trị thương mại – business value)

 

User stories

Business Priority

Story Point

A

1

5

B

2

6

C

3

9

D

4

1

 4.2 SPRINT BACKLOG:

Đây là bản kế hoạch cho một Sprint; là kết quả của buổi họp lập kế hoạch (Sprint Planning). Với sự kết hợp của Product Owner, nhóm sẽ phân tích các yêu cầu theo độ ưu tiên từ cao xuống thấp để hiện thực hóa các hạng mục trong Product Backlog dưới dạng danh sách công việc (TODO list).

4.3. BURNDOWN CHART:

Đây là biểu đồ hiển thị xu hướng của dự án dựa trên lượng thời gian cần thiết còn lại để hoàn tất công việc,dùng để theo dõi tiến độ của Sprint (được gọi là Sprint Burndown Chart) hoặc của cả dự án (Project Burndown Chart).

 5. CÁC CUỘC HỌP TRONG CRUM:

Nhằm tạo ra môi trường của sự hợp tác gần gũi giữa team member và product owner để phát triễn sản phẩm sẽ có 4 cuộc họp

Trước khi Sprint bắt đầu (Sprint Planning), trong khi Sprint diễn ra (Daily Scrum) và sau khi Sprint kết thúc (Sprint Review và Sprint Retrospective).

5.1 SPRINT PLANNING (HỌP KẾ HOẠCH SPRINT):

Nhóm phát triển gặp gỡ với Product Owner để lên kế hoạch làm việc cho một Sprint (xem thêm phần Sprint bên dưới). Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân tích và nhận biết các công việc phải làm kèm theo các ước lượng thời gian cần thiết để hoàn tất các tác vụ. Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời của dự án mà được lặp đi lặp lại, có sự thích nghi với các tình hình thực tiễn trong tiến trình đi đến sản phẩm.

5.2 DAILY SCRUM (HỌP SCRUM HẰNG NGÀY):

Scrum Master tổ chức cho Đội sản xuất họp hằng ngày trong khoảng 15 phút để Nhóm Phát triển chia sẻ tiến độ công việc cũng như chia sẻ các khó khăn gặp phải trong quá trình phát triển phần mềm suốt một Sprint. Trong cuộc họp mỗi người sẽ trả lời 3 câu hỏi sau:

  • Hôm qua đã làm gì?
  • Hôm nay sẽ làm gì?
  • Có khó khăn trở ngại gì không?

5.3 SPRINT REVIEW (HỌP SƠ KẾT SPRINT):

Cuối Sprint, nhóm phát triển cùng với Product Owner sẽ rà soát lại các công việc đã hoàn tất (DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi cần thiết cho sản phẩm.· Sprint Retrospective (Họp Cải tiến Sprint)Dưới sự trợ giúp của Scrum Master, nhóm phát triển sẽ rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm.

5.4 SPRINT RETROSPECTIVE (HỌP CẢI TIẾN SPRINT):

Dưới sự trợ giúp của Scrum Master, nhóm phát triển sẽ rà soát lại toàn diện Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân sản phẩm. Trong buổi họp các vấn đề xoay quanh là :

  • Những việc nào chúng ta nên bắt đầu làm
  • Những việc nào chúng ta không nên làm tiếp
  • Những việc nào chúng ta nên duy trình làm tiếp

6. CÁC VAI TRÒ SAU :

6.1 SCRUMMASTER : (KIỂM THỬ HOẶC LẬP TRÌNH)

Người chịu trách nhiệm làm cho quy trình chạy trơn tru, để loại bỏ những trở ngại mà tác động đến năng suất, và tổ chức, tạo điều kiện cho các cuộc họp quan trọng. Có hiểu biết về quy trình một cách cặn cẽ

6.2 PRODUCT OWNER:(KHÁCH HÀNG HOẶC QUẢN LÝ)

Người quản lý người cung cấp yêu cầu “, nguồn tin duy nhất của chân lý” cho nhóm liên quan đến yêu cầu và kế hoạch của họ để triển khai thực hiển. Người có mọi quyền quyết định có thể thực hiện sprint hay loại bỏ sprint, một người biết về yêu cầu rõ nhất.

6.3 TEAM :

Một tự tổ chức và sự liên quan giữa các bộ phận phát triển và thử nghiệm, những người làm làm việc bằng tay để ra sản phẩm; chịu trách nhiệm sản xuất sản phẩm.

6.4 USER :

người sử dụng sản phẩm

6.5 STAKEHOLDERS:

có thể đội hỗ trợ, khách hàng

7. SCRUM VẬN HÀNH NHƯ THẾ NÀO ?

Product Owner tạo ra Product Backlog chứa các yêu cầu của dự án với các hạng mục được sắp theo thứ tự ưu tiên. Đội sản xuất sẽ thực hiện việc hiện thực hóa dần các yêu cầu của Product Owner với sự lặp đi lặp lại các giai đoạn rút từ 1 đến 4 tuần làm việc (gọi Là Sprint) với đầu vào là các hạng mục trong Product Backlog, đầu ra là các gói phần mềm hoàn chỉnh có thể chuyển giao được (Potentially Shippable Product Increment).

  • Khởi đầu sprint là Start sprint meeting, đội sản xuất cùng họp với Product Owner (PO), PO giải thích cho đội dự án về những yêu cầu . Team cùng làm việc với PO để đưa ra một Sprint Backlog bao gồm những thông tin: Task, priority, estimation, đánh giá mức độ khó của từng task, phân chia công việc (Cả 2 sẽ thống nhất những gì có thể làm trong sprint hiện tại).=> Kết quả của buổi lập kế hoạch (theo cách làm của Scrum) là Sprint Backlog chứa các công việc cần làm trong suốt một Sprint.
  • Trong suốt quá trình thực hiện sprint, nhóm sẽ phải cập nhật Sprint Backlog và thực hiện công việc họp hằng ngày (Daily Scrum) để chia sẻ tiến độ công việc cũng như các vướng mắc trong quá trình làm việc cùng nhau. Mỗi thành viên sẽ nói nhanh gọn về những gì đã làm trong ngày hôm trước, những gì sẽ làm và những khó khăn trong lúc thực hiện các task được phân công. Nhóm được trao quyền để tự quản lí và tổ chức lấy công việc của mình để hoàn thành công việc trong Sprint.
  • Khi kết thúc Sprint team sẽ có buổi họp Sơ kết Sprint (Sprint Review) ở cuối Sprint, Team sẽ demo những gì đã làm, chức năng hoàn chỉnh, sẵn sàng chuyển giao (shippable) cho PO. PO sẽ đánh giá những gì Team làm có đúng với yêu cầu không và đưa ra Feedback (nếu PO là BA thì cần phải trao đổi với khách hàng nếu cần). Những feedback của khách hàng (bao gồm cả lỗi) sẽ được đưa vào sprint tiếp theo. =>sẽ giúp khách hàng thấy được nhóm đã có thể chuyển giao những gì, còn những gì phải làm hoặc còn gì phải thay đổi hay cải tiến.
  • Sau khi kết thúc việc đánh giá Sprint, Scrum Master và nhóm cùng tổ chức họp Cải tiến Sprint (Sprint Retrospective) để tìm kiếm các cải tiến trước khi Sprint tiếp theo bắt đầu, điều này sẽ giúp nhóm liên tục học hỏi và trưởng thành qua từng Sprint.

Các Sprint sẽ được lặp đi lặp lại cho tới khi nào các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế. Do sử dụng chiến thuật “có giá trị hơn làm trước” nên các hạng mục mang lại nhiều giá trị hơn cho chủ dự án luôn được hoàn tất trước. Do đó Scrum luôn mang lại giá trị cao nhất cho người đầu tư cho dự án. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà Scrum mang lại cho tổ chức.

8. VÍ DỤ SCRUM:

ví du: Bạn có một kế hoạch trong vòng 1 năm.

Tháng 1 chỉ có thể làm dc kế hoach #1, 2

Tháng 2 thì bạn chỉ làm #3 vì lý do làm việc khác

Tháng 3 thì bạn phải làm kết hoach#5 vì cái này quan trong trong tháng 3

Cho đến hết 1 năm

Sau đây bạn xác định product backlog, sprint backlog,

Product backlog là Kế hoạch 1 năm

Sprint backlog là kế hoạch trong từ tháng

Xác định khi nào thì ScrumMaster, Product owner, team tham gia vào Scrum,

ScrumMaster: đưa ra quy trình

Product owner: là người hiểu rõ yêu cầu

Team: tham gia khi sprint bắt đầu

9. SO SÁNH MÔ HÌNH THÁC NƯỚC VỚI MÔ HÌNH SCRUM.

http://luanvan.co/luan-van/de-tai-tim-hieu-ve-agile-project-management-53576/

 

Agile

Scrum

Linh hoạt

Cứng nhắc

Các bước chồng chất ko cần trình tự

Các bước tách biệt yêu cầu tuần tự

Luôn chấp nhận sự thay đổi

Rất hạn chế sự thay đổi

Không có kế hoạch cố định

Có kế hoạch từ ban đầu

Phù hợp với dự án chưa xác định mục tiêu cuối cùng

Dùng cho dự án mà có kế hoạch đầy đủ yêu cầu và mục tiêu

Biểu đồ so sánh tỉ lệ thành công của mô hình agile với mô hình waterfall

 

Nguồn: https://docs.google.com/document/d/1Woav-WLo-ot6OgOiOyuCql7YvXOUS3CujDnwQPOKbkU/edit?usp=sharing

 

 

Giới thiệu cơ sở dữ liệu đồ thị (Neo4j)


Phần 01: Giới thiệu

“Cơ sở dữ liệu” thuật ngữ đã trở nên rất quen thuộc với các nhà phát triển ứng dụng có rất nhiều dạng cơ sở dữ liệu như: Cơ sở dữ liệu quan hệ, cơ sở dữ liệu hướng đối tượng, cơ sở dữ liệu không gian, cơ sở dữ liệu phi cấu trúc,… một dạng cơ sở dữ liệu thường được sử dụng trong việc môt các các mạng thông tin như mạng xã hội, mạng cảm biến,… các dạng mà ở đó thông tin được mô tả như một thực thể (một đỉnh) trên mộ đồ thị có hướng (như hình dưới) đó là cơ sơ dữ liệu đồ thị. Trong nội dung của bài viết này tôi xin nói một chút về hệ quản trị cơ sở dữ liệu đồ thị là Neo4j.

Chúng ta sử dụng kịch bản là nội dung 02 khóa đào tạo lập trình viên và mỹ thuật đa phương tiện tại CUSC.

neo4j

Neo4j là hệ quản trị cơ sở dữ liệu đồ thị đầu tiên được giới thiệu vào năm 2007 và công bố phiên bản 1.0 vào năm 2010. Hiện nay neo4j là một trong những hệ quản trị cơ sở dữ liệu đồ thị được sử dụng nhiều nhất.

Nếu như cơ sở dữ liệu quan hệ như SQLServer, MySQL, Oracle để mô tả một đối tượng như MonHoc (subject) và các đặc điểm của đối tượng (properties) thì chúng mô tả bằng một bảng dữ liệu gồm nhiều cột với tên bảng là tên của đối tượng, các cột trong bảng mô tả đặc điểm của đối tượng. Mối quan hệ giữa các đối tượng được xây dựng bằng cách ghi nhận thông tin của thực thể cha vào thực thể con, ví dụ như như muốn xác định môn học nào là môn điều kiện của môn học hiện tại thì chúng ta cần lưu thông tin về id của môn học điều kiện vào môn học hiện tại.

Bảng môn học:

neo4j_TABLE.png

Đối với neo4j đối tượng được mô tả thành các đỉnh của đồ thị, đặc điểm của đối tượng được mô tả qua thuộc tính của đỉnh và mối quan hệ giữu các đối tượng được mô tả bằng liên kết có hướng giữa các đỉnh. Như hình trên ta thắng rằng môn học ASP.NET có môn điều kiện là C#.

Neo4j  có 02 chế độ:

  1. Quản trị dữ liệu và thể hiện nội dung trên nền tảng riêng (Neo4j Server)
  2. Nhúng vào các nền tảng khác neo4j chỉ đóng vai trò lưu trữ.

snap-2016-12-22-at-11-05-33

Phần 02: Cài đặt neo4j 

  • Địa chỉ của neo4j: https://neo4j.com
  • Download neo4j cho nền tảng của bạn (tôi sử dụng trên macos) với tư cách người dùng cá nhân (for individuals)

snap-2016-12-22-at-11-02-36

Sau khi Download tiến hành cài đặt theo hướng dẫn. Chạy neo4j và cấu hình nơi lưu dữ liệu

snap-2016-12-22-at-11-08-45

Nhấn nút start để mở server neo4j và đây là giao diện sau khi chạy

snap-2016-12-22-at-11-09-51

Nhấn chọn liên kết dưới để mở giao diện web của neo4j, dăng nhập bằng tài khoản neo4j/neo4j và đổi mật khẩu mới cho hệ thống

Snap 2016-12-22 at 11.12.40.png

Như vậy là chúng ta đã sẵn sàn để thiết kế dữ liệu đồ thị rồi.

Phần 3: Căn bản về các lệnh truy vấn dữ liệu của neo4j

  1. Lệnh tạo đối tượng và quan  hệ giữa các đối tượng: CREATE

Ví dụ: Tạo 02 môn học C# và ASP.NET MVC, C# là môn điều kiện của ASP.NET MVC

Snap 2016-12-22 at 11.21.51.png

Tương tự như vậy cho môn ASP.NET MVC, tạo quan hệ ASP.NET cần có điều kiện là C#

snap-2016-12-22-at-11-26-55

Trong đó MATCH là lệnh tìm kiềm (chúng ta sẽ tìm hiều ở phần sau), để tạo quan hệ thì neo4j cung cấp cho lập trình viên các lênh rất tự nhiên:

  1. Tìm môn c#, tìm môn ASP.NET
  2. Tạo quan hệ  ASP.NET phục thuộc c#.

Như vậy là chúng ta đã có được 02 môn học có ràng buộc lẫn nhau như sau:

Snap 2016-12-22 at 11.34.01.png

Bài dài quá rồi tôi dừng ở đây, phần tiếp theo chúng ta sẽ làm việc với các lệnh xóa, sửa, tìm kiếm của neo4j.

 

 

 

 

 

15 kỹ năng trường học không dạy bạn, nhưng chúng quyết định thành công của bạn


Có nhiều thứ trường học không dạy bạn. Nhưng nếu thiếu chúng bạn sẽ không bao giờ thành công được. Kiến thức chỉ là một phần, kỹ năng sống mới là thứ quan trọng
Có nhiều thứ trường học không dạy bạn. Nhưng nếu thiếu chúng bạn sẽ không bao giờ thành công được. Kiến thức chỉ là một phần, kỹ năng sống mới là thứ quan trọng. Hãy cùng ghi nhớ 15 điều sau đây và bắt đầu chủ động học những thứ gì bạn đang thiếu và đừng mong đợi rằng có một ngày trường học sẽ dạy bạn!
1. Phân biệt thật giả
Lẽ thường, trường học sẽ không dạy chúng ta cách làm thế nào để phát hiện những dấu hiệu của một kẻ lừa đảo. Do vậy, chúng ta để mặc cho cuộc đời cứ “trôi” và đến một lúc nào đó gặp cướp thật, lúc đó chúng ta mới bừng tỉnh và bắt đầu phòng tránh. Suy nghĩ “cứ va vấp rồi biết” khiến đôi khi chúng ta phó thác mọi thứ. Thế nên hãy nhận ra rằng, cuộc đời không phải lúc nào cũng màu hồng, sẽ luôn có người xấu, người tốt. Chấp nhận điều này và bắt đầu sống chủ động!
2. Thuyết phục người khác

Ở trường học, chúng ta hiếm khi có khái niệm thuyết phục. Việc thảo luận nhóm cũng sơ sài và dường như không hề có khái niệm phát biểu ý kiến. Bạn đã từng họp nhóm mà không hề nói câu nào hoặc nói mà không ai nghe cả? Trường học không dạy bạn cách làm thế nào để thuyết phục một người, làm thế nào để mọi người lắng nghe mình và vì sao lại cần thuyết phục?

Trường học là vậy nhưng ở đời, thuyết phục là một trong những kỹ năng quan trọng nhất mà nếu ai may mắn sở hữu được nó, người đó sẽ có thể đánh bại được tất cả.
3. Tự vệ

Trường học liệu có dạy bạn cách tự bảo vệ chính mình? Cuộc sống ngày càng phức tạp và nếu bạn quá yếu đuối hay mỏng manh, bạn có thể trở thành nạn nhân bất cứ lúc nào? Liệu bạn có biết cách hạ gục kẻ xấu bằng lời nói hay bạn có biết cách dùng sức mạnh cơ thể của mình?

Hãy tự trang bị cho mình những kỹ năng sống và học cách tự bảo vệ bản thân ngay từ lúc này.
4. Sức khỏe tinh thần

Thật hiếm khi nghe đến “sức khỏe tinh thần” ở trường học. Bởi lẽ, chúng ta chỉ quan tâm đến hoặc được khuyên là nên quan tâm đến sức khỏe thể chất, còn tinh thần là từ quá xa vời.

Liệu bạn có hiểu được sức khỏe tinh thần là gì? Liệu bạn có đang cảm thấy áp lực về những kỳ thi, những môn học không phải là đam mê của bạn? Liệu bạn thấy tù túng? Đó chính là tinh thần của bạn đang không được khỏe.

Cuộc đời sẽ còn nhiều khó khăn và thử thách, hãy học cách bồi dưỡng tâm hồn và giữ cho tinh thần được thoải mái nhé bạn.

5. Hiểu chính mình

Trường học không dạy bạn nhìn nhận bản thân để biết điều gì mình tốt và chưa tốt? Trường học không dạy bạn cách khai phá tiềm năng của mình mà nghiễm nhiên cho rằng nếu bạn học không giỏi nghĩa là tương lai của bạn có vấn đề? Thế nên hãy chủ động nhìn nhận bản thân mình, điểm mạnh – điểm yếu của bạn là gì và khai phá nó. Chỉ có bạn mới hiểu chính bạn.
6. Cách sử dụng Facebook

Trường học liệu có dạy bạn phải giữ cho Facebook của mình toàn những lời hay ý đẹp, hay chỉ liên tục cấm bạn không được sử dụng Facebook. Mà thực tế là càng cấm bạn càng không thể dứt.

Hãy biết kết nối và giữ liên lạc với bạn bè qua mạng xã hội nhưng phải nhớ, giữ cho tài khoản của mình thật “sạch”. Bởi vì, một ngày nào đó, nó có thể sẽ ảnh hưởng tới sự nghiệp của bạn.
7. Tự sơ cứu

Trường học có dạy bạn cách tự sơ cứu khi bạn lỡ may bị thương? Trường học có dạy bạn cách giúp đỡ người khác trong trường hợp khẩn cấp? Tự trang bị cho bạn thân những kỹ năng sống cơ bản và một chút hiểu biết về sơ cứu sẽ giúp bạn tự bảo vệ chính mình và giúp đỡ người khác.
8. Sửa chữa nhà

Khi bạn trưởng thành, bạn sẽ nhận thấy mình không biết làm gì cả. Nhà bị dột hay bị hỏng hóc chỗ nào, liệu bạn đã tự sửa được chúng? Bạn có biết cách sửa một nồi cơm bị hỏng hay một chiếc quạt không quay? Trường học không bao giờ dạy cho bạn. Tất cả những điều này bạn phải tự học.
9. Cân bằng

Trường học khuyến khích học sinh học chăm chỉ để cải thiện điểm số nhưng điều thực sự cần đó là sự cân bằng giữa việc học, gia đình, bạn bè và thế giới bên ngoài thì không hề được đề cập. Hãy tự học cách quản lý thời gian của bạn, biết rõ cái gì nên làm trước, cái gì nên làm sau và đừng lãng phí bất cứ điều gì cả.
10. Nấu ăn

Sinh viên bây giờ khác sinh viên ngày trước. Sinh viên bây giờ “giàu” tới mức chỉ biết ăn ngoài và đến những nhà hàng sang trọng, để đến khi lớn lên rồi mới biết tự nấu cho mình những bữa ăn ngon và sở hữu một vài món “tủ”lại quan trọng như thế nào: một công việc tốt, một người chồng tốt và những đứa con ngoan rất cần bàn tay của một bà nội trợ đảm.
11. Đối mặt với thực tế phũ phàng

Cuộc sống không công bằng. Nếu bạn càng nghĩ rằng nó tốt đẹp, bạn sẽ càng thất vọng. Đừng ảo tưởng về một màu hồng hay những câu chuyện tình học trò. Cuộc sống còn nhiều thứ buộc bạn phải chấp nhận .

12. Tiền không phải là tất cả

Một công việc lương cao, một ngôi nhà lớn và một chiếc xe đắt tiền luôn là mơ ước của rất nhiều người và trường học cho chúng ta biết rằng điểm tốt sẽ hứa hẹn một cuộc sống hoàn toàn khác.

Nhưng ngược lại, tiền có thể là cái bẫy giết người và nếu bạn không biết kiểm soát chính bản thân mình, bạn sẽ trúng bẫy. Nhận ra điều này sớm và biết lựa chọn những điều quan trọng trong cuộc sống. Giàu có và hạnh phúc là hai thứ hoàn toàn khác biệt.
13. Học từ thất bại

Liệu rằng bạn có thường nghe thấy trường học nói điều này: Học từ thất bại và sửa chữa sai lầm. Trường học luôn cho bạn những kiến thức hay nhưng liệu có cho bạn những trải nghiệm về sự thất bại. Liệu bạn có biết rằng, thất bại có thể khiến bạn trở nên mạnh mẽ hơn?
14. Tha thứ

“Hãy tha thứ cho người đã phá hủy bạn”. Nghe có vẻ phi thực tế và ở trường, hiếm khi bạn nghe ai đó khuyên mình như vậy. Nhưng bạn cần hiểu rằng, tha thứ là điều mà bạn cần luyện tập hàng ngày. Và nhớ, nó không dễ dàng để có được. Kiên nhẫn và học cách thấu hiểu người khác là chìa khóa để bạn rèn luyện đức tính này. Bởi vì không có ngôi trường nào dạy cho bạn điều này cả.
15. Mong đợi những điều không như ý muốn

Một thực tế là chúng ta thường mong muốn thành công và lấy hình mẫu của những người thành đạt làm lý tưởng sống. Thế nhưng, thế giới không phải lúc nào cũng là một hình tròn, nó luôn có những chỗ gồ ghề, nhấp nhô mà bạn không thể nào biết trước. Trường học luôn dạy bạn học giỏi sẽ có tương lai tốt hơn, nhưng không dạy bạn đừng lý tưởng hóa mọi thứ. Trường học vẽ cho bạn cách để thành công nhưng không dạy cho bạn cách để vượt qua những khó khăn và học cách chấp nhận mọi thứ.

Nếu bạn nắm được 15 điều này thì bạn sẽ chấp nhận những thứ trường học không dạy bạn không phải là lỗi của nền giáo dục. Bạn phải chấp nhận cuộc sống không có gì hoàn hảo. Chính bạn phải tự rèn giũa và tôi luyện cho chính mình. Bất cứ thứ gì trong cuộc đời cũng chỉ dạy cho bạn được một phần thôi, còn lại phải tự bạn nắm lấy. Vì bạn là chính bạn.

Sưu tầm!