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

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
Visual Studio Code Extensions

Visual Studio Code Extensions

Bài viết được sự cho phép của tác giả Khiêm Lê Bài viết này là bài viết chia sẻ nhanh về các Visual Studio Code (VSCode) extensions mà mình đang sử dụng và có thể các bạn cũng sẽ thích nó. Hãy cùng vào nội dung bài luôn nhá! Theme Chắc chắn theme là một yếu tố cũng quan trọng khi các bạn quyết định sử dụng một Code Editor nào đó. Nếu như nhìn vào một cái theme đẹp, trực quan, dễ đọc code, thân thiện với mắt hơn khi có Dark Mode thì chắc chắn bạn sẽ thích hơn là code bằng cái Notepad ?, dĩ nhiên rồi. Theme mà mình đang sử dụng là Material Theme , đây không chỉ là một theme duy nhất mà là một pack có nhiều Color Palatte cho các bạn thoải mái theo sở thích. Cá nhân mình thì thích dùng Ocean High Contrast và Palenight High Contrast, khi dùng High Contrast thì các thành phần khác Edit Area như Terminal, Debug Console, Sidebar… sẽ có màu sắc đậm hơn, các bạn sẽ dễ phân biệt hơn. Ngoài Material Theme thì mình cũng có đổi một số theme khác cho đỡ nhàm chán như Dracula Official , Github Theme , Night Owl . Hầu hết các theme mình dùng đều là Dark Theme để code buổi tối cho đỡ mỏi mắt. Cài rồi thì nhớ active nó lên nha ?! settings.json { "workbench.colorTheme" : "Theme Name" } Icon Pack Đã nói đến Theme thì không thể nào bỏ qua Icon Pack được. Nếu như các bạn cài Material Theme thì nó cũng đã có kèm theo sẵn một vài Icon Pack cho các bạn lựa chọn phù hợp với theme đó luôn. Tuy nhiên thường thì mình sử dụng Pack khác...

By stationd
AJAX là gì? Chi tiết về Asynchronous Javascript and XML

AJAX là gì? Chi tiết về Asynchronous Javascript and XML

AJAX là một kỹ thuật phát triển web mạnh mẽ được sử dụng để giúp các trang web nhanh và mượt mà hơn như đang dùng app desktop. Trong bài viết này, cùng Station D khám phá cách AJAX hoạt động, lợi ích mà nó mang lại và cách bạn có thể áp dụng nó vào các dự án web của mình. AJAX là gì? AJAX là từ viết tắt của Asynchronous Javascript and XML (JavaScript và XML không đồng bộ). AJAX là phương thức trao đổi dữ liệu với máy chủ cho phép cập nhật một hay nhiều phần của trang web, hoàn toàn không reload lại toàn bộ trang. Ajax được viết bằng Javascript chạy trên client, tức là mỗi browser sẽ chạy độc lập hoàn toàn không ảnh hưởng lẫn nhau. Về mặt kỹ thuật, nó đề cập đến việc sử dụng các đối tượng XmlHttpRequest để tương tác với một máy chủ web thông qua Javascript. XMLHttpRequest (XHR) là một API cho phép gửi các yêu cầu HTTP tới máy chủ và nhận các phản hồi một cách đồng bộ hoặc không đồng bộ. >> Đọc thêm: XML là gì ? Tại sao lại sử dụng AJAX? AJAX là một trong những công cụ giúp chúng ta đem lại cho người dùng trải nghiệm tốt hơn. Khi cần một thay đổi nhỏ thì sẽ không cần load lại cả trang web, làm trang web phải tải lại nhiều thứ không cần thiết. Những lợi ích mà AJAX mang lại: AJAX được sử dụng để thực hiện một callback. Được dùng để thực hiện việc truy xuất dữ liệu hoặc lưu trữ dữ liệu mà không cần phải reload lại toàn bộ trang web. Với những server nhỏ thì việc này cũng tiết kiệm được băng thông...

By stationd
Inspectorio đã thành công vòng gọi vốn “Series A” trị giá 10 triệu đô la Mỹ

Inspectorio đã thành công vòng gọi vốn “Series A” trị giá 10 triệu đô la Mỹ

