Lập Trình

Tổng hợp các thông tin, kinh nghiệm hữu ích và mới nhất về lập trình cần học gì, phỏng vấn, mức lương trong ngành IT như thế nào, tìm hiểu ngay!

398 bài viết

9 hiểu lầm “ngớ ngẩn” về machine learning

9 hiểu lầm “ngớ ngẩn” về machine learning

Những hiểu lầm và quan niệm lệch lạc về machine learning xuất hiện ngày càng nhiều do nó ngày càng bị cường điệu hoá. Bài viết này sẽ cho bạn một cái nhìn tổng quát về những gì machine learning có thể và không thể làm. Machine learning được tin rằng hữu ích đến nỗi nó có thể giải quyết mọi vấn đề và áp dụng trong mọi tình huống. Giống như các công cụ khác, machine learning rất hữu ích trong một số lĩnh vực cụ thể, đặc biệt đối với các vấn đề mà bạn thường xuyên gặp phải nhưng bạn biết rõ rằng bạn sẽ không bao giờ có thể thuê đủ người để giải quyết, hoặc đối với các vấn đề có mục tiêu nhưng không có phương pháp rõ ràng để đạt được nó. Tuy nhiên, mỗi tổ chức thường áp dụng machine learning theo những cách khác nhau, như 42% những nhà điều hành cấp cao gần đây nói với Accenture rằng họ mong đợi AI sẽ đứng sau tất cả những đổi mới vào năm 2021. Nhưng bạn sẽ khai thác nó tốt hơn nếu bạn không bị ảnh hưởng bởi những luồng ý kiến cường điệu hoá và không quá tin vào những định kiến bằng cách hiểu những gì machine learning có thể và không thể thực hiện. Tuyển dụng Machine Learning lương cao hấp dẫn cho bạn 1. Machine learning cơ bản là AI Machine learning và AI thường được cho là hai từ đồng nghĩa, nhưng trong khi machine learning là kỹ thuật được sử dụng rất nhiều trong các phòng thí nghiệm, AI là một mảng lớn bao gồm các lĩnh vực như tầm nhìn máy tính, robot và xử lý ngôn ngữ tự nhiên , cũng như...

By stationd
Cùng tìm hiểu về Stream trong Java 8

Cùng tìm hiểu về Stream trong Java 8

Bài viết được sự cho phép của tác giả Kiên Nguyễn Quay trở lại với chuỗi bài Java Stream , hôm nay do đang không có task nên mình tranh thủ viết bài (kẻo nhàn cư vi bất thiện ). Lúc đầu thì tính là không viết dài, nhưng vì giật tít bài viết ghê quá, nên mình sẽ cố gắng viết hết tất cả, từ khái quát, bản chất cho tới hiệu năng, …. Tuy hơi dài nhưng chắc là cũng đáng để đọc, mục tiêu của mình khi viết bài này là mong rằng chỉ đọc only bài này, các bạn đã thật sự hiểu sâu, nắm chắc về mặt bản chất của Stream , qua đó từ từ trở thành Senior Java Developer . Viết có hay ho gì không mà PR ghê thế?. Bố đọc mà không hiểu lại close mẹ tab bây giờ! Úi, đừng close tab mà tội nghiệp em nó, vào bài ngay đây. Xem thêm nhiều việc làm Java hấp dẫn trên Station D 1. Stream là gì? 1.1 Một câu chuyện nhỏ và định nghĩa. Chuyện rằng ngày nảy ngày nay, ở phường 3, quận Tân Bình có thằng Tèo , nhà giàu tổ bố, nhà cực nhiều xe, nó có một List 10 chiếc xe với thông tin ngày bảo hành gần nhất. Đến hạn bảo dưỡng, vì đ*o lành nghề IT nên Tèo nhờ Tồ (kỹ sư công nghệ thông tắc hệ thống thoát nước) kiểm tra xem xe nào đến hạn bảo hành. Với số lượng 10 chiếc, Tồ nhanh trí sử dụng Iterator next() kiểm tra trên từng chiếc xe, mọi việc đơn giản, Tồ lụm 2 củ. Qua hôm sau, thằng Tí kế bên kêu thằng Tồ tới làm vố này to, Tồ nhanh chân đề...

