TGViewer
Channel Public Channel
PhiloLearn | فیلولرن

PhiloLearn | فیلولرن

@philolearn

🔵 فیلو یعنی مشتاق و لرن یعنی یادگیری
📘 در نتیجه فیلولرن یعنی مشتاق یادگیری 📘

https://www.youtube.com/@PhiloLearn
Subscribers
1.47K
Photos
581
Videos
74
Links
582

Showing posts older than #1852 · Back to latest

Older Posts 20 shown
Post #1851 304

Forwarded from FuckingProgrammingBook

یافتن راهنمایی تخصصی دربارهٔ برنامه‌نویسی به زبان C کار آسانی نیست. در حالی که برای زبان‌های برنامه‌نویسی شیءگرا منابع و کمک‌های فراوانی وجود دارد، برای زبان C به‌طرز شگفت‌آوری مطالب کمی در دسترس است. این راهنمای عملی به‌گونه‌ای نوشته شده که هم برنامه‌نویسان مبتدی و هم برنامه‌نویسان باتجربهٔ C بتوانند از آن بهره ببرند و در آن دربارهٔ تصمیم‌های طراحی راهنمایی بگیرند؛ از جمله این‌که چگونه این تصمیم‌ها را به‌صورت گام‌به‌گام روی مثال‌های کد اجرایی اعمال کنند، به‌ویژه هنگام ساخت برنامه‌های بزرگ‌مقیاس.


لینک کتاب


#book

@FuckingProgrammingBooks

📚📚 @PhiloLearn 📚📚
  • ❤ 2
  • 👍 1
Post #1850 272

Forwarded from sohrab::stdout (Sohrab)

خب امروز انگار تولد لینوس بندیکت تروالدز هستش :)


تولدش رو به دوست‌داران هستهٔ لینوکس ،گیت و کسایی که با سی پلاس پلاس مشکل دارن تبریک عرض می‌کنم.


@SohrabContents
Post #1848 418
PhiloLearn | فیلولرن چند-مستاجری (Multi-Tenancy
‌‏ ‌‏معماری Multi-tenant در سیستم‌های نرم‌افزاری

‏Multi-tenancy یه الگوی معماری نرم‌افزاریه که توش یک نمونه از اپلیکیشن می‌تونه همزمان چندین مشتری (tenant) رو سرویس‌دهی کنه. هر tenant یه گروه از کاربراست که دسترسی‌ها و امتیازات مشترکی دارن و از نظر منطقی از بقیه tenant‌ ها جدا شدن. این مدل بیشتر در SaaS (Software as a Service) کاربرد داره و با مفهوم single-tenancy که توش هر مشتری نمونه جداگانه‌ای از سرویس داره، تفاوت اساسی داره.


سطوح جداسازی داده

توی پیاده‌سازی multi-tenant سه رویکرد اصلی برای جداسازی داده وجود داره:

‏Shared Database, Shared Schema: همه tenant‌ ها از یک دیتابیس و یک schema استفاده می‌کنن. جداسازی از طریق یک فیلد TenantID توی هر جدول انجام می‌شه. این روش بیشترین کارایی رو از نظر مصرف منابع داره اما پیچیدگی کوئری‌ها رو افزایش میده و ریسک data leakage بالاتره. باید توی هر کوئری فیلتر TenantID اعمال بشه که معمولاً از طریق Row-level Security (RLS) یا ORM interceptors پیاده می‌شه.

‏Shared Database, Separate Schema: هر tenant یک schema اختصاصی توی یک دیتابیس مشترک داره. این روش تعادل خوبی بین ایزوله‌سازی و کارایی ایجاد می‌کنه. مدیریت مایگریشن ها پیچیده‌تر می‌شه چون باید برای هر schema به صورت جداگانه اجرا بشن. PostgreSQL و SQL Server این مدل رو خوب ساپورت می‌کنن.

‏Separate Database: هر tenant دیتابیس مجزایی داره که بالاترین سطح ایزوله‌سازی و امنیت رو فراهم می‌کنه. این روش امکان کاستومایز کردن schema برای هر tenant و backup/restore مستقل رو میده، اما فضای مدیریتی بیشتری داره. برای tenant‌های اینترپرایس با نیازهای compliance خاص مناسبه.


چالش‌های معماری

یکی از مهم‌ترین چالش‌ها تضمین tenant isolation هستش. اگه باگ یا اشتباهی توی کانفیگ وجود داشته باشه، ممکنه داده یک tenant برای tenant دیگه قابل دسترسی بشه. برای جلوگیری از این مشکل باید Defense in Depth پیاده بشه: validation در application layer، database-level constraints، و مانیتورینگ مداوم برای شناسایی access pattern‌ های غیرعادی.

مدیریت schema evolution توی محیط multi-tenant پیچیده‌تره. وقتی یه مایگریشن اجرا می‌شه، باید روی همه tenant‌ ها بدون downtime قابل توجه اعمال بشه. راهکارهایی مثل Blue-Green Deployment یا استفاده از backward-compatible changes (مثل adding nullable columns) کمک می‌کنن. برای سیستم‌های بزرگ، Online Schema Change tools مثل gh-ost برای MySQL یا pg_repack برای PostgreSQL استفاده می‌شه.

‏Performance isolation یه چالش دیگه‌ است. اگه یک tenant کوئری‌های سنگین اجرا کنه یا ترافیک زیاد آنی داشته باشه، نباید روی بقیه tenant‌ ها تاثیر بذاره. این مساله رو می‌شه با rate limiting، resource quotas، و connection pooling مدیریت کرد. توی database level می‌شه از query timeout‌ ها و resource governor (در SQL Server) استفاده کرد.


کانفیگ و کاستومایز

‌‏هر tenant معمولاً نیاز به کانفیگ اختصاصی داره: branding، feature flags، business rules، و integration settings. این کانفیگ باید به صورت بهینه ذخیره و کش بشه. یه الگوی معمول استفاده از یک tenant_configs جدول یا key-value store مثل Redis هستش که کانفیگ هر tenant رو نگه میداره.

‏برای tenant‌ های اینترپرایس که نیاز به کاستومایز عمیق‌تر دارن، می‌شه از Extension Points استفاده کرد: وب هوک هایی که tenant می‌تونه کانفیگ کنه، کاستوم فیلد‌ ها، یا حتی plugin system که اجازه اضافه کردن business logic اختصاصی رو میده. این قابلیت‌ها باید با احتیاط طراحی بشن تا امنیت و استیبیلیتی سیستم رو به خطر نندازن.

‏توی سیستم‌های بزرگ، گاهی از Tenant Tiering استفاده می‌شه: tenant‌ های پرمیوم روی infrastructure مجزا یا با resource allocation بیشتری اجرا می‌شن. این کار هم پرفورمنس بهتری براشون فراهم می‌کنه و هم tenant‌ های کوچیک‌تر رو از تاثیر workload‌ های سنگین محافظت می‌کنه.

پ.ن: یادتون نره پستا رو با دوستاتون به اشتراک بذارید ❤️❤️


#SystemArchitecture #معماری_نرم‌افزار #طراحی_سیستم


@PhiloLearn
  • ❤ 4
Post #1847
Channel name was changed to «PhiloLearn | فیلولرن»
Post #1845 475
۱۳. چطور باید چند-مستاجری (Multi-Tenancy) را در Django مدیریت کنم؟

جواب کوتاه:
به همه‌ی مدل‌ها یک فیلد tenant اضافه کن و همیشه موقع query گرفتن، بر اساس tenant فیلتر کن.

این ساده‌ترین و رایج‌ترین روشه.


رویکرد ۱:
Shared Schema + tenant_id (ساده‌ترین و برای ۹۰٪ پروژه‌ها کافی)

‌‌‏هر مدل یک tenant دارد:

class Tenant(models.Model):
name = models.CharField(max_length=100)
domain = models.CharField(max_length=100, unique=True)

class Post(models.Model):
tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
content = models.TextField()


‏Middleware برای پیدا کردن tenant از روی دامنه:

class TenantMiddleware:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
domain = request.get_host()
request.tenant = Tenant.objects.get(domain=domain)
return self.get_response(request)



ویوها به‌صورت خودکار tenant را فیلتر می‌کنند:

def post_list(request):
posts = Post.objects.filter(tenant=request.tenant)
return render(request, 'posts.html', {'posts': posts})


مزایا:

- ساده
- بدون نیاز به ساختار پیچیده
- مناسب SaaS ساده، MVP، پنل‌های سازمانی

معایب:

- همه tenant ها در یک دیتابیس
- اگر یک tenant دیتابیس را overload کند، روی بقیه هم اثر دارد



رویکرد ۲:
یک دیتابیس/Schema جدا برای هر tenant (پیچیده‌تر ولی isolation کامل)

برای پروژه‌های خیلی بزرگ یا با سطح امنیتی بالا.

INSTALLED_APPS += ['django_tenants']

DATABASE_ROUTERS = ['django_tenants.routers.TenantSyncRouter']

class Tenant(TenantMixin):
name = models.CharField(max_length=100)
domain_url = models.CharField(max_length=128, unique=True)



‏Django Tenants به‌صورت خودکار درخواست‌ها را به schema درست می‌فرستد:

posts = Post.objects.all()  # فقط داده‌های tenant فعلی


مزایا:

- جدا شدن کامل داده‌ها
- هر tenant می‌تونه نسخه مخصوص خودش داشته باشه

معایب:

‏- Migrationها پیچیده‌تر می‌شن
- نگه‌داری سخت‌تر
- راه‌اندازی و DevOps سنگین


قانون من:
اگر دلیل امنیتی یا قانونی خیلی جدی نداری، از رویکرد ۱ (shared schema) استفاده کن.
۹۰٪ مواقع کاملاً کفایت می‌کنه.


پ.ن: یادتون نره پستا رو با دوستاتون به اشتراک بذارید ❤️❤️

پارت اول ۲۰ سوال جنگو
پارت دوم ۲۰ سوال جنگو
پارت سوم ۲۰ سوال جنگو
پارت چهارم ۲۰ سوال جنگو
پارت پنجم ۲۰ سوال جنگو
پارت ششم ۲۰ سوال جنگو
پارت هفتم ۲۰ سوال جنگو
پارت هشتم ۲۰ سوال جنگو
پارت نهم ۲۰ سوال جنگو
پارت دهم ۲۰ سوال جنگو
پارت یازدهم ۲۰ سوال جنگو
پارت دوازدهم ۲۰ سوال جنگو

#پارت_سیزدهم #جنگو #django #پایتون #برنامه_نویسی

@PhiloLearn
  • ❤ 4
Post #1844 437
#telemetrio2025

یه نگاهی به آمار سال گذشته فیلولرن بندازیم...
  • 👍 4
Post #1843 992
حقیری یه چیزی ساخته بود که خیلی ازش خوشم اومده بود: لینک ویدیو یوتیوب رو میدادی بهش و بهت یه خلاصه ای از اون ویدیو رو میفرستاد
ولی خب مثل باقی چیزایی که حقیری میسازه بعد از یک مدت از دسترس عموم خارج شد متاسفانه و خب من هم گشتم تا چیزی مشابهش رو پیدا کنم...
و خب موفق شدم چیزی پیدا کنم.

https://notegpt.io/youtube-video-summarizer

این سایت به شکل رایگان متن ویدیو و خلاصش رو بهتون میده
باقی آپشن هاشن رو فکر کنم باید خرید و همین دوتایی که گفتم هم فکر کنم محدودیت داشته باشه، خودم هیچ وقت بیشتر از ۳-۴ بار در روز نشده ازش استفاده کنم

@PhiloLearn
notegpt.io YouTube Video Summarizer with AI - Online Free Get free transcripts and subtitles for YouTube videos online, then utilize ChatGPT and Claude for video summarization. Enhance learning efficiency at no cost! YouTube summary with NoteGPT and No Login.
  • ❤ 2
Post #1841 475
Linuxor ? دیدیم که بریتانیا چند وقت پیش همه سایت هارو مجبور کرده بود که محدودیت سن برای کاربرا بزارن، اما ظاهرا این روش جواب نداده و مردم یه جوری این محدودیت رو دور می‌زنن. حالا دولت بریتانیا داره به شرکت‌های غولی مثل اپل و گوگل فشار می‌آره که از فناوری‌هایی توی سیستم‌عامل‌…
ما به چین و روسیه و ایران می‌خندیم که حکومت توتالیتر داره 😂🤦🏻‍♂ این چه دلقک بازی ایه آخه؟
  • 👍 3
Post #1839 473
❤️❤️ فال برای @sohrabcontents ❤️❤️

- غزل ۱۲۱

هر آن کو خاطرِ مجموع و یارِ نازنین دارد

سعادت همدم او گشت و دولتْ همنشین دارد

حریمِ عشق را درگَه، بسی بالاتر از عقل است

کسی آن آستان بوسد، که جان در آستین دارد

دهانِ تَنگِ شیرینش، مگر مُلکِ سلیمان است

که نقشِ خاتمِ لعلش، جهان زیرِ نگین دارد

لبِ لعل و خطِ مشکین، چو آنش هست و اینش هست

بنازم دلبرِ خود را، که حُسنش آن و این دارد

به خواری منگر ای مُنعِم، ضعیفان و نحیفان را

که صدرِ مجلسِ عشرت، گدای رهنشین دارد

چو بر رویِ زمین باشی، توانایی غنیمت دان

که دورانْ ناتوانی‌ها، بسی زیرِ زمین دارد

بلاگردانِ جان و تن، دعایِ مستمندان است

که بیند خیر از آن خرمن که ننگ از خوشه چین دارد؟

صبا از عشقِ من رمزی، بگو با آن شهِ خوبان

که صد جمشید و کیخسرو، غلامِ کمترین دارد

و گر گوید نمی‌خواهم، چو حافظ عاشقِ مفلس

بگوییدش که سلطانی، گدایی همنشین دارد


🍉🍉 @this_hafez_bot 🍉🍉
  • ❤ 2
Post #1838 391
PhiloLearn | فیلولرن ربات فال حافظ رو یادتونه؟ https://t.me/this_hafez_bot آپدیتش کردم ❤️❤️ (طبق معمولا از AI برای نوشتن کامنت ها و ReadMe استفاده کردم) https://github.com/Hr-ArshA/this_hafez_bot پ.ن: یه سری آپشن ریز دیگه هم قراره بهش اضافه کنم. امیدوارم قبل از یلدا برسونمشون…
خب اون آپشنی که میخواستم اضافه کنم هم اضافه شد.
کافیه آیدی کانال رو بنویسید و اسم اونی که میخواید براش فال بگیرید رو در ادامش و کمی صبر کنید و روی گزینه ای که بهتون نشون میده کلیک کنید. اینطوری:

@this_hafez_bot arsha

و بعد فال رو میفرسته توی چت مورد نظر 😂.
نتیجه مثل پست پایینی میشه
  • ❤ 1
Post #1837 330

Forwarded from Pink Orca | پینک اورکا

گروهی داشتیم... انجمن ونداد
و البته داریم اما پرایوت شده
(اون قبلیه هم که عمومی بود تعطیله مدتیه)

دوستانی که تمایل دارن عضو بشن می‌تونن پیوی لینکش رو دریافت کنن یا این زیر کامنت کنن
@Pink0rca

جمع خوبیه، تلاش بر اینه که دوستانه و فنی باشه...
#موقت
Post #1836 533
ربات فال حافظ رو یادتونه؟

https://t.me/this_hafez_bot

آپدیتش کردم ❤️❤️ (طبق معمولا از AI برای نوشتن کامنت ها و ReadMe استفاده کردم)

https://github.com/Hr-ArshA/this_hafez_bot

پ.ن: یه سری آپشن ریز دیگه هم قراره بهش اضافه کنم. امیدوارم قبل از یلدا برسونمشون 😁.
Telegram دیوان حافظ ربات دیوان حافظ هستم و در تلاشم که بهتر و زیباتر به شما کمک کنم تا با حافظ ارتباط داشته باشید. @PhiloLearn
Post #1834 392
دوستان
میشه بگید که بالایی به نظرتون بهتره یا پایینی

غزل 102
دوش آگهی ز یارِ سفر کرده داد باد
من نیز دل به باد دهم، هر چه باد باد
کارم بدان رسید که همرازِ خود کنم
هر شام برق لامِع و هر بامداد باد
در چینِ طرهٔ تو دل بی حِفاظِ من
هرگز نگفت مسکنِ مألوف یاد باد
امروز قدرِ پندِ عزیزان شناختم
یا رب روانِ ناصحِ ما از تو شاد باد
خون شد دلم به یادِ تو هر گَه که در چمن
بندِ قبایِ غنچهٔ گل می‌گشاد باد
از دست رفته بود وجودِ ضعیفِ من
صبحم به بویِ وصلِ تو جان باز داد، باد
حافظ نهادِ نیکِ تو کامت بر آورد
جان‌ها فدایِ مردمِ نیکو نهاد باد



غزل 102
دوش آگهی ز یارِ سفر کرده داد باد
من نیز دل به باد دهم، هر چه باد باد
کارم بدان رسید که همرازِ خود کنم
هر شام برق لامِع و هر بامداد باد
در چینِ طرهٔ تو دل بی حِفاظِ من
هرگز نگفت مسکنِ مألوف یاد باد
امروز قدرِ پندِ عزیزان شناختم
یا رب روانِ ناصحِ ما از تو شاد باد
خون شد دلم به یادِ تو هر گَه که در چمن
بندِ قبایِ غنچهٔ گل می‌گشاد باد
از دست رفته بود وجودِ ضعیفِ من
صبحم به بویِ وصلِ تو جان باز داد، باد
حافظ نهادِ نیکِ تو کامت بر آورد
جان‌ها فدایِ مردمِ نیکو نهاد باد
Post #1833 451

Forwarded from DevTwitter | توییت برنامه نویسی

رقیبمون با یه محصول "زشت" بازار رو گرفت؛ در حالی که ما درگیر خوشگل کردن دکمه‌ها بودیم!

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

ما داشتیم برای ایده‌آل میجنگیدیم. احساس میکردیم قراره تاریخ‌سازی میکنیم.

نتیجه؟ یه فاجعه‌ی تمام‌عیار.

۶ ماه گذشت و ما هنوز داشتیم دکمه‌ها رو پولیش میکردیم. یه روز صبح بیدار شدیم و دیدیم رقیبمون با یه محصول "نصفه و نیمه"، "زشت" و "باگ‌دار" اومد بالا.

ما خندیدیم: "این چیه؟ آبروریزیه!" ولی بازار نخندید. بازار خرید.

چرا؟ چون وقتی ما داشتیم توی آزمایشگاه روی "کمال‌گرایی" کار میکردیم، اونا داشتن توی "بازار" فیدبک میگرفتن. اونا باگ‌هاشون رو با مشتری حل کردن، ما باگ‌هامون رو با تخیلاتمون.

به این پدیده میگن: Feature Creep (خزش ویژگی). این قاتلیه که با لباس شیک کیفیت میاد تو شرکتت و استارتاپت رو خفه میکنه.

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

محصول کامل، محصولیه که مرده. محصول زنده، ناقصه ولی داره کار میکنه.

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

@DevTwitter | <Hossein Moradi/>
  • 👍 5
  • ❤ 1
  • 🤣 1
Post #1832 435
۱۲. از سیگنال‌های Django استفاده کنم یا مستقیم متد را صدا بزنم؟

جواب کوتاه:
۹۰٪ مواقع مستقیم متد رو صدا بزن. سیگنال فقط وقتی لازم شد.


✔️ کی از سیگنال استفاده کنیم؟

فقط وقتی:
- می‌خوای اپ‌ها از هم جدا باشن (app A نباید app B رو import کنه)
- با مدل‌های داخلی Django کار داری (مثل User، Group)
- می‌خوای اپ‌های سوم‌شخص بتونن به eventهای تو واکنش نشون بدن


❌ کی از سیگنال استفاده نکنیم؟

وقتی:
- کدها در یک اپ هستن
- می‌خوای جریان کد واضح و قابل‌ردگیری باشه
- دیباگ کردن مهمه

سیگنال‌ها جریان کد رو پنهان می‌کنن و پیدا کردن مشکل سخت می‌شه.

مثال:

❌ مثال بد – سیگنال بی‌دلیل

from django.db.models.signals import post_save
from django.dispatch import receiver

class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
total = models.DecimalField(max_digits=10, decimal_places=2)

@receiver(post_save, sender=Order)
def send_order_confirmation(sender, instance, created, **kwargs):
if created:
send_email(instance.user.email, 'Order confirmed')


مشکل:
اصلاً معلوم نیست ایمیل کجا ارسال می‌شه! پاکِ پنهانی.


✅ مثال خوب – مستقیم و واضح

class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
total = models.DecimalField(max_digits=10, decimal_places=2)

def send_confirmation_email(self):
send_email(self.user.email, 'Order confirmed')

# In view
order = Order.objects.create(user=user, total=100)
order.send_confirmation_email()


واضح، قابل‌فهم، ساده برای دیباگ.


✅ مثال خوب – وقتی سیگنال واقعاً لازم است (برای decoupling)

در اپ analytics که نباید از اپ orders ایمپورت مستقیم داشته باشه:

from django.dispatch import receiver
from orders.signals import order_created # Custom signal

@receiver(order_created)
def track_order_analytics(sender, order, **kwargs):
AnalyticsEvent.objects.create(
event_type='order_created',
order_id=order.id
)


این‌جا سیگنال کاملاً منطقیه.


قانون من:

اگر می‌تونی متد رو مستقیم صدا بزنی، سیگنال استفاده نکن.
سیگنال رو فقط وقتی لازم داری که واقعا decoupling مهم باشه.


پ.ن: یادتون نره پستا رو با دوستاتون به اشتراک بذارید ❤️❤️

پارت اول ۲۰ سوال جنگو
پارت دوم ۲۰ سوال جنگو
پارت سوم ۲۰ سوال جنگو
پارت چهارم ۲۰ سوال جنگو
پارت پنجم ۲۰ سوال جنگو
پارت ششم ۲۰ سوال جنگو
پارت هفتم ۲۰ سوال جنگو
پارت هشتم ۲۰ سوال جنگو
پارت نهم ۲۰ سوال جنگو
پارت دهم ۲۰ سوال جنگو
پارت یازدهم ۲۰ سوال جنگو

#پارت_دوازدهم #جنگو #django #پایتون #برنامه_نویسی

@PhiloLearn
  • ❤ 4
Post #1830 566
اولین واکنش دولوپرا به لینوکس 😂💙

#fun@PhiloLearn
  • 🤣 8
  • ❤ 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →