Home Blog Page 184

Điểm qua các điểm nổi bật của WWDC 2019 trong 5 phút

Điểm qua các điểm nổi bật của WWDC 2019 trong 5 phút

Trong bài viết này chúng ta sẽ điểm qua một số thông tin quan trọng vừa được Apple công bố sáng nay, Techtalk nghĩ nó sẽ phần nào ảnh hướng đến cách các nhà phát triển làm việc trên nền tảng của “ông lớn” này.

Cùng tìm hiểu nào!

watchOS

Chuông đồng hồ taptic mới ( sẽ được phát nếu âm thanh đang được bật ) mang tên: The robins are okay – Kevin Lynch

Các ứng dụng mới

  • Audiobook
  • Voice Memos
  • Máy tính

Các công cụ phát triển mới

  • Các ứng dụng độc lập ( không cần iPhone đi kèm )
  • Các phiên bản mở rộng
  • Các luồng Audio API
  • Appstore cho Apple Watch

  • Kiểm tra chính tả
  • Tìm kiếm dựa trên Siri
  • Tích hợp chức năng mua hàng

iOS

Thống kê của phiên bản iOS 12

  • 97% người dùng iOS 12
  • 85% cơ sở cài đặt ( 10% áp dụng cho Android 9 )

[không giống như] những kẻ khác – Tim Cook

iOS 13

Vâng, đây chính là iOS 13 – Craig Federighi

  • Mở khóa bằng Face ID nhanh hơn 30%
  • Thay đổi gói ứng dụng – tải xuống sẽ nhỏ hơn 50% và cập nhật sẽ nhỏ hơn 60% so với bình thường
  • Tốc độ mở ứng dụng tăng gấp đôi
  • Dark Mode
  • Gõ chữ bằng cử chỉ vuốt ( như GBoard )
  • Gợi ý chia sẻ hình ảnh thông minh
  • Đồng bộ hóa lời bài hát trong Music
  • Tùy chọn kích thước văn bản trong Safari
  • Kiểm soát định dạng của mail và phông chữ phong phú hơn
  • Thêm chú thích trong thư viện, các thư mục chia sẻ
  • Chức năng Reminder sẽ được thiết kế lại
    • Danh sách sẽ thông minh hơn
    • Gắn thẻ cho iMessage ( nhắc nhở để nói chuyện )
  • Bản đồ
    • Xây dựng lại bản đồ
    • Triển khai đến toàn bộ nước Mỹ vào cuối năm 2019
    • Chia sẻ ETA
    • Dễ dàng truy cập các địa điểm yêu thích
    • Chia sẻ bộ sưu tập danh sách các địa điểm yêu thích
    • Nhìn bao quát hơn với chế độ 3D
    • Điều hướng trong đường phố mượt mà hơn

Riêng tư

Vị trí

  • Chia sẻ vị trí một lần
  • Báo cáo ứng dụng nền sử dụng vị trí
  • Kiểm soát tín hiệu truy cập của Wi-Fi và Bluetooth

Đăng nhập mạng xã hội

  • Đăng nhập bằng Apple
    • API đơn giản hơn
    • Xác thực bằng Face ID ngay lập tức
    • Tùy ý tạo email riêng

> Một địa chỉ ngẫu nhiên được chuyển tiếp đến địa chỉ chính của bạn … bạn có thể vô hiệu hóa bất kỳ một địa chỉ nào trong số đó bất cứ lúc nào bạn thích – Craig Federighi

  • Có sẵn trên web và tất cả các nền tảng khác của Apple

Homekit

  • Homekit Secure Video
    • Phân tích máy ảnh Cloudless HomePod, Apple TV hoặc iPad
    • Lưu trữ clip 10 ngày miễn phí
  • Homekit cho bộ định tuyến
    • Tường lửa cho các phụ kiện cá nhân
    • Sẽ có sẵn từ Linksys, Eero, ISP như Spectrum

Tin nhắn

Chia sẻ hình ảnh Avatar

Memojis

  • Tùy chọn các Memoji mới
  • Tự động tạo các gói sticker Memoji cá nhân

  • Memoji trên tất cả thiết bị có chip A8 trở lên

Máy ảnh

  • Hiệu ứng đơn âm
  • Điều chỉnh hiệu ứng ánh sáng cho chế độ chụp Chân Dung
  • Thiết kế lại giao diện chỉnh sửa ảnh và video
  • Xoay video

Ảnh

  • Ẩn các bản sao với Machine Learning
  • Tổ chức ảnh thông minh hơn và duyệt ảnh đẹp hơn

AirPods

  • Siri có thể thông báo và đọc tin nhắn từ Message hoặc bất kỳ ứng dụng tin nhắn nào có hỗ trợ SiriKit
  • Chia sẻ âm thanh

HomePod

  • Chuyển giao nhạc, podcast hoặc các cuộc gọi điện cho HomePod
  • Radio trực tiếp từ 100.000 kênh thông qua Siri
  • Thu hồi giọng nói / cá nhân hóa phản hồi
    • Bao gồm các hoạt động của Apple Music, Tin nhắn, Reminder và Notes

CarPlay

  • Được thiết kế lại
    • Bảng điều khiển CarPlay với Siri, nhạc, bản đồ và lịch
  • Tích hợp Siri với bên thứ ba ( khởi đầu với Pandora và Waze )

Phím tắt

 

  • Tích hợp phím tắt Siri với ứng dụng phím tắt trên tất cả các nền tảng
  • Đề xuất được tự động hóa dựa trên các hoạt động của bạn trong các ứng dụng khác nhau

Siri

  • Giờ đây, việc chuyển giọng nói thành văn bản hoàn được thực hiện bởi một mạng lưới thần kinh
    • phản hồi tự nhiên hơn

Các tính năng khác

  • Chuyển người gọi không xác định vào hộp thư thoại
  • Doanh nghiệp chỉ cần đăng nhập một lần
  • Có tài khoản iCloud riêng

iPadOS

  • Có một cái tên mới
  • Ứng dụng Springboard được bố trí chặt chẽ hơn
  • Ghim các tiện ích trên màn hình chính
  • Slideover ( trình khởi chạy ứng dụng nhỏ ở cạnh ứng dụng chính )
  • Tích hợp khả năng đa cửa sổ với tính năng kéo thả cho các thành phần và hỗ trợ ứng dụng của bên thứ ba.

[hiển thị cùng lúc hai tài liệu Word trong chế độ xem tách rời] Ý của tôi ở đây đó chính là một sự táo bạo – Craig Federighi

Các tập tin

  • Xem ở dạng cột ( như Finder trên macOS )
  • Chia sẻ thư mục với iCloud Drive
  • Chia sẻ tập tin với máy chủ SMB
  • Hỗ trợ ổ USB
  • Hỗ trợ tải ảnh USB cho các ứng dụng của bên thứ ba ( như máy ảnh của Lightroom )

Safari

  • Trình duyệt Desktop – class ( với khả năng tự động thay đổi kích thước và tối ưu hóa cảm ứng )
  • Quản lý download
  • Hơn 30 phím tắt mới

Viết và Apple Pencil

  • Tùy chỉnh phông chữ trên Appstore
  • Điều hướng đa chạm
    • cuộn tài liệu
    • kéo vị trí con trỏ
    • chỉnh sửa cử chỉ
    • cử chỉ sao chép với ba ngón tay
    • cử chỉ dán với ba ngón tay
    • cử chỉ hoàn tác với ba ngón tay
  • Cử chỉ đánh dấu ảnh chụp màn hình / ảnh ( với chế độ chụp tài liệu đầy đủ trong Safari )
  • Thao tác vuốt bàn phím để thay đổi kích thước ( gõ ngón tay cái )
  • Độ trễ chỉ từ 20 mili giây đến 9 mili giây
  • Thiết kế lại bảng chỉnh sửa
  • Cung cấp API của bảng chỉnh sửa PencilKit cho các nhà phát triển ứng dụng

Mac

Mac Pro mới

  • Module thiết kế
  • Xử lý các trường hợp hàng đầu
  • Bộ xử lý Xeon lên đến 28 lõi 300+ watt với khả năng làm mát tuyệt vời
  • Ram 6 kênh ECC, tối đa 1,5TB
  • 8 khe cắm mở rộng PCIe
  • Thẻ IO: hai cổng Thunderbolt 3, một cổng USB-A, giắc cắm âm thanh, hai cổng Ethernet 10 gigabit
  • Đồ họa được hỗ trợ thông qua tối đa hai module mở rộng

Mac Pro (MPX): Radeon Pro 580 X, Radeon Pro Vega || ( Hai hỗ trợ )

  • Module “Afterburner” ( được tăng tốc 6 tỷ pixel mỗi giây khi chỉnh sửa video )
  • Tùy chọn bánh cuộn để di chuyển
  • Có thể chạy với 6 màn hình 6K
  • Giá phát hành khởi điểm vào mùa thu: $5999
  'Toát mồ hôi' phỏng vấn tuyển dụng vào Apple

Live Demo

  • 1000 track audio + phần mềm giả lập nhạc cụ trong Logic

Phát đồng thời 3 luồng cảnh quay RAW 8K ProRes

Màn hình chuyên nghiệp XDR

  • LCD 32 inch
  • Võng mạc 6K
  • Góc nhìn siêu rộng
  • Lớp phủ chống phản chiếu
  • Tùy chọn bảng điều khiển kính mờ kết cấu nano mà không có hiệu ứng khói mù
  • Độ sáng toàn màn hình không xác định 1000 nits cho HDR
    • đỉnh 1600 nits
  • Tỷ lệ tương phản 1 triệu đến 1
  • Xoay sang chế độ dọc
  • Giá khởi điểm phát hành mùa thu: $ 4999
    • Phiên bản kết cấu nano: $ 5999

MacOS Catalina

Tách iTunes – Apple Music, Podcasts, TV

Về lịch trong iTunes thì sao? … cả Mail trong iTunes nữa? Có thể là Safari trong iTunes!… Tất nhiên là chúng ta sẽ thêm một dock nữa cho iTunes … và giữ nó lại ở đó! – Craig Federighi

Music

  • Đồng bộ hóa thiết bị từ Finder
  • Thanh sidebar hiện đề xuất mới

Podcast

Machine Learning – tìm kiếm thông tin cho các nội dung nói

TV

  • Chứa phim đã mua, các kênh đã đăng ký
  • Phát lại dưới dạng 4k HDR
  • Âm thanh không gian Dolby Atmos

Sidecar

  • Sử dụng iPad làm màn hình Mac thứ hai
  • Đầu vào chính xác hơn với Apple Pencil trong một số ứng dụng macOS

Khả năng tiếp cận

Điều khiển bằng giọng nói cho iOS và Mac.

  • Điều chỉnh / chỉnh sửa văn bản
  • Mở ứng dụng
  • Hướng dẫn cuộn
  • Điều hướng dựa trên tab
  • Nhấn vào nút
  • Điều hướng trong các trường nhập
  • Chế độ xem bản đồ lưới
  • Kiểm soát âm lượng
  • Xử lý cục bộ

Find My

  • Find My iPhone + Find My Friends
  • Có sẵn trên Mac và iOS
  • Phát hiện vị trí offline thông qua bảo mật của Bluetooth được phân chia an toàn thông qua các thiết bị Apple khác

Khóa tính năng kích hoạt

  • Hỗ trợ tất cả các máy Mac T2
  • Khóa các quá trình cài đặt hệ điều hành và khởi động cùng với thông tin đăng nhập của bạn

Dự án Catalyst ( Marzipan )

  • Bắt đầu với checkbox “ Mac “ trong Xcode và xây dựng ứng dụng cùng lúc cho cả iPad và macOS
  • Những người dùng được sử dụng sớm:
    • Asphalt
    • Twitter
    • Atlassian

ARKit 3

cộng với bản demo trực tiếp Minecraft Earth

  • Dân tộc

  • Hỗ trợ ghi hình chuyển động

Rõ ràng là không có con gà nào bị hại trên sân khấu tại WWDC – Craig Federighi

Swift

Khung giao diện người dùng mới: SwiftUI

  • UI khai báo
  • Nhiều lớp kích thước
  • Hoạt ảnh tự động
  • Tự động hỗ trợ chế độ tối
  • Xem trước giao diện của người dùng trực tiếp trong Xcode
  • Cử chỉ kéo và thả các thành phần (“view”) trong thư viện với việc khởi tạo các đoạn mã
  • Menu giám sát thông minh
  • Tích hợp nội địa hóa
  • Chỉnh sửa mã trực tiếp trên thiết bị
  • Áp dụng module (một chế độ xem hoặc ứng dụng đầy đủ)
  • Chạy tự nhiên trên watchOS và mọi nền tảng của Apple và liên kết với mọi loại điều khiển gốc

Ngày phát hành (tất cả các nền tảng đã được công bố)

Nhà phát triển beta: Hôm nay

Công khai : Tháng 7

Tính khả dụng của người dùng chung: Mùa thu

Kiểm tra tất cả các công cụ mới trên trang web của Apple , được cập nhật gần đây với các máy Mac đã được công bố:

  Hiểu sâu về trí tuệ nhân tạo & Machine Learning tại Apple

Bí mật của thuật toán ngẫu nhiên

SỰ NGẪU NHIÊN – THẾ LỰC CHI PHỐI MỌI SỰ VẬN HÀNH CỦA VŨ TRỤ! BÍ MẬT CỦA NÓ LÀ GÌ?

Bản chất của sự ngẫu nhiên, những thử thách mà nó đem lại sẽ được xoáy sâu cùng với cách sự ngẫu nhiên đã được lợi dụng để phát triển công nghệ loài người.

Trong mật mã học, độ ngẫu nhiên của các con số có thể được coi là quan trọng tối thượng. Mã hóa học làm việc với những chiếc ‘chìa khóa số’ – nếu chiếc chìa khóa này dễ dàng bị đoán trúng thì coi như mất tất cả. Rất nhiều thuật toán mã hóa đã bị phá vỡ vì phạm phải sai lầm là thiếu tính ngẫu nhiên. Do đó nâng cao và bảo vệ sự bất định của những con số luôn là yêu cầu quan trọng bậc nhất đối với mật mã học. Machine Learning là một trong các lĩnh vực lợi dụng sự ngẫu nhiên nhiều nhất. Tính ngẫu nhiên được tận dụng trong hầu hết các khâu: sampling, resampling, data augmentation, thuật toán tối ưu,… Trong lĩnh vực Thuật Toán cũng vậy, chính sự ngẫu nhiên đã giúp cho các thuật toán thoát khỏi những vùng “an toàn”, chấp nhận kết quả tiếp theo “xấu hơn” để đi đến những trạng thái kết quả tốt hơn nhiều so với kết quả ban đầu.

Và còn nhiều thứ nữa mà sự ngẫu nhiên khiến con người mong muốn kiểm soát được nó. Nhưng liệu con người có làm được điều đó. Câu trả lời sẽ tại sự kiện Vietnam Mobile Day 2019 với chủ đề “Bí mật của thuật toán ngẫu nhiên” từ diễn giả DƯƠNG NGUYỄN THÁI BẢO – Team Leader của Big-O Coding. Hãy đến và cùng khám phá chủ đề thú vị này các bạn nhé.

“Appreciate the knowns. Go for the unknowns”, đối với anh việc khám phá những góc nhìn mới luôn đem lại nguồn cảm hứng để khai phá những khía cạnh thú vị trong công việc. Bạn có sẵn sàng cùng anh Thái Bảo chinh phục tính ngẫu nhiên trong thuật toán của mình? Ngoài ra, anh Bảo còn chia sẻ về một số case study về các thuật toán ngẫu nhiên được dùng hiệu quả để giải quyết các bài toán thực tế.

Đăng ký và giữ chắc vé trên tay để tham gia sân chơi về công nghệ lớn nhất năm nay cùng hơn 100 diễn giả với các topic xoay quanh 6 nội dung chính:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

============================

🔎 Website: https://mobileday.vn/
📌 Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019

============================

🔥🔥 VÉ COMBO dành cho nhóm 5-10-20-30 người với những giá cực ưu đãi nhưng vẫn giữ nguyên quyền lợi TIÊU CHUẨN!!!

CODE ưu đãi 50.000 cho độc giả: TOPDEVBLOG@VMD19

Discord đã lưu trữ hàng tỉ messages mỗi ngày như thế nào

discord-la-gi-va-cach-discord-luu-tru-messages

Bài viết được sự cho phép của tác giả Ngo Thang

Về số lượng messages trên Discord theo thống kê như sau: vào tháng 7 năm 2017, số lượng messages 1 ngày là 40 triệu. Nhưng đến tháng 12 thì đã đạt 120 triệu messages 1 ngày. Sự tăng trưởng khá là nhanh chỉ trong vòng 5 tháng. Và đến bây giờ chắc phải hơn 1 tỉ messages 1 ngày. Vậy cùng nhau tìm hiểu xem Discord là gì và họ đã lưu đống messages khổng lồ đó như thế nào nhé!

  Google AMP là gì ? Cài đặt AMP cho website asp.net mvc

Discord là gì?

Discord là 1 ứng dụng chat. Nó giống như slack vậy. Cũng tạo được team, group riêng. Phân quyền người dùng, gọi điện, gửi tin nhắn, cung cấp API đủ cả. Xem thêm cách xây ứng dụng chat realtime 

Discord là gì

Discord được ra đời đầu tiên vào năm 2015, và họ chỉ code trong vòng đúng 2 tháng (2 tháng code xong cũng thấy pro thật). Khi đó họ sử dụng MongoDB để lưu trữ dữ liệu.

