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

Sử dụng aria trên site eCommerce, vấn đề accessibility cần quan tâm
Accessible là một thuật ngữ ít bạn làm web quan tâm, không có nghĩa là nó không tồn tại, cùng tham khảo những aria nào cần bổ sung cho trang ecommerce aria là gì ARIA (Accessible Rich Internet Applications) là một attribute trên thẻ HTML, chúng ta gắn thẻ nào cũng được, nội dung này thông tin và tác dụng của thẻ element đó. Với user bình thường thì nó sẽ không có ý nghĩa mấy, nhưng với người sử dụng web thông qua một thiết bị đọc màn hình (cho những người khiếm khuyết) thì nó vô cùng quan trọng. <div aria-label="button click me">Click Me</div> Một vài aria phổ biến aria-label và aria-labelledby Chức năng tương tự như attribute alt của thẻ <img/> , nhưng có thể gắn cho bất kỳ element nào. <button aria-label="menu" class="hamburger" > </button> Thay vì thêm aria-label trực tiếp, aria-labelledby trỏ đến id một element khác để làm label <span id="rg-label"> Drink options </span> <div role="radiogroup" aria-labelledby="rg-label" > ... </div> role Không bắt đầu bằng aria , dùng để khai báo công dụng của từng element search banner presentation toolbar status menuitem log dialog link <div src="questionmark.png" role="tooltip" /> aria-live Thông báo đến user ngay khi nội dung bên trong element gắn thuộc tính này có thay đổi. Có 2 giá trị có thể thêm cho thuộc tính aria-live : polite , assertive polite : user không cần tương tác gì, nội dụng tự động cập nhập bởi server, ví dụ như bài viết mới được push lên assertive : user thực hiện một tương tác làm thay đổi giá trị nào đó, ví dụ như tăng số lượng sản phẩm muốn mua aria-owns Nó cung cấp thông tin “tui là ba của đứa bé”. Trường hợp nào chúng ta cần dùng? Ví dụ...

Xây dựng phương thức với thuộc tính methods trong Vue instance
Bài viết được sự cho phép của tác giả Kien Dang Chung 1. Tại sao cần có phương thức trong thuộc tính method? Trong lập trình, chúng ta thường gặp các thuật ngữ hàm (function – có trả về dữ liệu), thủ tục (procedure – chỉ thực thi một số công việc), phương thức (method là hàm hoặc thủ tục gắn với class). Các khái niệm này rất cần thiết do mấy lý do: Thứ nhất nó giúp mô đun hóa trong ứng dụng, xây dựng các khối code không phải lặp đi lặp lại, giảm kích thước ứng dụng, dễ quản lý mã nguồn hơn. Thứ hai, nó giúp định nghĩa cấu trúc logic của ứng dụng. 10 kinh nghiệm khi làm việc với các dự án lớn viết bằng Vue.js API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Như vậy, với việc sử dụng các method trong Vue.js giúp tạo ra các function Javascript (trong Javascript hàm và thủ tục là một và là function). Trong Vue instance có thể khai báo nhiều các phương thức trong thuộc tính methods. Với cú pháp {{ }} cho phép một biểu thức Javascript bên trong nhưng chỉ được duy nhất một câu lệnh đơn và nếu có quá nhiều logic nằm dải rác khắp ứng dụng khiến cho việc duy trì mã nguồn là rất khó khăn. Phương thức trong thuộc tính methods của thực thể Vue có thể đưa vào các logic hoặc những công việc như lấy dữ liệu từ một nguồn ở xa… Ví dụ về việc sử dụng biểu thức Javascript <!DOCTYPE html> < html > < head > < title > Ví dụ về phương thức trong Vue.js - allaravel.com </ title > < link rel = " stylesheet " href = " https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css "...

Lập trình web cơ bản với PHP (P2)
Bài viết được sự cho phép của smartjob.vn Lập trình web cơ bản với PHP – Giải thích một số thuật ngữ Thế nào là lập trình hướng đối tượng? Để học lập trình web cơ bản với PHP, trước hết nên hiểu việc lập trình hướng đối tượng (OOP) là gì. Với nhiều sinh viên, đó là khái niệm khá trừu tượng, khó hiểu, khiến họ khó nắm bắt được PHP hay các ngôn ngữ khác. Tuy nhiên nếu bạn đã hiểu bản chất của nó thì công việc lập trình của bạn sẽ trở nên đơn giản hơn rất nhiều. Lập trình hướng đối tượng là phương pháp viết mà cho phép người lập trình nhóm các action tương ứng vào các class. Việc này khiến cho mã lệnh có thể giữ vững nguyên lý DRY – don’t repeat yourself (không lặp lại chính nó) và dễ dàng hơn trong việc bảo trì. Xem thêm nhiều việc làm PHP lương cao trên Station D Nguyên lý DRY có rất nhiều lợi ích, một trong số đó là nếu 1 phần thông tin bị thay đổi thì bạn chỉ cần một thay đổi để cập nhật lại mã lệnh. Biến và hằng Biến Là vùng nhớ dữ liệu tạm thời, giá trị của biến có thể thay đổi được Được bắt đầu bằng ký hiệu $, sau đó là một từ hoặc một cụm từ viết liền hay gạch dưới Biến được bắt đầu bằng 1 ký tự hoặc dấu gạch dưới “_” Tên biến chỉ được phép chứa các ký tự từ a đến z, không được bắt đầu bằng một ký tự số, trong biến có thể viết các số từ 0 đến 9 và dầu gạch dưới Tên biến phân biệt chữ hoa và chữ thường...

Mình đã học kotlin như thế nào?: Phần 1: từ 1 dev IOS nhảy sang dev android
Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh Mình làm việc với IOS, cụ thể là dev objective-c và swift cũng được một thời gian, nên các kiến thức về IOS cũng kha khá. Một ngày đẹp trời giữa bão COVID-19, ở nhà làm việc remote, nên có nhiều thời gian để ngồi đọc và ngâm cứu các công nghệ khác hơn, mình quyết định “giao lưu” với Android 1 chút, cụ thể là Kotlin. Lý do chọn Kotlin là vì nó hao hao giống Swift, nên việc tiếp cận có vẻ dễ dàng hơn khi dùng java. Tất nhiên java vẫn được, mình cũng đã code nó trước đây. Có nên học Kotlin? Phát triển lập trình Android cùng Kotlin Đầu tiên là thằng bạn nhờ dev hộ 1 con App trên mobile, và mình tự thiết kế giao diện bằng figma như sau: Trông khá “sexy” với 1 người không chuyên designer đúng không App thì có cả IOS và android, và sau đó mình quyết định làm cho android trước. Vì cơ bản mình muốn thử sức với cái “chưa biết gì”, như tờ giấy trắng trước. Cuộc sống mà, tính mình lại thích cái mới mẻ. Vậy bên android công nghệ cái gì là “ngon” nhất bây giờ? Sau một hồi nghiên cứu, google, mình phát hiện ra “Ồ, ông google này chăm sóc dev kỹ thế ” Cụ thể như sau: Google hỗ trợ MVVM tận mồm luôn, khác với bên IOS thì chỉ tận giường thôi. Google viết hẳn ra tài liệu kiến trúc, các lớp base sẵn cho dev để họ happy hơn trong việc coding. đọc thêm tài liệu ở đây: https://developer.android.com/topic/libraries/architecture/viewmodel Mô hình kiến trúc như sau: Nhìn vào hình, ta chuyển thành cấu trúc thư mục...

Kiểu Enum trong C/C++ (Code ví dụ Enumeration trong C/C++)
Bài viết được sự cho phép của tác giả Trần Hữu Cương Kiểu Enum trong C/C++ (Code ví dụ Enumeration trong C/C++) (Xem thêm: Tự học lập trình C, C++ qua code ví dụ ) Enum là gì? Trong lập trình C/C++, Enum hay Enumeration là kiểu dữ liệu cố định, chỉ cho phép biến nhận số số giá trị nhất định nào đó. Các giá trị enum có thể coi là một hằng số. Việc sử dụng enum giúp đảm bảo giá trị các biến chỉ nhận các giá trị mong đợi. Ví dụ: Mình định nghĩa kiểu Enum là dayOfWeek và chỉ nhận các giá trị là ngày trong tuần (từ thứ 2 đến chủ nhật). Mỗi lần có tính toán tới ngày trong tuần thì mình dùng dayOfWeek sẽ giúp tránh các giá trị nằm ngoài khoảng từ thứ hai đến chủ nhât. Kiểu enum trong TypeScript: làm việc như thế nào, sử dụng ra sao 1001 Tips: Con trỏ và hàm (Pointer & Function) trong C++ Tạo Enum trong C/C++ Để tạo enum trong C/C++ ta dùng từ khóa enum với cú pháp sau: enum ten_enum { trang_thai_1: gia_tri_1, trang_thai_2: gia_tri_2,... } Ví dụ: #include<stdio.h> enum dayOfWeek { Mon= 2 , Tue= 3 , Wed= 4 , Thur= 5 , Fri= 6 , Sat= 7 , Sun= 8 } ; int main ( ) { enum dayOfWeek day; day = Wed; printf ( "Wednesday: %d n" ,day ) ; printf ( "All day of week: %d - %d - %d - %d - %d - %d - %d" , Mon, Tue, Wed, Thur, Fri, Sat, Sun ) ; return 0 ; } Kết quả: C++ tuyển dụng nhiều vị trí, lương cao, ứng tuyển ngay! Trường hợp bạn không truyền giá trị cho các trạng thái...

