جنگولرن
4.1K subscribers
307 photos
86 videos
33 files
600 links
آموزش Django و بستگان
-مفاهیم پر کاربرد پایتون
-مفاهیم مهندسی نرم افزار
-آشنایی با تجربه حرفه ای ها
-آشنایی با راهکارهای حرفه ای ها برای افزایش پرفورمنس
و...
اگه سوال داری به @miladhzz پیام بده.
Download Telegram
Audio
ویس مصاحبه با صفا صفری، محقق امنیت

صفا تازگی ها طلای مسابقات ملی مهارت رو گرفته و در حال تمرین برای مسابقات جهانی هست.

مصاحبه توی هنرستان شهید دبیریان، منطقه 16 تهران به صورت آنلاین برگزار شد

این بار سوالات بچه هارو حذف نکردم و اتفاقا گفتگو قشنگی شد.

لینک ویدئو:
https://www.aparat.com/v/fnh1y35

تشکر از صفا
🔥105
جنگولرن
اینارو ببین: کد اول: def f1(a): print(a) print(b) f1(10) کد دوم: b = 6 def f2(a): print(a) print(b) b = 9 f2(10) اگه میگی هر دو خطا میخورن 👍 اگه میگی فقط اولی خطا 👎 اگه میگی فقط دومی خطا 🤔 از کتاب Fluent Python
نظر فنی یکی از دوستان در مورد این پست (به نظر ایشون دانستن این مفاهیم مهمه):

قانون LEGB یکم سو تفاهم هست درش. بعضیا فکر میکنن این قانون داره میگه اگه local نبود پس میره enclosing رو "میگرده"،‌اگه نبود میره global رو "میگرده" تا پیدا کنه و انتظار دارن مثال دوم کار بکنه و اولین b رو از global بیاره و بعد که تعریف شد تو local اگه بازم b رو خواستیم از local بیاره حالا. در صورتی که چنین چیزی نیست در حالت کلی(اخرش تو پرانتز گفتم). ما باید bytecode تولید شده رو ببینیم و بعد بگیم چه رفتاری داره. یعنی میشد که اونجوری هم پیاده سازی بشه ولی efficient نیست اصلا حالا جلوتر میگم چرا.

اسکوپ متغیر ها در زمان compile مشخص میشه نه runtime و این قانون داره اولویت ها رو مشخص میکنه که تو "compile time" چطور resolve بشن. وقتی کامپایلر یه assignment میبینه داخل فانکشن، اون متغیر رو mark میکنه که local هست و تو runtime وقتی شما اون متغیر رو بخواید "فقط" توی namespace عه local دنبالش میگرده اگه بود میاره اگه نبود error میده.
متغیر ها توی global توی یک دیکشنری ذخیره میشن، ولی توی local توی آرایه هستن خیلی سریعتر هستن چون با ایندکس بهش دسترسی پیدا میکنید نه دیکشنری lookup. یعنی جاش مشخصه اصلا کجاست تو آرایه. اونتو یا متغیر هست که میاره یا نیست که میگه:
UnboundLocalError: cannot access local variable 'b' where it is not associated with a value
وقتی اون آرایه رو گشت و نبود دیگه گشتن رو متوقف میکنه و پروسه تموم میشه برای این efficient تره. یا وقتی mark شد که global هست دیگه نمیاد اول local رو بگرده ببینه نیست بعد بره تازه global رو بگرده.

بایت کد های یک فانکشن رو بدون ران کردنش نگاه کنید میبینید LOAD_FAST و LOAD_GLOBAL داره. LOAD_FAST منظورش local variable هست که با index عه اون یکی هم اسمش مشخصه.

(من یه ذره موقع توضیح دادن تغییر دادم نحوه ی سرچ کردن متغیر رو رو چون شامل حال سوال شما نمیشه و توضیحاتی که دادم اینجا درسته، ولی یه جاهایی هم هست که واقعا "گشتن" داریم که سر builtin که مثلا تو LOAD_GLOBAL سرچ میشه یا LOAD_NAME که سرچ میکنه چند تا name space رو میگرده تا پیدا کنه. سر local و enclosing هیچوقت اینطوری نیست)

تشکر از سروش که همیشه دقیق کمک میکنه ❤️
👍74
Forwarded from TondTech (مسعود بیگی)
یه وقت نیاد که دیر بشه..
👍14👏3😁1
Forwarded from Milad Hatami
Media is too big
VIEW IN TELEGRAM
⭕️💢کافه جنگو💢⭕️

آموزش جنگو پایتون
جلسه : پنجم
موضوع این جلسه: ادامه کار با مدل های وبلاگ و آشنایی با ORM جنگو

رشته: فنی پایه 11 کتب جدید

پایه: 11 فنی و 11 و 12 کاردانش

درس: وب

سطح: متوسط

مدرس: مهندس حاتمی

🔻🔻🔻🔻🔻🔻

#کافه_دانش
#کافه_جنگو
#جلسه_5
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
4👍1
جنگولرن
⭕️💢کافه جنگو💢⭕️ آموزش جنگو پایتون جلسه : پنجم موضوع این جلسه: ادامه کار با مدل های وبلاگ و آشنایی با ORM جنگو رشته: فنی پایه 11 کتب جدید پایه: 11 فنی و 11 و 12 کاردانش درس: وب سطح: متوسط مدرس: مهندس حاتمی 🔻🔻🔻🔻🔻🔻 #کافه_دانش #کافه_جنگو #جلسه_5 #سطح_متوسط_پیشرفته…
جلسه 5 کلاس جنگو برای هنرستان
بر مبنای کتاب Django 5 By Example

توی این ویدئو که برای همکاران هنرستانی برگزار شد، مدل post رو یکم تغییر دادیم.
به پست، فیلد status رو اضافه کردیم و بعدش بین مدل user و post ارتباط یک به چند برقرار کردیم.
سپس با استفاده از orm جنگو کوئری های مختلفی زدیم و نتیجه رو توی خروجی وبلاگ مشاهده کردیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.

لینک ویدئو در آپارات:
https://www.aparat.com/v/fcas62b
2
قابلیت Password-based authentication در جنگو

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

مشخص میکنی که کاربر با پسورد لاگین کنه یا نه (مثلا فقط بتونه با کد یکبار مصرف لاگین کنه، غیرفعالش میکنی یا...)

این تنظیم از جنگو 5.1 اضافه شده.

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

میخوام شمارو دعوت کنم به pr یی که براش ثبت شده و مکالمه هایی که رد و بدل شده، تا ایده اولیه، این شده (به تاریخ pr و تاریخ merge دقت کن)

این لینک:
https://github.com/django/django/pull/16942

راستی، فارسی ش کار نمیکنه ظاهرا، تا دیر نشده فارسی ش رو pr بده 😁
🔥91👍1
سلام به همه

کسی از "کنار دیوار" استفاده کرده؟
اگه تجربه ای دارید بگید.
این boilerplate ش هست:

https://github.com/divar-ir/kenar-boilerplate

جنگو عه
4
Forwarded from Linuxor ?
اگه نمی‌تونید یه پروژه ای رو شروع کنید، شاید مشکل توی درک معماری دارید! یه راهکار ساده اینه که برید پروژه های بزرگ ساخته شده با اون فریم‌ورکی که کار میکنید رو clone کنید و فقط سعی کنید ادیتش کنید یه مدت بگذره به ساختار و معماری پروژه عادت می‌کنید و خودتون میتونید شبیه‌اش رو بسازید.


@Linuxor
👍225🤔3👎2🔥1
معرفی django-upgrade

اگه یه پروژه جنگو داری و میخوای نسخه ش رو عوض کنی.
اما تغییرات زیادی نیاز داره (مثلا بعضی چیزا deprecated شدن)
میتونی ازش استفاده کنی.
از جنگو 6 هم پشتیبانی میکنه

لینک داکیومنت:
https://django-upgrade.readthedocs.io/en/latest/fixers.html
👍8👏3
Forwarded from EverCode
چندتا مهارت که اگه برمیگشتم روز اولی که با برنامه نویسی آشنا شدم حتما به خودم میگفتم تقویتشون کنه:

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

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

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

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

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

این نکاتی بود که با گذشت زمان بیشتر بهشون اعتقاد پیدا کردم و دوست داشتم به اشتراک بزارم. اگه کسی رو میشناسین که این پست میتونه براش مفید باشه باهاش به اشتراک بزارین و نظرتون هم برام بنویسین🌹


@ever_code
🔥125👍5
Forwarded from Milad Hatami
Media is too big
VIEW IN TELEGRAM
⭕️💢کافه جنگو💢⭕️

آموزش جنگو پایتون
جلسه : ششم
موضوع این جلسه: آشنایی با Manager ها و ارث بری Template ها در جنگو

رشته: فنی پایه 11 کتب جدید

پایه: 11 فنی و 11 و 12 کاردانش

درس: وب

سطح: متوسط

مدرس: مهندس حاتمی

🔻🔻🔻🔻🔻🔻

#کافه_دانش
#کافه_جنگو
#جلسه_6
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
4
جنگولرن
⭕️💢کافه جنگو💢⭕️ آموزش جنگو پایتون جلسه : ششم موضوع این جلسه: آشنایی با Manager ها و ارث بری Template ها در جنگو رشته: فنی پایه 11 کتب جدید پایه: 11 فنی و 11 و 12 کاردانش درس: وب سطح: متوسط مدرس: مهندس حاتمی 🔻🔻🔻🔻🔻🔻 #کافه_دانش #کافه_جنگو #جلسه_6 #س…
جلسه 6 کلاس جنگو برای هنرستان
بر مبنای کتاب Django 5 By Example

توی این قسمت، اول رفتیم سراغ مفهوم manager در جنگو
بعدش با get_object_or_404 آشنا شدیم. در ادامه با get_absolute_url هم آشنا شدیم.
اواسط ویدئو در مورد ارث بری template ها صحبت کردیم و صفحات رو با ارث بری یکم تمیزتر کردیم.
در آخر ویدئو هم صفحه بندی رو برای صفحه اصلی سایت مون اوکی کردیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.


لینک ویدئو در آپارات:
https://www.aparat.com/v/xemv1g4
5👍1
شروع جنگولرن (سال 2020
https://t.iss.one/djangolearn_ir/1
اولین پست جنگولرن (سال 2021
https://t.iss.one/djangolearn_ir/2
اولین تبلیغ تدریس خصوصی جنگو (هنوزم خصوصی جنگو درس میدم
https://t.iss.one/djangolearn_ir/8
8😁1
جنگولرن pinned «شروع جنگولرن (سال 2020 https://t.iss.one/djangolearn_ir/1 اولین پست جنگولرن (سال 2021 https://t.iss.one/djangolearn_ir/2 اولین تبلیغ تدریس خصوصی جنگو (هنوزم خصوصی جنگو درس میدم https://t.iss.one/djangolearn_ir/8»
سی شارپ 😅

ویرایش: من از سال 1387 دارم با سی شارپ پول در میارم
😁27👎2
به اون کاری که امروز کردی نگو "ریفکتور" (Refactor)

اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جمله‌ی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ‍️ تو یه پروژه‌ی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکه‌تیکه‌اش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفه‌ای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد.  کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطق‌های تجاری پنهان و وابستگی‌های زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کم‌بهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تله‌ی کد تمیز"ئه. مهم‌ترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تست‌های مشخصه‌یابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همه‌ی باگ‌هاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.

Hossein Moradi
👍9🤔1