Xem thêm MongoDB là gì?

Tại thời điểm này họ chỉ lưu dữ liệu trên 1 replica MongoDB duy nhất thôi, và không muốn sử dụng sharding trong MongoDB vì nó quá phức tạp, 1 phần vì bản thân Discord cũng không chắc chắn về mức độ ổn định của nó.

Còn 1 điều mình thấy khá thú vị về Discord đó là về văn hoá công ty:

Làm thế nào thì làm nhưng service phải được build thật nhanh để tung ra thị trường, xem phản ứng của người dùng. Tuy nhiên cũng cần phải có 1 đường lui đến 1 solution mạnh mẽ hơn.

Công ty mình cũng đang đi theo hướng này. Cũng build thật nhanh, và luôn luôn có giải pháp công nghệ tốt hơn khi đối mặt với big data.

Xem thêm công cụ và kỹ thuật trong Big Data.

Về messages được lưu trong collection của MongoDB với bộ index là channel_id created_at.

Giai đoạn đầu với dữ liệu còn nhỏ, MongoDB chạy khá là mượt mà. Tuy nhiên, vào đầu tháng 12 khi dữ liệu messages đạt đến 120 triệu messages trên 1 ngày thì đã xảy ra 1 số vấn đề như sau:

  • data và index không thể fit đầy vào RAM (dữ liệu to thế mà chỉ dùng 1 node thì khó có thể fit đầy RAM được)
  • Thời gian latency bắt đầu kéo dài ra.

Đã đến lúc cần phải chuyển sang 1 database mới phù hợp hơn với logic hiện tại.

Vấn đề đang gặp phải

  • Phần voice chat làm server chịu tải khá lớn, đến nỗi không thể gửi được message. số lượng message loại này chỉ tầm khoảng 1k messages mỗi năm. Khá là ít.
  • Phần private message (trong group private) cũng làm khá nặng server. Loại messages này mỗi năm đạt từ 100k đến 1 triệu messages. Các group private này có số lượng member không nhiều, chỉ tầm 100 member thôi.
  • Các message trong public group thì được gửi khá là nhiều. Các public group này có số lượng thành viên lớn hơn, tầm khoảng 1000 người. Tổng messages trong 1 năm khoảng 1 triệu và gửi thường xuyên hơn.

Yêu cầu về mặt hệ thống

Khi chọn database mới thì cần phải đáp ứng được những yêu cầu sau:

  • Khả năng mở rộng
  • Chịu lỗi tốt
  • Không mất nhiều công trong quá trình bảo trì
  • Đã có nhiều công ty lớn dùng
  • Có thể dự đoán được hiệu năng.
  • Không muốn cache message trong Redis hay Memcached.
  • Open source (muốn tự mình control được hệ thống mà không phải phụ thuộc vào bên thứ 3)

Từ những yêu cầu trên thì chỉ có Cassandra là phù hợp nhất.

Cassandra có thể dễ dàng thêm, xoá node để tăng hiệu năng. Và các node đồng bộ dữ liệu với nhau thông qua cơ chế P2P (peer to peer) nên khi 1 node có bị chết đi chăng nữa thì các node khác vẫn chứa dữ liệu nên độ chịu lỗi khá cao.

Ngoài ra còn có các công ty lớn đang dùng như Netflix, Apple, Facebook, Twitter với hàng nghìn node nên có thể tự tin về hiệu năng của nó.

Data Modeling

Cơ chế tổ chức data trong Cassandra như sau:

  • Được tổ chức dưới dạng KKV (key key value) store.
  • Trong đó, tổ hợp của 2 chữ K này là khoá chính:
    • Chữ K đầu tiên là partition key.
    • Partition gồm nhiều row, mỗi row được định danh bởi K thứ 2 (được gọi là cluster key). Cluster key này cũng đóng vai trò là khoá chính trong partition.

Message được index trong MongoDB sử dụng channel_id và created_at. Trong đó channel_id là partition key bởi vì tất quả query đều thao tác trong channel. Nhưng mà created_at không thể là cluster key được vì có thể 2 message đều được tạo ra cùng thời điểm.

Nhưng thật may mỗi ID trong Discord luôn luôn duy nhất (vì sử dụng cơ chế Snowflake của twitter). Khi đó khoá chính sẽ trở thành (channel_idmessage_id). Trong đó message_id chính là snowflake.

Điều đó giúp ta dễ dàng lấy được message dựa vào channel_id.

Khi đó cấu trúc bảng messages sẽ như sau:

CREATE TABLE messages (
  channel_id bigint,
  message_id bigint,
  author_id bigint,
  content text,
  PRIMARY KEY (channel_id, message_id)
) WITH CLUSTERING ORDER BY (message_id DESC);

Khi import data from MongoDB sang Cassandra thì gặp phải 1 vấn đề sau. Đó là xuất hiện cảnh báo kích thước partition đã vượt quá 100MB. (Có lẽ dữ liệu trong 1 partition có kích thước lớn không được phân tán sang các cluster bên cạnh nên bị cảnh báo này chăng?)

Do đó mà cần chia nhỏ dữ liệu ra để fit vừa 100MB. Họ kiểm tra 1 channel to nhất Discord thấy messages trong 10 ngày sẽ có kích thước tầm 100MB. Do đó quyết định cho messages vào từng bucket với khoảng thời gian là 10 ngày.

Cụ thể như sau:

DISCORD_EPOCH = 1420070400000 // thời điểm lúc 12:00 1/1/2015
BUCKET_SIZE = 1000 * 60 * 60 * 24 * 10 // tin nhắn trong 10 ngày

def make_bucket(snowflake):
   if snowflake is None:
       timestamp = int(time.time() * 1000) - DISCORD_EPOCH
   else:
       # When a Snowflake is created it contains the number of
       # seconds since the DISCORD_EPOCH.
       timestamp = snowflake_id >> 22
   return int(timestamp / BUCKET_SIZE)
  
def make_buckets(start_id, end_id=None):
   return range(make_bucket(start_id), make_bucket(end_id) + 1)

Khi đó primary key sẽ trở thành: ((channel_id, bucket), message_id)

CREATE TABLE messages (
   channel_id bigint,
   bucket int,
   message_id bigint,
   author_id bigint,
   content text,
   PRIMARY KEY ((channel_id, bucket), message_id)
) WITH CLUSTERING ORDER BY (message_id DESC);

Để query lấy messages gần đây thì chỉ cần tạo ra 1 bucket từ current_time cho đến channel_id (vì channel_id được tạo ra bởi Snowflake, mà channel thường được tạo trước sau đó mới đến message nên có thể coi channel_id như message đầu tiên).

Và chúng ta sẽ query tuần tự trong partition để lấy đủ message thì thôi.

Hiệu năng

Quả đúng như đồn đại, tốc độ write luôn luôn nhanh hơn tốc độ read. Write mất khoảng 0.5ms trong khi read mất tầm khoảng 5ms. Mặc dù read chậm hơn thật nhưng mà chỉ mất đến milisecond thì vẫn nhanh chán.

Discord là gì

Đây là kết quả khi muốn xem 1 tin nhắn cách đây 1 năm.

discord là gì

Kết quả bên trên được test ở trong 1 channel to nhất Discord (có trên 1k thành viên). Tốc độ quả rất là nhanh.

1 điều ngạc nhiên đã xảy ra

Cassandra hoạt động khá suôn sẻ suốt 6 tháng và đến 1 ngày có 1 việc xảy ra. Họ phát hiện ra 1 kênh mất tầm 20s để load dữ liệu. Tại sao lại load lâu như vậy?

Khi vào kiểm tra thấy kênh này chỉ còn duy nhất 1 tin nhắn. Kiểm tra thấy admin của channel này đã dùng api discord để xoá hàng triệu messages đi.

Như chúng ta đã biết, việc xoá dữ liệu trong Cassandra sẽ không như trong Mysql. Là nó sẽ không xoá ngay. Mà nó sẽ gắn 1 cái cờ gọi là tombstones đến dữ liệu muốn xoá. Khi query để lấy dữ liệu, nó sẽ check xem dữ liệu có gắn cờ này không và trả về dữ liệu.

Do đó mặc dù channel chỉ có 1 message duy nhất mà phải mất đến 20s để load. Quá là lâu.

Và họ đã giải quyết bằng cách:

  • Giảm lifespan của tombstones từ 10 ngày xuống còn 2 ngày. Vì họ thực hiện chạy Cassandra repairs vào mỗi buổi tối để dọn dẹp dữ liệu, tăng tính nhất quán của hệ thống.

Kết luận

Qua bài này chắc các bạn cũng biết được Cassandra nó được sử dụng trong các hệ thống big data như thế nào.

Về Cassandra mình thích nhất là tính dễ mở rộng (càng thêm node thì hiệu năng càng cao) và mức độ chịu lỗi thấp của nó.

Nên nếu bạn nào đang có ý định đưa Cassandra vào hệ thống thì mình thấy có thể sẽ là 1 sự lựa chọn đúng đắn.

Đừng bỏ lỡ những bài viết hay về:

Xem thêm việc làm Software Developers mới nhất trên TopDev

Bài viết gốc được đăng tải tại Nghệ thuật Coding

  Kafka là gì? Ứng dụng Kafka cơ bản cho hệ thống message
  JSON Web Token (JWT) là gì ?

React Native – Vẫn còn có thể nhanh hơn nữa

🔥 Điều gì khiến công ty hay startup công nghệ của bạn tiến bước trên con đường thành công?
🔥 Ý tưởng táo bạo, chưa từng xuất hiện ở bất kì đâu?
🔥 Đội ngũ nhân sự cùng chí hướng sẵn sàng đồng cam cộng khổ?
🔥 Nghiên cứu thị trường rồi đưa ra những chiến lược và tầm nhìn phù hợp?

Tất cả đều đúng, nhưng điểm mấu chốt đó chính là là ra mắt sản phẩm với thời gian và tốc độ nhanh nhất. Trong thời buổi digital hiện nay, chỉ cần chậm một chút thôi là những ý tưởng mà bạn suy nghĩ trong đầu đã trở thành sản phẩm trong tay người khác. Do đó, Mobile First là 1 trong những xu hướng trong 3-4 năm trở lại đây mang mọi thông tin và sự tiện ích lên chiếc điện thoại thông minh nhỏ gọn. Tất cả những sản phẩm đặc biệt là những startup công nghệ càng phải chú trọng hơn vào mảng Mobile. Nguồn lực có hạn, ý tưởng có thừa, vậy làm sao để phát triển sản phẩm nhanh nhất, phát hành liên tục một cách tự động CI/CD, đo lường và kiểm soát người dùng. Chủ đề React Native – Vẫn còn có thể nhanh hơn nữa” của anh Phan Thanh Tùng – CEO của TungTung.VN sẽ chia sẻ cho các bạn một cách xây dựng ứng dụng thần tốc với React Native đúng như cách nói “from Zero to Production”.

✅ Cùng tìm hiểu đôi chút về anh Tùng nhé:

Anh PHAN THANH TÙNG – CEO của tungtung.vn sẽ đồng hành cùng Vietnam Mobile Day 2019 sẵn sàng mổ xẻ những khía cạnh ít được phát hiện của React Native.

Với hơn 5 năm kinh nghiệm là Web, Mobile & Design, anh Tùng đã tham gia nhiều dự án liên quan đến Bank Currency, Q&A, Education, QrCode… Ngoài ra, bằng những kinh nghiệm của bản thân cũng như những năm chinh chiến NodeJS – ReactJS – React Native, anh Tùng đã tự tạo ra nhiều Web app và Mobile app tinh gọn, đơn giản nhưng tiện lợi và thực tế với số lượt download đáng mơ ước là hơn 60.000 lượt.

Đến với buổi hội thảo lần này, anh Tùng sẽ chia sẻ về React Native cũng như hướng dẫn những phương pháp để bạn có thể viết app trên nền tảng này một cách dễ hiểu và đơn giản nhất. Với kinh nghiệm cùng những ví dụ thực tế mà anh đưa ra, tin rằng đây là buổi chia sẻ đầy bổ ích và hấp dẫn đối với những ai đang và sẽ tìm hiểu về React Native.

============================

✅ Đừng quên tại ngày hội VIETNAM MOBILE DAY, quy tụ hơn 100 chuyên đề hấp dẫn xoay quanh 6 nhóm chủ đề chính, đó là:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

============================

🎫 Book now
🔎 Website: https://mobileday.vn/
📌 Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019

CODE ƯU ĐÃI 50.000 CHO ĐỘC GIẢ: TOPDEVBLOG@VMD19

Kafka là gì? Ứng dụng Kafka cơ bản cho hệ thống message

kafka là gì

Kafka là gì? Nếu lần đầu bạn nghe đến Kafka thì đừng lo, trong bài viết dưới đây TopDev sẽ giúp bạn cập nhật các kiến thức mới nhất về Kafka và các ứng dụng tuyệt vời của nó. Cùng chúng tôi tìm hiểu ngay nhé!

Kafka là gì?

Kafka với tên gọi đầy đủ là Apache Kafka là hệ thống message pub/sub phân tán mã nguồn mở (distributed messaging system) được phát triển bởi Apache Software Foundation và được viết bằng Java và Scala.

Bên pulbic dữ liệu được gọi là producer, bên subscribe nhận dữ liệu theo topic được gọi là consumer. Kafka có khả năng truyền một lượng lớn message theo thời gian thực, trong trường hợp bên nhận chưa nhận message vẫn được lưu trữ sao lưu trên một hàng đợi và cả trên ổ đĩa bảo đảm an toàn. Đồng thời nó cũng được replicate trong cluster giúp phòng tránh mất dữ liệu.

kafka là gì
Một cấu trúc Apache Kafka đơn giản

Các khái niệm cơ bản

Bạn có thể xem thêm giải thích Message Broker là gì?

Kafka là gì? – Có thể hiểu là một hệ thống logging để lưu lại các trạng thái của hệ thống đề phòng tránh mất thông tin.

Định nghĩa trên được giải thích bằng các khái niệm sau:

  • PRODUCER: Kafka lưu, phân loại message theo topic, sử dụng producer để publish message vào các topic. Dữ liệu được gửi đển partition của topic lưu trữ trên Broker.
  • CONSUMER: Kafka sử dụng consumer để subscribe vào topic, các consumer được định danh bằng các group name. Nhiều consumer có thể cùng đọc một topic.
  • TOPIC: Dữ liệu truyền trong Kafka theo topic, khi cần truyền dữ liệu cho các ứng dụng khác nhau thì sẽ tạo ra cá topic khác nhau.
  • PARTITION: Đây là nơi dữ liệu cho một topic được lưu trữ. Một topic có thể có một hay nhiều partition. Trên mỗi partition thì dữ liệu lưu trữ cố định và được gán cho một ID gọi là offset. Trong một Kafka cluster thì một partition có thể replicate (sao chép) ra nhiều bản. Trong đó có một bản leader chịu trách nhiệm đọc ghi dữ liệu và các bản còn lại gọi là follower. Khi bản leader bị lỗi thì sẽ có một bản follower lên làm leader thay thế. Nếu muốn dùng nhiều consumer đọc song song dữ liệu của một topic thì topic đó cần phải có nhiều partition.
  • BROKER: Kafka cluster là một set các server, mỗi một set này được gọi là 1 broker
  • ZOOKEEPER: được dùng để quản lý và bố trí các broker.
Cấu trúc kafka chi tiết
Cấu trúc kafka chi tiết

Tại sao nên sử dụng Apache Kafka?

Kafka là dự án opensoure, đã được đóng gói hoàn chỉnh, khả năng chịu lỗi cao, hiệu năng rất tốt và dễ dàng mở rộng mà không cần dừng hệ thống.

Kafka thật sự đáng tin cậy, có khả năng lưu trữ lượng dữ liệu lớn nên nó đang dần được thay thế cho hệ thống message truyền thống.

Một vài use case cho kafka:

  • Sử dụng như một hệ thống message queue thay thế cho ActiveMQ hay RabbitMQ
  • Website Activity Monitoring: theo dõi hoạt động của website
  • Stream Processing: Kafka là một hệ thống rất thích hợp cho việc xử lý dòng dữ liệu trong thời gian thực. Khi dữ liệu của một topic được thêm mới ngay lập tức được ghi vào hệ thống và truyền đến cho bên nhận. Ngoài ra Kafka  còn là một hệ thống có đặc tính duribility dữ liệu có thể được lưu trữ an toàn cho đến khi bên nhận sẵn sàng nhận nó.
  • Log Aggregation: tổng hợp log
  • Metrics Collection: thu thập dữ liệu, tracking hành động người dùng như các thông số như page view, search action của user sẽ được publish vào một topic và sẽ được xử lý sau
  • Event-Sourcing: Lưu lại trạng thái của hệ thống để có thể tái hiện trong trường hợp system bị down.

Use case Kafka cho thương mại điện tử

Một hệ thống thương mại điện tử có nhiều server thực hiện các tác vụ khác nhau. Tất cả các server này đều sẽ giao tiếp với database server để đọc ghi dữ liệu.

Vì vậy sẽ có rất nhiều data pipeline kết nối từ rất nhiều server khác đến database server này. Cơ cấu như sau:

lập trình web
Credit: Nitin Rawat From Quora

Nhìn đơn giản vậy thôi chứ đây là hệ thống nhỏ, đối với hệ thống lớn hơn thì nó sẽ như vầy:

kafka là gì
Credit: Nitin Rawat From Quora

Lúc này data pipeline sẽ phức tạp khủng khiếp do gia tăng lượng hệ thống server. Lúc này nếu ta sử dụng Kafka tách rời các data pipeline giữa các hệ thống để làm cho việc giao tiếp giữa các hệ thống trở nên đơn giản hơn và dễ quản lý hơn.

