Forwarded from محتوای آزاد سهراب
Forwarded from محتوای آزاد سهراب
Forwarded from Codino School (ایمان غفوری)
Forwarded from Ninja Learn | نینجا لرن
🧵 ـGenerator ها در جنگو؛ یه ابزار خاص برای بهینهسازی کدها
اگه با پایتون آشنا باشی، احتمالاً میدونی که generator ها توی صرفهجویی حافظه و تولید داده به صورت lazy خیلی کاربرد دارن. اما این ابزار توی جنگو چطوری استفاده میشه؟ چجوری میتونیم ازشون بیشترین بهره رو ببریم؟ بیا با هم بررسی کنیم.
💡 ـGenerator چیه؟
ـGenerator یه نوع iterator خاصه که وقتی نیاز داری داده تولید میکنه، نه اینکه کل داده رو یهجا توی حافظه نگه داره. توی جنگو این ابزار وقتی مفید میشه که بخوای با دادههای بزرگ کار کنی.
مثلاً:
◀️ کار با QuerySetهای سنگین
◀️ پردازش Streamهای دادهای
◀️ تولید گزارشهای حجیم
🏗 چرا توی جنگو به generator نیاز داریم؟
تصور کن یه جدول دیتابیس با میلیونها رکورد داری و باید اطلاعات رو به مرور پردازش کنی. اگه همه رکوردها رو یهجا لود کنی، سرور به احتمال زیاد میترکه. اینجا generator ها به دادت میرسن. Lazy Evaluation یعنی فقط همون چیزی که نیاز داری رو تولید کن و حافظه رو با چیزای اضافی پر نکن.
✍ استفاده از generator توی QuerySet
ـQuerySetهای جنگو به صورت پیشفرض lazy هستن. این یعنی تا وقتی که واقعاً نیاز نباشه، کوئری به دیتابیس نمیزنه. ولی میتونی این فرآیند رو با generatorها بهینهتر کنی.
مثال:
اینجا از متد iterator() استفاده کردیم که یه generator میسازه و باعث میشه کوئری به صورت chunk به chunk پردازش بشه.
🌊 ـStream کردن دادهها با generator
اگه بخوای یه فایل CSV بزرگ برای دانلود بسازی، generator یه ابزار طلاییه.
مثال:
اینجا به جای ساختن کل CSV توی حافظه، دادهها رو به صورت real-time تولید میکنیم.
🔸 نکات مهم
ـAvoid Overuse
ـCombine with Chunking
جمعبندی ✍
ـgeneratorها یه ابزار قدرتمند برای مدیریت منابع هستن، به شرطی که بدونی کجا و چطوری ازشون استفاده کنی. مخصوصاً توی پروژههای سنگین جنگو که حجم دادهها خیلی زیاده، این ابزار میتونه یه برگ برنده باشه.
امید وارم مفید بوده باشه :) ❤️
اگه با پایتون آشنا باشی، احتمالاً میدونی که generator ها توی صرفهجویی حافظه و تولید داده به صورت lazy خیلی کاربرد دارن. اما این ابزار توی جنگو چطوری استفاده میشه؟ چجوری میتونیم ازشون بیشترین بهره رو ببریم؟ بیا با هم بررسی کنیم.
💡 ـGenerator چیه؟
ـGenerator یه نوع iterator خاصه که وقتی نیاز داری داده تولید میکنه، نه اینکه کل داده رو یهجا توی حافظه نگه داره. توی جنگو این ابزار وقتی مفید میشه که بخوای با دادههای بزرگ کار کنی.
مثلاً:
◀️ کار با QuerySetهای سنگین
◀️ پردازش Streamهای دادهای
◀️ تولید گزارشهای حجیم
🏗 چرا توی جنگو به generator نیاز داریم؟
تصور کن یه جدول دیتابیس با میلیونها رکورد داری و باید اطلاعات رو به مرور پردازش کنی. اگه همه رکوردها رو یهجا لود کنی، سرور به احتمال زیاد میترکه. اینجا generator ها به دادت میرسن. Lazy Evaluation یعنی فقط همون چیزی که نیاز داری رو تولید کن و حافظه رو با چیزای اضافی پر نکن.
✍ استفاده از generator توی QuerySet
ـQuerySetهای جنگو به صورت پیشفرض lazy هستن. این یعنی تا وقتی که واقعاً نیاز نباشه، کوئری به دیتابیس نمیزنه. ولی میتونی این فرآیند رو با generatorها بهینهتر کنی.
مثال:
from django.db.models import QuerySet
def get_large_data(queryset: QuerySet):
for obj in queryset.iterator():
yield process_object(obj)
def process_object(obj):
# پردازش رکورد
return obj
اینجا از متد iterator() استفاده کردیم که یه generator میسازه و باعث میشه کوئری به صورت chunk به chunk پردازش بشه.
🌊 ـStream کردن دادهها با generator
اگه بخوای یه فایل CSV بزرگ برای دانلود بسازی، generator یه ابزار طلاییه.
مثال:
import csv
from django.http import StreamingHttpResponse
def stream_csv(queryset):
def generate():
yield ['Header1', 'Header2', 'Header3']
for obj in queryset.iterator():
yield [obj.field1, obj.field2, obj.field3]
response = StreamingHttpResponse(generate_csv(generate()), content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="data.csv"'
return response
def generate_csv(generator):
for row in generator():
yield ','.join(str(cell) for cell in row) + '\n'
اینجا به جای ساختن کل CSV توی حافظه، دادهها رو به صورت real-time تولید میکنیم.
🔸 نکات مهم
ـAvoid Overuse
اگه حجم دادهها خیلی کم باشه، استفاده از generator صرفاً پیچیدگی کد رو زیاد میکنه.
ـCombine with Chunking
اگه با دیتابیسهای بزرگ کار میکنی، استفاده از generator به همراه متدهایی مثل iterator() یا chunked() توی QuerySet میتونه حسابی عملکرد رو بهینه کنه.ـError Handling
حواست باشه که generatorها وقتی یه خطا پیش بیاد، از ادامه کار متوقف میشن. اگه نیاز داری عملیاتت ادامه پیدا کنه، باید exceptionها رو مدیریت کنی.ـPipeline-like Processing
توی پروژههای پیچیدهتر میتونی generatorها رو به هم chain کنی و مثل یه pipeline دادهها رو پردازش کنی.
جمعبندی ✍
ـgeneratorها یه ابزار قدرتمند برای مدیریت منابع هستن، به شرطی که بدونی کجا و چطوری ازشون استفاده کنی. مخصوصاً توی پروژههای سنگین جنگو که حجم دادهها خیلی زیاده، این ابزار میتونه یه برگ برنده باشه.
#django #برنامه_نویسی #پایتون
🔆 CHANNEL | GROUP
Forwarded from Gopher Academy
🔵 عنوان مقاله
gh-dash 4.7: A CLI-Based Dashboard for GitHub
🟢 خلاصه مقاله:
در نبود متن کامل مقاله و فقط با اتکا به شرح کوتاهی که ارائه شده، میتوان خلاصهای از محتوای آن را به شرح زیر ارائه داد:
این مقاله به بررسی برنامه کاربردی با واسط کاربری متنی (TUI) پرداخته است که به منظور نمایش داشبوردی از درخواستهای کششی (Pull Requests) و مسائل (Issues) طراحی شده است. این برنامه اجازه میدهد که کاربران محتوای نمایش داده شده را براساس فیلترهای دلخواه خود تنظیم کنند. در نتیجه، کاربران میتوانند با استفاده از این ابزار به راحتی وضعیت پروژهها و وظایف مرتبط با توسعه نرمافزار را مدیریت و پیگیری کنند. این برنامه مخصوصاً برای توسعهدهندگانی که به دنبال راهکاری ساده و مؤثر برای پیگیری پیشرفت کارها هستند، بسیار مفید است. برنامه با محیط کاربری متنی کاربردی خود، یک راه حل عملی و کارآمد برای مرور و مدیریت درخواستهای کششی و مسائل مختلف ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/161350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
gh-dash 4.7: A CLI-Based Dashboard for GitHub
🟢 خلاصه مقاله:
در نبود متن کامل مقاله و فقط با اتکا به شرح کوتاهی که ارائه شده، میتوان خلاصهای از محتوای آن را به شرح زیر ارائه داد:
این مقاله به بررسی برنامه کاربردی با واسط کاربری متنی (TUI) پرداخته است که به منظور نمایش داشبوردی از درخواستهای کششی (Pull Requests) و مسائل (Issues) طراحی شده است. این برنامه اجازه میدهد که کاربران محتوای نمایش داده شده را براساس فیلترهای دلخواه خود تنظیم کنند. در نتیجه، کاربران میتوانند با استفاده از این ابزار به راحتی وضعیت پروژهها و وظایف مرتبط با توسعه نرمافزار را مدیریت و پیگیری کنند. این برنامه مخصوصاً برای توسعهدهندگانی که به دنبال راهکاری ساده و مؤثر برای پیگیری پیشرفت کارها هستند، بسیار مفید است. برنامه با محیط کاربری متنی کاربردی خود، یک راه حل عملی و کارآمد برای مرور و مدیریت درخواستهای کششی و مسائل مختلف ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/161350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - dlvhdr/gh-dash: A beautiful CLI dashboard for GitHub 🚀
A beautiful CLI dashboard for GitHub 🚀 . Contribute to dlvhdr/gh-dash development by creating an account on GitHub.
Forwarded from Laravel News
Packagist.org is ending support for Composer 1.x https://laravel-news.com/packagistorg-is-ending-support-for-composer-1x
Laravel News
Packagist.org is ending support for Composer 1.x - Laravel News
The packagist team announced it's shutting down support for Composer v1.x on February 25th, 2025.
Forwarded from Laravel News
Collect and Monitor Everything About Sent Emails in Your Laravel App https://laravel-news.com/laravel-mails-package
Laravel News
Collect and Monitor Everything About Sent Emails in Your Laravel App - Laravel News
The Laravel Mails package collects everything about sent emails in your Laravel app. Using this package, you can track issues with mail, monitor stats, and get notified when something is wrong.
Forwarded from Laravel News
Managing Large Datasets in Laravel with LazyCollection https://laravel-news.com/managing-large-datasets-in-laravel-with-lazycollection
Laravel News
Managing Large Datasets in Laravel with LazyCollection - Laravel News
Discover how Laravel's LazyCollection optimizes memory usage when processing large datasets. Learn to handle extensive data efficiently by loading items on demand, perfect for processing large files and database operations.
Forwarded from یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 طبق گزارش CNN, رئیسجمهور کره جنوبی اعلام حکومت نظامی کرده است و گفته عناصر کره شمالی تو کشور نفوذ کردند و در حزب حاکم زیاد شدند و هر لحظه ممکنه کودتا کنند . یون سوک یئول گفته که حکومت نظامی اعلام کردم که کشور آزاد بسازم!
#خبر
@TheRaymondDev
#خبر
@TheRaymondDev
CNN
Martial law reversed in South Korea after president’s surprise decree sent shockwaves | CNN
South Korean President Yoon Suk Yeol backtracked on his shortlived decree in the early hours of Wednesday local time and withdrew the troops deployed to carry out the order. South Korean lawmakers are now calling for resignations.
Forwarded from کانال اطلاعرسانی توزیع پارچ
Forwarded from Laravel News
Handling Geospatial Data with Laravel Magellan https://laravel-news.com/laravel-magellan
Laravel News
Handling Geospatial Data with Laravel Magellan - Laravel News
Geospatial data, or geodata, is data that includes information related to locations on the Earth’s surface. You can map objects, events, and other real-world phenomena to a specific geographical area identified by latitude and longitude coordinates.
Audio
رادیو جادی ۱۸۳ - شبپره بالاخره میپره؛ از لنگر تا انواع مرگ و زندگی
در رادیوی ۱۸۳، کلی داستان داریم؛ از اجبار به فروش کروم تا کشتیای که لنگرش رو برای پارهکردن کابل زیردریایی آویزون کرده و ادامه زندگی و مرگ در سه چهار داستان. با ما باشین که جهان هکرهای بیشتری میخواد.
- 00:00 - رادیو جادی ۱۸۳
- 01:34 - احتمال اجبار گوگل (ای بی سی) به فروش کروم و جریمههای دیگر
- 09:39 - ادامه زندگی خدای مدیریت ژاپن با هوش مصنوعی
- 13:19 - حق مرگ در انگلستان
- 19:08 - توصیه دولت ژاپن در مورد زندگی دیجیتال
- 22:17 - گوشی بدون اندروید و ابزار آمریکایی هواوی
- 25:35 - کشتی چینی مظنون به قطع عمدی کابلهای زیردریایی
- 28:05 - بیانیه موسسه پاشا در پاکستان در مورد صدمه سرکوب اینترنت به کشور
- 30:33 - توصیه دی لینک به دارندگان مودم ناامن قدیمی: بذارینش کنار یه جدیدش رو بخرین
- 33:35 - یادی از توماس کورتز سازنده زبان بیسیک
- 35:33 - ال کاپیتان ؛ سریعترین سوپر کامپیوتر جهان و تاپ ۵۰۰
- 40:20 - بخش آخر
- 43:25 - پیامهای آخر
https://youtu.be/Z9VRPTPg744
#پادکست #رادیوجادی #تصویری
در رادیوی ۱۸۳، کلی داستان داریم؛ از اجبار به فروش کروم تا کشتیای که لنگرش رو برای پارهکردن کابل زیردریایی آویزون کرده و ادامه زندگی و مرگ در سه چهار داستان. با ما باشین که جهان هکرهای بیشتری میخواد.
- 00:00 - رادیو جادی ۱۸۳
- 01:34 - احتمال اجبار گوگل (ای بی سی) به فروش کروم و جریمههای دیگر
- 09:39 - ادامه زندگی خدای مدیریت ژاپن با هوش مصنوعی
- 13:19 - حق مرگ در انگلستان
- 19:08 - توصیه دولت ژاپن در مورد زندگی دیجیتال
- 22:17 - گوشی بدون اندروید و ابزار آمریکایی هواوی
- 25:35 - کشتی چینی مظنون به قطع عمدی کابلهای زیردریایی
- 28:05 - بیانیه موسسه پاشا در پاکستان در مورد صدمه سرکوب اینترنت به کشور
- 30:33 - توصیه دی لینک به دارندگان مودم ناامن قدیمی: بذارینش کنار یه جدیدش رو بخرین
- 33:35 - یادی از توماس کورتز سازنده زبان بیسیک
- 35:33 - ال کاپیتان ؛ سریعترین سوپر کامپیوتر جهان و تاپ ۵۰۰
- 40:20 - بخش آخر
- 43:25 - پیامهای آخر
https://youtu.be/Z9VRPTPg744
#پادکست #رادیوجادی #تصویری
Forwarded from نوشتههای ترمینالی
اخیرا یه مقدار بحث IDE بد است رو پیش کشیدم و بین همه فیچرها، یه فیچری که روش تاکید شد بحث اینتگریشن با گیت بود.
به نظر من اینکه ابزار برنامه نویسی با گیت دوست باشه در حد نشون دادن استاتوس م رنگی کردن فایل های تغییر کرده و ... خوبه ولی اینکه با GUI کامندهای گیت رو اجرا کنیم به نظرم خطرناکه.
امروز اتفاقی تو توییتر این discard all changes رو پیدا کردم که یه گزینه خطرناک بود و باعث شده بود چند نفر فایل هاشون رو از دست بدن چون از اسم گزینه خیلی مشخص نبوده قراره چه کامند گیتی رو اجرا کنه (و احتمال میدم طرف هم خیلی با گیت آشنا نبوده)
خلاصه که توصیه من اینه از گیت کامندلاین استفاده کنید برای دستورات احتمالا مخرب مثل checkout و stash و clean و ...
کامند های جدید هم اول یه جای الکی تست کنید و یه جا یادداشت کنید و از همون ها که مطمئنین استفاده کنید فقط.
https://github.com/microsoft/vscode/issues/32405
و نسخهی دیگر:
https://github.com/microsoft/vscode/issues/32459
به نظر من اینکه ابزار برنامه نویسی با گیت دوست باشه در حد نشون دادن استاتوس م رنگی کردن فایل های تغییر کرده و ... خوبه ولی اینکه با GUI کامندهای گیت رو اجرا کنیم به نظرم خطرناکه.
امروز اتفاقی تو توییتر این discard all changes رو پیدا کردم که یه گزینه خطرناک بود و باعث شده بود چند نفر فایل هاشون رو از دست بدن چون از اسم گزینه خیلی مشخص نبوده قراره چه کامند گیتی رو اجرا کنه (و احتمال میدم طرف هم خیلی با گیت آشنا نبوده)
خلاصه که توصیه من اینه از گیت کامندلاین استفاده کنید برای دستورات احتمالا مخرب مثل checkout و stash و clean و ...
کامند های جدید هم اول یه جای الکی تست کنید و یه جا یادداشت کنید و از همون ها که مطمئنین استفاده کنید فقط.
https://github.com/microsoft/vscode/issues/32405
و نسخهی دیگر:
https://github.com/microsoft/vscode/issues/32459
GitHub
THIS THING DELETED 3 MONTHS OF WORK!!!! · Issue #32405 · microsoft/vscode
I had just downloaded vscode as an alternative and I was just playing with the source control option, seeing how it wanted to stage FIVE THOUSAND FILES I clicked discard... AND IT DELETED ALL MY FI...
Forwarded from نوشتههای ترمینالی
چرا ارورهندلینگ گولنگ خوب نیست و در واقع پیشنهاد بهتر استفاده و پیاده سازی موناد هاست.
https://www.innoq.com/en/blog/2016/06/golang-errors-monads/
https://www.innoq.com/en/blog/2016/06/golang-errors-monads/
Innoq
Error Handling in Go
Two commonly perceived problems of the programming language Go are that
handling errors is verbose and repetitive
parametric polymorphism is not available
This post is about the intersection of those problems
and Rob Pike’s recommendation on the former.
handling errors is verbose and repetitive
parametric polymorphism is not available
This post is about the intersection of those problems
and Rob Pike’s recommendation on the former.
Forwarded from یک برنامه نویس تنبل ( MΞ)
This media is not supported in your browser
VIEW IN TELEGRAM