Welcome to My Blog!

This is Boxer Template Demo Site
Follow Me
Soundcloud là một trong những mạng xã hội âm nhạc phổ biến nhất hành tinh cho đến thời điểm này. Mặc dù cách thức hoạt động của nó cực kỳ đơn giản nhưng trong vòng 7 năm trở lại đây, Soundcloud đã dần dần, chậm rãi chiếm được một vị trí nhất định đối với cả người nghe và các nhạc sỹ, nhà sản xuất âm nhạc trên toàn thế giới.

Gần có một số thông tin đáng tin cậy là Soundcloud sắp đóng cửa vì không có nguồn vốn để duy trì. Với tâm thế người dùng hay nghe nhạc trên SoundCloud mong muốn tải nhạc về máy tính nghe offline mình đã tạo ra công cụ SounDownloader.


Chức năng

  • Tải bài nhạc yêu thích
  • Tải toàn bộ nhạc từ Playlist yêu thích
  • Tải toàn bộ nhạc từ ca sĩ yêu thích


Link tải: SounDownloader
Mã nguồn: https://github.com/longvox/SounDownloader

Mở đầu

Là một lập trình viên, chắc hẳn bạn đã từng ít nhiều nghe tới khái niệm "Độ phức tạp của thuật toán". Rất nhiều người cho rằng độ phức tạp của thuật toán đại diện cho thời gian chạy nhanh hay chậm của 1 chương trình, nhưng liệu đây có phải là 1 quan niệm đúng? Bài viết dưới đây sẽ cho bạn cái nhìn tổng quan về độ phức tạp của 1 thuật toán.

Tại sao cần đo độ phức tạp của thuật toán

Thông thường khi giải quyết 1 bài toán, chúng ta có thể đưa ra các giải thuật khác nhau nhưng sẽ phải chọn một giải thuật tốt nhất. Thông thường thì ta sẽ căn cứ vào các tiêu chuẩn sau:
  • Giải thuật đúng đắn. 
  • Giải thuật đơn giản. 
  • Giải thuật thực hiện nhanh. 
Để kiểm tra tính đúng đắn của 1 giải thuật, ta thường sẽ phải thử nó với một bộ dữ liệu nào đó rồi so sánh kết quả thu được với kết quả đã biết. Tuy nhiên điều này không chắc chắn vì có thể giải thuật này đúng với bộ dữ liệu này nhưng lại không đúng với bộ dữ liệu khác. Tính đúng đắn của 1 giải thuật cần được chứng minh bằng toán, tạm thời chúng ta không đề cập ở đây.

Đối với các chương trình chỉ dùng 1 vài lần thì yêu cầu giải thuật đơn giản sẽ được ưu tiên vì chúng ta cần 1 giải thuật dễ hiểu, dễ cài đặt, ở đây không đề cao vấn đề thời gian chạy vì chúng ta chỉ chạy 1 vài lần.

Tuy nhiên, khi 1 chương trình sử dụng nhiều lần, yêu cầu tiết kiệm thời gian sẽ được đặc biệt ưu tiên. Tuy nhiên, thời gian thực hiện chương trình lại phụ thuộc vào rất nhiều yếu tố như: cấu hình máy tính, ngôn ngữ sử dụng, trình biên dịch, dữ liệu đầu vào, ... Do đó ta khi so sánh 2 giải thuật đã được implement, chưa chắc chương trình chạy nhanh hơn đã có giải thuật tốt hơn. "Độ phức tạp của thuật toán" sinh ra để giải quyết vấn đề này.

Cách để tính độ phức tạp của thuật toán

Độ phức tạp của một thuật toán là 1 hàm phụ thuộc vào độ lớn của dữ liệu đầu vào.Tìm
xem 1 đối tượng có trong danh sách N phần tử hay không?, sắp xếp tăng dần dãy số
gồm N số, ... N ở đây chính là độ lớn của dữ liệu đầu vào

Để ước lượng độ phức tạp của một thuật toán, người ta thường dùng khái niệm bậc O-lớn và bậc Theta (Θ)

1. Big O

