Lập Trình
Duyệt các bài viết được gắn thẻ Lập Trình
1677 bài viết

Generate public key và private key sử dụng class KeyPairGenerator trong Java
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Thuật toán mã hoá RSA sử dụng một cặp public key và private key để hiện thực cơ chế bảo mật. Public key dùng để mã hoá thông tin và private key được sử dụng để giải mã thông tin và ngược lại. Java cung cấp cho chúng ta một số class để làm việc với thuật toán RSA nằm trong package java.security. Trong bài viết này, mình hướng dẫn các bạn cách sử dụng class KeyPairGenerator của Java Security để generate một cặp public key và private key để sử dụng các bạn nhé! Tuyển dụng lập trình Java lương cao 10 Java Web Framework tốt nhất 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java Mình sẽ tạo một main class để làm ví dụ như sau: package com.huongdanjava.javaexample; public class Example { public static void main(String[] args) { } } Đầu tiên, các bạn cần khởi tạo đối tượng KeyPairGenerator sử dụng phương thức static getInstance() với thuật toán RSA và kích thước 1024 hoặc 2048 như sau: KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048); Sử dụng phương thức generateKeyPair () của đối tượng KeyPairGenerator, các bạn sẽ generate được một cặp public key và private key, thông tin được chứa trong đối tượng KeyPair: KeyPair keyPair = kpg.generateKeyPair(); Từ đối tượng KeyPair này, các bạn có thể lấy đối tượng chứa public key và private key như sau: Key pub = keyPair.getPublic(); Key pvt = keyPair.getPrivate(); Các bạn có thể lấy thông tin định dạng của public key và private key như sau: Key pub = keyPair.getPublic(); System.out.println("Public key format: " + pub.getFormat()); Key pvt = keyPair.getPrivate(); System.out.println("Private key format: " + pvt.getFormat()); Kết quả của mình khi chạy...

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

Giới thiệu JMS – Java Message Services
Bài viết được sự cho phép của tác giả Giang Phan Trong cuộc sống để có thể hiểu nhau thì chúng ta cần phải trao đổi thông tin với nhau, chúng ta có thể trao đổi thông tin bằng cách nói chuyện trực tiếp, qua điện thoại, email, zalo, skype, facebook, … Trong phần mềm, các component của chương trình hoặc các chương trình trong một hệ thống cũng cần trao đổi thông tin với nhau để có thể chạy đồng nhất, việc trao đổi thông tin này thông qua message (tin nhắn). Trong Java, nó cung cấp một số API cho phép các ứng dụng Java có thể tạo, gửi, nhận và đọc các message. Các API này gọi JMS (Java Message Service) API. Tìm việc làm Java mới nhất lương up to 2000 USD Giới thiệu JMS Message là gì? Message (Tin nhắn) là một phần thông tin. Nó có thể là một text, XML, JSON hoặc một Entity (đối tượng Java), … Message là dữ liệu rất hữu ích để giao tiếp giữa các hệ thống khác nhau. Messaging là gì? Messaging (nhắn tin) là việc trao đổi thông tin giữa các thành phần khác nhau trong cùng một hệ thống hoặc các hệ thống khác nhau. Nó có thể xảy ra theo cách đồng bộ hoặc không đồng bộ. Ưu điểm của nhắn tin là khả năng tích hợp các nền tảng khác nhau, làm giảm tắc nghẽn hệ thống, tăng cường khả năng mở rộng và nâng cao độ tin cậy gửi nhận tin. Có 2 mô hình nhắn tin: P2P (Point to Point) và Pub/Sub (Publisher/ Subscriber). JMS là gì? Java Message Service (JMS) API là một phần của đặc tả kỹ thuật Java Enterprice Edition (Java EE), là một API trung gian hướng...

Quy trình 3 bước trong Machine Learning và hàm chi phí
Bài viết được sự cho phép của tác giả Kien Dang Chung Video trong bài viết Trong Phần 1: Dự đoán doanh thu phim với Hồi quy tuyến tính , chúng ta đã được làm quen với Machine Learning và thuật toán Hồi quy tuyến tính (Linear Regression). Các bài học ở phần 1 mới chỉ mang tính chất giới thiệu, để bạn đọc có thể hiểu sơ lược xem Machine Learning là gì? khi áp dụng vào các bài toán thực tế nó đem lại kết quả ra sao? 9 hiểu lầm "ngớ ngẩn" về machine learning Chia sẻ cơ bản sử dụng machine learning để giải quyết bài toán. Quy trình 3 bước trong Machine Learning Bạn có nhớ trong bài toán dự đoán doanh thu bằng Linear Regression chúng ta đã sử dụng thuật toán được cài đặt sẵn trong thư viện Scikit-learn . Nhưng chúng ta không đi sâu vào Machine learning diễn ra như thế nào? Theo hoạt động học tập thông thường, chúng ta cần đưa dữ liệu vào máy tính và nó có thể trả lời các câu hỏi của chúng ta. Cách máy tính học là chúng nhìn ra các mối quan hệ trong dữ liệu. Quay lại với Linear Regression, chúng ta tìm hiểu xem máy đã học như thế nào? Trước hết, chúng ta cùng đến với quy trình 3 bước trong Machine Learning và sau đó sẽ áp dụng vào một thuật toán cụ thể. Bước 1: Đưa ra dự đoán (đưa ra một giá trị bất kỳ đầu tiên). Bước 2: Tính toán các sai lệch dựa trên dự đoán và dữ liệu đầu vào Bước 3: Máy học, điều chỉnh dự đoán ban đầu và quay về với bước 1. Phần tiếp theo có liên quan đến...

UI UX là gì? Công việc của một UX/UI designer
UI UX là gì ? – UX UI Design là một ngành khá hot và có tiềm năng rất lớn trong thời đại công nghệ số ngày nay. Vậy bạn có từng tự hỏi rằng công việc của một UX/UI designer là như thế nào? Một UX UI Designer thì phải có những tính cách hay tố chất như thế nào? Người làm UX UI Design sẽ phối hợp với những chức năng khác như thế nào? Bài viết này sẽ giải đáp những câu hỏi đó. UX UI là gì? UX (User Experience) và UI (User Interface) là hai khái niệm quan trọng trong lĩnh vực thiết kế và phát triển ứng dụng, trang web và các sản phẩm số. UX là gì? UX (User Experience – Trải nghiệm người dùng) : Đây là khái niệm liên quan đến cách mà người dùng tương tác với sản phẩm của bạn và cảm nhận về trải nghiệm đó. Mục tiêu chính của UX design là đảm bảo người dùng có trải nghiệm dễ sử dụng, hiệu quả và thỏa mãn khi sử dụng sản phẩm của bạn. Điều này bao gồm việc xem xét về cách mà sản phẩm được tổ chức, cách thức tương tác của người dùng với sản phẩm, và cảm xúc mà họ có sau khi sử dụng sản phẩm đó. UI là gì? (User Interface – Giao diện người dùng) : UI là phần của sản phẩm mà người dùng tương tác trực tiếp. Điều này bao gồm các yếu tố như nút bấm, hình ảnh, biểu đồ, màu sắc, kiểu chữ, và mọi thứ mà người dùng có thể nhìn thấy và chạm vào khi sử dụng sản phẩm. Mục tiêu của UI là tạo ra một giao diện thẩm mỹ, dễ nhìn, dễ...

Chỉ sau 4 tháng đọc FreeCodeCamp, tôi đã là một full-stack developer
Bài viết được biên dịch từ lời chia sẻ của một web developer đến từ miền Nam Châu Âu nhận được gần 13k lượt xem trên FreeCodeCamp Xin chào tất cả anh em đang quan tâm đến câu hỏi làm thế nào để trở thành một lập trình viên, Tôi là một gã khờ 33 tuổi vừa được nhận vào vị trí full-stack developer lần đầu tiên trong cuộc đời sự nghiệp của tôi. Tôi thấy cần chia sẻ những kinh nghiệm quý giá này trên FreeCodeCamp – nơi đã giúp tôi thực hiện giấc mơ này. Việc nghiền ngẫm tất cả những chia sẻ của những người đi trước đã giúp tôi có động lực rất nhiều trên hành trình gian nan này. Kẻ thất bại có “học thức” Hành trình sự nghiệp của tôi những năm đầu đời quả không mấy tốt đẹp. Dù có trong tay tấm bằng đại học chuyên ngành xã hội học và tờ giấy chứng chỉ IT, tôi vẫn không thể kiếm cho mình một công việc tử tế. Thậm chí lúc cuộc khủng hoảng kinh tế đang diễn ra, tôi còn suýt phải đi đặt tờ rơi ở cửa kính trước của ô tô để kiếm sống. Cuối cùng, sau nhiều tháng ngập trong vô vọng, tôi chấp nhận làm việc tại một văn phòng bán bất động sản giá rẻ với mức lương bèo bọt vì không muốn tiếp tục phụ thuộc tài chính vào ba mẹ. Thời gian trôi qua, công ty này trở nên tồi tệ hơn tôi nghĩ. Bất chấp sự đầu tư chăm chỉ vào công việc, mức lương không hề nhúc nhích, môi trường làm việc ngày càng xuống cấp, cũng chẳng tồn tại sự phát triển chuyên sâu về kiến thức nào cả. Tôi đã...