kafka là gì
Credit: Nitin Rawat From Quora

Tổng kết lại, Apache Kafka là một hệ thống hoàn hảo để xử lý các khối dữ liệu khổng lồ và phức tạp. Hi vọng bài viết trên của đội ngũ TopDev có thể giúp bạn hiểu rõ khái niệm cũng như các tính năng nổi bật của Kafka, từ đó ứng dụng vào mô hình triển khai một cách phù hợp nhất.

Để sử dụng kafka, tải ở đây và làm theo hướng dẫn.

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

Xem thêm Top Việc làm it trên TopDev

Những lỗ hổng phổ biến khi phát triển ứng dụng Mobile

ĐÂU LÀ NHỮNG “HỐ ĐEN” KHI BẠN BẮT TAY PHÁT TRIỂN MỘT ỨNG DỤNG??

Trong quá trình thực hiện việc kiểm thử ứng dụng di động cho các tổ chức trong lĩnh vực tài chính, ngân hàng, vận tải, đội ngũ chuyên gia của CyRadar phát hiện ra các lỗ hổng tồn tại trong các ứng dụng này mà xét theo tiêu chuẩn OWASP thì đây là những lỗ hổng phổ biến, nhưng lại có nhiều ảnh hưởng tới vấn đề an ninh thông tin của ứng dụng và tổ chức nói chung.

Nhận ra điều này, những chuyên gia từ CyRadar sẽ đem đến Vietnam Mobile Day 2019 chủ đề “Những lỗ hổng phổ biến khi phát triển ứng dụng Mobile”. Tin rằng qua những phân tích dưới góc độ của các chuyên gia về an ninh thông tin người dùng, các bạn sẽ có những góc nhìn trực quan trong quá trình phát triển ứng dụng Mobile.

Dù bạn là mobile app developer hay đơn giản là những người yêu thích công nghệ & mobile, đây là một trong các chủ đề bạn sẽ không muốn bỏ qua. Còn chờ gì mà không kêu gọi bạn bè đăng ký chung để giữ những chỗ ngồi tốt nhất trong ngày hội công nghệ được mong đợi nhất năm 2019 nào!!!

🔥DIỄN GIẢ SẼ ĐỒNG HÀNH CÙNG BẠN LÀ AI??

Anh HÀ TRUNG HIẾU là Security Service Director | CyRadar

**Anh có những thành tích “khủng” như: tốt nghiệp đại học FPT Greenwich Việt Nam, sở hữu chứng chỉ OSCP danh giá – đích đến của mọi Hacker mũ trắng, có kinh nghiệm trong lĩnh vực thâm nhập, kiểm thử. Ngoài ra, anh Hiếu còn có nhiều năm kinh nghiệm trong tìm kiếm và khai thác lỗ hổng của ứng dụng Web và Di động trên các nền tảng khác nhau cho nhiều tổ chức, doanh nghiệp lớn tại Việt Nam.

Đồng hành cùng anh Hiếu sẽ là anh NGUYỄN MINH ĐỨC – CEO | CyRadar

**Tốt nghiệp trường Đại học Bách Khoa và có hơn 11 năm trong lĩnh vực an ninh mạng, anh Nguyễn Minh Đức là một chuyên gia trong cộng đồng bảo mật. Trước khi sáng lập CyRadar, anh Đức từng là Security Director tại Bkav Corp và Security Research Team Leader tại FPT Corp. Anh gia nhập FPT và phụ trách những dự án liên quan đến Big Data và bảo mật ở nhiều dự án lớn khác trong tập đoàn.

🧿 Là những diễn giả quen thuộc tại các hội thảo, cuộc thi về công nghệ, an ninh mạng, bảo mật. Đến với Vietnam Mobile Day 2019 cùng chủ đề “Những lỗ hổng phổ biến khi phát triển ứng dụng Mobile”, anh Hiếu và anh Đức sẽ đưa ra những phân tích chuyên sâu để giúp các bạn nhìn ra được những mối nguy hại tìm tàng khi phát triển ứng dụng mobile, từ đó đưa ra những phương án tối ưu để giải quyết vấn đề.

Đừng bỏ lỡ cơ hội lắng nghe anh Hà Trung Hiếu và anh Nguyễn Minh Đức cùng 100+ diễn giả khác tại sân chơi công nghệ vào tháng 6 sắp tới nhé!!

danh sách chủ đề vietnam mobile day

VIETNAM MOBILE DAY lần thứ 9 mang đến hơn 100 chuyên đề hấp dẫn xoay quanh 6 nhóm chủ đề chính, đó là:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

============================

🔎 Website: https://mobileday.vn/
📌 Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019

CODE ƯU ĐÃI 50.000 CHO ĐỘC GIẢ: TOPDEVBLOG@VMD19

Xem thêm: Tìm việc làm mobile lương cao hấp dẫn nhất

Sql là gì? 6 lý do tại sao bạn nên học SQL

sql-la-gi

SQL là gì? 

SQL là gì? Đó là viết tắt của Structured Query Language là ngôn ngữ truy vấn có cấu trúc. Nó là một ngôn ngữ, là tập hợp các lệnh để tương tác với cơ sở dữ liệu. Dùng để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ. Trong thực tế, SQL là ngôn ngữ chuẩn được sử dụng hầu hết cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) như MySQL, MS Access, Oracle, Postgres và SQL Server… đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.

Hầu như công ty nào lớn cũng cần xây dựng một hệ thống để lưu trữ cơ sở dữ liệu. Mọi thứ trong cơ sở dữ liệu này sẽ được diễn tả ra thành nhiều bảng, có mối quan hệ với nhau. Để truy vấn và lấy dữ liệu từ các bảng này nhằm tổng hợp thành thông tin nào đó, người ta dùng đến SQL thông qua các câu query.

>>> Xem thêm: Phần 1: Giới thiệu Cơ Sở Dữ Liệu (CSDL) – Hệ Quản Trị CSDL

>>> Xem thêm: Phần 2: Giới thiệu xung quanh Cơ Sở Dữ Liệu(CSDL)

Nguồn gốc

SQL bắt đầu từ những năm 1970, khi các kỹ sư của IBMDonald ChamberlinRaymond Boyce thiết kế phiên bản đầu tiên để tương tác và lấy dữ liệu được lưu trữ trong hệ thống cơ sở dữ liệu của công ty. Họ gọi nó là SEQUEL, mặc dù sau đó họ buộc phải thay đổi nó do các vấn đề bản quyền.

Tại sao sử dụng SQL và nó lại quan trọng

SQL được sử dụng phổ biến vì nó có các ưu điểm sau:

  • Cho phép truy cập dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ.
  • Cho phép mô tả dữ liệu.
  • Cho phép xác định dữ liệu trong cơ sở dữ liệu và thao tác dữ liệu đó.
  • Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch trước.
  • Cho phép tạo và thả các cơ sở dữ liệu và bảng.
  • Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cơ sở dữ liệu.
  • Cho phép thiết lập quyền trên các bảng, thủ tục và view.

Thường thì doanh nghiệp luôn cần một hệ thống để quản trị thông tin, họ phải thiết kế ra một cơ sở dữ liệu để lưu trữ thông tin. Nếu họ lưu trữ ở dạng giấy hoặc excel thì sẽ chứa nhiều rủi ro bảo mật thông tin như bị mất, sửa, xóa…

SQL sẽ giúp quản lý hiệu quả và truy vấn thông tin nhanh hơn, giúp bảo trì, bảo mật thông tin dễ dàng hơn.

Ví dụ: trước đây, trường đại học thường lưu trữ thông tin sinh viên bằng hồ sơ giấy. Sau đó, cất giữ hồ sơ trong kho. Khi cần tìm kiếm hoặc thêm/xóa/sửa thông tin nào đó, họ phải mất rất nhiều thời gian để lục tìm lại hồ sơ.

sql là gì

Trong khi, nếu lưu trữ thông tin vào một hệ thống cơ sở dữ liệu, họ chỉ cần gõ một câu lệnh SQL ngắn là đã có thể trích xuất được thông tin cần. Việc thêm/xóa/sửa cũng được thực hiện một cách dễ dàng, nhanh chóng.

Con đường sự nghiệp cho SQL Developer nói riêng và Database Developer

Hiện tại có 2 hướng phát triển như sau:

  • Hướng đi thiên về kỹ thuật: có thể trở thành Data Architect – là người thiết kế ra cơ sở dữ liệu cho doanh nghiệp. Hiện nay, Data Scientist cũng là vị trí đang rất cần trong thời đại AI & Bigdata. Ngoài kiến thức về SQL, lập trình viên còn phải biết về xác suất thống kê và ngôn ngữ lập trình khác, thường là Python.
  • Hướng đi về quản lý: đích đến sẽ là Business Analyst hoặc Project Manager.

Các câu lệnh SQL

Các lệnh SQL tiêu chuẩn để tương tác với cơ sở dữ liệu quan hệ là CREATE, SELECT, INSERT, UPDATE, DELETE và DROP. Các lệnh này có thể được phân thành các nhóm sau dựa trên bản chất của chúng

DDL – Ngôn ngữ định nghĩa dữ liệu (Data Definition Language)

Lệnh Mô tả
CREATE Tạo ra một bảng mới hoặc các đối tượng khác trong cơ sở dữ liệu.
ALTER Sửa đổi một đối tượng cơ sở dữ liệu hiện có, chẳng hạn như một bảng.
DROP Xoá toàn bộ một bảng hoặc các đối tượng khác trong cơ sở dữ liệu.

DML – Ngôn ngữ thao tác dữ liệu(Data Manipulation Language)

Lệnh Mô tả
SELECT Lấy ra các bảng ghi nhất định từ một hoặc nhiều bảng.
INSERT Tạo một bảng ghi..
UPDATE Chỉnh sửa bảng ghi.
DELETE Xóa bảng ghi.

DCL – Ngôn ngữ điều khiển dữ liệu (Data Control Language)

Lệnh Mô tả
GRANT Cung cấp một quyền cho người dùng.
REVOKE Lấy lại các quyền được cấp từ người dùng.

 

6 lý do bạn nên học SQL

1. Khai thác dữ liệu

Biết sử dụng SQL sẽ cho phép bạn khai thác dữ liệu với hiệu quả cao hơn. Chỉ cần sử dụng các truy vấn cơ bản là bạn có thể xác định được dữ liệu cụ thể theo yêu cầu của người dùng.

2. Nhu cầu lập trình viên SQL cao

Khi bạn là backend developer, khả năng sử dụng SQL là yêu cầu bắt buộc. Cho nên biết sử dụng và sử dụng thành thạo để tối ưu query db là một ưu điểm cực kỳ tốt. Xem thêm việc làm SQL.

3. Dữ liệu có ở mọi nơi

Mọi ứng dụng trên internet để cần lưu trữ dữ liệu. Ngay cả các ứng dụng desktop, laptop và mobile cũng cần phải lưu dữ liệu. Khi bạn đăng ký tài khoản trên ứng dụng web, bạn đang cung cấp thông tin cho ứng dụng.

4. Thao tác với dữ liệu dễ dàng

Với SQL, việc bạn muốn thêm, sửa, đọc hay xóa dữ liệu trở lên dễ dàng hơn bao giờ hết. Ví dụ, nếu bạn muốn lấy thông tin người dùng với email chứa gmail trong đó bạn có thể chạy một câu lệnh duy nhất sau với MySQL.

mysql> select * from users where email like '%gmail%'

Thử tưởng tượng việc này sẽ khó khăn như thế nào nếu như bạn phải dùng một ngôn ngữ lập trình thông thường để đọc toàn bộ nội dung file và tìm ra dòng chữ có chứa ‘gmail’ trong đó.

5. SQL được sử dụng và hỗ trợ bởi nhiều công ty lớn

Mặc dù SQL là ngôn ngữ khá đơn giản, nhưng nắm vững được nó là một kỹ năng là một điều vô cùng cần thiết.

Tất cả các công ty lớn về công nghệ trên thế giới hiện nay như Microsoft, IBM, Oracle… đều hỗ trợ việc phát triển ngôn ngữ này và SQL được rất nhiều công ty lớn sử dụng.

6. SQL giúp công việc lập trình dễ dàng hơn

Nếu không xài DB để lưu trữ dữ liệu, bạn có thể lưu dữ liệu trên một file trên server. Tuy nhiên thử tưởng tượng trong ứng dụng của bạn có rất nhiều loại thông tin cần lưu và bạn quyết định sử dụng nhiều file để lưu mỗi loại dữ liệu.

Việc này lại khiến cho việc đọc dữ liệu trở lên phân tán và quy trình maintain không dễ dàng chút nào. Ngoài ra nếu bạn có nhiều ứng dụng khác nhau cần lưu thông tin thì việc quản lý dữ liệu lại càng trở lên khó khăn.

Với SQL, bạn có thể lưu nhiều dữ liệu cho nhiều ứng dụng khác nhau trên cũng một cơ sở dữ liệu và việc truy cập các cơ sở dữ liệu này trở lên đơn giản hơn nhờ một cách thức giống nhau đối với nhiều cơ sở dữ liệu.

sql là gì

Các câu hỏi thường gặp về SQL

Sau đây là 50 câu hỏi phỏng vấn sql là gì phổ biến và hữu ích để bạn có thể chuẩn bị cho cuộc phỏng vấn trong khi học SQL.

