Home Blog Page 202

Quản lý các Laravel route gọn hơn và dễ dàng hơn

Laravel 5.5 cung cấp 4 route file api.phpchannels.phpconsole.php và web.php.

Route web.php dành cho giao diện web, api.php thì cho các API, console.php dành cho việc đăng kí artisan command còn channels.php dành cho mục đích broadcasting.

Chúng ta đều đã biết những thứ này, và chẳng có gì mới mẻ cả !

Bài post giúp được gì?

Nếu bạn đang làm một app nhỏ và không có quá nhiều route để hoàn thiện app thì web.php là đủ. Nhưng nếu như bạn có khoảng hơn 100 routes, ví dụ để dành cho Admin, cho khách hàng, cho các loại user (liên quan đến auth) và các route phổ biến có sẵn cho mọi visitor thì việc giữ tất cả các route với nhau vào 1 route file đơn sẽ khiến bạn không quản lý nổi các route của mình nữa.

Dưới đây là một giải pháp nhanh gọn lẹ dành cho bạn

Giả sử như chúng ta có 3 route :

  1. Cho cấp admin
  2. Cho cấp user [ có thể signup, login, quản lý profile v.v ]
  3. Các public route [ home, blog, contact page v.v ]

Bây giờ chúng ta sẽ tạo 2 thư mục trong routes

Các route directory đã đổi trong laravel 5.5

 routes/web —  các route liên quan đến đường dẫn front-end chẳng hạn

 routes/api— các route liên quan đến API

Chúng ta vẫn để nguyên các route channels.phpconsole.php bên ngoài.

Tạo một file mới như admin.php trong folder web sẽ chứa các route liên quan đến admin.

Tạo user.php trong đó đại diện cho mọi route liên quan đến cấp user.

Phần mẹo tối ưu

Mở Providers/RouteServiceProvider.php—  file này phụ trách khởi tạo tất cả các route của app. Check method map() để hiểu được cách nó nhận diện các route file khác nhau.

Check lại các method mapApiRoutes() và mapWebRoutes(), chúng chỉ trỏ vào đường dẫn mặc định của web.php và api.php tuy nhiên chúng ta đã move nó vào thư mục khác nên vì thế hãy thay đổi lại bằng cách khai báo:

Thay đổi base_path() của 2 method trên

Bây giờ hãy tạo method mới cho admin.php & user.php trong RouteServiceProvider.php
<?php
/**
* Define the admin specific "web" routes for the application.
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapAdminWebRoutes()
{
    Route::middleware('web')
        ->namespace($this->namespace)
        ->prefix('admin')
        ->group(base_path('routes/web/admin.php'));
}
/**
* Define the user specific "web" routes for the application.
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapUserWebRoutes()
{
    Route::middleware('web')
        ->namespace($this->namespace)
        ->prefix('user')
        ->group(base_path('routes/web/user.php'));

Tạo các method mới cho cả hai loại route

Hãy xem thử cách chúng tôi set prefix, controller namespace và middleware! Bạn có thể customize chúng trong mỗi app của mình.

Chỉ cần call chúng từ method map() của RouteServiceProvider.

<?php
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
    $this->mapApiRoutes();  //for api routes
    $this->mapWebRoutes();  //for our common web routes
    $this->mapAdminWebRoutes();  //for the admin web routes
    $this->mapUserWebRoutes();  //for user web routes
}

Update lần lượt các method map()

Bước cuối cùng

Mở routes/web/user.php và add thêm một số test route

<?php
/*
|--------------------------------------------------------------------------
| Web Routes for user type
|--------------------------------------------------------------------------
|
 */
Route::get('/test', function () {
    return response('this is a test route', 200);
});

Trỏ về your-laravel.dev/user/test và bạn đã hoàn thành rồi.

Vậy là bạn đã tách các route khác nhau của app mình thành công rồi, đơn giản và dễ quản lý.

Tham khảo thêm các vị trí tuyển dụng Laravel lương cao

  Các Laravel route tips giúp bạn cải thiện routing

[Python cơ bản thường dùng trong công việc] Phần 6 : Xử lý hình ảnh

Sử dụng thư viện Pillow (PIL Fork) để tiến hành các thao tác xử lý hình ảnh đơn giản như resize, crop, rotate…

6.1. Cài đặt PIL

Vào trang web sau để download / cài đặt package PIL cho python của bạn http://pillow.readthedocs.org/en/latest/installation.html

Sau khi cài đặt thì có thể sử dụng các module trong package IPL

from PIL import Image

6.2. Mở file

from PIL import Image
im = Image.open("photo.jpg")

Sau khi mở file hình thành công thì có thể thao tác trên đối tượng im .

Tuyển dụng python từ các công ty hot

6.3. Ghi file

Từ đối tượng Image có thể lưu file xuống máy tính bằng phương thức save(path, type) . Ví dụ:

im.save('photo_new.jpg', 'JPEG')

6.4. Tạo thumbnail

Sử dụng phương thức thumbnail như sau:

from PIL import Image
im = Image.open('photo.jpg')
im.thumbnail((100, 100))
im.save('photo_thumbnail.jpg', 'JPEG')

thumbnail không trả về image mới mà thực hiện trên object image đang gọi.

6.5. Các thao tác xử lý hình ảnh

Tham khảo thêm thư viện PIL tại:

http://pillow.readthedocs.org/en/latest/index.html

[Python cơ bản thường dùng trong công việc] Phần 5 : thao tác trên tập tin và thư mục

Nội dung chương này sẽ hướng dẫn các thao tác liên quan đến tập tin và thư mục.

5.1. Tập tin (File)

5.1.1. Mở file

Trước khi muốn đọc hoặc ghi file, bạn cần có thao tác mở file theo cú pháp:

fh = open(filepath, mode)

Trong đó, filepath là đường dẫn của file sẽ mở và mode là chế độ để mở. Có một số chế độ là:

  • r : mở để đọc nội dung (mặc định)
  • w : mở để ghi nội dung
  • a : mở để ghi thêm nội dung vào cuối file.
  • r+ : mở để đọc và ghi. Con trỏ nằm ở đầu file.
  • w+ : mở để đọc và ghi. Ghi đè nếu file đã tồn tại, nếu file chưa tồn tại thì tạo file mới để ghi.
  • a+ : mở để đọc và thêm vào cuối file. Con trỏ nằm ở cuối file. Nếu file chưa tồn tại thì tạo file mới để ghi.

Mặc định là mở file text, nếu muốn mở file nhị phân (binary) thì thêm b , ví dụ: rb , wb , ab , rb+ , wb+ , ab+ .

Ví dụ:

f1 = open('test.txt', 'r')
f2 = open('access_log', 'a+')

Sau khi gọi hàm open() thành công thì sẽ trả về một object có các thuộc tính:

  • closed : True nếu file đã đóng
  • mode : chế độ khi mở file
  • name : tên của file
  • softspace : cờ đánh dấu softspace khi dùng với hàm
  • print

Việc làm python lương cạnh tranh

5.1.2. Đọc nội dung từ file

Sau khi file đã mở ở chế độ đọc thì gọi phương thức read([count]) để trả về toàn bộ nội dung của file. Ví dụ:

f1 = open('test.txt', 'r')
data = f1.read();

Hàm read() có nhận một tham số là số lượng byte muốn đọc. Nếu không truyền vào thì sẽ đọc hết nội dung của file. Ví dụ:

f2 = open('log.txt', 'r')
buffdata = f2.read(1024)

5.1.3. Ghi nội dung vào file

Nếu file được mở ở chế độ có thể ghi thì có thể dùng phương thức write() để ghi một nội dung vào file. Ví dụ:

f2 = open('access_log', 'a+')
f2.write('Attack detected')

5.1.4. Đóng file đã mở

Sau khi hoàn tất các thao tác đọc ghi file thì gọi phương thức close() để đóng file đã mở. Ví dụ:

f1.close()
f2.close()

5.1.5. Đổi tên file

Sử dụng phương thức os.rename(old, new) để đổi tên một file. Ví dụ:

import os
os.rename('test.txt', 'test_new.txt')

5.1.6. Xóa file

Sử dụng phương thức os.remove(file) để xóa một file khỏi hệ thống. Ví dụ:

import os
os.remove('test.txt')

5.2. Thư mục (Directory)

5.2.1. Tạo thư mục

Sử dụng phương thức os.mkdir(dir) để tạo thư mục. Ví dụ:

import os
os.mkdir('test')

5.2.2. Xóa thư mục

Sử dụng phương thức os.rmdir(dir) để xóa một thư mục. Ví dụ:

import os
os.rmdir('test')

5.2.3. Đọc nội dung thư mục

Sử dụng phương thức os.listdir(dir) để lấy danh sách tập tin, thư mục của thư mục dir . Khi gọi sẽ trả về một mảng danh sách các tập tin, thư mục. Ví dụ:

import os
allfiles = os.listdir('/root/downloads')
print allfiles

5.3. Module os

Module os là một module có nhiều phương thức hữu ích trong việc làm việc với các file và directory, như:

  • os.chdir(path) : đổi thư mục hiện hành
  • os.getcwd() : trả về thư mục hiện hành
  • os.chmod(path, mode) : CHMOD một đường dẫn
  • os.chown(path, uid, gid) : CHOWN một đường dẫn
  • os.makedirs(path[, mode]) : tạo đường dẫn (có recursive)
  • os.removedirs(path) : xóa một đường dẫn (có recursive)

Xem thêm tại https://docs.python.org/2/library/os.html

5.4. Module os.path

Module os.path hỗ trợ các phương thức giúp thao tác nhanh chóng và thuận tiện hơn trên đường dẫn.

  • os.path.exists(path) : kiểm tra 1 đường dẫn có tồn tại hay không
  • os.path.getsize(path) : lấy file size (byte)
  • os.path.isfile(path) : kiểm tra xem có phải là một file thông thường
  • os.path.isdir(path) : kiểm tra xem có phải là một thư mục
  • os.path.dirname(path) : trả về tên thư mục của path
  • os.path.getatime(path) : trả về thời gian truy cập mới nhất
  • os.path.getmtime(path) : trả về thời gian chỉnh sửa cuối cùng
  • os.path.getctime(path) : trả về thời gian chỉnh sửa cuối của metadata trên một số hệ thống. Hoặc trả về thời gian tạo file trên Windows.

Xem thêm tại https://docs.python.org/2/library/os.path.html

Azure và tất cả những gì bạn cần biết

Azure là một giải pháp cloud tích hợp toàn diện được sử dụng để xây dựng, triển khai và quản lý các ứng dụng thông qua mạng lưới trung tâm dữ liệu toàn cầu của Microsoft. Các công cụ tích hợp, DevOps và một cộng đồng hỗ trợ bạn xây dựng hiệu quả từ các ứng dụng di động đơn giản đến các giải pháp có quy mô lớn.

Azure công cụ hỗ trợ tuyệt vời dành cho developers!

Azure giúp đẩy nhanh quá trình đưa ứng dụng của bạn ra thị trường nhanh hơn, bằng các công cụ tích hợp, từ mobile DevOps đến serveless computing. Bạn hoàn toàn có thể xây dựng theo cách bạn muốn, sử dụng các công cụ và công nghệ mã nguồn mở mà bạn đã biết. Azure hỗ trợ một loạt các hệ điều hành, ngôn ngữ lập trình, frameworks, cơ sở dữ liệu và các thiết bị. Cụ thể:

  • Liên tục đổi mới và cung cấp các ứng dụng chất lượng cao.
  • Cung cấp trải nghiệm Cross-Device với sự hỗ trợ cho tất cả các nền tảng di động.
  • Chạy bất kỳ Stack- Linux-Based và Windows-Based và sử dụng những tính năng tiên tiến như Kubernetes Cluster trong Azure Container Service.

Tham khảo thêm: Các vị trí tuyển dụng Azure lương cao tại Topdev

Azure là hybrid cloud duy nhất có sự nhất quán

Bạn có thể triển khai Azure bất cứ nơi nào bạn muốn. Kết nối dữ liệu và ứng dụng trong cloud và on-premise để tối đa tính di động cũng như khoản đầu tư của bạn. Azure mang lại sự nhất quán trong việc phát triển ứng dụng, quản lý và bảo mật, quản lý nhận dạng và phát triển nền tảng dữ liệu.

  • Mở rộng Azure on-prem và xây dựng ứng dụng hybrid, sáng tạo với Azure Stack.
  • Kết nối dữ liệu và ứng dụng on- prem để khắc phục sự phức tạp và tối ưu hóa assets hiện có của bạn.
  • Phân phối và phân tích dữ liệu liền mạch trên cloud và on-premise.

Azure – Cloud cho việc xây dựng các ứng dụng thông minh

Sử dụng Azure để tạo ra các ứng dụng thông minh, data-driven. Từ nhận dạng hình ảnh đến bot service, hãy tận dụng những dịch vụ dữ liệu Azure và trí thông minh nhân tạo có sẵn để tạo ra những trải nghiệm mới có quy mô, hỗ trợ Deep Learning, mô phỏng HPC và phân tích thời gian thực trên bất kỳ hình dạng và kích thước dữ liệu nào.

  • Phát triển ứng dụng đột phá với AI tích hợp.
  • Xây dựng và triển khai các mô hình AI tích hợp khả năng mở rộng, trên bất kỳ dữ liệu nào.
  • Kết hợp tốt nhất của Microsoft và dữ liệu mã nguồn mở và công nghệ AI.

Azure – cloud nơi bạn hoàn toàn có thể đặt niềm tin

90% của Fortune 500 (bảng xếp hạng 500 công ty lớn nhất nước Mỹ) tin tưởng Microsoft Cloud. Hãy cùng họ  tận hưởng sự an toàn của Microsoft, sự riêng tư, tính minh bạch và tính tuân thủ cao nhất có thể so với bất kỳ nhà cung cấp dịch vụ cloud nào.

  • Sở hữu quy mô lớn trên một mạng lưới toàn cầu của các trung tâm dữ liệu do Microsoft quản lý tại 44 khu vực công bố.
  • Phát hiện và giảm thiểu các mối đe dọa với sự quản lý tài nguyên từ trung tâm Azure thông qua Azure Security Center.
  • Đạt chuẩn đám mây tuân thủ toàn diện nhất (dịch vụ tuân thủ 70+) và được công nhận là dịch vụ cloud đáng tin cậy nhất đối với các tổ chức của chính phủ Hoa Kỳ.

Sự kiện AZURE SUMMIT 2018 sẽ chia sẻ với các bạn về cách thức vận hành và tối ưu hóa của doanh nghiệp thông qua công nghệ điện toán đám mây, đem đến những ngỡ ngàng trước sự chuyển biến và tương lai của “công nghệ không dây”. Hãy để Microsoft đem đến cho bạn cơ hội cùng thảo luận với những chuyên gia đầu ngành, nhằm xây dựng môi trường công nghệ hiện đại và an toàn cũng như phát triển thế giới số hóa bền vững.

Microsoft dành tặng 100 Azure Pass trị giá $100 cho 100 người đến sự kiện sớm nhất.

[Python cơ bản thường dùng trong công việc] Phần 4 : Class

Lập trình hướng đối tượng là một khái niệm không thể thiếu trong hầu hết các ngôn ngữ thông dụng hiện nay. Python cũng hỗ trợ lập trình hướng đối tượng với các khái niệm Class, Object, Override…

Tìm việc làm python lương cao cho bạn

4.1. Khai báo một Class

Khai báo một class theo cú pháp sau:

class myclass([parentclass]):
    assignments
    def __init__(self):
        statements
    def method():
        statements
    def method2():
        statements

Ví dụ một class:

class animal():
      name = ''
      age = 0
      def __init__(self, name = '', age = 0):
          self.name = name
          self.age = age
      def show(self):
          print 'My name is ', self.name 
      def run(self):
          print 'Animal is running...' 
      def go(self):
          print 'Animal is going...'

class dog(animal):
      def run(self):
      print 'Dog is running...'

myanimal = animal()
myanimal.show()
myanimal.run()
myanimal.go()
mydog = dog('Lucy')
mydog.show()
mydog.run()
mydog.go()

Sau khi thực thi sẽ cho ra kết quả:

My Name is
Animal is running...
Animal is going...
My Name is Lucy
Dog is running...
Animal is going...

Trong ví dụ trên thì:

  • animal dog là 2 class. Trong đó class dog kế thừa từ class cha là class animal  nên sẽ có các phương thức của class animal.
  • name age là thuộc tính (Attribute) của class.
  • Phương thức __init__(self) là hàm tạo của class. Hàm này sẽ được gọi mỗi khi có một object mới được tạo (từ một class), gọi là quá trình tạo instance.
  • show() , run() go() là 2 phương thức của 2 class. Khi khai báo phương thức có kèm tham số self dùng để truy cập ngược lại object đang gọi. Lúc gọi phương thức thì không cần truyền tham số này.
  • Phương thức run() của class dog gọi là override của phương thức run() của class animal .

[Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module

Tất cả ví dụ cho đến thời điểm này đều được thực thi trong command line hoặc từ một file python .py . Tuy nhiên, đối với các ứng dụng lớn, có nhiều chức năng thì phân chia nhỏ dự án thành các file khác nhau sẽ giúp dễ bảo trì và tái sử dụng các thành phần đã thiết kế.

Chương này sẽ giúp bạn thiết kế các tính năng theo mô hình các module và khi cần thì sẽ gọi file tương ứng và sử dụng.

Việc làm python mới ra trường cho bạn

3.1. Các loại module / thư viện

Có 3 loại module thường thấy là:

  1. Viết bằng Python: có phần mở rộng là .py
  2. Các thư viện liên kết động: có phần mở rộng là .dll.pyd , .so , .sl ,…
  3. C-Module liên kết với trình phiên dịch.
  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 3 : Phân chia module”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 4 : Class”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 5 : thao tác trên tập tin và thư mục”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 6 : Xử lý hình ảnh”]

3.2. Đường dẫn tìm để load module

Để tải một module vào script của bạn, sử dụng cú pháp đơn giản:

import modulename

khi gặp câu lệnh trên thì trình biên dịch sẽ tiến hành tìm kiếm file module tương ứng theo thứ tự thư mục sau:

  1. Thư mục hiện hành mà script đang gọi
  2. Các thư mục trong PYTHONPATH (nếu có set)
  3. Các thư mục cài đặt chuẩn trên Linux/Unix..

Có thể biết được đường dẫn mà một module đã được load bằng đoạn code dưới đây:

import math
math.__file__
(Ví dụ trả về '/usr/lib/python3.6/lib-dynload/math. so')

import random
random.__file__
(Ví dụ trả về '/usr/lib/python3.6/random.pyc')

3.3. Lấy danh sách thuộc tính và phương thức của một module

Để lấy được danh sách các thuộc tính và phương thức mà module hỗ trợ, sử dụng hàm dir(modulename) . Ví dụ:

dir(math)
['__doc__', '__file__', '__name__', '__package__', 
'acos', 'acosh', 'asin', 'asinh', 'atan', 
'atan2', 'atanh', 'ceil', 'copysign', 'cos', 
'cosh', 'degree s', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'fa ctorial', 'floor', 'fmod', 'frexp', 'fsum', 
'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 
'lo g', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians ', 
'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

Có thể gọi hàm dir() không truyền tham số để lấy các thuộc tính và phương thức của scope hiện tại đang thực thi.

3.4. Cách khai báo và sử dụng module

Giả sử bạn tạo một file python mymath.py có nội dung như sau:

def cong(a, b):
  return a + b
def tru(a, b):
  return a - b
def nhan(a, b):
  return a * b

Sau đó, tạo một file có tên myexample.py , trong cùng thư mục với file mymath.py vừa tạo ở trên, có nội dung như sau:

import mymath

num1 = 1
num2 = 2

print 'Tong hai so la: ', mymath.cong(num1, num2)

Vào command line, thực hiện gọi file myexample như sau:

$ python myexample.py

Sau khi thực hiện sẽ hiển thị lên màn hình là

Tong hai so la: 3

3.5. Package module

Có thể gom nhiều module .py vào một thư mục và tên thư mục là tên của package và tạo một file __init__.py  trong thư mục này.

Như vậy, cấu trúc thư của một package sẽ như sau:

|-- mypack
|   |-- __init__.py
|   |-- mymodule1.py
|   |-- mymodule2.py
|

Có thể sử dụng mymodule1 theo cú pháp import sau:

import mypack.mymodule1

hoặc

import mypack.mymodule1 as mymodule1

hoặc

import mypack.mymodule1 as mod

Khi sử dụng một module thuộc một package thì các lệnh trong file __init__.py sẽ được thực hiện trước. Thông thường thì file __init__.py sẽ rỗng.

Có thể tạo các subpackage bên trong một package theo đúng cấu trúc thư mục, có file __init__.py . Ví dụ:

import mypack.mysubpack.mysubsubpack.module
  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 2 : Cú pháp thông dụng”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 4 : Class”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 5 : thao tác trên tập tin và thư mục”]

  [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Phần 6 : Xử lý hình ảnh”]

Một mũi tên trúng hai con nhạn – công nghệ điện toán MICROSOFT AZURE

“Cloud Computing đã và đang là một trong những công nghệ cốt lõi mà các nhà tiên phong về chuyển đổi số quan tâm trong kỷ nguyên Công nghệ 4.0. Với điện toán đám mây, các doanh nghiệp có thể truy cập cơ sở hạ tầng bậc nhất với chi phí vô cùng ưu đãi, so với việc tự đầu tư từ con người, thời gian, và công sức để xây dựng server của riêng mình. Trong số những đám mây khổng lồ, không thể nào không thể kể đến Azure của Microsoft. Đây là dịch vụ điện toàn đám mây được 90% công ty trong top Foturne 500 lựa chọn, một phần vì sự cam kết cao nhất về bảo mật và an ninh mạng.

AZURE SUMMIT 2018 sẽ đem đến cho các bạn một cái nhìn tổng quan nhất về Cloud Computing và những điểm nổi trội của Azure, cũng như các ứng dụng thực tiễn của nó vào một số khía cạnh thông qua các nhóm chủ đề nổi trội :

  • Dữ liệu & AI  (Data & Artifical Intelligence)
  • Giải phóng sức mạnh của dữ liệu bằng nền tảng dữ liệu của Microsoft
  • Sáng tạo đổi mới nhanh hơn với dịch vụ dữ liệu của Azure
  • Dân chủ hoá Trí tuệ Nhân tạo (AI)

Topic :Cơ sở hạ tầng (Infrastructure) 

Sử dụng công nghệ đám mây theo cách của bạn với Azure Stack

Xây dựng và lưu trữ các ứng dụng nguồn mở của bạn trên Azure (StorSimple OMS)

Giải pháp SAP trên nền tảng Microsoft Azure

Đến với sự kiện AZURE SUMMIT 2018, các diễn giả sẽ chia sẻ với các bạn về cách thức vận hành và tối ưu hóa của doanh nghiệp thông qua công nghệ điện toán đám mây, đem đến những ngỡ ngàng trước sự chuyển biến và tương lai của “công nghệ không dây”. Hãy để Microsoft đem đến cho bạn cơ hội cùng thảo luận với những chuyên gia đầu ngành, nhằm xây dựng môi trường công nghệ hiện đại và an toàn cũng như phát triển thế giới số hóa bền vững.

Microsoft dành tặng 100 Azure Pass trị giá $100 cho 100 người đến sự kiện sớm nhất.

[Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng

[Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng

2.1. Biến số

Khai báo biến bằng một câu lệnh gán.

a = 1

bạn có thể gán nhiều loại giá trị (số, chuỗi) cho một biến.

a = 1
a = 'Hello World'
= [1, 2, 3]
= [1.2, 'Hello', 'W', 2]

2.2. Toán tử số học

Python cũng hỗ trợ một số toán tử toán học thông dụng như:

+ phép cộng

- phép trừ

* phép nhân

/ phép chia

% phép chia lấy dư (modulo)

Việc làm lập trình python lương up to 20M

2.3. Boolean và Toán tử logic

Giá trị đúng và sai tương ứng là TrueFalse .

not để đảo giá trị.

and phép tính logic và (AND).

or phép tính logic hoặc (OR).

Một số phép so sánh thông thường như < (bé hơn), <= (bé hơn hoặc bằng), > (lớn hơn), >= (lớn hơn hoặc bằng), == (bằng), != (khác) để so sánh 2 giá trị.

Hỗ trợ dạng so sánh kép như:

x = 2
1 < x < 3     # True
10 < x < 20   # False
3 > x <= 2    # True
2 == x < 4    # True

Toán tử kiểm tra phần tử trong một tập hợp: – in kiểm tra có tồn tại – not in kiểm không tồn tại

'good' in 'this is a greate example' # False
'good' not in 'this is a greate example' # True

2.4. Cấu trúc điều khiển

Python hỗ trợ một số cấu trúc điều khiển thông dụng. Hầu hết các cấu trúc điều khiển đều dựa vào thụt đầu dòng (indention) để tạo thành một block xử lý, thay vì sử dụng { } như các ngôn ngữ khác (PHP, Javascript)

2.4.1. If…elif…else

if condition1 :
indentedStatementBlockForTrueCondition1 elif condition2 :
indentedStatementBlockForFirstTrueCondition2 elif condition3 :
indentedStatementBlockForFirstTrueCondition3 elif condition4 :
indentedStatementBlockForFirstTrueCondition4
else:
indentedStatementBlockForEachConditionFalse

2.4.2. Switch…case

Python không có cấu trúc switchcase

2.4.3. For…in

for iterating_var in sequence:
statements(s)

Ví dụ:

for letter in 'Python':             #First Example
    print 'Current Letter :', letter
fruits = ['banana', 'apple','mango']
for fruit in fruits:               #Second Example
    print 'Current fruit :', fruit
print "Good bye!"

Kết quả hiển thị của ví dụ trên:

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!

2.4.4. While

while expression:
statement(s)

Ví dụ:

count = 0
while (count < 9):
print 'The count is:', count count = count + 1
print "Good bye!"

Kết quả hiển thị của ví dụ trên:

The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!
  Quy tắc đặt tên biến trong Python đúng chuẩn 2024

2.5. Hàm

Khai báo hàm theo cú pháp:

def functionname(param, param2,..):
statements(s)

Hàm nếu không trả dữ liệu thì mặc định sẽ trả về giá trị None. Ví dụ khai báo hàm tính và trả về giá trị tổng của 2 tham số đầu vào:

def sum(a, b):
return (a+b)

Cách gọi hàm:

sum(1, 2)
(trả về giá trị là 3)

Hàm có hỗ trợ giá trị mặc định cho tham số khi không truyền vào. Ví dụ hàm sau:

def plus(c, d = 10):
return (c+d)

Nếu gọi hàm trên như sau:

plus(2)
(kết quả trả về là 12)

Một khác biệt trong cách gọi hàm của Python so với PHP là chúng ta có thể thay đổi thứ tự tham số truyền vào bằng cách đặt tên tham số khi gọi hàm. Ví dụ ta có thể gọi hàm sum(a,b) ở ví dụ trên bằng cách truyền tham số b trước a như sau:

sum(b = 1, a = 10)

2.6. Xử lý chuỗi

Một chuỗi có thể khai báo bằng dấu nháy đôi " hoặc đơn ' . Ví dụ các chuỗi sau:

str1 = "Hello"
str2 = 'world'

Có thể truy xuất từng ký tự trong một chuỗi theo hình thức index, ví dụ: str1[0] , str1[1]

Có thể sử dụng 3 dấu nháy (đôi hoặc đơn) để khai báo chuỗi trên nhiều dòng. Ví dụ:

paragraph = """This is line 1
This is line 2
This is line 3"""

2.6.1. Nối chuỗi

Có thể tạo một chuỗi dài từ việc nối các chuỗi lại theo cú pháp:

str = str1 + " " + str2

2.6.2. Trích xuất chuỗi con

Có thể tạo các chuỗi con thông qua toán tử lấy khoản [start:end] (range). Mặc định start là từ vị trí đầu chuỗi ( 0 )end là đến vị trí cuối chuỗi. Ví dụ:

str = 'Hello world'
print str[0:4]
(Hiển thị "Hell")
print str[:4]
(Hiển thị "Hell")
print str[-3:]
(Hiển thị "rld")
print str[6:-3]
(Hiển thị "wo")

2.6.3. Lấy độ dài của chuỗi

Sử dụng hàm len(...) để trả về độ dài của chuỗi. Ví dụ:

count = len("Hello world")
(count có giá trị 11)

2.6.4. Tìm & thay thế nội dung

Có thể tìm và thay thế trong chuỗi bằng cách gọi phương thức replace(search, replace[, max]) của một chuỗi. Ví dụ:

str = 'Hello world'
newstr = str.replace('Hello', 'Bye')
print newstr
(Sẽ hiển thị chuỗi "Bye world" trên màn hình)

2.6.5. Tìm vị trí chuỗi con

Có thể tìm vị trí của một chuỗi con trong chuỗi lớn bằng cách gọi phương thức find(str, beg=0 end=len(string)) . Bắt đầu là vị trí 0 , nếu không tìm ra thì trả về -1 . Ví dụ:

str = 'Hello world'
print str.find('world')
(hiển thị 6)
print str.find('Bye');
(hiển thị -1)

Hàm find() sẽ tìm theo thứ tự từ trái qua phải của chuỗi, tức là từ lần xuất hiện đầu tiên. Có thể dùng hàm rfind() để tìm theo vị trí từ cuối chuỗi về phía trước.

2.6.6. Tách chuỗi

Có thể tách chuỗi dựa theo một chuỗi delimeter bằng cách gọi phương thức split(str="", num=string.count(str)) .

Ví dụ:

str = 'Hello world'
print str.split(' ')
(Trả về một mảng có 2 phần tử là 2 chuỗi "Hello" và "world")

Có thể sử dụng hàm splitlines() để tách chuỗi theo từng hàng và loại bỏ ký tự NEWLINE.

2.6.7. Trim ký tự khoẳng trắng

Có thể loại bỏ các ký tự (mặc định là ký tự khoảng trắng) trước và sau một chuỗi, bằng cách gọi các phương thức sau:

strip([chars]) : loại bỏ trước và sau chuỗi

lstrip([chars]) : loại bỏ phía trước chuỗi

rstrip([chars]) : loại bỏ phía sau chuỗi

2.6.8. Một số hàm xử lý chuỗi

isnumeric() : Kiểm tra một chuỗi có phải là chuỗi số

lower() : Chuyển chuỗi hết thành chữ thường

upper() : Chuyển chuỗi hết thành chữ HOA

  Một số đoạn code Python phổ biến bạn nên thuộc lòng

2.7. List

List trong Python là cấu trúc mảng và các phần tử có index có thứ tự. Không như PHP, key của một mảng có thể vừa là số, vừa là chuỗi (associated array). Trong Python, muốn tạo một mảng có key là chuỗi thì sẽ sử dụng cấu trúc Dictionary (phần tiếp tiếp). Trong phần này, chúng ta sẽ nói đến List. Một List được khai báo như mảng trong JSON. Sử dụng [..] để khai báo một mảng.

Ví dụ:

numbers = [1, 2, 3, 4, 5]
names = ['Marry', 'Peter']

Có thể truy xuất từng phần tử của mảng bằng index, phần tử đầu tiên có thứ tự là 0 . Ví dụ:

print numbers[0]
(Hiển thị 1)
print numbers[-3]
(Hiển thị 3)
print names[1]
(Hiển thị 'Peter')

Để biết được số lượng phần tử của 1 List, có thể sử dụng hàm len(array) để lấy số lượng phần tử của mảng tham số truyền vào.

2.7.1. Kiểm tra sự tồn tại của một phần tử

2.7.1.1. Kiểm tra theo Index

Trong nhiều trường hợp bạn muốn truy xuất một phần tử bất kỳ (dựa vào index) của mảng thì nếu truy xuất đến một phần tử không tồn tại thì ứng dụng sẽ báo lỗi. Do đó, trước khi truy xuất một phần tử, bạn cần kiểm tra xem phần tử này đã tồn tại hay chưa. Hiện tại python không hỗ trợ hàm nào để kiểm tra sự tồn tại của một phần tử trong mảng.

Có 2 cách thường thấy để kiểm tra đó là “Look before you leap” (LBYL) và “Easier to ask forgiveness than permission” (EAFP).

Ví dụ về “Look before you leap (LBYL)”:

if index < len(array):
array[index]
else:
# handle this

Ví dụ về “Easier to ask forgiveness than permission” (EAFP).

try:
array[index]
except IndexError:
# handle this

2.7.1.2. Kiểm tra theo giá trị

Để kiểm tra một giá trị có tồn tại / không tồn tại trong mảng hay không thì có thể sử dụng toán tử in / not in . Ví dụ:

mylist = ['a', 'b', 'c']
print 'a' in mylist
(Hiển thị True)
print 'b' not in mylist
(Hiển thị False)

2.7.2. Trích xuất mảng con

Tương tự như chuỗi, tó thể tạo các mảng con thông qua toán tử lấy khoản [start:end] (range). Mặc định start là từ vị trí đầu chuỗi ( 0 ) và end là đến vị trí cuối chuỗi. Ví dụ:

numbers = ['a', 'b', 'c', 'd']
print numbers[:2]
(Hiển thị ['a', 'b'])
print numbers[-2:]
(Hiển thị ['c', 'd'])

2.7.3. Xóa phần tử của mảng

Có thể xóa một phần tử thông qua toán tử del . Thứ tự của các phần tử sẽ dịch chuyển tùy vào vị trí của phần tử bị xóa. Ví dụ:

numbers = [1, 2, 3, 4, 5]
del numbers[0]
print numbers
(Hiển thị [2, 3, 4, 5])

Bạn có thể xóa một khoản dựa vào toán tử lấy khoản

[start:end] . Ví dụ:

numbers = [1, 2, 3, 4, 5, 6, 7]
del numbers[2:4]
print numbers
(Hiển thị [1, 2, 5, 6, 7])

2.7.4. Nối 2 mảng

Bạn có thể sử dụng toán tử + để nối giá trị của 2 mảng và tạo ra một mảng lớn có số lượng phần tử là tổng số lượng phần tử của 2 mảng con. Ví dụ:

a= [1, 2]
b = [1, 3]
print a + b
(Hiển thị [1, 2, 1, 3])

2.7.5. Thêm phần tử vào mảng

Nếu bạn muốn thêm phần tử vào một mảng đã tồn tại, hãy dùng phương thức list.append(newvalue) để thêm phần tử có giá trị newvalue vào cuối mảng list . Ví dụ:

numbers = [1, 2, 3]
numbers.append(4)
print numbers
(Hiển thị [1, 2, 3, 4])

2.7.6. Lấy phần tử cuối mảng

Nếu muốn lấy phần tử cuối cùng của mảng ra khỏi mảng, có thể sử dụng phương thức list.pop() , sẽ trả về giá trị của phần tử cuối cùng và mảng bây giờ sẽ không còn phần tử này.

numbers = [1, 2, 3]
mynumber = numbers.pop()
print mynumber
(Hiển thị 3)
print numbers
(Hiển thị [1, 2])

2.7.7. Tìm một giá trị trong mảng

Nếu bạn muốn tìm vị trí (index) của một giá trị trong một

mảng, có thể dùng phương thức list.index(obj) . Nếu tìm thấy sẽ trả về index của phần tử đầu tiên tìm thấy. Nếu không tìm thấy sẽ quăng Exception. Ví dụ:

aList = [123, 'xyz', 'zara', 'abc'];
print "Index for xyz : ", aList.index('xyz')
print "Index for zara : ", aList.index('zara')

Khi chạy sẽ hiển thị kết quả:

Index for xyz : 1
Index for zara : 2

2.7.8. Đảo ngược giá trị của mảng

Để đảo ngược thứ tự các giá trị của một mảng, sử dụng phương thức list.reverse() . Phương thức này không trả về kết quả mà thay đổi trực tiếp mảng list . Ví dụ:

numbers = [1, 2, 3, 4]
numbers.reverse()
print numbers
(Hiển thị [4, 3, 2, 1])

2.7.9. Sắp xếp giá trị các phần tử

Để sắp xếp thứ tự của giá trị trong mảng, sử dụng phương thức list.sort([func]) để sắp xếp. Nếu tham số đầu vào là hàm func không truyền vào thì mặc định là sắp xếp theo giá trị tăng dần. Phương thức này không trả về kết quả mà thay đổi trực tiếp mảng list . Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 'xyz'] aList.sort()
print "List : ", aList
(Hiển thị List : [123, 'abc', 'xyz', 'xyz', 'zara' ])

Cách triển khai hàm compare func() cũng giống như hàm usort trong PHP. Hàm trả về các giá trị 0 , -11 .

2.8. Tuple

Tuple cũng là một cấu trúc mảng, tương tự như cấu trúc List. Một số điểm khác nhau cơ bản là khai báo Tuple sử dụng cặp dấu ngoặc (...) và một tuple đã được khai báo rồi thì không thay đổi được giá trị (immutable) và không hỗ trợ các phương thức như append() , pop() …Ví dụ:

mytuple = ('x', 'y', 'z')
print mytuple
(Hiển thị ('x', 'y', 'z'))

Vẫn hỗ trợ các cách để truy xuất phần tử giống List như là truy xuất theo index, range, tìm kiếm…

2.9. Dictionary

Dictionary cũng là một cấu trúc mảng, nhưng các phần tử bao gồm key và value. Nếu bạn có biết JSON thì cấu trúc Dictionary tương tự như một object json. Một Dictionary

được khai báo bằng cặp dấu ngoặc {...} . Ví dụ:

point = {'x': 1, 'y': 2}

Truy xuất một giá trị dựa vào key của đối tượng. Ví dụ:

point = {'x': 3, 'y': 6, 'z' : 9}
print point[x]
(Hiển thị 3)

2.9.1. Thêm một phần tử

Để thêm một phần tử vào đối tượng đã khai báo, sử dụng cấu trúc dict[key] = value . Ví dụ:

user = {'name': 'Jone', 'age': 30}
user['country'] = 'Vietnam'
print user
(Hiển thị {'country': 'Vietnam', 'age': 30, 'name':'Jone'})

2.9.2. Một số hàm, phương thức thông dụng:

dict.clear() : Xóa toàn bộ dữ liệu bên trong đối tượng

dict.copy() : Trả về một bản copy của đối tượng

dict.fromkeys(seq[, value]) : Tạo một đối tượng với danh sách key từ seq và nếu có truyền value thì lấy đó làm giá trị cho các phần tử.

dict.has_key(key) : kiểm tra một key có tồn tại trong đối tượng hay không.

dict.keys() : Trả về một List chứa các key

dict.values() : Trả về một List chứa các value

Python cơ bản thường sử dụng trong công việc – Chương 3: Phân chia module >>

  [Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng
Phần 3 : Phân chia module”]

  [Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng
Phần 4 : Class”]

  [Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng
Phần 5 : thao tác trên tập tin và thư mục”]

  [Python cơ bản thường dùng trong công việc] Phần 2 : Cú pháp thông dụng
Phần 6 : Xử lý hình ảnh”]

Tham khảo việc làm lập trình viên mới nhất trên TopDev

Lập trình Java cho những người mới bắt đầu: học Java để làm gì?

Java dành cho người mới: học Java để làm gì

Với những ai đang theo đuổi con đường sự nghiệp IT chắc chắn sẽ nghe rất nhiều đến cái tên Java – một trong những ngôn ngữ lập trình Hot nhất hiện nay. Tuy nhiên với những người mới bắt đầu tiếp cận con đường lập trình thì điều này nghe có vẻ vẫn còn lạ lẫm. Câu hỏi đầu tiên của họ đa phần sẽ là: “học Java để làm gì?”, “tại sao phải chọn Java để phát triển?”, “lương lập trình viên Java có cao?”… Vậy Java có kì thực mang lại nhiều cơ hội để phát triển tương lai sự nghiệp hay không?

Tìm việc làm Java lương cao up to 2000 USD

Series này gồm những phần sau đây:

Phần 2: 10 lý do cho thấy tại sao bạn nên tự học lập trình Java

Phần 3: 11 tài liêu học lập trình java cơ bản đến nâng cao hay và dễ hiểu nhất

Phần 4: Top 10 câu hỏi phỏng vấn Java thường gặp

Phần 5: Lập trình web với Java – 10 Java Web Framework tốt nhất

Phần 6: 11 mẹo đơn giản để tăng hiệu suất Java cấp tốc

Câu hỏi đầu tiên: “học java để làm gì?”

Là ngôn ngữ lập trình hướng đối tượng mạnh mẽ và phổ biến nhất hiện nay, Java được nhiều chuyên gia đánh giá và khen ngợi bởi tính năng hỗ trợ cực mạnh mẽ. Điểm mạnh của Java là có thể hoạt động trên nhiều nền tảng công nghệ, kể cả việc hoạt động ở nhiều hệ điều hành khác nhau. Hay nói một cách ngắn gọn nhất cho dễ hiểu thì Java chính là ngôn ngữ lập trình có thể “viết một lần, chạy mọi nơi” ( “write one, run everywhere”) với JVM.

Tuy nhiên chúng ta nên hiểu rằng, sẽ rất khó để nói ngôn ngữ lập trình nào là tốt nhất vì trên thực tế chỉ có ngôn ngữ lập trình nào được hỗ trợ nhiều nhất thì sẽ gọi là ngôn ngữ phổ biến nhất. Java cũng không ngoại lệ trong số đó, Java được hỗ trợ trên rất nhiều thiết bị, có thể thực thi trên nhiều dòng máy và cũng là ngôn ngữ được phần lớn nhiều lập trình viên chọn lựa để theo đuổi phát triển.

>>> Xem thêm: Java là gì? Tổng quan về ngôn ngữ lập trình java

Java cho người mới bắt đầu: chúng ta học java để làm gì?

Vậy thì bạn học Java để làm gì?

  • Bạn có thể dùng ngôn ngữ Java để viết các hệ thống phân tán, ở các website lớn hay các program đa nền tảng.
  • Đối với mobile thì có thể viết những ứng dụng game java trên các dòng điện thoại quen thuộc như feature phone (file dưới dạng *.jar).
  • Ngay cả khi các dòng điện thoại smartphone phát triển mạnh mẽ đi cùng với hệ điều hành Android thì hầu như các ứng dụng, game nào cũng đều được viết bằng ngôn ngữ Java – SDK  (file dưới dạng *.apk).

>>> Xem thêm: Học lập trình Java từ đâu và như thế nào?

Java có lỗi thời?

Câu hỏi này cũng tồn tại khá lâu rồi, nhưng ta hãy xem lại bảng xếp hạng của các ngôn ngữ lập trình PYPL (Popularity of programming Language) – thống kê sự phổ biến của các ngôn ngữ dựa vào tần suất tìm kiếm từ khóa liên quan tới ngôn ngữ đó.

Java vẫn luôn là ngôn ngữ top đầu được các lập trình viên yêu thích và sử dụng trong các hệ thống từ nhỏ đến cực lớn vì sự ổn định và perfomance cực tốt của nó. Hiện tại các trang social lớn như Twitter, hay các site TMDT như Amazon, eBay, Lazada, Tiki…và rất nhiều trang thương mại điện tử lớn đều sử dụng Java cho hệ thống back-end vì Java đáng tin cậy và chịu tải tốt.

Chắc hẳn bạn có nghe đến game Minecraft rất thành công và được Microsoft mua lại với giá 2.5 tỷ Đô-la cũng được viết bằng Java. Bên cạnh đó, mảng lập trình web cũng được hỗ trợ cực tốt bởi rất nhiều Java web framework , Apache Hadoop Java framework luôn là bạn đồng hành với Big Data trong các cụm server quy mô lớn được dùng xử lý dữ liệu bới Facebook, Amazon hay IBM.

Đó là hiện tại, còn tương lai ra sao?

Với sự đầu tư và support của Oracle đã giúp cho rất nhiều doanh nghiệp vừa bảo trì nền tảng cũ, vừa có thể tiếp cận được các xu thế công nghệ mới. Mới đây họ đã phát hành Java 9 vào tháng 9 – 2016. Bản cập nhật quan trọng này nhắm đến việc chia ngôn ngữ này ra thành các component nhỏ hơn. Nhờ đó, Java sẽ nhanh hơn và dễ sử dụng hơn. Nên đừng đắn đo nữa mà hãy lao đầu vào học Java ngay nhé.

>>> Xem thêm: TopDev phát hành Báo cáo thị trường IT Việt Nam năm 2023

Cơ hội nào mở ra tương lai cho những lập trình viên Java?

Ngày nay có rất nhiều doanh nghiệp đang săn đón các lập trình viên Java với mức offer rất hấp dẫn, tùy thuộc vào trình độ và năng lực của mỗi ứng viên. Nếu bạn là một lập trình viên Java đã có kinh nghiệm thì mức thu nhập mỗi tháng luôn có thể dao động trên con số 1,000 USD. Khi bạn gõ từ khóa tuyển dụng Java Developer trên TopDev có thể hiện ra đến 1.000 tin đăng về việc làm Java, điều này dễ dàng cho thấy chiều hướng phát triển tích cực của nghề lập trình Java ngày càng tăng.

Nếu bạn là người mới bắt đầu học lập trình với thắc mắc “học Java để làm gì” hay đang có xu hướng chuyển qua Java để tìm tòi phát triển thêm thì bạn nên nghiên cứu qua nhiều tài liệu chia sẻ về Java cơ bản, sau đó mới dần dần chuyển đến những tài liệu Java nâng cao. Và dĩ nhiên, học phải đi đôi với hành, bạn cũng nên tìm kiếm thêm những cơ hội tham gia các dự án để luyện cho trình độ vững vàng hơn.

Một khi có lộ trình rõ ràng để theo đuổi con đường sự nghiệp mình yêu thích thì bất kể là ngôn ngữ lập trình nào đi chăng nữa thì cơ hội nào cũng sẽ đều mở ra chào đón bạn, thậm chí có thể trở thành một Developer tiềm năng mà bất cứ doanh nghiệp nào cũng muốn sở hữu. Tại Việt Nam, có rất nhiều công ty IT có nhu cầu cực cao về tuyển dụng Java như KMS, Framgia, Lazada…

Phần 2: 10 lý do cho thấy tại sao bạn nên tự học lập trình Java >>

Python cơ bản cho ứng dụng trong công việc

Python cơ bản cho ứng dụng trong công việc

Hiện nay, Python là một trong những ngôn ngữ lập trình đang được chú ý bởi tính đa dạng về ứng dụng, thư viện phong phú và cộng đồng đông đảo. Hiện tại python có thể ứng dụng vào sử lý dữ liệu lớn (BigData), Machine Learning hay làm web… Series Python cơ bản được tác giả Võ Duy Tuấn ghi chép trong quá trình dùng python để xử lý những tác vụ trong công việc mà Php đáp ứng khá chậm.

Vì vậy đôi khi về phần back end, dùng python sẽ đem lại sự tối ưu perfomance, sách được chia làm 15 chương, mỗi chương sẽ trình bày 1 khía cạnh của Python mà tác giả đã gặp, sẽ rất hữu ích khi bạn biết các kiến thức này trong việc áp dụng Python vào công việc trong tương lai.

Tuyển dụng python nhiều ngành nghề hot cho bạn

Chapter 1

Python là một ngôn ngữ phiên dịch (Interpreter Language), tức là không cần build thành file thực thi mà chạy trực tiếp như PHP.

Hiện tại Python có 2 nhánh chính là 2.x và 3.x. Ở nhánh 2.x đã dừng phát triển và đang đứng ở phiên bản 2.7. Nhánh Python 3.x thì vẫn đang được tiếp tục phát triển.

Website chính thức của Python: www.python.org

  Module trong Python

Cài đặt

Python hỗ trợ hầu hết các nền tảng và rất dễ tìm thấy sẵn trên một số hệ điều hành như Mac OS…

Để biết là hệ thống của bạn đã cài Python chưa, có thể vào màn hình command line và gõ:

$ python --version

Nếu đã cài đặt python thì sẽ hiển thị thông tin phiên bản python. Nếu báo lỗi thì đồng nghĩa với bạn chưa cài đặt Python.

Có thể tham khảo cách cài đặt Python tại:

https://www.python.org/downloads/

Công cụ phát triển

Chỉ cần dùng một text editor là bạn có thể viết được code python hoặc có thể dùng các công cụ cao cấp hơn (IDE) như Aptana, PyCharm…Các IDE thường hỗ trợ thêm quá trình phân tích cú pháp dòng lệnh, debug…trong phạm vi cuốn sách nhỏ này thì mình hướng đến cách thực thi python bằng dòng lệnh.

  Làm app giao diện đồ hoạ với Python

Hello world

Tạo một file có tên là helloworld.py và có nội dung như sau:

print 'Hello world'

print là lệnh cơ bản nhất để xuất một biến ra (thường là màn hình)

Sau đó, vào màn hình command line, di chuyển đến thư mục chứa file này và gõ.

$ python helloworld.py

Nếu thấy xuất hiện dòng chữ Hello world tức là bạn đã hoàn thành việc viết ứng dụng python đầu tiên.

Python cơ bản thường dùng trong công việc – Phần 2: Các cú pháp thường sử dụng.

Cùng Vietnam Mobile Day 2018 khám phá các xu hướng công nghệ

Vietnam Mobile Day là chuỗi sự kiện thường niên do TopDev tổ chức, đây là năm thứ 8 liên tiếp sự kiện này diễn ra. Năm nay Vietnam Mobile Day tập trung vào các topic chuyên sâu về Fintech, Blockchain, Mobile App & Game, AI và Marketing – những công nghệ mới ra đời đang len lỏi vào mọi lĩnh vực đời sống, tạo nên sức ảnh hưởng âm thầm mà mạnh mẽ.

VIETNAM MOBILE DAY, tâp trung vào 5 nhóm chuyên đề chính:

  • What is the future of Fintech?
  • Blockchain: Bubble or Revolution.
  • Mobile App and Game: All about the red ocean strategy.
  • AI world domination? Real or fiction?
  • The future of Marketing.
  1. WHAT IS THE FUTURE OF FINTECH? 

Làn sóng Fintech đã và đang tác động lên lĩnh vực dịch vụ tài chính ngày một mạnh mẽ, kéo theo đó, Fintech trở thành một trong những lĩnh vực đầu tư “nóng” nhất trên thị trường toàn cầu. Tại cụm chủ đề WHAT IS THE FUTURE OF FINTECH? hứa hẹn là một trong những chủ đề được chờ đợi nhất, top các diễn giả sẽ giới thiệu tổng quan về hệ sinh thái Fintech hiện nay và cả những thành phần trong bức tranh toàn cầu trong tương lai gần.

Một số topic:

▪ Blockchain & Smart Contract – Bắt đầu như thế nào và các ứng dụng

▪ Finding Product Market Fit in Fintech: The Wealthfront Story

▪ Applying AI and Machine Learning to Financial Services Using the Google Cloud Platform

▪ ….

Xem thêm topic nhóm chủ đề WHAT IS THE FUTURE OF FINTECH? tại đây

2. BLOCKCHAIN: BUBBLE OR REVOLUTION ?

Thực tế cho thấy, hiện nay, các doanh nghiệp lớn trên thế giới như Microsoft và sắp tới Oracle sẽ giới thiệu, tham gia chạy đua đưa các công nghệ chuỗi khối này. Giải pháp công nghệ đột phá này có thể áp dụng tối ưu cho các ngành nghề như tài chính, giao thông và nhiều lĩnh vực khác.

Một số topic:

▪ ICO – Chiến lược đầu tư, tránh lừa đảo và ném tiền qua cửa sổ

▪ Blockchain Identity & Security

▪ How Blockchain, Cryptocurrencies and Smart Contracts will Revolutionize the World

▪ ….

Xem thêm tpoic về nhóm chủ đề BLOCKCHAIN: BUBBLE OR REVOLUTION ? tại đây

MOBILE APP AND GAME: ALL ABOUT THE RED OCEAN STRATEGY

Sản xuất Game và ứng dụng giờ đã không còn là vấn đề quá khó, nhưng để thành công được lại là 1 câu chuyện hoàn toàn khác! Thị trường Mobile App & Game – sân chơi không dành cho tất cả, vậy cơ hội nào cho những người đến sau? Đối với một thị trường quá rộng lớn và lượng người dùng bị xé nhỏ, liệu các ứng dụng của bạn có rơi vào tình trạng “thoi thóp” và “chết yểu” khi chưa đáp ứng các yêu cầu người dùng? Tham gia chuỗi topic STARTUP: MOBILE APP AND GAME: ALL ABOUT THE RED OCEAN STRATEGY để nắm bắt những xu hướng để tồn tại bền vững trên thị trường chật hẹp này.

Một số topic:

▪ Phát triển game dựa trên game engine đa nền tảng cocos2d-x

▪ Chuyến phiêu lưu của những Game Designer – Làm game như thế nào?

▪ Làm thế nào để tạo ra một Puzzle games gây nghiện?

▪ …

Xem thêm Topic thuộc chủ đề MOBILE APP AND GAME: ALL ABOUT THE RED OCEAN STRATEGY tại đây

3. AI WORLD DOMINATION? REAL OR FICTION?

Google hiện đã có hơn 1000 AI projects và 10% Google Engneers ứng dụng AI trong công việc trong năm 2016. Trong 3-5 năm tới thì AI sẽ trở thành một phần mặc định trong bất cứ hệ thống phần mềm nào và sẽ hỗ trợ đắc lực cho rất nhiều hoạt động của doanh nghiệp, tiêu biểu như phân mảng chăm sóc khách hàng. Tham gia chủ đề Trending Tech: AI WORLD DOMINATION? REAL OR FICTION? để học hỏi những kinh nghiệm ứng dụng AI vào thực tiễn nhanh chóng & hiệu quả!

AI world domination

Một số topic:

▪ AlphaGo Vs TensorFlow – Trí thông minh nhân tạo trong tay bạn

▪ Những thách thức trong các bài toán tối ưu thuật toán vận tải hàng hóa của những doanh nghiệp logistic

▪ Trở thành khoa học dữ liệu như thế nào? Xây dựng cấu trúc dữ liệu như thế nào?

▪ ….

Xem thêm chủ đề thuộc nhóm AI WORLD DOMINATION? REAL OR FICTION? tại đây

4.THE FUTURE OF MARKETING

Theo tạp chí Forbes, Marketing toàn cầu trong tương lai sẽ tập trung đến một số các xu hướng nổi bật như: Omni Channel Retail Platform, Master Micro-moment, Quảng cáo tự nhiên (Native Advertising,…Là 1 Marketer hay Business Owner, hãy đế và tham gia chuỗi topic THE FUTURE OF MARKETING để cập nhật xu hướng Marketing trong kế hoạch chiến lược của năm 2018 là điều cần thiết để tạo lợi thế cạnh tranh mạnh mẽ trên thị trường!

the future of marketing

Một số topic:

▪ The New Word Of Mouth: Effective Influencer Marketing

▪ Unifying Mobile With Your Omnichannel Experience

▪ Business development in the apps and mobile marketing

▪ ….

Xem thêm các topic về nhóm chủ đề tại đây

6. CÙNG NHIỀU NHÓM CHỦ ĐỀ HẤP DẪN KHÁC:

▪ Architechture, Infrastructure, Sercurity

▪ QA and Testing

▪ UX/UI Design

▪ Appstore, Playstore, Gamification, General Problem

▪ Mobile Business

▪ Mobile Marketing

▪ Cross platform, Native app, Hybrid app, Web app – Solfwares Revolution

Vietnam Mobile Day 2018 – lần thứ 8

HCM: 08/06 – Hà Nội: 15/06

vietnam mobile dayVietnam Mobile Day

✨HOTLINE/ LIÊN HỆ HỢP TÁC:

– event@applancer.net (Event team) | 028 6273 3497 – 028 6681 3236

– khiem.pham@applancer.net (Mr. Khiêm) | 0902 951 296

HÉ LỘ NHỮNG DIỄN GIẢ ĐẦU TIÊN CỦA CHUỖI SỰ KIỆN CÔNG NGHỆ LỚN NHẤT VIỆT NAM – VIETNAM MOBILE DAY

Vietnam Mobile Day là sự kiện thường niên được giới chuyên gia đánh giá là một trong số ít những sự kiện công nghệ thành công trên mọi phương diện về chuyên môn cũng như về quy mô tổ chức ngay từ những ngày đầu tiên.

Theo đại diện BTC sẽ có sự góp mặt của  +100 chuyên gia đầu ngành trong các lĩnh vực Fintech, Blockchain, Cryptocurrency, AI, IoT, Big Data, Mobile Game, App và Digital Marketing,..Và những cái tên đầu tiên đã được tiết lộ:

1.FOUNDER & CEO của UMBALA – Anh NGUYỄN MINH THẢO với chủ đề “UMBALA NETWORK – A _BL0CKCH@IN BASED CAMERA STREAMING ECONOMY”

vietnam mobile day

Được biết đến nhiều từ sau chương trình thương vụ bạc tỷ khi huy động thành công 6 tỷ đồng với câu nói nổi tiếng “ CEO phải là thằng ngu nhất công ty”, nhưng ít ai biết rằng anh Nguyễn Minh Thảo đã xây dựng UMBALA từ con số 0 trở thành một trong những starup Việt đầu tiên có trụ sở tại Sillicon Valley, thuộc Top các star-up đáng chúng ý nhất năm 2016.  Ngoài ra, trước khi thành lập Umbala anh Minh Thảo là Founder của CNC Software, CNC Mobile và sở hữu những thành tích đáng ngưỡng mộ:

  • Chiến thắng Forbes Vietnam Startup Contest 2015 (Cuộc thi Khởi nghiệp Việt Nam của Tạp chí Forbes).
  • Chiến thắng cuộc thi Khởi nghiệp cùng Israel 2014 (Startup Israel 2014).
  • Top 10 SingTel Accelerator Challenge 2014.
  • Top 20 Intel DST Asia Pacific Challenge 2011.
  • Top 2 Samsung Challenge 2011.
  • Top 3 – Giải thưởng Nhân tài Đất Việt năm 2010.

Mang đến Vietnam Mobile Day 2018 topic “UMBALA NETWORK – A _BL0CKCH@IN BASED CAMERA STREAMING ECONOMY” anh NGUYỄN MINH THẢO – FOUNDER & CEO của UMBALA sẽ trực tiếp chia sẻ những vấn đề xoay quanh Blockhain trong tương lai cũng như những kinh nghiệm hữu ích từ mạng lưới Umbala trong suốt thời gian anh dẫn dắt.

2. DIỄN GIẢ ÔNG XUÂN HỒNG – RESEARCH ENGINEER của TRUSTING SOCIAL với chủ đề “CREDIT SCORING TRONG THỜI ĐẠI BIG DATA”

vietnam mobile day

Là một gương mặt không quá xa lạ trong cộng đồng lập trình với những bài viết blog chia sẻ kinh nghiệm nghiên cứu và làm việc với Data, từng đồng hành tại các buổi training Meetup chuyên sâu do TopDev tổ chức.

Anh Hồng tốt nghiệp thạc sĩ tại JAIST (Japan Advanced Institute of Science and technololy) có hơn 5 năm kinh nghiệm trong ngành IT và gần 2 năm trong riêng lĩnh vực Data Analyst. Anh sở hữu vốn kiến thức sâu rộng liên quan đến Dữ liệu, Hệ thống và những xu hướng công nghệ nổi bật thời gian qua như Machine Learning, Python, Java, Scala, GNU/ Linux, NodeJS, MongoDB, PostgreSQL, MySQL, Apache Spark, Docker…

Bên cạnh đó, anh Hồng còn đảm nhận nhiều vị trí khác nhau tại nhiều doanh nghiệp lớn trước khi dừng chân ở vị trí Research Engineer tại Trusting Social hiện tại, như:

  • 03/2016 – 08/2017: Data Analyst tại KNOREX
  • 01/2010 – 12/2014: Web developer tại Vlancer
  • 06/2013 – 08/2014: 3D Programmer tại Rolling Ant

Đến với VIETNAM MOBILE DAY LẦN THỨ 8 lần này, anh Hồng sẽ mang đến topic cực kì “nóng hổi” mang tên: “CREDIT SCORING TRONG THỜI ĐẠI BIG DATA”. Đây hứa hẹn sẽ là một chủ đề nóng nhất với xu hướng công nghệ số tương lai.

3. CHỊ HÀ PHƯƠNG ANH – CO-FOUNDER BEEKETING với chủ đề “HOW TO FIND THE RIGHT GROWTH HACKING CHANNEL FOR YOUR BUSINESS BASED ON DATA”

vietnam mobile day

Giấc mơ tạo ra những sản phẩm Việt chinh phục thị trường quốc tế không phải là câu chuyện quá xa, Beeketing là một minh chứnng khi là công ty Việt Nam duy nhất được đầu tư bởi quỹ 500 Startups Batch 15 tại Silicon Valley, Mỹ; Platform Marketing tự động được sử dụng bởi 100,000 trang thương mại điện tử khắp thế giới, với hơn 80 triệu người tương tác với hệ thống hàng tháng, Top 50 startups đáng chú ý tại Singapore năm 2016,  Giải nhất cuộc thi khởi nghiệp Start Tel Aviv, đại diện Việt Nam đến Israel để học hỏi hệ sinh thái khởi nghiệp,..

Câu chuyện thành công của Beeketing sẽ được kể lại tai sự kiện VIETNAM MOBILE DAY 2018 bởi Co-founder của Beeketing, chị Phương Anh, Với nhiều năm chinh chiến trong tập đoàn lớn: Marketing Manager tại Brodev. Marketing Specialist tại VNP Group, Marketing & Assitant Manager tại PeaceSoft Solutions Corporation, Global Exchange Participant tại AIESEC Poland, Local Committee Krakow…Mang đến chủ đề “HOW TO FIND THE RIGHT GROWTH HACKING CHANNEL FOR YOUR BUSINESS BASED ON DATA”. Với những kinh nghiệm làm việc cùng câu chuyện thành công của Beeketing đây sẽ là chủ đề rất thú vị với những ai đang quan tâm đến vấn đề xử lý dữ liệu để đẩy nhanh quá trình tăng trưởng hiện tại lên tới 10x hoặc 100x.

4. DIỄN GIẢ QUAN MINH TÂM – TRƯỞNG PHÒNG KỸ THUẬT CÔNG TY TNHH BẢO TÍN với topic “PHÁT HIỆN CÁC TRẠM PHÁT DI ĐỘNG GIẢ MẠO NHẰM THEO DÕI NGƯỜI DÙNG DI ĐỘNG”

vietnam mobile day

Theo số liệu nghiên cứu từ eMarketer, số lượng người sử dụng smartphone tại Việt Nam tăng khoảng 20% vào mỗi năm, kéo theo đó những trạm phát ngày càng “mọc” lên như nấm để đáp ứng nhu cầu người sử dụng. Do đó, vấn đề bảo mật thông tin càng gặp thêm những vấn đề mới như việc bị theo dõi, nghe lén,… Vậy làm thế nào để giải quyết và tránh trở thành nạn nhân của tình trạng này? Tham gia ngay chủ đề “PHÁT HIỆN CÁC TRẠM PHÁT DI ĐỘNG GIẢ MẠO NHẰM THEO DÕI NGƯỜI DÙNG DI ĐỘNG”. Thắc mắc sẽ được giả đáp bởi diễn giả Quan Minh Tâm – Trưởng phòng kỹ thuật công ty TNHH Bảo Tín

Anh đảm nhiệm Web Application Tester tại FPT Telecom, có nhiều kinh nghiệm chuyên môn trong các lĩnh vực quản lý bảo mật thông tin như PostgreSQL, các máy chủ MySQL; và hơn nữa là Nginx, Tengine, Apache, Tomcat và haproxy.

Với vai trò Trưởng phòng kỹ thuật của Công ty TNHH Công nghệ Bảo Tín, anh Tâm hiện đang tham gia vào quy trình đánh giá bảo mật an toàn thông tin hệ thống thống mạng, ứng dụng web và di động theo tiêu chuẩn OWASP. Bên cạnh đó, anh còn nghiên cứu các công nghệ mới và đề xuất quy trình an toàn thông tin cho các doanh nghiệp, tổ chức.

5. NGUYỄN NGÂN BÌNH – PRESIDENT – TECHNOLOGY của IMICROSOFT với chủ đề “BUSINESS ANALYSIS KEYS TO SUCCESS WITH MASTER DATA MANAGEMENT PROJECT”

vietnam mobile day

iMicrosoft là công ty đào tạo và phát triển công nghệ với mô hình hướng tới truyền dạy kinh nghiệm thực tế cho học viên theo phương châm “Học để làm việc”. iMicrosoft hướng đến trở thành một công ty chuyên đào tạo kinh nghiệm thực tế về Lập trình – Đồ họa đa phương tiện – Bảo mật hệ thống thông tin hàng đầu tại Việt Nam.

Tham gia vào đội ngũ vận hành của iMicrosoft như một cái duyên, anh NGUYỄN NGÂN BÌNH đảm nhận vai trò PRESIDENT -TECHNOLOGY (Giám Đốc Phụ Trách Công Nghệ) của IMICROSOFT JOINT STOCK COMPANY (CTy Cổ Phần Đào Tạo và Phát Triển Công Nghệ iMicrosoft). Từ bỏ những cơ hội ở nước ngoài, anh Bình trở về Việt Nam và có hơn 5 năm kinh nghiệm làm diễn giả cho nhiều sự kiện cả trong và ngoài nước.

Tại VIETNAM MOBILE DAY LẦN THỨ 8 năm nay, anh sẽ mang đến cho cộng đồng đam mê công nghệ một chủ đề “BUSINESS ANALYSIS KEYS TO SUCCESS WITH MASTER DATA MANAGEMENT PROJECT”. Trước khi bắt tay vào xử lý các vấn đề quản lý thông tin khác, bạn nhất thiết phải có được cái nhìn tổng thể về tình hình dữ liệu được xử lý như thế nào trên toàn doanh nghiệp thay vì chỉ ở từng hệ thống riêng lẻ.

Và còn rất nhiều điều thú vị cùng những chuyên gia “SIÊU CHẤT” khác sẽ được tiết lộ tại Website:http://mobileday.vn

Vietnam Mobile Day 2018 – lần thứ 8

HCM: 08/06/2018 – Hà Nội: 15/06/2018

vietnam mobile day

✨THÔNG TIN CHI TIẾT VÀ ĐĂNG KÍ:

– Website: http://mobileday.vn/

– Event Page: https://www.facebook.com/mobiledayevent/

✨HOTLINE/ LIÊN HỆ HỢP TÁC:

– event@applancer.net (Event team) | 028 6273 3497 – 028 6681 3236

– khiem.pham@applancer.net (Mr. Khiêm) | 0902 951 296

CI/CD là gì? Triển khai quy trình CI/CD với Gitlab

Triển khai CI/CD với Gitlab

CI/CD là gì? Tầm quan trọng của quy trình CI CD là gì và tại sao bạn nên sử dụng chúng để phát triển phần mềm? Bài viết này sẽ cung cấp cho bạn câu trả lời cho câu hỏi đó và hơn thế nữa.

CI/CD là gì?

CI/CD là một bộ đôi công việc, bao gồm CI (Continuous Integration)CD (Continuous Delivery) hoặc Continuous Deployment (Triển khai liên tục), ý nói là quá trình tích hợp (integration) thường xuyên, nhanh chóng hơn khi code cũng như thường xuyên cập nhật phiên bản mới (delivery).

CI/CD là gì?
CI CD là gì?

Continuous Integration (CI)

Continuous Integration (CI) là một quy trình tự động hóa cho phép các nhà phát triển thường xuyên hợp nhất các thay đổi mã nguồn trở lại một nhánh chia sẻ hoặc “trunk”. Khi các cập nhật này được thực hiện, các bước kiểm tra tự động sẽ được kích hoạt để đảm bảo tính ổn định của các thay đổi mã nguồn đã hợp nhất.

Trong phát triển ứng dụng hiện đại, mục tiêu là có nhiều nhà phát triển làm việc đồng thời trên các tính năng khác nhau của cùng một ứng dụng. Tuy nhiên, nếu tổ chức chỉ hợp nhất tất cả các nhánh mã nguồn vào một ngày (gọi là “merge day”), công việc này có thể trở nên tẻ nhạt, thủ công và tốn thời gian.

Nguyên nhân là khi một nhà phát triển làm việc riêng lẻ thay đổi ứng dụng, có khả năng sẽ xung đột với các thay đổi đang được thực hiện đồng thời bởi các nhà phát triển khác. Vấn đề này càng phức tạp hơn nếu mỗi nhà phát triển tùy chỉnh môi trường phát triển tích hợp (IDE) của riêng mình thay vì cả nhóm đồng ý sử dụng một IDE dựa trên đám mây.

CI có thể được coi là giải pháp cho vấn đề có quá nhiều nhánh của một ứng dụng đang được phát triển cùng lúc mà có thể xung đột với nhau.

Thành công của CI có nghĩa là sau khi các thay đổi của nhà phát triển đối với ứng dụng được hợp nhất, các thay đổi đó sẽ được xác nhận bằng cách tự động xây dựng ứng dụng và chạy các mức độ kiểm tra tự động khác nhau, thường là kiểm tra đơn vị và kiểm tra tích hợp, để đảm bảo các thay đổi không phá vỡ ứng dụng. Điều này bao gồm kiểm tra mọi thứ từ các lớp và chức năng đến các module khác nhau cấu thành toàn bộ ứng dụng. Một trong những lợi ích của CI là nếu kiểm tra tự động phát hiện xung đột giữa mã nguồn mới và mã nguồn hiện có, việc sửa lỗi sẽ dễ dàng và nhanh chóng hơn.

Continuous Delivery (CD)

Continuous Delivery (CD) tự động hóa việc phát hành mã nguồn đã được xác nhận vào một kho lưu trữ sau khi tự động xây dựng và kiểm tra đơn vị và kiểm tra tích hợp trong CI. Vì vậy, để có quy trình Continuous Delivery hiệu quả, CI cần phải được tích hợp sẵn vào quy trình phát triển.

Trong Continuous Delivery, mỗi giai đoạn từ hợp nhất các thay đổi mã nguồn đến việc giao các bản xây dựng sẵn sàng cho sản xuất đều bao gồm tự động hóa kiểm tra và phát hành mã nguồn. Cuối cùng, đội ngũ vận hành có thể triển khai ứng dụng vào môi trường sản xuất một cách nhanh chóng.

Continuous Delivery thường có nghĩa là các thay đổi của nhà phát triển đối với ứng dụng được kiểm tra lỗi tự động và tải lên một kho lưu trữ (như GitHub hoặc container registry), nơi chúng có thể được triển khai vào môi trường sản xuất thực tế bởi đội ngũ vận hành. Đây là câu trả lời cho vấn đề về sự thiếu minh bạch và giao tiếp giữa các nhóm phát triển và kinh doanh. Mục đích của Continuous Delivery là có một mã nguồn luôn sẵn sàng để triển khai vào môi trường sản xuất và đảm bảo rằng việc triển khai mã nguồn mới cần ít nỗ lực nhất có thể.

Continuous Deployment

Continuous Deployment là giai đoạn cuối cùng của một pipeline CI/CD trưởng thành. Continuous Deployment là một phần mở rộng của Continuous Delivery và có thể đề cập đến việc tự động hóa phát hành các thay đổi của nhà phát triển từ kho lưu trữ vào sản xuất, nơi chúng có thể được sử dụng bởi khách hàng.

Continuous Deployment giải quyết vấn đề quá tải đội ngũ vận hành với các quy trình thủ công làm chậm quá trình giao ứng dụng. Nó xây dựng trên các lợi ích của Continuous Delivery bằng cách tự động hóa giai đoạn tiếp theo trong pipeline.

Trong thực tế, Continuous Deployment có nghĩa là các thay đổi của nhà phát triển đối với một ứng dụng đám mây có thể được triển khai trực tiếp trong vài phút sau khi viết (với điều kiện là nó vượt qua các bài kiểm tra tự động). Điều này làm cho việc nhận và tích hợp phản hồi của người dùng liên tục trở nên dễ dàng hơn. Tất cả các thực hành CI/CD liên kết với nhau làm cho quy trình triển khai ít rủi ro hơn, dễ dàng hơn khi phát hành các thay đổi cho ứng dụng theo từng phần nhỏ thay vì tất cả cùng một lúc.

Tuy nhiên, vì không có bước kiểm tra thủ công nào trước khi đưa vào sản xuất, Continuous Deployment phụ thuộc nhiều vào việc thiết kế tốt các bài kiểm tra tự động. Điều này có nghĩa là Continuous Deployment có thể yêu cầu một khoản đầu tư lớn ban đầu vì các bài kiểm tra tự động sẽ cần được viết để phù hợp với nhiều giai đoạn kiểm tra và phát hành trong pipeline CI/CD.

Tại sao phải quan tâm đến CI/CD?

Ngày nay, với xu hướng agile/lean dẫn đến việc phát triển tính năng là điều bình thường, quan trọng phải là thần thái, ý lộn, quan trọng là phải nhanh. Nếu một tính năng mà mất 2, 3 tháng mới release thì dẫn đến nhiều hệ lụy như làm không phù hợp nhu cầu khách hàng, hoặc đối thủ đã ra mắt trước đó, mất đi cái lợi thế dẫn đầu. Do đó, việc làm ra một sản phẩm, tính năng đòi hỏi thần tốc là ưu tiên số một hiện nay.

Bên cạnh đó, để nhanh chóng ra mắt một tính năng, phiên bản mới nếu theo cách cổ điển sẽ mất nhiều thời gian bởi công việc chân tay khá nhiều và mỗi lần release cũng huy động một cơ số người không nhỏ để cập nhật một thay đổi dù là nhỏ nhất. Bởi vậy, xu hướng CI/CD giúp cung cấp các framework, workflow giúp tiết kiệm thời gian, nguồn lực của quá trình release (delivery).

Tại sao phải quan tâm đến CI/CD?
Tại sao phải quan tâm đến CI/CD?

Ưu điểm và nhược điểm của CI/CD

Ưu điểm của CI/CD

  1. Mã nguồn nhỏ hơn và đơn giản hơn: Các thay đổi mã nguồn nhỏ hơn, dễ kiểm tra và ít gây ra các hậu quả không mong muốn.
  2. Giảm thời gian trung bình để giải quyết (MTTR): Các vấn đề được phát hiện và sửa chữa nhanh chóng hơn, giúp giảm thời gian trung bình để khắc phục sự cố.
  3. Cô lập lỗi tốt hơn và nhanh hơn: Dễ dàng xác định và cô lập các lỗi trong mã nguồn, giảm thiểu ảnh hưởng đến các phần khác của hệ thống.
  4. Tăng độ tin cậy của kiểm tra: Do các thay đổi mã nguồn nhỏ hơn và cụ thể hơn, các bài kiểm tra trở nên đáng tin cậy hơn.
  5. Tăng tốc độ phát hành: Tốc độ phát hành tăng giúp phát hiện và sửa chữa lỗi nhanh hơn, cải thiện quy trình phát triển.
  6. Giảm số lượng lỗi không quan trọng: Sử dụng CI/CD giúp giảm số lượng lỗi không quan trọng tồn đọng trong danh sách công việc.
  7. Nhận phản hồi từ khách hàng và nhân viên: CI/CD giúp thu thập phản hồi từ khách hàng và nhân viên nhanh chóng hơn, cải thiện sản phẩm.
  8. Tự động hóa giảm thiểu lỗi: Tự động hóa trong CI/CD giảm thiểu số lượng lỗi có thể xảy ra trong các bước của pipeline CI/CD.

Nhược điểm của CI/CD

  1. Doanh nghiệp phải luôn cảnh giác và thực hiện lặp lại: Tránh việc tự động hóa sai quy trình ngay từ đầu và cần phải cẩn trọng trong việc chọn thứ tự đúng của quy trình.
  2. Mã nguồn phải sẵn sàng và được đưa vào sản xuất ngay lập tức: Tính khẩn trương này có thể gây lo lắng cho doanh nghiệp nếu mã nguồn phải được triển khai ngay khi kết quả hiện tại thành công.
  3. Dashboard có thể không quen thuộc với tất cả các thành viên: Các nhóm có thể tạo ra một dashboard mà không phải thành viên nào cũng biết trước, dẫn đến các sai lầm logic.
  4. Cần đồng bộ hóa CI và CD: CI và CD cần phải được thực hiện đồng bộ với nhau. Điều này đòi hỏi sự chú ý và chi tiết từ yếu tố con người để đảm bảo hoạt động trơn tru.

CI/CD khác gì DevOps?

CI/CD là một phần quan trọng của phương pháp DevOps, nhưng hai khái niệm này không hoàn toàn giống nhau:

  • CI/CD: Tập trung vào việc tự động hóa quy trình tích hợp và triển khai mã nguồn, giảm thiểu lỗi và tăng tốc độ phát hành phần mềm.
  • DevOps: Tập trung vào việc hợp tác giữa các nhóm phát triển và vận hành, tự động hóa các quy trình để cải thiện hiệu quả và chất lượng của các bản phát hành phần mềm. DevOps bao gồm CI/CD như một phần của quy trình tự động hóa tổng thể.

Tầm quan trọng của DevSecOps:

DevSecOps nhấn mạnh rằng an ninh cần được tích hợp từ đầu đến cuối trong quy trình DevOps. Điều này bao gồm việc:

  • Tích hợp an ninh vào CI/CD pipeline: Đảm bảo rằng các bước kiểm tra an ninh được thực hiện tự động trong suốt quy trình tích hợp và triển khai mã nguồn.
  • Chia sẻ trách nhiệm an ninh: Tất cả các nhóm liên quan (phát triển, vận hành, an ninh) đều chịu trách nhiệm về an ninh của ứng dụng.
  • Cải thiện nhận thức và kỹ năng về an ninh: Đào tạo và nâng cao nhận thức về an ninh cho tất cả các thành viên trong nhóm để họ có thể phát hiện và xử lý các vấn đề an ninh một cách hiệu quả.

Vậy ta có thể hiểu tóm gọn như sau:

  • CI/CD: Tự động hóa quy trình tích hợp và triển khai mã nguồn.
  • DevOps: Hợp tác giữa các nhóm phát triển và vận hành, tối ưu hóa quy trình phát triển và triển khai phần mềm.
  • DevSecOps: Tích hợp an ninh vào quy trình DevOps từ đầu đến cuối, đảm bảo an ninh là trách nhiệm chung.

CI/CD là một phần quan trọng trong DevOps, giúp tăng tốc độ và độ tin cậy của các bản phát hành phần mềm, trong khi DevOps giúp cải thiện sự hợp tác và hiệu quả tổng thể. DevSecOps bổ sung thêm yếu tố an ninh, đảm bảo rằng các ứng dụng được phát hành một cách an toàn và bảo mật.

CI/CD Pipeline là gì?

CI/CD Pipeline là một chuỗi các bước tự động hóa được sử dụng để đảm bảo rằng mã nguồn được kiểm tra, tích hợp, và triển khai một cách nhất quán và an toàn. Pipeline này bao gồm tất cả các giai đoạn từ khi một nhà phát triển commit mã nguồn vào hệ thống cho đến khi mã nguồn được triển khai vào môi trường sản xuất.

CI/CD Pipeline là gì?
CI/CD Pipeline là gì?

Các thành phần chính của CI/CD Pipeline

Các thành phần chính của CI/CD Pipeline
Các thành phần chính của CI CD Pipeline
  1. Source Stage (Giai đoạn nguồn): Giai đoạn này bắt đầu khi một nhà phát triển commit mã nguồn mới vào hệ thống quản lý mã nguồn (như Git). Việc commit này sẽ kích hoạt pipeline CI/CD.
  2. Build Stage (Giai đoạn xây dựng): Mã nguồn được biên dịch và xây dựng thành các gói ứng dụng hoặc container. Giai đoạn này đảm bảo rằng mã nguồn có thể được xây dựng thành công và sẵn sàng cho các bước kiểm tra tiếp theo.
  3. Test Stage (Giai đoạn kiểm tra): Mã nguồn được kiểm tra bằng cách chạy các bài kiểm tra tự động như unit tests, integration tests, và end-to-end tests. Giai đoạn này nhằm đảm bảo rằng mã nguồn không có lỗi và hoạt động như mong đợi.
  4. Deploy Stage (Giai đoạn triển khai): Mã nguồn đã qua kiểm tra được triển khai vào các môi trường staging hoặc production. Triển khai có thể được thực hiện tự động (continuous deployment) hoặc yêu cầu sự chấp thuận của con người (continuous delivery)

Ví dụ về CI/CD Pipeline

  • Developer Commit: Nhà phát triển commit mã nguồn mới vào hệ thống Git.
  • Automated Build: Hệ thống CI/CD tự động biên dịch mã nguồn và xây dựng thành gói ứng dụng.
  • Automated Testing: Hệ thống chạy các bài kiểm tra tự động để đảm bảo mã nguồn không có lỗi.
  • Staging Deployment: Mã nguồn đã kiểm tra được triển khai vào môi trường staging để kiểm tra cuối cùng.
  • Production Deployment: Nếu mã nguồn vượt qua tất cả các bài kiểm tra, nó được triển khai vào môi trường production.
  • Monitoring and Feedback: Hệ thống giám sát và thu thập phản hồi từ người dùng để cải thiện các phiên bản tiếp theo.

Áp dụng CI/CD với Gitlab 9

Trong khuôn khổ bài viết này, mình sẽ hướng dẫn mọi người cài đặt Gitlab 9 để quản lý source code, và trên công nghệ Git. Đòi hỏi của tất cả setup này là trên server đã cài Docker, nếu các bạn chưa có docker trên server thì có thể tham khảo các bài viết về docker trên TopDev cũng như tìm kiếm thêm trên google.

Bạn chạy câu lệnh sau để tạo một container chứa Gitlab 9.

docker run --detach \
--hostname code.teamcrop.com \
--publish 8080:80 --publish 2222:22 \
--name gitlab9 \
--restart=always \
--volume /gitlab9/config:/etc/gitlab \
--volume /gitlab9/logs:/var/log/gitlab \
--volume /gitlab9/data:/var/opt/gitlab \
gitlab/gitlab-ce:9.0.3-ce.0

Nếu ai từng dùng docker sẽ hiểu ý nghĩa câu lệnh trên. Đơn giản là mình sử dụng image gitlab/gitlab-ce:9.0.3-ce.0. Có mount ra 3 thư mục bên ngoài máy ở thục mục /gitlab9 để lỡ có chuyện gì chỉ cần stop, remove container, khi chạy docker run lại thì không bị mất dữ liệu, source code. Câu lệnh trên có map 2 port là 8080 và 2222 tương ứng tới 2 port 80 và 22 trong container. Mình mapping port vậy bởi vì trên server dev này có rất nhiều service khác và đã chiếm port 80 và 22 (ssh ^^!).

Sau khi bạn start container thì có thể truy cập vào từ ip hoặc domain (mà bạn đã trỏ DNS), ví dụ: http://code.teamcrop.com:8080 là có thể vào gitlab 9, tài khoản mặc định là `root`.

Không có gì cao siêu ở cài đặt này, có thể tham khảo thêm ở trang chủ của Gitlab.com nhé.

Quản lý sourcecode bằng Gitlab

Về phần này thì mình không cần nói dài dòng, cũng như một hệ thống git thông thường (như github..), bạn có thể tìm hiểu thêm về git và Gitlab để team có thể cùng làm việc và quản lý sourcecode trên Gitlab.

CI/CD với Gitlab CI

Thông thường, các hệ thống quản lý sourcecode không kèm theo cơ chế CI/CD. Nếu bạn muốn triển khai thì buộc phải liên kết đến repository, phân quyền đủ kiểu để hệ thống đó có thể lấy source code từ respository. Trước đây bên mình sử dụng Jenkins cho việc này. Tuy nhiên, từ khi Gitlab ra mắt tính năng Gitlab CI, kèm theo sự chậm chạp, rắc rối và rề rề của Jenkins thì mình quyết định chia tay với Jenkins và đến với Gitlab CI luôn, và quả là một bộ đôi hoàn hảo. Code để ở Gitlab, rồi trong đó có cho cài đặt CI/CD để test và deploy code tự động.

Cũng như một số bạn mới lần đầu tiếp xúc với Gitlab CI, mình đã từng thấy nó khó hiểu và cao siêu vì setup tùm lum. Rồi setup xong lại không biết nó chạy thế nào, cơ chế deploy source code ra sao. Tuy nhiên, sau một vài “va chạm” đầy mồ hôi và nước mắt thì cũng nắm và hiểu được cách Gitlab CI vận hành, và nay chia sẻ cho mọi người để vận dụng cho workflow của mình.

Để dùng được Gitlab CI thì bạn cần có 2 thành phần sau: file `.gitlab-ci.yml` nằm ở thư mục gốc của dự án và Gitlab Runner.

Tham khảo thêm việc làm lập trình GIT lương cao tại Topdev

File .gitlab-ci.yml là gì?

Mặc định Gitlab không có cơ chế nào về CI cho dự án của bạn, chỉ khi nào dự án của bạn có file .gitlab-ci.yml nằm ở thư mục gốc thì Gitlab mới nhận dạng được dự án của bạn muốn áp dụng Gitlab CI. File này có định dạng và cần hợp lệ thì mới có thể hoạt động được, không thì khi bạn push code lên thì Gitlab sẽ báo lỗi file định dạng nội dung của file cấu hình không hợp lệ. Tham khảo cú pháp của cấu hình này tại https://docs.gitlab.com/ce/ci/yaml/

Trong file này có gì? File này có một số section để khai báo như trước khi chạy test thì làm gì, khi test thì thực hiện lệnh gì (vd chạy linter check cú pháp, chạy PHPUnit test…), test xong rồi thì thực hiện deploy đi đâu (beta, production..) với câu lệnh gì (vd: rsync..). Tùy đặc thù ngôn ngữ lập trình, cách đóng gói của dự án mà sẽ có các lệnh tương ứng thực hiện.

Tới đây các bạn sẽ có câu hỏi là vậy cái gì sẽ chạy, thực thi các câu lệnh, chỉ dẫn trong file config trên? Hay là Gitlab Server sẽ chạy. Nếu là Gitlab server chạy thì nếu dự án mình thực hiện những lệnh không có thì sao, vì gitlab server thì cũng chỉ chứa gitlab và các program cho nó chứ đâu thể cài sẵn các program? Bên cạnh đó, mỗi lần chạy thì các thông tin liên quan đến file tạm có bị reset lại hay không?

Nếu bạn đi đến đây thì bạn đã đoán được là thực ra “cái thứ” thực thi các chỉ dẫn, câu lệnh trong file .gitlab-ci.yml không phải là Gitlab Server (là cái container đang chạy gitlab 9 mình start ở trên), mà đó chính là Gitlab Runner. Wow! Welcome to matrix!

Gitlab Runner là gì?

Gitlab Runner là thành phần cực kỳ quan trọng trong workflow Gitlab CI. Nếu không có Runner thì sẽ không có lệnh test, deploy nào được thực thi. Runner có nhiều loại, phân biệt dựa vào cái gọi là executor. Khi khởi tạo runner, bạn sẽ phải chọn nó là loại executor nào, và nó sẽ quyết định môi trường thực thi các câu lệnh trong file config ở trên. Bạn có thể tham khảo link https://docs.gitlab.com/runner/executors/ để biết sự khác nhau của các executor cũng như cách cài đặt, cấu hình chúng.

Do đặc thù hệ thống đã có docker, nên bên mình chỉ sử dụng executor loại Docker mà thôi. Và bên dưới là câu lệnh docker để start một Gitlab Runner.

docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

Ở đây bạn sẽ thấy container này mount thư mục config ra ngoài, bởi vì mình muốn các cấu hình của runner không bị mất khi stop/remove container. Chỉ cần start lại là giữ được cấu hình. Ngoài ra, nó còn mount docker.sock vào bên trong container, đây là cách để executor loại docker có thể tận dụng lệnh docker bên ngoài host để thực hiện lệnh tạo container phụ trong quá trình runner chạy (test, deploy).

Start container lên chỉ là bước đầu, bởi vì lưu ý là tới thời điểm này, Runner này không có liên quan gì đến Gitlab server của chúng ta. Cần một bước link lại (gọi là register) runner này vào trong Gitlab server để mình có thể cho phép các dự án dùng runner trong quá trình CI/CD.

Xem link này https://docs.gitlab.com/runner/register/index.html để biết cách register runner này vào Gitlab Server.

Dưới đây là hình ảnh tham khảo bạn có thể dùng trong quá trình register 1 runner. Có 2 thông tin quan trọng là 1 cái URL và một random token. Và cái URL đặc biệt lưu ý là thường thêm /ci sau domain. Ví dụ ở trường hợp của mình setup là http://code.teamcrop.com/ci

Triển khai CI/CD với Gitlab

Sau khi Runner đã được gán vào Gitlab Server, bạn có thể enable runner này cho một hoặc nhiều dự án trong Gitlab. Hình bên dưới minh họa việc gán Runner vào dự án trong phần cài đặt Pipeline của Gitlab 9.

Triển khai CI/CD với Gitlab

Đến đây hầu như đã cấu hình xong. Dự án đã kích hoạt 1 runner, và dự án đã có file .gitlab-ci.yml. Từ bây giờ, mỗi lần code được đưa lên thì runner sẽ thực thi test cũng như deploy dựa trên các câu lệnh được khai báo trong file cấu hình.

Khai báo biến để dùng trong các câu lệnh

Trong một số trường hợp, bạn có thể khai báo biến để có thể dùng trong các lệnh của runner. Có 3 nơi có thể cấu hình biến:

1. Cấu hình ngay bên trong file .gitlab-ci.yml
2. Cấu hình trong dự án. Vào Settings // CI/CD Pipelines, phần Secret variables (xem hình)

3. Cấu hình bên trong file config của runner.

Bạn có nhớ lúc mình khởi tạo runner, có chỉ định một thư mục chứa config không, đây chính là nơi cấu hình chung cho runner này. Trong thư mục này sẽ có file là config.toml. Và bạn có thể gán biến trong cấu hình của từng runner. Cấu hình ở đây có một lợi thế là cứ runner này chạy sẽ nhận được biến đã cấu hình. Bạn không cần phải cấu hình nhiều lần ở từng dự án.

Triển khai CI/CD với Gitlab

Ví dụ về một file .gitlab-ci.yml

Bên dưới là file cấu hình của một dự án trong hệ thống Microservices thuộc Teamcrop:

before_script:

- export "PATH=$PATH:/vendor/bin"
# Install ssh-agent if not already installed, it is required by Docker.
# (change apt-get to yum if you use a CentOS-based image)
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

# Run ssh-agent (inside the build environment)
- eval $(ssh-agent -s)

# For Docker builds disable host key checking. Be aware that by adding that
# you are suspectible to man-in-the-middle attacks.
# WARNING: Use this only with the Docker executor, if you use it with shell
# you will overwrite your user's SSH config.
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

variables:

# Change this base on project name
DEPLOYMENT_FOLDER_NAME: "tc-file"

test:

image: voduytuan/gitlab-php-ci
script:
- bash ./ci/phplint.sh ./src/
- phpcs --config-set ignore_errors_on_exit 1
- phpcs --config-set ignore_warnings_on_exit 1
- phpcs --standard=PSR2 --ignore=./src/index.php --error-severity=1 --warning-severity=8 -w --colors ./src/
- phpunit --configuration ci/phpunit.xml

dev:

image: voduytuan/gitlab-php-ci
stage: deploy
script:
- ssh-add <(echo "$DEPLOYER_BETA_KEY")
- echo "Deploy to $DEPLOYMENT_FOLDER_NAME"
- rsync -avuz -e "ssh -p 22" --exclude-from="ci/deploy_exclude.txt" $CI_PROJECT_DIR/src/ $DEPLOYER_BETA_USER@$DEPLOYER_BETA_IP:/teamcrop/services/$DEPLOYMENT_FOLDER_NAME/src
only:
- dev

production:

image: voduytuan/gitlab-php-ci
stage: deploy
script:
- ssh-add <(echo "$DEPLOYER_PRODUCTION_KEY")
- echo "Deploy to $DEPLOYMENT_FOLDER_NAME"
- rsync -avuz -e "ssh -p 22" --exclude-from="ci/deploy_exclude.txt" $CI_PROJECT_DIR/src/ $DEPLOYER_PRODUCTION_USER@$DEPLOYER_PRODUCTION_IP:/teamcrop/services/$DEPLOYMENT_FOLDER_NAME/src
only:
- master
when: manual

Trong ví dụ trên, phần test bên mình làm 3 việc:
– Chạy linter để đảm bảo sourcecode không bị lỗi cú pháp (phplint)
– Kiểm tra source code có theo chuẩn PSR2 hay không.
– Chạy PHPUnit

Còn về phần deploy thì có cấu hình 2 task là deploy dev và production. Ở task dev thì auto và lấy code từ branch dev. Còn task production deploy từ branch master, tuy nhiên, có chế độ deploy manual, tức là nhấn thì mới deploy.

Triển khai CI/CD với Gitlab

Về phần deploy source code thì sử dụng rsync để đẩy code từ repo sang server. Bạn sẽ thấy cú pháp giống nhau, chỉ khác là cấu hình đẩy đi đâu, với user nào và private key nào.

Do đặc thù của commandline nên sử dụng privatekey để đồng bộ code thông qua rsync. Do đó, trong project mình có cấu hình privatekey của user. Và bên server nhận (beta, production) mình đã đưa public key vào file authorized_keys. Bạn có thể tìm hiểu thêm về setup và generate cặp public/private key cho user deploy để hỗ trợ quá trình này tại link https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2. Hay ngắn gọn là thực hiện câu lệnh “ssh-keygen -t rsa -C “youremail@gmail.com” -b 4096″, nhập vài thông tin là bạn đã có public key (id_rsa.pub) để đem bỏ lên server (beta, production) và private key (id_rsa) đem bỏ vào setting biến môi trường.

Hy vọng bài viết này về CI/CD là gì sẽ giúp được cho quá trình setup CI/CD cho hệ thống của bạn, cũng như tăng tốc quá trình phát triển dự án. Nếu thấy bài viết hay và hữu ích, hãy chia sẻ cho các anh em khác để cùng trao đổi và giao lưu.

Đừng bỏ lỡ cơ hội tìm việc developer lên đến 3000 USD tại Topdev

TopDev cập nhật chỉnh sửa từ bài viết gốc của tác giả Võ Duy Tuấn

8 extension cần thiết dành cho VS Code

8-extension-can-thiet-danh-cho-vs-code

Các lập trình viên từ Microsoft đã làm việc cực kì ấn tượng và cho ra lò code editor khá tốt hiện nay, và những update hằng tháng của mình cho thấy bao nhiêu tâm huyết của họ để cải thiện nó.

Nhưng một editor tốt thì không thể hoàn thiện được nếu như thiếu các extension tốt. Sau đây là tổng hợp danh sách 8 extension không thể nào thiếu. Nó giúp làm việc trơn tru hơn và tiết kiệm được rất nhiều thời gian về lâu về dài.

Color Info

VS Code đã cung cấp một preview box màu trong các file CSS. Color Info cho phép bạn có cái nhìn tổng quan về các màu sắc mà bạn chọn, hoàn toàn bằng giá trị CMYK hoặc alpha. Nó giống giống color picker nên rất tiện dụng.

8 extension cần thiết dành cho VS Code

 

Git Blame

Extension đơn giản này sẽ hiển thị git blame của dòng đang được selected trên thanh status.

8 extension cần thiết dành cho VS Code

Markdown All In One

Extension này giúp bạn viết Markdown bằng cách add các shortcut như Cmd + B để bôi đậm text, Cmd + I để in nghiêng, v.v, quá tiện lợi.

Settings Sync

Nếu như bạn phải làm việc trên nhiều máy (đôi khi cả máy virtual), thì extension này là quá hợp lý, nó giúp bạn đồng bộ setting và extension nhờ có Github Gist để download/upload.

  Hướng dẫn tạo extension chrome và đưa lên store chỉ trong 5 phút

TODO Highlight

Nó giúp highlight các TODO, FIXME và bất kì keyword nào bạn xác định. Chỉ cần viết TODO: và không chỉ highlight chính nó, nó còn highlight tất cả những cái bạn đã viết trong project.

8 extension cần thiết dành cho VS Code

Vetur

Extension hỗ trợ đắc lực cho Vue. Từ autocompletion đến các snippet, bất kì frontend developer nào cũng phải có nó.

EditorConfig dành cho VS Code

VS Code không mặc định support EditorConfig. Hãy cài đặt extension và nó sẽ listen bất kì file .editorconfig nào nó gặp.

Bookmarks

Bookmarks là một extension dùng các bookmark màu xanh nhỏ trong file gutter. Nó cực kì tiện lợi khi bạn cần chuyển vị trí trong file, hoặc nếu bạn cần một cái reminder nhanh gọn trong project. Tôi cài bằng shift + cmd + = (toggle bookmark) và shift + cmd + -(bookmark tiếp) và nhờ vậy mà tôi có thể nhảy qua lại các file mà không cần phải rời bàn phím. Nó còn add một panel nhỏ ngay dưới browser để list ra tất cả các bookmark đang hoạt động trong project hiện tại.

8 extension cần thiết dành cho VS Code

Những gợi ý khác tốt không kém

AutoFileName

Extension này khá rõ ràng. Chỉ cần type ở đầu file/ directory và nó sẽ tự động điền tên cho bạn. Tiện lời khi bạn cần dẫn đến file nằm trong node_modules.

cdnjs

Mọi khi bạn thường truyền các dependency trong các file Javascript nhờ có Webpack. Nhưng khi bạn cần mockup cái gì đó nhanh gọn, extension này sẽ hỗ trợ. Chỉ cần sử dụng command palette và bạn có thể insert các URL hoặc các tag script/style của tất cả các library dùng cdnjs.

8 extension cần thiết dành cho VS Code

  4 lý do để VS Code là Text Editor ưa thích của mọi lập trình viên

Topdev

Xem ngay những tin đăng tuyển lập trình viên lương cao trên TopDev

Đồng hành cùng Renova Cloud đối tác ủy quyền của Amazon Web Services tại Vietnam Mobile Day 2018

Renova Cloud là đối tác được ủy quyền của Amazon Web Services. Chuyên cung cấp các dịch vụ tư vấn, triển khai và quản lý các giải pháp trên điện toán đám mây cho doanh nghiệp. Mục tiêu của Renova Cloud là hỗ trợ doanh nghiệp trở nên linh hoạt, tiết kiệm chi phí và tối ưu hiệu suất khi vận hành mô hình kinh doanh trên nền tảng mây.

Renova Cloud cung cấp các dịch vụ

▶ Tư vấn: Một đối tác cloud đáng tin cậy với đầy đủ các khả năng kĩ thuật và chuyên môn mang đến tất cả các giải pháp tùy chỉnh cho riêng bạn.

▶ Triển khaI: Cho dù cloud của bạn là on-premise hay off-premise hay hybrid, yếu tố bảo mật là vấn đề cốt lõi. Đồng hành cùng Renova Cloud, bạn sẽ không phải lo lắng bất kì điều gì.

▶ DevOps: Linh hoạt và sáng tạo. Hỗ trợ doanh nghiệp nhanh chóng vận hành và đi vào hoạt động Thời gian phản hồi và đi vào hoạt động sẽ nhanh hơn khi đến với chúng tôi.

▶ Quản lý giải pháp: Đẩy nhanh triển khai, đơn giản hóa vận hành và trao quyền cho doanh nghiệp để đưa ra các quyết định  với các dịch vụ quản lý trọn gói.

Tới năm 2021, hơn 70% người dùng doanh nghiệp sẽ được trang bị đáng kể các năng lực trên cloud.

Dịch vụ Điện toán đám mây đã nhận được sự gia tăng bảo trợ của các doanh nghiệp có nhu cầu hoạt động hiệu quả hơn và đối mặt tốt hơn với những thách thức công nghệ mới. Là đối tác của Amazon Web Services, Renova Cloud cung cấp dịch vụ tích hợp trên điện toán đám mây cho doanh nghiệp.

Các lợi ích mà dịch vụ tích hợp này mang lại bao gồm

  • Với cách tiếp cận dựa trên hiệu quả chi phí, Renova Cloud đảm bảo với các Doanh nghiệp vừa và nhỏ (SMEs), các Doanh nghiệp lớn rằng Renova Cloud có thể tối đa hóa các giá trị họ có thể đạt được cho các dịch vụ Điện toán đám mây thông qua dịch vụ triển khai hiệu quả
  • Việc tạo ra một Remote Data Center (Trung tâm dữ liệu từ xa) cũng là một khía cạnh quan trọng đối với việc sử dụng Dịch vụ Điện toán đám mây
  • Các trung tâm dữ liệu (Data Center) có thể được tạo ra ngay lập tức, tại bất kỳ địa điểm nào, không có giới hạn địa lý đối với việc sử dụng Dịch vụ Điện toán đám mây. Việc lên kế hoạch tài chính cho một Doanh nghiệp hết sức dễ dàng khi sử dụng Dịch vụ Điện toán đám mây, cũng như linh hoạt về chi phí và có thể đưa ra các phân tích quan trọng cần thiết cho sự phát triển của Doanh nghiệp.
  • Renova Cloud cung cấp dịch vụ Điện toán đám mây như một lựa chọn tin cậy, cung cấp dịch vụ CNTT tập trung hoàn toàn tùy biến nhằm xử lý nhu cầu của từng khách hàng. Renova Cloud thấu hiểu sự quan trọng trong việc cung cấp một phạm vi rộng lớn các dịch vụ nhằm quản lý tốt toàn bộ nhu cầu CNTT của một Doanh nghiệp.

Mr. Doron Shachar – CEO của Renova Cloud sẽ là một trong các diễn giả hot nhất Vietnam Mobile Day 2018. Nhanh tay đăng kí và đừng bỏ lỡ cơ hội gặp gỡ và chia sẻ với đại diện của Renova Cloud nhé

Topdev

Điểm qua những xu hướng mobile đáng chú ý trong năm 2024

Với một quốc gia có trên 90 triệu dân như Việt Nam, theo ước tính đến năm 2020, thế giới sẽ có 20,8 tỷ kết nối và xu hướng phát triển theo hướng xã hội thông minh, thành phố thông minh. Rõ ràng môi trường khởi nghiệp trong lĩnh vực ứng di động tại Việt Nam là một mảnh đất vô cùng màu mỡ.

Năm 2023 đã đi được ¼ chặng đường, các developer nên chuẩn bị tinh thần cho 8 xu hướng tiếp theo sẽ là:

vietnam mobile day

Progressive web app trỗi dậy

Mobile-First Indexing là cốt lõi

Tốc độ mobile app quyết định mọi thứ vietnam mobile day

Content riêng biệt cho user vietnam mobile day

Micro-moment có vai trò lớn AI mobile day

A.I – trí tuệ nhân tạo là con át chủ bài vietnam mobile day

Livestream sẽ là chiến lược social mới vietnam mobile day

Thanh toán trực tuyến bằng mobile vietnam mobile day

AR và VR sẽ thống tri thị trường

Và còn rất nhiều xu hướng mobile đáng chú ý nữa sẽ được cập nhật trong ngày hội công nghệ lớn nhất Việt Nam – Vietnam Mobile Day.

vietnam mobile day

Bên cạnh đó, VIETNAM MOBILE DAY LẦN THỨ 8 sẽ còn mang đến cho bạn hơn 100 chuyên đề hấp dẫn xoay quanh các nhóm chủ đề lớn:

  • What is the future of Fintech? 
  • _Bl0ckch@in: Bubble Or Revolution 
  • Mobile App and Game: All about the red ocean strategy
  • AI world domination? Real or fiction? 
  • The future of Marketing
  • Cùng nhiều nhóm chủ đề hấp dẫn khác

Bạn còn chần chừ gì nữa, đăng kí ngay để đồng hành cùng Vietnam Mobile Day

Nhược điểm của Blockchain

Bài chia sẻ của tác giả Nghiêm Tiến Vĩnh tại cộng đồng Launch

Blockchain được biết đến là công nghệ đứng đằng sau hệ thống tiền mã hóa nổi tiếng nhất thế giới – Bitcoin. Có thể nói khi Bitcoin gây bão trên thị trường tài chính thì Blockchain cũng gây sốt trong giới công nghệ. Số lượng công ty có ý định nghiên cứu và áp dụng Blockchain ngày càng nhiều, lương trả cho kỹ sư Blockchain ngày càng cao. Công ty nào cũng muốn đi trước đối thủ, áp dụng công nghệ được cho là tương lai của thế giới này. Blockchain được hứa hẹn sẽ thay đổi cuộc sống 1 cách sâu sắc, không chỉ trên Internet mà còn trong thế giới thực, từ tài chính cho tới nông nghiệp. Nhưng…

Sau một thời gian tìm hiểu, tôi lại có suy nghĩ khác. Có phải người ta đã quá tô hồng những lợi ích của Blockchain mà bỏ qua những nhược điểm “chết người” của nó ? Ít có bài phân tích viết về nhược điểm của Blockchain, và do đó, tôi muốn viết bài này mong có thể cùng thảo luận với tất cả mọi người.

Câu hỏi gốc mà tôi đặt ra là ” Tôi có thể sử dụng Blockchain vào ứng dụng hiện tại không ? “Và câu trả lời mà tôi tìm được là “Phần lớn những bài toán giải được bằng Blockchain thực ra cũng có thể giải được bằng cách khác”
(Lưu ý: tôi muốn hướng đến những bài toán/ứng dụng không liên quan lĩnh vực tài chính)

Gần đây tôi có tham gia 1 hội thảo về Blockchain, có sự tham gia và trình bày của VeriMe. Theo trình bày của bạn thì nhờ ứng dụng công nghệ Blockchain mà các bạn ấy đã giải được bài toán mà nhiều năm chưa giải được. Theo cách truyền thống, các bạn ấy phải lưu trữ thông tin người dùng trên 1 máy chủ trung tâm, và như thế sẽ gặp vấn đề về lòng tin (như vụ Facebook vừa qua). Giải pháp hiện tại là các bạn dùng cách lưu trữ phân tán (lưu trên chính thiết bị người dùng) và áp dụng thêm tiền kỹ thuật số (đồng VME) để tạo mô hình kinh tế trong phần mềm.


Vấn đề ở đây là các bạn cho rằng các bạn đã ứng dụng Blockchain để giải quyết bài toán gốc – NHƯNG – không phải thế. Cái các bạn ứng dụng là “tiền kỹ thuật số”, để tạo ra “giá trị gia tăng” cho sản phẩm. Các bạn không lưu trữ thông tin gì trên Blockchain (mà lưu trực tiếp trên máy người dùng) do đó không thể nói là ứng dụng công nghệ Blockchain. Nếu bỏ phần tiền đi trong ứng dụng của bạn, thì nó không khác gì một ứng dụng bình thường, chỉ là chuyển từ lưu trữ trên server sang lưu trữ ngay trên thiết bị cuối.

Có nhiều sản phẩm khác cũng được giới thiệu là áp dụng công nghệ Blockchain như truy xuất nguồn gốc, logistic, lưu trữ dữ liệu.. Đây là những bài toán cũ, vốn đã có những giải pháp ở mức này hay mức khác, và nay được nghiên cứu để áp dụng Blockchain. Nhưng liệu việc áp dụng Blockchain vào những lĩnh vực này có hiệu quả không ? Khi mà Blockchain tồn tại những nhược điểm sau :

1. Thông tin lưu trữ mãi mãi và không thể sửa được

Người ta nói đến đặc điểm này của Blockchain như là một ưu điểm nổi trội của công nghệ này. Chúng ta có thể thấy đây là giá trị cốt lõi của Blockchain khi áp dụng vào tiền mã hóa. Nhưng, nếu áp dụng vào một ứng dụng khác thì sao ?
– Truy xuất nguồn gốc có cần lưu trữ thông tin mãi mãi không ? Liệu ngày hôm nay tôi có muốn biết 5 năm trước mình đã ăn cái gì, mua ở đâu, trồng như thế nào không ?
– Khi lưu trữ file trên nền tảng blockchain, tôi có cần biết cách đây 10 năm tôi đã upload file gì lên không?

Trong phần lớn trường hợp, câu trả lời sẽ là “Không”. Vấn đề của blockchain là nó lưu trữ mọi thứ mãi mãi, và nó có thể gây ra một sự lãng phí lớn về không gian lưu trữ. Càng sử dụng lâu, càng nhiều “rác”. Bitcoin hiện cần tối thiểu 145Gb trên máy tính để download toàn bộ giao dịch đã phát sinh. Đấy là mới chỉ những thông tin về giao dịch (mua-bán), nếu nó phải thêm vào những thông tin khác về sản phẩm, vận chuyển, và những metadata khác nữa thì sẽ thế nào. Mỗi node khi muốn tham gia vào hệ thống phải chuẩn bị ổ cứng dung lượng lớn để download sổ cái chung này.

2. Vấn đề băng thông

Mỗi node cần liên lạc với những node khác để nhận giao dịch về, xác thực giao dịch và công bố kết quả kiểm tra giao dịch. Những nhiệm vụ này làm tốn băng thông mạng, có thể ảnh hưởng lớn tới mạng Internet trong khu vực. Từ link ở phần 1 các bạn cũng có thể thấy băng thông cần thiết là 500Mb download/1 ngày và 5Gb Upload/ngày. Wtf ?

3. Vấn đề độ trễ xác minh giao dịch

Không ai xa lạ với vấn đề này. Mạng Bitcoin càng lúc càng mất nhiều thời gian để xác minh 1 giao dịch. Đã có những giải pháp kỹ thuật hoặc những mô hình Blockchain cải tiến để giải quyết vấn đề này. Nhưng thực sự thì vẫn chưa thể bằng những mô hình truyền thống như Visa. Tôi đang có ý định áp dụng tiền mã hóa thành 1 loại tiền để giao dịch trên ứng dụng livestream của mình – Myidol.live. Đây là 1 ứng dụng livestream tặng quà như Bigo nhưng có thể chạy được trên Facebook, Youtube. Khách xem tặng tiền cho người đang livestream – concept cơ bản là vậy. Vấn đề xác minh giao dịch gây ra phiền toái không hề nhỏ ở đây. Khi khách hàng tặng quà cho idol, người ta muốn thấy quà của mình xuất hiện lên màn hình – ngay lập tức – hoặc ít ra cũng trong phạm vi 30s. Không thể tặng quà xong chờ 10 phút sau thì mới biết giao dịch đó có thành công hay không. Pain in the ass.

4. Vấn đề về xử lý

Mạng Blockchain như Bitcoin sử dụng Proof of Work, nôm na là “làm việc hăng say, vận may sẽ tới”. Càng bỏ nhiều công sức thì xác suất kiếm được thưởng càng cao. Việc này đã tạo nên cơn sốt card đồ họa mà chúng ra đã thấy. Người người nhà nhà thi nhau tậu dàn trâu cày khủng để đào tiền kỹ thuật số và duy trì mạng Blockchain.
Điều này đồng nghĩa việc xây dựng mạng blockchain trên ứng dụng di động là bất khả thi do giới hạn về năng lực tính toán. Tôi có ý tưởng xây dựng một ứng dụng voting nhỏ trên smartphone cho cộng đồng, với tham vọng minh bạch hóa quá trình bầu cử (lý thuyết là vậy). Nhưng ứng dụng như vậy sẽ gây nóng máy và hao pin, chẳng ai thích điều đó cả. Kể cả khi toàn bộ cộng đồng tham gia và sử dụng ứng dụng voting của tôi, cũng sẽ gặp phải vấn đề tiếp theo

5. Vấn đề tấn công quá bán

Có 2 cách để ứng dụng Blockchain cho sản phẩm của mình. 1 là ứng dụng 1 mạng lưới Blockchain đã có sẵn – lựa chọn thường thấy là mạng ETH. Cách thứ 2 là xây dựng mạng Blockchain của riêng mình. Việc đó nảy sinh vấn đề. Tôi đã nghĩ đến việc áp dụng Blockchain trong việc kê khai hóa đơn doanh nghiệp. Công ty này bán hàng cho công ty khác, đó là 1 giao dịch. Nếu có thể áp dụng được Blockchain thì thực sự tăng tính minh bạch và giảm tải cho khâu kiểm toán. Ngoài việc 1 mạng lưới như vậy cần sự vào cuộc mạnh mẽ của chính quyền, thì những thông tin như vậy sẽ không muốn áp dụng 1 mạng Blockchain công cộng như ETH. Nhưng xây 1 mạng riêng thì không phải là chuyện dễ dàng. Phải yêu cầu mỗi doanh nghiệp cung cấp 1 máy tính kết nối mạng để duy trì và xác thực mạng Blockchain?

Nếu mạng tự xây dựng không đủ độ lớn cần thiết, nguy cơ bị tấn công quá bán là rất cao (Trường hợp 1 node có năng lực tính toán lớn hơn 50% toàn hệ thống có thể thao túng được kết quả xác thực giao dịch)

6. Vấn đề trustless

Mạng Blockchain được xây dựng với ý tưởng là bạn không cần tin tưởng ai để thực hiện giao dịch. Bạn tự mình xác minh mọi giao dịch và đảm bảo không có gian lận – và nó thực sự hoạt động tốt. Nhưng smart contract có còn đảm bảo được điều này? Smart contract là một ý tưởng rất hay mà tôi hứng thú tìm hiểu. Concept đơn giản nhất là tôi và anh cá cược về thời tiết ngày mai nắng hay mưa. Cả 2 cùng đưa tiền cho 1 cái smart-contract giữ, nếu nắng, nó tự động chuyển tiền cho anh, nếu mưa nó chuyển tiền cho tôi. Mọi việc có vẻ công bằng và minh bạch. Nó giải quyết vấn đề là không cần đưa tiền cho 1 người thứ 3 mà không biết có thể tin tưởng được hay không. Vậy, liệu có thể tin tưởng Smartcontract ?
Smartcontract luôn luôn hoạt động theo những gì nó được lập trình, tôi và anh đều xem được mã nguồn và biết nó làm gì, tại sao nó làm như vậy.

Trở lại ví dụ trên, vấn đề đặt ra là làm sao cái Smartcontract này nó biết hôm nay trời nắng hay mưa? Chúng ta có thể sử dụng API của 1 dịch vụ thứ 3 để xác định điều này, nhưng như thế lại quay trở lại bài toán tin tưởng. Liệu có thể tin tưởng bên thứ 3 này hay không ? Smartcontract không thể hoàn toàn 100% trustless nếu dữ liệu đầu vào là không đúng.
Không chỉ có vậy, nếu hôm nay lúc nắng, lúc mưa sẽ gây ra sự không thống nhất giữa các node và không nhận được kết quả xác đáng.

7. Vấn đề ăn cắp ý tưởng

Smartcontract là trong suốt và ai cũng có thể đọc, hiểu, biết nó làm gì. Điều đó là tốt trong 1 giao dịch, 2 bên cần hiểu rõ những gì mình kí kết. Việc này lại đặt ra 1 câu hỏi khác. Nếu tôi cung cấp cho khách hàng 1 dịch vụ có sử dụng smartcontract. Thì đối thủ cũng có thể dễ dàng copy và tạo ra dịch vụ tương tự trên Blockchain ?

8. Vấn đề bảo mật tài khoản

Blockchain cung cấp cho chúng ta một cái hòm chứa tiền và quảng cáo rằng không gì có thể phá vỡ được. Tiền của bạn sẽ mãi là của bạn, miễn là “bạn giữ chìa khóa”. Chìa khóa ở đây là 1 chuỗi ký tự dài mà bạn không thể nhớ theo cách thông thường bạn nhớ mật khẩu đăng nhập website. Và khi bạn có hàng trăm cái chìa khóa như vậy, bạn phải lưu trữ chúng ở một nơi nào đấy. Chúng ta lại quay lại vấn đề cũ, thay vì làm sao để giữ tiền an toàn thì làm sao giữ chìa khóa được an toàn.

Có rất nhiều câu chuyện kể về một anh chàng nào đấy mất đi cả 1 gia tài chỉ vì thanh lý máy tính cũ, mà trong đó có chứa chìa khóa tới ví Bitcoin đào từ nhiều năm trước. Những website như blockchain.info cho phép bạn tạo ví và lưu trữ chìa khóa trên đó thì lại đưa hệ thống về bài toán lưu trữ tập trung, dễ dàng bị hacker ghé thăm và đánh cắp tiền.
Và khi bạn muốn đưa ví blockchain vào ứng dụng của mình, bạn sẽ phải trả lời câu hỏi : “Ứng dụng hay người dùng sẽ là bên giữ chìa khóa ?” – Cách nào cũng rắc rối cả.

Đây là những đúc kết của tôi khi cố gắng mày mò tìm cách ứng dụng Blockchain vào những sản phẩm của mình. Và kết luận của tôi là “Blockchain chỉ phù hợp với ứng dụng Finance; với những ứng dụng Non-Finance, chúng ta sẽ có cách tiếp cận đơn giản và hiệu quả hơn Blockchain nhiều lần!” Những ý kiến này hoàn toàn là quan điểm cá nhân và tôi rất muốn được lắng nghe ý kiến phản biện của bạn.

Tham khảo thêm vị trí tuyển lập trình viên Blockchain cho bạn

Với những đặc điểm ưu việt, nhưng _Blockch@in vẫn còn đó những tồn tại những nhược điểm như trên. Vậy, liệu bạn đã có riêng cho mình những chiến lược toàn diện khi ứng dụng công nghệ này chưa?

Với topic“UMBALA NETWORK – A _BL0CKCH@IN BASED CAMERA STREAMING ECONOMY” tại VIETNAM MOBILE DAY LẦN THỨ 8, diễn giả NGUYỄN MINH THẢO – FOUNDER & CEO của UMBALA sẽ trực tiếp chia sẻ những vấn đề xoay quanh Blockhain trong tương lai cũng như những kinh nghiệm hữu ích từ mạng lưới Umbala trong suốt thời gian anh dẫn dắt.

Tham gia Việt Nam Mobile Day để nhận được những tài liệu hấp dẫn nhất về Blockchain:

 THỜI GIAN:
– 27/08/2021 tại Hồ Chí Minh.
– 30/08/2021 tại Hà Nội.

THÔNG TIN CHI TIẾT VÀ ĐĂNG KÍ: https://www.facebook.com/mobiledayevent/

Thời của Big Data: Càng to thì càng tốt

BIGDATA-BETTER

Khái niệm Big Data (dữ liệu lớn) là một thuật ngữ được nhắc đến rất nhiều trong những năm vừa qua, và vẫn chưa có dấu hiệu giảm nhiệt trong năm 2021. Hiện nay, có nhiều sự thổi phồng xung quanh khái niệm trên, và điều đó thật đáng tiếc, vì Big Data là một công cụ cực kì quan trọng mà nhờ đó, xã hội sẽ trở nên tiến bộ hơn.

Trong quá khứ, chúng ta thường nhìn vào những dữ liệu nhỏ, tìm hiểu ý nghĩa của chúng, để cố gắng hiểu về thế giới, và giờ đây, ta có nhiều dữ liệu hơn, nhiều hơn bao giờ hết. Những gì ta biết là khi có một lượng lớn dữ liệu, ta có thể làm những điều mà trước kia không thể.

Dữ liệu lớn thì mới mẻ và vô cùng quan trọng. Một nghiên cứu được thực hiện bởi IBM với 1900 giám đốc điều hành được khảo sát trên toàn cầu cho thấy những doanh nghiệp, tổ chức hoạt động dựa trên việc phân tích số liệu có sự chênh lệch về doanh thu vượt trội là 33%, và chính điều này lý giải cho việc Big Data đang ngày càng được sử dụng rộng rãi cho mọi lĩnh vực từ thương mại, tài chính, viễn thông, y tế, giao thông vận tải cho tới an ninh và quản lý công.

vietnam mobile day

Dĩ nhiên, dữ liệu lớn đương nhiên không hoàn hảo. Trong nhiều trường hợp và hoàn cảnh khác nhau, nó sẽ rất dễ thay đổi và mang theo mình nhiều nguy cơ tiềm tàng chưa thể đong đếm được hết. Nhưng quy cho cùng thì, công cụ nào có tốt hay xấu cũng phụ thuộc vào chính người sở hữu và sử dụng nó mà thôi.

Đến với sự kiện Vietnam Mobile Day, diễn giả Ông Xuân Hồng – một gương mặt không còn quá xa lạ với cộng đồng lập trình sẽ có bài chia sẻ chuyên sâu về chủ đề “Credit Scoring trong thời đại Big Data”, hứa hẹn sẽ mang đến một cái nhìn mới về việc chấm điểm tín dụng được sử dụng trong Big Data hiện nay.

Anh Hồng sở hữu một lí lịch “khủng” với gần 5 năm trong ngành IT và gần 2 năm trong riêng lĩnh vực Data Analyst sau khi tốt nghiệp thạc sĩ tại JAIST (Japan Advanced Institute of Science and technololy). Anh sở hữu vốn kiến thức sâu rộng liên quan đến Dữ liệu, Hệ thống và những xu hướng công nghệ nổi bật thời gian qua như Machine Learning, Python, Java, Scala, GNU/ Linux, NodeJS, MongoDB, PostgreSQL, MySQL, Apache Spark, Docker…

Để đồng hành cùng diễn giả Ông Xuân Hồng, đừng ngần ngại đăng kí những chiếc vé giới hạn ngay hôm nay nhé!

 THỜI GIAN:
– 08/2021 tại Hồ Chí Minh.
– 09/2021 tại Hà Nội.

THÔNG TIN CHI TIẾT VÀ ĐĂNG KÍ:

– Website: http://mobileday.vn/
– Event Page: https://www.facebook.com/mobiledayevent/

Text Editors: Atom và Sublime

CHỌN TEXT EDITOR

Có rất nhiều lựa chọn text editor cho bạn. Atom và Sublime Text 3 là một trong những text editors nổi nhất hiện giờ.

Sublime Text đã là sự lựa chọn khá phổ biến lâu nay trong giới lập trình. Nó ổn dịnh và đáng tin cậy.

Atom ra mắt bởi GitHub sau Sublime Text. Đây là một text editor hoàn toàn tùy chỉnh. Vì Atom được viết trên HTML, CSS, và JavaScript, bạn có thể tự tùy chỉnh nếu bạn có sử dụng các ngôn ngữ trên.

Text editor nào cũng đều rất có ích cho việc lập trình, vì thế nên bạn cần chọn 1 editor phù hợp rồi dùng thuần thục cho quen. Khi bạn đi sâu hơn vào sự nghiệp lập trình, hãy thử một text editor khác để xem các features khác có phù hợp với workflow của mình hay không.

I. ATOM

Atom là một text editor miễn phí do Github tạo nên. Atom là một open source, nghĩa là tất cả các code của nó đều có thể đọc được, thay đổi theo mục đích sử dụng và thậm chí là đưa ra các cải thiện phù hợp. Atom là một “text editor có thể hack được” vì nó hoàn toàn tùy chỉnh. Bạn có thể xem thêm các package cho Atom thường sử dụng nhất tại đây.

KHÁM PHÁ ATOM

Adding a Project Folder
Atom mang đến cái nhìn tổng thể về project của mình, nên bạn có thể sắp xếp các folder và file khác nhau dễ dàng. Đây là cách sử dụng nó:

  1. Trong menu bar của Atom, chọn File > Add Project Folder. Nó giúp launch file manager của bạn. Hãy xác định folder chứa text hoặc file và chọn Open.
  2. Folder sẽ mở trong side pane của Atom, hiển thị các contents. Chọn từ list file, hoặc chọn một subfolder.

Chọn một Theme
Atom cho phép bạn chọn 1,300 theme khác nhau để phù hợp với color preferences và tối ưu hóa cho code dễ đọc. Các theme rơi vào 2 loại: UI (viết tắt của User Interface) và syntax.

Để thay đổi Atom theme:

  1. Trong menu bar của Atom, chọn Atom > Preferences.
  2. Trong Preferences pane, chọn Themes.
  3. Trong section Choose a Theme, bạn có thể tự xào trộn cho mình UI riêng và các syntax theme từ lựa chọn có sẵn, hoặc khám phá hơn 1,300 Atom themes có sẵn.

Install một Package
Các Package là các add-on đặc biệt giúp bạn tùy chỉnh trải nghiệm code của mình bằng Atom. Ví dụ, bạn muốn một package nhấn mạng các lỗi syntax trong lúc code. Các package như vậy gọi là các linter.

Hãy install linter-tidy cho HTML:

  1. Trên Atom menu bar, chọn Atom > Preferences > Install. Nó sẽ mở  ra Settings pane.
  2. Trong vùng search, search linter-tidy. Atom sẽ search trong database của các package.
  3. Khi Atom tìm ra linter-tidy, install package bằng cách click Install:screen shot 2016-10-06 at 4 24 26 pm
  4. linter-tidy sẽ track HTML trong lúc bạn code và sẽ báo ngay khi có lỗi syntax. Bạn có thể search hơn 4,500 Atom package tại đây.
  5. Để tắt hoặc xóa packages, chọn Atom > Prefererences > Packages, tìm package muốn hủy và chọn Disable hoặc Uninstall.

II. SUBLIME TEXT

Sublime Text cũng là một text editor khá phổ biến. Khác với Atom, Sublime Text is phần mềm có tính phí. Nhưng Sublime Text sẽ cho bạn dung thử miễn phí hoàn toàn trước khi bạn quyết định mua nó hay không. 10 package thường dùng cho Sublime text 3.

TÌM HIỂU CÁC FEATURE SUBLIME TEXT

Add một Project Folder
Giống như Atom, Sublime Text cho bạn cái nhìn tổng thể project của bạn nên bạn có thể định vị các folders và files dễ dàng. Đây là cách dùng nó:

  1. Trên thanh top menu bar, chọn Project > Add folder to project. File manager sẽ mở ra. Định vị project folder tùy ý và chọn Open.
  2. Folder sẽ mở một pane phụ của Sublime Text, hiển thị các content trong folder. Chọn từ list các files, hoặc chọn subfolder.

Chọn Color Scheme
Atom call các themes, còn Sublime Text gọi là các color scheme. Thay đổi color scheme để phù hợp với color preference của bạn và tối ưu hóa chất lượng code.

Để thay đổi color scheme của Sublime Text:

  1. Chọn Sublime Text > Preferences > Color Schemes từ thanh top menu.
  2. Chọn một color scheme từ hơn 20 option có sẵn.screen shot 2016-10-06 at 4 30 16 pm

Install một Package

Trước khi cài packages trong Sublime Text, bạn cần phải cài Package Control.

Để cài Package Control:

  1. Trên thanh top menu của Sublime Text, chọn View > Show Console. Sublime Text console sẽ mở ra phía dưới cửa sổ.
  2. Đến trang install Package Control và copy đoạn code Python  trong Sublime Text 3.
  3. Paste đoạn code vào Sublime Text console và nhấn enter. Nó sẽ báo với Sublime Text để bạn bắt đầu cài các package.
  4. Để xác nhận rằng Package Control đã được cài, chọn Sublime Text > Preferences. Hai option mới sẽ xuất hiện: Package Control và Package Settings.

Tiếp đến hãy cài html-tidy, một HTML linter cần cài cho Atom.

  1. Chọn Tools > Command Palatte
  2. Khi command palette mở ra, nhập Package Control: Install Package, và ấn enter.
  3. html-tidy phụ thuộc vào SublimeLinter. Trong search field, search SublimeLinter. Khi nó hiện trong kết quả search, chọn nó và nhấn enter.
  4. Quay trở lại command palette, và gõ lại: Package Control: Install Package
    Và nhấn enter.
  5. Search SublimeLinter-html-tidy. Khi nó hiện trong kết quả search, chọn nó và nhấn enter. Cần một lúc mới install xong.
  6. Mở file HTML và bắt đầu dùng linter!
  4 lý do để VS Code là Text Editor ưa thích của mọi lập trình viên

TopDev 

Business Analyst (BA) là gì? Học gì để trở thành một BA

ba là gì

BA hiện nay đang là ngành nghề đang cần rất nhiều nhân lực, nhưng chính xác BA (Business Analyst) là gì, làm gì, yêu cầu công việc ra sao và cần học những gì để có thể làm BA. Cùng TopDev theo dõi bài viết hôm nay để giải đáp tất cả thắc mắc xoay quanh Business Analyst.

Business Analyst (BA) là gì?

Business Analyst viết tắt là BA được hiểu là vị trí chuyên viên phân tích nghiệp vụ hay phân tích dữ liệu doanh nghiệp

BA chính là người đứng giữa, kết nối khách hàng với bên kinh doanh và đội kỹ thuật của doanh nghiệp.

Nhiệm vụ chính của BA là phân tích nhu cầu của khách hàng, sau đó truyền đạt, phối hợp với các bộ phận liên quan để có phương án giải quyết phù hợp.

ba là gì

Ngoài ra, business analyst đóng vai trò quan trọng trong việc cải thiện và tối ưu hóa quy trình hoạt động của các doanh nghiệp. Họ sử dụng khả năng phân tích kinh doanh để làm việc với các bộ phận cốt lõi của công ty, từ đó nâng cao năng suất, hiệu quả và lợi nhuận. Dưới đây là chi tiết về vai trò và trách nhiệm của Business Analyst.

BA không chỉ có trong lĩnh vực IT mà còn có trong những lĩnh vực khác như ngân hàng, logistics, y tế,… các vị trí BA này được gọi là non-IT BA.

3 vai trò chính của BA trong dự án

  1. Là người kết nối giữa các stakeholder, giữa stakeholder và nhóm phát triển.
  2. Là người hiểu về cấu trúc, chính sách, cách vận hành của tổ chức.
  3. Đề xuất các giải pháp giúp tổ chức đạt được các mục tiêu.
3 vai trò chính của BA trong dự án

Định hướng chuyên môn chính của BA

Management Analyst

Management Analyst (Chuyên gia phân tích quản lý) chịu trách nhiệm nghiên cứu và đánh giá quy trình hoạt động trong tổ chức để cải thiện hiệu suất. Họ phân tích các dữ liệu, xác định các vấn đề và đề xuất giải pháp tối ưu đ tăng hiệu suất kinh doanh cho tổ chức, công ty đồng thời tiết kiệm chi phí không cần thiết.

Systems Analyst

Systems Analyst (Chuyên viên phân tích hệ thống vận hành) tập trung vào việc nghiên cứu phân tích và thiết kế hệ thống thông tin trong tổ chức. Công việc của họ là xác định các yêu cầu của user, phân tích tính khả thi của hệ thống, và phối hợp với các developer để đảm bảo rằng hệ thống đáp ứng tốt nhất nhu cầu của doanh nghiệp.

Data Analyst

Data Analyst (Chuyên gia phân tích dữ liệu) chịu trách nhiệm thu thập, xử lý và phân tích dữ liệu nhằm cung cấp thông tin hữu ích phục vụ cho quyết định kinh doanh. Họ sử dụng các công cụ và kỹ thuật phân tích để tìm kiếm các mẫu, xu hướng và thông tin chi tiết có thể hỗ trợ trong việc ra quyết định chiến lược của tổ chức.

>> Bài viết liên quan: BA vs DA – Data Analyst khác gì Business Analyst? Giải đáp ngay!

Làm thế nào để trở thành một Business Analyst (BA)?

Để trở thành BA không nhất thiết bạn phải là người trong ngành IT, tuy nhiên để trở thành BA xịn thì đó là câu hỏi dành cho cả những người trong và ngoài ngành IT, vậy cần bổ sung những tố chất gì để trở thành BA? Chúng tôi xin đưa ra những phân tích bên dưới như sau:

BA trong lĩnh vực IT

Những bạn đang học và làm việc trong lĩnh vực IT như lập trình viên, tester nếu muốn trở thành một BA, họ cần bổ sung thêm những kiến thức cơ bản về các nghiệp vụ khác như kế toán, nhân sự, tài chính… Thường thì những người thuộc lĩnh vực này sẽ dễ dàng hơn trong việc trở thành một BA. Bởi ngoài kiến thức nền tảng chuyên về IT, thì tuỳ vào từng lĩnh vực dự án và tuỳ vào mức độ chuyên sâu của lĩnh vực đó, mà họ sẽ chỉ cần tìm hiểu thêm những kiến thức liên quan và chuyên sâu.

Tuy nhiên, đa phần thì dân kỹ thuật thường có kỹ năng mềm không tốt mấy nhất là các kỹ năng giao tiếp hay đàm phán. Vì vậy nếu mà dân kỹ thuật có 2 tố chất trên thì rất dễ trở thành BA xịn.

BA cho người không chuyên IT

Lợi thế thường thấy của nhóm non-IT BA (thường là dân kinh tế, marketing) đó là về kỹ năng giao tiếp cũng như đàm phán, họ là những người năng động, linh hoạt, và kỹ năng trao đổi cũng tốt hơn. Tuy nhiên rào cản lớn nhất của họ vẫn là kỹ thuật, để hiểu rõ, để có khả năng đàm phán thì họ cần nắm các hệ thống, quy trình kỹ thuật cần thiết, như thế thì mới có thể tư vấn rõ cho khách hàng được.

BA không xuất thân từ kỹ thuật thường làm trong các công ty/tổ chức/doanh nghiệp chỉ liên quan đến một lĩnh vực chuyên môn nào đó nhất định. Họ vẫn đóng vai trò cầu nối, nhưng sản phẩm cuối cùng mà BA này cùng nhóm phát triển phần mềm tạo ra phục vụ cho mục đích sử dụng nội bộ. Do đó, BA lúc này cần có kiến thức chuyên sâu về nghiệp vụ hơn.

business analyst

BA vừa có kiến thức về IT, vừa có kiến thức cơ bản ở các lĩnh vực khác

Những người thuộc nhóm này thường là những lập trình viên/quản lý dự án lâu năm, đã trải qua nhiều dự án ở các lĩnh vực khác nhau. Họ có kiến thức sẽ bao quát hết mọi lĩnh vực vừa IT, vừa kinh tế. Do đó, nhóm đối tượng này sẽ dễ dàng trở thành BA nhất. Tuy nhiên những người này thường có cảm giác trì trệ, chậm chạp. Vì vậy cái cần thay đổi của họ là nên thường xuyên cập nhật công nghệ mới cũng như linh hoạt trong mindset của mình mà thôi.

Đây là một trong những công việc đáng mơ ước với mức lương cao, đãi ngộ tốt. Bạn có thể xem hàng dài danh sách công ty có Business Analyst jobs tại TopDev.

Các kỹ năng cần có của một Business Analyst

Tư duy phân tích dữ liệu

Tư duy phân tích dữ liệu là nền tảng cơ bản của một Business Analyst. Khả năng xử lý và diễn giải các dữ liệu phức tạp giúp BA đưa ra những quyết định chính xác và hiệu quả. Bạn cần nắm vững các công cụ phân tích dữ liệu như Excel, SQL, hoặc các phần mềm BI (Business Intelligence) để biến dữ liệu thành thông tin có giá trị.

Brainstorming

Brainstorming là kỹ thuật tạo ra ý tưởng và giải pháp thông qua việc động não tập thể. Kỹ thuật này giúp BA thu thập các ý tưởng từ nhóm, khám phá các vấn đề và tìm ra giải pháp sáng tạo. Brainstorming thường được sử dụng để giải quyết các vấn đề phức tạp và phát triển ý tưởng mới.

Tư duy phản biện

Tư duy phản biện không chỉ giúp bạn đánh giá thông tin một cách chính xác mà còn là yếu tố then chốt trong việc phát hiện những bất thường và đưa ra giải pháp phù hợp. Kỹ năng này cho phép bạn đặt câu hỏi đúng và suy nghĩ một cách logic, từ đó hỗ trợ sự phát triển của chiến lược kinh doanh.

Kỹ năng giao tiếp

Các BA cần giao tiếp rõ ràng các chi tiết như yêu cầu dự án, thay đổi yêu cầu và kết quả test, đây là các yếu tố quan trọng quyết định thành công của một dự án hay không. Ngoài ra kỹ năng ngoại ngữ và khả năng sử dụng văn bản để giao tiếp cũng là kỹ năng thiết yếu đầu tiên trong sự nghiệp của một BA.

Với bản chất của công việc, các Business analyst dành rất nhiều thời gian tương tác với người sử dụng, khách hàng, người quản lý và team làm phần mềm.

Kỹ năng công nghệ

Để xác định các giải pháp kinh doanh, một BA nên biết những gì các ứng dụng công nghệ  đang được sử dụng, những kết quả có thể đạt được thông qua các platform hiện tại và ứng dụng các công nghệ mới. Testing phần mềm và design hệ thống kinh doanh cũng là những kỹ năng phân tích kỹ thuật quan trọng. Để giao tiếp với khách hàng bạn cần dùng ngôn ngữ kinh doanh, còn để giao tiếp với team kỹ thuật thì chắc chắn bạn phải có kỹ năng này.

Nhạy bén trong kinh doanh

Một Business Analyst cần có khả năng nhận diện các xu hướng và cơ hội trong môi trường kinh doanh. Điều này không chỉ giúp bạn hiểu rõ hơn về thị trường mà còn hỗ trợ trong việc đưa ra các giải pháp sáng tạo nhằm tối ưu hóa lợi nhuận và giảm thiểu rủi ro.

Kỹ năng xử lý vấn đề

Ngành IT luôn luôn có sự thay đổi rất nhanh, công việc của các BA cũng thường xuyên bị thay đổi. Khi các chuyên gia đang developer các giải pháp kinh doanh của khách hàng, không có gì là chắc chắn cái đó sẽ được sử dụng, do đó việc tìm ra cách để nhanh chóng giải quyết vấn đề và tiến tới hoàn thành dự án một cách thành công là một trong những điều quan trọng của một BA.

Kỹ năng ra quyết định

Đây là kỹ năng quan trọng khác của một người BA. Một BA nên có khả năng đánh giá tình hình tốt, tiếp nhận đầu vào từ các bên liên quan và chọn một ra một hướng xử lý hợp lý với tình hình các bên.

Kỹ năng quản lý

Một kỹ năng khách mà BA cần có là khả năng quản lý dự án. Lập kế hoạch phạm vi dự án, chỉ đạo nhân viên, xử lý yêu cầu thay đổi, dự báo ngân sách và giữ tất cả mọi người trong dự án trong vòng ràng buộc thời gian quy định chỉ là một số trong những kỹ năng quản lý mà một BA nên có.

Kỹ năng đàm phán và thuyết phục

Khi đấu thầu cho các dự án của khách hàng, kỹ năng đàm phán của một BA phải sử dụng thường xuyên để đạt được mục tiêu là kết quả có lợi cho công ty và một giải pháp hợp lý cho khách hàng. Để duy trì các mối quan hệ tốt giữa các team bao gồm kinh doanh hay kỹ thuật và với các đối tác bên ngoài đòi hỏi một BA phải có kỹ năng đàm phán và thuyết phục mạnh mẽ.

Học ngành nào thì có thể làm BA?

Chưa có một chuyên ngành hay trường học nào ở Việt Nam đào tạo chuyên sâu 100% về ngành học này. Tuy nhiên, để trở thành một nhân BA, bạn có thể lựa chọn một số ngành học liên quan như:

Học ngành nào thì có thể làm BA?
Các ngành học dành cho dân Business Analyst tương lai

Nhóm ngành Công nghệ thông tin

Không phải ngẫu nhiên mà những người làm trong ngành IT thường được xem là dân BA, vì đa phần dân IT là những người dễ dàng nhất trong việc chuyển đổi sang làm trong lĩnh vực phân tích nghiệp vụ. Theo đó, bạn có thể lựa chọn rất nhiều ngành học khác nhau trong ngành công nghệ thông tin để phát triển đam mê của mình:

Các ngành học này sẽ mang đến cho người học một cái nhìn cơ bản về ngành công nghệ thông tin nói chung và kỹ thuật chuyên ngành nói riêng. Bên cạnh đó, đây cũng là nhóm ngành đòi hỏi suy nghĩ logic rất cao, do đó, bạn có thể học được cách xây dựng, vận hành, phát triển các hệ thống phần mềm một cách hiệu quả nhất. Những bài tập thực tế cần giải quyết trong quá trình học cũng giúp ích rất nhiều cho công việc của một BA sau này.

Nhóm ngành Kinh tế

Trong nhóm ngành kinh tế, các ngành học bạn có thể lựa chọn như quản trị kinh doanh, quản trị tài chính, kế toán, kiểm toán, ngân hàng,… Các công việc của Chuyên viên phân tích dữ liệu liên quan rất nhiều đến các yếu tố tài chính, lợi nhuận công ty, khách hàng. Vậy nên, những sinh viên tốt nghiệp ngành kinh tế được xem là những “mầm non” đầy hứa hẹn cho vị trí Business Analyst.

business analyst
Công việc của business analyst

Để có thể làm tốt nhất công việc của một BA cũng như giúp giữ lửa đam mê khi làm trong ngành, trong quá trình học kinh tế bạn cũng có thể đăng kí thêm một số khóa học ngắn hạn về công nghệ thông tin. Đây chắc chắn sẽ là điểm cộng cực lớn cho việc phân tích dữ liệu và làm việc sau này của bạn.

Ngành hệ thống thông tin và quản lý

Đây được xem là nhóm ngành đào tạo sát nhất với nghề BA. Các lựa chọn chính của ngành hệ thống thông tin và quản lý gồm Kiến thức cơ bản về Kinh tế và Kiến thức cơ bản đến chuyên sâu của Hệ thống thông tin quản lý. Các môn học này đi sâu vào đào tạo cho sinh viên khả năng tổng hợp và xử lý dữ liệu. Kỹ năng quản lý hệ thống thông tin là cực kỳ cần thiết với bất kỳ doanh nghiệp nào trong việc tổ chức và điều hành hoạt động của công ty.

Mức lương của BA là bao nhiêu?

Mức lương của ngành Business Analyst khá đa dạng, phụ thuộc vào kinh nghiệm và vị trí làm việc. Theo báo cáo của Payscale, mức lương trung bình toàn cầu cho một Business Analyst là khoảng 65,573 USD mỗi năm. Tại Việt Nam, mức lương cho từng cấp bậc của Business Analyst như sau: Fresher thường nhận từ 10 – 15 triệu đồng mỗi tháng, Junior từ 15 – 20 triệu đồng, Senior từ 20 – 40 triệu đồng và các cấp quản lý có thể nhận từ 40 – 60 triệu đồng mỗi tháng.

>>> Xem thêm: Mức Lương Của Business Analyst Hiện Nay Bao Nhiêu?

Thông qua những thông tin trên về ngành Business Analyst, chi tiết về khái niệm, mô tả công việc cũng như các kỹ năng cần có để trở thành 1 BA, TopDev hy vọng bạn có thể tìm được định hướng phù hợp với khả năng và đam mê của mình.

Có thể bạn muốn đọc thêm: Những điều cần biết về nghề Data Analytics và Business Analytics

Xem thêm việc làm BA tại TopDev!