کرم های کامپیوتر

select your language
کرم های کامپیوتر

کلی مطلب داریم براتون درباره کامپیوتر و برنامه نویسی.

وبلاگ ما را دوست دارید؟
ربات تلگرامی ما
آخرین نظرات
  • ۱۰ ارديبهشت ۹۶، ۲۲:۳۲ - .. Elcerodito ..
    چه شود !


۷۴ مطلب توسط «فاروق کریمی زاده» ثبت شده است

این پرونده های ایمیج مربوط به ویندوز ۳.۱۱ - آخرین ویندوز مایکروسافت که برای نصب نیاز به داس داشت - هستند(عنوان کاملش:‌ Windows 3.11 for Workgroups)، جمعا ۸ عدد ایمیج ۱.۴۴ مگابایتی برای فلاپی دیسک های قدیمی وجود داره. شاید هوس بکنید به چند دهه قبل برگردید!

  • فاروق کریمی زاده

اگر شما با خط‌فرمان لینوکس زیاد کار میکنید و شل شما بش است با ترفند هایی که در این مطلب آموزش داده میشود میتوانید سرعت و کارایی خود را زمانی که با خط‌فرمان کار میکنید افزایش دهید.

دستور history

این دستور ساده تاریخچه‌ی بش شما را به نمایش میگزارد:

history

خروجی چیزی مانند شکل زیر خواهد بود:

  • فاروق کریمی زاده

چند وقتی بود که این مخزن رو توی گیت‌هاب به لیست علاقه‌مندی ها اضافه کرده بودم، این دستورات برای راه اندازی یک وب سرور ساده‌ی HTTP برای محتویات ایستا هستند(یعنی CGI و PHP و اینا پر!). این سرور ها همه به پورت ۸۰۰۰ گوش میدهند.

  • پایتون ۳
python3 -m http.server 8000
  • پایتون ۲
python -m SimpleHTTPServer 8000
  • روبی
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd).start'
  • روبی ۱.۹.۲ و بالاتر
ruby -run -ehttpd . -p8000
  • پی اچ پی
php -S 127.0.0.1:8000
  • بازی‌باکس
busybox httpd -p 8000
  • پاورشل
$Hso=New-Object Net.HttpListener;$Hso.Prefixes.Add("http://+:8000/");$Hso.Start();While ($Hso.IsListening){$HC=$Hso.GetContext();$HRes=$HC.Response;$HRes.Headers.Add("Content-Type","text/plain");$Buf=[Text.Encoding]::UTF8.GetBytes((GC (Join-Path $Pwd ($HC.Request).RawUrl)));$HRes.ContentLength64=$Buf.Length;$HRes.OutputStream.Write($Buf,0,$Buf.Length);$HRes.Close()};$Hso.Stop()

یا اگر خواستید با Command Prompt اجراش بکنید:

PowerShell.exe -nop -enc JABIAHMAbwA9AE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAEgAdAB0AHAATABpAHMAdABlAG4AZQByADsAJABIAHMAbwAuAFAAcgBlAGYAaQB4AGUAcwAuAEEAZABkACgAIgBoAHQAdABwADoALwAvACsAOgA4ADAAMAAwAC8AIgApADsAJABIAHMAbwAuAFMAdABhAHIAdAAoACkAOwBXAGgAaQBsAGUAIAAoACQASABzAG8ALgBJAHMATABpAHMAdABlAG4AaQBuAGcAKQB7ACQASABDAD0AJABIAHMAbwAuAEcAZQB0AEMAbwBuAHQAZQB4AHQAKAApADsAJABIAFIAZQBzAD0AJABIAEMALgBSAGUAcwBwAG8AbgBzAGUAOwAkAEgAUgBlAHMALgBIAGUAYQBkAGUAcgBzAC4AQQBkAGQAKAAiAEMAbwBuAHQAZQBuAHQALQBUAHkAcABlACIALAAiAHQAZQB4AHQALwBwAGwAYQBpAG4AIgApADsAJABCAHUAZgA9AFsAVABlAHgAdAAuAEUAbgBjAG8AZABpAG4AZwBdADoAOgBVAFQARgA4AC4ARwBlAHQAQgB5AHQAZQBzACgAKABHAEMAIAAoAEoAbwBpAG4ALQBQAGEAdABoACAAJABQAHcAZAAgACgAJABIAEMALgBSAGUAcQB1AGUAcwB0ACkALgBSAGEAdwBVAHIAbAApACkAKQA7ACQASABSAGUAcwAuAEMAbwBuAHQAZQBuAHQATABlAG4AZwB0AGgANgA0AD0AJABCAHUAZgAuAEwAZQBuAGcAdABoADsAJABIAFIAZQBzAC4ATwB1AHQAcAB1AHQAUwB0AHIAZQBhAG0ALgBXAHIAaQB0AGUAKAAkAEIAdQBmACwAMAAsACQAQgB1AGYALgBMAGUAbgBnAHQAaAApADsAJABIAFIAZQBzAC4AQwBsAG8AcwBlACgAKQB9ADsAJABIAHMAbwAuAFMAdABvAHAAKAApAA==
  • شل
while true ; do nc -l 8000 < test.html ; done

نسخه پاورشل را خودم امتحان نکرده ام.

منبع و همچنین دستورات بیشتر برای اجرای وب سرور در گیت‌هاب گیست

  • فاروق کریمی زاده

nload یک برنامه‌ی ساده و کم حجم تحت خط‌فرمان برای لینوکس، مک، فری بی اس دی، سولاریس و سایر (شبه) یونیکس ها هست که ترافیک شبکه را برای هر کارت شبکه مانیتور میکند، با کلید ها جهت دار میتوانید بین کارت شبکه ها جابجا بشوید.

  • فاروق کریمی زاده
  • فاروق کریمی زاده

range در پایتون

۰۶
فروردين
range([start,]end)
range(start, end[, step])

تابع range در زبان پایتون یک مجموعه از اعداد را از start تا end-1 بر میگرداند و در صورتی که start ذکر نشود، آن بصورت پیشفرض ۰ است.step نیز مشخص میکند که چند بار چند بار بریم جلو، که بصورت پیشفرض ۱ هست.

  • فاروق کریمی زاده

فکر نمیکنم نیازی به توضیح باشه، جز اینکه این هم برای ویندوز های ۳۲ بیتی و هم ۶۴ بیتی هست،نسخه‌ی برنامه 1.11 هست و تحت پروانه فراگیر همگانی گنو، نسخه دوم(GPLv2) منتشر شده است.


حجم: 107 کیلوبایت

  • فاروق کریمی زاده
enumerate در واقع یک کلاس هست و کاربرد اصلیش در حلقه‌ی for هست. برای این به کار میره که همزمان که عناصر یک مجموعه رو میخونید، یک متغیر داشته باشید که در هر دور حلقه یک واحد افزایش پیدا بکنه، یک کاربرد دیگه اینه که همزمان که مقادیر یک مجموعه رو میخونید، شماره index مقادیر رو هم داشته باشید(با صفر قرار دادن اون متغیر).سینتکس کلی بصورت زیر هست:
enumerate(myCollection, [start])

و در حلقه‌ی for میتونید به این صورت استفاده بکنید ازش:

for enum, value in enumerate(myCollection, [start]):
loop_statments

start شماره‌ی شروع رو مشخص میکنه و بصورت پیشفرض برابر با صفر قرار داده میشه. این تکه کد عناصر یک لیست رو دوبرابر میکنه(روش بهتری هم برای دوبرابر کردن عناصر یک لیست وجود داره، اما خواستم یک مثال از کاری که میتونیم با این بکنیم ارائه بدم):

myList = [1, 2, 3, 4, 5]
for index, value in enumerate(myList):
myList[index] = value * 2

این هم یک کد دیگه با خروجیش:

myList = [2, 3, 4, 5]
for i, v in enumerate(myList, -1):
print(i, v)

خروجی:

-1 2
0 3
1 4
2 5

مطالب مرتبط:

  • فاروق کریمی زاده

این نوع حلقه که در c++11(همون C++0x) معرفی شد، الآن در زبان های برنامه نویسی جاوا، سی شارپ، پایتون، پرل و روبی وجود دارد، حلقه for-each برای انجام دادن یک عمل برای تمام اعضای یک مجموعه - مثلا یک آرایه - است، کد زیر را در نظر بگیرید:

int ary[5] = {1, 2, 4, 8, 16};
for (int i = 0; i < 5; i++){
cout << ary[i] << endl;
}

اما با استفاده از حلقه for-each میتوانید کار بالا را بصورت زیر انجام بدهید:

int ary[5] = {1, 2, 4, 8, 16};
for (a : ary){
cout << a << endl;
}

سینتکس کلی بصورت زیر هست:

for ( range_declaration : range_expression ) loop_statement

 در range_declaration باید متغیری رو که هر بار برابر با یکی از عناصر range_expression قرار میگیره رو تعریف بکنید، میتونید از کلمه کلیدی auto(که در C++11) معرفی شد استفاده بکنید یا خودتون یک نوع رو مشخص بکنید:

int ary[5] = {1, 2, 4, 8, 16};
for (auto a : ary){
cout << a << endl;
}

همچنین میتونید از یک نوع ارجاعی استفاده بکنید تا بتونید همزمان عناصر رو تغییر هم بدید:

int ary[5] = {1, 2, 4, 8, 16};
for (int& a : ary){
a *= 2;
}

اما کاری که میتونستید با حلقه for معمولی بکنید و با for-each نمیتونید بکنید، فهمیدن index عنصر فعلی هست، حلقه for-each امکانی رو برای این نداره، لذا باید خودتون یک متغیر تعریف کنید و هر بار افزایش بدیدش.

int ary[5] = {1, 2, 5, 8, 16};
int index = 0;
for (int a : ary){
cout << "Element #" << index++ << " is " << a << endl;
}
  • فاروق کریمی زاده

با sshfs میتونید یک دایرکتوری در سرور رو روی یک دایرکتوری در رایانه محلی تون سوار بکنید(mount) و از این طریق به فایل های روی سرور دسترسی داشته باشید.

sshfs [user@]host:[dir] mountpoint [options]

از همون نام کاربری و رمز عبوری که برای ssh استفاده میکنید، برای sshfs نیز استفاده بکنید.بعد از سوار شدن میتوانید به فایل ها همانند فایل های محلی روی رایانه محلی، دسترسی داشته باشید.برای unmount کردن هم:

fusermount -u mountpoint
  • فاروق کریمی زاده