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

Awk siêu tốc
Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Nếu bạn đã biết 1 scripting language như Python hay Perl việc học AWK sẽ có vẻ hơi thừa/ hơi ngần ngại. Nhưng AWK – ngôn ngữ lập trình sinh ra từ những năm 1970 luôn có chỗ dùng, và sức mạnh đáng gờm. 10 hiểu lầm tai hại về lập trình 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 này giới thiệu các khái niệm cơ bản của ngôn ngữ lập trình AWK, một số cách dùng thông dụng, học xong có thể dùng ngay và vô cùng hữu ích với những người xử lý dữ liệu dạng cột/ bảng mà không biết Python. Các lệnh trong bài này dùng mawk vì nó được biết là nhanh hơn các bản awk khác, nhưng về tính năng cơ bản là giống nhau, người đọc dùng bản nào cũng được, VD gawk $ whatis awk awk ( 1 ) - pattern scanning and processing language Dùng trong các câu lệnh hàng ngày AWK rất thích hợp để nhét vào 1 pipe các câu lệnh UNIX, việc mà Python vốn không sinh ra để làm Ví dụ: đếm số dòng trong file /etc/passwd $ wc /etc/passwd 57 95 3193 /etc/passwd Lệnh wc vốn sinh ra để đếm: dòng, số từ, số ký tự. Bạn có thể viết 1 script Python 5-7 dòng làm chuyện này, nhưng 1 dòng? Hãy thử và nếu thành công, hãy comment! Với AWK, làm việc này không khó khăn gì. Hãy bỏ qua nếu không hiểu gì, phần giải thích sẽ theo sau $ cat /etc/passwd | mawk '{ words += NF; chars += length($0) + 1;} END { print NR, words, chars}' 57 95 3193 Một...

Tài liệu làm chủ Python trong vòng 4 tuần (Phần 2)
Python là ngôn ngữ lập trình hướng đối tượng, thông dịch, mã nguồn mở, đa mục đích và là ngôn ngữ lập trình được dùng khá phổ biến trên thế giới hiện nay. Là một ngôn ngữ có danh tiếng rất tốt trong giới lập trình, đã được sử dụng để viết nhiều chương trình phổ biến như Youtube, DropBox, Google, Instagram, và Spotify. Việc làm python lương cao cho bạn Hai lợi thế chính của Python nằm ở sự đơn giản và linh hoạt của ngôn ngữ. Với cú pháp đơn giản của nó giúp các developer dễ dàng tìm hiểu, đọc và chia sẻ. Theo một báo cáo, có tới 145.000 custom-built software package đã được tải lên cho online repository. Chúng trải dài từ nhiều lĩnh vực bao gồm từ phát triển trò chơi đến thiên văn học, và có thể được cài đặt và thêm vào một Python program chỉ trong tích tắc. Sự linh hoạt này này có nghĩa là những cơ quan tình báo có thể sử dụng nó cho hacking, Google cho thu thập dữ liệu các trang web, Pixar để tạo phim và Spotify để giới thiệu các bài hát. Một trong số các gói phổ biến nhất là “machine learning”, được dùng cho những task với các gói data số lượng lớn mà vốn sẽ bất khả thi nếu dùng sức người. Sau Phần 1 , Station D tiếp tục giới thiệu đến bạn series video “LÀM CHỦ PYTHON TRONG VÒNG 4 TUẦN” phần 2: 4. Các vòng lặp 5. Cách sử dụng một số hàm quan trọng thường gặp 6. Cách xây dựng hàm Station D sẽ tiếp tục phần tiếp theo của “series” khi bạn đã “tinh thông” Phần 2 nhé! Tài liệu làm chủ Python trong vòng 4...