Vào ngày 10 tháng 7 năm 2018, tại Minneapolis, Mỹ , công ty Inspectorio chuyên cung cấp giải pháp kiểm định và giám sát chất lượng cho các nhà cung cấp trong chuỗi cung ứng, được vận hành trên nền tảng trí thông minh nhân tạo, đã phát hành vòng gọi vốn tối ưu hóa “Series A” trị giá 10 triệu Đô la Mỹ. Công ty phần mềm dịch vụ này tạo ra một mạng lưới năng động và độc lập, kết hợp với công nghệ máy học ( machine learning ) cho ngành công nghiệp kiểm định và giám sát chất lượng để các nhà sản xuất, nhà cung cấp, thương hiệu và nhà bán lẻ có thể kết nối, chia sẽ dữ liệu, và cải thiện chất lượng liên tục. Ông Carlos Moncayo Castillo, CEO và là người đồng sáng lập công ty, cho biết: “Chúng tôi cam kết tiếp tục củng cố vị thế của Inspectorio như là nền tảng hàng đầu thế giới về kiểm định và giám sát chất lượng bằng cách tạo tác động tích cực vào chuỗi cung ứng toàn cầu. Khoản đầu tư này sẽ đẩy nhanh tốc độ tăng trưởng và phát triển nền tảng công nghệ của chúng tôi. Chúng ta cần phải chuyển đổi từ chuỗi cung ứng sang một cấp độ mới từ cách làm thủ công sang nền tảng thông minh và không bị giới hạn bởi các khoảng cách địa lý.” Nhà đầu tư chính cho vòng gọi vốn này chính là công ty Techstars, một công ty được biết đến cho các khoản đầu tư chiến lược vào Uber, Sendgrid, Twilio, DigitalOcean v.v. Ông Mark Solon, Giám đốc điều hành của Techstars cho biết “Tôi đã biết anh em nhà Moncayo vài năm nay. Công...

By stationd
Tìm hiểu về Graceful Shutdown, Graceful Shutdown trong Golang

Tìm hiểu về Graceful Shutdown, Graceful Shutdown trong Golang

Bài viết được sự cho phép của tác giả Võ Xuân Phong Trong bài viết này, mình sẽ trình bày cho anh em về Graceful Shutdown với ngôn ngữ lập trình Golang. Chúng ta sẽ đi tìm hiểu về Graceful Shutdown là gì? Tại sao chúng ta lại cần áp dụng nó và nó có mang lại lợi ích gì hay không? Channel trong Golang là gì? So sánh Callback function và mutex lock với channel Chiến trường sinh tử phiên bản lập trình : Python vs Ruby vs Golang Graceful Shutdown là gì? Hãy tưởng tượng rằng, chúng ta đang có một web service đang tiếp nhận yêu cầu (request) của các client để truy xuất dữ liệu từ database, vì dữ liệu truy xuất lớn nên phản hồi (response) phải mất một thời gian mới truy xuất xong. Trong khi đó anh em lại muốn tắt web service đó đi để bảo trì hệ thống hoặc triển khai (deploy) mới, bằng các thao tác kill ứng dụng web service đang chạy, có thể là câu lệnh stop của docker, câu lệnh kill process bằng PID hay Ctrl + C chúng ta vẫn thường hay dùng .v.v. Ngay lập tức những yêu cầu mà service xử lý chưa xong bị buộc ngưng giữa chừng. Ngoài ra những kết nối khác như kết nối với database không được kiểm soát và đóng lại đúng cách gây hao tốn tài nguyên của server. Những điều nói trên làm chúng ta phải dừng lại và suy nghĩ về nó phải không? Điều chúng ta muốn là khi service bị buộc dừng thì nó sẽ: Không đón nhận những yêu cầu (request) mới. Xử lý và và phản hồi những yêu cầu (request) cũ. Cuối cùng là đóng các kết nối, sau đó...

By stationd
Cài đặt Filebeat trên CentOS

