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

Cách vận hành của Flexbox

Cách vận hành của Flexbox

Flexbox hứa hẹn sẽ giải cứu chúng ta khỏi những rắc rối đến từ CSS thuần (như tính năng vertical alignment chẳng hạn). Tuy nhiên, để thuần thục model mới này là 1 thách thức không hề dễ dàng. Tác giả: Scott Domes Hy vọng, các hình ảnh minh họa dưới đây sẽ giúp bạn hiểu rõ cách hoạt động của Flexbox, từ đó sử dụng Flexbox để build các layout tốt hơn. Nguyên tắc cơ bản của Flexbox là tạo các layouts linh hoạt và trực quan. Để thực hiện được điều này, Flexbox sẽ để các containers tự quyết định cách phân bố đều “đứa con” của chính containers – bao gồm kích thước và khoảng cách giữa các containers. Về nguyên tắc nghe thì khá hay nhưng hãy xem trên thực tế ra sao nhé! Chúng tôi đi sâu phân tích 5 properties Flexbox phổ biến nhất: chức năng của chúng, cách bạn sử dụng các properties và kết quả thu được là gì. Property #1: Display: Flex Đây là ví dụ webpage của chúng tôi: Bạn có 4 thẻ với 4 màu và 4 kích thước khác nhau nằm trong 1 thẻ container xám. Hiện tại, mỗi thẻ được mặc định display: block . Mỗi square chiếm đầy bề rộng line của mình. Để khởi động với Flexbox, bạn cần biến container thành 1 flex container . Rất đơn giản! #container { display: flex; } Không có nhiều thay đổi – các thẻ của bạn đã được hiển thị theo hàng. Nhưng đằng sau đó, bạn đã hoàn thành 1 công việc cực kì “quyền lực”. Bạn đã cho các ô vuông của mình 1 thứ gọi là flex context. Bây giờ, bạn có thể bắt đầu định vị chúng trong context đó – công việc...

By stationd
So sánh lợi hại giữa WordPress vs Static site

So sánh lợi hại giữa WordPress vs Static site

Bài viết được sự cho phép của tác giả Lưu Bình An Chúng ta cùng nhau điểm qua cái hay, cái dở của từng thằng để nghiền ngẫm xem nó phù hợp trong trường hợp nào. 11 cách tăng tốc nhanh cho WordPress bằng file wp-conig.php Gatsby.js: Cách thiết lập và sử dụng React Static Site Generator Sếp cũ hôm rồi liên lạc hỏi “em có biết công ty nào nhận làm Gatsby không, anh muốn làm một cái static site cho công ty”, cái blog này bạn đang đọc cũng được viết bằng Gatsby, một static site generator, với developer thì static site không xa lạ, nhưng để trả lời có công ty nào nhận làm static site thì mình ko biết, đa phần người ta sẽ dùng một CMS nào đó như WordPress, để đảm bảo có admin cho bạn vào quản lý. WordPress không có gì sai, mình làm wordpress khoảng hơn 3 năm, cũng tự viết theme, tự viết plugin, mình vẫn xài WordPress một số trường hợp. Tuy nhiên static site mấy năm trở lại đây được quan tâm nhiều hơn trước kia vì những lợi ích mà nó mang lại. Static site là gì, nói nôm na là một website chỉ bao gồm html/css/javascript không có database, nó sẽ được build từ file markdown, dùng một số tool phổ biến để build như Jekyll Hugo next.js gatsby gitbook nuxt vuepress mkdocs Static Site Thế mạnh Tốc độ Tốc độ hiển thị nội dung của trang sẽ rất nhanh, nếu không muốn nói là nhanh nhất trong tất cả các “thể loại” website. User có thể chấp nhận một website giao diện ko cần pixel perfect (designer có thể không), nhưng sẽ không tha thứ cho một website load lâu hơn rùa bò. Không cần...

By stationd
HTTP là gì? Các khía cạnh cơ bản của HTTP

HTTP là gì? Các khía cạnh cơ bản của HTTP

Liệu HTTP là gì? Có lẽ điều quen thuộc nhất khi chúng ta bắt gặp khi sử dụng trình duyệt để truy cập Internet chính là HTTP. Chắc các bạn cũng đã biết khi thấy 1 địa chỉ web đều bắt đầu với http:// hay https://. Hôm nay qua bài viết này, Station D sẽ giới thiệu cho các bạn về những điều cơ bản nhất của HTTP nha. HTTP là gì? HTTP là từ viết tắt của Hyper Text Transfer Protocol nghĩa là Giao thức Truyền tải Siêu Văn Bản được sử dụng trong www . HTTP là 1 giao thức cho phép tìm nạp tài nguyên, chẳng hạn như HTML doc. Nó là nền tảng của bất kỳ sự trao đổi dữ liệu nào trên Web và cũng là giao thức giữa client (thường là các trình duyệt hay bất kỳ loại thiết bị, chương trình nào) và server (thường là các máy tính trên đám mây). 1 doc hoàn chỉnh được tái tạo từ các doc con khác nhau được fetch – tìm nạp, chẳng hạn như văn bản, mô tả layout, hình ảnh, video, script v..v.. HTTP status code là gì? Danh sách đầy đủ HTTP status code Http Methods: thất tinh bắc đẩu trận Ảnh mô tả việc fetching 1 trang web. Nguồn: Mozilla Được thiết kế lần đầu từ những năm 90, HTTP là 1 giao thức có thể mở rộng vốn đã phát triển dần theo thời gian. 1 giao thức lớp ứng dụng được gửi thông qua nền tảng TCP/IP , hay qua 1 kết nối TCP được mã hóa TLS. Mặc dù về mặt lý thuyết, bất kỳ giao thức truyền tải đáng tin cậy nào cũng có thể được sử dụng. Nhờ vào khả năng mở rộng của nó, HTTP...

By stationd
Thuật toán là gì? 11 thuật toán hàng đầu dành cho lập trình viên

Thuật toán là gì? 11 thuật toán hàng đầu dành cho lập trình viên

Xã hội hiện tại đang chứng kiến một cuộc cách mạng to lớn trong lĩnh vực công nghệ. Những phát minh mới liên tục được cập nhật. Thường thì nguồn gốc của những phát minh này là từ những chương trình gạo cội có khả năng chi phối và thao túng các xu hướng công nghệ đang diễn ra. Trong số đó không thể không nói đến mã hóa và thuật toán, được sử dụng để phát triển các chương trình cạnh tranh như vậy. Vì thế, đối với một chương trình thành công và có tầm ảnh hưởng, việc khai thác một thuật toán tốt nhất đúng và chính xác là điều tất yếu. Sau đây cùng tìm hiểu thuật toán là gì và 11 thuật toán hàng đầu được sử dụng rộng rãi trong lập trình và phát triển web. Thuật toán là gì? Thuật toán là gì? Thuật toán (Algorithm) hay còn được gọi là giải thuật là một tập hợp các bước được xác định rõ ràng, có thể thực hiện được bằng máy tính để giải quyết một vấn đề hoặc thực hiện một phép tính. thuật toán luôn tường minh và thực hiện các hành động cụ thể từng bước một để mang lại kết quả tối ưu nhất. Dễ hiểu hơn, thuật toán là cách giải một bài toán bằng chương trình máy tính. Thuật toán được sử dụng rộng rãi trong nhiều lĩnh vực của công nghệ thông tin (IT). Trong toán học, lập trình máy tính và khoa học máy tính, thuật toán thường đề cập đến một quy trình nhỏ giải quyết một vấn đề lặp đi lặp lại. Thuật toán cũng được sử dụng như các đặc tả kỹ thuật để thực hiện xử lý dữ liệu và đóng...

By stationd
Tất tần tật về Java

Tất tần tật về Java

