Công Nghệ

Review và giải thích sâu về framework, ngôn ngữ, AI, blockchain… ngắn gọn, dễ hiểu, cập nhật liên tục như git pull ‑‑rebase.

1826 bài viết

AB testing là gì? Tại sao phải làm AB testing?

AB testing là gì? Tại sao phải làm AB testing?

Bài viết được sự cho phép của tác giả Lê Chí Dũng A/B testing là gì? A/B testing (hay còn được gọi là split testing) là một quy trình mà trong đó hai phiên bản (A và B) sẽ được cùng so sánh trong một môi trường / tình huống được xác định và qua đó đánh giá xem phiên bản nào hiệu quả hơn. Phiên bản ở đây có thể là mọi thứ từ một hình banner, trang web, mẫu quảng cáo cho tới email và hiệu quả được đánh giá dựa trên mục tiêu của người làm test dành cho các phiên bản này. 04 Điều Cần Chú Ý Cho Người Mới Làm Automation Test A/B testing và những tiêu chí chính để đánh giá sự thành công của ASO Một website bán hàng thì có mục tiêu là muốn khách hàng phải mua hàng hoặc mua nhiều hơn. Một banner quảng cáo thì có mục tiêu là muốn khách hàng phải bấm vào đó nhiều hơn. Một email thì có mục tiêu là khách hàng phải mở ra xem nhiều hơn. Tất cả mọi thứ đều có một mục tiêu nào đó, nhằm khiến cho khách hàng thực hiện một hành động mong muốn nào đó, hành động này được gọi là conversion. Tỉ lệ người thực hiện các hành động đó được gọi là conversion rate (tỉ lệ chuyển đổi). Và việc đo lường và đánh giá 2 phiên bản A và B cũng chính là việc đo lường và đánh giá conversion rate của tiến trình đang thực hiện. Tại sao lại cần phải làm A/B testing? Nếu bạn có một lượng khách hàng nhất định và bạn muốn tăng số lượng conversion lên thì cách thứ nhất là cần phải mang nhiều khách hàng...

By stationd
Tại sao lập trình viên thường ế?

Tại sao lập trình viên thường ế?

Bài viết được sự cho phép của tác giả Võ Xuân Phong Môi trường làm việc ngành IT thừa nam thiếu nữ Đối với ngành IT thì các bạn cũng biết rõ là môi trường làm việc đồng nghiệp nam sẽ nhiều hơn nữ, đối với team mình hiện giờ thì số lượng thành viên trên 30 người nhưng chỉ có 2 3 bạn nữ thôi. Việc tìm được người tình trong mộng thật sự rất khó khăn phải không chưa tính tới việc phải cạnh tranh với các con đực còn lại để giành được bạn tình nữa nhé. Dev không khéo trong việc ăn nói Dân kỹ thuật thì mọi người cũng đã quá hiểu là rất kiệm lời, không giỏi trong việc ăn nói và giải thích cảm xúc như các bạn ở những ngành đòi hỏi việc giao lưu và kỹ năng ăn nói tốt khác. Nên sẽ fail trong vòng gửi xe khi mở miệng ra cua gái dưới đây là 1 đoạn tin nhắn quen thuộc khi lập trình viên cua gái: “Sáng ấm em nha, Em ăn cơm chưa, Em buồn ngủ chưa, Anh làm việc tí đã, Em ngủ ngon” Mà đáng tiếc thay là “Con trai yêu bằng mắt, con gái yêu bằng tai” các anh chàng của chúng ta lại không khéo trong việc ăn nói nên chẳng có lời nào ngọt ngào nghe vừa tai phái đẹp thế là lại ế. Dev Hướng nội, thiên về logic hơn thiên về cảm xúc Nguyên nhân ế của các lập trình viên cũng từ tính cách quá hướng nội, thích thì nói thích, yêu thì nói yêu không đâu cứ giữ trong lòng đó để rồi bỏ mất cơ hội có được người đẹp. Lập trình viên hay gọi 1 cách...

