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

Các phần mềm giả lập Java dành cho máy tính tốt nhất

Các phần mềm giả lập Java dành cho máy tính tốt nhất

Java là một ngôn ngữ lập trình hỗ trợ đa nền tảng, nhất là trên các thiết bị di động, chúng ta có thể dễ dàng viết ứng dụng bằng Java sau đó build source code thành những tập tin .jar và chạy được trên điện thoại. Để có thể thử nghiệm các ứng dụng viết ra trực tiếp trên máy tính, các lập trình viên có thể sử dụng các phần mềm giả lập Java cho máy tính để có thể kiểm tra, thử nghiệm và tiết kiệm được thời gian. Bài viết hôm nay mình cũng các bạn tìm hiểu về các phần mềm giả lập Java phổ biến hiện nay nhé. Phần mềm giả lập là gì? Phần mềm giả lập là một chương trình cho phép hệ thống bắt chước giống như một hệ thống khác, chẳng hạn như phần mềm giả lập một điện thoại chạy trên máy tính. Chương trình giả lập cho phép các hoạt động bên trong nó chạy tương tự với trên thiết bị thật, có thể sử dụng các thiết bị ngoại vi được thiết kế riêng. Chúng ta có thể dễ gặp các phần mềm giả lập nổi tiếng như: giả lập console để chơi các tựa game console trên máy tính, giả lập điện thoại để chạy được các ứng dụng smartphone trên máy tính,…. Lợi ích của việc sử dụng phần mềm giả lập: Cho phép lập trình viên kiểm tra ứng dụng viết ra trên thiết bị “giống” thật nhất có thể để chỉnh sửa lại ứng dụng nếu cần Phần mềm giả lập cho phép lựa chọn nhiều thiết lập về màn hình, phần cứng,… khác nhau, điều mà mỗi thiết bị thật chỉ cung cấp được 1 lựa chọn duy nhất. Từ đó có...

By stationd
Cú pháp cơ bản trong lập trình Python

Cú pháp cơ bản trong lập trình Python

Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Trong bài này tôi sẽ trình bày khái quát cho bạn về cú pháp Python cơ bản. Mục đích của bài này là giúp bạn làm quen dần các khái niệm và thuật ngữ được sử dụng trong Python từ đó bạn có thể rút ra điểm giống và khác nhau với một số ngôn ngữ lập trình khác. Đặt tên (identifier) trong Python Một định danh (identifier) trong Python là một tên được sử dụng để nhận diện một biến, một hàm, một lớp, hoặc một đối tượng. Một định danh bắt đầu với một chữ cái từ A tới Z hoặc từ a tới z hoặc một dấu gạch dưới (_) được theo sau bởi 0 hoặc nhiều ký tự, dấu gạch dưới hoặc các chữ số (từ 0 tới 9). Python không hỗ trợ các ký tự đặc biệt chẳng hạn như @, $ và % bên trong các định danh. Python là một ngôn ngữ lập trình phân biệt chữ hoa- chữ thường, do đó định danh UCODE và ucode là hai định danh hoàn toàn khác nhau trong lập trình Python. Dưới đây là một số qui tắc nên được sử dụng trong khi đặt tên các định danh: Tên có thể là một dãy ký tự hoặc 1 dãy số bắt đầu bằng ký tự hoặc dấu gạch dưới Không được phép sử dụng ký tự đặc biệt để đặt tên (ngoại trừ dấu gạch dưới). Ký tự đầu tiên có thể là chữ cái, dấu gạch dưới, nhưng không được sử dụng chữ số làm ký tự đầu tiên. Khi đặt tên không nên đặt trùng với từ khóa trong Python (phần dưới sẽ trình bày về khác từ khóa này)....

By stationd
Code PHP chuẩn convention với PHP CodeSniffer

Code PHP chuẩn convention với PHP CodeSniffer

Bài viết được sự cho phép của tác giả Phạm Bình Chào các bạn, Có lẽ không cần dài dòng, nếu chưa biết gì về coding convention thì mình đã có hẳn một bài viết xịn sò là Chuẩn coding convention trong PHP với PSR , bạn có thể tham khảo nếu thấy cần thiết. Còn trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng công cụ PHP CodeSniffer để kiểm tra convention tự động khi lập trình PHP . 10 PHP Instagram Scripts & Widgets tốt nhất 11 cách tăng tốc nhanh cho WordPress bằng file wp-conig.php I. PHP CODESNIFFER LÀ GÌ? Vài điểm Hightlight về PHP CodeSniffer như sau: – PHP CodeSniffer gồm 2 công cụ chính là phpcs , và phpcbf . Trong đó phpcs là công cụ giúp bạn phát hiện lỗi coding convention, còn phpcbf là công cụ giúp bạn tự động tìm và sửa lỗi coding convention – đương nhiên là chỉ sửa được những gì mà nó có thể sửa. – PHP CodeSniffer là một package PHP, có thể cài đặt bằng composer như nhiều package php bình thường khác, nó có thể cài đặt theo từng dự án, hoặc có thể cài global trên máy tính của developer. – PHP CodeSniffer kiểm tra lỗi coding convention dựa trên các PSR, và nếu muốn bạn cũng có thể tự tắt/bật một số quy tắc của PSR để phù hợp với từng dự án, từng team phát triển. – Bạn có thể dễ dàng tích hợp PHP CodeSniffer với các editor phổ biến như Sublime Text, VsCode,… trong bài viết này, mình cũng sẽ hướng dẫn các bạn các tích hợp với VsCode. Tìm việc làm PHP đãi ngộ tốt trên Station D II. CÀI ĐẶT VÀ SỬ DỤNG PHP CODESNIFFER...

By stationd
bodyParser() trong Express.js

bodyParser() trong Express.js

