Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
733 - Telegram Web
Telegram Web
هر چی کلمه سفته توش باشه من بهش حساس میشم.
دلیلش رو میخوای بدونی اینو بخون (اتفاقی که برای خودم افتاده):

https://www.tgoop.com/djangolearn_ir/96
😁16👍4
جنگولرن
بالاخره بریم برای مطالعه کتاب Fluent Python شاید با این کتاب یکم پایتون یاد بگیریم اگه نکته خاصی وجود داشت. توی کامنت های همین پست قرار میدم.
کتاب Fluent Python
کانال @pyHints آموزش با این کتاب رو شروع کرده
✔️فقط سوالات رو پاسخ میده. لذا خودتون کتاب رو بخونید. و توی این جلسات آنلاین ابهامی اگه دارید بپرسید.

لینک قسمت صفر:

https://youtu.be/Jc5TrKIxybQ
👍5
جنگولرن
رشد ارگانیک کانال جنگولرن امیدوارم که مطالب کانال برای دوستان مفید باشه 😊 البته گاهی اوقات پیش اومده که پستی رو فوروارد میکنم برای گروه django2
ادامه رشد ارگانیک کانال جنگولرن - 3K

ان شاالله یکم سرم خلوت بشه مطالب تخصصی بیشتری در مورد جنگو پست می کنم.
👏155🔥3👍1👎1
Forwarded from Python BackendHub (Mani)
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید.

اول بذارین توضیح بدم observation یعنی چی. ما توی devops دو آپریشن داریم که شبیه همن و گاها باهم اشتباه گرفته میشن. اولیش مانتورینگه. مانیتورینگ به پروسه ای میگن که دیتا کالکت میشه از سرویسی, و یک ریپورت از سلامت سرویس بر اساس metric های مشخصی که برای سلامت سیستم رو نشون میدن و کالکت شدن ساخته میشه. یعنی چی؟ مثلا تعداد ریسپانس های 5xx در ۲۴ ساعت گذشته. یکی از شناخته شده ترین ابزار برای اینکار prometheus هست. observability به پروسه ای میگن که رویکرد تحقیقاتی داره. یعنی دنبال این نیست که بگه چقدر ریسپانس 5xx وجود داره. دنبال دلیل وجود این ریسپانس هاست. چرا الان این درخواست تو پروداکشن ارور ۵۰۰ میده؟ خوندن کل لاگ سرویس قدیمی ترین و ابتدایی ترین راهکار بود.

وقتی بک اند پیچیده تر شد, دیگه خوندن لاگ واقعا کارساز نبود. شما فکر کنید در لحظه ۱۰۰ درخواست داره میاد براتون. چطور میخواین لاگ هارو بخونید؟ تو قدم بعدی لاگ های هر درخواست رو جدا کردن. ولی بازم کار ساز نبود تو دنیای distributed system. چون مثلا یک سرویس ۱ با سرویس ۲ داشت حرف میزد. ورودی که میداد بهش درست نبود. سرویس ۱ صرفا یک exception میگرفت که سرویس ۲ استتوس ۵۰۰ داده. و این کافی نبود برای اینکه متوجه شیم چه اتفاقی میفته.

سولوشن های زیادی اومدن تو مارکت. از قبیل sentry که شاید اسمشو شنیده باشین. یا datadog و لوکی و ... . اینقدر این سولوشن ها زیاد شدن و هر کدوم ساز خودشون رو میزدن. نمیشد راحت از این سولوشن سوییچ کرد به اون یکی. نمیشد مزایا دو سولوشن رو همزمان داشت. و learning curve سختی داشت اگه میخواستین سوییچ کنید از یکی به یکی دیگه.

