Forwarded from ProgrammingSchool (Python)
🌺دوره آموزشی پایتون مقدماتی(رایگان)🌺
لینک جلسات یک تا هجده پایتون مقدماتی
جلسه اول: معرفی دوره آموزشی
https://t.iss.one/programmingschool2/4
جلسه دوم: نصب پایتون و ژوپیتر
https://t.iss.one/programmingschool2/28
جلسه سوم:نمایش اطلاعات، دریافت اطلاعات، معرفی متغیرها
https://t.iss.one/programmingschool2/29
جلسه چهارم: بررسی انواع داده و تورفتگی ها
https://t.iss.one/programmingschool2/30
جلسه پنجم:تبدیل دادهها در پایتون
https://t.iss.one/programmingschool2/31
جلسه ششم: معرفی رشتهها و برشها
https://t.iss.one/programmingschool2/32
جلسه هفتم: دستکاری و ادغام رشتهها
https://t.iss.one/programmingschool2/33
جلسه هشتم: دادههای بولی
https://t.iss.one/programmingschool2/34
جلسه نهم: عملیات در پایتون
https://t.iss.one/programmingschool2/35
جلسه دهم: معرفی داده ساختار لیست
https://t.iss.one/programmingschool2/36
جلسه یازدهم: دستکاری ساختار لیست در پایتون
https://t.iss.one/programmingschool2/38
جلسه دوازدهم: عبارات شرطی
https://t.iss.one/programmingschool2/42
جلسه سیزدهم: حلقه For - بخش اول
https://t.iss.one/programmingschool2/74
جلسه چهاردهم: حلقه For - بخش دوم
https://t.iss.one/programmingschool2/82
جلسه پانزدهم: حلقه While - بخش اول
https://t.iss.one/programmingschool2/123
جلسه شانزدهم: حلقه While - بخش دوم
https://t.iss.one/programmingschool2/137
جلسه هفدهم: معرفی داده ساختار Tuple - بخش اول
https://t.iss.one/programmingschool2/148
جلسه هجدهم: حل تمرینات داده ساختار Tuple - بخش دوم
https://t.iss.one/programmingschool2/184
ادامه دارد ...
#مبانی_پایتون
➖➖➖➖
آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
لینک جلسات یک تا هجده پایتون مقدماتی
جلسه اول: معرفی دوره آموزشی
https://t.iss.one/programmingschool2/4
جلسه دوم: نصب پایتون و ژوپیتر
https://t.iss.one/programmingschool2/28
جلسه سوم:نمایش اطلاعات، دریافت اطلاعات، معرفی متغیرها
https://t.iss.one/programmingschool2/29
جلسه چهارم: بررسی انواع داده و تورفتگی ها
https://t.iss.one/programmingschool2/30
جلسه پنجم:تبدیل دادهها در پایتون
https://t.iss.one/programmingschool2/31
جلسه ششم: معرفی رشتهها و برشها
https://t.iss.one/programmingschool2/32
جلسه هفتم: دستکاری و ادغام رشتهها
https://t.iss.one/programmingschool2/33
جلسه هشتم: دادههای بولی
https://t.iss.one/programmingschool2/34
جلسه نهم: عملیات در پایتون
https://t.iss.one/programmingschool2/35
جلسه دهم: معرفی داده ساختار لیست
https://t.iss.one/programmingschool2/36
جلسه یازدهم: دستکاری ساختار لیست در پایتون
https://t.iss.one/programmingschool2/38
جلسه دوازدهم: عبارات شرطی
https://t.iss.one/programmingschool2/42
جلسه سیزدهم: حلقه For - بخش اول
https://t.iss.one/programmingschool2/74
جلسه چهاردهم: حلقه For - بخش دوم
https://t.iss.one/programmingschool2/82
جلسه پانزدهم: حلقه While - بخش اول
https://t.iss.one/programmingschool2/123
جلسه شانزدهم: حلقه While - بخش دوم
https://t.iss.one/programmingschool2/137
جلسه هفدهم: معرفی داده ساختار Tuple - بخش اول
https://t.iss.one/programmingschool2/148
جلسه هجدهم: حل تمرینات داده ساختار Tuple - بخش دوم
https://t.iss.one/programmingschool2/184
ادامه دارد ...
#مبانی_پایتون
➖➖➖➖
آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
❤6👍2
Forwarded from Python Hints
Python Hints
بنظرتون باگ این سورس کد کجاست ؟ @PyHints
این یک باگ کاملا شناخته شده و کاملا تکراری هست؛ ممکنه توی مصاحبههای مختلف هم تجربهاش کرده باشید یا دیده باشید.
یک نمونه مصاحبه Amazon بوده برای پایتون (طرف از یک زبان برنامه نویسی دیگه اومده بود سمت پایتون و دنبال کار بود)
اول برای دوستان تازه کار:
و
البته اینجا نه بخاطر باگی که وجود داره
اگر بخوام خیلی ساده توضیح بدم :
مسئله اصلی اینجاس که نسخه پایتونی که بصورت دیفالت از سایت پایتون دانلود میشه روی
به همین دلیل وقتی از dict ارث بری بکنید احترامی برای متدهای builtin قائل نمیشه (چون توی
راه حل :
@PyHints
یک نمونه مصاحبه Amazon بوده برای پایتون (طرف از یک زبان برنامه نویسی دیگه اومده بود سمت پایتون و دنبال کار بود)
اول برای دوستان تازه کار:
__setitem__
وقتی اجرا میشه که میخواهید یک key - value رو داخل dictionary بریزیدو
__getitem__
وقتی اجرا میشه که میخواهید یک مقدار رو از دیکشری بخونید. البته اینجا نه بخاطر باگی که وجود داره
اگر بخوام خیلی ساده توضیح بدم :
مسئله اصلی اینجاس که نسخه پایتونی که بصورت دیفالت از سایت پایتون دانلود میشه روی
C
کد زده شده و مواردی مثل str, dict, list
از کدهای C
برای اجرا استفاده میکنند. به همین دلیل وقتی از dict ارث بری بکنید احترامی برای متدهای builtin قائل نمیشه (چون توی
C
پیاده سازی شده و کد پایتون شما قابلیت overwrite شدن روی کد C
رو نداره) پس درنهایت چیزی رو میگیرید که توی C
و برای خود پایتون دیکشنری پیاده سازی شدهراه حل :
@PyHints
👍8
Forwarded from Python Hints
توی پایتون ماژولی هست به اسم
رو ندارید باید از
استفاده کنید.
@PyHints
collections
کاربردهای بسیاری داره که درآینده ممکنه بررسی کنیم اما چیزی که ما الان نیاز داریم from collections import UserDict
همیشه یادتون باشه وقتی قراره یک کلاس کاستوم برای نوع داده dict بنویسید؛ حق استفاده از dict
رو ندارید باید از
UserDict
استفاده کنید.
@PyHints
👍8🤔5❤1💯1
Forwarded from Python Hints
چطوری میشه یک شرکت، استارتاپ یا ... رو نابود کرد !؟
موضوع بر میگرده به ۳ سال پیش، یک شرکت (داخلی) برای همکاری به تیم ما پیشنهاد داد و یک مبلغی اعلام شد بعد از چندروز البته اعلام کرد که دستمزد ما ۲ برابر یک شرکت دیگه بوده و به همین دلیل با اون شرکت همکاری میکنند (نه تیم ما، یک دلیل هم همین بود که اونها شرکت ثبت شده هستند و ما یک تیم)
بگذریم، زمانبندی پروژه ۶ ماه عقب افتاد و بعد بالاخره پروژه لانچ شد (اینهارو میدونم چون یکی از دوستانم توی شرکت co-founder بود)
دقیقاً وقتی شرکت به اوج درآمد خودش رسیده بود و قرار بود این پروژه درآمد رو حداقل ۳ برابر کنه پروژه لانچ شد، اما ۱ سال بعد نه تنها درآمد ۳ برابر نشده بود بلکه بدهی پروژه مبلغی حدوداً ۱ میلیاردی بود (برای یک استارتاپ مبلغ خیلی زیادی بود) ۱ سال پول و وقت و ... چندین سال توسعه پروژه در نهایت ۱ میلیارد کسری بودجه با وجود فروش چند ده میلیاردی ؟ چطور ممکن هست ؟
۱- وقتی کار رو میدید دست نیرویی که با پول واقعی پروژه نزده اینطوری میشه.
۲- وقتی کار رو به تیمی میدید که زبان برنامهنویسی رو بخوبی نمیشناسه اینطوری میشه.
۳- وقتی نیرو کار رو از روی چندتا دوره آموزشی یاد میگیره اینطوری میشه.
اینها اولین صحبت من با دوستم قبل از code review بود چون بعد از توضیح منطق بیزینس ۹۹٪ میدونستم مشکل چی هست :
حالا مشکل چی بود:
یک اصطلاحی داریم به اسم
Banker's Rounding
مشکلی هست که با رند کردن اعداد به وجود میاد، اگر درست انجام بشه میانگین رند کردن سود هست برای صاحب بیزینس و اگر اشتباه باشه کاملاً ضرر مالی میشه
یک بخشی از قضیه این موضوع بود و بخش دوم که من توی ۹۰٪
Code Review
هایی که برای استارتاپها انجام میدم میبینم استفاده از نوع داده
Float
هست، اگر قرار به تمرین باشه این نوع داده خیلی هم خوبه ولی وقتی پای پول واقعی وسط هست اگر نمیخواهید کسی رو بدبخت کنید از
Decimal
استفاده کنید.
Decimal
هر ۲ مشکل شمارو حل میکنه، بخصوص مشکل False بودن عبارت زیر :
برای نسل جدید : هیچکس با یک دوره آموزشی برنامهنویس نمیشه، زیاد به دورهها تکیه نکنید.
موضوع بر میگرده به ۳ سال پیش، یک شرکت (داخلی) برای همکاری به تیم ما پیشنهاد داد و یک مبلغی اعلام شد بعد از چندروز البته اعلام کرد که دستمزد ما ۲ برابر یک شرکت دیگه بوده و به همین دلیل با اون شرکت همکاری میکنند (نه تیم ما، یک دلیل هم همین بود که اونها شرکت ثبت شده هستند و ما یک تیم)
بگذریم، زمانبندی پروژه ۶ ماه عقب افتاد و بعد بالاخره پروژه لانچ شد (اینهارو میدونم چون یکی از دوستانم توی شرکت co-founder بود)
دقیقاً وقتی شرکت به اوج درآمد خودش رسیده بود و قرار بود این پروژه درآمد رو حداقل ۳ برابر کنه پروژه لانچ شد، اما ۱ سال بعد نه تنها درآمد ۳ برابر نشده بود بلکه بدهی پروژه مبلغی حدوداً ۱ میلیاردی بود (برای یک استارتاپ مبلغ خیلی زیادی بود) ۱ سال پول و وقت و ... چندین سال توسعه پروژه در نهایت ۱ میلیارد کسری بودجه با وجود فروش چند ده میلیاردی ؟ چطور ممکن هست ؟
۱- وقتی کار رو میدید دست نیرویی که با پول واقعی پروژه نزده اینطوری میشه.
۲- وقتی کار رو به تیمی میدید که زبان برنامهنویسی رو بخوبی نمیشناسه اینطوری میشه.
۳- وقتی نیرو کار رو از روی چندتا دوره آموزشی یاد میگیره اینطوری میشه.
اینها اولین صحبت من با دوستم قبل از code review بود چون بعد از توضیح منطق بیزینس ۹۹٪ میدونستم مشکل چی هست :
حالا مشکل چی بود:
یک اصطلاحی داریم به اسم
Banker's Rounding
مشکلی هست که با رند کردن اعداد به وجود میاد، اگر درست انجام بشه میانگین رند کردن سود هست برای صاحب بیزینس و اگر اشتباه باشه کاملاً ضرر مالی میشه
یک بخشی از قضیه این موضوع بود و بخش دوم که من توی ۹۰٪
Code Review
هایی که برای استارتاپها انجام میدم میبینم استفاده از نوع داده
Float
هست، اگر قرار به تمرین باشه این نوع داده خیلی هم خوبه ولی وقتی پای پول واقعی وسط هست اگر نمیخواهید کسی رو بدبخت کنید از
Decimal
استفاده کنید.
Decimal
هر ۲ مشکل شمارو حل میکنه، بخصوص مشکل False بودن عبارت زیر :
0.3 == 0.1 + 0.1 + 0.1
برای نسل جدید : هیچکس با یک دوره آموزشی برنامهنویس نمیشه، زیاد به دورهها تکیه نکنید.
👍33
Forwarded from دستاوردهای یادگیری عمیق(InTec)
سوال مرحله اول مصاحبه یکی از بچهها در گوگل :
ایشون توی meta دوره Internship رو گذرونده و ترم بعدی مدرک لیسانس رو میگیره برای همین به دنبال استخدامی در شرکتهای غول فناوری هست (سطح استرس بالایی هم داره)
توی مرحله اول ۲ تا سوال داشته ؛ پیاده سازی یک stack با ۲ عملیات بیشتر که خب بیشتر میخواستند بدونند چقدر با Inheritance , OOP توی پایتون آشنا هست
سوال دوم که بنظرم جالب اومد :
یک تابع که خروجی از یک سری از اعمال ریاضی روی ۳ نتیجهی آخر بدست میاد مثلا
اگر مرحله n رو بخوایم :
n-1, n-2, n-3
رو باید داشته باشیم و برای بدست آوردن خروجی بعنوان مثال
(n-1/n-2) + (n-3/2)
میشه.
۲ تا مشکل این دوستمون داشت توی سوال دوم که باعث شده وقت زیادی ازش گرفته بشه :
۱- سوال رو map نتونسته بکنه :
استرس بالا و دید بسیار جزئی باعث شده در نگاه اول متوجه نشه سوال دقیقا جزو مواردی هست که هزاران بار تمرین کرده (دقت کنید این سوال base مشابه fibo داره)
۲- بخاطر اینکه زمان کم نیاره اولین راهحلی که به ذهنش رسیده رو کد زده
Recursion
که خب جواب درستی بوده ولی اگر دقت میکرد میتونست خیلی بهتر خودش رو نشون بده با استفاده از تکنیک
Dynamic Programming
برای مثال من fibo رو به ۳ روش حل کردم :
1- Recursion
2- Dynamic Programming
3- Dynamic Programming with python generator
و هر ۳ مورد رو زمان اجرا گرفتم
توجه کنید سوال
Google Junior Python Developer
بوده و البته مرحله اول (فکر میکنم فقط ۱ مرحله دیگه مصاحبه داشته باشه و بیشتر system design باشه هرچند ساده).
ایشون توی meta دوره Internship رو گذرونده و ترم بعدی مدرک لیسانس رو میگیره برای همین به دنبال استخدامی در شرکتهای غول فناوری هست (سطح استرس بالایی هم داره)
توی مرحله اول ۲ تا سوال داشته ؛ پیاده سازی یک stack با ۲ عملیات بیشتر که خب بیشتر میخواستند بدونند چقدر با Inheritance , OOP توی پایتون آشنا هست
سوال دوم که بنظرم جالب اومد :
یک تابع که خروجی از یک سری از اعمال ریاضی روی ۳ نتیجهی آخر بدست میاد مثلا
اگر مرحله n رو بخوایم :
n-1, n-2, n-3
رو باید داشته باشیم و برای بدست آوردن خروجی بعنوان مثال
(n-1/n-2) + (n-3/2)
میشه.
۲ تا مشکل این دوستمون داشت توی سوال دوم که باعث شده وقت زیادی ازش گرفته بشه :
۱- سوال رو map نتونسته بکنه :
استرس بالا و دید بسیار جزئی باعث شده در نگاه اول متوجه نشه سوال دقیقا جزو مواردی هست که هزاران بار تمرین کرده (دقت کنید این سوال base مشابه fibo داره)
۲- بخاطر اینکه زمان کم نیاره اولین راهحلی که به ذهنش رسیده رو کد زده
Recursion
که خب جواب درستی بوده ولی اگر دقت میکرد میتونست خیلی بهتر خودش رو نشون بده با استفاده از تکنیک
Dynamic Programming
برای مثال من fibo رو به ۳ روش حل کردم :
1- Recursion
2- Dynamic Programming
3- Dynamic Programming with python generator
و هر ۳ مورد رو زمان اجرا گرفتم
توجه کنید سوال
Google Junior Python Developer
بوده و البته مرحله اول (فکر میکنم فقط ۱ مرحله دیگه مصاحبه داشته باشه و بیشتر system design باشه هرچند ساده).
👍9
Forwarded from دستاوردهای یادگیری عمیق(InTec)
راهحلهای سوال مصاحبه گوگل برای
junior python developer.
پ.ن :
نکته مهمی که باید اضافه کنم (یادم نبود) توی روش 1 :
خیلی زود به محدودیت recursive call پایتون هم میخورید؛ اما برای مورد ۲ و ۳ همچین چیزی وجود نداره
که خب بسته به test case مصاحبه ممکنه شما رد بشید.
junior python developer.
پ.ن :
نکته مهمی که باید اضافه کنم (یادم نبود) توی روش 1 :
خیلی زود به محدودیت recursive call پایتون هم میخورید؛ اما برای مورد ۲ و ۳ همچین چیزی وجود نداره
که خب بسته به test case مصاحبه ممکنه شما رد بشید.
👍6❤1
Forwarded from ProgrammingSchool (Python)
#تمرین_پایتون: مرتب سازی کلیدهای دیکشنری با تابع sort
یکی از راههای مرتبسازی دیکشنری ها، استفاده از تابع sort و ذخیره دیکشنری در قالب شی OrderDict است.
برای مرتبسازی دیکشنری با تابع Sort:
۱- از ماژول collection, زیر کلاس OrderedDict را import کنید.
۲- دیکشنری با نام dic تعریف کنید و آن را مقدار دهی اولیه نمایید.
۳- عناصر موجود در دیکشنری به صورت dict.items به تابع sort پاس داده میشود. برای آنکه عناصر مرتبشده، با ترتیب مرتبشده ذخیره شوند از زیر کلاس OrderDict نمونهسازی شده است و عناصر در این نمونه ذخیرهسازی میشوند.
سوال: به نظرتون چه تفاوتی بین دیکشنری ساخته شده توسط تابع dict و نمونه ساخته شده توسط OrderDict وجود دارد؟🤔
#پایتون
#دیکشنری
#تمرینات_طبقه_بندی
آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
یکی از راههای مرتبسازی دیکشنری ها، استفاده از تابع sort و ذخیره دیکشنری در قالب شی OrderDict است.
برای مرتبسازی دیکشنری با تابع Sort:
۱- از ماژول collection, زیر کلاس OrderedDict را import کنید.
۲- دیکشنری با نام dic تعریف کنید و آن را مقدار دهی اولیه نمایید.
۳- عناصر موجود در دیکشنری به صورت dict.items به تابع sort پاس داده میشود. برای آنکه عناصر مرتبشده، با ترتیب مرتبشده ذخیره شوند از زیر کلاس OrderDict نمونهسازی شده است و عناصر در این نمونه ذخیرهسازی میشوند.
سوال: به نظرتون چه تفاوتی بین دیکشنری ساخته شده توسط تابع dict و نمونه ساخته شده توسط OrderDict وجود دارد؟🤔
#پایتون
#دیکشنری
#تمرینات_طبقه_بندی
آدرس کانال:
@Programmingschool2
سایت آموزشی:
https://programmingschool.ir
گروه پرسش و پاسخ:
https://t.iss.one/programmingschool_group
❤3👍3
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
📌 چالش های ساخت اعداد رندوم در کامپیوتر ها
بر خلاف تصور عموم ساخت عدد رندوم دشوار بوده از ابتدا و چالش های زیادی رو طی کرده تا به اینجا رسیده
اگر الگوریتم ساخت عدد رندوم پیدا بشه میتونه خطرناک باشه و هکر ها با اون سو استفاده کنند، و این اتفاق هم افتاده و مورد هایی بوده که میلیون ها دلار دزدیدند،
قبل از سال ۲۰۱۲، اینتل از یک الگوریتم پایه برای تولید اعداد تصادفی با نام Random Number Generator (RNG) استفاده میکرد. این الگوریتم بر اساس شرایط محیطی و زمانی که پردازنده در آن قرار داشت، اعداد تصادفی را تولید میکرد. با این حال، این روش به دلیل اینکه در برخی موارد اعداد تصادفی قابل پیشبینی تولید میکرد، به مرور زمان جای خود را به روشهای بهتری مانند RdRand و RdSeed داد.
در ابتدا، در کامپیوترها اعداد رندوم به صورت سختافزاری تولید میشدند. برای مثال، در دهه ۱۹۴۰ و ۱۹۵۰، اعداد رندوم با استفاده از تجهیزات فیزیکی مانند لامپهای الکترونی و ماسک زنی (Masking) تولید میشدند.
تولید اعداد رندوم (Random number generation) در کامپیوترها معمولاً با استفاده از الگوریتمهای تولید اعداد شبهتصادفی (Pseudo-random number generation algorithms) انجام میشود. این الگوریتمها، با استفاده از یک عدد اولیه (Seed)، دنبالهای از اعداد به صورت غیرقطعی تولید میکنند که به نظر میرسند تصادفی هستند.
در واقع، این دنبالهی اعداد توسط کامپیوتر بر اساس یک فرمول ریاضی تولید میشود و برای تولید هر عدد جدید، از عدد قبلی استفاده میشود. بنابراین، در صورتی که عدد اولیه یکسان باشد، دنبالهی تولید شده تکراری خواهد بود و همیشه به یک دنبالهی ثابت تبدیل میشود.
برای تولید اعداد رندوم با کیفیت و برای کاربردهای حساس، مانند رمزنگاری و شبکههای عصبی، الگوریتمهای پیچیدهتری مانند Mersenne Twister و ISAAC استفاده میشود.
📝 توی کامنت ها اگر ایده یا اطلاعات بیشتری دارید بفرستید
✅ @SEYED_BAX
بر خلاف تصور عموم ساخت عدد رندوم دشوار بوده از ابتدا و چالش های زیادی رو طی کرده تا به اینجا رسیده
اگر الگوریتم ساخت عدد رندوم پیدا بشه میتونه خطرناک باشه و هکر ها با اون سو استفاده کنند، و این اتفاق هم افتاده و مورد هایی بوده که میلیون ها دلار دزدیدند،
قبل از سال ۲۰۱۲، اینتل از یک الگوریتم پایه برای تولید اعداد تصادفی با نام Random Number Generator (RNG) استفاده میکرد. این الگوریتم بر اساس شرایط محیطی و زمانی که پردازنده در آن قرار داشت، اعداد تصادفی را تولید میکرد. با این حال، این روش به دلیل اینکه در برخی موارد اعداد تصادفی قابل پیشبینی تولید میکرد، به مرور زمان جای خود را به روشهای بهتری مانند RdRand و RdSeed داد.
در ابتدا، در کامپیوترها اعداد رندوم به صورت سختافزاری تولید میشدند. برای مثال، در دهه ۱۹۴۰ و ۱۹۵۰، اعداد رندوم با استفاده از تجهیزات فیزیکی مانند لامپهای الکترونی و ماسک زنی (Masking) تولید میشدند.
تولید اعداد رندوم (Random number generation) در کامپیوترها معمولاً با استفاده از الگوریتمهای تولید اعداد شبهتصادفی (Pseudo-random number generation algorithms) انجام میشود. این الگوریتمها، با استفاده از یک عدد اولیه (Seed)، دنبالهای از اعداد به صورت غیرقطعی تولید میکنند که به نظر میرسند تصادفی هستند.
در واقع، این دنبالهی اعداد توسط کامپیوتر بر اساس یک فرمول ریاضی تولید میشود و برای تولید هر عدد جدید، از عدد قبلی استفاده میشود. بنابراین، در صورتی که عدد اولیه یکسان باشد، دنبالهی تولید شده تکراری خواهد بود و همیشه به یک دنبالهی ثابت تبدیل میشود.
برای تولید اعداد رندوم با کیفیت و برای کاربردهای حساس، مانند رمزنگاری و شبکههای عصبی، الگوریتمهای پیچیدهتری مانند Mersenne Twister و ISAAC استفاده میشود.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Forwarded from Python Hints
بنظر شما توی این کد خروجی خط ۲۱ چی هست ؟
آیا میتونید راجب این رفتار توضیح هم بدید ؟
بحثی داشتم با یکی از دوستان راجب این مطلب که یاد مصاحبه مرحله دوم برای آمازون افتادم موضوع مربوط میشه به ۳-۴ سال پیش.
سطح
upper mid-level, senior python
آیا میتونید راجب این رفتار توضیح هم بدید ؟
بحثی داشتم با یکی از دوستان راجب این مطلب که یاد مصاحبه مرحله دوم برای آمازون افتادم موضوع مربوط میشه به ۳-۴ سال پیش.
سطح
upper mid-level, senior python
👍4
Forwarded from Python Hints
Python Hints
بنظر شما توی این کد خروجی خط ۲۱ چی هست ؟ آیا میتونید راجب این رفتار توضیح هم بدید ؟ بحثی داشتم با یکی از دوستان راجب این مطلب که یاد مصاحبه مرحله دوم برای آمازون افتادم موضوع مربوط میشه به ۳-۴ سال پیش. سطح upper mid-level, senior python
همونطوری که احتمالا حدس زدید؛ خروجی خط ۲۱ :
@PyHints
هست.
اما توضیحاتش مهمتر از اینه که بگید خروجی چی هست :
توی پایتون یک موضوعی داریم به اسم
حالا چرا
توی پایتون یک موضوع دیگری هم وجود داره به اسم
پروتوکل
کلاسی در پایتون که شامل
پایتون هم که باشعور وقتی متوجه میشه از پروتوکل
@PyHints
هست.
@PyHints
هست.
اما توضیحاتش مهمتر از اینه که بگید خروجی چی هست :
توی پایتون یک موضوعی داریم به اسم
variable shadowing
اتفاقی که میوفته اینه که توی کد بالا به این موضوعی احترامی گذاشته نمیشه اگر name
توی کد بالا یک property
نبود قطعا متنی که توی خط ۱۹ بهش داده بودیم رو چاپ میکرد؛ حالا چرا
property
باعث شده که به variable shadowing
احترام گذاشته نشه توی پایتون یک موضوع دیگری هم وجود داره به اسم
Descriptor
که خودش ۲ مدل داره و توی کد بالا ما از data descriptor
داریم استفاده میکنیم وقتی شما از property
استفاده میکنید چه به صورت تابع چه بصورت decorator
اون property
در نهایت به صورت data descriptor
تعریف میشه پروتوکل
data descriptor
به این صورت تعریف میشه:کلاسی در پایتون که شامل
dunder method
های :__get__ and __set__ or __delete__
باشه که توی property
هر ۳ مورد وجود داره پایتون هم که باشعور وقتی متوجه میشه از پروتوکل
data descriptor
استفاده شده دیگه از __dict__
موجود برای instance
اطلاعات نمیگیره بلکه __get__
اون data descriptor
رو صدا میزنه به همین دلیل هم خروجی کد بالا @PyHints
هست.
👍4
پست جالب از لینکدین Hootan Hemmati
یه تجربه بی نظیر، شرکت OpenAI یه باگی رو پیدا میکنه تو محصول ChatGPT که به خاطرش سرورهاشون رو خاموش میکنن.
در واقع خیلی ساده بگم اینجوری که من اگر یک پیغام جدیدی مینوشتم امکان داشت این پیغام من در سیستم یکی دیگه نمایش داده بشه.
در واقع برای سیستم کش ChatGPT از دیتابیس Redis استفاده کردن که عملکرد فوقالعاده در سیستم کش داره و برای اینکه هربار نخوان رکوئست بزن به دیتابیس و دیتا ها رو از اول لود کنند.
حالا به جای اینکه برای هر کانکشنی (برای راحتی میتونین هر کار هم فرض کنین) بیان یک Instance از شی Redis بسازند، میان و از سیستم Redis Cluster استفاده می کنند که سربار خیلی کمتری رو به سرورها وارد کنند.
برای برقراری ارتباط بین سرورهاشون که پایتون هست و سیستم کش دیتابسشون که Redis هست، میان و از کتابخانه redis-py استفاده میکنن.
نکته جالب اینجاست که در نوشتن کدهای سمت سرورشون در پایتون از کتابخانه Asyncio استفاده کردند که این کتابخانه بهشون قابلیت نوشتن کدهای Async رو میده.
حالا این کتابخونه میاد یک فضای مشترک کانکشن ها رو بین سرور و کلاستر میسازه که به اسم shared pool میشناسیمش... این توضیحاتی بدو که من نوشتم تا دعوتتون کنم این تجربه ارزشمند رو برین ادامش رو مشتاقانه بخونین.
از اون مقاله هاست که نباید از دست داد.
لینک مقاله:
https://openai.com/blog/march-20-chatgpt-outage
یه تجربه بی نظیر، شرکت OpenAI یه باگی رو پیدا میکنه تو محصول ChatGPT که به خاطرش سرورهاشون رو خاموش میکنن.
در واقع خیلی ساده بگم اینجوری که من اگر یک پیغام جدیدی مینوشتم امکان داشت این پیغام من در سیستم یکی دیگه نمایش داده بشه.
در واقع برای سیستم کش ChatGPT از دیتابیس Redis استفاده کردن که عملکرد فوقالعاده در سیستم کش داره و برای اینکه هربار نخوان رکوئست بزن به دیتابیس و دیتا ها رو از اول لود کنند.
حالا به جای اینکه برای هر کانکشنی (برای راحتی میتونین هر کار هم فرض کنین) بیان یک Instance از شی Redis بسازند، میان و از سیستم Redis Cluster استفاده می کنند که سربار خیلی کمتری رو به سرورها وارد کنند.
برای برقراری ارتباط بین سرورهاشون که پایتون هست و سیستم کش دیتابسشون که Redis هست، میان و از کتابخانه redis-py استفاده میکنن.
نکته جالب اینجاست که در نوشتن کدهای سمت سرورشون در پایتون از کتابخانه Asyncio استفاده کردند که این کتابخانه بهشون قابلیت نوشتن کدهای Async رو میده.
حالا این کتابخونه میاد یک فضای مشترک کانکشن ها رو بین سرور و کلاستر میسازه که به اسم shared pool میشناسیمش... این توضیحاتی بدو که من نوشتم تا دعوتتون کنم این تجربه ارزشمند رو برین ادامش رو مشتاقانه بخونین.
از اون مقاله هاست که نباید از دست داد.
لینک مقاله:
https://openai.com/blog/march-20-chatgpt-outage
Openai
March 20 ChatGPT outage: Here’s what happened
An update on our findings, the actions we’ve taken, and technical details of the bug.
👍11❤1
Forwarded from Python Hints
نحوه تعریف
اگر توی یک پروژه حرفهای مثل کد بالا
همیشه گفتم بازم میگم :
اگر میخوای از یک دولوپر انتقام بگیری یا بیچارهاش کنی فقط ی
مشکل کد چیه :
همهی متا دیتا مربوط به تابعی که
ولی برای
دیباگ کردن همچین کدی آدم رو دیوونه میکنه خروجی رو ببینید
راه حل : پست بعدی
@PyHints
decorator
میتونه نشون بده دولوپر پروژه junior هست یا نه اگر توی یک پروژه حرفهای مثل کد بالا
decorator
تعریف میکنید و بیش از ۳-۴ بار ازش استفاده میشه شما سیگنال junior developer
بودن میدی به کسی که کد رو میخونه.همیشه گفتم بازم میگم :
اگر میخوای از یک دولوپر انتقام بگیری یا بیچارهاش کنی فقط ی
decorator
اینطوری بنویس و توی کل پروژه استفاده کن مشکل کد چیه :
همهی متا دیتا مربوط به تابعی که
decorate
شده مثل func1, func2
رو پاک میکنه و اطلاعات decorator
رو جاش مینوسته توی حالت معمول این اشتباه نیست و منطق درستی هست ولی برای
decorator
خیلی اشتباه داری میزنی.دیباگ کردن همچین کدی آدم رو دیوونه میکنه خروجی رو ببینید
name, docstring
تابع به wrapper
تغییر کرده راه حل : پست بعدی
@PyHints
👍4
Forwarded from Python Hints
Python Hints
نحوه تعریف decorator میتونه نشون بده دولوپر پروژه junior هست یا نه اگر توی یک پروژه حرفهای مثل کد بالا decorator تعریف میکنید و بیش از ۳-۴ بار ازش استفاده میشه شما سیگنال junior developer بودن میدی به کسی که کد رو میخونه. همیشه گفتم بازم میگم : اگر…
راه حل :
خروجی رو اگر دقت کنید docstrign, name تابع به درستی نشون داده شده و debug , .... برای دولوپر بعدی قطعا به مراتب راحت تر خواهد بود.
این ۲ خط تغییر (خط ۱ و ۵) خیلی زندگیها نجات داده و آدمای بزرگی بعد از دیدن این ۲ خط توی کد امید به زندگیشون بالا رفته و دست از خودکشی کشیدن
اگر
@PyHints
functools
مقدس؛ این آخرین پست درباره functools
هست همه موارد مهم این ماژول صحبت شدfrom functools import wraps
به لطف دکوریتور wraps
به پایتون میگیم که meta data
مربوط به تابع اصلی رو نگه داره و اطلاعات تابع wrapper
رو روی اون بازنویسی نکنهخروجی رو اگر دقت کنید docstrign, name تابع به درستی نشون داده شده و debug , .... برای دولوپر بعدی قطعا به مراتب راحت تر خواهد بود.
این ۲ خط تغییر (خط ۱ و ۵) خیلی زندگیها نجات داده و آدمای بزرگی بعد از دیدن این ۲ خط توی کد امید به زندگیشون بالا رفته و دست از خودکشی کشیدن
اگر
decorator
نوشتی تورو خدا این ۲ خط رو اضافه کن (شاید ۱ زندگی رو نجات دادی) @PyHints
👌4👍2
پستی از لینکدین Ali Rahmani
تغییرات جالبی داره اپدیت جدید جنگو . کم کم جمع کنیم بریم روی 4.2 به بالا. داکیومنت رو که مطالعه کنید میگه چندتا از فیچر های قدیمش منسوخ شده یا بعضی ها رو برنامه ریزی کرده که توی جنگو 5 منسوخ کنه.
از جذاب ترین تغیراتش میتونم به موارد زیر اشاره کنم:
1- psycopg3
2- Mitigation for the BREACH attack
3- panel admin night mode
4- models.CharField() :)) max_length is no longer needed
5- KT() expression and all Models and QuerySet updates
نکته اینکه با تغیراتی که داشته با ورژن های قبلی سازگاری نداره و یکم به دردسر خواهیم افتاد احتمالا :))
راستی از پایتون 3.8 به پایین هم ساپورت نمیکنه
تغییرات جالبی داره اپدیت جدید جنگو . کم کم جمع کنیم بریم روی 4.2 به بالا. داکیومنت رو که مطالعه کنید میگه چندتا از فیچر های قدیمش منسوخ شده یا بعضی ها رو برنامه ریزی کرده که توی جنگو 5 منسوخ کنه.
از جذاب ترین تغیراتش میتونم به موارد زیر اشاره کنم:
1- psycopg3
2- Mitigation for the BREACH attack
3- panel admin night mode
4- models.CharField() :)) max_length is no longer needed
5- KT() expression and all Models and QuerySet updates
نکته اینکه با تغیراتی که داشته با ورژن های قبلی سازگاری نداره و یکم به دردسر خواهیم افتاد احتمالا :))
راستی از پایتون 3.8 به پایین هم ساپورت نمیکنه
❤7👍1
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و ششم - شروع به پیاده سازی منو W3Schools
ابتدای این قسمت توی سایت W3Schools لاگین کردم و بخش پروفایلش رو بررسی کردیم که قراره چه چیزی رو پیاده سازی کنیم. بعدش با استفاده از developer tools مرورگر کدهای سایت W3Schools رو بررسی کردیم که چطور منو و بخش های مختلف profile رو پیاده سازی کرده. متوجه شدیم که از flex box استفاده کرده و ما هم ازش استفاده می کنیم. توی این قسمت یکم در مورد قابلیت های HTML5 هم تحقیق کردیم و فهمیدم که بهتره از تگ هایی مثل header, footer, nav, section, article و ... استفاده کنیم تا موتورهای جستجوگر بهتر بتونن با سایت ما ارتباط برقرار کنن و توی نتایج اول گوگل باشیم. بعدش شروع به ساختن منو کردیم و با flex, flex-direction, flex-wrap, justify-content, gap و... هم توی css آشنا شدیم. البته فراموش کردیم که استایل هارو به فایل های css اضافه کنیم که توی جلسه بعدی درستش می کنم. ان شاالله
لینک آپارات:
https://www.aparat.com/v/9jyEn
لینک یوتیوب:
https://youtu.be/KEGESJT_hbo
ابتدای این قسمت توی سایت W3Schools لاگین کردم و بخش پروفایلش رو بررسی کردیم که قراره چه چیزی رو پیاده سازی کنیم. بعدش با استفاده از developer tools مرورگر کدهای سایت W3Schools رو بررسی کردیم که چطور منو و بخش های مختلف profile رو پیاده سازی کرده. متوجه شدیم که از flex box استفاده کرده و ما هم ازش استفاده می کنیم. توی این قسمت یکم در مورد قابلیت های HTML5 هم تحقیق کردیم و فهمیدم که بهتره از تگ هایی مثل header, footer, nav, section, article و ... استفاده کنیم تا موتورهای جستجوگر بهتر بتونن با سایت ما ارتباط برقرار کنن و توی نتایج اول گوگل باشیم. بعدش شروع به ساختن منو کردیم و با flex, flex-direction, flex-wrap, justify-content, gap و... هم توی css آشنا شدیم. البته فراموش کردیم که استایل هارو به فایل های css اضافه کنیم که توی جلسه بعدی درستش می کنم. ان شاالله
لینک آپارات:
https://www.aparat.com/v/9jyEn
لینک یوتیوب:
https://youtu.be/KEGESJT_hbo
👍5