STT Câu hỏi Câu trả lời
1 SQL là gì? SQL là viết tắt của Structured Query Language – ngôn ngữ truy vấn mang tính cấu trúc. Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). SQL là ngôn ngữ cơ sở dữ liệu, được dùng để tạo, xóa, lấy các hàng và sửa đổi các hàng.
2 Làm thế nào để chọn tất cả bản ghi từ table? Sử dụng cú pháp sau: Select * from table_name;
3 Định nghĩa JOIN và các loại JOIN khác nhau? Từ khóa JOIN được sử dụng để nạp dữ liệu từ hai hay nhiều bảng liên quan. Khi cần truy vấn các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một tập kết quả, cần sử dụng từ khóa “JOIN”
Loại JOIN là –
INNER JOIN (Hoặc JOIN)
LEFT OUTER JOIN (Hoặc LEFT JOIN)
RIGHT OUTER JOIN (Hoặc RIGHT JOIN)
FULL OUTER JOIN (Hoặc OUTER JOIN)
CROSS JOIN
SELF JOIN
4 Cú pháp để thêm bản ghi vào một bảng là gì? Để thêm bản ghi trong một bảng cú pháp INSERT được sử dụng.
Ví dụ:INSERT into table_name VALUES (value1, value2..);
5 Làm thế nào để bạn thêm một cột vào một bảng? Để thêm một cột khác trong bảng sử dụng lệnh.
ALTER TABLE table_name ADD (column_name);
6 Xác định câu lệnh Delete SQL. Xóa được sử dụng để xóa hàng hoặc các hàng từ một bảng dựa trên điều kiện được chỉ định. Cú pháp cơ bản như sau:
DELETE FROM table_name<br>WHERE<Condition>
7 Xác định COMMIT? COMMIT lưu tất cả các thay đổi được thực hiện bởi các câu lệnh DML.
DML cho phép thực thi các câu truy vấn, bao gồm cú pháp để cập nhật – sửa đổi, chèn thêm và xoá các mẩu tin.
8 Khóa chính (PRIMARY KEY ) là gì? Khóa chính là cột có các giá trị xác định duy nhất mỗi hàng trong một bảng. Giá trị khóa chính không bao giờ được sử dụng lại.
Một cột là PRIMARY KEY thì không được phép có giá trị NULL.
Một bảng chỉ cho phép tối đa một PRIMARY KEY.
Mỗi bảng đều cần có khóa chính.
9 Khóa ngoại (Foreign key) là gì? Khi một trường khoá chính của một bảng được thêm vào các bảng có liên quan để tạo ra trường phổ biến có liên quan đến hai bảng, nó được gọi là khoá ngoại trong các bảng khác. Các ràng buộc khóa ngoại thực thi toàn vẹn tham chiếu.
10 CHECK Constraint – Ràng buộc CHECK là gì? Một ràng buộc CHECK được sử dụng để giới hạn các giá trị hoặc loại dữ liệu có thể được lưu trữ trong một cột. Nếu bản ghi không đáp ứng được điều kiện này, thì sẽ không được lưu trữ vào trong bảng.
11 Một bảng có thể có nhiều hơn một khoá ngoại? Đúng, một bảng có thể có nhiều khóa ngoài và chỉ có một khóa chính.
12 Trường dữ liệu BOOLEAN có giá trị nào? Đối với trường dữ liệu BOOLEAN, có hai giá trị: -1 (TRUE) và 0 (FALSE).
13 Thủ tục lưu trữ (stored procedure) là gì? Một thủ tục lưu trữ là một tập hợp các truy vấn SQL có thể lấy đầu vào và gửi lại đầu ra.
14 IDENTITY trong SQL là gì? Một cột IDENTITY trong SQL sẽ tự động sinh ra các giá trị số tự tăng. Có thể định nghĩa giá trị bắt đầu và gia tăng của cột nhận dạng.
15 NORMALIZATION – Chuẩn hóa trong sql là gì? Quá trình thiết kế bảng để giảm thiểu sự thừa số liệu được gọi là chuẩn hóa. Chúng ta cần phải chia một cơ sở dữ liệu thành hai hay nhiều bảng và xác định các mối quan hệ giữa chúng.
16 Trigger là gì ? Trigger là một thủ tục dược thực thi từ phía máy chủ CSDL khi một sự kiện bảng xảy ra (Chèn, cập nhật hoặc xóa lệnh thực hiện đối với một bảng cụ thể) .
17 Làm thế nào để lấy ra các hàng ngẫu nhiên từ một bảng? Sử dụng mệnh đề SAMPLE chúng ta có thể chọn các hàng ngẫu nhiên.
Ví dụ:
SELECT * FROM table_name SAMPLE (10);
18 Cổng TCP / IP nào mà SQL Server chạy? Mặc định SQL Server chạy trên cổng 1433.
19 Viết một truy vấn SELECT SQL mà trả về mỗi bản ghi chỉ một lần từ một bảng? Để có được mỗi tên một lần duy nhất, chúng ta cần phải sử dụng từ khoá DISTINCT.
SELECT DISTINCT name FROM table_name;
20 DML và DDL trong sql là gì? DML là viết tắt của Ngôn ngữ Thao tác Dữ liệu ( Data Manipulation Language): INSERT, UPDATE và DELETE là các câu lệnh DML.
DDL là viết tắt của Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language): CREATE, ALTER, DROP, RENAME là các câu lệnh DDL.
21 Lệnh nào để đổi tên một cột trong đầu ra của truy vấn SQL? Có sử dụng cú pháp sau đây.:
SELECT column_name AS new_name FROM table_name;
22 Thứ tự của SQL SELECT? Thứ tự các mệnh đề SQL SELECT là: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Trong đó SELECT và FROM là bắt buộc.
23 Giả sử một cột Student có hai cột, Name và Marks. Làm thế nào để có được Name và Marks của ba sinh viên top đầu. SELECT Name, Marks FROM Student s1 where 3 <= (SELECT COUNT(*) FROM Students s2 WHERE s1.marks = s2.marks)
24 SQL comments là gì? Khi muốn ghi chú thích vào câu truy vấn SQL, để làm cho câu truy vấn ấy trở nên rõ ràng và dễ hiểu hơn, thì sử dụng SQL comment.
SQL comments có thể được đặt bởi hai dấu nối liên tiếp (-) hoặc /* …. */
Khi câu truy vấn được thực thi thì trình biên dịch sẽ tự động bỏ qua những dòng có comment.
25 Sự khác biệt giữa các lệnh TRUNCATEDELETE và DROP? DELETE xóa một hoặc tất cả các hàng từ một bảng dựa trên điều kiện và có thể được phục hồi lại.
TRUNCATE xóa tất cả các hàng từ một bảng bằng cách phân bổ các trang bộ nhớ và không thể phục hồi lại
DROP xóa hoàn toàn một bảng từ cơ sở dữ liệu.
26 Các thuộc tính của một giao dịch là gì? Nói chung các thuộc tính này được gọi là thuộc tính ACID bao gồm:
Tính nguyên tử (Atomicity)
Tính nhất quán (Consistency)
Cô lập (Isolation)
Độ bền (Durability).
27 ROWID nghĩa là gì? Đó là một cột giả dài 18 ký tự gắn liền với mỗi hàng của một bảng.
28 Xác định UNION, MINUS, UNION ALL, INTERSECT? MINUS – sử dụng để kết hợp 2 câu lệnh SELECT, nó trả về tất cả các bản ghi chỉ thuộc vào bảng của câu truy vấn SELECT đầu tiên, những bản ghi giao nhau và những bản ghi của câu truy vấn SELECT thứ 2 thì không được lấy vào kết quả..
UNION – Bạn viết hai hay nhiều câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION
UNION ALL – trả về tất cả các hàng được chọn bởi một trong hai truy vấn, giữ lại các kết quả trùng
INTERSECT – lấy ra những bản ghi nào mà nó hiện diện ở trong cả 2 bảng (có trong bảng này và cũng có trong bảng kia)
29 Giao dịch ( transaction) là gì? Một giao dịch là một dãy mã chạy trên cơ sở dữ liệu. Cần có cơ sở dữ liệu từ một trạng thái nhất quán sang trạng thái khác.
30 Sự khác nhau giữa UNIQUE và PRIMARY KEY constraints là gì? Một bảng có thể chỉ có một PRIMARY KEY và có thể không có hoặc có mộ hay nhiều UNIQUE keys.
PRIMARY KEY không thể chứa giá trị Null , UNIQUE có thể chứa giá trị Null.
31 Khóa tổng hợp (Composite primary key) là gì? Khóa chính được tạo trên nhiều cột được gọi là khóa chính tổng hợp.
32 Index là gì? Index (Chỉ mục) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thực hiện các truy vấn.
Index có thể được tạo ra trên một hoặc nhiều cột của một bảng.
33 Subquery là gì? Truy vấn con (còn được gọi truy vấn phụ hay truy vấn lồng nhau) là một truy vấn bên trong truy vấn SQL khác và được nhúng bên trong mệnh đề WHERE.
34 Tối ưu hoá truy vấn là gì? Tối ưu hóa truy vấn là một quá trình trong đó hệ thống cơ sở dữ liệu so sánh các chiến lược truy vấn khác nhau và chọn truy vấn với chi phí thấp nhất.
35 Collation là gì? Bộ quy tắc định nghĩa cách dữ liệu được lưu trữ, cách phân biệt chữ hoa chữ thường và ký tự Kana có thể được xử lý như thế nào.
36 Tính toàn vẹn tham chiếu là gì? Tập các quy tắc hạn chế các giá trị của một hoặc nhiều cột của các bảng dựa trên các giá trị của khóa chính hoặc khóa duy nhất của bảng tham chiếu.
37 Hàm Case là gì? Trường hợp tạo điều kiện logic kiểu if-then-else trong SQL. Nó đánh giá một danh sách các điều kiện và trả về một trong nhiều biểu thức kết quả tốt.
38 Xác định một bảng tạm thời? Một bảng tạm là một cấu trúc lưu trữ tạm thời để lưu trữ dữ liệu tạm thời.
39 Làm thế nào chúng ta có thể tránh trùng lặp hồ sơ trong một truy vấn? Bằng cách sử dụng từ khoá DISTINCT sao chép hồ sơ trong một truy vấn có thể tránh được.
40 Giải thích sự khác nhau giữa Đổi tên (Rename) và Bí danh (Alias)? Đổi tên là một tên thường xuyên cho một bảng hoặc cột
Bí danh là tên tạm thời cho một bảng hoặc cột.
41 View là gì? Một khung nhìn là một bảng ảo chứa dữ liệu từ một hoặc nhiều bảng. Lượt xem hạn chế quyền truy cập dữ liệu của bảng bằng cách chỉ chọn các giá trị được yêu cầu và thực hiện các truy vấn phức tạp một cách dễ dàng.
42 Lợi ích của Views là gì? Ưu điểm của Views:
Chế độ xem hạn chế quyền truy cập vào dữ liệu vì chế độ xem có thể hiển thị các cột được chọn từ bảng.
Có thể sử dụng chế độ xem để truy vấn các kết quả tìm kiếm phức tạp. Ví dụ: chế độ xem có thể được sử dụng để truy vấn thông tin từ nhiều bảng mà không có sự hiểu biết của người dùng.
43 Liệt kê các đặc quyền khác nhau mà người dùng có thể cấp cho người dùng khác? SELECT, CONNECT, RESOURCES.
44 Schema trong sql là gì? Lược đồ là tập hợp các đối tượng cơ sở dữ liệu của Người dùng.
45 Bảng trong sql là gì? Một bảng là đơn vị cơ bản của lưu trữ dữ liệu trong hệ thống quản lý cơ sở dữ liệu. Dữ liệu bảng được lưu trữ trong hàng và cột.
46 Chế độ xem (View) có chứa dữ liệu không? Không, View là cấu trúc ảo.
47 Chế độ xem có thể dựa trên chế độ xem khác không? Chế độ xem dựa trên một Chế độ xem khác.
48 Sự khác biệt giữa mệnh đề Having và mệnh đề Where? Cả hai đều chỉ định điều kiện tìm kiếm nhưng mệnh đề Having chỉ được sử dụng với câu lệnh SELECT và thường được sử dụng với mệnh đề GROUP BY. Nếu mệnh đề GROUP BY không được sử dụng thì Havingn sử dụng giống như mệnh đề WHERE.
49 Sự khác nhau giữa bảng tạm cục bộ (Local) và bảng tạm toàn cầu (Global) là gì? Nếu được định nghĩa bên trong câu lệnh hợp chất,
Một bảng tạm thời cục bộ tồn tại trong 1 kết nối. Khi kết thúc kết nối thì bảng tạm này sẽ tự động được xóa. Tên của bảng tạm kiểu Local được bắt đầu bằng ký tử #
Một bảng tạm thời toàn cầu tồn tại vĩnh viễn trong db nhưng các hàng của nó biến mất khi kết nối được đóng lại. Tên bảng tạm kiểu Global được bắt đầu bằng ##.
50 CTE trong sql là gì? Biểu thức bảng CTE ( Common Table Expression) hoặc bảng chung là một biểu thức có chứa tập kết quả tạm thời được định nghĩa trong câu lệnh SQL.
    Có thể bạn muốn xem thêm:

Jenkins là gì? Build và deploy code nhanh chóng với Jenkins

Jenkins là gì?

Jenkins là một opensource dùng để thực hiện chức năng tích hợp liên tục (gọi là CI – Continuous Integration) và xây dựng các tác vụ tự động hóa.

Nó tích hợp các source code của các members trong team lại nhanh chóng một cách liên tục, theo dõi sự thực thi và trạng thái thông qua các bước kiểm thử (Integration testunits test). Tất nhiên là nhằm giúp sản phẩm chạy ổn định.

jenkins
Credit: Dzone

Quá trình hình thành

Năm 2004, Kohsuke Kawaguchi – một lập trình viên Java tại Sun vào một ngày cảm thấy mệt mỏi vì các mã nguồn của mình thường xuyên bị fail.

Ông ta muốn tìm cách biết là trước khi đưa code vào deploy, liệu code có hoạt động hay không.

  Continuous Integration with Jenkins - Bài 1: Giới thiệu về CI và Jenkins
  Xây dựng hệ thống Jenkins với hàng chục nghìn job

Vì vậy, Kawaguchi đã xây dựng một hệ thống server tự động hóa cho chính server và cho Java có thể kiểm tra tình trạng code trước khi deploy, được gọi là Hudson. Hudson trở nên phổ biến tại Sun và thịnh hành sang các công ty khác dưới dạng opensource.

Đến năm 2011, với việc Oracle mua lại Sun gây nên sự tranh chấp với cộng đồng nguồn mở, Jenkins được forked từ Hudson sau đó. Cả Hudson và Jenkins đều tiếp tục tồn tại, mặc dù Jenkins có phần phổ biến hơn.

Năm 2014 Kawaguchi trở thành CTO của CloudBees, một công ty cung cấp các sản phẩm dựa trên nền tảng Jenkins.

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

jenkins
Credit: Dzone

CI là viết tắt của Continuous Integration

Là tích hợp liên tục, nhằm liên tục tích hợp các source code của các thành viên trong team lại một cách nhanh chóng.

Giúp kiểm soát được tình hình phát triển thông qua các bước kiểm thử unit tests, Integration tests.

Chu trình làm việc

  1. Bước đầu tiên, các thành viên trong team dev sẽ bắt đầu pull code mới nhất từ repo về branch để thực hiện các yêu cầu chức năng nhất định.
  2. Tiếp đó là quá trình lập trình và test code để đảm bảo chất lượng của chức năng cũng như toàn bộ source code.
  3. Thành viên code xong thì sẵn sàng cho việc commit vào branch develop của team.
  4. Thành viên cập nhật code mới từ repo về local repo
  5. Merge code và giải quyết conflict.
  6. Build và đảm bảo code pass qua các tests dưới local.
  7. Commit code lên repo
  8. Máy chủ CI lắng nghe các thay đổi code từ repository và có thể tự động build/test, sau đó đưa ra các thông báo (pass/failure) cho các thành viên.

CD là viết tắt của Continuous Delivery

  Xây dựng hệ thống Jenkins với hàng chục nghìn job

Continuous Delivery là chuyển giao liên tục, là 1 tập hợp các kỹ thuật để triển khai tích hợp souce code trên môi trường staging ( một môi trường rất giống với môi trường production).

Với cách này ta có thể đảm bảo source code được review, kiểm thử một cách tỉ mỉ trước khi deploy lên môi trường production.

Build, deploy với Jenkins và Docker

Các bạn có thể tham khảo thêm về Image này:

https://hub.docker.com/r/topdevvietnamit/jenkins_ci

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

Xem thêm Top Việc làm Developer trên TopDev

Hé lộ những topics “cực chất” tại Vietnam Mobile Day năm thứ 9

HÉ LỘ DANH SÁCH CHỦ ĐỀ CHÍNH THỨC CỦA VIETNAM MOBILE DAY NĂM NAY!!!

<<Liên tục cập nhật>>

  • Hoành tráng hơn!
  • Đặc sắc hơn!
  • Chất lượng và ứng dụng hơn!

Hãy đánh dấu sẵn những topics “hợp gu” trước khi tham gia Vietnam Mobile Day 2019 bạn nhé!!!

vietnam mobile day vietnam mobile day vietnam mobile day vietnam mobile day

Nhưng quan trọng là bạn đã có vé chưa?? Những slots giới hạn còn lại vẫn đang được bán ra mỗi ngày. Nếu còn chưa đăng ký thì nhanh tay giữ lấy chìa khóa vàng bước vào thế giới dành riêng cho các tín đồ công nghệ.

Còn nơi nào tốt hơn VMD2019 để gặp gỡ và giao lưu trực tiếp với 100+ chuyên gia của các lĩnh vực technology, marketing & business, đón đầu các xu hướng mới trên thế giới, cùng hàng trăm các ưu đãi hấp dẫn khác. Vậy thì ngần ngại gì mà không đăng ký ngay nào!!!!

============================

🔎 Website: https://mobileday.vn/
📌 Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019
🔥VÉ COMBO dành cho nhóm 5-10-20-30 người với những giá cực ưu đãi nhưng vẫn giữ nguyên quyền lợi TIÊU CHUẨN!!!

ĐỘC GIẢ TOPDEV BLOG ĐĂNG KÝ VÉ VỚI MÃ CODE TOPDEVBLOG@VMD19: ƯU ĐÃI GIẢM 30% GIÁ VÉ

8 tips giúp tăng hiệu suất làm việc với Github

lam-viec-voi-github

Bài viết được sự cho phép của tác giả Ngo Thang

Chắc hẳn ai trong số chúng ta cũng đã từng làm việc với Github. Nhưng ít ai biết đến các phím tắt cũng như 1 số tính năng giúp làm việc hiệu quả hơn.

Nào cùng xem đó là những phím tắt nào nhé.

Tìm kiếm file nhanh trong Repository

Đây là 1 trong những phím tắt mà mình thấy hay và tiện lợi nhất trên Github. Nó có thể giúp ta tìm kiếm bất kì file nào trong Repository 1 cách nhanh chóng.

Đầu tiên bạn mở 1 Repository nào đó. Sau đó ấn phím “t” nó sẽ đi đến màn hình tìm kiếm. Ở màn hình này bạn chỉ cần nhập tên file muốn tìm kiếm vào là được.

Quick fuzzy file

Suggest thay đổi code trong Pull Request

Khi chúng ta comment vào 1 phần code nào đó trong Pull Request. Chúng ta có thể đề xuất thay thế code bằng việc sử dụng tính năng ”Suggested Changes”. Người tạo Pull Request có thể apply trực tiếp phần đề xuất thay đổi code của bạn mà không cần phải dời Github.

Để tạo ra 1 lời đề xuất thì chỉ cần bao quanh đoạn code của bạn bằng thẻ Markdown, với thẻ tag là suggestion.

suggestions in pull request 1

Bây giờ người tạo Pull Request có thể thay đổi file trực tiếp trên Github mà không nhất thiết phải thay đổi bằng tay.

suggestions in pull request 2

Hiển thị Github như trong IDE

Với những người nào quen dùng IDE đều thấy nó tổ chức thư mục theo dạng hình cây (sidebar tree).

Trên Github cũng có thể làm như thế được, nhưng các bạn cần phải cài 1 extension trên Chrome là Octotree extension

sidebar tree github

Nhẩy đến function khi đang review code

Ai đã từng review code rồi cũng đều biết, khi review 1 đoạn code nào đó. Thì việc xem các function liên quan đến đoạn code đó là điều hoàn toàn không thể tránh khỏi.

Bình thường chắc mọi người sẽ mở ra 1 tab mới trên trình duyệt rồi xem function muốn xem. Cách này cũng được nhưng khá mất thời gian. Có 1 cách nhanh hơn giúp các bạn có thể xem được function liên quan bằng cách ấn phím “t”. Khi đó sẽ hiển thị ra 1 cái dropdown và bạn chọn function muốn xem là được.

jump to function github

Nội dung hoặc đường dẫn đến 1 file trong Github có thể bị thay đổi. Ví du như hôm nay dùng file này. Nhưng đến ngày mai file đó có thể không dùng và bị xoá đi. Vậy làm thế nào có thể share đường dẫn của 1 file đến cho người khác mà không sợ đường dẫn đó bị thay đổi.

Trong Github có thể giúp bạn làm điều này 1 cách rất đơn giản. Đầu tiên bạn mở file đó trên Github.

Ví dụ file của mình có đường dẫn như sau:

https://github.com/nooptr/docker-rails-mysql/blob/master/Dockerfile

Sau đó các bạn ấn phím “y” nó sẽ tự động biến cái đường dẫn trên thành đường dẫn kiểu như này:

https://github.com/nooptr/docker-rails-mysql/blob/34bd44a48b0b66519fcbdfa2165d115a379db84a/Dockerfile

Và đây chính là đường dẫn static và không bị thay đổi. Kể cả file kia của bạn có bị xoá đi chăng nữa.

Thực chất làm được điều này là do cái 34bd44a48b0b66519fcbdfa2165d115a379db84a chính là mã commit của file lúc đó mà thôi. Nên bạn có xoá file đi thì commit cũ vẫn còn lại nên đương nhiên là vẫn xem được rồi.

Xem lịch sử thay đổi của 1 file

Nếu bạn muốn xem lịch sử thay đổi của 1 file trên Github bạn có thể làm bằng cách ấn phím “b”. Khi đó nó sẽ hiển thị xem ai đã thay đổi dòng nào trong file vào thời gian nào. Cái này không khác gì git blame cả. Nhưng xem trên giao diện mình thấy nó dễ nhìn hơn nhiều.

shortcut git blame

Github đánh chỉ mục hầu hết các đoạn code và cung cấp chức năng tìm kiếm mạnh mẽ trên nó. Nếu bạn muốn tìm kiếm 1 đoạn text nào đó trên Github, bạn chỉ cần ấn nút ”/” và nhập từ muốn tìm kiếm là được.

Powerful code search

Dùng lại reply đã lưu

Nếu bạn muốn comment bằng comment mấy ngày trước đó để tiết kiệm thời gian, đỡ phải gõ. Thì Github cũng cung cấp cho bạn tính năng lưu lại comment trước đó bằng cách tạo 1 saved replies. Lần tới khi muốn dùng lại comment trước đó thì bạn chỉ cần chọn từ dropdown là được.

saved replies github

Kết luận

Cảm ơn các bạn đã đọc bài. Hi vọng qua bài viết này sẽ giúp các bạn làm việc trên Github 1 cách hiệu quả hơn.

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

Xem thêm việc làm Software Developers hot nhất tại TopDev

Bài viết gốc được đăng tải tại Nghệ thuật coding

  1001 Tips: Con trỏ và hàm (Pointer & Function) trong C++
  Front end Optimization – 9 tips để cải thiện Web Performance

Tối ưu UX/UI bằng Animation – những khung hình “biết nói”

hoàng nguyễn Tối ưu UX/UI bằng Animation

“Designing for delight is designing for moments. The animation will be an effective way to create those moments better.

Nghiên cứu chỉ ra rằng có đến 90% người dùng đã ngừng sử dụng một ứng dụng do hiệu suất kém, 86% người dùng đã xóa bỏ một ứng dụng khi họ gặp phải vấn đề về thiết kế hay chức năng. Ngược lại, có đến 86% người dùng đánh giá cao những ứng dụng có trải nghiệm đặc biệt. Từ những con số này, không khó để hiểu được lý do tại sao các công ty tập trung vào User Experience như Apple, Google, Adobe, Dropbox và Amazon vẫn luôn dẫn đầu trong lĩnh vực của họ.

❌ Đừng đánh giá thấp Animation của ứng dụng khi bạn chưa biết những điều sau:

+ Người dùng có thể thư giãn nếu App bạn đang load
+ Sự chuyển động sẽ giúp người dùng tập trung hơn vào đối tượng cần chú ý.
+ Sự kết nối mạch lạc khiến người dùng thích thú.
+ Làm nổi bật lỗi khi thông báo hoặc tác vụ hoàn thành.

Xem tin tuyển dụng UI UX designer lương cao trên TopDev

Song, người dùng luôn bận rộn đồng nghĩa với việc bạn chỉ có một chút ít thời gian để thu hút họ Vậy nên, nếu chúng ta có thể tận dụng được khoảnh khắc đó, chúng ta có thể có thêm những khách hàng tiềm năng với giá trị to lớn. Vậy bạn có đồng ý với quan điểm “Designing for delight is designing for moments. The animation will be an effective way to create those moments better” không? Hãy cùng làm rõ cùng anh HOÀNG NGUYỄN – Senior Product Designer của Interactive Labs, Design Coach của GEEK Up, với topic How the animation delights user experience” được diễn ra tại sự kiện Vietnam Mobile Day 2019.


‍ ĐÔI CHÚT VỀ DIỄN GIẢ:

Nói về một trong những người tiên phong trong lĩnh vực UI/UX Design không thể thiếu anh Hoàng Nguyễn. Anh hiện là Senior Product Designer của Interactive Labs kiêm Design Coach của GEEK Up. Trong nhiều năm chinh chiến, anh đã xây dựng một background “khủng” về lĩnh vực này, trong đó nổi bật nhất là:

Anh từng làm việc với những khách hàng đầu ngành và các startups.
Anh từng là Technical Adviser về UI/UX Design tại Behance Portfolio.
Anh là tác giả của một số đầu báo cho GAM7 – tạp chí về design và marketing của Việt Nam, và một số tạp chí nước ngoài khác.
Bạn có thể “thỉnh giáo” những dự án của anh tại https://dribbble.com/Hoanguyen hoặc https://www.behance.net/hoanguyen27e97)

Với những kinh nghiệm về animation,  art direction, graphic design, interaction design, print design, product design, web design anh sẽ chia sẻ những vấn đề thường gặp về UI/UX Design cũng như trả lời cho câu hỏi “Animation giúp làm hài lòng trải nghiệm người dùng như thế nào?”

Bạn sẽ thấy tiếc nếu bỏ lỡ chủ đề “xịn xò” này cũng như cơ hội giao lưu và học hỏi những kiến thức bổ ích từ anh Hoàng Nguyễn.

Sự kiện về công nghệ & mobile đang đến gần, bạn đã có vé chưa? Chưa thì đăng ký ngay và luôn để giữ chỗ cho mình ngay nào!!

===

Vietnam Mobile Day năm thứ 9 trở lại với quy mô hoành tráng cùng đội ngũ speakers hot sẽ chia sẻ các chủ đề mới lạ xoay quanh 6 nội dung chính:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

===

Book now: http://topdev.vn/s/X5D57UHI
Website: https://mobileday.vn/
Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019/

ĐỘC GIẢ TECHTALK ĐĂNG KÝ VÉ VỚI MÃ CODE TOPDEVBLOG@VMD19: ƯU ĐÃI GIẢM 30% GIÁ VÉ

Workshop: Triển khai CI/CD cho một dự án phần mềm lớn

Một giám đốc dự án cần đánh giá được tiến độ, chất lượng để có điều chỉnh kịp thời, nhà phát triển cần một hệ thống hỗ trợ coding, danh mục kiểm tra tự động, bộ phận kiểm định chất lượng cần một hệ thống theo dõi đủ sâu và dễ tiếp cận nhất có thể… Tất cả những vấn đề này đều có thể giải quyết triệt để với CI/CD.

Hiện nay, để đảm bảo độ ổn định nhất quán, kiểm soát tình hình kịp thời thì việc tích hợp liên tục các source code của các members trong team lại nhanh chóng, đảm bảo source được kiểm thử một cách tỉ mỉ trước khi deploy lên môi trường production thì CI/CD diễn ra vô cùng phổ biến.

Trong khoảng 5 năm trở lại đây, Docker trở nên khá hot trong giới lập trình vì là một open source có công nghệ container hoá giúp cho việc đóng gói service vào container nhẹ và nhanh hơn. Các hãng lớn như Amazon, IBM, Google, Microsoft, … đã bắt đầu hỗ trợ Docker trên nền tảng của họ.

Song, thách thức khiến mọi nhà phát triển đau đầu là làm sao để cải tiến liên tục về cả độ mượt và chất lượng của sản phẩm họ làm ra. Trong khi đó CI/CD được thiết lập trên nền tảng Docker được xem là một trong những giải pháp hiệu quả nhất.

*CI (Continuous Integration): tích hợp liên tục các source code của các members trong team để kiểm soát tình hình kịp thời.

*CD (Continuous Delivery): chuyển giao liên tục, cho phép triển khai tích hợp source code trên môi trường staging trước khi deploy lên môi trường production.

Có một số công cụ có thể giúp bạn xây dựng một pipeline CI / CD đủ khả năng để đáp ứng tất cả các yêu cầu xây dựng, triển khai, phân phối nhanh và liên tục của bạn và Jenkins, Microsoft VSTS, Bamboo, GitLab, Codeship,… là một số Essential Container CI/CD tools được sử dụng nhiều và phổ biến nhất tính đến thời điểm hiện tại.

Vì vậy, bây giờ nếu câu hỏi của bạn là nên đi với lựa chọn nào? Yếu tố nào bạn quan tâm nhất, sự đơn giản, bảo mật hay dễ dàng hòa hợp với đám mây AWS? Bạn đang chờ đợi điều gì? Hãy thử sức với “TRIỂN KHAI CI/CD CHO MỘT DỰ ÁN PHẦN MỀM LỚN TRONG 3 GIỜ“. Nhanh tay giữ ngay slot tham dự

Thắng Chung Phương Lê

CHUYÊN GIA PHẦN MỀM TẠI NASHTECH VIETNAM SẼ GÓP MẶT TẠI SỰ KIỆN “TRIỂN KHAI CI/CD CHO MỘT DỰ ÁN PHẦN MỀM LỚN TRONG 3 GIỜ“

Bộ đôi Thắng Chung – Phương Lê từ NashTech Việt Nam với nhiệm vụ xây dựng skills mới cho NashTech, hỗ trợ cộng đồng NashTech cập nhật với các xu hướng công nghệ mới nhất như: Microservices, DevOps, Cloud & AI.

Cùng tìm hiểu đôi chút về các chuyên gia nhé:

 Làm việc tại công ty TNHH HarveyNash VietNam nắm giữ chức vụ quan trọng là Engineering Manager, anh Phương Lê hiện đã có hơn 15 năm kinh nghiệm trongviệc xây dựng chu kỳ phát triển phần mềm (full-life cycle), đặc biệt yêu thích các vấn đề liên quan đến giải pháp phần mềm.

 Anh Thắng Chung hiện đang giữ vai trò Solution Architech với hơn 10 năm kinh nghiệm trong việc phát triển phần mềm đặc biệt tập trung vào những kiến trúc mới như n-tiers, microservices và cloud-native application, ngoài ra anh còn sở hữu một Github có trên 23 mã nguồn mở với hơn 3000+ lượt share trên khắp toàn cầu.

Hãy cùng 2 chuyên gia từ Nashtech tìm hiểu những thú vị về CI/CD bởi những kinh nghiệm và trải nghiệm trong background của các chuyên gia.

Cùng bộ đôi Thắng Chung và Phương Lê tìm hiểu và trực tiếp thực hành tại workshop “TRIỂN KHAI CI/CD CHO MỘT DỰ ÁN PHẦN MỀM LỚN TRONG 3 GIỜ“ để thu thập những bí kíp thật sự xịn về CI/CD bạn nhé!

=======

Thời gian: 18:00 ngày 30/05/2019
Địa điểm: Saigon Innovation Hub – 273 Điện Biên Phủ – P7 – Q3 – HCM
Link đăng ký: https://meetup.vn/e/RzR?src=s
CODE GIẢM 50.000Đ DÀNH CHO ĐỘC GIẢ TOPDEVBLOG@CICD

X3 tốc độ phát triển dự án Game với Scrumban

SCRUMBAN – SỰ KẾT HỢP HOÀN HẢO DÀNH RIÊNG CHO PHÁT TRIỂN DỰ ÁN GAME!

Scrum? Kanban? Ắt hẳn mọi người đã biết và từng ứng dụng một trong hai phương pháp phát triển này, tuy nhiên khi bắt tay vào một dự án Game thì phương pháp nào cũng có ưu & nhược riêng, gây ra những yếu tố không thích hợp. Chính vì thế Scrumban (sự kết hợp giữa Scrum & Kanban) ra đời và chính nó đã tối thiểu đi những điểm không phù hợp bằng chính ưu điểm của cả hai.

Bạn biết đấy, có quá nhiều vấn đề gây ảnh hưởng đến việc phát triển một ứng dụng game: có thể đến từ những yếu tố như kinh doanh, kỹ thuật, con người … đặc biệt là thị trường game mobile ở Việt Nam – 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? Liệu bạn có tăng tốc kịp và tạo ra những sản phẩm game chất lượng để bước vào và cạnh tranh trên “mảnh đất màu mỡ này?”

Quay lại vấn đề chính nào! Sự kết hợp trên sẽ trở nên hoàn hảo hơn nếu bạn biết cách áp dụng Scrumban, cụ thể tại VMD2019, Head of Product của Imba Game | anh Lê Giang Anh sẽ đưa bạn đến việc dùng Scrumban để tối ưu hóa quy trình và nâng cao chất lượng dự án, kết quả sẽ là con số ấn tượng: X3 tốc độ phát triển dự án Game!
Nếu bạn quan tâm và muốn biết chi tiết, hãy đến ngay với Vietnam Mobile Day 2019 nhé!!!

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

Le giang anh

MỘT CHÚT VỀ DIỄN GIẢ:

Anh LÊ GIANG ANH | Head of Product của Imba Game

Kinh nghiệm trên 10 năm đồng hành cùng với các công ty về Mobile app và Video game, anh giữ các vị trí: quality assurance, game designer and video game producer
CEO của JOY Entertainment, một trong những nhà phát triển game hiếm hoi trong việc tập trung vào Game online AAA cho thiết bị di động.
Co-founder and CEO/CMO của Horus Entertainment
Head of Product tại Imba Games.
Founder của Vietnam Game Developer Network – Hiệp hội phát triển game lớn nhất Việt Nam

============================

VIETNAM MOBILE DAY lần thứ 9 mang đến hơn 100 chuyên đề hấp dẫn xoay quanh 6 nhóm chủ đề chính, đó là:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

============================

Website: https://mobileday.vn/
Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019

Tìm việc IT lương cao, đãi ngộ tốt trên TopDev ngay!

Martech Trends That You Should Watch Out

Marketing Technology (Martech): khái niệm không mới nhưng những xu hướng của nó thì luôn luôn có sự đổi mới!

〉〉〉 Những xu hướng mới này không chỉ đến từ những tiến bộ và thay đổi về mặt công nghệ, mà còn đến từ sự thay đổi về hành vi của người dùng, thay đổi về mặt thuật toán của các nền tảng quảng cáo lớn, thay đổi về nền tảng pháp luật khu vực hay địa phương, v.v… 〈〈〈

Những xu hướng và thay đổi này ảnh hưởng rất nhiều đến hiệu quả công việc thường ngày của những người làm marketing. Để làm tốt hơn công việc của mình, chúng ta không phải chỉ giỏi trong việc xử lý những thứ ngày qua ngày, mà còn cần nắm bắt và hiểu rõ xu hướng của tương lai (gần) để từ đó có những hoạch định hoặc những chuẩn bị cần thiết ✅

Hãy cùng anh Bùi Quang Tinh Tú | CMO Asia _ Ringier AG điểm qua những xu hướng nổi bật về martech / adtech đang diễn tiến và sắp tới có thể trở thành một phần của những công việc hằng ngày của người làm digital marketing. Hi vọng nội dung chia sẻ này sẽ cho bạn một số góc nhìn thú vị về tương lai của martech và định hướng phát triển của ngành.

💯 Hãy giữ chắc tấm vé trên tay để có cơ hội lắng nghe anh Tú cùng 100+ các chuyên gia khác chia sẻ tại ngày hội công nghệ & mobile được mong đợi nhất năm nay nhé!

ĐÔI CHÚT VỀ DIỄN GIẢ:

Anh Bùi Quang Tinh Tú | CMO Asia _ Ringier AG

Cộng đồng Marketer Việt Nam chắc hẳn sẽ không còn xa lạ khi nghe thấy tên anh Bùi Quang Tinh Tú. Anh hiện đang là CMO Asia của Ringier AG – tập đoàn truyền thông đa quốc gia tư hữu lớn nhất của Thụy Sĩ; đồng thời là CEO của Marry Network, trực thuộc Ringier Vietnam. Với kinh nghiệm chinh chiến phong phú, anh Tú chính là một trong những chuyên gia đáng được mong đợi khi đến với Vietnam Mobile Day 2019. Cùng “nghía” qua xem tiểu sử của anh Tú có gì nào:

👉 Founder của UAN – Cộng Đồng Marketing và Truyền Thông
👉 Blogger tại trang conversion.vn
👉 Từng là CMO và là founding member của GO-VIET / GO-JEK VN
👉 Từng là Marketing Director của MuaBanNhaDat
👉 Từng là Digital Manager tại Wall Street English và SEO / Affiliate Manager của Lazada Việt Nam

Một nhân vật với những kinh nghiệm “xịn sò” như vậy sẽ chia sẻ những thông tin bổ ích nào tại Ngày hội Công nghệ lớn nhất Việt Nam năm nay? Nhanh tay lấy ngay cho mình những tấm vé vàng để có cơ hội lắng nghe anh Tú cùng hơn 100 chuyên gia đầu ngành khác chia sẻ tại Vietnam Mobile Day 2019 các bạn nhé!!

============================

🎟 VIETNAM MOBILE DAY lần thứ 9 mang đến hơn 100 chuyên đề hấp dẫn xoay quanh 6 nhóm chủ đề chính, đó là:

➖ Digital Transformation & Mobilization
➖ Woman in Tech
➖ 5G & Internet of things, Machine Intelligence and future of Mobile Technology
➖ Fin-Tech/ Mobile Payment/Ecommerce & Mobile commerce
➖ Digital Marketing & Mobile Marketing
➖ Mobile content (AR/VR/Livestream) and gaming