اینجا بود که CNCF (Cloud native compute foundation) یک پروژه جدید رو استارت زد. همون فاندیشنی که کوبر و prometheus و خیلی ابزار های تحت کلاد رو ساخته. اومد یک پروتکلی ساخت به اسم opentelemetry.
یعنی چی پروتکل؟ یعنی گفت sentry جان من برام مهم نیست شما لاگ رو چطور ذخیره میکنی یا پردازش میکنی اینترنالی. شما باید span داشته باشی. metric داشته باشی. و trace. و دقیقا تعریف کرد که اینا چین. یعنی اومد گفت اینترفیس خارجی یک سیستم observability چطور باید باشه؟ چون در نهایت همه این سیستما شبیه هم بودن. و حالا چون همشون داشتن از یک پروتکل خاصی پیروی میکردن شما میتونستی راحت از سولوشن یک سوییچ کنی به سولوشن دو. مثلا شاید مثالشو دیده باشین که تو سیستم فایل استوریج بعضی استوریجا s3 compatible هستن. اینم دقیقا شبیه همونه.

استک observation به دو قسمت تقسیم میشه. یکی میشه exporter و یکی میشه داشبورد. exporter معمولا یک لایبریه که شما نصب میکنی. و باهاش اون دیتایی که میخوای export میکنی. و میگی دیتا رو کجا بفرسته.(یک وقتام برعکسه, سرور داره دیتا رو میگیره). قسمت دوم میشه اینترنال اون استک. مثلا دیتایی که فرستاده میشه تو چه دیتابیسی ذخیره میشه؟ چطوری پردازش میشه؟ چی به شما نمایش داده میشه؟من بهش میگم داشبورد.

خوده opentelemetry داشبورد خاصی نداره. صرفا یک سری exporter تو زبون های مختلف داره که میتونید تو گیتهابش ببینید. مثلا برای fastapi و جنگو لایبری داره. ولی پیاده سازی و داشبوردی نداره برای نشون دادن این اطلاعات. چون همونطور که گفتم در نهایت فقط یک پروتکل و specification هست. از طرفی سولوشن های داشبورد زیاده.یک سرچ کنید میرسید بهش. مثلا من خودم signoz استفاده میکنم.

خب همه اینارو گفتم. حالا نقش logfire این وسط چیه؟ logfire همون لایبری های اکسپورتر opentelemetry رو اینترفیسشو بهتر کرده. و با pydantic هم اینتگریتشون کرده. و یکم utilty اضافه کرده. این قسمت exporter اش هست که اوپن سورسه.
یک قسمت داشبورد هم داره که هنوز اوپن سورس نشده. و مشخص نیست که بشه یا نه. ولی فعلا رایگانه.


اینجا قشنگ صفر تا صد توضیح داده. بعد توضیح های من حالا خیلی بهتر متوجه میشین.

@PyBackendHub
👍2
Python BackendHub
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید. اول بذارین توضیح بدم observation یعنی چی. ما…
این پست شاید به جنگو ارتباط مستقیمی نداشته باشه و نصفه نیمه فورواردش کردم

✔️اما با خوندنش با بعضی چالش هایی که ممکنه در آینده باهاش مواجه بشید آشنا میشید

✔️برنامه نویسی فقط کد زدن نیست🤓
👍9
بنظرم دانش تو زمینه بک اند به ۳ قسمت تقسیم میشه، که خیلی مهمه سه تاشو داشته باشیم.

مثلا فکر کنید میخواین یک rest api بنویسید به همراه تست.

قسمت اول بلد بودن فریم ورکی برای اینکاره. مثل پای تست و فست. ولی بلد بودن اینا کافی نیست فقط

قسمت دوم، فلسفه پشت اون موضوعه. که دونستنش خیلی ضروریه. مثلا تو بحث api نویسی کی باید یک اندپوینت post باشه کی put کی patch و .. . یک api چطور باید باشه. Rest api چی داره که بهش میگن restful. و …. یا مثلا برای تست نویسی چی باید تست شه. چقد باید تست نوشته شه. چی باید ماک شه. چی نباید ماک شه.

و قسمت سوم اینکه بدونیم پشت صحنه اینا چطور کار میکنن. قسمت سوم همیشه الزامی نیست چون انتهایی نداره ولی اگه به اندازه کافی قسمت سوم رو نداشته باشین، خیلی وابسته میشین به اون فریم ورکی که دارین ازش استفاده میکنید.
برداشت اشتباه نکنید از حرفم، من نگفتم فقط باید نوشتن api و تست بلد باشین. گفتم سه سطح یادگیری برای هرچیزی هست.
تو یک سطح شما یوزر‌ خوبی هستی با اتکا به یک ابزار خاصی.
تو یک سطح شما میتونی یوزر‌خوبی باشی حتی بدون اتکا به اون ابزار خاص. و میتونی درک کنی که چطوری کار میکنه.
و تو یک سطح شما نه تنها یوزر‌خوبی هستی، بلکه تصمیم گیرنده خوبی هستی چون چرا ها رو درک میکنی.

