ضربان قلب یا heartbeat توی سیستمهای توزیعشده یه پیام دورهای از هر نود به سیستم برای اطلاع از وضعیت سلامتشه. این مکانیزم توی بسیاری از سیستمها مثل Apache Kafka برای اطمینان از هماهنگی بین سرورها و تشخیص خرابی استفاده میشه. اگه سیگنال heartbeat از یه سرور دریافت نشه، سرور دیگه مسئولیتش رو به عهده میگیره تا از دست رفتن دادهها یا وقفه در پردازش جلوگیری شه.
@Linuxor
@Linuxor
👍99
اگه خواستی درباره سیستم عامل ها بدونی هر روز یکی از قسمت های اینو بخون، خیلی از مباحث سیستم عامل رو با مثال توضیح داده :
https://mohitmishra786.github.io/exploring-os/src/
@Linuxor
https://mohitmishra786.github.io/exploring-os/src/
@Linuxor
2👍81🔥8✍3❤🔥3❤1
وقتی یه وبسرور بالا آوردی، میتونی با ابزار زیر عملکردش رو تست کنی
این دستور 1000 تا درخواست با همزمانی 50 تایی به localhost ارسال میکنه و توی نتیجه بهت میگه چقدرش Failed شد و سرور چقدر میتونه در ثانیه تحمل کنه.
@Linuxor
ab -n 1000 -c 50 https://localhost/index.html
این دستور 1000 تا درخواست با همزمانی 50 تایی به localhost ارسال میکنه و توی نتیجه بهت میگه چقدرش Failed شد و سرور چقدر میتونه در ثانیه تحمل کنه.
@Linuxor
👍120🔥5🐳2👎1
توی ++C، توابع ()likely و ()unlikely به برنامهنویس اجازه میده تا به کامپایلر اطلاع بده که احتمال وقوع یک مسیر خاص توی کد بیشتره یا کمتره. این موضوع میتونه بهینهسازی عملکرد برنامه را بهبود بده، به ویژه توی branch prediction یا پیشبینی انشعاب پردازنده.
وقتی پردازنده با یه دستور شرطی مثلا if یا switch روبهرو میشه، نیاز داره پیشبینی کنه که کدوم مسیر کد اجرا قراره بشه. اگه این پیشبینی درست باشه، پردازنده سریعتر عمل میکنه.
مثلا کد زیرو ببینید
if (likely(value > 0)) {
cout << "Positive value";
} else {
cout << "Non-positive value";
}
اینجا likely به کامپایلر اطلاع میده که شرط value به احتمال زیاد بزرگ تر از 0 هستش پس کامپایلر این مسیرو بهینه مدیریت میکنه.
@Linuxor
وقتی پردازنده با یه دستور شرطی مثلا if یا switch روبهرو میشه، نیاز داره پیشبینی کنه که کدوم مسیر کد اجرا قراره بشه. اگه این پیشبینی درست باشه، پردازنده سریعتر عمل میکنه.
مثلا کد زیرو ببینید
if (likely(value > 0)) {
cout << "Positive value";
} else {
cout << "Non-positive value";
}
اینجا likely به کامپایلر اطلاع میده که شرط value به احتمال زیاد بزرگ تر از 0 هستش پس کامپایلر این مسیرو بهینه مدیریت میکنه.
@Linuxor
👍126🔥17🤯12❤8👎7
با این منبع میشه توی 5 روز زبان راست رو تا یه حد خوبی یاد گرفت جالب اینجاست تیم اندروید گوگل معرفیش کرده و به افراد تازه کار میدن که یاد بگیرن :
comprehensive-rust.mo8it.com
@Linuxor
comprehensive-rust.mo8it.com
@Linuxor
👍93❤2👎2💋2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
کتابخانه drawdata به شما امکان میده در محیط Jupyter دادههای دلخواهتون رو بسازید. ابزار کاربردی برای تمرین و یادگیری الگوریتمهای ماشین لرنینگ
github.com/koaning/drawdata
@Linuxor ~ rzdjafari
github.com/koaning/drawdata
@Linuxor ~ rzdjafari
👍47😱3🔥1🤣1💅1
توی مدل توسعه نرمافزار اجایل، کدوم مورد بخش کلیدی این متدولوژیه؟
Anonymous Quiz
54%
ارائه مکرر نسخههای کوچیک و قابل استفاده از محصول
6%
ارائه محصول نهایی در پایان پروژه به صورتی که وابسته به هیچ پلتفرمی نباشد
10%
مدیریت تغییرات به صورت محدود و کنترلشده
13%
توسعه بر اساس مستندسازی دقیق قبل از شروع کدنویسی
17%
توسعه سریع نرم افزار با حداقل امکانات موجود حتی تکنولوژی های قدیمی
👍50🤣6🥱3👎2🎄1
خلاصه امروز توییتر کامیونیتی برنامه نویسی و کامپیوتر :
یه نفر یه توییت زده بود که "من از ۱۰ سالگی دارم کد نویسی میکنم تا ۲۵ سالگیم نتونستم با برنامه نویسی ماشین بخرم.
دوستم یه بوتیک تو ۱۸ سالگی زد الان ۲۷ سالشه هم خونه و چندتا ماشین داره."
اکثرا به صورت حمله بهش گفته بودن که مشکل خودته و بی عرضگیته، اما واقعیت ممکنه شما حتی بیشتر از این هام کار کنید و برنامه نویس و تکنیکالی خفن تر بشین و ببینید یهو هیچ پولی در نمیارین، پول صرفا با مفید بودن خروجیتون در ارتباطه به پتانسیل درونیتون هیچ ربطی نداره و ممکنه این پناسیل شما جای درست استفاده بشه خروجی خیلی قوی و پول زیادی بده ...
پس هیچ وقت از تکنیکالی خفن تر کردن خودتون و بالا بردن پتانسیلتون پشیمون نشین، اگه پول هم بخواین بعدا با چند تا جابجایی جای درست خودتونو پیدا میکنین و اون کاغذم بدست میارین و باهاش خودتونو باد میزنین.
@Linuxor
یه نفر یه توییت زده بود که "من از ۱۰ سالگی دارم کد نویسی میکنم تا ۲۵ سالگیم نتونستم با برنامه نویسی ماشین بخرم.
دوستم یه بوتیک تو ۱۸ سالگی زد الان ۲۷ سالشه هم خونه و چندتا ماشین داره."
اکثرا به صورت حمله بهش گفته بودن که مشکل خودته و بی عرضگیته، اما واقعیت ممکنه شما حتی بیشتر از این هام کار کنید و برنامه نویس و تکنیکالی خفن تر بشین و ببینید یهو هیچ پولی در نمیارین، پول صرفا با مفید بودن خروجیتون در ارتباطه به پتانسیل درونیتون هیچ ربطی نداره و ممکنه این پناسیل شما جای درست استفاده بشه خروجی خیلی قوی و پول زیادی بده ...
پس هیچ وقت از تکنیکالی خفن تر کردن خودتون و بالا بردن پتانسیلتون پشیمون نشین، اگه پول هم بخواین بعدا با چند تا جابجایی جای درست خودتونو پیدا میکنین و اون کاغذم بدست میارین و باهاش خودتونو باد میزنین.
@Linuxor
👍204👎13🔥8🗿5❤4
ایدِمپُتِنس Idempotence توی نرمافزار به عملیاتی گفته میشه که صرفنظر از تعداد دفعات اجراش، نتیجه یکسانی تولید میکنه.
مثلا دستور زیر رو ببینید
chmod 777 file
این یه دستور ایدِمپُتِنس هستش یعنی اگه یکبار اجرا بشه دفه های بعدی هم اجراش کنید خطا نمیده که بگه این قبلا 777 بوده، توی API ها مثلا پرداخت هم میتونین بجای اینکه برگردونید این تراکنش نامعتبره برگردونید این تراکنش با فلان اطلاعات انجام شده؛ یا مثلا اگه چیزی خواستین توی دیتابیس آپدیت کنید و وجود نداشت میتونین اونو اینسرتش کنید و خطا بر نگردونید.
@Linuxor
مثلا دستور زیر رو ببینید
chmod 777 file
این یه دستور ایدِمپُتِنس هستش یعنی اگه یکبار اجرا بشه دفه های بعدی هم اجراش کنید خطا نمیده که بگه این قبلا 777 بوده، توی API ها مثلا پرداخت هم میتونین بجای اینکه برگردونید این تراکنش نامعتبره برگردونید این تراکنش با فلان اطلاعات انجام شده؛ یا مثلا اگه چیزی خواستین توی دیتابیس آپدیت کنید و وجود نداشت میتونین اونو اینسرتش کنید و خطا بر نگردونید.
@Linuxor
👍97👎2👀1
یکی پرسیده چرا Stack به سمت پایین رشد میکنه و Heap به سمت بالا ؟
این عکس فضای اشغال شدهی یه فرایند توی RAM رو نشون میده که از چهار بخش تشکیل شده که یه بخش کد برنامه؛ یه بخش داده های گلوبال و ایستا توش ذخیره میشه؛ و یه بخش هیپ یا حافظه پویاست مثلا یه درخت یا یه داده بزرگ؛ و بخش اخر که استک هستش توش داده های سبک مثلا یه int و یا آدرس Return یه فانکشن.
علت اینکه Stack به سمت پایین رشد میکنه و Heap به سمت بالا، به این دلیله که طراحی طوری انجام شده که بهینهترین استفاده از فضای محدود حافظه امکانپذیر باشه، یعنی هیپ و استک بتونن از یه حافظه مشترک به اندازه نیازشون استفاده کنن.
@Linuxor
این عکس فضای اشغال شدهی یه فرایند توی RAM رو نشون میده که از چهار بخش تشکیل شده که یه بخش کد برنامه؛ یه بخش داده های گلوبال و ایستا توش ذخیره میشه؛ و یه بخش هیپ یا حافظه پویاست مثلا یه درخت یا یه داده بزرگ؛ و بخش اخر که استک هستش توش داده های سبک مثلا یه int و یا آدرس Return یه فانکشن.
علت اینکه Stack به سمت پایین رشد میکنه و Heap به سمت بالا، به این دلیله که طراحی طوری انجام شده که بهینهترین استفاده از فضای محدود حافظه امکانپذیر باشه، یعنی هیپ و استک بتونن از یه حافظه مشترک به اندازه نیازشون استفاده کنن.
@Linuxor
👍96🤣14🤓3👎2
بر خلاف تصور عام که انویدیا درایور برای لینوکس نداره اتفاقا برای لینوکس دو دسته درایور داره یکی رسمی و یکی اوپن سورس.
انویدیا مثل ویندوز درایور رسمی برای لینوکس داره و خوب هم کار میکنه مشکل جامعه لینوکس با عدم اوپن سورس بودنشه؛ که البته با مهندسی معکوس نسخه اوپن سورسش رو به اسم Nouveau رو دارن توسعه میدن ولی به اندازه درایور رسمی قوی نیست و از قابلیت های پیشرفته مثلا CUDA پشتیبانی نمیکنه.
خوبی درایور Nouveau اینه که پیشفرض روی اکثر توزیع های لینوکسی هست و نیازی نیست کاری کنید و اینکه کدش در دسترسه و قابلیت سفارشی سازی بالایی داره.
@Linuxor
انویدیا مثل ویندوز درایور رسمی برای لینوکس داره و خوب هم کار میکنه مشکل جامعه لینوکس با عدم اوپن سورس بودنشه؛ که البته با مهندسی معکوس نسخه اوپن سورسش رو به اسم Nouveau رو دارن توسعه میدن ولی به اندازه درایور رسمی قوی نیست و از قابلیت های پیشرفته مثلا CUDA پشتیبانی نمیکنه.
خوبی درایور Nouveau اینه که پیشفرض روی اکثر توزیع های لینوکسی هست و نیازی نیست کاری کنید و اینکه کدش در دسترسه و قابلیت سفارشی سازی بالایی داره.
@Linuxor
👍135❤6👎6👾4🌚1
چت جی پی تی یکی از API هاش باگ داشته و ازش به عنوان Mirror برای حمله DDoS استفاده میکردن
قضیه این شکلی بوده که یکی از API های ChatGPT یه پارامتر urls داشته که لیست آدرس های URL رو میگرفته ولی برنامه نویس های OpenAI غفلت کردن و یونیک بودن و حداکثر تعداد براش مشخص نکردن و مهاجما به تعداد زیاد آدرس قربانی رو قرار میدادن و یجورایی حمله DDoS از سمت سرور های ChatGPT به سرور قربانی میزدن؛ توی این لینک توضیحات فنی و کامل ترش هست.
@Linuxor
قضیه این شکلی بوده که یکی از API های ChatGPT یه پارامتر urls داشته که لیست آدرس های URL رو میگرفته ولی برنامه نویس های OpenAI غفلت کردن و یونیک بودن و حداکثر تعداد براش مشخص نکردن و مهاجما به تعداد زیاد آدرس قربانی رو قرار میدادن و یجورایی حمله DDoS از سمت سرور های ChatGPT به سرور قربانی میزدن؛ توی این لینک توضیحات فنی و کامل ترش هست.
@Linuxor
👍133🤣44😐11🔥6👎1