Xây dựng App đơn giản với NodeJS, ExpressJS và Socket.IO 9 tip tối ưu code Nodejs dành cho lập trình viên Khi lần đầu học Express , tôi đã có file app.js được viết cho tôi và tôi chỉ phải thêm một vài routes như sau để nó họat động. app.get('/', function(req, res) { // get posts res.json(posts) }); Nhưng sau đó, tôi đã thử setup một project Nodejs với Express từ đầu và đã cố tạo routes giống như sau app.post('/', function(req, res) { Post.create(req.body) }); nhưng nó đã không làm việc. Và errors thông báo nói về req.body không tồn tại. Tôi thực sự không hiểu lý do tại sao nó không hoạt động mặc dù tôi đã làm tất cả theo đúng trình tự. Điều tiếp theo tôi đã làm là cố gắng kiểm tra req object. Tôi đã cố gắng để tìm thấy data trong req object. Nhưng req object quá lớn và khó hiểu và tôi không thể thực sự tìm thấy những data mà tôi đang tìm kiếm. Cuối cùng, tôi đã tìm đến bodyParser() , và tôi đã được biết Bạn cần phải sử dụng bodyParser() nếu bạn muốn data form có sẵn trong req.body Nhưng tôi vẫn không thực sự hiểu tại nó hoạt động như thế nào. app.use() Trước tiên để sử dụng bodyParser() bạn cần sử dụng đoạn code như sau: app.use(bodyParser.json()); Để hiểu cách thức hoạt động trên, bạn phải hiểu cách middleware hoạt động trong Express. Cụ thể, khi app.use() được sử dụng với đối số làm một function: app.use(function(req, res) { // make somethings }); Function sẽ đựợc thực hiện với mọi request Function này sẽ hoạt động như một middleware. Đối lập với khi app.use() được gọi với đối số là một string app.use('/test', cb); Nó...

By stationd
Hàm explode() trong PHP

Hàm explode() trong PHP

Bài viết được sự cho phép của tác giả Kien Dang Chung Từ phiên bản PHP 4, có một số các hàm xử lý chuỗi rất tiện lợi như explode, implode… giúp cho công việc phân tích, sàng lọc chuỗi dễ chịu hơn nhiều. Trong bài viết này chúng ta sẽ làm quen với hàm explode trong PHP cùng với một số ví dụ hay dùng trong thực tế. 1. Cơ bản về hàm explode trong PHP Hàm explode trong PHP cho phép bạn chuyển một chuỗi sang một mảng dựa trên các ký tự phân cách. Trong thực tế, xử lý chuỗi là rất cần thiết và sử dụng khá thường xuyên, ví dụ khi bạn muốn tách họ và tên của một người dùng, tách từng từ khóa trong một danh sách từ khóa có phân cách bằng một ký tự nào đó… Cú pháp của hàm explode: explode ( separator , string , limit ) Trong đó: separator: ký tự hoặc chuỗi ký tự phân cách sử dụng để phân biệt các phần tử trong chuỗi. string: chuỗi cần tách thành mảng. limit: xác định số phần tử của mảng đầu ra. >0: trả về mảng có số phần tử là limit phần tử đầu <0: trả về mảng có số phần tử là limit phần tử cuối 0: trả về mảng với 1 phần tử Chú ý: Hàm explode được giới thiệu từ phiên bản PHP 4, tham số limit được thêm vào từ PHP 4.1 và hỗ trợ giá trị âm từ PHP 5.1.0. Tìm việc làm PHP đãi ngộ tốt trên Station D 2. Các ví dụ thực tế sử dụng hàm explode 2.1 Ví dụ đơn giản về explode Một cách đơn giản để lưu nhiều giá trị vào một cột đó là...

By stationd
Tham số hàm Python

Tham số hàm Python

Bài viết được sự cho phép của ucode.vn Trong bài trước chúng ta đã tìm hiểu về hàm Python tích hợp sẵn và hàm Python do người dùng định nghĩa với số lượng tham số tùy biến. Bạn sẽ biết cách để định nghĩa hàm bằng cách sử dụng tham số mặc định, keyword và tham số tùy biến trong bài này. Tùy vào việc bạn định nghĩa hàm Python theo cách nào mà chúng ta có thể gọi hàm khác nhau, tất nhiên, dù gọi hàm theo cách nào thì kết quả cuối cùng vẫn hợp lý và giống nhau. Tham số của hàm Python Trong bài hàm Python do người dùng định nghĩa, chúng ta đã biết cách định nghĩa và gọi một hàm, giống như ví dụ dưới đây: def Xin_chao ( ten,loi_chao ): """Hàm Xin_chao chào một người với thông điệp cho trước """ print( "Xin chào" ,ten + ', ' + loi_chao) Xin_chao( "Nam" , "đọc bài trên uCode.vn vui vẻ nha!" ) Khi chạy code trên, ta sẽ nhận được dòng chữ trên màn hình như sau: Xin chào Nam, đọc bài trên uCode.vn vui vẻ nha! Như bạn thấy, hàm Xin_chao() này có 2 tham số. Do đó, nếu chúng ta gọi hàm với 2 tham số, nó sẽ chạy “ngon lành” và không gặp phải thông báo lỗi nào. Nếu gọi hàm với số tham số khác 2, trình thông dịch sẽ hiển thị thông báo lỗi. Nếu muốn, bạn có thể thử gọi hàm Xin_chao() trên với 1 tham số và không có tham số. #Thông báo lỗi khi gọi hàm Xin_chao() với 1 tham số TypeError: Xin_chao() missing 1 required positional argument: 'loi_chao' #Thông báo lỗi khi gọi hàm Xin_chao() mà không có tham số TypeError: Xin_chao() missing 2 required...

By stationd
[Python cơ bản thường dùng trong công việc] Phần 15 : Socket programming

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

Chương này sẽ ví dụ việc xây dựng một môi trường Client – Server sử dụng Socket. Server sẽ lắng nghe trên một port (12345) và khi client kết nối vào sẽ thông báo hiển thị thông tin của client (IP và Port) và gởi 1 message xuống cho client. 15.1. Server side Tạo file server.py với nội dung bên dưới. Got connection import socket s = socket.socket() host = socket.gethostname() port = 12345 s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() print 'Got connection from', addr c.send('Thank you for connecting') c.close() Đoạn code trên khi thực thi sẽ chạy và lắng nghe ở port TCP 12345. Mỗi khi có một kết nối từ client sẽ hiện ra thông báo kết nối từ IP và Port nào, ví dụ: from Got connection from ('192.168.1.104', 60018) . Sau đó, gởi trả một message với nội dung Thank you for connecting về cho client. Sau đó, đóng kết nối với client. 15.2. Client side Tạo file client.py với nội dung bên dưới. import socket s = socket.socket() host = '127.0.0.1' port = 12345 s.connect((host, port)) print s.recv(1024) s.close Đoạn code trên sẽ kết nối đến một socket server thông qua hostname lấy được từ phương thức socket.gethostname() và port 12345. Sau khi kết nối, sẽ hiển thị ra kết quả trả về từ server. Sau đó thì đóng kết nối. << Phần 14 : Gửi email với SMTP Xem thêm tuyển dụng python các công ty hot

By stationd
So sánh Laravel và Phalcon – Framework nào tốt hơn?

So sánh Laravel và Phalcon – Framework nào tốt hơn?

Bài viết được sự cho phép của BBT Tạp chí lập trình Gần đây mới xin được việc, công ty làm về Phalcon nên mình cũng dành khá nhiều thời gian để tìm hiểu về nó. Dù trước kia học Laravel là chủ yếu (nhưng xin việc mấy chỗ đó lại từ chối) nên mình dịch bài này để tìm hiểu và so sánh giữa 2 framework chút chơi. Bài viết này so sánh Laravel và Phalcon, khi so sánh cuối mối phần so sánh sẽ có tổng điểm để dễ phân biệt. 1. Cài đặt và khởi đầu Cài đặt và bắt đầu với Laravel rất dễ, bạn chỉ cần dùng composer để cài đặt các gói và sau đó có thể bắt đầu một dự án mới. Bạn cũng có thể copy các file Laravel rồi sau đó bắt đầu chỉnh sửa, code… Cài đặt Phalcon khó hơn, thực tế mình đã không thể cài đặt thành công Phalcon 4 và phải nhờ mới cài được Phalcon 3.4. Đó là vì Phalcon không được viết bằng PHP (dù bạn sẽ code bằng php 100%). Nó là một phần mở rộng của C, bạn sẽ cần cài nó trên server hoặc local server đẻ có thể dùng nó yêu cầu biên dịch hoặc tải các bản biên dịch sẵn và kich hoạt thủ công trên web server của bạn. Điều này sẽ gây nhiều khó khăn nếu không thành thạo. Phalcon cũng cung cấp một công cụ là Phalcon devtools để giúp bạn tạo dự án và chỉnh sửa code. Phải nói thêm là khi tạo dự án, Phalcon thường nhanh hơn Laravel. Dó cài đặt Phalcon phức tạp hơn nên phần này Laravel thắng. Laravel : 1 Phalcon: 0 2. Cấu trúc file Đây là phần rất quan...

By stationd
Đánh giá điểm mạnh và điểm yếu của PHP

Đánh giá điểm mạnh và điểm yếu của PHP

Bài viết được sự cho phép của tác giả Đoàn Văn Tuyển Có quá nhiều ý kiến chê PHP. Thế nên dựa trên kinh nghiệm làm việc với PHP nên mình muốn viết lại những đánh giá của mình với ngôn ngữ trên. Những đáng giá bên dưới vừa so sánh với những thứ khác trên quan điểm PHP là Web Programing chứ không so với những mảng khác. Phần bài viết sẽ gồm 4 phần, phần đầu nói qua về cách thiết kế và thực thi của PHP, hai phần sau sẽ đánh giá điểm mạnh và điểm yếu của PHP dựa trên thiết kế đó, phần cuối mình viết khi nào nên sử dụng PHP, khi nào không: 1. Cách thức thực thi của PHP Như đã nói ở trên, mình chỉ nói về PHP Web (ko tính đến PHP chạy dưới dạng Command Line, thực thế PHP CLI có khác một chút nhưng không quá nhiều). 1.1 Kết nối với Web Server PHP không được thiết kế để trực tiếp handle request mà thông qua Web Server (Thông thường là Apache hoặc Nginx). Khi client (Web Browser / HTTP Client) gửi request lên Web Server. Web Server sẽ kết nối với PHP và tạo ra một tiến trình độc lập để xử lý request đó. Những tiến trình đó có thể là Process (với apache) hoặc thread (với Nginx / PHP-FPM). Tuy nhiên dù là process hay thread thì có một đặc điểm là những tiến trình đó không chia sẻ tài nguyên với nhau. Nghĩa là hai request của 2 client gửi lên thì tạo 2 tiến trình hoàn toàn tách biệt tài nguyên xử lý. Tài nguyên tách biệt bao gồm: RAM, CPU, kết nối… Sau khi request hoàn thành, kết quả trả về cho...

By stationd
PHP – mười người mười ý những vẫn hot không tả nổi

PHP – mười người mười ý những vẫn hot không tả nổi

Đã từng có không ít các thông tin bàn luận xoay quanh vấn đề lỗi thiết kế và tính không nhất quán của lập trình ngôn ngữ PHP. Vào năm 2012, một bài viết chia sẻ từ blogger Eevee đã được viết với tiêu đề “PHP: Một ngôn ngữ có thiết kế rất tồi” . Từ đó cuộc tranh luận về nhược điểm của ngôn ngữ lập trình này bắt đầu nhiều hơn: “Không có một triết lý thiết kế rõ ràng” , “PHP không tập trung như các ngôn ngữ khác”, “PHP thật tệ”… Tuy nhiên, chúng ta tự hỏi với vô số những ý kiến trái chiều ấy tại sao PHP lại vẫn được nhiều người sử dụng và phổ biến đến vậy? Theo W3Techs, có đến 82% website trong thế giới internet dùng ngôn ngữ lập trình PHP . Ngay cả các trang web nổi tiếng như Wikipedia, Facebook, WordPress…cũng đều đang được chạy bởi chính ngôn ngữ này. Vậy điều gì đã khiến độ hot của PHP vẫn chưa hề giảm nhiệt? Phổ biến và dễ tiếp cận Theo CEO của công ty Zend Technologies, ông cho biết: “PHP cho đến nay là ngôn ngữ lập trình web phổ biến nhất”. Với Josh Lockhart, một nhà phát triển web tại Media Campaigns, ông nhấn mạnh PHP được xem là một trong những ngôn ngữ lập trình web đơn giản và dễ diếp cận nhất ngày nay. Với tất cả những gì liên quan đến website, PHP đều có thể được áp dụng vào. Cấu trúc và câu lệnh của PHP cũng giống với C, Java nên bạn có thể dễ dàng nắm vững trong một thời gian ngắn nếu thường xuyên thực hành nhiều bài tập và dự án nhỏ. Xét về mức độ hiệu suất,...

By stationd
Tại sao phải chọn giữa R hay Python trong khi bạn có thể chọn cả 2?

Tại sao phải chọn giữa R hay Python trong khi bạn có thể chọn cả 2?

Package reticulate cho phép ngôn ngữ lập trình R và Python có thể hoạt động cùng nhau – sau đây chính là 1 bài hướng dẫn mình muốn giới thiệu với các bạn. Cả ngôn ngữ lập trình R và Python có nhiều điểm chung cũng như vài khác biệt. Hầu hết các ý tưởng tiềm ẩn về cấu trúc dữ liệu của 2 ngôn ngữ này khá là giống nhau. Có nhiều package data science đang tồn tại cho cả 2 ngôn ngữ lập trình này. Nhưng R lại được thiết lập theo 1 cách mà mình sẽ mô tả như là ‘dữ liệu trước, ứng dụng sau’. Trong khi Python thì ngược lại khi nó nghiêng về việc phát triển ứng dụng được điều hướng từ ‘outlet’ nhiều hơn. Mình có 1 ví dụ: các lập trình viên Javascript sẽ dễ học ngôn ngữ lập trình Python hơn là R, vốn đã quen với syntax và việc quản lý ‘environment’. Hơn thế nữa, mình đã làm việc cả trên R và Python và đã có lúc gặp phải các tình huống mà mình sẽ muốn dùng cả 2 cùng với nhau. Điều này xảy ra vì 1 vài lý do, và lý do phổ biến nhất chính mình gặp phải là khi bạn đang build 1 thứ gì đó ở R, và bạn cần functionality mà chính bạn hay ai đó đã viết rồi bằng ngôn ngữ lập trình Python. Chắc chắn rằng bạn có thể viết lại nó với R, nhưng mình có cách tiện hơn để giúp bạn làm điều này. Package reticulate trong R cho phép bạn có thể thực hành code Python bên trong 1 session của R. Thực ra package này đã có mặt được vài năm và ngày 1 phát triển hơn,...

By stationd
Lưu ý cho Lock trong Java

Lưu ý cho Lock trong Java

Bài viết được sự cho phép của tác giả Trần Văn Dem Concurrent in Java Note Khi lập trình đa luồng việc đảm bảo tính threadsafe , visiable ,… là rất quan trọng. Để đạt được mục đích này, Java cung cấp rất nhiều phương pháp trong package java.util.concurrent Bài viết này sẽ cung cấp cho các bạn đầy đủ những kiến thức về lớp này để có thể áp dụng vào các project của mình. 1. Reentrant là gì? Khi lập trình hoặc các tài liệu về concurrent thường sẽ đề cập đến khái niệm Reentrant , Reentrant Lock . Vậy cụ thể tính Reentrant là gì? Xét ví dụ sau: public class ReentrantTest { private final Object object = new Object(); public void setA () { synchronized (object) { System.out.println( "setA" ); setB(); } } public void setB () { synchronized (object) { System.out.println( "setB" ); } } public static void main (String[] args) { ReentrantTest t = new ReentrantTest(); t.setA(); } } Nếu Lock được sử dụng trong hàm main() bên trên không phải dạng Reentrant thì sẽ gây ra deadlock và không thể kết thúc được chương trình. Trong Java có các loại reentrant lock sau : synchronized Các lock kế thừa từ class ReentrantLock.java . Trong quá trình làm việc của mình thì chỉ có một Lock không Reentrant đó là StampedLock Class trong Java là gì? Object trong Java là gì? Record class trong Java 2. FairSync vs NonfairSync Xét ví dụ khai báo ReentrantLock : var lock = new ReentrantLock(); . Click vào trong lớp ReentrantLock.java ta thấy được hàm khởi tạo sau ta sẽ thấy FairSync và NonfairSync /** * Creates an instance of { @code ReentrantLock}. * This is equivalent to using { @code ReentrantLock(false)}. */ public ReentrantLock () { sync=...

By stationd