Hai kiểu lập trình viên
Bài viết được sự cho phép của tác giả Huy Trần Luôn có hai dạng lập trình viên, một dạng luôn nắm vững lý thuyết, dạng còn lại thì không. Những người nắm vững lý thuyết thì luôn có năng suất làm việc cao hơn hẳn những người không học lý thuyết, vì không phải tốn thời gian để thử sai (trial and error), cũng không cần tốn thời gian tra cứu lại kiến thức. 10 câu nói cực hay về lập trình 10 Kỹ năng quan trọng cần có của Front-end để tìm công việc dễ dàng hơn Một ví dụ đơn giản về CSS, chúng ta có class .gift-image có thuộc tính top = 10px , và chúng ta muốn class này có thuộc tính top = 0 trên các thiết bị có màn hình nhỏ hơn 600px : .gift-box { .gift-image { & .openned { position : absolute; top : 10px ; ... } } @ media (max-width: 600px) { .gift-image { top : 0 ; } } } Nhưng đoạn code trên sẽ không chạy, và trên mobile, class .gift-image vẫn có thuộc tính top = 10px . Một frontend developer không nắm vững kiến thức sẽ fix vấn đề trên như sau: @ media (max-width: 600px ) { .gift-image { top : 0 !important ; } } Hoặc tốn 10 phút để search Google với một vấn đề không liên quan: position absolute top not change in media query . Ngược lại, một frontend developer nắm vững kiến thức về CSS specificity [1] [2] sẽ fix vấn đề trên một cách dễ dàng mà không cần dùng tới !important : @ media (max-width: 600px ) { .gift-image .openned { top : 0 ; } } Và thậm chí còn đạt tới cảnh giới code xong...

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...

10 nguyên tắc lập trình nền tảng mà lập trình viên nào cũng cần biết
Bài viết được sự cho phép của tác giả Lưu Bình An Nhớ thời đại học quá nên ôn lại kiến thức vỡ lòng mấy bạn ơi Nếu bạn là người theo chủ nghĩa viết code sao cho chạy được là đủ , bạn không nên đọc bài này. Còn mục tiêu là viết code và đặt cái tâm vào những gì mình viết ra thì bạn nên biết các nguyên tắc nền tảng này. KISS Nguyên tắc Keep it simple, stupid được áp dụng cho rất nhiều thứ trong cuộc sống, rất cần thiết cho các dự án từ vừa tới lớn. Từ lúc bắt đầu code những dòng đầu tiên, chúng ta phải khắc cốt ghi tâm câu đơn giản nhất có thể , code càng phức tạp càng khó viết và đọc lại, càng có khả năng phát sinh bug, càng khó chỉnh sửa sau này. Cụ Antoine de Saint-Exupery có phán câu này: Hoàn hảo không phải là khi không còn gì để thêm vào nữa, mà là không còn gì có thể bỏ bớt DRY Nguyên tắc vàng mà chúng ta nghe mãi nghe mãi. Don’t repeat yourself , không bao giờ để chuyện code chổ này giống hệt chổ kia, copy-paste một đoạn code ở nhiều chổ trong source. Nếu thấy một đoạn code mà cứ viết đi viết lại ở nhiều nơi trong source, người ta sẽ đánh giá trình bạn còn non và xanh lắm Up up mở mở (Open/Closed) Biết có thể viết thêm các tính năng bổ sung thoải mái, nhưng không được chỉnh sửa core chính. Cái này có thể lấy ví dụ bạn lấy những package trên npm , nó nằm trong node_modules , sẽ không được chỉnh sửa gì ở đó hết, nếu lỡ sau này người...

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...