Tại sao phải tham gia phát triển open-source
Tác giả: Đạt Cao Mạnh Dạo quanh các trang/video nói về định hướng công việc của ngành IT cho các bạn mới ra trường ở Việt Nam. Mình thấy hầu hết con đường mà mọi người nói tới là Đi làm ở một công ty làm product hay outsource. Tích lũy đủ kinh nghiệm để lên các vị trí cao hơn. Tiếp tục học lên cao ở nước ngoài để kiếm các cơ hội làm việc quốc tế. Startup. Mỗi hướng đi đều có cái thuận lợi và khó khăn nhất định, nhưng mình chưa thấy ai nói về việc làm các project mã nguồn mở như là một con đường để phát triển cả. Mình hiện tại là commiter của Apache Solr và đã tham gia vào đóng góp cho project này được 5 năm. Hy vọng những thông tin dưới đây sẽ giúp ích được phần nào cho các bạn còn đang băn khoăn phải chọn hướng đi nào. Cơ hội công việc khi tham gia open-source Năm 2014 sau khi sử dụng Apache Solr một thời gian mình có mày mò vào page này https://lucene.apache.org/whoweare.html . Đó là danh sách những người đã và đang tham gia vào phát triển Solr (được gọi là các commiter của project đó). Tra cứu tên của họ thì thấy rằng hầu hết mọi người đều đang làm việc ở một số công ty nhất định. Như là Lucidworks, Elastic, Cloudera, Apple. Tương tự với Apache Spark thì hầu hết đều đang làm ở Databricks. Mình nhận ra rằng các project mã nguồn mở đều có một hoặc một vài công ty đứng sau nó. Giúp định hướng, tuyển dụng lập trình viên để tham gia phát triển các project đó. Điều đáng lưu ý ở đây là bất cứ ai...

