تعریف کلی کاراکتر یا نویسه در کامپیوتر یعنی کوچک‌ترین واحد نمایش اطلاعات که می‌تونه یک حرف یا علامت باشه. نویسه‌ها شامل فاصله، عددها و علامت‌ها‌ هم هستند!

نویسه در دنیای دیجیتال

در دنیای دیجیتال برای انتقال اطلاعات چیزی جز خاموش و روشن نداریم! جریان‌های الکتریکی که قطع و وصل می‌شن، نوری که چشمک می‌زنه یا حتی تغییر جهت قطب‌های مغناطیسی توی هاردها دنیای دیجیتال‌ما رو می‌سازن!

به این خاموش‌ها و روشن‌ها می‌تونیم غلط و صحیح یا صفر و یک رو نسبت بدیم. این صفرها و یک‌ها به کمک قوانین مبنای عددی در ریاضیات معنا پیدا می‌کنن. یعنی مثلاً عدد ۲ توی کامپیوتر می‌شه ۰۰۱۰، عدد ۱۱ توی کامپیوتر می‌شه ۱۰۱۱ و عدد ۵ می‌شه ۰۱۰۱. در واقع هر عدد، کد مخصوص به خودش رو داره که قابل محاسبه هست. این محاسبه بین مبنای ده (اعداد خودمون) و مبنای دو (اعداد کامپیوتر) به سادگیِ انجام چند تقسیم هست.

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

بهنام سیم‌جو27-02-1402

امروز می‌خوام براتون از رمزنگاری دوسویه یا دو کلیده بگم، این رمزنگاری دنیای اطلاعات رو زیر و رو کرده! تو جهان امروز هر جا رو که نگاه می‌کنی ردپای این رمزنگاری هست! HTTPS, SSH, ارز های دیجیتال، شبکه های مجازی و … همه و همه دارن از این روش برای حفظ امنیت استفاده می‌کنن.

آنچه خواهید خواند!

  • در ابتدا خواهم گفت در صورت نبود رمزنگاری اطلاعات چطور لو می‌روند
  • بعد یه دید کلی از رمزنگاری میدم و میگم چرا نمیشه از روش های رایج استفاده کرد
  • سپس روش رمزنگاری دوسویه رو به زبون ساده توضیح می‌دهم
  • در ادامه از چگونگی استفاده آن در وب می‌گم
  • چند خط کد می‌نویسیم و در پایتون از این روش استفاده می‌کنیم

در این مطلب می‌گیم که چطور میشه در پایتون یک پروسه دیگر را اجرا کرد و خروجی استاندارد و ورودی استاندارد رو بگیریم و ازش استفاده بکنیم. خروجی و ورودی استاندارد همون چیزایی هستن که تو محیط متنی چاپ میشن یا کاربر توی ورودی برنامه وارد می‌کنه. در واقع توی این مطلب یاد می‌گیرید که چطور می‌تونید در پایتون با برنامه های کنسولی دیگه تعامل کنید.

پایپ (pipe) چیست؟

به طور پیش‌فرض سیستم عامل ورودی ها رو از موس و کیبورد می‌گیره و خروجی ها رو روی صفحه نمایش می‌نویسه. اما در بعضی مواقع نیاز هست که یک برنامه از خروجی های یک برنامه (یا دستور) دیگه استفاده کنه یا به ورودی استاندارد یک برنامه داده ارسال کنه. در چنین شرایطی pipe استفاده میشه. pipe یک فضای موقتی در حافضه برای جابه‌جایی اطلاعات بین دو برنامه هست که البته یک طرفه هم هست؛ یعنی مثلا برای گرفتن خروجی باید از یک pipe و برای نوشتن ورودی هم از یک pipe دیگر باید استفاده کرد.

خیلی ها میگن پایتون زبان ساده‌ای هست، میشه اون رو زود یاد گرفت، بخاطر تعیین نوع پویا(dynamic typing) دیگه نیازی نیست که برنامه‌نویس با type ها درگیر باشه و …

ولی آیا واقعا همین‌طوره؟! توی این مطلب قصد دارم کمی زبان پایتون رو به عنوان یه برنامه‌نویس پایتون بررسی کنم.

۱. پایتون زبان ساده‌ای هست

منظور از سادگی زبان می‌تونه خوانا بودن اون و نزدیکی اون به زبان انگلیسی (زبان انسان) باشه. برای مثال دو تکه کد زیر رو ببینید:

زبان پایتون:

if not 2 in lst:
  for x in lst:
    print(x);

زبان سی‌شارپ:

if ( ! lst.contains(2) )
  foreach ( int x in lst )
    Console.WriteLine(x);

بهنام سیم‌جو27-07-1401

حتماً تا به حال با برنامه هایی سروکار داشتید که امکان نصب افزونه داشتند. در این پست قرار هست بهتون بگم چطور میشه توی پایتون برنامه‌ای بنویسیم که بشه بهش افزونه اضافه کرد.

معماری افزونه‌ای (plugin architecture) یک شیوه توسعه نرم‌افزار است که به برنامه‌نویس این امکان رو میده که بدون نیاز به ویرایش کد های اصلی برنامه‌ش (هسته/main) قابلیت ها رو با ارائه بسته‌هایی به نام پلاگین در اختیار کاربران قرار بده و کاربران هم می‌تونن به سادگی با توجه به نیازشون از بین این افزونه ها، اون هایی که می‌خوان رو به برنامه‌شون اضافه کنن.

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

پ.ن: پروژه telegram-post-bot من در گیتهاب از همین ساختار پیروی می‌کنه و توش امکان اضافه کردن پلاگین هست و درواقع همین پروژه بهانه‌ای شد که من پیاده‌سازی این معماری رو توی پایتون یاد بگیرم و امتحان کنم.

خب وقتشه که دیگه مقدمه رو بذاریم کنار و بریم سراغ اصل مطلب!

بهنام سیم‌جو29-05-1401

هیچ می‌دونستین که تو پایتون می‌تونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3] نوشت؟ یعنی می‌تونی خیلی راحت لیست ها رو باهم مقایسه کنی.

اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیم‌جو همراه باش تا برات بگم ماجرا چیه!

بهنام سیم‌جو29-04-1401

رجیستری در ویندوز یک بخش مهم و حیاتی است. اهمیت این بخش به دلیل این است که ویندوز و نرم‌افزار های زیادی تنظیمات خود را در رجیستری ذخیره می‌کنند؛ تنظیماتی از قبیل فرمت فایل ها، رنگ بندی و تصویر پس‌زمینه، و یا تعیین برنامه‌ای که بعد از ورود کاربر اجرا شود (شل یا پوسته) همگی این ها و حتی اطلاعات حساس‌تر در رجیستری ذخیره شده‌اند.

امروز می‌خواهیم در مورد این بخش مهم در سیستم‌عامل ویندوز صحبت کنیم پس با وبسایت کرم‌های کامپیوتر همراه باشید.

بهنام سیم‌جو13-12-1400

زمانی که سیستم شما به هر دلیلی دچار مشکل می‌شود و سیستم‌عامل به اصطلاح بالا نمی‌آید شما به چیزی به نام سیستم‌عامل زنده (live) نیاز خواهید داشت تا فایل‌ها را برگردانید و سیستم‌عامل را تعمیر کنید. بسیاری از کاربران (نسبتاً مبتدی) به دلیل دسترسی نداشتن به یک نسخه سیستم‌عامل زنده دچار مشکلاتی از قبیل از دست دادن اطلاعاتشون هستند. در این پست قصد دارم به این موضوع بپردازم که سیستم‌عامل زنده چیست، چگونه راه‌اندازی می‌شود و چطور می‌توان آن را نصب کرد.

سیستم‌عامل زنده (live) چیست؟

اگر شما کاربر ویندوز هستید حتما می‌دانید که ویندوز باید ابتدا بر روی سیستم شما نصب شود تا بتوان آن را اجرا نمود اما سیستم‌عامل ویندوز مانند سیستم‌عامل های دیگر می‌تواند بر یک DVD یا یک flash نیز نصب شود. در شرایطی که سیستم‌عامل شما به درستی کار نمی‌کند می‌توان از این امکان برای تعمیر سیستم و دسترسی به فایل ها استفاده کرد. در چنین شرایطی برای آن که سیستم‌عامل با هدف اجرا شدن از یک حافظه فلش یا DVD سازگار باشد (سریع و سبک باشد) نسخه‌ای از آن به عنوان live منتشر می‌شود که قابل حمل است و نیازی به نصب ندارد.

سیستم‌عامل های غیر ویندوزی

اکثر سیستم عامل های غیر از ویندوز عموما از خانواده شبه‌یونیکس نسخه لایو جدا ندارند، درواقع اصلا نیازی ندارند! در هنگام نصب این سیستم‌عامل ها از کاربر سوال می‌شود که آیا می‌خواهید نصب شود یا به صورت زنده از آن استفاده کنید.

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

بهنام سیم‌جو06-12-1400

یکی از ترفند های کدزنی که برنامه‌نویسان حرفه‌ای معمولا از آن استفاده می‌کنند استفاده از or و and به جای شرط است. بله درست متوجه شدید، به جای شرط. این ترفند ممکن است باعث شود تا کد شما خوانا نباشد و حتی توصیه شده نیست ولی ترفند به شدت جذابی‌ست که می‌تواند در خلاصه نویسی کد تاثیر زیادی داشته باشد. این روش در بسیاری زبان ها مانند C, JavaScript, Python و … کاربرد دارد. پس با ما همراه باشید تا این تکنیک زیبا و جذاب را یاد بگیرید.

بهنام سیم‌جو12-11-1400

کاملا اتفاقی متوجه شدم که ویندوز 10 به نام هایی مانند aux گیر میده و این گیر ربطی به پسوند فایل هم نداره؛ یعنی چه فایل aux.txt باشه و چه aux.png شما مجاز به استفاده از چنین نامی در ویندوز نیستید! کنجکاو شدم ببینم جریان چیه؟ پس تو اینترنت گشتم و جواب رو پیدا کردم و فهمیدم این مسئله خیلی قدیمی و تاریخی هست. به نوعی میراثی هست که دست به دست شده و الان به ویندوز ۱۰ رسیده!

مایکروسافت رسما اعلام کرده که نام های زیر در ویندوز ممنوع هستند:

گیت چیست؟

گیت یا git یک برنامه آزاد و متن باز برای مدیریت پروژه‌های برنامه‌نویسی هست که بسیار سریع و موثر می تواند به برنامه‌نویسان برای مدیریت پروژه‌های کوچک تا بزرگ کمک کند. یادگیری و استفاده از گیت بسیار ساده است و امکانات بسیار قابل توجهی در اختیار برنامه‌نویسان قرار می‌دهد.

از توانایی‌های این نرم افزار می‌توان به نمونه‌های زیر اشاره کرد:

  • به شما امکان مدیریت پروژه‌های چند نفره را می‌دهد
  • به سادگی می توان تغییرات را ثبت، دنبال، و بازگردانی کرد
  • می تواند به یک سرور وصل شود تا علاوه بر داشتن یک بکاپ از کل پروژه آن را با دیگران به اشتراک بگذارید
  • امکان استفاده از چند شاخه، ادغام و مدیریت شاخه‌ها
  • و …

بهنام سیم‌جو19-07-1400

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