CSS Clamp giải thích và ứng dụng
Bài viết được sự cho phép của tác giả Lưu Bình An 11 công cụ hữu ích để kiểm tra và tối ưu hóa các file CSS 5 điều phiền toái nhất của CSS Diễn giải Lưu ý: hàm clamp không chạy trên IE clamp ( MIN , PREFER , MAX ) ; Trong đó: MIN : là giá trị chặn dưới, nếu giá trị PREFER < MIN => return giá trị MIN PREFER : là giá trị sẽ được return nếu đang nằm trong khoản giữa MIN và MAX MAX : là giá trị chặn trên, nếu giá trị PREFER > MAX => return giá trị MAX Ứng dụng Sử dụng cho giá trị font-size body { font-size : clamp ( 1.1 rem , 1 vw + 1.1 rem , 2.5 rem ) ; } Diễn giải đoạn code chỉnh font-size không thể rắc rối hơn ở trên: “tính dùm tôi cái font size cho nó tự động to nhỏ theo màn hình, với công thức tính là 1% của viewport + 1.1rem, kết quả không được phép nhỏ hơn 1.1rem và lớn hơn 2.5rem” Kết quả nhận được Chúng ta vừa cho phép giá trị font-size linh động theo kích thước màn hình, nhưng vẫn đảm bảo nó không được quá lớn và quá nhỏ với hai giá trị chặn trên, chặn dưới. Sử dụng với thuộc tính width Nếu bạn có đam mê với typography thì thể đọc hết cuốn The element of typographic style . Ở đây mình xin trích một đoạn trong cuốn sách này: từ 45 đến 75 ký tự trên một cột là chuẩn không cần chỉnh. Áp dụng lý thuyết này ta có thể viết div { width : clamp ( 45 ch , 50 % , 75 ch ) ; }...

