جنگولرن
3.82K subscribers
287 photos
74 videos
31 files
557 links
آموزش Django و بستگان
Download Telegram
جنگولرن
در جنگو اگه SECRET_KEY لو بره بد میشه؟ تصویر 1.1 مقدار secret_key رو داریم (لو رفته مثلا) تصویر 1.2 فرض که برنامه نویس مقدار SESSION_ENGINE رو روی signed_cookies گذاشته باشه. تصویر 2 فرض می کنیم برنامه نویس دیتایی رو توی سشن ذخیره میکنه. جنگو با توجه…
⚠️ نکته مهم:
توی مستندات جنگو صراحتا گفته:
The session data is signed but not encrypted
پس در واقع جنگو با signed cookie از تغییر غیرمجاز محتوا مطلع میشه. محتوای کوکی ساخته شده base64 شده. و اگه decode کنید محتوا رو میبینید. (توی تصویر مشخصه)

یه جورایی مثل JWT که هر تغییری توی محتوا یا امضای JWT باعث تغییر امضا و یا اعتبارسنجی ناموفق توکن می‌شه. و سرور متوجه می‌شه که توکن تغییر کرده، پس نامعتبرش میکنه.

پس چطور سوء استفاده میکنن؟
خب وقتی secrect_key رو دارن میتونن هر تغییری خواستن اعمال کنن و کوکی signed و معتبر بسازن و... 😨
👍5
از Linkedin آقای arash hosseini #مهندسی_سیستم
لینک در نظرات پست

