یه راهنمای دوزبانه (فارسی و انگلیسی) برای پرامپتنویسی هوش مصنوعی تو برای مقاله نویسی آماده کردم. پر از تمپلیت و نکات کاربردیه!
لینکش اینجاست:
https://github.com/hamidtech/Advanced-AI-Prompting-Guidelines-For-Research
@DevTwitter | <حاجیم/>
لینکش اینجاست:
https://github.com/hamidtech/Advanced-AI-Prompting-Guidelines-For-Research
@DevTwitter | <حاجیم/>
👍36🤣4🔥3
بچه ها بیکار بودم یه پکیج npm زدم میاد یه بررسی از پروژتون بهتون میده که چقدر کد زدین چیا دارین چقدر کامنت دارین و اینا
دوست داشتین نگاش کنین
کافیه بزنین
npx react-loc-analyzer
یه خروجی این شکلی باید بده بهتون
اینم npm اشه اگه خواستین کامند دقیق تر بدین
https://npmjs.com/package/react-loc-analyzer
@DevTwitter | <amiram/>
دوست داشتین نگاش کنین
کافیه بزنین
npx react-loc-analyzer
یه خروجی این شکلی باید بده بهتون
اینم npm اشه اگه خواستین کامند دقیق تر بدین
https://npmjs.com/package/react-loc-analyzer
@DevTwitter | <amiram/>
👍60🔥7🤣4👎3
This media is not supported in your browser
VIEW IN TELEGRAM
وردپرس رو بدون WAF رها نکنید.
اگه از طریق CDN براتون مقدور نیست، افزونه NinjaFirewall یه وف واقعیه که درخواستها رو قبل از رسیدن به وردپرس، هوک، اسکن، پاکسازی یا رد میکنه.
تمام اسکریپتها در محل نصب وردپرس محافظت میشن و رولهای امنیتی، ساعتی بهروز میشه.
https://wordpress.org/plugins/ninjafirewall
@DevTwitter | <Yaser Shahi/>
اگه از طریق CDN براتون مقدور نیست، افزونه NinjaFirewall یه وف واقعیه که درخواستها رو قبل از رسیدن به وردپرس، هوک، اسکن، پاکسازی یا رد میکنه.
تمام اسکریپتها در محل نصب وردپرس محافظت میشن و رولهای امنیتی، ساعتی بهروز میشه.
https://wordpress.org/plugins/ninjafirewall
@DevTwitter | <Yaser Shahi/>
👍34🤣10👎3
دو ماه پیش قالب ساده و مدرن پاندا برای وردپرس نوشتم که با استقبال مواجه شد. احتمالا این قالب برای انتشار جهانی در تم وردپرس منتشر خواهد شد و به صورت پیش فرض انگلیسی و مناسب برای وبلاگ است.
امکانات نظیر :
- منو بار
- دارک مد
- جستجو در سایت
- دکمه لایک
- ترجمه قالب
- برچسب ها
- پست های مرتبط
- دسته بندی ها
- اشتراک گذاری در فوتر
- لینک کوتاه پست
- تب بندی جدید و دیدگاه ها
- رسپانسیو شده
- کد نویسی اختصاصی
- و ...
https://github.com/Rayiumir/Panda
@DevTwitter | <Raymond Baghumian/>
امکانات نظیر :
- منو بار
- دارک مد
- جستجو در سایت
- دکمه لایک
- ترجمه قالب
- برچسب ها
- پست های مرتبط
- دسته بندی ها
- اشتراک گذاری در فوتر
- لینک کوتاه پست
- تب بندی جدید و دیدگاه ها
- رسپانسیو شده
- کد نویسی اختصاصی
- و ...
https://github.com/Rayiumir/Panda
@DevTwitter | <Raymond Baghumian/>
🔥33👍12🤣11❤2👎2
شرکت Microsoft در هر ثانیه 7000 حمله به رمزهای عبور را مسدود میکند، حملات فیشینگ هم 146٪ رشد داشته است!
با آمدن هوش مصنوعی وضعیت پیچیدهتر شده و باید آمادهتر بود.
- استفاده از احراز هویت چندمرحلهای (MFA) که sms نباشد!
- استفاده از Password Manager
این دو، لازمه حفظ امنیت شما هستند و البته که به تنهایی کافی نیستند.
https://forbes.com/sites/zakdoffman/2024/12/13/microsoft-confirms-password-deletion-for-1-billion-users-attacks-up-200/
@DevTwitter | <Vahid Nameni/>
با آمدن هوش مصنوعی وضعیت پیچیدهتر شده و باید آمادهتر بود.
- استفاده از احراز هویت چندمرحلهای (MFA) که sms نباشد!
- استفاده از Password Manager
این دو، لازمه حفظ امنیت شما هستند و البته که به تنهایی کافی نیستند.
https://forbes.com/sites/zakdoffman/2024/12/13/microsoft-confirms-password-deletion-for-1-billion-users-attacks-up-200/
@DevTwitter | <Vahid Nameni/>
👍32❤3
لذت بردم از زیبایی این مقاله
مخصوصا اون قسمتی که از cpu cache line حرف میزنه که مطمئن هستم برای خیلی هامون جدیده…
داستانش مفصله، اما حتما بخونید
کلا استفاده از sync.Pool جاهایی که temp objectهایی دارید که زیاد داره allocate میشه، زیاد منظورم به تعداد دفعات زیاد هست، استفاده از sync.Pool برای reuse کردن اون objectها کمک میکنه garbage collector کمتر به زحمت بیفته و performance برنامه خیلی بهتر بشه
هم تو خود net/http و encode/json و sdk گولنگ زیاد استفاده شده و هم فریمورک هایی مثل fasthttp که خیلی سریع هستن ازش استفاده میکنن
حتما به اون تیکه padding دقت کنید که چرا داره اضافه میشه
از زیبایی های sync.Pool اینه که lock-free طراحی شده، هر چند به خاطر modern cpuها و cache line ممکنه که این مکانیزم درست اجرا نشه بدون اون padding
قسمت pin و victim هم جالب بود، بخونید
https://victoriametrics.com/blog/go-sync-pool/
@DevTwitter | <Hossein Nazari/>
مخصوصا اون قسمتی که از cpu cache line حرف میزنه که مطمئن هستم برای خیلی هامون جدیده…
داستانش مفصله، اما حتما بخونید
کلا استفاده از sync.Pool جاهایی که temp objectهایی دارید که زیاد داره allocate میشه، زیاد منظورم به تعداد دفعات زیاد هست، استفاده از sync.Pool برای reuse کردن اون objectها کمک میکنه garbage collector کمتر به زحمت بیفته و performance برنامه خیلی بهتر بشه
هم تو خود net/http و encode/json و sdk گولنگ زیاد استفاده شده و هم فریمورک هایی مثل fasthttp که خیلی سریع هستن ازش استفاده میکنن
حتما به اون تیکه padding دقت کنید که چرا داره اضافه میشه
از زیبایی های sync.Pool اینه که lock-free طراحی شده، هر چند به خاطر modern cpuها و cache line ممکنه که این مکانیزم درست اجرا نشه بدون اون padding
قسمت pin و victim هم جالب بود، بخونید
https://victoriametrics.com/blog/go-sync-pool/
@DevTwitter | <Hossein Nazari/>
❤13👍7
مصاحبه کاری به زبان انگلیسی، آلمانی یا هر زبان خارجی کار راحتی نبست و نیاز به تمرین داره، این 10 تا ابزار برای مصاحبه خیلی خیلی بکارتون میاد :
۱. Preply
پلتفرمی برای یادگیری زبان با معلمان خصوصی که امکان برنامهریزی کلاسها به صورت سفارشی را فراهم میکند. شما میتوانید بر روی موضوعاتی مانند مصاحبه شغلی یا واژگان تخصصی در حوزه کاری خود تمرکز کنید.
۲. Speechling
ابزاری برای بهبود تلفظ و مهارتهای صحبت کردن. این ابزار به شما امکان میدهد جملات خاصی را ضبط کرده و بازخورد مستقیم از مربیان بومی زبان دریافت کنید. برای تمرین پاسخ به سوالات مصاحبه فوقالعاده است.
۳. TalkAbroad
این پلتفرم به شما امکان میدهد مکالمات واقعی با افراد بومی داشته باشید و خود را برای مکالمههای طبیعی در مصاحبههای شغلی آماده کنید. برقراری ارتباط با افراد واقعی تجربهای ارزشمند برای مقابله با استرس مصاحبه است.
۴. Elevate
این ابزار به ظاهر فقط برای تقویت مهارتهای شناختی است، اما دارای بخشهایی برای تقویت مهارتهای شنیداری و درک سریع است که در مصاحبهها اهمیت بالایی دارد.
۵. HiNative
پلتفرمی برای دریافت بازخورد از افراد بومی زبان در مورد جملاتی که میخواهید در مصاحبه استفاده کنید. میتوانید سوالاتی مثل «آیا این جمله طبیعی به نظر میرسد؟» بپرسید.
۶. Job Interview Simulator
این ابزار محیطی شبیهسازیشده برای مصاحبه شغلی ایجاد میکند که میتوانید در آن با سوالات رایج به زبانهای مختلف روبهرو شوید. این تجربه به شما کمک میکند استرس را کاهش دهید و پاسخهای خود را بهبود ببخشید.
۷. Beelinguapp
این برنامه به شما کمک میکند مهارتهای شنیداری و واژگان را با مطالعه داستانها و مقالات در کنار متن زبان مادری تقویت کنید. ایدهآل برای گسترش دایره لغات حرفهای.
۸. LingQ
پلتفرمی عالی برای یادگیری زبان از طریق محتوای واقعی مثل اخبار، مصاحبهها و ویدئوها. این ابزار به شما کمک میکند زبان موردنیاز برای مکالمات حرفهای و مصاحبههای شغلی را بیاموزید.
۹. Mondly
یک ابزار تعاملی که مکالمات شغلی و رسمی را شبیهسازی میکند. با این ابزار میتوانید اصطلاحات حرفهای و دیالوگهای مرتبط با مصاحبه را تمرین کنید.
۱۰. FluentU
این ابزار از ویدئوهای واقعی مانند مصاحبهها، سخنرانیها و مستندها استفاده میکند تا شما را با کاربردهای واقعی زبان آشنا کند. تماشای این ویدئوها میتواند اعتمادبهنفس شما را در مصاحبهها افزایش دهد.
@DevTwitter | <Shadi Sepehri (keyworkir)/>
۱. Preply
پلتفرمی برای یادگیری زبان با معلمان خصوصی که امکان برنامهریزی کلاسها به صورت سفارشی را فراهم میکند. شما میتوانید بر روی موضوعاتی مانند مصاحبه شغلی یا واژگان تخصصی در حوزه کاری خود تمرکز کنید.
۲. Speechling
ابزاری برای بهبود تلفظ و مهارتهای صحبت کردن. این ابزار به شما امکان میدهد جملات خاصی را ضبط کرده و بازخورد مستقیم از مربیان بومی زبان دریافت کنید. برای تمرین پاسخ به سوالات مصاحبه فوقالعاده است.
۳. TalkAbroad
این پلتفرم به شما امکان میدهد مکالمات واقعی با افراد بومی داشته باشید و خود را برای مکالمههای طبیعی در مصاحبههای شغلی آماده کنید. برقراری ارتباط با افراد واقعی تجربهای ارزشمند برای مقابله با استرس مصاحبه است.
۴. Elevate
این ابزار به ظاهر فقط برای تقویت مهارتهای شناختی است، اما دارای بخشهایی برای تقویت مهارتهای شنیداری و درک سریع است که در مصاحبهها اهمیت بالایی دارد.
۵. HiNative
پلتفرمی برای دریافت بازخورد از افراد بومی زبان در مورد جملاتی که میخواهید در مصاحبه استفاده کنید. میتوانید سوالاتی مثل «آیا این جمله طبیعی به نظر میرسد؟» بپرسید.
۶. Job Interview Simulator
این ابزار محیطی شبیهسازیشده برای مصاحبه شغلی ایجاد میکند که میتوانید در آن با سوالات رایج به زبانهای مختلف روبهرو شوید. این تجربه به شما کمک میکند استرس را کاهش دهید و پاسخهای خود را بهبود ببخشید.
۷. Beelinguapp
این برنامه به شما کمک میکند مهارتهای شنیداری و واژگان را با مطالعه داستانها و مقالات در کنار متن زبان مادری تقویت کنید. ایدهآل برای گسترش دایره لغات حرفهای.
۸. LingQ
پلتفرمی عالی برای یادگیری زبان از طریق محتوای واقعی مثل اخبار، مصاحبهها و ویدئوها. این ابزار به شما کمک میکند زبان موردنیاز برای مکالمات حرفهای و مصاحبههای شغلی را بیاموزید.
۹. Mondly
یک ابزار تعاملی که مکالمات شغلی و رسمی را شبیهسازی میکند. با این ابزار میتوانید اصطلاحات حرفهای و دیالوگهای مرتبط با مصاحبه را تمرین کنید.
۱۰. FluentU
این ابزار از ویدئوهای واقعی مانند مصاحبهها، سخنرانیها و مستندها استفاده میکند تا شما را با کاربردهای واقعی زبان آشنا کند. تماشای این ویدئوها میتواند اعتمادبهنفس شما را در مصاحبهها افزایش دهد.
@DevTwitter | <Shadi Sepehri (keyworkir)/>
👍26🤣3❤2
توی پروژه اخیرم که خیلی پیچیده نبود و زمان زیادی نداشتم، از Scribe استفاده کردم برای داکیومنتسازی API، و باید بگم با یه دستور ساده:
php artisan scribe:generate
کل داکیومنت تمیز و حرفهای آماده شد!
برای پروژههایی که نمیخوای وقت زیادی روی داکیومنتسازی بذاری، ولی نتیجه کار باید مرتب و خوانا باشه، Scribe واقعاً گزینه عالیایه.
اگه ابزارای دیگهای میشناسین که کار مشابه یا حتی بهتری میکنن، خوشحال میشم پیشنهاداتتون رو بشنوم.
@DevTwitter | <mohamadali mahboobi/>
php artisan scribe:generate
کل داکیومنت تمیز و حرفهای آماده شد!
برای پروژههایی که نمیخوای وقت زیادی روی داکیومنتسازی بذاری، ولی نتیجه کار باید مرتب و خوانا باشه، Scribe واقعاً گزینه عالیایه.
اگه ابزارای دیگهای میشناسین که کار مشابه یا حتی بهتری میکنن، خوشحال میشم پیشنهاداتتون رو بشنوم.
@DevTwitter | <mohamadali mahboobi/>
👍45🤣13🔥6❤1
معرفی پکیج Laravel OTP Manager در وب سایت Laravel News
https://laravel-news.com/one-time-password-manager-for-laravel
@DevTwitter | <Saleh Hashemi/>
https://laravel-news.com/one-time-password-manager-for-laravel
@DevTwitter | <Saleh Hashemi/>
👍20❤4🤣2
مفهوم Race Condition رو تا حالا شنیدی؟!
در واقع به درخواستهای همزمانی که روی یه اندپوینت مشخص یا یه داده خاص در سیستم ما اتفاق میفته، Race Condition میگن.
این اتفاق معمولاً زمانی رخ میده که چندین درخواست همزمان بخوان روی یک داده مشترک اثر بذارن یا تغییراتی ایجاد کنن، و اگه به درستی مدیریت نشه، میتونه منجر به باگهای جدی و رفتار غیرمنتظره در سیستم بشه.
چطور Race Condition رو مدیریت کنیم؟
برای رفع این مشکل، من درخواستهای همزمان رو به دو بخش کلی تقسیم کردم:
۱. همزمانی در لایه اپلیکیشن:
این نوع همزمانی زمانی رخ میده که چندین درخواست همزمان به یک منبع یا عملیات خاص در اپلیکیشن دسترسی پیدا کنن.
راهحل پیشنهادی:
از Cache::lock استفاده میکنیم. این روش برای ایجاد یک قفل موقت روی منابع مشترک کاربرد داره.
مثلاً با استفاده از Redis میتونیم مطمئن بشیم که فقط یک درخواست در یک زمان خاص اجازه دسترسی داره.
۲. همزمانی روی دیتابیس:
اینجا از قفلهای دیتابیس استفاده میکنیم تا درخواستهای همزمان رو کنترل کنیم:
FOR SHARE:
این نوع قفل وقتی استفاده میشه که فقط میخوایم داده رو بخونیم، ولی مطمئن بشیم کسی در همون لحظه نمیتونه اون رو تغییر بده.
این قفل اجازه میده درخواستهای دیگه فقط بخونن ولی هیچ عملیات نوشتن یا دستکاری نمیتونه انجام بشه.
FOR UPDATE:
این قفل وقتی استفاده میشه که میخوایم داده رو بخونیم و تغییر بدیم.
وقتی این قفل فعال بشه، هیچ درخواست دیگهای نمیتونه داده رو حتی بخونه یا تغییر بده تا وقتی که تراکنش فعلی کامل بشه.
با این روشهایی که گفتم، میتونیم از درخواستهای همزمان که باعث ایجاد باگ تو پروژمون میشن جلوگیری کنیم.
یادگیری این مفاهیم نهتنها توی پروژههای واقعی خیلی بهدرد میخوره، بلکه میتونه یه سؤال کلیدی توی مصاحبههای شغلی باشه!
@DevTwitter | <Saber Qadimi/>
در واقع به درخواستهای همزمانی که روی یه اندپوینت مشخص یا یه داده خاص در سیستم ما اتفاق میفته، Race Condition میگن.
این اتفاق معمولاً زمانی رخ میده که چندین درخواست همزمان بخوان روی یک داده مشترک اثر بذارن یا تغییراتی ایجاد کنن، و اگه به درستی مدیریت نشه، میتونه منجر به باگهای جدی و رفتار غیرمنتظره در سیستم بشه.
چطور Race Condition رو مدیریت کنیم؟
برای رفع این مشکل، من درخواستهای همزمان رو به دو بخش کلی تقسیم کردم:
۱. همزمانی در لایه اپلیکیشن:
این نوع همزمانی زمانی رخ میده که چندین درخواست همزمان به یک منبع یا عملیات خاص در اپلیکیشن دسترسی پیدا کنن.
راهحل پیشنهادی:
از Cache::lock استفاده میکنیم. این روش برای ایجاد یک قفل موقت روی منابع مشترک کاربرد داره.
مثلاً با استفاده از Redis میتونیم مطمئن بشیم که فقط یک درخواست در یک زمان خاص اجازه دسترسی داره.
۲. همزمانی روی دیتابیس:
اینجا از قفلهای دیتابیس استفاده میکنیم تا درخواستهای همزمان رو کنترل کنیم:
FOR SHARE:
این نوع قفل وقتی استفاده میشه که فقط میخوایم داده رو بخونیم، ولی مطمئن بشیم کسی در همون لحظه نمیتونه اون رو تغییر بده.
این قفل اجازه میده درخواستهای دیگه فقط بخونن ولی هیچ عملیات نوشتن یا دستکاری نمیتونه انجام بشه.
FOR UPDATE:
این قفل وقتی استفاده میشه که میخوایم داده رو بخونیم و تغییر بدیم.
وقتی این قفل فعال بشه، هیچ درخواست دیگهای نمیتونه داده رو حتی بخونه یا تغییر بده تا وقتی که تراکنش فعلی کامل بشه.
با این روشهایی که گفتم، میتونیم از درخواستهای همزمان که باعث ایجاد باگ تو پروژمون میشن جلوگیری کنیم.
یادگیری این مفاهیم نهتنها توی پروژههای واقعی خیلی بهدرد میخوره، بلکه میتونه یه سؤال کلیدی توی مصاحبههای شغلی باشه!
@DevTwitter | <Saber Qadimi/>
👍21🔥13❤1
کاربری به اسم frosty این سوالات رو تو Stack Overflow پرسیده و FBI هم از طریق این اسمش و کدهایی که تو سایتش استفاده کرده تونسته ردشو بزنه.
فریمورکی که هم که استفاده کرده CodeIgniter پیاچپی بوده. یه نفر بهش میگه که چتاشون لو رفته و باید سریع پاکش کنه که اومده سرچ کرده چطوری session رو تو CodeIgniter پاکش کنه.
پ.ن: این کاربر راس ویلیام اولبریکت، بنیانگذار سایت خرید و فروش مواد مخ.در در دارک وب به نام Silk Road بود که در اکتبر ۲۰۱۳ تحت عملیاتی مشترک از سوی افبیآی، اداره مبارزه با مواد مخدر، وزارت دادگستری و آژانس امنیت ملی دستگیر و به حبس ابد محکوم شد.
پ.ن۲: اگه خواستین جرمی مرتکب بشین، جوابای Stack Overflow رو مستقیم کپی نکنید، خودتون بنویسید
پادکست جذاب Silk Road از چنلبی رو حتما گوش کنید فوقالعاده هس.
@DevTwitter | <Reza Asgharzadeh />
فریمورکی که هم که استفاده کرده CodeIgniter پیاچپی بوده. یه نفر بهش میگه که چتاشون لو رفته و باید سریع پاکش کنه که اومده سرچ کرده چطوری session رو تو CodeIgniter پاکش کنه.
پ.ن: این کاربر راس ویلیام اولبریکت، بنیانگذار سایت خرید و فروش مواد مخ.در در دارک وب به نام Silk Road بود که در اکتبر ۲۰۱۳ تحت عملیاتی مشترک از سوی افبیآی، اداره مبارزه با مواد مخدر، وزارت دادگستری و آژانس امنیت ملی دستگیر و به حبس ابد محکوم شد.
پ.ن۲: اگه خواستین جرمی مرتکب بشین، جوابای Stack Overflow رو مستقیم کپی نکنید، خودتون بنویسید
پادکست جذاب Silk Road از چنلبی رو حتما گوش کنید فوقالعاده هس.
@DevTwitter | <Reza Asgharzadeh />
🤣85👍31🔥8❤1
بفرمایید Harper
هارپر یک ابزار بررسی گرامر انگلیسی هست که طبق ادعادی نویسندهش از نظر سرعت و دقت، توان رقابت با Grammarly رو داره!
حریم خصوصی رو رعایت میکنه و البته رایگان و کدباز هست.
گیتهاب:
https://github.com/automattic/harper
سایت اصلی:
https://writewithharper.com
@DevTwitter | <Morteza Geransayeh/>
هارپر یک ابزار بررسی گرامر انگلیسی هست که طبق ادعادی نویسندهش از نظر سرعت و دقت، توان رقابت با Grammarly رو داره!
حریم خصوصی رو رعایت میکنه و البته رایگان و کدباز هست.
گیتهاب:
https://github.com/automattic/harper
سایت اصلی:
https://writewithharper.com
@DevTwitter | <Morteza Geransayeh/>
❤37👍11🔥2🤣2👎1
وقتی ویندوز 98 میزبان هوش مصنوعی میشود؛ سفر به گذشته برای آینده!
تصور کنید یک کامپیوتر با Pentium II و فقط 128 مگابایت رم، در حال اجرای یک مدل زبانی مثل Llama 2! تیم EXO Labs این ایده جذاب رو عملی کرده و نتیجهاش یه ترکیب شگفتانگیز از نوستالژی و تکنولوژیه.
با کمک کد سادهای از آندری کارپاتی، این سیستم میتونه با سرعت 35.9 توکن بر ثانیه متن تولید کنه.
فایلها با FTP منتقل میشن و کامپایل کدها با ابزارهایی مثل Borland C++ 5.02 انجام شده.
در واقع هوش مصنوعی رو روی کانفیگی بالا آورده که حتی انتقال فایل بهش از طریق USB ممکن نیست
البته کار این تیم جدای از جنبه فانش ، میخواد نشون بده هوش مصنوعی نباید فقط در انحصار شرکتهای بزرگ باشه. این پروژه، قدمیه برای دسترسپذیر کردن هوش مصنوعی برای همه!
@DevTwitter | <breaking news/>
تصور کنید یک کامپیوتر با Pentium II و فقط 128 مگابایت رم، در حال اجرای یک مدل زبانی مثل Llama 2! تیم EXO Labs این ایده جذاب رو عملی کرده و نتیجهاش یه ترکیب شگفتانگیز از نوستالژی و تکنولوژیه.
با کمک کد سادهای از آندری کارپاتی، این سیستم میتونه با سرعت 35.9 توکن بر ثانیه متن تولید کنه.
فایلها با FTP منتقل میشن و کامپایل کدها با ابزارهایی مثل Borland C++ 5.02 انجام شده.
در واقع هوش مصنوعی رو روی کانفیگی بالا آورده که حتی انتقال فایل بهش از طریق USB ممکن نیست
البته کار این تیم جدای از جنبه فانش ، میخواد نشون بده هوش مصنوعی نباید فقط در انحصار شرکتهای بزرگ باشه. این پروژه، قدمیه برای دسترسپذیر کردن هوش مصنوعی برای همه!
@DevTwitter | <breaking news/>
👍53🤣12❤4🔥1
در برنامهنویسی شیءگرا، انکپسولاسیون یعنی اطلاعات داخل یک شیء مخفی میمونه و فقط از طریق متدهای خاصی قابل دسترسی هست این باعث میشه که دادهها امنیت داشته باشن و دستکاری نشن. در نتیجه، برنامه سادهتر و قابل کنترلتر میشه چون هر چیزی در شیء خودش نگهداری میشه.
توی 4 زبان مثال زدم ؛
@DevTwitter | <Misagh Momeni Bashusqeh/>
توی 4 زبان مثال زدم ؛
@DevTwitter | <Misagh Momeni Bashusqeh/>
🔥40👍19🤣9👎4❤3
اگه یه میلیون کار داشته باشی و بخوای همزمان اجراشون کنی، ولی فقط 8 تا CPU داری، چهجوری بهینهترین حالت رو پیدا میکنی؟
تو گولنگ، گوروتینها خیلی سبک هستن. میتونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمیصرفه حافظه رو با صدها هزار گوروتین که همزمان نمیتونن اجرا بشن، هدر بدی.
یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که میتونی تعداد گوروتینهای در حال اجرا رو محدود کنی.
حالا چطور کار میکنه؟
1. یه کانال با ظرفیت مشخص (N) درست میکنی که این ظرفیت میشه تعداد گوروتینهای همزمانی که میخوای اجرا بشه.
2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر میکنی.
3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمیگردونه.
4. اگه توکن نباشه گوروتین منتظر میمونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.
با این روش دیگه سیستم توی کارهای بیخودی قفل نمیشه و فقط به تعداد موردنیاز از منابع استفاده میکنی.
@DevTwitter | <Mohammad Abdorrahmani/>
تو گولنگ، گوروتینها خیلی سبک هستن. میتونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمیصرفه حافظه رو با صدها هزار گوروتین که همزمان نمیتونن اجرا بشن، هدر بدی.
یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که میتونی تعداد گوروتینهای در حال اجرا رو محدود کنی.
حالا چطور کار میکنه؟
1. یه کانال با ظرفیت مشخص (N) درست میکنی که این ظرفیت میشه تعداد گوروتینهای همزمانی که میخوای اجرا بشه.
2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر میکنی.
3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمیگردونه.
4. اگه توکن نباشه گوروتین منتظر میمونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.
با این روش دیگه سیستم توی کارهای بیخودی قفل نمیشه و فقط به تعداد موردنیاز از منابع استفاده میکنی.
@DevTwitter | <Mohammad Abdorrahmani/>
👍50❤9🤣3👎1