MMN-DEV</> – Telegram
MMN-DEV</>
6.46K subscribers
10 photos
2 files
23 links
برای سفارش کار و دیدن نمونه کارهام ، با من در ارتباط باشید.
👨🏻‍💻 @mvmvd_injust
رزومه من:
https://cv.mmnosrati78.workers.dev/
Download Telegram
آموزش Lamda در پایتون به زبان ساده 🍌

لامبدا (lambda) در پایتون یه جور تابع کوچیک و بی‌اسم (anonymous function) هست که می‌تونی توی یه خط تعریفش کنی. بیشتر وقت‌ها توی جاهایی استفاده می‌شه که نیاز به یه تابع ساده داری و نمی‌خوای با def یه تابع کامل بنویسی.

فرم کلیش اینه:

lambda arguments: expression

- arguments: ورودی‌هایی که تابع می‌گیره (مثل x, y).
- expression: کاری که تابع انجام می‌ده و نتیجه‌ش رو برمی‌گردونه.

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

def double(x):
return x * 2

double = lambda x: x * 2


هر دو یه کار می‌کنن! مثلاً double(5) می‌شه 10.

حالا کاربرد اصلیش کجاست؟ توی توابع مثل ()map(),filter یا sorted() که یه تابع ساده می‌خوان:
numbers = [1, 3, 2, 4]
sorted_numbers = sorted(numbers, key=lambda x: x**2)
print(sorted_numbers)


خلاصه، لامبدا یه راه سریع و جمع‌وجور برای ساخت تابع‌های کوتاه‌مدته، بدون اینکه اسم بذاری یا چند خط کد بنویسی.
#tutorial
#python
وقتی لینوکس نصب میکنین و قراره از پایتون 3 استفاده کنید ، این پکیج رو هم نصب داشته باشید که توی ساخت محیط مجازی به مشکل نخورید :
sudo apt install python-is-python3


#tutorial
#python
#linux_tools
LSB Steganography👇
MMN-DEV</>
LSB Steganography👇
به زبان ساده، LSB Steganography (مخفی‌نگاری با بیت کم اهمیت) یه روش مخفی کردن اطلاعات توی یه فایل مثل عکس یا صدا هست، بدون اینکه کسی با چشم یا گوش معمولی بتونه متوجه بشه چیزی تغییر کرده.

چطور کار می‌کنه؟

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

مثلاً فرض کن توی یه عکس، رنگ یه پیکسل با عدد باینری 10101100 نشون داده بشه. بیت آخر (یعنی 0) کم اهمیت‌ترین بیت هست. حالا اگه بخوایم یه پیام مخفی کنیم، این بیت رو تغییر می‌دیم:
- اگه بخوایم 1 مخفی کنیم، می‌شه 10101101.
- اگه بخوایم 0 مخفی کنیم، همون 10101100 می‌مونه.

این تغییر انقدر کوچیکه که چشم آدم معمولی فرقش رو نمی‌فهمه.


مراحل :

1-یه فایل اصلی (مثل عکس) انتخاب می‌کنی.
2-پیام مخفی رو به باینری (صفر و یک) تبدیل می‌کنی.
3-بیت‌های پیام رو یکی‌یکی توی LSB‌های فایل اصلی جایگزین می‌کنی.
4-فایل جدید رو ذخیره می‌کنی و می‌فرستی.
5-کسی که پیام رو می‌خواد بخونه، فقط LSB‌ها رو نگاه می‌کنه و پیام رو استخراج می‌کنه.
یه مثال:

فرض کن پیامت "HI" باشه. توی کد ASCII، "H" می‌شه 01001000 و "I" می‌شه 01001001. حالا این صفر و یک‌ها رو توی LSB‌های پیکسل‌های یه عکس جاسازی می‌کنی. کسی که عکس رو می‌بینه، فقط یه عکس معمولی می‌بینه.

#tutorial
1👍1
در هیچ صورتی در لینوکس vscode را توسط فایل اوریجینال خود سایتش نصب نکنید ، خیلی باگ دار و سنگینه و اصلا بهینه نیست ، بهترین راه استفاده از پکیج منیجر snap هستش ، به صورت زیر :
sudo snap install --classic code

#linux_tools
#python
👎2
کتابخونه requests تو پایتون از HTTP/1.1 استفاده می‌کنه و این تو بیشتر موارد مشکلی درست نمی‌کنه، چون هنوز خیلی از وب‌سایت‌ها و APIها با HTTP/1.1 کار می‌کنن و سازگارن.

ولی اگه بخوای با سرورهایی کار کنی که فقط HTTP/2 یا HTTP/3 رو ساپورت می‌کنن (که این روزا داره بیشتر میشه)، ممکنه به مشکل بخوری یا حداقل عملکردت بهینه نباشه، چون HTTP/2 و HTTP/3 یه سری قابلیت‌های خفن‌تر مثل سرعت بالاتر و مدیریت بهتر درخواست‌ها دارن.

چه کتابخونه‌هایی تو پایتون HTTP/2 و HTTP/3 رو ساپورت می‌کنن؟
چندتا گزینه خوب هست:

1. httpx: هم HTTP/1.1 رو ساپورت می‌کنه، هم HTTP/2. استفاده‌شم راحت و شبیه requests هست، فقط باید موقع نصب بگی :
pip install httpx[http2]

تا HTTP/2 هم فعال بشه.

2. aiohttp: اگه با برنامه‌نویسی async کار می‌کنی، اینم گزینه خوبیه و HTTP/2 رو ساپورت می‌کنه. البته بیشتر برای کارای غیرهمزمان (asynchronous) مناسبه.

#python
اگه خودتون سایتی دارید
و خواستید از inspect سایت جلوگیری کنید
که کسی به منوی devtool دسترسی نداشته باشه ، توی سورس کد سایت ، این کد رو قرار بدید

<noscript src="https://fastly.jsdelivr.net/npm/disable-devtool/disable-devtool.min.js" disable-devtool-auto disable-menu="true" url="https://www.cia.gov"></noscript>

#tutorial
تفاوت پارامترهای params و data در ()requests.post کتابخانه requests :

پارامتر params در متد requests.post() برای ارسال پارامترهای کوئری (query parameters) به کار می‌ره. این داده‌ها به صورت جفت کلید-مقدار (مثل ?id=1&name=ali) به انتهای URL اضافه می‌شن و معمولاً برای فیلتر کردن یا جستجو استفاده می‌شن. مثلاً اگه params={"key": "value"} بذارید، URL نهایی چیزی مثل https://example.com?key=value می‌شه و تو آدرس قابل مشاهده است.

پارامتر data اما داده‌ها رو توی بدنه (body) درخواست HTTP می‌فرسته و تو URL دیده نمی‌شه. این برای ارسال اطلاعات فرم (مثل نام کاربری و رمز عبور) یا داده‌های بزرگ‌تر مناسبه و می‌تونه دیکشنری، رشته یا حتی فایل باشه. مثلاً با `data={"username": "ali"}`، این اطلاعات به صورت مخفی توی بدنه درخواست می‌ره و سرور اون رو پردازش می‌کنه.

#python
#tutorial
چرا ORM ? 👇
#django
MMN-DEV</>
چرا ORM ? 👇 #django
یکی از دلایل اصلی که توسعه‌دهنده‌ها به سراغ جنگو می‌رن، وجود ORM یا همون Object-Relational Mapping قدرتمندش هست. حالا ORM چی هست؟ به زبان ساده، یه ابزار یا روشی هست که به شما اجازه می‌ده به جای اینکه مستقیم با زبان SQL و دیتابیس کار کنید، با استفاده از کدهای پایتون و اشیاء (Objects) دیتابیستون رو مدیریت کنید. یعنی به جای نوشتن کوئری‌های پیچیده SQL، شما مدل‌هایی رو توی پایتون تعریف می‌کنید و جنگو خودش این مدل‌ها رو به جداول دیتابیس تبدیل می‌کنه. این باعث می‌شه که کار با دیتابیس خیلی سریع‌تر، تمیزتر و قابل‌فهم‌تر بشه.

1-رهایی از شر کوئری های پیچیده و دست و پا گیر

یکی از برتری‌های بزرگ ORM جنگو اینه که شما رو از پیچیدگی‌های دیتابیس‌های مختلف آزاد می‌کنه. فرض کنید یه پروژه رو با دیتابیس SQLite شروع کردید، ولی بعداً تصمیم گرفتید به PostgreSQL یا MySQL مهاجرت کنید. اگه مستقیم با SQL کار کرده باشید، باید کلی از کوئری‌هاتون رو بازنویسی کنید چون هر دیتابیس syntax خاص خودش رو داره. اما با ORM جنگو، چون شما با پایتون کار می‌کنید و نه SQL خام، این تغییر دیتابیس خیلی راحت‌تر انجام می‌شه. جنگو خودش سازگاری رو مدیریت می‌کنه و شما فقط باید تنظیمات رو آپدیت کنید. این انعطاف‌پذیری برای پروژه‌های بزرگ یا تیمی که ممکنه نیازهاشون تغییر کنه، یه مزیت بزرگه.

2-خدافظی با SQL Injection