از کانال @PyBackendHub
8👍4
Forwarded from CodeCrafters (Mojtaba)
رویه ذخیره شده Stored Procedure ناجی برنامه های تحت فشار:
در دنیای برنامه‌نویسی(منظور ما سمت Back-End است Front-End 🥸)، بهینه‌سازی و عملکرد روان برنامه‌ها از اهمیت بالایی برخوردار است. در این میان، پایگاه‌های داده نقش حیاتی در ذخیره‌سازی و بازیابی اطلاعات ایفا می‌کنند.

رویه ذخیره‌شده یا Stored Procedure چیست ؟
به صورت خلاصه Stored Procedure یک مجموعه از دستورات SQL است که کار خاصی را انجام میدهد و ما برای آن یک نام مرتبط میگذاریم و در هر جایی که نیاز داشته باشیم آن را فراخوانی میکنیم (اگر پارامتر خاصی نیاز داشته باشد هم میتوانیم به آن پاس بدهیم )

به صورت معمول برنامه نویس ها از ORM هایی مخصوص زبان برنامه نویسی که با آن کار میکنند برای ایجاد کوئری بر روی دیتابیس استفاده میکنند ولی ORM (منظورم هر ORM است حتی اگر معجزه برنامه نویسی قرن باشد!!!) چندین ایراد مهم و اساسی دارند که در ادامه به آن ها اشاره میشود:

۱. شما باید هزینه تبدیل کد هایتان را به SQL پرداخت کنید(با کاهش قدرت برنامه) در نهایت پایگاه داده شما با SQL کار میکند نه زبان برنامه نویسی شما !!!

۲.وقتی از ORM ها استفاده میکنید اگر نیاز به کوئری پیچیده و یا خیلی خاصی داشته باشید قدرت زیادی برای مدیریت این چالش با استفاده از ORM نخواهید داشت.

۳. معمولا برای فراخوانی یک مقدار از پایگاه داده به چندین روش مختلف میتوان این کار را انجام داد که یه سری از این روش ها دارای پرفومنس خوب و بعضی از روش ها دارای پرفومنس وحشتناک هستند (این مورد مربوط به افزایش پرفومنس در SQL است که توضیح طولانی دارد که در اینجا جای نمیگیرد ولی برای آشنایی بیشتر ساده ترین مورد را اشاره میکنم :
تصور کنید جدولی به نام کارکنان و با ۱۵ ردیف داریم و میخواهید مقدار نام از جدول کارکنان خود را بخوانید با استفاده از ORM خود در نهایت به این کوئری خواهید رسید :
select * from employee;

در حالی که شما فقط به نام کارکنان در این جدول نیاز دارید و این جدول دارای ۱۵ ردیف است که فراخوانی ۱۴ ردیف دیگر بیهوده و هزینه برخواهد بود
و این کوئری نیاز شما را برطرف میکرد :


select name from employee;

که دارای پرفومنس بهتری خواهد بود
{شاید بتوانید جلوی استفاده از * بگیرید و ORM را مجبور به فرخوانی تنها name کنید ولی در موارد دیگر همچنین ساده هم نخواهد بود }

) وقتی از ORM خود استفاده میکنید شما کنترل زیادی برای اینکه از چه روشی استفاده کند نخواهید داشت و صرفا کد های ORM خود را خواهید دید

۴. گاها پیش میآید که شما برای فراخوانی مقدار در پایگاه داده با استفاده از ORM کوئری میسازید ولی ORM کوئری عجیبی تولید میکند که فشار فوق العاده ای بر روی برنامه شما وارد میکند.(برای جلوگیری این مورد اگر اصرار به استفاده از ORM دارید باید به موارد پیشرفته ORM خود مراجعه کنید که نیاز به تمرین و زمان است)

از معایب استفاده از Stored Procedure میتوان به این موارد اشاره کرد:


۱. نیاز به دانش خوبی از SQL دارد

۲. در صورت تغییر پایگاه داده نیاز به بازنویسی خواهند داشت

۳.نوشتن برنامه با سرعت خیلی پایین تری پیش خواهد رفت.

مقایسه Stored Procedure با ORM:


در واقع ORMها (Object-Relational Mapping) ابزاری برای نگاشت اشیاء برنامه به ساختارهای پایگاه داده هستند. ORMها به طور خودکار وظایف مربوط به ترجمه کوئری‌ها از زبان برنامه‌نویسی به زبان SQL را انجام می‌دهند.

در حالی که ORMها مزایایی از جمله سادگی و سهولت استفاده را ارائه می‌دهند، اما در مقایسه با Stored Procedureها، معایبی نیز دارند. ORMها می‌توانند به دلیل ترجمه‌های اضافی، باعث افت عملکرد شوند. همچنین، ORMها در مدیریت کوئری‌های پیچیده و خاص، انعطاف‌پذیری Stored Procedureها را ندارند.

در نتیجه :اگر برنامه شما دارای فشار زیادی بر روی پایگاه داده است و همین طور برنامه شما دارای بار زیادی است میتوانید برای مدیریت آن از Stored Procedure ها در پایگاه داده تان استفاده کنید
یا اینکه میتوانید استفاده نکنید و به زیبایی کد های خود با استفاده از ORM به خود افتخار کنید و بگذارید پایگاه داده تحت فشار کد های SQL عجیب شما تبدیل به نفت شود
این مورد کاملا بستگی به برنامه و نیاز شما بستگی دارد.

#Database #General
@Code_Crafters
😁4👍3
CodeCrafters
رویه ذخیره شده Stored Procedure ناجی برنامه های تحت فشار: در دنیای برنامه‌نویسی(منظور ما سمت Back-End است Front-End 🥸)، بهینه‌سازی و عملکرد روان برنامه‌ها از اهمیت بالایی برخوردار است. در این میان، پایگاه‌های داده نقش حیاتی در ذخیره‌سازی و بازیابی اطلاعات…
من هر شرکتی که بودم اینقدر توی استفاده از SP ها شورش را در آوردند که دیگه همه کارهای اصلی رو با SP پیاده سازی می کردند.

✔️متاسفانه اکثر کدهای SQL ایی که بکند کارها نوشتن بسیار کثیف و غیربهینه بودن. هر چند همون غیربهینه بودن به مراتب از نتیجه ORM بهتر بوده

✔️لذا توصیه میکنم تا جایی که امکان داره از SP استفاده نکنید تا دنیا و آخرت خوبی داشته باشید.
👍6😁1
معرفی پکیج django-silk برای پروفایلینگ

پروفایلینگ چیه؟
در طی طراحی یک برنامه همیشه این سوال برامون پیش میاد که کد و کوئری ما بهینه هست یا نه ،چقدر منابع مصرف میکنه(حافظه ، cpu ، i/o و ...) ،از لحاظ تایمینگ چطور ، و یا حتی تعداد کوئری‌هامون و ... به این موضوع شکل گرفته در ذهن ما در دنیای مهندسی نرم افزار پروفایلینگ میگن (تشکر از codecrafters)

لینک گیت هاب django-silk:
https://github.com/jazzband/django-silk
👍13🔥3
به دنبال ساختار باشید و نه چارچوب