مهندسی سیستم بخش هشتم : ادامه پذیرش سیستم : کنترل واقعیت : تمامی موارد بیان شده خوب بنظر می رسند ، اما چگونه این موارد را در دنیای واقعی اجرا کنیم ؟ " به طور معمول سازمان ها بسته‌های تدارکات و مدل های هزینه منابع انسانی را برای رسیدن به تقریبی از اندازه هزینه سیستم، توسعه داده اند. در نتیجه خریداران سیستم درخواست یک نقطه راه حل برای یک ظرفیت مشخص را دارند. اگر چه برآورد حاصل از مدل هزینه معمولا دقیق است، همواره اتفاقات غیر منتظره در پیش رو می باشد. اگر هزینه پیشنهادی، برآورد اولیه را که بودجه بندی شده است افزایش دهد، خریدار و کاربر در مقابل یک رقابت مجدد قرار می گیرند. معمولا مذاکرات به یک قرارداد قیمت که مقرون به صرفه با کمی امکانات کمتر باشد، می رسد. چیزی که خریدار و کاربر سیستم بدنبال شنیده شدن آن هستند این جمله هست : " پیشنهادی به ما بدهید که طیف و ترکیبی از توانمندی و سطح کاربرد – کارایی سیستم/هزینه را تشریح کرده که قابل استفاده برای تدارک تعداد مشخصی از اهداف یا نیازمندی ها باشد " . در مفهوم، تمرکز این رویکرد بر مقرون به صرفه بودن است- که گفته می شود به چه میزان کارایی سیستم بر اساس یک واحد هزینه افزایش می یابد. رسمی تر اینکه هزینه به عنوان یک پارامتر مستقل به این مفهوم اضافه گردد. در نتیجه پیشنهادهای توسعه دهندگان سیستم ممکن است نیاز به گرافهای آنالیزی باشد که گزینه های کارکردی سیستم بر روی یک خط نمودار و هزینه بر روی محور دیگر ترسیم شده باشد. آیا مقرون به صرفه بودن و کارا بودن به راحتی بدست می آید ؟ خیر، در حقیقت اندازه گیری و تعیین کمیت هر دو در بسیاری از موارد بسیار دشوار است. پیاده سازی این جزئیات بسته به سازمان و برنامه آن می تواند بسیار متفاوت باشد. سازمان های نظامی متخصصینی در این زمینه برای پیروزی در عملیات های نظامی استخدام می کنند.اگر شما در برنامه ریزی برای کارایی سیستم و تمامی فاکتورهای موفقیت آن، پیروز نگردید، سازمان و اهداف ماموریت آن را در معرض ریسک قرارداده اید. ارزیابی و صحت سنجی سیستم : مفهوم پذیرش سیستم غالبا یک مفهوم انتزاعی است. و قابل ترجمه بر اساس نیاز هر فرد می باشد. مواردی که از سمت یک نفر پذیرش می شود برای کاربری دیگر غیر قابل پذیرش می باشد. بحث بر سر ابزارها، سازگاری و کارایی عملیاتی در نهایت تصمیم یک کاربر به اینکه سیستم قادر به نیازهای عملیاتی وی است را مشخص می نماید. درجه جذابیت کارکرد یک سیستم میزان درک کاربر را از اینکه سیستم درستی را تدارک دیده منتشر می کند. . ارزیابی سیستم سوال دیگری را مطرح می کند . اگر کاربران افق دیدی از آنچه را که می خواهند دارند، چگونه : · افق دید خود را چگونه به مشخصه هایی جهت تولید سیستم رویایی خود ترجمه می کنند ؟ · چگونه به این اطمینان خاطر می رسند که سیستم، محصول یا خدمت ارائه شده همان سیستم درست است ؟ · توانایی این مورد را داشته باشند تا در آینده نسخه های کپی جدیدی از سیستم خود داشته باشند ؟ اولین سوال نیاز به " مهندسی سیستم" دارد. سوال دوم نیاز به یکپارچگی در تحول "مهندسی سیستم" برای اطمینان از اینکه منبع نیازمندی ها خود را در طراحی سیستم، محصول یا خدمت ارائه شده آشکار نموده و سیستم ارائه شده بتواند جذابیت داشته باشد. سوال سوم نیاز به "مهندسی سیستم " برای تولید مستندات با کیفیت و فرآیندهای استاندارد جهت ایجاد کارگران دانش برای اطمینان از بازتولید بر اساس کارایی مشخص و ثابت دارد.
👍1
👏نذری دانشجویار به مناسب محرم
رایگان شدن بیش از 160 ساعت آموزش
لینک:
https://www.daneshjooyar.com/landing/moharram1402/
19🤮6👏2
مطلب قابل تاملی از کانال @lnxpylnxpy
اگه هنوز واسه خوندن دیتای json و تبدیلش به dict گوگل می‌کنید، ساختار دکوریتور wraps یا inner-function رو حفظ نیستید و گوگل می‌کنید، اگه می‌خواید واسه کلاستون setter و getter بنویسید ولی سرچ می‌کنید، اگه ساختار switch-case رو فراموش می‌کنید و سرچ می‌کنید، شما برنامه‌نویس هستید. :)

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

Google: exclude repr in python dataclass

اول از همه می‌دونی dataclass چیه. بعد میدونی این کانپست، یه سری از متدها اعم از init و repr رو خودش بصورت دیفالت پیاده‌سازی می‌کنه و سعی داری repr رو از پیاده‌سازی شدن exclude کنی. پس خیلی چیزا می‌دونی راجع بهش.. نه؟! قطعا تو خیلی سرتری نسبت به اون کسی که چهارتا متد حفظ کرده.

هیچ سیستمی با حفظیات توسعه پیدا نمی‌کنه و اینترنت هم تا ابد خواهد بود. (حداقل تا زمانی که ما داریم کار می‌کنیم)

اگه رفتید جایی اینترویو و حس کردید چنین تفکری اون پشت رواج داره، و سئوال‌های طرف یه حالت طعنه‌آمیزی داره، بنظرم محل رو ترک کنید. این افراد اول اینکه اصلا در زمینه Tech کار نکردن دوم اینکه مازوخیسمی‌ان. حس می‌کنن اگه کابل LAN پشت سیستمشون رو بکشن و آفلاین کد بزنن، قوی‌تر میشن.
👍12🤔1
Forwarded from ProgrammingSchool (Python)
قسمت هفتم: درست نویسی عملگرهای باینری

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

Binary operators are operators that have two operands. The addition operator is a binary operator. Some long lines may contain binary operators. In these cases, Donald Knuth suggests that breaking a long line into several short lines should be done before the operator.

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

In the past, the style form was such that a long line break was done after the operator. But the problem with this style is that the operators are scattered in different columns and it takes time to find their operands by eyes.

#آموزش_پایتون
#قراردادهای_پایتون

آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
Forwarded from ProgrammingSchool (Python)
قسمت هفتم: مثال مربوط به درست نویسی عملگرهای باینری

شکل بالا فرم قدیمی و جدید عملگر باینری جمع را نشان می‌دهد.

The figure above shows the old and new form of the binary addition operator.

#آموزش_پایتون
#قراردادهای_پایتون

آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
👍2
اگه تا حالا درست حسابی سمت PostgreSQL نرفتید. الان دیگه وقتشه. Hêmn توی کانال @microfrontend_ir داره شخم اش میزنه.

آموزش PostgreSQL

در اولین ویدیو و مقدمه پلی لیست آموزش PostgreSQL به بررسی تاریخچه و روند شکل گیری پستگرس پرداختیم. از پروژه مادر یعنی Ingres و سپس اضافه شدن امکانات object-relational از طریق پروژه Post-Ingres صحبت کردیم و چند اکستنشن مهم پستگرس یعنی PostGIS و Timescale صحبت کردیم.

Video: https://youtu.be/2f9RAkpQGj4


playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsByAI0AbbJ4oUTziNsaffKnq
〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
🔥5👍2
Forwarded from Python Hints
profiling
یکی از مهمترین و جذاب‌ترین مباحث هست که یک توسعه دهنده باید باهاش آشنا باشه (توی رزومه هم خیلی مهمه اونجایی که شما می‌گید من ۲۰٪ کدهای قبلی رو اپتیمایز کردم؛ شاید تو خیلی از شرکتهای ایران کیلویی باشه ولی شرکت‌های درست و حسابی باید گزارش profiling رو ارائه بدید)

ساده ترین قدم توی پروفایلینگ استفاده از پکیج timeit هست؛ توی دیتاساینس هم یکی از BuiltIn Magic های بسیار مهم IPython هست.

کجا بدرد می‌خوره؟
وقتی شما بین استفاده از دوتا روش مشکل دارید (ولی این ۲ تا کد معمولا بین ۱-۱۰ خط هست)
۲ تا پارامتر مهم داره؛
۱- کدی هست که میخواید سرعت اجراش رو تست کنید.
۲- تعداد تکرار یا اجرای اون کد هست (مثال بالا ۱۰۰) و چون زمانی که بر میگردونه با تعداد تکرار هست مقدارش رو تقسیم بر تعداد تکرار می‌کنیم تا میانگین زمان اجرای ۱ بار اون کد بدست بیاد (بر حسب ثانیه)

نکته :هیچوقت تعداد تکرار رو ۱ نذارید تا عدد دقیق‌تری بدست بیارید.

@PyHints

خروجی کد بالا بین خط ۲۱ تا ۲۴.
👍4
مطلبی قابل تامل از لینکدین Mohammadreza Ala
لینک و تصویر کتاب در کامنت

دیگه حتی نیرو جونیور هم سخت پیدا میشه؛

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

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

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

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

به عنوان پیشنهاد برای تقویت سافت اسکیل، کتاب زیر رو معرفی میکنم؛ هم کتاب صوتی و ترجمه فارسی و انگیلسی رایگان اش هم همه جا هست. و امیدوارم که کسی به خاطر سافت اسکیل ضعیف پوزیشنی رو از دست نده.
3
جنگولرن
👏نذری دانشجویار به مناسب محرم رایگان شدن بیش از 160 ساعت آموزش لینک: https://www.daneshjooyar.com/landing/moharram1402/
جانگو 😤
https://www.daneshjooyar.com/django-basic-learning/

