MMN-DEV</>
Open in Telegram
برای سفارش کار و دیدن نمونه کارهام ، با من در ارتباط باشید. 👨🏻💻 @mvmvd_injust رزومه من: https://cv.mmnosrati78.workers.dev/
Show more5 750
Subscribers
No data24 hours
-467 days
-29630 days
Posts Archive
\n#tutorial","datePublished":"2025-03-27T20:47:39Z","dateModified":"2025-03-27T20:47:39Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":252}]}},{"@type":"ListItem","position":10,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/54","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/54","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/54","headline":"کتابخونه requests تو پایتون از HTTP/1.1 استفاده میکنه و این تو بیشتر موارد مشکلی درست نمیکنه، چون هنوز خیلی…","articleBody":"کتابخونه requests تو پایتون از HTTP/1.1 استفاده میکنه و این تو بیشتر موارد مشکلی درست نمیکنه، چون هنوز خیلی از وبسایتها و APIها با HTTP/1.1 کار میکنن و سازگارن.\n\nولی اگه بخوای با سرورهایی کار کنی که فقط HTTP/2 یا HTTP/3 رو ساپورت میکنن (که این روزا داره بیشتر میشه)، ممکنه به مشکل بخوری یا حداقل عملکردت بهینه نباشه، چون HTTP/2 و HTTP/3 یه سری قابلیتهای خفنتر مثل سرعت بالاتر و مدیریت بهتر درخواستها دارن.\n\nچه کتابخونههایی تو پایتون HTTP/2 و HTTP/3 رو ساپورت میکنن؟ چندتا گزینه خوب هست:\n\n1. httpx: هم HTTP/1.1 رو ساپورت میکنه، هم HTTP/2. استفادهشم راحت و شبیه requests هست، فقط باید موقع نصب بگی :\npip install httpx[http2]\nتا HTTP/2 هم فعال بشه.\n\n2. aiohttp: اگه با برنامهنویسی async کار میکنی، اینم گزینه خوبیه و HTTP/2 رو ساپورت میکنه. البته بیشتر برای کارای غیرهمزمان (asynchronous) مناسبه.\n\n#python","datePublished":"2025-03-20T15:52:14Z","dateModified":"2025-03-20T15:52:14Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":286},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":11,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/52","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/52","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/52","headline":"در هیچ صورتی در لینوکس vscode را توسط فایل اوریجینال خود سایتش نصب نکنید ، خیلی باگ دار و سنگینه و اصلا بهینه…","articleBody":"در هیچ صورتی در لینوکس vscode را توسط فایل اوریجینال خود سایتش نصب نکنید ، خیلی باگ دار و سنگینه و اصلا بهینه نیست ، بهترین راه استفاده از پکیج منیجر snap هستش ، به صورت زیر :\nsudo snap install --classic code\n#linux_tools\n#python","datePublished":"2025-03-14T10:18:48Z","dateModified":"2025-03-14T10:18:48Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":282},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":12,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/51","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/51","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/51","headline":"در رابطه با این موضوع مخفی نگاری در LSB ها ، این یه پروژه جالب و ساده هست که یه متن بهش میدی و اون متنو با تک…","articleBody":"در رابطه با این موضوع مخفی نگاری در LSB ها ، این یه پروژه جالب و ساده هست که یه متن بهش میدی و اون متنو با تکنیک LSB توی یک عکس نهان نگاریش میکنه و بلعکس ،\nhttps://github.com/mmnosrati/ramzin\n\n\n#github","datePublished":"2025-03-12T16:25:53Z","dateModified":"2025-03-12T16:25:53Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":307},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":13,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/50","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/50","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/50","headline":"به زبان ساده، LSB Steganography (مخفینگاری با بیت کم اهمیت) یه روش مخفی کردن اطلاعات توی یه فایل مثل عکس یا…","articleBody":"به زبان ساده، LSB Steganography (مخفینگاری با بیت کم اهمیت) یه روش مخفی کردن اطلاعات توی یه فایل مثل عکس یا صدا هست، بدون اینکه کسی با چشم یا گوش معمولی بتونه متوجه بشه چیزی تغییر کرده.\n\nچطور کار میکنه؟\nهر فایل دیجیتال (مثل یه عکس) از یه سری اعداد تشکیل شده که رنگها یا صداها رو مشخص میکنن. این اعداد به صورت(صفر و یک) ذخیره میشن. توی این روش، ما از بیت کم اهمیت استفاده میکنیم. این بیت، کم اهمیتترین بخش هر عدد هست و تغییرش خیلی توی کیفیت فایل تاثیر نمیذاره.\n\nمثلاً فرض کن توی یه عکس، رنگ یه پیکسل با عدد باینری 10101100 نشون داده بشه. بیت آخر (یعنی 0) کم اهمیتترین بیت هست. حالا اگه بخوایم یه پیام مخفی کنیم، این بیت رو تغییر میدیم:\n- اگه بخوایم 1 مخفی کنیم، میشه 10101101.\n- اگه بخوایم 0 مخفی کنیم، همون 10101100 میمونه.\n\nاین تغییر انقدر کوچیکه که چشم آدم معمولی فرقش رو نمیفهمه.\n\nمراحل :\n1-یه فایل اصلی (مثل عکس) انتخاب میکنی.\n2-پیام مخفی رو به باینری (صفر و یک) تبدیل میکنی.\n3-بیتهای پیام رو یکییکی توی LSBهای فایل اصلی جایگزین میکنی.\n4-فایل جدید رو ذخیره میکنی و میفرستی.\n5-کسی که پیام رو میخواد بخونه، فقط LSBها رو نگاه میکنه و پیام رو استخراج میکنه.\nیه مثال:\nفرض کن پیامت \"HI\" باشه. توی کد ASCII، \"H\" میشه 01001000 و \"I\" میشه 01001001. حالا این صفر و یکها رو توی LSBهای پیکسلهای یه عکس جاسازی میکنی. کسی که عکس رو میبینه، فقط یه عکس معمولی میبینه.\n\n#tutorial","datePublished":"2025-03-12T16:24:22Z","dateModified":"2025-03-12T16:24:22Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":258},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/49","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/49","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/49","headline":"LSB Steganography👇","articleBody":"LSB Steganography👇","datePublished":"2025-03-12T16:24:17Z","dateModified":"2025-03-12T16:24:17Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":237},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/46","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/46","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/46","headline":"وقتی لینوکس نصب میکنین و قراره از پایتون 3 استفاده کنید ، این پکیج رو هم نصب داشته باشید که توی ساخت محیط مجا…","articleBody":"وقتی لینوکس نصب میکنین و قراره از پایتون 3 استفاده کنید ، این پکیج رو هم نصب داشته باشید که توی ساخت محیط مجازی به مشکل نخورید :\nsudo apt install python-is-python3\n\n#tutorial\n#python\n#linux_tools","datePublished":"2025-03-03T22:51:01Z","dateModified":"2025-03-03T22:51:01Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":230},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/45","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/45","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/45","headline":"آموزش Lamda در پایتون به زبان ساده 🍌 لامبدا (lambda) در پایتون یه جور تابع کوچیک و بیاسم (anonymous function…","articleBody":"آموزش Lamda در پایتون به زبان ساده 🍌\n\nلامبدا (lambda) در پایتون یه جور تابع کوچیک و بیاسم (anonymous function) هست که میتونی توی یه خط تعریفش کنی. بیشتر وقتها توی جاهایی استفاده میشه که نیاز به یه تابع ساده داری و نمیخوای با def یه تابع کامل بنویسی.\n\nفرم کلیش اینه:\n\nlambda arguments: expression\n- arguments: ورودیهایی که تابع میگیره (مثل x, y).\n- expression: کاری که تابع انجام میده و نتیجهش رو برمیگردونه.\n\nمثال:\nفرض کن میخوای یه تابع بسازی که یه عدد رو دو برابر کنه:\n\ndef double(x):\n return x * 2\n\ndouble = lambda x: x * 2\n\nهر دو یه کار میکنن! مثلاً double(5) میشه 10.\n\nحالا کاربرد اصلیش کجاست؟ توی توابع مثل ()map(),filter یا sorted() که یه تابع ساده میخوان:\nnumbers = [1, 3, 2, 4]\nsorted_numbers = sorted(numbers, key=lambda x: x**2)\nprint(sorted_numbers)\n\nخلاصه، لامبدا یه راه سریع و جمعوجور برای ساخت تابعهای کوتاهمدته، بدون اینکه اسم بذاری یا چند خط کد بنویسی.\n#tutorial\n#python","datePublished":"2025-03-03T03:43:43Z","dateModified":"2025-03-03T03:43:43Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":304},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/43","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/43","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/43","headline":"🍇 نصب pycharm در لذتبخش ترین حالت و بالاترین سرعت در استفاده : 1-بهترین نسخه توی ریپو های snap هستش ، فقط با…","articleBody":"🍇 نصب pycharm در لذتبخش ترین حالت و بالاترین سرعت در استفاده :\n\n1-بهترین نسخه توی ریپو های snap هستش ، فقط با اون نصبش کنید :\nsudo snap install pycharm-community --classic\n\n2-بعد نصب برید پلاگین های غیرضروری رو غیرفعال کنید ، بعد آپشن typo رو هم غیر فعال کنید \n\n3-از فونت fira استفاده کنید ، از پلاگینا برای آیکونا Atom material icon رو نصب کنید و برای خود تم کد ادیتور ، Xcode Theme رو نصب کنید.\n\n#linux_tools\n#python","datePublished":"2025-03-03T02:08:39Z","dateModified":"2025-03-03T02:08:39Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":346},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/42","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/42","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/42","headline":"یکی دوساله دارم هر روز یه مقداری تمرین تایپ انجام میدم ، قبلا از rapid typing استفاده میکردم الان خیلی وقته ک…","articleBody":"یکی دوساله دارم هر روز یه مقداری تمرین تایپ انجام میدم ، قبلا از rapid typing استفاده میکردم الان خیلی وقته که کل وقتم رو لینوکس میگذره ، واسه کسایی که دنبال یه چیز جذاب و سیمپل برا این کار میکردن یه سر به این بزنن :\n\nhttps://github.com/lemnos/tt\n\n#linux_tools","datePublished":"2025-02-19T18:04:59Z","dateModified":"2025-02-19T18:04:59Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":212},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/41","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/41","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/41","headline":"9 الگورتیمی که بر دنیای ما حکمرانی میکنند. #dev","articleBody":"9 الگورتیمی که بر دنیای ما حکمرانی میکنند.\n#dev","datePublished":"2025-02-18T06:07:42Z","dateModified":"2025-02-18T06:07:42Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":167}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/40","url":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/40","mainEntityOfPage":"https://telemetr.io/en/channels/2260786210-mmn_dev/posts/40","headline":"اتصال ژوپیتر نوت بوک به محیط مجازی جدید : 1-ابتدا چک میکنیم که با پایپ هم ژوپیتر نصب باشه : pip install jupyt…","articleBody":"اتصال ژوپیتر نوت بوک به محیط مجازی جدید :\n\n1-ابتدا چک میکنیم که با پایپ هم ژوپیتر نصب باشه : \n\npip install jupyter\n\n2-بعد محیط مجازی رو میسازیم و وارد دایرکتوری که پوشه env ما در اون قرار داره میشیم و دستور زیر رو میزنیم تا به کرنل های ژوپیتر اضافه ش کنیم (در اینجا نام env ما venv. است ) :\n\npython3 -m ipykernel install --user --name=.venv --display-name \".venv kernel\"\n\n#python","datePublished":"2025-01-13T22:19:18Z","dateModified":"2025-01-13T22:19:18Z","author":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"publisher":{"@type":"Organization","name":"MMN-DEV>","url":"https://telemetr.io/en/channels/2260786210-mmn_dev","image":"https://img.tlmtr.io/c/2t01LI/5812079762653432824?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":191},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}}]}
















5 750
چرا باید 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_tut5 750
❤️🔥 ربات جدید بنده آماده شد ، دوستان میتونن ازش برای ساخت تصویر با هوش مصنوعی به صورت رایگان و نامحدود استفاده کنن :
@Tasvirakbot
5 750
دستورات
makemigrations و migrate :
در جنگو (Django)، وقتی با پایگاه داده (Database) کار میکنی، دو دستور مهم وجود داره:
1. makemigrations :
🔹 این دستور تغییراتی که توی مدلها (Models) دادی رو ثبت میکنه.
مثل اینه که به جنگو بگی: "من یه سری تغییر توی جدولها دادم، لطفاً این تغییرات رو یادداشت کن."
2. migrate :
🔹 این دستور تغییراتی که با makemigrations ثبت شده بودن رو روی پایگاه داده اعمال میکنه.
یعنی واقعاً جدولها رو توی پایگاه داده میسازه یا تغییر میده.
مثال ساده:
فرض کن یه مدل جدید ساختی:
class Book(models.Model):
title = models.CharField(max_length=100)
حالا باید:
1. python manage.py makemigrations ➜ جنگو میفهمه که مدل Book جدید اضافه شده
2. python manage.py migrate ➜ جدول Book واقعاً توی دیتابیس ساخته میشه.
#django5 750
مفهوم 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>
#django5 750
یکی از دلایل اصلی که توسعهدهندهها به سراغ جنگو میرن، وجود 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
5 750
تفاوت پارامترهای 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
#tutorial5 750
اگه خودتون سایتی دارید
و خواستید از inspect سایت جلوگیری کنید
که کسی به منوی devtool دسترسی نداشته باشه ، توی سورس کد سایت ، این کد رو قرار بدید
<script src="https://fastly.jsdelivr.net/npm/disable-devtool/disable-devtool.min.js" disable-devtool-auto disable-menu="true" url="https://www.cia.gov"></script>
#tutorial5 750
کتابخونه
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) مناسبه.
#python5 750
در هیچ صورتی در لینوکس vscode را توسط فایل اوریجینال خود سایتش نصب نکنید ، خیلی باگ دار و سنگینه و اصلا بهینه نیست ، بهترین راه استفاده از پکیج منیجر snap هستش ، به صورت زیر :
sudo snap install --classic code
#linux_tools
#python5 750
در رابطه با این موضوع مخفی نگاری در LSB ها ، این یه پروژه جالب و ساده هست که یه متن بهش میدی و اون متنو با تکنیک LSB توی یک عکس نهان نگاریش میکنه و بلعکس ،
https://github.com/mmnosrati/ramzin
#github
5 750
به زبان ساده، LSB Steganography (مخفینگاری با بیت کم اهمیت) یه روش مخفی کردن اطلاعات توی یه فایل مثل عکس یا صدا هست، بدون اینکه کسی با چشم یا گوش معمولی بتونه متوجه بشه چیزی تغییر کرده.
چطور کار میکنه؟
هر فایل دیجیتال (مثل یه عکس) از یه سری اعداد تشکیل شده که رنگها یا صداها رو مشخص میکنن. این اعداد به صورت(صفر و یک) ذخیره میشن. توی این روش، ما از بیت کم اهمیت استفاده میکنیم. این بیت، کم اهمیتترین بخش هر عدد هست و تغییرش خیلی توی کیفیت فایل تاثیر نمیذاره.
مثلاً فرض کن توی یه عکس، رنگ یه پیکسل با عدد باینری
10101100 نشون داده بشه. بیت آخر (یعنی 0) کم اهمیتترین بیت هست. حالا اگه بخوایم یه پیام مخفی کنیم، این بیت رو تغییر میدیم:
- اگه بخوایم 1 مخفی کنیم، میشه 10101101.
- اگه بخوایم 0 مخفی کنیم، همون 10101100 میمونه.
این تغییر انقدر کوچیکه که چشم آدم معمولی فرقش رو نمیفهمه.
مراحل :
1-یه فایل اصلی (مثل عکس) انتخاب میکنی.
2-پیام مخفی رو به باینری (صفر و یک) تبدیل میکنی.
3-بیتهای پیام رو یکییکی توی LSBهای فایل اصلی جایگزین میکنی.
4-فایل جدید رو ذخیره میکنی و میفرستی.
5-کسی که پیام رو میخواد بخونه، فقط LSBها رو نگاه میکنه و پیام رو استخراج میکنه.
یه مثال:
فرض کن پیامت "HI" باشه. توی کد ASCII، "H" میشه 01001000 و "I" میشه 01001001. حالا این صفر و یکها رو توی LSBهای پیکسلهای یه عکس جاسازی میکنی. کسی که عکس رو میبینه، فقط یه عکس معمولی میبینه.
#tutorial5 750
وقتی لینوکس نصب میکنین و قراره از پایتون 3 استفاده کنید ، این پکیج رو هم نصب داشته باشید که توی ساخت محیط مجازی به مشکل نخورید :
sudo apt install python-is-python3
#tutorial
#python
#linux_tools5 750
آموزش 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
#python5 750
🍇 نصب pycharm در لذتبخش ترین حالت و بالاترین سرعت در استفاده :
1-بهترین نسخه توی ریپو های snap هستش ، فقط با اون نصبش کنید :
sudo snap install pycharm-community --classic
2-بعد نصب برید پلاگین های غیرضروری رو غیرفعال کنید ، بعد آپشن typo رو هم غیر فعال کنید
3-از فونت fira استفاده کنید ، از پلاگینا برای آیکونا Atom material icon رو نصب کنید و برای خود تم کد ادیتور ، Xcode Theme رو نصب کنید.
#linux_tools
#python5 750
یکی دوساله دارم هر روز یه مقداری تمرین تایپ انجام میدم ، قبلا از rapid typing استفاده میکردم الان خیلی وقته که کل وقتم رو لینوکس میگذره ، واسه کسایی که دنبال یه چیز جذاب و سیمپل برا این کار میکردن یه سر به این بزنن :
https://github.com/lemnos/tt
#linux_tools
5 750
اتصال ژوپیتر نوت بوک به محیط مجازی جدید :
1-ابتدا چک میکنیم که با پایپ هم ژوپیتر نصب باشه :
pip install jupyter
2-بعد محیط مجازی رو میسازیم و وارد دایرکتوری که پوشه env ما در اون قرار داره میشیم و دستور زیر رو میزنیم تا به کرنل های ژوپیتر اضافه ش کنیم (در اینجا نام env ما venv. است ) :
python3 -m ipykernel install --user --name=.venv --display-name ".venv kernel"
#python