Lộ diện những “nhân vật” đầu tiên góp mặt tại Vietnam Web Summit 2020 | VWS2020
Trước khi Agenda VWS2020 chính thức được công bố, cùng điểm qua danh sách “sneak peek” những đại diện đầu tiên góp mặt trong đội ngũ Honored Speakers năm nay. Liệu bạn có đoán được chủ đề các chuyên gia sẽ chia sẻ tại VWS2020 là gì? Mr. LÊ YÊN THANH – CEO, Founder @BusMap Được mệnh danh là “Chàng trai vàng trong làng tin học” , anh Lê Yên Thanh từng từ chối lời mời làm việc tại Google Singapore và trở về Việt Nam khởi nghiệp. Hiện tại. anh đồng thời là CEO, Founder của BusMap và cũng là Co-founder của Elefos.io. Ở vai trò của một “full-stack developer”, anh Thanh với những kỹ năng và kinh nghiệm xoay quanh công việc Software Development, đặc biệt về coding, thuật toán và giải quyết những vấn đề phức tạp, mục tiêu của anh là trở thành một “excellent programmer”, là người tạo ra những thay đổi tích cực cho đời sống. 2. Mr. PHAN NGUYỄN MINH TRƯỜNG – Technical Architect @NashTech Anh đang là Principal Software Engineer tại NashTech Limited với thâm niên hơn 7 năm tính đến hiện tại. Anh Phan Nguyễn Minh Trường với lịch sử kinh nghiệm dày dặn ở vị trí “đương đầu” cùng các con số như Lead một đội ngũ vận hành BI cho khối Banking ACB trong hơn 6 năm. Anh đã thử sức ở nhiều lĩnh vực outsourcing: Media supply chain, Payment gateways, Supplier Information & Supply Chain, Insurance, Finance, Human Resources, Real Estate. 3. Mr. HOÀNG MINH DƯƠNG – Managing Director @AppROI Với những kiến thức anh Hoàng Minh Dương đã “tích lũy” trong hơn 8 năm làm việc trong lĩnh vực Digital Marketing tại những công ty công nghệ lớn như Lazada, VNG, Shopee… anh có được những góc...

Cách sử dụng Laravel với Socket.IO
Tác giả: Adnan Sabanovic Websockets thật sự rất hữu ích nếu bạn muốn xem các hoạt động tại realtime của user (hoặc có một số queue job). Đừng nên ngại từ “ Websockets ”. Tôi sẽ đưa ra một số hướng dẫn về cách sử dụng nó và sẽ giải đáp thắc mắc của bạn khi cần. “Tại sao không dùng Pusher?” Có một vấn đề, đó là trong Laravel đã có cả Pusher. Mặc dù Pusher là một giải pháp “Plug and Play” khá nhanh nhạy, bản thân nó cũng có khá nhiều giới hạn. Check https://pusher.com/pricing . Và hầu hết các tutorial đều lừa bạn bằng thumbnail “Ứng dụng Websockets” nhưng thật ra cũng chỉ quăng cho bạn Pusher mà thôi. (Và phần mà tôi thấy buồn cười nhất là khi họ nói bạn có thể chuyển sang socket.io một cách dễ dàng). “Chúng ta cần có lượng connection vô giới hạn.” Đúng vậy, chúng ta hoàn toàn không muốn lo lắng về giới hạn. Bắt đầu từ việc dùng vagrant / homestead. Để có cái này bạn cần phải đọc về Event Broadcasting . Có những thứ cần lưu ý ở đây (để tôi không phải nhắc lại phía sau nữa): Giao diện ShouldBroadcast cho các Event Kích hoạt các Broadcast routes và sử dụng routes/channels.php cho những user xác thực. Public Channel — Ai cũng có thể nghe Private Channel — User phải được xét duyệt nếu muốn join vào group Presence — Tương tự như Private nhưng bạn có thể xem khá nhiều meta data ngoài trên đó và có một list những người đã tham gia bằng channel.broadcastOn() Event method. Tạo Event php artisan make:event MessagePushed Bạn có thể xem các ví dụ cụ thể trong tài liệu về Event Broadcasting. Cài Redis Trước...