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

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

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

وبلاگ ما را دوست دارید؟
ربات تلگرامی ما
آخرین نظرات


۳۵ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

range در پایتون

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

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

  • فاروق کریمی زاده
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;
}
  • فاروق کریمی زاده

چند وقت پیش میخواستم چند تا اسکریپت پرل را تست بکنم و در حال نوشتن یک برنامه ساده با پرل بودم که مجبور شدم آپاچی را نصب و پیکره‌بندی بکنم.

نکته: فکر نمیکنم لازم به ذکر باشه که باید دسترسی ریشه داشته باشید.

نکته: با توجه به اینکه من از اوبونتو ۱۶.۰۴ استفاده میکنم شاید نیاز باشه تا بعضی دستورات را با توجه به توزیع خود تغییر دهید.

نکته:‌ اگر کمی باهوش(یا باتجربه؟) باشید میتوانید با توجه به این آموزش آپاچی را برای ویندوز و سایر شبه یونیکس ها هم پیکره‌بندی بکنید.

برای اینکار اول آپاچی را نصب کنید(در توزیع شما ممکن است متفاوت باشد):

apt install apache2

حال آدرس localhost یا 127.0.0.1 را در مرورگر وارد بکنید، اگر صفحه It works ظاهر شد پس آپاچی به درستی نصب شده است. حال این دو خط را به فایل /etc/apache2/apache2.conf اضافه کنید:

AddHandler cgi-script .cgi .pl
ServerName 127.0.0.1

حال این بلاک را پیدا کنید:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

و آنرا به این تغییر دهید:

<Directory /var/www/>
    Options Indexes FollowSymLinks
ExecCGI
    AllowOverride None
    Require all granted
</Directory>

حال باید ماژول cgi را با این دستور فعال بکنید:

a2enmod cgi

و سرویس مربوط به آپاچی را از نو راه‌اندازی بکنید(در توزیع شما ممکن است متفاوت باشد):

service apache2 restart

پایان!

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

نویسنده: محمد رضا حقیری

انتشار: ۸ اسفند ۱۳۹۳

تعداد صفحات:‌۵۴

این کتاب زبان روبی را آموزش میدهد، شاید تنها ایرادی که میتوانم به آن بگیرم «صحبت نکردن در مورد کتابخانه ها» است. با اینحال با درست خواندن کتاب میتوانید به تسلط به زبان روبی برسید(گفته خود کتاب)


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

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

رمزنگاری ویجنری یک روش رمز نگاری هست که به دلیل استفاده از کلید نسبتا امنه ولی قبلا شکسته شده است. من قبلا هم این کتابخانه رو درست کرده بودم ولی این بار با الگوریتمی جدید این کتابخانه رو نوشتم. سورس کامل این کتابخانه که با زبان #C نوشته شده در انتها برای دانلود گذاشته شده است.

 

 

 

  • بهنام سیم جو

کیو بیسیک(QBASIC) یکی از قدیمی ترین نرم افزار های برنامه نویسی بیسیک است.این نرم افزار در سال 1991 توسط مایکروسافت ارائه شد و همراه با سیستم عامل ام اس داس بصورت پیشفرض نصب میشده است.این برنامه یک راهنمای جامع و کاربردی نیز همراه خود دارد که شامل آموزش بیسیک و دستورات کیو بیسیک است.الآن شما می توانید کیو بیسیک را با حجمی بسیار کم و ناچیز در مقایسه با برنامه های امروزی دانلود کنید.این برنامه کوچک بر روی ام اس داس،فری داس،ویندوز ها از 1.0 تا 7 براحتی اجرا میکند.یاد آور شوم که این برنامه روی ویندوز 8 و بالاتر کار نمی کند و اجرا نمی شود و این به تجربه ثابت شده است.

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

فکر کنم اندی پیش بود که یکی از خوانندگان وبلاگ(از خوانندگان پروپا قرص بودن!) گفتند برای چاپ هر تگ اچ تی ام ال داخل پرل باید یک خط بنویسی. الآن که خودم رفتم سراع نوشتن یک اسکریپت cgi با پرل فهمیدم که اینطور میتونید یک رشته‌ی چند خطی رو چاپ بکنید:

print <<'END';
<!doctype html>
<html><body>
This is just a test
</body></html>
END

البته محدودیت هایی هم داره از جمله اینکه نمیتونید از متغیر ها، استفاده بکنید همونطور که استفاده میکردید:

$val = 111;
print "Value is $val\n";
  • فاروق کریمی زاده

قبلا تکه کد مشابهی رو به زبان سی فرستاده بودم. این همونه اما به زبان پایتون.

#!/usr/bin/python3
'''
HexView.Py - A simple File Viewer in Hexadecimal format.
Author: FarooghKZ
Under GPL3+. THIS SOFTWARE COMES WITH NO WARRENTY FROM MAIN AUTHOR.
'''

import sys # I inlcude this to use sys.exit() and sys.argv

def showhelp(): # this function shows usage of program
    print("Usage: hexview.py file_path\n\tfile_path: Path of file to view.");
    sys.exit()

if '-h' in sys.argv: #shows help if something like this passed to program: 'hexview.py -h'
    showhelp()

path = sys.argv[1]
filestream = None
fbytes = None

try:
    filestream = open(path,'br') # Open the file in Binary mode for Reading(br)
    fbytes = filestream.read() # Read all bytes from the file 
finally:
    if filestream:
        filestream.close()

rown = 0 
print('')
for b in fbytes:
    s = hex(b).upper()
    s = s.replace('0X','')# "0XBA" => "BA"

    if len(s) == 1: 
        print('0', end='')
    print(s, end=' ')

    rown += 1
    if (rown % 27) == 0:
        print('')

print("\n") # prints 2 newline

پیوند تکه کد در گیت هاب گیست ( برای دریافت به اینجا بروید)

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

این کتابچه خیلی سریع سینتکس پرل رو آموزش میده.کتاب خوبی هست.

حجم: 122 کیلوبایت
  • فاروق کریمی زاده