By stationd
Sửa lỗi .NET Runtime Optimization Services ngốn nhiều CPU, RAM trên Windows

Sửa lỗi .NET Runtime Optimization Services ngốn nhiều CPU, RAM trên Windows

Bài viết được sự cho phép của blogchiasekienthuc.com .NET Framework là một trong những thành phần rất quan trọng có trên hệ điều hành Windows, được phát triển bởi chính Microsoft. Nếu bạn muốn sử dụng các phần mềm quen thuộc để làm việc với hệ điều hành này thì bắt buộc phải cài đặt đầy đủ .NET Framework . Vâng, nguyên nhân chính là bởi hầu hết các phần mềm chạy trên Windows hiện nay đều được xây dựng dựa trên nền tảng .NET này. Các thành phần trong hệ sinh thái .NET List các thuật ngữ căn bản .NET- Bách khoa toàn thư Tất nhiên, .NET Framework 3.0 thường sẽ được đi kèm khi bạn cài đặt hệ điều hành Windows rồi, vậy nên trong quá trình sử dụng nếu có xảy ra lỗi gì liên quan đến .NET Framework thì bạn chỉ việc cài thêm phiên bản 4.0 nữa là có thể sử dụng được bình thường. Nhưng đó là trên lý thuyết chứ dạo gần đây Windows 10 của mình hay bị giựt lag do một tiến trình có tên .NET Runtime Optimization Services liên tục chạy và chiếm rất nhiều tài nguyên phần cứng của máy tính (CPU, RAM..). Vậy .NET Runtime Optimization Services là gì, nó có phải là virus không? Mời các bạn hãy cùng mình đi tìm câu trả lời thông qua bài viết bên dưới đây nhé ! #1. .NET Runtime Optimization Services là gì? Nó có phải Virus không? Nếu bạn đã sử dụng Windows 10 từ lâu thì tình trạng đơ, lag máy là chuyện thường xuyên như cơm bữa đúng không, nhất là mấy máy tính còn sử dụng ổ cứng HDD. Và khi bạn mở Task Manager lên, bạn giật mình thấy một tiến trình có tên...

By stationd
[Tự học C++]  Giới thiệu về phạm vi(scope) của biến hoặc hàm cục bộ

[Tự học C++] Giới thiệu về phạm vi(scope) của biến hoặc hàm cục bộ

Biến cục bộ Các tham số của hàm, cũng như các biến được xác định bên trong thân hàm, được gọi là các biến cục bộ (trái ngược với các biến toàn cục, mà chúng ta sẽ thảo luận trong chương tiếp theo). 1 2 3 4 5 6 int add( int x, int y) // function parameters x and y are local variables { int z{ x + y }; // z is a local variable too return z; } Trong bài học này, chúng tôi sẽ xem xét một số đặt điểm của các biến cục bộ một cách chi tiết hơn. Vòng đời của biến cục bộ Chúng tôi đã thảo luận về cách định nghĩa biến như int x; làm cho biến được khởi tạo khi câu lệnh này được thực thi. Các tham số của hàm được tạo và khởi tạo khi hàm được gọi và các biến trong thân hàm được tạo và khởi tạo tại thời điểm định nghĩa. Ví dụ: 1 2 3 4 5 6 int add( int x, int y) // x and y created and initialized here { int z{ x + y }; // z created and initialized here return z; } Câu hỏi tiếp theo là, khi nào thì một biến cục bộ bị hủy? Các biến cục bộ bị hủy theo thứ tự ngược lại của việc khởi tạo nó khi tới dấu ngoặc nhọn cuối cùng của hàm, nơi mà nó được định nghĩa. 1 2 3 4 5 6 int add( int x, int y) { int z{ x + y }; return z; } // z, y, and x destroyed here Giống như thời gian sống của một con người, chính là thời gian giữa lúc sinh và lúc chết của họ, thời...

By stationd
AOMEI PE Builder: Tự tạo bộ công cụ cứu hộ máy tính (WinPE)