Mọi người cùng xem qua những nội dung hay nhất về Java, đây sẽ là một nguồn tại liệu cực kỳ quý giá dành cho hành trang của bất kỳ lập trình viên Java nào. Dưới đây là tổng hợp 20 công cụ Java tốt nhất cho Developers bạn có thể tham khảo: 1) JUNIT: JUnit là một công cụ kiểm tra mã nguồn mở cho ngôn ngữ lập trình Java . Đây là công cụ quan trọng để phát triển và triển khai dựa trên thử nghiệm. Đặc trưng: JUnit cung cấp hỗ trợ để viết và chạy thử nghiệm Nó cung cấp các chú thích để xác định các phương pháp test Cung cấp các xác nhận để thử nghiệm kết quả dự kiến JUnit cho phép viết mã nhanh hơn, giúp tăng chất lượng Liên kết tải xuống: http://junit.org/junit4/ 2) NETBEANS: NetBeans là IDE nguồn mở MIỄN PHÍ. Nó cho phép phát triển các ứng dụng máy tính để bàn, thiết bị di động và web. Đặc trưng: Nó cung cấp hỗ trợ đầy đủ cho Công nghệ Java mới nhất Hỗ trợ chỉnh sửa mã nhanh & thông minh quá trình quản lý dự án dễ dàng & hiệu quả Phát triển giao diện người dùng nhanh chóng Giúp viết mã không có lỗi NetBeans IDE cung cấp hỗ trợ vượt trội cho các nhà phát triển C / C ++ và PHP NetBeans IDE có thể được cài đặt trong bất kỳ HĐH nào hỗ trợ Java, từ Windows đến Linux đến các hệ thống Mac OS X Download link: https://netbeans.org/downloads/index.html 3) Maven Apache: Apache Maven là một phần mềm công cụ quản lý dự án. Nó dựa trên khái niệm Mô hình đối tượng dự án (POM). Đặc trưng: Đơn giản thiết lập dự...

By stationd
Cảm ơn Vim, mình đã dừng code bằng VS Code.

Cảm ơn Vim, mình đã dừng code bằng VS Code.

Tác giả: Nguyễn Hữu Đồng Trước tiên, cảm ơn a Nguyễn Ngọc Thịnh đã giới thiệu cho mình một code editor rất là tuyệt vời, sau khi học sử dụng Vim, mình đã không thể quay lại dùng VS Code. Trước tiên, mình sẽ nếu một số điểm mạnh của vim(neovim) so với vs code. Tốc độ code : Thực sự thì khi đã quen với vim thì tốc độ code của bạn sẽ lên một tầm cao mới, copy, paste, search, replace code, comment code, tất cả đều bằng phím tắt cả. Navigation : Navigate giữa các dòng, đầu dòng cuối dòng cực kì nhanh với phím tắt, chuyển giữa các file, search file rất nhanh Nhẹ : vim rất nhẹ, mình có cảm giác khi code với vscode thì con mac air của mình không thể thở nổi, quạy quay như máy cày, nhưng khi code với vim, mình không gặp trường hợp đó, nó rất nhẹ, đôi khi còn không thể nghe tiếng quạt chạy All in terminal : code với vim mình không cần phải switch qua lại giữa vscode với terminal nữa, tất cả trong terminal, kết hợp với iTerm2 nữa thì thật là tuyệt vời. Navigate, tạo mới, tắt, thay đổi khoảng cách giữa các tab đều bằng phím tắt. Nhanh hơn dùng chuột 96,69 lần. Kho plugin cực kì đầu đủ và nhẹ nhàng : nếu bạn cần màu sắc màu mè, highlight như vscode đã có vim-monokai-pro , muốn autocomplete đã có coc-nvim , muốn show sidebar đã có scrooloose/nerdtree , muốn fuzzy search đã có fzf , muốn comment code đã có tpope/vim-commentary và còn rất nhiều nữa, các bạn có thể tìm tại đây vim-awesome.com . Khác biệt : giữa một rừng các thanh niên code bằng vscode, bản thân...

By stationd
9 CSS animation mới “mãn nhãn” cho các project

9 CSS animation mới “mãn nhãn” cho các project