چند روز پیش یه مربی کودک یه حرف خیلی مهمی زد با این مفهوم: «ما اینجا برای بچه ها ساختار تعیین می کنیم نه چارچوب، چارچوب یعنی حد و مرز!»
این جمله رو باید قاب کرد و زد رو دیوار، احتمالا در ابعاد خیلی زیادی از زندگی مهم باشه. در مهندسی نرم افزار و توسعه محصول هم خیلی حرف مهمیه.
بیشتر اوقات ما دنبال چارچوب هستیم در مهندسی نرم افزار، به همین دلیل وقتی خودمون رو به یه چارچوب خاص محدود می کنیم با چالش های زیادی روبرو میشیم. در حالیکه بهتره ما برای توسعه محصول ساختار داشته باشیم و طبق اصول ساختاری کار رو پیش ببریم، اینطوری چالش مون کمتر میشه.
اجازه بدید برداشت خودم از چارچوب و ساختار رو کمی بیشتر باز کنم. ساختار میشه مجموعه از قواعد رفتاری که باید سعی کنیم در توسعه محصول بهشون پایبند باشیم، در مقابل، چارچوب میشه تعیین کردن یه سری حد و مرز مشخص به شیوه ای سختگیرانه.
مثلا اگه بخوام برای توسعه یک سرویس ساختار تعیین کنم احتمالا میگم: این سرویس باید توان پاسخگویی بالایی داشته باشه، در مقابل خطا مقاوم باشه، قابلیت مقیاس پذیری داشته باشه، یک قرارداد ساده و شفاف به کلاینت ها ارائه بده و مواردی از این دست.
اما اگه بخوام چارچوب برای سرویس تعیین کنم احتمالا میگم: ما باید از ساختار کد مبتنی بر clean code یا ddd در فلان repository که خودمون یا دیگران اونو نوشتن پیروی کنیم، باید همه ورودی هارو تو پوشه port قرار بدیم، باید همه مدل هامون تو پوشه models باشه، باید از فلان روش ci/cd استفاده کنیم.

در توسعه محصول تعیین کردن حد و مرز و چارچوب میتونه خوب باشه، اما بشرطی که تعیین این حد و مرز تنها زمان پیاده سازی سرویس باشه و متعهد بشیم که کورکورانه و سختگیرانه نخوایم این چارچوب رو به همه سرویس ها و محصولات تحمیل کنیم.

خیلی از practiceهایی که معروف شدند مثل clean code و ddd و tdd و غیره هم از نظر من بیشتر به دنبال این هستند که به شما کمک کنند که برای کارتون ساختار تعیین کنید. در حالیکه اشتباهی که زیاد رخ میده اینه که ما با خوندن این مطالب احتمالا بیشتر به سمت درآوردن چارچوب میریم... همه ش به دنبال این هستیم که مثلا یه boilerplate داشته باشیم که از clean code پیروی کنه و همون رو همه جا استفاده کنیم.

من گاها به دوستان متذکر میشم که خوندن این الگوها و منابع خیلی خوبه، به شرطی که شما سعی کنی جان کلام و دغدغه اصلی رو متوجه بشی، نه اینکه سعی کنی به دنبال یک راه حل فست فودی و چارچوب مشخص و معین باشی که کورکورانه همه جا ازش استفاده کنی.

شما وقتی برای کارت ساختار داشته باشی میتونی انعطاف پذیر باشی و بسته به نیازت چارچوب تعیین کنی، اما اگه بخوای یه چارچوب معین رو همه جا رعایت کنی احتمالا یه جاهایی اصول ساختاری خودت رو مجبور میشی زیر پا بذاری چون هیچ چارچوب واحدی وجود نداره که برای همه نیازها مناسب باشه.
👍8
یه بهانه این سوال در گروه جنگو:

سلام کسی میدونه کاربرد این gettext_lazy که تو اکثر base مدل‌های خود جنگو استفاده شده دقیقا چیه ؟ خودم سعی کردم درکش کنم و یه سرچی زدم نوشته بودن اول اینکه اجباری نیست استفادش بعدم برای افزایش پرفورمنس translation رشته‌هارو رو به تعویق میندازه تو view و template های برنامه.
اوکی ولی دقیقا چی به چی translate میشه ؟

from django.db import models
from django.utils.translation import gettext_lazy as _

class ClassName(models.Model):
   
field = models.CharField(
_("fieldname"),
max_length=100,
help_text=_("help text")
)


یادش بخیر
اوایل یک هفته ای درگیر این بودم که چرا در CBVs جنگو باید از reverse_Lazy استفاده کنیم
همون ایام (حدودا 4 سال پیش) نتیجه بررسی هام رو توی ویرگول نوشتم.
Python class attributes are evaluated on declaration