============================

🔎 Website: https://mobileday.vn/
📌 Time: Hồ Chí Minh – 06/06/2019 | Hà Nội – 14/06/2019
🔥🔥🔥 VÉ COMBO dành cho nhóm 5-10-20-30 người với những giá cực ưu đãi nhưng vẫn giữ nguyên quyền lợi TIÊU CHUẨN!!!

Tech Talent Fest 2019 – Khởi động sự kiện tuyển dụng ngành Công nghệ thông tin cùng TopDev

Sự kiện Tech Talent Fest 2019 đang bùng nổ trên khắp cộng đồng Công nghệ tại Việt Nam. Các Developer tài năng, bạn đã sẵn sàng cho cuộc hội ngộ cùng những Doanh nghiệp hàng đầu?

Tech Talent Fest 2019 là sự kiện tuyển dụng công nghệ lập trình quy mô lớn diễn ra trên nền tảng Online và Offline do TopDev tổ chức, giúp kết nối các ứng viên IT với các nhà tuyển dụng.

Tech Talent Fest 2019 diễn ra từ ngày 06.05.2019 cho đến hết ngày 30.06.2019, diễn ra trên Online và Offline tại 2 thành phố Hồ Chí Minh & Hà Nội, dự kiến thu hút 4,000 lượt tham dự.     

50 NGÀY PHỦ SÓNG CÙNG CÁC DOANH NGHIỆP

Tech Talent Fest 2019 tập trung bao phủ thông tin của các doanh nghiệp tham gia đến toàn bộ cộng đồng Công nghệ Việt Nam, xuyên suốt 50 ngày trên toàn bộ các kênh Fanpage, Facebook Group, Website công nghệ chuyên công nghệ cũng như tiếp cận trực tiếp đến từng ứng viên trong kho dữ liệu 300,000+ hồ sơ IT của TopDev.

Không đơn giản chỉ là tuyển dụng, Tech Talent Fest 2019 sẽ đem đến cái nhìn toàn cảnh nhất về thị trường tuyển dụng IT năm 2019 tại Việt Nam cũng như cung cấp các giải pháp tuyển dụng cao cấp nhất đến từ các hoạt động employer branding, networking và human resource marketing mang lại sự đột phá cho các doanh nghiệp Việt.

Hoạt động chính tại Tech Talent Fest 2019

DEVELOPER – BẠN ĐÃ SẴN SÀNG NHẬP CUỘC?

Đâu sẽ là lựa chọn con đường sự nghiệp cho chính mình?

Hơn cả một bản tin tuyển dụng, tại Tech Talent Fest 2019 bạn có cơ hội tìm hiểu về văn hóa, môi trường làm việc cũng như công nghệ của các Doanh nghiệp. Và đừng quên cuộc hội ngộ “face to face” cùng các Nhà tuyển dụng tại sự kiện Offline, rất nhiều cơ hội phỏng vấn trực tiếp tại sự kiện đang chờ bạn!

Định vị bản thân – Hiểu được chính mình

Những con số tổng quan nhất về thị trường IT kết hợp cùng chuỗi hoạt động “Giao lưu cùng Doanh nghiệp” sẽ mang đến cho các IT-ers câu trả lời hoàn chỉnh nhất cho con đường sự nghiệp của mình.

Và cuối cùng, đừng quên hết mình với “Tech Talent Challenge” diễn ra trong khuôn khổ sự kiện, Developer sẽ có có cơ hội trải nghiệm các thử thách và “Tăng giá” bản thân trong mắt các Nhà tuyển dụng.

Đừng quên cập nhật những thông tin HOT nhất về sự kiện tại:

Top 8 Framework Web Development hot nhất 2024

framework web development

Mở đầu

Hiện nay đang có quá nhiều Framework Web Development xuất hiện làm cho ngay cả những lập trình viên dày dặn kinh nghiệm nhất cũng phải hoang mang. Và phải nói rằng, số phận website tương lai của bạn phụ thuộc khá nhiều vào sự lựa chọn framework của bạn lúc này đấy.

  Top 5 Web Framework tốt nhất cho năm 2019

Các Framework Web Development hot nhất 2019

Ngành lập trình web thay đổi liên tục, và việc hiểu được chiều hướng phát triển của nó là vô cùng quan trọng. Để giúp bạn cập nhật liên tục với những xu hướng phát triển web mới nhất, chúng tôi quyết định giới thiệu đến các bạn danh sách tổng hợp các framework phát triển web phổ biến nhất năm 2019. Hy vọng sẽ giúp bạn có sự lựa chọn tốt nhất cho mình.

Xem thêm về Framework là gì?

Angular.JS

Angular.JS framework

Angular.JS là một thư viện Javascript nguồn mở phổ biến nhất của Google. Ngoài thư viện tiêu chuẩn phong phú, Angular.JS còn được user viết thêm rất nhiều bản mở rộng. Tuy nhiên, việc sử dụng mô hình MVC mới là một trong những tính năng nổi bật nhất của framework này.

Angular.JS cung cấp entry threshold thấp và nhiều cài đặt tính năng. Để bắt đầu viết những ứng dụng nhỏ trong nó, bạn sẽ cần một vài tiếng đợi. Tuy nhiên sẽ mất hàng tháng trời để nghiên cứu tất cả những khả năng của nó và học cách sử dụng chúng.

Angular.JS có hỗ trợ Ajax, quản lý cấu trúc DOM, hiệu ứng, pattern, routing, và nhiều tính năng khác. Framework mạnh với nhiều chức năng phong phú này đang được sử dụng ngày càng nhiều trong các ứng dụng web.

Laravel

Laravel logo

Laravel là một framework ứng dụng web với syntax gọn và khá ấn tượng. Nó là 1 giải pháp full-stack cho cả lập trình viên front-endlập trình viên back-end. Nhiều chuyên gia cho rằng platform doc của nó là gần như tuyệt hảo.

Tính năng chính của Framework:

  • Có trình thu thập tập lệnh và SCSS tích hợp;
  • Các module cần thiết được kết nối như các gói Service Provider. (Xem thêm về Service Provider trong Laravel là gì?);
  • Laravel sử dụng template Blade, cho phép user tách phần cắt của trang web ra khỏi code PHP;
  • Caching, lưu trữ file, làm việc với nhiều DB đa dạng;
  • Queues, scheduler, console, làm việc với SSH;
  • WebSockets hỗ trợ tạo ứng dụng tương tác thực tế;
  • Hỗ trợ đa ngôn ngữ, dễ dàng thêm bất kỳ ngôn ngữ nào vào các bản dịch có sẵn trong Laravel-lang;
  • Có khả năng thiết kế REST API. (Xem thêm về RESTful API là gì?)

Laravel liên tục được cải tiến, bắt kịp xu hướng hiện đại. Nếu bạn nghiên cứu Laravel, bạn sẽ không bao giờ bị tụt hậu trong ngành phát triển web. Điểm cốt lõi không phải là tập trung vào phiên bản cụ thể nào của Laravel mà là luôn phát triển bản thân cùng với nó.

React.js

React.js

React.js là một trong những thư viện phổ biến nhất được sử dụng để đem đến các giải pháp cho lập trình front-end phức tạp. Được giới thiệu bởi Facebook vào năm 2013 và nhanh chóng trở nên phổ biến. Ngày nay nhiều công ty nổi tiếng, bao gồm cả Instagram, AirBnB, eBay, Netflix, Yahoo,… đều sử dụng nó để làm sản phẩm. (Tìm hiểu thêm về React.js tại đây.)

React dựa trên khái niệm chia giao diện người dùng thành nhiều phần độc lập tách biệt – là các component khá đơn giản để duy trì và mở rộng. Thậm chí bạn có thể tạo ra những component riêng biệt và sử dụng chúng với những project khác nhau, dễ dàng chuyển đổi từ project này sang project khác. (Xem thêm component là gì?)

Tính năng chính của React.js là tự do tương tác, cho phép bạn có thể sử dụng một số lượng lớn các ứng dụng có sẵn ( như redux, mobx,…). Chúng không thuộc React.js nhưng lại thuộc các kiến trúc thượng tầng, nên chúng rất dễ phát triển.

Ruby on Rails

Ruby on Rails framework

Đây là một framework hoàn chỉnh, đa cấp độ, được thiết kế để xây dựng các ứng dụng web sử dụng cơ sở dữ liệu, và dựa dựa trên cấu trúc MVC. Từ lúc được ra mắt, framework này đã nhanh chóng trở thành một trong những công cụ mạnh mẽ được dùng để làm ứng dụng web cho các startup và mọi loại website.

Ưu điểm chính của Ruby on Rails là tốc độ phát triển. Trước hết, tốc độ phát triển cao là nhờ 1 bộ công cụ RoR tiêu chuẩn sẵn sàng để sử dụng, một nhóm các giải pháp cho cộng đồng, ngôn ngữ Ruby, và code đơn giản.

Những tiêu chuẩn để thêm file vào 1 project, tiêu chuẩn để viết code trong 1 project, và quy tắc ngôn ngữ chung trong Ruby on Rails có thể hỗ trợ bất cứ project lớn nào. Nhờ cách tiếp cận này, project sẽ dễ đọc hơn, những người mới cũng có thể tham gia vào project nhanh chóng mà không bị trì hoãn hay gián đoạn gì cả.

ASP.NET MVC

ASP.NET MVC

ASP.NET MVC là một framework được thiết kế để tạo các website và ứng dụng web triển khai mô hình MVC. Các coder thích công nghệ này vì những tiện ích, linh hoạt và sự sử dụng rộng rãi của nó. (Xem thêm so sánh ASP.NET MVC và ASP.NET Web Forms)

Nó cung cấp một mô hình code với hiệu suất cao, cho phép user viết code sạch hơn, phát triển thông qua thử nghiệm, và khả năng mở rộng với tất cả các lợi thế của ASP.NET đã có.

Nhờ những tính năng này mà khái niệm chia sẻ trách nhiệm được ra đời. Kết quả là, dễ quản lý công việc hơn với các component riêng biệt. Hơn thế nữa, ứng dụng cũng dễ được test hơn nhờ tính năng này.

YII

YII PHP framework

YII là 1 trong các framework PHP hiệu quả cao được thiết kế để làm những ứng dụng web lớn nhanh chóng. Nó cho phép bạn tái sử dụng code một các tối đa và có thể tăng tốc phát triển web đáng kể.

Nó là 1 framework tổng quát có thể dùng trong mọi loại ứng dụng web. Nhờ cấu trúc component và hỗ trợ caching xuất sắc, nó thích hợp cho các project lớn, như là cổng thông tin, forum, CMS, storestore và các ứng dụng RESTful.

Lợi ích và tính năng chính của framework YII là:

  • Tỉ lệ performance cao;
  • Cho phép bạn cache cả page hoặc từng phần;
  • Cho phép bạn làm việc với form, chức năng đảm bảo cấu trúc và xác nhận;
  • Authentication và Authorization; (Xem thêm phân biệt Authentication và Authorization)
  • Dễ dàng thực hiện phương thức AJAX, tích hợp jQuery; (Tìm hiểu về jQuery là gì?)
  • Có thể kết nối với các thư viện bên thứ 3;
  • Làm việc với chuyển đổi dữ liệu;
  • Cho phép tự động test và phát triển theo dạng TDD;
  • Hỗ trợ REST.

Symfony

Symfony logo

Symfony là một framework PHP phổ biến nhất thế giới. Nó bao gồm toàn bộ các công cụ được dùng để phát triển ứng dụng web nhanh chóng, cùng lúc, và không thêm bất cứ thứ gì vào app của bạn.

Xem thêm Cách thiết lập một dự án Symfony để làm việc với Docker Subdomains.

Symfony là một bộ component đứng riêng lẻ. Các component kết nối với nhau tạo ra một web platform – một hệ sinh thái độc nhất. Hơn thế nữa, lựa chọn các component hoàn toàn phụ thuộc vào bạn và mục tiêu cảu bạn.

Điểm mạnh của framework này là:

  • Tỉ lệ performance cao nhờ các công cụ template được sử dụng; (Xem thêm bí quyết tối ưu Web Performance)
  • Tuỳ chỉnh linh hoạt;
  • Có thể mở rộng app bất cứ lúc nào, kết nối với các bundle mới có ảnh hưởng nhỏ đến các bundle khác, nhưng vẫn có thể cấu hình hoạt động đồng thời của chúng;
  • Ổn định và hỗ trợ lâu dài;
  • Tiện lợi cho developer: giảm bớt công việc hàng ngày, sử dụng các lệnh đặc biệt, console tiện lợi cho viết code thay vì cần đến một software engineer.

Django

Django Python framework

Django là một framework dành cho ứng dụng web sử dụng Python. DRY (Don’t Repeat Yourself) là một trong những nguyên tắc chính của platform này. Hệ thống web Django được xây dựng từ 1 hoặc nhiều app được đề xuất để lập trình có kết nối lẫn có thể tháo rời được. Nhờ tính năng này mà cấu trúc của framework Django khác biệt hơn so với một vài framework khác (như Ruby on Rails).

Ưu điểm:

  • Tốc độ: Django được thiết kế để giúp các lập trình viên tạo một ứng dụng trong thời gian ngắn nhất có thể, đem lại giải pháp phù hợp nhất cho các lập trình viên có deadline gấp rút.
  • Package hoàn chỉnh: Django hoạt đồng bằng cách dùng hàng tá tính năng bổ sung, giúp hỗ trợ cho user rất nhiều với authentication (Xem thêm Authentication là gì?), website map, quản lý content, RSS,…
  • Bảo vệ project khỏi các lỗi bảo mật
  • Khả năng mở rộng: Django là sự lựa chọn tốt để làm việc với các dự án nhắm vào website có traffic cao.

Tổng kết

Chúng tôi mong rằng danh sách framework trên có thể hữu ích cho các bạn. Mỗi platfrom trên đều có thế mạnh riêng, nhưng quyết định cuối cùng vẫn nên dựa trên các tính năng phù hợp nhất với dự án của bạn.

Ngoài việc lựa chọn các chức năng cơ bản, bạn cũng nên đánh giá khả năng áp dụng các tính năng đó để đạt được kết quả tốt nhất và có cho mình sự lựa chọn chính xác.

Đừng qua các bài viết hay nhất về framework:

Xem thêm việc làm Web Developer hot nhất tại TopDev

TopDev via Lvivity

  Golang là gì? Top 07 Framework tối ưu “cực căng” cho Golang
  Từ MVC đến các Modern Web Framework

Tuyển tập chuẩn “sách giáo khoa” Python

tài liệu Python
Python là ngôn ngữ lập trình hướng đối tượng, thông dịch, mã nguồn mở, đa mục đích và là ngôn ngữ lập trình được dùng khá phổ biến trên thế giới hiện nay.
Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, được đánh giá là một ngôn ngữ khá dễ học và là lựa chọn đáng cân nhắc cho những ai mới bắt đầu học lập trình.

10 sách tự học Python miễn phí rất hay 

Invent Your Own Computer Games with Python

Tài liệu tự học Python cơ bản - nâng cao miễn phí hay nhấtInvent Your Own Computer Games with Python sẽ hướng dẫn bạn làm thế nào để tạo ra các trò chơi máy tính sử dụng ngôn ngữ lập trình Python – ngay cả khi bạn chưa biết gì về lập trình trước đó. Bắt đầu bằng cách xây dựng trò chơi cổ điển như Hangman, đoán số, Tic-Tac-Toe, rồi đến các trò chơi phức tạp hơn như trò chơi săn kho báu, trò chơi va chạm với hiệu ứng âm thanh,…. Xuyên suốt quyển sách, bạn sẽ học được các khái niệm về lập trình và toán học quan trọng, các kiến thức khoa học máy tính cơ bản. Đọc sách và làm theo các hướng dẫn, bài tập bạn sẽ có được nền tảng vững chắc về lập trình Python và rất thú vị khi bạn có được những game do chính tay bạn lập trình.

Download tài liệu Python

Making Games with Python & Pygame

Cuốn sách Making Games with Python & Pygame là một cuốn sách lập trình hướng dẫn sử dụng thư viện trò chơi Pygame trên ngôn ngữ lập trình Python. Thay vì giảng dạy các
khái niệm lập trình và để bạn loay hoay xây dựng chương trình với các khái niệm đó, cuốn sách này sẽ giới thiệu bạn các chương trình, các game rồi sau đó giải thích các khái niệm lập trình được ứng dụng thế nào trong game đó.
Bạn nên đọc lần lượt các chương của sách theo thứ tự. Mỗi chương sẽ tập trung vào một chương trình trò chơi và đều có giải thích kỹ ý nghĩa của các đoạn mã lệnh của trò chơi. Bạn sẽ gặp lại nhiều lần cùng khái niệm trong nhiều ứng dụng trò chơi khác nhau, nhưng thường thì chương đầu tiên thì các khái niệm mới sẽ được giải thích kỹ nhất. Cuốn sách này rất phù hợp cho các trẻ em từ 10 đến 12 tuổi để tự học lập trình game trên Python nhưng cuốn sách cũng rất tuyệt cho những ai muốn tự học Python qua lập trình game.

Think Python – 2 edition

Think Python – How to think like a computer scientist là cuốn sách nhập môn lập trình Python khá hay dành cho người mới bắt đầu. Cuốn sách được thiết kế cẩn thận giúp bạn dễ dàng nắm vững các khái niệm cơ bản về lập trình và các thuật ngữ lập trình từ dễ đến khó, rất logic và có nhắc lại, bổ sung thêm sau đó để bạn dễ hiểu các khái niệm này. Những phần phức tạp như lập trình đệ quy hay lập trình hướng đối tượng, bạn sẽ gặp trong nhiều chương và có nâng cấp từng chút một từ cơ bản đến chuyên sâu. Bài tập của sách khá hay, đôi lúc bạn phải “động não” mới có thể thực hiện được.