RxSwift 8: Tạo observable factories
Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh Trong bài 7 , chúng ta đã nghiên cứu cách dọn dẹp bộ nhớ cho các observables bằng disposing và những lưu ý để tránh rò rỉ bộ nhớ khi sử dụng chúng. 6 ví dụ để bạn yêu luôn observable "Luật 5 giây" giúp Steve Jobs thách thức mọi giới hạn sáng tạo Thay vì tạo mỗi observable để chờ đợi các subscribers đăng ký, chúng ta có thể tạo 1 factory observable sinh ra các observable cho mỗi lượt đăng ký mới của chúng. Thêm đoạn code sau: example(of: "deferred") { let disposeBag = DisposeBag() // 1 var flip = false // 2 let factory: Observable<Int> = Observable.deferred { // 3 flip = !flip // 4 if flip { return Observable.of(1, 2, 3) } else { return Observable.of(4, 5, 6) } } Tạo 1 biến đánh dấu flip gán giá trị false Tạo 1 factory observable kiểu nguyên bằng toán tử deferred Nghịch đảo flip, mỗi khi factory observable được đăng ký Trả về các Observale khác nhau tùy thuộc giá trị của flip Thêm mã sau vào sau hàm trên: for _ in 0...3 { factory.subscribe(onNext: { print($0, terminator: "") }) .disposed(by: disposeBag) print() } Kết quả như sau: --- Example of: deferred --- 123 456 123 456 Vậy ta hiểu là, mỗi lần khi ta đăng ký tới factory observable, thì ta nhận các giá trị khác nhau của chúng theo thứ tự xen kẽ nhau. Điều này để thể hiện rằng factory observable có thể tạo ra các observable khác nhau cho các subscriber. Vậy là bài hôm nay kết thúc rồi. Trong bài tiếp theo chúng ta sẽ tập trung thực hành các khái niệm chính của Rxswift. Cụ thể bài tới...

Phát triển và tận dụng Google Assistant theo nhiều cách khác nhau
Giới thiệu về Google Assistant Trợ lý giọng nói (voice assistant) và tìm kiếm bằng giọng nói (voice search) đang dần trở thành một xu hướng mới. Trong số những trợ lý ảo phổ biến nhất hiện nay thì Google Assistant là cái tên bạn không nên bỏ qua. Hiện tại, Google Assistant đang hỗ trợ hơn 19 ngôn ngữ, trên hơn 80 quốc gia và có mặt trên nhiều loại thiết bị khác nhau như các thiết bị Smart Display , các dòng điện thoại Android, Iphone, Google Home, loa thông minh,… Bạn có thể tận dụng Google Assistant để tiếp cận lượng người dùng lớn của trợ lý ảo này bằng cách tạo ra các action thông qua nền tảng Actions on Google. Bài viết sẽ hướng dẫn chi tiết về nền tảng này thông qua topic “Multiple ways to build for Google Assistant” của Ms. Jessica Dene Earley-Cha – Developer Advocate @Google tại sự kiện Vietnam Web Summit 2020 LIVE – biên tập bởi Station D. Bài viết sẽ phù hợp nếu bạn: Là một Web Content Owner , hãy tìm hiểu về Content Actions : các loại công thức, những nội dung hướng dẫn, podcast, tin tức,… Là một Android App Developer , hãy tìm hiểu về App Actions . Là một người thích tìm hiểu về công nghệ giao tiếp bằng giọng nói , hãy tìm hiểu về Conversational Actions với Interactive Canvas. Là một Hardware Developer , hãy tìm hiểu về Smart Home SDK. Google Assistant hỗ trợ người dùng, khiến đời sống và công việc trở nên hiệu quả hơn Content Action – Khiến nội dung của bạn xuất hiện trên Google Assistant Nếu bạn đã có một website, một podcast hay một danh sách công thức thì bạn có thể đưa những...

Selenium testing – Một vài kiểu có thể áp dụng
Bài viết được sự cho phép của tác giả Kiên Nguyễn Selenium testing gồm những kiểu test nào ?. Selenium có thể hỗ trợ được gì trong các loại test đó?. Tất cả sẽ có trong bài viết dưới đây. Mà khoan, nếu chưa có cái nhìn tổng quan về Selenium thì đọc bài viết “ Selenium là gì ?” trước đã nha. Biết sơ qua rồi hẵng quay lại đọc bài này thì sẽ tốt hơn. 1. Acceptance testing – Kiểm thử chấp nhận Gọi là kiểm thử chấp nhận vì đây là phần testing kiểm tra xem có đáp ứng được những gì khách hàng yêu cầu hay không? . Nếu release bản này thì khách hàng chấp nhận hay không?. Ra đi làm tất nhiên mới biết, việc đáp ứng nhu cầu khách hàng nữ . Ý lộn “ đáp ứng requirements” của khách hàn g là yếu tố tiên quyết. Tại sao?. Khách hàng trả tiền, khách hàng dùng sản phẩm. Acceptance testing trong Selenium testing chỉ nhằm mục đích trả lời cho câu hỏi: Are we building the right product?. Chúng ta có đang tạo ra sản phẩm như khách hàng yêu cầu hay không? Selenium Testing có thể giúp đỡ việc kiểm thử này như thế nào? Viết automation tescase test các function nhỏ trên từng page Viết automation testcase test flow của product Viết testcase cho logic (nếu có). Lưu ý là Acceptance testing cũng chỉ là một kiểu của Functional testing thôi nha. Giờ mới tới cái lớn nè. 2. Functional testing – Kiểm thử tính năng It checks the system at different levels to ensure that all scenarios are covered and that the system does what’s supposed to do . Kiểu kiểm thử này nhằm kiểm tra hệ thống ở nhiều...

Rx-MVVM(2): Cấu trúc project – quản lý thư viện sử dụng trong dự án
Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh Có thể bạn đã sử dụng nhiều library trong dự án IOS của mình. Vậy thường thì bạn có tạo lớp để quản lý cho dễ không? Thực tế mình cũng ít khi làm việc này, chỉ trừ mấy thư viện lớn như request server thôi. Hôm nay chúng ta sẽ học được 1 cách quản lý thư viện mà theo mình đánh giá là ổn, khá logic, clear và đáng học hỏi. Nào cũng ta cùng bắt đầu nhé! 6 project vui dành cho dev build khi chán 9 CSS animation mới "mãn nhãn" cho các project Xem thêm Việc làm Project manager hấp dẫn trên Station D AnalyticsManager Trong file này tác giả sử dụng 2 thư viện Mixpanel và FirebaseAnalytics. Thư viện Mixpanel: https://github.com/mixpanel/mixpanel-iphone Phần Readme đã mô tả rất rõ cách cài đặt, các bạn đọc và tạo thử 1 project để cài nhé. Mình nghĩ dùng pod để cài là đơn giản nhất. Chức năng: Cung cấp event tracking model tốt hơn Dữ liệu thống kê realtime – thống kê của GA thường mất hàng giờ Với GA bạn phải tạo ra các funnel trước khi thu thập dữ liệu, còn với Mixpanel bạn có thể xây dựng funnel bất cứ lúc nào. retention analytics – Cho phép đo lường lượng người dùng mới, sử dụng lại app. Nó cũng cho phép bạn xác định tần suất người dùng sử dụng app, GA không có tính năng này. Customer support: GA không cung cấp hỗ trợ người dùng chất lượng cao nếu bạn gặp lỗi và không hiểu báo cáo. Cải thiện độ chính xác dữ liệu Mobile A/B testing: Mixpanel cung cấp mobile a/b testing, dễ dàng cho người phát triển hoặc...

Substr trong php là gì? Ví dụ về substr
Anh em làm việc hoặc có một thời gian tìm hiểu về ngôn ngữ lập trình php chắc không còn lạ gì với các phương thức trong php, tuy nhiên với những anh em mới bắt đầu thì phương thức nào cũng có ví dụ, có người giải thích sẽ dễ hiểu hơn, bài viết này giải thích cụ thể và đem tới nhiều ví dụ về substr trong php . Php còn nhiều điều hay ho lắm, anh em cứ chờ đón từ từ. =))) Substr là phương thức trong ngỗn ngữ lập trình php . Cụ thể về cú pháp cũng như các ví dụ sử dụng như thế nào. Tất cả sẽ có trong bài viết này. 1. Substr trong php là gì? Đầu tiên như phía trên đã có nói qua với anh em, substr là phương thức, tức là một hàm được cung cấp sẵn trong các version của ngôn ngữ php. Chia thành 2 phần nhỏ, đầu tiên là sub , sub ở đây hiểu la một phần nhỏ của một cái gì đó lớn. Str là viết tắt của String , là chuỗi dài. Vậy substr trong php là chuỗi con ngắn trong chuỗi con dài lấy được. Giống y chang như định nghĩa luôn nha. The substr() function returns a part of a string. Hàm substr trả về một phần của chuỗi. Hướng dẫn viết code PHP chuẩn – PSR tiêu chuẩn khi lập trình PHP Chuẩn coding convention trong PHP với PSR 2. Cú pháp và giải thích ví dụ Về cú pháp thì substr trong php tương đối rõ ràng và dễ sử dụng về mặt cú pháp. substr(string,start,length) Giải thích các parameter cho function này như sau: Đầu tiên là string: cái này là bắt buộc, tìm chuỗi con...

