Forwarded from Laravel News
The Inertia 2.0 Beta is Coming Soon https://laravel-news.com/inertia-2-beta-coming-soon
Laravel News
The Inertia 2.0 Beta is Coming Soon - Laravel News
The Inertia v2.0 beta is likely to be released sometime next week. Get all the latest info on what new features are coming to the next major release of Inertia!
Forwarded from Ninja Learn | نینجا لرن
💎 اصول Normalization در طراحی دیتابیس 💎
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
#sql #database #db #nf
Forwarded from Code Module | کد ماژول (𔓙)
با PWA Builder بیشتر آشنا بشید ☠
PWA Builder یک ابزار آنلاینه که به دولوپرا کمک میکنه تا برنامههای PWA رو به آسونی و به سرعت بسازن. این ابزار، بهویژه برای افرادی که به تازگی با توسعه PWA آشنا شدن، بسیار مفید هست.
ویژگی های کاربردی این ابزار 🕷
تولید manifest.json: PWA Builder به شما این امکان رو میده که فایل manifest.json رو به راحتی تولید کنید. این فایل اطلاعاتی درباره نام، آیکونها، رنگها و سایر جزئیات اپلیکیشن شما رو در بر میگیره.
ایجاد Service Worker: این ابزار به شما کمک میکنه تا یک Service Worker سفارشی بسازید. از این فایل برای مدیریت کش، بهینهسازی بارگذاری و قابلیت آفلاین بودن PWA استفاده میشه.
تجزیه و تحلیل وبسایت: PWA Builder وبسایت شما رو تجزیه و تحلیل میکنه و به شما نشون میده، که آیا قابلیتهای PWA رو داره یا نه. همچنین میتونه نکاتی جهت بهبود اپلیکیشن ارائه بده.
تنظیمات سفارشی: دولوپرا میتونن تنظیمات مختلفی رو برای سفارشیسازی PWA پروژشون انجام بدن، مثل تعیین استراتژیهای کش و زمان انقضا.
تست و دپلوی: PWA Builder به شما این امکان رو میده که پس از ایجاد PWA، اون رو تست کنید و حتی به راحتی در پلتفرمهای مختلف دپلوی کنید.
تولید آیکونهای مورد نیاز: PWA Builder میتونه آیکون با اندازههای مختلف که برای استفاده در manifest نیاز دارید، تولید کنه.
به طور کلی PWA Builder به عنوان یک ابزار ساده و مفید برای شروع توسعه PWA، به شما کمک میکنه تا به راحتی به ویژگیهای مختلف این نوع برنامههای وب دسترسی پیدا کنید و اون هارو بهینهسازی کنید.
🔗 Website
#pwa
@CodeModule
PWA Builder یک ابزار آنلاینه که به دولوپرا کمک میکنه تا برنامههای PWA رو به آسونی و به سرعت بسازن. این ابزار، بهویژه برای افرادی که به تازگی با توسعه PWA آشنا شدن، بسیار مفید هست.
ویژگی های کاربردی این ابزار 🕷
تولید manifest.json: PWA Builder به شما این امکان رو میده که فایل manifest.json رو به راحتی تولید کنید. این فایل اطلاعاتی درباره نام، آیکونها، رنگها و سایر جزئیات اپلیکیشن شما رو در بر میگیره.
ایجاد Service Worker: این ابزار به شما کمک میکنه تا یک Service Worker سفارشی بسازید. از این فایل برای مدیریت کش، بهینهسازی بارگذاری و قابلیت آفلاین بودن PWA استفاده میشه.
تجزیه و تحلیل وبسایت: PWA Builder وبسایت شما رو تجزیه و تحلیل میکنه و به شما نشون میده، که آیا قابلیتهای PWA رو داره یا نه. همچنین میتونه نکاتی جهت بهبود اپلیکیشن ارائه بده.
تنظیمات سفارشی: دولوپرا میتونن تنظیمات مختلفی رو برای سفارشیسازی PWA پروژشون انجام بدن، مثل تعیین استراتژیهای کش و زمان انقضا.
تست و دپلوی: PWA Builder به شما این امکان رو میده که پس از ایجاد PWA، اون رو تست کنید و حتی به راحتی در پلتفرمهای مختلف دپلوی کنید.
تولید آیکونهای مورد نیاز: PWA Builder میتونه آیکون با اندازههای مختلف که برای استفاده در manifest نیاز دارید، تولید کنه.
به طور کلی PWA Builder به عنوان یک ابزار ساده و مفید برای شروع توسعه PWA، به شما کمک میکنه تا به راحتی به ویژگیهای مختلف این نوع برنامههای وب دسترسی پیدا کنید و اون هارو بهینهسازی کنید.
🔗 Website
#pwa
@CodeModule
Forwarded from Agora (Alireza Azadi)
امروز که داشتم فید هکر نیوز رو چک میکردم چشمم خورد به این مطلب:
Experimental web browser optimized for rabbit-holing
گویا به این روش خوندن مطالب (که ظاهرا خیلی هم فراگیره) میگن rabbit-holing* و واسم جالب بود :)
کاری که این مرورگر میکنه اینه که به جای این که مطالب رو برای شما توی یک تب دیگه باز کنه، این ها رو به شکل یک زنجیر ردیف میکنه و شما میتونید به صورت افقی بین این صفحهها اسکرول کنید. اینجا میتونید بیشتر راجعبهش بخونید و اگر خواستید نصبش هم بکنید.
*اینجا که گفته rabbit-holing یاد قسمت اول متهم گریخت افتادم که هاشم از معلم زبان بچهش میپرسه اگزوز به انگلیسی چی میشه، بعد معلم زبانه میگه اصلا فارسی نیست. بعد میپرسه خب معنیش به انگلیسی چی میشه؟ یارو یه چرتی از خودش در میاره میگه: یعنییی جایی که دود ازِش میزنه بیرون :)))) بعد هاشم هم میگه: این انگلیسیا واقعا چه مخی دارن. به جای این که بگن یه جایی که ازش دود میزنه بیرون، یه کلمه میگن اگزوز خیالشونو راحت میکنن.
اینم شده حکایت این کلمهی rabbit-holing. یه جای این که این همه کارکتر حروم کنه مثل من و توضیح بده این مرورگر واسه چیه، یه کلمه گفته rabbit-holing خیالشو راحت کرده.
Experimental web browser optimized for rabbit-holing
گویا به این روش خوندن مطالب (که ظاهرا خیلی هم فراگیره) میگن rabbit-holing* و واسم جالب بود :)
کاری که این مرورگر میکنه اینه که به جای این که مطالب رو برای شما توی یک تب دیگه باز کنه، این ها رو به شکل یک زنجیر ردیف میکنه و شما میتونید به صورت افقی بین این صفحهها اسکرول کنید. اینجا میتونید بیشتر راجعبهش بخونید و اگر خواستید نصبش هم بکنید.
*اینجا که گفته rabbit-holing یاد قسمت اول متهم گریخت افتادم که هاشم از معلم زبان بچهش میپرسه اگزوز به انگلیسی چی میشه، بعد معلم زبانه میگه اصلا فارسی نیست. بعد میپرسه خب معنیش به انگلیسی چی میشه؟ یارو یه چرتی از خودش در میاره میگه: یعنییی جایی که دود ازِش میزنه بیرون :)))) بعد هاشم هم میگه: این انگلیسیا واقعا چه مخی دارن. به جای این که بگن یه جایی که ازش دود میزنه بیرون، یه کلمه میگن اگزوز خیالشونو راحت میکنن.
اینم شده حکایت این کلمهی rabbit-holing. یه جای این که این همه کارکتر حروم کنه مثل من و توضیح بده این مرورگر واسه چیه، یه کلمه گفته rabbit-holing خیالشو راحت کرده.
Szymonkaliski
Cartographist
Web Browser Optimized for Rabbit-Holing
Forwarded from Linuxor ?
اگه روی لینوکس و مک nekoray دارین و کار نمیکنه از کلاینت hiddify استفاده کنید
چند وقتیه nekoray آپدیت نداده و یه سری مشکلات روی لینوکس و مک توی تونل کردن کل سیستم به وجود اومده که توی hiddify درستش کردن
https://github.com/hiddify/hiddify-next
پ.ن : این دو برنامه کلاینت v2ray هستن.
🐧 @Linuxor
چند وقتیه nekoray آپدیت نداده و یه سری مشکلات روی لینوکس و مک توی تونل کردن کل سیستم به وجود اومده که توی hiddify درستش کردن
https://github.com/hiddify/hiddify-next
پ.ن : این دو برنامه کلاینت v2ray هستن.
🐧 @Linuxor
Forwarded from محتوای آزاد سهراب
قانون اول استفاده از توزیعهای رولینگ رلیز.
ایزویی که قدمتش از ۳ ماه بیشتر باشه دیگه بدرد نصب کردن توزیع نمیخوره پس خودتون و نگهدارندههای اون توزیع رو خسته نکنید!
#نکتک
@SohrabContents
ایزویی که قدمتش از ۳ ماه بیشتر باشه دیگه بدرد نصب کردن توزیع نمیخوره پس خودتون و نگهدارندههای اون توزیع رو خسته نکنید!
#نکتک
@SohrabContents
Forwarded from Armon technical logs (armon Taheri)
تایتلش زرده ولی محتواش واقعا ارزندس
https://youtu.be/FylHa4_neOA?si=9KVr-d43AXQqI_3O
https://youtu.be/FylHa4_neOA?si=9KVr-d43AXQqI_3O
YouTube
I'm 57. If you're in your 20's please watch this.
Get a FREE AI-built Shopify store in less than 2 minutes:
https://www.buildyourstore.ai/005c
Try AutoDS here for just $1:
https://www.autods.com/004e
To get free fractional shares worth up to £100, use the promo code TILBURY or visit https://www.tradin…
https://www.buildyourstore.ai/005c
Try AutoDS here for just $1:
https://www.autods.com/004e
To get free fractional shares worth up to £100, use the promo code TILBURY or visit https://www.tradin…
Forwarded from ᳆
witchat.github.io
Women In Technology Chat Group
Women In Technology chat group. Read code of conduct, request invite here.
kolektiva.social/@aredridel/112298450037973790
witchat.github.io
اگه مؤنّث هستید (نانباینریها هم شامل میشن) و با فنّآوری در ارتباطید، میتونید در این جامعه حضور داشته باشید و به گفتگو بپردازید.
#معرفی
@amiria703_channel
witchat.github.io
اگه مؤنّث هستید (نانباینریها هم شامل میشن) و با فنّآوری در ارتباطید، میتونید در این جامعه حضور داشته باشید و به گفتگو بپردازید.
#معرفی
@amiria703_channel
Forwarded from DevTwitter | توییت برنامه نویسی
اگر میخواید پروسه ساخت یک چت بات با RAG رو فقط تبدیل به چند تا API CALL کنید میتونید از API اوپن سورسی که نوشتم استفاده کنید. همه چی از embeding تا ساخت Chat completions اتوماتیک انجام میشه
https://github.com/xmannii/Maux-RAG-API
@DevTwitter | <Mani/>
https://github.com/xmannii/Maux-RAG-API
@DevTwitter | <Mani/>
Forwarded from Linuxor ?
چطوری میشه توی لینوکس به صورت زنده روی وب کم افکت گذاشت ؟
توی لینوکس وقتی وب کم رو روشن میکنید در واقع دارین از dev/videoX/ استفاده میکنید، برای اینکه یه افکت بزارین باید یه Virtual webcam درست کنید که یه لایه واسط بین شما و وب کمتون میشه، بعد ساخت Virtual webcam یه آدرس جدید بهتون میده به اسم dev/videoY/ که میتونید توی برنامه هاتون از وب کم مجازی دارای افکت استفاده کنید.
یوتیوبر ها و استریمر ها خیلی از این روش استفاده میکنن برای این کار کافیه برنامه زیر رو نصب کنید
sudo apt install webcamoid
بعد از نصب از قسمت Video توی منوی بالا سمت چپ برید و یه Output اضافه کنید و از قسمت Effect هر افکتی بزارید روی خروجی گذاشته میشه و میتونید توی برنامه های دیگه که از وب کم استفاده میکنن مثل کنفرانس ها و میتینگ ها ازش استفاده کنید.
🐧 @Linuxor
توی لینوکس وقتی وب کم رو روشن میکنید در واقع دارین از dev/videoX/ استفاده میکنید، برای اینکه یه افکت بزارین باید یه Virtual webcam درست کنید که یه لایه واسط بین شما و وب کمتون میشه، بعد ساخت Virtual webcam یه آدرس جدید بهتون میده به اسم dev/videoY/ که میتونید توی برنامه هاتون از وب کم مجازی دارای افکت استفاده کنید.
یوتیوبر ها و استریمر ها خیلی از این روش استفاده میکنن برای این کار کافیه برنامه زیر رو نصب کنید
sudo apt install webcamoid
بعد از نصب از قسمت Video توی منوی بالا سمت چپ برید و یه Output اضافه کنید و از قسمت Effect هر افکتی بزارید روی خروجی گذاشته میشه و میتونید توی برنامه های دیگه که از وب کم استفاده میکنن مثل کنفرانس ها و میتینگ ها ازش استفاده کنید.
🐧 @Linuxor
Forwarded from Linuxor ?
یه منبع جامع و خوب برای پرامپت های آماده و Prompt Engineering
جدیدا مهندسی پرامپت ترند شده و خیلی کاربردی، مهندسی پرامپت با یه سری تکنیک ها بهتون یاد میده چطوری یه Prompt بنویسید که بهینه کار کنه
این ریپو کلی پرامپت آماده براتون جمع کرده یه جا :
https://github.com/dair-ai/Prompt-Engineering-Guide
🐧 @Linuxor
جدیدا مهندسی پرامپت ترند شده و خیلی کاربردی، مهندسی پرامپت با یه سری تکنیک ها بهتون یاد میده چطوری یه Prompt بنویسید که بهینه کار کنه
این ریپو کلی پرامپت آماده براتون جمع کرده یه جا :
https://github.com/dair-ai/Prompt-Engineering-Guide
🐧 @Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
کمپانی Meta ی مجموعه مدل به اسم MovieGen که ساخت ویدیو را متحول کرده. Movie Gen چهار قابلیت ارائه میدهد: تولید ویدیو، ویدیوهای شخصیسازی شده، ویرایش دقیق ویدیو و تولید صدا. کیفیت ویدیوها واقعا بالاست بخصوص درآوردن نور و فیزیک توی ویدیو واقعا سخته.
https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
@DevTwitter | <Mehdi Allahyari/>
https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
@DevTwitter | <Mehdi Allahyari/>
Forwarded from Future Pulse Persian
🔵اثر دانینگ کروگر (Dunning-Kruger Effect) چیست؟
🟢 «افرادی که دانش کمتر از میانگین دارند، با دو مشکل بهصورت همزمان مواجه هستند: نه تنها نتیجهگیریهای اشتباهی دارند و بر اساس همان نتیجهگیریها خطاهای مکرری را مرتکب میشوند، بلکه به دلیل همین مشکل، عدم توانایی خود را نیز درک نمیکنند و متوجه این عدم توانایی نخواهند شد.»
🔴 https://karboom.io/mag/articles/%D8%A7%D8%AB%D8%B1-%D8%AF%D8%A7%D9%86%DB%8C%D9%86%DA%AF-%DA%A9%D8%B1%D9%88%DA%AF%D8%B1
➖➖➖➖➖➖➖➖
🕸 @labdon_academy
🟢 «افرادی که دانش کمتر از میانگین دارند، با دو مشکل بهصورت همزمان مواجه هستند: نه تنها نتیجهگیریهای اشتباهی دارند و بر اساس همان نتیجهگیریها خطاهای مکرری را مرتکب میشوند، بلکه به دلیل همین مشکل، عدم توانایی خود را نیز درک نمیکنند و متوجه این عدم توانایی نخواهند شد.»
🔴 https://karboom.io/mag/articles/%D8%A7%D8%AB%D8%B1-%D8%AF%D8%A7%D9%86%DB%8C%D9%86%DA%AF-%DA%A9%D8%B1%D9%88%DA%AF%D8%B1
➖➖➖➖➖➖➖➖
🕸 @labdon_academy
Forwarded from Armon technical logs (armon Taheri)
ارایه های ایرناگ فنی ترین و یونیک ترین مطالب مربوط به شبکه در ایران هست که تا به حال دنبال کردم
https://news.1rj.ru/str/irnog
https://news.1rj.ru/str/irnog
Telegram
IRNOG Channel
IRNOG (Iranian Internet Network Operators Group)
گروه گردانندگان شبکه اینترنت ایران - ایرناگ
https://irnog.net
گروه گردانندگان شبکه اینترنت ایران - ایرناگ
https://irnog.net
Forwarded from ᳆
Forwarded from DevTwitter | توییت برنامه نویسی
سوال مصاحبه: چطور میشه بررسی کرد که نام کاربری بین یک میلیارد کاربر تکراری نباشه؟
این روزها با رشد سریع کسبوکارها، ثبتنام کاربرهای جدید هم به یه چالش تبدیل شده. یکی از مهمترین بخشها اینه که مطمئن بشیم هر کاربر یه نام کاربری منحصربهفرد داره. اخیراً در مورد این موضوع یه تحقیقی کردم و دو راهحل خوب پیدا کردم: استفاده از حافظه Redis و فیلتر Bloom. هر دو کمک میکنن سریع و بدون فشار زیاد به سیستم، نام کاربری جدید رو بررسی کنیم.
مشکل کجاست؟
اگه بخوایم از روشهای سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبهرو میشیم:
- کندی در درخواستها
- فشار زیاد به دیتابیس، که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاسپذیری، یعنی وقتی تعداد درخواستها زیاد بشه، سرور نمیتونه همه رو مدیریت کنه.
استفاده از Redis: سریع ولی پرمصرف
ردیس Redis کمک میکنه که بررسی نام کاربری خیلی سریع بشه، چون دادهها رو توی حافظه ذخیره میکنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف میکنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! که تو سیستمهای بزرگ، خیلی پرهزینه و غیرعملی میشه.
فیلتر Bloom: ساده، بهینه و کممصرف
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینهتره که فضای حافظه خیلی کمتری استفاده میکنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره!
اما فیلتر Bloom چیه؟ بذار یه مثال ساده بزنم:
فرض کن یه کیف داری که یه سری جیب کوچیک داره. هر بار که میخوای یه نام کاربری جدید رو ذخیره کنی، یه سری کلید (یعنی همون الگوریتمهای هش) بهت میگه تو کدوم جیبهای کیف بذاری. بعد اگه بخوای ببینی اون نام کاربری قبلاً ذخیره شده یا نه، فقط کافیه جیبهای مشخص شده رو چک کنی. اگه تو هر جیب چیزی باشه، یعنی احتمالاً اون نام کاربری قبلاً استفاده شده. ولی اگه یکی از جیبها خالی باشه، مطمئنی که اون نام کاربری وجود نداره.
با این روش:
- حافظه کمی استفاده میشه
- سرعت بررسی خیلی بالاست
البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشمپوشیه.
نتیجهگیری
اگه با سیستمهایی کار میکنید که میلیونها یا حتی میلیاردها کاربر دارن، فیلتر Bloom یه راهحل خیلی بهینه و هوشمند برای بررسی یونیک بودن نام کاربریه. هم توی حافظه صرفهجویی میکنه، هم سرعت بررسی رو بالا نگه میداره.
@DevTwitter | <Massimo Dev/>
این روزها با رشد سریع کسبوکارها، ثبتنام کاربرهای جدید هم به یه چالش تبدیل شده. یکی از مهمترین بخشها اینه که مطمئن بشیم هر کاربر یه نام کاربری منحصربهفرد داره. اخیراً در مورد این موضوع یه تحقیقی کردم و دو راهحل خوب پیدا کردم: استفاده از حافظه Redis و فیلتر Bloom. هر دو کمک میکنن سریع و بدون فشار زیاد به سیستم، نام کاربری جدید رو بررسی کنیم.
مشکل کجاست؟
اگه بخوایم از روشهای سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبهرو میشیم:
- کندی در درخواستها
- فشار زیاد به دیتابیس، که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاسپذیری، یعنی وقتی تعداد درخواستها زیاد بشه، سرور نمیتونه همه رو مدیریت کنه.
استفاده از Redis: سریع ولی پرمصرف
ردیس Redis کمک میکنه که بررسی نام کاربری خیلی سریع بشه، چون دادهها رو توی حافظه ذخیره میکنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف میکنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! که تو سیستمهای بزرگ، خیلی پرهزینه و غیرعملی میشه.
فیلتر Bloom: ساده، بهینه و کممصرف
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینهتره که فضای حافظه خیلی کمتری استفاده میکنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره!
اما فیلتر Bloom چیه؟ بذار یه مثال ساده بزنم:
فرض کن یه کیف داری که یه سری جیب کوچیک داره. هر بار که میخوای یه نام کاربری جدید رو ذخیره کنی، یه سری کلید (یعنی همون الگوریتمهای هش) بهت میگه تو کدوم جیبهای کیف بذاری. بعد اگه بخوای ببینی اون نام کاربری قبلاً ذخیره شده یا نه، فقط کافیه جیبهای مشخص شده رو چک کنی. اگه تو هر جیب چیزی باشه، یعنی احتمالاً اون نام کاربری قبلاً استفاده شده. ولی اگه یکی از جیبها خالی باشه، مطمئنی که اون نام کاربری وجود نداره.
با این روش:
- حافظه کمی استفاده میشه
- سرعت بررسی خیلی بالاست
البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشمپوشیه.
نتیجهگیری
اگه با سیستمهایی کار میکنید که میلیونها یا حتی میلیاردها کاربر دارن، فیلتر Bloom یه راهحل خیلی بهینه و هوشمند برای بررسی یونیک بودن نام کاربریه. هم توی حافظه صرفهجویی میکنه، هم سرعت بررسی رو بالا نگه میداره.
@DevTwitter | <Massimo Dev/>
Forwarded from دستاوردهای یادگیری عمیق(InTec)
Forwarded from CleverDevs (Arian)
💢 خرید نیروگاه هسته ای توسط مایکروسافت!
@CleverDevs - @CleverDevsGp
مایکروسافت برای تأمین انرژی توسعه و نگهداری هوش مصنوعی خود، توافقی ۲۰ ساله با نیروگاه هستهای Three Mile Island کرد که در سال 1979 میلادی بنا به دلایلی به مشکل برخورده و بصورت قسمی ذوب شده و پس از نشتی انرژی هسته ای تعطیل شده بود.
زینپس با رفع این مشکل تمامی انرژی تولید شده توسط این نیروگاه به سرور های هوش مصنوعی مایکروسافت اختصاص داده میشود.
مورد قابل توجه دیگر این است که، با این مقدار انرژی هستهای میتوان انرژی لازم هشتصد هزار خانه در آمریکا و حدود سه میلیون خانه در ایران را تامین کرد!#Microsoft | #AI
@CleverDevs - @CleverDevsGp
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
🗓 ابزار mitmproxy یک HTTPS proxy تعاملی برای debugging, testing و ... به کار میره
پلاگین Kubernetes داره و اگر بخواهید یک REST APIs را به صورت خودکار reverse-engineer کنید روی OpenAPI 3.0 به راحتی با پلاگین امکن پذیره
✅ رهگیری، بازرسی، اصلاح و ارسال مجدد ترافیک روی HTTP/2/1, WebSockets یا هر نوع SSL/TLS-protected
🔥 در نسخه ۱۱ پشتیبانی کامل HTTP/3 را اضافه کرده
💠 امکانات مهم :
✳️ رابط Command Line
انواع پیامها از HTML تا Protobuf را به سادگی رمزگشایی، پیامهای خاصی را در لحظه رهگیری، قبل از رسیدن به مقصد آنها را اصلاح و بعداً آنها را برای یک کلاینت یا سرور دوباره ارسال کنید.
✳️ رابط Web Interface
با رابط وب با mitmweb شبیه به DevTools برای هر برنامه یا دستگاه دیگری به همراه ویژگی های اضافی مانند رهگیری درخواست و ارسال مجدد استفاده کنید
✳️ رابط Python API
با mitmdump افزونه های قدرتمند و اسکریپت mitmproxy میتوانید بنویسد. API اسکریپت کنترل کاملی را بر mitmproxy ادارد و امکان تغییر خودکار پیامها، تغییر مسیر ترافیک، مشاهده پیامها یا امکان اجرای دستورات میدهد
گیت هاب
#امنیت #پایتون #python
پلاگین Kubernetes داره و اگر بخواهید یک REST APIs را به صورت خودکار reverse-engineer کنید روی OpenAPI 3.0 به راحتی با پلاگین امکن پذیره
✅ رهگیری، بازرسی، اصلاح و ارسال مجدد ترافیک روی HTTP/2/1, WebSockets یا هر نوع SSL/TLS-protected
🔥 در نسخه ۱۱ پشتیبانی کامل HTTP/3 را اضافه کرده
💠 امکانات مهم :
✳️ رابط Command Line
انواع پیامها از HTML تا Protobuf را به سادگی رمزگشایی، پیامهای خاصی را در لحظه رهگیری، قبل از رسیدن به مقصد آنها را اصلاح و بعداً آنها را برای یک کلاینت یا سرور دوباره ارسال کنید.
✳️ رابط Web Interface
با رابط وب با mitmweb شبیه به DevTools برای هر برنامه یا دستگاه دیگری به همراه ویژگی های اضافی مانند رهگیری درخواست و ارسال مجدد استفاده کنید
✳️ رابط Python API
با mitmdump افزونه های قدرتمند و اسکریپت mitmproxy میتوانید بنویسد. API اسکریپت کنترل کاملی را بر mitmproxy ادارد و امکان تغییر خودکار پیامها، تغییر مسیر ترافیک، مشاهده پیامها یا امکان اجرای دستورات میدهد
گیت هاب
#امنیت #پایتون #python