اگر شماهم توی مخازن دبیانتون احساس کندی میکنید یا با ارور های متعدد 403 و 404 روبرو میشید ، این پست رو تا انتها بخونید D:
حالا این netselect چی هستش؟
از خیلی مدت پیش، کاربرای توزیع هایی مثل آرچ از ابزاری به اسم reflector استفاده می کردن. این ابزار توی ویکی آرچ هم اسمش اومده و یکی از پر استفاده ترین ها برای انتخاب سریع ترین مخزن ممکن توی آرچه.
من خودم تا مدت ها نمیدونستم که برای دبیان هم همچین چیزی وجود داره، (توی اوبونتو میشه از برنامه گرافیکی که برای مدیریت مخازن هست ، سریعترین مخزن ممکن رو انتخاب کرد. همچین برنامه ای در دبیان به صورت پیشفرض و با همون پشتیبانی وجود نداره) تا اینکه به واسطه یکم دبیان گردی با این ابزار آشنا شدم. کارش این هستش که مثل reflector سریعترین مخزن apt رو برای شما انتخاب میکنه.
نصب و راهاندازی
برای نصب netselect کافیه که دستور زیر رو داخل ترمینال اجرا کنید:
sudo apt install netselect-apt
بعد از اینکه نصبش کردین بریم تا کار رو باهاش یادبگیریم 🙂
طریقه استفاده
برای استفاده از این دستور کافیه توی ترمینال
sudo netselect-apt
رو اجرا کنیم.
حالا چه امکاناتی داره؟
تعیین نسخه / کدنیم دبیان
به عنوان مثال برای اینکه تعیین کنیم مخازنی که برای ما پیدا میکنه برای کدوم نسخه از دبیان باشه (مثلاً دبیان sid یا testing) باید جلوی دستور کدنیم دبیان روهم بنویسیم:
sudo netselect-apt stable
دستور بالا میاد و مخازن سریع رو برای دبیان پایدار پیدا میکنه.
تعیین کشور
همینطور شما میتونید توی این دستور تعریف کنید تا مخازن مخصوص یک کشور رو برای شما لیست کنه:
sudo netselect-apt -c country
برای مثال من میخوام سریعترین مخزن ممکن که داخل ایران هستش رو برای خودم تنظیم کنم:
sudo netselect-apt -c iran
یک معماری دیگه؟
بله درست خوندید D: شما میتونید با netselect حتی مخازن مخصوص یک معماری دیگه روهم دریافت کنید:
مثلا من اگه بخوام سریعترین مخزن برای معماری ۳۲ بیتی رو پیدا کنم ، باید از فلگ a- و یا arch– استفاده کنم:
sudo netselect-apt -a i386
و یا
sudo netselect-apt --arch i386
بعد از اجرای این دستور سریعترین مخزن ۳۲ بیتی برای ما انتخاب میشه.
دیگه چه فلگ هایی داره؟
یک فلگ برای تنظیم مخازن غیررایگان (non-free) و یا فعال کردن مخازن سورس (deb-src) وجود داره.
برای مثال اگه من بخوام یک مخزنی رو پیدا کنم در ایران، برای معماری ۳۲ بیتی به همراه مخازن غیررایگان و سورس باید دستور رو با فلگ های زیر اجرا کنم:
sudo netselect-apt -a i386 -c iran -n -s stable
فلگ n- برای فعال کردن مخازن non-free و فلگ s- برای فعال کردن مخازن سورس به کار میرن 🙂
همینطور اگر مایل بودید man-page این دستور رو به صورت آنلاین و یا از طریق خود ترمینال با وارد کردن دستور زیر میتونید بخونید:
man netselect-apt
سلام! به مسئلهای برخوردم که نیاز داشت یه آرایه با طول نامعلوم رو از کاربر بگیریم. اینطوری که کاربر شروع میکنه به وارد کردن ورودیها تا زمانی که کلمه end رو بزنه و تموم کنه. مسئله سادهای هست و در کل زیاد چیز شاخی نیست!!
چالشش اینه که ما تعداد اعضا رو نمیدونیم و طول آرایه هم ثابته کنه، پس در حالت عادی مجبوریم ورودیها رو بریزیم تو یه لیست تا آخرش که کار کاربر تموم شد همه رو مثلا منتقل کنیم به یه آرایه با طول لیسته، یعنی داریم دو بار هر عضو رو بررسی میکنیم که هزینه زمانی اینجا میشه 2n(معادل O(n)) از طرفی توی زبانی مثل C که اصلا لیست نیست و باید مثلا از SLL(به انگلیسی: Singly Linked List و به فارسی: فهرست پیوندی یکطرفه) استفاده کرد.
#include <stdio.h>
#include <stdlib.h>
double* rec(int i) {
char input[100]; // Adjust the input string size as needed
fgets(input, sizeof(input), stdin);
if (strcmp(input, "end\n") == 0) {
double* result = (double*)malloc(i * sizeof(double));
return result;
}
double* arr = rec(i + 1);
sscanf(input, "%lf", &arr[i]);
return arr;
}
int main() {
double* result = rec(0);
// Printing the result
for (int i = 0; result[i] != 0.0; ++i) {
printf("%lf ", result[i]);
}
free(result); // Free the allocated memory
return 0;
}
مشابه این کد در پایتون به این شکل نوشته میشود(برای آرایه از numpy استفاده شده).
from numpy import np
def rec(i=0):
inp = input()
if inp == "end":
return np.zeros(i)
arr = rec(i + 1)
arr[i] = int(inp)
return arr
در واقع این شیوه به شکلی هوشمندانه از پشته(به انگلیسی: stack) خود سیستم برای ذخیره موقتی اعضا و شمارش آن ها استفاده میکنه. اما باید دقت کنید که این روش نامحدود هم نیست چون به اندازه پشته محدود میشه.
هیچ میدونستین که تو پایتون میتونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3]
نوشت؟ یعنی میتونی خیلی راحت لیست ها رو باهم مقایسه کنی.
اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیمجو همراه باش تا برات بگم ماجرا چیه!
یکی از ترفند های کدزنی که برنامهنویسان حرفهای معمولا از آن استفاده میکنند استفاده از or و and به جای شرط است. بله درست متوجه شدید، به جای شرط. این ترفند ممکن است باعث شود تا کد شما خوانا نباشد و حتی توصیه شده نیست ولی ترفند به شدت جذابیست که میتواند در خلاصه نویسی کد تاثیر زیادی داشته باشد. این روش در بسیاری زبان ها مانند C, JavaScript, Python و … کاربرد دارد. پس با ما همراه باشید تا این تکنیک زیبا و جذاب را یاد بگیرید.
این مطلب یک نسخه بهروز شده از یک مطلب قدیمی وبلاگ کرمهای کامپیوتر هست. البته هدف ما هیچ وقت خرابکاری و خصوصا آموزش آن نبوده و نیست. در این مورد نیز سیستم هایی که از نرمافزار های ضد خرابکاری استفاده میکنند مانع از بروز مشکل میشوند؛ به نوعی اگر مدیر سیستم به فکر تامین امنیت نبوده باشد با این حفره باید فاتحهی سیستم را بخواند!