Splash Pro AI
#هوش_مصنوعی برای ایجاد آهنگ از متن
این سرویس که از هوش مصنوعی پشتیبانی میکند، دری را به روی دنیای خلاقیت موسیقی باز میکند و به شما امکان میدهد حتی بدون دانش عمیق موسیقی، آهنگهای شخصی ایجاد کنید.
@persians_python
#هوش_مصنوعی برای ایجاد آهنگ از متن
این سرویس که از هوش مصنوعی پشتیبانی میکند، دری را به روی دنیای خلاقیت موسیقی باز میکند و به شما امکان میدهد حتی بدون دانش عمیق موسیقی، آهنگهای شخصی ایجاد کنید.
@persians_python
در این پست قراره تمایز اغلب گیج کننده بین function و method هارو را بررسی کنیم🥸. هر دو بلوک های اساسی در پایتون هستند اما اهداف کمی تفاوت دارد. ما آنها را در کنار هم در قالب جدول با هم مقایسه خواهیم کرد و نمونه های کد واقعی را برای نشان دادن نحوه استفاده از هر کدام ارائه می دهیم. چه مبتدی باشید و چه به دنبال تقویت مهارت های پایتون خود باشید، این تفکیک دقیق به شما درک روشنی از زمان و نحوه استفاده موثر از function ها و method ها می دهد.
تابع(functios)در پایتون چیست؟ در پایتون، یک تابع یک بلوک از کد است که برای انجام یک کار خاص طراحی شده است. توابع به تقسیم برنامه ما به قطعات کوچکتر و ماژولار کمک می کنند. با ایجاد برنامه های پیچیده تر، توابع را می توان مجدداً مورد استفاده قرار داد و کد شما را سازماندهی و مدیریت کرد. مثالی از یک تابع:
متد در پایتون چیست؟
متد، به عکس تابع، یک تابع است که به یک شیء مرتبط است. در پایتون، متدها مستقل نیستند و باید بر روی یک شیء یا داخل یک کلاس فراخوانی شوند. متدها به طور ضمنی از یک شیء استفاده میکنند که برای آن فراخوانی شدهاند.
برای درک بهتر به مثال زیر توجه کنید.
در اینجا، greet یک متد از کلاس Greeter است و بر روی نمونه g از آن کلاس فراخوانی میشود.
در ادامه چند مثال عملی رو باهم بررسی میکنیم.
Function:
در اینجا یک تابع ساده برای به دست اوردن فاکتوریل یک عدد داریم.(5!)
Method:
در اینجا تابع description یک متود است که جزئیات مربوط به یک نمونه خودرو رو نشون میده.
درک تمایز بین توابع و متودها در پایتون برای نوشتن کد واضح و موثر بسیار مهم است. توابع ماژولار بودن و قابلیت استفاده مجدد را ارائه می دهند، در حالی که متود ها ما را قادر می سازند تا رفتارهای درون اشیاء را با رعایت اصول برنامه نویسی شی گرا محصور کنیم. اینکه یک تابع یا یک روش را انتخاب کنید تا حد زیادی به نیازهای خاص برنامه و ترجیحات طراحی شما بستگی دارد. با درک این مفاهیم، می توانید از انعطاف پذیری و استحکام پایتون در پروژه های برنامه نویسی خود استفاده کنید و کد خود را سازماندهی و پویا تر کنید.
منبع
#mahyar
تابع(functios)در پایتون چیست؟ در پایتون، یک تابع یک بلوک از کد است که برای انجام یک کار خاص طراحی شده است. توابع به تقسیم برنامه ما به قطعات کوچکتر و ماژولار کمک می کنند. با ایجاد برنامه های پیچیده تر، توابع را می توان مجدداً مورد استفاده قرار داد و کد شما را سازماندهی و مدیریت کرد. مثالی از یک تابع:
def greet(name):
return f"Hello, {name}!"
print(greet("ali")) # Output: Hello, ali!
متد در پایتون چیست؟
متد، به عکس تابع، یک تابع است که به یک شیء مرتبط است. در پایتون، متدها مستقل نیستند و باید بر روی یک شیء یا داخل یک کلاس فراخوانی شوند. متدها به طور ضمنی از یک شیء استفاده میکنند که برای آن فراخوانی شدهاند.
برای درک بهتر به مثال زیر توجه کنید.
class Greeter:
def __init__(self, name):
self.name = name
def greet(self):
return f"Hello, {self.name}!"
g = Greeter("ali")
print(g.greet()) # Output: Hello, ali!
در اینجا، greet یک متد از کلاس Greeter است و بر روی نمونه g از آن کلاس فراخوانی میشود.
در ادامه چند مثال عملی رو باهم بررسی میکنیم.
Function:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # Output: 120
در اینجا یک تابع ساده برای به دست اوردن فاکتوریل یک عدد داریم.(5!)
Method:
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
def description(self):
return f"{self.make} {self.model}"
my_car = Car("Toyota", "Corolla")
print(my_car.description()) # Output: Toyota Corolla
در اینجا تابع description یک متود است که جزئیات مربوط به یک نمونه خودرو رو نشون میده.
درک تمایز بین توابع و متودها در پایتون برای نوشتن کد واضح و موثر بسیار مهم است. توابع ماژولار بودن و قابلیت استفاده مجدد را ارائه می دهند، در حالی که متود ها ما را قادر می سازند تا رفتارهای درون اشیاء را با رعایت اصول برنامه نویسی شی گرا محصور کنیم. اینکه یک تابع یا یک روش را انتخاب کنید تا حد زیادی به نیازهای خاص برنامه و ترجیحات طراحی شما بستگی دارد. با درک این مفاهیم، می توانید از انعطاف پذیری و استحکام پایتون در پروژه های برنامه نویسی خود استفاده کنید و کد خود را سازماندهی و پویا تر کنید.
منبع
#mahyar
👍1
پایتون فارسی(PyCore)
در این پست قراره تمایز اغلب گیج کننده بین function و method هارو را بررسی کنیم🥸. هر دو بلوک های اساسی در پایتون هستند اما اهداف کمی تفاوت دارد. ما آنها را در کنار هم در قالب جدول با هم مقایسه خواهیم کرد و نمونه های کد واقعی را برای نشان دادن نحوه استفاده…
اینم یه جدول برای درک بهتر تفاوت متود و تابع
در این پست نکات و ترفند های پیشرفته مدل های جنگو رو بررسی خواهیم کرد.🥸
از جمله: ...indexing, custom managers, inheritance
ارث بری مدل ها به شما امکان می دهد یک مدل پایه با اطلاعات رایج ایجاد کنید و آن را در مدل های دیگر گسترش دهید. جنگو از سه نوع model inheritance پشتیبانی می کند:
abstract base classes, multi-table inheritance, and proxy models
Using Abstract Models:
روشی فوقالعاده برای جمعبندی اطلاعات و رفتار مشترک هستند. برای یک abstract model هیچ جدولی در دیتابیس نشان داده نمی شود. در عوض، فیلدها و متدهای آن توسط زیر کلاسها به ارث میرسند.
Example:
در اینجا BaseProfile مانند یک الگو عمل میکند.StudentProfile, TeacherProfile هر دو دارای فیلد های bio , avatar خواهند بود اما هر کدام در جدول های پایگاه داده خودشان ذخیره میشوند.
Custom Managers :
در جنگو Custom Managers به شما این امکان را می دهند که عملکردهای سطح جدول را به مدل های جنگو خود اضافه کنید. آنها را می توان برای کپسوله کردن و عملیات های crud پیچیده و ارائه یک API تمیزتر برای مدل استفاده کرد.
Example:
این custom manager تمامی query های شمارو بر اساس "deleted" فیلتر میکند.
Models Migrations:
مدیریت Migrations مدلها
در جنگو migrations به شما امکان میدهند تا طی زمان، طرح پایگاه داده خود را تکامل دهید. مدیریت مناسب migrations ها برای حفظ یک پروژه سالم بسیار حیاتی است.
توصیهها:
برنامهریزی migrations خود: سعی کنید هنگام امکانپذیر بودن، مهاجرتها را ترکیب کنید و آنها را به کنترل نسخه منتقل کنید.
تست migrations: همیشه migrations را به صورت محلی و در محیط استیجینگ تست کنید، قبل از اعمال آنها در محیط تولید.
استفاده از دستور makemigrations برای تولید فایلهای migrations
استفاده از دستور migrate برای اعمال migrations ها
استفاده از دستور sqlmigrate برای پیشنمایش دستور sql
Proxy Models:
مدلهای پروکسی برای تغییر رفتار یک مدل، مانند defualt ordering یا custom manager بدون ایجاد جدول پایگاه داده جدید استفاده میشوند.
Example:
این پروکسی مدل تمامی profile هارا بر اساس نام نشان میدهد.
Multi-table Inheritance:
این نوع وراثت زمانی استفاده می شود که هر مدل در سلسله مراتب به تنهایی یک موجودیت کامل در نظر گرفته شود که به طور بالقوه به جدول پایگاه داده دیگری مرتبط است.به زبان ساده هر مدل به تنهایی میتواند در یک جدول جداگانه در پایگاه داده نمایش داده شود، به جای اینکه همه اطلاعات در یک جدول واحد ذخیره شود.
مدل Restaurant از مدل Place ارثبری میکند. این بدان معنی است که همه فیلدهای Place به صورت اتوماتیک به Restaurant ارث میبرده شده و Restaurant از همه ویژگیهای Place استفاده میکند.
این الگو به شما امکان میدهد که یک مدل (در اینجا Restaurant) را برای ارثبری از ویژگیها و رفتارهای یک مدل دیگر (در اینجا Place) استفاده کنید، در حالی که همچنان میتوانید به آن فیلدها و ویژگیهای جدیدی را اضافه کنید.
ادامه مطالب در پست بعد
#djnago
#model
#mahyar
از جمله: ...indexing, custom managers, inheritance
ارث بری مدل ها به شما امکان می دهد یک مدل پایه با اطلاعات رایج ایجاد کنید و آن را در مدل های دیگر گسترش دهید. جنگو از سه نوع model inheritance پشتیبانی می کند:
abstract base classes, multi-table inheritance, and proxy models
Using Abstract Models:
روشی فوقالعاده برای جمعبندی اطلاعات و رفتار مشترک هستند. برای یک abstract model هیچ جدولی در دیتابیس نشان داده نمی شود. در عوض، فیلدها و متدهای آن توسط زیر کلاسها به ارث میرسند.
Example:
class BaseProfile(models.Model):
bio = models.TextField()
avatar = models.ImageField(upload_to='avatars/')
class Meta:
abstract = True
class StudentProfile(BaseProfile):
graduation_year = models.IntegerField()
class TeacherProfile(BaseProfile):
office = models.CharField(max_length=100)
در اینجا BaseProfile مانند یک الگو عمل میکند.StudentProfile, TeacherProfile هر دو دارای فیلد های bio , avatar خواهند بود اما هر کدام در جدول های پایگاه داده خودشان ذخیره میشوند.
Custom Managers :
در جنگو Custom Managers به شما این امکان را می دهند که عملکردهای سطح جدول را به مدل های جنگو خود اضافه کنید. آنها را می توان برای کپسوله کردن و عملیات های crud پیچیده و ارائه یک API تمیزتر برای مدل استفاده کرد.
Example:
class ActiveProfileManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(deleted=False)
class Profile(models.Model):
name = models.CharField(max_length=100)
deleted = models.BooleanField(default=False)
objects = models.Manager() # The default manager.
active_objects = ActiveProfileManager() # Our custom manager.
# Usage:
active_profiles = Profile.active_objects.all()
این custom manager تمامی query های شمارو بر اساس "deleted" فیلتر میکند.
Models Migrations:
مدیریت Migrations مدلها
در جنگو migrations به شما امکان میدهند تا طی زمان، طرح پایگاه داده خود را تکامل دهید. مدیریت مناسب migrations ها برای حفظ یک پروژه سالم بسیار حیاتی است.
توصیهها:
برنامهریزی migrations خود: سعی کنید هنگام امکانپذیر بودن، مهاجرتها را ترکیب کنید و آنها را به کنترل نسخه منتقل کنید.
تست migrations: همیشه migrations را به صورت محلی و در محیط استیجینگ تست کنید، قبل از اعمال آنها در محیط تولید.
استفاده از دستور makemigrations برای تولید فایلهای migrations
استفاده از دستور migrate برای اعمال migrations ها
استفاده از دستور sqlmigrate برای پیشنمایش دستور sql
Proxy Models:
مدلهای پروکسی برای تغییر رفتار یک مدل، مانند defualt ordering یا custom manager بدون ایجاد جدول پایگاه داده جدید استفاده میشوند.
Example:
class OrderedProfile(Profile):
class Meta:
proxy = True
ordering = ['name']
# Usage:
ordered_profiles = OrderedProfile.objects.all()
این پروکسی مدل تمامی profile هارا بر اساس نام نشان میدهد.
Multi-table Inheritance:
این نوع وراثت زمانی استفاده می شود که هر مدل در سلسله مراتب به تنهایی یک موجودیت کامل در نظر گرفته شود که به طور بالقوه به جدول پایگاه داده دیگری مرتبط است.به زبان ساده هر مدل به تنهایی میتواند در یک جدول جداگانه در پایگاه داده نمایش داده شود، به جای اینکه همه اطلاعات در یک جدول واحد ذخیره شود.
class Place(models.Model):
name = models.CharField(max_length=50)
class Restaurant(Place):
serves_pizza = models.BooleanField(default=False)
مدل Restaurant از مدل Place ارثبری میکند. این بدان معنی است که همه فیلدهای Place به صورت اتوماتیک به Restaurant ارث میبرده شده و Restaurant از همه ویژگیهای Place استفاده میکند.
این الگو به شما امکان میدهد که یک مدل (در اینجا Restaurant) را برای ارثبری از ویژگیها و رفتارهای یک مدل دیگر (در اینجا Place) استفاده کنید، در حالی که همچنان میتوانید به آن فیلدها و ویژگیهای جدیدی را اضافه کنید.
ادامه مطالب در پست بعد
#djnago
#model
#mahyar
👍1
پایتون فارسی(PyCore)
در این پست نکات و ترفند های پیشرفته مدل های جنگو رو بررسی خواهیم کرد.🥸 از جمله: ...indexing, custom managers, inheritance ارث بری مدل ها به شما امکان می دهد یک مدل پایه با اطلاعات رایج ایجاد کنید و آن را در مدل های دیگر گسترش دهید. جنگو از سه نوع model…
در ادامه پست قبلی:
Indexing:
ایندکس ها برای بهبود عملکرد عملیات پایگاه داده، به ویژه برای مجموعه داده های بزرگ، ضروری هستند.
به عنوان مثال، فرض کنید شما یک جدول کاربران دارید و میخواهید بر اساس نام آنها جستجو کنید. بدون ایندکس، پایگاه داده باید هر رکورد را از ابتدا تا انتها بررسی کند تا نام مورد نظر را پیدا کند. اما با ایجاد یک ایندکس بر روی فیلد نام، پایگاه داده میتواند به سرعت به رکوردهای مرتبط با نام مورد نظر دسترسی پیدا کند.
Example:
Overriding Model Methods:
وقتی در Django یک مدل ایجاد میکنید، میتوانید رفتارهای خاصی را برای عملیاتهای مختلف مدل، مانند ذخیرهسازی یا حذف، سفارشیسازی کنید. این کار به شما این امکان را میدهد که قبل یا بعد از انجام یک عملیات، کارهای خاصی انجام دهید. شما میتوانید عملیات save , delete ,.... رو بازنویسی کنید.
Example:
در این مثال، هر زمان که یک نمونه از MyModel ذخیره میشود، مقدار فیلد name به حروف بزرگ تبدیل میشود قبل از ذخیرهسازی و سپس عملیات ذخیرهسازی انجام میشود.
Soft Deletion:
استفاده از Soft Deletion به شما این امکان را میدهد که آیتمها را به عنوان حذف شده علامتگذاری کنید، اما در واقع آنها را از پایگاه داده حذف نکنید. به این تکنیک "حذف نرم" یا "حذف موقت" نیز گفته میشود. این روش برای نگهداری تاریخچه دادهها، امکان بازگردانی آیتمهای حذف شده و همچنین حفظ ارتباطات بین آیتمهای مختلف مفید است.
Example:
هر یک از این تکنیک ها مجموعه ای از مزایای خاص خود را ارائه می دهد و می تواند به طور قابل توجهی بر کارایی و عملکرد پروژه های شما تأثیر بگذارد. با اجرای این استراتژیها، میتوانید از قابلیتهای قدرتمند مدلسازی جنگو برای ساخت برنامههای کاربردی وب قویتر و مقیاسپذیرتر بهره ببرید.
منبع
#djnago
#model
#mahyar
Indexing:
ایندکس ها برای بهبود عملکرد عملیات پایگاه داده، به ویژه برای مجموعه داده های بزرگ، ضروری هستند.
به عنوان مثال، فرض کنید شما یک جدول کاربران دارید و میخواهید بر اساس نام آنها جستجو کنید. بدون ایندکس، پایگاه داده باید هر رکورد را از ابتدا تا انتها بررسی کند تا نام مورد نظر را پیدا کند. اما با ایجاد یک ایندکس بر روی فیلد نام، پایگاه داده میتواند به سرعت به رکوردهای مرتبط با نام مورد نظر دسترسی پیدا کند.
Example:
class User(models.Model):
username = models.CharField(max_length=100, db_index=True)
email = models.CharField(max_length=100)
class Meta:
indexes = [
models.Index(fields=['username'], name='username_idx'),
models.Index(fields=['email'], name='email_idx')
]
Overriding Model Methods:
وقتی در Django یک مدل ایجاد میکنید، میتوانید رفتارهای خاصی را برای عملیاتهای مختلف مدل، مانند ذخیرهسازی یا حذف، سفارشیسازی کنید. این کار به شما این امکان را میدهد که قبل یا بعد از انجام یک عملیات، کارهای خاصی انجام دهید. شما میتوانید عملیات save , delete ,.... رو بازنویسی کنید.
Example:
class MyModel(models.Model):
name = models.CharField(max_length=100)
def save(self, *args, **kwargs):
self.name = self.name.upper()
super().save(*args, **kwargs)
در این مثال، هر زمان که یک نمونه از MyModel ذخیره میشود، مقدار فیلد name به حروف بزرگ تبدیل میشود قبل از ذخیرهسازی و سپس عملیات ذخیرهسازی انجام میشود.
Soft Deletion:
استفاده از Soft Deletion به شما این امکان را میدهد که آیتمها را به عنوان حذف شده علامتگذاری کنید، اما در واقع آنها را از پایگاه داده حذف نکنید. به این تکنیک "حذف نرم" یا "حذف موقت" نیز گفته میشود. این روش برای نگهداری تاریخچه دادهها، امکان بازگردانی آیتمهای حذف شده و همچنین حفظ ارتباطات بین آیتمهای مختلف مفید است.
Example:
class SoftDeleteModel(models.Model):
is_deleted = models.BooleanField(default=False)
def delete(self, *args, **kwargs):
self.is_deleted = True
self.save()
هر یک از این تکنیک ها مجموعه ای از مزایای خاص خود را ارائه می دهد و می تواند به طور قابل توجهی بر کارایی و عملکرد پروژه های شما تأثیر بگذارد. با اجرای این استراتژیها، میتوانید از قابلیتهای قدرتمند مدلسازی جنگو برای ساخت برنامههای کاربردی وب قویتر و مقیاسپذیرتر بهره ببرید.
منبع
#djnago
#model
#mahyar
🌟Code with MrCoder7️⃣0️⃣1️⃣
Advanced Django Models Tips and Tricks #django - 🌟Code with MrCoder7️⃣0️⃣1️⃣
Elevate your Django skills with these advanced tips and tricks for optimizing models. Learn about inheritance, indexing, custom managers, and other techniques to improve your application's performance and scalability.
👍1
بچه ها ویدیوهای آموزشی الگوریتم که آقا سجاد اماده کرده رو حتما ببینید به شدت توی فهم ساختارهای برنامه نویسی کمک میکنه
اپلیکیشن Beeper که سر کلاس راجع بهش صحبت کردم ، این اپ میتونه با تمام پیام رسان های شما پل بزنه و براحتی هم به واتس اپ تلگرام اینستاگرام و بقیه اپ ها پیام بفرستید و دریافت کنید بدون هیچ فیلتری یا نیاز به پروکسی و فیلترشکن
اپ رو نصب کنید واردش که شدید صفحه اول پل ها رو نشون میده که رو هر کدوم کلیک کنید فعال میشه فقط زمان اتصال به مثلا تلگرام یه کد تایید به حساب تلگرام میفرسته که باید داخل اپ جایی که خودش مشخص میکنه وارد کنید تا متصل به تلگرام بشه و همینجوری به بقیه
همزمان همه اپ ها رو در یک اپ بدون فیلتر خواهید داشت
اینستاگرام قسمت دایرکت براتون اضافه میشه
https://play.google.com/store/apps/details?id=com.beeper.android
#M_Sh
@persians_python
اپ رو نصب کنید واردش که شدید صفحه اول پل ها رو نشون میده که رو هر کدوم کلیک کنید فعال میشه فقط زمان اتصال به مثلا تلگرام یه کد تایید به حساب تلگرام میفرسته که باید داخل اپ جایی که خودش مشخص میکنه وارد کنید تا متصل به تلگرام بشه و همینجوری به بقیه
همزمان همه اپ ها رو در یک اپ بدون فیلتر خواهید داشت
اینستاگرام قسمت دایرکت براتون اضافه میشه
https://play.google.com/store/apps/details?id=com.beeper.android
#M_Sh
@persians_python
Google Play
Beeper: Universal Chat - Apps on Google Play
Chat with anyone you want on any chat network
پایتون فارسی(PyCore)
پاول دورف نابغه قرن جدید !؟! تلگرام بر خلاف اکثر شبکه های اجتماعی و پیام رسان های معروف به دور از سیاسی گری متولد شد و تا به امروز به دو شعار باطنی خود که دوری از جانب گری در مسایل سیاسی و حفظ حریم خصوصی کاربران بوده عمل کرده است. به شکلی که تلگرام هم در کشورهای…
اینم نقد شدن نات کوین از شروع این پروژه چندین مطلب راجع بهش نوشتم امیدوارم ازش استفاده کرده باشید
👍3
سلام وقت همگی بخیر
با توجه به تعطیلی روز پنجشنبه در خراسان رضوی کلیه کلاس های مجتمع فنی روز پنجشنبه
تعطیل هست
با توجه به تعطیلی روز پنجشنبه در خراسان رضوی کلیه کلاس های مجتمع فنی روز پنجشنبه
تعطیل هست
سایتscr که فانکشن های تبدیل زمان میلادی به زمان شمسی رو بهتون میده
یه فانکشن پایتونی رو نوشته که سه تا آرگومان بهش داده میشه سال و ماه و روز میلادی و خروجی یه لیست برمیگردونه که سال و ماه و روز شمسی رو میده و میتونید تو پروژه هاتون استفاده کنید ازش بدون نیاز به پکیج خاصی
https://jdf.scr.ir/jdf/python
یه فانکشن پایتونی رو نوشته که سه تا آرگومان بهش داده میشه سال و ماه و روز میلادی و خروجی یه لیست برمیگردونه که سال و ماه و روز شمسی رو میده و میتونید تو پروژه هاتون استفاده کنید ازش بدون نیاز به پکیج خاصی
https://jdf.scr.ir/jdf/python
#SADRA_K
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👌2
سلام به همه دو تا پروژه جدید رو تلگرام لانچ شدن شبیه به نات کوین و تپ سواپ
اگه علاقه به این موضوعات دارید میتونید تست کنید شاید مثل نات کوین قیمت گرفتن
اولی بزرگترین کانال تلگرام رو دارن با بیست میلیون کاربر
دومی هم در حال حاضر ده میلیون عضو داره
بازی همستر با کانال بیست میلیونی
https://t.me/hamsTer_kombat_bot/start?startapp=kentId26472764
--------------------------------------------------------
بازی یس کوین که الان ده میلیون کاربر داره
https://t.me/theYescoin_bot/Yescoin?startapp=TmPQnI
اگه علاقه به این موضوعات دارید میتونید تست کنید شاید مثل نات کوین قیمت گرفتن
اولی بزرگترین کانال تلگرام رو دارن با بیست میلیون کاربر
دومی هم در حال حاضر ده میلیون عضو داره
بازی همستر با کانال بیست میلیونی
https://t.me/hamsTer_kombat_bot/start?startapp=kentId26472764
--------------------------------------------------------
بازی یس کوین که الان ده میلیون کاربر داره
https://t.me/theYescoin_bot/Yescoin?startapp=TmPQnI
Telegram
Hamster Kombat
Just for you, we have developed an unrealistically cool application in the clicker genre, and no hamster was harmed! Perform simple tasks that take very little time and get the opportunity to earn money!
👍6👎3👌1
پایتون فارسی(PyCore)
برای آخرین مطلب راجع به نات کوین اینکه فکر کنید با کلیک کردن قراره کسی پولدار بشه یه رویای خوشایند غیرواقعی هست این شکل پروژه ها با استفاده از اهرم تعداد افراد به یه پروژه ای ارزش میدن و حالا ممکنه در آینده با ایده های پشتش بتونن این ارز رو قیمت گذاری کنند…
یک بار دیگه این مطلب رو بخونید و لپ مطلب رو بگیرید
پروژه های بر بستر تلگرام بعد از نات قطعا قارچ وار رشد میکنن و همه شون هم قرار نیست به جایی برسند
فرصت های که بعنوان یه برنامه نویس پیش اومده رو بگیرید و روی تخصص خودتون متمرکز بشید
و این پروژه ها رو هم بعنوان یه گیم ببینید که ممکنه بشه ممکنه نشه
جوری نشه که بخاطر این جوی که شکل گرفته از هدف اصلی دور بشید و تمام وقت و تمرکز رو روی اینا بذارید
هیچ چیزی تو این دنیا مجانی نیست
پروژه های بر بستر تلگرام بعد از نات قطعا قارچ وار رشد میکنن و همه شون هم قرار نیست به جایی برسند
فرصت های که بعنوان یه برنامه نویس پیش اومده رو بگیرید و روی تخصص خودتون متمرکز بشید
و این پروژه ها رو هم بعنوان یه گیم ببینید که ممکنه بشه ممکنه نشه
جوری نشه که بخاطر این جوی که شکل گرفته از هدف اصلی دور بشید و تمام وقت و تمرکز رو روی اینا بذارید
هیچ چیزی تو این دنیا مجانی نیست
👍6👎1
خب سلام دوباره در ادامه مجموعه پست های دیتابیس تو این یکی قراره با معماری Vitess اشنا بشیم و متوجه بشیم یوتوب چگونه 2.49 میلیارد کاربر خودش رو با MySQL هندل میکنه.
توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه.
روزی روزگاری، سه نفر که تو PayPal کار میکردن، تصمیم گرفتن یه سایت دوستیابی درست کنن. اما مدل کسبوکارشون شکست خورد. برای همین ایدهشون رو عوض کردن و یه سایت اشتراکگذاری ویدئو درست کردن و اسمش رو گذاشتن یوتیوب.
اونا عناوین ویدئوها، توضیحات و اطلاعات کاربران رو تو MySQL ذخیره کردن. وقتی کاربرهای بیشتری به سایت پیوستن، اونا MySQL رو به حالت رهبر-دنبالکننده (leader-follower replication topology) تنظیم کردن تا بتونن بهتر مقیاسپذیری کنن. اما تکرار در MySQL تکنخی (single-threaded) است. بنابراین دنبالکنندهها نمیتونستن در عملیات نوشتن شدید به رهبر برسند و دادههای جدید رو بهروز کنن. با این حال، نرخ رشدشون خیلی زیاد بود و به یک میلیارد کاربر رسیدن و به دومین سایت پربازدید در جهان تبدیل شدن.
بنابراین با اضافه کردن یه حافظه نهان (cache) مقیاسپذیری کردن و همه رویدادها رو از لاگ باینری MySQL (binary log) بارگذاری کردن. این یعنی تکرار به حافظه وابسته شد و سرعت بیشتری پیدا کرد. اگرچه این کار به طور موقت مشکل مقیاسپذیری اونا رو حل کرد، مشکلات جدیدی به وجود اومد.
در اینجا به برخی از اونا اشاره میکنم:
1. پارتیشنبندی (Sharding):
اولین کاری که باید کرد این که MySQL باید پارتیشنبندی بشه تا نیازهای ذخیرهسازی رو مدیریت کنه. اما بعد از پارتیشنبندی، معاملات (transactions) و پیوستن جداول (joins) سخت میشه. بنابراین منطق برنامه (application logic) باید این رو مدیریت کنه. این یعنی منطق برنامه باید بفهمه که کدوم پارتیشنها رو باید پرسوجو کنه و این باعث افزایش احتمال زمان خرابی (downtime) میشه.
2. عملکرد (Performance):
و(leader-follower replication topology) باعث میشه که دادههای قدیمی از دنبالکنندهها خونده بشه. بنابراین منطق برنامه باید خوندن دادهها رو به رهبر هدایت کنه اگر دادههای جدید لازم باشه. و این نیاز به پیادهسازی منطق اضافی داره.
3. حفاظت (Protection):
ریسک اینکه برخی پرسوجوها خیلی طول بکشه تا دادهها رو برگردونن وجود داره. همچنین تعداد زیادی از اتصالات MySQL به طور همزمان میتونه مشکلساز بشه و ممکنه دیتابیس رو از کار بندازه.
اونا میخواستن یه لایه انتزاعی روی MySQL برای سادگی و مقیاسپذیری ایجاد کنند. بنابراین Vitess رو ساختن. در اینجا نحوه ارائه مقیاسپذیری بالا توسط Vitess رو توضیح میدم:
1. تعامل با پایگاه داده:(Interacting with Database)
اونا یه سرور جانبی (sidecar server) جلو هر نمونه MySQL نصب کردن و اسمش رو گذاشتند VTTablet.
این سرور جانبی به اونا اجازه میداد:
- کنترل سرور MySQL و مدیریت پشتیبانگیری از پایگاه داده
- بازنویسی کوئریهای سنگین با اضافه کردن محدودیت (limit clause)
- کش کردن دادههای پر دسترس برای جلوگیری از مشکل Thundering Herd
2. مسیریابی کوئریها(Routing SQL Queries):
یه سرور پراکسی بدون حالت (stateless proxy server) برای مسیریابی کوئریها تنظیم کردند و اسمش رو گذاشتند VTGate.
این سرور پراکسی بهشون اجازه میداد:
- پیدا کردن VTTablet صحیح برای مسیریابی کوئری بر اساس اسکیما و طرح پارتیشنبندی
- پایین نگه داشتن تعداد اتصالات MySQL از طریق تجمیع اتصالات (connection pooling)
- صحبت با لایه کاربردی به پروتکل MySQL
- عمل کردن مانند یه سرور MySQL یکپارچه برای سادگی
- محدود کردن تعداد معاملات در یک زمان برای عملکرد بهتر
همچنین برای مقیاسپذیری بیشتر، سرورهای VTGate متعددی راهاندازی کردند.
3. اطلاعات حالت:
تصویر چهارم در کامنت ها
یه پایگاه داده توزیعشده کلید-مقدار (distributed key-value database) راهاندازی کردند تا اطلاعات مربوط به اسکیما، طرحهای پارتیشنبندی و نقشها رو ذخیره کنه.
این پایگاه داده همچنین روابط بین پایگاههای داده مثل رهبر و دنبالکنندهها رو مدیریت میکنه.
در ادمه از Zookeeper برای پیادهسازی این پایگاه داده کلید-مقدار استفاده کرندند.
علاوه بر این، این دادهها رو در VTGate برای عملکرد بهتر کش میکردند.
برای بهروزرسانی پایگاه داده کلید-مقدار، یه سرور HTTP راهاندازی کردند و اسمش رو گذاشتند VTctld. این سرور فهرست کامل سرورها و روابطشون رو میگیره و سپس پایگاه داده کلید-مقدار رو بهروزرسانی میکنه.
#database
#postgresql
توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه.
روزی روزگاری، سه نفر که تو PayPal کار میکردن، تصمیم گرفتن یه سایت دوستیابی درست کنن. اما مدل کسبوکارشون شکست خورد. برای همین ایدهشون رو عوض کردن و یه سایت اشتراکگذاری ویدئو درست کردن و اسمش رو گذاشتن یوتیوب.
اونا عناوین ویدئوها، توضیحات و اطلاعات کاربران رو تو MySQL ذخیره کردن. وقتی کاربرهای بیشتری به سایت پیوستن، اونا MySQL رو به حالت رهبر-دنبالکننده (leader-follower replication topology) تنظیم کردن تا بتونن بهتر مقیاسپذیری کنن. اما تکرار در MySQL تکنخی (single-threaded) است. بنابراین دنبالکنندهها نمیتونستن در عملیات نوشتن شدید به رهبر برسند و دادههای جدید رو بهروز کنن. با این حال، نرخ رشدشون خیلی زیاد بود و به یک میلیارد کاربر رسیدن و به دومین سایت پربازدید در جهان تبدیل شدن.
بنابراین با اضافه کردن یه حافظه نهان (cache) مقیاسپذیری کردن و همه رویدادها رو از لاگ باینری MySQL (binary log) بارگذاری کردن. این یعنی تکرار به حافظه وابسته شد و سرعت بیشتری پیدا کرد. اگرچه این کار به طور موقت مشکل مقیاسپذیری اونا رو حل کرد، مشکلات جدیدی به وجود اومد.
در اینجا به برخی از اونا اشاره میکنم:
1. پارتیشنبندی (Sharding):
اولین کاری که باید کرد این که MySQL باید پارتیشنبندی بشه تا نیازهای ذخیرهسازی رو مدیریت کنه. اما بعد از پارتیشنبندی، معاملات (transactions) و پیوستن جداول (joins) سخت میشه. بنابراین منطق برنامه (application logic) باید این رو مدیریت کنه. این یعنی منطق برنامه باید بفهمه که کدوم پارتیشنها رو باید پرسوجو کنه و این باعث افزایش احتمال زمان خرابی (downtime) میشه.
2. عملکرد (Performance):
و(leader-follower replication topology) باعث میشه که دادههای قدیمی از دنبالکنندهها خونده بشه. بنابراین منطق برنامه باید خوندن دادهها رو به رهبر هدایت کنه اگر دادههای جدید لازم باشه. و این نیاز به پیادهسازی منطق اضافی داره.
3. حفاظت (Protection):
ریسک اینکه برخی پرسوجوها خیلی طول بکشه تا دادهها رو برگردونن وجود داره. همچنین تعداد زیادی از اتصالات MySQL به طور همزمان میتونه مشکلساز بشه و ممکنه دیتابیس رو از کار بندازه.
اونا میخواستن یه لایه انتزاعی روی MySQL برای سادگی و مقیاسپذیری ایجاد کنند. بنابراین Vitess رو ساختن. در اینجا نحوه ارائه مقیاسپذیری بالا توسط Vitess رو توضیح میدم:
1. تعامل با پایگاه داده:(Interacting with Database)
اونا یه سرور جانبی (sidecar server) جلو هر نمونه MySQL نصب کردن و اسمش رو گذاشتند VTTablet.
این سرور جانبی به اونا اجازه میداد:
- کنترل سرور MySQL و مدیریت پشتیبانگیری از پایگاه داده
- بازنویسی کوئریهای سنگین با اضافه کردن محدودیت (limit clause)
- کش کردن دادههای پر دسترس برای جلوگیری از مشکل Thundering Herd
2. مسیریابی کوئریها(Routing SQL Queries):
یه سرور پراکسی بدون حالت (stateless proxy server) برای مسیریابی کوئریها تنظیم کردند و اسمش رو گذاشتند VTGate.
این سرور پراکسی بهشون اجازه میداد:
- پیدا کردن VTTablet صحیح برای مسیریابی کوئری بر اساس اسکیما و طرح پارتیشنبندی
- پایین نگه داشتن تعداد اتصالات MySQL از طریق تجمیع اتصالات (connection pooling)
- صحبت با لایه کاربردی به پروتکل MySQL
- عمل کردن مانند یه سرور MySQL یکپارچه برای سادگی
- محدود کردن تعداد معاملات در یک زمان برای عملکرد بهتر
همچنین برای مقیاسپذیری بیشتر، سرورهای VTGate متعددی راهاندازی کردند.
3. اطلاعات حالت:
تصویر چهارم در کامنت ها
یه پایگاه داده توزیعشده کلید-مقدار (distributed key-value database) راهاندازی کردند تا اطلاعات مربوط به اسکیما، طرحهای پارتیشنبندی و نقشها رو ذخیره کنه.
این پایگاه داده همچنین روابط بین پایگاههای داده مثل رهبر و دنبالکنندهها رو مدیریت میکنه.
در ادمه از Zookeeper برای پیادهسازی این پایگاه داده کلید-مقدار استفاده کرندند.
علاوه بر این، این دادهها رو در VTGate برای عملکرد بهتر کش میکردند.
برای بهروزرسانی پایگاه داده کلید-مقدار، یه سرور HTTP راهاندازی کردند و اسمش رو گذاشتند VTctld. این سرور فهرست کامل سرورها و روابطشون رو میگیره و سپس پایگاه داده کلید-مقدار رو بهروزرسانی میکنه.
#database
#postgresql
پایتون فارسی(PyCore)
خب سلام دوباره در ادامه مجموعه پست های دیتابیس تو این یکی قراره با معماری Vitess اشنا بشیم و متوجه بشیم یوتوب چگونه 2.49 میلیارد کاربر خودش رو با MySQL هندل میکنه. توجه این پست بر اساس تحقیق هستش و ممکنه با پیادهسازی واقعی فرق داشته باشه. روزی روزگاری،…
خلاصه:
اول-VTGate: سرور پراکسی برای مسیریابی کوئریها
دوم-Key-Value Database: سرور پیکربندی برای مدیریت توپولوژی
سوم-VTTablet: سرور جانبی که روی هر MySQL اجرا میشه
اونا Vitess رو با زبان Go نوشتند و اون رو اوپن سورس کردند. همچنین از MariaDB هم پشتیبانی میکنه. یوتیوب تونست با ترکیب رVitess و MySQL به 2.49 میلیارد کاربر رو مدیریت کنه. این مطالعه موردی نشون میده که MySQL میتونه به راحتی ترافیک در مقیاس اینترنت و کاربران زیاد رو مدیریت کنه.
اول-VTGate: سرور پراکسی برای مسیریابی کوئریها
دوم-Key-Value Database: سرور پیکربندی برای مدیریت توپولوژی
سوم-VTTablet: سرور جانبی که روی هر MySQL اجرا میشه
اونا Vitess رو با زبان Go نوشتند و اون رو اوپن سورس کردند. همچنین از MariaDB هم پشتیبانی میکنه. یوتیوب تونست با ترکیب رVitess و MySQL به 2.49 میلیارد کاربر رو مدیریت کنه. این مطالعه موردی نشون میده که MySQL میتونه به راحتی ترافیک در مقیاس اینترنت و کاربران زیاد رو مدیریت کنه.