Ở đây ta dùng một đại lượng tổng quát là tài nguyên cần dùng R(n). Đó có thể là số lượng phép tính (có thể tính cả số lần truy nhập bộ nhớ, hoặc ghi vào bộ nhớ); nhưng cũng có thể là thời gian thực hiện chương trình (độ phức tạp về thời gian) hoặc dung lượng bộ nhớ cần phải cấp để chạy chương trình (độ phức tạp về không gian).

1.1 Định nghĩa

Giả sử f(n) và g(n) là các hàm thực không âm của đối số nguyên không âm n. Ta nói "g(n) là O của f(n)" và viết là: g(n) = O(f(n)) nếu tồn tại các hằng số dương C và n0 sao cho g(n) <= C * f(n) với  mọi n >= n0

1.2 Cách tính

Độ phức tạp tính toán của giải thuật: O(f(n))

• Việc xác định độ phức tạp tính toán của giải thuật trong thực tế có thể tính bằng một số quy tắc đơn giản sau:

– Quy tắc bỏ hằng số:
T(n) = O(c.f(n)) = O(f(n)) với c là một hằng số dương
– Quy tắc lấy max:
T(n) = O(f(n)+ g(n)) = O(max(f(n), g(n)))
– Quy tắc cộng:
T1(n) = O(f(n))
T2(n) = O(g(n))
T1(n) + T2(n) = O(f(n) + g(n))
– Quy tắc nhân:
Đoạn chương trình có thời gian thực hiện T(n)=O(f(n))
Nếu thực hiện k(n) lần đoạn chương trình với k(n) = O(g(n)) thì độ phức tạp sẽ là O(g(n).f(n))

1.3 Ví dụ

Ví dụ 1:
s = n * (n-1) /2;
Trong ví dụ trên, độ phức tạp của thuật toán là O(1)

Ví dụ 2:
s = 0;                  // O(1)
for (i=0; i<=n;i++){
  p = 1;                // O(1)
  for (j=1;j<=i;j++)
    p = p * x / j;      // O(1)
  s = s+p;              // O(1)
}
Số lần thực hiện phép toán  p = p * x / j  là n(n-1) / 2
=> Độ phức tạp của đoạn code này là O(1) + O(1) + O(n(n-1)/2) + O(1) + O(1) = O(n2)

Ví dụ 3:
 for (i= 1;i<=n;i++) {
    for (u= 1;u<=m;u++)
      for (v= 1;v<=n;v++)
        //lệnh

    for j:= 1 to x do
      for k:= 1 to z do
        //lệnh
}
=> Độ phức tạp của thuật toán này là: O(nmax(nm, x*z))

2. Theta và Omega

Tương tự như Big O, nếu như tìm được các hằng số C, k1, k2 đều dương, không phụ thuộc vào n, sao cho với các số n đủ lơn, các hàm R(n), f(n) và h(n) đều dương và  R(n) >= C.f(n)  va  k1.h(n) =< R(n) <= k2.h(n)  thì ta nói thuật toán có độ phức tạp cỡ lớn hơn Omega(f(n)) và đúng bằng cỡ Theta(h(n))

Chúng ta có thể hiểu Big(O), Omega, Theta như những hàm tiềm cận của hàm tính độ phức
tạp của thuật toán.

Kết luận

Bài viết trên đã đưa ra 1 cái nhìn tổng quan về độ phức tạp của thuật toán. Rằng đó không chỉ đại diện cho thời gian chạy nhanh/ chậm của 1 chương trình mà nó đại diện cho những động thái của hệ thống khi kích thước đầu vào tăng lên.

Hy vọng sau bài viết này, mỗi khi bạn đặt tay viết 1 đoạn chương trình nào đó,
hãy cân nhắc, tính toán để đoạn chương trình có độ phức tạp trong mức cho phép.

Cám ơn các bạn đã dành thời gian đọc bài.

Nguồn tham khảo:


CÂU CHUYỆN

Trong một buổi phỏng vấn kỹ thuật tại công ty XXX, một lập trình viên “lão thành” chịu trách nhiệm phỏng vấn Tèo hỏi Tèo một câu:

“Hãy viết chương trình C tính căn bậc 2 của số nguyên x”

Tèo cười thầm và tự nghĩ “Công ty công nghệ hàng đầu Việt Nam gì mà hỏi một câu dễ vậy. Nó đâu phải là thằng mới học lập trình!”

