Home Blog Page 187

Lập trình game là gì? Lộ trình tự học lập trình game cho người chưa biết gì

Dù cho bạn ở bất cứ cấp độ nào thì bạn vẫn có thể làm trở thành lập trình viên game. 2 năm trước, tôi nghĩ rằng điều đó là không thể, nhưng vẫn thử làm (cho biết). Đó cũng là điều khó khăn nhất mà tôi từng làm nhưng kết quả nhận được thì vô cùng xứng đáng. Giờ đây, tôi nhận ra việc làm game giống như bất kỳ kỹ năng nào – bạn chỉ trở nên tốt hơn bằng cách làm thử => thất bại => cải thiện

Có thể nói rằng tôi đã tự học mọi thứ mình biết và bây giờ tôi sẽ hướng dẫn lại cho bạn. Dưới đây là chia sẻ lập trình game là gì và cách tự học lập trình Game như thế nào nhé!

Lập trình game là gì?

Lập trình game (game development) là quá trình tạo ra một sản phẩm trò chơi hoàn chỉnh, bao gồm các giai đoạn cơ bản như hình thành ý tưởng, thiết kế, xây dựng, kiểm thử và phát hành sản phẩm cuối cùng. Trong quá trình tạo ra một trò chơi, điều quan trọng là phải xem xét các yếu tố như cơ chế chơi game, hệ thống phần thưởng, sự tương tác của người chơi và thiết kế các cấp độ trong trò chơi. Những yếu tố này kết hợp với nhau để tạo nên trải nghiệm thú vị và hấp dẫn cho người chơi.

Lập trình game thường sử dụng các ngôn ngữ lập trình như C++, C#, Python, và JavaScript, cùng với các công cụ phát triển game như Unity, Unreal Engine, Godot, và GameMaker Studio. Các công cụ này cung cấp các framework và thư viện để giúp lập trình viên dễ dàng tạo ra các yếu tố trong game mà không cần phải xây dựng từ đầu.

Xem thêm: Game Developer là gì? Lộ trình trở thành Game Developer

Tự học phát triển một trò chơi qua 6 bước

1. Design

Lời khuyên

Bạn đã có một ý tưởng tuyệt vời*

Nhưng làm thế nào để bạn có thể viết nó lên giấy?

Mỗi người sẽ có một cách riêng. Một số có thể soạn tài liệu lên đến 60 trang. Những người khác, giống như tôi, chỉ viết một trang ghi chú khá cẩu thả, chỉ có thể một mình hiểu. Thành thật thì tôi không biết điều gì tốt nhất cho bạn nhưng tôi có thể đưa ra gợi ý về những gì cần viết:

  • Hook – mồi câu: Điều gì làm cho ý tưởng trò chơi của bạn tuyệt vời? Đối với tôi, đây là điều quan trọng nhất để viết ra. Một khi bạn nắm bắt được điều này, bạn có thể viết xuống ba điểm tiếp theo dễ dàng hơn nhiều. Trò chơi của bạn có phải là thứ kích thích tư duy không? Hay gây tranh cãi? Là nó có một kết cục bất ngờ? Hoặc, nó đang làm điều gì đó chưa bao giờ được thực hiện trước đây?
  • Mechanic – Cách chơi: Người chơi của bạn cần phải  làm gì? Và vì mục đích gì? Đây chính là phần gameplay của bạn. Nó có thể đơn giản như cách nhấn QWOP để di chuyển trong trò chơi QWOP, hay bấm các nút để trò chuyện trong Mystic Messenger, tới hàng tấn combo wombo nút bấm trong Dwarf Fortress.
  • Story – Cốt chuyện: Người chơi nên nhớ về cốt chuyện của trò chơi như thế nào? Những cảm xúc nào họ nên có khi hoàn thành trò chơi của bạn? Mỗi trò chơi đều có một câu chuyện. Có thể là những con số trong 2048, hay xây dựng một quốc gia trong Civilization, hoặc những tương tác thầm lặng trong Monument Valley. Hãy nghĩ về câu chuyện sẽ được người chơi cảm nhận trong trò chơi của bạn.
  • Mood – cảm xúc: Trò chơi của bạn tạo ấn tượng gì? Hình ảnh? Âm thanh? Ấn tượng đầu tiên rất là quan trọng. Ấn tượng đầu tiên sẽ cuốn người chơi vào trò chơi. Có lẽ, bạn sẽ cung cấp cho trò chơi của bạn một sự rung cảm retro với đồ họa pixel và âm nhạc chiptune.

Bạn gặp khó khăn để nghĩ ra một ý tưởng hay ho, đừng lo bạn không phải là người duy nhất… 

Hãy tham gia game hackathon/jam. Bạn và những người tham gia khác sẽ được giao nhiệm vụ tạo ra trò chơi trong một khoảng thời gian ngắn. Trong suốt quá trình đó, bạn sẽ được hỗ trợ từ những jammer khác. Bạn sẽ cảm thấy vô cùng phấn khích và sáng tạo cứ thế tuôn ra thôi. Nếu không biết bắt đầu từ đâu? Hãy thử Ludum Dare, một trong những game hackathon/jam lớn nhất.

  • Giữ một danh sách các ý tưởng. Tôi và các nhà phát triển khác luôn ghi lại ý tưởng của mình. Bằng cách đó, chúng ta có thể tham khảo lại khi bị bí ý tưởng mới.
  • Khi nảy ra ý tưởng mới, hãy dừng mọi thứ bạn đang làm và viết ý tưởng đó xuống.

Resources

Để làm việc:

  • Google Drive
  • GitHub () Cần có git và Unity .gitignore.
  • Unity Collab. Dễ nhất trong cả ba nhưng phiên bản free có nhiều giới hạn.

Game design:

2. Art

Lời khuyên

Nếu bạn đã lên kế hoạch cho ý tưởng của mình; xin chúc mừng, bạn đã làm được khá tuyệt vời! Bây giờ, bạn có thể phát triển trò chơi thực sự.

(Nếu bạn không biết cách viết code, tôi khuyên bạn nên thực hiện bước 3, Code, trước Art)

Không biết làm thế nào để vẽ? Đừng sợ. Bất cứ ai cũng có thể vẽ ra một thứ đẹp đẽ với 3 nguyên tắc hình ảnh cơ bản: màu sắc, hình dạng, không gian.

UI

Hãy suy nghĩ về cách bạn có thể làm cho nó trở nên độc đáo – có một bảng phối màu riêng biệt, phông chữ, hình dạng và (các) biểu tượng – nhưng vẫn thực tiễn. Những thông tin quan trọng có thể đọc rõ và dễ hiểu hay không? Có gặp phải vấn đề phân tâm do màu sắc / phông chữ / biểu tượng?

2D animation

Bạn có hai lựa chọn:

  • Bone-based. Vẽ ra từng khung hình của animation. Đối với điều này, bạn nên sử dụng các sprite sheet với TexturePacker (hoặc nếu bạn đang sử dụng Unity, thì xài Sprite Packer).
  • Bone-based. Vẽ từng chi tiết động, sau đó tạo hiệu ứng cho vị trí. Có thể nhanh hơn, dễ dàng hơn và tiết kiệm bộ nhớ. Nếu bạn đang thực hiện 2D và sử dụng Unity, hãy thử chỉnh sửa các trục sprites hoặc Anima2D.

Misc

Dưới đây là một số mẹo miscellaneous art tip áp dụng không chỉ trong trò chơi mà còn trong các phần mềm khác.

Tile patterned asset để tạo hình ảnh lát gạch và lưu bộ nhớ.

9-patch/9-slice asset với các đường viền không thể mở rộng được nhưng bên trong thì có thể mở rộng để tạo các hình ảnh có thể mở rộng và giúp tiết kiệm bộ nhớ.

Đặt kích thước của từng asset là bội số của 4 hoặc lũy thừa là 2 để tiết kiệm bộ nhớ. Điều này phụ thuộc vào cách bạn đang nén asset.

Nếu bạn đang sử dụng Photoshop, hãy sử dụng “File > Export > Layers to Files” để xuất nhanh mỗi layer dưới dạng tệp (ví dụ: PNG, JPEG).

  Game Designer là gì? Mô tả công việc của nhà Thiết kế Game

Resources

Tạo UI: Photoshop, Sketch.

Cách tạo UI đẹp:

Tạo 2D assets:

  • Photoshop ().
  • Gimp.
  • Paint Tool SAI. Nếu bạn thích phong cách smooth/anime.

Tạo 3D assets:

  • Blender (). Cực kì mạnh nhưng khó học
  • Maya. Tốt cho animation.
  • Max. Tốt cho rendering.

Các asset miễn phí:

Cảm hứng:

  • Dribbble. Các thiết kế từ designers.
  • Behance (). Các thiết kế từ bất cứ ai.
  • itch.io (). Những indie game tuyệt vời.

Xem tuyển dụng Game Developer tại các công ty hàng đầu trên TopDev

3. Code

Debug.Log(“Oh boy! Time to code!! ^_^”);

Bước đầu tiên của bạn? Quyết định về một game engine và một IDE (Integrated Development Environment  – về cơ bản, nó là một ứng dụng cho phép bạn viết mã).

Bước thứ hai? Lập trình.

Bạn không biết cách viết code? Đừng lo lắng. Bạn có thể học.

Những nguyên tắc cơ bản của CS này là đủ để bắt đầu. (Tất cả các ví dụ code ở đây là trong C ++, một trong những ngôn ngữ chính mà framework phát triển game Unity 3D sử dụng.)

1) Kiểu dữ liệu (Data type) và biến (variable). Bản chất của Code chính là Data. Data đó được lưu trữ trong các biến. Bạn có thể khai báo một biến như sau:

int i = 0;

Trong đó, int là kiểu dữ liệu. i là tên biến. Và  = 0 gán 0 là giá trị biến.

Vậy đây là gì?

string s = "pusheen is best cat";

string là kiểu dữ liệu.  s  là tên biến. Và  “pusheen is best cat” là giá trị biến.