Xác thực và phân quyền trong Microservices
Tác giả: Hòa Nguyễn Xác thực (authentication, trả lời câu hỏi bạn là ai) và phân quyền (authorization, trả lời câu hỏi bạn có thể làm được gì) microservices luôn là thành phần không thể thiếu của mọi hệ thống, nhưng mức độ áp dụng thì lại tùy thuộc vào từng giai đoạn. Nếu bạn làm mọi thứ chặt chẽ ngay từ đầu, nó có thể làm tăng độ phức tạp và làm chậm sự phát triển của công ty. Nhưng nếu bạn làm nó quá muộn, thì có thể bạn sẽ hứng chịu nguy cơ bị tấn công và rủi ro từ đó. Với 1 công ty e-commerce như Tiki, rủi ro đó rất hiện hữu với các hệ thống liên quan tới thanh toán, tiền ảo (Tiki Xu), mã khuyến mại (coupon), phiếu quà tặng (giftcard) và nhiều hệ thống nhạy cảm khác… Bắt đầu từ Monolithic Tiki xuất phát là 1 hệ thống monolithic, thông thường ở hệ thống như vậy sẽ có 1 module chung quản lý việc xác thực và phân quyền, mỗi user sau khi đăng nhập sẽ được cấp cho 1 Session ID duy nhất để định danh. Phía client có thể lưu Session ID lại dưới dạng cookie và gửi kèm nó trong mọi request. Hệ thống sau đó sẽ dùng Session ID được gửi đi để xác định danh tính của user truy cập, để người dùng không cần phải nhập lại thông tin đăng nhập lần sau Khi Session ID được gửi lên, server sẽ xác định được danh tính của người dùng gắn với Session ID đó, đồng thời sẽ kiểm tra quyền của user xem có được truy cập tác vụ đó hay không. Giải pháp session và cookie vẫn có thể sử dụng, tuy nhiên ngày nay...

Python: Tạo một máy chủ HTTP đơn giản
Bài viết được sự cho phép của tác giả Phạm Văn Nguyên Web sever có ở khắp mọi nơi. Cho dù bạn là loại kỹ sư phần mềm nào, tại một số thời điểm trong sự nghiệp, bạn sẽ phải tương tác với các máy chủ web. Có thể bạn đang xây dựng một máy chủ API cho dịch vụ phụ trợ. Hoặc có thể bạn chỉ đang cấu hình một máy chủ web cho trang web của bạn. Trong bài viết này, tôi sẽ đề cập đến cách tạo máy chủ web http cơ bản nhất trong Python. Nhưng vì tôi muốn chắc chắn rằng bạn hiểu những gì chúng tôi đang xây dựng, tôi sẽ đưa ra một cái nhìn tổng quan trước tiên về máy chủ web là gì và cách chúng hoạt động. Nếu bạn đã biết máy chủ web hoạt động như thế nào, thì bạn có thể bỏ qua trực tiếp đến phần này. Việc làm python lương cao cho bạn Máy chủ HTTP là gì? Máy chủ web HTTP không có gì ngoài một quy trình đang chạy trên máy của bạn và thực hiện chính xác hai điều: 1- Listen các yêu cầu http đến trên một địa chỉ TCP socket cụ thể (địa chỉ IP và số cổng mà tôi sẽ nói về sau) 2- Xử lý yêu cầu này và gửi phản hồi lại cho người dùng. Cụ thể thì hãy xem ví dụ sau: Hãy tưởng tượng bạn kéo trình duyệt Chrome của mình lên và nhập www.yahoo.com vào thanh địa chỉ. Tất nhiên, bạn sẽ nhận được trang chủ Yahoo được hiển thị trên cửa sổ trình duyệt của bạn. Nhưng những gì thực sự chỉ xảy ra? Trên thực tế rất nhiều điều đã xảy ra và...

