جنگولرن
3.81K subscribers
287 photos
74 videos
31 files
556 links
آموزش Django و بستگان
Download Telegram
الگوی طراحی Singleton چیه؟
https://refactoring.guru/design-patterns/singleton
☑️ مثالش توی پایتون
https://refactoring.guru/design-patterns/singleton/python/example

☑️ مثالش توی جنگو که باهاش تنظمیات سایتش رو پیاده سازی کرده
https://steelkiwi.com/blog/practical-application-singleton-design-pattern/
👍3
جنگولرن
الگوی طراحی Singleton چیه؟ https://refactoring.guru/design-patterns/singleton ☑️ مثالش توی پایتون https://refactoring.guru/design-patterns/singleton/python/example ☑️ مثالش توی جنگو که باهاش تنظمیات سایتش رو پیاده سازی کرده https://steelkiwi.com/blog/practical…
پست (هایی) از کانال @TadavomnisT_channel در مورد این پست. توی کانالش برید و توضیحات کاملی که داده رو ببینید.

دیزاین پترن سینگلتون چیست؟

این پست از جنگولرن رو دیدم و بهانه خوبی بود برای اینکه نقبی بزنیم به شی‌گرایی و الگوی طراحی سینگلتون رو به زبان ساده یه توضیح کوشولو بدیم، چون چیزی بود که در عمل خودمم قبلا استفاده‌ش کردم و کاربردی بود^_^

یه زمانی هست که ما میخوایم از یه کلاس فقط یک شی ساخته بشه، و نه بیشتر.
یعنی کلاسمون رو جوری طراحی کنیم، که صرفا یـــــــک عدد شی/آبجکت/اینستنس ازش قابل ساختن باشه.

اون موقع هست که از "الگوی طراحی سینگلتون" یا دیزاین‌پترن Singleton استفاده میکنیم.

الگوهای طراحی معماری نرم‌افزار، یا به اختصار دیزاین‌پترن ها، بخشی از اصول طراحی معماری نرم‌افزار هستن، اگر فرآیند ساخت نرم‌افزار رو به فرايند ساخت خونه تشبیه کنیم، بخش مهم ساختن یه خونه، طراحی معماری اون خونه هست، طراحی معماری، نقشه کشیدن، محاسبات، برآورد کردن مصالح، پی زدن، و... همه کارهای مهم، قبل از نهادن خشت اول انجام میشه.
نرم‌افزار هم همینه، من چرخه تولید نرم‌افزار رو توضیح دادم که کدزنی فقط ممکنه 10 درصد فرآیند ساخت نرم‌افزار باشه، همچنین توی طراحی نرم افزارهای بزرگ و کوچیک، طراحی معماری "بالابه‌پایین" و "پایین‌به‌بالا" رو اسم بردم دادم که خوندنش مفیده.


اما برگردیم به سینگلتون...
سینگلتون یه دیزان‌پترن خیـــــــلی ساده و خیـــــــلی کاربردیه که یه کلاس رو جوری رگولاته میکنه که شما صرفا ازش همیشه یک اینستنس داشته باشی.

+ اول توضیح انتزاعی میدم
+ بعدش توضیح عملی میدم
+ بعدشم میگم که اصلا به چه دردی میخوره.
4👍1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
چند مثال از جوین هایی که میتونن مشکل زا باشن توی sql و بهینه نیستند :‌

مثال 1: استفاده از CROSS JOIN

فرض کنید می‌خواهیم اطلاعات مشتریان و سفارش‌های آن‌ها را از دو جدول مجزا در SQL استخراج کنیم. برای این کار از CROSS JOIN استفاده می‌کنیم:


SELECT * FROM Customers
CROSS JOIN Orders;


این کد همه مشتری‌ها را با همه سفارش‌ها جوین می‌کند، که می‌تواند به مشکلات عملکردی و مصرف منابع زیادی منجر شود.

راه حل بهتر: برای ارتباط دو جدول بهتر است از INNER JOIN یا LEFT JOIN استفاده کنید تا فقط رکوردهای متناظر با یکدیگر جوین شوند و منابع بهینه‌تر مدیریت شوند.

در Django ORM:


# اشتباه: استفاده از select_related برای چندین ارتباط یک‌به-بیش-تا-یک
customers = Customer.objects.all().select_related('order__product')

# راه حل: استفاده از prefetch_related برای این موارد
customers = Customer.objects.all().prefetch_related('order_set__product')


مثال 2: استفاده از WHERE برای جوین

در این مثال، می‌خواهیم اطلاعات مشتریانی که سفارش داده‌اند را بر اساس شهر مشتری‌ها استخراج کنیم:


SELECT Customers.*, Orders.*
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
AND Customers.City = 'New York';


این کد علاوه بر استفاده از JOIN با WHERE برای فیلترینگ، منجر به اجراهای زمان‌بر می‌شود.

راه حل بهتر: از INNER JOIN یا LEFT JOIN برای اتصال جداول استفاده کنید و شرط‌های فیلترینگ را در بخش WHERE اعمال کنید.

در Django ORM:


# اشتباه: استفاده از فیلتر در select_related
customers = Customer.objects.filter(city='New York').select_related('order')

# راه حل: فیلتر را در queryset اعمال کنید
customers = Customer.objects.filter(city='New York')


مثال 3: استفاده از JOIN بیش از حد

در این مثال، فرض کنید بخواهیم اطلاعات مشتریان، سفارش‌ها و محصولات را با هم جوین کنیم:


SELECT Customers.*, Orders.*, Products.*
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
INNER JOIN Products ON Orders.ProductID = Products.ProductID;


این کد ممکن است به عنوان یک JOIN زیاده‌روی شناخته شود که منجر به کاهش عملکرد و پیچیدگی افزایش می‌دهد.

راه حل بهتر: تلاش کنید فقط اطلاعات مورد نیاز خود را با INNER JOIN یا LEFT JOIN جوین کنید تا ساده‌تر و کارآمدتر باشد.

در Django ORM:


# اشتباه: جوین بیش از حد در یک queryset
customers = Customer.objects.all().select_related('order__product')

# راه حل: جوین‌های مورد نیاز را جداگانه تعریف کنید
customers = Customer.objects.all().select_related('order').prefetch_related('order__product')


به این توجه کنید که در Django ORM می‌توانید از select_related برای اتصال‌های یک به یک و prefetch_related برای اتصال‌های یک به بیش از یک استفاده کنید تا بهینه‌ترین عملکرد را داشته باشید.


⚠️ من جنگو زیاد خوب نیستم اگر ایرادی داره توی کامنت ها بگید اصلاح کنم.

💠 @SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
📣 تبلیغ رایگان

📌کانال برتر تحلیل گران امنیت اطلاعات
📌آموزشهای کشف آسیب پذیری و اکسپلویت کردن آن
📌بروزترین متد های هکینگ
📌برترین و بروزترین کانال امنیت سایبری
📌کانالی برای انواع هکرهای کلاه سفید - کلاه سیاه - تیم امنیت قرمز و آبی

https://t.me/joinchat/AAAAAFOu_hbWrEmB8L7ZDg
🔥4🤮2
Forwarded from Microfrontend.ir
در این ویدیو از آموزش رایگان پروژه محور Django مدل تصاویر محصولات در فروشگاه ایجاد کردیم به گونه ای که بتوان برای هر محصول مجموعه ای از عکس ها اضافه کرد و یکی از آنها را به عنوان عکس اصلی مشخص کنیم. همچنین در صورت حذف عکس سایر عکس ها را مجدد مرتب کردیم.


Video: https://youtu.be/O8Crpne0iWg

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwnWCHfoka0G57oL-8fuMGW

Git: https://github.com/hemanhp/djshop

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
2
Forwarded from Unk9vvN
#Web #Developer VS #Web #Security #Expert
تفاوت نگاه یک برنامه نویس وب به موضوع امنیت سرویس های تحت وب، با یک متخصص پیشرفته امنیت وب در این است که برنامه نویس وب، آسیب پذیری های عمومی را مورد بررسی و ایمن سازی قرار میدهد اما متخصص امنیت وب بیش از 100 آسیب پذیری حساس در حوزه وب رو مورد بررسی و وا کاوی قرار میدهد.

