Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
تصویر کمتر دیده شده از گوشی دکتر پزشکیان


@SohrabContents
Forwarded from Codino School (ایمان غفوری)
از کدام IDE استفاده می‌کنید؟
Anonymous Poll
67%
Phpstorm
38%
VS code
4%
VIM
2%
other
🧵 ـ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
Forwarded from Linuxor ?
یه مجموعه جالب از قوانین طراحی UX

این قوانین UX رو هر طراح UI/UX در حین طراحی محصولات باید بدونه


🐧 @Linuxor
Forwarded from یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 طبق گزارش CNN, رئیس‌جمهور کره جنوبی اعلام حکومت نظامی کرده است و گفته عناصر کره شمالی تو کشور نفوذ کردند و در حزب حاکم زیاد شدند و هر لحظه ممکنه کودتا کنند . یون سوک یئول گفته که حکومت نظامی اعلام کردم که کشور آزاد بسازم!

#خبر

@TheRaymondDev
صفحه برنامه‌های جامعه به سایت پارچ اضافه شد.


🔗 https://parchlinux.com/community


@ParchLinux
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

#پادکست #رادیوجادی #تصویری
اخیرا یه مقدار بحث IDE بد است رو پیش کشیدم و بین همه فیچرها، یه فیچری که روش تاکید شد بحث اینتگریشن با گیت بود.

به نظر من اینکه ابزار برنامه نویسی با گیت دوست باشه در حد نشون دادن استاتوس م رنگی کردن فایل های تغییر کرده و ... خوبه ولی اینکه با GUI کامندهای گیت رو اجرا کنیم به نظرم خطرناکه.

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

خلاصه که توصیه من اینه از گیت کامندلاین استفاده کنید برای دستورات احتمالا مخرب مثل checkout و stash و clean و ...
کامند های جدید هم اول یه جای الکی تست کنید و یه جا یادداشت کنید و از همون ها که مطمئنین استفاده کنید فقط.

https://github.com/microsoft/vscode/issues/32405

و نسخه‌ی دیگر:
https://github.com/microsoft/vscode/issues/32459
Forwarded from Linuxor ?
یه روز یه دختره برنامه نویس بوده نمره 19 می‌گیره ناراحت نمیشه.


🐧 @Linuxor
Forwarded from CleverDevs (CleverDevs Ads)
🏰 اولین بازی استراتژی آنلاین در تلگرام! 🏰

قدرت در انتظار شماست...

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

شما، برترین پادشاه خواهید شد. 👑

🎮 @CastelGame_bot @CastelGame_bot
🎮 @CastelGame_bot @CastelGame_bot