Home Blog Page 202

[Python cơ bản thường dùng trong công việc] Phần 10 : Kết nối Redis

Redis là gì?

Redis là một memory cache server hỗ trợ persistant data thông dụng nhất hiện nay. Nội dung chương này sẽ hướng dẫn bạn kết nối đến một Redis server (đã được cài đặt sẵn) thông qua thư viện redis-py.

10.1. Cài đặt

Có thể xem thêm về hướng dẫn cài đặt thư viện này tại https://github.com/andymccurdy/redis-py

Đơn giản cài thông qua pip là:

$ sudo pip install redis

10.2 Kết nối đến Redis

Để kết nối đến Redis server thì bạn có thể xem ví dụ sau:

import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)

10.3. Thực hiện lệnh

Thực hiện các lệnh bình thường trên đối tượng redis. Ví dụ:

import redis

r = redis.StrictRedis(...) 
r.set('foo', 'bar') 
print r.get('foo')
(Hiển thị 'bar')

Tìm việc python không cần kinh nghiệm

10.4. Pipeline

Pipeline là kỹ thuật được dùng trong trường hợp bạn muốn tăng performance bởi gộp nhiều lệnh vào một request thay vì mỗi lệnh là một request như thông thường. Xem ví dụ sau để hiểu cách sử dụng pipeline bằng redis-py:

import redis

r = redis.StrictRedis(...) 
r.set('foo', 'bar')
pipe = r.pipeline() 
pipe.set('a', 1) 
pipe.set('b', 2) 
pipe.set('c', 3) 
pipe.get('foo') 
pipe.execute()

Sau khi gọi phương thức execute() thì sẽ trả về List tương ứng với các kết quả của từng lệnh. Ví dụ kết quả từ đoạn code trên:

[True, True, True, 'bar']

[Python cơ bản thường dùng trong công việc] Phần 9 : Kết nối MySQL

MySQL là một hệ cơ sở dữ liệu quan hệ phổ biến nhất hiện nay. Rất nhiều ngôn ngữ có thể kết nối đến MySQL và Python cũng không ngoại lệ.

Mặc định Python không có thư viện để kết nối đến MySQL server. Trong phần này, để kết nối đến MySQL Server từ Python, chúng ta sẽ sử dụng module MySQLdb

9.1. Cài đặt MySQLdb

Cài đặt thông qua pip như sau:

$ sudo pip install MySQL-python

Tham khảo thêm tại: https://pypi.python.org/pypi/MySQL

Khai báo module MySQLdb là có thể sử dụng.

import MySQLdb

Trong một số trường hợp đã cài MySQLdb nhưng import báo lỗi thiếu file libmysqlclient.18.dylib . Nguyên nhân có thể là do hiện tại đường dẫn đến file không tồn tại. Thử tạo symlink hoặc sử dụng câu lệnh sau để tạo symlink từ file libmysqlclient.18.dylib đến thư mục /usr/lib/

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
  20 tài liệu học Python thiết thực để trở thành lập trình viên chuyên nghiệp

9.2. Kết nối đến MySQL Server

Bạn cần có một MySQL server đang chạy và cho kết nối đến. Trong trường hợp này là localhost nên không cần cấu hình đặc biệt, chỉ cần cung cấp username và password là có thể kết nối đến MySQL Server.

Thực hiện gọi hàm như sau để trả về kết nối:

import MySQLdb

dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ')

Nếu kết nối không thành công thì sẽ báo lỗi và ngưng chương trình. Cách kết nối an toàn là đưa vào trong try để bắt lỗi như sau:

import MySQLdb

db = None

try:

db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'root', db = 'mysql')

except MySQLdb.Error, e:
      print "Error %d: %s" % (e.args[0],e.args[1])
      sys.exit(1)

if db:
      cur = db.cursor()
      cur.execute("SELECT VERSION()")
      ver = cur.fetchone()
      print "Database version : %s " % ver

9.3. Kết nối với charset utf8

Mặc định kết nối đến MySQL server là charset latin nên khi lấy dữ liệu unicode thì hiển thị Tiếng Việt không đúng, bạn cần phải chọn charset là utf8 khi tạo kết nối. Cú pháp như sau:

...
db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'test', charset = 'utf8')

Tuyển dụng python các vị trí

9.4. Query dữ liệu

Để truy vấn dữ liệu (chạy câu lệnh SQL) thì sử dụng cursor của MySQLdb. Ví dụ:

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql');
cursor = db.cursor()
sql = 'SELECT * FROM user'
cursor.execute(sql)
myusers = cursor.fetchall()

