<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات تمشک</title>
        <link>https://virgool.io/TameshkGroup/feed</link>
        <description>یادگیری با طعم تمشک!</description>
        <language>fa</language>
        <pubDate>2026-06-17 01:34:50</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/oletpihqrbmo/hqjbny.png</url>
            <title>تمشک</title>
            <link>https://virgool.io/TameshkGroup</link>
        </image>

                    <item>
                <title>ساختن Word Cloud تنها با یک کامند!</title>
                <link>https://virgool.io/TameshkGroup/%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-word-cloud-%D8%AA%D9%86%D9%87%D8%A7-%D8%A8%D8%A7-%DB%8C%DA%A9-%DA%A9%D8%A7%D9%85%D9%86%D8%AF-xhplpjzdt5rw</link>
                <description>درود ?‍♂️اینجا یکم خاک گرفته گفتم یک چیزی هر چند ساده بنویسم :)خب پس بریم سر اصل مطلب؟؟؟Word Cloudخب اول حتما با خودتون میگید این چی هستش :/ ابر کلمه!دقیقا همینه. در اصل این word cloud میاد یک سئو یا شمایی از متنتون میده. که چه کلمه هایی رو توی متنتون به چه مقدار استفاده کردید! چیز جالبی بنظر میاد، اینطور نیست؟این عکس که خدمتتون هست خب گویا همه چیز هست. یک شخصی یک متنی رو به ورودی داده و این عکس رو خروجی گرفته.حالا می خوام یک راه حل ساده بگم تو کمترین زمان یک word cloud ساده بسازید.ساخت با Command-line usageبعد از کلی داستان و سختی و داکیومنت تو سایت های مختلف خواست میک word cloud بسازم به ارور خوردم و در نا امیدی به سر میبردم تا با دیدن مطلبی در سایت pypi ( که توسط خود منتشر کننده پکیج word cloud برای پایتون نوشته شده بود ) فهمیدم میتونم با روش command-line usage این پکیج راحت به نتیجه برسم ?خب اول کار لازمه کتابخونه پکیج ماژول یا هر چی دوست دارید بهش بگید رو نصب کنیدpip install wordcloudخب حالا دو راه حل دارید یا میتونید فایل ورودیتون یک فایل txt باشه یا pdf. که pdf واسم خیلی جالب بود و اونو امتحان کردم. اول تو محیط کامند لاینتون برید تو مسیری که فایل ورودی تون هست. حالا فقط کافیه یکی از کامند های زیر رو استفاده کنید.wordcloud_cli --text mytext.txt --imagefile wordcloud.pngخب  حالا کافیه اسم فایل ورودیتون رو با mytext.txt جایگزین کنید و هر اسمی دوست داشتید بجای  wordcloud.png بگذارید که عکستون سیو بشه.به همین سادگی! ولی هنوز تموم نشده من با اون راه دوم میرم. فایل ورودیم یک pdf هست.pdftotext mydocument.pdf - | wordcloud_cli --imagefile wordcloud.pngهمون توضیحاتی در مورد بالایی دادم درمورد اینم شامل میشه. فقط بجای mydocument.pdf اسم pdf خودتون رو بنویسید.من به عنوان مثال از فایل pdf کتاب MML استفاده می کنم.خب در نهایت تو همون مسیری که محیط کامند لاینتون هست عکس ذخیره میشه.خیلی باحاله :))))جالب نبود!؟ این الان یک نقشه از کتابی هست که به عنوان ورودی دادیم :)شاید یکم کیفیتش کم باشه و خفن نباشه ولی خب کار راه انداز و سریع بود. سعی می کنم یک آموزش بهتر و باحال تر بعدا تهیه کنم. امیدوارم خوب بوده باشه :) بدرودمنبع : Pypi</description>
                <category>تمشک</category>
                <author>Ehsan</author>
                <pubDate>Tue, 26 Jul 2022 11:47:45 +0430</pubDate>
            </item>
                    <item>
                <title>Pyfiglet | یک کتابخونه قشنگ و دوست داشتنی ?</title>
                <link>https://virgool.io/TameshkGroup/pyfiglet-%DB%8C%DA%A9-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D9%88%D9%86%D9%87-%D9%82%D8%B4%D9%86%DA%AF-%D9%88-%D8%AF%D9%88%D8%B3%D8%AA-%D8%AF%D8%A7%D8%B4%D8%AA%D9%86%DB%8C-b8fvat83phm0</link>
                <description>درود ? بازم منم ?امروز اومدیم درمورد کتابخونه Pyfiglet حرف بزنیم.اول میریم یک توضیحی درمورد این دوست داشتنی بدیم ?Tameshk =)کتابخونه Pyfiglet چیست ؟یک کتابخونه پایتونی هست که این امکان رو میده بتونیم از حالت ها و فونت های خاص برای متنامون توی کنسول و ترمینال مثلا به عنوان یک تیتر یا یک متن جذاب استفاده کنیم. من که خیلی دوستش دارم :) ???نصب Pyfiglet و متد هاشمثل همیشه باید بریم سراغ دوست خوبم pip ?اگه pip نصب ندارید می تونید به پست قبلیم مراجعه کنید:  https://virgool.io/@ehsanamirahmadi/ipython-%DA%86%DB%8C%D8%B2%DB%8C-%DA%A9%D9%87-%D9%86%D9%85%DB%8C%D8%B4%D9%87-%D8%A7%D8%B2%D8%B4-%DA%AF%D8%B0%D8%B4%D8%AA-onf1kttjp59g خب می ریم pyfiglet رو نصب کنیم. خیلی راحت کامند زیر رو میزنیم:pip install pyfigletخب می تونید یک ماژول دیگه هم بریزید باهاش کار داریم ?:pip install termcolorحالا می تونید برید توی یک ترمینال یا تو editor یا IDE خودتون. چیزای زیادی هستند برای کارمون مثل pycharm و vs code و Atom و ...ولی خب با همین یار قدیمیمون vs code میریم ?اول كتابخونه رو ايمپورت می کنیم و بعدش یک متغیر می سازیم بعنوان result و متد figlet_format رو استفاده می کنیم. به همین سادگی!import pyfiglet
