جنگولرن
3.81K subscribers
287 photos
74 videos
31 files
556 links
آموزش Django و بستگان
Download Telegram
یه سوال ساده: در 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
Forwarded from Easy Microservices
😁21🤔2👍1
Forwarded from آکادمی دکتر مس‌فروش (Ali Mesforush)
با سلام
در آکادمی دکتر مس‌فروش بیش از ۵۰ هزار دقیقه ویدیوی آموزشی در ۳۴ عنوان شامل دروس دوره‌های کارشناسی و کارشناسی ارشد در زمینه ریاضی و علوم کامپیوتر با هدف برقراری عدالت آموزشی به صورت رایگان منتشر شده است. در صورت امکان این پست را به صورت توییت یا ارسال به گروهها و کانالهای تلگرام، واتس اپ و ... منتشر بفرمایید.
با سپاس
/مس‌فروش

https://www.youtube.com/@DrMesforushAcademy/playlists
👍71👎1
سلام به همه
از اونجایی که من async newcomers هستم. این سوال رو میپرسم.
این لینک رو ببینید
https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

میخوام ببینم شما حرفه ای های پایتون این مشکلات deadlock رو توی پایتون داشتید؟ یا پایتون رفتارش متفاوته.

یه پروژه دات نتی بود. من بخشی اش رو اوکی کردم. مطلبش در مورد دات نت هست. اما مفاهیم مشترکه
Forwarded from Microfrontend.ir
در این ویدیو از پلی لیست آموزش رایگان پروژه محور Django به مررسی مفهوم کاربر در جنگو پرداختیم. ابتدا تنظیمات مرتبط با مدل یوزر در جنگو را مرور و سپس کلاس های پایه User در جنگو و فیلدهای آن را مرور کردیم. سپس برای Extend Django User Model یک اپ مستقل ساختیم و Custom User خود را نوشتیم و به پروژه اضافه کردیم. همچنین برای مدیریت آن به Django Admin هم اضافه کردیم


Video: https://youtu.be/wXBxfttOGUo

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

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

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
👍2
ویدیو جدید راجع به ۵ کتابی هست که هر برنامه نویس پایتون لازم داره بخونه تا توی پایتون حرفه ای بشه و کارهایی رو بتونه انجام بده که اکثر آدم ها بخاطر نداشتن دانش فنی کافی نمیتونن انجام بدن. اگه دوست داشتید میتونید روی یوتوب ببینید:

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

〰️〰️〰️〰️〰️〰️
@BobyDotCloud
👍5
Forwarded from Python BackendHub
یک تایمی که اپلای میکردم برای اروپا متوجه شدم اکثر شرکت های اروپایی یک فریم ورک و فرهنگ مشخص دارن برای استخدام،

اولا که اگهی ها اینطوری بود:

What you will do
1. ….
2. ….

What you will bring
1. Proficienct in Django
2. …
3. Fimiliar with k8s

Nice to have
1. …

دلیلش اینه که وقتی میگن advance یا … مشخص نیست چقدر ادونس؟ تکنولوژی تو اخرین مرحله advance اش یعنی شما مستقیما core contributer بشی و شاید سال ها طول بکشه تا به اونجا برسی. پس طبیعتا این کلمه advance میتونه به کلی معنی های مختلف ترجمه شه. ولی وقتی تسکی که انتظار میره ازتون رو بنویسن شما متوجه میشی چقدر میخوان اشنایی داشته باشی با یک چیزی

نکته دوم، شرکت های خیلی بزرگ و FAANG میان سوالات سخت الگوریتمی میذارن تو مصاحبه فنی، کاری به خوبی و بدیش ندارم ولی اون شرکتا تو اون حجم راهکار دیگه ای ندارن. نمیتونن بشینن برای کاندید های مناسب یک پوزیشن تک تک coding assignment بدن و پروژه هاشون رو چک کنند، هزینه این کار تو scale بالا ممکنه براشون غیرمنطقی باشه. پس شرکتا معمولا یا coding assignment میدن یا الگوریتم. نمیان جفتشو بدن! کنارش سوالات تئوری هم میپرسن.

و نکته اخر، چه الگوریتم باشه چه coding assignment، مستقیما به پروداکت شرکت ربطی نداره! مثلا من coding assignment هایی که انجام دادم راجب pokemon و imdb و این چیزا بود. طبیعتا نباید چالش شرکتو assignment بدن بهتون، یا اگه همچین کاری‌کنند باید بهتون هزینه پرداخت کنند چون دارین عملا رو پروداکتشون کد میزنید.


@ManiFoldsPython
2
یعنی دیگه از JQuery استفاده نکنم؟
بخشهایی از nojquery.ir:
عبارت VanillaJS یا همون جاوا اسکریپت وانیلی، به معنی کد های خام جاوا اسکریپت هست که بدون استفاده از هیچ فریمورکی و فقط و فقط با قابلیت های پیشفرض خود زبان Javascript پیاده‌سازی شدند.
...
برای سلب مسئولیت باید خدمتتون عرض کنم که ما نمیگیم که نباید از JQuery یا بقیه دوستانش استفاده کرد، بلکه صحبت ما سر این هست که تنبلی رو کنار بزاریم و چون بلد نیستیم یا حوصله نداریم یاد بگیریم، نیایم و چندین مگابایت فریمورک و کتابخونه لود کنیم توی پروژه، چون پرفرمنس واقعا مهم هست و در اشاره به اون عده از دوستانی که با حالت متفکرانه‌ای می‌گویند: "چرخ را نباید مجددا اختراع کرد" باید عرض کنم که این صفحه خوشگل و پر محتوا، به‌همراه سه نوع فونت‌فیس لود شده و کل محتویات، حدود 300 کیلوبایت هست، اونوقت یه صفحه گل‌منگلی که توش JQuery و Bootstrap و بقیه دوستانش رو لود می‌کنید، چندین مگابایت حجمش میشه و سریع توی بیوگرافی می‌نویسید "آیم وب دولوپر"، راستش ایران‌خودرو هم ماشین تولید می‌کنه، تسلا هم ماشین تولید می‌کنه و خوشبختانه جفتشون هم کار می‌کنند
👍7👎3🤔3
بیست میلیون تومن برای باگ Critical 🚬