Python for everybody

Có thể xem cuốn sách Python for Everybody – Exploring Data in Python 3 như là phần bổ sung, mở rộng cho sách Think Python  – How to think like a computer scientist với các ví dụ  minh họa và bài tập liên quan đến việc xử lý dữ liệu hơn. Nếu bạn không phải là chuyên CNTT, không muốn trở thành lập trình viên Python chuyên nghiệp trong tương lai nhưng bạn muốn ứng dụng CNTT hiệu quả trong công việc kinh doanh, nghiên cứu, quản lý,… của mình thì đây là quyển sách dành cho bạn. Cuốn sách gồm 16 chương tập trung xử lý các vấn đề, tình huống trong thực tế liên quan đến  dữ liệu với Python, rất hay và hữu ích cho những bạn lập trình Python không chuyên.

Automate the boring stuff with Python

Tài liệu tự học Python cơ bản - nâng cao miễn phí hay nhất

 Bạn sẽ tìm thấy trong cuốn sách Autom ate the Boring Stuff with Python những bài tập, ví dụ đơn giản, thấy ngay kết quả cho dù bạn mới bắt đầu làm quen với lập trình Python. Bạn sẽ được học lập trình Python qua các ví dụ nhỏ, thực hiện tự động hóa các công việc đơn giản nhưng lặp đi lặp lại khá thông dụng trong thực tế như :
• Tìm kiếm những tập tin có đoạn văn bản cần thiết
• Tạo, cập nhật, di chuyển, và đổi tên cùng lúc nhiều tập tin và thư mục
• Tìm kiếm thông tin trên Web và download về máy tính
• Cập nhật và định dạng dữ liệu trong bảng tính                                                                  Excel một cách tự động.

Problem Solving with Algorithms and Data Structures using Python

Cuốn sách viết khá kỹ và chi tiết về thuật giải, cấu trúc dữ liệu và giải thuật với các ví dụ minh họa có đầy đủ mô hình flow diagrams và mã lệnh Python. Đây là các kiến thức mà bất kỳ sinh viên CNTT nào cũng phải học và nhắc đi nhắc lại trong các chương trình chính quy. Rèn luyện các kiến thức này giúp bạn nâng cao kỹ năng giải quyết vấn đề, và kỹ năng tư duy logic rất nhiều. Nếu bạn mới bắt đầu học lập trình và muốn có kiến thức nền tảng về giải thuật, giải quyết vấn đề thì đây là cuốn sách bạn nên đọc và nên đọc nhiều lần. Ngoài ra, bạn sẽ tìm thấy nhiều vấn đề cơ bản về khoa học máy tính rất hay trong cuốn sách này bên cạnh những khái niệm liên quan đến lập trình Python.

Download tài liệu Python

Test-Driven Development with Python

Cuốn sách Test-Driven Development with Python sẽ đưa bạn qua lần lượt các giai đoạn xây dựng ứng dụng web trong thực tế với Python, bạn không những được học về Python mà còn biết thêm rất nhiều, từ việc xây dựng cơ sở dữ liệu cho ứng dụng, sử dụng JavaScript đến các công cụ test  tự động như Selenium, cùng các chủ đề nâng cao như NoSQL, Web Sockets và lập trình async. Cuốn sách không những hướng dẫn bạn lập trình web với Python trên Django mà còn giúp bạn hiểu phương pháp phát triển ứng dụng và làm sao để có những đoạn mã lệnh có phong cách, làm sao xây dựng ứng dụng web chuyên nghiệp, dễ bảo trì sau này hơn.

Download tài liệu Python

Python CookBook

Python CookBook không phải là một cuốn sách được thiết kế cho người mới bắt đầu học lập trình Python. Cuốn sách này dành riêng cho các lập trình viên Python đã có những kiến thức nhất định về lập trình Python, muốn hiểu sâu hơn về ngôn ngữ Python, cốt lõi của các vấn đề và các kỹ thuật nâng cao để có thể lập trình tốt hơn, xây dựng được các ứng dụng có tốc độ xử lý tối ưu và sử dụng hiệu quả tài nguyên hệ thống hơn. Cuốn sách không giúp bạn tra cứu nhanh các hàm, module nào đó mà tập trung vào các chủ đề lập trình cụ thể, đưa cho bạn các giải pháp khả thi cùng các link trực tuyến để bạn dễ dàng tham khảo tiếp.

Think Complexity

Think Complexity là cuốn sách chuyên về thuật toán, cấu trúc dữ liệu dành cho các lập trình viên Python muốn nâng cao kỹ năng lập trình trên Python. Để hiểu rõ các nội dung trình bày trong sách, người đọc cần đọc kỹ về kỹ thuật, thực hành và đánh giá cách giải, nghĩ thêm cách giải quyết khác để có thể hiểu sâu – hiểu chắc về Python.

Download tài liệu Python

Python for Biologists

Nếu bạn làm trong lĩnh vực sinh học, công nghệ sinh học,… thì sách Python for Biologists là dành cho bạn. Sách tập trung vào việc ứng dụng lập trình Python trong lĩnh vực sinh học, xử lý chuỗi DNA và protein,… Thông qua các ví dụ có liên quan trong sinh học, mã lệnh và bài tập trong sách bạn có thể hiểu rõ hơn về việc ứng dụng lập trình Python trong các công việc không chuyên, đặc biệt là lĩnh vực sinh học.

Download tài liệu Python

Xem thêm tuyển dụng lập trình python mới nhất tại TopDev 

TopDev

  Ruby vs Python: Đâu mới là ngôn ngữ tốt hơn cho lập trình ứng dụng
  File I/O trong Python

 

Trước khi trở thành Web Developer mình đã phải bỏ lỡ những điều gì?

Trước khi trở thành Web Developer mình đã phải bỏ lỡ những điều gì?

Trước khi các bạn đọc bài viết này thì hãy thử nán lại và tự hỏi chính mình rằng: “mình đã bỏ lỡ những gì khi làm lập trình viên nhỉ?” “Mình có thật sự thỏa mãn khi đang làm công việc hiện tại hay không?” Nếu các bạn đã Tự hỏi chính mình xong rồi thì đọc tiếp nhé. Trong bài viết này mình muốn chia sẻ với các bạn những điều mà mình cảm thấy hối tiếc khi không biết chúng sớm hơn. Mong rằng sau bài viết này, các bạn sẽ có những định hướng tốt hơn cho công việc của mình sau này.

Trước khi quyết định trở thành một web developer, mình đã từng là một kỹ sư phần mềm. Mình cũng từng làm việc với các phần mềm trước đây, chủ yếu là với robot và các máy móc – những khối kim loại vô tri vô giác. Mình chợt nảy ra ý nghĩ: “Liệu chuyển sang web developer có phải là một quyết định thú vị không nhỉ?”. Mình chỉ nghĩ rằng đó là một công việc về lập trình.  và mình cũng cảm thấy khá hứng thú với nó, vậy thì tại sao không thử?

Thú thật với các bạn, đến bây giờ mình vẫn cảm thấy đó là quyết định đúng đắn nhất trong cuộc đời của mình. Nhưng đời không phải lúc nào cũng màu hồng, cũng có vài điều mình ước có thể biết sớm hơn trước khi đưa ra quyết định này.

Web developer sẽ không làm việc với thuật toán.

Kết quả hình ảnh cho web developer

Từ kiến thức nền tảng về lập trình của mình, mình tưởng tượng sẽ đụng đến toán học rất nhiều. Mình cứ nghĩ để trở thành một web developer sẽ phải dùng đến tất cả những thuật toán điên rồ và biến chúng thành những đoạn code. Trong đầu mình nảy ra hàng tá suy nghĩ rằng mình phải cố gắng hết mình với đống thuật toán để đi xa hơn trên con đường trở thành web developer.

Nhưng mọi thứ lại không như thế, web developer nói không với các thuật toán. Việc phát triển web mang thiên hướng nghệ thuật hơn là khoa học, và tất nhiên sẽ không có những thuật toán điên rồ mà mình từng nghĩ trước đây. Việc tìm hiểu ngọn nguồn của một vấn đề, cách giải quyết cũng như tối ưu một task nào đó mới là kỹ năng quan trọng. Mình phải mất một khoảng thời gian để hiểu được điều đó và bỏ ra vài đêm để tự học những kiến thức cơ bản.

Bạn sẽ phải giao tiếp với mọi người thường xuyên

Hình ảnh có liên quan

Thành thật mà nói, khi nhắc đến web developer thì trong đầu mình nghĩ ngay đến những con người cả ngày ngồi trên ghế, bấm những dòng code mà không cần phải giao tiếp với người khác, nghe như môi trường làm việc “yên tĩnh”? Có vẻ các web developer chỉ cần ai đó đưa ra yêu cầu cho mình, rồi tìm một góc nào đó và làm xong phần việc của mình. Nghe khá nhàm chán, nhưng lại là điều mình mong đợi khi bắt đầu làm phát triển web.

Những ngày đầu đi làm, mình được học về mô hình agile và các yêu cầu của khách hàng. Đảm bảo với các bạn là những ngày đó mình không muốn nói chuyện với bất cứ ai, nhưng điều kiện lại không cho phép. Mình buộc phải nói chuyện rất rất nhiều người mỗi ngày là đằng khác. Hàng loạt câu hỏi được đưa ra, những cập nhật mới về dự án, khách hàng thay đổi yêu cầu… Những việc đó đòi hỏi mình phải giao tiếp suốt cả ngày với mọi người. Dần dần mình nhận ra, kỹ năng giao tiếp là yếu tố quan trọng đối với bất cứ người làm phát triển web giỏi nào.

Nếu bạn đang tìm một công việc hạn chế tương tác với người khác, thì web developer không phải là một lựa chọn tốt. Mình thật sự shock khi làm việc với các web developer, họ không như những gì chúng ta thường nghĩ. Họ thân thiện, nói nhiều, năng động và sẵn sàng giúp đỡ mình bất cứ lúc nào trong công việc.

  Top Web Developer Tools và Platforms làm bạn sẽ "ước gì" biết đến nó sớm hơn!

Bạn sẽ phải vừa học vừa làm

Kết quả hình ảnh cho study

Ngôn ngữ lập trình và các framework hỗ trợ sẽ được cập nhật mọi lúc mọi nơi. Cả kể các IDE cũng được cập nhật và nó có thể thay đổi quy trình làm việc thường ngày của bạn. Công ty của bạn có thể yêu cầu bạn chuyển từ Angular sang React hoặc từ MCV sang .NET Core bất cứ lúc nào.

Thậm chí bạn còn có thể bị yêu cầu nhận một công việc mới và phải sử dụng hàng tá công nghệ hoàn toàn khác nhau. Cách tốt nhất để xử lý các tình huống này là bạn cần trang bị cho mình những khái niệm cũng như những kiến thức cơ bản về các công nghệ mới đó, sau đó chỉ là vấn đề về thời gian để tìm ra cách triển khai mà thôi. Nhưng hãy cố gắng nắm bắt cách triển khai nó trong thời gian sớm nhất có thể nhé. Công ty không thể đợi bạn được đâu. Vậy mới nói, để trở thành một web developer, bạn phải học cách chạy đua với thời gian.

Một cách vừa học vừa làm nữa đó là tận dụng thời gian nghỉ để đọc một bài viết liên quan nào đó hoặc thử làm một project cá nhân để củng cố khác khái niệm và cú pháp của ngôn ngữ bạn đang học. Đừng ngại khi bạn phải tìm kiếm trên google nhiều lần, đến cả các nhà phát triển lâu năm cũng phải tìm kiếm mọi thứ trên đó.

Các dự án của bạn thường không phải là tạo nên trang Web mới hoàn toàn

Theo các tutorial và các lớp học phát triển web, mình luôn nghĩ mọi dự án sẽ xuất phát từ những công đoạn đầu tiên. Nhưng không, hầu hết các công ty đã có sẵn phần mềm tạo trang web và họ chỉ muốn bạn cập nhật cũng như bảo trì web mà thôi.

Đó là lý do tại sao việc hiểu các khái niệm cốt lõi lại quan trọng như vậy. Bạn sẽ đọc qua các đoạn code của người khác và phải tìm hiểu những gì họ đã làm và tại sao họ lại làm như vậy. Biết cách đọc code cũng là một kỹ năng quan trọng đấy.

Mình mất vài tháng để tìm hiểu về các đoạn code mà chắc chắn rằng lần đầu bạn xem qua sẽ rất đáng sợ vì bạn không thể hiểu nổi một số khái niệm cốt lõi trong đó. Đó có thể là điểm trừ của bạn trong mắt cấp trên nếu họ không thấy bất cứ sự cố gắng nào ở bạn đấy.

Sẽ không có bất kỳ quy định nào

Kết quả hình ảnh cho break the rules

Thực sự điều này làm mình hơi mất tập trung. Theo quy trình kỹ thuật, có một số quy định bạn phải đáp ứng nếu không sản phẩm của bạn sẽ bị gửi trả lại hoặc tệ hơn là bị loại bỏ hoàn toàn. Điều không thể tránh khỏi là Bạn sẽ phải theo dõi rất nhiều công việc và có vô số giấy tờ cần bạn xin chữ ký. Trong ngành phát triển web, có một số quy tắc giúp công việc này dễ dàng hơn, nhưng chúng có thể sẽ được thay đổi cho phù hợp với cách làm việc của từng công ty.

Ví dụ, không phải công ty nào cũng áp dụng Agile theo cùng một cách. Cũng không phải mọi công ty đều dành thời gian để viết các bài kiểm tra hoặc họ có thể bỏ qua những phần nhất định mà họ cảm thấy không cần thiết.

Công việc phát triển web là một công việc đầy màu sắc. Tại sao mình lại nói như vậy? Vì công việc này phụ thuộc vào ngôn ngữ bạn sử dụng, môi trường bạn làm việc cũng như những người bạn làm việc cùng mà đem đến cho bạn những trải nghiệm khác nhau.

Trên đây chỉ là một vài điều mình ước là mình có thể biết ngay từ đầu. Hiện tại thì đã có nhiều bài viết đề cập đến vấn đề này rồi, nhưng không nhiều bài viết dành thời gian để giải thích cho mọi người hiểu về những gì mà một nhà phát triển chuyên nghiệp thực sự làm mỗi ngày. Hy vọng rằng bài viết nhỏ này có thể cung cấp cho những bạn mới bắt đầu vào con đường này có một cái nhìn sâu sắc hơn một chút.

Có bất ngờ nào đến với bạn khi trở thành một web developer không? Bạn có kỳ vọng mình sẽ bị thổi bay bởi những điều mới lạ trong công việc mà trước đây bạn chưa bao giờ nghĩ tới không ? Hãy tự mình trả lời những câu hỏi này nếu bạn đang chuẩn bị chuyển sang một lĩnh vực hoàn toàn không liên quan tới những gì bạn làm trước đây nhé.

Xem thêm tuyển dụng lập trình Web tại TopDev

TopDev

  Top 8 Framework Web Development hot nhất 2024

  Tăng tốc website. Bí kíp tối ưu Web Performance

TypeScript là gì? Hướng dẫn cài đặt và sử dụng chi tiết

typescript là gì

TypeScript chắc hẳn không quá xa lạ đối với các lập trình viên, tuy nhiên, bạn có thật sự hiểu hết về TypeScript, giữa TypeScript và JavaScript có mối quan hệ gì không? Trong bài viết hôm nay của TopDev, chúng ta sẽ cùng tìm hiểu cặn kẽ TypeScript là gì và tại sao nên sử dụng ngôn ngữ này thay vì các ngôn ngữ lập trình khác.

typescript là gì
TypeScript Là gì?

TypeScript là gì?

TypeScript (viết tắt là TS) là một ngôn ngữ lập trình mã nguồn mở (OOP) được phát triển và duy trì bởi Microsoft vào năm 2012. TypeScript được xem là một phần mở rộng của JavaScript, sử dụng cú pháp của JavaScript và bổ sung thêm các tính năng mạnh mẽ như kiểu tĩnh và hướng đối tượng để hỗ trợ Type (các kiểu dữ liệu).

TypeScript là ngôn ngữ tĩnh (Static typed) có nghĩa là nó nghiêm ngặt và có trật tự trái ngược với free-type.

Với TypeScript, ta có thể bê nguyên xi code JavaScript vào trong cùng một file và chạy cùng nhau bình thường, bởi vì TypeScript duy trì cú pháp của JavaScript và mở rộng nó bằng một loạt tính năng mới. Nhờ đó mà hiệu năng làm việc được tăng lên đáng kể.

Tuy nhiên một project viết bằng TypeScript cần có compiler (trình biên dịch) để biên dịch những dòng code đó thành JavaScript để browser có thể đọc hiểu được. Tại sao vậy? Nhắc lại kiến thức căn bản đó là browser chỉ hiểu được HTML, CSS và JavaScript, vì vậy cần phải có TypeScript Compiler.

TypeScript Compiler
Tại sao cần có TypeScript Compiler

Tham khảo thêm các việc làm Typescript lương cao cho bạn.

Tính năng của TypeScript

Tính năng của TypeScript

Null Checking