Security Considerations khi Designing Web Applications
Bài viết được sự cho phép của tác giả Kiên Nguyễn Nhắc tới thiết kế hệ thống (System Design), ngoài thiết kế hệ thống tốt, đáp ứng khả năng Scale, chuẩn business, ta cũng cần cân nhắc thêm về tính bảo mật của hệ thống (Security Considerations) Qua bài viết dưới đây, Kieblog mong muốn chia sẻ thêm chút ít kinh nghiệm thực tế khi thiết kế hệ thống Web. Một số vấn đề về Security cần quan tâm. Bắt đầu ngay thôi nào! 1. Access and Authentication Access và Authentication là 2 phần không thể bỏ qua khi nói về Security Considerations cho Designing Web Applications. Hầu hết các cuộc tấn công Web hiện nay, nguyên nhân chủ yếu không phải là các cuộc tấn công lớn hoặc sử dụng công nghệ cao. Nguyên nhân chính là do hệ thống bảo mật yếu kém. Trong đó nổi bật nhất là Authentication. Các vụ tấn công lớn đã được biết tới của Target Corp hay Yahoo đều xuất phát từ email. Đối tượng tấn công vào một node trong chuỗi cung ứng. Dẫn tới mật khẩu quản trị bị đánh cắp dẫn tới mất thông tin. 18 Web Developer Jobs Tùy vào từng đối tượng website và yêu cầu về bảo mật, người thiết kế hệ thống có thể cân nhắc thêm: Sử dụng OTP – SMS vertification. Sinh trắc học Email verification Confirm trusted device Việc bổ sung bước thứ hai giúp giảm thiếu rủi ro bị đánh cắp dữ liệu, giao các quyền truy cập thông tin không được phép vào tay hacker. Trước tới nay, nhắc tới API, ta có thể nghĩ tới tới ngay SOAP Web Services. Tuy nhiên với GraphQL, có nhiều cách để take care hoặc đảm bảo API Access Secutiry. 2. SSL –...

Một số tool hữu ích dành cho Web Developer có thể bạn đã biết (Phần 2)
Bài viết được sự cho phép của BQT Kinh nghiệm lập trình Chào mọi người, tiếp tục với phần chia sẻ lần trước (phần 1), hôm nay mình xin tiếp tục chia sẻ với các bạn thêm một vài tool mà mình thường dùng cho web developer. 1. Image Fillter Đối với những bạn thích selfie hay thích chụp hình đều biết đến photoshop, lightroom hay muốn nhanh gọn thì dùng instagram hoặc B612… Giờ đây bạn cũng có thể ứng dụng một vài bộ lọc này lên hình ảnh để có một bộ ảnh đẹp tuyệt vời không kém. Yên tâm nó rất nhẹ, vì chỉ với vài dòng CSS thôi. Link: https://www.cssfilters.co 2. Text style Lại nói về Photoshop… web developer mà kiểu gì không dính tới photoshop phải không các bạn. Ở photoshop muốn style cho chữ lung linh thật đơn giản với blending option thì ở css mình cũng không thua kém khi dùng biết kết hợp giữa background, color, text-shadow… à mà thôi bỏ đi. Mình có tool này rất hay đây. Link: https://ecard.enter-media.org/css-text-effects/ 3. Image hover effect Đây là một thư viện mình đã bookmark từ lâu, và thường xuyên dùng cho những layout yêu cầu độ thẩm mỹ. Về effect mình thấy lib này khá đẹp và thuần css rất nhẹ. Link: http://gudh.github.io/ihover/dist/ 4. CSS animation Với những website của Nhật ở phần first view họ yêu cầu effect phong phú làm Dev đau đầu. Mình xin giới thiệu một lib css khá xịn, đa số những bài tủ của mấy anh Nhật đều gói gọn ở đây. Link: http://cssanimation.io/ 5. Cũng CSS animation Đây là một tool tổng hợp các effect của CSS3 để ra một hiệu ứng đẹp mắt khi người dùng thao thác trên website. Link: http://animista.net/ Tổng kết Frontend...