🔺 حذف استرینگ خالی در split
😊 Fast and clean
🔎 @py4ds
>>> s = 'abc,'
>>> s.split(',')
['abc', '']
>>> [item for item in s.split(',') if item]
['abc']
😊 Fast and clean
🔎 @py4ds
👍2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
>>> s = 'سایر رسانه ها,'
>>> s.split(',')
['سایر رسانه ها', '']
>>> list(filter(None, s.split(',')))
['سایر رسانه ها']
Please open Telegram to view this post
VIEW IN TELEGRAM
سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی
🎯یه مقایسه روی این دوتا روش داشته باشیم
پست ریپلای و این پست
🔺به طور کلی استفاده از تابع فیلتر به همراه lambda میتونه سرعت رو بیاره پایین
اما اینجا خبری از lambda نیست پس نتیجه هم احتمالا کند نیست
یه بررسی اجمالی داشتم روی حالتهای مختلف:
حالتی که خودم توی کانال گذاشتم هم سریع هست هم تمیز اما حالتی که دوستمون نوشتن برای مواردی که رشته طولانی و تعداد splitها زیاد بشه میتونه کمی(شاید حدود کمتر از ۲-۳ درصد) سریعتر باشه
🔺 توجه کنید که این یه حالت خاص هست و خود پایتون هم توصیه میکنه که اگر نیاز به لیست هست بهتره از list comprehension (روش اول) استفاده بشه
❗️به طور کلی بهتره اگر نیاز به لیست ندارید کد رو طوری بنویسید که با جنریتور(خروجی مستقیم filter,map,...) کار کنه؛ اینطوری حالت ایدهآل هست!
🔎 @py4ds
پست ریپلای و این پست
🔺به طور کلی استفاده از تابع فیلتر به همراه lambda میتونه سرعت رو بیاره پایین
اما اینجا خبری از lambda نیست پس نتیجه هم احتمالا کند نیست
یه بررسی اجمالی داشتم روی حالتهای مختلف:
حالتی که خودم توی کانال گذاشتم هم سریع هست هم تمیز اما حالتی که دوستمون نوشتن برای مواردی که رشته طولانی و تعداد splitها زیاد بشه میتونه کمی(شاید حدود کمتر از ۲-۳ درصد) سریعتر باشه
🔺 توجه کنید که این یه حالت خاص هست و خود پایتون هم توصیه میکنه که اگر نیاز به لیست هست بهتره از list comprehension (روش اول) استفاده بشه
❗️به طور کلی بهتره اگر نیاز به لیست ندارید کد رو طوری بنویسید که با جنریتور(خروجی مستقیم filter,map,...) کار کنه؛ اینطوری حالت ایدهآل هست!
🔎 @py4ds
Telegram
Python for Data Science
🔺 حذف استرینگ خالی در split
>>> s = 'abc,'
>>> s.split(',')
['abc', '']
>>> [item for item in s.split(',') if item]
['abc']
😊 Fast and clean
🔎 @py4ds
>>> s = 'abc,'
>>> s.split(',')
['abc', '']
>>> [item for item in s.split(',') if item]
['abc']
😊 Fast and clean
🔎 @py4ds
🔥4
Python for Data Science
🔺چند روزی هست که با کمک یکی از دوستان یه پروژه جالب شروع کردم. 🔹توی این پروژه میتونید از پوشه یک پکیج از قبل آماده شده، دو پکیج whl که یکی به صورت obfuscate شده (اصلی) و یکی فقط شامل interfaces ساختارها هست بسازید. 👈پروژه اینجاست هنوز README اش آماده نشده…
🔺قبلا در این مورد صحبت کرده بودم
اما الان میخوام بیشتر توضیح بدم
‼️یکی از قابلیتهای پایتون این هست که شما میتونید کدهایی با سورس بسته تولید کنید اصطلاحا به این مدل کدها کدهای آبفاسکیت یا مبهم شده میگن
❗️کدی که آبفاسکیت میشه میتونه بعد از یک مدت زمان خاص اکسپایر بشه و دیگه اجرا نشه یا مثلا فقط از طریق یک ماژول خاص(استارتر) اجرا بشه و ماژولهای دیگهی اون به تنهایی اجرا نشن
❓چرا کد نیاز به کد آبفاسکیت داریم؟ دلایل زیادی ممکنه وجود داشته باشه از جمله توسعه دانشهایی که برای یک شرکت درآمدزایی داره و با عمومی شدنش ممکنه به درآمد شرکت ضربه زیادی وارد بشه. دلیل دیگه اینه که ممکنه ویرایش یک کد باعث اختلال توی الگوریتم از پیش تعیین شده بشه پس برای اینکه از تغییرات جلوگیری بشه اونو آبفاسکیت میکنن
در اینکه آیا این کار مفید هست یا نه میشه بحث کرد. شاید یه جایی واقعا آبفاسکیت کردن ضررش بیشتر از سودش باشه!
اما در مورد پروژه
من قبلا با کدهایی کار میکردم که آبفاسکیت بودن و مبهم شدنشون باعث میشد نشه به متدها و خواص داخلی اشیایی که کدشون آبفاسکیت شده دسترسی داشت
در کل برای کسی که داره از یک کد آبفاسکیت شده استفاده میکنه هیچ چیزی عذاب آور تر از این نیست که بعد از دات چیزی رو نبینه🤯
این پروژه دقیقا چیه؟
یک قالب هست برای کدهایی که قراره آبفاسکیت بشن و در اختیار دیگران قرار بگیرن🫤
چطوری کار میکنه؟
شما باید کدتون رو در قالب یک پکیج پایتونی آماده کنید! یکی از مهمترین بخشهای این کار هم نوشتن فایل setup.py هست😮
👈کد خودتون رو میتونید توی یه پوشه مشابه چیزی که میبینید template/src_pkg بذارید
🫵یادتون باشه که یه پروژه خوب پروژهای هست که بشه متدها و توابع داخلیاش رو هم دید پس بهتره که یه پوشه مثل template/stub_pkg هم داشته باشید و توی اون هم یه فایل setup.py برای پکیج stub بذارید
پکیج stub چیه؟
توصیه میکنم برای درک بهتر pep561 رو بخونید.
خلاصه: این یک پکیج شامل فایلهایی مشابه با ساختار پروژه هست که هیچ کد قابل اجرایی توش نیست و صرفا یک سری فایل با پسوند .pyi توش هست که نام تمام ساختارهایی مثل توابع و کلاسها و همچنین نام و نوع پارامترهای ورودی و نوع خروجی اونها با استفاده از type hinting تعریف شده!
تمام LSP(Language Server Protocol) ها ابتدا دنبال فایلهای .pyi میگردن و ساختار پروژه رو از روی اون به کاربر نشون میدن؛ اگر چنین فایلی وجود نداشت میرن سراغ فایل .py
🫴پس اینجا یه امکان خوب داریم تا ساختار پروژه رو(بدون کدهای داخلی) توش نشون بدیم!
من بلد نیستم فایل .pyi رو بنویسم چیکار کنم؟
پکیج mypy توسط بزرگان پایتون از جمله خود آقای روسوم در حال توسعه هست این پکیج ابزاری(stubgen) داره که میتونید باهاش این فایلها رو ایجاد کنید🤗
تهش رو بگو خسته شدیم!
هیچی دیگه این پروژه ۲ تا پکیج whl براتون میسازه یکی پکیج اصلی شما به صورت آبفاسکیت هست و دیگری هم پکیج stub که هر دو رو میشه با pip نصب کرد
🤌خوبیش اینه که حداقل کد آبفاسکیت رو میشه ورژن زد و روی مخزنهای pipطور، نگهداری کرد و اینکه تغییرات ساختاری اون رو هم با پکیج stub دید!
🤝
🔎 @py4ds
اما الان میخوام بیشتر توضیح بدم
‼️یکی از قابلیتهای پایتون این هست که شما میتونید کدهایی با سورس بسته تولید کنید اصطلاحا به این مدل کدها کدهای آبفاسکیت یا مبهم شده میگن
❗️کدی که آبفاسکیت میشه میتونه بعد از یک مدت زمان خاص اکسپایر بشه و دیگه اجرا نشه یا مثلا فقط از طریق یک ماژول خاص(استارتر) اجرا بشه و ماژولهای دیگهی اون به تنهایی اجرا نشن
❓چرا کد نیاز به کد آبفاسکیت داریم؟ دلایل زیادی ممکنه وجود داشته باشه از جمله توسعه دانشهایی که برای یک شرکت درآمدزایی داره و با عمومی شدنش ممکنه به درآمد شرکت ضربه زیادی وارد بشه. دلیل دیگه اینه که ممکنه ویرایش یک کد باعث اختلال توی الگوریتم از پیش تعیین شده بشه پس برای اینکه از تغییرات جلوگیری بشه اونو آبفاسکیت میکنن
در اینکه آیا این کار مفید هست یا نه میشه بحث کرد. شاید یه جایی واقعا آبفاسکیت کردن ضررش بیشتر از سودش باشه!
اما در مورد پروژه
من قبلا با کدهایی کار میکردم که آبفاسکیت بودن و مبهم شدنشون باعث میشد نشه به متدها و خواص داخلی اشیایی که کدشون آبفاسکیت شده دسترسی داشت
در کل برای کسی که داره از یک کد آبفاسکیت شده استفاده میکنه هیچ چیزی عذاب آور تر از این نیست که بعد از دات چیزی رو نبینه🤯
این پروژه دقیقا چیه؟
یک قالب هست برای کدهایی که قراره آبفاسکیت بشن و در اختیار دیگران قرار بگیرن🫤
چطوری کار میکنه؟
شما باید کدتون رو در قالب یک پکیج پایتونی آماده کنید! یکی از مهمترین بخشهای این کار هم نوشتن فایل setup.py هست😮
👈کد خودتون رو میتونید توی یه پوشه مشابه چیزی که میبینید template/src_pkg بذارید
🫵یادتون باشه که یه پروژه خوب پروژهای هست که بشه متدها و توابع داخلیاش رو هم دید پس بهتره که یه پوشه مثل template/stub_pkg هم داشته باشید و توی اون هم یه فایل setup.py برای پکیج stub بذارید
پکیج stub چیه؟
توصیه میکنم برای درک بهتر pep561 رو بخونید.
خلاصه: این یک پکیج شامل فایلهایی مشابه با ساختار پروژه هست که هیچ کد قابل اجرایی توش نیست و صرفا یک سری فایل با پسوند .pyi توش هست که نام تمام ساختارهایی مثل توابع و کلاسها و همچنین نام و نوع پارامترهای ورودی و نوع خروجی اونها با استفاده از type hinting تعریف شده!
تمام LSP(Language Server Protocol) ها ابتدا دنبال فایلهای .pyi میگردن و ساختار پروژه رو از روی اون به کاربر نشون میدن؛ اگر چنین فایلی وجود نداشت میرن سراغ فایل .py
🫴پس اینجا یه امکان خوب داریم تا ساختار پروژه رو(بدون کدهای داخلی) توش نشون بدیم!
من بلد نیستم فایل .pyi رو بنویسم چیکار کنم؟
پکیج mypy توسط بزرگان پایتون از جمله خود آقای روسوم در حال توسعه هست این پکیج ابزاری(stubgen) داره که میتونید باهاش این فایلها رو ایجاد کنید🤗
تهش رو بگو خسته شدیم!
هیچی دیگه این پروژه ۲ تا پکیج whl براتون میسازه یکی پکیج اصلی شما به صورت آبفاسکیت هست و دیگری هم پکیج stub که هر دو رو میشه با pip نصب کرد
🤌خوبیش اینه که حداقل کد آبفاسکیت رو میشه ورژن زد و روی مخزنهای pipطور، نگهداری کرد و اینکه تغییرات ساختاری اون رو هم با پکیج stub دید!
🤝
🔎 @py4ds
Python Enhancement Proposals (PEPs)
PEP 561 – Distributing and Packaging Type Information | peps.python.org
PEP 484 introduced type hinting to Python, with goals of making typing gradual and easy to adopt. Currently, typing information must be distributed manually. This PEP provides a standardized means to leverage existing tooling to package and distribute t...
👏4
Forwarded from 🐍 Python & Raspberry 🐍 (DailyProjects)
✔️ شاید با شنیدن کلمهی ORM همهمون یاد SQLAlchamy یا Django ORM بیوفتیم، باشه اینا خیلی خوبن ولی لایبرریهای جدیدی که نوشته میشن دارن از تمام language featureهای نایس عه پایتون ۳ خصوصا 3.6 به بعد (Type Hints, F strings and async/await)
با قدرت استفاده میکنن و زیبایی خلق میکنن.
پیکولو، یکی از همین کتابخونههاست.
نویسندهی پیکولو چون از اوایل روزهای کاریش غرق در دنیای async بوده این ORM رو به صورت async first مینویسه :))
ولی میشه ازش به صورت sync هم استفاده کرد.
✔️ از دیگر ویژگیهاش
• A builtin playground, which makes learning a breeze.
• Tab completion support - works great with iPython and VSCode.
• Batteries included - a User model, authentication, migrations, an admin GUI, and more.
• Modern Python - fully type annotated.
• Make your codebase modular and scalable with Piccolo apps (similar to Django apps) 👌
میتونید ازش به عنوان یه کوئری بیلدر استفاده کنید:
# Select:
await Band.select(
Band.name
).where(
Band.popularity > 100
)
یا مثل یه ORM عادی باهاش رفتار کنید:
# To fetch an object from the database, and update it:
b = await Band.objects().get(Band.name == 'Pythonistas')
b.popularity = 10000
await b.save()
✔️ این ORM بهترین عملکرد رو با postgresql داره ولی از sqlite هم پشتیبانی میکنه و همچنین قسمت زیبای ماجرا اینه که از:
Starlette, FastAPI, BlackSheep, Xpresso and Starlite are currently supported.
هم برای ساختن web app های نایس پشتیبانی میکنه :))
🐙 https://github.com/piccolo-orm/piccolo
#m4hdi
#ORM
#library
#async
〰〰〰〰〰〰
©raspberry_python
دنبال کردن هشتگ m4hdi
دنبال کردن هشتگ orm
دنبال کردن هشتگ library
دنبال کردن هشتگ async
با قدرت استفاده میکنن و زیبایی خلق میکنن.
پیکولو، یکی از همین کتابخونههاست.
نویسندهی پیکولو چون از اوایل روزهای کاریش غرق در دنیای async بوده این ORM رو به صورت async first مینویسه :))
ولی میشه ازش به صورت sync هم استفاده کرد.
✔️ از دیگر ویژگیهاش
• A builtin playground, which makes learning a breeze.
• Tab completion support - works great with iPython and VSCode.
• Batteries included - a User model, authentication, migrations, an admin GUI, and more.
• Modern Python - fully type annotated.
• Make your codebase modular and scalable with Piccolo apps (similar to Django apps) 👌
میتونید ازش به عنوان یه کوئری بیلدر استفاده کنید:
# Select:
await Band.select(
Band.name
).where(
Band.popularity > 100
)
یا مثل یه ORM عادی باهاش رفتار کنید:
# To fetch an object from the database, and update it:
b = await Band.objects().get(Band.name == 'Pythonistas')
b.popularity = 10000
await b.save()
✔️ این ORM بهترین عملکرد رو با postgresql داره ولی از sqlite هم پشتیبانی میکنه و همچنین قسمت زیبای ماجرا اینه که از:
Starlette, FastAPI, BlackSheep, Xpresso and Starlite are currently supported.
هم برای ساختن web app های نایس پشتیبانی میکنه :))
🐙 https://github.com/piccolo-orm/piccolo
#m4hdi
#ORM
#library
#async
〰〰〰〰〰〰
©raspberry_python
دنبال کردن هشتگ m4hdi
دنبال کردن هشتگ orm
دنبال کردن هشتگ library
دنبال کردن هشتگ async
GitHub
GitHub - piccolo-orm/piccolo: A fast, user friendly ORM and query builder which supports asyncio.
A fast, user friendly ORM and query builder which supports asyncio. - piccolo-orm/piccolo
🔹 تاپل(tuple) در پایتون
✍چیزی که معمولا در رابطه با پایتون آموزش داده میشه اینه که تعریف تاپل با استفاده از پرانتز انجام میشه
📍دو عبارت زیر رو ببینید
🔺با وجود داشتن پرانتز چرا a تاپل نیست؟
🔹جواب: چون هیچ علامت «کاما» یی وجود نداره که سمت راست رو به صورت یک ساختار چندمقداری نشون بده ضمن اینکه پرانتز یکی از علائم ریاضی هست و به این صورت ۵ داخل پرانتز با عدد ۵ تفاوتی نداره 😃
🔺آیا برای تعریف تاپل حتما به پرانتز نیاز داریم؟
🔹جواب: خیر! برای تعریف تاپل بیشتر از پرانتز به کاما احتیاج داریم!😉
🔺فرق لیست و تاپل چیه؟
🔹جواب: مهمترین تفاوتشون، تغییر پذیری لیست و تغییر ناپذیری تاپل هست؛ به این صورت که عناصر لیست ساخته شده بدون بازتعریف و با استفاده از قابلیتهای پایتون یا متدهای داخلی خودش میتونه حذف یا اضافه بشه اما هرنوع دستکاری قابل انجام روی تاپل، منجر به بازتعریف اون میشه!
🔸منظور از بازتعریف: حذف کردن از حافظه و ایجاد دوباره اون در حافظه
🔺فرقهای دیگهشون چیه؟
🔹جواب: تاپل متدهای کمی داره (۲تا) اما لیست یازده متد برای دستکاری و تغییر داره اما این مسئله باعث میشه که سرعت پردازش در تاپل نسبت به لیست بیشتر باشه!
🔺تاپل کجا به درد میخوره؟
🔹جواب: معمولا هرجایی که نیاز به مجموعه ثابتی از عناصر مرتب دارید میشه استفاده کرد مثلا زوج مرتب، ۳تایی مرتب و ...
☑️شکل متداولی که برای زوج مرتب نوشته میشه به این صورت هست
pairs = [(1,2), (3,4), (5,6)]
🔺چرا اینطوری👇 نمینویسن؟
([1,2], [3,4], [5,6])
🔹جواب: عناصر داخلی تاپل لیست هستن و ممکنه در اثر کدنویسی اشتباه تغییر کنن اما لیستی از تاپلها احتمال اشتباه کمتری داره و زوج مرتبها تغییرناپذیر هستن!
🔸ضمن اینکه کپی کردن(کم عمق) لیستی از تاپلها نتیجه کاملا مستقلی میده ولی کپی کردن(کم عمق) تاپلی از لیستها منجر به نتیجه مستقل نخواهد شد!
🔸اما اگر از ساختار لیستی از تاپلها استفاده کنیم چنین مشکلی پیش نمیاد چون اصولاً نمیشه مقداری رو درون تاپل تغییر داد و حتی اگر هم تغییر بدیم روی مقدار اصلی تغییری اتفاق نمیافته!👌
🔎 @py4ds
✍چیزی که معمولا در رابطه با پایتون آموزش داده میشه اینه که تعریف تاپل با استفاده از پرانتز انجام میشه
📍دو عبارت زیر رو ببینید
a = (5)
b = 5,
type(a) # int
type(b) # tuple
🔺با وجود داشتن پرانتز چرا a تاپل نیست؟
🔹جواب: چون هیچ علامت «کاما» یی وجود نداره که سمت راست رو به صورت یک ساختار چندمقداری نشون بده ضمن اینکه پرانتز یکی از علائم ریاضی هست و به این صورت ۵ داخل پرانتز با عدد ۵ تفاوتی نداره 😃
🔺آیا برای تعریف تاپل حتما به پرانتز نیاز داریم؟
🔹جواب: خیر! برای تعریف تاپل بیشتر از پرانتز به کاما احتیاج داریم!😉
🔺فرق لیست و تاپل چیه؟
🔹جواب: مهمترین تفاوتشون، تغییر پذیری لیست و تغییر ناپذیری تاپل هست؛ به این صورت که عناصر لیست ساخته شده بدون بازتعریف و با استفاده از قابلیتهای پایتون یا متدهای داخلی خودش میتونه حذف یا اضافه بشه اما هرنوع دستکاری قابل انجام روی تاپل، منجر به بازتعریف اون میشه!
🔸منظور از بازتعریف: حذف کردن از حافظه و ایجاد دوباره اون در حافظه
🔺فرقهای دیگهشون چیه؟
🔹جواب: تاپل متدهای کمی داره (۲تا) اما لیست یازده متد برای دستکاری و تغییر داره اما این مسئله باعث میشه که سرعت پردازش در تاپل نسبت به لیست بیشتر باشه!
🔺تاپل کجا به درد میخوره؟
🔹جواب: معمولا هرجایی که نیاز به مجموعه ثابتی از عناصر مرتب دارید میشه استفاده کرد مثلا زوج مرتب، ۳تایی مرتب و ...
☑️شکل متداولی که برای زوج مرتب نوشته میشه به این صورت هست
pairs = [(1,2), (3,4), (5,6)]
🔺چرا اینطوری👇 نمینویسن؟
([1,2], [3,4], [5,6])
🔹جواب: عناصر داخلی تاپل لیست هستن و ممکنه در اثر کدنویسی اشتباه تغییر کنن اما لیستی از تاپلها احتمال اشتباه کمتری داره و زوج مرتبها تغییرناپذیر هستن!
🔸ضمن اینکه کپی کردن(کم عمق) لیستی از تاپلها نتیجه کاملا مستقلی میده ولی کپی کردن(کم عمق) تاپلی از لیستها منجر به نتیجه مستقل نخواهد شد!
import copy
a1 = ([1,2], [3,4], [5,6])
b1 = copy.copy(a1)
b1[0][0] = 7
print(a1)
print(b1)
#output:
# ([7,2], [3,4], [5,6])
# ([7,2], [3,4], [5,6])
🔸اما اگر از ساختار لیستی از تاپلها استفاده کنیم چنین مشکلی پیش نمیاد چون اصولاً نمیشه مقداری رو درون تاپل تغییر داد و حتی اگر هم تغییر بدیم روی مقدار اصلی تغییری اتفاق نمیافته!👌
🔎 @py4ds
👍3
Forwarded from جنگولرن
✅ آیا همیشه بهتره از آخرین نسخه پایتون برای همه پروژه ها استفاده کنیم؟
نظر چند تا از دوستان با تجربه در این مورد:
✔️یکسری پکیج هایی که اپدیت ندادن از ۳.۹ به ۳.۱۰ نیاز به یکسری تغییرات ریز دارن که باید فورک کنی دستی اپدیت کنی. ولی من خودم از ۳.۱۰ استفاده میکنم همه جا
✔️چون رو ۳.۱۰ یک تایمی انقدر سر پکیج ها ارور خوردم اومدم ۳.۹ همچی اوکی بود و اینکه الان دیفالت ۳.۱۰ وصله اوکی، ولی قدیمی ها روی ۳.۸ و ۳.۹ موندن دیگ
✔️تقریبا تمام پروژه هایی که تجاری هستن پایتون ۳.۸ و ۳.۹ استفاده میکنم. پروژه های استارتاپی و شخصی و ... آخرین نسخه پایتون (فکرکنم ۳.۱۱) برای من اینطوریه. روی همین ۳.۸ و ۳.۹ تا حالا چندین بار سر package conflict سرویس شدیم جرات نداریم بالاتر ببریم توی پروژه هایی که حساسن
✔️ببین من معتقدم که بسته به نیازت باید بری جلو و میدونم این خیلی کلیشه ای هست ولی اگر کاری نداشته باشم و لنگ نسخه بالا تر نباشم ۳.۹ ولی مثلاً من الان تفاوت سرعتم با ۳.۱۰ مشهوده و نیاز دارم سریع تر باشم توی یه پروژه دیگه با ۳.۱۰ میرم جلو
🙏🏻 شما هم نظر خودتون رو بدید (خصوصی هم بگید اوکیه). نظرات بقیه رو هم به کامنت ها اضافه میکنم
نظر چند تا از دوستان با تجربه در این مورد:
✔️یکسری پکیج هایی که اپدیت ندادن از ۳.۹ به ۳.۱۰ نیاز به یکسری تغییرات ریز دارن که باید فورک کنی دستی اپدیت کنی. ولی من خودم از ۳.۱۰ استفاده میکنم همه جا
✔️چون رو ۳.۱۰ یک تایمی انقدر سر پکیج ها ارور خوردم اومدم ۳.۹ همچی اوکی بود و اینکه الان دیفالت ۳.۱۰ وصله اوکی، ولی قدیمی ها روی ۳.۸ و ۳.۹ موندن دیگ
✔️تقریبا تمام پروژه هایی که تجاری هستن پایتون ۳.۸ و ۳.۹ استفاده میکنم. پروژه های استارتاپی و شخصی و ... آخرین نسخه پایتون (فکرکنم ۳.۱۱) برای من اینطوریه. روی همین ۳.۸ و ۳.۹ تا حالا چندین بار سر package conflict سرویس شدیم جرات نداریم بالاتر ببریم توی پروژه هایی که حساسن
✔️ببین من معتقدم که بسته به نیازت باید بری جلو و میدونم این خیلی کلیشه ای هست ولی اگر کاری نداشته باشم و لنگ نسخه بالا تر نباشم ۳.۹ ولی مثلاً من الان تفاوت سرعتم با ۳.۱۰ مشهوده و نیاز دارم سریع تر باشم توی یه پروژه دیگه با ۳.۱۰ میرم جلو
🙏🏻 شما هم نظر خودتون رو بدید (خصوصی هم بگید اوکیه). نظرات بقیه رو هم به کامنت ها اضافه میکنم
👍2
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
مشکل سال 2038 چیست؟!
سوالش باحالیه مگه نه؟! نه پایان جهان نیست، تقویم قوم شبهمایاها هم تموم نمیشه، فضاییها هم حمله نمیکنن... یه اتفاق خطرناکتری ممکنه بیفته...🤭
ممکنه زمان کامپیوتر شما یهو 137 ســـــــــــــــال برگرده به عقب🥴
=+=+=+=+=+=+=+=+=+=+
حوالی سال 1970 که داشتن پروتکلهارو طراحی میکردن، باید مفهوم زمان رو با دقت ثانیه توی پروتکلهای مختلف یجوری ذخیره میکردن...
یه استانداردی دادن به اسم
Timestamp
یا برچسب زمانی، یه استاندارد یونیکسی هست که الان اکثر سیستمهای ما + اینترنت با اون کار میکنه،
مقدارش تعداد ثانیههایی هست که از سال 1970 تا این لحظه گذشته...😬
یعنی 1970 رو گرفتن مبدا زمان و با این کار 69 سال قبل و بعد از 1970 توی کامپیوتر مدل کردن.
مثلا تایماستمپ لحظه فعلی که من دارم این پیامو مینویسم هست:
1678537870
این یعنی 1678537870 ثانیه از 1970 گذشته... این توی خیــــلی از زبانها هست، مثلا اگه توی PHP بدمش به تابع date میگه که:
ساعتش به وقت ایران نیست، و اینکه جزئیات تابعش اصلا مهم نیست...
ولی جالبه که خیلیا نمیدونن که سیستمشون با این تایماستمپ داره میچرخه...
میتونین پرتکل NTP رو بخونین چیزای جذابی داره....
Network Time Protocol
=+=+=+=+=+=+=+=+=+=+=+=+
حالا مشکل کجاست؟
این تایم استمپ یا برچسب زمانی داره توی خیــــلی از رکوئست و ریسپانس ها انکپسوله میشه و میره و میاد...
برای همین باید برای ذخیره سازیش کمترین طول ممکن رو استفاده کنن که بهینه باشه.... اینا تایم استمپ رو اینتیجر گرفتن...
اینتیجر مثل هر زبان برنامهنویسی ، 4 بایت فضا اشغال میکنه...
اینا اون موقعی که طراحیش کردن گفتن که این ساختار تاااااا 70 سال دیگه کار میکنه... همینقدر بسه... اون موقع آیندگان یه فکری میکنن *-*
اتفاقی که میافته اینه که سال 2038 4 بایت پر میشه :)) و سرریز میکنه.... اصلاحا میگن اورفلو میکنه :3
یعنی تعداد ثانیه ها میشه
2147483647
و یک ثانیه که بگذره از 4 بایت (32 بیت) اورفلو میکنه و میشه 33 بیت و بیت علامت 0 میشه و عدد منفی میشه...🥴 شاید برای هضمش لازم باشه که روی کاغذ باینریش رو بنویسین.
*گیفش رو میفرستم پایین*
اگه مثلا 8 بایت میگرفتن میتونستن تا ملیاردها سال دیگه رو بدون اشکال پیش برن... ولی غیر بهینه بود...
خیلی از سیستما همین الان جلوی این اتفاق رو گرفتن... و خیلی از سیستمها هم اصلا روهشون خبر نداره😬 نشستن دارن خودشونو باد میزنن، اگه تا 2038 ایران متلاشی نشده باشه و آبش تموم نشده باشه، بهتون قول میدم نصف سیستماش از کار میافته *-*
=+=+=+=+=+=+=+=+=+=+=+
این مشکل از اولشم میدونستن که بوجود میاد... ولی بهترین راه این بود که 50 سال دیگه آیندهگان کامپیوترهاشون رو به روز کنن!!! یا محور قراردادی رو از 1970 تغییر بدن...
این مشکل بزرگیه که باید روش فکر بشه
مساله اگر فقط نرمافزاری بود مشکلی نبود ، یه پج میدادن حل میشد...!
ولی بسیــــــــــــاری از پیاده سازی های تایم سخت افزاری هستن!... مثلا طرف روی FPGA یا میکروکنترلر یا ROM {که قابل تغییر نیست} گرفته timestamp رو مدلسازی کرده...، یا توی امبدد سیستمها اینکارو کرده...
اون سخت افزارا کلا منسوخ میشن...!
ولی چیز جالبیه...😆
=+=+=+=+=+=+=+=+=+=+
سوالش باحالیه مگه نه؟! نه پایان جهان نیست، تقویم قوم شبهمایاها هم تموم نمیشه، فضاییها هم حمله نمیکنن... یه اتفاق خطرناکتری ممکنه بیفته...🤭
ممکنه زمان کامپیوتر شما یهو 137 ســـــــــــــــال برگرده به عقب🥴
=+=+=+=+=+=+=+=+=+=+
حوالی سال 1970 که داشتن پروتکلهارو طراحی میکردن، باید مفهوم زمان رو با دقت ثانیه توی پروتکلهای مختلف یجوری ذخیره میکردن...
یه استانداردی دادن به اسم
Timestamp
یا برچسب زمانی، یه استاندارد یونیکسی هست که الان اکثر سیستمهای ما + اینترنت با اون کار میکنه،
مقدارش تعداد ثانیههایی هست که از سال 1970 تا این لحظه گذشته...😬
یعنی 1970 رو گرفتن مبدا زمان و با این کار 69 سال قبل و بعد از 1970 توی کامپیوتر مدل کردن.
مثلا تایماستمپ لحظه فعلی که من دارم این پیامو مینویسم هست:
1678537870
این یعنی 1678537870 ثانیه از 1970 گذشته... این توی خیــــلی از زبانها هست، مثلا اگه توی PHP بدمش به تابع date میگه که:
echo date("m/d/Y h:i:s a", 1678537870);03/11/2023 12:31:10 pm
ساعتش به وقت ایران نیست، و اینکه جزئیات تابعش اصلا مهم نیست...
ولی جالبه که خیلیا نمیدونن که سیستمشون با این تایماستمپ داره میچرخه...
میتونین پرتکل NTP رو بخونین چیزای جذابی داره....
Network Time Protocol
=+=+=+=+=+=+=+=+=+=+=+=+
حالا مشکل کجاست؟
این تایم استمپ یا برچسب زمانی داره توی خیــــلی از رکوئست و ریسپانس ها انکپسوله میشه و میره و میاد...
برای همین باید برای ذخیره سازیش کمترین طول ممکن رو استفاده کنن که بهینه باشه.... اینا تایم استمپ رو اینتیجر گرفتن...
اینتیجر مثل هر زبان برنامهنویسی ، 4 بایت فضا اشغال میکنه...
اینا اون موقعی که طراحیش کردن گفتن که این ساختار تاااااا 70 سال دیگه کار میکنه... همینقدر بسه... اون موقع آیندگان یه فکری میکنن *-*
اتفاقی که میافته اینه که سال 2038 4 بایت پر میشه :)) و سرریز میکنه.... اصلاحا میگن اورفلو میکنه :3
یعنی تعداد ثانیه ها میشه
2147483647
و یک ثانیه که بگذره از 4 بایت (32 بیت) اورفلو میکنه و میشه 33 بیت و بیت علامت 0 میشه و عدد منفی میشه...🥴 شاید برای هضمش لازم باشه که روی کاغذ باینریش رو بنویسین.
*گیفش رو میفرستم پایین*
اگه مثلا 8 بایت میگرفتن میتونستن تا ملیاردها سال دیگه رو بدون اشکال پیش برن... ولی غیر بهینه بود...
خیلی از سیستما همین الان جلوی این اتفاق رو گرفتن... و خیلی از سیستمها هم اصلا روهشون خبر نداره😬 نشستن دارن خودشونو باد میزنن، اگه تا 2038 ایران متلاشی نشده باشه و آبش تموم نشده باشه، بهتون قول میدم نصف سیستماش از کار میافته *-*
=+=+=+=+=+=+=+=+=+=+=+
این مشکل از اولشم میدونستن که بوجود میاد... ولی بهترین راه این بود که 50 سال دیگه آیندهگان کامپیوترهاشون رو به روز کنن!!! یا محور قراردادی رو از 1970 تغییر بدن...
این مشکل بزرگیه که باید روش فکر بشه
مساله اگر فقط نرمافزاری بود مشکلی نبود ، یه پج میدادن حل میشد...!
ولی بسیــــــــــــاری از پیاده سازی های تایم سخت افزاری هستن!... مثلا طرف روی FPGA یا میکروکنترلر یا ROM {که قابل تغییر نیست} گرفته timestamp رو مدلسازی کرده...، یا توی امبدد سیستمها اینکارو کرده...
اون سخت افزارا کلا منسوخ میشن...!
ولی چیز جالبیه...😆
=+=+=+=+=+=+=+=+=+=+
👍7
🔺 در مورد تغییر سیاست در مورد ساعت تابستانی در ایران
هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید.
🔹 در این تغییر ممکن است برخی اشکالات در پیادهسازیهای نرمافزاری نمایان شود که مهمترین آن در نظر گرفتن زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادههاست
اگر از زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادهها استفاده شود میتواند خطای زیر رخ دهد.
❓تصور کنید در روز پایانی شهریور هستیم و قرار است در نیمه شب زمان یک ساعت به عقب کشیده شود مثل زیر
2022-09-20 23:00:00+04:30
...
2022-09-20 23:59:59+04:30
2022-09-20 23:00:00+03:30
میبینید که اگر منطقهی زمانی ذکر نشود از نظر توالی زمانی مشکل خواهیم داشت و ممکن است دادهها به شکل درستی ذخیره نشوند.
‼️راهکار: تمام دادههای زمانی در دیتابیس و در هنگام داده برداری باید با منطقهی زمانی صفر (UTC) ذخیره شوند و هنگام نمایش به کاربر در سمت کلاینت برای همان کاربر به منطقهی زمانی وی تبدیل شوند در اینصورت هر کاربر میتواند دادهها را در منطقهی زمانی خودش مشاهده کند در حالی که برای ذخیره سازی دادهها نیز مشکلی از نظر توالی وجود ندارد!
🔅حدود ۷۰ کشور در دنیا قاعدهی DST را اجرا میکردند که این امر از حدود سال 1910 (با هدف صرفهجویی در مصرف انرژی) شروع شد. اخیراً کشورهای ایران(از ابتدای ۱۴۰۲) و ایالات متحده (از ابتدای ۲۰۲۳) اجرای این قاعدهی جهانی را متوقف کردهاند، لازم به ذکر است کشورهایی مثل روسیه، چین و هند و ژاپن هرگز این قاعدهی جهانی را اجرا نکردهاند.
در سالهای اخیر مطالعات زیادی برای بررسی سودمندی اجرای این قاعده صورت گرفته بود.
🔺نکته پایانی:
اگر در تنظیم ساعت سیستم(به خصوص ویندوز) خود مشکل دارید کافیه در بخش تنظیمات تاریخ و زمان گزینه تنظیم خودکار DST رو خاموش کنید
همه چیز به صورت خودکار حل میشه!
🔎 @py4ds
هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید.
🔹 در این تغییر ممکن است برخی اشکالات در پیادهسازیهای نرمافزاری نمایان شود که مهمترین آن در نظر گرفتن زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادههاست
اگر از زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادهها استفاده شود میتواند خطای زیر رخ دهد.
❓تصور کنید در روز پایانی شهریور هستیم و قرار است در نیمه شب زمان یک ساعت به عقب کشیده شود مثل زیر
2022-09-20 23:00:00+04:30
...
2022-09-20 23:59:59+04:30
2022-09-20 23:00:00+03:30
میبینید که اگر منطقهی زمانی ذکر نشود از نظر توالی زمانی مشکل خواهیم داشت و ممکن است دادهها به شکل درستی ذخیره نشوند.
‼️راهکار: تمام دادههای زمانی در دیتابیس و در هنگام داده برداری باید با منطقهی زمانی صفر (UTC) ذخیره شوند و هنگام نمایش به کاربر در سمت کلاینت برای همان کاربر به منطقهی زمانی وی تبدیل شوند در اینصورت هر کاربر میتواند دادهها را در منطقهی زمانی خودش مشاهده کند در حالی که برای ذخیره سازی دادهها نیز مشکلی از نظر توالی وجود ندارد!
🔅حدود ۷۰ کشور در دنیا قاعدهی DST را اجرا میکردند که این امر از حدود سال 1910 (با هدف صرفهجویی در مصرف انرژی) شروع شد. اخیراً کشورهای ایران(از ابتدای ۱۴۰۲) و ایالات متحده (از ابتدای ۲۰۲۳) اجرای این قاعدهی جهانی را متوقف کردهاند، لازم به ذکر است کشورهایی مثل روسیه، چین و هند و ژاپن هرگز این قاعدهی جهانی را اجرا نکردهاند.
در سالهای اخیر مطالعات زیادی برای بررسی سودمندی اجرای این قاعده صورت گرفته بود.
🔺نکته پایانی:
اگر در تنظیم ساعت سیستم(به خصوص ویندوز) خود مشکل دارید کافیه در بخش تنظیمات تاریخ و زمان گزینه تنظیم خودکار DST رو خاموش کنید
همه چیز به صورت خودکار حل میشه!
🔎 @py4ds
👍1
Python for Data Science
🔺 در مورد تغییر سیاست در مورد ساعت تابستانی در ایران هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید. 🔹 در این…
🔺 در مورد تغییر سیاست در مورد ساعت تابستانی در ایران
هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید.
🔹 در این تغییر ممکن است برخی اشکالات در پیادهسازیهای نرمافزاری نمایان شود که مهمترین آن در نظر گرفتن زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادههاست
اگر از زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادهها استفاده شود میتواند خطای زیر رخ دهد.
❓تصور کنید در روز پایانی شهریور هستیم و قرار است در نیمه شب زمان یک ساعت به عقب کشیده شود مثل زیر
2022-09-20 23:00:00+04:30
...
2022-09-20 23:59:59+04:30
2022-09-20 23:00:00+03:30
میبینید که اگر منطقهی زمانی ذکر نشود از نظر توالی زمانی مشکل خواهیم داشت و ممکن است دادهها به شکل درستی ذخیره نشوند.
‼️راهکار: تمام دادههای زمانی در دیتابیس و در هنگام داده برداری باید با منطقهی زمانی صفر (UTC) ذخیره شوند و هنگام نمایش به کاربر در سمت کلاینت برای همان کاربر به منطقهی زمانی وی تبدیل شوند در اینصورت هر کاربر میتواند دادهها را در منطقهی زمانی خودش مشاهده کند در حالی که برای ذخیره سازی دادهها نیز مشکلی از نظر توالی وجود ندارد!
🔅حدود ۷۰ کشور در دنیا قاعدهی DST را اجرا میکردند که این امر از حدود سال 1910 (با هدف صرفهجویی در مصرف انرژی) شروع شد. اخیراً کشورهای ایران(از ابتدای ۱۴۰۲) و ایالات متحده (از ابتدای ۲۰۲۳) اجرای این قاعدهی جهانی را متوقف کردهاند، لازم به ذکر است کشورهایی مثل روسیه، چین و هند و ژاپن هرگز این قاعدهی جهانی را اجرا نکردهاند.
در سالهای اخیر مطالعات زیادی برای بررسی سودمندی اجرای این قاعده صورت گرفته بود.
🔎 @py4ds
هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید.
🔹 در این تغییر ممکن است برخی اشکالات در پیادهسازیهای نرمافزاری نمایان شود که مهمترین آن در نظر گرفتن زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادههاست
اگر از زمان محلی(بدون منطقهی زمانی) برای ذخیره سازی دادهها استفاده شود میتواند خطای زیر رخ دهد.
❓تصور کنید در روز پایانی شهریور هستیم و قرار است در نیمه شب زمان یک ساعت به عقب کشیده شود مثل زیر
2022-09-20 23:00:00+04:30
...
2022-09-20 23:59:59+04:30
2022-09-20 23:00:00+03:30
میبینید که اگر منطقهی زمانی ذکر نشود از نظر توالی زمانی مشکل خواهیم داشت و ممکن است دادهها به شکل درستی ذخیره نشوند.
‼️راهکار: تمام دادههای زمانی در دیتابیس و در هنگام داده برداری باید با منطقهی زمانی صفر (UTC) ذخیره شوند و هنگام نمایش به کاربر در سمت کلاینت برای همان کاربر به منطقهی زمانی وی تبدیل شوند در اینصورت هر کاربر میتواند دادهها را در منطقهی زمانی خودش مشاهده کند در حالی که برای ذخیره سازی دادهها نیز مشکلی از نظر توالی وجود ندارد!
🔅حدود ۷۰ کشور در دنیا قاعدهی DST را اجرا میکردند که این امر از حدود سال 1910 (با هدف صرفهجویی در مصرف انرژی) شروع شد. اخیراً کشورهای ایران(از ابتدای ۱۴۰۲) و ایالات متحده (از ابتدای ۲۰۲۳) اجرای این قاعدهی جهانی را متوقف کردهاند، لازم به ذکر است کشورهایی مثل روسیه، چین و هند و ژاپن هرگز این قاعدهی جهانی را اجرا نکردهاند.
در سالهای اخیر مطالعات زیادی برای بررسی سودمندی اجرای این قاعده صورت گرفته بود.
🔎 @py4ds
Python for Data Science
🔺 در مورد تغییر سیاست در مورد ساعت تابستانی در ایران هر سال در اول بهار و پایان تابستان ساعت ایران به ترتیب یکساعت به جلو و به عقب کشیده میشد این تغییر در اصطلاح Daylight savings time (DST) نام دارد که به اختصار به آن ساعت تابستانی نیز میگوید. 🔹 در این…
🔺اگر در تنظیم ساعت سیستم(به خصوص ویندوز) خود مشکل دارید کافیه در بخش تنظیمات تاریخ و زمان گزینه تنظیم خودکار DST رو خاموش کنید
همه چیز به صورت خودکار حل میشه!😁
🔎 @py4ds
همه چیز به صورت خودکار حل میشه!😁
🔎 @py4ds
👍4
Forwarded from Deep Time
یکی از نشانههای کدنویسی حرفهای در پایتون: استفاده (به موقع) از decorator
در زبان پایتون، decorator یک الگوی طراحی هست که میتونه به توابعی (یا کلاسهایی) که از قبل تعریف شدن یک functionality یا عملکرد جدید بده. این عملکرد میتونه سریعتر کردن اجرای تابع، تعیین زمان اجرای تابع، تنظیمات خاص برای کلاس، دیباگ کردن و ... باشه. پیشنهاد میکنم از این لینک حتما یکسری decorator کاربردی را یاد بگیرید و البته با استفاده از مطالب این پست، مهارتتون رو تثبیت کنید.
پ.ن: اگر سایت towardsdatascience یا medium براتون پیام میده که تعداد پست رایگانتون تموم شده و باید ثبت نام کنید کافیه صرفا لینک رو از یک صفحه incognito (ناشناس) باز کنید.
@deeptimeai
در زبان پایتون، decorator یک الگوی طراحی هست که میتونه به توابعی (یا کلاسهایی) که از قبل تعریف شدن یک functionality یا عملکرد جدید بده. این عملکرد میتونه سریعتر کردن اجرای تابع، تعیین زمان اجرای تابع، تنظیمات خاص برای کلاس، دیباگ کردن و ... باشه. پیشنهاد میکنم از این لینک حتما یکسری decorator کاربردی را یاد بگیرید و البته با استفاده از مطالب این پست، مهارتتون رو تثبیت کنید.
پ.ن: اگر سایت towardsdatascience یا medium براتون پیام میده که تعداد پست رایگانتون تموم شده و باید ثبت نام کنید کافیه صرفا لینک رو از یک صفحه incognito (ناشناس) باز کنید.
@deeptimeai
Medium
10 Fabulous Python Decorators
A great thing about the Python programming language is all of the features that it packs into a small package that are incredibly useful. A lot of said features can completely alter the functionality…
Forwarded from Gopher Academy (Javad)
18 Design Patterns Developers known
🔹Abstract Factory: Family Creator - Makes groups of related items.
🔹Builder: Lego Master - Builds objects step by step, keeping creation and appearance separate.
🔹Prototype: Clone Maker - Creates copies of fully prepared examples.
🔹Singleton: One and Only - A special class with just one instance.
🔹Adapter: Universal Plug - Connects things with different interfaces.
🔹Bridge: Function Connector - Links how an object works to what it does.
🔹Composite: Tree Builder - Forms tree-like structures of simple and complex parts.
🔹Decorator: Customizer - Adds features to objects without changing their core.
🔹Facade: One-Stop-Shop - Represents a whole system with a single, simplified interface.
🔹Flyweight: Space Saver - Shares small, reusable items efficiently.
🔹Proxy: Stand-In Actor - Represents another object, controlling access or actions.
🔹Chain of Responsibility: Request Relay - Passes a request through a chain of objects until handled.
🔹Command: Task Wrapper - Turns a request into an object, ready for action.
🔹Iterator: Collection Explorer - Accesses elements in a collection one by one.
🔹Mediator: Communication Hub - Simplifies interactions between different classes.
🔹Memento: Time Capsule - Captures and restores an object's state.
🔹Observer: News Broadcaster - Notifies classes about changes in other objects.
🔹Visitor: Skillful Guest - Adds new operations to a class without altering it.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
🔹Abstract Factory: Family Creator - Makes groups of related items.
🔹Builder: Lego Master - Builds objects step by step, keeping creation and appearance separate.
🔹Prototype: Clone Maker - Creates copies of fully prepared examples.
🔹Singleton: One and Only - A special class with just one instance.
🔹Adapter: Universal Plug - Connects things with different interfaces.
🔹Bridge: Function Connector - Links how an object works to what it does.
🔹Composite: Tree Builder - Forms tree-like structures of simple and complex parts.
🔹Decorator: Customizer - Adds features to objects without changing their core.
🔹Facade: One-Stop-Shop - Represents a whole system with a single, simplified interface.
🔹Flyweight: Space Saver - Shares small, reusable items efficiently.
🔹Proxy: Stand-In Actor - Represents another object, controlling access or actions.
🔹Chain of Responsibility: Request Relay - Passes a request through a chain of objects until handled.
🔹Command: Task Wrapper - Turns a request into an object, ready for action.
🔹Iterator: Collection Explorer - Accesses elements in a collection one by one.
🔹Mediator: Communication Hub - Simplifies interactions between different classes.
🔹Memento: Time Capsule - Captures and restores an object's state.
🔹Observer: News Broadcaster - Notifies classes about changes in other objects.
🔹Visitor: Skillful Guest - Adds new operations to a class without altering it.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍1
Forwarded from Django Expert (Mehran Tarif)
متاسفانه صابر راستیکردار، خالق فونتهای وزیر متن (همون فونت زیبایی که روی تلگرام دسکتاپ و گوگلداکز و... به رایگان ازش استفاده میکنیم) و گندم و شبنم و کلی فونت دیگه، به سرطان مبتلا شده و در وبلاگش در این مورد مطلبی نوشته:
مشاهده مطلب در وبلاگ راستیکردار
اگر از فونتهاش استفاده میکنیم، شاید الان دونیت (حمایت مالی) ما بیشتر از قبل به کارش بیاد.
لینک دونیت:
payping.ir/@saber
🌱 صابر راستی کردار، از جمله بچه های گل روزگار هست که وب فارسی مدیونشه، تنهاش نمیذاریم.
™ @DjangoIR
〰️〰️〰️〰️〰️〰️〰️
© @DjangoEx |
مشاهده مطلب در وبلاگ راستیکردار
اگر از فونتهاش استفاده میکنیم، شاید الان دونیت (حمایت مالی) ما بیشتر از قبل به کارش بیاد.
لینک دونیت:
payping.ir/@saber
🌱 صابر راستی کردار، از جمله بچه های گل روزگار هست که وب فارسی مدیونشه، تنهاش نمیذاریم.
™ @DjangoIR
〰️〰️〰️〰️〰️〰️〰️
© @DjangoEx |
👏2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
زبان برنامه نویسی Mojo ⭐️
در توضیحات این زبان برنامه نویسی اومده که : Mojo قابلیت استفاده پایتون را با عملکرد C ترکیب میکند، برنامهنویسی بینظیر سختافزار هوش مصنوعی و توسعهپذیری مدلهای هوش مصنوعی را باز میکند.
ویژگی ها عبارتند از:
PROGRESSIVE TYPES
انواع اهرم برای عملکرد بهتر و بررسی خطا.
ZERO COST ABSTRACTIONS
با تخصیص درون خطی مقادیر به ساختارها، ذخیره سازی را کنترل کنید.
OWNERSHIP + BORROW CHECKER
از ایمنی حافظه بدون لبه های ناهموار استفاده کنید.
PORTABLE PARAMETRIC ALGORITHMS
برای نوشتن الگوریتمهای سختافزاری-آگنوستیک و کاهش حجم دیگ، از متابرنامهنویسی زمان کامپایل استفاده کنید.
LANGUAGE INTEGRATED AUTO-TUNING
به طور خودکار بهترین مقادیر برای پارامترهای خود را برای استفاده از سخت افزار هدف پیدا کنید.
همچنین:
قدرت کامل MLIR
زمان اجرا ناهمگن موازی
زمان کامپایل سریع
در بخش دیگری از توضیحات اومده که پایتون اجرای تک رشته ای (سینگل ترد) داره اما توی mojo پردازش موازی در چندین هسته(Parallel processing across multiple cores) وجود داره
توی یکی از بنچمارک هاش هم نسبت به پایتون ۳.۱۰ ادعا کرده که ۳۵ هزار برابر سریعتر هستش💃
توی بحث هوش مصنوعی هم که خب تمرکز اصلی این زبان هستش گفته که کلی نسبت به تنسور فلو و پای تورچ سریع تر هستش
وبسایتش :
https://www.modular.com/
✅ @SEYED_BAX
در توضیحات این زبان برنامه نویسی اومده که : Mojo قابلیت استفاده پایتون را با عملکرد C ترکیب میکند، برنامهنویسی بینظیر سختافزار هوش مصنوعی و توسعهپذیری مدلهای هوش مصنوعی را باز میکند.
ویژگی ها عبارتند از:
PROGRESSIVE TYPES
انواع اهرم برای عملکرد بهتر و بررسی خطا.
ZERO COST ABSTRACTIONS
با تخصیص درون خطی مقادیر به ساختارها، ذخیره سازی را کنترل کنید.
OWNERSHIP + BORROW CHECKER
از ایمنی حافظه بدون لبه های ناهموار استفاده کنید.
PORTABLE PARAMETRIC ALGORITHMS
برای نوشتن الگوریتمهای سختافزاری-آگنوستیک و کاهش حجم دیگ، از متابرنامهنویسی زمان کامپایل استفاده کنید.
LANGUAGE INTEGRATED AUTO-TUNING
به طور خودکار بهترین مقادیر برای پارامترهای خود را برای استفاده از سخت افزار هدف پیدا کنید.
همچنین:
قدرت کامل MLIR
زمان اجرا ناهمگن موازی
زمان کامپایل سریع
در بخش دیگری از توضیحات اومده که پایتون اجرای تک رشته ای (سینگل ترد) داره اما توی mojo پردازش موازی در چندین هسته(Parallel processing across multiple cores) وجود داره
توی یکی از بنچمارک هاش هم نسبت به پایتون ۳.۱۰ ادعا کرده که ۳۵ هزار برابر سریعتر هستش
توی بحث هوش مصنوعی هم که خب تمرکز اصلی این زبان هستش گفته که کلی نسبت به تنسور فلو و پای تورچ سریع تر هستش
وبسایتش :
https://www.modular.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1