By stationd
Trải nghiệm lần đầu viết thư viện Python từ ngôn ngữ biên dịch

Trải nghiệm lần đầu viết thư viện Python từ ngôn ngữ biên dịch

Tác giả: Nguyễn Hồng Quân Có một người bạn mà mình từng ngồi nhiều cafe để bàn về những công nghệ mới để phục vụ cho dự án công ty. Một câu hỏi mà bạn hay đặt ra là dùng ngôn ngữ lập trình gì tiếp theo. Mình thì khá dày dạn về Python và đã từng xây dựng nền móng cho những dự án Python ở công ty bạn. Tuy nhiên, mình và bạn đều đồng ý là nên mở rộng phạm vi công nghệ để thích ứng với nhiều thể loại dự án khác nhau. Đi tham vấn nhiều nơi, được nghe khen ngợi về Go nên bạn rất muốn một lần được áp dụng Go trong cty của bạn. Còn mình thì, nếu đã chọn một ngôn ngữ biên dịch và phải bỏ thời gian cá nhân ra học thì mình thà chọn Rust hơn. Tất nhiên, ý thức được độ khó của Rust nên mình chả bao giờ muốn đem Rust vào công ty của bạn cả. Trong khi lý do thường được nêu ra để chọn Go là cú pháp đơn giản, ít keyword, dễ học, thì với mình, độ khó của Rust là thứ đáng để đầu tư. Thà chịu khó ban đầu nhưng gặt hái kết quả tốt về sau. Ngoài ra, điều khiến mình ưu ái Rust hơn Go là ở chỗ Rust không có garbage collector, không có runtime riêng, nên có thể dùng Rust để viết thư viện tầng dưới, phục vụ cho Python và các ngôn ngữ khác được, chưa kể, việc được thiết kế tốt và không có bộ runtime khiến Rust là ngôn ngữ duy nhất (ngoài C) khiến tác giả của Linux muốn thấy nó được ứng dụng vào nhân Linux. Lý do viết thư viện...

By stationd
PHP 8: match hay là switch?

PHP 8: match hay là switch?

Bài viết được sự cho phép của tác giả Nguyễn Trần Chung PHP 8 sẽ giới thiệu một biểu thức mới “ match “. Một tính năng mạnh mẽ và sẽ là sự lựa chọn tốt hơn so với “ switch “. Vậy chính xác sự khác biệt là gì? 10 PHP Instagram Scripts & Widgets tốt nhất 10 Frameworks tốt nhất hiện nay cho PHP Hãy bắt đầu bằng cách so sánh cả hai. Đây là một ví dụ về “ switch ” cổ điển: switch ( $statusCode ) { case 200 : case 300 : $message = null ; break ; case 400 : $message = 'not found' ; break ; case 500 : $message = 'server error' ; break ; default : $message = 'unknown status code' ; break ; } Đoạn code ở dưới đây sẽ tương đương với ở trên khi dùng biểu thức “ match “: $message = match ( $statusCode ) { 200 , 300 = > null , 400 = > 'not found' , 500 = > 'server error' , default = > 'unknown status code' , } ; Trước hết, biểu thức khớp ngắn hơn đáng kể: nó không yêu cầu break statement nó có thể kết hợp các trường hợp giống nhau thành một bằng dấu phẩy nó trả về một giá trị, vì vậy bạn chỉ phải gán giá trị một lần Nhưng thậm chí còn nhiều hơn thế! Không ép kiểu match sẽ kiểm tra loại nghiêm ngặt thay vì kiểm tra lỏng lẻo. Giống như sử dụng === thay vì ==. Mọi người có thể sẽ không đồng ý liệu đó có phải là điều tốt hay không, nhưng đó là một chủ đề riêng chúng ta sẽ bàn sau. $statusCode = '200' ; $message = match...

By stationd
Lập trình game với Java cho người mới bắt đầu

Lập trình game với Java cho người mới bắt đầu