Và Tèo trong chớp mắt đưa ra ngay lời giải với đoạn code như dưới đây:

#include <stdio.h>
#include <math.h>

int main()
{
    int x;
    printf("Input x: ");
    scanf("%d", &x);
    printf("Sqrt of %d = %f\n", x, sqrt(x));
}
Input x: 3
Sqrt of 3 = 1.732051
Chương trình compiled không có 1 lỗi và kết quả đúng.

Tèo tự tin. Không ngờ công ty XXX nổi tiếng mà lại hỏi một câu ngớ ngẩn đến thế! Nó nghĩ.
Lập trình viên kinh nghiệm nhìn code của Tèo và khen: “Cậu có căn bản!”. Tèo sung sướng và nghĩ rằng mình đã chắc chắn 100% được nhận vào làm việc. Đúng lúc đấy vị lập trình viên già kia hỏi tiếp:

“Cậu hãy trả lời lại câu hỏi trên, lần này không dùng hàm sqrt của thư viện C”

“Chà câu hỏi có vẻ khó hơn. Tèo bắt đầu suy nghĩ. Sau một lúc cậu bắt đầu gãi đầu gãi tai. Làm thế nào để tính bây giờ? Tèo nghĩ mãi nghĩ mãi…”

Hết giờ! Người phỏng vấn Tèo nhận xét: “Cậu vẫn còn phải học nhiều”. Tèo buồn bã vì biết rằng mình đã trượt. Tuy vậy, nó nghĩ dù trượt nhưng nó nên ra về biết thêm 1 điều gì mới, nó liền hỏi người phỏng vấn:

“Làm thế nào tôi có thể tính được căn bậc hai? Phải chăng tôi cần một thuật toán phức tạp với rất nhiều dòng mã?”.

Vị lập trình viên “lão thành” cười và trả lời: “Máy tính làm phép tính rất nhanh, thay vì có câu trả lời tuyệt đối, ta có thể bắt nó đoán câu trả lời cho ta!”. Nhìn mặt Tèo lớ ngớ, vị kỹ sư già vừa cười vừa từ tốn giải thích tiếp.

Căn bậc hai của y được định nghĩa là số x sao cho: x^2 == y hay x = y / x. Nếu x là kết quả thì x = y / x, còn nếu không kết quả sẽ phải là 1 số x’ nằm trong khoảng x và y/x. Ta không biết số này là bao nhiêu, nhưng ta có 1 cách để đoán lấy 1 số trong khoảng này đó là trung bình cộng!

Tèo gật gù.

Ví dụ: cần tính căn bậc 2 của 3. Ta đoán kết quả là 1.0. Kết quả này không đúng rồi, nên đáp số sẽ nằm trong khoảng 1.0 và 3/1.0 = 2.0. Lấy trung bình cộng lần 1 ta có kết quả là 1.5. Lại thử với 1.5 và 3/1.5 = 2.0 ta có kết quả là 1.75! Sau nhiều lần lặp ta sẽ có kết quả tiệm cận với đáp số!

Tèo sáng mắt! Vị kỹ sư cười và tiếp tục.

Vì ta không có kết quả chính xác, nên số lần lặp sẽ là vô hạn. Tuy vậy tại mỗi bước lặp, ta sẽ thử xem kết quả đủ chính xác theo yêu cầu chưa. Ví dụ nếu đáp số hiện tại là x = 1.73, x^2 = 2.99 và ta chỉ cần độ chính xác đến 2 số sau dấu phẩy, thì 1.73 là đáp án phù hợp. Do vậy ta sẽ có chương trình tính căn bậc 2 như sau:

#include <stdio.h>
#include <math.h>
#define PRECISE 0.0001f
double mysqrt(int x)
{
    double guess = 1.0f;
    while (fabs(guess*guess - x)/x >= PRECISE)
        guess = (x/guess - guess) / 2 + guess;
        //or guess = (x/guess + guess) / 2;
    return guess;
}

int main(void)
{
    int x;
    printf("Input x: ");
    scanf("%d", &x);
    printf("Sqrt of %d = %f\n", x, mysqrt(x));
    return 0;
}

Input x: 3
Sqrt of 3 = 1.732051

Tham khảo

Nếu máy tính của bạn đã bị lây nhiễm, mã độc có thể lây lan tới trang web của bạn thông qua trình soạn thảo văn bản và client FTP. Dùng các mật khẩu yếu cũng dễ bị tấn công bằng phương pháp Brute Force và sử dụng mạng không an toàn để truy cập Internet có thể khiến bạn đối diện với hacker.

Là một chủ trang web, bạn phải xem xét các tác động lớn hơn của việc bảo mật cá nhân. Thói quen bảo mật trong mọi khía cạnh của truyền thông kỹ thuật số sẽ bảo vệ bạn, trang web và khách truy cập của bạn.


Điều đầu tiên trong phòng thủ - Trình duyệt


Trình duyệt web là nguồn lây nhiễm phổ biến nhất cho các thiết bị số và máy tính. Mặc dù các tệp đính kèm email và các liên kết độc hại vẫn là vấn đề, song hầu hết các virut, ransomware và các chương trình không mong muốn đều lây lan thông qua việc truy cập các trang web bị tấn công hoặc chứa mã độc.

Đảm bảo trình duyệt của bạn được định cấu hình đúng cách là việc quan trọng. Điều này áp dụng với bất kể hệ điều hành nào mà bạn sử dụng.

1. Chọn một trình duyệt


Không phải tất cả trình duyệt đều được tạo ra như nhau. Hầu hết các trình duyệt đều cung cấp sẵn các tùy chọn bảo mật có thể cải thiện bảo mật đáng kể, nhưng nhiều trình duyệt được xây dựng để đáp ứng nhu cầu hoặc thu thập thông tin cá nhân.

Ví dụ, Microsoft và Apple cần tạo ra các trình duyệt (IE/EdgeSafari) để người dùng các thiết bị của họ có thể truy cập Internet. Ngày nay, nhiều người sử dụng những trình duyệt này chỉ để tải Google Chrome và Firefox như một sự thay thế.

Google Chrome là trình duyệt phổ biến nhất hiện tại. Nó khá tuyệt vời về bảo mật, nhưng quyền riêng tư lại là một vấn đề khác. Google theo dõi hành vi duyệt web và dữ liệu người dùng của bạn để xây dựng hồ sơ tiếp thị khác nhau. Điều này giúp cải thiện mạng lưới quảng cáo Adsense của Google, cho phép các nhà quảng cáo nhắm mục tiêu tới bạn bằng những quảng cáo mà bạn sẽ quan tâm nhiều hơn.

Tôi sử dụng Mozilla Firefox bởi vì nó là mã nguồn mở, cung cấp nhiều extension bảo mật hơn và có ít vấn đề về quyền riêng tư hơn so với các trình duyệt khác.

Trước đây tôi cũng đã thử nhiều trình duyệt khác tập trung vào bảo mật và quyền riêng tư được tạo dựa trên Chromium. Vấn đề là cứ mỗi khi có một cập nhật, những trình duyệt này có thể mất vài tuần để vá (vì chúng phụ thuộc vào Chromium). Điều này nghĩa là trình duyệt của bạn có các lỗ hổng bảo mật và bạn thì phải trông chờ vào các nhà phát triển.

2. Cài đặt và thiết lập duyệt web


Đối với phần này, tôi sẽ tập trung vào tinh chỉnh Firefox Preferences để tăng cường bảo mật và quyền riêng tư, nhưng nhiều trong số các bước này có thể thực hiện tương tự trong các trình duyệt khác và ý nghĩa của từng tùy chọn sẽ được tôi giải thích.

Cập nhật:

Trước tiên, hãy vào Firefox > About Firefox và đảm bảo rằng bạn thấy Firefox is up to date để biết mình đang dùng phiên bản mới nhất. Giống như các trang web của bạn, việc giữ mọi phần mềm được cập nhật là rất quan trọng để chắc chắn bạn có các bản vá bảo mật mới nhất.

Nếu bạn đang xem Firefox > Preferences > Advanced > Update, bạn nên chọn hộp kiểm Automatically install updates (recommended: improved security) cũng như hộp kiểm Search Engines để chúng được cập nhật tự động.

Các chứng nhận:

Một vài trang web yêu cầu bạn tự định danh bằng một chứng nhận cá nhân. Để đảm bảo thông tin này không hiển thị tự động, hãy xem Advanced > Certificates và thay đổi tùy chọn When a server requests your personal certificate thành Ask me every time.

Để đảm bảo rằng các chứng chỉ SSL có hiệu lực trên các trang web bạn truy cập, bạn cũng nên đánh dấu hộp kiểm Query OCSP responder servers to confirm the current validity of certificates.

Bảo mật dữ liệu:

Vẫn trong Advanced Preferences, ở mục Network > Data Choices, tôi bỏ chọn tất cả các hộp kiểm. Điều này đảm bảo rằng Mozilla không thu thập bất kỳ thông tin nào về thói quen duyệt web của tôi.

Bảo vệ chuyển hướng:

Theo mặc định, hầu hết các chuyển hướng sẽ tự động mở trong tab hoặc cửa sổ mới. Điều này bao gồm các cửa sổ pop-up và nội dung độc hại tiềm ẩn. Trong tab General của Firefox Preferences, hãy chọn tùy chọn Warn you when websites try to redirect or reload the page. Điều này đảm bảo rằng các chuyển hướng không mong muốn sẽ không được mở và thực thi nội dung độc hại trừ khi bạn nhấp vào một nút để xác nhận việc chuyển hướng của trang.

3. Thiết lập và tùy chọn bảo mật


Trong Firefox Preferences > Security, tôi đánh dấu vào 4 hộp kiểm đầu tiên. Tất cả tùy chọn này như là biện pháp phòng vệ chống lừa đảo và tải về phần mềm không mong muốn.
Tiếp theo, nhấn vào nút Exceptions bên cạnh Warn you when sites try to install add-ons và xóa mọi trang được liệt kê ở đây (bao gồm cả trang của Mozilla Firefox). Bằng cách này, mọi add-on sẽ phải được bạn cấp quyền trước khi sử dụng trong trình duyệt của bạn.

Trong mục Logins, hãy đảm bảo bạn bỏ chọn cả hai hộp kiểm và nhấn nút Saved Logins và xóa mọi thứ đã được lưu ở đây.
Giữ các mật khẩu lưu trữ trong trình duyệt của bạn KHÔNG BAO GIỜ là một ý tưởng hay. Nhiều trình duyệt lưu trữ chúng dưới dạng văn bản thuần, cho phép malware lấy chúng và chiếm đoạt các tài khoản của bạn. Hãy sử dụng một trình quản lý mật khẩu thay thế!

Hình chụp dưới đây là cách mà tôi cấu hình phần Privacy. Điều này bao gồm việc sử dụng Tracking Protection và cấu hình tùy chỉnh để xử lý lịch sử trình duyệt. Bằng cách đảm bảo rằng các cookie không được chấp nhận và bị xóa khi tắt trình duyệt, tất cả các phiên đăng nhập đang hoạt động sẽ được hủy bỏ giúp ngăn chặn việc chiếm quyền kiểm soát phiên (session hijacking).
Trong mục Content Preferences, tôi đánh dấu vào hộp kiểm Block pop-up windows và một lần nữa, hãy chắc rằng bạn xóa mọi thứ được liệt kê trong nút Exceptions.

Đối với Search Preferences, tôi xóa bỏ mọi máy tìm kiếm và thêm Startpage như máy tìm kiếm mặc định và duy nhất. Một số người quan tâm đến bảo mật cũng thích DuckDuckGo vì nó cũng xử lý quyền riêng tư của người dùng tốt hơn nhiều so với các máy tìm kiếm khác.

Trong phần cuối của General Preferences, đánh dấu vào hộp kiểm Always check if Firefox is your default browser - và cá nhân tôi thích khi Firefox khởi động thì nó mở một trang trắng vì thế tôi chọn Show a blank page. Chúng tôi đã thấy các trường hợp trang web bị lây nhiễm có thể sửa đổi lịch sử trình duyệt của bạn, vì thế các cài đặt này đảm bảo rằng bạn luôn mở ra một tập hợp các trang mới khi khởi động trình duyệt.

4. Add-on và phần mở rộng


Trong mục Firefox Tools > Addons > Services, tôi không cài đặt bất cứ thứ gì.

Trong Addons > Plugins, tôi chỉ cài Cisco Video Codec nhưng thiết lập nó thành Never Activate. Rất nhiều người có Shockwave Flash và các plugin khác trong phần này. Tôi khuyến cáo gỡ bỏ hoặc vô hiệu hóa chúng - đặc biệt là Flash vì nó có một lịch sử các vấn đề về bảo mật. Ít nhất, bạn nên đặt chúng thành Ask to Activate để bạn được thông báo trước khi kích hoạt plugin.

Các phần mở rộng được khuyên dùng

Dưới đây là danh sách các tiện ích mà tôi hiện đang sử dụng để bổ sung bảo mật:



Sau đây là một phân tích nhanh về những gì mà chúng làm để giúp tôi giữ các phiên duyệt web an toàn nhất có thể.

Tôi sử dụng Disconnect, uBlock OriginNoScript để chặn quảng cáo và các yêu cầu từ các tập tin script độc hại - thường thì tôi tắt tất cả JavaScript, nhưng những tiện ích này sẽ giúp tôi chỉ cho phép các script cụ thể được thực thi nếu tôi cần bật JavaScript.

HTTPS Everywhere là một add-on tuyệt vời để đảm bảo bạn sử dụng HTTPS trên nhiều trang web nhất có thể. Điều này đảm bảo dữ liệu truyền đi đang được mã hóa và bảo vệ tôi khỏi những hacker đang cố xâm nhập bất cứ thứ gì tôi gửi hoặc nhận.

Add-on Self-Destructing Cookies sẽ xoá các cookie sau 10 giây mỗi khi tôi đóng một tab.

Nếu bạn chỉ mới bắt đầu sử dụng add-on, tôi khuyên bạn nên tinh chỉnh các tùy chọn cho Ublock Origin, NoScript và Self-Destructing Cookies như bạn cần để cấu hình và đảm bảo an toàn nhất có thể. Những add-on này sẽ thay đổi cách bạn duyệt web và có thể cần thời gian làm quen dần.

Bạn có thể tìm thấy các add-on tương tự cho các trình duyệt khác, và Firefox còn cung cấp nhiều hơn nữa để bạn có thể lựa chọn. Cũng giống như các plugin cho trang web của bạn, bạn nên xem xét bảo mật khi chọn các tiện ích mở rộng trình duyệt. Chỉ cài đặt chúng từ các nguồn đáng tin cậy và giới hạn chúng với những gì bạn cần.

Bảo mật cá nhân của bạn


Trên đây là tất cả các đề xuất dựa trên thói quen duyệt web cá nhân của tôi. Với tư cách là người có mặt trên các trang web có khả năng bị tấn công, tôi phải thực hiện càng nhiều biện pháp phòng ngừa càng tốt để giữ gìn môi trường của mình.

Giống như mọi thứ khác trong bảo mật, bạn phải cân bằng khả năng chịu đựng rủi ro của mình so với sự tiện lợi. Hầu hết các cải tiến bảo mật đòi hỏi phải thay đổi thói quen thông thường của bạn. Những kiến thức thu được trong việc theo đuổi bảo mật tốt hơn cho chính bạn, trang web và khách truy cập của bạn là một nguyên nhân xứng đáng để thực hiện những điều đó.

Bạn làm gì để bảo vệ trình duyệt và môi trường làm việc? Hãy cho tôi biết bằng cách để lại bình luận phía dưới nhé!

Theo Sucuri.
Dịch Juno_okyo
Tương tác với IDM trong lập trình
Mình định viết bài này trong lập trình AutoIt, tuy nhiên nghĩ lại thì thấy nó áp dụng được trong mọi ngôn ngữ lập trình.

IDM (Internet Download Manager) là một công cụ dễ dàng sử dụng giúp tăng tốc độ tải dữ liệu, tập tin lên tới 500% (giới thiệu từ trang chủ). IDM hiện giờ đã quá nổi tiếng rồi, nên mình sẽ không giới thiệu gì thêm nha! Chúng ta cùng đi vào chủ đề chính của bài viết.

Tương tác với IDM là gì và khi nào cần tương tác?

Tương tác tức là chúng ta sẽ yêu cầu IDM thực hiện một số hành động như: tải một tập tin với URL chỉ định; thêm một URL vào hàng chờ; bắt đầu một hàng chờ tải;… và một số hành động khác mà IDM hỗ trợ.

Tất nhiên là chúng ta không làm thủ công bằng cách nhấn vào nút Thêm URL hay Bắt đầu hàng chờ trên giao diện của IDM, vì bài viết này đang nói về sự tương tác trong lập trình – tức là những yêu cầu trên sẽ được gửi từ phần mềm, ứng dụng của chúng ta tới IDM.

Nếu như bạn muốn viết một phần mềm, ứng dụng như: Tải video từ Youtube, Tải tập tin từ Fshare, Tải nhạc chất lượng cao từ Zing Mp3 hay Nhaccuatui.com,… Nếu như bạn có thể tự xây dựng trình quản lý tải dữ liệu của riêng bạn thì bạn có thể bỏ qua bài viết này. Tuy nhiên, bạn chỉ cần lấy liên kết tập tin và muốn IDM sẽ xử lý việc tải tập tin đó về cho bạn thì đó là lúc mà bạn cần tương tác với IDM.

Tương tác với IDM như thế nào?

Có 2 cách để tương tác với IDM đó là thông qua COM ObjectCommand Line. Trong bài viết này mình sẽ viết về cách tương tác qua Command Line, các bạn có thể tham khảo bài viết về COM Object trên trang chủ IDM tại đây.

Trước tiên, chúng ta cần biết đường dẫn tập tin thực thi của IDM. Mặc định IDM sẽ được cài đặt tại vị trí:
C:\Program Files\Internet Download Manager\IDMan.exe
Vậy nếu người dùng không cài IDM theo đường dẫn mặc định thì sao nhỉ? Giải pháp của vấn đề này là bạn có thể lấy đường dẫn bằng cách đọc dữ liệu từ Registry tại khóa sau:
Key: HKEY_CURRENT_USER\Software\DownloadManager
Value Name: ExePath

Tìm đường dẫn thực thi IDM thông qua Registry

Sau khi đã lấy được đường dẫn thực thi của IDM và lưu vào một biến nào đó tùy bạn. Bây giờ tới phần tương tác!

Ví dụ chúng ta sẽ có một tập tin cần tải tại URL là: http://local.j2team.pro/juno_okyo.exe

Câu lệnh và tham số:
<IDMan.exe> /d URL [/p local_path] [/f local_file_name] [/q] [/h] [/n] [/a]
Ý nghĩa các tham số:

  • Phần màu đỏ là đường dẫn đầy đủ tới IDMan.exe – tập tin thực thi chính của IDM.
  • /d URL – tải một tập tin.
  • /s – bắt đầu hàng chờ tải.
  • /p local_path – đường dẫn tới thư mục sẽ lưu tập tin.
  • /f local_file_name – tên tập tin cục bộ sẽ lưu tập tin (tức là nếu URL chứa tên tập tin là juno_okyo.exe nhưng khi tải xong bạn muốn IDM lưu thành test.exe chẳng hạn thì phải dùng tham số này).
  • /q – IDM sẽ thoát sau khi tải xong tập tin, tất nhiên bạn không thể dùng tham số này khi muốn tải nhiều tập tin (vì tải xong 1 tập tin là IDM thoát luôn).
  • /h – (không rõ).
  • /n – bật chế độ im lặng (bình thường thì IDM sẽ hiện 1 hộp thoại để ta chỉnh sửa tên tập tin, nơi lưu trữ,… Nếu bật chế độ im lặng thì IDM sẽ không hiện bất cứ hộp thoại hay câu hỏi nào).
  • /a – thêm tập tin vào hàng chờ (nếu dùng tham số này thì IDM sẽ không bắt đầu tải tập tin ngay mà chờ tới khi bạn nhấn nút Bắt đầu hàng chờ hoặc gọi tiếp IDM với tham số /s).

Rất dễ hiểu phải không nào? Hãy cùng xem xét một số ví dụ nhé!

Một số ví dụ về tương tới với IDM


Theo: Juno_okyo
Khi còn bé, chúng ta thường nhận được câu hỏi lớn lên muốn làm nghề gì. Nhưng khi trưởng thành, thậm chí ở độ tuổi tứ tuần, có thể đây cũng là một câu hỏi không dễ trả lời.


Phí tổn bạn phải bỏ ra sau mỗi lần trải qua thất bại càng cao, thì bạn lại càng tiến tới gần cái đích "Tôi đến Trái Đất để làm gì vậy?"

Trong hình vẽ này, bạn sẽ thấy một danh sách những người thành đạt không-đi-một-mạch tới đỉnh cao. Họ không học đại học, hoặc không yên vị với một công việc an nhàn, hoặc bế tắc hàng chục năm liền trong cuộc sống.

Tại sao có nhiều người thành công lại từng mất phương hướng trong cuộc sống như vậy? Sao họ không chon đường thẳng và dễ đi mà tiến tới?

Bởi, rõ ràng là không có kế hoạch "vàng" nào cho cuộc đời của mỗi người cả. Người sáng lập ra McDonalds ở tuổi 50 vẫn chỉ đi bán cốc giấy và máy đánh sữa. Một ngày đẹp trời, ông bước vào một quán ăn với burger ngon hảo hạng. Ông mua một chiếc và sau đó xin nhượng quyền kinh doanh thương hiệu này. Việc này có là một phần của kế hoạch? Đương nhiên là không.

Là một người bán cốc giấy thì chẳng tính là một thất bại, nhưng nó cũng không phải là một kế hoạch vàng.

Vậy nên, nếu bạn thành thật thừa nhận mình chưa có một kế hoạch vĩ đại nào cho cuộc đời thì cũng chẳng sao cả. Miễn là bạn còn thở, bạn còn có cơ hội.

Theo saga.vn

Vâng! Tôi biết bạn là một người đam mê máy tính và bạn hầu như sẽ biết các phím tắt máy tính, nhưng chờ đã... Có thể bạn sẽ muốn xem qua 7 thủ thuật máy tính dưới đây.

1. Đừng sử dụng Ctrl+Alt+Del!


Thay vào đó hãy sử dụng  Ctrl+Shift+Esc . Nó sẽ mở trực tiếp Task Manager!

2. Một trang web vô hiệu chuột phải?


Copy đoạn mã dưới đây và tạo một bookmarklets hoặc thực thi từ Console (F12) để kích hoạt lại chuột phải:

javascript:void(document.oncontextmenu=null)

3. Một cách đơn giản để xóa cache của bạn


 CTRL + SHIFT + R  = Xóa cache và tải lại trang.

4. Làm sao để truy cập các trang Paywall?


Một vài trang như washingtonpost.com cho phép bạn đọc một vài bài mỗi tháng trước khi bắt bạn đăng ký. Để tiếp tục, bạn chỉ việc xóa cookie và nó sẽ reset lại bộ đếm số bài đọc của bạn. Thay vào đó, bạn có thể duyệt trong chế độ ẩn danh (Vâng, nó không chỉ dành cho porn!).

* Paywall: từ chỉ các trang bắt bạn phải đăng ký hoặc trả phí để tiếp tục sử dụng/truy cập.

5. Làm sao để tìm các trang web không còn tồn tại?


Thỉnh thoảng, chúng ta tìm thấy một trang web mà giờ đã offline và bạn không thể truy cập được nữa. Hãy copy URL vào archive.org... họ thường có một bản sao.

6. Truy tìm ảnh gốc?

Nhấn phải chuột vào ảnh bất kỳ trên Chrome để truy tìm hình ảnh gốc hoặc những ảnh tương tự.

7. Mở Notepad trên trình duyệt!


Bạn cần một Notepad trên Chrome hoặc Firefox?

data:text/HTML,%20<html%20contenteditable>

Copy và paste đoạn mã này vào thanh địa chỉ. Nó sẽ tạo ra một tab mà bạn có thể viết vào được. Bạn thậm chí còn có thể lưu nội dung.

Nếu thấy hay thì hãy chia sẻ những thủ thuật máy tính này với bạn bè của bạn nhé!


Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Translate

Comments

logo

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin tempus pellentesque consectetur.

Morbi tincidunt commodo dui, eu fringilla dui iaculis ac. Vestibulum viverra iaculis dignissim. Ut condimentum