AOMEI PE Builder: Tự tạo bộ công cụ cứu hộ máy tính (WinPE)

Bài viết được sự cho phép của blogchiasekienthuc.com Nói đến công cụ cứu hộ máy tính thì chắc chắn chúng ta, những kỹ thuật viên, hay là những người có niềm đam mê và thích “vọc vạch” máy tính sẽ nghĩ ngay đến Hiren’s Boot , DLC Boot hay AnhDv Boot đúng không? Vâng, tất nhiên rồi ! Đây đều là những bộ công cụ cứu hộ máy tính tuyệt vời, và nó đều đã được Admin giới thiệu trong chuyên mục USB BOOT có trên Blog. Vậy nên hôm nay mình sẽ không giới thiệu với bạn một bộ công cụ nào nữa, mà thay vào đó mình sẽ chia sẻ với các bạn cách để tự tạo một bộ công cụ cứu hộ máy tính cho riêng mình, bạn có thể thỏa mái thêm bớt bất kì phần mềm nào mà mình muốn. Nghe có vẻ khá thú vị rồi đúng không nào ◉◡◉ Okay, vậy thì bắt đầu nhé ! 6 project vui dành cho dev build khi chán Anh hào UX hội tụ tại Building your UX Design from scratch #1. Nhận xét cá nhân về AOMEI PE Builder Đầu tiên, phần mềm này sẽ giúp bạn tạo ra bộ công cụ Windows 10 PE cùng với các phần mềm khác mà bạn thêm bớt vào. Có thể là bộ công cụ cứu hộ mà bạn tự làm ra sẽ không được đầy đủ và đa dạng như các bộ cứu hộ chuyên nghiệp có trên Blog, tuy nhiên nó là sản phẩm của bạn, và nó phù hợp với nhu cầu sử dụng của bạn. Bởi tất nhiên rồi, đó đều là những phần mềm do chính bạn thêm vào mà 🙂 Ưu điểm lớn nhất của bộ cứu hộ này là độ tùy biến...

By stationd
Ứng dụng bạn biết được xây dựng trên nền tảng nào?

Ứng dụng bạn biết được xây dựng trên nền tảng nào?

Ứng dụng bạn biết được xây dựng trên nền tảng nào? Cơ bản về Android App Bundle Flutter vs React Native vs Xamarin – hiện đang là ba trong số các công nghệ phát triển ứng dụng di động cross-platform phổ biến nhất. React Native với cộng đồng lớn và thư viện phong phú, Flutter với nhiều nhận xét tích cực về performance mang lại trải nghiệm gần giống native, Xamarin được backed bởi Microsoft với lực lượng .Net developer hùng hậu. Nếu còn chưa biết chọn Flutter, React Native hay Xamarin cho dự án hay con đường sự nghiệp của bạn, hãy tham khảo thử các ứng dụng sau được xây dựng trên từng nền tảng nhé: 1. Flutter Flutter là mobile UI framework của Google để tạo ra các giao diện native chất lượng cao trên iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với source code có sẵn, được sử dụng bởi các nhà phát triển và các tổ chức trên khắp thế giới, đồng thời nó open-source và miễn phí. Các lý do để bạn cân nhắc chọn Flutter : Ứng dụng được phát triển một cách nhanh chóng và thống nhất Ngôn ngữ Dart dễ học dễ hiểu UI đẹp và “xịn sò” Framework hiện đại Hỗ trợ cực tốt cho IDE …. 2. React Native React Native là công nghệ được tạo bởi Facebook, cho phép các dev sử dụng JavaScript để làm mobile apps trên cả Android và iOS với cảm nhận và giao diện native. Một ví dụ để làm rõ cách vận hành của React Native là wrapper của code native. Có rất nhiều thành tố được tạo nên khi đang wrapping – “bọc” chức năng native của iOS hoặc Android. React Native đã đạt được rất nhiều...

By stationd
Javascript prototype chuyên sâu

Javascript prototype chuyên sâu

Bài này chỉ phù hợp với các bạn đã có kiến thức trung bình khá javascript trở lên, mình không chỉ đơn giản giải thích cách xài mà còn sâu hơn, bạn sẽ nắm rất rất rõ prototype trong javascript thực chất là gì Object trong javascript rất là vi diệu. Nó là nền tảng của rất nhiều thứ hay ho trong javascript. Object là một cặp giá trị key/value. Cách đơn giản nhất tạo một object là obj = {} , thêm các property và phương thức sử dụng dấu chấm let animal = {} animal.name = 'Leo' animal.energy = 10 animal.eat = function (amount) { console.log(`${this.name} is eating.`) this.energy += amount } animal.sleep = function (length) { console.log(`${this.name} is sleeping.`) this.energy += length } animal.play = function (length) { console.log(`${this.name} is playing.`) this.energy -= length } Quá đơn giản. Giờ chúng ta muốn có thêm một animal khác, chúng ta đưa toàn bộ logic này vào bên trong 1 function, cách này gọi là Functional Instantiation hay constructor function function Animal (name, energy) { let animal = {} animal.name = name animal.energy = energy animal.eat = function (amount) { console.log(`${this.name} is eating.`) this.energy += amount } animal.sleep = function (length) { console.log(`${this.name} is sleeping.`) this.energy += length } animal.play = function (length) { console.log(`${this.name} is playing.`) this.energy -= length } return animal } const leo = Animal('Leo', 7) const snoop = Animal('Snoop', 10) Khi chúng ta muốn tạo một instance mới của Animal , tất cả những gì chúng ta cần làm là gọi lại hàm Animal . Cách làm này có một điểm hạn chế, các phương thức eat , sleep , play là hoàn toàn giống nhau cho các instance, đồng thời khi tạo một instance mới chúng ta cũng đã vô tình lãng phí bộ...

By stationd
Thủ thuật sử dụng đơn vị viewport trên mobile

Thủ thuật sử dụng đơn vị viewport trên mobile

Để có thể quản lý được state của ứng dụng một cách tốt nhất, chúng ta cần sự phân chia phù hợp giữa local state (internal state của component) và state cửa ứng dụng đặt trong React Context. Một vài điều muốn chia sẽ để nâng cao khả năng bảo trì và trải nghiệm nếu sử dụng đến context trong React. Đơn vị viewport trong css ( vh , vw ) không phải lúc nào cũng chạy đúng trên mọi trình duyệt điện thoại. Giống như chưa đủ khổ cho dev nên mỗi trình duyệt mobile lại có cách xử lý riêng cho đơn vị này. Cách mà w3 định nghĩa cách tính đơn vị này. Với mobile cái chúng ta quan tâm nhiều nhất là đơn vị vh 1vh = 1% độ cao khởi tạo của khu vực trình duyệt dùng để hiển thị trang web. Nghĩa là giá trị này không bao gồm các phần khác của trình duyệt, như thanh address, thanh bookmark ( nếu có ), tab bar, … và những thứ linh tinh khác mà user có thể add thêm vào trình duyệt của họ. Nhưng khi bạn bắt đầu scroll trên điện thoại, câu chuyện trở nên phức tạp hơn, thanh address bar sẽ biến mất, giá trị của vh cần phải cập nhập lại, hiện tượng cà khịa xuất hiện trên màn hình. Trình duyệt Safari trên iOS là người tiên phong sử dụng luôn một giá trị cố định đúng với kích thước màn hình (không phải kích thước khung hiển thị của trình duyệt). Chrome mobile cũng bắt đầu áp dụng cách này để chặn việc nội dung trang nhảy lung tung. Điều này có ý nghĩa như thế nào? Nghĩa là khi bạn đặt giá trị 100vh nó sẽ vượt...

By stationd
Thuật toán Gradient Descent

Thuật toán Gradient Descent