Bài viết được sự cho phép của tác giả Lê Hồng Kỳ Lập trình game với java dành cho người mới bắt đầu sẽ trình bày những kiến thức cũng như những xử lý đặc thù khi lập trình game như xử lý va chạm, xử lý chuyển động, xử lý âm thanh, xử lý vòng lặp game,… Các bạn lưu ý, để học tốt bài này người học phải có kiến thức về lập trình với ngôn ngữ Java . Trong bài học này, người học sẽ dùng ngôn ngữ Java để thiết kế giao diện game, cài đặt xử lý game. Chúng ta hãy bắt đầu bài học bằng một game nhỏ (mini game) với tựa là Mini Tennis. Game này có luật chơi rất đơn giản. Quả bóng di chuyển từ trên xuống dưới. Nếu đụng biên dưới, trò chơi kết thúc. Người chơi sẽ sử dụng 2 phím mũi tên để di chuyển thanh ngang qua trái/phải sao cho quả bóng không được đụng biên dưới. Lập trình game với java – Nội dung bài học Đồ họa (Graphic) Chuyển động và lặp lại (Animation and loop) Nhân vật (Sprite) Sự kiện (Event) Va cham (Collision) Âm thanh (Sound) Top 5 Ngôn Ngữ Lập Trình Game Không Thể Bỏ Qua 2024 Mẫu bảng mô tả công việc lập trình Game Lập trình game với java – Đồ hoạ trong game Để vẽ một cái gì đó, trước tiên chúng ta cần một bề mặt để vẽ. Đó chính là JPanel. Khi vẽ một đối tượng nào đó, chúng ta phải xác định được toạ độ (x, y) và kích thước của đối tượng đó. Phần code dùng để vẽ các hình oval và hình chữ nhật public class Game extends JPanel { public void paint(Graphics g)...

By stationd
Kiểu dữ liệu Boolean và toán tử logic AND, OR, NOT trong Python

Kiểu dữ liệu Boolean và toán tử logic AND, OR, NOT trong Python

Trong các bài trước chúng ta đã làm quen với các kiểu dữ liệu số nguyên (int), số thập phân (float) và kiểu chuỗi (string) trong Python. Tiếp theo, chúng ta sẽ làm quen với một kiểu dữ liệu khác là Boolean, một kiểu dữ liệu được sử dụng trong hầu hết các ngôn ngữ lập trình hiện nay. Cùng Station D tìm hiểu về Boolean trong Python và các toán tử AND OR NOT thông qua các ví dụ minh họa thật chi tiết. Xem thêm nhiều việc làm Python lương cao trên Station D Kiểu dữ liệu Boolean trong Python Boolean hay Bool trong python là gì? Boolean là kiểu dữ liệu mà mọi ngôn ngữ lập trình ngày này đều sử dụng, và tất nhiên Boolean cũng là một kiểu dữ liệu trong Python. Boolean đại diện cho hai giá trị logic duy nhất là: đúng (True) và sai (False). Lưu ý khi code, giá trị True/False phải viết hoa, nếu không sẽ bị báo lỗi. Trong máy tính, kiểu dữ liệu này được lưu trữ trên 1 bit (là đơn vị lưu trữ nhỏ nhất), có giá trị là 1 hoặc 0. Thông thường, các giá trị Boolean là True hoặc False không được gán trực tiếp với biến mà thông qua một phép so sánh, ví dụ: age = 20 is_over_age = age >= 18 is_under_age = age < 18 is_twenty = age == 20 Một biểu thức so sánh sẽ trả về kết quả là dạng Boolean tức là True hay False. Chúng ta có các phép so sánh thường dùng như: > Lớn hơn >= Lớn hơn hoặc bằng == So sánh bằng < Nhỏ hơn <= Nhỏ hơn hoặc bằng. is so sánh hai đối tượng có bằng nhau không is not:...

By stationd
Viết ứng dụng tra số điện thoại thuộc Quốc gia nào bằng Python

Viết ứng dụng tra số điện thoại thuộc Quốc gia nào bằng Python

Bài viết được sự cho phép của tác giả AnonyViet Hôm nay, mình sẽ hướng dẫn các bạn cách tạo ứng dụng tra số điện thoại đó xem nó thuộc Quốc gia bằng Python nhé. Cách thực hiện khá đơn giản vì chúng ta đã có sẵn các thư viện. Bài viết này khá basic vì dành cho người mới bắt đầu tim hiểu Python. Nếu bạn muốn học chuyên sau Python hãy comment bên dưới, anonyviet sẽ ra thêm các bài nâng cao hơn. Đây là một ứng dụng tra số điện thoại rất đơn giản, do đó bạn chỉ cần có kiến thức cơ bản về Python để có thể hoàn thành ứng dụng này. Python và cách tiết kiệm dung lượng cho phần mềm nhúng Cách tạo ứng dụng tra số điện thoại Yêu cầu phone-iso3166 pycountry Tkinter Bạn cần cài đặt các thư viện python ở trên để sử dụng trong ứng dụng này. Cài đặt pip install python-tk, phone-iso3166, pycountry Mình sẽ sử dụng phone-iso3166 để xác định tên viết tắt của quốc gia rồi gán vô biến alpha_2 và pycountry để xác định tên đầy đủ của quốc gia đó bằng cách sử dụng alpha_2 mà chúng ta đã thu thập được từ phone-iso3166 . Code mẫu >>> import pycountry >>> from phone_iso3166.country import phone_country >>> code = phone_country("255757295721") >>> code 'TZ' >>> pycountry.countries.get(alpha_2 = code) Country(alpha_2='TZ', alpha_3='TZA', common_name='Tanzania', name='Tanzania, United Republic of', numeric='834', official_name='United Republic of Tanzania') >>> Giờ thì chúng ta đã biết cách lấy thông tin quốc gia từ số điện thoại, nhưng ứng dụng này vẫn hoạt động dưới dạng command line. Nên bây giờ, chúng ta sẽ thiết kế GUI cho ứng dụng. Python call by gì? Tạo file app.py Mở notepad lên tạo file app.py với nội dung...

By stationd
Chuyển đổi Unicode dựng sẵn & tổ hợp với Python

Chuyển đổi Unicode dựng sẵn & tổ hợp với Python

Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân Dạo này các ứng dụng với dữ liệu tiếng Việt đang ngày một nhiều, trong đó vấn đề sai khác giữa Unicode dựng sẵn và tổ hợp, tuy nhỏ, nhưng cũng gây mất chút kha khá thời gian debug cho những người mới vào nghề. Mình chia sẻ xíu kinh nghiệm này, để việc phát triển ứng dụng tiếng Việt trở nên trơn tru hơn, và cũng để “khoe hàng” về hệ sinh thái giàu mạnh của Python . Tưởng tượng một tình huống sau. Ứng dụng của bạn cho người dùng nhập vào một chuỗi tiếng Việt, khi nhận được chuỗi, phần mềm sẽ dò trong cơ sở dữ liệu để chọn ra bản ghi nào ăn khớp với chuỗi đó. Cơ sở dữ liệu này được một người khác nhập liệu. Bạn đã chắc chắn rằng chuỗi đó có tồn tại trong cơ sở dữ liệu, nhưng không hiểu sao phần mềm so sánh, dò tìm không ra. Hóa ra là người nhập liệu, khi gõ chuỗi vào thì dùng Unicode tổ hợp (decomposed), trong khi người dùng lúc nhập chuỗi tìm kiếm vào thì dùng Unicode dựng sẵn (composed). Dưới dạng chuỗi byte thì hai chuỗi này không giống nhau, nên bằng biện pháp so sánh chuỗi unicode thông thường, phần mềm sẽ không nhận ra. Tại sao bạn nên sử dụng Python Generator Lấy ví dụ một chuỗi sau, “Tiếng Việt bão táp”, nếu là Unicode dựng sẵn, khi thể hiện dưới dạng chuỗi byte, dàn theo bảng mã UTF-8, thì là chuỗi byte này: b 'Ti xe1xbaxbf ng Vi xe1xbbx87 t b xc3xa3 o t xc3xa1 p' Trong khi nếu là Unicode tổ hợp, khi thể hiện ở dạng chuỗi byte UTF-8, thì...

By stationd
Top 3 phần mềm giả lập Java trên Android tốt nhất

Top 3 phần mềm giả lập Java trên Android tốt nhất

Vào khoảng thời gian những năm 2010, cách đây hơn 10 năm, khi mà các thiết bị smartphone chạy hệ điều hành Android hay iOS chưa quá phổ biến, thì cũng là thời kỳ vàng son của các game Java trên điện thoại di động còn bàn phím số. Ngày nay với việc smartphone chạy các hệ điều hành chuyên biệt, không hỗ trợ cài đặt, chạy các ứng dụng viết bằng Java; thì để trải nghiệm lại những tựa game được xem là bầu trời tuổi thơ của thế hệ 8x, 9x chúng ta cần đến các ứng dụng giả lập Java trên smartphone. Bài viết hôm nay chúng ta cùng điểm qua một số các ứng dụng giả lập Java trên Android phổ biến hiện nay nhé. Giả lập Java là gì? Java là 1 ngôn ngữ lập trình bậc cao được phát triển bởi Sun Microsystems (hiện tại thuộc sở hữu của Oracle) từ những năm 1995. Java với sự đa năng của nó có thể được sử dụng để viết được các phần mềm dành cho môi trường Desktop, Web và cả các hệ thống nhúng, thiết bị mobile. Trong đó 3 phiên bản Java khác nhau được xây dựng để phục vụ cho từng mục đích chuyên biệt: Thời điểm smartphone chạy hệ điều hành Android hay iOS chưa phổ biến thì để viết một ứng dụng trên thiết bị di động, Java là một lựa chọn phổ biến với phiên bản J2ME (Java Platform Micro Edition). Những ứng dụng được viết ra với file có đuôi .jar, .jad chạy trên các hệ điều hành mobile phổ biến trước đây như Symbian. Android mặc dù được viết bằng Java, nhưng nó không hỗ trợ J2ME hay J2SE, vì vậy nó không thể chạy trực tiếp...

By stationd
Hàm trong Python – Cú pháp và một số hàm phổ biến

Hàm trong Python – Cú pháp và một số hàm phổ biến

Hàm – Function là một khái niệm cơ bản quan trọng nhất trong mọi ngôn ngữ lập trình mà bạn cần nắm vững để có thể sử dụng. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về hàm trong Python , cú pháp khai báo hàm cũng như lời gọi hàm sử dụng trong ngôn ngữ này nhé. Hàm trong Python là gì? Trong lập trình Python, hàm được kí hiệu là function là một khối code hay nhóm lệnh có tổ chức và có thể tái sử dụng được dùng để triển khai một hành động liên quan, thực hiện một tác vụ cụ thể. Nó giúp chia một chương trình Python ra thành những khối/ phần/ mô đun nhỏ hơn, có tổ chức để dễ dàng quản lý hơn và tối ưu hóa việc tái sử dụng. Trong Python có 2 loại hàm cơ bản chính gồm: Hàm Python tích hợp sẵn – Built-in Functions: hàm có sẵn trong thư viện cơ bản được Python cung cấp Hàm Python tự định nghĩa : hàm mà người dùng tự khai báo Ở phiên bản Python 3.12 mới nhất hiện nay, có khoảng 70 functions được tích hợp sẵn và bạn có thể tham khảo ở link này để sử dụng Cú pháp khai báo function trong Python Cấu trúc hàm trong Python: Trong đó: def : từ khóa bắt đầu định nghĩa một hàm trong Python funtion_name : tên function khai báo – định danh duy nhất và tuân thủ quy tắc đặt tên hàm Python arguments : danh sách các tham số/ đối số đặt trong ngoặc đơn, được khai báo tách nhau bởi dấu phẩy dấu “:” : đánh dấu kết thúc khai báo tiêu đề của hàm statement list : danh sách các câu...

By stationd
Chiến trường sinh tử phiên bản lập trình : Python vs Ruby vs Golang

Chiến trường sinh tử phiên bản lập trình : Python vs Ruby vs Golang

Nhìn chung mọi ngôn ngữ lập trình đều có lịch sử, điểm mạnh, điểm yếu và những bộ framework phục vụ cho các mục đích khác nhau. Trong “cuộc đời” một ngôn ngữ, luôn có một điểm “nóng” mà tại đó chúng được sử dụng nhiều nhất với hiệu quả cao nhất. Trong những ngôn ngữ mà chúng ta đang sử dụng rộng rãi và đang “nóng” đó thì Python , Ruby và Golang xứng đáng là ba đối thủ “truyền kiếp” ít nhất là trong thời điểm hiện tại vì nó làm “đau đầu” không biết bao người đang cố lựa chọn thêm một ngôn ngữ để học. Python Vietnam Web Summit 2016 Hồ Chí Minh (22/10/2016) – Hà Nội (29/10/2016) – Đà Nẵng (05/11/2016) Ngôn ngữ lập trình này đã “sống” được tận 24 năm và có lẽ còn lâu nữa chỉ với một triết lý đó chính là “code ít hơn, được nhiều hơn” và do không cần phải code quá nhiều nên bug vì thế cũng… ít theo. Nếu như chúng ta so sánh Python và Java, Python sẽ lấy ít thời gian của lập trình viên hơn từ lúc bắt đầu cho đến khi sản phẩm thành hình, dù cho xét về hiệu năng thì Python về mặt lý thuyết không thể nào bằng Java. Python phù hợp nhất cho xây dựng web và phân tích dữ liệu. Từ những ngân hàng lớn cho đến YouTube, Python đều đang được sử dụng, cả trong lập trình game, sever maintainance hay cả xây dựng các hệ thống phục vụ nghệ thuật và âm nhạc (Spotify và Ruby on Rails là một ví dụ tiêu biểu). Ngoài ra đây còn là ngôn ngữ tiềm năng để xây những app có khả năng scale nhanh chóng, đó là...

By stationd
Học kiến thức căn bản TypeScript chỉ trong 30 phút

Học kiến thức căn bản TypeScript chỉ trong 30 phút

Hôm nay, chúng ta sẽ học TypeScript, một ngôn ngữ được biên dịch thành JavaScript, được thiết kế để xây dựng các ứng dụng lớn và phức tạp. Nó kế thừa nhiều khái niệm từ các ngôn ngữ như C# và Java, những ngôn ngữ nghiêm ngặt và có trật tự trái ngược với sự thoải mái và free-typed của JavaScriptt. Bài viết này, hướng đến những người đã khá thành thạo JavaScript nhưng vẫn còn là beginner khi đến với TypeScript. Chúng tôi sẽ đề cập hầu hết các tính năng chính và cơ bản bao gồm nhiều ví dụ với chú thích để giúp bạn thấy cách ngôn ngữ này hoạt động. Hãy bắt đầu học TypeScript cùng Station D ngay! Lợi thế của việc sử dụng TypeScript JavaScript đã đủ tốt và bạn có thể tự hỏi: Liệu tôi có thực sự cần học TypeScript? Về mặt kỹ thuật, bạn không cần học TypeScript để trở thành một lập trình viên giỏi, hầu hết mọi người đều ổn mà không có nó. Tuy nhiên, làm việc với TypeScript có một số lợi thế sau: Với static typing, code viết bằng TypeScript dễ dự đoán hơn, và dễ debug hơn. Dễ dàng tổ chức code cho các ứng dụng cực lớn và phức tạp nhờ modules, namespaces và hỗ trợ OOP mạnh mẽ. TypeScript có một bước biên dịch thành JavaScript, sẽ bắt tất cả các loại lỗi trước khi chúng chạy và làm hỏng một vài thứ. Framework Angular 2 viết với TypeScript và nó cũng khuyến khích các lập trình viên sử dụng ngôn ngữ này trong các dự án của họ. Lợi ích cuối cùng, thực sự là lý do quan trọng nhất với nhiều người để tìm hiểu TypeScript. Angular 2 là một trong...

By stationd