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





قالب وبلاگ در حال ویرایش شدن!

ممکن است اشکالاتی در قالب پیش بیاید
بنابراین پیشاپیش متاسفیم!

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

من و دوستم دو تا کرمیم که داریم تو سیستم ها وُل می خوریم و بعضی وقت ها براتون چیزایی که تو این وُل خوردن ها یاد گرفتیم رو می نویسیم!!!!!

ربات تلگرامی ما
آخرین نظرات
  • ۲۹ شهریور ۹۷، ۱۴:۱۸ - فرهاد حسن پور
    جالب بود
  • ۱۰ تیر ۹۷، ۲۰:۵۴ - پسر ساده
    داس

چه تغییراتی باید روی وبلاگ اعمال کنیم تا عملکرد و مطالب آن بهبود یابد؟

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

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

botters یک جامعه قدیمی و نسبتا کوچک از توسعه‌دهندگان بات‌های آی‌آر‌سی هست. آنها یک ویکی که شامل مطالب فنی و غیر فنی راجب بات‌ها و همچنین چند کانال IRC(کانال #botters روی فری‌نود کانال اصلی آنهاست)  در این مورد دارند. اگر به ساخت بات آی‌آر‌سی علاقه دارید، این جامعه میتواند به شما کمک کند.

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

تابع qsort از کتاب‌خانه‌ی استاندارد(stdlib.h) از توابع مفید و البته استاندارد هست.این تابع با دادن آدرس آرایه، تعداد اعضا، اندازه‌ی هر عضو و یک تابع برای مقایسه‌ی دو عضو،آرایه  را بصورت صعودی مرتب میکند.

با اینکه این تابع استاندارد هست اما اجباری در پیاده‌سازی آن نیست، به این معنی که qsort ضرورتا همه‌جا(منظور از همه جا دقیقا همه‌جاست! این یعنی ابر‌رایانه‌ها،فبلت‌ها،رایانه‌های شخصی و همچنین میکروکنترلر‌ها مانند AVR و PIC را نیز حساب میکنیم) وجود ندارد.

void qsort(void *base, size_t nmemb, size_t size,
            int (*compar(const void *, const void *)))

  • فاروق کریمی زاده
complex(real_part=0, imag_part=0)
complex(str)

complex یک کلاس توکار برای کار با اعداد مختلط هست. کار با اعداد مختلط مانند کار با اعداد صحیح و اعشاری است و عملگر های جمع،تفریق،ضرب و باقیمانده را میتوانید با آنها استفاده کنید.برای ایجاد یک عدد مختلط به سادگی از الگوی بالا کمک بگیرید.

  • فاروق کریمی زاده
اگر بخواهید مکان فیزیکی یک IP را پیدا کنید، ابزار های آنلاینی برای اینکار وجود دارند اما شاید مثل من پیرو راه بزرگ یونیکس باشید و  خط‌فرمان سریغ‌تر و کم‌هزینه‌تر هم هست.
اینجا دو روش را معرفی میکنم که از طریق خط‌فرمان بتوانید مکان جغرافیایی یک IP را پیدا کنید. روش اول از یک برنامه استفاده میکند که بر اساس یک پایگاه داده و بصورت آفلاین کار میکند و برای شبه یونیکس‌ها شامل گنو/لینوکس،بی‌اس‌دی ها و ... در دسترس هست. روش دوم که از curl و یک API استفاده میکند، نیازمند دسترسی به اینترنت هست و روی اکثر سیستم‌عامل ها قابل استفاده در دسترس هست.
  • فاروق کریمی زاده
os.urandom(n)

تابع os.urandom تعداد n بایت تصادفی برمیگرداند که برای مصارف رمزنگاری و دیگر کاربرد‌ها که اعداد تصادفی با کیفیت‌تر نیاز دارند مناسب است

  • فاروق کریمی زاده
مطمئن نبودم که باید این پست را بنویسم یا نه. بعد از اندکی فکر کردن، دیدم بهتر است این حرف‌ها را به گوش بقیه رسانده و عقیده‌ی خود را ابراز کنم! شاید دلیل نوشتن حداقل بخشی از این پست یک تعصب پنهان به بعضی زبان‌ها و سیستم‌عامل‌ها باشد.بخشی دیگر هم مطالبی بودند که فکر کردم پست بهنام سیمجو به اندازه کافی به آنها نپرداخته یا مبهم نوشته و ...
قبل از هر چیز باید بگم دنیای برنامه‌نویسی بسیار گسترده است و سر‌و‌ته ندارد. کافیست جست‌و‌جویی ساده بکنید تا ببینید چندین زبان برنامه‌نویسی وجود دارد که هرکدام دروازه‌ای به شهری از کد‌ها و الگو هاست.
ویکی‌پدیای انگلیسی در اینجا به تنهایی حدود چند صد زبان را فهرست میکند که البته طبق چیزی که خودش گفته، زبان‌های مجرمانه و نسخه‌های مختلف بیسیک را حساب نمی‌کند. معیار‌های سرشناسی ویکی‌پدیا هم که بماند. اما این زبان‌ها اکثر اوقات(اگر نه همیشه) روی همدیگر بنا می‌شوند. در نتیجه دستور آنها(همان syntax) بسیار شبیه هم هست. در مورد زبان‌هایی مثل سی و سی‌پلاس‌پلاس این قضیه حتی بدتر(یا بهتر؟) هم می‌شود.

تصویر بالا بر اساس اطلاعات ویکی‌پدیای انگلیسی درست شده و نشان می‌دهد چه زبانی از چه زبانی تاثیر پذیرفته است.
همان طور که می‌دانید می‌توان یک مفهوم و معنی را با بی‌شمار زبان و روش گفت. زبان‌های برنامه‌نویسی هم به همین شکل هستند.
این جمله تا حدی درست است اما نه کاملا. برای مثال شعار پایتون «تنها یک راه حل برای یک مسئله» هست. احتمالا بعضی از دیگر زبان‌ها هم تلاش میکنند همینطور باشند.
البته که زبان اصلی رایانه‌ها زبان ماشین است که بسیار سنگین است و برای نوشتن آن نیاز به ریاضیات و محاسبات قوی دارد.
دوباره ترساندن از زبان ماشین یا اسمبلی؟ هر ماشین زبان مخصوص به خودش را دارد. زبان AVR‌ها با ۸۰۵۱ قدیمی و گوشی اندرویدی شما با معماری ARM و ... همه با هم متفاوت هستند.بعضی آسان‌تر و ساده‌تر و بعضی سخت‌تر هستند  اما زبان ماشین ترسناک نیست. اتفاقا تجربه‌ی زبان ماشین جالب و حتی جذاب است و شما را با سخت‌افزار رایانه بهتر آشنا میکند و تفکری متفاوت از زبان‌های معمول مانند سی و بیسیک به شما می‌دهد.
به طور کل زبان پایتون بهترین و قابل فهم‌ترین زبان برای آغاز برنامه نویسی است. زبان پایتون زبانی ساده و در عین حال کارآمد ولی متنی است یعنی خروجی آن تنها به صورت متنی نمایش داده می شود و تا آنجا که من می دانم رابط گرافیکی ندارد.
در این مورد مطمئن نیستم. شخصا فکر میکنم دلایل دیگری هم هست که افراد زیادی پایتون را برای شروع پیشنهاد میدهند: پایتون هم بدرد یادگیری برنامه‌نویسی میخورد و هم میتوانید بعدا آنرا واقعا استفاده کنید.میتوانید این ویژگی پایتون را با بیسیک مقایسه کنید. یک دلیل دیگر «عادت های خوب» هست. مثلا پایتون برنامه‌نویس را مجبور میکند که از دندانه‌گزاری(indentation) استفاده کند که این در دیگر زبان‌ها نیز یک عادت خوب تلقی می‌شود و برای خوانایی بهتر کد توصیه می‌شود.
و در مورد متنی بودن، برای پایتون نیز مانند بسیاری از زبان‌های برنامه‌نویسی کتابخانه و ماژول و چهارچوب وجود دارد. همچنین مانند بسیاری از دیگر زبان‌ها، برنامه‌نویسی رابط کاربری گرافیکی جزئی از زبان نیست.
توجه داشته باشید که زبان پایتون یک زبان اسکریپتی است و در ویندوز برای اجرای کد نیاز به برنامه دیگری است ولی در لینوکس مستقیما از ترمینال اجرا می شود.
بله برای اجرای کد های پایتون در حالت عادی باید از یک برنامه استفاده کنید که اسکریپت‌های پایتون را اجرا می‌کند. این برنامه در بسیاری از توزیع‌های گنو/لینوکسی و تعدادی از لپ‌تاپ‌های ویندوزی از قبل نصب شده است.
زبان دیگری که برای برنامه‌نویسان مبتدی است و از نامش هم پیداست، بیسیک (BASIC) می باشد. البته زبان پایتون از بیسیک خلاصه‌تر هست ولی بیسیک و مخصوصا ویژوال بیسیک (visual basic) امکان برنامه‌نویسی گرافیکی در ویندوز را به شما می دهد.
هرچند که خودم چندان با بیسیک کار نکردم و نظری در این مورد ندارم اما بزرگان(از جمله اریک ریموند) توصیه کردند که به دلیل طراحی بد و دادن عادات بد به برنامه‌نویس سمت بیسیک نرویم. اگر هم خواستید تجربه کنید، ویژوال بیسیک تنها گزینه‌ی شما نیست.گزینه‌های دیگری که حتی آزاد یا متن‌باز هستند وجود دارند.
زبانی که آقای کریمی زاده با آن برنامه‌نویسی را آغاز کرد همین بود.
درست هست که من با سی‌شارپ شروع کردم اما این شروع کاملا تصادفی بود و هیچ منطق یا فلسفه‌ای پشتش نبود. این را به بقیه نیز توصیه نمیکنم!
توجه داشته باشید که دو زبان بیسیک و سی‌شارپ بیشتر برای ویندوز هستند.
اگر منظور ویژوال بیسیک هست، بله وگرنه نسخه های مختلفی از بیسیک وجود دارند. همچنین فراموش نکنیم که بازی و برنامه‌های مختلفی با سی‌شارپ و پروژه مونو نوشته‌شده‌اند.
دنیای لینوکس برای کاربران مبتدی نیست و اگر کاربر مبتدی با لینوکس طرف باشد از آن بیزار می شود ولی لینوکس برای برنامه نویسان و کاربران پیشرفته‌تر حکم بهشت را دارد!
فکر نمیکنم قسمت اول نوشته چندان درست باشد. الآن برعکس گذشته توزیع‌هایی دقیقا برای مبتدیان(مثلا اوبونتو) و غیرفنی‌ها وجود دارد و روی بسیاری از توزیع‌ها یک رابط کاربری گرافیکی از قبل نصب شده.
پیشنهاد من این است که اگر تصمیم دارید که کرم کامپیوتر باشید بعد از این که در ویندوز چرخیدید و کودک نو پای برنامه نویسیتان راه رفتن یاد گرفت به دنیای لینوکس مهاجرت کنید.
البته گزینه‌ی دیگری جز لینوکس هم دارید: بی‌اس‌دی(BSD).خودم چندان با بی‌اس‌دی‌ها کار نکردم اما بنظر می‌آید(با توجه به نوشته‌ی اریک ریموند و دیگر نوشته‌ها) گزینه‌های خوبی هستند.
  • فاروق کریمی زاده

اگر قرار باشد سه و تنها سه قرارداد در لابه کاربرد وجود داشته باشند، بنظر شما آن سه قرارداد کدام باید باشند؟

خودم هنوز باید در این مورد فکر و تحقیق کنم.

  • فاروق کریمی زاده
look [-bdf] [-t termchar] string [file]
look [-f] string [file]

این برنامه که ریشه‌اش BSD هست، تمام خطوط پرونده‌ی file را که با رشته‌ی string شروع میشوند،به خروجی میفرستد.

  • فاروق کریمی زاده
برای ویندوز های ۳۲ و ۶۴ بیتی


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

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

این توابع از توابع توکار پایتون هستند و همانطور که از اسمشان مشخص است، یک عدد مبنای ده را به یک رشته که حاوی آن عدد در مبنای ۸،۱۶ یا ۲ است تبدیل میکند. فکر نمیکنم نیاز به توضیح زیادی داشته باشند اما توجه کنید که این توابع یک رشته برمیگردانند. چند مثال:

>>> hex(10)
'0xa'
>>> oct(13)
'0o15'
>>> bin(12)
'0b1100'

مطالب مرتبط:

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