Bài viết được sự cho phép của tác giả Kien Dang Chung Video trong bài viết Trong các bài toán machine learning hoặc các bài toán tối ưu, chúng ta thường phải làm việc với những điểm cực trị (thường là điểm cực tiểu) của một hàm số. Hẳn bạn còn nhớ trong Phần 1 của khóa học này về dự đoán doanh thu phim với Linear Regression , chúng ta đã phải cố gắng tìm giá trị nhỏ nhất của hàm chi phí (cost function) mà đôi khi còn gọi là hàm mất mát (loss function). Vậy Thuật toán Gradient Descent là gì? , Gradien Descent có liên hệ gì với việc tìm kiếm cực trị bài toán tối ưu? , chúng ta sẽ cùng tìm hiểu trong bài học này nhé. Tại sao lại dùng Gradle thay thế Maven và Ant 10 PHP Instagram Scripts & Widgets tốt nhất 1. Thuật toán Gradient Descent là gì? Trong kiến thức toán phổ thông chúng ta đã biết, muốn tìm cực trị một hàm số y = f ( x ) y=f(x) chúng ta sẽ giải phương trình đạo hàm của hàm số f ( x ) f(x) bằng 0. f ′ ( x ) = 0 f′(x)=0 Tuy nhiên phương trình trên không phải lúc nào cũng giải được dễ dàng, có những trường hợp việc giải phương trình trên là bất khả thi. Vậy khi gặp những tình huống này, chúng ta phải làm gì? May thay, thuật toán Gradient Descent cho chúng ta cách thức tìm các điểm cực tiểu cục bộ này một cách xấp xỉ sau một số vòng lặp. Trong thực tế, các giá trị dữ liệu không có đúng 100% mà đôi khi chúng ta chỉ cần những con số gần đúng. Khi...

By stationd
Sử dụng flat state trong Vue Store

Sử dụng flat state trong Vue Store

Bài viết được sự cho phép của tác giả Lưu Bình An Đầu tiên chúng ta cần trả lời câu hỏi global state có phải là phương thuốc chữa bá bệnh cho các vấn đề liên quan tới state ? Mình chỉ đưa dữ liệu vào Vuex store như là lựa chọn cuối cùng và có một lý do cụ thế để phải sử dụng. Điều thứ 2, luôn giữ global state ở dạng cây một cấp, nghĩa là chúng ta không lồng dữ liệu liệu vào nhau như bên dưới 3 phút làm quen với Vue.js Autosaving cùng Vuex Đọc thêm https://markus.oberlehner.net/blog/should-i-store-this-data-in-vuex/ để có khái niệm khi nào cần dữ liệu trong store và khi nào không. Quan điểm về flat state (không lưu dữ liệu lồng nhau trong store) được lấy cảm hứng từ chú Matt Biilmann chia sẽ về quan điểm về Redux sau khi làm cái dashboard cho Netlify trong bài phỏng vấn Architecting the Netlify Dashboard with React and Redux cap_1 : { cap_2 : { cap_3 : { } } } Rất khó để sync dữ liệu ở dạng lồng ghép như vậy. Ví dụ, có danh sách bài viết, mỗi bài viết được nhét thông tin tác giả bên trong, có nhiều bài viết có cùng một tác giả, rồi ngày đẹp trời tác giả này đổi tên, thì chúng ta phải đi sync lại toàn bộ tất cả bài viết của ổng. const articles = [ // bài viết này được load trước { author : { avatar : 'https://picsum.photos/id/1011/25' , id : 1 , name : 'Jane Doe' , } , id : 1 , intro : 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr.' , title : 'Lorem Ipsum' , } , // tác giả đó ổng vô đổi avatar,...

By stationd
Building Microservices Application – Phần mở đầu: Bức tranh tổng thể

Building Microservices Application – Phần mở đầu: Bức tranh tổng thể