TypeScript hỗ trợ kiểm tra null và undefined thông qua option strictNullChecks. Tính năng này giúp ngăn chặn lỗi do sử dụng giá trị null hoặc undefined trong quá trình phát triển. Bạn có thể chỉ định một biến không được chứa giá trị null hoặc undefined bằng cách sử dụng các kiểu dữ liệu phù hợp.

let name: string | null = null; // cho phép null  
let age: number = 25; // không cho phép null  

Generics

Generics cho phép bạn định nghĩa các kiểu dữ liệu mà không xác định trước kiểu cụ thể. Điều này giúp xây dựng các hàm, lớp, hoặc interface có thể tái sử dụng mà vẫn đảm bảo tính an toàn về kiểu.

function identity<T>(arg: T): T {  
    return arg;  
}  

Access Modifiers

TypeScript hỗ trợ các modifier truy cập (access modifiers) cho thuộc tính và phương thức của lớp, bao gồm: publicprotected, và private. Điều này giúp kiểm soát quyền truy cập tới các thuộc tính hoặc phương thức của một lớp.

class Animal {  
    private name: string;  
    protected age: number;  
    public type: string;  

    constructor(name: string, age: number, type: string) {  
        this.name = name;  
        this.age = age;  
        this.type = type;  
    }  
}  

Namespaces

Namespaces trong TypeScript cung cấp cách để tổ chức mã và quản lý các biến, hàm, và lớp trong một không gian tên cụ thể. Điều này giúp giảm thiểu xung đột tên và cải thiện khả năng bảo trì mã.

namespace MyNamespace {  
    export class MyClass {  
        greet() {  
            console.log("Hello from MyNamespace");  
        }  
    }  
}  

Type Annotations

Type Annotations cho phép bạn xác định loại dữ liệu của biến, tham số hàm, và giá trị trả về, giúp TypeScript hiểu rõ hơn về kiểu dữ liệu mà bạn đang làm việc.

let username: string = "user123";  
function add(a: number, b: number): number {  
    return a + b;  
}  

Static Typing

TypeScript cung cấp kiểu tĩnh, cho phép kiểm tra kiểu dữ liệu tại thời điểm biên dịch. Điều này giúp phát hiện lỗi ngay trước khi mã được chạy, nâng cao độ tin cậy và dễ bảo trì của ứng dụng.

Tất cả các tính năng này kết hợp lại giúp TypeScript trở thành một công cụ hữu ích trong phát triển ứng dụng, đặc biệt khi làm việc với mã nguồn lớn hoặc theo nhóm.

Hỗ trợ OOP (Lập trình hướng đối tượng)

TypeScript hỗ trợ các khái niệm OOP như lớp (classes), kế thừa (inheritance), đa hình (polymorphism), và đóng gói (encapsulation).

Ưu điểm của Typescript là gì?

Ưu điểm của Typescript là gì?

TypeScript thật sự thuận tiện và hoàn toàn miễn phí

Đối với loại ngôn ngữ lập trình tĩnh như TypeScript, tất cả những số liệu, thông số của bạn sẽ dễ dàng được lấy hơn nhờ IDE và trình biên dịch.

TypeScript hỗ trợ quá trình tìm kiếm giúp bạn tiết kiệm thời gian kiểm tra lại code, không cần thông qua bất cứ một ai để có thể tìm thông tin dữ liệu, ngoài ra TypeScript làm giảm phần trăm va chạm lỗi trong thời gian vận hành.

Ngoài ra, đây cũng là một trong những phần mềm nổi trội được Microsoft hỗ trợ hoàn toàn miễn phí.

Thao tác nhanh chóng và đơn giản hơn

Ngôn ngữ TypeScript có thao tác khá đơn giản, tiết kiệm thời gian hơn nhưng lại đem đến kết quả tốt đến bất ngờ, nó khắc phục tình trạng xuất hiện lỗi và dễ đọc hơn.

Cụ thể là, đối với ngôn ngữ thông thường người dùng thường thao tác theo các bước như:

  • Restart lại hàm, tạo đối số, hoàn thành đoạn mã
  • Sau khi apply hết các đoạn mã, công cụ cần thiết thì cho vận hành
  • Trong quá trình vận hành nếu phát hiện lỗi thì sửa chữa lại.

Tái cấu trúc

Chắc chắn trong quá trình viết code, các lập trình viên sẽ thường xuyên mắc phải nhiều lỗi nhỏ và cần chỉnh sửa, việc sử dụng TypeScript sẽ giúp bước chỉnh sửa code trở nên dễ dàng hơn nhờ hiệu quả của lệnh Rename Symbol/Find All Occurrences.

Đối với các ngôn ngữ khác, khi muốn sửa chi tiết nào đó thì thường phải thay đổi luôn những tập tin khác nếu có liên quan hoặc sử dụng RegEx

Trong trường hợp người dùng TypeScript muốn nâng cấp hệ thống của mình (thêm hoặc xóa thuộc tính, đổi tên,…) thì TypeScript sẽ giúp bạn tái cấu trúc lại sao cho phù hợp với nhu cầu tìm kiếm của bạn mà không gây náo loạn trong hệ thống. Trong trường hợp code của bạn không match được bất cứ dữ liệu nào thì sẽ được báo đến bạn ngay để được xử lý ổn thỏa.

Giảm tỷ lệ mắc lỗi trong hệ thống

Nhờ vào việc cảnh báo lỗi ngay khi viết code, nên tỷ lệ mắc lỗi trong hệ thống khi sử dụng TypeScript khá thấp, TypeScript sẽ trả lại giá trị null hoặc gợi ý thay đổi chỉnh sửa. Mỗi lần chỉnh sửa sau khi được TypeScript báo lỗi thì phần trăm hệ thống hoạt động mà không mắc phải lỗi là rất cao, có thể dễ dàng thấy được TypeScript giúp người dùng tiết kiệm không ít thời gian để sửa lỗi.

Hạn chế thử nghiệm Boilerplate

Với quy trình kiểm tra và báo lỗi tự động ngay khi code, khi bạn đã chắc chắn rằng các biến dữ liệu của mình nằm ở đúng chỗ thì bạn không cần phải lo hệ thống không vận hành hoặc không cần phải kiểm tra lại nữa.

Điều này sẽ giúp bạn tiết kiệm thời gian, không đặt quá nhiều chú ý vào những thao tác đơn giản cho việc kiểm tra mà có thể tận dụng thời gian tối ưu hơn bằng cách kiểm tra chất lượng logic của hệ thống.

Việc hạn chế được các bước thử nghiệm sẽ giúp tiết kiệm được thời gian hơn, nâng cao hiệu quả công việc của các lập trình viên.

Hợp nhất mã đơn giản

Sau khi hoàn thiện được một đoạn code và cho chúng chạy thử nghiệm, có thể ngay trong môi trường đó mọi thứ đều hoạt động trơn tru, nhưng bạn có chắc được đoạn code đó cũng sẽ hoạt động tốt khi ở trong môi trường điều kiện khác? 

Một trong những điểm mạnh của TypeScript là bạn có thể hợp nhất mã một cách đơn giản để có thể dễ dàng kiểm tra đánh giá đoạn mã bạn vừa mới cho ra đời kia bằng cách sử dụng Typedef – kiểm tra biên dịch.

Lại một lần nữa, TypeScript lại giúp người dùng tiết kiệm thời gian và công sức!

Hỗ trợ tối ưu hóa quy trình làm việc

TypeScript sẽ không khuyến khích người dùng nhảy bước, thực hiện sai thao tác. TypeScript khuyến khích người dùng đưa ra quyết định về kiểu dữ liệu khi sử dụng ngôn ngữ kiểu tĩnh trước khi thực hiện thao tác, các bước tiếp theo. Chính vì những quy luật như thế sẽ giúp cho các lập trình viên tối ưu được quy trình làm việc hiệu quả hơn.

Nhược điểm của Typescript là gì?

Bất kỳ ngôn ngữ nào cũng có điểm yếu và hạn chế của nó, và TypeScript cũng vậy, điểm hạn chế của TypeScript là:

Bắt buộc dùng biên dịch

Để có thể vận hành một tệp TypeScript với đuôi .js trên nền tảng Node.js bạn bắt buộc phải dùng trình biên dịch để có thể sử dụng.

Bước thiết lập cồng kềnh 

Trước khi có thể sử dụng được TypeScript, bạn cần đảm bảo rằng máy chủ Node.js, trình thử nghiệm và webpack đều có thể hoạt động với TypeScript, nếu không thì bạn sẽ không sử dụng được.

Bên cạnh đó, mỗi khi bạn apply thêm bất kỳ library nào như Redux, React và Styled-Component thì bạn cũng phải thêm Typedef vào.

Chỉ là phần ngôn ngữ mở rộng hỗ trợ

Sau cùng, chức năng của TypeScript cũng chỉ là để biên dịch về JavaScript, nó không phải là một ngôn ngữ có thể vận hành độc lập và nó cũng đồng thời không thể thay thế được vai trò của JavaScript. Chức năng của TypeScript bị giới hạn bởi chức năng của JavaScript, TypeScript chỉ là được nâng cấp từ điểm yếu của JavaScript.

Chỉ với mỗi TypeScript, người dùng không thể nào hoàn thiện được các công đoạn của dự án, công dụng của TypeScript chỉ thực sự nổi bật khi được kết hợp nhuần nhuyễn và tối ưu với các ngôn ngữ, nền tảng và tool khác.

TypeScript có thực sự là một mã nguồn mở?

Có nhiều luồng ý kiến cho rằng TypeScript là một mã nguồn mở, và đó cũng là một trong những lý do họ thích sử dụng TypeScript. Nhưng liệu đó có phải sự thật?

Đúng! TypeScript thực sự là một mã nguồn mở nhưng nó vẫn nằm dưới sự chi phối của Microsoft – công ty phần mềm nổi tiếng về các phiên bản phần mềm độc quyền. 

Nhiều người dự đoán, TypeScript là một sản phẩm marketing của Microsoft dùng để thu hút người dùng về công năng và sự miễn phí. Tuy nhiên sau cùng, việc Microsoft có kéo dài việc miễn phí này hay không vẫn phụ thuộc rất nhiều vào Microsoft và người dùng hoàn toàn bị động trong chuyện này.

TypeScript (TS)

Hướng dẫn cài đặt TypeScript

Cách dễ nhât để thiết lập TypeScript là thông qua trình quản lý NPM (Node.js).

Bước 1: Cài đặt Node.js và npm

Trước hết, bạn cần cài đặt Node.js và npm. Bạn có thể tải Node.js từ trang web chính thức Node.js. Khi cài đặt Node.js, npm cũng sẽ được cài đặt cùng.

    • Chọn phiên bản LTS (Long Term Support) và tải về.
    • Thực hiện theo các hướng dẫn để cài đặt.
    • Sau khi tải xuống và cài đặt thành công, mở command prompt/terminal và chạy lệnh sau để kiểm tra:
node -v npm -v

Bước 2: Cài đặt TypeScript

Sau khi cài đặt Node.js và npm, bạn có thể cài đặt TypeScript thông qua npm.

  • Cài đặt TypeScript toàn cầu: Chạy lệnh sau trong terminal:
npm install -g typescript
  • Kiểm tra cài đặt TypeScript: Kiểm tra xem TypeScript đã được cài đặt thành công bằng cách chạy lệnh sau:
tsc -v

Cài đặt TypeScript trong một dự án cụ thể

Nếu bạn muốn cài đặt TypeScript cho một dự án cụ thể, bạn có thể cài đặt nó dưới dạng một devDependency trong thư mục dự án của bạn.

  • Tạo một thư mục dự án mới:
    mkdir my-typescript-project
    cd my-typescript-project
    
  • Khởi tạo một dự án npm mới:
    npm init -y
    
  • Cài đặt TypeScript cục bộ cho dự án:
    npm install --save-dev typescript
    
  • Tạo tệp cấu hình TypeScript (tsconfig.json): Tạo một tệp tsconfig.json trong thư mục dự án của bạn để cấu hình TypeScript:
    {
      "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "outDir": "./dist",
        "rootDir": "./src"
      },
      "include": ["src"]
    }
    

Viết và biên dịch mã TypeScript

  • Tạo thư mục và tệp mã nguồn:
    mkdir src
    touch src/index.ts
    
  • Viết mã TypeScript: Mở tệp src/index.ts và viết mã TypeScript của bạn:
    // src/index.ts
    const greeting: string = "Hello, TypeScript!";
    console.log(greeting);
    
  • Biên dịch mã TypeScript: Chạy lệnh sau để biên dịch mã TypeScript thành JavaScript:
    npx tsc
    
  • Chạy mã JavaScript đã biên dịch: Mã đã biên dịch sẽ được lưu trong thư mục dist. Chạy mã JavaScript bằng Node.js:
    node dist/index.js

TypeScript vẫn đang liên tục được phát triển, nếu bạn đọc được bài viết này thì chắc hẳn bạn là một dev JS (Nếu không phải tôi khuyên bạn nên tiếp cận JS ES6 trước khi học Typesript). Vì vậy trong khuôn khổ bài viết tôi sẽ không chỉ rõ cách sử dụng cơ bản. Bạn nên tham khảo thêm tại website của TypeScript để cập nhật tính năng mới.

Tuyển dụng lập trình Typescript mới nhất tại Topdev

cURL là gì? Cách sử dụng Curl

cURL là gì? Cách sử dụng Curl

cURL là gì?

cURL là một command line tool và thư viện được sử dụng để truyền dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, HTTPS, FTP, FTPS, SCP, SFTP, FILE, IMAP, SMTP, POP3, RTSP và RTMP…). Được đời từ năm 1997 viết bởi Daniel Stenberg viết bằng C. Với giao thức HTTP, cURL hỗ trợ việc gửi đi một request với tất cả các phương thức hiện có như GET, POST, PUT, DELETE…

Cơ bản về sử dụng cURL PHP

Với giao thức HTTP, cURL hỗ trợ việc gửi đi một request với tất cả các phương thức hiện có như GET, POST, PUT, DELETE…Trong PHP có cung cấp các API để làm việc với thư viện này với các chức năng khá đầy đủ cURL PHP.

cURL có hỗ trợ việc truyền dữ liệu qua giao thức HTTPS. Ta có thể dùng cURL trong Php để GET và POST dữ liệu, truy cập REST API service có kết hợp với JSON hoặc xác thực OAUTH.

Khi sử dụng cURL thường có 3 bước cơ bản:

  1. Khởi tạo cURL
  2. Cấu hình tham số cho cURL
  3. Thực thi cURL
  4. Ngắt cURL, giải phóng dữ liệu
$ch = curl_init(); //khai báo curl
curl_setopt($ch, CURLOPT_URL,"https://topdev.vn"); // xác định địa chỉ cần thực thi
curl_setopt($ch, CURLOPT_POST, 1); // POST
// và các tham số khác ... dùng curl_setopt để dịnh giá trị cho mỗi tham số.
curl_exec ($ch); // thực thi curl
curl_close ($ch); // đóng curl để giải phóng vùng nhớ
?>

Thiết lập cURL

Bạn có thể cấu hình thêm một hoặc nhiều option nữa cho curl bằng curl_setopt. Các curl_setopt này phải được đặt trước curl_exec thì mới có hiệu lực. Đây là một hàm quan trọng trong cURL để xử lí các dữ liệu vào:

  • CURLOPT_RETURNTRANSFER: TRUE để curl_exec() trả về chuỗi chứ không xuất thẳng ra màn hình.
  • CURLOPT_CONNECTTIMEOUT: Thời gian cho phép cURL cố gắng kết nối (giây), 0 vô tận
  • CURLOPT_USERAGENT: Nội dung của dòng User-Agent: trong header của HTTP khi gửi yêu cầu
  • CURLOPT_URL: URL mà cURL gửi yêu cầu
  • CURLOPT_POST: TRUE – Thiết lập yêu cẩu gửi theo phương thức POST
  • CURLOPT_POSTFIELDS: Mảng dữ liệu để POST

Bạn có thi hành nhiều thiết lập một lúc bằng hàm curl_setopt_array():

//Dữ liệu để POST
$data = array(
    'name' = 'TopDev',
    'data' = array(1,2,3,4),
    'value' = 'Viec Lam IT'
);

//Có thể phải dùng thêm hàm chuyển tham số mảng thành chuỗi URL encode
//$data = http_build_query($data) nếu POST

$curl = curl_init();
$options = array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://topdev.vn/api/',
    CURLOPT_POST => true,
    CURLOPT_USERAGENT => "Safari/8.0",
    CURLOPT_POSTFIELDS => $data
 );
curl_setopt_array($curl, $options);

Gửi request với cURL

Tạo tài nguyên cURL và thiết lập xong như trên, ta tiến hành gửi request với cURL bằng hàm curl_exec(). Kết quả trả về false hoặc true và giá trị là chuỗi trả về khi CURLOPT_RETURNTRANSFER thiết lập true.

$curl = curl_init();
// code khác
$result = curl_exec($curl);
if ($result === FALSE) {
    echo "CCURL Error";
} else {
    //Succeess!, kết quả trong $result
}

$result trả về có thể là JSON, string…

Sau khi gửi yêu cầu thành công, nhận hết giá trị trả về bạn cần đóng CCURL bằng hàm curl_close($curl);

Ví dụ sử dụng cURL GET dữ liệu từ JSON

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 0,
    CURLOPT_URL => 'https://topdev.vn/blog/json/v1/',
    CURLOPT_USERAGENT => 'TopDev Test Api',
    CURLOPT_SSL_VERIFYPEER => false
));

$resp = curl_exec($curl);

//Dữ liệu ở dạng JSON
$data = json_decode($resp);
var_dump($data);

curl_close($curl);