https://twitter.com/1rpwn/status/1716379134207615329?t=C_5-yG7xiJXtqW0Llgk1ew&s=35
🤮6👎2👍1
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
* حمله بافراورفلو در عمل چجوریه؟
* چجوری با gdb میتونیم زیر باک یه برنامه رو نگاه کنیم؟
* مموری-سیف نبودن یه زبانی مثل C چطور ممکنه اشکال امنیتی ایجاد کنه؟

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

قبلتر مفهوم حمله از طریق بافراورفلو ر بصورت انتزاعی توضیح دادیم:
▪️حمله بافر-اورفلو چیست؟

و فهمیدیم که توی RAM یا مموری مربوط به برنامه اطلاعاتی نوشته شدن که هر کدوم بصورت یه بافر (حافظه موقت) هستن، حالا یه زمانی بخاطر دسترسی بازی که توی زبانهای سطح پایینی مثل C و یا حتی پایینتر مثل اسمبلی داریم، ممکنه یه مقداری اضافه از توی رم خونده/نوشته بشه...
ممکنه یه مقدار روی یه مقدار دیگه نوشته بشه، یا طول یه بافر به اشتباه زیاد/کم بشه و مقدایر دیگری که نباید خونده بشن، خونده بشن.
گاها و عمدتا اشتباهی از سمت برنامه‌نویس هست که باعث بروز این اتفاق میشه.
میخوایم اینو در عمل ببینیم.

بار اولی که من داشتم این کد رو مینوشتم، توی تابع مموری‌دامپ() ، طول متغیر هگز رو یه آرایه‌ای از کرکترها [بخونید استرینگ] 2 بایتی گرفتم یعنی به جای
char hex[4];
نوشته بودم
char hex[2];
چرا؟ چون فکر میکردم که آرگومان
"%02hhX "
همیشه یه هگز با طول 2 برمیگردونه، اما اینطور نیست... اولا که یه اسپیس آخرش گذاشتیم یکی به طولش اضافه میشه... که من حواسم نبود حسابش کنم، دوما که... استرینگها در زیر باک زبان C و البته زیر باک تقریبا هر زبان دیگری، با بایت نیول/نال تموم میشن که کامپیوتر بفهمه استرینگ تموم شده...
قبلتر توی توضیح اینتیجر گفتیم که:
بایت 00000000 یا بایت صفر، توی جهان کامپیوتر به بایت خالی یه بایت نیول/نال شناخته میشه:
0 000 00 00000000 NUL � Null character
و کرکتر اسکی‌ش خالیه.
و البته توی توضیحات فیلم TENET (🥴) هم گفته بودیم که:
سی این روزا با استرینگ‌دات‌ایچ هم کامپایل میشه، ولی قدیما استرینگ نداشت،...در حقیقتC کلا استرینگ نداره... توی اون رشته‌ها، "آرایه‌ای از کرکترها" هستن... و خود کرکترها یه بایت هستن (با انکدینگ اسکی)
پس زیر باک کامپایلر رشته‌ها، فقط آرایه ای از بایتها هستن:)
نکته: برای همینه که توی سی وقتی میخوان یه بایت دیتا ذخیر کنن از نوع داده char استفاده میکنن... چون یه بایته:3
از 0 تا 255 ...
عجیبه که اونجا اینارو درس دادیم ولی خب😬

نهایتا این آرایه 2عنصری ما (2 بایتی) اورفلو میکنه به 4 عنصر (4 بایت)
یعنی بخاطر بایت NULL هم یکی به مقدارش اضافه میشه و نهایتا میشه 4 بایت، ما براش 2 بایت تخصیص داده بودیم، اروری اتفاق نمیفته (چون زبان دست شمارو باز میذاره) و بافر اورفلو صورت میگیره.
2 بایت اضافه تر نوشته میشن توی رم روی یه چیزایی که نباید نوشته بشن...
و توی کامپایلر و سیستم من، برنامه یکهو میفته روی یه حلقه بینهایت!
ممکنه توی سیستم شما اینطور نشه، یا اتفاق عجیبتری بیفته، اما اینطوری که gcc داره کامپایل میکنه بایتهارو پشت هم ذخیره میکنه و من هنوز تست نکرده میتونم حدس بزنم چه اتفاق عجیبی میفته، مقدار i شمارنده حلقه خط بعدی باشه تغییر میکنه و احتمالا شرط هیچوقت False نمیشه و حلقه به اتمام نمیرسه!!!
بریم ببینیم*-*
5👍2
Forwarded from Golem Course
زمانی که در حال توسعه یک محصول هستید و ابعاد آن از یک حد خاصی بیشتر می‌شود، نیاز به استراتژی برای ایجاد شاخه در گیت پیدا می‌کنید. استراتژی‌های متنوعی مانند:
gitflow
github flow
gitlab flow
trunk-based development
برای مدیریت شاخه‌ها وجود دارد. من یک ویدیو درباره مدل gitflow ضبط کرده‌ام که می‌توانید آن را از طریق این لینک در کانال یوتیوب من تماشا کنید.

@golemcourse
👍3