لینک
👍9🔥1
سوال جنگویی
از کانال @TorhamDevCH
جوابش هم توی کانالش ببینید 😉
اگه یک مدل داشته باشیم به شکل زیر:
from django.db import models


class Fruit(models.Model):
name = models.CharField(max_length=100, primary_key=True)

بعد بیاییم این کد رو اجرا کنیم:
>>> fruit = Fruit.objects.create(name="Apple")
>>> fruit.name = "Pear"
>>> fruit.save()

اومدیم یک آبجکت ساختیم و ذخیره اش کردیم. بعد فیلم name که پرایمری‌کی بود رو آپدیت کردیم و ذخیرش کردیم.

حالا سوال اینه، در این لحظه چه اتفاقی میوفته؟ آیا ارور میخوریم یا ابجکت آپدیت میشه یا اتفاق دیگه ای میوفته؟
👍51
داخل جنگو ۳ نوع Model inheritance داریم. یعنی مدل‌های دیتابیس میتونن به سه شکل از هم دیگه ارث بری کنند.
۱. Abstract base classes
۲. Multi-table inheritance
۳. Proxy models
که فعلا با دوتا اول کار ندارم و احتمالا بدونید چی هستند. ولی سومی همیشه برای من گنگ بود که چی هست و چیکار میکنه. ولی داشتم داکیومنت جنگو میخوندم که رسیدم به توضیح پروکسی‌مدل و تمام، بهترین توضیحی بود که خوندم و تا آخر یادم خواهد ماند :)
if you only want to modify the Python-level behavior of a model, without changing the models fields in any way, you can use Proxy models.
اگر فقط و فقط میخوایید تو لول فانکشنالیتی مدل تغییر ایجاد کنید. مثلا فانکش foobar میخایید یک تغییر بدید برای نسخه جدید ولی میخوایید نسخه قدیمی باقی بمونه میایید از پروکسی استفاده میکنید.
حالا شما یک مدل دارید دقیقا با همون مشخصات ولی فانکشنالیتی فانکشن foobar فرق میکنه.
تو مثال خود داکیومنت یک فانکشنالیتی اضافه کرده:

from django.db import models


class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)


class MyPerson(Person):
class Meta:
proxy = True

def do_something(self):
# ...
pass


@TorhamDevCH
👍8🔥2
Forwarded from Microfrontend.ir
پیاده سازی و برنامه نویسی یک مینی ترلو برای وب و موبایل

روز اول،آموزش پروژه محور، مینی ترلو، ایجاد داکر فایل برای پایتون و جنگو
Backend : Django-PostgreSQL-Redis-Docker
Frontend: Flutter, React, Angular


channel: @microfrontend_ir

Link: https://youtu.be/hw4RBA_ygWM

playlist: https://youtube.com/playlist?list=PLJ9zDGwhhsBytE9r6ZtsIwumc1Xu2lQWW

github: https://github.com/hemanhp/minitrello-services
👍2
📣تبلیغ رایگان

کانال آموزشی:

اگر به امنیت علاقه داری
ولی نمیدونی از کجا شروع کنی
منابع خوب‌ پیدا نمیکنی

ما در Security_Hint منتظرتیم

@Sec_Hint
1👍1👏1
Forwarded from ITShield
دوره های🔥 رایگانی 🔥که در حال برگزاریه و تو کانال @itshield داره قرار میگیره:

⭐️دوره  اسمبلی (به هدف مقدمه برای مهندسی معکوس و تحلیل بدافزار)
https://www.tgoop.com/itshieldassembly
⭐️دوره رایگان پایتون برای نفوذگر سطح مقدمات
https://www.tgoop.com/itshield/1452
⭐️دوره  پایتون برای تست نفوذ پیشرفته (دوره مقدماتیش تموم شده که تو همین کانال  @itshield قرار گرفته)
https://www.tgoop.com/PythonForPentester
⭐️دوره برنامه نویسی سی پلاس پلاس (به هدف ابزار امنیتی نوشتن)
https://www.tgoop.com/CPlusPlus4Pentester
⭐️ دوره جرم شناسی ویندوز (For 500)
https://www.tgoop.com/for500
⭐️ دوره اتوماسیون صنعتی
https://www.tgoop.com/ICS_ITShield