Ngoại truyện: Export file tự động với Selenium webdriver
Bài viết được sự cho phép của tác giả To Thi Van Anh Tình cờ thì hôm vừa rồi mình có được một chị cùng công ty nhờ xem giúp chị ấy xem đoạn công việc của chị như thế này thì có thể automate được không. Mô tả bài toán đấy thì đại khái như thế này. Bên mình có một số các tài liệu liên quan dự án, chúng được tạo và lưu trữ online trên một hệ thống website nội bộ. Vì tình hình dự án chưa ổn định, nên nội dung trong các tài liệu có thể bị thay đổi thường xuyên. Do đó, để thuận tiện hơn cho việc theo dõi tiến độ và quản lý của mình thì chị ấy sẽ cần phải export, lưu trữ file đó trên máy tính khá nhiều lần và định kỳ, vấn đề ở đây là trên hệ thống đó có đến hàng trăm tài liệu cần được tải xuống mỗi lần. Kể cả trường hợp dù sau này có ổn định thì việc thực hiện cả đến trăm lần những thao tác tẻ nhạt và mất thời gian đó cũng làm mất khá nhiều thời gian. Nên cần một cách nào đó để giải quyết vấn đề này. Từ lời “nhờ vả” đó thì mình cũng bắt tay tìm hiểu kỹ hơn bài toán và vấn đề ở trên. Đầu tiên, kiểm tra tổng quát các bước được thực hiện trên thực tế như thế nào. Sau đó kiểm tra sơ bộ các element của các phần tử sẽ được tương tác. Tiếp đó lựa chọn ngôn ngữ, công cụ để code (ở đây tại vì mình mới làm quen với Python nên cũng muốn thử với nó xem sao, còn nếu không thì mình vẫn dùng...

Khởi Đầu Dự Án Python Như Thế Nào Để Thuận Tiện Phát Triển Lên
Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân Thỉnh thoảng mình có mối duyên ghé mắt qua các dự án Python , thấy cách sắp đặt vẫn còn chuệch choạc, không có lợi lắm cho việc phát triển tiếp diễn. Nên sau đây mình chia sẻ một số cách thức, công cụ, thư viện mà bạn nên chuẩn bị từ đầu, để công việc sau đó trở nên thoải mái hơn. Cách sắp đặt này có thể coi là chuẩn trong những năm 2020 này (nhưng có thể trở thành lạc hậu sau 5 năm nữa). 1. Quản lý các gói phụ thuộc Gói phụ thuộc (dependency) là các thư viện / công cụ bên ngoài mà dự án của bạn cần. Các gói này phải được cài trước khi phần mềm của bạn có thể chạy. Ví dụ bạn làm về khoa học dữ liệu thì sẽ cần NumPy, làm web thì sẽ cần Django v.v… Việc một dự án phụ thuộc vào hàng chục gói thư viện khác là chuyện bình thường. Thông thường các gói này sẽ được liệt kê trong file requirements.txt để khi sao chép dự án sang máy khác thì biết cần cài cái gì. Tuy nhiên, file requirements.txt chỉ là hình thức tối thiểu để quản lý gói phụ thuộc. Nó không đủ để hỗ trợ tình huống phức tạp hơn. Ví dụ dự án của bạn sử dụng thư viện A phiên bản v1 và B phiên bản v2. Sau vài tháng, nhu cầu nảy sinh, bạn cần thêm tính năng mới, và để làm tính năng mới, bạn cần đến thư viện C. Tuy nhiên thư viện C này cũng lại phụ thuộc thư viện A, và thư viện C đang có nhiều phiên bản, v1 đến...

Quy trình phát triển phần mềm
I. Tổng quan về quy trình phát triển phần mềm Một quy trình tốt và hợp lí luôn tạo ra những sản phẩm đạt tiêu chuẩn. Nó giúp tương tác hóa các hoạt động và yếu tố với nhau một các nhịp nhàng, đem lại hiệu quả. Có thể cho rằng quy trình phần mềm đem lại chất lượng, năng suất, giá thành phần phềm, từ đó tăng tính cạnh tranh và đem lại lợi nhuận cao cho doanh nghiệp. 1. Khái niệm Quy trình phát triển phần mềm Quy trình phát triển phần mềm là một tập hợp các hoạt động tổ chức mà mục đích của chúng là xây dựng và phát triển phần mềm. Những câu hỏi được đặt ra ở đâu là: Nhân sự: Ai sẽ làm? Ai làm gì? Thời gian: Khi nào làm? Làm mất bao nhiêu thời gian? Phương pháp: Làm như thế nào? Công cụ: Dùng công cụ gì để làm công việc này? Chi phí: Chi phí bỏ ra bao nhiêu? Thu về bao nhiêu? (ước tính) Mục tiêu: Mục tiêu hướng đến là gì? Mỗi loại hệ thống khác nhau thì cần những quy trình phát triển khác nhau. 2. Các hoạt động cơ bản của quy trình phát triển phần mềm Có 4 thao tác là nền tảng của hầu hết các quy trình phát triển phần mềm: Đặc tả phần mềm: Định nghĩa được các chức năng, điều kiện hoạt động của phần mềm. Quy trình phát triển phần mềm: Là quá trình xây dựng các đặc tả. Đánh giá phần mềm: Phầm mềm phải được đánh giá để chắc chắn rằng ít nhất có thể thực hiện những gì mà tài liệu đặc tả yêu cầu. Tiến hóa phần mềm: Đây là quá trình hoàn thiện các...

Tạo website với Firebase Hosting
Bài viết được sự cho phép của tác giả Khiêm Lê Ngày nay thì các trang web là một phần không thể thiếu của Internet, đến nỗi nhiều người còn lầm tưởng Website chính là Internet. Cũng dễ hiểu thôi bởi vì website hầu như là công cụ để giao tiếp với người dùng Internet hiệu quả nhất. Trong bài viết hôm nay, mình sẽ hướng dẫn các bạn cách deploy static website lên Firebase Hosting. Cùng bắt đầu thôi! Youtube Video Tạo project Firebase và thiết lập Firebase CLI Đầu tiên thì các bạn cần truy cập vào console.firebase.google.com, tạo một project mới, bạn có thể xem lại bài viết này của mình để biết cách tạo project firebase. Tiếp theo, chúng ta cần tạo project Firebase trên máy mình. Firebase là gì? Tìm hiểu tính năng và ưu nhược điểm của Firebase Để tạo được project firebase trên máy, cần sử dụng Firebase CLI, các bạn mở command line, gõ lệnh “npm install -g firebase-tools”, lưu ý là máy bạn cần phải có nodejs trước nha. Nếu bị fail, các bạn mở lại command line với quyền admin và chạy lên câu lệnh trên. Sau khi cài đặt xong, các bạn kiểm tra bằng cách chạy lệnh “firebase –version”, nếu trả ra kết quả là phiên bản Firebase CLI thì bạn đã cài đặt thành công. Lưu ý là lúc các bạn đọc blog này có thể Firebase đã có phiên bản mới nên các bạn không cần bận tâm nếu version khác mình nha. Sau khi đã cài đặt Firebase CLI rồi, chúng ta cần phải đăng nhập vào tài khoản Google đã tạo project trước đó. Các bạn chạy tiếp lệnh “firebase login”, nó sẽ hỏi bạn có muốn Firebase thu thập thông tin sử dụng,...

Một vài pattern để viết component của React cần dùng chung state
Bài viết được sự cho phép của tác giả Lưu Bình An compound component Khi gặp tình huống một component không thể đứng độc lập, mà nó buộc phải kết hợp với một component khác và cùng chia sẻ một bộ state và phương thức. Đó là lúc chúng ta cân nhắc cách viết compound component. Một ví dụ rất dễ thấy của compound component là element <select /> và <option /> , <option/> không thể đứng độc lập, nó luôn được đặt trong <select/> có thể truy xuất và gọi các phương thức tương tự như <select/> Tìm việc làm lập trình viên React Tại sao lại sử dụng compound component? Nếu bạn là người viết component, người khác sử dụng component này, các dev khác sẽ cảm ơn bạn rất nhiều. Bạn đóng gói mọi thứ logic vào bên trong component cha như vậy, người sau sẽ không cần bận tâm nữa. // parent component // xử lý event onChange, quản lý state selected value < RadioImageForm > < RadioImageForm.RadioInput /> < RadioImageForm.RadioInput /> < RadioImageForm.RadioInput /> </ RadioImageForm > Với child component của <RadioImageForm /> , để cho nó rõ ràng minh bạch là chúng ta sẽ sử dụng những giá trị cung cấp từ parent, chúng ta dùng kiểu viết <RadioImageForm.RadioInput /> export class RadioImageForm extends React . Component < Props , State > { static RadioInput = ( { currentValue , onChange , label , value , name , imgSrc , key , } : RadioInputProps ) : React . ReactElement => ( // ... ) ; onChange = ( ) : void => { // ... } ; state = { currentValue : '' , onChange : this . onChange , defaultValue : this . props . defaultValue || '' , } ; render...

Tăng trưởng thị phần nhờ phân loại khách hàng và tối ưu theo thời gian
Sau hơn 6 năm làm việc ở những công ty tăng trưởng rất mạnh mẽ, giành được nhiều thị phần trong khoảng thời gian ngắn, mình muốn chia sẻ với mọi người cách để tối ưu trải nghiệm người dùng, những hướng tiếp cận có thể áp dụng vào doanh nghiệp của mình trong thời gian tới. Mẫu số chung của những doanh nghiệp thành công là gì và làm thế nào để áp dụng vào công ty của bạn, liệu chúng ta có bị cản trở vì thiếu tiền hay chọn sai thị trường hay không? Các công ty hiện tại đang phát triển không chỉ nhờ lựa chọn đúng thời điểm, đúng thị trường mà còn vì họ làm việc một cách tối ưu hóa và rất chi tiết. Mọi thông tin và số liệu đều được cập nhật theo từng ngày. Họ làm document rất tốt, theo dõi tất cả mọi thứ rất cặn kẽ. Làm thế nào để đạt được hiệu quả khi tối ưu trải nghiệm người dùng? Trước tiên là sự khác biệt trong cách tiếp cận vấn đề. Mỗi một giai đoạn bạn sẽ được giao một ngân sách nhất định và mục tiêu là làm thế nào để với ngân sách giới hạn đó, bạn có thể tối ưu hóa hiệu quả công việc. Phân tích Business view Khách hàng từ hai nơi là Hồ Chí Minh hoặc Hà Nội mua hàng thông qua hình thức offline hoặc online (app/web). Khi mua hàng online, dữ liệu khách hàng sẽ được lưu trữ trong hệ thống Data Warehouse, lúc đó mình sẽ biết được khách hàng đã mua hàng như thế nào, tính toán được lợi nhuận so với mức chi phí đã bỏ ra. Hiện tại hầu hết các doanh nghiệp đang...