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

Typescript vs Javascript: Nên chọn ngôn ngữ nào?

Typescript vs Javascript: Nên chọn ngôn ngữ nào?

Bài viết được sự cho phép của tác giả Tino Phạm Với sự phát triển ngày càng nhiều của các ứng dụng web, các nhà phát triển đã bắt đầu tìm kiếm những giải pháp có thể cải thiện tính bền vững và khả năng bảo trì của mã nguồn. Đó là lý do mà TypeScript, một ngôn ngữ lập trình được phát triển bởi Microsoft, đã ra đời như một sự mở rộng mạnh mẽ của JavaScript. Trong bài viết này, chúng ta sẽ so sánh hai ngôn ngữ Typescript vs JavaScript, để xem chúng khác nhau ra sao và nên chọn ngôn ngữ lập trình nào. Nhắc lại về TypeScript TypeScript làm một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Microsoft. Cha đẻ của TypeScript là Anders Hejlsberg, một kiến trúc sư trưởng (Lead Architect) của ngôn ngữ C# và là cha đẻ của ngôn ngữ lập trình Delphi và Turbo Pascal. Tuyển dụng lập trình Typescript lương cao 3000 USD So sánh Typescript vs JavaScript TypeScript được biết đến như một ngôn ngữ lập trình hướng đối tượng trong khi JavaScript là ngôn ngữ dựa trên prototype. TypeScript có tính năng kiểu tĩnh nhưng JavaScript không hỗ trợ tính năng này. TypeScript hỗ trợ interfaces nhưng JavaScript không có. Tính Năng TypeScript JavaScript Kiểu Dữ Liệu Cung cấp kiểu tĩnh Kiểu động Công Cụ Hỗ Trợ Có IDE và trình soạn thảo tốt Công cụ tích hợp hạn chế Cú Pháp Tương tự JavaScript, với tính năng bổ sung Cú pháp JavaScript tiêu chuẩn Tương Thích Tương thích ngược với JavaScript Không thể chạy TypeScript trong tệp JavaScript Gỡ Lỗi Kiểu mạnh mẽ giúp phát hiện lỗi Có thể cần nhiều gỡ lỗi hơn Đường Học Cần thời gian để học tính năng...

By stationd
Nâng skill lập trình PHP như thế nào?

Nâng skill lập trình PHP như thế nào?

Là một lập trình viên thì ta luôn chú ý đến năng suất của sản phẩm như phải an toàn, không bị lỗi và đương nhiên sẽ chạy nhanh. Và bài này mình sẽ đề cập đến vấn đề tối ưu code của PHP và làm thế nào để website chạy nhanh hơn. Vậy nâng skill lập trình PHP như thế nào? 1. Nắm được nguyên tắc hoạt động của trình biên dịch Có lẽ phần này thì ai cũng biết nhưng tôi nghĩ cũng nên đưa ra vì nó rất là quan trọng, và hy vọng những bạn chưa hiểu nguyên tắc hoạt động sẽ nắm bắt được. Đối với trình biên dịch một ngôn ngữ lập trình bất kỳ thì trình biên dịch luôn luôn dịch một file từ trên xuống dưới và từ trái qua phải. Giả sử bạn tạo 2 fiel a.php và b.php thì nếu bạn require b.php vào a.php thì lúc này trình biên dịch sẽ thực thi hết file b.php rồi mới dịch xuống dòng kế tiếp sau lệnh require ở file a.php . Ví dụ: File a.php: echo 'Begin file a.php<br/>'; require 'b.php'; echo 'end file a.php'; File b.php: echo 'File b<br/>'; Test nhanh kết quả sẽ là: Begin file a.php File b end file a.php Trường hợp bạn gọi tới một hàm nào đó. Nếu trong chương trình chạy đến một hàm nào đó thì nó sẽ thực thi hết nội dung bên trong hàm đó rồi mới chạy xuống dòng lệnh kế tiếp, và hàm đó bạn có thể đặc bất kỳ vị trí nào trong file PHP, không giống như JavaScript hay C++ là bạn phải khai báo phía trên nó mới hiểu. 2. Thuần thục các toán tử trong lập trình Các ngôn ngữ lập trình sẽ có...

By stationd
Viết một chatbot đơn giản với Python3

Viết một chatbot đơn giản với Python3

Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Chatbot là gì? Trước khi thò tay vào hì hục code, ta cần hiểu chatbot là gì đã? Chatbot là một chương trình thực hiện cuộc hội thoại qua phương pháp gửi nhận văn bản hoặc các object như hình ảnh, file, … Chú ý Chatbot không nhất thiết là phải thông minh, là phải dùng trí tuệ nhân tạo, etc … Có bao giờ sắp đến giao thừa hay một dịp mà bạn muốn nhắn tin cho nhiều người vào 12h đêm mà bạn không thể dậy được, hoặc bạn quá lười để làm một việc lặp đi lặp lại? Câu trả lời là viết một chatbot và hẹn giờ cho nó. Trải nghiệm lần đầu viết thư viện Python từ ngôn ngữ biên dịch Viết chatbot Trong bài viết này mình sử dụng 2 thư viện có sẵn trên mạng là fbchat , schedule do đó bạn cần tạo virtualenv trước tiên, sau đó dùng pip để cài 2 lib trên rồi tạo một file code python tùy ý, ở đây mình dùng chatbot.py . Đầu tiên, import những lib mình cần import logging import os import time from threading import Thread from fbchat import Client from fbchat.models import Message , ThreadType import schedule Sau đó tạo một class Bot kế thừa Client : class Bot ( Client ): Tạo 1 function trong class Bot để thực hiện gửi tin nhắn, dưới đây là code của mình: class Bot ( Client ): def do_something ( self ): #Đổi tên function cho phù hợp logging . basicConfig ( level = logging . INFO ) lst_id = [ ... ] # List chứa fb id của những người bạn muốn gửi for user_id in lst_id : self ....

By stationd
Phân biệt giữa Java ME, Java SE và Java EE

Phân biệt giữa Java ME, Java SE và Java EE

Bài viết được sự cho phép của tác giả Trần Hữu Cương Java ME/SE/EE là ba phiên bản khác nhau được xây dựng dựa trên nền tảng Java. Java SE(Java Platform, Standard Edition) Java SE còn được gọi là Java Core , đây là phiên bản chuẩn và cơ bản của Java, được dùng làm nền tảng cho các phiên bản khác. Chứa các API chung (như java.lang, java.util... ) và nhiều các API đặc biệt khác. Bao gồm tất cả các tính năng, đặc trưng cơ bản của ngôn ngữ Java như biến, kiểu dữ liệu nguyên thủy, Arrays, Streams, Strings, Java Database Connectivity (JDBC)… Tính năng nổi tiếng nhất của Java là JVM cũng chỉ được xây dựng cho phiên bản này. Java SE được sử dụng với mục đích chính là để để tạo các ứng dụng cho môi trường Desktop. Top 10 câu hỏi phỏng vấn Java Developer thường gặp Internationalization và Localization trong Java Java ME(Java Platform, Micro Edition) Java ME – Đây là phiên bản được sử dụng cho việc tạo các ứng dụng chạy trên các hệ thống nhúng như thiết bị mobile và các thiết bị nhỏ. Các thiết bị sử dụng Java ME thường có các hạn chế như giới hạn về khả năng xử lý, giới hạn về nguồn điện (pin), màn hình hiển thị nhỏ… Java ME còn hỗ trợ trong việc sử dụng công nghệ nén web, giúp giảm dụng lượng sử dụng (network usage) và cải thiện khả năng truy cập internet giá rẻ. Java ME sử dụng nhiều thư viện và API của Java SE và nhiều thư viện, API của riêng nó. Tham khảo việc làm Fresher Java mới nhất trên Station D Java EE(Java Platform, Enterprise Edition) Java EE là phiên bản Enterprise của...

By stationd
10 Frameworks tốt nhất hiện nay cho PHP

10 Frameworks tốt nhất hiện nay cho PHP