😎پکیج رایگان ccna
https://www.tgoop.com/itshield/1322
🤓پکیج رایگان MCSE
https://www.tgoop.com/itshield/1326
🤓دوره رایگان ISMS
#isms
🥸دوره رایگان مقدمات SOC
#soc
🥸مینی دوره مهندسی اجتماعی
#مهندسی_اجتماعی
🥸 دوره جمع آوری اطلاعات برای تست نفوذ وب
#web_recon
یه سری دوره دیگه هم هست  که باید سرچ بزنین پیدا کنین
نکته هزینه شرکت در این دوره ها اینه که روی لینک زیر کلیک کنین و فاتحه برای عزیزان من بفرستین :
https://fatehe-online.ir/g/13486
🤓یه سری دوره و مباحث آموزشی رایگان دیگه هم هست که با سرچ و ... تو کانال بدست میاد
جنگولرن
بالاخره بریم برای مطالعه کتاب Fluent Python شاید با این کتاب یکم پایتون یاد بگیریم اگه نکته خاصی وجود داشت. توی کامنت های همین پست قرار میدم.
Media is too big
VIEW IN TELEGRAM
آشنایی با مجیک متد repr

آموزش از روی کتاب Fluent Python
توسط محمد عباسی

✔️توی این قسمت نکات خوبی در مورد متد repr گفته میشه.
✔️توی اینترنت تفاوت str و repr رو سرچ می کنیم تفاوت هایی رو اشاره میکنن که زیاد مهم نیست.
✔️اما این ویدئو به صورت کاربردی میگه repr چه کاری میتونه بکنه

آدرس کانالش @pyHints
🔥8👍21
Forwarded from علی بیگدلی
وبینار بررسی مسائل سئو برای توسعه دهنده و آشنایی با ابزار های مهم

در این وبینار قرار است به بررسی مسائل پایه سئو و نحوه استفاده از آن به صورت عملی بپردازیم و از تجربیات مهندس پویا قربانخانی که SEO Master در شرکت Smart-PI هستش استفاده کنیم تا بتونیم کیفیت کار فعلی رو بیشتر ارتقا بدیم.

از جمله مواردی که بررسی خواهد شد:
- سئو مستر کی هستش و چه وظایفی داره؟
- نقش سئو در وبسایت چیه؟
- خوب و بد در سئو به چه چیزی اتلاق میشه
- ابزار های مفید سئو شامل چه مواردی میشه
- چطور از هوش مصنوعی در سئو میشه استفاده کرد

زمان برگزاری :
پنجشنبه 27 اردیبهشت - ساعت 18:00

هزینه:
رایگان 😁

لینک ثبت نام:

https://thealibigdeli.ir/event/
👍1
سیستم SSO (single sign-on) چیست؟

از کانال @code_crafters با کمی تغییرات

✔️یک سیستم احراز هویته که فقط یک صفحه لاگین برای ورود برنامه‌های مختلف ارائه میکنه

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

✔️مزایای استفاده از sso

۱-پسورد سخت:
کاربران تنها از یک پسورد استفاده میکنند و sso امکان ساخت و به یاد داشتن پسورد سخت رو فراهم میکنه چون کاربران تنها از یک پسورد استفاده میکنند و پسورد سخت از حملات (brute force attack) جلوگیری میکند، حدس زدن یک پسورد سخت کار رو غیر ممکن میکند

۲-عدم تکرار پسورد:
وقتی کاربران برای هر سرویس نیاز به پسورد داشته باشند معمولا از یک پسورد تکراری در تمامی سرویس‌ها استفاده میکنند(یک رمز یکسان برای تمامی سرویس‌ها) اگر داده‌های دیتابیس یک سرویس لو بره با همون پسورد کاربر میتوانن به همه سرویس‌های دیگه دسترسی پیدا کنند، sso با حذف چندین صفحه ورود به یک صفحه این مورد رو رفع میکند

۳-اعمال و اجرا کردن سیاست‌های رمز عبور:
با استفاده از سیستم sso متخصصان IT میتوانند به راحتی سیاست‌های رمز عبور خود را اعما کنند برای مثال: بجای بازنشانی رمز عبور دوره‌ای در سرویس‌های مختلف با استفاده از sso کاربر تنها در یک سرویس بطور دوره‌ای رمز عبور خود را بازنشانی میکند

۴-احراز هویت‌های چندعامله(multi-factore authentication):
یا به اختصار MFA رجوع میکنه به بیش از یک عامل هویت سنجی، برای مثال علاوه بر نام کاربری و رمز عبور کاربر ممکن است مجبور به استفاده از احرازهویت سخت افزاری هم گردد، این قطعه سخت افزاری در شناسایی کاربر بسیار مهم است، MFA بسیار امن تر از اتکا به رمز عبور می‌باشد، sso امکان استفاده از MFA رو در یک نقطه واحد بجای استفاده از آن در چندین نقطه که ممکن است غیرقابل پیاده سازی باشد فراهم میکند

۵-مدیریت اعتبار داخلی بجای حافظه خارجی:
معمولا رمزعبور کاربران بصورت مدیریت نشده توسط برنامه‌ها و سرویس‌های که ممکن است از بهترین شیوه‌های امنیتی پیروی کنند یا نکنند ذخیره میشوند، با sso آنها بصورت داخلی در محیطی ذخیره میشوند که تیم IT کنترل بیشتری روی آن دارد

۶-یک نقطه برای ورود رمز عبور


۷-اتلاف زمان کمتر جهت بازیابی رمز عبور
👍51
هر وقت صحبت از شیء گرایی و ارث بری میشه پای Mixin هم میاد وسط. اما دقیقا چیه؟ Mixin توی پایتون یک الگو هستش و کدهایی که از این الگو بهره می‌برند کلمه‌ی کلیدی خاصی یا چیز اضافه‌تری ندارند. فرض کنین ما می‌خواهیم یک متد جدید به یک کلاس اضافه کنیم تا کارایی یا Functionality اون رو زیاد کنیم. اینجا میشه از Mixin استفاده کرد.
مثلا کلاس‌های زیر رو در نظر بگیرید.
class Vehicle:
    pass

class Car(Vehicle):
    pass

class Van(Vehicle):
    pass

class Motorcycle(Vehicle):
    pass

حالا نیاز داریم که متد play music رو هم به این کلاس ها اضافه کنیم، دوتا راه داریم. اولیش اینه که:
class Vehicle:
    pass

class Car(Vehicle):

    def play_music(self):
        print("play_music")

class Van(Vehicle):

    def play_music(self):
        print("play_music")
   
class Motorcycle(Vehicle):
    pass

اما یک ایرادی وجود داره. اینجا خودمون رو تکرار کردیم. درواقع اومدیم دوبار یک تکه کد رو تکرار کردیم و این از نظر کدینگ وجه خوبی نداره. پس این راه حل ما نیست.
روش دوم اینه بیایم به بیس کلاسمون یعنی Vehicle یک متد تحت عنوان play_music اضافه کنیم.

class Vehicle:
    def play_music(self):
        print("play_music")

class Car(Vehicle):
    pass

class Van(Vehicle):
    pass

class Motorcycle(Vehicle):
    pass

اما در این صورت کلاس موتورسیکلت هم دارای رفتار پخش موزیک خواهد شد و این اشتباه است. اینجا است که Mixin خودش رو نشون می‌ده. به کد زیر توجه کنید.
class Vehicle:
    pass

class PlayMusicMixin:
    def play_music(self):
        print("play_music")

class Car(Vehicle, PlayMusicMixin):
    pass

class Van(Vehicle, PlayMusicMixin):
    pass

class Motorcycle(Vehicle):
    pass

درواقع از کلاس PlayMusicMixin قرار نیست هیچ شیٔ ای ساخته شود و صرفا مهم این است که کارایی کلاس‌های خاصی را افزایش شود.
پ.ن: اون کلمه‌ی Mixin انتهای اسم کلاس هم قراردادیه، بهتره نوشته بشه ولی اجبار نداره.
👍22🔥2
2025/07/12 20:01:39
Back to Top
HTML Embed Code: