جنگولرن
3.81K subscribers
287 photos
74 videos
31 files
556 links
آموزش Django و بستگان
Download Telegram
کلمه orphan معنی اش تقریبا میشه یتیم
چه ربطی به جنگو داره آقای جنگولرن 😁

توی ListView (یکی از جنریک ویوهای جنگو) با این attribute مشخص میکنیم که جنگو هنگام صفحه بندی یا pagination با رکوردهای یتیم چطوری برخورد کنه.

✔️فرض کنید هر صفحه قراره شامل 10 رکورد بشه ولی ما 53 رکورد داریم.
خب تکلیف اون 3 تای آخر چی میشه؟
میتونیم بگیم صفحه آخر میتونه 3 تا یتیم رو به سرپرستی قبول کنه 😁
لذا صفحه آخر 13 رکوردی میشه

لینک زیر ازش استفاده کرده. البته نکات دیگه ای هم برای یادگیری داره
لینک
👏10😁6👍4
Generators

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

قبل از هر چیزی درباره ی خود فانکشن حرف بزنیم ولی نه تو پایتون بلکه تو C:
وقتی یه فانکشنی کال میشه، توی call stack یک frame جدید میاد که برای اون فانکشن هست. این frame شامل تمام متغیر های لوکال و پارامتر های اون فانکشن هست. وقتی فانکشن تموم میشه چه اتفاقی میفته؟
اون frame از stack پاپ میشه(یا دقیق ترش stack pointer کم میشه)
و نکته اینجاس که هرچی که توی اون frame هست دیگه قابل دسترس نیست و اگه استفادشون کنیم undefined behavior هست. چرا؟ چون توی "مموری استک" این frame قرار داده شده بود و اون فضا الان آزاد شده و قابل استفاده هست برای بقیه(توی پرانتز، تو C که مدیریت حافظه نداره، باید آبجکت هایی که توی heap میسازیم رو خودمون مدیریت کنیم نه استک):

int *returnArray() {
int arr[3] = {11, 22, 33};
printf("%p\n", arr);
printf("%d\n", arr[1]);
return &arr;
}
int main(void) {
int *arr;
arr = returnArray();
printf("%p\n", arr);
printf("%d\n", arr[1]); // ???
}

با اینکه آدرسش رو return کردیم ولی باز نمیتونیم به آیتم های لیست دسترسی داشته باشیم.
حالا اینارو گفتم که موضوع مهمی رو بگم اونم اینکه تو پایتون هم همین call stack و اینا هست ولی اون frame object توی heap ساخته میشه. این به این معناس که اگه بخوایم میتونیم ذخیرش داشته باشیمش و همیشه بمونه! مثلا مانع از نابود شدن خودش و آبجکت های درونش بشیم. تو مثال زیر global f رو اگه از کامنت در بیارید obj از بین نمیره چون frame رو ذخیره کردیم:

from gc import collect
from sys import _getframe

class A:
def __del__(self):
print("del called")

def fn():
# global f
f = _getframe(0)
obj = A()

fn()
collect()
input()
خب حالا که اینو گفتیم بریم سراغ خود آبجکت فانکشن تو پایتون. وقتی فانکشن کال میشه یه frame object ساخته میشه. این frame object داخلش آبجکت های زیادی هست(مستقیم یا غیر مستقیم) از جمله رفرنسی داره به متغیر های داخل اون namespace و رفرنسی داره به code object که یک unit عه executable هست. داخل این code object ما bytecode ها رو داریم که همون instruction ها هستن.

درواقع instruction ها هستن که اجرا میشن و این state ذخیره میشه. تو کد زیر lasti یعنی last instruction. (توی cpu هم اتفاق مشابهی میفته. اینجا pvm میخواد بدونه چیو اجرا کرده و حالا نوبت چیه):

from sys import _getframe
def fn():
print(_getframe(0).f_lasti)
a = 10
print(_getframe(0).f_lasti)

fn()

خب حالا بخش جالب ماجرا اینجاس. ما به عنوان طراحان فرضی زبان پایتون، میدونیم که frame ما میتونه خارج از موقع کال شدن هم زنده بمونه + از طرفی به state هم که دسترسی داریم...( اینکه الان متغیر های local چیا هستن، اینکه الان تا instruction چندم اجرا شده و غیره)

فقط یه مشکلی هست، فانکشن های ما وقتی کال میشن از اولین instruction تا آخرینش رو اجرا میکنن و تموم میشن و همه ی آبجکت های داخل اون frame از بین میرن(اگه رفرنس دیگه ای نداشته باشن جای دیگه).

الان همه چیز محیا هست برای اینکه یه ساختار یا keyword جدیدی بیاریم تو زبان که هرجایی از execution فانکشن خواستیم بتونیم pause کنیم و اون رو با هر state ای که داره به حال خودش رها کنیم. بیایم yield رو معرفی کنیم! هروقت yield اومد، کافیه اجرا رو متوقف کنیم و مثل فانکشن ها(که بعد از تموم شدنشون، frame شون از stack frame جدا میشد) این generator ها رو هم frame شون رو جدا کنیم.

بعدا اگه خواسیم generator رو ادامه بدیم و روش next بزنیم(مستقیم خودمون یا غیر مستقیم توسط پایتون) تنها کاری که باید بکنیم اینه که frame ش رو برداریم بچسبونیم به stack frame ممون و از اون state ای که بودیم ادامه بدیم.

def gen():
a = 1
yield
b = 1
yield

g = gen()
next(g)
print(g.gi_frame.f_lasti, g.gi_frame.f_locals)
next(g)
print(g.gi_frame.f_lasti, g.gi_frame.f_locals)

این call stack با linkedlist پیاده سازی شده و frame ها نود های اون هستن. با f_back به frame قبلی اشاره میکنن به راحتی وصل میشن و جدا میشن.

جنریتور ها با وجود سرعت خوبی که دارن، برای سرعت بیشتر ساخته نشدن بلکه برای استفاده ی بهینه تر از مموری ساخته شدن. داشتن همچین آبجکتی(به اضافه ی ساختار هایی مثل yield from) میتونه زمینه ی خیلی چیز ها رو فراهم کنه. از جمله فریموورک هایی مثل asyncio :)
👍5👏1
کارآموز (با حقوق) جنگو میگیرن
از لینک زیر به هادی پیام/رزومه بدید
لینک
👍13
ویدئویی کوتاه برای سطح جونیور که توصیه میکنم ببینید

✔️ در ویدیو جدید یوتوب راجع به ۳ تا تکنیک ریفکتورینگ در پایتون با متدهای built-in و مثال هایی در زمینه های زیر صحبت میکنیم:

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

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

〰️〰️〰️〰️〰️〰️
@BobyDotCloud
👍9
.

ترور یعنی پایان


هر فرد یا گروهی که به نقطه ترور و «خشونتِ کور» برسد دارد به پایان خویش اعتراف می‌کند. فرقی نمی‌کند که برحق باشی یا باطل،‌ مظلوم باشی یا ظالم و چه کسی را می‌کشی مقصر یا بی‌گناه؛ همین که تصمیم به خشونت کور گرفتی یعنی ذهن تو و روان تو به بن‌بست رسیده است: بن‌بست در اندیشیدن و راهی عقلانی یافتن، بن‌بست در اخلاقی زیستن و انسان ماندن، و بن‌بست در تاب‌آوری روانشناختی و از هم نگسیختن. درواقع جهان و زندگی و جامعه به بن‌بست نرسیده است تو به بن‌بست رسیده‌ای و آن هم دو بن‌بست: بن‌بستی در خویش و بن‌بستی با بیرون خویش.

کسی که با خویش در آشتی است و هنوز در درونش جوانه امید و عطر معنا برای زندگی هست، در بدترین فشارهای بیرون نیز از خویشتنِ خویش انرژی می‌گیرد و زیستِ درونی عقلانی و شادمانه‌ای دارد. و کسی که با بیرون خویش در آشتی است، در سخت‌ترین فرسودگی‌ها و تلاطمات درونی نیز این فرصت را دارد که از بیرون (جامعه و هستی) انرژی بگیرد و تنها نماند و به نقطه استیصال نرسد. تنها کسانی که هم در درون خویش و هم با بیرون خویش به بن‌بست رسیده‌اند، دست به خشونت کور می‌برند؛ فرقی نمی‌کند فرد باشد یا گروه یا فرقه یا حزب یا حتی یک حکومت. حتی وقتی یک ایدئولوژی فرمان به خشونت کور می‌دهد، درواقع دارد به غیرانسانی بودن خود و به بن‌بست رسیدن خود و به پایان یافتن خود اعتراف می‌کند.

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

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

و اما این غصه‌هایی که این روزها از درون و بیرون، غزه یا کرمان یا هرجایی که بی‌گناهی کشته می‌شود، بر دلمان می‌بارد، و این مصیبت‌هایی که پی‌در‌پی برسرمان آوار می‌شود، اگر نکشدمان، قوی‌ترمان می‌کند.

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

محسن رنانی / ۱۴ دی‌ماه ۱۴۰۲

@Renani_Mohsen
.
25👎8👏4👍2🤮2🥱2🔥1😁1
Forwarded from Microfrontend.ir
بهینه سازی مدل‌های Django با PostgreSQL Tablespace

یک الگوی رایج برای بهینه‌سازی عملکرد در سیستم‌های پایگاه داده، استفاده ازTablespace برای سازماندهی طرح دیسک است. در این ویدیو بهینه سازی مدل‌های Django با PostgreSQL Tablespace را بررسی کردیم که از طریق آن می‌توان محل ذخیره سازی داده ها را بین فضاهای مختلف ذخیره سازی که میتوانند کندتر یا سریعتر باشند.


Video Link: https://youtu.be/1gBizdUgzBw

Django Tips Playlist:
https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwdrfdaoOqbYev3_ocuBOfv

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir
👍6🔥1
Forwarded from یادگیری ماشین با چاشنی صنعت (Abolfazl 🤘)
دیزاین notification system قسمت اول
سلام دوستای عزیز همراه شما هستیم با یک بخش دیگه از خوبای مصاحبه سیستم دیزاین که البته از اسمش معلومه چی هست و چقد این روزا رو بورسه.
فرض کنید شما میخواین یه سیستم نوتیف طراحی کنید که روزانه به میلیون ها کاربر یه نوتیف ارسال شه حالا اون نوتیف میتونه ایمیل، پیامک یا هر شکل دیگه ای داشته باشه. مسلما اصلا کار آسونی نیست که میلیون ها و حتی میلیارد ها کاربر رو ساپورت کنیم.
پس اولین مسئله ای که ما باهاش سر و کار داریم scalability هستش. یعنی همون مقیاس پذیری. ما به عنوان یک معمار سیستم یا مهندس نرم افزار ارشد باید بتونیم این چاله چوله ها رو جوری پر کنیم که فحش کمتری رو از کاربران دریافت کنیم و بتونیم بالاخره scale قابل توجهی از کاربران رو ساپورت کنیم.
فرضیات ما از این سیستم:

۱ - ما انواع نوتیف ها ( ایمیل، موبایل و پیامک) رو ساپورت میکنیم
۲ - سیستم ما به شکل real time پیاده میشه و کاربرا کمترین زمان انتظار تا دریافت نوتیف رو دارن ( جوگیر نشید تو سیستمای معمولی این روش رو پیاده کنید الکی پیچیده کنیدا ! این واسه سیستمای بزرگه)
۳ - روی دیوایس های اندروید، IOS و دسکتاپ ساپورت میشه
۴ - نوتیف توسط برنامه های مختلف سمت کاربر با هماهنگی سمت سرور دریافت میشه
۵ - روزانه ۱۰ میلیون push notif، یک میلیون پیامک و ۵ میلیون ایمیل ارسال میشه
👍4
Forwarded from یادگیری ماشین با چاشنی صنعت (Abolfazl 🤘)
شغل اول : برنامه نویس

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

اگر شما به کارهای تا ناموس علمی (computer science) علاقه دارید، به کارای بیزینسی چندان عشق نمیورزید و هیچ علاقه ای به سر و کله زدن با افراد دیگه ندارید یا میخواین تو کارای R&D شرکت کنین برنامه نویس شدن میتونه گزینه مناسبی برای شما باشه
👍11👎2
Forwarded from یادگیری ماشین با چاشنی صنعت (Abolfazl 🤘)
شغل دوم : توسعه دهنده یا Developer

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

- زبان های برنامه نویسی و فریمورک
-دیتابیس های رابطه ای sql
-دیتابیس های غیر رابطه ای مثل Redis
-ابزار های دپلوی مثل داکر
- لینوکس سرور و پلتفرم های ابری
- ابزار های تست و مانیتورینگ و کلی چیز دیگه.

واضحه که توسعه دهنده نسبت به برنامه نویس خیلی چیزای دیگه نیازه که بدونه. بخوام یه مثال از تفاوت بین این دو بزنم:
برنامه نویس میاد Redis رو میسازه و دولپر میاد ازش برای ذخیره دیتا استفاده میکنه.

و صد البته بک اند دولپر باید برنامه نویس خوبی باشه چون با کلی الگوریتم سر و کار داره اما الگوریتم ها اغلب اونایی نیستن که جنبه computer science طوری داشته باشن.

و در آخر اگر شما توانایی حل چالش و مسئله های دشوار رو دارین ، میخواین مستقیما یک نرم افزار تولید کنین و دوست دارین چیزای متنوع یاد بگیرین و دانشتون رو گسترش بدین به دولپر شدن فکر کنین
👍91
چهار تا فروشگاه اوپن سورس (معروف) با جنگو

✔️django-oscar
لینک: https://github.com/django-oscar/django-oscar
✔️shuup
لینک: https://github.com/shuup/shuup
✔️django-shop
لینک: https://github.com/awesto/django-shop
✔️saleor
لینک: https://github.com/saleor/saleor


اگه شما هم فروشگاه اوپن سورس جنگو می شناسید. کامنت کنید لطفا
👍11🔥3
نکته ای از کتاب Fluent Python در باب Building Lists of Lists
من 10 بار کدهای عکس اولی رو مقایسه کردم و دلیل رو متوجه نشدم 🤓
✔️داستان call by reference یا pass by reference اتفاق افتاده
👍7🤔1
جنگولرن
سری مهندسی نرم‌افزار: پست 3 از لینکدین Saeed Shahrivari Joghan لینک پست در کامنت احتمالاً در صحبت با دوستان و همکاران یا در فضای مجازی به کتاب‌های پیشنهادی متعددی برای مطالعه (مثلاً کتاب کد تمیز) برخورد کرده باشید. با وجود اینکه مطالعه این کتاب‌ها مفیده…
سری مهندسی نرم افزار: پست 4
از لینکدین Saeed Shahrivari Joghan
لینک

تو پست‌های قبلی راجع به محورهای سه گانه این سری صحبت کردم یعنی: نرم‌افزار، مهندسی نرم‌افزار و مهندس نرم‌افزار. تو این پست می‌خوام راجع به مفهوم «نرم‌افزار خوب» صحبت کنم.

اول دو تا نکته ریز بگم خدمتتون:
۱- معمولاً اگه در کتاب‌ها یا وب بگردید به دو مفهوم بر می‌خورید یکی «نرم‌افزار خوب» (Good Software) و یکی هم «نرم‌افزار باکیفیت» (High Quality Software) که به نظر من تقریباً یه مفهوم دارند.
۲- کیفیت از دو دید قابل بحثه یکی کیفیت داخلی مثلاً معماری خوب و یکی هم کیفیت خارجی مثلا واسط کاربری خوب. معمولاً کاربر بیشتر کیفیت خارجی رو درک میکنه و مهندس نرم‌افزار هم ناخودآگاه بیشتر به کیفیت داخلی توجه میکنه. حالا کدوم باید اولویت داشته باشه؟ به نظر من هیچکدوم برتری نداره که الآن نمیخوام راجع بهش بحث کنیم.

حالا ویژگی‌های یه نرم‌افزار خوب چیه؟ معیارها خیلی متنوعه و پراکنده ولی اجازه بدید در این مورد اقتدا بکنیم به آقای سامرویل! از دید سامرویل ویژگی‌های یه نرم‌افزار خوب موارد زیره:
- کاربردی (Functional): یعنی عملکرد لازم رو به کاربر بده یا به عبارتی درست کار کنه و به درد بخور باشه.
- کارا (High Performance): یعنی کارایی لازم رو هم ارائه بده مثلاً کند نباشه.
- قابل استفاده (Usable): یعنی سهولت استفاده داشته باشه یا به عبارتی کاربرپسند باشه.
- قابل اعتماد (Reliable): یعنی بدون خطا و خرابی کار کنه به عبارتی باگ نداشته باشه و بشه روش حساب کرد.
- قابل نگهداشت (Maintainable): یعنی به راحتی بشه تغییر، ارتقا و بهبودش داد.
- امن (Secure): یعنی امنیت لازم رو برای کاربر فراهم کنه.
البته ویژگی‌های بیشتری هم هست مثل: Scalability یا Testablity‌ یا Compatibility و ... ولی به نظرم ۶ موردی که بالا مرور کردیم تقریباً تو هر نرم‌افزاری دیده میشه ولی موارد دیگه ممکنه تو بعضی نرم‌افزارها خیلی دغدغه نباشه مثلاً مقیاس‌پذیری. لطفاً این ۶ مورد و تعاریفش رو همیشه به خاطر داشته باشیم.

چند تا نکته کنکوری و پایانی:
۱- اینا ویژگی‌های نرم‌افزار خوبه یعنی: کد، داده و مستندات. پس صرفاً شامل کد نمیشه.
۲- نرم‌افزار شامل استهلاک نمیشه یعنی با گذشت زمان خرابی توش بوجود نمیاد برای مثال مقایسه بکنید با ماشین که به مرور زمان استهلاک پیدا میکنه و بیشتر خراب میشه.
۳- یه مهندس نرم‌افزار صرفاً نباید توجهش معطوف به ویژگی‌های کیفی داخلی باشه و باید به ویژگی‌های کیفی خارجی هم توجه کنه مثل قابل استفاده بودن.
۴- این ویژگی‌ها معمولاً مثل یه تار عنکبوت به هم تنیده شدند. یعنی اگه بخوایم یکی رو افزایش بدیم ممکنه به احتمال زیاد ویژگی‌های دیگه که در تعارض هستند کاهش پیدا کنند. برای مثال معمولاً تلاش برای افزایش کارایی سیستم باعث کاهش اتکاپذیری میشه. احتمالاً در آینده راجع این موضوع بیشتر صحبت می‌کنم اما فعلاً پیشنهاد میکنم برای این بحث مقاله بسیار عالی «The web of system performance» رو مطالعه بکنید:
https://lnkd.in/d9s998jA

حالا چه کنیم که نرم‌افزار خوب تولید کنیم؟ ایشالا به شرط حیات در پست‌های بعدی بهش می‌پردازیم😉
👍5
Forwarded from یادگیری ماشین با چاشنی صنعت (Abolfazl 🤘)
دیزاین notification system قسمت دوم

تا اینجای کار ما فرضمون رو از سیستم نوتیفی که میخوایم طراحی کنیم گفتیم

الان نوبت میرسه به یه طراحی سطح بالا از سیستم.

مثال اول : گوشی های Apple

ممکنه بدونید که شرکت اپل برای ارسال نوتیف از APN استفاده میکنه یا همون Apple push notification service هست. به بیان دیگه یه پیام توسط provider تولید میشه و توسط APN به گوشی ها فرستاده میشه.
سه بخش مهم داریم الان:
۱ - بخش provider
2 - بخش APN
۳ - گوشی iOS

بخش provider، با دو نوع داده کلیدی سر و کار داره:

۱ - قسمت device token که شامل یک توکن منحصر به فرد برای ارسال نوتیفیکیشن هست
۲ - بخش payload که یک داده JSON شامل محتوای ارسالی نوتیفیکیشن هست

بخش APN رو هم که توضیح دادیم و کلاینت ما هم که گوشی هست.
یه دیزاین سطح بالا هم ببینیم ازش بد نیست
👍2
Forwarded from یادگیری ماشین با چاشنی صنعت (Abolfazl 🤘)
در مسیر تبدیل شدن به یک مهندس نرم‌افزار یکی از راه هایی که خیلی میتونه شمارو کمک کنه و مسیر رو براتون شفاف تر کنه، شنیدن پادکست هایی از جنس تجربس.

از لینکدین Reza Amini
لینک

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

- Software Engineering Daily

توی این پادکست خفن میزبان میاد و درخصوص چالش ها توی پروژه های بزرگ با مهندسین نرم افزار شرکت های بزرگ صحبت میکنه و تجربیات خوبی شیر میشه.
https://lnkd.in/evyWJjQT

- Software Engineering Radio

‏پادکست رادیوی مهندسی نرم افزار، یکی از اون پادکست های پرمحتواییه که آدم های خفن هر هفته درخصوص چالش های طراحی نرم افزار صحبت میکنند.
‏⁦ se-radio.net

- CaSE

پادکست Conversations about Software Engineering سعی کرده هر سه هفته یک اپیزود برای افرادی که علاقه مند به معماری و مهندسی نرم افزار هستند رو منتشر کنه.

پادکست های رلیز شده مصاحبه طور هستند و بنظرم
جذابن.
https://lnkd.in/emXbqqNi

- Changelog

پادکست Changelog هم واقعا باحاله، خیلی از زمینه های اپن سورس، توسعه وب و برنامه نویسی و.. رو توی اپیزود هاش ساپورت میکنه و تا الان نزدیک ۵۷۰ اپیزود ضبط شده رو قرار داده روی سایتش.
https://changelog.com/

- The Cloudcast

اگه شماهم علاقه مند به Cloud, Serverless architecture, aws ,.. هستید احتمالا این پادکست از بقیه براتون جذاب تره و هر هفته داره اپیزود های جدیدی در زمینه کلاود به اشتراک میزاره.
https://lnkd.in/ejjFdwJk

- CodeNewbie

این پادکست هم با هدف باحالی اومده، آدمای مختلف داستان رسیدنشون به از صفر به پوزیشن های بالایی که الان دارن رو توی هر اپیزود میگن و میگن که چطوری از یک کورس ساده به شرکت های بزرگ نرم افزاری رسیدن.
codenewbie.org/podcast

- System Design

یکی از جذاب ترین پادکست ها برای افرادی که به سیستم دیزاین علاقه دارن، اینجا مصاحبه های سیستم دیزاین بصورت پادکست ضبط میشن و آدمای با تجربه چالش های سیستم دیزاین مختلف رو حل میکنند.
https://lnkd.in/eGsH5ufj

- Soft Skills Engineering

این بار دیگه قرار نیست محتوای فنی و کد بشنوید، با این پادکست شما قراره مهم ترین سافت اسکیل هارو تقویت کنید، بنظرم از دستش ندید.
https://softskills.audio/

- CoRecursive

این پادکست هم عناوین باحالی داره، آدم های بزرگی راجع به مسائل جذابی صحبت کردن، میتونید چک کنید.
https://corecursive.com
👍6
آشنایی با کلاس TemplateResponse در جنگو

توی ویوهای فانکشن بیس جنگو معمولا متد render رو return می کنیم که توی مسیر django.shortcuts هست.

✔️گاهی اوقات لازم میشه response ایی که بر میگردونیم یکم مخلفات داشته باشه. مثلا به http header ش یه چیزی (به هر دلیلی) اضافه کنیم. در این مواقع میتونیم TemplateResponse رو return کنیم.
✔️وقتی هم که Middleware سفارشی ایی داشته باشیم که تغییراتی رو توی response اعمال میکنه (ریسپانسی که template داره) ، استفاده از TemplateResponse خوبه.

اگه داکیومنت جنگو و بخش میدلورهارو خونده باشی متدی به اسم process_template_response هست.
✔️متد process_template_response در Middleware ها فقط بر روی پاسخ‌هایی از نوع TemplateResponse اجرا می‌شه.
👍7
Forwarded from Golem Course
Final_SAD.pdf
54.3 KB
امروز امتحان پایان ترم درس تحلیل و طراحی سیستم‌ها برگزار شد. سوالات امتحان را برایتان پیوست کردم. فکر می‌کنم برای اعضای این کانال نیز مفید باشد.

بد نیست به نکته‌ای اشاره بکنم. سوال یک اگر بخواهیم دقیق صحبت کنیم، مبنای ۳۲ به کار رفته در geohash شامل حروف a و i و l و o نمی‌شود که برای راحتی چنین فرضی در امتحان نداشتیم.

@golemcourse
اینم موتور Django 🥸

لینک
🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
بیزینس لاجیک رو کجای مدل در جنگو میشه گذاشت؟
من از این چهار مورد در معماری فریمورک جنگو استفاده کردم که در ویدئو توضیحاتش رو میدم:
1. Field Constraints
2. Custom Constraints
3. Validators
4. Model Clean Method

از لینکدین Hamze Qaempanah
👎5👍4