Syntax | سینتکس – Telegram
Syntax | سینتکس
نحوه ذخیره کردن slug تو یکی از پکیج های معروف جنگویی رو با هم ببینیم. توضیح پست بعدی #django @Syntax_fa
1. if self._state.adding and not self.slug:
- قسمت اول چک کردن یعنی self._state.adding اگر در حال ساختن یک شی جدید در دیتابیس باشیم مساوی با True هستش همچنین اسلاگ هم باید None باشه.

2. self.slug = self.slugify(self.name)
- این خط یک slug جدید را بر اساس فیلد name با استفاده از تابع slugify تولید می‌کند.

3. using = kwargs.get("using" or router.db_for_write(type(self), instance=self))
- این خط مشخص می‌کند که داده‌ها باید در کدام پایگاه داده ذخیره شوند، با استفاده از router.db_for_write.
(درباره B router بعدا توضیح میدم)

4. kwargs["using"] = using
- این خط، پارامتر using را در kwargs قرار می‌دهد تا در ادامه به super().save منتقل شود.

5. try: ... except IntegrityError:
- این بلوک try/except یک تراکنش atomic را برای ذخیره داده‌ها ایجاد می‌کند.
- اگر خطای IntegrityError (مانند تکراری بودن slug) رخ دهد، بلوک except اجرا می‌شود.

6. slugs = set(...)
- در صورت رخ دادن `IntegrityError`، این خط تمام `slug`‌های موجود در پایگاه داده که اولشون شبیه به اسلاگ ما هستش رو بازیابی می کنه.

7. while True: ... i += 1
- این حلقه یک slug جدید تولید می‌کند تا زمانی که یک slug منحصر به فرد پیدا شود.- slug جدید با افزودن یک شماره انتهایی به slug قبلی تولید می‌شود (مانند my-slug-1, my-slug-2, و غیره).

8. return super().save(*args, **kwargs)
- بعد از یافتن یک slug منحصر به فرد، شیء با فراخوانی متد save پایه ذخیره می‌شود.

9. else: return super().save(*args, **kwargs)
- اگر شیء در حال به‌روزرسانی است (نه ایجاد)، متد save پایه بدون هیچ تغییری فراخوانی می‌شود.

این کد به این دلیل طراحی شده است تا یک slug منحصر به فرد برای هر شی ایجاد کند، حتی اگر نام‌های مشابهی در پایگاه داده وجود داشته باشد. همچنین از تراکنش‌های اتمیک برای حفظ یکپارچگی داده‌ها در طول عملیات ذخیره‌سازی استفاده می‌کند.

#django

@Syntax_fa
👍7
زمان و حافظه خود را با list comprehension، map و generator نجات دهید!
سلام رفقا!

سطح = مقدماتی

امروز می خواهم به شما 3 ابزار قدرتمند در پایتون را معرفی کنم که می توانند به شما در صرفه جویی در زمان و حافظه هنگام کار با لیست ها و داده ها کمک کنند:

1. list comprehension:

این ابزار به شما امکان می دهد لیست های جدیدی را با کدی کوتاه و خوانا از لیست های موجود بسازید.

به جای استفاده از for loop های سنتی، می توانید از list comprehension برای فیلتر کردن، نگاشت و تغییر عناصر لیست به طور همزمان استفاده کنید.

مثال:
numbers = [1, 2, 3, 4, 5]
squared_numbers = [n * n for n in numbers]
print(squared_numbers) # Output: [1, 4, 9, 16, 25]

بااحتیاط از کد استفاده کنید.
2. map:

این تابع به شما امکان می دهد یک عملکرد را به هر عنصر لیست اعمال کنید و نتیجه را به عنوان یک لیست جدید برگردانید.

map برای تغییر یا نگاشت داده ها در یک لیست به طور یکسان مفید است.

مثال:
def double(x):
return x * 2

numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(double, numbers))
print(doubled_numbers) # Output: [2, 4, 6, 8, 10]

بااحتیاط از کد استفاده کنید.
3. generator:

ژنراتورها به شما امکان می دهند به طور متوالی مقادیر را از یک مجموعه داده تولید کنید بدون اینکه کل مجموعه داده را به یکباره در حافظه نگه دارید.

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

مثال:
def even_numbers(start, end):
for n in range(start, end + 1):
if n % 2 == 0:
yield n

for even_number in even_numbers(1, 20):
print(even_number) # Output: 2 4 6 8 10 12 14 16 18 20

بااحتیاط از کد استفاده کنید.
با استفاده از این 3 ابزار قدرتمند، می توانید کد خود را کارآمدتر و مختصرتر کنید و در عین حال از حافظه و زمان خود به طور موثرتر استفاده کنید.

درضمن یه نکته رو خودم اضافه کنم که استفاده از list comprehension و map
نسبت به حلقه‌های for معمولی در پایتون ، ۲ الی ۳ برابر در زمان و حافظه صرفه جویی می‌کنه!
منبع:
Learn web development with python

[amirhossein]

#python

@Syntax_fa
👍11🔥3😁1
سوال پایتونی:
1. توضیح دهید که چگونه می‌توان از decorators در Python استفاده کرد. یک مثال عملی از کاربرد decorators ارائه دهید.

پاسخ: Decorators در Python یک الگوریتم قدرتمند برای تغییر رفتار تابع‌ها یا کلاس‌ها در زمان اجرا هستند. آن‌ها به شما امکان می‌دهند تا کدهای قابل استفاده مجدد بنویسید و از طریق (Wrapper) تابع‌ها را گسترش دهید. برای استفاده از آن‌ها، شما یک تابع دیگر را تعریف می‌کنید که تابع اصلی را در برمی‌گیرد و کدهای اضافی قبل یا بعد از اجرای تابع اصلی اضافه می‌کند.

مثال عملی: فرض کنید می‌خواهیم یک decorator بنویسیم که زمان اجرای یک تابع را لاگ می‌کند:

import time

def log_execution_time(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Function {func.__name__} took {end_time - start_time} seconds to execute.")
return result
return wrapper

@log_execution_time
def my_function(n):
result = 0
for i in range(n):
result += i
return result

my_function(10000000)


در این مثال، log_execution_time یک decorator است که یک تابع دیگر را می‌پذیرد (در اینجا my_function) و یک تابع جدید با نام wrapper را برمی‌گرداند که تابع اصلی را فرا می‌خواند و زمان اجرای آن را لاگ می‌کند.

#python #decorators

@Syntax_fa
👍11🔥21
خب :))
https://github.com/bepass-org/oblivion

https://github.com/bepass-org/bepass

کمک به هموطنا برای دور زدن فیلتر مبارک :))))

یکم توضیحات بزار بدم:
Oblivion
کلاینت غیر رسمی وارپ با یک سری تغییرات هست که نسخه اندرویدش(iOS و دسکتاپ گرافیکی بزودی) منتشر کردیم و میتونید تقریبا با اکثریت اینترنت ها راحت دور بزنین فیلترو و وصل بشین

Bepass
اینو توضیحش نمیدم زیاد😁چون فعلا در استیج بتا هست(ولی قابل استفاده هست) و قراره تغییرات خوب و بزرگی توش ایجاد بشه

https://news.1rj.ru/str/danielcoderx

#freedom

@Syntax_fa
🔥7
سوال پایتونی 🔥:
مفهوم Generators و Coroutines در Python را توضیح دهید. یک مثال کاربردی از استفاده از آن‌ها ارائه دهید.

Generators:
در Python توابعی هستند که مقادیر را یکی پس از دیگری تولید می‌کنند، به جای محاسبه و بازگرداندن یک لیست کامل. این امر منجر به صرفه‌جویی در حافظه و کارایی بهتر می‌شود.

Coroutines:
در Python نوعی توابع ویژه‌ای هستند که می‌توانند در طول اجرای خود چندین بار متوقف و از سر گرفته شوند. آن‌ها برای انجام عملیات‌های همزمان و غیرمتوالی مانند برنامه‌نویسی شبکه یا برنامه‌نویسی رویدادی مفید هستند.

مثال کاربردی: فرض کنید می‌خواهیم یک تابع بنویسیم که اعداد فیبوناچی را تا یک حد مشخص تولید کند. می‌توانیم از یک generator برای این کار استفاده کنیم:

def fibonacciGenerator(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

for num in fibonacciGenerator(10):
    print(num)


در این مثال، fibonacciGenerator یک generator است که در هر بار فراخوانی، عدد بعدی در دنباله فیبوناچی را تولید می‌کند. این روش کارآمدتر از محاسبه و ذخیره کل دنباله در یک لیست است.

یک مثال از استفاده از coroutines:

def consumer():
    while True:
        received = yield
        print(f"Received: {received}")

def producer(consumer_coroutine):
    consumer = consumer_coroutine
    next(consumer)  # Advance to the yield keyword
    n = 0
    while True:
        n += 1
        print(f"Producing: {n}")
        consumer.send(n)
        if n == 5:
            break

consumer_cor = consumer()
producer(consumer_cor)


در این مثال، consumer یک coroutine است که داده‌های دریافتی را چاپ می‌کند. producer یک تابع است که داده‌ها را به coroutine consumer ارسال می‌کند. این نمونه‌کد نشان می‌دهد چگونه می‌توان از coroutines برای ارتباط و مبادله داده‌ها بین دو تابع استفاده کرد.

#generators #coroutines

@Syntax_fa
🔥10👍4
معرفی پکیج d_jwt_auth

پکیج d_jwt_auth برای کار با jwt در جنگو هستش.

چه قابلیت هایی داره؟
۱.سادگی. تمامی کارهارو تنها با 4 فانکشن میتونید انجام بدید.
۲. حداقل دوبرابر simple_jwt پرفورمنس بهتری داره!
۳. امنیت بیشتر بواسطه رمزنگاری کردن توکن
۴. چک کردن آی پی و دستگاهی که توکن برای اون صادر شده با آی پی آدرس و دیوایسی که ریکوئست زده.
۵. نحوه نامعتبر کردن توکن به شیوه خیلی کارآمد تر
و ...

مثال از نحوه استفاده:

اول از همه نصبش می کنیم:
pip install d_jwt_auth

تو لیست اپ ها اضافش می کنم:
INSTALLED_APPS = [
    ...
    "d_jwt_auth",
]

بعدش migrate بزنید.

کلاس Authentication رو قرار میدیم:
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'd_jwt_auth.authenticate.JWTAuthentication',
        ...
    ),
}

نحوه ساخت توکن:
from d_jwt_auth.token import generate_token 

class LoginView(APIView):
    def post(self, request):
        ...
        token = generate_token(request=request, user=user)
        return Response(data=token, status=status.HTTP_200_OK)

Github:
https://github.com/alireza-fa/django-jwt-auth

Pypi:
https://pypi.org/project/d-jwt-auth/

(برای حمایت ستاره فراموش نشه)

قبل استفاده حتما داکیومنت رو کامل بخونید

#django #jwt

@Syntax_fa
🔥8👍4
💬 پاول دورف موسس #تلگرام تو مصاحبه اخیرش گفته که:

کدنویسی تلگرام رو برادرش انجام داده و خودش هم مدیر محصول تلگرام هس.

هر امکاناتی که به تلگرام اضافه میشه، ایده شخص خودشه.

صد درصد مالکیت کمپانی هم به خودش تعلق داره.

کمپانی تلگرام واحد منابع انسانی و جذب نیرو نداره و کلا ۳۰ تا مهندس داره و برنامه‌نویس‌هاشو از بین مسابقاتی که برگذار میکنه انتخاب میکنه.

💙 میگه ما بهترینِ بهترینِ بهترین‌هارو انتخاب می‌کنیم.

❗️خیلی جالبه ۹۰۰ میلیون کاربر توسط ۳۰ نفر مدیریت میشه👌🏻

🔹پاول دورف با ۱۵.۵ میلیارد دلار ثروت میگه که هیچ کدوم از چیزهایی که بقیه پولدارها مثل هواپیما و کشتی و حتی خونه دارن رو من ندارم (مستأجر هست).

🔹فلسفش اینه که هرگونه دارایی، باعث میشه که سرم به اونا گرم بشه و وقتم رو بگیره و منو از هدفم دور کنه.

🔹میگه ترجیح میدم تمام وقتم رو بذارم برای بستری که به میلیون‌ها نفر اجازه میده باهم در ارتباط باشن، تا اینکه دغدم رو بذارم برای دیزاین خونه‌ام، جایی که فقط خودم و اطرافیانم می‌تونیم ازش استفاده کنیم.

🔹میگه اولویت اول تلگرام از همون ابتدا حفظ امنیت کاربرانش بوده و برای همین همیشه از سمت دولت‌های مختلف تحت فشار قرار گرفته که اطلاعات کاربران رو بده.

🔹مجبور شده از کشورش روسیه بزنه بیرون و در آمریکا هم میخواستن بکشنش. در اروپا هم بهش اجازه کار و جذب نیرو نمیدادن. ۷ ساله تو اماراته و تنها دولتی بوده که اذیتش نکرده.

🔹میگه من به آزادی بیان اعتقاد دارم و درخواست دولت‌هارو رد می‌کنم. تنها فشار اساسی از طرف اپل و گوگل بوده که خیلی جاها باید بهش تن بده تا تلگرام از اپ‌استور و گوگل‌پلی حذف نشه.

🔹تلگرام با ۹۰۰ میلیون کاربر تا حالا یکبار هم برای جذب کاربر تبلیغات انجام نداده.

🔹ازش پرسید که چطوری تونستی بدون تبلیغات به چنین چیزی برسی؟ میگه چون آدم‌ها باهوشن. محصول خوب که می‌بینن، سرعت و امنیت و امکاناتش رو که از نزدیک لمس می‌کنن دیگه بیخیالش نمیشن و تازه به هم معرفیش هم می‌کنن.

لینک مصاحبه:
https://www.youtube.com/watch?si=mbW_3aBlL4JBR30S&v=1Ut6RouSs0w&feature=youtu.be

@gopher_academy | @Syntax_fa
👍32👎31👌1
This media is not supported in your browser
VIEW IN TELEGRAM
رابطه برنامه نویس و تستر :)

#fun

@Syntax_fa
😁22👍1🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
جواب درست به سوالات مصاحبه hr

#fun

@Syntax_fa
😁4
سوال پایتونی:

چگونه می‌توان در Python از ویژگی‌های Dataclasses برای ایجاد کلاس‌های ساده‌تر و قابل مدیریت‌تر استفاده کرد؟ یک مثال ارائه دهید.

Dataclasses
در Python یک راه ساده برای تعریف کلاس‌های حاوی داده‌ها (data classes) فراهم می‌کنند. این ویژگی در Python 3.7 معرفی شد و از کد تکراری برای تعریف متدهای init، repr، eq و دیگر متدهای پایه‌ای جلوگیری می‌کند.

برای استفاده از Dataclasses، کافی است از دکوراتور @dataclass روی تعریف کلاس استفاده کنید. سپس می‌توانید فیلدهای کلاس را با انواع داده مختلف تعریف کنید.

مثال:

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int
    email: str = None

person1 = Person("Alice", 30, "alice@example.com")
person2 = Person("Bob", 25)

print(person1)  # Output: Person(name='Alice', age=30, email='alice@example.com')
print(person2)  # Output: Person(name='Bob', age=25, email=None)

print(person1 == person2)  # Output: False


در این مثال، Person یک dataclass است که سه فیلد name، age و email دارد. فیلد email یک مقدار پیش‌فرض None دارد. با استفاده از @dataclass، Python به طور خودکار متدهایی مانند init و repr را برای ما ایجاد می‌کند.

Dataclasses همچنین امکانات دیگری مانند مقایسه اشیاء، هش‌پذیری، و گزینه‌های پیشرفته‌تر را نیز فراهم می‌کنند.

#python

@Syntax_fa
👍121
هکاتون The Open League

▪️بنیاد TON هکاتون The Open League را راه‌اندازی کرد: مسیری سریع برای ورود به Open League با بیش از 150 میلیون دلار پاداش و مشوق‌های مختلف برای کاربران.
▪️هکاتون از آوریل تا ژوئن اجرا می‌شود و صندوق جایزه‌ی آن 2 میلیون دلار است.
▪️شرکت‌کنندگان اپلیکیشن و موارد استفاده جدید را برای دنیای Web3 شامل GameFi و شبکه‌های اجتماعی Web3 و DeFi و تجارت الکترونیک در TON و Telegram می‌سازند.

چرا در این هکاتون شرکت کنیم؟
▪️صندوق جایزه‌ی 2 میلیون دلاری.
▪️مسیری سریع برای شرکت در The Open League با حمایت 50،000 Toncoin جهت تقویت استخر نقدینگی توکن شما.
▪️بهترین پروژه‌ها می‌توانند از صندوق 500،000$ ارائه شده توسط TON Ventures کمک مالی دریافت کنند.
▪️فرصتی برای ملاقات با اعضای بنیاد TON و مدیران صندوق‌های سرمایه‌گذاری خطرپذیر در TON در طول Gateway در شهر دبی.

پروژه‌های شرکت‌کننده در فصل آزمایشی Open League شاهد رشد سه رقمی در تعداد کاربران فعال، هولدرهای توکن‌ها، ارزش بازار و حجم معاملات در صرافی‌های غیرمتمرکز TON بوده‌اند. این در حالیست که تنها 1 میلیون Toncoin پاداش برای فصل آزمایشی در نظر گرفته شده بود. در فصل آینده، جوایز 30 برابر افزایش خواهند داشت: 30 میلیون Toncoin پاداش برای 3 ماه.

شما و تیم‌تان می‌توانید در رقابت با دیگران برنده شوید؟ وقت سازندگی در TON فرا رسیده!

همین الان ثبت نام کنید!

@gopher_academy

@Syntax_fa
🔥21👍1
This media is not supported in your browser
VIEW IN TELEGRAM
⭕️بخشی از مستند شوک سال 88 در تلویزیون

همون حوالی که تلویزیون داشت اینترنت رو مثل دوچرخه حرام اعلام کرد و تماما مستند میساخت که اقا اینترنت یعنی فساد بچه هاتون، رفته بودم انتخاب رشته کنم برای رشته فنی ، مادر و برادر برای تحقیق رفته بودن یکی از کافی نت های شهر که این پسر برای یه شرکته پای کامپیوترش داره هک میکنه ، این هک چیه؟ چون گفته بودن ما درباره اینها سوادی نداریم راهنمایی میخواستن بگیرن..
کافی نتی بهش گفته بود داره دزدی میکنه:).
بماند که مسیر زندگی من با این حرف عوض شد و بخاطر این مساله مسیرها رفتم ،ولی آخوندی که شوک میساخت و حرام اعلام میکرد، الان داره تبلیغ فلسطین میکنه توی شبکه های مجازی که خودش رای به فیلترش داده.
در سرزمین من همه چیز حرام اعلام میشه ،البته برای رعیت ، نه برای درباریان.
مثل آیفون که گفتن لاکچری هست ممنوعش کنید فقط بیزحمت برای فرار آقازاده‌ها و درباریان جت شخصی رو ازاد بذارید.

@securation

@Syntax_fa
👍14👎3🤣1
یعضی وقتا یا بهتره بگیم اکثر مواقع بدلیل تحریم و یا فیلترینگ نمیتونیم پکیج های پایتونی رو نصب کنیم.
یکی از راه حل ها استفاده از دی ان اس های شکن و ... هستش.
نحوه استفادش خیلی راحته
توی لینوکس کافیه برید داخل فایل /etc/resolv.cof و nameserver رو تغییر بدید.

یک روش دیگه استفاده از مخزن های جایگزین (mirror) هستش. برای مثال یکی از مخزن های داخل کشور رانفلر (Runflare mirror) هست.
برای استفاده از مخزن جایگزین کافیه موقع نصب یک پکیج جدید این دستور رو اضافه کنید.
pip install --trusted-host https://mirror-pypi.runflare.com --index-url https://mirror-pypi.runflare.com/simple/ django


چند تا از مخزن های خارجی:
source host:

https://mirror-pypi.runflare.com
https://pypi.tuna.tsinghua.edu.cn
https://mirrors.aliyun.com
https://pypi.mirrors.ustc.edu.cn
https://repo.huaweicloud.com
http://pypi.douban.com
http://pypi.sdutlinux.org
source adderess:

https://mirror-pypi.runflare.com/simple/
https://pypi.tuna.tsinghua.edu.cn/simple/
https://mirrors.aliyun.com/pypi/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
https://repo.huaweicloud.com/repository/pypi/simple/
http://pypi.douban.com/simple/
http://pypi.sdutlinux.org/


https://parswebserver.com/mirror-storages-for-pip/

@Syntax_fa
👍82
مهاجرت به عنوان یک #برنامهنویس به #هلند! زمانی که داخل کشور سال ۹۸-۹۹ ماهی ۱۵۰ میلیون درآمد داری!

تو قسمت جدید راکتکست راکت با Bobby Babazadeh هم صحبت شدیم تا ببینیم مسیر مهاجرت چطوریه؟ چه چالشهای داره؟ اصلا خوبه؟

link

https://youtu.be/WQLzdcTDpj0?si=JHJZczU29SkR_e-z

@Syntax_fa
👍2
پکیج d_jwt_auth آپدیت شد!

- قابلیت محدود کردن دیوایس هایی که از یک اکانت استفاده می کنند.

source code:
https://github.com/alireza-fa/django-jwt-auth

pypi:
https://pypi.org/project/d-jwt-auth/
🔥6👍2
Media is too big
VIEW IN TELEGRAM
دورهمی هفته یازدهم مهندسین گولنگ

(پیشنهاد میشه ببینید)

موضوع: GRPC, Protocol Buffers, Google API Design, Transcoding (بخش اول)

این هفته به موضوع GRPC, Protocol Buffers پرداختیم و یک پروژه کوچک را آغاز کردیم و grpc server, client را توسعه دادیم.

🔗 لینک ویدئو در یوتیوب: https://www.youtube.com/watch?v=iAvGdVDkbG8

🔗 شنیدن پادکست در اسپاتیفای: https://open.spotify.com/show/6aQdgKiOF5tuzI7mpijlfj

🔗 شنیدن پادکست در گوگل پادکست: https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy9kZGY3OWRiNC9wb2RjYXN0L3Jzcw

🔗 شنیدن پادکست در کست باکس: https://castbox.fm/va/5381928

🔗 آدرس پروژه: https://github.com/GoFarsi/grpc-service

@gopher_academy
👍3🔥1