هنوزم حال ندارم ویدئوی دمو رو تغییر بدم. توی دمو همش میگم جانگو 😡 خیلی رو مخه
من این دوره رو یکبار آپدیت کردم ولی دمو رو تغییر ندادم و هنوز میگه جانگو
اما امروز دیدم که از اول محرم تا الان حدودا 650 نفر دوره رو خریدن (رایگان)
چرا؟ 🧐
😁9
what SOLID stands for:
• S: Single responsibility principle
• O: Open/closed principle
• L: Liskov's substitution principle
• I: Interface segregation principle
• D: Dependency inversion principle
Forwarded from Barnamenevisi 🔊
داشتم دو تا مقاله فارس می خوندم درباره جنگو گفتم اینجا بزارم شما هم استفاده کنید خیلی خوبه
درباره best practices جنگو هستش و نکاتی که اگر در جنگو رعایت کنید خروجی کارتون خیلی خوب و بهینه میشه


https://vrgl.ir/ebo5x

https://vrgl.ir/PxEe3


عضو کانال و گروه تلگرام ما بشید 👇

عضویت در گروه تلگرام
عضویت در کانال تلگرام
عضویت در پیج تردز
👍81
5 Performance Optimization Techniques in Django

از لینکدین Saad Jamil
لینک و فایل pdf در کامنت
پست های مرتبط در کامنت
👍3
معرفی یه پکیج ساده و کاربردی

اضافه کردن قابلیت سرچ با searchable dropdown برای ادمین جنگو

اگه جایگزینی سراغ دارید معرفی کنید

https://pypi.org/project/django-admin-searchable-dropdown/
👍7
📣 تبلیغ رایگان

ما در #پایتونیزم هدفمون بکارگیری پایتون در صنعت های مختلفی مثل : مالی، پزشکی، کشاورزی و... هست که در حال حاضر در مرحله آموزش سطح مقدماتی هستیم

@pythonism_xl
👍5
Forwarded from Sadra Codes
یوتیوبرهای پایتون‌کاری که باید فالو کنید:

1: anthonywritescode: https://www.youtube.com/@anthonywritescode

2: Corey Schafer: https://www.youtube.com/@coreyms

3: Arjan Codes: https://www.youtube.com/@ArjanCodes

4: Tech With Tim: https://www.youtube.com/@TechWithTim

5: NeuralNine: https://www.youtube.com/@NeuralNine

6: Pretty Printed: https://www.youtube.com/@prettyprinted

رامین سلجوقی‌نژاد بیشتر راجع به الگوریتم و مباحث AI ویدئو میذاره و اکثر پیاده‌سازی‌هاش با پایتونه که خیلی در دوران کارشناسی بدردم خورد:

Ramin Saljoughinejad: https://www.youtube.com/@Ramin-S
👍11👎1
ساخت صفحه ادمین fake در جنگو
پستی از Aashish Kumar در لینکدین
از پکیج django-admin-honeypot استفاده کرده

فایل pdf و لینک مطلب در کامنت
پست های مرتبط در کامنت
👍4
Forwarded from Sadra Codes
گیت‌هاب اکشن چیست؟ چطور اکشن بنویسیم؟!

گیت‌هاب، چند سالی هست که از سیستم اتومات CI/CD خودش رونمایی کرده. حالا از اکشن میشه چه استفاده‌هایی کرد؟ چند تا مثال می‌زنم باهاش بیشتر آشنا شید. مثلا فرض کنید یه ریپازیتوری دارید که عده خیلی زیادی دارن روش کار می‌کنن و pull request میزنن و شما بعنوان مینتینر اصلی، مجبوری هر سری بیای و تغییرات افراد رو خودت بصورت دستی روی لوکال چک کنی، تست کنی و اگه اوکی بود، مرج کنی.

