💡فرق Process با Thread چیه؟
❌ خیلی وقتا پیش میاد افراد این ۲ مورد رو به جای هم استفاده میکنن یا فکر می کنن یکی هستن، ولی با هم فرق دارن.
خب اول یه لایه بریم عقب تر و بگیم کلا program چیه. به زبون ساده، program یک فایل executable هست.
وقتی ما میایم و این فایل رو اجرا میکنیم، این فایل داخل رم سیستم قرار می گیره و به اصطلاح active میشه، و اون موقع بهش میگیم یک Process. البته یک program میتونه موقع اجرا، چندین Process رو اجرا کنه. برای مثال مرورگر chrome برای هر تب جدیدی که باز میشه یک پروسس جدید ایجاد میکنه.
✅ حالا هر کدوم از این Process ها داخل خودشون میتونن چندین Thread رو اجرا کنن، مثلا وقتی شما داری با Word کار میکنی، خود اون داکیومنتی که باز کردی یک Process هست و مثلا وقتی موقع تایپ کردن هستی، یک Thread برای نوشتن اون متن داخل صفحه درحال اجراست و یک Thread هم برای spell checking در حال اجراست.
✌️ ۲ فرق اساسی Thread با Process:
1⃣ معمولا Process ها به صورت مستقل اجرا میشن ولی Thread ها به صورت زیر مجموعه هایی از Process اجرا میشن
2⃣ هر Process فضای memory مخصوص به خودش رو داره ولی Thread هایی که برای یک Process هستند فضای memory اشتراکی دارن.
-> Thread
-> Process
-> Thread
Program
-> Thread
-> Process
-> Thread
❌ خیلی وقتا پیش میاد افراد این ۲ مورد رو به جای هم استفاده میکنن یا فکر می کنن یکی هستن، ولی با هم فرق دارن.
خب اول یه لایه بریم عقب تر و بگیم کلا program چیه. به زبون ساده، program یک فایل executable هست.
وقتی ما میایم و این فایل رو اجرا میکنیم، این فایل داخل رم سیستم قرار می گیره و به اصطلاح active میشه، و اون موقع بهش میگیم یک Process. البته یک program میتونه موقع اجرا، چندین Process رو اجرا کنه. برای مثال مرورگر chrome برای هر تب جدیدی که باز میشه یک پروسس جدید ایجاد میکنه.
✅ حالا هر کدوم از این Process ها داخل خودشون میتونن چندین Thread رو اجرا کنن، مثلا وقتی شما داری با Word کار میکنی، خود اون داکیومنتی که باز کردی یک Process هست و مثلا وقتی موقع تایپ کردن هستی، یک Thread برای نوشتن اون متن داخل صفحه درحال اجراست و یک Thread هم برای spell checking در حال اجراست.
✌️ ۲ فرق اساسی Thread با Process:
1⃣ معمولا Process ها به صورت مستقل اجرا میشن ولی Thread ها به صورت زیر مجموعه هایی از Process اجرا میشن
2⃣ هر Process فضای memory مخصوص به خودش رو داره ولی Thread هایی که برای یک Process هستند فضای memory اشتراکی دارن.
-> Thread
-> Process
-> Thread
Program
-> Thread
-> Process
-> Thread
👍9❤1
#نقل_قول
مفهومی به نام Side-Effect وجود ندارد. از زاویه سیستم، هر آنچه وجود دارد تنها Effect است. Side-Effect برچسبی است که ناظر بر اساس کاربری، اهداف و انتظارات خود بر روی رفتار ها و پدیده های یک سیستم میزند. عبارت Side-Effect نتیجه ادراک و شناخت خود محور ما و بازتاب تفکر خطی و غیر سیستمی ماست.
از لینکدین Hadi Ahmadi
مفهومی به نام Side-Effect وجود ندارد. از زاویه سیستم، هر آنچه وجود دارد تنها Effect است. Side-Effect برچسبی است که ناظر بر اساس کاربری، اهداف و انتظارات خود بر روی رفتار ها و پدیده های یک سیستم میزند. عبارت Side-Effect نتیجه ادراک و شناخت خود محور ما و بازتاب تفکر خطی و غیر سیستمی ماست.
از لینکدین Hadi Ahmadi
👍8👎2
💡فرق Session با Cookie چیه؟
کوکی و سشن جفتشون برای حمل اطلاعات کاربر توی ریکوئست های HTTP استفاده میشن و معمولا شامل وضعیت login بودن کاربر و دسترسی های کاربر و ... هستن.
1⃣ کوکی (Cookie) 🍪
کوکی ها معمولا محدودیت سایز دارن(4KB) و بخش های کوچیکی از اطلاعات رو حمل میکنن و روی دیوایس کاربر ذخیره میشن. کوکی ها با هر ریکوئست ارسال میشن و کاربر ها میتونن کوکی ها رو داخل مرورگرشون ban کنند.
2⃣ سشن (Session)
بر خلاف کوکی ها، سشن ها سمت سرور ساخته و ذخیره میشن. معمولا یک session id یونیک روی سرور ساخته میشه و به سشن هر کاربر متصل میشه. این session id داخل یک کوکی قرار میگیره و به سمت کلاینت ارسال میشه. سشن ها میتونن داده های بیشتری رو داخل خودشون ذخیره کنن و از اونجایی که داده های سشن به صورت مستقیم برای کاربر قابل دسترسی نیستن، امنیت بیشتری هم دارند.
کوکی و سشن جفتشون برای حمل اطلاعات کاربر توی ریکوئست های HTTP استفاده میشن و معمولا شامل وضعیت login بودن کاربر و دسترسی های کاربر و ... هستن.
1⃣ کوکی (Cookie) 🍪
کوکی ها معمولا محدودیت سایز دارن(4KB) و بخش های کوچیکی از اطلاعات رو حمل میکنن و روی دیوایس کاربر ذخیره میشن. کوکی ها با هر ریکوئست ارسال میشن و کاربر ها میتونن کوکی ها رو داخل مرورگرشون ban کنند.
2⃣ سشن (Session)
بر خلاف کوکی ها، سشن ها سمت سرور ساخته و ذخیره میشن. معمولا یک session id یونیک روی سرور ساخته میشه و به سشن هر کاربر متصل میشه. این session id داخل یک کوکی قرار میگیره و به سمت کلاینت ارسال میشه. سشن ها میتونن داده های بیشتری رو داخل خودشون ذخیره کنن و از اونجایی که داده های سشن به صورت مستقیم برای کاربر قابل دسترسی نیستن، امنیت بیشتری هم دارند.
👍5👌2
Forwarded from A H U R 4
امروز یک تجربه با تاوانی نه چندان سنگین ( خوشبختانه ) بدست آوردم.
روی سیستم یکی از کارآموز ها یکسری دیتای کراول شده بود که باید روی سرور تست قرار میگرفت.
به علت محدودیت وقت، عجله اجازه نداد که با ftp و mongodump و mongorestore حلش کنیم؛ به همین دلیل پورت مونگو رو از روی سرور ویندوزی تست expose کردم و bindIpAll هم true کردم توی mongod.cfg ( بدون تنظیم password ) دقیقا بعد از نهایتا یک ساعت به سرور سر زدم و متوجه شدم کل دیتای موجود حذف شده و یک کالکشن README روی دیتابیس ایجاد شده، محتواشم این بود که دیتای شما بک آپ گرفته شد و اگر میخواینش به فلان ولت انقدر واریز کنید ( کد رهگیری هم داده بودن 😂 )
دیتایی که اونا بدست آوردن دیتای open source سایت nvd بود ( ماژولی که برای دریافت اطلاعات نوشتم nvd-client ) ولی تجربه ای که من بدست آوردم باعث شد حتی در حساس ترین مواقع هم در موارد امنیتی سهل انگاری نکنم.
بعد از چند تا سرچ و مواجه شدن با تجربه های مشابه متوجه شدم که یکسری اسکنر بطور همیشگی در حال اسکن رنج آیپی های متفاوت و پورت های دیفالت یا مرسوم دیتابیس ها هستن و منتظر موقعیت مناسب...
خلاصه خواستم این سهل انگاری که به علت تعجیل در انجام تسک انجام شد رو به اشتراک بزارم که در مواقع حساس همچین سهل انگاریی انجام نشه.
@Ahura_Rahmani | #Ahur4 #Database #Security
روی سیستم یکی از کارآموز ها یکسری دیتای کراول شده بود که باید روی سرور تست قرار میگرفت.
به علت محدودیت وقت، عجله اجازه نداد که با ftp و mongodump و mongorestore حلش کنیم؛ به همین دلیل پورت مونگو رو از روی سرور ویندوزی تست expose کردم و bindIpAll هم true کردم توی mongod.cfg ( بدون تنظیم password ) دقیقا بعد از نهایتا یک ساعت به سرور سر زدم و متوجه شدم کل دیتای موجود حذف شده و یک کالکشن README روی دیتابیس ایجاد شده، محتواشم این بود که دیتای شما بک آپ گرفته شد و اگر میخواینش به فلان ولت انقدر واریز کنید ( کد رهگیری هم داده بودن 😂 )
دیتایی که اونا بدست آوردن دیتای open source سایت nvd بود ( ماژولی که برای دریافت اطلاعات نوشتم nvd-client ) ولی تجربه ای که من بدست آوردم باعث شد حتی در حساس ترین مواقع هم در موارد امنیتی سهل انگاری نکنم.
بعد از چند تا سرچ و مواجه شدن با تجربه های مشابه متوجه شدم که یکسری اسکنر بطور همیشگی در حال اسکن رنج آیپی های متفاوت و پورت های دیفالت یا مرسوم دیتابیس ها هستن و منتظر موقعیت مناسب...
خلاصه خواستم این سهل انگاری که به علت تعجیل در انجام تسک انجام شد رو به اشتراک بزارم که در مواقع حساس همچین سهل انگاریی انجام نشه.
@Ahura_Rahmani | #Ahur4 #Database #Security
👍3👌2❤1
سلام دوستان
همونطور که میدونید عکس بالا سخت ترین کار برای هر دولوپری هستش 😁
خیلی وقتا اون ترکیب بندی کلمات توی ذهن نمیاد، خیلی وقتا طولانی میشه متنش، حتی بعضی وقت ها نمیدونیم این تغییر که دادیم دقیقا چه نوعیه، feat, ref, chore و ...
این شد من یک برنامه کوچیک و جمع و جور نوشتم که بعد از اینکه فایل هاتون رو به stage اضافه کردید، با اجرای این برنامه توی دایرکتوری پروژه تون، از مدل Gemini-1.5-flash استفاده میکنه و بهتون چند تا commit message بر اساس تغییراتتون پیشنهاد میده
این لینک گیت هاب پروژه هست و ممنون میشم اگه خوشتون اومد با star دادن من رو خوشحال کنید:
https://github.com/ali-hv/comsu
همچنین اگه ایده ای براش دارید که میتونه بهترش کنه، ممنون میشم اگه میتونید pr بزنید یا بهم بگید تا من اعمال کنم.
همونطور که میدونید عکس بالا سخت ترین کار برای هر دولوپری هستش 😁
خیلی وقتا اون ترکیب بندی کلمات توی ذهن نمیاد، خیلی وقتا طولانی میشه متنش، حتی بعضی وقت ها نمیدونیم این تغییر که دادیم دقیقا چه نوعیه، feat, ref, chore و ...
این شد من یک برنامه کوچیک و جمع و جور نوشتم که بعد از اینکه فایل هاتون رو به stage اضافه کردید، با اجرای این برنامه توی دایرکتوری پروژه تون، از مدل Gemini-1.5-flash استفاده میکنه و بهتون چند تا commit message بر اساس تغییراتتون پیشنهاد میده
این لینک گیت هاب پروژه هست و ممنون میشم اگه خوشتون اومد با star دادن من رو خوشحال کنید:
https://github.com/ali-hv/comsu
همچنین اگه ایده ای براش دارید که میتونه بهترش کنه، ممنون میشم اگه میتونید pr بزنید یا بهم بگید تا من اعمال کنم.
🔥15👍1😁1
هکاتون دیجی کالا، فراتر از حد انتظار
از دیروز مسابقه حضوری هکاتون دیجی کالا شروع شده و من و تیمم هم(تیمم فقط یک عضو داره 😊) که ایده و محصول مون جزو ۲۴ ایده انتخابی دیجیکالا قرار گرفته اینجا هستیم و درحال توسعه و آماده سازی محصول برای رسوندنش به mvp و ارائه به داور ها هستیم.
واقعا بچه های دیجی کالا و دیجی نکست سنگ تموم گذاشتن، اون از افتتاحیه جذابشون که عملا یک کنسرت زنده برامون اجرا کردن، از کاپ fifa که برای خستگی در کردنمون برگزار کردن، هدیه های جذابی که دادن، پذیرایی شون هم عالی بود و تشکر ویژه از منتور های عزیز که ۲۴ ساعته به سوالاتمون جواب میدن و راهنماییمون میکنن.
پ.ن: توسعه محصول برای بخش Digikala Seller Service هست.
#DinoHacker
از دیروز مسابقه حضوری هکاتون دیجی کالا شروع شده و من و تیمم هم(تیمم فقط یک عضو داره 😊) که ایده و محصول مون جزو ۲۴ ایده انتخابی دیجیکالا قرار گرفته اینجا هستیم و درحال توسعه و آماده سازی محصول برای رسوندنش به mvp و ارائه به داور ها هستیم.
واقعا بچه های دیجی کالا و دیجی نکست سنگ تموم گذاشتن، اون از افتتاحیه جذابشون که عملا یک کنسرت زنده برامون اجرا کردن، از کاپ fifa که برای خستگی در کردنمون برگزار کردن، هدیه های جذابی که دادن، پذیرایی شون هم عالی بود و تشکر ویژه از منتور های عزیز که ۲۴ ساعته به سوالاتمون جواب میدن و راهنماییمون میکنن.
پ.ن: توسعه محصول برای بخش Digikala Seller Service هست.
#DinoHacker
🔥10👍5👌1
This media is not supported in your browser
VIEW IN TELEGRAM
صدای بابانوئل chatgpt خیلی خوبه 😁
😱4👍2🤣2🫡2
Forwarded from Linuxor ?
تیلور خالق لاراول میگه :
ابتدا "قسمتهای جدید و متفاوت نرمافزار" رو بسازید. از صفحه لاگین یا چیزهایی که قبلاً بارها ساختید شروع نکنید. با شروع از چیزهایی که تازه و متفاوت هستند، خیلی سریعتر عدم قطعیت رو از بین میبرید. همچنین، احتمال شکست در این قسمتها بیشتره، که اتفاقاً چیز خوبیه! اگه قراره با مانع بزرگی روبرو بشید، بهتره خیلی زود اینو بفهمید، قبل از اینکه زمان زیادی رو صرف بخشهای تکراری و معمولی کرده باشی.
@Linuxor ~ laraveljobs_news
ابتدا "قسمتهای جدید و متفاوت نرمافزار" رو بسازید. از صفحه لاگین یا چیزهایی که قبلاً بارها ساختید شروع نکنید. با شروع از چیزهایی که تازه و متفاوت هستند، خیلی سریعتر عدم قطعیت رو از بین میبرید. همچنین، احتمال شکست در این قسمتها بیشتره، که اتفاقاً چیز خوبیه! اگه قراره با مانع بزرگی روبرو بشید، بهتره خیلی زود اینو بفهمید، قبل از اینکه زمان زیادی رو صرف بخشهای تکراری و معمولی کرده باشی.
@Linuxor ~ laraveljobs_news
👍9❤6
MineGrub 📦🪓
یه نفر اومده یه تم سوپر خفن برای grub درست کرده که ظاهرش رو شبیه منوی بازی Minecraft میکنه که واقعا باحاله
اینم آدرس ریپو برای استفاده کردن:
https://github.com/Lxtharia/minegrub-theme
یه نفر اومده یه تم سوپر خفن برای grub درست کرده که ظاهرش رو شبیه منوی بازی Minecraft میکنه که واقعا باحاله
اینم آدرس ریپو برای استفاده کردن:
https://github.com/Lxtharia/minegrub-theme
🔥6🫡3
Forwarded from نوشتههای ترمینالی
امروز خیلی اتفاقی با git extras آشنا شدم!
من دنبال این بودم که کاری که bfg انجام میده یعنی پاک کردن یه فایل بزرگ یا فایل رمز رو از همه کامیتها و تگها و برنچهای گیت انجام بده که نمیدونم قابلیتش وجود نداشت یا من موفق نشدم با bfg repo cleaner
برای همین با git extras اشنا شدم که یک سری کامند از جمله obliterate رو به گیت اضافه میکنه. obliterate که توضیحش همین بود که دادم ولی بسیاری از قابلیتهای جالب دیگه داره که میتونید از اینجا لیستشون رو ببینید:
https://github.com/tj/git-extras/blob/main/Commands.md
نصب و اطلاعات کلیش هم در صفحه اصلی گیتهابشون:
https://github.com/tj/git-extras/tree/main
من دنبال این بودم که کاری که bfg انجام میده یعنی پاک کردن یه فایل بزرگ یا فایل رمز رو از همه کامیتها و تگها و برنچهای گیت انجام بده که نمیدونم قابلیتش وجود نداشت یا من موفق نشدم با bfg repo cleaner
برای همین با git extras اشنا شدم که یک سری کامند از جمله obliterate رو به گیت اضافه میکنه. obliterate که توضیحش همین بود که دادم ولی بسیاری از قابلیتهای جالب دیگه داره که میتونید از اینجا لیستشون رو ببینید:
https://github.com/tj/git-extras/blob/main/Commands.md
نصب و اطلاعات کلیش هم در صفحه اصلی گیتهابشون:
https://github.com/tj/git-extras/tree/main
GitHub
git-extras/Commands.md at main · tj/git-extras
GIT utilities -- repo summary, repl, changelog population, author commit percentages and more - tj/git-extras
👍10👌2
Forwarded from Segmentation Fault
"Your C Program Starts Before main()"
You think execution begins at main(), but it doesn't.
Try this:
Output:
But WHY?
C runtime (CRT) initializes before main().
Global constructors, TLS setup, and dynamic linker tricks happen first.
These kind of function are registered in .init_array (most of them but not all of them), which runs before main().
You never had control—your program was already running before you got there.
@segfault_t
You think execution begins at main(), but it doesn't.
Try this:
#include <stdio.h>
__attribute__((constructor)) void before_main() {
printf("I run before main!\n");
}
int main() {
printf("Now in main.\n");
return 0;
}
Output:
I run before main!
Now in main.
But WHY?
C runtime (CRT) initializes before main().
Global constructors, TLS setup, and dynamic linker tricks happen first.
These kind of function are registered in .init_array (most of them but not all of them), which runs before main().
You never had control—your program was already running before you got there.
@segfault_t
👍7😁1
This media is not supported in your browser
VIEW IN TELEGRAM
داستان این روزای vibe coder ها و software engineer ها 😁
🤣12
نمای پشت صحنه
وقتی درباره یه مشکل کامپیوتری توی اینترنت سرچ میکنی:
اولین جواب توی Microsoft:
Hi ScrepY1337. I'm Rashmi, an installation specialist, 10 years awarded Windows MVP, and Volunteer Moderator, here to help you.
have you tried doing sfc/scannow?
پ.ن: اتوماتیک به عنوان پاسخ درست علامت خورده، ولی هیچ مشکلیو حل نمیکنه
Hi ScrepY1337. I'm Rashmi, an installation specialist, 10 years awarded Windows MVP, and Volunteer Moderator, here to help you.
have you tried doing sfc/scannow?
پ.ن: اتوماتیک به عنوان پاسخ درست علامت خورده، ولی هیچ مشکلیو حل نمیکنه
🤣10👍2😁2