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

Một vài “trick” khi sử dụng Xpath và CSS selector trong Selenium
Bài viết được sự cho phép của tác giả Vân Anh Bài viết này chia sẻ một số cách sử dụng Xpath và CSS selector để tìm một phần tử nào đó trong Selenium. Bài này khá là hữu ích đối với mình, và mình cũng hi vọng sẽ giúp ích một phần nào đó cho các bạn. Bên cạnh bài viết này các bạn cũng có thể tham khảo bài biết về các cách xác định locator của một phần tử web ở bài viết này nhé. JavaScript Executor trong Selenium Webdriver Selenium là gì? Giới thiệu chi tiết về Selenium Automation Testing 1. Theo iD ID của một phần tử được định nghĩa viết theo cú pháp Xpath là “[@id=’idName’]” nhưng theo cú pháp CSS thì nó là “#idName”/ Ví dụ phần tử div có id là ‘panel’ sẽ được diễn tả như sau: Xpath: //div[@id=’panel’] Theo CSS selector: css = div#panel 2. Theo Class: Class của một phần tử được định nghĩa theo cú pháp Xpath là “[@class=’className’]” nhưng theo cú pháp CSS nó được định nghĩa là “.className”. Ví dụ một phần tử div với class là ‘panelClass’ sẽ được diễn tả như sau: Theo Xpath locator: //div[@class=’panelClass’] Theo CSS selector: css=div.panelClass Đối với những phần tử có nhiều class thì cần tách riêng những class đó bằng cách sử dụng dấu cách (“ “) trong Xpath, và sử dụng dấu chấm (“.”) trong CSS. Các bạn xem ví dụ phía dưới này nhé: Theo Xpath locator: //div[@class=’panelClass1 panelClass2′] Theo CSS selector: css=div.panelClass1.panelClass2 3. Một số thuộc tính khác Để lựa chọn một phần tử theo một số thuộc tính bất kì nào đó của nó, (ví dụ: một phần tử div có thuộc tính name, hay thuộc tính type của một phần tử input) ta...

Muốn phát triển AI cần nuôi dưỡng được niềm đam mê
AI – Trí tuệ nhân tạo xưa và mồi lửa thiên, địa, nhân AI của thế hệ xưa Nếu như bạn có cơ hội tiếp xúc với máy tính từ những năm 1990, có lẽ AI chỉ được hiểu như là những đối thủ trong trò chơi điện tử, với những phương thức lập trình vô cùng đơn giản và nhàm chán, nhưng lại là một phần trò cười trong trò chơi đó. Giả dụ như phiên bản Mario trong trò chơi điện tử 4 nút (Nintendo Entertainment System – N.E.S), những con rùa xanh và những con quái vật nâu chỉ biết đi qua đi lại để cố tỏ ra nguy hiểm. Đó chính là bộ mặt điển hình của AI thời điểm đó. Thế rồi những phim “bom tấn” Hollywood cố tô vẽ một ước mơ, một khát khao cháy bỏng của con người là biến những trò cười trong trò chơi điện tử kia thành những cỗ máy khổng lồ, siêu thông minh, và có phần đáng sợ như trong Ma Trận (Matrix), Kẻ Hủy Diệt (The Terminator). Khi đó, máy tính biết suy nghĩ độc lập, đưa ra quyết định, trợ giúp hoặc trở thành kẻ thù của con người. Bộ phim khắc họa AI thông minh và hủy diệt. Trước đây người ta chỉ có thể sử dụng trí tưởng tượng để khắc họa nên những cỗ máy như thế, nhưng nay không thể nói rằng những gì trên phim ảnh là hoàn toàn tưởng tượng được nữa. Những cỗ máy hiện thời đang trở nên vô cùng thông minh một cách đáng kinh ngạc. Vậy điều gì đã khiến AI trở nên tiến bộ vượt bậc trong thập kỷ qua để tiến hóa từ những con rùa xanh thành những sản phẩm “Powered by...

Hướng dẫn viết Theme WordPress toàn tập phần 2
Bài viết được sự cho phép của tác giả Trần Anh Tuấn Ở bài trước chúng ta đã setup mọi thứ và cũng xem qua Design luôn rồi. Hôm nay chúng ta sẽ bắt đầu viết theme WordPress và phần đầu tiên đó chính là Header và Banner của Design. Các hình ảnh-icons trong Design mình đã lấy toàn bộ và upload lên Drive các bạn có thể nhấn vào đây để tải về để sử dụng trong quá trình viết theme WordPress nhé. # Setup cơ bản Trước khi đi vào công việc chính thì các bạn cần cài một số Plugins sau để hỗ trợ cho việc viết theme WordPress nhé. Những plugins đó là Advanced Custom Fields , Custom Post Type UI , SVG Support . Tiếp theo các bạn mở file style.css lên các bạn xóa hết code đi, chỉ để lại phần ghi chú thôi sau đó vào trang này copy đoạn code reset CSS rồi dán vào file style.css là được. Lúc này file style.css sẽ trông như thế này. Về reset CSS là gì các bạn có thể tìm hiểu nó tại đây nha. /*! Theme Name: Maker Theme URI: http://underscores.me/ Author: Underscores.me Author URI: http://underscores.me/ Description: Description Version: 1.0.0 ...... */ /*reset css below*/ reset css paste here Tiếp theo các bạn mở file functions.php lên và copy các dòng dưới đây dán vào dưới cùng. Những đoạn code này có chức năng cho phép chúng ta thêm class vào vào thẻ li , hay thẻ a trong Menu mà tí nữa chúng ta sẽ làm thông qua hàm wp_nav_menu. /*Adding class to menu item - li tag */ function add_menu_list_item_class($classes, $item, $args) { if($args->list_item_class) { $classes[] = $args->list_item_class; } return $classes; } add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3); /*Adding class to link menu...

Điều gì nói một trang web có UX tốt trên mobile
Sau kết quả nghiên cứu hơn 199 giờ, lấy ý kiến trên một lượng lớn user ở Mỹ, mời họ về công ty của Google, gửi feedback rồi nhận tiền, Google đã tổng hợp một danh sách các điều mà user cho là site này ngon UX tốt trên mobile nói một cách quạch tẹc ra là trải nghiệm của người sử dụng trang web, đánh giá là site chúng ta ngon , dễ đớp như ăn bánh. Download toàn bộ kết quá đánh giá Call-to-action: đặt ngay giữa, trên cùng ✅ Những call-to-action (user vào đây để làm cái gì là chính, tương tác hay sử dụng nhất) nằm ngay giữa, vừa vào thấy luôn. Các thao tác kém quan trọng hơn có thể đưa vào menu hoặc cuộn xuống để xem 🤬 Phung phí phần hiển thị đập vào mặt user đầu tiên bằng cái hình vớ vẩn, nút “Learn more” chả mấy tác dụng Giữ menu ít mà chất ✅ Bọn user xài mobile rất lười cuộn lên cuộn xuống để tìm cái menu nào đó Lúc nào cũng chừa đường về nhà ✅ Nếu bạn không cho click vào cái logo để quay về trang chủ, bạn không phải người ở hành tinh chúng tôi Quảng cáo dạng popup đừng cướp hết sàn diễn ✅ Quảng cáo thì cũng vừa vừa chứ đừng cướp hết cả nội dung trang web 🤬 Một trong những tính năng yêu thích của bọn marketing làm đau lòng user, popup, popup, popup Tìm kiếm ✅ Ô search lồ lộ ngoài mặt tiền 🤬 Ô search ẩn sâu trong menu collapse Kết quả search User không rảnh đi vòng vòng để kiểm tra kết quả tìm kiếm có đúng không. Tự đồng điền câu tìm kiếm, sửa lỗi chính tả, gợi...

DataGrip: Công cụ quản trị cơ sở dữ liệu hiện đại
Bài viết được sự cho phép của blogchiasekienthuc.com Chào các bạn, trong các bài viết trước mình đã giới thiệu tới các bạn một số những công cụ UI (công cụ giao diện đồ họa) được sử dụng để làm việc với các hệ quản trị cơ sở dữ liệu rất hay. Có thể kể đến như MySQL Workbench, SQL Server Management Studio (SSMS) hay gần đây nhất là Navicat … Nhưng sẽ là rất thiếu sót nếu như mình không đề cập đến DataGrip – một công cụ đến từ JetBrains với những tính năng có thể nói là rất mới và “ăn đứt” các công cụ cùng chức năng khác. "Làm PM, theo anh không cần biết về code, nhưng phải hiểu về SQL, database, những khái niệm cơ bản của code" 26 công cụ và kỹ thuật trong Big Data có thể bạn chưa biết Trong khuôn khổ bài viết hôm nay mình sẽ cùng các bạn cài đặt công cụ này trên hệ điều hành Windows 10 và thực hiện kết nối đến hệ quản trị cơ sở dữ liệu MySQL. #1. Hướng dẫn cài đặt DataGrip mới nhất + Bước 1: Đầu tiên các bạn download file cài đặt tại đây: https://www.jetbrains.com/datagrip/download/#section=windows Hiện tại thì DataGrip hỗ trợ cả ba hệ điều hành phổ biến nhất hiện nay là Windows, macOS và Linux. Ở trong bài hướng dẫn này mình sẽ cùng các bạn cài đặt DataGrip trên hệ điều hành Windows 10 nhé. Sau khi download các bạn chạy file cài đặt (file *.exe ) để bắt đầu quá trình cài đặt như hình bên dưới. + Bước 2: Các bước cài đặt cũng tương tự như khi cài đặt các phần mềm khác của JetBrains. Đầu tiên các bạn bấm Next như hình...

Lombok là gì? Sinh code tự động trên Eclipse – Intellij
Bài viết được sự cho phép của tác giả Trần Hữu Cương 1. Lombok là gì? Lombok là một thư viện Java giúp tự sinh ra các hàm setter/getter, hàm khởi tạo, toString… và tinh gọn chúng. Thực tế thì hầu hết các IDE hiện này đều hỗ trợ sinh code tự động ví dụ như trên eclipse ta click chuột phải vào file cần sinh code và chọn Source và chọn các method cần sinh r Tuy nhiên với những class có nhiều thuộc tính thì việc hiển thị các hàm getter/setter hay các hàm toString sẽ khiến cho class bị rối. Lombok sinh ra chính là để khắc phục những điểm đó. Ví dụ class không sử dụng lombok và class có sử dụng lombok: 2. Cài đặt Lombok Để sử dụng các annotation của Lombok ta cần sử dụng thư viện lombok: Sử dụng maven: <dependency > <groupId > org.projectlombok </groupId> <artifactId > lombok </artifactId> <version > 1.16.20 </version> <scope > provided </scope> </dependency> Hoặc download file lombok-1.16.20.jar Project Lombok là gì? Getter, Setter và Constructors với Project Lombok Sử dụng Lombok để rút gọn code trong Java Cài đặt plugin lombok cho IDE Với Intellij: vào File/Settings/Plugins và nhập lombok ở ô tìm kiếm và click install. Với Eclipse: ta click vào file lombok-1.16.20.jar hoặc chạy lệnh java -jar lombok-1.16.20.jar Trên giao diện cài đặt lombock, ta click button “Specify Location” và trỏ tới file eclipse.exe Sau khi cài đặt thành công ta sẽ thây lombok xuất hiện trong phần about của eclipse. Tuyển dụng lập trình viên Java lương cao 3. Code ví dụ với lombok Đầu tiên là với annotion @Getter @Setter sẽ giúp sinh ra các method getter/setter Ngoài cách dùng annotation @Getter @Setter trước các field ta có thể dùng trước class...

BrSE Cần Học Công Nghệ Gì?
Bài viết được sự cho phép của tác giả Nguyễn Văn Trọng Câu hỏi đặt ra : học công nghệ đó để làm gì (nghe quen quen kiểu “làm từ thiện để làm gì”). Nếu học vì đam mê, yêu thích nó thì mình không bàn tới. Phạm vi bài viết này chỉ giới thiệu xu hướng công nghệ đang hot với BrSE ở thời điểm hiện tại và vài năm tới (ở Nhật), tức là dù không mê hay thậm chí …ghét cay ghét đắng cũng nên học. Mình sắp xếp theo 3 mảng : Maintain, Migartion, Development. 5 Ngộ nhận về nghề BrSE Những Tố Chất Cần Thiết Của BrSE Maintain Hiện tại các hệ thống quản lý nội bộ công ty – quản lý khách hàng thuộc các domain như y tế, giáo dục, ngân hàng … đang lạc hậu trầm trọng về mặt tính năng, tính tương thích nhưng để làm mới là việc quá rủi ro vì hệ thống quá lớn đã được vận hành hàng thập kỷ. Khách hàng Nhật có tính chắc ăn trong mọi việc nên thường họ chọn cách làm maintain hệ thống cũ, tức là làm mới giao diện người dùng, thêm 1 vài tính năng mới… Có nhiều ngôn ngữ nhưng 3 loại phổ biến nhất mà BrSE theo mảng maintain cần nắm. Java Khỏi cần nói nhiều vì Java quá phổ biến. Cobol Ngôn ngữ cũ ríc này hiện nay vẫn chưa tắt thở vì 1 lợi thế quá lớn về mặt performan. Và các hệ thống to đùng hầu hết tầng bên dưới đều dùng anh này. VB Một trong những ngôn ngữ lập trình hướng đối tượng ra đời sớm nhất, và được ứng dụng rộng rãi trong nhiều hệ thống quản lý nội bộ công...