Sau cả ngàn project thì chắc chắn anh em cũng muốn có một cái gì đó nhìn cho đẹp đẹp, cho mát mắt. Level sử dụng phức tạp đi kèm với load animation đẹp thì đỉnh không còn gì bằng! Giới thiệu cho anh em source 9 bộ CSS animation “sịn sò” để apply vào product của mình. Một số animation bên dưới interactive được, chỉ cần rà chuột và click vào nhé. 1. Loading indicator “sịn” (chỉ trên CSS)   See the Pen Oddly satisfying loading indicator (CSS only) by eight ( @eight ) on CodePen . 2. CSS animation ảo See the Pen Oddly satisfying CSS Only animation by eight ( @eight ) on CodePen . 3. “ Mờ mờ nhân ảnh”… 4. Loading style Lửa trại  See the Pen campfire by ByteKnight ( @byteknight ) on CodePen . 5. Style pastel dots See the Pen growing pastel dots by Rachel Smith ( @rachsmith ) on CodePen . 6. Lines cầu vồng See the Pen Rainbow lines by ByteKnight ( @byteknight ) on CodePen . 7. Style thôi miên See the Pen Mesmerizing by xposedbones ( @xposedbones ) on CodePen . 8. Animation Test See the Pen Animation Test – Creeper Lines animated by xposedbones ( @xposedbones ) on CodePen . 9. Style “Musical background” theo rà chuột   See the Pen Musical background on mousemove by ByteKnight ( @byteknight ) on CodePen . Hi vọng rằng tất cả các animation “độc” trên sẽ tiếp thêm động lực cho anh em là project. Sáng tạo là một phần rất quan trong trong công việc của chúng ta và nó cần một ít thời gian mỗi ngày để phát triển thêm nữa!💆 Responsive HTML bằng một dòng CSS Một số đơn vị CSS có thể bạn...

By stationd
Kiến trúc JVM – kiến thức không thể bỏ qua

Kiến trúc JVM – kiến thức không thể bỏ qua

Bài viết được sự cho phép của tác giả Kiên Nguyễn Đã là lập trình viên Java thì không thể không biết về JVM (Java Virtual Machine). Một chương trình Java sẽ được biên dịch ra byte code và thực thi với JRE (Java runtime environment) JVM là gì? Định nghĩa JVM 10 điều mọi nhà phát triển ứng dụng Android nên biết về kiến trúc Architecture Xem thêm nhiều việc làm Software Architect hấp dẫn trên Station D 1. WORA – HAHA Tất nhiên, chỉ WORA là có nghĩa WRITE ONE, RUN ANYWHERE. Một chương trình Java sau khi viết có thể chạy ở khắp mọi nơi. Chính Virtual Machine đã giúp ta điều này. Tất cả các class Java đều được compiler thành byte code, quẳng cho JVM thực thi. 2. JVM Architecture Diagram Cái wth gì đây vậy?. Rối bùi nhùi lên thế!. Rất xin lỗi bạn đọc, những ai chưa từng tìm hiểu về kiến trúc JVM. Thề, mới đầu mình nhìn hình cũng ngộp cmn luôn. Ngáo ngơ bm. Tuy nhiên, sau khi chia nhỏ thành các components để tìm hiểu và liên kết lại với nhau, kiến trúc JVM lại không quá phức tạp và khó hiểu. Hãy cùng tìm hiểu chứng năng và mục đích của từng components nhé. 3. Trời, vậy nó hoạt động như thế nào? Như hình vẽ ta thấy 3 cục to to, đó chính là ba thành phần cơ bản nhất của JVM. Với tên như sau: Class Loader Subsystem Runtime Data Area Execution Engine Nhìn thì rối rắm nhưng JVM thực chất được chia thành 3 components chính. Kiến trúc này tương đương với kiến trúc “xay thịt heo”. Cũng 3 bước thuận theo lẽ tự nhiên. Class Loader Subsystem – chuẩn bị thịt (cạo lông, thui,)....

By stationd
Sử dụng Alternate Exchange trong RabbitMQ

Sử dụng Alternate Exchange trong RabbitMQ