Ví dụ dữ liệu biến myusers là: ((1, 'John'), (2, 'Doe'))

Mặc định, cursor sẽ trả về mỗi dòng dữ liệu từ MySQL theo kiểu tuple , tức là không có key. Nếu bạn muốn trả về kiểu Dictionary thì có thể khai báo:

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro ot', passwd = 'root', db = 'mysql')
cursor = db.cursor(MySQLdb.cursors.DictCursor) ...
  Date & Time trong Python

9.5. Fetch dữ liệu

Có một số cách để fetch dữ liệu thông dụng từ cursor sau khi đã exectute(sql)fetchone()fetchall() .

  • fetchone() : chỉ fetch một dòng dữ liệu. Nếu muốn fetch nhiều dòng dữ liệu thì có thể gọi nhiều lần, mỗi lần sẽ trả về một dòng dữ liệu. Tốt cho trường hợp truy vấn rất nhiều dữ liệu một lúc. Nếu trả về None tức là đã fetch hết dữ liệu từ câu truy vấn.
  • fetchall() : fetch toàn bộ dữ liệu truy vấn được từ câu truy vấn và trả về một tuple chứa các dòng dữ liệu. Mỗi phần tử của Tuple có thể là một Tuple khác hoặc là một Dictionary tùy theo cài đặt ở bước lấy cursor (Xem phần 9.4).
  • fetchmany(size) : nằm ở giữa 2 kiểu fetch trên, có thể quy định số lượng row trong mỗi lần fetch. Nếu fetch hết thì trả về Tuple rỗng.

9.6. Đóng kết nối

Sau khi kết nối và truy vấn thì có thể đóng kết nối theo ví dụ sau:

import MySQLdb
db = MySQLdb.connect(...)
db.close()

Ngoài ra, bạn cũng nên đóng cursor khi không còn sử dụng theo ví dụ:

import MySQLdb
db = MySQLdb.connect(...)
cursor = db.cursor()
cursor.close()
db.close()

9.7. Prepared Statement

Prepared statement là kỹ thuật tham số hóa các dữ liệu truyền vào câu truy vấn thay vì nối chuỗi trực tiếp để xây dựng một chuỗi truy vấn dài. Kỹ thuật này được áp dụng nhiều và giúp tăng hiệu quả và tính bảo mật của câu truy vấn. Ví dụ:

...

cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s", ("John", "4"))

...

Mỗi tham số truy vấn sẽ được thay thế bằng %s và phương thức execute() sẽ có tham số thứ 2 là một Tuple có giá trị tương ứng với thứ tự xuất hiện của các thành phần %s

[Python cơ bản thường dùng trong công việc] Phần 8 : Xử lý file XML

Trong phần này, chúng ta sẽ parsing nội dung XML thành dữ liệu để xử lý. Để xử lý XML, ta sẽ sử dụng thư viện Beautifulsoup 4. Đây là một thư viện giúp việc triển khai việc parsing html, xml được nhanh chóng và tiện lợi.

Tuyển dụng lập trình python lương cao

8.1. Cài đặt Beautifulsoup

Bạn có thể tham khảo hướng dẫn cách cài đặt tại website http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soupc Trên MacOS, có thể cài bằng pip như sau:

$ sudo pip install beautifulsoup4

8.2. Cài đặt lxml parser

Để parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser

Trên MacOS, có thể cài bằng pip như sau:

sudo pip install lxml

8.3. Ví dụ về parsing XML

Cho ví dụ sau:

from bs4 import BeautifulSoup as Soup

note = '''
<?xml version="1.0" encoding="UTF-8"?> 
<breakfast_menu>
     <food>
          <name>Belgian Waffles</name>
          <price>$5.95</price>
          <description>Two of our famous Belgian Waff les with plenty of real maple syrup</description>
          <calories>650</calories>
     </food>
     <food>
          <name>Strawberry Belgian Waffles</name>
          <price>$7.95</price>
          <description>Light Belgian waffles covered with strawberries and whipped cream</description>
          <calories>900</calories>
     </food>
</breakfast_menu>

'''

soup = Soup(note, 'xml')
foods = soup.findAll('food')

for x in foods:
print x.find('name').string, ': ', x.price.string

Khi chạy thì sẽ hiển thị ra màn hình như sau:

Belgian Waffles : $5.95
Strawberry Belgian Waffles : $7.95