result = pyfiglet.figlet_format(&#039;Tameshk&#039;)
print(result) البته هنوز کارای باحال تری میشه کرد ?می تونیم از فونت هاش استفاده کنیم! چجوری ؟ اینجوری :import pyfiglet
result = pyfiglet.figlet_format(&#039;Tameshk&#039;, font = &#039;isometric1&#039;)
print(result)خروجیشم میشه:گفتم دوسش دارم دیگه :)اینا هم چند تا فونت دیگه می تونید خودتون امتحان کنید و لذت ببرید ?Fonts_list = [ slant , 3-d, 3x5, 5lineoblique, alphabet, banner3-D, doh, letters, aligator, dotmatrix, bubble, buldhead, digital ]اما قصه ما به همینجا ختم نمیشه !هنوز می تونیم یک کارای دیگم بکنیم...می تونیم متنامونو رنگی و خوشگل کنیم ?گفتم بهتون termcolor رو بریزید لازمش داریم ؟ واسه اینجا بود.فقط کافیه termcolor رو ایمپورت کنیم و بعدش کل متغیر result رو توی فانکشن colored بگذاریم و نوع رنگمون هم مشخص کنیم. تمام!import pyfiglet
from termcolor import colored
result = colored(pyfiglet.figlet_format(&#039;Tameshk&#039;, font = &#039;banner3-D&#039;), &#039;red&#039;)
print(result)خب خروجی بالاتر نشونتون دادم.امیدوارم براتون لذت بخش بوده باشه ، لایک فراموشتون نشه و فعلا بدرود ?</description>
                <category>تمشک</category>
                <author>Ehsan</author>
                <pubDate>Mon, 04 Apr 2022 14:29:34 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پردازش تصویر با OpenCV در پایتون و انجام مثال (#1)</title>
                <link>https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%A8%D8%A7-opencv-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%88-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D9%85%D8%AB%D8%A7%D9%84-1-ds8aktx8k4py</link>
                <description>هنر راهی برای دیدن است و می گویند دیدن باور کردن است ، اما برعکس آن هم نیز درست است. باور کردن، دیدن است و حقیقتاً تصور کردن زندگی بدون هدیه بینایی در این جهان بسیار دشوار است. چشمان ما، چقدر  یک کودک شگفت انگیز است، وقتی چشمانمان باز می شوند، جهان را می بینیم و شروع به شناختن و دیدن دنیای اطرافمان می کنیم اما با گذشت زمان، همان تجربه شگفت انگیز، معمولی و پیش پا افتاده می شود. اما همانطور که ما در حال پیشرفت با تکنولوژی هستیم، در آستانه ای هستیم که ماشین ها نیز قادر به دیدن و درک کردن آن هستند. در حال حاضر، اگر قفل تلفن خود را با تصویر صورتتان باز کنید، به نظر نمی رسد یک داستان علمی باشد، اما داستان توسعه بینایی ماشین بیش از  بیست سال قدمت دارد.در این مقاله ما ابتدا به مسائل تئوری مربوط به پردازش تصویر میپردازیم و سپس نصب Open CV در پایتون را آموزش میدهیم. در انتها یک پروژه پردازش تصویر ساده را انجام میدهیم.اولین قدم رسمی در این زمینه در سال 1999 با ابتکار عمل Intel برداشته شد، هنگامی که تمام تحقیقات انجام شده با همکاری open cv (منبع باز بینایی کامپیوتر) که در اصل به صورت ++C نوشته شده بود، با انتشار اولین نسخه اصلی 1.0 در سال 2006، دومین در سال 2009، سومین در سال 2015 و چهارمین نسخه هم اکنون در سال 2018 . اکنون، opencv دارای رابطه های میانجی Python، Java و ++C است و از ویندوز، لینوکس، سیستم عامل Mac، سیستم عامل iPhone و اندروید پشتیبانی می کند. بنابراین می توان آن را به راحتی در Raspberry Pi با محیط Python و Linux نصب کرد. Raspberry Pi با openCV و دوربین الصاقی می تواند برای ایجاد بسیاری از برنامه‌های پردازش تصویر بلادرنگ مانند تشخیص چهره، face lock، ردیابی اشیا، تشخیص شماره پلاک خودرو، سیستم امنیتی منزل و غیره استفاده شود.قبل از شروع یادگیری پردازش تصویر با استفاده از openCV ، مهم است که بدانیم تصاویر چه هستند و انسان و ماشین چگونه آن تصاویر را درک می کنند.تصاویر چه هستند؟تصاویر نمایشی دو بعدی از طیف نور مرئی هستند. و طیف نور مرئی فقط بخشی از از طیف الکترومغناطیسی است که در بین طیف مادون قرمز و ماوراء بنفش قرار دارد.چگونه تصاویر شکل می‌گیرند: هنگامی که  نور از روی یک جسم به روی یک فیلم، یک حسگر یا روی شبکیه چشم  منعکس شود.اینگونه چشمان ما کار می کنند، با استفاده از یک لایه برای مسدود کردن بیشترین میزان نور و گذاشتن یک روزنه کوچک که نور بتواند از میان آن عبور کند و این دیافراگم نامیده می شود و این  یک تصویر بسیار متمرکز را تشکیل می‌دهد و یک مدل کاربردی برای دوربین مداربسته جیبی است، اما در دوربین مداربسته جیبی یک مشکل وجود دارد؛ همین مقدار نور وارد دیافراگم خواهد شد که نمی‌تواند برای فیلم یا  تصویر تشکیل شده مناسب باشد بنابراین نمی‌توانیم تصویری متمرکز به دست آوریم، برای اینکه تصویر را متمرکز کنیم ما باید فیلم را به جلو به عقب حرکت دهیم، اما در بسیاری از مواقع این مسئله مشکل ساز است.یا می‌توانیم با استفاده از لنزها این مشکل را برطرف کنیم، به ما این امکان را می دهد تا اندازه دیافراگم را کنترل کنیم و در عکاسی با نام fstop شناخته می شود، به طور کلی مقدار کمتر fstop در عکاسی بهتر است.اندازه دیافراگم همچنین به ما اجازه می‌دهد تا به عمق میدان خوبی، که به آن Bokeh گفته می شود، بپردازیم. این امکان را به ما می‌دهد که در هنگام تمرکز روی تصویر پس زمینه ای تار (غیر شفاف) داشته باشیم.کامپیوتر چگونه تصاویر را ذخیره می کند؟شاید شما در مورد فرمت های مختلف تصویر مانند JPEG، PNG و غیره شنیده باشید. همه این ها نمایش دیجیتالی دنیای آنالوگ ماست. کامپیوترها این کار را با ترجمه تصویر به کد دیجیتال، برای ذخیره سازی انجام می دهند و سپس برای نمایش فایل را به یک تصویر ترجمه  می کنند. اما در ابتدا آنها از یک پلتفورم مشترک برای ذخیره تصاویر استفاده می کنند و برای openCV نیز صدق می‌کند.برنامه openCV به طور پیش فرض از سیستم رنگی RGB (قرمز، سبز، آبی) برای تصاویر خود استفاده می کند، جایی که مختصات هر پیکسل (x, y) از سه مقدار مختلف برای شدت های 8 بیت به شکل i.e(0-255,2 8) تشکیل شده است.همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسیدمخلوط کردن شدت های مختلف هر رنگ به ما طیف کاملی را می دهد، به همین دلیل در نقاشی یا هنر این سه رنگ به عنوان رنگ های اصلی و بقیه ی رنگ ها به عنوان رنگ های فرعی در نظر گرفته می شوند. زیرا بیشتر رنگ های فرعی توسط رنگ های اصلی شکل می‌گیرند. مثلا برای زرد، ما مقادیر زیر را داریم :قرمز = 255، سبز = 255، آبی = 0اکنون این تصاویر در آرایه های چند بعدی ذخیره می‌شوند. در برنامه نویسی، آرایه مجموعه ای از اشیاء است. و در اینجا ما با سه نوع آرایه ی 1D، 2D و 3D سرکار داریم که D مخفف dimensional است.تصاویر رنگی در آرایه های سه بعدی ذخیره می شوند، جایی که ابعاد سوم نمایانگر رنگ های RGB هستند ( که بعدا خواهیم دید) و آنها با هم، شدت های مختلفی از پیکسل ها را برای یک عکس تشکیل می‌دهند. در حالی که تصاویر سیاه و سفید در آرایه های دو بعدی ذخیره می شوند و همچنین دو نوع تصویرِ سیاه و سفیدِ Greyscale و Binary وجود دارد.تصاویر Greyscale از سایه های خاکستری یک آرایه دو بعدی  [ ( 0,255 ) , ( 0,255 ) ] تشکیل شده است، درحالی که تصاویر Binary، پیکسل های سیاه و سفید هستند.چرا شناسایی تصاویر برای دستگاه دشوار است؟بینایی کامپیوتر به خودی خود یک کار چالش برانگیز است ، شما خودتان می توانید تصور کنید که به یک ماشین حس بینایی ، قدرت شناخت و شناسایی دادن چقدر سخت است. فاکتورهایی که در پایین به آنها اشاره شده است ، بینایی کامپیوتر را بسیار سخت می کند.محدودیت سنسور دوربین و محدودیت لنزنقاط دید متفاوتتغییر روشناییمقیاس گذاریاستثنائاتتغییرات کلاس شیتصاویر مبهم / توهمات نوریبرنامه OpenCV و کاربردهای آنبا وجود این مشکلات ، Computer Vision داستان های موفقیت بسیاری دارد:ربات مسیر یاب – اتومبیل های اتوماتیکتشخیص و شناسایی چهرهموتور جستجوگر تصویرمجوز خواندن صفحهتشخیص دست خطSnapchat و فیلترهای صورتتشخیص اشیاءپیگیری توپ و پخش آنها در ورزشو خیلی چیزهای بیشتر!نصب OpenCV با پایتون و آناکونداOpenCV به زبان C++ نوشته شده است ، اما اجرای آن با C++ بسیار دشوار است و از این رو تصمیم می گیریم آن را با یک زبان سطح بالا به عنوان پایتون پیاده سازی کنیم ، همچنین مزایای دیگری نیز برای اجرای OpenCV  با پایتون وجود دارد زیرا پایتون یکی از ساده ترین زبان هاست. برای مبتدیان همچنین برای علوم داده و برنامه های کاربردی یادگیری ماشین بسیار قدرتمند است و همچنین تصاویر را در آرایه های numpy ذخیره می کند که به ما امکان می دهد عملیات بسیار قدرتمندی را به راحتی انجام دهیم.برنامه نویسی پایه با قرار گرفتن در معرض سطح ریاضی دبیرستان ، وب کم ، پایتون 2.7 یا 3.6 (بسته آناکوندا ترجیح داده می شود) مفید است.مرحله 1: بسته Anaconda Python را دانلود و نصب کنید.به این آدرس بروید و با توجه به شرایط دستگاه خود ویندوز ، لینوکس یا مک را انتخاب کنید و می توانید نسخه Python 2.7 یا Python 3.7 را برای سیستمهای 64 بیتی یا سیستمهای 32 بیتی انتخاب کنید ، اما این روز ها بیشتر سیستم ها 64 بیتی هستند.توزیع آناکوندا از پایتون از طریق spyder studio ، نوت بوک های jupyter و anaconda prompt انجام می شود که باعث می شود پایتون بسیار محبوب باشد. برای انجام مثالها از spyder studio استفاده خواهیم کرد.انتخاب بین پایتون 2.7 یا 3.7 کاملاً بی طرفانه است ، اما با این حال برای مثالها ، می خواهیم از پایتون 3.7 استفاده کنیم . زیرا آینده پایتون است و پایتون 2.7 را از سال 2020 در بر خواهد گرفت ، همچنین بیشتر کتابخانه ها در پایتون 3.7 نگهداری می شوند. جنبه آینده پایتون را در نظر داشته باشید. همچنین نتایج عملیاتی ریاضی مانند (2/5=2.5)  را نیز می دهد ، در حالی که پایتون 2.7 آن را به 2. ارزیابی می کند. همچنین چاپ به عنوان تابعی در پایتون 3.7 (print(“hello”)) ، استفاده می شود. آن به برنامه نویسان تعیین یک فرآیند یا آموزش ، که با عملکرد واقعی قطعه ای از سخت افزار درگیر است (hands-on) را میدهد.مرحله 2: ایجاد یک بستر مجازی با OpenCVما قصد داریم OpenCV را با ایجاد یک بستر مجازی برای spyder با استفاده از prompt  Anaconda و پرونده YML نصب کنیم. (دانلود فایل های YML)با استفاده از فایل های YML تمام بسته ها و کتابخانه های مورد نیاز را نصب خواهیم کرد ، اما اگر می خواهید بسته های اضافی را نصب کنید می توانید با اجرای دستور آن بسته، به راحتی از طریق anaconda prompt  نصب کنید.به نماد جستجوی ویندوز خود بروید و anaconda prompt terminal  را پیدا کنید ، می توانید آن را در پوشه anaconda خود که به تازگی نصب کرده اید بیابید.سپس باید فایل YML دانلود شده خود را پیدا کنید ، و از اینجا شما باید دو گزینه را انتخاب کنید یا دایرکتوری ترمینال خود را به محلی که فایل YML شما دانلود شده است تغییر دهید یا فایل YML خود را در دایرکتوری که آناکوندای شما نصب شده است کپی کنید. در اکثر موارد ، می تواند درون در درایو C باشد. پس از کپی کردن فایل YML در محل مشخص شده ، دستور زیر را در prompt خود اجرا کنید :conda env create –f  virtual_platform_windows.ymlاز آنجا که سیستم من در ویندوز در حال اجراست ، فایل YML و دستور با ویندوز مطابقت دارد ، اما می توانید با توجه به سیستم خود با جایگزینی ویندوز توسط لینوکس یا مک ،  مطابق با آن اصلاح کنید.توجه: در صورت خطا در استخراج بسته ، ابتدا pytorch  و numpy  را نصب کنید و دستور فوق را اجرا کنید.اکنون anaconda navigator را پیدا کنید و یک منوی کشویی “Applications on ___” وجود دارد و از آنجا محیط مجازی را انتخاب کرده و spyder studio  را راه اندازی کنید.و همینه ، شما برای شروع آماده ای !باز کردن و ذخیره ی عکس ها در OpenCVدر این جا ما برخی فرمان های پایه ای و مجموعه ای از اصطلاحات برای استفاده از Python در OpenCV را توضیح می دهیم. ما در مورد سه عملکرد پایه در OpenCV خواهیم آموخت ، imread ، imshow وimwrite.#comments in python are given by # symbolبا فرمان زیر opencv را در python وارد کنید.import cv2با استفاده از ‘imread’ مشخص کردن مسیر تصویر ، یک تصویر را بارگذاری کنید.image =cv2.imread(&#039;input.jpg&#039;)اکنون آن تصویر در python به عنوان متغیری که ما به عنوان تصویر نامه گذاری کرده ایم بارگذاری و ذخیره شده است.حال برای نمایش متغیر تصویرمان ، از ‘imshow’ استفاده می کنیم و اولین پارامتر برای عملکرد imshow ، عنوانی است که در پنجره ی زیر نشان داده شده است و باید برای نمایش اسم همانند یک رشته در (‘  ‘) وارد شده باشدcv2.imshow(&#039;hello world&#039;,image)waitkey  به ما اجازه می دهد هنگامی که پنجره ی تصویر باز است ، اطلاعات را با خالی کردن آن وارد کنیم ، فقط منتظر ِهر کلیدی  است که قبل از ادامه  توسط جا گذاری اعداد (به جز صفر ) فشرده میشود. ما می توانیم یک تاخیر را برای مدت زمانی که پنجره را باز نگه می دارید مشخص کنیم (زمان در میلی ثانیه در اینجا).cv2.waitKey()‘destroyAllWindows’ تمام پنجره های باز را می بندد ، عدم قرار این امر موجب قطع برنامه ی شما می شود.cv2.destroyAllWindows()اکنون بیایید نگاهی بیاندازیم که چگونه تصاویر در open cv ذخیره می شوند. برای این موضوع ، ما از numpy استفاده می کنیم. numpy یک کتابخانه برای python ، برای پشیبانی از آرایه ها و ماتریکس های چند بعدی بزرگ است.import cv2
#importing numpy
import numpy as np
image=cv2.imread(&#039;input.jpg&#039;)
cv2.imshow(&#039;hello_world&#039;, image)
#shape function is very much useful when we are looking at a dimensions of an array, it returns a tuple which gives a dimension of an image
print(image.shape)
cv2.waitKey()
cv2.destroyAllWindows()console output - (183, 275, 3)، دو بعد تصویر، 183 پیکسل در طول و 275 پیکسل در عرض هستند و 3 یعنی که سه اجزاء دیگر نیز وجود دارند (R, G, B) ، که این تصویر را می سازد ( این نشان می دهد که تصاویر رنگی در آرایه های سه بعدی ذخیره می شوند ).حال بیایید با اضافه کردن سطرهای کد زیر ، هر بعد از تصویر را چاپ کنیم.print(&#039;Height of image:&#039;,(image.shape[0],&#039;pixels&#039;))
print(&#039;Width of image:&#039;,(image.shape[1],&#039;pixels&#039;))خروجی کنسول  – طول تصویر (183, &#x27;pixels&#x27;)عرض تصویر (275, &#x27;pixels&#x27;)ذخیره ی تصویر ویرایش شده در OpenCVما از  ‘imwrite’ برای مشخص کردن نام و تصویر ذخیره شده استفاده می کنیم.cv2.imwrite(&#039;output.jpg&#039;,image)
cv2.imwrite(&#039;output.png&#039;,image)اولین بحث ، نام فایلی است که می خواهیم آن را ذخیره کنیم ، { برای خواندن یا ذخیره کردن فایل ، ما از (‘  ‘) برای نشان دادن آن به عنوان یک رشته، استفاده می کنیم } و دومین بحث ، نام فایل است.OpenCv به ما اجازه ی ذخیره کردن تصویر در فرمت های مختلف را می دهد.سیاه و سفید کردن تصویر در OpenCVGreyscaling  فرآیندی است که توسط آن یک تصویر تمام رنگی به سایه های خاکستری (سیاه و سفید) تبدیل می شود.در opencv ، بسیاری از توابع قبل از پردازش ، تصاویر را سیاه سفید می کنند تا تصویر ساده تر شود، تقریباً به عنوان کاهش نویز عمل می کند و زمان پردازش را افزایش می دهد زیرا اطلاعات کمتری در تصویر وجود دارد ( تصاویر سیاه سفید در دو آرایش دو بعدی ذخیره می شوند).import cv2
# load our input image
image=cv2.imread(&#039;input.jpg&#039;)
cv2.imshow(&#039;original&#039;, image)
cv2.waitKey()
#we use cvtcolor, to convert to greyscale
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow(&#039;grayscale&#039;, gray_image)
cv2.waitKey()
cv2.destroyALLWindows()راه ساده تر برای تبدیل تصویر تمام رنگی  به سیاه سفید ، فقط اضافه کردن Argument0 در تابع تصویر در کنار نام تصویر استimport cv2
grey_image=cv2.imread(&#039;input.jpg&#039;,0)
cv2.imshow(&#039;grayscale&#039;,grey_image)
cv2.waitKey()
cv2.destroyAllWindows()حال بیایید ابعاد هر تصویر را با تابع شکل ببینیم.import cv2
import numpy as np
image=cv2.imread(&#039;input.jpg&#039;)
print(image.shape)
cv2.imshow(&#039;original&#039;, image)
cv2.waitKey()
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow(&#039;grayscale&#039;, gray_image)
print(gray_image.shape)
cv2.waitKey()
cv2.destroyALLWindows()خروجی کنسول:(183 ، 275 ، 3) – برای تصویر رنگی(183 ، 275) – برای تصویر سیاه سفیداز این رو به وضوح نشان می دهد که تصاویر رنگی، توسط آرایش های سه بعدی نشان داده شده اند ، در حالی که تصاویر سیاه سفید توسط آرایه های دو بعدی.فضاهای رنگی تصاویرفضاهای رنگی نحوه ذخیره تصاویر است. RGB ، HSV ، CMYK فضاهای مختلف رنگی هستند که روش های ساده ای برای نمایش رنگ هستند.RGB – قرمز ، سبز و آبیHSV – رنگ ، اشباع و ارزش.و CMYK معمولاً در چاپگرهای جوهر افشان استفاده می شود.فضای رنگی RGB یا BGRرنگ فضای پیش فرض OpenCV ، رنگ RGB است.  RGB یک مدل رنگی افزودنی است که با ترکیب رنگ های آبی ، سبز و قرمز با شدت / روشنایی مختلف ، رنگ ها را ایجاد می کند.  در OpenCV از گستره رنگی 8 بیتی استفاده می کنیم.قرمز (0-255)آبی (0-255)سبز (0-255)با این حال OpenCV در واقع رنگ را با فرمت BGR ذخیره می کند.واقعیت جالب: – ما به دلیل چگونگی ذخیره عدد صحیح 32 بیتی در حافظه ، از نظم BGR در رایانه ها استفاده می کنیم ، اما همچنان به صورت RGB ذخیره می شود.  عدد صحیح که نمایانگر یک رنگ است به عنوان مثال: – 0X00BBGGRR به صورت 0XRRGGBB ذخیره می شود.فضای رنگی HSVHSV (رنگ ، اشباع و ارزش / روشنایی) فضای رنگی است که سعی در نمایش رنگ هایی دارد که انسان آن را درک می کند.  اطلاعات رنگ را به صورت نمای استوانه ای از نقاط رنگ RGB ذخیره می کند.رنگ – مقدار رنگ (0-179)اشباع – نوسان رنگ (0-255)مقدار – روشنایی یا شدت (0-255)فرمت فضای رنگ HSV در تقسیم رنگ مفید است.  در RGB ، فیلتر کردن رنگ خاص کار ساده ای نیست ، اما HSV تنظیم کردن محدوده های رنگی را برای فیلتر کردن رنگ های خاص بسیار آسان تر می کند ، همانطور که ما آنها را درک می کنیم.Hue رنگ را در HSV نشان می دهد ، مقدار رنگ از 0 – 180 و نه 360 متغیر است ، بنابراین چرخه کامل را کامل نمی کند و بنابراین متفاوت از استاندارد نقشه برداری می شود.فیلتر های دامنه رنگ :قرمز – (165-15)سبز – (45-75)آبی – (90-120)همانطور که می دانیم تصاویر در فضای رنگی RGB (قرمز ، سبز و آبی) ذخیره می شوند و OpenCV همان را نشان می دهد ، اما اولین چیزی که باید در مورد فرمت RGB opencv به خاطر بسپارید این است که در واقع BGR است و می توانیم با نگاهی به شکل تصویر آن را بشناسیمimport cv2
import numpy as np
image = cv2.imread(&#039;input.jpg&#039;)
#B,G,R value for the first 0,0 pixel
B,G,R=image[0,0]
print(B,G,R)
print(image.shape)
#now if we apply this on grayscale image
gray_img=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
print(gray_img.shape)
#gray_image pixel value for 10,50 pixel
print(gray_img[10,50])خروجی کنسول: print(B,G,R) - 6 11 10print(image.shape) -  (183, 275, 3)print(gray_img.shape) - (183, 275)print(gray_img[10,50])   - 69اکنون فقط در تصویر سیاه سفید، دو بعد وجود دارد ، زیرا تصویر رنگی در سه بعد ذخیره می شود ، بعد سوم آن (R ، G ، B) است در حالی که در سیاه سفید فقط دو بعد وجود دارد ، از آنجا که (B ،R، G) وجود ندارد و برای یک موقعیت پیکسل خاص فقط یک مقدار واحد دریافت می کنیم در حالی که در تصویر رنگی سه مقدار دریافت کردیم.فضای رنگی مفید دیگر HSV استimport cv2
image=cv2.imread(&#039;input.jpg&#039;)
hsv_image=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
cv2.imshow(&#039;HSV image&#039;,hsv_image)
cv2.imshow(&#039;Hue channel&#039;,hsv_image[:,:,0])
cv2.imshow(&#039;saturation channel&#039;,hsv_image[:,:,1])
cv2.imshow(&#039;value channel&#039;,hsv_image[:,:,2])
cv2.waitKey()
cv2.destroyAllWindows()بعد از اجرای کد می توانید چهار تصویر را مشاهده کنید که سه عکس از کانالهای جداگانه و یک تصویر HSV ترکیبی است.تصویر کانال Hue کاملاً تاریک است زیرا مقدار آن فقط از 0 تا 180 متغیر است.همچنین توجه داشته باشید که تابع imshow تصویر RGB یا BGR را به شما نشان می دهد ، اما تبدیل HSV روی هم تداخل دارد.همچنین کانال ارزش به دلیل روشنایی آن شبیه به تصویر سیاه سفید خواهد بود.کاوش در اجزای تکی تصویر RGBimport cv2
image=cv2.imread(&#039;input.jpg&#039;)
#opencv&#039;s split function splits the imageinti each color index
B,G,R=cv2.split(image)
cv2.imshow(&amp;quotRed&amp;quot,R)
cv2.imshow(&amp;quotGreen&amp;quot,G)
cv2.imshow(&amp;quotBlue&amp;quot,B)
#making the original image by merging the individual color components
merged=cv2.merge([B,G,R])
cv2.imshow(&amp;quotmerged&amp;quot,merged)
#amplifying the blue color
merged=cv2.merge([B+100,G,R])
cv2.imshow(&amp;quotmerged with blue amplify&amp;quot,merged)
#representing the shape of individual color components.
# the output wuld be only two dimension whih wouldbe height and width, since third element of RGB component is individually represented
print(B.shape)
print(R.shape)
print(G.shape)
cv2.waitKey(0)
cv2.destroyAllWindows()خروجی کنسول :(183, 275)(183, 275)(183, 275)تبدیل عکس به مولفه فردی RGBدر کد پایین ما یک ماتریکس صفرها را همراه با ابعاد تصویر H×W ساخته ایم ، صفر به یک آرایه ی پرشده با صفرها برمی گردد ، اما با همان ابعاد.عملکرد Shape (شکل) ، هنگامی که ما داریم به ابعاد تصویر نگاه می کنیم بسیار مفید است ، در این جا ما برش این عملکرد shape را انجام داده ایم. بنابراین shape[:2] همه چیز را به نقاط تعیین شده می برد یعنی به نقاط مشخص شده ی دوم  می برد که از نظر ارتفاع و عرض تصویر به عنوان سومین نمایانگر مولفه ی  RGB تصویر است و ما در اینجا به آن احتیاجی نداریم.import cv2
import numpy as np
image = cv2.imread(&#039;input.jpg&#039;)
B,G,R = cv2.split(image)
zeros=np.zeros(image.shape[:2],dtype=&amp;quotuint8&amp;quot)
cv2.imshow(&amp;quotRED&amp;quot,cv2.merge([zeros,zeros,R]))
cv2.imshow(&amp;quotGreen&amp;quot,cv2.merge([zeros,G,zeros]))
cv2.imshow(&amp;quotBlue&amp;quot,cv2.merge([B,zeros,zeros]))
cv2.waitKey(0)
cv2.destroyAllWindows()نمایش هیستوگرام تصویر با OpenCVنمایش هیستوگرام تصویر ، روش تجسمِ اجزای تصاویر است.کد زیر به شما اجازه می دهد که تصویر را از طریق هیستوگرام رنگیِ اجزای رنگیِ ترکیبی و جداگانه آنالیز کنید.import cv2
import numpy as np
#we need to import matplotlib to create histogram plots
import matplotlib.pyplot as plt
image=cv2.imread(&#039;input.jpg&#039;)
histogram=cv2.calcHist([image],[0],None,[256],[0,256])
#we plot a histogram, ravel() flatens our image array
plt.hist(image.ravel(),256,[0,256])
plt.show()
#viewing seperate color channels
color=(&#039;b&#039;,&#039;g&#039;,&#039;r&#039;)
#we know seperate the color and plot each in histogram
for i, col in enumerate (color):
    histogram2=cv2.calcHist([image],[i],None,[256],[0,256])
    plt.plot(histogram2,color=col)
    plt.xlim([0,256])
    plt.show()بیایید عملکرد calcHist را با پارامترهای جداگانه اش دریابیم.cv2.calcHist(images, channels, mask, histsize, ranges)Images : تصویر منبع نوع unit 8 یا float 32 است. آن باید دربراکت های مربعی داده شود ، یعنی“[img]” ، که همچنین آرایه ی سطح دوم آن را نشان میدهد از آنجایی که یک تصویر برای opencv ، داده در فرم آرایه است.Channels : این نیز همچنین در براکت های مربعی داده می شود. این شاخص کانال است که برای آن هیستوگرام را محاسبه می کنیم. به عنوان مثال اگر ورودی تصویر سیاه سفید است ، مقدار آن [0] است ، برای تصاویر رنگی می توانید برای محاسبه ی هیستوگرام کانال آبی ، سبز و قرمز به ترتیب [0] ، [1] یا [2] عبور دهید.Mask : تصویر ماسک. برای پیدا کردن هیستوگرام عکس کامل ، آن به عنوان “none” داده شده است. اما اگر می خواهید هیستوگرام قسمت خاصی از تصویر را پیدا کنید ، باید یک تصویر ماسک را برای آن بسازید و آن را به عنوان ماسک بدهید.Histsize : این نشان دهنده ی تعداد BIN ما است. برای مقیاس کامل که از آن می گذریم ، باید در براکت های مربعی داده شود [256] .Ranges : ین رنج ( محدوده ی ) ماست ، به صورت نرمال [0.256] است.ترسیم تصاویر و اشکال با استفاده از OpenCVدر زیر تعدادی مثال برای ترسیم خطوط ، مستطیل ، چندضلعی ، دایره و … در OpenCV وجود دارد.import cv2
import numpy as np
#creating a black square 
image=np.zeros((512,512,3),np.uint8)
#we can also create this in black and white, however there would not be any changes
image_bw=np.zeros((512,512),np.uint8)
cv2.imshow(&amp;quotblack rectangle(color)&amp;quot,image)
cv2.imshow(&amp;quotblack rectangle(B&amp;W)&amp;quot,image_bw)رسم خط در Open CV با پایتون#create a line over black square
#cv2.line(image, starting coordinates, ending coordinates, color, thickness)
#drawing a diagonal line of thickness 5 pixels
image=np.zeros((512,512,3),np.uint8)
cv2.line(image,(0,0),(511,511),(255,127,0),5)
cv2.imshow(&amp;quotblue line&amp;quot,image)رسم مستطیل در Open CV با پایتون#create a rectangle over a black square
#cv2.rectangle(image,starting coordinates, ending coordinates, color, thickness)
#drawing a rectangle of thickness 5 pixels
image=np.zeros((512,512,3),np.uint8)
cv2.rectangle(image,(30,50),(100,150),(255,127,0),5)
cv2.imshow(&amp;quotrectangle&amp;quot,image)رسم دایره در Open CV با پایتون#creating a circle over a black square
#cv2.circle(image,center,radius,color,fill)
image=np.zeros((512,512,3),np.uint8)
cv2.circle(image,(100,100),(50),(255,127,0),-1)
cv2.imshow(&amp;quotcircle&amp;quot,image)رسم چند ضلعی در Open CV با پایتون#creating a polygon
image=np.zeros((512,512,3),np.uint8)
#lets define four points
pts=np.array([[10,50], [400,60], [30,89], [90,68]], np.int32)
#lets now reshape our points in form required by polylines
pts=pts.reshape((-1,1,2))
cv2.polylines(image, [pts], True, (0,255,255), 3)
cv2.imshow(&amp;quotpolygon&amp;quot,image)تایپ متن در Open CV با Python#putting text using opencv
#cv2.putText(image,&#039;text to display&#039;,bootom left starting point, font,font size, color, thickness)
image=np.zeros((512,512,3),np.uint8)
cv2.putText(image,&amp;quothello world&amp;quot, (75,290), cv2.FONT_HERSHEY_COMPLEX,2,(100,170,0),3)
cv2.imshow(&amp;quothello world&amp;quot,image)
cv2.waitKey(0)
cv2.destroyAllWindows()ویژن رایانه (بینایی کامپیوتری) و OpenCV موضوعات بسیار گسترده ای هستند اما این راهنما نقطه شروع خوبی برای یادگیری OpenCV و پردازش تصویر خواهد بود.حالا که تا اینجا اومدید...حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?پ.ن:تشکر میکنم از گوگل عزیز؛ مامانم و کتاب های آموزش عکاسیش© منابع : تمشک، ایرنکس</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Mon, 22 Nov 2021 01:17:26 +0330</pubDate>
            </item>
                    <item>
                <title>کاه از خودت نیست،کاهدون که از خودته!</title>
                <link>https://virgool.io/TameshkGroup/%DA%A9%D8%A7%D9%87-%D8%A7%D8%B2-%D8%AE%D9%88%D8%AF%D8%AA-%D9%86%DB%8C%D8%B3%D8%AA%DA%A9%D8%A7%D9%87%D8%AF%D9%88%D9%86-%DA%A9%D9%87-%D8%A7%D8%B2-%D8%AE%D9%88%D8%AF%D8%AA%D9%87-uhfgvuihsq5d</link>
                <description>ســـــــــلـــــامـــــــراستش چند وقت پیش داشتم به این فکر می کردم که واقعا لازمه همیشه و برای هر چیزی متغیر و class و تابع بسازیم و مموری رو اشغال کنیم؟دیدم موضوع جالبیهمثلا به این فکر کنید که یه جایی از یه کد لازمه response تو قالب json از یه API بگیریدما فرض می کنیم شما می خواین از این API تعداد مبتلاهای تایید شده از دیروز تا امروز(بی منطقی تمام رو تو این API شاهد هستیم :|) بگیریدو همچنین فرض می کنیم از پایتون استفاده می کنید.عموما همچین کدی می نویسید نه؟import requestsurl=&amp;quothttps://api.covid19api.com/total/country/iran/status/confirmed?from=2021-11-10T00:00:00Z&amp;to=2021-11-11T00:00:00Z&amp;quotresponse=requests.get(url)json_response=response.json()print(json_response[0][&amp;quotCases&amp;quot])همه این متغیر ها یه بخشی از حافظه رو اشغال می کنن و در نهایت تعریف هر کدوم یه مقدار خیلی کمی از سرعت اجرا کم می کنه.پس چرا اینطوری ننویسیمش؟import requestsurl=&amp;quothttps://api.covid19api.com/total/country/iran/status/confirmed?from=2021-11-10T00:00:00Z&amp;to=2021-11-11T00:00:00Z&amp;quotprint(requests.get(url)[0][&amp;quotCases&amp;quot])یا یه مثال دیگه:فرض کنید دارید یه بات برای دیسکورد می نویسید که خودش شی گرا نیست ولی شما یه کلاس برای توکن و متغیر های کانفیگ ایجاد کردید!مثلا:class Config:	Token = &amp;quotYour Token&amp;quot	#other configs...خب این معلومه که کار اشتباهیهاولین نکته ای (که ربط زیادی هم نداره ولی میگم :|) اینه که اصولا توکن و چیز های دیگه ای که باید مخفی بمونن تو خود کد ذخیره نمی کننتو یه فایل مخفی به اسم .env یا با کامند export ذخیرش می کنن و مثلا توی پایتون با این کد میگیرنش:import osos.getenv(&amp;quotTOKEN&amp;quot)دومین نکته اینه که اگه خود کدتون شی گرا نیست، پس لزومی هم نداره که کلاس اضافی برای کانفیگ ایجاد کنیدکافیه یه متغیر ایجاد کنید.به همین سادگی :)من قبول دارم که بعضی متغیر ها و کلاس ها و ... برای خوانایی و راحتی کار لازمنولی وقتی از حد بگذره فقط سرعت اجرا و پرفورمنس کد میاد پایین.فقط هم تو پایتون نیستتو تمام فریمورکا و زبان ها هستدر آخر هم عذر می خوام اگه ناشیانه منظورم رو بیان کردم :,)حالا که تا اینجا اومدید...حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?© منابع : تمشک</description>
                <category>تمشک</category>
                <author>Nima Ghasemi</author>
                <pubDate>Sat, 13 Nov 2021 15:30:30 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(7): ساخت کپچا با پایتون</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C7-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%A9%D9%BE%DA%86%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-pgo1eel75uul</link>
                <description>سلام امیدوارم که حالتون عالی باشه. به یه قسمت دیگه از مجموعه آموزش ها و ترفند های پایتونی خوش اومدید! توی این آموزش پروژه محور همونطور که گفتم قراره یه برنامه بسازیم که کپچا بسازه و بعدش ما کپچا رو وارد کنیم و درستی یا اشتباه بودنشو بهمون بگه. ساخت کپچا با پایتون کار تقریبا ساده‌ایه ولی برای اینکه بتونید این پروژه رو بسازین باید یه دانش متوسط از پایتون داشته باشید. البته من اینجا همه چی رو سعی کردم از صفر بگم ولی خب خودتونم یکم بلد باشین خیلی خوب میشه... خب بریم سراغ تقسیم مراحل:تقسیم مراحل پروژه ساخت کپچا با پایتون:همونطور که خودتون میدونید و قبلا هم گفتم، برای اینکه بتونید یه پروژه رو با دردسر کمتری جلو ببرین باید اولین قدم رو اختصاص بدین به کشیدن یه تصویر ذهنی از پروژه و تقسیم بندی مراحل مختلف. این کار بهتون یه مسیر واضح نشون میده که اگه توی اون مسیر جلو برین شانس اینکه پروژه‌تون خطا بده خیلی کمتر میشه..! پس بیاین این پروژه رو تقسیم بندی کنیم:1- نصب ماژول‌ها و ایمپورت اونا به کتابخونه2- تعریف کپچا3- ساخت کپچا به شکل عکس4- ساخت پنجره گرافیکی و اضافه کردن کپچا به شکل عکس5- اضافه کردن تکست باکس و دکمه و لیبل6- ساخت بخش چک کننده درست بودن کپچا1- نصب ماژول‌ها و ایمپورت اونا به کتابخونهخیلی خب. برای اینکه بتونیم توی پایتون کپچا درست کنیم به کتابخونه captcha نیاز داریم. این کتابخونه قابلیت ساخت کپچاهای تصویری و صوتی رو داره که توی این پروژه ما میخوایم از قابلیت کپچا تصویری استفاده کنیم اما قبل از استفاده باید این کتابخونه رو نصب کنیم چون به صورت پیشفرض توی پایتون وجود نداره. پس توی ترمینال یا CMD سیستم عاملتون بنویسید:pip install captchaمرحله نصب که تموم شد، یعنی کتابخونه رو دانلود کرد و نصب کرد و پیغام نصب با موفقیت براتون نشون داده شد، میتونید برین سراغ کدنویسی! پس یه فایل پایتونی درست کنید و یه اسم براش بذارین. دقت کنید که اسم فایل captcha نباشه! چون ممکنه به خطا بخورین.حالا باید بخشی که کپچای تصویری درست میکنه رو به برنامه وارد کنیم. برای اینکار باید بنویسیم:from captcha.image import ImageCaptchaمرحله اول تموم شد! خسته نباشید 2- تعریف کپچاهدف ما تو این مرحله اینه که برنامه‌ای بنویسیم که یه کلمه بهش بدیم و توی سایز دلخواه اون کلمه رو به شکل عکس کپچا مانند درست کنه! برای اینکار باید از تابع ImageCaptcha استفاده کنیم. یعنی:cap = ImageCaptcha(width=280, height=90)اینجا گفتیم که یه عکس خالی درست کن با ابعاد 280 در 90 و به متغیری به اسم cap نسبت بده. توی این cap قراره یه کلمه بنویسیم. کلمه از کجا بیاریم؟ خیلی ساده:c_text = &quot;tameshk&quot;data = cap.generate(c_text)خب اینجا یه کلمه دادیم و توی متغیر c_text ذخیره کردیم. حالا اون cap که ساختیم یادتونه؟ باید بهش بگیم که توی اون تصویر، کلمه‌ای که دادیم رو generate کن. پس همین کارو کردیم و داخل متغیر data ذخیره کردیم. الان وقت چیه؟ وقت اینه که این کپچا که ساختیم رو به شکل عکس در بیاریم…3- ساخت کپچا به شکل عکستوی این مرحله باید کپچایی که ساختیم رو به شکل عکس در بیاریم. پس مینویسیم:cap.write(c_text , &quot;c.png&quot;)اینجا چیکار کردیم؟ گفتیم که توی تصویر cap با متد write بیا توش یه چیزی قرار بده. چی؟ خب این متد دو تا پارامتر میگیره، یکی اون کلمه‌ای که باید توی تصویر قرار بگیره و دومی هم مسیری برای ذخیره عکس ساخته شده. پس چیزایی که میخواد رو بهش میدیم. الان اگه تا اینجا برنامه رو نوشته باشید و اجراش کنید باید کنار فایل پایتونی‌‌تون یه عکس کپچا شکل با اون کلمه‌ای که دادین ساخته شده باشه! خب.. اینطوری کیف نمیده خیلی! پس بیاین برنامه رو گرافیکیش کنیم 4- ساخت پنجره گرافیکی و اضافه کردن کپچا به شکل عکسبرای اینکه یه برنامه گرافیکی توی پایتون بسازین باید با کتابخونه‌ها و فریم‌ورک‌های گرافیکی کار کنید. مثل کیوی، PyQt، tkinter و… اما ما میخوایم از دم دستی‌ترینشون یعنی tkinter استفاده کنیم که این پروژه رو زودتر بسازیم! خوبی که tkinter داره اینه که نیازی به نصب نداره و همینطوری یه راست میتونیم بریم سراغ برنامه‌نویسی. پس بیاین ایمپورتش کنیم و یه پنجره خالی بسازیم:from tkinter import *اینجا گفتیم که از کتابخونه tkinter هر چی داره رو ایمپورت کن! این کار خیلی کار درستی نیست و خودمم بهتون پیشنهاد نمیکنم! چون بهتره که فقط اون چیزایی که نیاز دارین رو وارد برنامه کنید. ولی چون توی این آموزش گیج نشین من اینطوری نوشتم. از آخر میگم شما چطوری بنویسید! (البته خودتونم فکر کنم باید بلد باشین).نکته دیگه‌ای که باید دقت کنید اینه که این دستور رو هم بالای برنامه‌تون و اونجایی که کتابخونه کپچا رو ایمپورت کردید بنویسید. کلا سعی کنید بخش ایمپورت کردنا جدا باشه از بقیه کدهاتون! اینطوری تمیزتره حالا بیاین یه پنجره خالی بسازیم:root = Tk()canvas = Canvas(root, width=300, height=300)canvas.pack()اینجا یه پنجره 300 در 300 ساختیم. اگه با کتابخونه tkinter آشنایی ندارین و دوست دارین یاد بگیرین توی کامنت‌ها بگین تا آموزش‌هاشو شروع کنم ولی اگه دوست ندارین کلا به شکل حفظ وار این کدها رو بنویسید! حالا بیاین و آخر برنامه‌تون هم این دستور رو بنویسید:mainloop()این دستور باعث میشه که پنجره گرافیکی‌مون به صورت دائم و پیوسته برامون نمایش داده بشه. اگه برنامه رو تا الان اجرا بکنید یه پنجره گرافیکی خالی مشاهده میکنید. حالا باید اون عکس کپچا که ساختیم رو وارد پنجره گرافیکی‌مون بکنیم. برای اینکار باید بنویسیم:img = PhotoImage(file = &quot;c.png&quot;)canvas.create_image(20,20,anchor = NW, image = img)اینجا یه متغیر ساختیم به اسم img و اون فایل عکس کپچا رو با تابع PhotoImage وارد کردیم. دقت کنید که P و I رو بزرگ بنویسید. حالا تصویر رو وارد برنامه کردیم پس بیاین توی پنجره گرافیکی هم نمایشش بدیم. برای اینکار باید از تابع create_image استفاده کنیم. این تابع چند تا ورودی میگیره که دو تای اولی که میبینید 20 دادیم، موقعیت تصویر هستش. anchor=NW هم برای اینه که عکس رو از گوشه چپ و سمت بالا موقعیتش رو درست کنه. NW یعنی شمال غربی! و درنهایت هم میگیم که اون تصویری که میخواد نشون بده img خودمون باشه. بازم میگم چون آموزش پروژه محور هستش خیلی وقت نیست که روی دونه دونه این پارامترها وقت بذاریم و توضیحشون بدیم. اگر خواستین عمیق‌تر یاد بگیرین توی کامنت‌ها بنویسید تا آموزشش رو درست کنم.خب تا اینجا اگر برنامه رو اجرا کنید میبینید که اون کپچا ما توی پنجره گرافیکی نشون داده میشه!5- اضافه کردن تکست باکس و دکمه و لیبلخب حالا یه تکست باکس لازم داریم که کاربر بتونه کپچایی که میبینه رو بنویسه. پس بیاین بنویسیمش:txt = Entry(root)canvas.create_window(150, 140, window=txt)Entry همون تکست باکس خودمونه! برای اضافه کردن تکست باکس به پنجره گرافیکی‌مون باید از تابع create_window استفاده کنیم. که 3 تا پارامتر میگیره، دوتای اولی موقعیت تکست باکس هستش و سومی هم اون چیزی که میخوایم به پنجره گرافیکی اضافه کنیم هستش که همون txt یا تکست‌ باکسمونه…حالا بیاین یه دکمه هم اضافه کنیم:btn = Button(root, text=&quot;Check!&quot;)btn.place(x = 120,y=160)اینم که ساده‌اس یه دکمه با متن Check! ساختیم. فقط اینجا برای اینکه دکمه رو به پنجره‌مون اضافه کنیم از تابع place استفاده کردیم که دو تا پارامتر میگیره که همون ورودی هستش.حالا در نهایت یه لیبل هم باید اضافه کنیم. این لیبل قراره بهمون بگه که کپچا رو درست وارد کردیم یا نه؟ پس اضافه‌اش میکنیم:lbl = Label(root, text= &quot;Enter Captcha!&quot;)lbl.place(x = 120, y= 200)توی اولین مرحله که کاربر هنوز هیچی وارد نکرده، متن لیبل رو گذاشتیم Enter Captcha!. قراره این متن وقتی روی دکمه کلیک کردیم عوض بشه و اگر کاربر کپچا رو درست نوشته بود، نوشته بشه که درسته و اگر کاربر درست ننوشته بود، نوشته بشه که درست نیست!6- ساخت بخش چک کننده درست بودن کپچاخب حالا برنامه از کجا چک کنه که ورودی کاربر برابر کپچا هستش یا نه!؟ چطوری باید بنویسیم وقتی کاربر روی دکمه Check! کلیک کرد این چک کردن انجام بشه؟ برای اینکار باید یه تابع بسازیم و شرط بذاریم که اگر ورودی کاربر برابر کپچا بود، متن لیبل رو به “درسته” تغییر بده و اگر برابر نبود متن لیبل رو به “غلطه” تغییر بده. پس بیاین اینو بنویسیم:def check():if txt.get() == c_text:lbl[&#x27;text&#x27;] = &quot;Doroste!&quot;else:lbl[&#x27;text&#x27;] = &quot;Ghalate!&quot;خب حالا باید بگیم که وقتی روی دکمه کلیک کردیم این تابع اجرا بشه. برای اینکار باید اون بخشی که دکمه ساختیم رو یه تغییر کوچولو بدیم:1btn = Button(root, text=&quot;Check!&quot;, command=check)درواقع فقط یه تیکه command = check اضافه کردیم. این باعث میشه وقتی که روی دکمه کلیک کردیم تابع check که نوشتیم اجرا بشه. فقط اینو باید دقت کنید که چون پایتون کدها رو از بالا به پایین اجرا میکنه، وقتی میرسه به این دکمه که توش نوشتیم تابع check اجرا بشه، باید قبلش این تابع وجود داشته باشه دیگه… پس دستورات تابع رو حتما بالای تعریف دکمه بنویسید.خب! خسته نباشید کارمون تمومه. برنامه رو اجرا کنید و از نتیجه‌اش لذت ببرید…کل برنامه در یک نگاه:from captcha.image import ImageCaptchafrom tkinter import *#for gui windowroot = Tk()canvas = Canvas(root, width=300, height=300)canvas.pack()#for create captchacap = ImageCaptcha(width=280, height=90)c_text = &quot;learnpy&quot;data = cap.generate(c_text)cap.write(c_text , &quot;c.png&quot;)#for show captchaimg = PhotoImage(file = &quot;c.png&quot;)canvas.create_image(20,20,anchor = NW, image = img)#for textboxtxt = Entry(root)canvas.create_window(150, 140, window=txt)#check captchadef check():if txt.get() == c_text:lbl[&#x27;text&#x27;] = &quot;Doroste!&quot;else:lbl[&#x27;text&#x27;] = &quot;Ghalate!&quot;#for check buttonbtn = Button(root, text=&quot;Check!&quot;, command=check)btn.place(x = 120,y=160)#for labellbl = Label(root, text= &quot;Enter Captcha!&quot;)lbl.place(x = 120, y= 200)mainloop()ادامه راه…حالا بیاین و به عنوان تمرین چند تا ویژگی دیگه به این برنامه اضافه کنید…ویژگی اول: چند تا کلمه مختلف بنویسید که هر بار یه کپچا مختلف نمایش داده بشه.ویژگی دوم: اگر کاربر کلمه اشتباهی وارد کرد، کپچا عوض بشه.سخن پایانیخب توی این آموزش پروژه محور پایتون هم یه پروژه دیگه (ساخت کپچا با پایتون) ساختیم که امیدوارم ازش لذت برده باشین و چیزای جدید هم یاد گرفته باشید ازش. برای اینکه کتابخونه tkinter رو به شکل بهینه‌تری وارد برنامه کنیم میتونیم بگیم که فقط دکمه و تکست باکس و… رو ایمپورت کن یعنی:from tkinter import Tk,Canvas,PhotoImage,Entry,Button,Label,mainloop,NWو به رسم همیشه تا اینجا که اومدید...حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنید...راستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها و چالش های خفنی داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?راستی اگه مشکلی داشتید حتما تو کامنتا بگید باهم رفعش می کنیم ^_^© منابع : تمشک، آی کد آکادمی</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 06 Nov 2021 15:42:40 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(6): ساخت جدول با پایتون</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C6-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AC%D8%AF%D9%88%D9%84-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-u48xf5tvicjl</link>
                <description>سلام؛ در  این قسمت از آموزش ها و ترفند های پایتونی، شما یاد میگیرید که چطور اقدام به ساخت جدول در پایتون  با استفاده از Pretty Table بکنید.اول باید کتابخونه رو نصب کنید:pip install prettytableبعدش کتابخونه نصب میشه.کتابخونه رو ایمپورت میکنیم:from prettytable import PrettyTableهمچنین با استفاده از کد زیر تعداد ستون ها و اطلاعات مورد نیاز خود را به برنامه اضافه میکنیم:t.add_row([&#039;tameshk&#039;,&#039;team&#039;,&#039;091000000&#039;])
t.add_row([&#039;adib&#039;,&#039;shamil&#039;,&#039;091200000&#039;])و در نهایت با دستور زیر اطلاعات را چاپ می کنیم:print(t)سورس کد نهایی برنامه:from prettytable import PrettyTable 

t = PrettyTable([&#039;Name&#039;,&#039;Family&#039;,&#039;Phone&#039;]) 
t.add_row([&#039;tameshk&#039;,&#039;team&#039;,&#039;091000000&#039;]) 
t.add_row([&#039;adib&#039;,&#039;shamil&#039;,&#039;091200000&#039;])

print(t)و به رسم همیشه تا اینجا که اومدید...حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنید...راستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها و چالش های خفنی داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?راستی اگه مشکلی داشتید حتما تو کامنتا بگید باهم رفعش می کنیم ^_^© منابع : تمشک</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sun, 31 Oct 2021 17:33:32 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش جنگو: ساخت اولین پروژه و بررسی ساختار پوشه ها ( قسمت سوم )</title>
                <link>https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D9%86%DA%AF%D9%88-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%88-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D9%BE%D9%88%D8%B4%D9%87-%D9%87%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-se4bq5530i9d</link>
                <description>سلام و درودتو پست قبلی توضیح دادم که پیشنیاز های جنگو چیه و چطور باید نصبش کردتوصیه می کنم اگه نخوندین حتما بخونین https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D9%86%DA%AF%D9%88-%D9%86%D8%B5%D8%A8-%D8%AC%D9%86%DA%AF%D9%88-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-cplhrkppxiwn تو این پست یه پروژه تستی میسازیم،میبینیم چه فایلایی داره و بررسی می کنیم هر فایل مهم چه فایده ای دارهمفید و مختصر :)قدم اول:واسه اینکه تنظیمات و اپ ها و ... قاطی نشن یه Virtual environment می سازیمکاری که خیلی راحته کافیه اول یه فولدر بسازیم به اسمی که دوست داریم(اگه نمی دونید این کامند واسه همه سیستم عامل ها یکسانه)mkdir folder_nameبعد بریم توشcd folder_nameو Virtual environment رو بسازیم :)به جای نیما هر اسمی می تونید بزاریدpython -m venv Nimaor python3 -m venv Nimaتامام ؛}قدم دوم:ایجاد پروژهاگه تو فولدر folder_name (یا هرچیزی که اسمش رو گذاشتید) نیستید برید توشبعد این کامند رو بزنید(جای نیما هر اسمی واسه Virtual environment گذاشتید بنویسید)windows :Nima\scripts\activatelinux and mac:source Nima/bin/activateبا اینکار Virtual environment فعال میشه و از این به بعد تا وقتی که با این کامند غیرفعالش کنید یا ترمینالتون رو ببندید کامند هاتون با پایتون داخل این Virtual environment اجرا میشن نه پایتون اصلی سیستمتونwindows:Nima\scripts\deactivatelinux and mac:source Nima/bin/deactivateحالا که Virtual environment رو فعال کردید فقط کافیه جنگو رو نصب کنید :)pip install djangoو بعد هم پروژه رو ایجاد کنید:django-admin startproject project .به جای project هر اسمی دوست دارین بزارینبررسی فایل های ایجاد شدهوقتی این کامند رو زدید همچین فایل هایی ایجاد میشن│   manage.py├───Nima└───project        asgi.py        settings.py        urls.py        wsgi.pyحالا کار هرکدوم چیه؟manage.py:شما از طریقش می تونید با جنگو تعامل داشته باشید و مثلا بگید دیتابیس رو مایگرشن کنهNima:فولدر Virtual environmentproject:فایل اصلی یه پروژه جنگو میان اینجاasgi.pyبرای تعامل با رابط asgi استفاده میشهsettings.py:تنظیمات پروژه اینجا ذخیره میشنurls.py:مشخص می کنه هر آدرسی به چه ویویی باید هدایت بشه(تو پست های بعد متوجه میشید منظورم چیه)wsgi.pyبرای کار با رابط wsgi استفاده میشهنظرتون چیه یه تست ساده بکنیم ببینیم پروژه درست ایجاد شده یا نه؟ :)این کامند رو بزنیدpython manage.py runserverorpython3 manage.py runserverو حالا برین به 127.0.0.1:8080 GG :3راستش واسه پست بعد نمی تونم قول بدم که چکار می کنیم چون باید روش فکر کنم =_=اگه مشکلی داشتید حتما تو کامنتا بگید باهم رفعش می کنیم ^_^و به رسم همیشه تا اینجا که اومدید ...حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?© منابع : تمشک</description>
                <category>تمشک</category>
                <author>Nima Ghasemi</author>
                <pubDate>Thu, 21 Oct 2021 20:38:55 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(6): آموزش ساخت ساعت زنگدار با پایتون</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C6-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%B3%D8%A7%D8%B9%D8%AA-%D8%B2%D9%86%DA%AF%D8%AF%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-k07s4l6xenkg</link>
                <description>سلام امیدوارم که حالتون عالی باشه. توی این پست میخوایم با هم یه ساعت زنگدار با پایتون بنویسیم. هدف از این نوع پست‌ها که در آینده هم خیلی از این موارد خواهیم داشت اینه که شما با روند کلی جلو بردن یه پروژه آشنا بشین. توی این پست همونطور که گفتم میخوایم یه ساعت زنگدار بنویسیم! یعنی چی؟ یعنی کاربر بیاد و یه تایم به برنامه ما بده و بعدش هر وقت که ساعت سیستم به اون تایم رسید یه پیغام نشون بده و یه صدای بیپ بیپ به عنوان آلارم پخش کنه! بریم با هم ببینیم باید چیکار کنیم قدم اول: طرح ریزی پروژهخب توی قدم اول هر پروژه‌ای شما باید یه طرح کلی از برنامه‌ای که میخواین بنویسید داشته باشین. این طرح کلی به شما کمک میکنه که یه تصویر شفاف از چیزی که میخواین بسازین داشته باشین. خیلیا این قدم رو نادیده میگیرن و یه راست میخوان برن سمت کدنویسی که خب تا حدودی میشه گفت اشتباهه و عجله کار شیطونه! به خاطر همین ما اول اومدیم سراغ این قدم. باید چیکار کنیم؟ ببینید ما میخوایم این برنامه رو بنویسیم:1-از کاربر یه زمان بگیر2-از این ورودی، ساعت، دقیقه و ثانیه رو جدا کن و توی متغیرها جدا ذخیره کن3-هر لحظه زمان دقیق رو از کامپیوتر بگیر و توی متغیرهایی ساعت، دقیقه و ثانیه رو داشته باش4-به محض اینکه ساعت کامپیوتر به زمانی که کاربر انتخاب کرده رسیدی یعنی: ساعت کامپیوتر == ساعت کاربر، دقیقه کامپیوتر == دقیقه کاربر، ثانیه کامپیوتر == ثانیه کاربر شد؛ یه پیغام نشون بده و یه آلارم هم پخش کن.اگر خواستین میتونید اینو روی کاغذ هم رسم کنید:بسیار خوب! حالا ما آماده‌ایم که پروسه ساخت ساعت زنگدار با پایتون رو شروع کنیم…!قدم دوم: تحقیق راجب اینکه چه چیزایی نیاز داریم!خب مسلما ما یه محیط برنامه‌نویسی میخوایم، پایتون حتما باید نصب شده باشه، یه صفحه کلید میخوایم!!! بله اینا رو توی هر پروژه‌ای باید داشته باشین اما برای این پروژه چی؟ آها! توی این قدم باید برین مثلا ببینید برای پخش صدا (یا همون آلارم) به چه کتابخونه‌ای نیاز داریم؟ و بیایم نصبش کنیم. یا مثلا برای گرفتن زمان کامپیوتر چه کتابخونه‌ای نیازه؟ اینا رو باید تحقیق کنید و تا حدودی هم راجبشون یاد بگیرین. حالا چون اینجا میخوایم سریع‌تر کار رو شروع کنیم و میدونم شما هم عجله دارین من بهتون میگم چیا نیازه!برای گرفتن زمان از کامپیوتر : datetimeبرای پخش صدا: playsoundکتابخونه datetime به صورت پیشفرض توسط پایتون نصب شده یعنی همین الان میتونید ازش استفاده کنید اما کتابخونه playsound رو باید نصب کنید. چطوری؟ خیلی راحته، اگه لینوکس یا مک هستین ترمینال رو باز کنید و یا اگه توی ویندوز هستید CMD رو باز کنید و بنویسید:pip install playsoundو صبر کنید تا نصب بشه. یادتون نره باید اینترنت داشته باشین برای نصب! (فکر نمیکنم لازم به گفتنش بود ولی گفتم..!)وقتی که کتابخونه نصب شد cmd یا ترمینال رو ببندید و حالا وقتشه که بریم قدم بعدی! قدم بعدی چیه؟ کدنویسی قدم سوم: ایمپورت کتابخونه‌ها و گرفتن زمان از کاربرخب حالا یه فایل پایتونی بسازین و باز کنید. توی اولین مرحله از کدنویسی باید کتابخونه‌هایی که لازم داریم رو ایمپورت کنیم. برای اینکار مینویسیم:from datetime import datetime
from playsound import playsoundبا این دو دستور ما کتابخونه‌های playsound و datetime رو وارد برنامه کردیم و حالا میتونیم ازشون استفاده کنیم.حالا باید از کاربر یه زمان بگیریم. چگونه؟! با تابع input ورودی میگیریم تو پایتون پس باید بنویسیم:alarm_time = input(“Enter Alarm Time (HH:MM:SS)\n”)اینجا به کاربر میگیم که زمان رو به شکل HH:MM:SS وارد کن. اون n\ هم به خاطر اینه که ورودی رو بیاد توی خط بعدی بگیره که شلوغ نشه!خب حالا با توجه به طرح کلی که کشیدیم الان وقت چیه؟ آفرین! وقت اینه که ساعت و زمان و دقیقه رو از این چیزی که کاربر وارد کرده جدا کنیم. در واقع الان چیزی که کاربر وارد کرده اینطوریه: “08:30:00” و خب مثلا ما میخوایم بگیم که 08 مربوط به ساعت میشه، 30 مربوط به دقیقه و..خب اینجا یه آموزش کوچیک بدم. ببینید ما میتونیم رشته‌ها رو مثلا بگیم از حرف اول تا حرف پنجم نشون بده! به این کار میگن Slicing یا همون تیکه تیکه کردن. مثلا فرض کنید این رشته رو داریم: “Tameshk Team” حالا میتونیم بگیم که: [1,5] یعنی حرف 1 (یا ایندکس یکم چون همونطور که میدونید توی برنامه‌نویسی از صفر میشماریم) تا حرف 5 (یا ایندکس 5) رو بگیر. البته توی پایتون همیشه عدد دومیه در نظر گرفته نمیشه یعنی اینجا تا حرف چهارم یا ایندکس چهارم چاپ میشه…اینجا هم همینطوریه. باید بگیم مثلا از [0,2] مربوط به ساعت هستش. پس:alarm_hour = alarm_time[0:2]
alarm_minute = alarm_time[3:5]
alarm_second = alarm_time[6:8]امیدوارم که متوجه منظورم شده باشین.خب حالا کاربر زمان رو وارد کرده! پس بیاین یه پیغام بهش بدیم که مطمئن بشه آلارمش ست شده:print(“Setting Alarm…”)حالا وقت چیه؟ باید از روی طرح و نقشه کلی‌مون بگیم! ببینید چقدر این طرح مهمه… هر لحظه بهمون میگه باید چیکار کنیم و این خیلی بهمون کمک میکنه.. الان وقت اینه که لحظه به لحظه زمان دقیق رو از کامپیوتر بگیریم. پس مینویسیم:now = datetime.now()خب این زمان دقیق رو از کامپیوتر میگیره و توی متغیر now ذخیره میکنه اما..اما این کد هر لحظه که اجرا نمیشه! فقط یه بار اجرا میشه و فقط همون زمان رو توی خودش ذخیره میکنه… ما میخوایم این کد مدام تکرار بشه و زمان دقیق دستش باشه پس باید بیایم اینو توی یه حلقه تکرار بنویسیم که هر لحظه اجرا بشه. حلقه تکرار بی‌نهایت while True اینجا خیلی به کارمون میاد پس:while True:
now = datetime.now()به این ترتیب این کد برای ما هر لحظه تکرار میشه! حالا مشابه کاری که برای زمانی که کاربر وارد کرد انجام دادیم، یعنی اومدیم ساعت و دقیقه و ثانیه رو جدا کردیم برای زمانی که از کامپیوتر میگیریم هم باید بیایم و همین کار رو انجام بدیم. اینجا ما توی کتابخونه datetime یه متد داریم به اسم strftime که میتونیم باهاش زمان رو به رشته تبدیل کنیم:c_hour = now.strftime(“%H”)
c_minute = now.strftime(“%M”)
c_second = now.strftime(“%S”)همونطور که باید حدس بزنید %H برای قسمت ساعت از زمان هستش، %M برای قسمت دقیقه و %S برای بخش ثانیه.دقت کنید… خیلی دقت کنید که ما این کدها رو هنوزم باید داخل حلقه بنویسیم. اگر نمیدونید چرا ؟! بهش فکر کنید! ما هر لحظه زمان رو از کامپیوتر میگیریم و همون لحظه هم ساعت و دقیقه و ثانیه رو جدا میکنیم! خیلی منطقیه خب ما زمان کاربر رو داریم و زمان لحظه‌ای کامپیوتر رو هم داریم. تنها کاری که باید انجام بدیم اینه که مدام (یعنی هر لحظه) این دو زمان رو با هم مقایسه کنیم و اگه با هم برابر بودن دیگه اون کارهایی که گفتیم یعنی نشون دادن پیغام، زنگ زدن و… رو انجام بدیم. پس این کدها رو هم باید توی بلاک حلقه بنویسید:if alarm_hour == c_hour:
if alarm_minute == c_minute:
if alarm_second == c_second:
print(“Pashooooo!”)
playsound(“Beep.mp3”)
breakاینجا چه کردیم؟! گفتیم که هر وقت ساعت‌ها، دقیقه‌ها و ثانیه‌های زمان کامپیوتر و زمان وارد شده توسط کاربر یکی شد، پیغام pashoooo! رو نشون بده و یه صدای بیپ بیپ هم پخش کن و درنهایت از حلقه هم خارج شد (break) اینطوری دیگه کارمون تموم میشه.البته فکر نکنید این صدای Beep.mp3 رو خود کتابخونه داره‌ها..! نخیر! این فایل صوتی رو باید خودتون بذارین کنار برنامه پایتونی‌تون و بعدش از اینجا صداش بزنید. میتونید هر آهنگی که دوست دارین رو امتحان کنید...تبریک میگم! شما ساعت زنگدار خودتون رو نوشتین… بهش اعتماد کنید! برنامه رو اجرا کنید و یه ساعت تنظیم کنید و برین یه چرت بزنید! برنامه شما رو سر ساعت بیدار میکنه البته حواستون باشه صدای کامپیوتر mute نباشه :))) درنهایت امیدوارم که از ساخت ساعت زنگدار با پایتون لذت برده باشین و چیزای خوبی از این آموزش یاد گرفته باشید.خوب جلسه ی پنجم آموزش ها و ترفند های پایتونی تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشید...فکر نمی کنم چیزی رو جا انداخته باشم پس به رسم همیشگی؛ تا اینجا که اومدید:لایک که از واجباته ?کامنت هم اگه سوالی داشتید حتما بنویسید تا جایی که بشه جواب میدم =}اگه هم نداشتید صرفا بنویسید عالی بود دل هماهنگ کننده ویرگول شاد بشه =))))حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.راستی !آموزش جنگو هم توی ویرگول تمشک قرار میگیره ، پس اگر دوست داشتید دنبالش کنید...تا جلسه ی بعد خدانگهدار ????© تمشک</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sun, 17 Oct 2021 19:28:55 +0330</pubDate>
            </item>
                    <item>
                <title>درباره ی مایکروسافت بینگ بیشتر بدونیم !</title>
                <link>https://virgool.io/TameshkGroup/%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%DB%8C-%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D8%AA-%D8%A8%DB%8C%D9%86%DA%AF-%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1-%D8%A8%D8%AF%D9%88%D9%86%DB%8C%D9%85-sdspljsorla8</link>
                <description>مایکروسافت بینگ درست زمانی داشت ساخته می شد که گوگل روز به روز پیشرفت میکرد و یاهو پس رفت ، مایکروسافت عقب افتاده بود از بس که درگیر سیستم عامل خودش ویندوز بود ؛ میخواست از یاهو و گوگل عقب نیفتد ، ادامه داستانش رو در ادامه مطلب بریم ببینیم چی هست ؛ پس با تمشک همراه باشید...تاریخچه ی اسم های مایکروسافت بینگ اسم های مایکروسافت بینگ به ترتیب لایو سرچ، ویندوز لایو سرچ ، ام. اس. ان سرچ ، بینگ و در نهایت مایکروسافت بینگ است .جالبه بدونید کلمه bing ، مخفف because it&#x27;s not google ، گوگل است ؛ یعنی چون گوگل نیست ?تاریخچه لوگو های بینگبینگ همونطور که اسم زیاد عوض کرد ، لوگو هم زیاد عوض کرده ، ببینید :البته عکس بالا این لوگو رو جا گذاشته ?یکم درباره ی بینگ با هم صحبت کنیم ?‍♂️خوب به بینگ واقعا کم لطفی شده ، شاید به اندازه گوگل 20 از 20 نباشه (هر چند گوگل هم 20 از 20 نیست ?) ولی امکاناتی داره که گوگل به پاش هم نمیرسه ، مثلا سرچ عکس بینگ فوق العاده عالی و دقیقه ولی واسه گوگل واقعا بده یا شایدم متوسطه رو به پایین، کلا بینگ عکس رو خیلی خوب آنالیز میکنه، خوب یکی از ویژگی های بزرگ بینگ داشتن تصویر زمینه های روزه، یعنی هر روز یک تصویر زمینه داره. بینگ یکی از پایه های اصلی ربات کورتانا ویندوز هست و اگر ازش بپرسید گوگل به نظرت چطوره؟ میگه که من بینگ رو ترجیح میدم =)تاثیر گذارترین افراد روی موتور جستجوی بینگ استیو بالمر، بیل گیتس و ساتیا نادلا هستند، که به پیشرفت بینگ بسیار کمک کردنددر آخرین آمار بینگ رتبه ی 32 الکسا را در جهان دارد که سومین موتور جستجو محبوب بعد از گوگل و یاهو به حساب می آید ولی یاهو سایتش از بینگ معروف تر هست و به خاطر یاهو میل بیشتر از بینگ محبوب استچند وقت پیش مایکروسافت آماری از بینگ بیرون داد که نشان می‌داد درصد قابل توجه ای از کاربران هنوز از بینگ استفاده می‌کنند تا چشم های دوباره به سمت بینگ برگرده. ولی با این همه مایکروسافت نتونسته در بخش موتور جستجو به پای گوگل برسه چون چندی پیش متوجه شدند کارشناسان که پر جستجو ترین کلمه بینگ &quot;گوگل&quot; استسخن پایانیدر آخر میخوام بگم که شاید گوگل در بعضی جاها بهتر از بینگ باشه ولی واقعا گوگل هم ایراداتی داره که بینگ نداره و میشه گفت ما به گوگل فقط عادت کردیم و بینگ اونقدر ها هم که ازش بد تعریف می‌کنند نیست. دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.© تمشک</description>
                <category>تمشک</category>
                <author> AV </author>
                <pubDate>Mon, 11 Oct 2021 15:11:24 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(5): برنامه ماشین حساب ساده در پایتون</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C5-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%AD%D8%B3%D8%A7%D8%A8-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-xvqouqrj22in</link>
                <description>برنامه ماشین حساب ساده در پایتوندر این قسمت قصد داریم نحوه‌ی کدنویسی برنامه ماشین حساب ساده در پایتون را برای شما توضیح دهیم. برای نوشتن یک ماشین حساب ساده، به الگوریتم خاصی نیاز نداریم، با کمی حوصله و خلاقیت قادر خواهیم بود، برنامه‌ی موردنظر خود را کدنویسی کنیم.بیایید از ساده‌ترین شکل ممکن برای نوشتن این ماشین حساب خط فرمان شروع کنیم و مرحله به مرحله به امکانات آن اضافه کنیم.مرحله‌ی اول برنامه ماشین حساب ساده در پایتون: دریافت ورودی کاربرابتدا با استفاده از دستور input() و نوشتن پیغامی مناسب برای کاربر، دو عدد صحیح مدنظر او را دریافت می‌کنیم. به این صورت:number_1 = int(input(&amp;quotEnter your the first number: &amp;quot))
number_2 = int(input(&amp;quotEnter your the second number: &amp;quot))
Enter your the second number: 23Enter your the first number: 54اگر با دستور input() و تبدیل آن به عدد صحیح آشنایی ندارید، می‌توانید مقاله ورودی و خروجی در پایتون را مطالعه کنید.مرحله‌ی دوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عملگرپس از آن‌که دو عدد صحیح از کاربر گرفتیم، برای محاسبه و عملیات ریاضی باید مشخص کنیم کاربر می‌خواهد چه عملیاتی روی اعداد انجام دهد. به همین جهت بار دیگر با دستور input() عملگر مورد نظر را دریافت می کنیم. برای آن‌که هر کس ورودی متفاوتی وارد نکند با نوشتن راهنما، یک استاندارد برای ورود عملگر تعیین می‌کنیم. به این صورت:operation = input(&#039;&#039;&#039;
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
&#039;&#039;&#039;)در اینجا ما از نمادهای ریاضی برای تعیین عملگر کاربر، استفاده کرده‌ایم، اما می‌توانیم از اعداد یا حروف انگلیسی نیز برای این کار استفاده کنیم. به عنوان مثال 1 for addition یا b for subtraction.در ضمن ما، در مثال بالا برای نوشته شدن هر رشته در خط جدید، از سه کوتیشن (‘’’) استفاده کردیم. برای این کار راه‌های دیگری نیز وجود دارد از جمله می‌توان هر خط رشته را در یک پرینت جداگانه نوشت، یا کاراکتر (\) را در انتهای هر خط اضافه کرد.Please type in the math operation you would like to complete:
+ for addition
- for subtraction
- for subtraction
* for multiplication
/ for divisionمرحله‌ی سوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عبارات شرطیاکنون که اعداد و عملگر مورد نظر کاربر را گرفتیم، باید با توجه به عملگر ورودی و با استفاده از if و elif و else عملیات ریاضی خواسته شده کاربر را روی اعداد انجام دهیم. به این صورت:number_1 = int(input(&amp;quotEnter your the first number: &amp;quot))
number_2 = int(input(&amp;quotEnter your the second number: &amp;quot))
operation = input(&#039;&#039;&#039;
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
&#039;&#039;&#039;)
if operation == &#039;+&#039;:
    output_number = number_1 + number_2
    print( &amp;quot{} + {} = {}&amp;quot .format(number_1, number_2, output_number))
elif operation == &#039;-&#039;:
    output_number = number_1 - number_2
    print( &amp;quot{} - {} = {}&amp;quot .format(number_1, number_2, output_number))
elif operation == &#039;*&#039;:
    output_number = number_1 * number_2
    print( &amp;quot{} * {} = {}&amp;quot .format(number_1, number_2, output_number))
elif operation == &#039;/&#039;:
    output_number = number_1 / number_2
    print( &amp;quot{} / {} = {}&amp;quot .format(number_1, number_2, output_number))
else:
    print(&#039;You have not typed a valid operator, please run the program again.&#039;)برای کسب اطلاعات بیشتر درمورد تابع format() مقاله‌ی قالب‌بندی خروجی در پایتون را مطالعه کنید.اگر در اینجا کاربر عدد اول خود را 65 و عدد دوم را 24 وارد کند و در ادامه عملگر ضرب (*) را انتخاب کند، خروجی به شکل زیر است.Enter your the first number: 65Enter your the second number: 24Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division*65 * 24 = 1560خب همان‌طور که می‌بینید، ما به سادگی ماشین حساب خط فرمان خود را نوشتیم. در مراحل بعدی کد خود را کامل‌تر و ماشین حساب را کاراتر خواهیم کرد.مرحله‌ی چهارم برنامه ماشین حساب ساده در پایتون: ‌تعریف توابعما قصد داریم، کاری کنیم که وقتی برنامه اجرا شد، پس از یافتن جواب، خاتمه نیابد و همچنان تا وقتی که ما دستور خاتمه دادن به آن  ندادیم، انجام عملیات ریاضی ادامه پیدا کند. برای چنین کاری لازم است از توابع استفاده کنیم.ابتدا کدی که در بالا نوشتیم را در یک تابع به نام calculate() قرار می‌دهیم و سپس برنامه را با فراخوانی تابع اجرا می‌کنیم. به این صورت:def calculate():
    number_1 = int(input(&amp;quotEnter your the first number: &amp;quot))
    number_2 = int(input(&amp;quotEnter your the second number: &amp;quot))
    operation = input(&#039;&#039;&#039;
    Please type in the math operation you would like to complete:
    + for addition
    - for subtraction
    * for multiplication
    / for division
    &#039;&#039;&#039;)
    if operation == &#039;+&#039;:
        output_number = number_1 + number_2
        print( &amp;quot{} + {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;-&#039;:
        output_number = number_1 - number_2
        print( &amp;quot{} - {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;*&#039;:
        output_number = number_1 * number_2
        print( &amp;quot{} * {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;/&#039;:
        output_number = number_1 / number_2
        print( &amp;quot{} / {} = {}&amp;quot .format(number_1, number_2, output_number))
    else:
        print(&#039;You have not typed a valid operator, please run the program again.&#039;)
# Call calculate() outside of the function
calculate()در ادامه، یک تابع دیگر اضافه می‌کنیم که در آن از کاربر درمورد ادامه داشتن برنامه یا خاتمه دادن به آن سوال می‌کند. این تابع را در پایان تابع اول و قبل از فراخوانی calculate() اضافه می‌کنیم.در این تابع ابتدا از کاربر با دریافت Yes و No می‌پرسیم که به اجرا ادامه دهیم یا خیر. در ادامه با توجه به پاسخ کاربر، با استفاده از if و elif و else برنامه را ادامه، متوقف یا تکرار می‌کنیم....
# Define again() function to ask user if they want to use the calculator again
def again():
    # Take input from user
    calc_again = input(&#039;&#039;&#039;
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    &#039;&#039;&#039;)
    # If user types Y, run the calculate() function
    if calc_again == &#039;Y&#039;:
        calculate()
    # If user types N, say good-bye to the user and end the program
    elif calc_again == &#039;N&#039;:
        print(&#039;See you later.&#039;)
    # If user types another key, run the function again
    else:
        again()
# Call calculate() outside of the function
calculate()در اینجا اگر کاربر، Y و N را با حروف کوچک وارد کند برنامه دچار خطا می‌شود و وارد قسمت مورد نظر نمی‌شود. به همین جهت ابتدا با استفاده از ویژگی str.upper() ورودی کاربر را به حروف بزرگ تبدیل می‌کنیم و سپس شرط را بررسی می‌کنیم. به این صورت:...
def again():
    calc_again = input(&#039;&#039;&#039;
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    &#039;&#039;&#039;)
    # Accept &#039;y&#039; or &#039;Y&#039; by adding str.upper()
    if calc_again.upper() == &#039;Y&#039;:
        calculate()
    # Accept &#039;n&#039; or &#039;N&#039; by adding str.upper()
    elif calc_again.upper() == &#039;N&#039;:
        print(&#039;See you later.&#039;)
    else:
        again()
...در قدم آخر، باید تابع agian() را در انتهای کدهای داخل تابع calculate() قرار دهیم تا بتوانیم بعد از پایان هر اجرا، از کاربر سوال کنیم به برنامه ادامه می‌دهد یا خیر. به این صورت:def calculate():
    number_1 = int(input(&amp;quotEnter your the first number: &amp;quot))
    number_2 = int(input(&amp;quotEnter your the second number: &amp;quot))
    operation = input(&#039;&#039;&#039;
    Please type in the math operation you would like to complete:
    + for addition
    - for subtraction
    * for multiplication
    / for division
    &#039;&#039;&#039;)
    if operation == &#039;+&#039;:
        output_number = number_1 + number_2
        print( &amp;quot{} + {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;-&#039;:
        output_number = number_1 - number_2
        print( &amp;quot{} - {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;*&#039;:
        output_number = number_1 * number_2
        print( &amp;quot{} * {} = {}&amp;quot .format(number_1, number_2, output_number))
    elif operation == &#039;/&#039;:
        output_number = number_1 / number_2
        print( &amp;quot{} / {} = {}&amp;quot .format(number_1, number_2, output_number))
    else:
        print(&#039;You have not typed a valid operator, please run the program again.&#039;)
    again()
# Define again() function to ask user if they want to use the calculator again
def again():
    # Take input from user
    calc_again = input(&#039;&#039;&#039;
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    &#039;&#039;&#039;)
    # If user types Y, run the calculate() function
    if calc_again.upper() == &#039;Y&#039;:
        calculate()
    # If user types N, say good-bye to the user and end the program
    elif calc_again.upper() == &#039;N&#039;:
        print(&#039;See you later.&#039;)
    # If user types another key, run the function again
    else:
        again()
# Call calculate() outside of the function
calculate()مرحله‌ی پنجم برنامه ماشین حساب ساده در پایتون: بهبود کداکنون یک برنامه‌ی خوب و کاربردی داریم، با این حال، موارد بسیاری وجود دارد که می‌توان برای بهبود کد انجام داد. برای مثال می‌توان یک خوش‌آمدگویی در ابتدای کد قرار داد. به این صورت:def welcome():
    print(&#039;&#039;&#039;
    Welcome to Calculator
    &#039;&#039;&#039;)
...
# فراموش نکنید که این تابع را فراخوانی کنید
welcome()
calculate()به طور قطع، این کد به خطاهای بسیاری در موقع اجرا برمی‌خورد، از جمله خطای تقسیم یک عدد بر صفر یا خطای وارد کردن یک عدد اعشاری یا یک رشته در ورودی که این موارد منجر به دریافت خطا و متوقف شدن برنامه می‌شود. برای رفع این‌گونه خطاها می‌توان از مدیریت استثنا (try …… except) استفاده کرد. شما می‌توانید این موارد را برای بهبود بخشیدن به کد، اضافه کنید.ما این برنامه را با چهار عملگر نوشتیم، اما شما می‌توانید موارد دیگری را نیز اضافه کنید. به عنوان مثال:...
operation = input(&#039;&#039;&#039;
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
** for power
% for modulo
&#039;&#039;&#039;)
...
#  فراموش نکنید برای حل توان و باقیمانده تقسیم، باید عبارات شرطی دیگری بنویسید.روش‌های بسیاری برای رفع خطاها و اصلاح و بهبود هر پروژه کد‌نویسی وجود دارد. در نتیجه نباید منتظر باشید که فقط از یک راه‌ حل صحیح واحد، مشکل به وجود آمده را حل کرد.جمع بندی:با هم یک پروژه کوچک برنامه نویسی با پایتون را مرحله به مرحله کدنویسی کردیم و دیدیم چگونه یک برنامه‌ می‌تواند شاخ و برگ بگیرد و رشد کند. هیچ برنامه نویسی قادر نخواهد بود، برنامه را از همان ابتدا به صورت پیچیده بنویسد، بلکه او برنامه را از ساده‌ترین حالت ممکن شروع کرده و به مرور آن را ارتقا داده و پیشرفته‌تر می‌کند.برنامه‌ی ماشین حسابی که نوشتیم، این امکان را دارد تبدیل به یک ماشین حساب قوی‌تر شود و عملیات‌های پیچیده‌تری را محاسبه کند. به شما پیشنهاد می‌کنیم، برای این منظور خودتان این کار را انجام داده و به تجربه برنامه ‌نویسی خود با پایتون، بیافزایید.خوب جلسه ی چهارم آموزش ها و ترفند های پایتونی تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشید...راستی !آموزش جنگو هم توی ویرگول تمشک قرار میگیره ، پس اگر دوست داشتید دنبالش کنید...تا جلسه ی بعد خدانگهدار ????فکر نمی کنم چیزی رو جا انداخته باشم پس به رسم همیشگی؛ تا اینجا که اومدیدلایک که از واجباته ?کامنت هم اگه سوالی داشتید حتما بنویسید تا جایی که بشه جواب میدم =}اگه هم نداشتید صرفا بنویسید عالی بود دل هماهنگ کننده ویرگول شاد بشه =))))حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.© تمشک، سون‌لرن</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 09 Oct 2021 13:00:07 +0330</pubDate>
            </item>
                    <item>
                <title>هنوز زنده ای؟ 0.0(فورک بمب ها)</title>
                <link>https://virgool.io/TameshkGroup/%D9%87%D9%86%D9%88%D8%B2-%D8%B2%D9%86%D8%AF%D9%87-%D8%A7%DB%8C-00%D9%81%D9%88%D8%B1%DA%A9-%D8%A8%D9%85%D8%A8-%D9%87%D8%A7-wmown03r0s0r</link>
                <description>-از سیستمت خسته شدی؟ ارورای سیستم عامل آزارت میده؟ باگش پیدا نمیشه که نمیشه؟+آره چیکار کنم؟ :/-بایا کن :)+چجوری؟-سرور SSH راه بنداز یه تونل هم با ngrok باز کن بایاش کنم ;) +بیا اینم SSH ?دقایقی بعد...+این سیستم چرا اینقدر صدای فنش زیاده داداش؟ دماش هم اینقدر رفته بالا ممد داره روش چایی دم می کنه :|-می دونی چَرا؟بعضی عکسا صدا دارن ?درود گلای تو خونه :) اگه تا الان متوجه نشدین باید بگم این یه پست طنزه  و صرفا قراره نتیجه چندتا سرچ که از بیکاری زدم درباره فورک بمب رو به اشتراک بزارم باشد که اطلاعاتتان زیاد شود ?چیزی که من دنبالش بودم فورک بمب تو ترمینال یونیکس بیس ها و Command prompt ویندوز بودقبل از هرکاری لطفا اگه می خواین این کامند هارو واسه تست اجرا کنید از یه VM استفاده کنید نه سیستم خودتوناول از همه فورک بمب چیه؟یه برنامه(واقعا نمی دونم میشه بهش گفت برنامه یا نه؛ چون بیشتر شبیه بدافزاره) که وقتی اجرا میشه دوتا subprocesses یا فورک رو که شبیه خودشه ایجاد می کنه،اونی که ایجاد میشه دوتا دیگه ایجاد می کنه،بعدی ها هرکدوم دوتا دیگه ایجاد می کنناین فرآیند تا زمانی ادامه پیدا می کنه که رم سیستم پر میشه و دیگه هیچکاری نمی تونید بکنید جز اینکه سیستم رو دستی ری استارت کنید.این تصویر خیلی زیبا توضیح میده منظورمو:منبع تصویر این پسته فورک بمب رو تقریبا همه جا می تونید بزنید :)حتی HTML!(البته فکر نکنم تاثیری رو پرفورمنس سیستم داشته باشه?)اما جالب تر نیست تو همون ترمینال بزنیم؟تو ترمینال لینوکس::(){ :|: &amp; };:توضیحش::() #Define new function    #named &#039;:&#039;{ #Begin function definition  #block  :|:&amp; #Pipe the very &#039;:&#039; function through itself,        #creating two processes, and make the        #resulting copy run in the background        #(the &amp; part)} #End function definition block;: #Call &#039;:&#039; for the first time, initiating a chain   #reaction: each instance of &#039;:&#039; will create two   #more instances, ad infinitumتو ویندوز کافیه که اینو تو یه فایل bat یا cmd بنویسید و ران کنید :)%0|%0چجوری کار می کنه؟%0 refers to the command used to run the current program. For example, script.batA pipe | symbol will make the output or result of the first command sequence as the input for the second command sequence. In the case of a fork bomb, there is no output, so it will simply run the second command sequence without any input.Expanding the example, %0|%0 could mean script.bat|script.bat. This runs itself again, but also creating another process to run the same program again (with no input).و مک(واسه پولدارا ?)شما توی مک می تونید همون کامند لینوکس رو استفاده کنید چون مک یونیکس بیسهولی یه مشکلی هستدر هر صورت هرجوری که فورک بمبر بزنید رو مک بعد از یه مدت دیگه فورک جدید ساخته نمیشهچون مک یه محدودیت داره برای هر کاربر تو تعداد processes ها که صد البته میشه تغییرش داد ولی خب هر چقدر هم زیادش کنید بی نهایتش نمیشه کرد :)فکر نمی کنم چیزی رو جا انداخته باشم پس به رسم همیشگی؛ تا اینجا که اومدید لایک که از واجباته ?کامنت هم اگه سوالی داشتید حتما بنویسید تا جایی که بشه جواب میدم =} اگه هم نداشتید صرفا بنویسید عالی بود دل هماهنگ کننده ویرگول شاد بشه =))))حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!پ.ن:یه سر به منابع هم بزنید حتما، چیزای جالبی یاد میگیرید© منابع : تمشک،ویکی پدیا،استک اور فلو،استک اور فلو،گیکز فور گیکز،Fork bombs in lots of languages</description>
                <category>تمشک</category>
                <author>Nima Ghasemi</author>
                <pubDate>Thu, 07 Oct 2021 22:36:34 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین برنامه های ادیت فیلم برای لینوکس! | پارت ۱</title>
                <link>https://virgool.io/TameshkGroup/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AF%DB%8C%D8%AA-%D9%81%DB%8C%D9%84%D9%85-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D9%BE%D8%A7%D8%B1%D8%AA-%DB%B1-ljsirnmv9u3p</link>
                <description>اگر شما هم کار تولید محتوا انجام میدهید  محتوای شما در قالب ویدئو هست حتما میدونید که یکی از مهم کار هایی که باید برای تولید محتوای ویدئویی انجام داد ادیت کردن ویدئو هست!برنامه های زیادی برای پلتفرم های متفاوتی وجود دارد مانند اندروید، لینوکس، مک و ویندوز?اما اگر شما کاربر لینوکسی هستید به احتمال خیلی زیاد با مشکل پیدا کردن برنامه مناسب برای ادیت فیلم که قابلیت های مناسبی داشته باشد و رایگان باشندد روبرو شده اید?تمشک در این نوشته میخواهد ۳ تا از بهترین برنامه های ادیت فیلم رو برای تولید کنندگان محتوایی که از لینوکس استفاده میکند معرفی کنه تا کار تولید کنندگان محتوایی که تازه کار خودشون رو شروع کردند یا به دنبال برنامه ای مناسب برای ادیت فیلم های خودشون میگردند رو راحت تر کنه?پس با تمشک همراه باشید!kdenliveاین یک نرم افزار ویرایش ویدیو رایگان و منبع باز از KDE است که از مانیتورهمزمان دو ویدیو ، تایملاین چند لایه ای برای موسیقی و ویدیو ها ، لیست فایل های افزوده شده به برنامه ، جلوه های ویژه و transition (همون افکتی که وقتی از یک کلیپ میریم یه کلیپ دیگه?) پشتیبانی می کند.این برنامه از طیف گسترده ای از فرمت های فایل و فرمت هایی که از دوربین های فیلمبرداری و دوربین ها به دست می آید پشتیبانی می کند ، از جمله: raw ، avi ، dv ، mpeg2 ، mpeg4(همون mp4 خودمون) ، h.264 ، AVCHD ، HDV ، XDCAM-HD ™ streams ، IMX ™ (D10) ، DVCAM (D10) ، DVCAM ، DVCPRO ™ ، DVCPRO50 ™  و  DNxHD.ویژگی های برنامه kdenlive 1.ویرایش ویدئو، صدا و تصویر چند لایه ای 2.طیف گسترده ای از فرمت های صوتی و تصویری3.رابط و میانبرهای قابل تنظیم  4. قابلیت افزودن انواع فرمت های صوتی و تصویری5.ذخیره خودکار(مخصوصا برای ایران که معلوم نیست دقیقا چه زمانی برق میره??)6.پشتیبانی از طیف بسیار بزگی از انواع پردازنده و کارت گرافیک7.پشتیبانی از تعداد بسیار زیادی افکت و جلوه های بسری8.اوپن سورس و رایگان بودن??مشکلات برنامه kdenliveباگ?اونم به تعداد زیاد?تصویر از محیط برنامهنصب در لینوکس (اوبونتو)sudo apt install kdenliv2. OpenShot اوپن شات (openshot) یکی دیگر از ویرایشگرهای ویدیویی چند منظوره برای لینوکس است که به شما این امکان را میدهد تا به راحتی ویدیوی خود را ادیت کنید.منابع آموزشی (انگلیسی) بسیار زیادی برای آموزش این برنامه وجود دارد که به افراد تازه کار این امکان را میدهد که به راحتی ادیت فیلم را با این برنامه یاد بگیرند.این برنامه هم مثل kdenlive تقریبا از تمامی فرمت های فایل پشتیبانی میکند.ویژگی های برنامه openshot1.ویرایش ویدئو و تصویر چند لایه ای 2.پشتیبانی از ویدیوهای 4k3.رابط کاربری ساده4. موجود بودن منابع عالی برای یادگیری5.ساده در ادیت ویدیوهای کوتاه6.پشتیبانی از طیف بسیار بزگی از انواع کارت گرافیک و حتی رزبری پای!!!7.پشتیبانی از متن فارسیمشکلات برنامه openshotرابط کاربری کمی قدیمیسرعت نسبتا کم در رندر ویدیو با کیفیت 4kتصویر برنامهنصب در لینوکس (اوبونتو)sudo apt install openshot3.shotcutآخرین برنامه پارت اول این نوشته shotcut هست که خیلی شبه adobe premier pro هست اما هنوز به پای محصولات شرکت ادوبی نمیرسد! (معلومه خب که هیچی نمیرسه??)این برنامه از برنامه های قبلی کمی پیشرفته تر هست که باعث میشه اگر در ادیت فیلم حرفه ای باشیم ادیت های خیلی خوب و حرفه ای انجام بدیم!ویژگی های برنامه shotcut1.ویرایش ویدئو و تصویر چند لایه ای 2.پشتیبانی از ویدیوهای 4k3.رابط کاربری ساده4. موجود بودن منابع عالی برای یادگیری5.ساده در ادیت ویدیوهای کوتاهمشکلات برنامه shotcutباگ (اما نه خیلی زیاد!)تصویر برنامهنصب در لینوکس از طریق فروشگاه برنامه خود لینوکس</description>
                <category>تمشک</category>
                <author>Mohammad Mahdi Mohammadi</author>
                <pubDate>Sun, 03 Oct 2021 18:25:56 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(4): برنامه اعداد فیثاغورسی در پایتون</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D9%81%DB%8C%D8%AB%D8%A7%D8%BA%D9%88%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-erjzof59d6wr</link>
                <description>نوشتن برنامه‌ی کاربردی با پایتونبرای آشنایی بیشتر با اعداد فیثاغورسی، ابتدا با یک برنامه‌ی ساده شروع می‌کنیم:برنامه‌ای بنویسید که سه عدد صحیح از کاربر بگیرد، و اگر امکان ساخت یک مثلث قائم‌الزاویه با اضلاع داده شده، وجود داشته باشد، در خروجی &quot;Yes&quot; و در غیر این صورت &quot;No&quot; را چاپ کنید.طبق روال اغلب برنامه‌ها‌، باید از کاربر ورودی بگیریم.برای حل این سوال، در ادامه به رابطه‌ی اضلاع و وتر مثلث قائم‌الزاویه و مفهوم اعداد فیثاغورسی می‌پردازیم.اعداد فیثاغورسی چیست؟قضیه فیثاغورس می‌گوید که در مثلث راست‌گوشه (قائم‌الزاویه) همیشه مجموع مربع دو ضلع، برابر با مربع وتر است.  یعنی اگر a و b اضلاع دو ضلع مثلث راست‌گوشه و c وتر آن باشد، این رابطه برقرار است:a2 + b2 = c2بر همین اساس، اگر ما سه عدد داشته باشیم که رابطه‌ی بالا برای آن سه عدد برقرار باشد (یعنی مربع یکی از آنها برابر مجموع مربع دو عدد دیگر باشد) به این اعداد، سه‌تایی فیثاغورسی یا اعداد فیثاغورسی می‌گویند.الگوریتم برنامه اعداد فیثاغورسی در پایتون:سه عدد a و b و c را از کاربر بگیر.اگر a2 = b2 + c2 یا b2 = a2 + c2 یا c2 = a2 + b2  باشد، پیام “Yes” را چاپ کن و به گام 4 برو.پیام “No” را چاپ کن.به اجرای الگوریتم پایان بده.نوشتن کد برنامه اعداد فیثاغورسی در پایتون:ابتدا با استفاده از دستور input ، سه ورودی عدد صحیح از کاربر دریافت می‌کنیم. به این صورت:a = int(input(&amp;quotplease Enter Number1: &amp;quot))
b = int(input(&amp;quotplease Enter Number2: &amp;quot))
c = int(input(&amp;quotplease Enter Number3: &amp;quot))سپس با استفاده از یک if، بررسی می‌کنیم که آیا مربع هر کدام از اعداد با مجموع مربع دو عدد دیگر برابر است یا نه. اگر شرط برقرار بود، پیام “Yes” و در غیر این‌صورت پیام “No” را چاپ می‌کنیم. به این صورت:if a*a == b*b + c*c or b*b == c*c + a*a or c*c == a*a + b*b:
    print(&amp;quotYes&amp;quot)

else:
    print(&amp;quotNo&amp;quot)ما می‌توانیم هر یک از شروط را  با دستور elif جداگانه بررسی کنیم. برای مثال:if a*a == b*b + c*c: 
    print(&amp;quotYes&amp;quot)
elif b*b == c*c + a*a :
    print(&amp;quotYes&amp;quot)
elif c*c == a*a + b*b:
    print(&amp;quotYes&amp;quot)
else:
    print(&amp;quotNo&amp;quot)اما این روش کد ما را شلوغ و ناخوانا می‌کند، لذا روش اول را انتخاب می‌کنیم. کد یکجای برنامه را در زیر ببینید:a = int(input(&amp;quotplease Enter Number1: &amp;quot))
b = int(input(&amp;quotplease Enter Number2: &amp;quot))
c = int(input(&amp;quotplease Enter Number3: &amp;quot))

if a*a == b*b + c*c or b*b == c*c + a*a or c*c == a*a + b*b:
    print(&amp;quotYes&amp;quot)

else:
    print(&amp;quotNo&amp;quot)گسترش دادن برنامه اعداد فیثاغورسی در پایتون:برنامه‌ای بنویسید که اعداد فیثاغورسی کمتر از 100 را چاپ کند.به دو فرمول زیر دقت کنید:a2 + b2 = c2(m2 - n2)2 + (2mn)2 = (m2 + n2)2در فرمول دوم، عبارات داخل پرانتز معادل هر یک از حروف a و b و c در فرمول اول هستند، پس فقط با داشتن دو عدد خواهیم توانست بی‌نهایت اعداد فیثاغورسی بسازیم. برای مثال اگر m=3 و n=2 قرار دهیم، سه تایی 5 و 12 و 13 به دست می‌آید. اکنون از همین فرمول استفاده کرده و برنامه‌ی خواسته شده را می‌نویسیم.الگوریتم اول برنامه اعداد فیثاغورسی در پایتونمقدار 0 را در c قرار بده.مقدار 2 را در m قرار بده.مقدار 100 را در limits قرار بده.در ازای مقادیر n از 1 تا m و افزایش یک واحد پس از اجرای حلقه، گام‌های 5 تا 9 را تکرار و اجرا کن.حاصل تفریق m به توان 2 از n به توان 2 را در a قرار بده.حاصل 2 * m * n را در b قرار بده.حاصل جمع m به توان 2 با n به توان 2 را در c قرار بده.اگر c بزرگتر از limits است، از حلقه خارج شو.مقادیر a و b و c را چاپ کن.یک واحد به m اضافه کن و در m قرار بده.اگر c کوچکتر از limits است، به گام 4 برگرد.به اجرای الگوریتم خاتمه بده.نوشتن کد برنامه اعداد فیثاغورسی در پایتون:ابتدا سه متغیر c و m و limits را تعریف کرده و مقداردهی می‌کنیم. به این صورت:c, m , limits = 0, 2, 100سپس یک حلقه‌ی تکرار while می‌نویسیم که تا هنگامی که c کوچکتر از limits است، اجرا می‌شود. در داخل حلقه نیز حلقه‌ی for می‌نویسیم که از 1 تا m تکرار می‌شود. در انتها، یک واحد به m اضافه می‌کنیم. به این صورت:while c &lt; limits:
    for n in range(1, m):
        pass

    m = m + 1در حلقه‌ی for بالا، مقادیر a و b و c را از رابطه‌هایی که در فرمول بود، به دست می‌آوریم. به این صورت:a = m * m - n * n
b = 2 * m * n
c = m * m + n * nدر ادامه با یک شرط بررسی می‌کنیم که اگر c بزرگتر از limits باشد، با استفاده از دستور break از حلقه خارج شویم. به این صورت:if c &gt; limits:
    breakدر انتهای حلقه‌ی داخلی for ، مقادیر a و b و c را چاپ می‌کنیم.print(a, b, c)با استفاده از فرمولی که داشتیم، ما توانستیم برنامه‌ای بنویسیم که اعداد‌ فیثاغورسی کمتر از 100 را چاپ کند. کد یکجای برنامه را در زیر می‌بینید:c, m , limits = 0, 2, 100

# Limiting c would limit
# all a, b and c
while c &lt; limits :
    # Now loop on n from 1 to m-1
    for n in range(1, m) :
        a = m * m - n * n
        b = 2 * m * n
        c = m * m + n * n

        # if c is greater than
        # limit then break it
        if c &gt; limits :
            break

        print(a, b, c)

    m = m+1الگویتم دوم برنامه اعداد فیثاغورسی در پایتوندر الگوریتم اول تعداد زیادی از اعداد فیثاغورسی، محاسبه و چاپ نمی‌شوند. در ادامه الگوریتمی را بررسی می‌کنیم که تعداد بیشتری از سه‌تایی‌های فیثاغورسی را چاپ می‌کند.مقدار 100 را در limits قرار بده.در ازای مقادیر a از 1 تا limits و افزایش یک واحد پس از اجرا حلقه، گام‌های 3 تا 8 را تکرار و اجرا کن.یکی به a اضافه کن و در b قرار بده.یکی به b اضافه کن و در c قرار بده.تا وقتی c به توان 2 کوچکتر از حاصل جمع a به توان 2 با b به توان 2 است، یک واحد به c اضافه کن و در c قرار بده.اگر حاصل جمع a به توان 2 با b به توان 2 برابر با c به توان 2 است و c کوچکتر مساوی limits است، مقادیر a و b و c را چاپ کن.یکی به b اضافه کن و در b قرار بده.اگر c کوچکتر مساوی limits است، به گام 3 برگرد.به اجرای الگوریتم خاتمه بده.نوشتن کد برنامه اعداد فیثاغورسی در پایتون:نخست متغیر limits را تعریف کرده و مقدار 100 را به آن اختصاص می‌دهیم. این متغیر محدوده‌ی اعدادی که باید به دست بیاوریم را مشخص می‌کند.limits = 100سپس با یک حلقه‌ی تکرار for  ، که از یک تا limits را پیمایش می‌کند، کار را ادامه می‌دهیم. در حلقه ابتدا دو متغیر b و c را تعریف کرده و به صورت زیر مقداردهی می‌کنیم.for a in range(1, limits):
    b = a+1
    c = b+1در ادامه‌ی حلقه‌ی for، یک حلقه‌ی تکرار while می‌نویسیم که تا وقتی c کوچکتر مساوی limits است، تکرار و اجرا ‌شود. در حلقه‌ی while نیز یک حلقه‌ی while دیگر نوشته، که تا هنگامی که c*c کوچکتر از a*a + b*b است، یک واحد به c اضافه ‌کند. به این صورت:while c&lt;=limits:
    while c*c &lt; a*a + b*b :
        c = c+1
    passبه جای pass، در کد بالا با استفاده از یک if بررسی کرده اگر c کوچکتر مساوی limits و مربع c مساوی مجموع مربع a و b باشد، مقادیر a و b و c را چاپ می‌کنیم. در انتها نیز b را با یک جمع کرده و در خود b می‎‌ریزیم. به این صورت:if c*c == a*a + b*b and c&lt;=limits:
    print(a, b, c) 
    b = b+1اکنون کار کدنویسی این برنامه به پایان می‌رسد. این کد به نسبت بهینه‌شده است و از سرعت اجرای خوبی برخوردار است. کد یکجای این الگوریتم را در زیر ببینید:limits = 100

for a in range(1, limits):
    b = a+1
    c = b+1
    while c&lt;=limits:
        while c*c &lt; a*a + b*b :
            c = c+1
        if c*c == a*a + b*b and c&lt;=limits:
            print(a, b, c)   

        b = b+1جمع بندی:اغلب مسایل از راه‌های متفاوت و بسیاری حل می‌شوند، اما این به برنامه‌نویس بر می‌گردد که کدام راه‌حل را انتخاب کند. برنامه‌نویس می‌تواند بعد از هر کدی که می‌نویسد، با جستجو در اینترنت، با روش‌های دیگر نوشتن همان کد آشنا شود. این‌گونه خلاقیت و قدرت تفکر او پرورش می‌یابد و به این طریق در مسایل دیگر، از قدرت تفکر و تجربه‌ی بالاتری برخوردار خواهد بود.ما در این مقاله، سعی کردیم شما را با برنامه اعداد فیثاغورسی در پایتون آشنا کنیم. به طور قطع راه‌حل‌های دیگری نیز وجود دارد، که برخی بهینه‌شده و برخی دیگر نیستند.خوب جلسه ی چهارم آموزش ها و ترفند های پایتونی تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشید...راستی !آموزش جنگو هم توی ویرگول تمشک قرار میگیره ، پس اگر دوست داشتید دنبالش کنید...تا جلسه ی بعد خدانگهدار ????دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.© تمشک</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 02 Oct 2021 15:50:05 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش جنگو: نصب جنگو ( قسمت دوم )</title>
                <link>https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D9%86%DA%AF%D9%88-%D9%86%D8%B5%D8%A8-%D8%AC%D9%86%DA%AF%D9%88-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-cplhrkppxiwn</link>
                <description>ســـــــلــــــامــــــــــاول از هرچیز اگه قسمت قبل رو ندیدید حتما ببینید: https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D9%86%DA%AF%D9%88-%D8%AC%D9%86%DA%AF%D9%88-%DA%86%DB%8C%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%DB%8C%DA%A9-drepxvokw6fs توی پست قبلی گفتم که جنگو چیه قضیه این آموزش چیه و چیکار می خوایم بکنیمپس بدون بحث اضافی شروع می کنیم ;)چیزایی که جنگو نیاز دارهبه احتمال خیلی زیاد(99.99999999999999999%) می دونید که جنگو با پایتون نوشته شده پس به پایتون هم نیاز دارهجز این واقعا هیچ پیش نیازی نمیشه واسه نصب جنگو تعریف کردنصبکافیه این کامند رو توی هر سیستم عاملی که هستین بزنین:#in windows
python -m pip install django
#in linux and mac
python3 -m install djangoحالا باید تست کنیم ببینیم نصب شده یا نه:#in windows
python -m django --version 
#in linux and mac
python3 -m django --versionکه اگه این خروجی رو دیدید یعنی جنگو درست نصب شده:این آخرین ورژن  تو این تاریخه برای شما ممکنه متفاوت باشهتموم شد :)به قول عزیزی ایزی پیزی لمون اسکوییزی :)یه مرحله مونده!معمولا توصیه میشه و بهتره که پروژه های جنگو داخل یه Virtual environment ران بشن تا تنظیمات روی بقیه پروژه های اثر نذاره و بعضی چیزای دیگه هم قاطی نشن(مگه اینکه خودتون لازم داشته باشید اینطوری بشه)پس به ماژول virtualenv هم نیاز داریم که توی نسخه های جدید (تا جایی که من خبر دارم از 3.8 به بعد) دیفالت نصبهو می تونید برای مطمئن شدن از این موضوع این کامند رو بزنین:python -m venv orpython3 -m venv اگه این خروجی رو دیدید virtualenv هم نصبه:کار تموم شده دیگه ?توی پست بعد میریم سراغ ساختن اولین پروژه و بررسی ساختارهاش =}حالا که تا اینجا اومدید :حتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?© منابع : تمشک </description>
                <category>تمشک</category>
                <author>Nima Ghasemi</author>
                <pubDate>Fri, 01 Oct 2021 16:05:46 +0330</pubDate>
            </item>
                    <item>
                <title>بی منطقی های جاواسکریپت</title>
                <link>https://virgool.io/TameshkGroup/%D8%A8%DB%8C-%D9%85%D9%86%D8%B7%D9%82%DB%8C-%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-jlrdrsjc8vpl</link>
                <description>جاواسکریپت زبان معروفیه و همیشه جزو زبان های پر استفاده قرار میگیرهولی خب منتقدان زیادی داره و بی منطقی های زیادیبعضیاش باعث میشه مغزتون سوت بکشهخب یه لیست خیلی طولانی از این موضوع هست به اسم wtf.js که میتونید توی این ریپوی گیتهاب ببینیدچند تاش خیلی جالب بود گفتم با هم ببینیم۱. درست همان اشتباه است !ببینید برعکس برعکس یه چیزی باید بشه خودش تا اینجا قبول ؟خب توی برنامه نویسی ! یعنی برعکس و !! یعنی برعکس برعکسبرعکس برعکس درست میشه درستولی برعکس برعکس اشتباه هم میشه درست !!&amp;quotfalse&amp;quot == !!&amp;quottrue&amp;quot // -&gt; true
!!&amp;quotfalse&amp;quot === !!&amp;quottrue&amp;quot // -&gt; trueدیگه حرفی نیست ...۲. یک آرایه خالی مساوی برعکس یک آرایه خالیستقبلی قبوله آقابرعکس یه چیزی آیا میشه خودش ؟ ( یکی نیاد بگه مثلا کیک ، حروف رو نمیگم درست و اشتباه بودن و بولین رو میگم )ولی توی جاواسکریپت میشه [] == ![]; // -&gt; trueعالی اصلا ( به رو خودتون نیارید عصبی شدم :/ )۳. یک چیز مساوی خودش نیستتتت :///////تست کنیداز javascript هاتون بخواهید براتون تست کنه آیا NaN مساوی NaN هست یا نهNaN === NaN; // -&gt; false۴. موز&amp;quotb&amp;quot + &amp;quota&amp;quot + +&amp;quota&amp;quot + &amp;quota&amp;quot // -&gt; &#039;baNaNa&#039;فکر کنید دو تا مثبت NaN بدههمینقدر مسخرهیه نمونه دیگه :&amp;quotfoo&amp;quot + +&amp;quotbar&amp;quot // -&gt; &#039;fooNaN&#039;به قول معروف : wtfjs ?۵. یک آرایه خالی درست نیست ولی درست است!![]       // -&gt; true
[] == true // -&gt; falseببینید یک ارایه خالی فالس میدهولی برعکس برعکسش درستهیا فالسه و مثل فالس برعکس برعکس درست میشه یا درسته ولی توی حالت عادی نمایش داده نمیشه۶. کوچیکترین عدد ممکن از صفر بزرگتر استNumber.MIN_VALUE &gt; 0; // -&gt; trueخب یکی توی استک اور فلو پرسیده اگر حوصله تون میکشه از این لینک بخونیدخلاصه بگم کوچیکترین عدد میشه 5e-324۷. یکی از تابع ها بده !parseInt(&amp;quotf*ck&amp;quot); // -&gt; NaN
parseInt(&amp;quotf*ck&amp;quot, 16); // -&gt; 15 نکته که این مثال من نیست مثال wtfjs میباشددلیلش هم اینه توی هگزا دسیمال f میشه ۱۵۸. ریاضیات با درست و اشتباهاگر بدونید ترو میشه ۱ و فالس ۰بیایید با این عددا ریاضی انجام بدیمtrue + true; // -&gt; 2
(true + true) * (true + true) - true; // -&gt; 3ما با درست و اشتباه ریاضی حل کردیم هورادلیلش : Number(true); // -&gt; 1۹. آرایه خالی و هیچی شی هستند !typeof []; // -&gt; &#039;object&#039;
typeof null; // -&gt; &#039;object&#039;
null instanceof Object; // falseخب null یه شیئه و ارایه خالی هم یه شئ (  OBJEC ) عه ، مشکل چیه ؟کلا تایپآف یه سری قاط داره که خیلی از بی منطقی های جاواسکریپت توی typeof میباشدلینک اکما اسکریپت درباره typeof : کلیک۱۰. اعداد اعشاری0.1 + 0.2; // -&gt; 0.30000000000000004
0.1 + 0.2 === 0.3; // -&gt; falseبله دیگرمشکلات محاسبات ریاضیتوی خیلی از زبان ها البته این شکلیحتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?© منابع : تمشک ، wtfjs</description>
                <category>تمشک</category>
                <author>پیدا شد !</author>
                <pubDate>Wed, 29 Sep 2021 21:09:40 +0330</pubDate>
            </item>
                    <item>
                <title>گراف‌ها!</title>
                <link>https://virgool.io/TameshkGroup/%DA%AF%D8%B1%D8%A7%D9%81-%D9%87%D8%A7-ideriqz6me1s</link>
                <description>سلام. بعد از مدت کمی ناپیدایی، امرز به علل اجباری می‌خواهم در این پست گراف‌ها را توضیح بدهم!اول از همه ببینیم این گراف یا به انگلیسی Graph که می‌گوید چیست؟برای درک کردن گراف، کافی هست شکل زیر را به شما نشان دهم:گرافکاربردحالا که فهمیدیم گراف چیست، می‌خواهم کاربردهایش را بگوم.گراف‌ها برای مدل کردن روابط و پردازش‌ها در بسیاری از مسائل علومی مانند فیزیک، زیست‌شناسی و حتی زندگی روزمره به کار می‌روند.برای مثال شما می‌توانید کامپیوترهای متصل به یک شبکه را با گراف‌ها نمایش دهید.کاربردهای بی‌انتهای گراف‌ها را می‌توانید از لینک زیر مشاهده کنید...https://en.wikipedia.org/wiki/Graph_theory#Applications(لینک بالا به علت مشکل ویرگول هست، مشکل اصلا از من نیست!)گراف‌هادر این بخش از متن، قرار هست کمی راجع به گراف‌ها یاد بگیریم!در گراف‌ها ما دارای vertex (گاها point یا node) هستیم که معمولا vertices (جمع) نوشته می‌شوند!این نودها در عکس بالا به شکل یک دایره‌ی سفید که وسط آن‌ها یک عدد هست وجود دارند.علاوه بر vertices، گراف‌ها دارای edge هم هستند که با نام‌های link, line, arc هم شناخته می‌شوند.الان باید راجع به یک چیز دیگر با هم حرف بزنیم تا بتوانم یکی از نکات مهم درباره‌ی edgeهای گراف را بگوم:جهت‌دار با بی‌جهتگراف‌ها را می‌توان در دو دسته‌ی directed یا جهت دار و بی‌جهت یا undirected تقسیم کرد.گرافی که در بالا دیدید بی‌جهت یا undirected هست زیرا یال (6,4) با یال (4,6) برابر هست.اما اگر به گراف شماره‌ی b نگاه کنید، متوجه خواهید شد که این رابطه یک‌طرفه و جهت دار هست، بنابراین گراف b یک گراف directed هست!نکته‌ی مهم راجع به edgeها این بود که:در یک گراف جهت‌دار، (a,b) برابر با (b,a) نیست در حالی که در یک گراف بی‌جهت، (a,b) و (b,a) با هم برابرند.دو راه عمده برای پیاده‌سازی گراف‌ها هست:لیست‌های مجاور (adjacency list)ماتریس‌های مجاور (adjacency matrix)البته، مطمئنا می‌توان با روش‌های دیگر هم گراف‌ها را پیاده‌سازی کرد. و روش پیاده‌سازی بستگی به عملیات‌هایی که می‌خواهید روی گراف انجام بدهید دارد.در این پست فقط راه‌حل ماتریکس مجاور را بررسی می‌کنیم. (به علت سادگی بالا!)ماتریکس مجاور(ببخشید که تخت الفظی هست)در این روش ما یک آرایه دو بُعدی با سایز V x V داریم که V برابر با تعداد راس‌های گراف هست.در این روش ما اطلاعات را در یک آرایه می‌گذاریم که arr[i][j] نشان می‌دهد این گراف، دارای یک edge ازش i به j هست که دارای value یا weightای برابر با مقداری که در مکان arr[i][j] قرار دارد.شما نمی‌توانید با این روش، گراف‌های جهت‌دار را پیاده‌سازی کنید!برای درک بهتر :)مزایااین روش برای پیاده‌سازی راحت هستبرداشتن یک edge فقط O(1) زمان می‌برد.معایتحتی اگر تمام vertexها خالی باشند، باز هم V^2 تا حافظه اشغال می‌کند!اضافه کردن یک یال نیاز به O(V^2) زمان دارد.پیاده‌سازیبرای دیدن پیاده‌سازی، این لینک را توصیه می‌کنم. با پایتون.دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.© منبع : تمشک، geeksforgeeks.org</description>
                <category>تمشک</category>
                <author>pooia</author>
                <pubDate>Mon, 27 Sep 2021 15:03:56 +0330</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی(3): از دم کردن چایی تا عوض کردن بکگراند با پایتون!</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C3-%D8%A7%D8%B2-%D8%AF%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%DA%86%D8%A7%DB%8C%DB%8C-%D8%AA%D8%A7-%D8%B9%D9%88%D8%B6-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%DA%A9%DA%AF%D8%B1%D8%A7%D9%86%D8%AF-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-ornpj881yif3</link>
                <description>دم کردن چایی با پایتونسلام... امیدوارم که حالتون عالی باشه. توی این پست میخوایم یه کار فان دیگه با پایتون انجام بدیم و اونم عوض کردن والپیپر هستش! پس عنوان چی میگه اینجا؟!؟! اینو گذاشتم برای اینکه با قابلیت هایی که پایتون داره و روز به روز داره بیشترم میشه اگه فردا روزی اینو توی یه پست واقعی دیدین تعجب نکنید D:خب بریم سراغ پست امروزه برای این کار ما میخوایم از کتابخونه ctypes استفاده کنیم. این کتابخونه به ما این اجازه رو میده که تا حدودی بتونیم به زبان سی توی پایتون برنامه نویسی کنیم! خب این کار چه فایده ای داره؟! این کار به ما این اجازه رو میده که بتونیم به dll های سیستم عامل دسترسی داشته باشیم...! و هر کاری دلمون خواست بکنیم! یکی از این کارا رو قراره توی این پست ببینیم. پس بزن بریم...فقط دو خط...!نوشتن این برنامه فقط دو خط وقتتو میگیره. توی اولی کتابخونه رو ایمپورت کنimport ctypesحالا هم دستور تغییر دادن والپیپر رو بنویس:ctypes.windll.user32.SystemParametersInfoW( 20, 0, r” address ax&amp;quot, 0)یادت نره که آدرسعکس رو کامل بنویسی مثلا:C:\Users\MrRobot\Desktop\pics\image.jpgنکته: اون ۲ پشت &quot; ها به خاطر اینه که پایتون چیزایه داخل &quot;&quot; رو به عنوان دایرکتوری بشناسه...!همین...!همین! به محض اینکه این برنامه اجرا بشه والپیپر به اون چیزی که توی آدرس دادین تغییر پیدا میکنه. این کتابخونه ctypes خیلی چیز خفنيه! حتما برین راجبش بخونید و ببینید دیگه چه کارایی میشه کرد؟راستی ایده هاتون برای به کار بردن این برنامه توی پروژه هاتونم برام کامنت کنید!لایک و سیو و شير و اینام دیگه یادتون نره..!خوب جلسه ی سوم آموزشها و ترفند های پایتونی از تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشیدراستی !آموزش جنگو هم توی انتشارات ویرگول تمشک قرار میگیره ، پس اگر دوست داشتید دنبالش کنیدتا جلسه ی بعد خدانگهدار ????دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 25 Sep 2021 09:51:26 +0330</pubDate>
            </item>
                    <item>
                <title>مرورگر های عجیب و جالب</title>
                <link>https://virgool.io/TameshkGroup/browsers-jm8jwslp7atk</link>
                <description>یه سری مرورگر ها هستن که صرفا یه کروم خالی نیستن ، یه سری ویژگی خاص دارن و یه تفاوت کوچیکالبته کاربر های کمتری هم دارنامروز قراره با ده تا از این مرورگر ها آشنا بشیمBraveبریو یه مرورگر متن باز و کرومیوم بیسه . جالبه بدونید مدیر اجرایی بریو سافتور ، خالق جاواسکریپت و یکی از بنیان گذاران پروژه موزیلا بوده . این مرورگر برای سیستم عامل های ویندوز ، لینوکس و مک روی دسکتاپ و iOS و Android روی موبایل در دسترسهویژگی اصلی این مرورگر بلاک کردن تبلیغات و جلوگیری از رد یابی شما توسط سایت های مختلف هستلینک گوگل پلی - سایت رسمیGhostیک مرورگر کرومیوم بیس که الان توی مرحله بتا قرار دارهفرق ghost که دلیل شما برای استفاده ازش هم میتونه باشه اینه که از cookie-jars استفاده می کنه باعث میشه بتونید به صورت مولتی سشن به وب دسترسی پیدا کنیداین قابلیت به شما اجازه میده گروه هایی از تب های مختلف داشته باشید که هر کدوم میتونن رنگ ، اسم و کوکی های مجزایی داشته باشنسایت رسمیUlliاین مرورگر تنها روی موبایل در دسترسه که هوش مصنوعی یا همون Artificial Intelligence داخلی دارهبه عنوان مثال میتونید بعد از دیدن تریلر یه فیلم به سایت های رزرو تیکت برید و بدون تایپ کردن بلیط سینمای اون فیلمو بگیرید ، هوش مصنوعی از لینک قبلی شما تشخیص میده که دنبال تیکت چه فیلمی هستیدلینک اپ استورLynxلینکز ، یک مرورگر بر اساس متن هست که توی ترمینال کاربرد داره ، میتونید توی ترمینال صفحات وب رو ببینیدالبته تذکر بدم که استایل ها به خوبی توی این مرورگر لود نمیشن . شما توی لینکز میتونید با arrow key ها جای ماوس رو پر کنید ولی نه عکسی ، نه ویدیویی ، نه جاواسکریپتی ، نه کوکی ، و تقریبا هیچی برای شما در دسترس نیستتقریبا با لینکز به متن خام اون صفحه وب دسترسی پیدا می کنیدسایت رسمیLionاین مرورگر در حال حاضر فقط روی ios و اندروید فعاله ، اگر یک مرورگر مسئولیت پذیر نیاز دارید این مرورگر رو بهتون پیشنهاد می کنمشما میتوانید لیستی از افراد درست کنید که از سایت های مشخصی که بازدید می کنید مطلع خواهند شد (چقدر رسمی شد !)پاتریک آدامز ، عضو تیم توسعه این مرورگر ، میگه مرورگر lion بهترین راه برای کنترل کردن عادت های دیدن سایت های مشخصیهلینک گوگل پلی - لینک اپ استورMinبازگشت به مرورگر های ساده ، یک مرورگر ساده متن باز با ظاهری ساده و با قابلیت های داخلی به درد بخوریه که تابع هایی برای سرچ ، مدیریت تب ها و بلاک کننده تبلیغات داخلی تنها بخشی از آن استاین مروگر از فریمورک جاواسکریپت electron استفاده کردهسایت رسمیMaelstromیک مرورگر کرومیوم بیس که بر اساس تورنت کار می کنهبه این معنا نیست که شما نمیتوانید سایت هایی که از پروتوکل https استفاده می کنه رو باز کنید ، اضافه بر این قابلیت می تونید ولی میتونید تورنت رو نمایش بدید و فایل های تورنت دانلود کنید !Lunascapeبا موتوری که دوست دارید صفحه ها رو رندر کنیداین مرورگر در سال ۲۰۰۱ تاسیس شدکاربر می تواند بین موتور های رندر Gecko ( موتور رندر فایرفاکس ) ، Trident ( استفاده شده در نسخه های قدیمی IE ) و Webkit ( استفاده شده در Safari ) انتخاب کنندسایت رسمیBlisk Browserمرورگر رایگان مبتنی بر کرومیوم که برای برنامه نویس های وب ساخته شدهاین مرورگر سایز هایی از مرورگر های مختلف و گوشی های مختلف برای تست ریسپانسیو بودن وب سایت شما از قبل نصب دارد !همچنین این مرورگر دولپر فرندلی ، دارای ابزار های داخلی توسعه وب هم هستسایت رسمیVivaldiیک مرورگر رایگان مبتنی بر کرومیوم که قابلیت شخصی سازی بالایی داره و میتونه جایگزین خوبی برای اوپرا یا کروم باشهاز جمله قابلیت های این مرورگر : گروه کرد تب ها ، نگهداری note به صورت ساده ، تم های خاص و تغییر پذیر و راه های بسیار زیادی برای شخصی سازی محیط کاربریلینک گوگل پلی - لینک اپ استور - سایت رسمیحتما یوتیوب رو ساب کنید و اینستاگرام هم دنبال کنید که آموزشای باحالی تو راهن?کد های آموزش هارو هم می تونید توی گیت هاب تمشک پیدا کنیدراستی اگه دیسکورد دارین حتما تو سرور دیسکورد هم جوین بشید که برنامه ها داریم!اگه این پست رو دوست داشتین لایک، کامنت و دنبال کردن انتشارات یادتون نره?© منابع : تمشک ، مدیوم</description>
                <category>تمشک</category>
                <author>پیدا شد !</author>
                <pubDate>Tue, 21 Sep 2021 18:29:27 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش دستورات کاربردی CMD ویندوز (قسمت سوم: دستورات فان)</title>
                <link>https://virgool.io/TameshkGroup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-cmd-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D9%81%D8%A7%D9%86-vgeen7u8pvdu</link>
                <description>در جلسه ی دوم بیشتر با cmd آشنا شدیم و متوجه شدیم که چه کارهایی انجام می ده و تقریبا باید متوجه شده باشید چرا بهش خط فرمان ویندوز گفته میشه، در این جلسه میخوایم با کمک cmd و نوت پد ساده ویندوز برنامه های فان و سرگرم کننده بسازیم و چند دستور دیگه رو با هم یاد بگیریم ، پس با تمشک همراه باشید...فیلم جنگ ستارگان !یک دستور خیلی فان و جالب در cmd وجود داره به نام جنگ ستارگان که با زدن دستورش فیلم جنگ ستارگان رو داخل cmd تماشا میکنید ، در ابتدا وارد کنترل پنل بشید وارد program and features بشید در سمت چپ روی  turn windows features on or off کلیک کنید و Telent client رو فعال کنید ، حالا روی OK کلیک کنید .بعد انجام این کار وارد cmd شده و دستور زیر رو وارد کنید :telnet towel.blinkenlights.nl.اینتر رو بزنید و جنگ ستارگان رو توی cmd تماشا کنید :)ساخت برنامه ساعت با cmd و نوت پدحالا میخوایم با هم یک برنامه ای درست کنیم که ساعت رو دقیق نمایش بده ، برای این کار یک فایل نوت پد خالی بسازید ، اسمش هم هر چیزی میتونید بزارید ، مثلا ما میزاریم clock :حالا نوت پد رو باز کنید و کدهای زیر رو تو بنویسید :@echo off:startecho date: %date%time:%time%goto startبعد از انجام این کار از منوی فایل برنامه روی save as کلیک کنید و برنامه شما که اسمش clock.txt رو به clock.bat تغییر بدید و در مثلا دسکتاپ دوباره سیوش کنید حالا فایل clock.bat رو اجرا کنید ساعت دقیق با حتی صدم ثانیه به شما نمایش داده میشه :خوب جلسه ی سوم آموزش CMD ویندوز تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشیدراستی !آموزش دستورات ترمینال لینوکسی هم توی یوتیوب تمشک قرار میگیره ، پس اگر دوست داشتید دنبالش کنیدتا جلسه ی بعد خدانگهدار ????دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.©  تمشک</description>
                <category>تمشک</category>
                <author> AV </author>
                <pubDate>Mon, 20 Sep 2021 15:30:30 +0430</pubDate>
            </item>
                    <item>
                <title>مجموعه آموزش ها و ترفند های پایتونی: از فرستادن پیام واتساپ تا کشیدن عکس اسکی!!</title>
                <link>https://virgool.io/TameshkGroup/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C-%D8%A7%D8%B2-%D9%81%D8%B1%D8%B3%D8%AA%D8%A7%D8%AF%D9%86-%D9%BE%DB%8C%D8%A7%D9%85-%D9%88%D8%A7%D8%AA%D8%B3%D8%A7%D9%BE-%D8%AA%D8%A7-%DA%A9%D8%B4%DB%8C%D8%AF%D9%86-%D8%B9%DA%A9%D8%B3-%D8%A7%D8%B3%DA%A9%DB%8C-ffvmhk9hkppb</link>
                <description>سلامامیدوارم که حالتون عالی باشه...توی این پست میخوام یه کتابخونه بهتون معرفی کنم که چندتا کار جالب میشه باهاش کرد! و این کار ها اصلاااا به هم ربطی ندارن! ولی چون باحال بود گفتم معرفیش کنم!امیدوارم که ازش لذت ببرید.قبل از اینکه ادامه آموزش رو بخونید اول با دستور زیر این کتابخونه رو نصب کنید:pip install pywhatkitاینم لینکش تو pypi: https://pypi.org/project/pywhatkit/ خب... نصب شد؟! برو مرحله بعدی :)پیام واتساپ بفرست کتابخونه گل...!خب به عنوان میشه با این کتابخونه پیام واتساپ فرستاد. فقط باید واتس‌اپ نسخه وب توی سیتم تون لوگین شده باشه(ترجیحا توی مرورگر کروم یا مرورگر پیشفرض(یا هر دوتاش، به هر حال کار از محکم کاری عیب نمیکنه?))بعدش باید برنامه شو بنویسیم:import pywhatkit as kit
kit.sendwhatmsg(&amp;quot+98(phone number)&amp;quot, &amp;quotpm&amp;quot, hour, min)خب؛ همه چیز سادس و نیازی به توضیح نداره ولی اینم یه مثال:#Code By TameshkTeam
import pywhatkit
pywhatkit.sendwhatmsg(&amp;quot+98xxxxxxxxxx&amp;quot,&amp;quotHello&amp;quot,22, 28)
print(&amp;quotSuccessfully Sent!&amp;quot)سرچ میکنی برام...؟!میشه با این کتابخونه سرچ کرد! فقط کافیه بنویسید:import pywhatkit as kit
kit .search(&amp;quottopic&amp;quot)و بعدش به جای topic اون چیزی که میخواید رو بنویسید!تبدیل عکس به عکس متنی...!اگه هنوز به قدرت این کتابخونه ایمان نیووردید باید بدونید که میشه یه عکسی به این کتابخونه بدی و اون عکس رو با کاراکتر های ASCII برات توی یه فایل txt بکشه:import pywhatkit as kit
kit.image_to_ascii_art(&amp;quot1.jpg&amp;quot , &amp;quot1.txt&amp;quot)اینجا ما یه عکس به اسم 1.jpg گذاشتیم کنار فایل برنامه و کتابخانه اون رو برای ما با کاراکترای اسکی توی یه فایل تکست  میکشه(با نام 1.txt )تبدیل متن به دست خط...!خببب! خفن ترین کارشم آخر متن گذاشتم تا مخصوص اونایی باشه که تا آخر با من همراهن! با این کتابخونه میشه یه متن به برنامه بدی و اون رو به شکل دست خط در بیاره توی عکس، حالا درسته دست خطش خوب نیست ولی معرفیش خالی از لطف نیست :/import pywhatkit as kit
kit.text_to_handwriting(&amp;quotmatn&amp;quot ,rgb=(0,0,225))اون عدد های 0 و 0 و 225 اگه نمیدونید کد رنگ آبی هستش. میتونید عددها رو جا به جا کنید (بین 0 تا 225) و رنگ های مختلفی رو تست کنید.لایک یادتون نره، نظرتون رو هم بنویسید ❤❤دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.</description>
                <category>تمشک</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 18 Sep 2021 09:49:54 +0430</pubDate>
            </item>
            </channel>
</rss>