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 chuyển nhanh toàn bộ công thức MathType sang Equation

Cách chuyển nhanh toàn bộ công thức MathType sang Equation

Bài viết được sự cho phép của blogchiasekienthuc.com Trong bài viết chuyển đổi công thức qua lại giữa MathType và Equation Office mình đã hướng dẫn với các bạn khá chi tiết về cách chuyển đổi công thức MathType sang công thức Equation rồi. Tuy nhiên, phải công tâm mà nói thì cách làm này còn khá là thủ công và nó chỉ áp dụng được với Word 2019 hoặc các phiên bản mới hơn mà thôi… 7 lý do bạn không nên sử dụng TypeScript Học kiến thức căn bản TypeScript chỉ trong 30 phút Biết được nhược điểm này nên mình đã giành khá nhiều thời gian và công sức để tìm hiểu thêm. Và cuối cùng, vào một ngày đẹp trời thì thần may mắn đã dơ tay và mỉm cưới với mình :)) Về cách làm thì chúng ta sẽ thực hiện “đánh lừa” Windows và Word là MathType không được cài đặt trên hệ thống. Khi đó hộp thoại Convert Equation to Office Math sẽ xuất hiện. Hộp thoại này sẽ hỗ trợ chúng ta chuyển nhanh toàn bộ công thức MathType sang Equation một cách tự động hoàn toàn . NOTE: Bài viết này được mình hướng dẫn trên hệ điều hành Windows 10, phiên bản Office 2019 và phần mềm MathType 7.4. Các bạn cũng có thể áp dụng tương tự đối với các phiên bản khác nhé ! #1. Các bước thực hiện chuyển công thức MathType sang Equation + Bước 1: Tắt hoàn toàn MathType nếu bạn đang mở và đóng luôn MathType chạy ngầm trong Taskbar nhé các bạn. Trên thanh Taskbar, bạn hãy mở rộng các icon đang ẩn trên thanh Taskbar ra => nháy chuột phải vào icon biểu tượng MathType => và chọn Exit + Bước 2:...

By stationd
7 tuyệt kỹ giúp lập trình viên đậu phỏng vấn

7 tuyệt kỹ giúp lập trình viên đậu phỏng vấn

Làm thế nào để bạn có thể viết code thật hay khi làm bài test vào vị trí lập trình viên của các công lớn? Theo các chuyên gia phỏng vấn tại Gainlo , phần lớn các ứng viên khi được yêu cầu viết code thử thì chất lượng khá là thấp, bao gồm bug, cách viết dở, phức tạp, không nhất quán,… Một điều đáng quan tâm hơn là nếu bạn có khả năng code gọn và “sạch” thì rất dễ được nhận vào làm bởi vì ứng dụng của bạn sẽ ít bị bug, lỗi mà lại dễ sửa. Trong bài viết này, chúng tôi sẽ đưa ra những tip và trick thực tiễn nhằm giúp bạn cải thiện chất lượng code nhanh nhất có thể. Thậm chí, một số cách chỉ tốn của bạn 30 phút thôi nhưng chúng đều rất hữu ích và không đòi hỏi bạn phải có kiến thức thâm sâu mới làm được. Chọn ngôn ngữ lập trình Đa phần các công ty đều cho phép ứng viên được tự do chọn bất cứ ngôn ngữ nào mà họ thích và thường gặp nhất chính là C++ và Java . Mặc dù chúng không có sự cách biệt mấy bởi cả hai đều quá nổi tiếng, tuy nhiên từ dữ liệu thu thập được, C++ lại có những thế mạnh nổi trội hơn hẳn so với Java. Đầu tiên, C++ có cú pháp ngắn gọn hơn. Các bạn nên biết rằng, thông thường, công ty sẽ chỉ cho khoảng 20 phút để giải một vấn đề code và nếu lược ra khoảng thời gian ta suy nghĩ, thì chỉ còn xấp xỉ 10 phút để code thôi. Như vậy, C++ sẽ cho phép bạn giải quyết vấn đề nhanh hơn và gọn hơn....