Bài viết được sự cho phép của tác giả Edward Thien Hoang Đây là bài viết đầu tiên trong phần Xây dựng ứng dụng với Microservices . Trong những loạt bài trước , chúng ta đã tìm hiểu qua phần lý thuyết về những “viên gạch” (building block) chủ đạo trong Microservies . Loạt bài tiếp theo sẽ hướng đến việc implement những pattern như API Gateway, Service Discovery, Circuit Breaker trong kiến trúc Microservices như thế nào. Cải thiện hiệu năng cho JavaScript Web Application chỉ trong vòng vài bước đơn giản Security Considerations khi Designing Web Applications Đáng lẽ mình sẽ tự tay implement và giải thích về ý nghĩa của từng phần, tuy nhiên, trong thời gian research đã tìm ra được một nguồn tài liệu viết rất chuyên nghiệp và đầy đủ. Vì vậy mình sẽ dựa trên đó để viết, nhằm mang đến cái nhìn professional và đúng đắn nhất Các bạn có thể đọc các bài viết nguyên bản tiếng Anh tại ĐÂY . Trong bài viết đầu tiên này, hãy cùng xem xét về bức tranh tổng thể khi xây dựng một ứng dụng Microservices, sẽ gồm những thành phần (chính) nào, và cách chúng coordinate với nhau như thế nào. 1. ĐIỀU KIỆN CẦN Điều gì là cần thiết để triển khai một số lượng lớn các microservices trong hệ thống? Hình vẽ dưới đây, theo Martin Fowler , sẽ cho ta biết chính xác điều chúng ta cần đạt được (Nguồn: http://martinfowler.com/articles/microservices.html) Tuy nhiên, trước khi chúng ta có thể bắt đầu tung ra số lượng lớn các microservices trong hệ thống để thay thế các ứng dụng nguyên khối, có một số điều kiện tiên quyết cần được đáp ứng (hoặc ít nhất là ở mức độ nào đó). Chúng...

By stationd
Sứ mệnh và thách thức cho các “anh hùng” công nghệ tại Viettel Cyber Security

Sứ mệnh và thách thức cho các “anh hùng” công nghệ tại Viettel Cyber Security

Chính thức thành lập từ tháng 4 năm 2019, Viettel Cyber Security (Trung tâm An ninh mạng Viettel) đã không ngừng thể hiện sức mạnh, khẳng định vị thế đứng đầu trong việc đảm bảo an ninh trên không gian mạng Việt Nam. Khẳng định vị thế hàng đầu – Sức mạnh “niềm tin” lan tỏa Khởi đầu với 6 nhân sự từ năm 2011, Công ty An ninh mạng Viettel đã phát triển thành một đơn vị lớn mạnh với hơn 200 nhân sự và chính thức trở thành công ty riêng biệt sau 8 năm với tên gọi Viettel Cyber Security . Là đơn vị trực thuộc Tập đoàn Công nghiệp Viễn thông Quân đội, Viettel Cyber Security có vai trò quan trọng trong việc thực hiện các nghiên cứu chuyên sâu, phát triển giải pháp đảm bảo An toàn thông tin các hệ thống của Tập đoàn cũng như cung cấp những sản phẩm, dịch vụ chất lượng đến với khách hàng trong nước và quốc tế. Trải qua nhiều năm vươn lên phát triển, Viettel Cyber Security đã chiếm được sự tín nhiệm của các đối tác về chất lượng và đó cũng chính là lời cam kết mà Viettel Cyber Security dành cho các khách hàng của công ty. Được mệnh danh là “tấm lá chắn thép khổng lồ” của doanh nghiệp Việt trước những mối nguy hiểm trên không gian mạng, Viettel Cyber Security đã đem đến một sự tin tưởng gần như tuyệt đối với những con số ấn tượng: Hàng chục nghìn máy chủ, thiết bị mạng và hàng triệu đường truyền, thuê bao di động được bảo vệ an toàn nhờ sự nghiên cứu, xây dựng hệ thống giám sát, phòng thủ toàn diện. Hơn 25.000 cuộc tấn công an ninh...

By stationd