PHP được biết đến như một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới với sự phát triển mạnh mẽ kể từ khi xuất hiện lần đầu tiên dưới dạng 1 đoạn ngắn trong tập tin HTML. Trong thời gian này, giới lập trình viên đã bắt đầu xuất hiện nhu cầu xây dựng những websites và webapps với độ phức tạp nhất định. Điều đó đồng nghĩa với việc sẽ tốn rất nhiều thời gian cũng như công sức để hoàn tất sản phẩm từ lúc nó chỉ còn là ý tưởng. Những framework của PHP cung cấp cho các developer một giải pháp tương đối để tạo ra một hướng đi tự nhiên hơn. Trong bài viết này, chúng tôi đã cẩn thận chọn ra 10 framework cho PHP phổ biến nhất, với khả năng mạnh mẽ giúp việc phát triển Backend web trở nên thuận lợi và hợp lý hơn. Lý do nên dùng Framework PHP Đầu tiên, chúng ta hãy điểm qua những lí do quan trọng nhất mà phần lớn các developer thích sử dụng framework PHP, và cách mà những framework này tôi ưu hóa quá trình phát triển sản phẩm. Tăng tốc quá trình phát triển. Tổ chức, sắp xếp, duy trì và tái sử dụng code. Cho phép sản phẩm của bạn phát triển từng ngày, bởi những web apps chạy trên framework đều có khả năng mở rộng. Giúp bạn giảm bớt căng thẳng về vấn đề an ninh của site. Đảm bảo tính logic và khả năng trình bày nhờ đi theo khuôn mẫu MVC (Model-View-Controller) 1. Laravel Mặc dù Laravel là framework PHP mới (tung ra năm 2011), tuy nhiên theo khảo sát online mới đây của Sitepoint thì Laravel là framework được sử dụng...

By stationd
Tạo ứng dụng Java RESTful Client với thư viện Retrofit

Tạo ứng dụng Java RESTful Client với thư viện Retrofit

Bài viết được sự cho phép của tác giả Giang Phan Trong các bài viết trước chúng ta sử dụng thư viện Jersey client , OkHttp để gọi các RESTful API. Trong bài này, tôi sẽ giới thiệu với các bạn thư viện khác là Retrofit . Giới thiệu Retrofit Retrofit là một type-safe HTTP client cho Java và Android được phát triển bởi Square. Retrofit giúp dễ dàng kết nối đến một dịch vụ REST trên web bằng cách chuyển đổi API thành Java Interface . Tương tự với các thư viện khác, Retrofit giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs). Tất cả các yêu cầu GET , POST , PUT , và DELETE đều có thể được thực thi. Retrofit được xây dựng dựa trên một số thư viện mạnh mẽ và công cụ khác. Đằng sau nó, Retrofit làm cho việc sử dụng OkHttp để xử lý các request/ response trên mạng. Ngoài ra, từ Retrofit2 không tích hợp bất kỳ một bộ chuyển đổi JSON nào để phân tích từ JSON thành các đối tượng Java. Thay vào đó nó đi kèm với các thư viện chuyển đổi JSON sau đây: Gson : com.squareup.retrofit2:converter-gson Jackson : com.squareup.retrofit2:converter-jackson Xem thêm các thư viện khác: https://mvnrepository.com/artifact/com.squareup.retrofit2 Sử dụng retrofit Để sử dụng Retrofit chúng ta thực hiện các bước sau: Một class object tương ứng với JSON/ XML data. Một interface dùng để định nghĩa các các phương thức request đến API. Sử dụng Annotations để mô tả yêu cầu HTTP. Tạo một Retrofit.Builder để khởi tạo các phương thức trong interface đã được định nghĩa. 8 thủ thuật khi làm việc với Object sử dụng resting và spreading API là gì?...

By stationd
Giới thiệu IDE phổ biến trong lập trình Python

Giới thiệu IDE phổ biến trong lập trình Python

Bài viết gốc được sự cho phép của tác giả Nguyễn Chí Thức IDE là gì? IDE là viết tắt của Integrated Development Environment (môi trường phát triển tích hợp) được định nghĩa là một công cụ mã hóa giúp tự động hóa quá trình chỉnh sửa, biên dịch, kiểm thử mã nguồn và nó giúp nhà phát triển dễ dàng chạy, viết và debug code. Nó được thiết kế đặc biệt để phát triển phần mềm bao gồm một số công cụ được sử dụng để phát triển và kiểm thử phần mềm. Giới thiệu IDE phổ biến trong lập trình Python như sau: PyCharm Spyder PyDev Atom Wing Jupyter Notebook Thonny Rodeo Microsoft Visual Studio Eric Python là gì? Tổng hợp kiến thức cho người mới bắt đầu PyCharm PyCharm được phát triển bởi Jet Brains và đây là môi trường phát triển tích hợp đa nền tảng (IDE) được thiết kế đặc biệt cho Python. Đây là IDE được sử dụng rộng rãi nhất và có sẵn ở cả phiên bản trả phí và nguồn mở miễn phí. PyCharm là một IDE Python hoàn hảo với một các tính năng phong phú như tự đồng hoàn thiện code, điều hướng project nhanh, test và debug nhanh, hỗ trợ phát triển từ xa, khả năng truy cập cơ sở dữ liệu, v.v. Tính năng, đặc điểm: Điều hướng mã thông minh Đánh dấu lỗi Trình gỡ lỗi (debug) mạnh mẽ Hỗ trợ các framework phát triển web Python, ví dụ, Angular JS, Javascript Tuyển python lương cao không yêu cầu kinh nghiệm Spyder Spyder là một công cụ mã nguồn mở có sự công nhận cao trong thị trường IDE và phù hợp nhất với khoa học dữ liệu. Tên đầy đủ của Spyder là môi trường phát...