Cài đặt Filebeat trên CentOS

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Thông thường, khi deploy các ứng dụng lên môi trường production, chúng ta sẽ deploy lên nhiều server khác nhau. Việc quản lý log trên nhiều server sẽ gây ra rất nhiều khó khăn, mất thời gian mà không hiệu quả. Sẽ tốt hơn nếu chúng ta sử dụng giải pháp centralize tất cả các file logging. Điều này có nghĩa là chúng ta sẽ cài đặt để các server đang deploy ứng dụng có thể gửi tất cả các log message của ứng dụng về một server chính, trên server chính chúng ta sẽ sử dụng các công cụ để các log message có thể hiển thị một cách trực quan nhất. 11 công cụ hữu ích để kiểm tra và tối ưu hóa các file CSS 9 mã nguồn mở cho file upload field Trong thế giới ELK (Elasticsearch-Logstash-Kibana), để hiện thực được ý tưởng trên, các bạn có thể dùng các công cụ Beats để thực hiện. Beats là các công cụ có nhiệm vụ chính là data shipper, bao gồm: Filebeat, Metricbeat, Packetbeat, Winlogbeat, Auditbeat, Heartbeat, Functionbeat. Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt công cụ Filebeat các bạn nhé! Đầu tiên, tương tự như khi cài đặt Elasticsearch hay Kibana , nếu server của các bạn chưa cài đặt Elasticsearch hoặc Kibana repository, thì các bạn cần cài đặt repository của Filebeat vào Các bạn cần thêm Filebeat public signing key trước bằng cách chạy câu lệnh sau: sudo rpm -- import https : //artifacts.elastic.co/GPG-KEY-elasticsearch Kết quả của mình như sau: Tiếp theo, các bạn cần tạo mới một tập tin để thêm Filebeat repository: sudo vi / etc / yum . repos . d / filebeat ....

By stationd
Fix lỗi “Fopen Failed To Open Stream: Permission Denied Windows Server”

Fix lỗi “Fopen Failed To Open Stream: Permission Denied Windows Server”

Bài viết được sự cho phép của BQT Kinh nghiệm lập trình Xin chào mọi người, mình quay trở lại rồi đây. Hôm nay mình chia sẻ 1 trick rất rất nhỏ và đơn giản để fix các vấn đề liên quan tới quyền truy cập trong Windows Server. Đọc tới đây không ít bạn tặc lưỡi, cái này thì mặc định rồi thì cần gì fix nhỉ? Ồ vậy mà khi đối mặt với nó, nếu không biết cách xử lý chúng ta sẽ tốn rất nhiều thời gian và chuốc lấy muôn vàn cay cú, rồi lại tự ngẫm, biết thế dùng server Linux có phải đỡ mệt không? Tuy nhiên đôi lúc chúng ta vẫn phải tìm cách sống chung với lũ trong khi chưa thấy phao cứu sinh ở đâu. Fix lỗi "Fopen Failed To Open Stream: Permission Denied Windows Server" Fix Lỗi "RDP Authentication Error Has Occurred – The Function Requested Is Not Supported" Nguyên nhân???? Lỗi trên xuất hiện khi nào? Lỗi trên găp phải khi chúng ta deploy phần mềm thao tác với các file, folder trong ổ C của Windows Server, nơi mà không phải lúc nào ta cũng có quyền read/write/delete một cách tùy tiện. Thông thường các bạn sẽ nhận được message như sau khi phát triển hệ thống với PHP: “fopen failed to open stream: Permission denied windows server” Cách xử lý Một hệ điều hành cực kỳ tiện dụng nhưng cũng nhiều ràng buộc khó chịu!!! Nguyên nhân rất rõ ràng rồi: chúng ta không đủ quyền để thao tác với folder/file mà ta đang cần xử lý. Vậy cách xử lý rất đơn giản: Cấp quyền. Khoan!!! Nhưng mà cấp quyền gì, cho tài khoản nào nhỉ? Và cấp như nào??? Phần này đôi khi khiến chúng...

By stationd
Mô hình State Machine trong Distributed Systems

Mô hình State Machine trong Distributed Systems

Bài viết được sự cho phép của tác giả Huy Hoàng Khi tìm hiểu và làm việc với Distributed Systems, chúng ta có thể sẽ hay bắt gặp những cụm từ như: Replicated State machine , Log replication hay Event-driven , Event-sourcing . Về bản chất, những khái niệm này đều được xây dựng xung quanh mô hình “Máy trạng thái” (State machine). Bài viết này sẽ mô tả mô hình này và lý do tại sao State machine lại được áp dụng rộng rãi trong Distributed Systems. Hướng dẫn sử dụng ReactJS Props và State Stateless là gì? Stateful là gì? Nhắc lại sơ qua một vài khái niệm Trạng thái (state) của một process có thể hiểu là tập hợp các giá trị của các biến (variable) trong process đó. VD, nếu process p1 có thể có state S1 = {x=1, y=2} . Thường trong thực tế, một process sẽ có cả dữ liệu trong RAM lẫn trên đĩa cứng, chúng ta coi tất cả các dữ liệu này là state của process đó. State machine trong tin học là một mô hình tính toán, trong đó một máy tính (machine) thay đổi trạng thái (state) dựa theo chuỗi input mà nó được cung cấp. Ta hãy lấy ví dụ một bài toán: xác định xem trong một dãy số nhị phân (VD: 110100101 ), số chữ số 0 là chẵn hay lẻ. Bài toán này có thể giải bằng cấu trúc State machine, trong đó chuỗi input là chuỗi các chữ số nhị phân, và “state” có thể là “chẵn” (S1) hay “lẻ” (S2). State machine này bắt đầu từ trạng thái S1 (có 0 chữ số 0 ), và với mỗi giá trị chữ số, nó thay đổi trạng thái theo như hình minh họa bên...

By stationd
Kiểu dữ liệu, biến, hằng trong ngôn ngữ Swift

Kiểu dữ liệu, biến, hằng trong ngôn ngữ Swift

Bài viết được sự cho phép của tác giả Trần Hữu Cương Kiểu dữ liệu, biến, hằng trong ngôn ngữ Swift I.Kiểu dữ liệu Swift cung cấp cho chúng ta đầy đủ các kiểu dữ liệu cơ sở giống như C và Obiective-C. Ví dụ: Int, Double, Float, Bool, String, …). Các kiểu dữ liệu mới trong Swift: Chúng ta có thể demo và học các câu lệnh cơ bản trong Xcode nó sẽ chạy và show kết quả từng câu lệnh cho chúng ta. Hằng và biến trong Swift Các cách sử dụng AS, AS?, AS! một cách hiệu quả và an toàn trong code Swift Apple có cung cấp cho chúng ta công cụ tuyệt vời để test code-Swift: playground . Chúng ta sẽ sử dụng tool playground để học swift3. Bạn click vào “Get started with a playground ” Các bạn click next và chọn nơi lưu project Và đây là giao diện giúp chúng ta code. Array Các phần tử trong 1 array phải chung kiểu dữ liệu. Có thể khai báo array bằng những cách sau: Khai báo mảng rỗng let emptyArr = [ Int ] ( ) // mảng Int rỗnglet emptyArr : Array<Int> = [] // mảng int rỗng Thêm mới 1 phần tử: arr . append ( 6 ) // thêm vào cuối mảng arr.insert(0, atIndex: 0) // thêm mới theo index Dictionary Dictionary dùng để chứa các biến có cùng kiểu dữ liệu. Khác với array là dictionary gọi biến theo key – value chứ không phải theo index. Khai báo dictionary theo 2 cách như sau: var dict : Dictionary < String , String > = [ “HN” : “HaNoi” , “HCM” : “HoChiMinh” ] ; var dict2 : [ String : String ] = [ “HN” : “HaNoi” ]...

By stationd
Học lập trình để làm gì? Nên học lập trình gì?

Học lập trình để làm gì? Nên học lập trình gì?

Bài viết được sự cho phép của ucode.vn Học cái gì đó mục đích cuối cùng là để có một nghề nghiệp hoặc sự nghiệp ổn định. Đó cũng là định luật muôn thuở và luôn đúng với bất kỳ người nào đang tìm kiếm các trung tâm hay học viện để học một cái gì đó? Vậy sau khi học lập trình, chúng ta có thể làm những nghề nào? Chia buồn với bạn, không phải cứ học xong thì Coder có thể làm bất cứ nghề nào về lập trình cũng được. Bởi thế, trả lời cho câu hỏi “Tôi học cái này để làm gì?” luôn cần thiết ngay từ những bước chân đầu tiên. Câu trả lời chung chung thì rất nhiều. Nhưng câu trả lời chính xác là xác định mục đích cuối cùng và mong muốn của bạn là gì sau khi học lập trình xong. Sau đây, mình sẽ cho bạn những gợi ý về nghề nghiệp phù hợp con đường mà bạn đang theo đuổi. 10 câu nói cực hay về lập trình 10 kênh Youtube học lập trình không thể bỏ qua dành cho Junior Web Developer / Designer Bạn muốn là một Software Engineer Đối tượng phù hợp: Coder đa năng và truyền thống Đây là công việc khá phổ biến về lập trình. Một Software Engineẻ cần phải học JavaScript, Ruby, HTML, và CSS. Ranh giới giữa Software Engineer và Software Developer khá mờ nhạt, vì vai trò của họ gần như tương đương nhau. Bạn có thể tìm hiểu kỹ hơn trên Reddit để có cái nhìn sâu hơn. Đối với hầu hết mọi trường hợp, Software Engineer cần phải học lập trình và hiểu sản phẩm cuối được thiết kế và quản trị như thế nào. Thông...

By stationd
Lộ trình để một ứng dụng thành công

Lộ trình để một ứng dụng thành công

Bài viết được sự cho phép của tác giả Trần Cảnh Lực Một ứng dụng thành công cần phải có những yếu tố như tính thực tiễn, đáng tin cậy, thiết kế bắt mắt, đáp ứng nhu cầu người dùng…. Trước xu thế hiện nay, số người dùng điện thoại ngày càng tăng dẫn đến nhu cầu ứng dụng di động lên cao. Tuy nhiên, trước tài nguyên phần mềm phong phú để một ứng dụng lọt vào “mắt xanh” của người tiêu dùng không phải là điều dễ dàng. 'Toát mồ hôi' phỏng vấn tuyển dụng vào Apple 3 tools giúp bạn tăng hiệu năng của React App một cách bất ngờ Những hình ảnh đồ họa dưới đây hướng dẫn một cách trực quan nhất cho quá trình này, hi vọng nó có thể giúp bạn điều gì đó trong con đường phát triển ứng dụng cho chính mình. Lộ trình phát triển một ứng dụng Tóm tắt lộ trình phát triển một ứng dụng thành công: 1: Bạn có một ý tưởng ứng dụng? Nếu thế, bạn cần phải xem ý tưởng đó có những gì được gọi là “HOT”, xu thế của google trong thời điểm hiện tại hoặc sắp tới. Bạn hãy tìm những từ khóa cho ứng dụng của bạn trên google, xem xếp hạng tìm kiếm của những từ khóa cho ứng dụng đó. Nếu idea đó thực sự “HOT” thì hãy tiếp tục thực hiện ứng dụng của bạn. 2: Bạn đã tiến hành nghiên cứu chiến dich marketing cho tên ứng dụng của bạn? Có nhiều lý do tại sao điều này lại quan trọng bạn nên tìm hiểu qua về chiến dich marketing cho tên ứng dụng. Nếu bạn chưa có một cái tên nào tốt hãy đi đến google...

By stationd
Phần 1 – Tự động hóa công việc nhàm chán với Heroku

Phần 1 – Tự động hóa công việc nhàm chán với Heroku

Bài viết được sự cho phép của tác giả Trần Khôi Nguyên Hoàng Mở bài Bác Gates đã bảo rằng bác luôn muốn chọn những người lười biếng vì họ sẽ tìm ra cách thực hiện việc đó một cách đơn giản hơn. Hơn nữa, đôi khi có một số công việc nhàm chán phải lặp đi lặp lại nhiều lần, trong một ngày. Với một developer thì tại sao không tìm một cách nào đó nhàn hơn để làm? Hôm nay mình sẽ giới thiệu với các bạn cách để tự động hóa một số công việc bằng NodeJS và Heroku, hoàn toàn miễn phí. Sau đó, các bạn có thể áp dụng vào chính công việc hiện tại của các bạn như gửi mail, tự động chúc mừng sinh nhật trên Facebook, và hàng tá việc khác nữa. 10 Công cụ Go-To Tech dành riêng cho các Software Developer 20 trường hợp sử dụng lệnh Docker cho developer Áp dụng Để áp dụng, mình sẽ hướng dẫn các bạn viết một cái script vui vui nhằm áp dụng thử tự động hóa một số việc đơn giản. Mình sẽ viết một cái script lấy bài từ Subreddit r/listentothis và post sang Facebook Page bằng NodeJS mỗi giờ một lần. Series gồm hai phần: Viết script Tự động hóa bằng Heroku Code nào Đầu tiên là mình sẽ viết một script để nó tự động lấy bài bên Subreddit và post sang Facebook Page. Các bước cụ thể sẽ như sau: Tạo dự án Config Api của Đít đỏ Lấy random post từ Subreddit r/listentothis Config Facebook Page API Post status lên Facebook Page Tạo dự án Ở đây mình sẽ sử dụng NodeJS cùng một số package như snoowrap cho Reddit API và node-fetch để post bài lên...

By stationd