Một số kiểu dữ liệu phổ biến:  int  và  long là số nguyên. `float và double là số thập phân. Và chuỗi (string) là bất kỳ câu nào.

2) If statement. Nếu câu lệnh đánh giá nếu một điều kiện nhất định là đúng. Nếu có, thì code bên trong câu lệnh  if  sẽ được chạy:

if (true){ //true is always true!
    doThings(); //I'm inside the if statement's brackets; run me!
}

Nếu điều kiện không đúng, sẽ chuyển qua đánh giá các điều kiện else ifkhác nếu có:

int i = 1;
if (i == 0){
 doThings();
}
else if (i == 1){
 doOtherThings(); //I'm gonna be run!
}

Hoặc, chỉ cần chạy một số mã khác với  else:

int i = 60000;
if (i == 0){
doThings();
} else {
doOtherThings(); //I'm still gonna be run.
}

3) For/while loop. Trong khi các vòng lặp code tiếp tục khi một điều kiện nhất định vẫn đúng, khi điều kiện là sai, vòng lặp while loop sẽ thoát.

while (someBool == true){ //condition
 doThings(); //We'll keep doing things until someBool is false
}

Vòng lặp while loop này sẽ chạy trong bao lâu?

while (true){
doThings();
}

Đối với vòng lập là while loop trong đó:

int i = 0;
while (i < condition){
  doThings();
  i++; //increment after doing things
}

Điều đó tương đương với:

for (int i = 0; i < condition; i++){
  doThings();
}

4) Cấu trúc dữ liệu cơ bản: Chúng ta có dữ liệu và giờ thì cần phải đánh giá và sử dụng dữ liệu đó. Ngoài ra, ta cũng có thể lưu trữ dữ liệu đó thành một dạng cấu trúc – hay còn gọi là cấu trúc dữ liệu. Cấu trúc dữ liệu bạn nên biết là arrays, lists, queues, stacks, và sets.

Ví dụ nhanh về Arrays:

/*
Say you have numbers 0 through 9 that you want to store somewhere. You can store it in an array!
*/
int[] arr = new int[10]; 
/*
The [] brackets declare an array. We assign a new array to arr of size 10 - that means it can hold 10 elements. Arr now looks like this:
arr = [ 0 0 0 0 0 0 0 0 0 0 ]
*/
for (int i=0; i<10; i++){
    arr[i]=i; //We assign whatever i is to the the ith index of arr.
//Did you know data structures' indices start at 0?  
}
/*
After the for loop, our array data structure should look like this!
arr = [ 0 1 2 3 4 5 6 7 8 9 ]
*/

5) Functions và exceptions: Các Function về cơ bản là một dòng mã nhỏ mô tả một chuỗi mã lớn. Ví dụ: nếu bạn call:

EatBread();

và EatBread() trông như thế này:

void EatBread(){ //<---this is a function.
breadAte=true;
 printf("I CAN FEEL THE CARBS COURSING THROUGH MY BODY");
}

Sau đó, lệnh gọi  EatBread() thực sự là một cuộc gọi đến hai câu lệnh trong EatBread()  function.

Nếu bạn làm điều gì đó không đúng, exception sẽ xuất hiện. Chúng là những lỗi màu đỏ giận dữ ở đó để cho bạn biết hãy revise lại nó.

Để tìm hiểu thêm về các function, hãy vào đây; cho trường hợp exception, hãy vào đây.

Sau đó, có những thứ khác bạn nên biết:

6) Ngôn ngữ lập trình. Bạn sẽ viết code bằng ngôn ngữ nào? C ++? Javascript? C #? Mỗi ngôn ngữ được viết hơi khác nhau và có thể cho phép bạn làm những việc khác nhau.

7) API (Giao diện lập trình ứng dụng)( Xem thêm API là gì?). Khi bạn biết những điều cơ bản, bạn sẽ phải tìm hiểu API cụ thể của công cụ trò chơi của mình. Về cơ bản, các API là một loạt các công cụ mạnh mẽ được bao bọc trong các lớp và chức năng đơn giản mà bạn có thể gọi. API giúp cuộc sống dễ dàng hơn. Cách dễ dàng hơn.

8) Nhìn vào một dự án có sử dụng game engine mà bạn đã chọn. Unreal và Unity đều có rất nhiều dự án miễn phí mà bạn có thể tham khảo. Điều này sẽ cho phép bạn khám phá cách mọi thứ kết hợp với nhau. Ngoài ra, bạn có thể xây dựng ý tưởng trò chơi của riêng mình.

if (you.getThisFar()==true){
veryProud=true;
you.didIt(); //CURRENT MOOD: THE SHKEST 
}

Lời khuyến khích: Tôi biết việc viết code là đáng sợ lúc đầu khi bạn gặp phải những rào cản liên tục thất bại. Nó không có nghĩa là bạn dở code mà đó là một thách thức, bạn sẽ phải thất bại để có được thành công.

Nhưng nó cũng như bất kỳ kỹ năng nào khác khi bạn sẽ tốn thời gian để học hỏi và thuần thục. TopDev Blog sẽ vẫn còn cập nhật thêm thông tin về tự học lập trình Game cho các bạn sau nhé!

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Sử dụng mảng đúng cách trong PHP – Bạn đã bao giờ nghĩ?

su-dung-mang-php-dung-cach

Điểm hấp dẫn nhất của PHP theo mình là Array, và hầu như trong code, mọi thứ đều là key => value. Do vậy mà bạn biết thêm những hàm built-in rẳng của PHP, mà xử lý cho lẹ là điều hết sức quan trọng. Nếu không, thay vì tập trung vào cái cần làm, bạn lại hì bục sáng tạo ra những cái hàm, ban đầu chỉ là để cho xong task, hoặc là xa hơn là để tự sướng. Nhưng kết quả là, rất ức chế cho thằng khác, vì nó phải suy nghĩ cái đó là cái gì? – Đây là note khá hay mình dẫn từ 1 post của bạn Trần Phong Phú (Fullstackdev tại Sendo). [Xem thêm bài blog về associative array]

Mình vô tình đọc được 1 bài tuts hay của tác giả Anton Bagaiev nên lược dịch lại cho các bạn đọc, không bổ bề ngang cũng bổ bề dọc, chúc các bạn thu được kiến thức hữu ích.

Trong bài tutorial này, mình sẽ liệt kê các hàm xử lý mảng thông dụng trong Php kèm theo ví dụ và cách sử dụng tốt nhất. Đã lập trình Php thì cần biết làm sao sử dụng và làm sao để phối hợp các hàm xử lý mảng để cho code dễ đọc và ngắn gọn hơn.

Cơ bản

Bắt đầu bằng 1 hàm cơ bản để xử lý keys và values của mảng. Một trong số đó là array_combine(), nó tạo 1 mảng kết hợp bằng cách trộn keys của 1 mảng này và values của 1 mảng khác, với điều kiện 2 mảng này bằng nhau.

$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];

$array = array_combine($keys, $values);
print_r($array);

// Array
// (
//     [sky] => blue
//     [grass] => green
//     [orange] => orange
// )

Như bạn đã biết, hàm array_values() trả về 1 mảng các giá trị đã xác định, array_keys() trả về 1 mảng các key đã cho trước, và array_flip() chuyển đổi ngược lại các keys tương ứng với values :

print_r(array_keys($array)); // ['sky', 'grass', 'orange']
print_r(array_values($array)); // ['blue', 'green', 'orange']
print_r(array_flip($array));

// Array
// (
//     [blue] => sky
//     [green] => grass
//     [orange] => orange
// )

Rút gọn code

Hàm list(), nó không thực sự là hàm, nhưng nó là cấu trức của ngôn ngữ, có chức năng là giúp việc gán các biến ngắn gọn hơn. Đây là 1 ví dụ cơ bản:

// define array
$array = ['a', 'b', 'c'];

// without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];

// with list()
list($a, $b, $c) = $array;

Cấu trúc này hoạt động hoàn hảo với các hàm như preg_slit() hoặc explode(). Ngoài ra, bạn có thể bỏ qua một số tham số (parameters), nếu bạn không cần định nghĩa chúng:

$string = 'hello|wild|world';
list($hello, , $world) = explode('|', $string);
echo("$hello, $world"); // hello, world

Ngoài ra, list() có thể sử dụng với foreach(), làm cho việc xây dựng cấu trúc có vẻ ok hơn:

$arrays = [[1, 2], [3, 4], [5, 6]];

foreach ($arrays as list($a, $b)) {
    $c = $a + $b;
    echo($c . ', '); // 3, 7, 11, 
}

Với hàm extract(), bạn có thể xuất một mảng kết hợp sang các biến. Đối với mỗi phần tử của một mảng, một biến sẽ được tạo ra với tên của key và value như là một giá trị của phần tử:

$array = [
    'clothes' => 't-shirt',
    'size'    => 'medium',
    'color'   => 'blue',
];

extract($array);

echo("$clothes $size $color"); // t-shirt medium blue

Lưu ý rằng extract() không an toàn nếu bạn làm việc với dữ liệu người dùng (như trả kết quả theo yêu cầu), vì vậy tốt hơn là sử dụng chức năng này với EXTR_IF_EXISTS và EXTR_PREFIX_ALL.

Ngược lại extract() là hàm compact(), tạo một mảng kết hợp từ các biến:

$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';

$array = compact('clothes', 'size', 'color');
print_r($array);

// Array
// (
//     [clothes] => t-shirt
//     [size] => medium
//     [color] => blue
// )

Xem tin tuyển lập trình viên PHP đãi ngộ tốt trên TopDev

Hàm lọc

Một hàm tuyệt vời cho việc lọc mảng, và nó là array_filter(). Truyền mảng vào như là tham số đầu tiên và một hàm anonymous như là tham số thứ 2. Trả về giá trị là true trong hàm callback nếu bạn muốn lấy phần tử trong mảng, hoặc false nếu không muốn:

$numbers = [20, -3, 50, -99, 55];

$positive = array_filter($numbers, function($number) {
    return $number > 0;
});

print_r($positive); // [0 => 20, 2 => 50, 4 => 55]

Bạn có thể sử dụng ARRAY_FILTER_USE_KEY hoặc ARRAY_FILTER_USE_BOTH như là một tham số thứ ba để truyền vào keys hoặc cả keys, values vào hàm callback.

Ngoài ra, bạn có thể gọi array_filter() mà không cần callback để loại bỏ tất cả các giá trị rỗng:

$numbers = [-1, 0, 1];

$not_empty = array_filter($numbers);

print_r($not_empty); // [0 => -1, 2 => 1]

Bắt đầu từ PHP 7, array_column() trở nên mạnh mẽ hơn, bởi vì nó được phép xử lý một mảng của các đối tượng (array of objects). Vì vậy làm việc với 1 array of models (thông cảm, cái này mình không biết diễn tả bằng tiếng Việt ra sao hết) trở nên dễ dàng hơn:

$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, 'id'); // php7 forever!

Duyệt mảng

Sử dụng array_map(), bạn có thể apply 1 callback cho tất cả các phần tử của mảng. Bạn truyền vào tên hàm hoặc hàm không xác định (anonymous function) để nhận được 1 mảng mới dựa trên mảng đã cho:

$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga'];
$aliases = array_map('strtolower', $cities);

print_r($aliases); // ['berlin', 'kyiv, 'amsterdam', 'riga']

$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function($number) {
    return $number ** 2;
}, $numbers);

print_r($squares);  // [1, 4, 9, 16, 25]

Có một câu chuyện từ lâu là không có cách nào để truyền values và keys của mảng vào 1 callback, nhưng ta có thể bắt được chúng:

$model = ['id' => 7, 'name'=>'James'];

$callback = function($key, $value) {
    return "$key is $value";
};

$res = array_map($callback, array_keys($model), $model);
print_r($res);

// Array
// (
//     [0] => id is 7
//     [1] => name is James
// )

Nhưng bạn thấy đấy, trông code nhìn dơ dơ. Tốt nhất là nên sử dụng array_walk() để thay thế. Hàm này tuy nhìn giống array_map(), nhưng nó hoạt động theo phương thức khác. Đầu tiên, một mảng tham chiếu được truyền vào, array_walk() không hề tạo ra 1 mảng mới nào, mà nó thay đổi mảng tham chiếu đó.  Vì vậy đối với mảng nguồn (source array), bạn có thể truyền vào giá trị của mảng tham chiếu trong 1 callback, từ đó keys của mảng đó cũng có thể được truyền vào dễ dàng (đọc nhức đầu quá, xem vd là rõ ngay ấy mà):

$fruits = [
    'banana' => 'yellow',
    'apple' => 'green',
    'orange' => 'orange',
];

array_walk($fruits, function(&$value, $key) {
    $value = "$key is $value";
});

print_r($fruits);

// Array
// (
//     [banana] => banana is yellow
//     [apple] => apple is green
//     [orange] => orange is orange
// )

Có thể bạn muốn xem:

  Lập trình PHP và những câu hỏi thường gặp khi phỏng vấn

Để so sánh 1 mảng nguồn với 1 mảng khác (hoặc nhiều mảng) để trả về 1 mảng chứa sự khác nhau của mảng nguồn đó so với mảng cần so sánh, dùng array_diff(). Dùng array_intersect() để so sánh hai mảng trả vê các giá trị giống nhau:

Đếm phần tử của mảng dùng array_count_values():

$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree'];
$values = array_count_values($things);

print_r($values);

// Array
// (
//     [apple] => 2
//     [banana] => 1
//     [tree] => 3
// )

Tạo mảng

Tạo mảng với 1 khoảng keys và values nhất định, dùng range():

Bạn nên nhớ rằng mọi chức năng phân loại trong PHP đều hoạt động với các mảng bởi tham chiếu và trả về true khi thành công hay false khi thất bại. Có một chức năng sắp xếp cơ bản được gọi là sort(), và sắp xếp các giá trị theo thứ tự tăng dần mà không lưu keys. Hàm phân loại có thể được thêm vào bởi các ký tự sau:

  • a, sort preserving keys
  • k, sort by keys
  • r, sort in reverse/descending order
  • u, sort with a user function

Bạn có thể thấy các kết hợp của các chữ cái này trong bảng sau:

a k r u
a asort arsort uasort
k ksort krsort
r arsort krsort rsort
u uasort usort

Ma thuật thực sự bắt đầu khi bạn bắt đầu kết hợp các hàm xử lý mảng. Đây là cách bạn có thể cắt và xóa các giá trị rỗng chỉ bằng một dòng code với array_filter() và array_map():

Tạo 1 id khớp với title từ một mảng của models, chúng ta có thể sử dụng sự kết hợp của array_combine() và array_column():

Để lấy ra top 3 giá trị của 1 mảng, chúng ta có thể dùng array_count_values()arsort(), và array_slice():

Dễ dàng sử dụng array_sum() và array_map() để tính toán tổng của order trong nhiều row:

Như bạn thấy, hiểu biết về các hàm xử lý mảng sẽ làm cho code ngắn hơn và dễ đọc hơn. Tất nhiên là PHP có nhiều hàm xử lý mảng khác, tuy nhiên trong bài tuts này chúng ta có thể hiểu rõ được cơ bản nhất để cho code ngon hơn.

  Instant AJAX Search với Laravel và Vuejs

NOTE: Mình tổng hợp nhẹ vài hàm xử lý mảng cho bạn tổng quan luôn, cái này không có trong bảng tiếng anh

  • Hàm array() tạo một mảng
  • Hàm array_change_key_case() đổi tất cả các key của mảng từ chữ thường thành chữ hoa
  • Hàm array_chunk() tách một mảng thành các mảng con
  • Hàm array_combine()  tạo một mảng có key và value từ value của hai mảng khác.
  • Hàm array_diff() so sánh giá trị 2 mảng trả về những phần tử khác nhau
  • Hàm array_diff_key() so sánh key 2 mảng trả về những phần tử khác nhau
  • Hàm array_merge() có chức năng gộp 2 mảng thành 1 mảng
  • Hàm array_push() có chức năng thêm 1 phần tử vào 1 mảng
  • Hàm array_search() dùng để search một phần tử theo value và trả về key của phần tử đó
  • Hàm array_shift() dùng để xoá phần tử đầu tiên của mảng
  • Hàm array_sum() trả về tổng của các phần tử trong mảng
  • Hàm array_intersect() so sánh hai mảng trả vê các giá trị giống nhau
  • Hàm array_unique() xoá phần tử có giá trị giống nhau trong mảng
  • Hàm array_values() trả về tất cả giá trị của các phần tử trong mảng
  • Hàm count() trả về số phần tử trong mảng
  • Hàm array_keys() trả về tất cả các key của mảng
  • Hàm shuffle() đảo lộn các phần tử trong mảng
  • Hàm range() tạo một mảng trong một phạm vi của các phần tử
  • Hàm pos() và current() cũng lấy phần tử đầu tiên trong mảng
  • Hàm list() tách các biến từ các phần tử trong mảng
  • Hàm array_rand() trả về một hoặc nhiều phần tử bất kì theo key trong mảng
  • Hàm array_replace() thay thế giá trị của mảng đầu tiên bằng giá trị của mảng thứ 2
  Đánh giá điểm mạnh và điểm yếu của PHP
  Học lập trình web với 13 tài liệu lập trình PHP không thể bỏ qua

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Củng cố thứ hạng trên Appstore bằng ASO (P2): thực hiện bằng cách nào?

Tiếp nối Phần 1:

  Củng cố thứ hạng trên Appstore bằng ASO (P1): Tổng quan về ASO và lợi ích

3. App Store Optimization hoạt động như thế nào?

Trước khi chúng ta đi sâu hơn vào Tối ưu hóa App Store, điều quan trọng đầu tiên là phải hiểu đúng những khái niệm cơ bản. Nếu bạn là người mới bắt đầu với Mobile App Marketing, bạn nên dành một chút thời gian để tìm hiểu kĩ hơn về các khái niệm sau:

*Mobile marketing có thể hiểu đơn giản là cách tiếp thị quảng cáo sản phẩm, thông tin dịch vụ, … qua các thiết bị di động như điện thoại smartphone, máy tính bảng tablet, … tới khách hàng.

mobile marketing

*Mobile marketing có nhiều cách để bạn có thể thực hiện chiến dịch quảng cáo của mình. Tùy vào đối tượng khách hàng, lĩnh vực hoạt động hay ngân sách mà bạn có thể chọn cho mình loại hình phù hợp. Ví dụ như QR Codes, Location-based Marketing, Mobile Search Ads, SMS Marketing và không thể thiếu là In Game Mobile Marketing và App-based Marketing.

* App-based marketing: các bạn có thể hiểu đây là hình thức quảng cáo trên điện thoại qua các ứng dụng mobile, thông qua các advertisers bạn sẽ đưa quảng cáo của mình thông qua một ứng dụng mobile của bên thứ 3, loại hình Mobile marketing này rất phổ biến trên thế giới hiện nay vì khả năng tương tác lớn khi hơn 80% sử dụng mobile bạn đều phải sử dụng liên quan đến ứng dụng (apps).

* In game mobile marketing: cũng là giải pháp mobile marketing quen thuộc, nếu bạn để ý khi sử dụng smartphone của mình chơi game bạn sẽ gặp loại quảng cáo này có thể là banner ads nhỏ trong game,1 pop-up full page, hoặc một đoạn video ngắn….

Khi ứng dụng của bạn được phát triển và bạn đã quen thuộc với những khái niệm cơ bản trên về tiếp thị ứng dụng, bạn phải quyết định nơi để phát hành ứng dụng hoặc trò chơi của mình. Bạn có thể chọn Google Play hoặc Apple App Store hoặc thậm chí bạn có thể quyết định làm cả hai. Nhưng hãy xem qua hai cửa hàng này có gì rồi quyết định nhé.

Xem thêm: Việc làm Mobile app cho bạn: IOS, Android lương cao

iOS vs Android – Cửa hàng Google Play vs Apple App Store

Cả hai cửa hàng đều có chung một mục đích: họ cung cấp một nền tảng để người dùng tìm kiếm các ứng dụng hoặc trò chơi và tải chúng xuống. Tuy nhiên, điều này không có nghĩa là chúng hoạt động như nhau. Trong chương này của hướng dẫn ASO, chúng ta sẽ tìm hiểu lịch sử, sự khác biệt chính và thuật toán của cả hai cửa hàng.

– Lịch sử

Với việc con người sử dụng điện thoại di động ngày càng thường xuyên, ngành công nghiệp ứng dụng bắt đầu bùng nổ. Theo đó, Apple App Store đã chứng kiến sự gia tăng số lượng ứng dụng từ 800 kể từ khi ra mắt năm 2008 lên 2 triệu vào năm 2018 (Nguồn Statista). Tương tự, số lượng ứng dụng có sẵn trên Google Play đã lên tới 3,6 triệu vào tháng 3 năm 2018. Rõ ràng là sự cạnh tranh trên thị trường rất mạnh. Điều này dẫn đến điểm tiếp theo:

– Xu hướng năm 2022

Đến bây giờ, các ứng dụng có tỷ lệ sự cố cao (high crash rates) và ít khi cập nhật ứng dụng sẽ được coi là chất lượng kém và do đó có thứ hạng thấp hơn. Các ứng dụng được cập nhật thường xuyên mà mọi người sử dụng thường xuyên hơn sẽ được đánh giá cao và xuất hiện top đầu trong kết quả tìm kiếm.

Đó là lý do tại sao cần có một quản lý ứng dụng hiệu quả. Các công cụ như App Radar giúp bạn theo dõi các thay đổi và chuẩn bị các bản cập nhật với ít công việc hơn và tác động nhiều hơn.

– Sự khác biệt chính

Một trong những khác biệt chính liên quan đến khía cạnh xuất bản/phát hành các ứng dụng (publishing).

Trong khi Google Play cho phép bạn phát hành các bản cập nhật và thực hiện các thay đổi mà hầu như không bị trì hoãn thời gian, mỗi ứng dụng trên Apple App Store phải trải qua quá trình xem xét. Chu trình xem xét thường mất tới 24 giờ và liên quan đến việc kiểm tra các khía cạnh kỹ thuật, nội dung và thiết kế. Các ứng dụng trên Google Play thường được xem xét sau khi ứng dụng được khởi chạy.

– Thuật toán xếp hạng khác nhau.

Mặc dù từ khóa (keyword) đều quan trọng trong cả hai cửa hàng, nhưng chúng được đánh giá khác nhau. Google Play hoạt động tương tự như chính Google. Điều này có nghĩa là nó xem xét tất cả các yếu tố văn bản của ứng dụng của bạn khi lập chỉ mục từ khóa.

Apple App Store thì cung cấp một trường để chỉ định từ khóa của bạn. Trong một số trường hợp, nó thậm chí còn lấy chúng từ đối thủ và tên danh mục của bạn. Ngược lại với Google Play, không nên lặp lại các từ khóa trong phần tiêu đề và từ khóa của bạn.

Các yếu tố xếp hạng của Apple App Store và Google Play Store

Google Play và Apple App Store sử dụng các thuật toán rất chi tiết và tinh vi để sắp xếp kết quả tìm kiếm. Mặc dù các thông tin sau chưa được xác nhận chính thức nhưng có thể suy ra các yếu tố ảnh hưởng đến thứ hạng của cửa hàng ứng dụng:

Google Play và Apple App Store4. Tối ưu hóa App Store được thực hiện như thế nào?

Sau khi quyết định nơi bạn muốn phát hành ứng dụng của mình, bây giờ là lúc để bắt đầu công việc.

– Điều đầu tiên: Thiết lập chiến lược ASO rõ ràng

Hãy tiến hành các nghiên cứu và khảo sát về thị trường của bạn. Điều quan trọng là phải hiểu khách hàng và sử dụng những hiểu biết cho ứng dụng và các thông tin liên quan. Những từ khóa nào họ đang sử dụng khi tìm kiếm các ứng dụng tương tự như của bạn? Họ đang nói ngôn ngữ nào? Khi bạn có thông tin này, bạn có thể chuyển sang bước tiếp theo.

– Đặt tên cho ứng dụng của bạn

Tên ứng dụng của bạn (còn gọi là Tiêu đề ứng dụng) là những gì mọi người dùng nhìn thấy đầu tiên. Đó là lý do tại sao một trong những điều quan trọng nhất là đặt tên ứng dụng một cách khôn ngoan. Đảm bảo rằng Tiêu đề ứng dụng của bạn có liên quan đến ứng dụng của bạn, dễ đọc và độc đáo. Nếu tiêu đề hấp dẫn, mọi người sẽ nhớ nó, điều này sẽ mang lại cho ứng dụng của bạn giá trị nhận dạng cao hơn. Khi chọn đúng tên, đừng quên xem xét số lượng ký tự.

app name

– Biết cách thực hiện nghiên cứu từ khóa (Keyword Research) cho Ứng dụng di động của bạn

Mục tiêu ở đây là thiết lập một bộ từ khóa mà bạn muốn tìm thấy trong các cửa hàng ứng dụng.

Khi thực hiện nghiên cứu từ khóa của bạn hãy xem xét các câu hỏi sau:

  • Các tính năng chính của ứng dụng hoặc trò chơi của bạn là gì?
  • Các từ đồng nghĩa mô tả các tính năng là gì?
  • Các ứng dụng tương tự được gọi là gì?
  • Danh mục ứng dụng của bạn là gì?
  • Những thuật ngữ nào mọi người thường sử dụng trong thể loại này?

Tìm kiếm các từ khóa phù hợp là một quá trình đang diễn ra, vì vậy đừng bỏ qua bộ từ khóa của bạn. Có rất nhiều Công cụ Tối ưu hóa App Store có thể giúp bạn điều đó. Ứng dụng Radar là một trong những ứng dụng toàn diện nhất trên thị trường. Nó cung cấp một giao diện gọn gàng nơi bạn có thể theo dõi các từ khóa của mình, đánh giá chúng và nhận các mẹo tùy chỉnh để cải thiện thứ hạng của bạn.

– Viết mô tả ứng dụng của bạn

Mô tả ứng dụng là một phần thiết yếu khác trong siêu dữ liệu ứng dụng của bạn. Nó cung cấp cho người dùng thông tin về những gì ứng dụng của bạn nói về và cung cấp một cái nhìn tổng quan về các tính năng chính của nó. Ngoài ra, mô tả ứng dụng không chỉ phù hợp với người dùng mà còn cho thuật toán lưu trữ ứng dụng.

mo ta ung dung

Đặc biệt đối với cửa hàng Google Play, đây là nơi Google tìm thấy các từ khóa để lập chỉ mục cho ứng dụng. Có một lưu ý là không nên đặt tất cả các từ khóa của bạn vào mô tả mà không có sự liên kết nào cả. Cố gắng kết hợp các từ khóa của bạn vào câu một cách tự nhiên. Bằng cách này, mô tả sẽ gây hấp dẫn cho người đọc và cải thiện tìm kiếm trên thuật toán.

Mô tả trong Apple App Store ít liên quan hơn về các từ khóa vì bạn có thể chỉ định chúng trong thông tin bổ sung thêm. Tuy nhiên, đây vẫn là một cách tuyệt vời để thuyết phục người dùng tiềm năng tải xuống ứng dụng của bạn.

Lý tưởng nhất, mô tả của bạn là thông tin, dễ hiểu và có cấu trúc rõ ràng. Bạn có thể sáng tạo và sử dụng các gạch đầu dòng cũng như biểu tượng cảm xúc nhưng chỉ cần nhớ rằng mô tả được giới hạn ở 4000 ký tự (ở cả hai cửa hàng) là được.

– Chọn biểu tượng ứng dụng phù hợp bằng thử nghiệm A / B

Bây giờ bạn đã biết những điều cơ bản về cách viết để làm cho ứng dụng của bạn hiển thị, đã đến lúc nhìn vào một vấn đề khác của nó: hình ảnh.

Biểu tượng ứng dụng của bạn là thứ thu hút nhiều sự chú ý và có thể là một trong những lý do chính khiến mọi người nhấp vào kết quả tìm kiếm. Do đó, nó được coi là một yếu tố quan trọng khác của tối ưu hóa cửa hàng ứng dụng.

Khi thiết kế biểu tượng ứng dụng của bạn, hãy nghĩ về ứng dụng của bạn nói về cái gì và làm thế nào bạn có thể truyền đạt trực quan điều đó. Nếu ứng dụng hoặc trò chơi của bạn vui tươi, biểu tượng của bạn sẽ phản ánh điều đó.

Một cách tuyệt vời để kiểm tra những gì thực sự hoạt động cho đối tượng mục tiêu của bạn là thử nghiệm A / B. Ý tưởng đằng sau nó là tạo ra nhiều biến thể biểu tượng hơn và tìm ra cái nào có nhiều nhấp chuột nhất. Ví dụ, có thể thú vị để kiểm tra màu sắc hoặc ký tự mà người dùng của bạn thích. Khi bạn có thông tin này, bạn có thể điều chỉnh biểu tượng của mình cho phù hợp.

– Chuẩn bị ảnh chụp màn hình & video

Có nhiều thứ để giao tiếp trực quan hơn chỉ là biểu tượng ứng dụng. Khi bạn đưa người dùng đến trang ứng dụng của mình, bạn phải thuyết phục họ tải xuống. Mặc dù Screenshots và Video có thể không ảnh hưởng trực tiếp đến xếp hạng ứng dụng của bạn, nhưng chúng đóng một phần trong tối ưu hóa chuyển đổi – đây là một yếu tố quan trọng của Tối ưu hóa cửa hàng ứng dụng.

Screenshot của ứng dụng và video cung cấp cho bạn cơ hội để thể hiện chức năng của ứng dụng và trò chơi, đồng thời cũng thể hiện cái nhìn trực quan về nó.

Trên thực tế, khoảng 50% mọi người dựa trên quyết định của họ về ấn tượng đầu tiên, đó là lý do tại sao bạn cần chú ý đến chi tiết với hình ảnh của mình.

Khi nói đến screenshot, trước tiên bạn có thể chọn giữa bố cục Chân dung và Phong cảnh. Nói tóm lại, điều này có nghĩa là bạn có thể quyết định xem bạn muốn có một ảnh chụp màn hình dọc hay ngang. Tương tự như biểu tượng của bạn, có thể là một ý tưởng tốt để tìm ra những gì hoạt động tốt nhất với thử nghiệm A / B. Nói chung, Screenshot được thiết kế tốt sẽ cung cấp cho người dùng bản xem trước ứng dụng của bạn và thậm chí có thể kể một câu chuyện trực quan.

Kể chuyện bằng hình ảnh cũng có thể được sử dụng trong video của bạn. Chúng được gọi là Xem trước ứng dụng trong Apple App Store (trước đây gọi là App Store Connect hoặc iTunes Connect) hoặc Video trên App Store trong Google Play.

– Danh sách ứng dụng và bản địa hóa

Sau khi đã chuẩn bị danh sách những thứ cần thiết cho ứng dụng của mình cùng với hình ảnh và video, đã đến lúc phải thực hiện bước tiếp theo. Bạn có thể đã làm tất cả những điều đó cho tiếng Anh, nghĩ rằng mọi người đều tìm kiếm các ứng dụng bằng tiếng Anh, phải không? Nhưng điều này không hoàn toàn đúng.

app language

Nếu bạn muốn đưa ứng dụng hoặc trò chơi của mình ra toàn cầu, bạn phải điều chỉnh nó cho phù hợp với thị trường. Chúng tôi gọi đây là nội địa hóa hoặc ASO quốc tế. Điều này không có nghĩa là bạn phải bắt đầu lại từ đầu. Bạn có thể sử dụng siêu dữ liệu, từ khóa hoặc ảnh chụp màn hình hiện có của mình và bản địa hóa chúng sang các ngôn ngữ khác.

Với bản địa hóa, bạn có thể cải thiện khả năng hiển thị tìm kiếm của cửa hàng ứng dụng và mở rộng đối tượng mục tiêu của mình. Về cơ bản, bạn làm cho ứng dụng của bạn có sẵn cho người dùng tìm kiếm bằng tiếng mẹ đẻ của họ. Trình bày ứng dụng của bạn cho nhiều đối tượng người dùng hơn có thể giúp cải thiện nhiều lượt tải xuống và doanh thu hơn.

– Xếp hạng & Đánh giá ứng dụng

Phản hồi từ người dùng của bạn là một phần không thể thiếu của ASO. Cả hai cửa hàng đều xem trọng đến các bình luận và đánh giá người dùng để lại cho ứng dụng của bạn. Xếp hạng của bạn càng tốt, ứng dụng của bạn càng được các cửa hàng xem xét và xếp hạng càng cao.

Người dùng có xu hướng để lại đánh giá cho ứng dụng họ thích. Tuy nhiên, bạn cũng có thể khuyến khích họ làm như vậy trong chính ứng dụng. Nếu bạn có một trò chơi, thời điểm tốt để yêu cầu đánh giá sẽ là sau khi chiến thắng một trò chơi. Nhưng hãy cẩn thận, bạn có thể bị phạt nếu bạn đẩy mạnh vấn đề này thường xuyên. Ví dụ, trên iOs, bạn có thể yêu cầu đánh giá tối đa ba lần một năm.

Vietnam Mobile Day 2021 – nơi hội tụ những chuyên gia trong lĩnh vực ứng dụng sẽ cùng bạn chinh phục những bảng xếp hạng trên App Store, đừng bỏ lỡ nhiều topic hay tại VMD2019 do TopDev tổ chức năm nay nhé!

Buffer là gì? Hiểu về Buffer và Cache

Buffer là gì? Hiểu về Buffer và Cache

Buffer là gì?

Buffer là vùng lưu trữ dữ liệu tạm thời và thường được lưu trữ trong bộ nhớ tạm (RAM). Công nghệ này hiện nay được áp dụng rất nhiều trên các website nghe nhạc, xem phim hay các ứng dụng livestream.

Buffer là gì? Hiểu về Buffer và Cache

Các ứng dụng của Buffer

Ví dụ khi bạn xem video trực tuyến hay nghe nhạc trực tuyến thì có hai cách để trình duyệt tải dữ liệu này:

  • Tải hết toàn bộ dữ liệu của video, nhạc rồi mới chạy.
  • Tải từng phần của video, nhạc và chạy từng phần nôi dung mỗi khi dữ liệu được tải về máy. Ta có thể hiểu là khi này data của toàn bộ video hay nhạc được băm nhỏ rồi tải về lưu trong bộ nhớ tạm của trình duyệt, player của trình duyệt sẽ lấy dữ liệu đã tải này xử lý thành âm thanh hình ảnh rồi phát cho bạn xem. Dữ liệu tải đến đâu thì play đến đấy, nếu bạn xem nhanh quá thì phải chờ dữ liệu được tải thêm cho đến khi hoàn thành.

Với cách thứ hai thì từng phần dữ liệu video, nhạc được chia nhỏ tải về máy được gọi là buffer.

  Streaming Media với Nginx và nginx-rtmp module

Vai Trò Của Buffer (Và Tại Sao Cần Sử Dụng Buffer)

Cách đầu tiên khi ta tải video của trình duyệt ở trên sẽ khiến người dùng phải chờ đợi một thời gian trước khi dữ liệu của toàn bộ video được tải về toàn bộ. Trong trường hợp dung lượng đoạn video có kích cỡ lớn (dài vài giờ đồng hồ có thể lên đến cả Gb) thì cách làm này sẽ khiến người dùng phải đợi rất lâu để có thể bắt đầu xem video. Thường thì cách này được ứng dụng từ xa xưa khi các công nghệ streamming chưa có.

Cách làm thứ hai thì người dùng có thể xem ngay nội dung video khi từng phần chia nhỏ dữ liệu của video (buffer) được tải xuống máy. Trường hợp tốc độ tải về từng phần nhỏ dữ liệu này nhanh hơn tốc độ xem video của người dùng thì khi đó người dùng sẽ có thể coi video một cách liên tục mà không bị giật.

Cache là gì?

Cache là kỹ thuật lưu lại những dữ liệu đã được xử lý vào 1 bộ nhớ tạm. Bộ nhớ tạm này sẽ có tốc độ truy suất nhanh (RAM, hoặc local storage của client). Những lần sau cần dùng thông tin thì chỉ cần truy suất ngay từ bộ nhớ tạm mà không cần phải làm thêm gì.

Sự khác biệt giữa Buffer và Cache?

Buffer giống Cache ở điểm là nó cũng lưu data ở bộ nhớ tạm. Tuy nhiên Buffer được sử dụng chủ yếu để giảm thời gian chờ giữa việc nhận và xử lý dữ liệu bởi một thiết bị nào đó, data được băm nhỏ, tải đến đâu xử lý đến đó.

Cache được sử dụng dựa trên nguyên tắc cùng một dữ liệu sẽ được truy cập nhiều lần do đó data được lưu trữ trong cache sẽ làm giảm phần lớn thời gian truy cập, đỡ phải tải dữ liệu lại một lần nữa.

  Speed up Microservices 2: Tận dụng trình duyệt và cache
  Dùng gì để lưu trữ data thay thế local storage?
  DevOps trend - 8 dự đoán trong nhiều năm tới

IDE là gì? Hiểu rõ hơn về IDE và Text Editor

ide-la-gi

IDE là gì?

IDE là gì?IDE viết tắt là từ (Integrated Development Environment) là môi trường tích hợp dùng để viết code để phát triển ứng dụng. Ngoài ra IDE tích hợp các tool hỗ trợ khác như trình biên dịch (Compiler), trình thông dịch (Interpreter), kiểm tra lỗi (Debugger), định dạng hoặc highlight code, tổ chức thư mục code, tìm kiếm code…

Các môi trường IDE thường bao gồm

  • Một trình soạn thảo mã nguồn (source code editor): dùng để viết mã.
  • Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter).
  • Công cụ xây dựng tự động: khi sử dụng sẽ biên dịch (hoặc thông dịch) mã nguồn, thực hiện liên kết (linking), và có thể chạy chương trình một cách tự động.
  • Trình gỡ lỗi (debugger): hỗ trợ dò tìm lỗi.
  • Ngoài ra, còn có thể bao gồm hệ thống quản lý phiên bản và các công cụ nhằm đơn giản hóa công việc xây dựng giao diện người dùng đồ họa (GUI).
  • Nhiều môi trường phát triển hợp nhất hiện đại còn tích hợp trình duyệt lớp (class browser), trình quản lý đối tượng (object inspector), lược đồ phân cấp lớp (class hierarchy diagram),… để sử dụng trong việc phát triển phần mềm theo hướng đối tượng.

Phân theo số lượng các ngôn ngữ được hỗ trợ, ta có thể chia các môi trường phát triển hợp nhất được sử dụng rộng rãi ngày nay thành hai loại:

  • Môi trường phát triển hợp nhất một ngôn ngữ: làm việc với một ngôn ngữ cụ thể, ví dụ: Microsoft Visual Basic 6.0 IDE.
  • Môi trường phát triển hợp nhất nhiều ngôn ngữ: có thể làm việc với nhiều ngôn ngữ lập trình, ví dụ: Eclipse IDE, NetBeans, Microsoft Visual Studio.

IDE và Text Editor

ide là gì

IDE giúp cho bạn dễ dàng và thuận tiện hơn trong việc phát triển ứng dụng mặc dù không cần IDE bạn vẫn có thể viết mã nguồn được, bởi vì thực chất để mã nguồn của một ngôn ngữ lập trình nào đó chạy được, ta chỉ cần trình biên dịch (compiler) tương ứng của ngôn ngữ đó là được.

Ví dụ bạn có thể lập trình C/C++ bằng Notepad hoặc Microsoft Word của Windows, sau đó lưu nó lại thành một file .cpp và dùng Compiler của C/C++ để biên dịch file đó là xong.

Nhưng làm như vậy sẽ rất mất thời gian và không hiệu quả đối với các chương trình lớn có cấu trúc phức tạp, IDE được sinh ra để giúp đỡ lập trình viên, nó tích hợp sẵn các tool cần thiết giúp lập trình ứng dụng trở nên dễ dàng, nhanh chóng và ít bị mắc lỗi hơn.

IDE tích hợp sẵn trình biên dịch hoặc trình thông dịch bên trong nó giúp bạn thực thi code trực tiếp khi đang lập trình ứng dụng, tiêu biểu như Visual Studio, Esclipe, Xcode, Android studio…v.v.

Text Editor không tích hợp sẵn trình biên dịch hoặc trình thông dịch bên trong nó, nghĩa là muốn chạy được ứng dụng, bạn phải dùng riêng compiler bên ngoài. Những Text Editor này thường dùng cho phát triển ứng dụng web, tiêu biểu như Sublime text, Atom, Bracket, Notepad++, VScode…v.v.

Ngoài ra tùy vào từng loại ngôn ngữ lập trình sẽ có những Text chuyên biệt dành riêng cho nó, ví dụ như Pycharm cho Python hay PhpStorm cho PHP. Tuy nhiên hiện tại các text editor mới như Sublime text, Atom, VScode cũn
g có rất nhiều plugin hoặc extension support đầy đủ ngôn ngữ mà bạn đang code.

Một số phần mềm ứng dụng IDE cho bạn

  1. Microsoft Visual Studio
  2. Xcode
  3. Netbeans
  4. IntelliJ IDEA
  5. Eclipse

Kỹ năng cần thiết để sử dụng IDE

Dựa trên môi trường IDE, bạn cần có kỹ năng trong khi phát triển ứng dụng: ngôn ngữ lập trình như PHP, JavaFX, C / C ++, JavaScript, Perl, Ruby và hơn thế nữa. Ngoài ra, bạn cũng nên ham hiểu thêm đến 36 ngôn ngữ lập trình khác như Visual Basic, .NET, C #, F #, JavaScript, TypeScript

Có thể bạn quan tâm:

Xem thêm IT Jobs for Developer trên TopDev

Chống DDOS với dịch vụ miễn phí từ Google

huong-dan-chong-ddos
Chuyện bị tấn công DDoS là chuyện thường ngày ở huyện, gần như là một trong những vấn đề nhức đầu cho bất kỳ website nào. Vấn đề này hiện nay vẫn chưa được giải quyết một cách triệt để.
Một trong những giải pháp cực kỳ hiệu quả hiện nay vừa được Google cho ra mắt đó với tên gọi Google’s Project Shield chỉ cần 30 phút để setup theo hướng dẫn optimization trong 2 ngày tiếp theo, chắc chắn website của bạn sẽ không có vấn đề gì cả.
Đây là một trong những phương thức “install and forget” giúp bạn cài đặt dễ dàng về quên đi những vấn đề tấn công DDoS cực kỳ phiền phức. Hãy cùng xem qua nó là gì nhé

Tính năng

Về cơ bản Project Shield được xây dựng trên cơ sở vật chất của Google, tạo ra nhiều lớp phòng thủ cho hệ thống, giúp chống lại các đợt tấn công DDoS. Bao gồm cả 3/4 và layer 7 attacks.

Bảo vệ không giới hạn

Bất kể website của bạn ở mức độ nào, Project Shield sẽ cung cấp những tính năng bảo vệ miễn phí cho tất cả các loại trang như tin tức, báo chí, luật nhân quyền, bầu cử, và kể cả monitoring.

Customizable caching

Project Shield caches giúp tăng cường sức đề kháng cho các DDoS defense từ đó cũng giúp cải thiện site performance, Bạn cũng có thể tuỳ chỉnh cache setting cho phù hợp với nhu cầu của website nhà mình.
Ngoài ra nó cũng có một số tính năng khác có thể kể đến như: real-time analytics, SSL support, Google support, bare admin support, và gồm cả những tính năng hỗ trợ rất tối ưu khác mà bạn sẽ được hưởng.
Tham khảo thêm các vị trí tuyển dụng web developer lương cao.

Phương thức hoạt động

Một khi setup Project Shield với website của bạn nó sẽ hoạt động như thế này:

Review traffic và loại bỏ các requests đáng nghi ngờ

Nếu có ai vào web site bạn và có những hành vi bí ẩn, Project Shield sẽ tìm cách lọc đi những request đấy.
  1001 lý do mỗi doanh nghiệp cần có một website riêng cho mình

Ngăn chặn ngay các cuộc tấn công

Nếu hệ thống phát hiện bạn đang bị tấn công, phía Google sẽ ngăn cản request lạ những hành vi đáng ngờ khác vào hệ thống server của bạn. Họ sẽ dùng hệ thống multi-layer filering system để lọc những thứ nguy hại này, ứng dụng chúng cho việc phòng thủ DDoS defenses cho cả network và của cả trung tâm dữ liệu.

Reverse proxy trong cơ sở dữ liệu của Google.

User request sẽ vào hệ thống Google’s network gần với vị trí của người dùng cuối, sau đó chúng sẽ được proxied qua cơ sở dữ liệu cloud data center của Google. Điều này giúp tăng performance và giảm độ latency.

Nội dung được đưa lại cho phía người dùng.

Chúng tôi lấy nội dung trang web yêu cầu hoặc từ bộ nhớ cache của chúng tôi hoặc từ máy chủ của bạn và gửi lại cho người sử dụng. Bằng cách rót content từ bộ nhớ cache, chúng tôi sẽ giảm tải trên máy chủ của bạn, đồng thời cũng cải thiện hiệu suất cho người dùng cuối (end-user).
Và đó chỉ là một trong số những tính năng tối ưu của sản phẩm này có thể đem lại cho người dùng. Các bạn có thể thử tự mình cài đặt và sử dụng, đây chắc chắn sẽ là một trong những công nghệ vượt trội nhất trong năm nay.
Đừng bỏ lỡ các vị trí việc làm ngành cnnt hấp dẫn tại Topdev
  Hướng dẫn back-up dữ liệu bằng Python
  Hướng dẫn cách fix và restore Wordpress bị shell hack hoặc chiếm quyền điều khiển

Tại sao junior dev nên review commits của các senior?

Code review là một bài tập thực hành tìm lỗi, bug và các lỗi khác mà người viết dễ bỏ qua khá hiệu quả. Review giúp cải thiện chất lượng chung của code, nhưng cũng là một cách hiệu quả để chia sẻ kiến thức và thông tin. Phần làm của các junior dev phải được các senior xem qua, nhưng bên cạnh đó các junior cũng nên được review. Dưới đây là lí do tại sao.

Trong mọi project có những mà một dev mới vào team cần thời gian để làm quen sử dụng. Chúng bao gồm các code mẫu và cách tổ chức project, testing, build, triển khai và các cách làm việc nhóm hợp lí. Đặc biệt trong các project lớn, các “ma mới” phải đối mặt với một thử thách lớn đó là hiểu được cấu trúc hiện tại và các quyết định về design cũng như lí do đằng sau các quyết định đó.

Chúng ta có thể thấy được cả khía cạnh về kĩ thuật và cách làm việc thông qua project. Tuy nhiên, việc ứng dụng các feature mới hoặc fix bug trong code base mới vẫn còn nhiều thách thức. Liệu có cách nào khác để học theo những người đã có kinh nghiệm trong cũng một project?

Để cho các dev trẻ xem các công trình của các senior là một cách học thật sự hiệu quả. Nó không chỉ giúp họ tham khảo được các quyết định về design và kết cấu tốt hơn cũng như thực hành về màu và code, nó còn cho họ thấy cách chúng được áp dụng vào một project thật mà dev làm việc. Với người được review, cũng chả có mất mát gì khi có thêm một người nữa xem code của bạn kể cả khi người review không có kinh nghiệm. Sự thật là, những người không có kinh nghiệm thường sẽ nhìn project đó theo một khía cạnh khác và mới hơn.

Dạng review này sẽ đem lại nhiều lợi ích cho các junior dev. Tuy nhiên, nó cũng có lợi cho cả project nữa. Rõ ràng là các dev sẽ quen việc nhanh hơn, nhưng việc review cũng mang lại cho project một cách nhìn nhận khác với những gì trực tiếp từ task hiện tại.

  Junior là gì? Yếu tố để cạnh tranh trong “cuộc chơi tuyển dụng”?
  Junior developer là gì? Những quy tắc bất biến giành cho Junior developer
  Từ lập trình viên Junior, cùng mình trở thành 1 lập trình viên mid-level nhé

Tuyển dụng lập trình viên junior mới nhất 

UX Design – Học từ lý thuyết hay thực hành?

học ux design

Có thời gian tôi làm việc cho một UX Consultancy khá nổi tiếng (Top10 UX Consultancy lớn nhất Úc), khách hàng của công ty trải rộng trong nhiều lĩnh vực (tài chính, technology, telecommucation,…).

Xem thêm UX là gì?UX Design là gì?

Nói thêm một chút về mô hình công ty này vì nó khá thú vị và (hình như) chưa có ở Việt Nam – ít ra là trong ngành UX.

Công việc chủ yếu của chúng tôi là đến trực tiếp trụ sở của khách hàng và làm việc (gọi là onsite), thường là mỗi người sẽ được giao một dự án và trực tiếp lead team của khách hàng (gọi là inject).

Tùy theo industry và quy mô của công ty khách hàng mà: khi thì chúng tôi sẽ lead một team Dev, khi thì sẽ lead một team UX Design (đóng vai trò như một UX Lead), thậm chí có trường hợp là one man show luôn (tự xử hết). Đến khi deliver sản phẩm là coi như xong dự án, lại tiếp tục đi dự án khác. Industry tôi phụ trách là FinTech (Financial Technology) nên thường môi trường là các ngân hàng và thường làm việc chung với team UX Design.

Công việc này khá thú vị vì:

1. Được làm việc với rất nhiều môi trường khác nhau, nhiều ngành nghề khác nhau.
2. Khác với mô hình Agency, Consultancy khi đến làm việc với khách hàng là với tư cách là một chuyên gia nên rất được cưng chiều và trao rất nhiều quyền. Chính điều này tạo điều kiện rất thuận lợi cho chúng tôi làm việc (và dĩ nhiên expectation của khách hàng cũng rất cao).
3. Đi rất nhiều nơi (nhờ thời gian làm việc ở đây mà tôi được đi nhiều nơi ở nước Úc) và thường đi lại ăn ở rất sướng.

Đổi lại thì kỳ vọng của khách hàng đặt lên vai cũng rất lớn.

Do tính chất công việc là phải tự thân lead dự án của khách hàng nên trước giờ công ty tuyển rất kỹ, trung bình các bạn đồng nghiệp của tôi có tối thiểu 10-15 năm kinh nghiệm trực tiếp trong ngành. Tuy nhiên thời gian gần đây công ty phát triển quá nhanh, mà nhân lực lại không đủ dẫn đến yêu cầu tuyển dụng giảm đi (trước đây trung bình khoảng 5 vòng thì bây giờ còn 3 vòng), trước đây sau khi tuyển dụng phải có gần 1 tháng induction mới ra field thì gần đây chỉ sau một tuần cá biệt có trường hợp vài ngày là ra field luôn.

  Làm sao để chuyển đổi từ Graphic Design sang UX Design? (phần 1)
  Làm sao để chuyển đổi từ Graphic Design sang UX Design? (phần 2)

Vì tình hình như vậy nên phát sinh một câu chuyện làm tôi rút tỉa được một kết luận muốn chia sẻ với mọi người (sẽ kết luận cuối bài).

Cách đây không lâu, tôi phụ trách tư vấn một dự án khá lớn cho ANZ (vì dự án này mà tôi có được nửa năm ở Melbourne). Giai đoạn gần cuối dự án công ty tăng cường thêm một người nữa để phụ tôi một mảng trong dự án. Vì ANZ xem bạn là consultant nên sau vài ngày đầu tiên họ bắt đầu giao cho bạn lead một team.

Tôi cũng không để ý nhiều vì bản thân cũng phải đang chạy trối chết để kịp deadline bên mảng của tôi, thế là để bạn tự bơi. Sau này nhìn lại mới nhớ là bạn đã rất stress, gần như ngày nào cũng trong trạng thái căng thẳng, vò đầu bứt tai ở lại văn phòng rất trễ.

Crisis bắt đầu là khi hầu hết những lần bạn facilitate hay present các concept thì (thay vì manage và facilitate các stakeholders) bạn lại bị các stakeholders của khách hàng quay như chong chóng. Đỉnh điểm là trong một lần bạn present một module quan trọng trong dự án và (như mọi lần) bị các stakeholder quay cho đến khi Innovation Director có mặt ở đó và vì quá bực mình đã gửi một email complaint về công ty (lưu ý là vị trí Innovation Director của một ngân hàng lớn rất-rất-rất là bự và bạn này mà buồn thì không tốt tí nào cho công ty).

Sau đó thì các bạn Director bên công ty tôi phải nhảy vô và dập lửa, chuyện dập lửa xin không tả nhiều ở đây. Nhưng nói chung là đợt đó là một trong những crisis lớn của công ty.

Sau này hỏi thì mới biết là background của bạn cũng không phải là tệ. 7 năm làm việc ở một số công ty, sau đó thì hơn 5 năm dạy về mảng này ở một trường đại học ở Anh, rồi 2 năm gần nhất thì là giảng viên của một trường đại học khác (khá nổi tiếng) ở Úc – xin phép không nêu tên. Vấn đề ở đây là suốt hơn 7 năm gần nhất thì bạn chỉ dạy học và những kiến thức bạn có chỉ là lý thuyết.

Vì vậy khi đụng dự án thực tế thì bạn bị vấn đề, rồi càng bê lý thuyết cứng ngắt thì lại càng chết.

Bản chất công việc UXD về cơ bản chỉ có 3 bước: Think > Build > Test > Improve (tạm dịch: Ý tưởng > Xây dựng > Kiểm tra > Nâng cấp) và cứ vậy lặp đi lặp lại.

Cũng như bản chất công việc UX, cách trau dồi kiến thức của người làm UX cũng tương tự như vậy. Học cũng như bước đầu tiên (Think), không quan trọng là bạn đã học bao nhiêu trường, bao nhiêu khóa, đọc bao nhiêu quyển sách về UX, xem bao nhiêu bài nói chuyện của các chuyên gia trên YouTube,… tất cả chỉ là lý thuyết và đều vô nghĩa nếu không có các bước trải nghiệm thực tế còn lại. Đặc biệt là trong ngành này các kiến thức vừa học xong thì đã cũ.

Cho nên:

– Dành cho các bạn tự học, đừng chỉ suốt ngày tập trung đọc lý thuyết, hãy áp dụng ngay những kiến thức mình có được lên những sản phẩm mình đang làm việc. Nếu không có thì tạo ra những sản phẩm theo dạng hobby rồi ứng dụng. Một thử nghiệm fail giá trị gấp nhiều lần đọc 10 bài viết do người khác kể lại.

– Đặc biệt với những ai đi dạy hoặc đi chia sẻ, nên chia sẻ từ những kinh nghiệm thực tế chứ nếu chỉ ngồi đọc xong đi nói lại thì “tam sao thất bản” người nghe còn chết nặng hơn.

TopDev via ngochieu.com

  UX Design là gì? Làm sao để trở thành UX designer?
  16 lời khuyên để tạo Form Đăng Ký và Đăng Nhập có UX tốt

Market Place Platform tại Việt Nam 2019 – Cuộc cách mạng nền tảng

Platform hiện hữu trong tất cả các lĩnh vực của cuộc sống chúng ta đồng thời cũng mang một mục đích cao quý: là dùng để tương thích đồng bộ giữa người dùng với sự thuận lợi trong việc trao đổi hàng hoá, dịch vụ hoặc tiền tệ trong xã hội, qua đó kích hoạt việc tạo ra giá trị cho tất cả người tham gia. Cung cấp một cơ cấu hạ tầng mở và có tính hỗ trợ cho những tương tác này và thiết lập các trạng thái điều hành chúng.

Để dễ hiểu hơn, chúng ta tạm chia nền tảng thành hai nhánh:

  • Nền tảng giao dịch (transaction platform) được sử dụng để tối ưu hóa giao dịch giữa những người dùng và người cung cấp dịch vụ (Uber, Grab, GO-JEK, Amazon, Ebay…)
  • Nền tảng sáng tạo đột phá (innovation platform) thực hiện nhiệm vụ là nền móng phát triển và hỗ trợ các nền mô hình kinh doanh và khởi tạo hệ sinh thái giữa các nền tảng thế hệ sau đó (Apple App Store, Google Play…)

Market Place Platform tại Việt Nam 2019

Người dùng luôn nhận được rất nhiều tiện ích thuộc nhu cầu cơ bản hàng ngày như di chuyển, ăn ở, giáo dục, y tế, việc làm. Công nghệ di động và các thuật toán tối ưu(chi phí, thời gian, quãng đường) đang ngày càng đi vào từng ngõ ngách của cuộc sống. Có thể kể đến 5 nền tảng lớn nhất trên thế giới hiện nay là Microsoft, Oracle, Intel, SAP và Salesforce được định giá lên tới 911 tỉ đô la Mỹ; Trong khi đó các nền tảng tích hợp giữa giao dịch và sáng tạo như Apple, Google, Facebook, Amazon, Alibaba và XiaoMi có giá lên đến 2.000 tỉ đô la.

Có thể kể đến 5 nền tảng lớn nhất trên thế giới hiện nay là Microsoft, Oracle, Intel, SAP và Salesforce được định giá lên tới 911 tỷ USD. Trong khi đó các nền tảng tích hợp giữa giao dịch và sáng tạo như Apple, Google, Facebook, Amazon, Alibaba và XiaoMi có giá trị lên đến 2.000 tỷ USD.

Tại Việt Nam, các nền tảng thương mại đang phát triển mạnh. Cạnh tranh khốc liệt có nêu tại Báo cáo là nền tảng về e-logistics, tức mảng gọi xe, giao nhận, với các ‘anh tài’ như Grab, Go-Viet, FastGo, Be, Now, AhaMove… Các mảng khác như đời sống, sức khỏe, kinh doanh cũng có những đơn vị như Jupviec, eDoctor, Luxstay, Homedy, Chili…

***

Vừa qua TopDev đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công nghệ góp phần thay đổi cuộc sống đến từ các công ty công nghệ tại Việt Nam. Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

RESTful API là gì? Cách thiết kế RESTful API

Có thể nói nguyên lí REST và cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình web nói chung và lập trình ứng dụng nói riêng.

Có thể nói bản thân REST không phải là một loại công nghệ. Nó là phương thức tạo API với nguyên lý tổ chức nhất định. Những nguyên lý này nhằm hướng dẫn lập trình viên tạo môi trường xử lý API request được toàn diện.

Để hiểu rõ hơn về RESTful API ta sẽ đi lần lượt giải thích các khái niệm API, REST hay RESTful.

RESTful API là gì?

RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource. Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP.

restful api

Xem thêm: các vị trí tuyển dụng lập trình API hấp dẫn tại Topdev

Diễn giải các thành phần

API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác. API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.

REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu.

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau.

Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụng web để quản các resource. RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API.

RESTful hoạt động như thế nào?

REST hoạt động chủ yếu dựa vào giao thức HTTP. Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.

  • GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
  • POST (CREATE): Tạo mới một Resource.
  • PUT (UPDATE): Cập nhật thông tin cho Resource.
  • DELETE (DELETE): Xoá một Resource.

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa.

Hiện tại đa số lập trình viên viết RESTful API giờ đây đều chọn JSON là format chính thức nhưng cũng có nhiều người chọn XML làm format, nói chung dùng thế nào cũng được miễn tiện và nhanh.

Authentication và dữ liệu trả về

RESTful API không sử dụng session và cookie, nó sử dụng một access_token với mỗi request. Dữ liệu trả về thường có cấu trúc như sau:

{
    "data" : {
        "id": "1",
        "name": "TopDev"
    }
}

Status code

Khi chúng ta request một API nào đó thường thì sẽ có vài status code để nhận biết sau:

  • 200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE.
  • 201 Created – Trả về khi một Resouce vừa được tạo thành công.
  • 204 No Content – Trả về khi Resource xoá thành công.
  • 304 Not Modified – Client có thể sử dụng dữ liệu cache.
  • 400 Bad Request – Request không hợp lệ
  • 401 Unauthorized – Request cần có auth.
  • 403 Forbidden – bị từ chối không cho phép.
  • 404 Not Found – Không tìm thấy resource từ URI
  • 405 Method Not Allowed – Phương thức không cho phép với user hiện tại.
  • 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ.
  • 415 Unsupported Media Type – Không hỗ trợ kiểu Resource này.
  • 422 Unprocessable Entity – Dữ liệu không được xác thực
  • 429 Too Many Requests – Request bị từ chối do bị giới hạn

Nên sử dụng Version

Luôn sử dụng version để khi bạn cần nâng cấp API mà vẫn hỗ trợ các API cũ.

Xây dựng API với Laravel

Lấy việc xây dựng api trên Laravel để làm ví dụ, trước khi đi vào ta tổng quan về Http Request.

HTTP Request

HTTP request có tất cả 9 loại method , 2 loại được sử dụng phổ biến nhất là GET và POST

  • GET: được sử dụng để lấy thông tin từ server theo URI đã cung cấp.
  • HEAD: giống với GET nhưng response trả về không có body, chỉ có header.
  • POST: gửi thông tin tới sever thông qua các biểu mẫu http.
  • PUT: ghi đè tất cả thông tin của đối tượng với những gì được gửi lên.
  • PATCH: ghi đè các thông tin được thay đổi của đối tượng.
  • DELETE: xóa tài nguyên trên server.
  • CONNECT: thiết lập một kết nối tới server theo URI.
  • OPTIONS: mô tả các tùy chọn giao tiếp cho resource.
  • TRACE: thực hiện một bài test loop – back theo đường dẫn đến resource.

RESTful Route

Viết Api thì sẽ khai báo router vào file routes/api.php thay vì sử dụng file routes/web.php. Các setting mặc cho file api.php trong laravel:

  • Url: những route được khai báo trong file này mặc định có prefix url là api (ví dụ: topdev.vn/api/products)
  • Middleware: mặc định sẽ được gán Middleware Group là api, trong file app/Http/Kernel sẽ thấy 2 middleware thuộc Middleware Group: api là throttle (giới hạn request / time) và bindings (model binding).

Có thể tùy chỉnh giá trị mặc định này trong method mapApiRoutes trong file app/Providers/RouteServiceProvider.php

Tạo các route để thực hiện các thao tác như CRUD (Create, Read, Update, Delete):

// Lấy list sản phẩm
Route::get('products', 'Api\ProductController@index')->name('products.index');
// Lấy detail sản phẩm theo id
Route::get('products/{id}', 'Api\ProductController@show')->name('products.show');
// Add sản phẩm
Route::post('products', 'Api\ProductController@store')->name('products.store');
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put('products/{id}', 'Api\ProductController@update')->name('products.update');
# Sử dụng patch nếu update 1 vài field
Route::patch('products/{id}', 'Api\ProductController@update')->name('products.update');
// Xóa sản phẩm theo id
Route::delete('products/{id}', 'Api\ProductController@destroy')->name('products.destroy');

Mặc định route đã được gán middleware bindings, nếu muốn sử dụng model binding trong controller thì chúng ta sửa lại tham số trong route như sau:

Route::get('products/{product}', 'Api\ProductController@show')->name('products.show');
Route::put('products/{product}', 'Api\ProductController@update')->name('products.update');
Route::patch('products/{product}', 'Api\ProductController@update')->name('products.update');
Route::delete('products/{product}', 'Api\ProductController@destroy')->name('products.destroy');

Ngoài ra trong laravel cũng hỗ trợ chúng ta 1 cách khai báo ngắn gọn hơn:

//Nếu không muốn sử dụng toàn bộ method trong apiResource mọi người có thể chỉ định sử dụng 1 vài method bằng hàm only

Route::apiResource('products', 'Api\ProductController')->only(['index', 'show']);

//Hoặc nếu muốn loại bỏ đi 1 số method không dùng thì có thể sử dụng hàm except

Route::apiResource('products', 'Api\ProductController')->except(['show', 'update']);

Resource Controllers

Tương ứng với các Route RESTful đã khai báo ở trên, đặc biệt nếu dùng method apiResource thì laravel cũng hỗ trợ các method xử lí tương ứng trong controller.

Để tạo ra Resource Controllers chúng ta chạy lệnh sau

php artisan make:controller Api/ProductController -api

File ProductController tạo ra sẽ như sau<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Ngoài ra nếu muốn sử dụng model binding khi tạo Resource Controllers thì dùng lệnh bên dưới

php artisan make:controller Api/ProductController --api --model=Models/Product

File ProductController tạo ra sẽ như sau, chúng ta để ý tham số của các method show, update, destroy sẽ thay đổi 1 chút.

<?php

namespace App\Http\Controllers\Api;

use App\Models\Product;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Product  $product
     * @return \Illuminate\Http\Response
     */
    public function show(Product $product)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Product  $product
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Product $product)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Product  $product
     * @return \Illuminate\Http\Response
     */
    public function destroy(Product $product)
    {
        //
    }
}

Demo 1 đoạn code đơn giản trong controller kết hợp với model binding và route apiResource khi xây dựng API:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Product[]|\Illuminate\Database\Eloquent\Collection
     */
    public function index()
    {
        return Product::all();
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param Request $request
     * @return Product|\Illuminate\Database\Eloquent\Model
     */
    public function store(Request $request)
    {
        return Product::create($request->all());
    }

    /**
     * Display the specified resource.
     *
     * @param Product $product
     * @return Product
     */
    public function show(Product $product)
    {
        return $product;
    }

    /**
     * Update the specified resource in storage.
     *
     * @param Request $request
     * @param Product $product
     * @return bool
     */
    public function update(Request $request, Product $product)
    {
        return $product->update($request->all());
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param Product $product
     * @throws \Exception
     */
    public function destroy(Product $product)
    {
        $product->delete();
    }
}

Mặc định khi sử dụng route apiResource thì dữ liệu trả về sẽ tự động được chuyển sang kiểu JSON và sẽ có status tương ứng nên chỉ cần return dữ liệu ra là được.

Còn nếu muốn tùy biến status trả về thì có thể tham khảo cách phía dưới có sử dụng class Illuminate\Http\Response để lấy status thay vì fix giá trị vào ví dụ như HTTP_OK tương ứng sẽ là 200

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function index()
    {
        $products = Product::all();

        return response()->json($products, Response::HTTP_OK);
    }
}
Eloquent Resources

Khi xây dựng API, bạn có thể cần transform dữ liệu từ controller trước khi trả về cho người dùng ứng dụng của bạn, laravel cũng đã hỗ trợ điều này với Eloquent Resources

Để tạo ra 1 class chuyển đổi chúng ta chạy lệnh sau

php artisan make:resource Product

File app/Http/Resources/Product.php sẽ có nội dung như sau

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class Product extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

Mình sẽ tùy chỉnh dữ liệu trả về là chỉ có title và price

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class Product extends JsonResource{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request){
        return [
            'title' => $this->title,
            'price' => $this->price,
        ];
    }
}

Ở controller thì mình sẽ sửa lại như sau

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Product;
use Illuminate\Http\Request;
use App\Http\Resources\Product as ProductResource;

class ProductController extends Controller{
    /**
     * Display a listing of the resource.
     *
     * @return Product[]|\Illuminate\Database\Eloquent\Collection
     */
    public function index(){
        $products = Product::all();

        return ProductResource::collection($products);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param Request $request
     * @return Product|\Illuminate\Database\Eloquent\Model
     */
    public function store(Request $request){
        $product = Product::create($request->all());

        return new ProductResource($product);
    }

    /**
     * Display the specified resource.
     *
     * @param Product $product
     * @return Product
     */
    public function show(Product $product){
        return new ProductResource($product);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param Request $request
     * @param Product $product
     * @return bool
     */
    public function update(Request $request, Product $product){
        return $product->update($request->all());
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param Product $product
     * @throws \Exception
     */
    public function destroy(Product $product){
        $product->delete();
    }
}

Ngoài giới hạn dữ liệu trả về như title hay price, laravel cũng hỗ trợ rất nhiều thứ như thêm relationships, data …, mọi người có thể đọc thêm docs trên Laravel.

Authorization

Hiện tại có 3 cơ chế Authorize chính:

  • HTTP Basic
  • JSON Web Token (JWT)
  • OAuth2

Tùy thuộc vào service của bạn, mà hãy chọn loại Authorize có mức độ phù hợp, cố gắng giữ nó càng đơn giản càng tốt.

CORS Policy

Viết API thì cũng cần chú ý về CORS là gì?

API Document

Ai cũng biết việc viết API docs là cần thiết, tuy nhiên để có một API docs hoàn chỉnh cũng tiêu tốn khá nhiều thời gian. Nhất là trong lúc dự án gấp rút thì mọi người thường chỉ để API docs ở mức siêu cơ bản. Tham khảo thêm cách viết API Document.

API document là một phần tương tự như Unit Test vậy – lấy ngắn để nuôi dài.

Nếu không được chăm sóc kỹ, thì đến lúc maintain hoặc thay đổi spec thì hậu quả sẽ rất thảm khốc, dưới đây là một số lưu ý lúc viết docs:

  • Mô tả đầy đủ về params request: gồm những params nào, datatype, require hay optional.
  • Nên đưa ra các ví dụ về HTTP requests và responses với data chuẩn.
  • Cập nhật Docs thường xuyên, để sát nhất với API có bất cứ thay đổi gì.
  • Format, cú pháp cần phải nhất quán, mô tả rõ ràng, chính xác.

Tham khảo thêm các việc làm API lương cao hấp dẫn tại đây

Cập nhật xu hướng Employer Branding Event cho nhà tuyển dụng IT

Nước cờ mới cho Nhà tuyển dụng

Một thương hiệu công ty mạnh (Branding) sẽ là nền tảng quan trọng đầu tiên để xây dựng một thương hiệu nhà tuyển dụng (Employer Branding) mạnh. Ai mà chả muốn làm việc cho một công ty có tên tuổi!

Tuy nhiên một thương hiệu công ty mạnh mới chỉ là nền tảng chứ chưa phải quyết định tất cả đến khả năng thành công của một thương hiệu nhà tuyển dụng hấp dẫn (về lâu dài). Khách hàng của thương hiệu nhà tuyển dụng là những người làm thuê (employee).

Họ rất khác với khách hàng mua sản phẩm của công ty. Ngoài uy tín của thương hiệu công ty họ còn nhiều mong muốn và nhu cầu khác nhau. Một trong những thứ quan trọng nhất đó là ai là sếp trực tiếp của họ. Trên thực tế có nhiều cá nhân chọn nơi làm bến đỗ sự nghiệp của mình vì tên tuổi của CEO/ Manager hơn là tên tuổi của công ty. Ngược lại cũng có nhiều người không bỏ công ty để ra đi. Họ bỏ người lãnh đạo mà họ cho là không đủ tâm tài hoặc nhiều khi đơn giản là không phù hợp.

Gợi ý một số nhà tuyển dụng HOT cho dân Dev:

Không ít lựa chọn để Employer Branding thành công

Trái với các chiến dịch tuyển dụng rầm rộ của tân binh, các cựu binh lại thực hiện những bước đi mang tính chiến lược và tầm nhìn về lâu dài với các chiến dịch Employer Branding hướng đến đối tượng là các kỹ sư IT một cách bài bản và đúng với insight của đối tượng này.

Các hoạt động này với mục tiêu khác hẳn với một chiến dịch tuyển dụng thông thường (đem về hồ sơ) là đem về nhận diện, top of mind, trust, transparency… để sau này khi có ý định thay đổi công việc, họ sẽ nghĩ đến công ty đó đầu tiên bởi những ấn tượng về văn hóa công ty cũng như những công nghệ mà công ty đó đang thực hiện.

Ngoài ra, việc tăng cường các lớp senior/ tech lead cởi mở hơn trong hoạt động Tech Sharing trong nội bộ & các sự kiện công nghệ cũng đang được nhiều công ty tiến hành với cường độ thường xuyên hơn có nêu tại Báo cáo như: Tiki, Sun* Inc, Knorex, Shopback, LINE, Grab,…

***

Vừa qua TopDev đã công bố Báo cáo Vietnam IT Landscape đem đến cái nhìn toàn cảnh về các ứng dụng công nghệ góp phần thay đổi cuộc sống đến từ các công ty công nghệ tại Việt Nam. Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

Xamarin là gì? Ưu và khuyết điểm của nó

Xamarin là gì? Ưu và khuyết điểm của nó

Xamarin là gì?

Xamarin được xây dựng vào tháng 5 năm 2011 bởi các kỹ sư đã tạo ra Mono, Mono cho Android và MonoTouch, mục đích là triển khai chạy ứng dụng trên nhiều nền tảng của Common Language Infrastructure (CLI) và Common Language Specifications ( Thường được gọi là Microsoft .NET).
Dựa trên ngôn ngữ C#, các nhà phát triển có thể sử dụng các công cụ Xamarin để viết các ứng dụng Android, iOS trên cùng một code project.

Là 1 nền tảng lập trình ứng dụng di động cross-platform (có nghĩa là code một lúc có thể chạy trên được cả iOS lẫn Android), Xamarin có những đặc điểm riêng biệt, hiếm có so với các frameworks hiện tại trên thị trường khi mà khả năng native access và trải nghiệm người dùng native vẫn đang bị đặt nghi vấn.

Xem thêm các vị trí tuyển dụng lập trình Xamarin lương cao

Ưu điểm của Xamarin

Tái sử dụng code tại nhiều chỗ, giảm thời gian làm ứng dụng trên nhiều nền tảng

Xamarin sử dụng ngôn ngữ C# cùng với framework.Net để tạo ra ứng dụng cho mọi nền tảng bất kì. Khi bạn tạo ứng dụng di động trên Xamarin, bạn sử dụng cùng ngôn ngữ là C#, API và cấu trúc dữ liệu hay logic của ứng dụng nên thường là 90% code chức năng có thể được dùng trên iOSAndroid.

Qua đó có thể giảm đáng kể chi phí và thời gian phát triển ứng dụng di động cho 2 nền tảng phổ biến nhất. Ngoài ra có nhiều IDE hỗ trợ rất tốt mà miễn phí với nó như Xamarin IDE (dành cho Mac) hay Visual Studio (dành Windows).

Performance gần như native

Các số liệu performances là tương đương khi so sánh với các số liệu performance của Java cho Android và Objective-C hoặc Swift cho ứng dụng phát triển ứng dụng iOS native. Hơn thế nữa, performance của Xamarin liên tục được cải thiện để phù hợp hoàn toàn với tiêu chuẩn của lập trình native.

Ngoài ra, nền tảng Xamarin cung cấp thêm các giải pháp để testing và theo dõi hoạt động của ứng dụng. Xamarin Test Cloud kết hợp với công cụ Xamarin Test Recorder cho phép bạn chạy các UI test tự động và xác định các vấn đề về performance trước khi ứng dụng release. Tuy nhiên, dịch vụ này có tính phí nhưng cũng đáng lưu tâm.

Hỗ trợ tất cả phần cứng

Với Xamarin, giải pháp của bạn sẽ giúp cách chức năng của ứng dụng đạt được native-level, loại trừ tất cả vấn đề tương thích với phần cứng, sử dụng plugins và APIs đặc biệt để làm việc với các chức năng thiết bị thông thường đa nền tảng. Ngoài khả năng truy cập vào API riêng biệt cho mỗi nền tảng, Xamarin còn hỗ trợ liên kết với thư viện native. Từ đó, functionality được tối ưu hóa và đạt được mức độ native tốt hơn với ít chi phí hơn.

Nhiều thư viện hỗ trợ làm ứng dụng cực nhanh có sẵn

Component Xamarin cung cấp đến hàng ngàn UI controls tùy chỉnh, các charts, biểu đồ, themes đa dạng và các chức năng mạnh mẽ khác có thể được thêm vào ứng dụng chỉ với vài cú click. Điều này bao gồm quá trình xử lý payment built-in (như Stripe chẳng hạn), tích hợp Beacons và các thiết bị di động, các services notification box push, giải pháp lưu trữ đám mây, các tính năng streaming multimedia và hơn thế nữa.

Có thể bạn quan tâm:

  Biết chọn gì đây? Flutter, React Native hay Xamarin?
  Flutter Vs. React Native - Nên chọn framework nào?

Khuyết điểm

Hỗ trợ chậm các updates mới nhất của các hệ điều hành mobile

Điều này phụ thuộc hoàn toàn vào đội ngũ developer của Xamarin. Khi iOS hoặc Android tung ra các phiên bản mới, phải mất một khoảng thời gian để thực hiện những thay đổi hay đưa vào một plugins mới, v.v.. Mặc dù Xamarin khẳng định sẽ hỗ trợ cùng lúc với những cập nhật mới nhất nhưng vẫn có những thời điểm bị trì hoãn.

Giới hạn truy cập vào thư viện mã nguồn mở

Native development giúp thói quen sử dụng công nghệ mã nguồn mở trở nên quen thuộc, rộng rãi hơn. Với Xamarin, cả developer đều phải sử dụng duy nhất môt component được cung cấp bởi Xamarin và một số mã nguồn mở .Net.

Trong khi native development có rất nhiều lựa chọn thư viện opensource cho ứng dụng phát triển điện thoại Android và iOS. Rất tiếc là vẫn còn nhiều native library ngon vẫn chưa hỗ trợ cho Xamarin.

Vấn đề hệ sinh thái của Xamarin

Dĩ nhiên, cộng đồng Xamarin ít hơn so với cộng đồng của iOS hay Android nên để tìm kiếm được 1 developer Xamarin có kinh nghiệm là chuyện không dễ dàng gì dù Xamarin là nền tảng được phát triển nhờ sự hỗ trợ từ Microsoft.

Theo nhiều nguồn, cộng đồng Xamarin chiếm 10% cộng động lập trình mobile toàn cầu.

Apps thực hiện chậm hơn và yêu cầu nhiều dung lượng hơn trên thiết bị

Ứng dụng Xamarin lớn hơn, nặng hơn so với ứng dụng native. So sánh với ứng dụng native nó chiếm nhiều hơn vài Mb so với Java/Objective C tương ứng. kích thước của một ứng dụng code bằng xamarin là 5Mb, trong khi code bằng Objective C chỉ chiếm 200 Kb. Càng sử dụng nhiều API, càng nhiều lưu trữ bị chiếm trên thiết bị.

Tổng kết

Nhiều developer đã sử dụng Xamarin như là một công cụ phát triển ứng dụng. Được support bởi Microsoft, bạn sẽ an tâm hơn khi đào sâu nghiên cứu cũng như học cách làm ứng dụng nhanh hơn. Ngôn ngữ C# lại dễ học và dễ hiểu, làm web hay app để trở nên dễ dàng hơn bao giờ hết.

Hiện nay có rất nhiều các nền tảng Hydrid để hỗ trợ làm app trên nhiều nền tảng như React Native (Sử dụng Javascript) support bởi Facebook, Flutter (Sử dụng ngôn ngữ Dart, xem thêm Flutter là gì?) được support bởi Google…nên bạn chắc chắn sẽ đắng đo lựa chọn nên dùng nền tảng nào.

Lời khuyên của TopDev là nếu bạn chuyên sâu vào ngôn ngữ lập trình nào thì hãy chọn nền tảng đó mà base. Và hybrid chỉ thật sự phù hợp với các ứng dụng đơn giản, không có quá nặng về UI hoặc app có độ lớn vừa phải. Khi gặp ứng dụng đòi hỏi sự phức tạp, hãy cân nhắc native bạn nhé.

  List các thuật ngữ căn bản .NET- Bách khoa toàn thư

Hiểu rõ về JSON là gì? Cách lấy dữ liệu từ JSON

json la gi

JSON là gì?

JSON là viết tắt của JavaScript Object Notation, là một kiểu định dạng dữ liệu tuân theo một quy luật nhất định mà hầu hết các ngôn ngữ lập trình hiện nay đều có thể đọc được. JSON là một tiêu chuẩn mở để trao đổi dữ liệu trên web.

JavaScript Object Notation - JSON

Định nghĩa

Định dạng JSON sử dụng các cặp key – value để dữ liệu sử dụng. Nó hỗ trợ các cấu trúc dữ liệu như đối tượng và mảng. Ví dụ một tập tin có tên topdev_info.json với nội dung như ở dưới đây sử dụng format kiểu JSON để lưu trữ thông tin:

{
    "name" : "TopDev",
    "title" : "Việc làm IT cho Top Developers",
    "description" : "là hệ sinh thái bao gồm cộng đồng các Top Developers."
}

Ta có thể thấy cú pháp của JSON có 2 phần đó là keyvalue:

  • Chuỗi JSON được bao lại bởi dấu ngoặc nhọn {}
  • Các keyvaluecủa JSON bắt buộc phải đặt trong dấu nháy kép {“}, nếu bạn đặt nó trong dấu nháy đơn thì đây không phải là một chuỗi JSON đúng chuẩn. Nếu trường hợp trong value của bạn có chứa dấu nháy kép " thì hãy dùng dấu (\) để đặt trước nó, ví dụ  \"json là gì\".
  • Nếu có nhiều dữ liệu thì dùng dấu phẩy , để ngăn cách.
  • Các key của JSON bạn nên đặt chữ cái không dấu hoặc số, dấu _ và không có khoảng trắng., ký tự đầu tiên không nên đặt là số.

File json có thể được lưu với bất kỳ phần mở rộng nào, tuy nhiên thông thường thì nó được lưu dưới phần mở rộng là .json hoặc .js.

JSON ban đầu được phát triển để dành phục vụ cho ứng dụng viết bằng JavaScript. Tuy nhiên vì JSON là một định dạng dữ liệu nên nó có thể được sử dụng bởi bất cứ ngôn ngữ nào mà không bị giới hạn.

Giá trị key trong JSON có thể là chuỗi (string), số (numner), rỗng (null), mảng (array), hoặc đối tượng (object).

Tìm việc làm cho lập trình JSON

Tìm việc làm lập trình Javascript

Cấu trúc chuỗi JSON

Object là gì?

Object trong Json được thể hiện bằng dấu ngoặc nhọn {}. Khái niệm Object trong Json cũng khá tương đồng với Object trong Javascript. Tuy nhiên, Object trong Json vẫn có những giới hạn như:

  • Key: phải luôn nằm trong dấu ngoặc kép, không được phép là biến số.
  • Value: Chỉ cho phép các kiểu dữ liệu cơ bản: numbers, String, Booleans, arrays, objects, null. Không cho phép function, date, undefined.
  • Không cho phép dấy phẩy cuối cùng như Object trong Javascript.

Kiểu OBJECT

var nhat = {
   "firstName" : "Nhat",
   "lastName" : "Nguyen",
   "age" :  "34"
};

Kiểu OBJECT IN ARRAY

var employees = [{
   "name" : "Binh",
   "age" :  "38",
   "gender" : "male"
 
},
{
   "name" : "Nhat",
   "age" : "34",
   "gender" : "male"
 
},
{
   "name" : "Nhu",
   "age" : "25",
   "gender" : "female"
}];

Kiểu NEST OBJECT

var employees = {
  "hieu" : {
  "name" : "Hieu",
  "age" :  "29",
  "gender" : "male" 
},
 
"nhat" : {
  "name" : "Nhat",
  "age" : "34",
  "gender" : "male"
},
 
"nhu" : {
  "name" : "Nhu",
  "age" : "25",
  "gender" : "female"
}
}

Nên sử dụng JSON khi nào

Đó là khi bạn muốn lưu trữ dữ liệu đơn thuần dưới dạng metadata ở phía server. Chuỗi JSON sẽ được lưu vào database và sau đó khi cần dữ liệu thì sẽ được giải mã. Ví dụ với PHP, nó cung cấp các hàm liên quan đến JSON để mã hóa hoặc giải mã là json_encode và json_decode.

Một trường hợp khá phổ biến trong JavaScript mà dữ liệu được định dạng theo format JSON xuất hiện đó là trong các AJAX request.

Ví dụ bạn tạo tập tin topdev_info.json ở thư mục gốc của server (để khi request vào URL http://localhost/topdev_info.json thì server trả về nội dung của tập tin này) và sau đó bạn tạo một tập tin topdev_ajax.html với nội dung như sau:

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
    $.ajax(
        type: 'GET',
        url: "http://localhost/topdev_info.json",
        success: function(response) {
            console.log("Data type: " + (typeof response));
            console.log("Application name: " + response.name);
        },
    );
</script>
</body>
</html>

Đoạn code trên sử dụng $.ajax() để gửi AJAX request lên server lấy về nội dung file topdev_info.json. Sau khi lấy về nội dung tập tin này thành công, dữ liệu sẽ được chuyển vào biến response.

Nếu bạn mở developer console của trình duyệt lên (nhấn phím F12) bạn sẽ thấy kiểu dữ liệu của biến response này được JavaScript object với các thuộc tính như nametitledecription.

Bài viết liên quan về JSON, tham khảo thêm ở đây nè:

Hy vọng với bài viết này bạn sẽ hiểu rõ hơn về JSON là gì cũng như các ứng dụng và cấu trúc của nó như thế nào. Đừng quên cập nhật thêm các nội dung mới hữu ích cho các Dever tại TopDev Blog nhé! Cảm ơn các bạn vì đã luôn ủng hộ chúng tớ.

Đừng quên ứng tuyển ngày các vị trí tuyển dụng IT lương cao tại đây

Tình hình tuyển dụng IT Việt Nam 2019: Nhu cầu nhân sự CNTT cao nhất trong lịch sử!

Theo báo cáo thị trường IT do TopDev cho mắt đầu năm nay, nghiên cứu có đến 58% các nhà tuyển dụng IT tiếp cận ứng viên tiềm năng qua kênh giới thiệu nội bộ (referral), 51% các nhà tuyển dụng sẽ sử dụng các kênh chính thống (TopDev, VietnamWorks, ITViec,..). Hiện nay ngành tuyển dụng không đơn giản chỉ là đăng tin, chờ CV của ứng viên là phỏng vấn sẽ thành công.

Thị trường lao động riêng ngành lập trình sẽ cần 350.000 nhân lực đến trước cuối năm 2021 trong khi với khả năng hiện tại chỉ có khoảng 200.000 lao động đáp ứng được nhu cầu công việc.

Trong thời điểm hiện tại, ngành IT tại Việt Nam được đánh giá là ngành mũi nhọn, một điểm đến lý tưởng cho những công ty công nghệ hàng đầu trên thế giới. Các doanh nghiệp sau được ghi nhận ở số lượng bản tin tuyển dụng trên toàn bộ thị trường. Đặc biệt, nhiều “tân binh” mới với nhiều tham vọng, bên cạnh đó các dự án công nghệ đang triển khai mạnh cũng đã khuấy đảo thị trường tuyển dụng IT khi nhu cầu tuyển dụng các chuyên gia ngày càng tăng cao.

tuyển dụng it việt nam 2019

Sự phát triển nhanh chóng của nhiều xu hướng công nghệ mới trong năm 2019 mở ra nhiều cơ hội tốt hơn cho các lập trình viên tại Việt Nam, tuy nhiên cũng sẽ gây không ít trở ngại cho nhà tuyển dụng nếu không biết tuyển dụng đúng cách.

Hiện đã có rất nhiều doanh nghiệp đang hướng đến những phương pháp tuyển dụng mới với tầm nhìn dài hạn hơn như làm thương hiệu doanh nghiệp (Employer Branding), nhằm tạo sự ảnh hưởng và lan tỏa hình ảnh của mình của mình đến những ứng viên tốt nhất trong cộng đồng lập trình, thay vì chỉ đăng job tuyển dụng hoặc thông qua các kênh nội bộ như trước đây.

***

Vừa qua TopDev đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công nghệ góp phần thay đổi cuộc sống đến từ các công ty công nghệ tại Việt Nam. Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

Thị trường Outsourcing Vietnam – Thiên đường Outsourcing mới của thế giới

Với hơn 90 triệu dân và độ tuổi trung bình dưới 30, Việt Nam tự hào là quốc gia có dân số trẻ, số sinh viên tốt nghiệp mỗi năm là hơn 40.000 người và tiếp tục tăng nhanh. Sinh viên Việt Nam với tư duy mạnh về khối tự nhiên, phù hợp với ngành IT; trong khi khả năng ngoại ngữ, đặc biệt là tiếng Anh và tiếng Nhật được đánh giá tốt. Đào tạo về CNTT cũng đang được chú trọng. Hơn nữa, các doanh nghiệp phần mềm tại Việt Nam được chính phủ tạo điều kiện với các ưu thế không thể chối bỏ.

Là một trung tâm của BPO cùng với outsourcing phần mềm CNTT, hiện nay các lĩnh vực đang rất cần nguồn nhân lực thường xuyên là: IT, dịch vụ tài chính, truyền thông, game, tích hợp phần mềm và các doanh nghiệp đang tìm kiếm các xu hướng mới nổi như AI, machine learningblockchain.

Image result for it outsourcing

Rào cản lớn trước mắt

Đối với hầu hết các doanh nghiệp, thách thức tại Việt Nam chính là sự cách biệt địa lí. Thành công đòi hỏi phải thiết lập các cách giao tiếp thông minh để làm việc nhóm thật sự mang lại hiệu quả. Điều quan trọng là tận dụng sự khác biệt múi giờ với một lợi thế về năng suất. Ví dụ, thay vì chơi trò đuổi bắt, các doanh nghiệp nên chủ động lập kế hoạch phân chia khối lượng công việc. Công việc mà một nhóm outsourcing làm vào đêm hôm trước sẽ là tiền đề cho nhóm khác vào ngày hôm sau.

Đó là điểm đặc biệt của outsourcing tại các nước Đông Nam Á: chu kỳ sản xuất gần 24 giờ với vòng đời phát triển phần mềm có thể đạt hiệu quả gấp đôi.

Triển vọng Outsourcing ở Việt Nam

Outsourcing được xem như một nguồn thu ổn định nhưng bản thân các doanh nghiệp luôn muốn chủ động đưa các sáng tạo và tiến bộ về công nghệ vào các sản phẩm do chính mình làm chủ. Danh sách này được nhóm nghiên cứu ghi nhận từ những sản phẩm nổi bật và đã thực sự đạt được thành công kể từ khi chính thức “cất cánh” ra thị trường nội địa và trong khu vực.

Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như

  • Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…)
  • Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…)
  • Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…)
  • Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…),
  • Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),…

Related image

Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam.

Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá.

***

Vừa qua TopDev đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công nghệ góp phần thay đổi cuộc sống đến từ các công ty công nghệ tại Việt Nam. Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

Có còn nên học Công nghệ thông tin thời điểm hiện tại?

Bí quyết thành công trong ngành IT không phải từ tấm bằng đại học

Người viết: Phiêu Vũ

Tôi không khuyên bạn bỏ học đại học giống như Bill Gates, nhưng với một ngành đặc biệt như công nghệ thông tin, bí quyết thành công không phải là tấm bằng đại học, mà là một điều khác…

Aspires Minds National Employment (AMNE), một công ty chuyên đánh giá năng lực nhân sự toàn cầu, mới đây vừa phát hành một báo cáo về thực trạng năng lực kĩ sư ngành IT trên thế giới, báo cáo xoay quanh năng lực các kĩ sư CNTT của Hoa Kỳ, Trung Quốc và Ấn Độ; 3 quốc gia có tỉ trọng nhân lực lớn nhất trong ngành lập trình phần mềm.

Những số liệu gây sốc…

Việc chính của lập trình viên là viết mã, tất nhiên; báo cáo AMNE chia năng lực lập trình ra làm nhiều cấp độ, từ cấp cao nhất là viết mã hoàn hảo, viết mã với một chút cẩu thả, viết mã nhiều lỗi; cho đến cấp kém nhất là … viết không nổi đoạn mã ra hồn.

  • Yêu cầu tưởng như đương nhiên “viết mã đúng chức năng và đúng logic đã mô tả”; chỉ 2,1% lập trình viên Trung Quốc đạt yêu cầu này, con số của Mỹ là 18,8%.
  • Yêu cầu được “hạ chuẩn” một chút, chỉ cần viết mã đúng, có thể có một ít lỗi hiếm; thêm 15,3% lập trình viên của Mỹ đạt yêu cầu còn Trung Quốc chỉ thêm được 0,5% mà thôi.
  • Mức độ giữa giữa, lập trình ở trình độ cơ bản, phạm nhiều lỗi cơ bản: 81% lập trình viên Trung Quốc, 61,8% lập trình viên Mỹ.
  • Có đến 10,4% kĩ sư IT người Trung Quốc bị đánh giá là lập trình kém, không viết nổi một đoạn mã; con số này chỉ 4,1% đối với kĩ sư CNTT người Mỹ.

Bí quyết thành công trong ngành IT không phải từ tấm bằng đại học

Báo cáo của AMNE tương đối gây sốc với các chuyên gia giáo dục, bởi kết quả “đầu ra” của đào tạo kĩ sư xem ra khá tệ hại. Giới làm công nghệ thông tin lại tỏ ra khá bình thản, họ hoàn toàn hiểu được thực tế này, thậm chí nhiều doanh nghiệp phần mềm đã phải đối phó với tình trạng này trong rất nhiều năm trở lại đây.

Ngành phát triển nóng, lợi và hại gì?

Trong vòng 30 năm gần đây, lập trình phần mềm và rộng hơn là công nghệ thông tin đã phát triển rất nóng, nhiều công ty trở thành khổng lồ và nhiều tỉ phú xuất thân từ giới lập trình, nhu cầu nhân lực rất lớn và sẽ ngày càng tăng cao hơn. Các công ty thiếu hụt nhân lực đến độ vào năm 2013, Bill Gates và Mark Zuckerberg cùng nhau đăng một video kêu gọi học sinh Mỹ hãy học lập trình.

Một dự báo nhân lực ước tính đến năm 2025, nước Úc thiếu hụt 100.000 lập trình viên; Việt Nam thiếu hụt khoảng 200.000 coder; còn ở Mỹ, con số này gấp năm lần, 1 triệu người.

Việc nhu cầu nhân lực IT tăng dẫn đến mặt bằng lương tăng cao và mời gọi nhiều bạn trẻ đam mê công nghệ tham gia ngành này, nhưng nó cũng có nhiều hệ quả bất lường khác.

Điều đầu tiên dễ nhận thấy là sinh viên trở nên lười biếng hơn, do không bị áp lực phải học giỏi, tại sao ta phải cố gắng khi mà ra trường là được săn đón? Điều tiếp theo còn tệ hại hơn nữa, đó là các trường đại học cũng không có nhiều động lực chuyển đổi khi mà chẳng phải làm gì thì sinh viên trường dễ dàng tìm được việc làm đúng ngành nghề.

Hệ quả hợp lại là chương trình đào tạo kĩ sư phần mềm đang trở nên tụt hậu so với nhu cầu thực tế. Chất lượng đi xuống dẫn đến nhu cầu tuyển dụng lại càng tăng lên để lấp chỗ trống, và nhu cầu tuyển dụng tăng lại bắt đầu vòng tuần hoàn đi xuống tiếp theo.

Bí quyết thành công trong ngành IT không phải từ tấm bằng đại học

Nhân lực công nghệ thông tin đang vô cùng nóng (ảnh chụp tại một cuộc thi lập trình)

Báo cáo AMNE đã trình bày đúng bức tranh đào tạo kĩ sư IT ở 3 cường quốc thế giới, vậy bức tranh ở Việt Nam thì sao? Có lẽ không khác Trung Quốc là mấy, thậm chí nhiều gam màu tối hơn. Một số chuyên gia có tiếng trong ngành (ở Việt Nam) cho rằng kĩ sư IT loại khá-giỏi ở Việt Nam chỉ khoảng 1-2%, còn kĩ sư không có năng lực lập trình vào khoảng 50-60%.

Trong một bài phát biểu ngày 30/3/2019, bộ trưởng Phùng Xuân Nhạ cho biết chỉ 30% cử nhân CNTT ra trường có thể làm việc được ngay, 70% phải đào tạo lại.

Điều gì tạo nên chất lượng của chương trình đào tạo?

Rõ ràng có sự vượt trội trong chất lượng đào tạo kĩ sư phần mềm ở Mỹ so với các quốc gia còn lại, nhưng lý do nằm ở đâu? Nội dung của báo cáo AMNE cũng chỉ ra 2 vấn đề lớn nhất của hệ thống đào tạo lập trình viên tại Ấn Độ và Trung Quốc:

  1. Chỉ 3% sinh viên được đào tạo những công nghệ mới phù hợp với nhu cầu của cuộc cách mạng công nghiệp 4.0 chẳng hạn như trí tuệ nhân tạo, học máy, khoa học dữ liệu,…
  2. Chỉ 7% sinh viên có làm một dự án nào đó trước khi tốt nghiệp.

Nhận xét rút ra từ hai vấn đề trên là các chương trình đào tạo đại học đang không theo kịp với nhu cầu thực tế thị trường; không có sự đổi mới trong chương trình đào tạo, và không có sự gắn kết giữa đào tạo và doanh nghiệp.

  Tốt nghiệp bằng giỏi ở trường đại học danh tiếng nhưng không được công ty nào tuyển dụng, cô gái ngã ngửa khi biết lí do...
  Có nên học Vanilla JavaScript? Chắc chắn rồi!

Đào tạo đại học ở Việt Nam cũng gặp vấn đề tương tự, các chương trình đào tạo thường được thiết kế từ hàng chục năm trước và hầu như không thay đổi gì nhiều. Chẳng hạn như giáo trình của một trường đại học hàng đầu vẫn còn dạy lập trình flash là một công nghệ web cổ điển đã bị khai tử.

Ngay cả khi trường đại học muốn đổi mới chương trình cũng vô cùng khó thực hiện, vì lực lượng giảng viên trong trường không có kinh nghiệm với công nghệ mới, còn việc kết hợp với doanh nghiệp phần mềm để giảng dạy thì lại gặp rào cản là giảng viên của doanh nghiệp không đạt chuẩn đứng lớp ở bậc đại học.

Bằng đại học có giúp được gì bạn trong ngành CNTT?

Câu trả lời là KHÔNG, không phải chỉ ở Việt Nam, Ấn Độ hay Trung Quốc; mà ngay cả ở Mỹ.

Bài viết mới đây trên Glassdoor tiết lộ hầu hết các ông lớn trong ngành công nghệ như Apple, Google, IBM,… đã bỏ yêu cầu bằng cấp trong tuyển dụng. Trên Quora, một nhân viên cao cấp của Google tiết lộ bộ phận tuyển dụng của Google không quan tâm đến điểm số ứng viên, họ chỉ quan tâm đến thái độ và kiến thức thực tế của người được phỏng vấn mà thôi.

Bí quyết thành công trong ngành IT không phải từ tấm bằng đại học

Tại Việt Nam, trong khi hầu hết các doanh nghiệp phần mềm chỉ cần ứng viên có năng lực chuyên môn, một vài cơ quan nhà nước vẫn yêu cầu đầu vào là bằng đại học. Vấn đề duy nhất là những cơ quan nhà nước này hầu như không có cơ hội phát triển năng lực chuyên môn dành cho dân IT.

Thêm nữa, chương trình đào tạo 5 năm của bậc kĩ sư cũng bị xem là quá dài. Một sinh viên vừa ra trường ở Hà Nội đã gặp lại bạn học cấp 3 trong buổi phỏng vấn xin việc và kể lại: “Tôi vào đại học, nó đi học lập trình. Tôi bắt đầu học lập trình C, nó ra trường làm lập trình viên. Tôi ra trường đi xin việc, nó ngồi phỏng vấn!”.

Với một ngành thay đổi quá nhanh như CNTT, những chương trình đào tạo lớp lang cẩn trọng “từ từ mà tiến” ở bậc đại học xem ra không thể đáp ứng được nhu cầu; các nhà tuyển dụng cũng “chán” không yêu cầu bằng cấp gì cả; lợi thế lớn đang nghiêng về các chương trình đào tạo chuyên ngành.

Những chương trình đào tạo thích ứng với nhu cầu của ngành đang trở nên phổ biến và dần dần sẽ thay thế lề lối đào tạo cũ; kỉ nguyên này được bắt đầu với những sản phẩm đào tạo mở dựa trên nhu cầu của ngành.

Chỉ sau vài năm, học viên hoàn thành các khóa trên Coursera thậm chí còn được đánh giá cao hơn kĩ sư CNTT khi tuyển dụng trong ngành IT vì start-up này liên tục cập nhật nội dung đào tạo của họ. Hoặc như chương trình lập trình viên quốc tế Aptech của Ấn Độ, với khung chương trình hoàn toàn dựa trên yêu cầu từ các doanh nghiệp phần mềm và yêu cầu sinh viên phải hoàn thành 4 project mới có thể tốt nghiệp.

Không phải tự nhiên các doanh nghiệp phần mềm đang loại bỏ yêu cầu bằng cấp trên lá đơn xin việc và thay thế việc săm soi bảng điểm bằng những bài test chuyên môn; thực tế đã dạy họ rằng, những người thành công trong ngành này không phải vì có tấm bằng đại học loại giỏi, mà là vì các bạn đó sẵn sàng bỏ học đại học, để ngồi làm project.

TopDev via dantri

  Lập trình ứng dụng cho di động – Có nên chọn nghề này không?
  Chúng ta có nên học lập trình không?

 

Lập trình viên “già” nên ghi nhớ 5 điều này!

Gary Wisniewski là một kĩ sư phần mềm. Ông đã từng start-up, từng tự tin là một CEO tuyệt với và đã từng thỏa hiệp với chính mình rằng “Tất cả đã là quá khứ”. Ông thấy nhức mắt với những thứ công nghệ mới, thấy web development framework là thứ thật tồi tệ và khao khát những ngày cũ trở về… Suốt một năm tự đá mình về phía sau, ông quyết tâm học những ngôn ngữ mới và đối mặt với những rủi ro mới. Ở tuổi 57, ông tiếp tục thiết kế và làm nên những phần mềm cho start-up của địa phương. Lập trình giữa ranh giới già và trẻ, ông luôn tâm niệm 5 bài học dưới đây:

1. Lập trình viên “già” cần lập trình lại từ đầu

Càng nhiều tuổi, chúng ta sẽ chán mày mò các thứ. Chán mắc lỗi này tới lỗi khác.

Nhưng hãy nhìn lại quá khứ: Đó là những ngày đầu tiên chúng ta bắt đầu viết phần mềm, với sự hào hứng kéo ta đi không nghỉ. Công nghệ cứ thế đổi thay và ta thì cứ tiếp tục sáng tạo, sáng tạo, sáng tạo,…

Cho tới bây giờ, chúng ta – những lập trình viên già – có nhiều kinh nghiệm hơn, nhiều thất bại hơn, nhiều thành công hơn và nhiều kiến thức về công việc liên quan tới máy tính hơn rất nhiều người khác. Thế là chúng ta cho rằng: Việc quái gì phải bỏ hết tất cả những gì mình biết để học một thứ mới, dù chỉ là một thứ ngôn ngữ lập trình mới nhất như Swift, Python hay Go. Ôi không, tuổi này rồi mà học thì sẽ mất hàng năm trời mất. Trong khi đó, nhìn xem: Bạn bè của chúng ta đã bắt đầu dưỡng lão, an yên rồi kìa. Thật đáng ghen tị mà!

Thế nhưng, rốt cuộc thì bạn dấn thân vào nghề lập trình vì gì? Bạn thực sự yêu thích công việc với máy tính, thực sự muốn viết phần mềm và xây dựng các sản phẩm? Thế thì hãy tiếp tục học những điều mới mẻ đang không ngừng xuất hiện trong thế giới công nghệ đi. Bạn sẽ lại mắc lỗi, nhưng là những lỗi mà bạn chưa từng được mắc. Bạn sẽ thấy rằng, hóa ra lập trình viên trẻ tuổi vượt bạn không phải vì họ thông minh hơn, mà họ không hề ngần ngại dấn thân vào nghề. Đó chính là thứ mà bạn cần làm để dưỡng lão theo cách của một lập trình viên. Lại một lần nữa. Làm như bạn đã từng làm nhiều năm trước.

Lập trình viên “già” sẽ thấy rằng, hóa ra lập trình viên trẻ tuổi vượt bạn không phải vì họ thông minh hơn, mà họ không hề ngần ngại dấn thân vào nghề.

Hãy nhớ rằng: Lập trình chưa bao giờ tới hồi kết, nó chỉ mới bắt đầu mà thôi.

Bạn có thể quan tâm một số việc làm cho lập trình:

2. Lập trình bây giờ là “người lạ”

Ngành công nghiệp ngày nay không còn giống những gì mà bạn từng thấy cách đây chục năm nữa. Giờ đây, phần mềm còn hơn cả một trận bóng gay cấn. Bất kỳ ai cũng có thể nhảy vào, code cẩu thả và làm ra những thảm họa. Bạn phải làm quen với điều đó thôi.

Bên cạnh những sai lầm là những ý tưởng táo bạo. Những ngôn ngữ như Go đã loại bỏ rất nhiều rắc rối gây ra bởi OOP, và làm nên một sự đơn giản -sạch sẽ – mới mẻ. Bạn cũng phải làm quen với điều đó thôi.

Ngành công nghiệp ngày nay không còn giống những gì mà bạn từng thấy cách đây chục năm nữa.

Làm quen thế nào? Nhảy vào cuộc chơi, nắm lấy trái bóng và chơi với những tay khác kém mình tới 30 tuổi lận. Cho dù lạ lẫm với những thứ mới mẻ liên tục xuất hiện trong công việc đến đâu thì lập trình viên lão làng sẽ phải cảm ơn những tên sinh viên mặt non choẹt vừa mới ra trường bởi sự sáng suốt, kinh nghiệm và kiến thức mà họ nhận được thêm.

Đó là cách bạn sẽ không còn cảm thấy lạ lẫm với lập trình, có thêm cơ hội để thành công thay vì ngồi vò đầu bứt tai trước một mớ bòng bóng công nghệ mới.

3. Vứt đi còn tốt hơn là giữ lại

Bạn đã từng nghe tới câu: “Phát triển phần mêm là loại bỏ code thay vì cho thêm code” chưa? Bạn có biết rằng, có những công cụ, kĩ năng, chương trình,… mà lẽ ra bạn nên bỏ từ lâu để không cản trở sự tiến bộ?

Là một tay lập trình viên lão làng, bạn sở hữu một bộ đồ nghề với nhiều kỹ thuật đã được áp dụng thành công nhiều lần, làm nền tảng cho tay nghề của bạn. Đây vừa là một đặc ân, vừa là một điều đáng nguyền rủa.

  5 điều NÊN và KHÔNG NÊN khi review tăng lương mà lập trình viên nào cũng nên biết!
  Mười điều răn dành cho lập trình viên

Lúc nào cũng giữ khư khư những cái thành công cũ kỹ là cách gọi khác của kẻ thù với sự cải tiến. Cách tốt nhất là: Thử. Chỉ khi nào bạn thử những cách khác, bạn mới có thể so sánh được Cái nào tốt hơn? Cái nào dở hơn?… Có thể, những cách làm mới không thành công như cách cũ, và bạn sẽ phải quay trở lại với cách vốn có của mình. Nhưng bạn sẽ chắc chắn với thứ mình đang làm, hơn là nghi ngờ: Liệu nó có thực sự hữu ích hay không?

Lập trình viên “già” nên nhớ rằng “Phát triển phần mêm là loại bỏ code thay vì cho thêm code”

Và tất nhiên, bạn cũng có thể bổ sung vào bộ đồ nghề của mình những thứ công nghệ mới. Như vậy, nghề lập trình cũng là một chuỗi những sự lựa chọn đó chứ. Khám phá từng thứ từng một, thứ nào đáng giữ lại, giữ nào đáng bỏ đi… là một kĩ năng quan trọng những người đã có hàng chục năm kinh nghiệm.

4. Bạn chưa bao giờ già đi cả

Hãy tưởng tượng bạn trở lại tuổi 20, một sinh viên năm 2 phát hiện ra mình yêu và giỏi viết phần mềm. Bạn bè xung quanh bạn, có người bắt đầu vào nghề muộn hơn, có người sớm hơn. Chẳng hạn như John Meyer, anh ta đã có công ty TapMedia với gần 40 ứng dụng trên Apple App Store khi mới 19 tuổi.

Những lập trình viên 19 20 tuổi đó có gì mà lập trình viên 34 40 tuổi như bạn không có? Họ có: Sự không chùn bước và nhiệt huyết vô tận. Nhưng bạn có gì? Bạn có kinh nghiệm, kiến thức và một vài thất bại cho bạn những sự chọn lọc và khôn khéo lựa chọn.

Nếu một người 20 tuổi có thể tốt nghiệp và có một start-up thành công khi họ 25 tuổi, thì chắc chắn bạn sẽ làm nhanh hơn họ, nhờ những điều ở trên. Thành công không chỉ dành cho người trẻ. Đừng quên Arthur Rubenstein, một trong những nghệ sĩ piano vĩ đại nhất thế giới, đã cống hiến 80 năm trời; Julia Child bắt đầu nấu ăn khi đã 40 tuổi còn Roget-người tạo nên logarithmic slide-rule đã tìm ra Roget’s Thesaurus lúc 73 tuổi.

Không quan trọng bạn 34 40 hay 45… thành công trong nghề lập trình luôn ở phía trước.

5. Sức khỏe là một người bạn nghề

Còn nhớ những ngày thức tới 3 4 giờ sáng nghiền cafe ra code không?

Những ngày đó qua rồi. Giờ đây, cơ thể bạn là một người bạn làm ăn, đôi lúc phải thỏa hiệp, đôi lúc phải nhún nhường. Sức khỏe là thứ mà bạn không được phép quên không cho vào kế hoạch làm việc của mình.

Dấu hiệu rất rõ rệt: Cơ bắp bắt đầu nhức mỏi, cân nặng thay đổi 360 độ….và bạn bắt đầu suy nghĩ khác về cuộc sống. Bạn sẽ liên tục bị nhắc nhở, bởi chính mình và người thân, về việc tập luyện thể dục thể thao, ăn uống điều độ và thay đổi lối sống lành mạnh hơn.

Một khi bạn chăm sóc sức khỏe thật tốt, bạn sẽ khiến mọi thứ mà bạn phải đối đầu khi lớn tuổi trở nên dễ dàng hơn. Bạn khỏe mạnh và sự háo hức vô cùng tận với nghề lập trình sẽ vẫn ở bên bạn.

Kết

Hết mình với nghề lập trình ngay cả khi bạn đã qua dốc bên kia của cuộc đời nghĩa là bạn sẽ không bao giờ bị “về vườn”. Bạn sẽ không bao giờ già đi, mà luôn luôn mở đầu óc với những điều mới mẻ. Bạn sẽ không bao giờ già đi khi bạn còn đam mê với lập trình, với những cuốn sách hướng dẫn code dày đặc những chữ. Nhiệt huyết vần được duy trì và sự nghiệp lập trình của bạn sẽ không bao giờ có hồi kết.

TopDev Via Viecbonus

  Thất nghiệp tuổi 35: Khủng hoảng tuổi 30 thực ra được báo trước bởi những cơn buồn ngủ tuổi 25?
  Đến tuổi 24, 25 - bạn sẽ nhận ra những gì mình biết ở tuổi 20 chỉ mới là trailer cuộc đời mà thôi!

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Thị trường Ecommerce Vietnam – Cùng “zoom in” những biến chuyển mới

Thị trường E-commerce tại Việt Nam chưa bao giờ sôi động hơn với những con số biết nói. Theo số liệu mới nhất từ Cục Thương mại điện tử và Kinh tế số phát hành vào cuối tháng 9/2018, doanh thu thương mại điện tử trong năm 2017 của Việt Nam đã đạt 6,2 tỉ USD, tăng trưởng 24% so với cùng kỳ năm ngoái.

Cũng chính vì vậy, Thương mại điện tử Việt Nam được nhiều chuyên gia đầu tư xem và một thị trường đầy hấp dẫn với quy mô dự đoán có thể đạt 10 tỷ USD vào năm 2020. Để triển khai một chiến dịch marketing hoặc bán hàng, luôn có những nền tảng giúp bạn tiếp cận người dùng cuối chưa bao giờ dễ dàng và tiện dụng như ngày nay chỉ với vài cú click chuột.

Thương mại điện tử Việt Nam phát triển với tốc độ cao nhờ các công nghệ và tiện ích mà hệ sinh thái này mang lại. Ngoài những doanh nghiệp được thể hiện ở infographic này, có thể nhắc đến những cái tên cũng khá nổi trội trong thời gian gần đây: Ecomobi, iFind, Zody, Jamja, Accesstrade, Massoffer, Wisepass, Websosanh…

Sự khốc liệt của thị trường E-Commerce Việt Nam 

Song song với việc được đánh giá đầy tiềm năng phát triển, thị trường thương mại điện tử Việt Nam cũng vô cùng khắc nghiệt. Không ít công ty phải nói lời chia tay để nhường lại sân chơi cho những doanh nghiệp có nguồn vốn đầu tư “khủng”.

Trước khi dừng hoạt động, tên tuổi lớn Beyeu.com – một dự án của Webtretho được IDG Ventures Việt Nam đầu tư – còn ngậm ngùi để lại lời nhắn: “Kinh doanh thương mại điện tử cần rất nhiều tiền. Nhiều doanh nghiệp quyết định sẽ dừng việc đốt tiền. Chúc may mắn cho những người còn lại”.

Ông Trần Trọng Tuyến – Tổng thư ký hiệp hội TMĐT Việt Nam (VECOM) dự đoán cuộc chiến “đốt tiền” trên thị trường TMĐT năm 2022 sẽ tiếp tục diễn ra gay cấn.

“Thị trường TMĐT Việt Nam năm 2022 sẽ tiếp tục là một năm tăng tốc và có nhiều cuộc đua gay cấn hơn so với năm 2021. Không ai biết trước sẽ có thêm một hay một vài cái tên mới xuất hiện hay ra đi nhưng chắc chắn cuộc chiến ‘đốt tiền’ giữa các công ty vẫn sẽ tiếp diễn”  ông Tuyến nói.

***

Vừa qua TopDev đã công bố Báo cáo Vietnam IT Landscape đem đến cái nhìn toàn cảnh về các ứng dụng công nghệ góp phần thay đổi cuộc sống đến từ các công ty công nghệ tại Việt Nam. Những số liệu và thông tin dùng trong bản báo cáo này được cung cấp từ các chuyên gia, diễn giả, nhà nghiên cứu, doanh nghiệp tham gia các hoạt động employer branding, networking và marketing tại Việt Nam, cũng như những thông tin được lựa chọn và tổng hợp từ dữ liệu của TopDev.

Thị trường AI Vietnam 2023 – Những tên tuổi đưa Việt Nam lên bản đồ AI thế giới

Cứ thử nhắc tới “Artificial Intelligence”, “Machine Learning”, hay “neural nets” cho bất kì nhóm software engineers nào mà bạn gặp, bảo đảm bạn sẽ nghe một đống chuyện từ họ. Trong thời đại này, tất cả các ông lớn về công đều sẵn sàng chi mạnh tay để có thể tối ưu hóa những công nghệ đấy vào sản phẩm của họ. Kể cả những cá nhân software engineer trẻ cũng cố gắng tham gia vào mỏ vàng trên.

Artificial Intelligence thực chất chính là cách ta tái tạo và mô phỏng theo trí não của con người. Mục tiêu là để cho ra đời những bộ máy có khả năng nhận ra những chi tiết mà chỉ có con người mới hiểu được như cảm xúc. Và đó không phải là một điều dễ dàng…

Image result for AI

Tình hình phát triển AI của Việt Nam như thế nào?

Đây là một câu hỏi khó!

Bởi không như San Francisco hay Montreal, AI của vẫn chưa thật sự được phát triển hết tiềm năng của nó. Chúng ta vẫn còn đang đi lên. Với sự phát triển của các platform (OpenAI, OpenCV, TensorFlow, Caffe…), vấn đề về thuật toán không còn quá khó khăn, phần còn lại là có đủ dữ liệu (hoặc là lớn, hoặc là chất lượng) để AI phát huy tác dụng. Các doanh nghiệp liệt kê trong Báo cáo đây đều đã có những sản phẩm đi vào cuộc sống, nhận được vốn lớn hoặc có doanh thu cao. Có đến hơn 73% công ty công nghệ đang có ý định ứng dụng AI vào các sản phẩm của mình. Điều này cũng khiến cho nhu cầu về các kỹ sư AI hiện cũng đang ở mức báo động.

Trong tương lai không xa, biết đâu AI sẽ giúp cải thiện chất lượng dịch vụ tại Việt Nam. Ví dụ như giờ bạn đã có thể khám online, có một AI chuyên theo dõi sức khỏe và chăm sóc nhắc nhở bạn hay việc gửi hình X-quang để cho nó phỏng đoán bệnh tình mà không hề thua kém một bác sĩ thực thụ…

Xem thêm các vị trí tuyển dụng lập trình AI tại TopDev