Forwarded from ᳆ (ZiZiGuLu)
سلام. سلام بهتون. 🌸
من زینبم .
میخوام براتون کلی مطالب جدید از شبکه ، لینوکس و دنیاهای دیگه بنویسم
قراره اینجا مثل امیریا یه سری مطالب قرار بدم(یه نمونش اینه که به firewall بگم دیواره ی اتشین😬) .
اگه پیشنهادی دارید در رابطه با مطالب یا میخواهید به طور خاصی ارائه شن حتما مطرح کنید.
من زینبم .
میخوام براتون کلی مطالب جدید از شبکه ، لینوکس و دنیاهای دیگه بنویسم
قراره اینجا مثل امیریا یه سری مطالب قرار بدم(یه نمونش اینه که به firewall بگم دیواره ی اتشین😬) .
اگه پیشنهادی دارید در رابطه با مطالب یا میخواهید به طور خاصی ارائه شن حتما مطرح کنید.
Forwarded from Yasha
توی این ویدیو باهمدیگه یاد میگیریم ک هویت کسانی که توی رباتهای ناشناس به ما پیام میدن رو پیدا کنیم. جوری توضیح دادم که کسی که دانش برنامه نویسی نداره هم بتونه انجامش بده. لطفا Share کنید تا بقیه هم حواسشون باشه تا یوقت اتفاق بدی برای کسی خداینکرده رخ نده.
🔗 youtube.com/watch?v=At6hER0616g
@Yasha
🔗 youtube.com/watch?v=At6hER0616g
@Yasha
YouTube
یافتن هویت دیگران در ربات ناشناس تلگرام - باگ جدید
یه آسیبپذیری جالبی اخیرا توی رباتهای ناشناس تلگرام کشف شده که این امکان رو میده هویت شخص ارسالکننده پیام رو پیدا کنیم. با این باگ ناشناسی رباتها کاملا زیر سوال میره و متوجه میشیم که این رباتها به هیچ وجه امن نیستن.
من اولین بار از کانال دوستم نیک متوجه…
من اولین بار از کانال دوستم نیک متوجه…
Forwarded from محتوای آزاد سهراب
آراسته یکی از ابزار های باحال هستش که توسط عرفان خیرالهی عزیز نوشته شده، کارکردش هم خیلی سادست مثل figlet بهش متن میدید و داخل ترمینال براتون به صورت اسکی آرت چاپ میکنه.
داخل aur هستش اگه بخواید نصب کنید:
روی توزیعهای دیگه هم اگه خواستید نصبش کنید از روش داخل مخزن گیتش برید:
🔗 https://github.com/ekm507/araste/
@SohrabContents
داخل aur هستش اگه بخواید نصب کنید:
paru -S araste-git
روی توزیعهای دیگه هم اگه خواستید نصبش کنید از روش داخل مخزن گیتش برید:
@SohrabContents
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Yasha
بچهها لطفا لایک کنید به بقیه هم یوتیوب ساجستش کنه🥲 تقریبا هر سری ویدیو گذاشتم حمایت کردید واقعا دمتونگرم، احتمالا ویدیو گذاشتن توی یوتیوب رو دیگه بیخیال نشم.
Forwarded from یک برنامه نویس تنبل (The Lazy Raymond)
🔶 به گزارش scmp هواوی بالاخره آماده است تا HarmonyOS NEXT را معرفی کند و آن را به گوشیهای موجود در بازار بیاورد. این اقدام بهعنوان تلاشی برای کنار گذاشتن کامل اندروید صورت میگیرد. سیستمعامل جدید از اپلیکیشنهای اندروید پشتیبانی نخواهد کرد، بههمیندلیل تلاشهای شرکت برای توسعهی اپلیکیشنهای مبتنیبر این سیستمعامل ادامه دارد.
هواوی چند روز دیگر بهطور رسمی سیستمعامل اختصاصی خود را در مقابل اندروید و iOS رونمایی میکند.
#خبر
@TheRaymondDev
هواوی چند روز دیگر بهطور رسمی سیستمعامل اختصاصی خود را در مقابل اندروید و iOS رونمایی میکند.
#خبر
@TheRaymondDev
South China Morning Post
Huawei to roll out home-grown mobile operating system on Tuesday
HarmonyOS Next, which Huawei touts as being entirely independently developed, no longer supports Android-based applications.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔸خبر خوب لینوکسی:
🔸انتشار نسخه جدید اوبونتو 24.10.1
🔸این نسخه از امروز قابل دسترسی و دانلود است.
جزئیات کامل تغییرات در نسخه جدید به علت زیاد بودن تغییرات و توضیحات، در پست بعدی در قالب فایل pdf ارسال خواهم کرد.
🔸انتشار نسخه جدید اوبونتو 24.10.1
🔸این نسخه از امروز قابل دسترسی و دانلود است.
جزئیات کامل تغییرات در نسخه جدید به علت زیاد بودن تغییرات و توضیحات، در پست بعدی در قالب فایل pdf ارسال خواهم کرد.
https://releases.ubuntu.com/oracular/
Forwarded from IRCF | اینترنت آزاد برای همه
Media is too big
VIEW IN TELEGRAM
Forwarded from IRCF | اینترنت آزاد برای همه
Media is too big
VIEW IN TELEGRAM
نیبرلینک سیستمی هست که اجازه میده تا افرادی که در شعاع دسترسی یک دستگاه #استارلینک و Extender های اون قرار دارن، حتی در شرایطی که اینترنت داخلی و بینالمللی کشور بهطور کامل شاتداون شده، به اینترنت امن و پرسرعت دسترسی داشته باشن.
اینسیستم یک OpenWRT OS شخصیسازی شدهس که به ادمین امکان میده تا اینترنت استارلینک رو با کاربران دیگه (مثلا همسایهها) به اشتراک بذاره. #نیبرلینک درحال حاضر امکان مدیریت کاربران، تفکیک مسیر (split tunneling) و ماسککردن آیپی با استفاده از ویپیان رو فراهم میکنه، اما در آینده کاربردهای دیگه از جمله whitelisting, blacklisting و مدیریت ترافیک به اون افزوده میشه ...
💡 github.com/nasnet-community/neighbor-link
🔍 ircf.space
@ircfspace
اینسیستم یک OpenWRT OS شخصیسازی شدهس که به ادمین امکان میده تا اینترنت استارلینک رو با کاربران دیگه (مثلا همسایهها) به اشتراک بذاره. #نیبرلینک درحال حاضر امکان مدیریت کاربران، تفکیک مسیر (split tunneling) و ماسککردن آیپی با استفاده از ویپیان رو فراهم میکنه، اما در آینده کاربردهای دیگه از جمله whitelisting, blacklisting و مدیریت ترافیک به اون افزوده میشه ...
💡 github.com/nasnet-community/neighbor-link
🔍 ircf.space
@ircfspace
Forwarded from IRCF | اینترنت آزاد برای همه
Forwarded from ᳆ (Amir Hossein "Amiria" Maher)
Media is too big
VIEW IN TELEGRAM
Forwarded from محتوای آزاد سهراب
مایکروسافت درجواب به کاربراش که گفتن ویندوز ۱۱ روی سیستممون نصب نمیشه، برگشته گفته برید سیستم جدید بخرید.
متأسفانه این قضیه مثل همون قضیه خب خودت بمال، کار به جایی نمیبره.
اگه ویندوز ۱۰ دارید و نمیتونید ویندوز ۱۱ نصب کنید، توصیه میکنم یکی از توزیعهای لینوکسی رو امتحان کنید :)
@SohrabContents
متأسفانه این قضیه مثل همون قضیه خب خودت بمال، کار به جایی نمیبره.
اگه ویندوز ۱۰ دارید و نمیتونید ویندوز ۱۱ نصب کنید، توصیه میکنم یکی از توزیعهای لینوکسی رو امتحان کنید :)
@SohrabContents
Forwarded from Gopher Academy
🔵 عنوان مقاله
PG Back Web 0.3: A Postgres Backup System with Web Interface
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، به بررسی اپلیکیشنی میپردازد که با استفاده از زبان برنامهنویسی Go ساخته شده است. این اپلیکیشن با هدف ارائه رابط کاربری دوستانهتر به مدیریت پشتیبانگیریهای پایگاه داده Postgres طراحی شده است. ویژگیهای اصلی این برنامه شامل توانایی انجام پشتیبانگیریهای برنامهریزیشده، نظارت بر پشتیبانگیریها و استفاده از وبهوکها برای بهبود ارتباطات و واکنشهای سیستم در زمانهای مشخص است. این امکانات به کاربران اجازه میدهند تا بتوانند بیشتر و به شکل کارآمدتری بر فرآیندهای پشتیبانگیری از دادههای حیاتی خود نظارت داشته باشند و در صورت بروز مشکل یا نیاز به بازیابی اطلاعات، سریعاً عکسالعمل نشان دهند. اپلیکیشن توسط جامعه متخصصان و توسعهدهندگان پشتیبانی میشود که میکوشند مستمراً قابلیتهای آن را به روز رسانی کنند و بهینهسازی نمایند.
🟣لینک مقاله:
https://golangweekly.com/link/159872/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
PG Back Web 0.3: A Postgres Backup System with Web Interface
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، به بررسی اپلیکیشنی میپردازد که با استفاده از زبان برنامهنویسی Go ساخته شده است. این اپلیکیشن با هدف ارائه رابط کاربری دوستانهتر به مدیریت پشتیبانگیریهای پایگاه داده Postgres طراحی شده است. ویژگیهای اصلی این برنامه شامل توانایی انجام پشتیبانگیریهای برنامهریزیشده، نظارت بر پشتیبانگیریها و استفاده از وبهوکها برای بهبود ارتباطات و واکنشهای سیستم در زمانهای مشخص است. این امکانات به کاربران اجازه میدهند تا بتوانند بیشتر و به شکل کارآمدتری بر فرآیندهای پشتیبانگیری از دادههای حیاتی خود نظارت داشته باشند و در صورت بروز مشکل یا نیاز به بازیابی اطلاعات، سریعاً عکسالعمل نشان دهند. اپلیکیشن توسط جامعه متخصصان و توسعهدهندگان پشتیبانی میشود که میکوشند مستمراً قابلیتهای آن را به روز رسانی کنند و بهینهسازی نمایند.
🟣لینک مقاله:
https://golangweekly.com/link/159872/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - eduardolat/pgbackweb: 🐘 Effortless PostgreSQL backups with a user-friendly web interface! 🌐💾
🐘 Effortless PostgreSQL backups with a user-friendly web interface! 🌐💾 - eduardolat/pgbackweb
Forwarded from DevTwitter | توییت برنامه نویسی
450 تا سیستم دیزاین برای ML و LLM
یکی از منابع خوب برای ارتقای کارمون اینه که ببینیم حرفه ای های این حوزه چطوری کار میکنن، کد میزنن و اصلا فکر میکنن.. مهم ترین بخش همین فکر کردنه..
https://www.evidentlyai.com/ml-system-design
@DevTwitter | <Sam92/>
یکی از منابع خوب برای ارتقای کارمون اینه که ببینیم حرفه ای های این حوزه چطوری کار میکنن، کد میزنن و اصلا فکر میکنن.. مهم ترین بخش همین فکر کردنه..
https://www.evidentlyai.com/ml-system-design
@DevTwitter | <Sam92/>
Forwarded from Gopher Academy
🔵 عنوان مقاله
What's in an (Alias) Name?
🟢 خلاصه مقاله:
مقالهای که قرار است در فوریه ۲۰۲۵ و در نسخه ۱.۲۴ زبان برنامهنویسی Go منتشر شود، به معرفی انواع مستعار جنریک میپردازد که به عنوان بخشی از پیشنهاد جدیدی، بر پایهی انواع مستعار و جنریکها ایجاد شده است. یکی از کاربردهای اصلی انواع مستعار، امکان بازسازی کد بدون ایجاد شکست در سازگاری است. رابرت در این مقاله به توضیح اصول انواع مستعار و دلایل نیازمندی به کار بیشتر برای ادغام آنها با جنریکها میپردازد. کار بیشتر مورد نیاز برای ادغام جنریکها با انواع مستعار ناشی از پیچیدگیهای فنی و نیاز به حفظ عملکرد سازگار در سطح کدهای برنامه است. این توسعه به برنامهنویسان کمک خواهد کرد تا کدهای موجود را با انعطافپذیری بیشتر و بدون مخاطره شکست، توسعه دهند.
🟣لینک مقاله:
https://golangweekly.com/link/160148/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
What's in an (Alias) Name?
🟢 خلاصه مقاله:
مقالهای که قرار است در فوریه ۲۰۲۵ و در نسخه ۱.۲۴ زبان برنامهنویسی Go منتشر شود، به معرفی انواع مستعار جنریک میپردازد که به عنوان بخشی از پیشنهاد جدیدی، بر پایهی انواع مستعار و جنریکها ایجاد شده است. یکی از کاربردهای اصلی انواع مستعار، امکان بازسازی کد بدون ایجاد شکست در سازگاری است. رابرت در این مقاله به توضیح اصول انواع مستعار و دلایل نیازمندی به کار بیشتر برای ادغام آنها با جنریکها میپردازد. کار بیشتر مورد نیاز برای ادغام جنریکها با انواع مستعار ناشی از پیچیدگیهای فنی و نیاز به حفظ عملکرد سازگار در سطح کدهای برنامه است. این توسعه به برنامهنویسان کمک خواهد کرد تا کدهای موجود را با انعطافپذیری بیشتر و بدون مخاطره شکست، توسعه دهند.
🟣لینک مقاله:
https://golangweekly.com/link/160148/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
What's in an (Alias) Name? - The Go Programming Language
A description of generic alias types, a planned feature for Go 1.24
Forwarded from Python BackendHub (Mani)
امروز خیلی خوشحالم که بالاخره Naked SQLAlchemy رو معرفی میکنم، یه thin wrapper روی SQLAlchemy Core که کار با دیتابیسها تو پایتون رو سادهتر میکنه. بعد از اینکه با pitfallهای ORM مواجه شدم—مثل اینکه دادههای توی حافظه با وضعیت واقعی دیتابیس یکی نبود به خاطر پیچیدگیهایی مثل identity mapping و dirty tracking—فهمیدم این ویژگیهایی که قرار بوده کار رو راحت کنن، در واقع باعث پیچیدگی و سختتر شدن یادگیری میشن. Naked SQLAlchemy با ترویج استفاده صریح از SQL و map مستقیم نتایج کوئری به dataclassهای پایتون، این لایههای غیرضروری رو کنار میزنه.
علاوه بر بهبود سرعت قابل توجه (تقریباً دو برابر سریعتر از ORM)، یادگیری Naked SQLAlchemy آسونه چون بر پایه دانشی هست که احتمالاً از قبل داری. امکاناتی مثل مپ کردن dataclass، مدیریت session بدون داشتن state، و امکان تعریف SQL View رو لایه ORM. با تمرکز روی ویژگیهای اساسی و دوری از abstractionهای پیچیده، به شما این امکان رو میده که کدهای واضح و explicit و قابل نگهداری بنویسن، بدون دردسرهای معمول ORM.
فلسفه من اینه که کمتر، بیشتره. با کنار گذاشتن لایههای غیرضروری، Naked SQLAlchemy یه راهکار قابل اعتماد، کارآمد و ساده برای دسترسی به دیتابیس تو پایتون ارائه میده. اگه دنبال ابزاری هستی که از pitfallهای معمول ORM دوری کنه و از تخصص SQLی که از قبل داری استفاده کنه، دعوتت میکنم Naked SQLAlchemy رو امتحان کنی.
لینک ریپازیتوری
لینک مستندات
اگه این پست یا این کتابخونه برات مفید بوده، خیلی ممنون میشم اگه بهش یه ستاره بدی یا این پست رو بازنشر کنی. حمایت شما به من انگیزه میده که به توسعه و بهبود فریمورکهای متنباز ادامه بدم. مرسی 🙂🙏
@PyBackendHub
علاوه بر بهبود سرعت قابل توجه (تقریباً دو برابر سریعتر از ORM)، یادگیری Naked SQLAlchemy آسونه چون بر پایه دانشی هست که احتمالاً از قبل داری. امکاناتی مثل مپ کردن dataclass، مدیریت session بدون داشتن state، و امکان تعریف SQL View رو لایه ORM. با تمرکز روی ویژگیهای اساسی و دوری از abstractionهای پیچیده، به شما این امکان رو میده که کدهای واضح و explicit و قابل نگهداری بنویسن، بدون دردسرهای معمول ORM.
فلسفه من اینه که کمتر، بیشتره. با کنار گذاشتن لایههای غیرضروری، Naked SQLAlchemy یه راهکار قابل اعتماد، کارآمد و ساده برای دسترسی به دیتابیس تو پایتون ارائه میده. اگه دنبال ابزاری هستی که از pitfallهای معمول ORM دوری کنه و از تخصص SQLی که از قبل داری استفاده کنه، دعوتت میکنم Naked SQLAlchemy رو امتحان کنی.
لینک ریپازیتوری
لینک مستندات
اگه این پست یا این کتابخونه برات مفید بوده، خیلی ممنون میشم اگه بهش یه ستاره بدی یا این پست رو بازنشر کنی. حمایت شما به من انگیزه میده که به توسعه و بهبود فریمورکهای متنباز ادامه بدم. مرسی 🙂🙏
@PyBackendHub
GitHub
GitHub - ManiMozaffar/naked-sqla: A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy…
A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM. - ManiMozaffar/naked-sqla
Forwarded from Python BackendHub (Mani)
یکی از دلایل اصلی که این لایبری رو نوشتم این بود:
تو یک سناریو آپدیت نسبتا پیچیده, چیزی که ORM بعد از آپدیت از حالت آخر row برمیگردوند و چیزی که واقعا از دیتابیس برگشته بود یکی نبود
همین موضوع راجب view هم رخ میده. که دلایلش داکیومنت شده اینجا که چرا این موضوع fail میشه.
تست فیل شدن آپدیت
تست فیل شدن view
دوم خیلی نگران کننده نیست, چون همه از view استفاده نمیکنن. ولی باگ اول تقریبا تو کله سورس کدمون هست
@PyBackendHub
تو یک سناریو آپدیت نسبتا پیچیده, چیزی که ORM بعد از آپدیت از حالت آخر row برمیگردوند و چیزی که واقعا از دیتابیس برگشته بود یکی نبود
همین موضوع راجب view هم رخ میده. که دلایلش داکیومنت شده اینجا که چرا این موضوع fail میشه.
تست فیل شدن آپدیت
تست فیل شدن view
دوم خیلی نگران کننده نیست, چون همه از view استفاده نمیکنن. ولی باگ اول تقریبا تو کله سورس کدمون هست
@PyBackendHub
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
🧐 پست قبلی را یادتونه ؟ (اگر یادتونه نیست برید بخونید 😁 )
🔥 مورد انتظار ترین ویژگی اندروید حالا : اجرا برنامه های لینوکس را در اندروید مثل ChromeOS
✅گوگل در حال توسعه framework ای است که دبیان را در یک VM روی اندروید اجرا کنه
برنامه ای به نام Terminal را از developer options فعال و دبیان را در ماشین مجازی نصب می کند.
🗓 این برنامه ترمینال بخشی از چارچوب مجازی سازی اندروید (AVF) است و حاوی یک WebView است که از طریق یک آدرس IP به ماشین مجازی لینوکس متصل می شود و به شما امکان می دهد دستورات لینوکس را از اندروید اجرا کنید.
💠 مجموعهای از patches تحت برچسب «ferrochrome-dev-option» اخیراً به AOSP ارسال شده که یک developer option جدید به نام ترمینال لینوکس را در زیر تنظیمات > سیستم > گزینههای برنامهنویس اضافه میکند. طبق توضیحات پیشنهادی، این گزینه جدید "برنامه ترمینال لینوکس که در داخل ماشین مجازی اجرا می شود" را فعال می کند.
اولین دسترسی ها به این قابلیت احتمالا در Pixel Tablet و Pixel 9 Pro XL خواهد بود
⁉️ سوالی داشتید در بخش کامنت ها بپرسید
مرجع
🔥 مورد انتظار ترین ویژگی اندروید حالا : اجرا برنامه های لینوکس را در اندروید مثل ChromeOS
✅گوگل در حال توسعه framework ای است که دبیان را در یک VM روی اندروید اجرا کنه
برنامه ای به نام Terminal را از developer options فعال و دبیان را در ماشین مجازی نصب می کند.
🗓 این برنامه ترمینال بخشی از چارچوب مجازی سازی اندروید (AVF) است و حاوی یک WebView است که از طریق یک آدرس IP به ماشین مجازی لینوکس متصل می شود و به شما امکان می دهد دستورات لینوکس را از اندروید اجرا کنید.
💠 مجموعهای از patches تحت برچسب «ferrochrome-dev-option» اخیراً به AOSP ارسال شده که یک developer option جدید به نام ترمینال لینوکس را در زیر تنظیمات > سیستم > گزینههای برنامهنویس اضافه میکند. طبق توضیحات پیشنهادی، این گزینه جدید "برنامه ترمینال لینوکس که در داخل ماشین مجازی اجرا می شود" را فعال می کند.
اولین دسترسی ها به این قابلیت احتمالا در Pixel Tablet و Pixel 9 Pro XL خواهد بود
⁉️ سوالی داشتید در بخش کامنت ها بپرسید
مرجع
Forwarded from Ninja Learn | نینجا لرن
💎معرفی دیتابیس MongoDB 💎
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
امیدوارم مفید بود باشه :)
@ninja_learn_ir
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
{
"name": "Ali",
"age": 25,
"email": "[email protected]"
}
{
"name": "Sara",
"age": 30
}2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
{
"_id": "60c72b2f9b1e8e0015cfd31a",
"name": "Product1",
"price": 100,
"catego_idlectronics"
}این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
#mongodb #db #nosql
Forwarded from Ninja Learn | نینجا لرن
📌 استفاده از MongoDB توی جنگو
چون جنگو بهصورت پیشفرض با دیتابیسهای رابطهای (مثل SQLite، PostgreSQL و MySQL) کار میکنه، باید از پکیجهایی استفاده کنیم که جنگو رو با MongoDB هماهنگ کنن. یکی از بهترین راهها استفاده از djongo یا Django MongoDB Engine هست.
استفاده از MongoDB توی Django:
1⃣ نصب MongoDB و Djongo
اول از همه باید MongoDB روی سیستمت نصب باشه. اگه هنوز نصب نکردی، میتونی از سایت رسمی
استفاده کنی.
بعد از اون، باید پکیج djongo رو نصب کنی تا جنگو بتونه با MongoDB کار کنه. برای نصبش این دستور رو توی ترمینال اجرا کن:
2⃣ تنظیمات جنگو برای استفاده از MongoDB
حالا باید تنظیمات پایگاه داده رو توی فایل settings.py پروژه جنگو تغییر بدی. توی بخش DATABASES، بجای تنظیمات دیتابیس پیشفرض، این رو وارد کن:
به همین راحتی جنگو رو با MongoDB هماهنگ کردیم. دقت کن که اگه اسم دیتابیس رو وارد نکنیم، MongoDB خودش بهصورت خودکار یه دیتابیس با همون اسم پروژه میسازه.
3⃣ استفاده از مدلها (Models)
بعد از تنظیمات دیتابیس، دیگه مثل همیشه میتونی از مدلهای جنگو استفاده کنی. جنگو با استفاده از ORM خودش مستقیماً به MongoDB متصل میشه. مثلاً فرض کن میخوای یه مدل ساده برای محصولات تعریف کنی:
این مدل رو مثل هر مدل دیگهای میتونی با دستورات معمول migrate و makemigrations به دیتابیس MongoDB بفرستی:
4⃣ مدیریت دادهها
بعد از اینکه مدلها رو ساختی و دیتابیس آماده شد، مثل همیشه میتونی از ادمین پنل جنگو، یا خود کد برای ایجاد و مدیریت دادهها استفاده کنی. برای ایجاد داده:
5⃣ استفاده از Robo 3T برای مدیریت MongoDB
برای مدیریت بهتر دیتابیس MongoDB، میتونی از ابزارهایی مثل Robo 3T استفاده کنی که یه رابط گرافیکی داره و کار با MongoDB رو راحتتر میکنه.
چون جنگو بهصورت پیشفرض با دیتابیسهای رابطهای (مثل SQLite، PostgreSQL و MySQL) کار میکنه، باید از پکیجهایی استفاده کنیم که جنگو رو با MongoDB هماهنگ کنن. یکی از بهترین راهها استفاده از djongo یا Django MongoDB Engine هست.
استفاده از MongoDB توی Django:
1⃣ نصب MongoDB و Djongo
اول از همه باید MongoDB روی سیستمت نصب باشه. اگه هنوز نصب نکردی، میتونی از سایت رسمی
استفاده کنی.
بعد از اون، باید پکیج djongo رو نصب کنی تا جنگو بتونه با MongoDB کار کنه. برای نصبش این دستور رو توی ترمینال اجرا کن:
pip install djongo
2⃣ تنظیمات جنگو برای استفاده از MongoDB
حالا باید تنظیمات پایگاه داده رو توی فایل settings.py پروژه جنگو تغییر بدی. توی بخش DATABASES، بجای تنظیمات دیتابیس پیشفرض، این رو وارد کن:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'mydatabase', # نام دیتابیس مورد نظر
}
}به همین راحتی جنگو رو با MongoDB هماهنگ کردیم. دقت کن که اگه اسم دیتابیس رو وارد نکنیم، MongoDB خودش بهصورت خودکار یه دیتابیس با همون اسم پروژه میسازه.
3⃣ استفاده از مدلها (Models)
بعد از تنظیمات دیتابیس، دیگه مثل همیشه میتونی از مدلهای جنگو استفاده کنی. جنگو با استفاده از ORM خودش مستقیماً به MongoDB متصل میشه. مثلاً فرض کن میخوای یه مدل ساده برای محصولات تعریف کنی:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.FloatField()
description = models.TextField()
def str(self):
return self.name
این مدل رو مثل هر مدل دیگهای میتونی با دستورات معمول migrate و makemigrations به دیتابیس MongoDB بفرستی:
python manage.py makemigrations
python manage.py migrate
4⃣ مدیریت دادهها
بعد از اینکه مدلها رو ساختی و دیتابیس آماده شد، مثل همیشه میتونی از ادمین پنل جنگو، یا خود کد برای ایجاد و مدیریت دادهها استفاده کنی. برای ایجاد داده:
from .models import Product
product = Product(name="Phone", price=500, description="Smartphone with 4GB RAM")
product.save()
5⃣ استفاده از Robo 3T برای مدیریت MongoDB
برای مدیریت بهتر دیتابیس MongoDB، میتونی از ابزارهایی مثل Robo 3T استفاده کنی که یه رابط گرافیکی داره و کار با MongoDB رو راحتتر میکنه.
Forwarded from Ninja Learn | نینجا لرن
📌 استفاده از MongoDB در Node.js
بهترین و رایجترین راه استفاده از کتابخونه Mongoose هست که به عنوان یک ORM (Object-Relational Mapping) برای MongoDB عمل میکنه و کار با دادهها رو خیلی سادهتر میکنه.
استفاده از MongoDB توی Node.js:
1⃣ نصب MongoDB و Mongoose
اول از همه باید MongoDB روی سیستمت نصب باشه. اگه نصب نیست، میتونی از سایت رسمی
استفاده کنی. یا از نسخه ابری MongoDB Atlas هم میتونی استفاده کنی.
بعد از اون باید Mongoose رو توی پروژهات نصب کنی. برای این کار، این دستور رو توی ترمینال پروژهت اجرا کن:
2⃣ اتصال به MongoDB
حالا که Mongoose نصب شد، میتونی ازش استفاده کنی تا به دیتابیس MongoDB متصل بشی. یه فایل app.js ایجاد کن و کد زیر رو توش بنویس:
این کد به دیتابیس محلی MongoDB وصل میشه (البته به جای mydatabase اسم دیتابیسی که میخوای رو بزار).
3⃣ تعریف مدلها (Schemas)
بعد از اتصال، میتونی از Mongoose برای تعریف مدلها استفاده کنی. مثلاً فرض کن میخوای یه مدل برای محصولات داشته باشی. اول یه فایل جدید به اسم models/product.js بساز و کد زیر رو توش بنویس:
توی اینجا یک Schema تعریف کردیم که شامل نام، قیمت، توضیحات و موجودی محصول هست.
4⃣ اضافه کردن داده به MongoDB
حالا که مدل محصول رو تعریف کردی، میتونی دادههایی رو به دیتابیس اضافه کنی. توی فایل app.js کدی مثل این رو اضافه کن:
با اجرای این کد، یه محصول جدید به دیتابیس MongoDB اضافه میشه.
5⃣ خواندن دادهها از MongoDB
برای خواندن دادهها از دیتابیس هم میتونی از این کد استفاده کنی:
این کد همه محصولات موجود توی دیتابیس رو برمیگردونه و نمایش میده.
🆕 آپدیت و حذف دادهها
برای آپدیت یک محصول:
و برای حذف یک محصول:
بهترین و رایجترین راه استفاده از کتابخونه Mongoose هست که به عنوان یک ORM (Object-Relational Mapping) برای MongoDB عمل میکنه و کار با دادهها رو خیلی سادهتر میکنه.
استفاده از MongoDB توی Node.js:
1⃣ نصب MongoDB و Mongoose
اول از همه باید MongoDB روی سیستمت نصب باشه. اگه نصب نیست، میتونی از سایت رسمی
استفاده کنی. یا از نسخه ابری MongoDB Atlas هم میتونی استفاده کنی.
بعد از اون باید Mongoose رو توی پروژهات نصب کنی. برای این کار، این دستور رو توی ترمینال پروژهت اجرا کن:
npm install mongoose
2⃣ اتصال به MongoDB
حالا که Mongoose نصب شد، میتونی ازش استفاده کنی تا به دیتابیس MongoDB متصل بشی. یه فایل app.js ایجاد کن و کد زیر رو توش بنویس:
const mongoose = require('mongoose');
// اتصال به MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('Connected to MongoDB');
}).catch((err) => {
console.error('Error connecting to MongoDB:', err);
});این کد به دیتابیس محلی MongoDB وصل میشه (البته به جای mydatabase اسم دیتابیسی که میخوای رو بزار).
3⃣ تعریف مدلها (Schemas)
بعد از اتصال، میتونی از Mongoose برای تعریف مدلها استفاده کنی. مثلاً فرض کن میخوای یه مدل برای محصولات داشته باشی. اول یه فایل جدید به اسم models/product.js بساز و کد زیر رو توش بنویس:
const mongoose = require('mongoose');
// تعریف اسکیمای محصول
const productSchema = new mongoose.Schema({
name: { type: String, required: true },
price: { type: Number, required: true },
description: String,
stock: { type: Number, default: 0 }
});
// ساخت مدل محصول از روی اسکیمای تعریفشده
const Product = mongoose.model('Product', productSchema);
module.exports = Product;توی اینجا یک Schema تعریف کردیم که شامل نام، قیمت، توضیحات و موجودی محصول هست.
4⃣ اضافه کردن داده به MongoDB
حالا که مدل محصول رو تعریف کردی، میتونی دادههایی رو به دیتابیس اضافه کنی. توی فایل app.js کدی مثل این رو اضافه کن:
const Product = require('./models/product');
// ایجاد و ذخیره یک محصول جدید
const newProduct = new Product({
name: 'Phone',
price: 500,
description: 'Smartphone with 4GB RAM',
stock: 10
});
newProduct.save().then(() => {
console.log('Product saved successfully');
}).catch((err) => {
console.error('Error saving product:', err);
});با اجرای این کد، یه محصول جدید به دیتابیس MongoDB اضافه میشه.
5⃣ خواندن دادهها از MongoDB
برای خواندن دادهها از دیتابیس هم میتونی از این کد استفاده کنی:
Product.find().then((products) => {
console.log(products);
}).catch((err) => {
console.error('Error fetching products:', err);
});این کد همه محصولات موجود توی دیتابیس رو برمیگردونه و نمایش میده.
🆕 آپدیت و حذف دادهها
برای آپدیت یک محصول:
Product.findByIdAndUpdate(productId, { price: 600 }).then(() => {
console.log('Product updated successfully');
}).catch((err) => {
console.error('Error updating product:', err);
});و برای حذف یک محصول:
Product.findByIdAndDelete(productId).then(() => {
console.log('Product deleted successfully');
}).catch((err) => {
console.error('Error deleting product:', err);
});