Đối tượng thuộc class Soup (BeautifulSoup) sẽ giúp truy xuất các thành phần của file xml nhanh chóng và tiện lợi.

Trong ví dụ có một số cách truy xuất đến các phần tử như:

  • findAll() : trả về mảng các thẻ có tên cần tìm
  • find() : trả về phần tử đầu tiên có tên cần tìm
  • Truy xuất trực tiếp thông qua tên thẻ như x.price.string

8.4. Parsing HTML

Tương tự như xml , BeautifulSoup có thể parsing nội dung HTML thông qua hàm khởi tạo và chọn html ở tham số thứ 2.

...
soup = Soup(websitehtml, 'html')

[Python cơ bản thường dùng trong công việc] Phần 7 : Xử lý file JSON

JSON là gì?

JSON là một trong những định dạng file trao đổi dữ liệu thông dụng nhất hiện nay. Với kiến trúc đơn giản và tương đồng với cấu trúc của Python nên việc thao tác JSON trên Python rất dễ hiểu.

Việc làm python không cần kinh nghiệm

7.1. Load file từ Internet

Thông thường dữ liệu JSON được lấy từ nguồn khác (như file, internet..) nên chương này sẽ bắt đầu bằng cách hướng dẫn download một file JSON từ Internet và sau đó mới parsing nội dung JSON download.

Sử dụng module urllib2 để download file và module json để encode/decode JSON data. Ví dụ:

import urllib2
import json
response = urllib2.urlopen('https://api.github.com/ users/voduytuan/repos')
data = json.load(response)
print data

Ví dụ trên sẽ truy vấn đường dẫn https://api.github.com/users/voduytuan/repos để lấy danh sách Repository trên Github của mình dưới định dạng JSON.

7.2. Parsing JSON Data

Nếu như bạn đã có JSON data dưới dạng chuỗi, muốn parsing chuỗi này thành Data thì sử dụng như cách dưới đây:

import json
mystring = '{"a":1,"b":2,"c":3,"d":4,"e":5}' 
data = json.loads(mystring) 
print data
(Hiển thị: {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4})

7.3. Encoding JSON Data

Nếu như bạn đã có một biến và muốn encode thành JSON string thì có thể dùng theo cách sau:

import json
mydata = {
    'name': 'John',
    'age': 10
}
jsonstring = json.dumps(mydata)print jsonstring

(hiển thị: {"age": 10, "name": "John"})

Quy tắc 333 hay là phiếm đàm về chuyện phỏng vấn Senior Developer

Có thể nói vào những năm gần đây, phỏng vấn không còn đơn thuần là hoạt động một chiều, với việc các công ty có toàn quyền đánh giá ứng viên theo các tiêu chí mà mình đưa ra, mà giờ đây các ứng viên thông qua buổi phỏng vấn còn đánh giá ngược lại công ty, xem có đủ tốt, phù hợp để mình quyết định gắn bó không.

Trong phạm vi của bài viết này, tôi cũng cho rằng phỏng vấn lập trình viên senior là một công việc khá thú vị và thách thức. Bởi đó không chỉ là việc đánh giá năng lực của ứng viên xem có đạt được các yêu cầu, tiêu chuẩn mong đợi, mà còn xem xét đến các yếu tố, về sự thích nghi với môi trường, văn hoá, sự phù hợp với đường hướng phát triển trong tương lai của công ty hay không. Thật khó để làm tốt việc này nếu không có sự chuẩn bị chu đáo.

Quy tắc 333

Sau rất nhiều tự đánh giá bản thân, rằng mình đã làm tốt vai trò của một nhà tuyển dụng hay chưa. Tôi phải thú nhận một sự thật là: không ít lần tôi đã làm không tốt. Đôi lần cảm thấy xấu hổ vì những ngớ ngẩn của mình. Liệu có lần nào đó đã đánh giá sai lầm làm tuột mất người giỏi, hoặc là làm ứng viên nghĩ không tốt về công ty.

Đó đã là những áp lực không nhỏ, và sau khoảng thời gian khủng hoảng đó, tôi tạo ra một bộ quy tắc 333 nhằm giúp mình làm tốt việc này.

  • Quy tắc 1, nhằm để định nghĩa, xác định như thế nào là một Senior.
  • Quy tắc 2, nhằm để chứng minh, đánh giá sơ bộ ứng viên có đạt tiêu chuẩn Senior không.
  • Quy tắc 3, nhằm để hiểu một Senior cần gì, mà công ty cần đáp ứng để có được ứng viên.

Mỗi quy tắc như vậy sẽ có 3 yếu tố con để đánh giá, nên tôi gọi là quy tắc 333.

Tất nhiên, trên tất cả mọi quy tắc, có một quy tắc đặc biệt, vượt qua mọi quy tắc, đó là:

Cái gì nếu không thể có được bằng tiền, thì sẽ có được bẳng rất nhiều tiền.

Bài viết này sẽ không có ý phủ định hay bàn về bất kì điều gì có liên quan đến quy tắc đó.

Quy tắc số 1 – Định nghĩa nhanh về một Senior Developer

Nếu không thể trả lời một Senior là một người như thế nào, thì rõ ràng bạn không thể làm tốt công việc tuyển dụng của mình được. Theo tác giả bài viết này, Senior là người cần có ba tiêu chí, có thể khái quát nhanh như sau:

  1. Năng lực
  2. Ảnh hưởng
  3. Tầm nhìn

Về năng lực

 là tổ hợp những thuộc tính độc đáo của cá nhân , phù hợp với những yêu cầu của một hoạt động nhất định, đảm bảo cho hoạt động đó có hiệu quả

Ứng viên được đánh giá là Senior phải có kiến thức sâu rộng trong lĩnh vực mà mình đang làm, đặc biệt là đối với ngành IT không chỉ nhiều về số lượng (công nghệ, ngôn ngữ) đa dạng về lĩnh vực (phần mềm, embedded, network, web, app) mà còn phát triển rất nhanh. Ứng dụng đúng công nghệ, đúng thời điểm, kịp thời nắm bắt xu hướng và nhu cầu của thị trường là yếu tố tiên quyết mang đến lợi thế cạnh tranh cho doanh nghiệp.

Chưa kể trong một công ty các yếu tố về lịch sử, các yếu tố về cá nhân người đứng đầu công ty, văn hoá cũng tác động lên rất nhiều về cách thức phát triển sản phẩm, vận hành và đánh giá. Nên ứng viên phải có khả năng thích nghi, kế thừa phát triển tiếp tục, mang lại hiệu quả cho hoạt động của doanh nghiệp.

  Con đường trở thành một Senior developer đích thực

Về ảnh hưởng

Ứng viên được đánh giá là Senior là người có khả năng hỗ trợ và support các thành viên trong team và tạo ảnh hưởng lên họ, làm họ cảm thấy bị thuyết phục. Điều này đặc biệt quan trọng trong lĩnh vực phát triển phần mềm, vì trong team có các thành viên có tố chất, tài năng thì phần lớn có cá tính muốn thể hiện năng lực dẫn đến một Senior phải làm cho các thành viên nể phục và nghe theo “tâm phục khẩu phục” là điều rất khó.

Thêm vào đó, người được đánh giá là Senior, cần phải có năng lực thật sự, để tạo lên ảnh hưởng thì không thể cứng nhắc theo kiểu tìm mua một vài quyển sách về kỹ năng sống, năng lực lãnh đạo, truyền cảm hứng v.v… rồi áp dụng máy móc, cho rằng như vậy là có thể tác động lên người khác. Khi đó, thành ra giống như mọi người đối phó, dùng thủ thuật với nhau, nhất là khi cả Senior và thành viên trong team đều đọc qua cuốn sách đó, biết cách làm đó.

Về tầm nhìn

Ứng viên được đánh giá là Senior phải có khả năng tư vấn, hỗ trợ quản lý của mình đưa ra các quyết định, các phát ngôn, truyền thông hợp lý, chính xác đối với các bộ phận liên quan hoặc cấp trên của mình.

Hơn nữa, ứng viên phải có khả năng hoạch định công nghệ, giải pháp nhằm giúp cho mọi thành viên trong team được học hỏi và phát triển bản thân, cũng như mang lại lợi ích cạnh tranh cho công ty.

Tìm việc làm senior IT đãi ngộ tốt trên TopDev

Quy tắc số 2 – Chứng minh một ứng viên có phải là Senior không

Để kiểm chứng một Senior có năng lực thật sự, có khả năng truyền cảm hứng, ảnh hưởng tích cực lên team, có tầm nhìn để hỗ trợ cho team phát triển… Những điều đó có thể đánh giá thông qua 3 tiêu chí sau:

  • Quan điểm
  • Kiến thức
  • Kỹ năng

Về quan điểm