By stationd
Làm thế nào tạo instance của một class mà không gọi từ khóa new?

Làm thế nào tạo instance của một class mà không gọi từ khóa new?

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Như đã biết, trong Java để khởi tạo một instance của một class chúng ta sẽ sử dụng từ khóa new . Tuy nhiên, trong một số trường hợp chúng ta cần tạo một instance khi chỉ biết tên class hoặc private constructor hoặc không biết được số lượng tham số của constructor,… Với những trường hợp như vậy, chúng ta không thể gọi từ khóa new một cách trực tiếp mà sẽ sử dụng một số cách đặc biệt và chúng ta sẽ cùng tìm hiểu các cách giải quyết vấn đề này trong phần tiếp theo của bài viết. Sử dụng Reflection khi biết tên class Một trong những cách đơn giản và thường được sử dụng để tạo instance của một class là sử dụng kỹ thuật Reflection. Nếu bạn chưa biết về Reflection, hãy dành chút thời gian xem lại bài viết Hướng dẫn sử dụng Java Reflection . Sử dụng newInstance() khi class có constructor không có tham số và phạm vi truy cập không phải private package com.gpcoder.instance; public class Employee { private int id; private String name; public Employee() { super(); } public Employee(int id, String name) { super(); this.id = id; this.name = name; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + "]"; } } Tạo instance sử dụng newInstance(): package com.gpcoder.instance; import java.lang.reflect.InvocationTargetException; public class NewInstanceExample { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { // Get class based on the given class name Class<?> clazz = Class.forName("com.gpcoder.instance.Employee"); // Create a new instance with empty argument...

By stationd
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries

Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries

Bài viết được sự cho phép của tác giả Giang Phan Trong bài này tôi sẽ giới thiệu với các bạn cách gọi Restful web service sử dụng thư viện chuẩn java.net của Java, không sử dụng bất kỳ 3rd party libraries nào khác. Các bước thực hiện Để gọi restful web service thông qua lớp java.net chúng ta lần lượt thực hiện các bước sau: Tạo 1 java.net.URL object. Mở HttpURLConnection từ URL trên. Set các Request property cần thiết. Gửi Request data lên server (nếu có). Nhận Response từ server gửi về (nếu có). 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java 10 tips để trở thành Java Developer xịn hơn Xem thêm chương trình tuyển dụng Java lương cao trên Station D Ví dụ tạo ứng dụng Java RESTful Client sử dụng java.net Trong ví dụ này, chúng ta sẽ gọi lại các Restful API chúng ta đã tạo ở bài viết trước “ JWT – Token-based Authentication trong Jersey 2.x “. Đầu tiên, chúng ta cần gọi API /auth để lấy token và sau đó chúng ta sẽ attach token này vào mỗi request để truy cập resource. package com.gpcoder; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpClientExample { public static final String BASE_URL = "http://localhost:8080/RestfulWebServiceExample/rest"; private static String token; public static void main(String[] args) throws IOException { token = getToken(); System.out.println("token: " + token); createOrder(); retrieveOrder(); updateOrder(); deleteOrder(); } /** * @POST http://localhost:8080/RestfulWebServiceExample/rest/auth */ private static String getToken() throws IOException { // Create A URL Object URL url = new URL(BASE_URL + "/auth"); // Open a Connection HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Set the Request Content-Type Header Parameter connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Set Response Format Type connection.setRequestProperty("Accept", "application/json");...

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

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

Sử dụng thư viện Pillow (PIL Fork) để tiến hành các thao tác xử lý hình ảnh đơn giản như resize, crop, rotate… 6.1. Cài đặt PIL Vào trang web sau để download / cài đặt package PIL cho python của bạn http://pillow.readthedocs.org/en/latest/installation.html Sau khi cài đặt thì có thể sử dụng các module trong package IPL from PIL import Image 6.2. Mở file from PIL import Image im = Image.open("photo.jpg") Sau khi mở file hình thành công thì có thể thao tác trên đối tượng im . Tuyển dụng python từ các công ty hot 6.3. Ghi file Từ đối tượng Image có thể lưu file xuống máy tính bằng phương thức save(path, type) . Ví dụ: im.save('photo_new.jpg', 'JPEG') 6.4. Tạo thumbnail Sử dụng phương thức thumbnail như sau: from PIL import Image im = Image.open('photo.jpg') im.thumbnail((100, 100)) im.save('photo_thumbnail.jpg', 'JPEG') thumbnail không trả về image mới mà thực hiện trên object image đang gọi. 6.5. Các thao tác xử lý hình ảnh Tham khảo thêm thư viện PIL tại: http://pillow.readthedocs.org/en/latest/index.html << Phần 5: thao tác trên tập tin và thư mục Phần 7: Xử lý file JSON >>

By stationd
Type Query trong GraphQL với Spring Boot

Type Query trong GraphQL với Spring Boot

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết trước , mình đã giới thiệu với các bạn về GraphQL, những vấn đề mà GraphQL đã giải quyết được cho những hạn chế của RESTful Web Service. Mình cũng đã hướng dẫn sơ qua cho các bạn về cách hiện thực type Query của GraphQL với Spring Boot. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết hơn về cách hiện thực type Query này sử dụng Spring Boot các bạn nhé! Đầu tiên, mình sẽ tạo một Spring Boot project với Web và GraphQL Starter để làm ví dụ: Kết quả: Như mình đã nói trong bài viết trước, để làm việc với GraphQL, chúng ta cần định nghĩa các tập tin schema .graphqls. Mặc định thì Spring Boot sẽ scan tất cả các thư mục trong classpath src/main/resources của project để đọc các tập tin schema này. Mình sẽ tạo một thư mục tên là graphql trong thư mục src/main/resources và để các tập tin schema của GraphQL trong thư mục này. Để làm ví dụ mình đã tạo mới tập tin schema.graphqls với nội dung ban đầu đơn giản như sau: type Query { hello: String } Query này sẽ return dòng chữ “Hello World” khi chúng ta query tới! Để handle cho Query trên , chúng ta sẽ tạo mới một controller và định nghĩa một method có tên giống với tên field của type Query này, như sau: package com.huongdanjava.graphql; import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.stereotype.Controller; @Controller public class GraphQLController { @QueryMapping public String hello() { return "Hello World"; } } Như các bạn thấy, phương thức hello() đã được annotate với annotation @QueryMapping giúp cho Spring có thể scan và map tên method này với field của type...

By stationd
Giới thiệu Feign – Tạo ứng dụng Java RESTful Client không thể đơn giản hơn

Giới thiệu Feign – Tạo ứng dụng Java RESTful Client không thể đơn giản hơn

Bài viết được sự cho phép của tác giả Giang Phan Trong các bài viết trước chúng ta sử dụng thư viện Jersey client , OkHttp , Retrofit để gọi các RESTful API. Trong bài này, tôi sẽ giới thiệu với các bạn thư viện khác là Feign . Thư viện này giúp chúng ta dễ dàng hơn nữa trong phát triển ứng dụng Rest Client. Giới thiệu Feign Feign là một HTTP client cho Java, được phát triển bởi Netflix. Mục tiêu của Fiegn là giúp đơn giản hóa HTTP API Client. Tương tự với các thư viện khác, Feign giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs). Tất cả các yêu cầu GET , POST , PUT , và DELETE đều có thể được thực thi. Feign được xây dựng dựa trên một số thư viện mạnh mẽ và công cụ khác để xử lý các request/ response trên mạng bao gồm OkHttp, JAX-RS, Gson, Jackson, JAXB, Ribbon, Hystrix, SOAP, … Các bạn xem thêm các thư viện khác: https://mvnrepository.com/artifact/io.github.openfeign Feign hỗ trợ một số tính năng mạnh mẽ khác như: Error Handling, Retry, hỗ rợ default method, static method với interface trong java 8. 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java API là gì? Các nguyên tắc xây dựng Rest API Xem thêm tuyển dụng Java lương cao trên Station D Sử dụng Feign Ý tưởng của Feign tương tự như Retrofit là sử dụng interface và các annotation để định nghĩa các phương thức request đến API. Với Retrofit, chúng ta còn gặp một chút phiền phức khi phải gọi xử lý Call<Respone>. Sử dụng Feign chúng ta sẽ không thấy sự...

By stationd