Python free variable
Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Python có 2 loại variable (biến): local, global, và free (đếm từ 0, tất nhiên). Xem thêm nhiều việc làm Python hấp dẫn trên Station D binding x = 42 trong Python đọc là bind name x tới object 42. Tham khảo thêm tại bài Python call by gì? 3 loại variable trong Python global variable Đoạn code sau print ( x ) x = 42 x viết sát lề, gọi là global variable. Chạy đoạn code trên sẽ hiện ra exception: NameError : name 'x' is not defined do code dùng x trước khi x được bind tới object 42. local variable Đoạn code tiếp theo, chạy sẽ thấy gì? Gợi ý: không phải NameError: def foo (): print ( x ) x = 42 foo () x = 42 nằm trong 1 block (trong thân function hay class), gọi là local variable. Trong 1 block, dùng 1 variable/name trước khi bind nó (tức là có bind, nhưng bind sau khi dùng), exception sẽ xảy ra là UnboundLocalError : local variable 'x' referenced before assignment free variable def foo (): print ( x ) foo () Xóa x = 42 trong ví dụ phần local, ta chạy đoạn code này, lại thấy NameError. NameError : name 'x' is not defined Lần này không xảy ra UnboundLocalError, do đoạn code không bind x = 42 trong thân function (block). x ở đây là một free variable. Free variable hoạt động theo cách … rất tự do. Khi không tìm thấy x trong foo, Python sẽ đi tìm x ở global (bên ngoài function foo). x = 42 def foo (): print ( x ) x = 96 foo () x = 100 Màn hình sẽ hiện ra 42...

Những điều không thể bỏ lỡ của F8 Facebook ngày đầu tiên
F8, hội nghị developer hàng năm do Facebook tổ chức, đang được tiến hành. Bắt đầu sự kiện với Mark Zuckerberg cùng câu nói đùa ám chỉ F8 khác – phần thứ 8 của the Fast and the Furious franchise: The Fate of the Furious. Có vẻ Facebook đang sharing hastag với Vindiesl and Co cho sự kiện năm nay, một tình huống có lẽ sẽ thật sự hấp dẫn nếu họ mời được The Rock tham gia sự kiện để…..bình luận về những breakthrought trong trí tuệ nhân tạo và machine learning . Tất nhiên là Facebook chả bao giờ làm thế. Một sai lầm đáng tiếc. Zuck lại tiếp tục dọa rằng ông sẽ bắt mọi người nghe cho hết bản manifesto dài tới 6 ngàn dòng để bắt đầu cho sự kiện, may thay đó chỉ là lời đùa khi ông tóm tắt khá ngắn gọn trong khi vẫn cười hóm hỉnh. AR Studio: AR platform cho camera của bạn Zuckerberg nhanh chóng lấy lại phong độ và thể hiện đúng chất của một CEO và co-founder Facebook khi ông bắt đầu nói về AR. Zuck bày tỏ mong muốn “mở rộng tính vật lí trong thế giới online” và hỏi mọi người rằng “Có biết bao nhiêu thứ trong cuộc sống quanh ta vốn không cần đến những tác động vật lí”, trong khi màn hình phía sau ông hiện lên một thế giới ảo về cờ vua, hoặc là xem TV. Tại Facebook, Zuckerberg cho biết nhóm đang tập trung phát triển 3 tính năng sử dụng của AR: Hiển thị thông tin Add vật “ảo” vào cảnh thật từ hình và video Khả năng enhance những vật thu được trong camera Sử dụng một công nghệ gọi là SLAM (simultaneous localization and mapping) –...

SOLID – Đã đến lúc cần thay đổi bản thân
Người viết: Quách Đại Phúc Có thể trong quá trình làm việc với người thông minh chú ý quan sát thì chỉ cần vài tháng, nhưng với những người kém thông minh hơn hay lười hơn thì phải mất cả năm để nhận ra code mình có vấn đề và Bốc mùi đến như thế nào, rõ ràng việc code sạch đẹp, dễ maintain nó cũng như cách sống vậy, có người gọn gàng ngăn nắp, người thì bừa bộn, luộm thuộm (Mình không nói những bạn code không sạch là bừa bộn nhé cái này chỉ là ví dụ). Mình tự nhận là người khá ngăn nắp nhưng code thì không sạch (chán). Và mình nghĩ cũng đã đến lúc chúng ta cần tự trau chuốt lại cả cách sống và cách code nếu chúng ta còn tiếp tục muốn sống sót được trong cái nghề mà mỗi ngày càng có nhiều người giỏi hơn, thông minh hơn chúng ta xuất hiện. Chúng ta không thể thông minh, nhanh nhẹn hơn họ được nhưng bù lại chúng ta có sự chỉn chu và những kinh nghiệm xương máu. Để tự thanh lọc mình trong việc code mình bắt đầu lang thang đi tìm những design patterns, Principles … thứ mà những anh hùng đi trước để lại cho hậu thế. Mình đã tìm hiểu DDD, DI …tuy nhiên thấy chúng khá khó hiểu và gây lú (vì mình già rồi chăng). Và nguyên lý SOLID xuất hiện trong quá trình tìm kiếm, đọc … ồ mình nên bắt đầu từ đây, nó khá dễ hiểu, có nhiều người đã áp dụng và chia sẻ trước đây rồi. Tại sao mình lại không chứ. Đầu tiên hãy cùng bắt đầu thanh lọc cơ thể bằng những khái niệm cơ bản...