Ứng viên đánh giá là Senior có thể được phát hiện thông qua hoạt động phỏng vấn và nhìn nhận dựa trên các quan điểm của ứng viên về các vấn đề như xu hướng công nghệ, cách nhìn nhận một vấn đề…

Phần mở đầu câu chuyện về phỏng vấn, có thể bắt đầu chuyện trò bằng các câu hỏi liên quan đến quan điểm, ý kiến cá nhân để tạo không khí cởi mở, giúp ứng viên thoải mái khi nói ra suy nghĩ của mình. Từ đó hai bên có thể tạo ra được sự tiếp xúc tin cậy đầu tiên.

Về kiến thức

Ứng viên đánh giá là Senior phải có kiến thức sâu rộng về các lĩnh vực phù hợp với lĩnh vực hoạt động và nhu cầu cuả công ty. Ứng viên bắt buộc phải am hiểu tường tận các vấn đề như trong lịch sử nhà tạo ra nó nhằm giải quyết vấn đề gì, công nghệ đó phù hợp cho yêu cầu và mục đích gì…

Ngoài ra cần phải hỏi chuyên sâu về cơ chế hoạt động của từng tính năng, chức năng cụ thể, ví dụ như: hỏi cách sử dụng của một hàm nào đó. Việc làm này đảm bảo ứng viên có kiến thức chuyên sâu, làm việc cẩn trọng và chi tiết.

Về kỹ năng

Sẽ rất là thiếu sót nếu chỉ đơn thuần hỏi về kiến thức và quan điểm của ứng viên. Bởi vì có rất nhiều ứng viên nói rất hay, nhưng thực tế làm việc thì không có kỹ năng và năng lực giải quyết vấn đề thật sự.

Ứng viên được đánh giá là Senior phải nên được đánh giá là có kỹ năng cụ thể, có thể giải quyết một vấn đề cụ thể. Ví dụ như đã từng tự code một chức năng nào đó, biết rõ ràng tường tận đến mức cấu hình chức năng ra sao, các vấn đề cross nền tảng thế nào, đến mức phải phân định rõ ràng được cách thức tổ chức dự án theo nhu cầu của development và production khác nhau ra sao…

  Khi nào bạn đã là Senior dev

Quy tắc số 3 – Hiểu một Senior cần gì

Chúng ta không thể chỉ nói về điều chúng ta muốn và cách chúng ta đánh giá một ứng viên mà không xem xét đến các yếu tố như ứng viên cần những gì.

Nhiều năm phỏng vấn các bạn và rút ra từ bản thân tác giả cho rằng có ba yếu tố lớn tác động lên ứng viên:

  • Môi trường.
  • Động lực
  • Mục tiêu.

Nói một cách đơn giản, việc đi làm giống như chạy xe đi mãi trong cuộc đời, nếu môi trường tốt giống như con đường tốt, còn không thì ổ gà sỏi đá. Động lực thì như động cơ của xe, nếu tốt thì sẽ chạy nhanh, yếu thì sẽ chạy chậm, ì ạch. Còn mục tiêu là nơi mà ứng viên hướng đến, nếu mục tiêu sai không khác gì chạy vào ngõ cục, bế tắc.

Về môi trường

Môi trường là những gì thuộc về văn hoá của công ty, về bàn ghế, trang trí, phòng ốc, thiết bị làm việc, là đồ ăn, nước uống, là trai xinh, gái đẹp, đồng nghiệp hoà đồng, sếp công bằng…

Với sự cạnh tranh và nhu cầu về tuyển dụng nóng sốt vào những năm gần đây thì yếu tố này nhiều công ty đặt lên hàng đầu, nhằm giúp ứng viên cảm thấy ấn tượng ngay khi bước chân vào gặp gỡ lần đầu phỏng vấn.

Về động lực

Ứng viên là Senior sẽ rất cần được công ty nó cho họ biết ở đây có những điều gì nhằm giúp cho họ có động lực làm việc. Rằng sẽ có cơ hội để ứng dụng các công nghệ mới, có cơ hội để kiểm chứng chúng ở thị trường thật sự bằng cách đưa đến tay người dùng cuối cùng.

Ứng viên có thể được tự hào vì sản phẩm mình làm ra, nhằm giúp công ty nâng cao vị thế của mình, nhằm giúp tên tuổi của mình được biết đến trong cộng đồng công nghệ.

Về mục tiêu

Ứng viên Senior nên được cho thấy mục tiêu mà mình sẽ được khi chấp nhận vào làm việc và cống hiến cho công ty.