اکشن بهتون این اجازه رو میده که هروقت اتفاقی روی پروژه افتاد (مثلا کسی pr زد)، خودش یه محیط ایزوله (یه کانتینر داکر مثلا) ایجاد کنه و تغییرات طرف رو در جاب‌های متنوع بررسی کنه. مثلا یه جاب، تست‌هاشو ران کنه. یه جاب بررسی کنه ببینه کدی که زده کلین هست یا فرمت شده یا... نهایتا یه ریپورت بنویسه توی همون conversationی که مربوطه به pr هست. به این محیط که شما استپ‌ها و ایونت رو تنظیم میکنی، میگن workflow. شما میتونی هر تعداد workflow که دوست داری داشته باشی.

چند تا کلمه کلیدی، معنیشون مهمه:

- ایونت (Event): منظور همون اتفاقه یا رویداده هست. مثلا کسی pr میزنه، prی مرج میشه، کسی پوش میکنه روی برنچی، کسی ایشو باز میکنه، رلیزی انجام میشه، تگی ساخته میشه یا...

جاب (Job): جاب، یه مجموعه از استپ ها هست که توی ورکفلو، روی رانر اجرا میشه. مثلا یه جاب میتونه استپ‌هاش: نصب کردن اوبونتو روی رانر - نصب پایتون - آپدیت پیپ - نصب دیپندنسی‌ها باشه. هر کدوم از این ایتم‌هایی که گفتم، میشن استپ‌های این جاب.

رانر (Runner): خیلی شبیه به کانتینرهای داکر هستن. ینی گیت‌هاب یه انجین مثل Docker Daemon داره و یه ساختاری شبیه به Container که بهتون اجازه میده جاب‌هاتون رو داخلش ران کنید. اگه اشتباه نکنم، با سی‌شارپ ساختنش و اوپن سورس هم هست.


اکشن (Action): همونطور که گفتیم، توی جاب، یه سری استپ‌ها داریم. شما توی استپ‌ها میتونی هرکاری که دوست داری انجام بدی. کامند ران کنی یا از سری کامندها یا اکشن ها استفاده کنی! اکشن درواقع یه پکیجه که شما توی استپی که داری میتونی کالش کنی، یه سری مقادیر بهش پاس بدی و اون اجرا میشه. یه مثلا بخوام بزنم. مثلا فرض کنید یه اکشن داریم به اسم setup-python. دیگه احتیاج نیست خودتونو درگیر ران کردن انواع و اقسام کامند ها به منظور نصب پایتون نصب کنید. مستقیم از این اکشن استفاده میکنید، صرفا بهش ورژن پایتون دلخواهتون رو میدید و واستون پایتون و پیپ رو نصب میکنه.

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

ما سه مدل اکشن داریم:

- داکر: اکشن در محیطی (شبیه) به داکر ران میشه. رانرهای گیت‌هاب، داکر رو ساپورت میکنن پس اگه شما بهشون Dockerfile بدید، راحت اکشنتون رو ران میکنن و قابل استفاده میشه.

- کامپوزیت (Composite): صرفا بهش Entrypoint میدید و اون فایل رو ران میکنه. مثلا یه شل‌اسکریپت دارید توی اکشن که یه hello world رو echo میکنه. توی کانفیگ اکشن مینویسید:

runs:
using: composite
steps:
- name: 'Run hello-world.sh'
run: ./hello-world.sh

- جاوا اسکریپت: رانرهای گیت‌هاب، از نود هم ساپورت میکنن. شما اگه js کارید، میتونید از این مدل رانر استفاده کنید و به زبان js، اکشن بنویسید. (اکثر اکشن ها به زبان js و نود هستن)

جدیدا روی یه پیاده‌سازی کار کردم که به پایتون‌کارها هم این اجازه رو میده که تحت یه ساختار خیلی خوب، اکشن بنویسن. ینی درواقع اکشن پایتون!

ادامه..
👍102