باهم بخندیم ( به هم نخندیم )
کدی که امروز استاد نوشت از روش توضیح داد😂😂
int main() {
scanf(%d%d, &a, &b);
sum = a + b;
printf(sum, "%d");
}کدی که امروز استاد نوشت از روش توضیح داد😂😂
🤣15
Coding Lovers
باهم بخندیم ( به هم نخندیم ) int main() { scanf(%d%d, &a, &b); sum = a + b; printf(sum, "%d"); } کدی که امروز استاد نوشت از روش توضیح داد😂😂
دلم برای کسایی که از دانشگاه میخوان چیزی یاد بگیرن میسوزه واقعا
چه جامعه ایه آخه
چه جامعه ایه آخه
👍21👎3🤣1
رنک بندی گیتهاب بر اساس استار ها رو میتونین از این سایت ببینین
https://www.stardev.io/
رنک گیتهابتون چنده؟
https://www.stardev.io/
رنک گیتهابتون چنده؟
👍2
شوخیتون گرفته؟ یه زبان برنامه نویسی تقریبا معروف داریم به اسم Portugol که کاملا زبانش بریزیلیه
پ.ن داخل دبیرستان های برزیل هم تدریس میشه😐😂
مثلا
پ.ن داخل دبیرستان های برزیل هم تدریس میشه😐😂
مثلا
funcao somamatriz(n: inteiro): inteiro
var
i, j, soma : inteiro
inicio
soma <- 0
para i de 1 ate 10 faca
para j de 1 ate 10 faca
soma <- soma + a[i,j] (ref:scope)
fimpara
fimpara
retorne soma
fimfuncao
algoritmo "semnome"
var
i, j : inteiro
a : vetor [1..10,1..10] de inteiro
inicio
para i de 1 ate 10 faca
para j de 1 ate 10 faca
a[i,j] <- i + j
fimpara
fimpara
escreva ("Resultado: ", somamatriz(5))
fimalgoritmo
😁11👍1👎1
میخوام درمورد thread-safe بهتون توضیح بدم.
اول یک نسخه از هوش مصنوعی میزارم، و بعد خودم کاملش میکنم.
اول یک نسخه از هوش مصنوعی میزارم، و بعد خودم کاملش میکنم.
Coding Lovers
میخوام درمورد thread-safe بهتون توضیح بدم. اول یک نسخه از هوش مصنوعی میزارم، و بعد خودم کاملش میکنم.
در برنامهنویسی، وقتی درباره "thread safe" صحبت میکنیم، منظورمان این است که کد نوشته شده میتواند به درستی در محیطی که چندین رشته (threads) به طور همزمان در حال اجرا هستند، عمل کند، بدون اینکه منجر به مشکلاتی نظیر تداخل داده یا خطاهای دیگر شود.
فرض کنید دو یا چند رشته بخواهند به طور همزمان به یک متغیر مشترک دسترسی پیدا کنند. اگر این دسترسیها به درستی هماهنگ نشوند، ممکن است دادهها دچار مشکل شوند. به عنوان مثال، تصور کنید دو نفر در حال نوشتن بر روی یک تخته سیاه هستند. اگر هر کدام بدون هماهنگی با دیگری چیزی بنویسد، نوشتهها با هم تداخل خواهند داشت و نتیجه ناواضح خواهد بود. در برنامهنویسی، این مشکل با استفاده از مکانیزمهایی مثل قفل (lock) یا مچینگ (mutex) حل میشود.
بیایید یک مثال ساده با پایتون ببینیم:
در این مثال، ما یک متغیر مشترک به نام
به این ترتیب، میتوانیم کدی بنویسیم که "thread safe" باشد و در محیطهای چند رشتهای بدون مشکل کار کند.
فرض کنید دو یا چند رشته بخواهند به طور همزمان به یک متغیر مشترک دسترسی پیدا کنند. اگر این دسترسیها به درستی هماهنگ نشوند، ممکن است دادهها دچار مشکل شوند. به عنوان مثال، تصور کنید دو نفر در حال نوشتن بر روی یک تخته سیاه هستند. اگر هر کدام بدون هماهنگی با دیگری چیزی بنویسد، نوشتهها با هم تداخل خواهند داشت و نتیجه ناواضح خواهد بود. در برنامهنویسی، این مشکل با استفاده از مکانیزمهایی مثل قفل (lock) یا مچینگ (mutex) حل میشود.
بیایید یک مثال ساده با پایتون ببینیم:
import threading
# متغیر مشترک
shared_counter = 0
# یک قفل برای هماهنگی بین رشتهها
lock = threading.Lock()
def increment_counter():
global shared_counter
for _ in range(10000):
lock.acquire()
shared_counter += 1
lock.release()
# ایجاد دو رشته که به طور همزمان متغیر مشترک را افزایش میدهند
thread1 = threading.Thread(target=increment_counter)
thread2 = threading.Thread(target=increment_counter)
# شروع به کار رشتهها
thread1.start()
thread2.start()
# منتظر میمانیم تا هر دو رشته کارشان را تمام کنند
thread1.join()
thread2.join()
print("Final counter value:", shared_counter)
در این مثال، ما یک متغیر مشترک به نام
shared_counter داریم و دو رشته که هر کدام ۱۰۰۰۰ بار این متغیر را افزایش میدهند. اگر از قفل استفاده نکنیم، ممکن است نتیجه نهایی shared_counter درست نباشد، چرا که ممکن است دو رشته همزمان به آن دسترسی پیدا کنند و مقدار آن را به اشتباه افزایش دهند. اما با استفاده از قفل (lock.acquire() و lock.release())، اطمینان حاصل میکنیم که در هر زمان فقط یک رشته به shared_counter دسترسی دارد، و این باعث میشود که برنامه به درستی کار کند و مقدار نهایی صحیح باشد.به این ترتیب، میتوانیم کدی بنویسیم که "thread safe" باشد و در محیطهای چند رشتهای بدون مشکل کار کند.
👍4
Coding Lovers
در برنامهنویسی، وقتی درباره "thread safe" صحبت میکنیم، منظورمان این است که کد نوشته شده میتواند به درستی در محیطی که چندین رشته (threads) به طور همزمان در حال اجرا هستند، عمل کند، بدون اینکه منجر به مشکلاتی نظیر تداخل داده یا خطاهای دیگر شود. فرض کنید…
حالا یکم درباره GIL هم توضیح بدم.
پایتون خودش چیزی داره به اسم GIL که یک lock عمومی برای هر thread هستش
یعنی هرکاری بخواد صورت بگیره اول gil رو قفل میکنه بعد انجام میده ( برای همین خیلی ها نمیتونن خوب async رو درک کنن میرن هرچی تابع دارن async def میسازن )
خب چرا ما خودمون اینجا lock ساختیم؟
چون هر تردینگ یه gil مختص به خودش رو داره و به دیگری مربوط نیست
پایتون خودش چیزی داره به اسم GIL که یک lock عمومی برای هر thread هستش
یعنی هرکاری بخواد صورت بگیره اول gil رو قفل میکنه بعد انجام میده ( برای همین خیلی ها نمیتونن خوب async رو درک کنن میرن هرچی تابع دارن async def میسازن )
خب چرا ما خودمون اینجا lock ساختیم؟
چون هر تردینگ یه gil مختص به خودش رو داره و به دیگری مربوط نیست
👍8
https://core.telegram.org/api/links
لیست تمامی deep link های تلگرام
مثلا
با تشکر از فرشاد
لیست تمامی deep link های تلگرام
مثلا
tg://settings/change_number
tg://settings/devices
tg://settings/folders
tg://settings/language
tg://settings/privacy
tg://settings/auto_delete
با تشکر از فرشاد
core.telegram.org
Deep links
Telegram clients must handle special tg:// and t.iss.one deep links encountered in messages, link entities and in other apps by registering OS handlers.
👍8❤3🔥1
یه روش بگم حجم ویدیو هارو به شکل وحشتناک کاهش بدین؟ با ffmpeg
بدونه افت کیفیت و سرعت ویدیو، با ffmpeg حجم رو کاهش بدین؛ چجوری؟
جلوی -i ویدیویی که میخواید حجمش کم شه رو بزارید ( میتونه هر فرمتی باشه )
جلوی -crf میتونین مشخص کنین تعداد فریم ریت ها رو
این دستور چیکار میکنه؟ نمیدونم دقیقا چه بلایی سر ویدیو میاره 😐❤️، فقط میدونم نوع رمزنگاری فایل رو به H.265 تغییر میده که باعث کم شدن حجم ویدیو میشه.
ترفند: میخواین صدای ویدیو هم بردارین همزمان که کاهش حجم میدین؟
پ.ن: یه بار ۸۰ مگ رو کرد ۵ مگ پرام ریخت
بدونه افت کیفیت و سرعت ویدیو، با ffmpeg حجم رو کاهش بدین؛ چجوری؟
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4
جلوی -i ویدیویی که میخواید حجمش کم شه رو بزارید ( میتونه هر فرمتی باشه )
جلوی -crf میتونین مشخص کنین تعداد فریم ریت ها رو
این دستور چیکار میکنه؟ نمیدونم دقیقا چه بلایی سر ویدیو میاره 😐❤️، فقط میدونم نوع رمزنگاری فایل رو به H.265 تغییر میده که باعث کم شدن حجم ویدیو میشه.
ترفند: میخواین صدای ویدیو هم بردارین همزمان که کاهش حجم میدین؟
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -af "volume=0" output.mp4
پ.ن: یه بار ۸۰ مگ رو کرد ۵ مگ پرام ریخت
2❤16
😁7👍3🤣2
CUSTOM FILTERS ) در #تلباتفریمورک پایتونی تلبات واسه راحتی هرچه بیشتر توسعه دهندگان فیلتر هایی رو در نظر گرفته که قصد دارم توی این پست بصورت مفصل درموردشون صبحت کنم، فیلتر هایی که خیلی اوقات مانع از نوشتن کد بیهوده میشن.
AdvancedCustomFilter : کلاسپایه فیلتر
IsAdminFilter : محدود کردن به ادمین/اونر
ForwardFilter : محدود کردن به فوروارد
ChatFilter : تطابق چتایدی
IsDigitFilter : محدود کردن به عدد
IsReplyFilter : محدود کردن به ریپلای
LanguageFilter : محدود کردن به LC
SimpleCustomFilter : کلاس پایه فیلتر سفارشی
StateFilter : محدود کردن استیت
TextContainsFilter : محدود کردن به وجود متن در آپدیت
TextFilter : محدود کردن متن تایپ ها
TextMatchFilter : محدود کردن متن مسیج
TextStartsFilter : محدود کردن متن مسیج با شروعی خاص
CUSTOM_FILTERS رو از تلبات ایمپورت و سپس با متد ADD_CUSTOM_FILTER فیلتر مورد نظر رو بر شی TELEBOT اعمال کنیم :from telebot import TeleBot, custom_filters
app = TeleBot()
app.add_custom_filter(Custom_filters.TextStartsFilter()) #EX
KEY ها داخل هندلر استفاده کنیم. توی حالت کلی بنا بر نحوه پیاده سازی فیلتر ها، KEY ها میتونن هر مقداری باشند، با فرض وجود کد بالایی و اعمال کردن فیلتر START TEXT FILTER این سمپل رو با KEY مختص به این فیلتر ببینید :@app.message_handler(text_startswith='XD')
def _(message):
...
XD" شروع شده باشه، پس در نهایت :from telebot import TeleBot, custom_filters
from telebot.types import Message
app = TeleBot()
@app.message_handler(text_startswith='XD')
def _(message: Message):
app.reply_to(message=message, text='XD')
app.add_custom_filter(custom_filters.TextStartsFilter())
app.infinity_polling()
KEY و تایپ های هر فیلتر رو با هم ببینیم :💡FilterName : Key | Type
ChatFilter : key = chat_id | type = List
TextContainsFilter : key = text_contains | type = List
TextMatchFilter : key = text | type = List
LanguageFilter : key = language_code | type = List
ForwardFilter : key = is_forwarded | type = Bool
IsAdminFilter : key = is_chat_admin | type = Bool
IsDigitFilter : key = is_digit | type = Bool
IsReplyFilter : key = is_reply | type = Bool
StateFilter : key = state | type = Int
TextStartsFilter = key = text_startswith | type = String
ADD_CUSTOM_FILTER اون رو به شئ TELEBOT اد کنیم و با KEY هاشون، هندلر ها رو به آپدیت های خاصی محدود کنیم، از طرفی مانع کد زدن اضافی و از طرف دیگه موجب تمیزی و خوانایی و از همه مهمتر مدیریت کدهامون رو راحت تر میکنه، فعلا در همین اندازه شناخت داشته باشید، طی پست های آینده، از بیسیک و ریشهای ترین فیلتر ها اقدام به کالبد شکافی میکنیم بصورت مفصل.پن؛ حالا انتخابتون چیه؟!
FUNC LAMBDA؟!Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤27🤣7👍3🔥1😁1
دنبال یه ایده خفن میگردی؟ هیچ ایده ای نداری؟ 🥲
میخوام چیزی رو یادتون بدم که خودم تازگیا یادش گرفتم.
بهترین ایده بنظرتون چیه؟ بهترین ایده که میتونه طرفدار زیادی رو جذب کنه، قطعا چیزی هست که نیاز دیگران رو رفع کنه ( اینو هممون میدونستیم، خب بعدش؟ ).
❓ نیاز دیگران رو چجوری بفهمیم؟
جمله کلیشه ای: اول خودت، بعد دیگران. هرچیزی که تو بهش احتیاج داری قطعا دیگران هم بهش احتیاج دارن.
پس جای اینکه دنبال نیاز دیگران باشی، باید دنبال نیاز خودت بگردی. پس همین حالا نیاز هات رو لیست کن، و هرجایی که به چیزی احتیاج داشتی که پیداش نمیکردی، داخل لیست نیاز هات بنویس.
حالا تو کُلی ایده و نیاز برای رفع کردن داری ...
✨ شبیه ایدت زیاده؟
خب که چی؟ هزار تا برند گوشی داریم. اما هیچکدوم شدن سامسونگ؟ اپل؟
اینا چه فرقی با بقیه داشتن؟ همه که یه کارو انجام میدن!
مهم نیست شبیه زیاده؛ آدم ها وقتی میخوان انتخاب کنن اونی رو انتخاب میکنن که با بقیه تفاوت داره و چیزی داره که قانعشون میکنه: «بقیه رو ول کن، من بهترم.»
سیپییو اپل کاملا متفاوت از دیگرانه. کیفیت سامسونگ رو هیچ برندی نداره ( طبق کامنت هاتون جدیدن انگار ترکیده ).
🤔 نظر شما چیه؟
میخوام چیزی رو یادتون بدم که خودم تازگیا یادش گرفتم.
بهترین ایده بنظرتون چیه؟ بهترین ایده که میتونه طرفدار زیادی رو جذب کنه، قطعا چیزی هست که نیاز دیگران رو رفع کنه ( اینو هممون میدونستیم، خب بعدش؟ ).
❓ نیاز دیگران رو چجوری بفهمیم؟
جمله کلیشه ای: اول خودت، بعد دیگران. هرچیزی که تو بهش احتیاج داری قطعا دیگران هم بهش احتیاج دارن.
پس جای اینکه دنبال نیاز دیگران باشی، باید دنبال نیاز خودت بگردی. پس همین حالا نیاز هات رو لیست کن، و هرجایی که به چیزی احتیاج داشتی که پیداش نمیکردی، داخل لیست نیاز هات بنویس.
حالا تو کُلی ایده و نیاز برای رفع کردن داری ...
✨ شبیه ایدت زیاده؟
خب که چی؟ هزار تا برند گوشی داریم. اما هیچکدوم شدن سامسونگ؟ اپل؟
اینا چه فرقی با بقیه داشتن؟ همه که یه کارو انجام میدن!
مهم نیست شبیه زیاده؛ آدم ها وقتی میخوان انتخاب کنن اونی رو انتخاب میکنن که با بقیه تفاوت داره و چیزی داره که قانعشون میکنه: «بقیه رو ول کن، من بهترم.»
سیپییو اپل کاملا متفاوت از دیگرانه. کیفیت سامسونگ رو هیچ برندی نداره ( طبق کامنت هاتون جدیدن انگار ترکیده ).
🤔 نظر شما چیه؟
1❤14🔥2
Coding Lovers
SimpleCustomFilter : کلاس پایه فیلتر سفارشی
پایهای ترین کارکرد کاستوم فیلتر رو میتونیم باSIMPLE CUSTOM FILTERپیاده سازی کنیم، چطوری؟! کافیه اقدام به ساخت ی چیلد کلس با فیلتر مورد نظر در متدCHECKکنیم، توی حالت کلی به عنوان پارامتر ورودی مجاز به دریافت یک پارامتر و در نهایت بولینTRUEیاFALSEریترن میکنه. بریم که توی عمل نحوه پیادهسازیش رو داشته باشیم.
CUSTOM_FILTERS ماژول تلبات ایمپورت کنیم؛from telebot import TeleBot
from telebot.custom_filters import SimpleCustomFilter
app = TeleBot()
SIMPLECUSTOMFILTER رو دریافت و با ایجاد KEY اختصاصی خود و تکمیل و کاستوم کردن متد CHECK توی هندلر هامون مورد استفاده قرار بگیره، مثالی از پیاده سازیش ببینید که در ادامه قراره نکات مهمی رو مرور کنیم؛ __Bot_Status__: str = 'ON'
class CodingLovers(SimpleCustomFilter):
key: str = 'XD'
@staticmethod
def check(update):
return (__Bot_Status__ == 'ON')
app.add_custom_filter(CodingLovers())
CHECK باید دقیقا به همین صورت باشه! CHECK حداکثر ی پارامتر که همون آپدیت هندلر باشه رو میتونه دریافت کنه ( پن، اینجا
__BOT_STATUS__ رو شما حالتی فرض کنید که قراره چک کردن واقعی اتفاق بیوفته، حقیقتا مثال دیگه ای به ذهنم نرسید from telebot import TeleBot
from telebot.types import Message
from telebot.custom_filters import SimpleCustomFilter
app = TeleBot()
__Bot_Status__: str = 'ON'
class CodingLovers(SimpleCustomFilter):
key: str = 'XD'
@staticmethod
def check(update):
return (__Bot_Status__ == 'ON')
@app.message_handler(commands=['start'], XD=True)
def _(message: Message):
app.reply_to(message=message, text='XD')
@app.message_handler(commands=['start'], XD=False)
def _(message: Message):
app.reply_to(message=message, text='Bot is Off')
app.add_custom_filter(CodingLovers())
app.infinity_polling()
اگه بخوایم کامل تشریح کنیم که چه فرایندی توی این کد طی میشه، باید گفت : با ايجاد کلاس فیلتر مورد نظرمون و تکمیل کردن متد
CHECK، در قدم اول به شی TELEBOT اد میشه و میتونیم داخل همه هندلر هامون با KEY یونیکی که واسه فیلتر در نظر گرفتیم استفاده کنیم، وقتی توی هندلر اولیمون که کامند استارت رو هندل میکنه از این فیلتر استفاده میکنیم و KEY که در این کد XD هست رو برابر بولین TRUE میزاریم، در صورتی هندلر شروع به کار و انجام دادن بلوک زیرینش میکنه که شرط داخل متد CHECK فیلرتمون برابر با TRUE باشه و در صورتی هندلر دومی شروع به کار میکنه که شرط متد CHECK فیلترمون برابر با بولین FALSE باشه! مثال دیگه ای پیاده سازیشو میتونین اینجا ببینین، همچین اگه سوال یا ابهامی داشتید کامنت کنید. Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4🔥2
Coding Lovers
پست های بعدی در چه باب، موضوع و یا شاخه ای باشه؟! 🤔 توی تلبات عمیق تر شیم یا..؟!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👎2❤1
از اونجایی که توی مینی نظرسنجی قبلی هم موافق ادامه دادن و عمیق شدن توی تلبات و هم گریزی به سایر شاخه و مسائل بودین، بنا به درخواست رفقا امروز رو اختصاص میدیم به بحث برنامه نویسی موازی، بحثی که همیشه چالش برانگیز بوده ☺️
واسه آشنایی و توضیحات بیشتر، باید توی وحله اول با مفاهیم و کارکرد ی سری موارد آشنا بشیم.
🧠 • پردازنده / CENTRAL PROCESSING UNIT :
حالا که به درک جامعهای از
🙄 • منظور از کانکارنسی چیه؟!
🤔 • اهدافمون از استفاده کانکارنسی چیه؟!
پن؛ حالا که با گوشهای از نحوه کارکرد😆
😎 CodingLovers | #Farshad
واسه آشنایی و توضیحات بیشتر، باید توی وحله اول با مفاهیم و کارکرد ی سری موارد آشنا بشیم.
ASYNCHRONOUS | ناهمگام
SYNCHRONOUS | همگام
PROCESS | پراسس
MULTI PROCESSING | چند پراسسی
THREAD | نخ، رشته
MULTI THREADING | چند نخی
CONCURRENCY | کانکرانسی
میدونیم که پردازنده یا سیپییو قلب تپنده هر کامپیوتریه، این قلب تپنده مسئول پردازش دستورات و انواع محاسبات و از جهت دیگه مغز کامپیوتره.❕• آیا روند کارکرد CPU از قدیم تا الان به ی صورت بوده؟! روند رویهای، چالش های اون و ظهور مولتی تسکینگ :
توی حالت کلی و پایهای عملکرد سیپییو به سه گام خلاصه میشه؛🟡 واکشی ( FETCH ) : به زیان ساده اگه بخوایم بیان کنیم، به معنی دریافت واکنش و دستورالعمل هست، دستورالعملی که در قالب و بصورت صفر و یک از طریق رم ارسال میشن.🔵 رمزگشایی ( DECODE ) : وقتی ی دستور واکشی دریافت و ذخیره میشه، سیپییو دستور رو به بخش INSTRUCTION DECODER منتقل میکنه و اونجا به سیگنال هایی واسه فرستاده شدن به مابقی بخش های سیپییو تبدیل میشه.🟣 اجرا ( EXECUTE) : داخل این بخش و مرحله دستور دیکد شده مرحله قبل تحلیل و اجرا میشه، اجرا شدن دستور بسته به نوع دستور ممکنه محاسباتی، منطقی، ورودی خروجی و یا کنترلی باشه.
کامپیوتر های قدیمی با سیپییو ها تک پردازندهای ساخته میشدن، هر فعالیت یا پروسهای شامل چندتا دستور فرض میشد که بصورت پشتسر هم نوشته و به همون صورت هم اجرا میشدن، یعنی استراتژیک کلی به این صورت بود که ی فعالیت واحد با دستوراتش وارد سیپییو میشد و تمامی دستوراتش به ترتیب اجرا میشد، بعد از انجام و تموم شدن پردازش فعالیت، فعالیت بعدی وارد میشد، به این حالت از اجرا به اصطلاح "SINGLE TASKING" یا "روند رویهای" میگن.
کامیپوتر های جدید استراتژیک جدید تری اعمال کرد که اجرای همزمان چندین فعالیت و فرایند رو به ارمغان میاره که به اصطلاح "MULTI TASKING" یا "چند وظيفگی" هستن، البته نه به این صورت که همزمان دو یا چند فعالیت رو انجام بدن!! پس چطور میشه که همزمان چندین فعالیت رو انجام میده👀 ؟! تریکی که اینجا وجود داره مفهوم "سوئچینگ" هست.
سوئیچینگ تکنیک و تریک کامپیوتر های جدیده، یعنی با سوئیچ کردن مداوم بین دستورات مختلف چندین فعالیت رو انجام میده!! عملیات سوئیچینگ خیلی سریع اتفاق میوفته بصورتی که احساس و درکی توی حالت عادی از اون نداریم و حس میکنیم چندین فعالیت با هم انجام میشن.
حالا که به درک جامعهای از
CPU و کارکردش رسیدیم، میرسیم به بحث اصلیمون یعنی آشنایی با مفاهیم اولیه موضوعمون، ترجیح میدم از کانکارنسی یا همروندی شروع کنم.کانکارنسی یکی از مفاهیم بنیادی توی علوم کامپیوتریه که این اجازه و اراده رو به عمل میاره که چندین فعالیت و عملیات رو بدون نیاز به ترتیب خاصی و بصورت همزمان اجرا کنیم، مفهومی که توی انواع اپلیکیشن و برنامه ها، دیتابیسها، سیستمعامل ها و.. موجب میشه از منابع بصورت خیلی بهینهتری استفاده و داخل تایم هم صرفه جویی کنیم. توجه کنیم که کانکارنسی با پارلل متفاوته، توی ی پست دیگه بصورت مفصل صحبت میکنیم در موردش.
بطور خلاصه ای اگه بخوایم بگیم، چندتا هدف اصلی و کلی داره :🔴 زمان اجرای فعالیت رو کاهش بده و کمتر کنه : با اجرای همزمان مراحل مختلف ی فعالیت میتونیم زمان پردازش رو کاهش بدیم، ی برنامه و اپلیکیشن رو تصور کنین که قراره دادههایی رو پردازش کنه و در نهایت به کاربر نشون بده، داخل همچین موقعیتی اپلیکیشن با پردازش توی پسزمینه در عین واحد، کاربر هم میتونه از تعامل با روابط کاربری اپلیکیشن استفاده کنه، این کار باعث میشه کاربر تصور کنه اپلیکیشن سریعتر و پاسخگو تره.🔵 پردازش و پاسخگویی بیشتر از فعالیت ها : کانکارنسی به سیستم ها این امکان رو میده که در عین واحد بهطور همزمان به چندین درخواست پاسخ بده و اونهارو پردازش کنه، اپلیکیشن مثال قبلیمون رو دوباره تصور کنین، همچین اپلیکیشنی که متصل و وابسته به دیتابیس و API هست میتونه توی هر بخشی از خودش بصورت همزمان به کاربر ها پاسخ بده و فعالیت هاشون رو پردازش کنه بدون اینکه ی کاربر منتظر بمونه درخواست ی کاربر دیگه انجام بشه و نوبتش بشه.🟢 استفاده بهینه از منابع : منطقا با اجرای همزمان چندین فرایند میتونیم از منابع سخت افزاری بهطور بهینه استفاده کرد.
پن؛ حالا که با گوشهای از نحوه کارکرد
CPU آشنا شدیم، با CPUهاتون مهربون تر برخورد کنین Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7❤3
فقط یه استاد دانشگاه داخل ایران میتونه بیاد برای تدریس HTML
و همون رو هم اشتباه درس بده
عمق ماجرا رو از جملهش بفهمین:
«اچتیامال یک زبان برنامه نویسی است که کمپایل میشود، سپس توسط cpu پردازش میشود و به شما نشان داده میشود.»
و همون رو هم اشتباه درس بده
عمق ماجرا رو از جملهش بفهمین:
«اچتیامال یک زبان برنامه نویسی است که کمپایل میشود، سپس توسط cpu پردازش میشود و به شما نشان داده میشود.»
🤣15👍1
Coding Lovers
PROCESS | پراسس
پراسس / PROCESS چیه؟!
پراسس به عنوان ی مفهوم کلیدی توی سیستمعامل ها، نماینگر فعالیتهاییه که توی پسزمینه در حال اجرا هستن، وقتی ی برنامه و فعالیت رو شروع میکنین، سیستمعامل ی پراسس واسش ایجاد میکنه که این پراسس شامل تمامی موارد موردنیاز اجرا شدن برنامه میشه، مثلا سورسکد، دادهها، وضعیت اجرایی و..پراسس ها چه رفتار هایی رو توی مدت زمان حیاتشون انجام میدن؟!
فرض کنین در حال کار با سیستم هستین و برنامهی VSCODE رو باز و شروع به کد زدن میکنین، وقتی این برنامه رو باز میکنین سیستم عامل ی درخواست مبتنی بر ایجاد پراسس جدید ارسال میکنه و پراسس ایجاد میشه، در ادامه با نحوه ایجاد شدنش مفصل تر آشنا میشیم.
توی ی حالت کلی به شش حالت و عملکرد تقسیم میشن :هر پراسس چه ویژگی هایی میتونه داشته باشه؟!
ایجاد و ساخته شدن / CREATION : بالاتر گفتیم که با باز و ران کردن ی برنامه، پراسسی ایجاد میشه، اگه بخوایم دقیق تر بیان کنیم، باید گفت ی پراسس زمانی ایجاد میشه که برنامه به حافظه بارگذاری بشه، این مرحله شامل تخصیص منابع و بلوک کنترل میشه.
انتقال بین استیت ها : پراسس ها میتونن حالت های مختلفی داشته و توی این حالت ها جابهجا بشن ( درحال ایجاد ، درحالت تخصیص CPU، درحال اجرا توسط CPU، منتظر ی رویداد مثلا ورودی خروجی و یا توی حالت اتمام شده خودشون باشن ).
مدیریت منابع : هر پراسسی نیاز به منابعی مثل CPU و یا رم داره، سیستمعامل ها توی زمان اجرای پراسسها این منابع رو مدیریت میکنن که از تداخل نداشتن و پیدانکردنشون اطمینان حاصل کنن.
زمانبندی : سیستمعامل واسه اینکه تعیین کنه کدوم پراسس در حال حاظر اجرا بشه از الگوریتم خاصی استفاده و پراسس ها رو صف بندی میکنه.
ارتباط بین پراسسها : پراسس ها معمولا نیاز دارن که باهم در ارتباط باشن و با ارتباط باهمدیگه کار میکنن، این ارتباط معمولا از طریق ارسال پیام توی حافظه مشترک انجام میشه.
پایان پراسس : توی حالت عادی، وقتی پراسس کار خودش رو تموم میکنه به حالت پایان یافته منتقل میشه و سیستم عامل اقدام به پاکسازی برخی از اجزا مثل حافظه RAM و یا بلوک کنترل پراسس میکنه، البته باید اشاره کنم که همیشه اوضاع به همین خوب و خوشی نیست ممکنه مشکلاتی ایجاد بشه و پراسس تغیر کنه، توی ادامه پست بیشتر آشنا میشیم با این مورد.
هر پراسسی که توسط سیستمعامل ایجاد میشه بطور خاص دارای مشخصات خاصیه :پراسس ها از نظر وضعیت و مدیریت چند نوع هستن؟!
استفاده از رم / RAM : هر پراسسی مقداری از رم رو به خودش اختصاص میده که خودش به دو نوع اصلی تقسیم میشه ( استک : واسه ذخیرهسازی متغیر و داده های محلی، هیپ : واسه ذخیرهسازی اشیاء و دادههای داینامیک )
استفاده از سیپییو / CPU : هر پراسس به نوبت بسته به نوع و هسته CPU، از CPU استفاده میکنه، توی پست های قبلی با CPUها آشنا شدیم، توی کامپیوتر های جدید هر پراسس با سوئیچینگ با ترتیب از CPU استفاده میکنه.
داشتن شناسه پراسس / PID : هر پراسسی واسه شناسایی شدن توی سیستم دارای ی PID یونیکیه.
قبل اینکه حالات پراسس رو بیان کنیم باید با دوتا مسئله آشنا بشیم، یکی پراسس والد و یکی پراسس فرزند :
پراسس والد : منظور از پراسس والد همون پراسس اصلی و درواقع اون برنامهایه که اجرا شده
پراسس فرزند : وقتی پراسس والد به نوبهخودش چندتا پراسس دیگهای رو شروع کنه و انجام بده، به هر یکی از اون پراسس ها به اصطلاح "پراسس فرزند" میگیم، شاید توی نگاه اول یکم پیچیده بیاد ولی اینطور نیست، مثال زیر رو ببینین :
فرض کنین همون برنامه VSCODE رو ران کردیم، در اینجا خود برنامه VSCODE به عنوان پراسس والد شناخته میشه و وقتی ی فایل مثلا پایتونی رو داخلش باز میکنیم، پراسس والد ی پراسس فرزند واسه اون فایل پایتونی ایجاد میکنه.
توی حالت عادی، پراسس ها رو از نظر وضعیت میتونیم به دو دسته اصلی تقسیم کنیم، پراسس های یتیم و پراسس های زامبی!! :
پراسس های یتیم : این پراسس ها وقتی ایجاد میشن که پراسس والد قبل از تموم شدن کارش، تموم میشه، توی همچین موقعیتی معمولا سیستم عامل این پراسس رو به عنوان "INIT" نامگذاری میکنه که کمک مدیریتی ایجاد بشه ( تصور کنین ی کودک وجود داره که باباش تنهاش گذاشته🐱 ) .
پراسس زامبی : وقتی به پراسسی به اصطلاح پراسس زامبی میگیم که کارش تموم شده ولی هنوز اطلاعاتش توسط والد خونده نشده👀 ، معمولا به این پراسس، پراسس مرده هم میگن! درکل بدونین که تا وقتی توسط والد خونده نشه موجب مصرف منابعه و توی حالت انتظار قرار داره، پس از این به بعد مراقب باشین که پراسس والد رو KILL نکنین چون ممکنه پراسس های فرزند یا نابود و یا به زامبی تبدیل بشن، شما که ادمکُش نیستید نه؟! (شوخی 😆 )
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6❤1
قصد داشتم توی ی پست حداقل دو مورد از موارد لیست رو تشریح کنم، ولی امان از محدوديت کاراکتر، حتی نشد از ایموجی هم استفاده کنم 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12