By stationd
Hướng dẫn sao lưu, khôi phục data mongo (mongodump, mongorestore)

Hướng dẫn sao lưu, khôi phục data mongo (mongodump, mongorestore)

Bài viết được sự cho phép của tác giả Trần Hữu Cương Hướng dẫn sao lưu, khôi phục data mongo (mongodump, mongorestore) Trong bài này mình sẽ hướng dẫn sao lưu, khôi phục data của mongodb một cách đơn giản nhất. Mong đợi gì từ hội nghị lập trình viên Google IO 2016 (P1) MongoDB là gì? Cơ sở dữ liệu phi quan hệ Xem thêm nhiều việc làm MongoDB lương cao trên Station D Ví dụ mongodump, mongorestore Mongo hỗ trợ 2 cách để sao lưu, khôi phục data là mongodump/mongorestore với mongoimport/mongoexport tuy nhiên mongoimport/mongoexport chỉ dùng cho trường hợp data nhỏ nên ở đây mình chỉ đề cập tới mongodump/mongorestore. 1. Ví dụ mongodump Để sao lưu data thành file .gz ta dùng câu lệnh sau: mongodump --host= { host:port } --authenticationDatabase= { authenticationDatabase } -u= { username } -p= { password } --db= { database } --collection= { collection } --archive= { filename. gz } --gzip --query=<json> (lệnh mongodump còn nhiều tùy chọn khác, tuy nhiên ở đây mình chỉ đưa ra các lựa chon đơn giản nhất để có thể sao lưu data). Trong đó: --host={host:port} --authenticationDatabase={authenticationDatabase} -u={username} -p={password} là thông tin của database mà bạn cần backup lại default host:port sẽ là localhost:27017 nên nếu bạn chạy ở local thì có thể bỏ qua option --host nếu bạn ko cài password cho database thì cũng có thể bỏ qua các option --authenticationDatabase , -u , -p --db : chỉ rõ database bạn muốn backup, nếu ko chọn thì mặc định nó sẽ sao lưu lại tất cả database trên host --collection : chỉ rõ collection bạn muốn backup, nếu bỏ qua thì nó sẽ sao lưu tất cả collection trong database --archive={filename.gz} --gzip : để chọn backup ra file .gz (nếu ko có sẽ...

By stationd
Dynamic Sharding – Nghệ thuật của locator

Dynamic Sharding – Nghệ thuật của locator

Bài viết được sự cho phép của tác giả Kiên Nguyễn Tìm hiểu về Scalable Web, App hay bất cứ nội dung nào khác liên quan tới database tất nhiên không thể bỏ qua khái niệm về Dynamic Sharding. Vậy Dynamic Sharding là gì?. Điều gì làm nên sức mạnh của nó?. Điểm mạnh, điểm yếu. Tất cả sẽ được phân tích cụ thể qua bài viết dưới đây. Bắt đầu ngay thôi nào!. Kết nối Database động với PHP, Dynamic Database Connection! Kiểm thử tĩnh vs kiểm thử động (Static vs Dynamic testing) 1. Dynamic Sharing là gì? Đầu tiên, nhắc tới Sharing là nhắc tới kỹ thuật Scaling. Thường sử dụng cho các hệ thống được thiết kế để scalable (có thể mở rộng một cách nhanh chóng). Vậy Sharding là gì? Sharding involves breaking up one’s data into two or more smaller chunks, called logical shards . The logical shards are then distributed across separate database nodes, referred to as physical shards , which can hold multiple logical shards. Despite this, the data held within all the shards collectively represent an entire logical dataset. Shadring là kỹ thuật sử dụng để phân chia data thành 2 hoặc nhiều hơn các khối nhỏ (chunks), cũng được gọi là logical shards. Các khối logical shards này được phân chia và thuộc về các node database nhỏ. Giống như các khối vật lý, có thể được tồn tại trong đó các khối vật lý. Mặc dù vậy, dữ liệu được giữ trong tất cả các shards đại diện chung cho toàn bộ tập dữ liệu logic. Má, định nghĩa tiếng việt viết ra khéo đọc không ai hiểu. Tốt nhất là anh em nên đọc tiếng anh. Túm cái váy lại thì với Dynamic Sharding, có 2 loại phổ biến...

By stationd
Tuyên ngôn của Agile

Tuyên ngôn của Agile

Bài viết được sự cho phép của vntesters.com Trong phần Agile cơ bản , mình đã giới thiệu cơ bản về Agile với tuyên ngôn Agile ( Agile Manifesto ) và 12 nguyên tắc trong Agile. Trong phần này, mình muốn diễn giải thêm về “Tuyên ngôn Agile” để bạn hiểu thêm về Agile: Messaging App sẽ định hình lại E-commerce Quản lý dự án theo Agile và Scrum cho người mới bắt đầu Bốn tuyên ngôn của Agile như sau: “ Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ” “ Sản phẩm xài được quan trọng hơn tài liệu về sản phẩm” “ Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng” “ Phản hồi với sự thay đổi quan trọng hơn bám theo kế hoạch” 1. “Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ” Ý tưởng là đặt trọng tâm vào con người và sự tương hỗ giữa những thành viên trong nhóm. Cơ bản là nếu dự án có những thành viên có năng lực, chịu làm việc cùng nhau thì sẽ mang đến thành công cho dự án. Nếu dự án của bạn có quy trình làm việc tốt, được hỗ trợ những công cụ tốt nhất nhưng những thành viên không “cùng nhìn về một hướng” thì khả năng dự án thất bại là rất lớn. Nói điều này không có nghĩa là phủ nhận tầm quan trọng của quy trình và công cụ nhưng trong Agile nó được đặt sau yếu tố con người. Có một câu bằng tiếng Anh khá phổ biến nói về điều này là “a fool with a tool is just a fool” 2. “Sản phẩm xài được quan trọng hơn tài liệu về sản...

By stationd
Athenz là gì?

Athenz là gì?

Bài viết được sự cho phép của tác giả Lê Chí Dũng Athenz là open source tập hợp các dịch vụ và thư viện hỗ trợ ủy quyền dựa trên vai trò (RBAC) cho các trường hợp sử dụng và cấu hình (ủy quyền tập trung) cũng như các trường hợp sử dụng / cấp phép (phân quyền). Và được cung cấp LICENSE-2.0 bởi Yahoo Inc từ 2016. ## trong SQL (2 dấu thăng) nghĩa là gì? .NET – Strong Named Assembly là gì? Hệ thống ủy quyền của Athenz sử dụng hai loại token: Principal Token (N-Tokens) và RoleTokens (Z-Tokens) . Tên “Athenz” có nguồn gốc từ “Auth” và các thẻ “N” và “Z”. Website: http://www.athenz.io/ Open source: http://www.github.com/yahoo/athenz Những điểm nổi bật Athenz cung cấp cả chức năng của một hệ thống tập trung và một chứng chỉ và hệ thống phân tán dựa trên IP để xử lý việc thực thi trên hộp. Bạn nhận được những lợi thế sau đây bằng cách sử dụng Athenz: Hồ sơ bảo mật dựa trên dịch vụ: Định nghĩa bảo mật tự động chuyển xuống các máy chủ trong dịch vụ. Cung cấp động: Quy mô nhanh hoặc di chuyển khối lượng công việc xung quanh mà không cần sự can thiệp thủ công (không cấu hình IP). Nguồn chứng thực duy nhất: Hồ sơ dịch vụ hợp nhất phục vụ các triển khai bảo mật khác nhau, bao gồm hỗ trợ cho các thực thể không phải người dùng. Tự phục vụ: Cấu hình thời gian thực và thực thi kiểm soát truy cập dựa trên tài nguyên (khả năng quản lý động). Quan trọng hơn, các kỹ sư sử dụng Athenz và không xây dựng hệ thống kiểm soát truy cập dựa trên vai trò riêng của họ...

By stationd
5 Ngộ nhận về nghề BrSE

5 Ngộ nhận về nghề BrSE

Bài viết được sự cho phép của tác giả Nguyễn Văn Trọng Dạo này có nhiều bạn hay hỏi han mình về 1 số kinh nghiệm trong nghề, hầu hết đều là các bạn trẻ đang học đại học hoặc ra trường 1 vài năm nhưng chưa xác định hướng đi rõ ràng. Khi nói chuyện thì mình phát hiện ra là còn nhiều ngộ nhận về nghề này nên mình mạo muội kể ra 5 điểm cho anh chị em tham khảo. Thiệt sự còn nhiều điều các bạn trẻ chưa hình dung hết trong con đường phía trước nhưng mà mình cực kỳ vui khi biết nhiều thanh niên thanh nữ đang rất máu lửa dấn thân vào nghề “code dạo cầu vinh”, và mình cảm nhận được sự cố gắng của các bạn từng ngày, ham học ham làm chứ không ham chơi như mình hồi xưa Kinh Nghiệm Phỏng Vấn BrSE Những kỹ năng cần có của 1 BrSE 1. BrSE Chỉ Làm Việc Communication (Làm Cầu Nối Liên Lạc) Thực tế kết nối thông tin chỉ là 1 phần trong chuỗi công việc hàng ngày mà BrSE phải đảm nhận. Ngoài việc truyền đạt yêu cầu khách hàng cho team offshore/onsite cũng còn rất nhiều task thú vị khác như đi xin lỗi … giỡn chứ cũng ngồi mày mò code với tìm hiểu công nghệ, support kỹ thuật… 2. BrSE Không Cần Giỏi Công Nghệ Có nhiều bạn thắc mắc rằng “code không cứng có làm được BrSE không ? “, giờ mình hỏi lại “không cao to đẹp trai, không dẻo miệng có cưa được gấu không ? “, thực tế các bạn thấy mấy cu cậu xấu hoắc mà gấu xinh như tiên thường có 1 thế mạnh đặc biệt khác như...

By stationd
Tổng quan về Agile

Tổng quan về Agile

Bài viết được sự cho phép của vntesters.com Phương thức phát triển phần mềm linh hoạt (Agile Software Development) – sau đây được gọi vắn tắt là “Agile” – đã trở nên phổ biến trong ngành phát triển phần mềm. Với những phương phức tổ chức và triển khai mới lạ, năng động và linh hoạt, Agile đã thu hút sự quan tâm lớn của cộng đồng làm phần mềm và dĩ nhiên là một kỹ sư kiểm thử mình không thể nào thờ ơ với Agile được. Trước hết mình xin nói ngay rằng mình không phải là một chuyên gia về Agile cũng không phải là kỹ sư kiểm thử nhiều năm chinh chiến với Agile. Mình chỉ là một kỹ sư kiểm thử với chút kinh nghiệm dự án thực tế và ít kiến thức lụm lặt được về Agile. Tuy nhiên mình vẫn mong muốn được chia sẻ những hiểu biết suy nghĩ của mình và hy vọng nhận được sự chia sẻ từ các anh chị em trong ngành về Agile. Bài viết “Tổng quan về Agile” sau đây là một phần trong một loạt bài giới thiệu về Agile theo cách nhìn của mình, nội dung được tinh giản nhưng hy vọng vẫn giữ được nguyên giá trị của Agile và…chúng ta bắt đầu thôi. Hàng trăm việc làm Agile hấp dẫn nhất Thay đổi tư duy về kiểm thử theo Nguyên lý Agile Phương thức phát triển phần mềm Agile là gì? Wiki định nghĩa như sau: “Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức...

By stationd
Viết React Code sạch hơn như thế nào? (Phần 2)

Viết React Code sạch hơn như thế nào? (Phần 2)

Tác giả: Reed Barger Tiếp tục chuỗi bài chia sẻ về cách viết React code như thế nào để gọn gàng và dễ đọc nhất, các React developers có thể tham khảo thêm phần tiếp theo với bài viết này. Clean React code cùng một số tips dưới đây 5. Xóa càng nhiều JavaScript khỏi JSX càng tốt Một cách khác rất hữu ích nhưng thường bị các devs bỏ qua khi dọn dẹp các thành phần không cần thiết trong code của mình đó là xóa càng nhiều JavaScript khỏi JSX càng tốt. Hãy xem qua ví dụ dưới đây: // src/components/FeaturedPosts.js import useFetchPosts from '../hooks/useFetchPosts.js'; export default function FeaturedPosts() { const posts = useFetchPosts() return ( <ul> {posts.map((post) => ( <li onClick={event => { console.log(event.target, 'clicked!'); }} key={post.id}>{post.title}</li> ))} </ul> ); } Với đoạn code trên chúng ta có thể dễ dàng thấy rằng JSX đã trở nên khó đọc hơn nhiều. Cho rằng hàm được bao gồm như một hàm nội tuyến, vì thế đã khiến mục đích của thành phần này cũng như các chức năng liên quan của nó bị che khuất. Vậy chúng ta có thể làm gì để khắc phục các vấn đề này? Các devs có thể trích xuất hàm nội tuyến, được kết nối với hàm onClick thành một trình xử lý riêng biệt. Khi làm như vậy, JSX có thể đọc được code một lần nữa: // src/components/FeaturedPosts.js import useFetchPosts from '../hooks/useFetchPosts.js' ; export default function FeaturedPosts ( ) { const posts = useFetchPosts ( ) function handlePostClick ( event ) { console . log ( event . target , 'clicked!' ) ; } return ( < ul > { posts . map ( ( post ) => ( < li onClick = { handlePostClick } key = { post...

By stationd
400+ Khoá học Online hot nhất Ivy League “giết thời gian” trong mùa đại dịch

400+ Khoá học Online hot nhất Ivy League “giết thời gian” trong mùa đại dịch

Hệ 08 trường Ivy League là một trong số các trường cao đẳng uy tín hàng đầu trên thế giới. Hệ thống bao gồm các trường ĐH Brown, ĐH Harvard, ĐH Cornell, ĐH Princeton, ĐH Dartmouth, ĐH Yale, ĐH Columbia, và ĐH Pennsylvania. Tất cả 8 trường đều nằm trong Top 15 của Truyền thông Mỹ và Báo cáo toàn cầu (U.S. News and World Report). Các trường Ivy League cũng nổi tiếng về việc chọn lọc rất cao và cực kỳ khó để đậu vào. Nhưng tin tốt là tất cả các trường đại học này hiện đã cung cấp các khóa học trực tuyến miễn phí trên nhiều nền tảng trực tuyến. Các khóa học này có tên là Massive Open Online Courses hoặc được gọi tắt là MOOCs. Đến nay, họ đã cho ra 500 khóa học, trong đó khoảng 450 vẫn còn hoạt động. Class Central đã thực hiện một bộ tổng hợp tất cả những khoá này, bạn có thể khám phá dưới đây. Tôi đã chia các khóa học này thành các loại sau: Computer Science Data Science (Khoa học Dữ liệu) Programming (Lập trình) Humanities (Nhân văn) Business (Kinh doanh) Art & Design Science (Khoa học) Social Sciences (Khoa học Xã hội) Health & Medicine (Y học) Engineering Mathematics (Toán học) Education & Teaching (Giáo dục) và Personal Development (Phát triển bản thân) Tôi cũng đã sắp xếp các khóa học này trên trang tổng hợp của Class Central cho Ivy League MOOCs . Bộ này sẽ được cập nhật tự động mỗi khi các khóa học mới được thêm vào. Bạn có thể đăng ký để nhận được cập nhật mới bằng cách nhấp vào “FOLLOW” màu xanh nút. Lưu ý rằng một số các khóa học Coursera thì hơi khó truy...

By stationd
How to Design System like TinyURL – P1

How to Design System like TinyURL – P1

Bài viết được sự cho phép của tác giả Kiên Nguyễn TinyURL là hệ thống rút gọn link được sử dụng phổ biến trên toàn thế giới. Link dài, link rắc rối, link không muốn người khác nhìn vào là biết?. Tất cả đều được xử lí với TinyURL Một hệ thống như vậy thông thường sẽ xử lí một lượng lớn request phân giải Short URL thành Original URL. Việc phân giải đòi hỏi chính xác, nhanh chóng. 10 kênh Youtube học lập trình không thể bỏ qua dành cho Junior Web Developer / Designer 30 tiện ích Chrome (extensions) cho Designer và Developer Hôm sau Kieblog sẽ giới thiệu chuỗi bài viết thiết kế hệ thống như TinyURL, bao gồm 2 phần. Phần 1: Tổng quan hệ thống, đưa ra giải pháp thiết kế Phần 2: Thiết kế chi tiết, giải quyết các vấn đề thực tế Bắt đầu ngay thôi nào! 1. Về TinyURL System Bản thân Tiny URL là hệ thống rút gọn link. Trường hợp link quá dài, loằng ngoằng không hồi kết, để rút gọn link cho dễ thao tác và sử dụng ta có thể sử dụng Tiny URL. Về mặt bản chất, Tiny URL thực chất là hệ thống implementing a distributed key-value store. Hiện thực hệ thống phân tán, lưu trữ theo cơ chế key-value. Key ở đây được hiểu là short url đã rút gọn. Value là original url trước khi rút gọn. Java makeTinyURL("http://www.yahoo.com?search=what+is+hello+world") = ksfskfh makeTinyURL("http://www.google.com/mail?id=dsbsj234-3rfwd-3e3r..") = djhdhsf Thông qua function makeTinyURL, ta có thể lấy được URL lưu trữ trong hệ cơ sở dữ liệu phân tán (Distributed System). Key -> Value The user can now share tinyurl.com/ ksfskfh. Whenever someone visits that URL, our system will look up the Distributed Database and redirect them to the...

By stationd
Message queue là gì?

Message queue là gì?

Bài viết được sự cho phép của tác giả Lê Chí Dũng Message Queue là một thành phần quan trọng thường sử dụng trong các hệ thống lớn (Ví dụ Yahoo, Tiki) hoặc phần mềm theo kiến trúc microservice . Tuy vậy, nếu không gặp các dự án có hệ thống lớn thì sẽ không biết rõ Message Queue là gì, được sử dụng với mục đích gì! Messaging App sẽ định hình lại E-commerce Xây dựng ứng dụng realtime messaging bằng Firebase như TikTok, Bigo... Messege Queue là gì? Message Queue nôm na là Queue (hàng đợi), chứa Message (Tin nhắn) như hộp thư 😀 Và nó cho phép các thành phần/service trong một hệ thống (hoặc nhiều hệ thống), trao đổi thông tin cho nhau. Ý nghĩa của queue (hàng đợi) là nó thực hiện việc lấy message theo cơ chế vào trước thì ra trước ( First In First Out ). Một hệ thống Message Queue thường có những thành phần sau: Message : Thông tin được gửi (có thể là text, binary hoặc JSON) Message Queue : Nơi chứa những message này, cho phép producer và consumer có thể trao đổi với nhau Producer : Service tạo ra thông tin, đưa thông tin vào message queue Consumer : Service nhận message từ message queue và xử lý Một service có thể vừa làm producer, vừa làm consumer Một số Message queue được dùng hiện nay: Kafka Pulsar RabitMQ ActiveMQ SQS ZeroMQ MSMQ IronMQ Kinesis RocketMQ Thực tế Message Queue được sử dụng thế nào? Trong các hệ thống dùng kiến trúc microservice , ta sử dụng message queue để giúp các service liên hệ với nhau một cách bất đồng bộ . Service X làm xong việc có thể gửi message queue để service Y kích...

By stationd