نمونه ای از تحقیقات برتر متخصصین امنیت وب:

Abusing HTTP hop-by-hop request headers by Nathan Davison

Web Cache Deception Attack by Omer Gil

HTTP Desync Attacks: Request Smuggling Reborn by James Kettle

File Operation Induced Unserialization via the “phar://” Stream Wrapper by Sam Thomas

Remote Code Execution in CouchDB by Max Justicz

Prototype pollution attack in NodeJS application by Olivier Arteau

A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages! by Orange Tsai

Timeless Timing Attacks by Tom Van Goethem & Mathy Vanhoef

How I Hacked Microsoft Teams and got $150,000 in Pwn2Own by Masato Kinugawa

@Unk9vvN
😁2🔥1
نکته تمپلت های جنگو
از لینکدین Mohammad Hany Feyz
👏12👍3
جنگولرن
نکته تمپلت های جنگو از لینکدین Mohammad Hany Feyz
کامنت یکی از دوستان

حالا که بحث تمپلیت شد یه قابلیت جدید توی ورژن پنج اضافه کردن که میتونیم ویژگی های متخلف یک فیلد فرم مثل lable, widget, help textرو با هم گروپ کنیم
👍62
Forwarded from Microfrontend.ir
در این ویدیو از آموزش پروژه محور Django به بررسی روش های Model Inheritance در جنگو پرداختیم. جنگو برای این کار سه رویکرد را ارایه داده است که رویکرد آن استفاده از abstarct model هاست. رویکرد دوم multi table inheritance و رویکرد سوم django proxy model است. ابتدا برای ذخیره اطلاعات زمان به روز رسانی و ایجاد رکورد از یک abstract model استفاده کردیم و سپس به عنوان مثال پروکسی، مدل LogEntry جنگو ادمین را اکستند کردیم.


Video: https://youtu.be/RADrO9uB1Xc

PlayList: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwnWCHfoka0G57oL-8fuMGW

Git: https://github.com/hemanhp/djshop

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
5
یه سوال ساده: در HTML ایا به المان های inline میشه float داد؟
Anonymous Quiz
39%
نمی دونم
42%
میشه
19%
نمیشه
😁8👎1
سوال ساده دوم: آیا میشه position:absolute رو به المان های inline بدیم؟
Anonymous Quiz
31%
نمی دونم
45%
میشه
24%
نمیشه
😁1
سوال ساده سوم: آیا مقدار منفی برای z-index معتبر هست؟
Anonymous Quiz
21%
نمی دونم
57%
هست
21%
نیست
👍2👏2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
👨‍💻 تفاوت های کلیدی بین پایگاه داده SQL و MongoDB

📌مدل‌سازی داده: SQL از یک طرح و جداول ثابت استفاده می‌کند، در حالی که MongoDB از ساختار مبتنی بر سند(document-based) انعطاف‌پذیر استفاده می‌کند.

📌زبان پرس و جو: SQL از زبان پرس و جو ساخت یافته (SQL) استفاده می کند، در حالی که MongoDB از زبان پرس و جو مبتنی بر جاوا اسکریپت استفاده می کند.

📌مقیاس پذیری: MongoDB یک پایگاه داده NoSQL با مقیاس افقی است، در حالی که پایگاه های داده SQL به صورت عمودی مقیاس پذیر هستند.

📌روابط: MongoDB از روابط پیچیده پشتیبانی نمی کند، در حالی که پایگاه های داده SQL پشتیبانی خوبی از روابط پیچیده از طریق Join دارند.

📌عملکرد: MongoDB برای مجموعه داده‌های خواندنی و بزرگ سریع‌تر است، در حالی که پایگاه‌های داده SQL برای تراکنش‌ها(transactions) و به‌روزرسانی‌های پیچیده مناسب‌تر هستند.

توی کامنت اول اسکیل افقی و عمودی رو توضیح دادم
💠@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Forwarded from SeYeD.Dev
اسکیل افقی و عمودی در مفاهیم پایگاه داده (Database) استفاده می‌شوند تا ماهیت تغییرات و توسعه دیتابیس‌ها را توصیف کنند. این دو مفهوم به شرح زیر توضیح داده می‌شوند:

1. اسکیل افقی (Horizontal Scaling):
- اسکیل افقی به معنای افزایش ظرفیت دیتابیس با افزودن سرورها یا نودهای جدید به سیستم است.
- در اسکیل افقی، داده‌ها و بار کاری به صورت موازی بین سرورها یا نودها تقسیم می‌شوند.
- این رویکرد اغلب برای افزایش قابلیت اطمینان و پایداری سیستم مورد استفاده قرار می‌گیرد.

2. اسکیل عمودی (Vertical Scaling):
- اسکیل عمودی به معنای افزایش ظرفیت دیتابیس با افزایش منابع سخت‌افزاری (مانند پردازنده، حافظه RAM، دیسک سخت و غیره) در یک سرور می‌باشد.
- در اسکیل عمودی، تمام داده‌ها و عملیات پردازش به یک سرور محدود می‌شوند.
- این رویکرد معمولاً برای بهبود عملکرد یک سرور خاص و کاهش مشکلات عملکردی مورد استفاده قرار می‌گیرد.

برای مثال، اگر یک وبسایت با افزایش ترافیک نیاز به پشتیبانی از بیشترین تعداد کاربران داشته باشد، می‌توانید به اسکیل افقی فکر کنید و سرورهای اضافی را به سیستم اضافه کنید. در مقابل، اگر یک دیتابیس تجاری با داده‌های حجیم و پیچیده دارید و نیاز به افزایش سرعت پردازش دارید، ممکن است با اسکیل عمودی (افزایش منابع سخت‌افزاری) به اهداف خود برسید.

هر دو اسکیل افقی و عمودی دارای مزایا و معایب خود هستند، و انتخاب بین آنها باید بر اساس نیازها و موارد مشخص شما صورت گیرد.
👍6
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
خب رسیدیم به اوایل دهه 90 میلادی که استالمن و یارانش تقریبا تمام ابزارهای مورد نیاز برای یه سیستم عامل مثل یونیکس به غیر از کرنل رو بازنویسی کرده بودن...
استالمن فکر میکرد طراحی کرنل خیلی طولانی تر و سخت تر از بازنویسی این جریانها باشه....

موازی با این جریان، یه دانشجویی به اسم لینوس توروالز هم بصورت خودجوش این چند سال آخر رو صرف نوشتن یه کرنل کرده بود که مثل یونیکس باشه...
به عنوان یه پروژه آخر هفته فان...
برای این که بتونه سیستم عامل خودش رو داشته باشه...
(اینو شاید بعدا بیشتر توضیح بدیم)

استالمن و دیگر افراد گنو از این جریان خبر نداشتن...

سال 1991 دوست توروالز بهش میگه بیا بریم دانشگاه ما، یه ریش بلندی اومده به اسم استالمن که یچیزایی از آزادی نرم‌افزار میگه و لایسنس و این چیزا...

قبل از دیدن این سخنرانی، توروالز لینوکس رو با لایسنسی کاستوم عرضه کرده بود که اجازه استفاده های تبلیغاتی از لینوکس + یسری استفاده های دیگه ای رو نمیداد...

بعد از دیدن سخنرانی استالمن، توروالز متاثر از حرفهایی راجع به گنو، کرنل رو میبره روی لاینسن GPL ورژن 2 (که بعد از 30 سال الان هنوزم روی همونه)...
و بصورت آزاد نشر میده:)

استالمن که کرنل رو میبینه، میفهمه کرنلی نوشته شده خیلی سریع‌تر و خیلی بهینه‌تر از اون چیزی که تصورش رو میکرده!

و آخرین تیکه گمشده پازل گنو، تکمیل میشه

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
فکر کنم حالا همه چیز واضح شد... حالا حرفهایی که قبلا اینجا زدم رو اگه بازنشر کنم کاملا درک میشه:

مفهوم لینوکس چیه، اصطلاح درست تر ، یاد گرفتن مفهوم گنو اسلش لینوکسه... گنو/لینوکس:
GNU/Linux
لینوکس یه کرنل اپن‌سورس و آزاده، که توسط استاد
توروالز نوشته شده و امروزه توسط یه جامعه‌ای توسعه داده میشه و پچ میشه.
بسیار کرنل استیبل و بهینه‌ای هست.
وظیفه کرنل انجام کارهای زیر باک سیستم عامله مثل مدیریت
پراسسها و رم و پردازنده، و اتصال و مدیریت قسمتهای مختلف،
به معنای کلی،
راه انداختن زیر باک سیستم عامل.

گنو اسم مکتبی هست که استاد استالمن راه انداخته و میشه بعدا راجع بهش کلی حرف زد (یه پست واسه استالمن مینویسم)
گنو در اینجا منظور از یکسری ابزار آزاد هست که دور کرنل رو میگیرن، و از یه هسته خام تبدیلش میکنن به یه سیستم عامل کامل...
ابزار هایی تحت پکیج های مختلف،
مثل کامپایلر آزاد
ویرایشگر متنی آزاد
ابزار مدیریت شبکه آزاد
زبان برنامه نویسی
فشرده سازی
آرکایو منیجر
منوآل
بش
گراب
و...
خلاصه هر چیزی که یه هسته خام لازم داره تا بتونه سیستم عامل کامل باشه

اینا همه برنامه هستن،
کرنل در کنار دیگر ابزارهای گنو کامپایل میشه و یه سیستم عالم لینوکس بیس و خام زاده میشه
https://t.me/TadavomnisT_channel/646
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

پس گنو پروژه بزرگی بود که کرنل لینوکس متممش شد.
👍92
شاید شما هم مثل من پوشه‌ی تنظیمات editorتون رو به gitignore همه‌ی پروژه‌هاتون اضافه می‌کنید، اما اگر پروژه، پروژه‌ی ما نیست چی؟ به تمام پروژه‌‌هایی که contributor شون هستیم چی؟ یا مثلا فایل .DS_Store مک رو در نظر بگیرید، چون یک نفر مک داره باید این به gitignore پروژه اضافه بشه؟
راه حل بهترش استفاده از global gitignoreئه، یه فایل گیت ایگنور که برای سیستم شما روی همه چی اعمال میشه نه فقط یه ریپوزیتوری.
در موردش اینجا بخونید:
https://sebastiandedeyne.com/setting-up-a-global-gitignore-file/
6
Forwarded from AutomationCamp
Test Automation Design Patterns.pdf
2.3 MB
دیزاین پترن یا همون الگوی طراحی، یک قالب برای پیاده سازی سولوشن های نرم افزاری برای مسائل متفاوت هست‌ که نیایم زیاد درگیر چلنج بشیم، بست پرکتیس ها رو پیاده سازی کنیم و در نهایت کد تمیزتری داشته باشیم.
به عنوان دولوپر تست اتومیشن باید با دیزاین پترن های مهم ش آشنا باشیم. تو این فایل که اخیرا تو لینکداین منتشر کردم خیلی مفید و مختصر با مثال و جایی که باید استفاده بشن توضیح شون دادم.
امیدوارم براتون مفید باشه ✌️
👍2
Forwarded from Django Expert (Boby Cloud)
✔️ اخیرا code review برای یک سری از دوستان انجام دادم و یک موردی که در اکثر کدها میدیدم عبارات شرطی (if/else) های غیرضروری و تورفتگی های بیش از حد کدها بود که باعث میشد خوانایی کد پایین بیاد، کدها کثیف بشن و دیباگ و نگهداری کد هم سخت تر بشه. این مورد انقدر زیاد بود که تصمیم گرفتم راجع بهش یه ویدیو بسازم.

توی این ویدیو راجع به تکنیک گارد کلاوز (Guard Clause) صحبت میکنیم که با استفاده از برعکس کردن شرط‌های if، میشه کدهای تمیزتری نوشت و دیباگ، نگهداری و در نهایت زندگی راحت تری داشته باشیم.

🖥 مشاهده در یوتوب
👉 Link: https://youtu.be/Q3FLJ95Mc1g?si=JnCE5PYehlrTyQMl

〰️〰️〰️〰️〰️〰️
@DjangoEx | @BobyDotCloud
👍5