Bài viết được sự cho phép của tác giả Giang Phan Khi một Message đến Exchange, nếu không tìm thấy Queue nào phù hợp cho Message, Message sẽ tự động bị hủy. RabbitMQ cung cấp một tiện ích mở rộng AMQP được gọi là Alternate Exchange , để collect các Message không thể gửi được trước khi chúng bị huỷ. Chúng ta sẽ biết được cách làm việc và cài đặt của Alternate Exchange trong bài viết này. Sử dụng binding Exchange to Exchange trong RabbitMQ Sử dụng Dead Letter Exchange trong RabbitMQ Flow của một Message trong Alternate Exchange Alternate Exchange được định nghĩa để collect các Message không thể gửi được (rejected/ discarded/ unrouted) trước khi chúng bị huỷ. Bất kỳ 4 loại Exchange: Direct, Fanout, Topic, Headers có thể được chỉ định như một Alternate Exchange cho một Exchange khác thuộc bất kỳ loại nào. Tuy nhiên, ta nên sử dụng Fanout Exchange như một Alternate Exchange vì nó chuyển tiếp tin nhắn vô điều kiện. Để chỉ định một Alternate Exchange cho một Exchange GPCoder.AltTopicExchange , chúng ta chỉ cần thêm arguments: alternate-exchange =” GPCoder.AltFanoutExchange ” cho GPCoder.AltTopicExchange . Khi đó GPCoder.AltFanoutExchange trở thành một Alternate Exchange cho GPCoder.AltTopicExchange . Flow của một Message trong Alternate Exchange: Một Producer publish một Message đến source Exchange với một routing key dựa trên loại của Exchange. Trong trường hợp này là GPCoder.AltTopicExchange . Một Fanout Exchange ( GPCoder.AltFanoutExchange ), được chỉ định là một AlternateExchange cho GPCoder.AltTopicExchange . Nếu một Message có routing key match với bất kỳ routing key pattern nào mà Queue đã binding với GPCoder.AltTopicExchange , thì Message sẽ được chuyển đến Queue match đó. Nếu không match với bất kỳ routing key pattern nào, khi đó Message sẽ bị reject. Theo mặc định của...

By stationd
Build một ứng dụng Chat cho Android & iOS bằng Contus Fly như thế nào?

Build một ứng dụng Chat cho Android & iOS bằng Contus Fly như thế nào?

Biên dịch: Dương Đình Tuấn “Thành công của mỗi ứng dụng chat khác nhau về những chức năng riêng biệt mà nó có” – Vậy thì đâu là những tính năng đáng chú ý, thứ mà bạn mang vào trong chính ứng dụng chat của mình? Cuộc chiến giữa các nhà cung cấp ứng dụng chat luôn ở mức cao trào! Khi chúng ta hầu như đều nhận ra rằng các ứng dụng nhắn tin tự động đã thay đổi cách giao tiếp, thông qua việc sử dụng các smartphone. Thói quen sử dụng smartphone đang tăng dần trong tất cả lĩnh vực và nó cũng cho thấy rằng số lượng người dùng nhắn tin qua ứng dụng chat đang phát triển mạnh, lên đến 2,48 tỷ người dùng trong năm 2021. Những thống kê này hoàn toàn là một dấu hiệu tốt cho các doanh nghiệp có khát khao và chuyên gia kinh doanh đối với việc đem ứng dụng chat ngay sau đây của bạn vào thị trường này. Nhưng, làm sao để làm ra ứng dụng chat iOS/Android lung linh của bạn với khả năng đánh bại những gã khổng đã làm ứng dụng này trước đây? Contus Fly, một giải pháp chat thời gian thực (real-time) hiện có mặt tại các doanh nghiệp có quy mô lớn và các công việc liên quan đến công nghiệp khác, để làm ra ứng dụng chat riêng cho họ, cách làm này phù hợp với bất kỳ giải pháp trò chuyện nào. Giải pháp chat hiện đại này được trang bị các tính năng và công nghệ có một không hai để làm tăng trải nghiệm. Tìm việc làm android hấp dẫn online tại nhà Tuyển dụng ios lương cao cho bạn up to 30M Điều gì làm cho...

By stationd
PyUnit – Kiểm thử tự động

PyUnit – Kiểm thử tự động

Bài viết được sự cho phép của vntesters.com Python ngay từ đầu không phải là một công cụ kiểm thử tự động mà là một ngôn ngữ lập trình . Vậy làm thế nào để có thể tạo ra được các kịch bản kiểm thử tự động trên ngôn ngữ Python. Câu trả lời cho vấn đề này là thư viện unittest của Python. 10 sự thật thú vị về ngôn ngữ lập trình Python 11 tip học Python dành cho các “newbie” Python unittest, đôi khi còn được gọi là PyUnit , là một nền tảng kiểm thử (testing framework), được phát triển từ JUnit dành cho Python. Một nền tảng kiểm thử trên một ngôn ngữ lập trình được thiết lập để cho ngôn ngữ lập trình biết phương thức nào là phương thức kiểm thử (testing method), lớp nào là lớp kiểm thử (testing class), kết quả như thế nào là đúng (Passed), như thế nào là sai (Failed)…. Từ khoá chính trong PyUnit testcase: Từ khoá này được dùng để mô tả cho Python biết lớp đang tương tác là một lớp kiểm thử. Ex: class A(unittest.TestCase): setup: Từ khoá này được dùng bên trong một lớp kiểm thử. Nó dùng để tạo một phương thức, và phương thức này sẽ được chạy trước khi thực thi mã trong phương thức kiểm thử (Pre-condtion). Ex: def setUp(self): teardown: Từ khoá này được dùng bên trong một lớp kiềm thử. Nó dùng để tạo một phương thức, và phương thức này sẽ được chạy sau khi thực thi mã trong phương thức kiểm thử (Post-condition). Ex: def tearDown(self): Ở mức độ cao hơn, chúng ta sẽ có setUpClass() , tearDownClass() , setUpModule() và tearDownModule() với mực độ thực thi ở cấp độ lớp và module Chúng ta...

By stationd
3 cách undo hoặc loại bỏ commit cơ bản: Reset, Revert và –amend

3 cách undo hoặc loại bỏ commit cơ bản: Reset, Revert và –amend

Bài viết được sự cho phép của tác giả Lê Chí Dũng Khi bạn vừa thêm một commit vào git tree , và chợt nhận ra commit vừa rồi bị sai, không hoàn chỉnh hoặc có vấn đề, bạn sẽ muốn “undo” commit hoặc loại bỏ nó. Ở đây mình sẽ giới thiệu 3 cách undo commit hoặc loại bỏ commit cơ bản: RESET, REVERT VÀ –amend Git Reset git reset là một lệnh mạnh mẽ trong Git cho phép bạn quay lại trạng thái trước đó của project. Git reset được sử dụng để di chuyển HEAD (con trỏ chỉ đến commit hiện tại) đưa nhánh hiện tại về một commit cụ thể trong lịch sử. Nhảy HEAD về vị trí trước, khi commit sai bằng git reset như sau: git reset --hard HEAD^ Ở đây có vài điểm cần lưu ý: HEAD^ có ý nghĩa giống với HEAD~ hay @^ , nghĩa là quay về trước 1 commit Muốn quay về trước n commit , VD 5 commit thì có thể thay bằng HEAD~5 . git reset --hard|soft HEAD~2 -> Quay về trước 2 commit so với HEAD. --hard có nghĩa là bỏ commit đi và bỏ cả những thay đổi chưa được commit trong working space . Khi này môi trường sẽ hoàn toàn “sạch sẽ” như thời điểm trước khi commit. --soft có nghĩa là bỏ commit đi nhưng giữ nguyên những thay đổi chưa được commit trong working space . --soft hữu dụng khi bạn muốn giữ lại những thay đổi chưa commit cho lần commit tiếp theo. Git Revert git revert là một lệnh Git được sử dụng để tạo ra một commit mới nhằm đảo ngược thay đổi của commit trước đó. Không giống như git reset , git revert không thay đổi...

By stationd