Những thư viện và framework của JavaScript mà bạn không thể bỏ qua
JavaScript đã tồn tại hơn 20 năm, và là một trong những ngôn ngữ không ngừng phát triển. Ngôn ngữ này gần đây trải qua giai đoạn tăng trưởng rất nhanh, và liệu các kỹ thuật JavaScript cho front-end nổi bật hiện nay sau vài năm nữa có còn được chú ý nữa không. Tuy nhiên, quan trọng là luôn dẫn đầu cuộc chơi bằng cách sử dụng những công nghệ những công cụ và framework mới nhất cho việc phát triển tốt hơn. Bài viết này sẽ giúp bạn khám phá những thư viện và framework của JavaScript bạn nên cân nhắc học ngay bây giờ. Tuyển dụng Javascript lương cao cần gấp Giới thiệu Môi trường JavaScript đã trở nên khổng lồ. Nó có hệ sinh thái của riêng nó với thư viện, frameworks, công cụ, các quản lý package và các ngôn ngữ mới để biên dịch ra JavaScript. Thật thú vị, npm, là một trình quản lý package thực thụ cho JavaScript, cũng là một software registry lớn nhất của thế giới. Đây là một đoạn trích từ một bài viết xuất bản trên Linux.com vào tháng 1 năm 2017. Với hơn 350,000 packages, npm registry chứa gần như hơn gấp đôi package registry phổ biến tiếp theo (Apache Maven). Thực tế, hiện thời nó là package registry lớn nhất thế giới. 8 tháng nhanh chóng trôi qua, và hiện giờ có 500,000 packages trong npm registry. Là một sự tăng trưởng khủng khiếp so với những package repo khác. Nguồn: ModuleCounts.com Làm lập trình front-end , bắt kịp với những công cụ và thư viện JavaScript thực sự rất quan trọng. Khi một công nghệ trở nên phổ biến, nhu cầu sẽ tăng cao, lần lượt sẽ xuất hiện nhiều công việc lập trình hơn...

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
Dù đang là sinh viên hay đã làm việc trong ngành công nghệ thông tin về mảng lập trình web thì những gì mình sắp giới thiệu dưới đây đều là những kỹ năng thiết thực và quan trọng để bạn trở thành 1 lập trình viên frontend tốt hơn cũng như giúp bạn tìm 1 công việc phù hợp ưng ý được dễ dàng khi hầu hết các công ty đều yêu cầu các kĩ năng này khi tuyển dụng. Lập trình viên frontend là gì? Trong các bài viết trước, mình đã giới thiệu đến các bạn 7 hướng đi của 1 lập trình viên web cũng như lộ trình trong sự nghiệp lập trình viên web cho những ai còn đang phân vân chưa biết mình nên trở thành 1 frontend , backend hay devops thì hôm nay mình chỉ tập trung nói về lập trình viên frontend. Chúng ta bắt đầu thôi: Để bạn có cái nhìn rõ hơn mình xin giới thiệu sơ về mảng lập trình web 1 chút, cơ bản gồm 2 phần chính, với yêu cầu những kỹ năng, kiến thức công nghệ khác nhau: frontend sẽ là thứ người dùng tương tác trực tiếp (user interface – giao diện người dùng) và backend là những gì đằng sau nó và làm cho 1 website hoạt động. Tóm lại, frontend sẽ chăm sóc ‘client-side’, còn backend chính là ‘server-side’. Nếu ví von 1 trang web như cơ thể người thì HTML sẽ là khung xương, phần cơ bản nhất. Để cơ thể vận động được cần có cơ và gân, hay để 1 dynamic web chạy cần có JavaScript và các ngôn ngữ lập trình khác. Cuối cùng để xem cơ thể đó xấu hay đẹp cần da thịt đắp lên hay...