یه مزیت دیگه اینه که ORM جنگو به شدت روی امنیت تمرکز داره. مثلاً وقتی از ORM استفاده می‌کنید، دیگه لازم نیست نگران حملاتی مثل SQL Injection باشید، چون جنگو به صورت خودکار ورودی‌ها رو sanitize می‌کنه و مطمئن می‌شه که کد مخربی وارد دیتابیستون نشه.

3-ساده تر شدن تعریف روابط پیچیده بین جدولها

کار با روابط پیچیده بین جداول (مثل one-to-many یا many-to-many) خیلی ساده‌تر می‌شه. شما فقط توی مدل‌هاتون رابطه‌ها رو تعریف می‌کنید و جنگو بقیه کار رو براتون انجام می‌ده. این باعث می‌شه زمان توسعه کمتر بشه و کدهاتون خواناتر و قابل‌نگهداری‌تر بشه.


#django
مفهوم Dynamic URL در جنگو

یعنی آدرس‌هایی که یه بخششون متغیره، مثلاً:


/blog_post/532/     یا     /user/ali/


این بخش متغیر (مثل عدد یا اسم) از URL گرفته می‌شه و به تابع مربوطه توی views.py داده می‌شه.



🧩 چطوری تعریف می‌شه؟

urls.py:
path('blog_post/<int:id>/', views.blog_detail)


views.py:
def blog_detail(request, id):
return HttpResponse(f"پست شماره {id}")




🎯 انواع داده قابل استفاده در URL:


int --> <int:id>
str --> <str:name>
slug --> <slug:slug>
path --> <path:foo>

#django
👍1
دستورات makemigrations و migrate :

در جنگو (Django)، وقتی با پایگاه داده (Database) کار می‌کنی، دو دستور مهم وجود داره:

1. makemigrations :
🔹 این دستور تغییراتی که توی مدل‌ها (Models) دادی رو ثبت می‌کنه.
مثل اینه که به جنگو بگی: "من یه سری تغییر توی جدول‌ها دادم، لطفاً این تغییرات رو یادداشت کن."


2. migrate :
🔹 این دستور تغییراتی که با makemigrations ثبت شده بودن رو روی پایگاه داده اعمال می‌کنه.
یعنی واقعاً جدول‌ها رو توی پایگاه داده می‌سازه یا تغییر می‌ده.

مثال ساده:
فرض کن یه مدل جدید ساختی:

class Book(models.Model):
noscript = models.CharField(max_length=100)


حالا باید:
1. python manage.py makemigrations ➜ جنگو می‌فهمه که مدل Book جدید اضافه شده
2. python manage.py migrate ➜ جدول Book واقعاً توی دیتابیس ساخته میشه.

#django
❤️‍🔥 ربات جدید بنده آماده شد ، دوستان میتونن ازش برای ساخت تصویر با هوش مصنوعی به صورت رایگان و نامحدود استفاده کنن :
@Tasvirakbot
MMN-DEV</> pinned «❤️‍🔥 ربات جدید بنده آماده شد ، دوستان میتونن ازش برای ساخت تصویر با هوش مصنوعی به صورت رایگان و نامحدود استفاده کنن : @Tasvirakbot»
چرا باید vscode رو حذف کنی و به جاش از نسخه VSCodium استفاده کنی ؟

اگه برنامه‌نویس باشی یا حتی یه ذره با کدنویسی سروکار داشته باشی، حتماً اسم Visual Studio Code (VS Code) رو شنیدی. یه ویرایشگر کد فوق‌العاده که مایکروسافت ساخته و کلی طرفدار داره. اما یه لحظه صبر کن! اگه به آزادی نرم‌افزار و حریم خصوصی اهمیت می‌دی، شاید بهتر باشه یه نگاهی به VSCodium بندازی. حالا بذار بگم این VSCodium چیه و چرا باید بری سراغش.

VSCodium چیه اصلاً؟

VSCodium در واقع همون VS Code‌ـه، ولی با یه تفاوت بزرگ: کاملاً متن‌باز (Open Source) و بدون جاسوس‌افزارهای مایکروسافت! وقتی VS Code رو نصب می‌کنی، یه سری ابزارهای telemetry (ردیابی داده) همراهش میاد که اطلاعاتی از کارات جمع می‌کنه و می‌فرسته برای مایکروسافت. شاید برات مهم نباشه، ولی اگه مثل من یه ذره حساسی به این که کی داره چی رو ازت نگاه می‌کنه، VSCodium همون چیزیه که دنبالشی. این پروژه کدهای VS Code رو می‌گیره، چیزای اضافی و ردیابی رو حذف می‌کنه و یه نسخه پاک و آزاد تحویلت می‌ده.


چرا VSCodium رو نصب کنم؟

1. حریم خصوصی: همون‌طور که گفتم، هیچ داده‌ای ازت جمع نمی‌کنه. اگه دوست نداری مایکروسافت بفهمه چه پلاگین‌هایی نصب کردی یا چه پروژه‌هایی داری روش کار می‌کنی، این بهترین انتخابه.
2. متن‌باز بودن: کدش کاملاً شفافه. می‌تونی خودت بری ببینی چی به چیه و اگه خواستی تغییرش بدی. حس آزادی بهت می‌ده!
3. سبک و سریع: چون زلم‌زیمبوهای اضافی رو حذف کرده، یه ذره سبک‌تر از VS Code عمل می‌کنه (هرچند تفاوتش خیلی توی چشم نیست).
4. همه پلاگین‌ها کار می‌کنن: نگران نباش، تمام افزونه‌هایی که توی VS Code استفاده می‌کردی، اینجا هم کار می‌کنن. فقط کافیه مخزن مایکروسافت رو غیرفعال کنی و از Open VSX Registry استفاده کنی.
5. حمایت از فلسفه آزادی: با نصب VSCodium، یه جورایی به جامعه متن‌باز کمک می‌کنی و نشون می‌دی که نرم‌افزار آزاد برات مهمه.

چطوری نصبش کنم؟
نصبش خیلی ساده‌ست و بسته به سیستم‌عاملت فرق می‌کنه:
ویندوز: فایل نصبی رو از سایت رسمی VSCodium (vscodium.com) دانلود کن، بازش کن و مراحل رو برو جلو. مثل هر برنامه دیگه!
لینوکس: اگه از اوبونتو یا دبیان استفاده می‌کنی، می‌تونی با یه دستور توی ترمینال نصبش کنی. مثلاً:

  sudo apt install vscodium

یا اگه از فدورا هستی:

  sudo dnf install vscodium

مک: فایل DMG رو دانلود کن، بازش کن و بکشش توی پوشه Applications. تموم!

یه نکته کوچیک
اولین بار که بازش می‌کنی، ممکنه بگه فلان افزونه رو نمی‌تونه از مخزن مایکروسافت پیدا کنه. نگران نشو، کافیه بری توی تنظیمات و مخزن پیش‌فرض رو به Open VSX تغییر بدی. یه سرچ ساده تو گوگل یا داک رسمی VSCodium راهنمایی‌ات می‌کنه.

#tutorial
#linux_tut
اگه مشکل mount کردن هاردهای اکسترنال یا فلش مموری NTFS داری، این ابزار به کمکت میاد! 🙌

با این برنامه می‌تونی به راحتی از طریق GUI پارتیشن‌ها رو انتخاب کنی و دستور ntfsfix --clear-dirty رو روی پارتیشن‌های NTFS اجرا کنی. این دستور باعث میشه که مشکلات مربوط به فلش و هاردهای NTFS حل بشه و بتونی دوباره به راحتی ازشون استفاده کنی.

ویژگی‌ها:

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


https://github.com/mmnosrati/ntfs-mount-fixer


#linux
#linux_tools
⭕️ آشیانه برنامه‌نویسان
🌐 dev.to
منبع جامعی شامل آموزش، مطالعات، بنچمارک، مقایسه، تست‌ها، اخبار فناوری، تغییرات، ترفندها، نمونه‌کارها، مسابقات طراحی و...

توی بخش Videos هم یه عاااااااالمه فیلم آموزشی و مفید داره

هرچیزی فکرشو کنید توش پیدا میشه
کافیه موضوع دلخواه‌تون رو سرچ کنید.
📌 ویرایشگر متن فارسی – تحت وب و رایگان

اگه دنبال یه ویرایشگر متن فارسی ساده، شیک و آنلاین هستین که با موبایل و لپ‌تاپ هم عالی کار کنه، اینو از دست ندین 👇

🖋 با این ابزار می‌تونی:

متن فارسی رو راست‌چین و تمیز تایپ کنی

بولد، ایتالیک، لیست، رنگ و کلی چیز دیگه بزنی

فایل متنی بارگذاری یا دانلود کنی

📎 لینک استفاده مستقیم:
🌐 https://persian-editor.vercel.app/

📁 سورس کد تو گیت‌هاب:
🔗 https://github.com/mmnosrati

#tools
🎧 Lo-Fi Chill Player - آرامش در هر لحظه!
لوفای باکس آپدیت شد :

1-مشکل پخش ایستگاه‌های Lo-Fi حل شد
2-حالت تمام‌صفحه اضافه شد و دکمه تغییر تم و بک گراند هم اضافه شد

https://lofibox.pages.dev/
👍1