Syntax | سینتکس – Telegram
یبار واسه همیشه مفهوم سریالیزیشن (Serialization) رو یاد بگیرید 👌

آموزش توسط سعید شهریوری عزیز (از نحوه توضیح دادنش عشق می کنی)

https://youtu.be/gQcPRSIVp5I?si=4knH34ONEgDjdmjT

#Serialization

@khat_academy
🔥6
ایده Napster و peer to peer

بحث Client / Server تا اواخر دهه 90 میچربید تو همه ی دنیا.
ولی مواردی مثل نبود آزادی بوجود اومد.
تو Client / Server مثلا گوگل میگه این سرویس جیمیل من هستش و باید طبق قوانین Server من ازش استفاده کنید

بحث از جایی به اسم سرویس Napster استارت خورد. Napster سرویس اشتراک موزیک هستش.

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

پس گفتن چه کنیم!
گفتن بجای اینکه بصورت Client / Server این سرویسو راه بندازیم، بیایم بصورت Peer to Peer راه بندازیم

یعنی هرکسی توی این شبکه بیاد ریسورسشو به اشتراک بذاره و تشکیل یه storage و ... خیلی قدرتمند بدیم

اینجوری بود که سیستم napster راه افتاد، Bittorrent راه افتاد و ...
سرویس Napster یک از اولین P2P ها هستش.

برای مطالعه بیشتر peer to peer computing رو سرچ کنید

@khat_academy
👍7
چهار نوع مدل رایانش ابری یا cloud computing:


IaaS (Infrastructure as a Service)
تو IaaS به شما یک چیزی شبیه به سیستم عامل رو میدن و همه کار رو تقریبا خودتون انجام می دید و خب آزادی عملی بیشتری دارید و از اونطرف وظایف و سختی های بیشتری هم دارید.

PaaS (Platform as a Service)
تو این حالت پلتفرم و فریم ورک و یه سری چیز های مورد نیار رو میده تا شما بتونید یه برنامه stalable بنویسید.
مثلا بهتون دیتابیس استیلبل میده. مثل سرویس های azure و aws

SaaS (Software as a Service)
سرویسی مثل جیمیل یک SaaS میشه محسوب کرد.
تو این حالت میان یه software رو میدن که توی کلود داره ران میشه در واقع شما هیچ حسی از کلود ندارید ولی میدونید سرویسه همیشه در دسترس هستش و اگه نیاز بیشتری‌ داشته باشم میتونم نحوه سرویسی که میگیرم رو ارتقا بدیم.

FaaS (Function as a service)
توی faas بهتون این امکانو میده شما یک فانکشن رو بهش بدید.
مثلا یه فانکشنی داریم که یه سری عملیاتی رو انجام میده بهش میگیم اینو دپلوی کن و هروقت نیازش داشتم از این اندپوینت صداش میزنم.
آمازون هم میتونه در حد چند صد هزار در ثانیه این فانکشن رو براتون کال کنه تا برید حالشو ببرید

#cloud

@khat_academy
👍6
🟣 اگه برنامه نویسی و اکستنشن Error code نداری قطعا باخت دادی!

▪️با استفاده از اکستنشن Error code به راحتی هرچه‌تمام تر میتونید قبل از اجرای کدتون تمام ارورهاش رو مشاهده کنید👌

https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens

#python

#اکستنشن
@khat_academy
🔥5🥰2
Multi programming, multi tasking

خب parallel رو بذاریم کنار تو اون حالت مثلا دو تا program بصورت موازی توی دو تا هسته اجرا میشن و همه چی اوکیه.
توی تک هسته و یا یک هسته ما چطور بتونیم استفاده مفید تری ببریم؟ اینجاست که مفهوم همروندی رو داریم.
دو تا روشی که تو این حالت داریم رو بیاید بررسی کنید

Multi programming:
فرض کنید شما یک بازی رو کلیک کردید و اجراش کردید.
تو اون لحظه که مینویسه loading تا عملیات I/O انجام بشه میاد و میگه من الان بیکارم و cpu میره پردازش دیگه ای رو انجام میده.
اما این روش مشکلاتی داشت
ممکن بود یه برنامه اصلا پردازشش تموم نشه و بقیه همینجوری زل بزنن بهش تا پردازشش تموم بشه

Multi tasking:
تو قبلی که دیگه الان میشه گفت منسوخ شده مشکلاتی داشت که اشاره کردم.
کاری که توی multi tasking انجام میشه سویچ کردن بین تسک های مختلفه یا به عبارتی context switch کردن بین تسک ها هستش
تو این حالت هر تسک لحظه ای سویچ میشه روش و پردازشش میکنه و بعد میره سراغ تسک بعدی(سویچ کردن های خیلی سریع)
اینقدر سریع این سویچ کردن ها انجام میشه که شما حس میکنید داره بصورت همزمان اجرا میشه

کاری که تو cpu اتفاق میوفته اینه که یه تسک رو مدت زمان کوتاهی اجراش می کنه بعد حالت تسک رو توی register به خاطر میسپاره میره سراغ تسک بعدی و بعدی تا دوباره برسه به همون تسک.
از اونجا که حالت تسک رو توی رجیستر به خاطر سپرده بود، ادامش رو انجام میده

@khat_academy
👍7
تفاوت بین concurrency و parallelism چیست؟

concurrency و parallelism
دو مفهومی که بسیار به هم نزدیک هستند و اغلب برنامه نویسان آن را اشتباه می گیرند. در بسیاری از مصاحبه های شغلی نیز در این باره سوال پرسیده می شود.

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

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

https://macronet.co/2023/04/16/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%A8%DB%8C%D9%86-concurrency-%D9%88-parallelism-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/

#note

@khat_academy
👍81
IPC and RPC

فرق بین IPC و RPC چیه؟

احتمالا تا الان RPC رو شنیدید که Remote procedure call هستش و حالا یه فانکشن و قطعه کدی رو از راه دور اجراش می کنه.
اما بیاید از یه دید دیگه به قضیه نگاه کنیم.

توی IPC ما داخل یک سیستم می تونیم بین core های cpu ارتباط برقرار کنیم و در واقع پراسس های مختلف با هم در تماس باشن.
اما توی RPC اتفاقی که میوفته اینه که ما می تونیم با پراسسی که توی یک سیستم دیگه قرار داره ارتباط برقرار کنیم که خب یه تکنولوژی باحال و خیلی خیلی کاربردیه

توضیح کوتاهی که medium داده:
IPC:
روشی که پراسس های موجود توی یک سیستم رو بهشون توانایی تعامل داشتن با همدیگه رو میده

RPC:
یک نوع خاص از ارتباطه که میتونه توی یه سیستم یا اینکه توی شبکه بین سیستم های مختلف باشه

https://medium.com/concepts-for-dummies/ipc-vs-rpc-12001178281f

@khat_academy
👍9
🔴 ساخت کلید میانبر برای ران کردن کد درvscode

ما میتونیم برای run python file in terminal کلید میانبر تعریف تعریف کنیم .

1. وارد قسمت file بشید (بالای صفحه سمت چپ گزینه اول)

2.روی گزینه preferencesکلیک کنید .

3.روی گزینه keyboard shortcustکلیک کنید .

4.درقسمت search عبارت run python file in terminalرا تایپ کنید .

5.روی +کنار متن کلیک کنید .

6.پنجره ای براتون باز میشه که ازتون میخواد کلید هایی که مدنظرتون رو وارد کنید
برای مثال من کلید هایctrl+shift+D را وارد کردم (توجه داشته باشید هر دکمه ای که دلتون میخواد رو میتونید وارد کنید )


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


@khat_academy
👍6
dns.py
2 KB
با پایتون dns های مناسب واسه بازیو استخراج کن 🔥

برای استفاده از برنامه اول کتابخونه هاش رو نصب کنید
بعد از نصب کتاب خونه ها شماره کشور مورد نظر خودتون رو وارد کنید
بعد صبر کنید که برنامه پیغام END رو به شما نشون بده
شما میتونین DNS رو انتخواب کنید که پینگ پایین تری داره
برای استفاده از DNS ها رقم آخر هرچی بود شما یکی بش اضافه کنین و وارد کنید
31.210.69.163
31.210.69.164
موفق باشید

[ارسالی توسط یکی از ممبرای کانال]

@khat_academy
9👍2
چرا کروم کلی پراسس ایجاد میکنه!؟

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


برای هر چیز، پراسس جداگونه:

کروم اولین پراسسی که باز میکنه Browser هستش که کاملا مشخصه چیه.

بعدی GPU process که از کارت گرافیک برای کار های گرافیکی استفاده می کنه.

پراسس بعدی Storage service هستش که ذخیره سازی دیتا رو به عهده داره.

همچنین برای هر extension که دارید و new tab که باز میکنید یه پراسس جداگونه هم باز می کنه.

خب سوال اینه همه اینکارا واسه چیه؟
اولین دلیل امنیت هستش
مثلا اگه تو یکی از تب ها شما لینک مخربی رو باز کردید فقط اون پراسس دچار مشکل میشه و اگه بخوان به مثلا پسورد های شما دسترسی پیدا کنن کارشون خیلی سخت میشه چون توی پراسس جدا قرار داره.
دلیل دیگه که میتونم بگم استفاده از چند core هستش که باعث speed up و افزایش سرعت برنامه میشه. در واقع یه برنامه مالتی پراسس رو اجرا می کنه.

#note

@khat_academy
👍15🔥5👏21
قانون امدال:

بنظرتون اگه بی نهایت core داشته باشیم، می تونیم اجرا شدن یک برنامه رو از مثلا 100 ساعت به یک ساعت برسونیم؟
قانون امدال (AMDAHL) بهمون کمک میکنه تا به جوابمون برسیم.

قبلش بصورت خلاصه بگم serial چیه:
به قسمتی از کد که اصلا توانایی این رو نداره مالتی پراسس بشه رو serial میگیم.

فرمول امدال:
speedup ≤ 1 / (S + ((1 - S) / N) )


S:
عددی بین 0 تا یک که بر اساس حالا بگیم درصد کد های serial هستش.

N:
تعداد core ها.

مثال:
خب بیاید در نظر بگیریم که بیست درصد از کد های ما serial هستش و چهار تا core داریم.
در این صورت میشه:
1 / (0.2 + ((1 - 0.2) / 4)) = 2.5

در این صورت speed up ما میشه دو و نیم برابر و کد ما دو و نیم برابر سریع تر شده.

اما حالا در نظر بگیرید ما 40 تا core داریم،‌ فکر میکنید سرعتمون چقدر افزایش پیدا می کنه؟؟
خب بیاید که حساب کنیم:
1 / (0.2 + ((1 - 0.2) / 40)) = 4.5

بله! speedup ما میشه 4.5 برابر!
احتمالا بر خلاف تصورتون، با افزایش تعداد پراسس ها سرعت ما همش بصورت صعودی افزایش پیدا نمیکنه. در واقع بر اساس درصد serial کد های ما از یه جایی به بعد دیگه سرعت بالا نمیره و فقط بار اضافی بوجود میاد

پست بعدی با نمودار یه سری توضیحات بیشترو میدم

پس قانون امدال چیه؟
قانون Amdahl یک فرموله که بهبود احتمالی عملکرد رو که با اضافه کردن پراسس های بیشتر به یک برنامه که شامل بخش‌های ترتیبی (غیرموازی) و موازی است رو میده.

#note

@khat_academy
👍7🔥2🥰1
لیست پر استفاده ترین زبان های برنامه نویسی در گیت هاب از 2014-2022
@khat_academy
👍10
Syntax | سینتکس
قانون امدال: بنظرتون اگه بی نهایت core داشته باشیم، می تونیم اجرا شدن یک برنامه رو از مثلا 100 ساعت به یک ساعت برسونیم؟ قانون امدال (AMDAHL) بهمون کمک میکنه تا به جوابمون برسیم. قبلش بصورت خلاصه بگم serial چیه: به قسمتی از کد که اصلا توانایی این رو نداره…
توضیح:

در این نمودار y مساویه با speedup و x مساویه با تعداد هسته ها.

ایده آل ترین حالت ممکن اینه که توی کد های ما اصلا serial کد وجود نداشته باشه. در این صورت سرعت برنامه ما با اضافه شدن هسته بیشتر و بیشتر تر میشه.

اگه فقط ده درصد serial داشته باشیم توی شونزده هسته سرعت ده برابر میشه و از اون به بعد تفاوت آنچنانی نمیکنه.

اگه پنجاه درصد کد serial باشه از دو برابر بیشتر نمیشه

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

#note

@khat_academy
👍8
۵ لایسنس متن باز محبوب:

1.MIT:
این لایسنس به توسعه‌دهندگان اجازه می‌دهد کدهای منبع را بازنشر کرده و تغییراتی روی آنها اعمال کنند، حتی بدون اینکه اون کدو اپن سورسش کنن. این لایسنس محدودیت‌های کمتری نسبت به سایر لایسنس‌ها دارد.

2.GNU General Public License (GPL):
تفاوتی که این لایسنس با MIT دارد این است که اگر کدی تحت لایسنس GPL استفاده شود، کدهای منبع تغییر داده شده نیز باید تحت GPL منتشر شوند.

3.Apache:
به توسعه‌دهندگان اجازه می‌دهد کدهای خود را بازنشر کرده و تغییراتی روی آنها اعمال کنند. همچنین این لایسنس حقوق برند را نیز حفظ می‌کند و لایسنسی است که برای پروژه‌های تجاری نیز مناسب است.

4.BSD:
به توسعه‌دهندگان اجازه می‌دهد کدهای خود را بازنشر کرده و تغییراتی روی آنها اعمال کنند. شرایط این لایسنس بسیار ساده و کوتاه است و برخی نسخه‌های آن حقوق برند را نیز حفظ می‌کنند.

5.Creative Commons:
این لایسنس بیشتر برای محتوایی مانند مقالات، موسیقی و ... استفاده می‌شود. این لایسنس به صاحبان حقوق اجازه می‌دهد تا محتوای خود را با محدودیت‌هایی مانند نام برده شدن و عدم استفاده تجاری به اشتراک بگذارند.

@khat_academy
👍42🔥1
دوستان پایتون در چه سطحی هستین ؟
Anonymous Poll
54%
مقدماتی
46%
پیشرفته
Django Jwt

مشکلات سینتکسی و امنیتی پروژه جنگویی زیر رو پیدا کنید و توی کامنت بگید‌:

https://github.com/alireza-fa/django-jwt-auth

توضیح:
این یک پروژه با تمرکز بر روی پیاده سازی یک سیستم احراز هویت امن jwt در جنگو هست که در حال توسعه دادنه.
توکن ها انکریپت شده(AES) سمت فرانت اند ارسال میشوند
وریفای اکانت با ارسال otp کد انجام میشود.
کاربر ها فقط با وارد کردن شماره موبایل و دریافت کد شش رقمی عملیات لاگین رو انجام میدن

#django

@khat_academy
👍6😱1
اگر توی یک تیم کار میکنید و میخواید اکستنشن هایی که پروژه ی شما داره، بقیه ی تیم هم نصب کنن، یا اگر میخواید پروژه ی گیتهابتون اکستنشن های شما رو هم به برنامه نویس ها پیشنهاد کنه...

فایل
.vscode/extensions.json
رو بسازید و داخلش اسم اکستنشن هایی که برای اون پروژه نیازه رو بنویسید.

وقتی یکی پروژه رو توی vscode باز میکنه، vscode ازش میخواد که این اکستنشن ها رو نصب کنه.

#python

#اکستنشن


@khat_academy
👍19🔥2
دوستان منبعی میشناسید که تمرینات مقدماتی تا پیشرفته پایتون رو بذاره ؟
اگه میشناسین توکامنتا معرفی کنین
👀3🌚1
This media is not supported in your browser
VIEW IN TELEGRAM
بعد از دیدن جلسه اول پایتون😂❤️


#fun

@khat_academy
😁16😍1🤣1