Đó là về bao lâu sẽ được review để nhìn nhận lại khả năng, được tăng lương, khi nào sẽ được xem xét để cân nhắc các vị trí quan trọng và cao hơn. Và đi đến tận cùng với công ty, ứng viên sẽ có được những gì.

TopDev via TranPhongPhu

Tuyển dụng IT lương cao trên TopDev

Thời kỳ vàng son của Game Việt đã trở lại!

Có lẽ bạn vẫn chìm đắm trong các thể loại siêu anh hùng Avenger, hoặc các bộ comic DC Marvel, thế nhưng lại đang bỏ quên mất ông “trùm cuối” quan trọng nhất và phát triển nhanh nhất của làn sóng giải trí: ngành Games.

Ngành game: Tương lai của ngành Công nghệ Giải trí

Giấc mơ game đã lan tỏa phủ rộng khắp từ Á sang Mỹ, một số franchiser trong thế giới game thu về được những khoảng tiền khổng lồ mà chính các nhà làm phim tại Hollywood cũng phải ao ước. Không ít tựa game khủng được ra lò từ những công ty tên tuổi triệu đô, có nhân viên đến từ mọi ngóc ngách trên thế giới.

Có thể nói, với tiềm năng phát triển vô hạn của công nghệ và ngành thiết kế, trải nghiệm game sẽ gần như chẳng bao giờ chạm được tới giới hạn cuối cùng. Người ta đã từng nghĩ chuyện đổ hàng triệu đô vào phát triển game là điều không thể và lãng phí, nhưng ở thời điểm hiện tại, nó có thể tiêu tốn đến hàng trăm triệu đô và giúp đưa người chơi lên một level mới. Ngành công nghiệp game đang trở nên ngày một phức tạp, và tổng chi phí để tạo nên một game sẽ tăng cao tỉ lệ thuận với độ phức tạp của nó.

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

Sự phát triển vượt trội về smartphone, AI, Machine learning, các thiết bị wearable, IoT, AI và VR đã mở ra rất nhiều cơ hội mới phát triển sản phẩm và mở rộng thị trường, chính bởi các loại công nghệ tương lai này đang từng bước tiến sâu vào cuộc sống chúng ta. Games đã thay đổi không ít kiểu dáng hình thức, và chắc chắn chúng không là ngoại lệ.

“Đã đến lúc chúng ta nên ngừng nhìn nhận ngành Game một thứ giải trí dành cho trẻ em nữa, mà hãy thực sự nhìn vào sức mạnh thật sự của nó trong ngành Công nghệ – Giải trí”.

Giấc mơ ngành Game Việt

Có một sự thật đáng buồn đó là chúng ta ở vị trí chủ nhà nhưng đến nay vẫn chưa được các nhà sản xuất game Trung Quốc xem là “đối thủ”. Căn bản là vì khi mang game phát hành tại Việt Nam, họ chẳng gặp phải khó khăn gì từ các sản phẩm trong nước, thậm chí còn được chào đón nồng nhiệt mà chẳng phải tốn mấy công sức quảng bá hình ảnh và xây dựng tên tuổi.

Câu chuyện làm game Việt không phải chưa từng được nhắc đến, nhưng đây chính là thời điểm vàng, thời điểm đỉnh cao phát triển công nghệ để tập trung sản xuất nó. Bản thân chúng ta hiểu rõ được tâm lý các game thủ nước mình, biết họ muốn gì thích gì, muốn có tính năng gì nên sẽ không phải tốn kém đi tìm hiểu thị trường. Rủi ro trong ngành là nhiều và con đường cũng rất chông gai, nhưng lợi ích và những giá trị thu về là không nhỏ và sẽ là xứng đáng với những ai chịu đầu tư và nghiên cứu kĩ lưỡng.

Không hề đứng ngoài nỗ lực mang Game “Made in Vietnam” ra thị trường quốc tế, Gear Inc. là công ty phát triển ứng dụng di động và trò chơi trên nền web hàng đầu Việt Nam hiện nay, dứng sau loạt game mobile đình đám hiện nay như WWE Champions, Final Fortress, Tribal Rivals,…và nhiều tựa game hot khác đang làm mua làm gió trên các bảng xếp hạng của Apple Store và CH Play.

Gear Inc. tự hào là Công ty Công nghệ khổng lồ có gần 10 năm kinh nghiệm trong lĩnh vực phát triển phần mềm với các công ty con chuyên về Thiết kế phần mềm, Phát triển Game di động, Quản lý Chất lượng và Kiểm duyệt Thương hiệu. Gear Inc. luôn hiểu rõ các xu hướng mới nhất trong ngành game để đáp ứng các nhu cầu ngày càng tăng của khách hàng và người dùng, và tự hào với một đội ngũ những người tài năng nhất để mang đến cho khách hàng các trải nghiệm tốt nhất. Những con số ấn tượng có thể kể đến như:

  • Hơn 1000 dự án lớn nhỏ
  • 40+ khách hàng trên toàn cầu
  • 10 năm kinh nghiệm
  • 350+ nhân viên
  • 95% Khách hàng được duy trì

Tháng 6 này Gear Inc. sẽ có mặt tại Vietnam Mobile Day để chia sẻ rõ hơn về những triển vọng và giải pháp cho ngành game Việt

Topdev

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

CDN – Chỉ 1 giây làm đổi thay tâm trí khách hàng

Cuộc chiến tiếp cận khách hàng tiềm năng online ngày càng khốc liệt hơn, và lợi thế cạnh tranh của mỗi doanh nghiệp có thể chêch lệch rất xa nhau chỉ nhờ một yếu tố – độ trễ khi load trang website (latency). Nó là khoảng thời gian được tính từ khi người dùng click vào link website cho tới khi toàn bộ nội dung của trang web gồm chữ, hình ảnh, video được thể hiện đầy đủ. Mỗi website sẽ có độ trễ khác nhau, nhưng trong hầu hết các trường hợp, độ trễ này được quyết định bởi khoảng cách thực giữa địa điểm của người truy cập và nơi đặt server host trang web mà người dùng đang truy cập. Và chính độ trễ này, chỉ 1 giây làm đổi thay quyết định của user có nên ở lại trang web của hoặc thoát ra ngay để tìm đến kết quả khác. Vậy có cách nào để rút ngắn thời gian này và đảm bảo trải nghiệm hài lòng của khách hàng?

Content Delivery Network (CDN) là gì?

Từ chính thực tế quá tải của server chính khi phải truyền trực tiếp đến tất cả client, giải pháp phân chia resource đến client thông qua các host gần client đó nhất. Nó không chỉ có thể giảm tải tối đa cho máy chủ chính, mà còn tăng tốc website gấp nhiều lần không phân biệt vị trí và vùng địa lý của mỗi người truy cập mà không cần phải lo lắng tới việc nâng cấp máy chủ chính quá tốn kém.

Công cụ này được gọi là Content Delivery Network (CDN), tạm dịch là “mạng lưới phân tải nội dung”, là một mạng lưới tập hợp gồm nhiều Server được triển khai tại nhiều data center khác nhau đặt khắp thế giới. Cứ mỗi vị trí khác nhau sẽ có một PoP (Point of Presense) – là một bản “sao lưu” tất cả nội dung trên website, có vai trò truyền tải nó đến người truy cập vào web trong phạm vi của PoP đó.

Một cách dễ hiểu là, nếu user đang ở Mỹ và truy cập website của bạn đặt tại Việt Nam, thì truy cập này sẽ được xử lý bởi một PoP đặt tại Mỹ. Cách xử lý này nhanh hơn rất nhiều so với thông thường – giảm thời gian tải nội dung của web, mà server chính của bạn cũng được giảm tải, không phải chuyển thông tin đi cả một vòng trái đất để đến được với user nữa.

CDN – Chìa khóa vàng cạnh tranh cho doanh nghiệp

Ngày nay, hơn một nửa số traffic trên Internet đều có sử dụng CDN, và con số này không hề có dấu hiệu giảm xuống mỗi năm. Chỉ trừ khi đối tượng phục vụ của bạn không rộng lớn,thì bạn không cần thiết phải dùng CDN. Thực tế thì, nếu doanh nghiệp của bạn đã online rồi thì có rất ít lí do để mà không dùng CDN.

  • Không chỉ bạn có thể tiết kiệm được nhiều chi phí: chi phí băng thông rất vừa túi, không cần thiết phải tốn chi phí nâng cấp máy chủ khi đã có các PoP phấn bố khắp nơi; mà còn giúp bạn mở rộng được đối tượng khách hàng vì website của bạn đã được phân phối đi khắp toàn cầu, gia tăng sự hài lòng dù ở bất kì đâu.
  • Bản thân người dùng cũng nhận được không ít lợi ích từ CDN: tốc độ truy cập và load website mượt mà hơn hẳn, giảm thiểu sự chậm trễ, giật lag của phim, video ảnh, gif,…; tương tác nhanh hơn; cập nhật các sự kiện Live stream qua điện thoại hoặc laptop đều chất lượng hơn mà không phải trang bị thiết bị mắc tiền khác,…

Để tìm kiếm được một nhà cung cấp CDN không khó, đôi khi chỉ cần dành một ít thời gian search Google cũng có thể tìm được một số nhà cung cấp cho Free Trial hoặc có thể cả Free. Tuy nhiên, hầu hết chúng đều không dành cho lâu dài, và không phải dịch vụ nào cũng có các máy chủ PoP ở gần bạn, và ở gần khách hàng; bạn cần có khả năng chủ động xem map của họ xem có máy chủ gần khu vực địa lý bạn mong muốn hay không.

Là một trong những đơn vị tiên phong trong lĩnh vực cung cấp CDN, cũng như cho thuê máy chủ, Cloud VPS, Cloud Server, Dedicated Server… KDATA tự hào với hệ thống máy chủ CDN được đặt tại nhiều nơi trên khắp Việt Nam và nước ngoài, và nhận được sự tin tưởng từ phía khách hàng qua những ưu điểm nối bật nhất của dịch vụ mà KDATA đang phát triển như:

  • Khả năng tự động bảo vệ: tự động cập nhật, hỗ trợ đa nền tảng, sao lưu hằng ngày
  • Khả năng bảo vệ liên tục: quét virus hằng ngày, bảo mật dữ liệu, giám sát máy chủ liên tục
  • Khả năng giám sát liên tục: giám sát mạng liên tục, cảnh báo khi có sự cố, đảm bảo uptime 99,99%
  • Hỗ trợ miễn phí: hỗ trợ miễn phí 24/7, tư vấn miễn phí, hướng dẫn cài đặt.

KDATA đã có kinh nghiệm hơn 6 năm uy tín cung cấp dịch vụ CDN, điện toán đám mây, với mạng lưới hơn 1000 máy chủ, hàng ngàn khách hàng trong và ngoài nước, đồng thời cũng là một trong những đối tác lớn của VNPT, FPT, Viettel…

Trong tháng 6 này, KDATA cùng đội ngũ chuyên gia giàu kinh nghiệm sẽ cùng nhau xuất hiện tại Vietnam Mobile Day 2018. Hãy nhanh tay đăng kí vé để gặp gỡ đội ngũ KDATA chỉ với một click tại mobileday.vn/vi/ve-tham-du/.

Techtalk via Topdev

[Block Chain cơ bản] Vài từ khóa quan trọng để bắt đầu

Đây là một ví dụ sử dụng Smart Contract, Ethereum Blockchain để làm web voting (bỏ phiếu). User sẽ phải dùng Ether để mua 1 số token, sau đó dùng token để bỏ phiếu. Từ đó việc voting là public, minh bạch và không ai có thể can thiệp, sửa đổi được vì lưu trên Blockchain.

Một số từ khóa quan trọng:

Solidity: Ngôn ngữ viết smart contract. Trường hợp này smart contract như 1 class lập trình để xử lý và lưu trữ thông tin vote.

Truffle: Framework giúp deploy SC dễ dàng hơn cũng như tạo web để thao tác với SC.

Geth: command line tool của Ethereum Blockchain, cái này cực kỳ quan trọng vì mình cần chạy 1 node trong blockchain để sync toàn bộ blockchain. Tool này có thể chạy miner Ether, tạo private blockchain (theo Ethereum protocol).

Rinkeby: một testnet để các dev vọc thử, không bị mất Ether thật. Testnet này cung cấp luôn trang etherscan để tra cứu các block và transaction y chang như mainnet không khác gì cả.

Web3: Thư viện JS cung cấp các API tương tác với Smart Contract thông qua 1 RPC run từ lệnh Geth ở trên.

Metamask: một extension trên Chrome, với dev thì công cụ này cung cấp 1 web3 provider link với wallet luôn, thao tác sẽ tiện hơn. Trên thực tế các DWeb dùng cái này rất nhiều.

IPFS: Protocol cung cấp khả năng lưu trữ file vật lý phân tán. File được định danh với mã mQ… Protocol này kết hợp Bitorrent, Git để phân tán file khắp nơi. Cái này thật sự rất hay. Dùng thêm cái này thì toàn bộ website có thể Decentralize 100%.

Tác giả: Việt Trần

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

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ì?

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

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