<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ادیب شمیل زاده</title>
        <link>https://virgool.io/feed/@adibshamil</link>
        <description>ادیب شمیل زاده؛ علاقمند به پایتون</description>
        <language>fa</language>
        <pubDate>2026-04-15 02:56:48</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/241559/avatar/hyB0Xu.jpeg?height=120&amp;width=120</url>
            <title>ادیب شمیل زاده</title>
            <link>https://virgool.io/@adibshamil</link>
        </image>

                    <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>مجموعه آموزش ها و ترفند های پایتونی(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>مجموعه آموزش ها و ترفند های پایتونی(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>مجموعه آموزش ها و ترفند های پایتونی(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>خرید از گران فروشها به نفع مشتری است</title>
                <link>https://virgool.io/@adibshamil/%D8%AE%D8%B1%DB%8C%D8%AF-%D8%A7%D8%B2-%DA%AF%D8%B1%D8%A7%D9%86-%D9%81%D8%B1%D9%88%D8%B4%D9%87%D8%A7-%D8%A8%D9%87-%D9%86%D9%81%D8%B9-%D9%85%D8%B4%D8%AA%D8%B1%DB%8C-%D8%A7%D8%B3%D8%AA-lx7tylbeqh2l</link>
                <description>می‌خواهم از شرق تهران به وسط شهر بروم. بهترین راه استفاده از تاکسی‌های اینترنتی است، اما کدامیک از آنها گزینه بهتری است؟به اینجا که می‌رسیم، معمولا اپلیکیشنی را انتخاب می‌کنیم که معمولا ارزان‌تر است و یا معمولا با کدهای تخفیف کوله پشتی ما را پر کرده! احتمالا چیزی که ما را به انتخاب گزینه ارزان‌تر سوق می‌دهد، این استدلال است که من مشتری هستم و کسب و کارها باید در این رقابت رضایت من را بدست بیاورند. از آنجایی که برای من کیفیت سفر خیلی مسئله‌ای نیست و اگر هم باشد تفاوت چندانی بین کیفیت این سرویس‌ها نیست، پس ارزان‌تر را انتخاب می‌کنم.نکته‌ای که در این مقاله می‌خواهم به آن اشاره کنم، این است که گاهی وقتها به نفع ماست در شرایطی که کسب و کارهای مختلف در حال ارائه سرویس‌های با کیفیت به نسبت یکسان هستند، گزینه گران‌تر را انتخاب کنیم.به تصویر زیر نگاه کنید، همانطور که مشخص است اینجا اسنپ قیمت پایین‌تری از تپسی برای این سفر در نظر گرفته است. استدلال اولیه به ما می‌گوید این سفر را از طریق اسنپ انجام دهیم تا بدین ترتیب، هم هزینه کمتری پرداخت کنیم و هم رقابت در قیمت‌گذاری این بازار را بیشتر کنیم.اما آیا واقعا چنین تاثیری بر بازار خواهیم گذاشت؟عرصه رقابت را تنگ‌تر نکنیمدر کسب و کارهای امروزی، موضوع رقابت بسیار جدی‌تر از کسب و کارهای سنتی است. فضای تبلیغاتی مدرن، خصوصا فضاهای تبلیغاتی دیجیتال از نوع کاملا رقابتی هستند و هر زمان که بنا به اجرای کمپین تبلیغاتی باشد، باید به این نکته دقت شود که چه میزان از رقابت در آن زمان و در آن فضای تبلیغاتی برقرار است.این موضوع صرفا به بحث تبلیغات محدود نمی‌شود و به طور کلی، در هزینه جذب مشتری و بعضاً در هزینه جذب و مدیریت منابع انسانی هم تاثیرگذار است. حال تصور کنید شما یکی از اعضای هیئت مدیره و یا موسسین این کسب و کارها باشید. بیزینس پلنی که طراحی کرده‌اید بر طبق یک سری تخمین‌ها و احتمالا با در نظر گرفتن سناریوهای بدبینانه است، اما باز هم این موضوع را پیش‌بینی نمی‌کردید که رقیب شما پایین‌تر از حالت معمول قیمت سرویس را کاهش دهد.در این حالت است که به مرور، شما هر روز سرتان را بیش از پیش جلوی سرمایه‌گذار خم می‌کنید و این روند تا جایی ادامه می‌یابد که دیگر دلیلی برای سرمایه‌گذاری بیشتر وجود ندارد. در نتیجه، کسب و کارتان با این دنیا خداحافظی می‌کند.رقیب شما از کدام جیب، بی‌پروا تخفیف می‌دهد؟یکی از استراتژی‌های کسب و کارهای بزرگ این است که به جای اینکه تمام سرمایه و دارایی خود را در یک بازار سرازیر کنند، به بازارهای دیگر هم ورود می‌کنند و با این کار، ریسک سرمایه خود را به حداقل می‌رسانند. این استراتژی، خارج از عرف یا جدید نیست و بسیاری از کمپانی‌های بزرگ دنیا هم همین روند را در پیش گرفته‌اند.در ایران و در مثال بازار تاکسی‌های اینترنتی، می‌دانیم که اسنپ فقط تاکسی اینترنتی نیست و در بازارهای پیک موتوری و درخواست آنلاین وانت، سفارش آنلاین غذا، خرید بلیط هواپیما و هتل، سوپرمارکت آنلاین، فروشگاه اینترنتی لوازم آرایشی، مشاوره پزشکی آنلاین و داروخانه آنلاین، خرید شارژ و پرداخت قبض هم ورود کرده است.آیا منظور ما این است که بیایید اسنپ را تحریم کنیم؟ آیا منظور ما این است که این توزیع ریسک یک کار غیراخلاقی است؟قطعا نه، بلکه شاید تحسین برانگیز هم باشد. به خصوص اینکه برای صاف شدن جاده این رقابت با برخی کمپانی‌ها به عنوان شریک کلیدی (مثل آپ و هایپراستار) همکاری دارد که کار را برای هولدینگ گروه اینترنتی ایران راحت‌تر می‌کند.چرا باید در هر بازاری، از رهبر بازار کمتر حمایت کنیم؟در همین مثالی که دیدید، اسنپ رهبر بازار تاکسی‌های اینترنتی است و تپسی به عنوان یک رقیب، البته یک رقیب قدرتمند، در جایگاه دوم قرار دارد.اگر در این بازار، ما به عنوان یک مشتری مسئولیت پذیر عمل نکنیم، برای راحتی خودمان و بر طبق عادت به سراغ اسنپ می‌رویم و همیشه هم از همین اپلیکیشن استفاده می‌کنیم.دلیل این کار ما، این است که اسنپ یک سوپر اپلیکیشن است و دلایل بیشتری برای استفاده از آن داریم. همچنین به این دلیل که معمولا تپسی کد تخفیف برای کاربران ارسال نمی‌کند، مگر با استفاده از امتیاز آنها و باشگاه مشتریان تپسی، ترجیح‌مان این است که یک راست به سراغ گزینه ارزان‌تر برویم.خب، پس با این حساب ما ترجیح دادیم که سفر درون شهری ما سهم اسنپ باشد. حال فرض کنید ما در طول ماه تمام سفرهای درون شهریمان را با اسنپ تجربه کنیم و فرصت نفس کشیدن به تپسی ندهیم، چون کمی گران‌تر است!اگر همین رفتار را اکثر کاربران تاکسی‌های اینترنتی در کلانشهرها ادامه دهند، به زودی خواهیم دید که تپسی از این بازار حذف خواهد شد. چون اگر کاهش قیمت را ادامه دهد، توانایی مقابله با اسنپ را نخواهد داشت و مقاومت این کسب و کار شکسته خواهد شد. از طرفی اکثرا این کاهش قیمت را متوجه نمی‌شویم، چون بدون چک کردن اپلیکیشن تپسی به سراغ اسنپ می‌رویم!این موضوع در نهایت باعث حذف شدن تپسی و یکه تاز بودن اسنپ می‌شود و این دومین بازار انحصاری برای اسنپ خواهد بود. آن زمان است که ما حق انتخابی نداریم و اسنپ تنها گزینه ماست. پس اسنپ هم هر عددی که بخواهد قیمت گذاری می‌کند و ما چاره‌ای نداریم جز پذیرش و پرداخت هزینه‌های احتمالا ناعادلانه.نتیجه نهایی؛ همیشه سراغ گران‌تر برویم؟حرف من این نیست که همیشه گزینه گران‌تر را انتخاب کنیم. اما بد نیست زمانی که اختلاف قیمت بین رهبر بازار و یکی از رقبا خیلی بالا نیست، به سراغ گزینه گران‌تر برویم و به خاطر 2 یا 3 هزار تومان هزینه کمتر، آینده آن بازار را در دست خودمان و به نفع مشتری نگه داریم.از طرف دیگر با این کار، نشان می‌دهیم که همیشه مشتریان با استفاده از تخفیف قانع نمی‌شوند و به قولی همه چیز خریدنی نیست! بلکه فعالیت‌هایی مثل کمپین‌های مسئولیت اجتماعی، افزایش کیفیت سرویس، هوشمندی اپلیکیشن و دسترسی بالا در تمامی نقاط شهر در ساعات مختلف هم از جمله مواردی است که مشتریان در انتخاب سرویس مدنظر قرار می‌دهند.آیا این رفتار در پلتفرم‌ها هم صادق است؟اگر قرار باشد خریدمان را از مارکت پلیس‌ها و پلتفرم‌هایی مثل دیجی‌کالا، دیوار، ایمالز و یا حتی فروشگاه‌های اپلیکیشن انجام دهیم، باز هم باید بر این اساس عمل کنیم و ترجیحمان روی برند گران‌تر باشد؟تا حدودی می‌توان گفت فرقی ندارد. یادمان باشد که وقتی یک تولیدکننده یا فروشنده در این پلتفرم‌ها، سرویس و خدمتی بیش از بقیه ارائه می‌دهد، طبیعتا ارزش افزوده‌ای که برای آن در نظر گرفته باعث افزایش قیمت شده. پس این ارزش‌ها را هم در نظر بگیریم و ترجیحا خریدمان را فقط به ارزان‌ فروش‌ها سوق ندهیم.وگرنه هیچ چیز باقی نمی‌ماند، جز کمپین‌های تخفیف و کالاها و سرویس‌های سطح پایینی که همیشه از آنها ناراضی هستیم؛ و البته انحصار در بازارها و قیمت بالای محصولات و خدمات مختلفمنبع: ویرگول ارسلان شورابی</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 09 Oct 2021 12:14:59 +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>مجموعه آموزش ها و ترفند های پایتونی(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/%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>
                    <item>
                <title>دانلود از یوتیوب با پایتون &quot;از مجموعه آموزش ها و ترفند های پایتونی&quot;</title>
                <link>https://virgool.io/TameshkGroup/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A7%D8%B2-%DB%8C%D9%88%D8%AA%DB%8C%D9%88%D8%A8-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A7%D8%B2-%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-n1sle7csdeaf</link>
                <description>سلام امیدوارم حالتون عالی باشه! توی این پست میخوایم با یوتیوب توی پایتون کار کنیم! همونطور که میدونید یوتیوب یه سرویس اشتراک ویدیو هستش و کلی طرفدار داره اما شما نمیتونید ازش ویدیو دانلود کنید. درواقع این یه جور کار غیر اخلاقی هستش به خاطر اینکه یوتیوب به ازای بازدیدهایی که ویدیوها میخورن به صاحبايه ويديو، پول میده و اگه شما ویدیو رو دانلود کنید که دیگه بازدیدی در کار نیست! پس اینجا میخوام بگم به عنوان یه نفری که تازه یوتیوبر شده (البته هنوز درآمدی نداریم ازش) سعی کنید ویدیوها رو دانلود نکنید یا اگه خیلی ویدیو رو لازم داشتین یه بار حداقل اون رو آنلاین تماشا کنید..!(راستی باید وی پی ان شما هنگام دانلود روشن باشه)شروع کار...!شروع کارحالا بریم سراغ آموزش... بدون معطلی کتابخونه pytube رو دانلود کنید:pip install pytubeصبر کنید تا کتابخونه دانلود و نصب بشه بعد برید مرحله بعدی..!مرحله اول: ایمپورت و گرفتن لینکدانلود از یوتیوبfrom pytube import YouTubeخب تو اولین مرحله باید کتابخونه رو ایمپورت کنیم: دقت کنید که Y و T توی YouTube حروف بزرگن! حالا باید به لینک ویدیو وارد برنامه کنیم و به برنامه بگیم که این یه لینک یوتیوبه! (من یه لینک فرضی دادم!)link = &amp;quothttps://www.youtube.com/watch?v=.............=2s&amp;quot 
yl = YouTube(link)مرحله دوم: استخراج اطلاعات ویدیوحالا به راحتی میشه با دستورات زیر، اطلاعات ویدیو رو به دست آورد:print(&amp;quotTitle: &amp;quot,yl.title) 
print(&amp;quotNumber of views: &amp;quot,yl.views) 
print(&amp;quotLength of video: &amp;quot, yl.length) 
print(&amp;quotRating of video: &amp;quot, yl.rating)که به ترتیب عنوان، تعداد بازدیدهای ویدیو، طول ویدیو، امتیاز ویدیو رو بهمون میده! حالا بریم برای دانلود ویدیو!مرحله سوم: دانلود ویدیوپروسه دانلود کردندانلود ویدیو یکم بیشتر ریزه کاری داره! شما میتونید ویدیو رو با صدا یا بی صدا و در کیفیت های مختلف دانلود کنید. برای اینکه فقط صدای ویدیو رو دانلود کنید اول باید تایپ کنید:print(yl.streams.filter(only_audio=True))بعدش برنامه رو اجرا کنید و به لیست بهتون میده که کیفیت های مختلف صدا رو براتون نوشته که هر کدوم یه itag دارن، هر کدوم خواستید اون رو یادداشت کنید و ادامه آموزش رو همراه باشید!برای اینکه کیفیت های مختلف ویدیو با صدا رو هم ببینید باید بنویسید:print(yl.streams. filter(only_video=True))اینجا هم برنامه رو اجرا کنید به لیست از کیفیت های ویدیو بهتون میده که هر کدوم یه itag داره، اون شماره رو یادداشت کنید. حالا هر کدوم رو میخواین دانلود کنید باید بنویسیدys = yl.streams.get_by_itag( &#039; shomare&#039;) ys.download()به جای shomare باید اون tag که میخواین رو بنویسید. اینجا که برنامه رو اجرا میکنید یکم باید صبر کنید تا ویدیو براتون دانلود بشه!و سخنان پایانی...!(و یسری ترفند)میتونید بدون اینکه کیفیت ویدیو رو انتخاب کنید، به طور پیشفرض بالاترین کیفیت رو با دستور زیر دانلود کنید:ys = yl.streams.get_highest_resolution()
 ys.download()البته میتونید قسمت دانلود رو یه خورده بهتر بنویسید مثلاys = yl.streams.get_highest_resolution()
print(&amp;quotDownloading...&amp;quot) 
ys.download() 
print(&amp;quotDownload completed!!&amp;quot)یا وقتی برنامه در حال استخراج اطلاعات ویدیو هستش اولش یه پرینت با عنوان لطفا صبر کنید به کاربر بدین که کاربر بدونه برنامه کار میکنه و پنجره رو نبنده!لایک و کامنت یادتون نره... همچنین میتونید موضوعات پیشنهادی تون رو توی کامنت ها بگید...خوب آموزش دانلود از یوتیوب با پایتون تمشک به پایان رسید امیدواریم که تا اینجای کار از آموزش راضی بوده باشید.دوره آموزشی های تصویری ما را هم در یوتیوب دنبال کنید و حتما پیشنهاد میکنم پیج اینستاگرام تمشک رو دنبال کنید ، برای دسترسی به بعضی از کدهای آموزش ها هم به گیتهاب تمشک سر بزنید.اگر بازم از این آموزشها دوست داشتید یادتون نره دنبال کردن انتشارات ما رو ?.منبع آموزش: گروه آموزشی تمشک???   جاوید باشید و پاینده ......................................... تا جلسه آینده   ???</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Sat, 11 Sep 2021 12:49:30 +0430</pubDate>
            </item>
                    <item>
                <title>پایتون کارت شماره 1: پایتون چیست؟</title>
                <link>https://virgool.io/@adibshamil/%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DA%A9%D8%A7%D8%B1%D8%AA-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DA%86%DB%8C%D8%B3%D8%AA-udvkr5ucgvdb</link>
                <description>https://vrgl.ir/tmYpmالوعده وفا، اینم اولی چهارشنبه با ادیبالبته در روز جمعه???اینم معرفی 4ش با ادیب: https://vrgl.ir/tmYpm نترسید! این پستا برا مبتدیاس!ایشالا امروز بحث مبتدی رو تموم میکنمیدونه هم سطح بالاتر میذارم???برای اینکه ویرگول قبول کنه پستمو باید حداقل 300 کلمه باشه:......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Fri, 16 Apr 2021 18:46:20 +0430</pubDate>
            </item>
                    <item>
                <title>مکعب دربسته روبیکا / چه کسانی پشت کسب‌وکار ناشناخته روبیکا هستند که یک‌شبه حضور میلیاردی پیدا کردند؟</title>
                <link>https://virgool.io/messenger/%D9%85%DA%A9%D8%B9%D8%A8-%D8%AF%D8%B1%D8%A8%D8%B3%D8%AA%D9%87-%D8%B1%D9%88%D8%A8%DB%8C%DA%A9%D8%A7-%DA%86%D9%87-%DA%A9%D8%B3%D8%A7%D9%86%DB%8C-%D9%BE%D8%B4%D8%AA-%DA%A9%D8%B3%D8%A8-%D9%88%DA%A9%D8%A7%D8%B1-%D9%86%D8%A7%D8%B4%D9%86%D8%A7%D8%AE%D8%AA%D9%87-%D8%B1%D9%88%D8%A8%DB%8C%DA%A9%D8%A7-%D9%87%D8%B3%D8%AA%D9%86%D8%AF-%DA%A9%D9%87-%DB%8C%DA%A9-%D8%B4%D8%A8%D9%87-%D8%AD%D8%B6%D9%88%D8%B1-%D9%85%DB%8C%D9%84%DB%8C%D8%A7%D8%B1%D8%AF%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86%D8%AF-fw6hpbpnjgfp</link>
                <description>عادت کرده‌ایم که شاهد ظهور یک‌شبه کسب‌وکارهای اینترنتی  باشیم که هیچ‌گاه خودشان را درست معرفی نمی‌کنند. درگذشته رسم بود وقتی‌که  کسب‌وکاری در این ابعاد راه بیفتد، نشست خبری برگزار کند تا مجموعه و  پدیدآورندگان آن معرفی شوند و بعد شروع به تبلیغات می‌کردند؛ اما چند سالی  هست که این رویه برعکس شده است.سلام دوستاناین داستان از یه کنجکاوی ساده ی من شروع شدلایک و کامنت یادتون نرهبه گزارش عصر ارتباط،  در حال حاضر ما با انبوهی از اپ‌ها و کسب‌وکارهای نوپا مواجه هستیم که  مشخص نیست پدیدآورندگان آن‌ها چه کسانی هستند و هرچه می‌گردید، اطلاعات  کمتری درباره آن‌ها به دست می‌آورید.این ماجرا وقتی پیچیده‌تر و عجیب‌تر می‌شود که این کسب‌وکارهای نوپا  تبلیغات میلیاردی، از ارزان‌ترین محیط‌های تبلیغ گرفته تا گران‌ترین  محیط‌های تبلیغی را یک‌شبه اشغال می‌کنند.کار به همین‌جا ختم نمی‌شود و درحالی‌که کسی نمی‌داند این کسب‌وکارهای  نوین کیست‌اند، به کجا وابسته‌اند و مدل تجاری‌شان چیست و چگونه این حجم از  تبلیغات را مدیریت مالی می‌کنند هر شب وعده قرعه‌کشی‌های لاکچری نیز  می‌دهند.این مقدمه در مورد بسیاری از کسب‌وکارهای امروزی مصداق دارد که در متن  حاضر سراغ روبیکا رفته‌ایم؛ اپلیکیشنی که این روزها و در شرایط سخت اقتصادی  که بسیاری از شرکت‌های قدمی، بزرگ و شناسنامه‌دار در حاشیه هستند، به هر  طرف که سر می‌گردانید تبلیغات آن را می‌بینیم اما درعین‌حال چیز زیادی از  آن نمی‌دانیم.ما نیز همچون شما هیچ اطلاع دقیقی از این شرکت و مالکان آن به دست  نیاوردیم، اما ظاهراً روبیکا برای برخی مسئولان و نهادهای دولتی ازجمله  وزیر ارتباطات و سازمان فناوری اطلاعات شناخته‌شده هستند.جالب اینکه نام شرکت توسعه دهنده در گوگل پلی psdk ثبت شده.همچون بسیاری از اپ‌های نوظهور دیگر، روبیکا هم یک مکعب دربسته است که  هیچ‌کس اطلاع چندانی از درون آن ندارد و صرفاً با بمباران تبلیغاتی یک‌طرفه  و اصرار به نصب چیزی مواجه هستیم که تنها سطح این مکعب را به مردم معرفی  می‌کند.ازآنجاکه مدیران این شرکت حاضر به پاسخگویی نشدند، در گزارش حاضر تلاش  کرده‌ایم تا در حد امکان خود از این اپ تازه به میدان آمده و اسرار کاری آن  رمزگشایی کنیم و ببینیم آیا می‌توان این مکعب روبیک را درست جور کرد و  شناخت؟تبلیغات فوق گسترده روبیکااز ایام نوروز و با پخش تبلیغات گسترده روبیکا در ابتدای سریال پایتخت  توجه بسیاری به این اپ جلب شد و قابلیت‌های مختلف، از ارائه فیلم و موسیقی  گرفته تا امکان ارتباط با هنرمندان در این اپ در کنار رایگان بودن اینترنت،  برای بسیاری پرسش‌های زیادی را در خصوص پدیدآورندگان و حامیان احتمالی آن  به وجود آورد.روبیکا همچنین در سایر برنامه‌های صداوسیما و نیز در تبلیغات محیطی نیز  فعالیتی گسترده داشته است و بدون آنکه پشتوانه مالی و سرمایه‌گذاران آن  مشخص شود، هرروز شاهد تبلیغات گسترده‌تری برای این اپ بوده‌ایم.در این میان اما برای همه روشن است که هزینه تبلیغات در جام‌جهانی  فوتبال و اسپانسرینگ برنامه جام ۲۱ که این روزها از صبح تا شب آنتن شبکه  سوم سیما را در دست خود داشته و بینندگان بسیار زیادی نیز دارد، از همه  تبلیغات قبلی روبیکا به‌مراتب گران‌تر است.در جام جهانی قبل صداوسیما برای ۲۰۰ دقیقه آگهی مبلغ ۲۰۰ میلیارد تومان  گرفته بود که با این حساب به عبارتی هر ثانیه ۱۶ میلیون تومان برآورد  می‌شد؛ بنابراین حتی با فرض محال ثابت ماندن هزینه تبلیغات آن‌هم پس از  چهار سال! یک جمع و تفریق ساده برایمان روشن می‌کند که یک آگهی ۲۵ ثانیه‌ای  برای پخش قبل از بازی فوتبال آن‌هم برای فقط یک‌بار ۴۰۰ میلیون تومان برای  روبیکا آب‌خورده است؛ آن‌هم در شرایطی که هنوز به‌درستی مدل تجاری و  بازگشت سرمایه این اپلیکیشن مرموز روشن نیست.ناشناخته بودن مالکان روبیکاباوجود تبلیغات گسترده در صداوسیما، تبلیغات محیطی و صرف هزینه‌های  میلیاردی برای این اپ اما هیچ اطلاعات دقیقی از مالکان و سرمایه‌گذاران این  اپ وجود ندارد.طبق اطلاعات مندرج در سایت رسمی روبیکا، شرکت طراح این اپلیکیشن به نام  شرکت فناوران نوین هوشمند پارسی ثبت‌شده است که البته هیچ اطلاعات مشخصی از  مالکان و سرمایه‌گذاران آن (خصوصی، دولتی یا عمومی) در دست نیست.برای اطلاع از سرمایه‌گذاران و صاحبان این اپ که خدمات عمومی ارائه  می‌کند و لذا می‌بایست شناسنامه مشخص داشته باشد، تماسی با شماره اعلامی در  سایت روبیکا گرفتیم. نکته قابل‌توجه آنکه بعد از تماس یک پیام صوتی به این  شرح ضبط‌شده است: «با سلام شما با مرکز ارتباط و مشاوره ایران، ICT تماس  گرفته‌اید!».برخی داخلی‌های دیگر مرتبط با شماره تلفن اعلام‌شده از سوی شرکت روبیکا  نیز ازاین‌قرار است، داخلی یک ازاین‌قرار است: ارتباط با CRM (داخلی ۱) که  ظاهراً مربوط به این شرکت است.سامانه ملی آموزش الکترونیک (داخلی ۲)مرکز مشاوره سبک زندگی سالم (داخلی ۳)ساماندهی پایگاه‌های اینترنتی (داخلی ۴)مرکز مشاوره خانواده (داخلی ۵)مرکز مشاوره مدیریت بحران (داخلی ۶)مرکز مشاوره غذا و دارو (داخلی ۷)شرکت توسعه فناوری کوشا افزار قرن (داخلی ۸)ارسال فکس (داخلی ۹)چنان‌که پیداست، با توجه به تنوع و بی‌ارتباطی موضوعات، ظاهراً روبیکا  حتی ارتباطات تلفنی خود را برون‌سپاری کرده و حتی شماره اعلام‌شده در سایت  این شرکت متعلق به روبیکا نیست.اما پس از ارتباط با داخلی مربوطه (عدد ۱)، اپراتور پاسخگو ضمن اعلام  آنکه نمی‌داند سرمایه‌گذاران و مالکان این شرکت کیست‌اند و اگر هم می‌دانست  اجازه نداشت اطلاعاتی از این اپ را در اختیار ما قرار دهد، شماره خبرنگار  ما را گرفته و اعلام کرد سؤالات طرح‌شده را با مدیران مطرح می‌کند تا در  صورت تمایل تماس گرفته و پاسخ دهند که البته تا لحظه تنظیم این گزارش تماسی  گرفته نشده و هیچ پاسخی نیز ارائه نشده است.(اگرچه از طریق سایت ثبت شرکت‌ها و منابع دیگر می‌توان اطلاعات دقیق‌تری  از شرکت، مدیران و سهامداران به دست آورد که در آینده و گزارشی دیگر بیشتر  به آن خواهیم پرداخت.)شائبه نقض حریم خصوصیفارغ از فلسفه شکل‌گیری و کار اپلیکیشن روبیکا اگر سری به اینترنت  بزنید، به ابهامات دیگری در خصوص این اپلیکیشن نیز برخورد می‌کنید. برای  مثال، یکی از انتقادها کپی لوگوی روبیکا از یک شرکت خارجی است.در این میان اما برخی از منتقدان این اپ معتقدند دسترسی‌هایی که در سورس  این اپلیکیشن به دیگر برنامه‌های کاربران وجود دارد، شائبه انگیز است.  گفته می‌شود دسترسی‌هایی به تلگرام و سایر اپ‌های شبکه‌های اجتماعی در  روبیکا وجود دارد که همین شائبه باعث شد برخی از کاربران در شبکه‌های  اجتماعی از وزیر ارتباطات بخواهند به وضعیت رعایت حریم شخصی در این اپ  رسیدگی کند.به همین دلیل ازآنجاکه احتمالاً خود این شرکت در مورد مذکور پاسخگو  نبوده برخی کاربران چندی پیش سراغ وزیر ارتباطات رفتند تا شاید او بتواند  پاسخی از مدیران روبیکا به دست بیاورد. محمدجواد آذری جهرمی در صفحه توییتر  خود در این خصوص نوشت: «در خصوص نرم‌افزار (روبیکا) که این روزها از  صداوسیما تبلیغ می‌شود، پیگیری شد و پاسخی از سوی تولیدکنندگان این  اپلیکیشن ارائه‌شده است.»جهرمی گزارش مردمی و نیز پاسخ فنی واصل‌شده از سوی روبیکا را به یکی از  مراکز آپا برای بررسی دقیق فنی ارسال کرد که کمی بعد نتایج این بررسی توسط  ماهر سازمان فناوری اطلاعات ایران اعلام شد.مرکز ماهر نیز در بخشی از گزارش خود اعلام کرد: «مشاهده شد کدهای منبع  نسخه اندرویدی تلگرام به‌صورت کامل در این نرم‌افزار (روبیکا) قرارگرفته  است. دلیل این امر استفاده از واسط گرافیکی مبتنی بر Fragments پیاده‌سازی  شده در نرم‌افزار تلگرام بوده و بخش عمده باقی‌مانده اساساً بی‌استفاده  مانده است.ازنظر عملکردی نیز قابلیت‌های شبکه‌های اجتماعی مشابه تلگرام در این  نرم‌افزار پیاده‌سازی نشده است و صرفاً خدمات ارائه‌شده توسط این اپلیکیشن  بر اساس قابلیت WebView اندروید و شامل ارائه محتوای شماری از سایت‌ها  است.» مرکز ماهر در ادامه به‌صراحت عنوان می‌کند که این نرم‌افزار دسترسی  به محتوای اطلاعات سایر اپلیکیشن‌ها ازجمله تلگرام را ندارد.امکانات گسترده روبیکایکی از سایت‌های اینترنتی در توصیف امکانات و قابلیت‌های گسترده‌ای که  روبیکا ارائه می‌دهد، چنین می‌نویسد: (روبیکا یک نرم‌افزار چندکاره است که  فقط برای شما چای نمی‌ریزد!) در ادامه، قابلیت‌ها و امکاناتی که برای  روبیکا اعلام‌شده و نیز نقدهایی را که بر آن‌ها وارد است را باهم مرور  می‌کنیم.رایگان بودن اینترنت موبایل: یکی از نکات جالب‌توجه  روبیکا، امکان بهره‌مندی از اینترنت رایگان است که بسیاری از کاربران را  برای استفاده از آن ترغیب کرده است. برای استفاده از این ویژگی کافی است  کاربر به اینترنت مستقیم یکی از دو اپراتور اصلی موبایلی متصل شود.روبیکا برخلاف برخی دیگر از اپلیکیشن‌ها شرط اینترنت رایگان، ثبت‌نام یا  اتصال به اینترنت سیم‌کارت به‌صورت مستقیم، کسر هزینه اشتراک درازای  ترافیک رایگان و مواردی ازاین‌دست را مطرح نکرده است و صرف استفاده از  اینترنت همراه اول و ایرانسل، مبنای محاسبه ترافیک رایگان قرار داده‌شده  است.البته نظرات کاربران در خصوص رایگان بودن اینترنت در استفاده از این اپ  متفاوت است و برخی از کاربران معتقدند وقتی از روبیکا استفاده کرده‌اند از  حجم اینترنتشان کاسته شده است (موضوعی که به شکل مستقل امکان تأیید آن را  نداریم). همچنین اطلاعی از اینکه روبیکا چه قراردادی با دو اپراتور اصلی  داشته که از کاربرانش که قصد تماشای فیلم، یا گوش دادن به موسیقی و درنتیجه  مصرف حجم زیاد اینترنت دارند پولی بابت ترافیک نگیرند، در دست نیست.مشاهده رایگان فیلم و سریال: در روبیکا بخشی وجود دارد  که امکان مشاهده و پخش فیلم‌ها و سریال‌هایی که توسط عرضه‌کنندگان مختلف  ازجمله آیو، فیلیمو، فیلم نت، تی‌وی‌نت، سیمای همراه، فن‌آور، اپیدو و  آکواریوم ارائه‌شده وجود دارد. این درحالی‌که است که برای استفاده از خدمات  این عرضه‌کنندگان به‌صورت مستقیم و بدون استفاده از روبیکا باید هزینه‌ای  ماهانه پرداخت شود!امکان ارتباط با هنرمندان: در این بخش نیز بنا بر  تبلیغاتی که روبیکا می‌کند، امکان برقراری ارتباط به‌صورت یک شبکه اجتماعی  مانند اینستاگرام با هنرمندان و کاربران دیگر برقرار است. کاربر پس از ورود  به این بخش با فهرست برنامه‌های مختلف و همچنین بازیگران و هنرمندان  گوناگون روبه‌رو می‌شود که می‌تواند با ورود به هرکدام از آن‌ها، با برنامه  یا هنرمند موردعلاقه خود ارتباط داشته باشد.البته کاربران انتقادهای زیادی به این بخش وارد و این ابهام را مطرح  کرده‌اند که صفحات هنرمندان در بهترین حالت توسط یک ادمین مشترک و نه توسط  خود هنرمندان اداره می‌شود (موضوعی که به شکل مستقل امکان تأیید آن را  نداریم).امکان گوش دادن رایگان به موسیقی: پس از ورود به بخش  موزیک این اپلیکیشن نیز کاربر با فهرستی از خواننده‌های مختلف در سبک‌های  گوناگون روبه‌رو می‌شود که می‌تواند با انتخاب هرکدام از آن‌ها به  ساخته‌هایشان دسترسی داشته باشد و به‌رایگان از آن‌ها استفاده کند.البته مشخص نیست در این بخش نیز هزینه‌های کپی‌رایت و مالکیت معنوی  چگونه رعایت شده و در صورت رعایت شدن حق مالکیت معنوی، چطور و با چه  پشتوانه مالی و توجیه اقتصادی این هزینه‌ها پرداخت می‌شود.امکان دسترسی به آموزش‌های رایگان: بخش آموزشی روبیکا  از دیگر بخش‌های این برنامه است که شامل برگزاری کلاس‌های آنلاین، پخش زنده  و مستقیم کلاس‌های آموزشی و سایر روش‌های آموزشی است که فعلاً در بیشتر  این بخش‌ها چیز خاصی عرضه نشده است (اگرچه اخیراً کار تبلیغات گسترده و  روبیکایی برای این بخش نیز در شبکه‌های صداوسیما مشاهده می‌شود).ارائه خدمات پرداختی: در این اپ امکان ایجاد کیف پول،  مدیریت حساب شخصی، پرداخت به‌صورت دونگی و خرید شارژ برای اپراتورهای مختلف  ازجمله ایرانسل، همراه اول و رایتل در نظر گرفته‌شده است.این در حالی است که سال‌ها است بر سر استفاده از کیف پول مجادلات  فراوانی وجود داشته و بانک مرکزی همواره از ارائه مجوز برای کیف پول  الکترونیکی طفره رفته است، لذا مشخص نیست روبیکا بر چه اساسی و بنا بر چه  مجوزی آن‌طور که خود مدعی است چنین خدماتی را ارائه می‌کند.پخش آنلاین و آفلاین برنامه‌های تلویزیونی: امکان  تماشای برنامه‌های تلویزیونی بیشتر شبکه‌های صداوسیما به‌صورت آنلاین در  این اپ در نظر گرفته‌شده است. همچنین امکان مشاهده برنامه‌های پخش‌شده در  صداوسیما است که باعث می‌شود کاربران بتوانند در هر زمان که تمایل داشتند  به مشاهده برنامه‌های دلخواه خود بپردازند، از دیگر قابلیت‌های این اپ است.  البته در این خصوص نیز مشخص نیست که روبیکا بر اساس چه پشتوانه و چه شکل  تفاهمی با صداوسیما چنین امکانی را فراهم کرده است.منابع درآمدی روبیکااکنون این پرسش مطرح می‌شود که هزینه تبلیغات یا سرمایه‌گذاری‌های  تبلیغاتی روبیکا که روی ارائه خدمات رایگان تمرکز کرده از کجا و چگونه باز  می‌گردد. آیا این شرکت پشتوانه‌هایی دارد که به‌واسطه آن خدمات خود را  اصطلاحاً سوبسیدایز کرده است؟ آیا هدف در فاز نخست جذب حداکثری کاربران  ایرانی است؟آیا این شرکت به‌عنوان یک هاب و واسطه میان چند خدمات دهنده کوچک‌تر  قرارگرفته و با تجمیع امکانات فنی و مالی آن‌ها خدمات تجمیعی ارائه می‌کند؟  آیا این اپلیکیشن در حال نقض بی‌طرفی اینترنتی است؟اصولاً بیزینس‌مدل یا طرح تجاری این شرکت برای درآمدزایی و بازگشت  میلیاردها تومان هزینه تبلیغاتی این شرکت چیست؟ همان‌طور که ذکر شد، قصد  طرح بی‌واسطه و مستقیم این پرسش‌ها و بسیاری دیگر از سؤالات و ابهامات را  از مسئولان این شرکت داشتیم که این امکان باوجود تأکید بر قانون دسترسی  آزاد به اطلاعات و ارائه خدمات گسترده عمومی از سوی مدیران این شرکت محقق  نشد.پس چاره‌ای جز گمانه‌زنی و در نظر گرفتن احتمالات نمی‌ماند و چنانچه  مدیران این شرکت نیز پاسخی دارند، می‌توانند ارائه کنند. اما در حال حاضر  بسیاری از شرکت‌های خدمات میزبانی هستند که باهدف افزایش ترافیک به‌رایگان  سایت‌ها و اپ‌های پربازدید را هاست می‌کنند، پس این امکان وجود دارد که  میزبانی سرورهای روبیکا رایگان باشد.از چند سال قبل در کشور ما نیز رقابتی میان ‌ISP‌ها شروع شد و برخی از  آن‌ها اعلام کردند که سایت‌های پربازدید داخلی را رایگان روی سرورهای خود  میزبانی می‌کنند.نکته دیگر آنکه در مدل تجربه‌شده شرکت‌هایی مثل یوتیوب راهنمای ویژه‌ای  برای کاربران این سایت تهیه و اعلام‌شده که اگر کانالشان حداقل ۱۰ هزار  بازدیدکننده داشته باشد، می‌توانند از سایت یوتیوب و تبلیغات موجود در آن  کسب درآمد کنند. برای درآمدزایی با یوتیوب کافی است که کاربر یک حساب  کاربری AdSense ایجاد کند و درخواستش را برای پذیرش درآمدزایی ثبت کند.جالب آنکه اگر افراد دارای حق اشتراک قرمز یوتیوب که برای دیدن فیلم‌های  بدون تبلیغات ثبت‌نام و پول پرداخت کرده‌اند از مطالب یک کانال بازدید  کنند، یوتیوب مبلغ بیشتری را به صاحب محتوا یا کانال پرداخت می‌کند.با توجه به این مدل اقتصادی برای جذب محتوا، می‌توان چنین گمانه‌زنی کرد  که روبیکا نیز از مدل مشابهی استفاده کرده باشد. همچنین این امکان وجود  دارد که روبیکا باواسط شدن میان کاربر و سرویس‌های کوچکی که به فروش محتوای  ویدیویی و صوتی می‌پردازند، درصدی از درآمدهای آن‌ها را به ازای کاربرانی  که به سمتشان هدایت کرده، دریافت کند.این احتمال وقتی قوت می‌گیرد که بدانیم برخی از فیلم‌ها و سریال‌های  عرضه‌شده در روبیکا متعلق به سایت‌های اشتراک‌گذاری ویدیو هستند و در خصوص  برخی از این فیلم‌ها کاربر باید بابت مشاهده آن‌ها مبالغی را پرداخت کند.برای روشن‌تر شدن موضوع باید سری به ترکیه و ماجرای رونق گسترده صنعت  توریسم آن بزنیم. در ترکیه چند سال قبل دولت از هتل‌ها و کسب‌وکارهای مرتبط  با توریسم حق شارژ اندکی دریافت کرد و برای رونق کسب‌وکار آن‌ها این پول  را به سوبسیدایز کردن پول بلیت هواپیماها تخصیص داد تا مسافران را به  ارزان‌ترین قیمت ممکن از کشورهای هدف به سمت ترکیه و هتل‌ها، فروشگاه‌ها،  خدمات حمل‌ونقل این کشور سرازیر کنند.به نظر می‌رسد که روبیکا هم از روش تجربه‌شده و مشابهی استفاده می‌کند و  با ارائه تمام محتواهای سایت‌های اشتراک ویدیو و موسیقی و گرفتن درصدی از  آن‌ها یا با کاهش و تجمیع هزینه تبلیغاتی آن‌ها به‌نوعی برای این شرکت‌ها  بازاریابی می‌کند.بخشی دیگر از راز کسب درآمد روبیکا می‌تواند از طریق داده‌کاوی باشد،  یعنی همان روشی که فیس‌بوک، گوگل و سایر ابر سایت‌ها و شبکه‌های اجتماعی که  با کاربران زیاد سروکار دارند از آن استفاده می‌کنند.بیشتر شبکه‌های اجتماعی، اپ‌ها و سایت‌های پربازدید درواقع با داده‌های  کاربران و کاوش آن‌ها (Mining) درآمد دارند. داده‌هایی مانند اطلاعات شخصی  کاربران، روابط میان دوستان، موضوعات موردعلاقه، تعداد و محتوای نوشته‌ها،  زمان حضور افراد در شبکه اجتماعی، سرگرمی‌ها و مواردی ازاین‌دست که با کاوش  و فروش آن‌ها می‌توان درآمدهای بالایی به دست آورد.بر اساس همین اطلاعات به‌دست‌آمده، سایت‌های پرطرفدار به آگهی‌دهندگان  اعلام می‌کنند که آگهی‌ها را برای افرادی که با تجارت آن‌ها مرتبط است،  می‌فرستند. برای مثال، آگهی فروش دستکش بوکس فقط برای طرفداران ورزش‌های  رزمی نمایش داده می‌شود یا آگهی فروش آلبوم موسیقی سنتی فقط برای طرفداران  این سبک موسیقی و کسانی که صفحات خواننده‌های سنتی را دنبال می‌کنند، نمایش  داده می‌شود. با همین معیار است که اینستاگرام و فیس‌بوک در حال حاضر  آگهی‌های خود را نشان می‌دهند.اگرچه به شکل رسمی فروش داده‌های کاربران از سوی روبیکا نه قابل‌تأیید  است و نه قابل رد، لذا این احتمال نیز وجود دارد که روبیکا نیز چنین اهداف  بلندمدتی را دنبال کند و قصد داشته باشد، پس از جذب تعداد بالای مخاطب با  داده‌کاوی اطلاعات کاربران و جذب و ارسال آگهی‌های هدف‌دار کسب درآمد کند.نمایش آگهی‌های درون برنامه‌ای برای کاربران در بخش‌های مختلف اپ از  دیگر راه‌های درآمدی است که می‌توان متصور بود روبیکا در آینده از طریق آن  کسب درآمد کند.یکی دیگر از منابع باارزش سایت‌ها، اپ‌ها و شبکه‌های اجتماعی پربیننده  دنیا، کسب درآمدهای بالا و اثرگذاری آن‌ها بر نتایج و کمپین‌های انتخاباتی  است. اتفاقی که اخیراً در مورد فیس‌بوک و در جریان ظهور دونالدترامپ شاهد  آن بودیم و همچنان این غول فضای سایبری در حال رفت‌وآمد به مجلس سنا و  اتحادیه اروپا برای پاسخگویی به ماجرای رسوایی فروش اطلاعات کاربران خود  است.درمجموع و با توجه به تنوع مدل‌های احتمالی کسب درآمد از یک‌سو و متفاوت  بودن رفتار و توان اقتصادی کاربران ایرانی از دیگر سو، امکان اینکه گفته  شود روبیکا فعلاً در فاز زیان‌دهی (به عبارتی سرمایه‌گذاری)، یا در نقطه  سربه‌سر یا احتمال به مرحله درآمدزایی رسیده فراهم نیست.جمع‌بندیدر این مطلب سعی کردیم معمای رایگان بودن خدمات روبیکا را حل کنیم تا  تصویر درستی از این اپ ناشناخته به وجود آید. اگرچه برای بررسی نقاط  نه‌چندان روشن پیرامون فعالیت‌ها، صاحبان و روش کسب درآمد روبیکا با این  مجموعه تماس گرفتیم، اما پاسخگو نبودن آن‌ها شائبه این احتمال را قوت  می‌بخشد که احتمالاً این شرکت در جایگاهی قرار دارد که می‌تواند به منابع  مستقل و احتمالاً رسانه‌ها پاسخگو نباشد.در تمام دنیا رسم بر این است که در خصوص کسانی که درزمینهٔ کسب‌وکارهایی  که با خدمات عمومی سروکار دارند اطلاعات دقیق و مشخصی وجود داشته باشد تا  مردم بتوانند به آن‌ها اعتماد کنند.در خصوص فیس‌بوک کاملاً مشخص است که در ظاهر مارک زاکربرگ، مؤسس و  هدایتگر این شبکه اجتماعی است، گوگل نیز ظاهراً توسط لری پیج و سرگئی برین  ایجادشده، مالک توییتر جک دورسی است و یوتیوب توسط سه کارمند سابق «پی‌پل»  یعنی چاد هرلی، استیو چن و جاوید کریم راه‌اندازی شده است.حتی در مورد پیام‌رسان تلگرام که همواره انتقادهای زیادی به دلیل نداشتن  دفتر مشخص و رسمی برای این اپ موبایلی مطرح‌شده، مالک آن نیز ظاهراً پاول  دوروف است.درحالی‌که در کشور ما نیز بر اساس قانون دسترسی آزاد به اطلاعات کسانی  که خدمات عمومی ارائه می‌دهند می‌بایست خود را معرفی کرده و اطلاعات  هویتشان مشخص باشد، اما اپلیکیشن روبیکا در این چارچوب عمل‌نکرده است.  درواقع نه‌تنها با جست‌وجوی اینترنتی و مراجعه به سایت روبیکا نمی‌توان  فهمید که چه شخص یا اشخاص حقیقی یا حقوقی پشت این اپ هستند، بلکه در سایت  روبیکا نیز هیچ آدرس ثبت‌شده‌ای از دفتر آن‌ها وجود ندارد.تمام این‌ها در کنار خدمات گسترده‌ای که روبیکا عموماً به‌صورت رایگان  ارائه می‌کند باعث شده تا ابهامات زیادی در خصوص این اپ که صدها میلیارد  هزینه تبلیغات کرده است وجود داشته باشد. ما در تحریریه هفته‌نامه عصر  ارتباط آمادگی خود را برای درج پاسخ روبیکا یا حتی انجام مصاحبه با صاحبان و  ایجادکنندگان این اپ برای رفع ابهام‌های موجود اعلام می‌کنیم و آمادگی  داریم برای روشن شدن اذهان عمومی و انجام تکالیف رسانه‌ای خود در این خصوص  اطلاع‌رسانی کنیم.اگرچه همان‌طور که وعده دادیم، در آینده به بررسی ابعاد و احتمالات دیگر در خصوص این مکعب دربسته خواهیم پرداخت.</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Wed, 14 Apr 2021 09:35:33 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش شی گرایی پایتون: کلاس، شی، وراثت و سازنده با مثال</title>
                <link>https://virgool.io/@adibshamil/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DA%A9%D9%84%D8%A7%D8%B3-%D8%B4%DB%8C-%D9%88%D8%B1%D8%A7%D8%AB%D8%AA-%D9%88-%D8%B3%D8%A7%D8%B2%D9%86%D8%AF%D9%87-%D8%A8%D8%A7-%D9%85%D8%AB%D8%A7%D9%84-it0om35vd31j</link>
                <description>شی گراییدر این مطلب با ۴ موضوع کلیدی برنامه نویسی پایتون یعنی کلاس، شی، وراثت و سازنده با کمک مثال هایی به زبان ساده آشنا می شوید.لایک، نظر و دنبال کردن فراموش نشه...                                                                                                        مخلص شما: ادیب شمیل زادهکلاس چیست؟کلاس یک گروه منطقی از داده ها و توابع است. به ایجاد ساختارهای داده ای که حاوی محتوای دلخواه هستند آزادی می دهد و از این رو به راحتی در دسترس اند.به عنوان مثال ، برای هر کارمند بانکی که می خواهد جزئیات مشتری را به صورت آنلاین واکشی کند ، به کلاس مشتری می رود که در آن تمام ویژگی های آن مانند جزئیات معامله ، جزئیات برداشت و سپرده ، بدهی های معوق و غیره ذکر شده است.در این آموزش ، یاد خواهیم گرفت:نحوه تعریف کلاس های پایتوننحوه کار وراثتسازندگان پایتوننحوه تعریف کلاس های پایتونبرای تعریف کلاس باید نکات زیر را در نظر بگیریدمرحله ۱) در پایتون کلاس ها با کلمه کلیدی “class” تعریف می شوند.class myClass():مرحله ۲) در داخل کلاس ها می توانید توابع یا متدهایی را تعریف کنید که بخشی از کلاس هستند.def method1 (self):print “Guru99”def method2 (self,someString):print “Software Testing:” + someStringدر اینجا method1 را تعریف کردیم که عبارت”Guru99″ را چاپ می کند.متد دیگری که تعریف کردیم ، method2 است که “Software Testing” + someString را چاپ می کند. SomeString متغیری است که با فراخوانی متد دریافت می شود.مرحله ۳) همه چیز در کلاس تورفتگی دارد ، دقیقا مانند کد موجود در تابع ، حلقه ، شرطif و غیره. هر چیزی که تورفتگی نداشته باشد در کلاس نیست.توجه: در مورد استفاده از “self” در پایتونآرگومان self به خود شیء اشاره دارد. از این رو از کلمه self استفاده می شود. بنابراین در درون این متد ، self به نمونه خاص این شیء که روی آن کار می شود ، اشاره خواهد کرد.Self نامی است که توسط پایتون برای نشان دادن اولین پارامتر متد های نمونه ترجیح داده می شود. این بخشی از نحو پایتون برای دسترسی به اعضای اشیاء است.مرحله ۴) ساختن شیء از کلاسc = myClass()مرحله ۵) فراخوانی متد در کلاسc.method1()
c.method2(” Testing is fun”)توجه کنید که وقتی method1 یا method2 را صدا می زنیم ، لازم نیست کلمه کلیدی self را بنویسیم چون به طور خودکار توسط runtime پایتون اداره می شود.فقط باید به آرگومان های non-self اهمیت دهید.مرحله ۶) کد کامل در اینجا است.# Example file for working with classesclass myClass():def method1(self):print(“Guru99”)def method2(self,someString):print(“Software Testing:” + someString)def main():# exercise the class methodsc = myClass ()c.method1()c.method2(” Testing is fun”)if __name__== “__main__”:main()نحوه کار وراثتوراثت ویژگی ای است که در برنامه نویسی شی گرا مورد استفاده قرار می گیرد. این به تعریف یک کلاس جدید با تغییر کم یا بدون تغییر از کلاس موجود اطلاق می شود. کلاس جدید کلاس مشتق شده نام دارد و کلاسی که از آن ارث می برد پایه نامیده می شود. پایتون از ارث بری پشتیبانی می کند. همچنین از ارث بری متعدد پشتیبانی هم می کند. یک کلاس می تواند ویژگی ها و متد های رفتاری را از کلاس دیگری به نام زیر کلاس یا کلاس وارث به ارث ببرد.ساختار ارث بری پایتونclass DerivedClass(BaseClass):body_of_derived_classمرحله ۱) کد زیر را اجرا کنید.# Example file for working with classesclass myClass():def method1(self):print(“Guru99”)class childClass(myClass):#def method1(self):#myClass.method1(self);#print (“childClass Method1”)def method2(self):print(“childClass method2”)def main():# exercise the class methodsc2 = childClass()c2.method1()#c2.method2()if __name__== “__main__”:main()توجه کنید که در childClass ، method1 تعریف نشده است اما از والد myClass ارث بری کرده است. خروجی آن “Guru99” است.مرحله ۲) خط ۸ و ۱۰ را از کامنت خارج کرده و کد را اجرا کنید.اکنون method1 در childClass تعریف شده است و خروجی “childClass Method1” به درستی نشان داده می شود.مرحله ۳) خط ۹ را از کامنت خارج کرده و کد را اجرا کنید.با استفاده از ساختار زیر می توانید از متد کلاس والدین استفاده کنید.ParentClassName.MethodName(self)در این نمونه، myClass.method1(self) را صدا می زنیم و Guru99 مطابق انتظار چاپ می شود.مرحله ۴) خط ۱۹ را از کامنت خارج کرده و کد را اجرا کنید.Method2 کلاس فرزند صدا زده می شود و “childClass method2” همانطور که انتظار می رود چاپ می شود.سازنده های پایتونسازنده یک تابع کلاس است که یک شیء را با مقادیر از پیش تعریف شده مقدار دهی می کند.با دو تا (_) شروع می شود. این متد __init() __ است.در مثال زیر از کاربر با استفاده از سازنده نام می بریم.class User:name = “”def __init__(self, name):self.name = namedef sayHello(self):print(“Welcome to Guru99, ” + self.name)User1 = User(“Alex”)User1.sayHello()خروجی برابر خواهد بود با:Welcome to Guru99, Alexمثال پایتون ۲در بالا کد ها مثال های پایتون ۳ هستند ، اگر می خواهید در پایتون ۲ اجرا کنید ، لطفا کد زیر را در نظر بگیرید.# How to define Python classes# Example file for working with classesclass myClass():def method1(self):print “Guru99”def method2(self,someString):print “Software Testing:” + someStringdef main():# exercise the class methodsc = myClass ()c.method1()c.method2(” Testing is fun”)if __name__== “__main__”:main()#How Inheritance works# Example file for working with classesclass myClass():def method1(self):print “Guru99”class childClass(myClass):#def method1(self):#myClass.method1(self);#print “childClass Method1”def method2(self):print “childClass method2”def main():# exercise the class methodsc2 = childClass()c2.method1()#c2.method2()if __name__== “__main__”:main()خلاصه:کلاس یک گروه بندی منطقی از توابع و داده ها است. کلاس پایتون تمام ویژگی های استاندارد برنامه نویسی شی گرا را ارائه می دهد.مکانیسم ارث بری کلاسکلاس مشتق شده هر متد کلاس پایه خود را override می کند.یک متد می تواند متد کلاس پایه را با همین نام فراخوانی کند.کلاس های پایتون توسط کلمه کلیدی “class” تعریف می شوند.در داخل کلاس ها می توانید توابع یا متد هایی را تعریف کنید که جزئی از کلاس هستند.همه چیز در کلاس تو رفتگی دارد ، دقیقاً مانند کد موجود در تابع ، حلقه ، شرط if و غیره.آرگومان self در پایتون به خود شیء اشاره دارد. Self نامی است که توسط پایتون برای نشان دادن اولین پارامتر متد های نمونه در پایتون استفاده می شود.در پایتون ، یک کلاس می تواند ویژگی ها و متد های رفتاری را از کلاس دیگری به نام زیر کلاس یا وارث به ارث ببرد.</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Wed, 14 Apr 2021 09:32:11 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی و جمع بندی کلی ویندوز 10</title>
                <link>https://virgool.io/@adibshamil/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%88-%D8%AC%D9%85%D8%B9-%D8%A8%D9%86%D8%AF%DB%8C-%DA%A9%D9%84%DB%8C-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-10-owbdid6tsipv</link>
                <description>مایکروسافت چندین سال پیش جدیدترین نسخه از سیستم عامل خود را با قابلیت ها و بهبودهای متعددی عرضه کرد و در دنیای کامپیوترها هیجان بسیار زیادی را به پا کرده است.اما ویندوز 10 نسبت به ویندوز 8.1 چه برتری هایی دارد و آیا دلایل کافی برای ارتقای به آن وجود دارد؟ پاسخ این سوال و دیگر ابهامات خود نسبت به ویندوز 10 را می توانید در بررسی عملی پیش رو بیابید.در سال 2012 مایکروسافت با هیاهوی زیادی ویندوز 8 را معرفی کرد که به گفته مدیر عامل وقت این کمپانی، استیو بالمر، سیستم عاملی بود که می توانست جهان را متحول کند.در اصل از ویندوز 8 به عنوان جایگزینی مدرن برای ویندوز 7 یاد می شد و مدیران این کمپانی از آن به عنوان نسخه ای بهبود یافته از ویندوز 7 با قابلیت های جدیدی که برای دنیای مدرن طراحی شده بود، نام می بردند.اما بر خلاف شعارها، ویندوز 8 مشکلات مهمی با خود داشت و یا دست کم کاربران از آن ایراد می گرفتند،این سیستم عامل برخی از قابلیت های ویندوز 7 نظیر استارت منو و جلوه پنجره های شفاف Aero را با خود نداشت که برای بسیاری از کاربران تعیین کننده بود و معادلات مایکروسافت را بهم ریخت.استفاده از ویندوز بدون استارت منو برای کاربران تازه کار بسیار مشکل بود. با این حال کاربران نسخه های پیشین، نرم افزار های ثانویه شبیه ساز استارت منو را بخدمت گرفتند و تا حدودی می توانستند با فقدان استارت منو کنار بیایند.این مشکل غیر منتظره و شاید هم پیش بینی شده که یک ماه پس از عرضه ویندوز 8 به استعفای سرپرست بخش ویندوز انجامید، بر روی سهم ویندوز 8 از بازار سیستم عامل ها تاثیر بسیار منفی گذاشت و اغلب کاربران روی خوشی به این سیستم عامل &quot;مدرن&quot; نشان ندادند و بسیاری از آن به عنوان یک ویندوز ویستای دیگر و شکستی دیگر نام می بردند. ویندوز 8 در انجام ماموریت خود که جذب کاربران نسخه های پیشین بود شکست خورد و تنها کمی بیش از 10% بازار را در دست گرفت.یک سال پس از عرضه ویندوز 8، مایکروسافت کوشید برخی مشکلات بنیادین این سیستم عامل را که آماج بیشترین انتقادات بودند با بروزرسانی که ویندوز 8.1 خوانده می شد برطرف سازد. با ویندوز 8.1 یکبار دیگر دکمه صفحه استارت و نه استارت منو بازگشته بود و تغییراتی نیز برای استفاده آسان تر این سیستم عامل اعمال شد.همانند نسخه پیش از خود، ویندوز 8.1 به میزان بسیار کمی توانست به ایده ویندوز مدرن که در اصل برای دستگاه های لمسی طراحی شده بود کمک کند و هنوز هم بسیاری از کاربران ویندوز 7 را ترجیح می دادند. شاید مایکروسافت تصور می کرد که همانند دنیای موبایل، به سرعت نمایشگرهای لمسی در کامپیوترها نیز رواج پیدا کنند و کمتر کسی از ماسو و صفحه کلید استفاده کند. بنابراین برای همگان واضح بود که مایکروسافت به آغازی مجدد نیاز دارد؛ ویندوزی که به طور خاصی می بایست برای تامین خواسته کاربران و احترام به بازخورد آنها ساخته شود.یک ویندوز، یک پلتفرم یکپارچه، یک خانوداهدر اواخر ماه سپتامبر سال 2014 مایکروسافت از ویندوز 10 خبر داد و تصمیم به گذر از ویندوز 9 بنابر دلایل نامشخصی گرفت. هم زمان با ویندوز 10 مایکروسافت از برنامه ویندوز اینسایدر پرده برداشت که به کاربران امکان دانلود نسخه های پیش نمایش ویندوز 10 و تجربه آن را می داد تا بازخوردهای خود را برای ساخت سیستم عاملی بهتر به مایکروسافت بازتاب دهند. مایکروسافت در مجموع 15 بیلد آزمایشی از نسخه پیش نمایش ویندوز 10 را در اختیار شرکت کنندگان در برنامه ویندوز اینسایدر قرار داد که هر یک از آنها با رفع اشکالات، بهبودها و قابلیت های جدیدی همراه بودند.ویندوز 10 در روز 15 ژوئیه به فاز RTM رسید اما هیچگاه این مسئله به طور رسمی تایید نشد. در آن زمان گفته می شد که بیلد 10240 نسخه پیش نمایش ویندوز 10، همان نسخه RTM است که برای عرضه در روز 29 ژوئیه زمانبندی شده و عملاً هم همینطور بود.سرانجام ویندوز 10 از راه رسید و نامه ابراز علاقه مایکروسافت به کاربران سنتی کامپیوترهای رو میزی (دسکتاپ) و لپ تاپ در سراسر دنیا بود. این بار افزون بر تجربه لمسی تمام صفحه ویندوز 8، دسکتاپ کلاسیک نیز برای کاربرانی که از ماوس و صفحه کلید استفاده می کنند بازگشته بود. با ویندوز 10 مایکروسافت دست به انتخاب هایی دشوار اما سرنوشت ساز زد و بیش از آنکه به نسخه پیش از خود؛ ویندوز 8 شباهت داشته باشد، بیشتر به ویندوز 7 شباهت دارد و عملاً تلاشی برای جذب کاربران ویندوز 7 بود که به ارتقا به ویندوز 8 تن نداده بودند. اما چه بر سر ویندوز 9 آمد؟در حقیقت مایکروسافت با ویندوز 10 دست به قمار بزرگی زده است و برای نشان دادن عظمت آن، نیاز بود که به بجای یک گام همیشگی، دو گام رو به جلو پیش برود. با اینکه ویندوز 10 به طور خاص برای کاربرانی که از ماوس و صفحه کلید استفاده می کنند طراحی شده است اما برای کاربران تبلت ها نیز معجزه می کند. بر خلاف ویندوز 8 که بطور خاص برای دستگاه های لمسی طراحی شده بود؛ ویندوز 10 بصورت هم زمان برای هر دو آنها طراحی شده و چه در حالت لمسی و چه با ماوس و صفحه کلیدکلاسیک؛ عملکردی درخشان را از حود به نمایش می گذارد.ویندوز 8 واقعاً ناامید کننده بود، همه ما این را بخوبی می دانیم، مایکروسافت نیز خود نسبت به این مسئله آگاه است و ویندوز 10؛ تلاشی است برای رفع اشتباهات گذشته بزرگترین شرکت دنیای نرم افزار.قابلیت های جدیدویندوز 10 برای خلق تجربه ای یکسان از دستگاه های مختلف طراحی شده است و نه تنها کامیپوترها، بلکه تبلت ها، اسمارت فون ها، کنسول بازی ایکس باکس و دستگاه های مبتنی بر اینترنت اشیاء را نیز شامل می شود. مایکروسافت با ویندوز 10 می کوشد بستری یکپارچه برای کاربران را فراهم کند. یک فروشگاه واحد امکان دست یابی به برنامه ها و بازی ها بر روی تمامی دستگاه ها را ممکن می سازد.در ادامه نگاهی خواهیم داشت بر مهمترین تغییرات ویندوز 10 نسبت به ویندوز 8/8.1 و به معرفی قابلیت های جدید می پردازیم.دسکتاپ (میزکار)با دسکتاپ شروع می کنیم؛ نمای جلویی ویندوز 10 که پیش از هرچیزی خود نمایی می کند. دسکتاپ اولین چیزی است که پس از لاگین به سیستم خود مشاهده می کنید و جایی است که تقریباً تمام مواقع استفاده از سیستم را در آنجا به سر می برید. در ویندوز 8/8.1 زمانی که کاربران به برنامه های تحت محیط Windows Store نظیر Music و یا Settings سویچ می کردند؛ میان محیط دسکتاپ و رابط کاربری با محوریت لمسی در دوگانگی عجیبی قرار می گرفتند. این مسئله باعث سردرگمی بسیاری از کاربران شده بود، بنابراین در ویندوز 10، همه چیز تحت محیطی یکپارچه به نام desktop اجرا می شود.اکنون برنامه ها تحت محیط پنجره ای اجرا می شوند، حتی برخی برنامه های خاص تحت Windows Store نظیر Music و Settings نیز شامل این تغییر می شوند. اکنون می توان آنها را همانند تمامی برنامه های معمولی Desktop که در ویندوز یافت می شود؛ تغییر اندازه داد، جابجا کرد، آنها را Minimize کرد و یا به سادگی بست. اکنون دسکتاپ بستر همه برنامه ها در ویندوز است.رابط کاربری ویندوز نیز بکلی بهبود یافته و استفاده از آن راحت تر از همیشه است. با اینکه با رابط کاربی نسبتاً متفاوتی روبرو هستیم، شخصاً در بکارگیری آن؛ راحتی بالایی را تجربه کرده ام.بازگشت استارت منو (Start Menu)شاید این مسئله برای برخی کاربران اهمیت خاصی نداشته باشد اما مایکروسافت در بازگرداندن استارت منو به ویندوز، به نوعی وسواس به خرج داده است. مایکروسافت بازگشت استارت منو را یکی از دلایل کاربران برای ارتقا به ویندوز 10 دانسته و با توجه به تبلیغات گسترده ای با محوریت بازگشت استارت منو، غیر مستقیم تایید می کند که حذف استارت منو در ویندوز 8 یک اشتباه بزرگ بود. استارت منو در ویندوز 10 با قابلیت های مُدرنی بازگذشته و طراحی کلاسیک استارت منوی ویندوز 7 اکنون با کاشی های زنده که از Start screen ویندوز 8 گرفته شده، بهبود یافته است. به عبارتی استارت منوی ویندوز 10 ترکیبی از Start screen ویندوز 8 با استارت منوی ویندوز 7 است. با این حال تغییرات به همین جا ختم نمی شود و منوها، آیکون ها و فونت های جدیدی برای ایجاد ظاهری نو بکار گرفته شده اند. شما می توانید لیست برنامه های با بیشترین استفاده را داشته باشید و هم زمان در بخش قابل شخصی سازی، میانبر برنامه های مورد نظر خود را برای دسترسی سریع اضافه کنید.در سمت راست استارت منو، شما همان کاشی های زنده ویندوز 8.1 را شاهد خواهید بود. بخش کاشی های زنده را همانند Start Screen ویندوز 8.1 می توانید آن گونه که می خواهید شخصی سازی کنید. شما قادر هستید که کاشی ها را جابجا کنید، برنامه ها را از لیست اضافه و یا حذف کرده و حتی استارت منو را تغییر اندازه دهید. اکنون می توانید استارت منو را عریض تر و یا بلند تر کنید. حتی می توانید آن را بسیار کوچک کنید؛ این شما هستید که همه چیز را تعیین می کنید! اگر کاربر مایل به استفاده از همان Start Screen ویندوز 8.1 باشد، به آسانی می تواند آن را از طریق Settings فعال کند. با اینکه مایکروسافت برخی رفتارهای استارت منو را در ویندوز 10 نسبت به ویندوز 7 تغییر داده است اما همان اصول پیشین پا برجاست و همانند ویندوز 8، کاربر سردرگم نمی شود. معرفی دوباره استارت منو به شما امکان اجرای سریع برنامه ها را در محیط desktop می بخشد و به لطف کاشی های زنده، قادر به مشاهده پیش نمایش آنها خواهید بود.استفاده از استارت منو بی نهایت ساده و آسان است و حتی کسانی که مایل به استفاده از آن نباشند؛ Start screen ویندوز 8.1 نیز در دسترس است. مایکروسافت قابلیت های شخصی سازی زیادی را برای ظاهر و جلوه های بصری(افکت) استارت منو تعریف کرده است و می توان رنگ ها، شفافیت و افکت های مختلفی را اعمال کرد. همچنین در استارت منوی جدید قابلیت جستجو نیز فراهم شده است که در نوار وظیفه جای گرفته و هم زمان با تایپ، نتایج به صورت آنی نمایش داده می شوند.File Explorerدر ویندوز 10، File Explorer نیز دچار تغییرات شده و بهبود هایی با خود دارد. یکی از این تغییرات، افزوده شدن ناحیه Quick Access یا دسترسی سریع می باشد که به شما امکان دسترسی سریع به مکان های با بیشترین تعداد دفعات مراجعه را می دهد. همچنین لیستی از فایل اخیر را نیز در اختیار شما می گذارد و در دسترسی سریع به فایلها و پوشه ها، شما را یاری می کند. شما می توانید این قابلیت را غیر فعال و یا حتی پوشه ها و فایل ها را به آن اضافه کنید.یکی از تغییرات مهم File Explorer با ویندوز 10؛ گنجاندن پشتیبانی بیشتر از سرویس OneDrive است. در ویندوز 10 برنامه جداگانه ای برای استفاده از سرویس OneDrive گنجانده نشده و تمامی امور آن توسط File Explorer صورت می گیرد. از این پس دیگر فایل هایی که از سرویس OneDrive فراخوانی می کنید، بر روی دیسک سخت کامیپوتر دانلود می شوند که البته می توان برای آن دانلود خودکار نیز شرایطی تعریف کرد. با این حال از نظر حریم خصوصی و امنیت، قابلیت جالبی به نظر نمی رسد.دسکتاپ های متعدد با Task Viewتا این بخش صرفاً به قابلیت هایی از ویندوز 10 پرداختیم که آن را از ویندوز 7 و یا 8.1 به ارث برده است. در ادامه به معرفی قابلیت های جدید ویندوز 10 می پردازیم.دسکتاپ چندگانه یا چندین دسکتاپ بصورت هم زمان؛ قابلیتی است که هم اکنون در سیستم عامل های رقیب نظیر اوبونتو یافت می شود و یکی از تقاضا های کاربران طی چند سال اخیر از مایکروسافت بوده است که اکنون این کمپانی تصمیم به افزودن آن به سیستم عامل خود گرفته است. می توان به آسانی از طریق دکمه Task view که از پیش در نوار وظیفه (Task Bar) جای گرفته، به این ابزار جدید دست یافت، از این رو با کلیک بر روی آن می توان دسکتاپ های جدیدی ساخت و یا تنها از طریق یک کلیک میان آنها سویچ کرد. همچنین میانبر های صفحه کلید نیز برای انجام این کار تعریف شده است. با قابلیت Task View ویندوز 10 می توانید به آسانی چندین دسکتاپ برای مدیریت بهتر برنامه ها بسازید. برای نمونه سه دسکتاپ مجزا، یکی برای وبگردی، یکی برای گیمینگ و یکی برای کارهای اداری تعریف می کنید، هر دسکتاپ تنظیمات خود را خواهد داشت و می توانید یک برنامه خاص را بصورت هم زمان و بدون هرگونه مشکلی در دسکتاپ های مختلف اجرا کنید. در Task View به آسانی می توانید برنامه ها را با کشیدن و رها کردن بین دسکتاپ های مختلف حرکت دهید.قابلیت Task View بیشتر برای کاربران حرفه ای که بصورت هم زمان چندین برنامه مختلف را اجرا می کنند، طراحی شده است اما مطمئناً می تواند برای کاربران معمولی نیز مفید و کاربردی باشد. البته این قابلیت می تواند برای کارمندان ادارات نیز استفاده دیگری داشته باشد که احتمالاً خودتان آن را حدس می زنید!مایکروسافت خود Task View را به عنوان گونه بهبود یافته ای از قابلیت Alt + Tab و امکان سویچ میان برنامه های در حال اجرا توصیف کرده است. شاید جالب باشد که بدانید کمتر از 10% کاربران ویندوز از قابلیت Alt + Tab این سیستم عامل استفاده می کنند، بنابراین حرکت هوشمندانه ای به نظر می رسد.Task View این امکان را به شما می بخشد تا به از یک نوار وظیفه واحد (Task Bar) برای مشاهده تمامی برنامه های در حال اجرا در دسکتاپ های متعدد استفاده کنید. البته در هر دسکتاپ یک نوار وظیفه جداگانه نیز وجود خواهد داشت.دستیار شخصی دیجیتال ویندوز، Cortanaیکی دیگر از قابلیت های جدید در ویندوز 10، Cortana یا دستیار صوتی دیجیتال ویندوز می باشد. با اینکه Cortana خود چیز جدیدی محسوب نمی شود و از سال 2013 با ویندوز فون شاهد آن بوده ایم، اما این اولین باری است که به دنیای کامپیوترها و بطور خاص دسکتاپ وارد می شود. متاسفانه این قابلیت برای ما ایرانیان در دسترس نیست و از زبان فارسی نیز پشتیبانی نمی کند اما کاربرانی که مدتی از آن استفاده کنند، دیگر نمی توانند از آن دست بکشند!Cortana دستیار شخصی جدید شما در ویندوز 10 است و همانند یک دستیار در دنیای واقعی شمارا در انجام کارهایتان یاری می کند. وی از طریق نوار جستجوی جدیدی که در نوار وظیفه جای گرفته قابل دسترسی است که البته می توان آن را حذف کرد. با اجرای اولیه Cortana؛ وی از شما سوالاتی می پرسد که شناخت بهتری از شخصیت شما داشته باشد. پس از طی کردن مرحله آشنایی، Cortana در پیشبرد برنامه های تان، شما را یاری می کند. وی روز به روز شناخت بیشتری از شما پیدا می کند و جزئیات جدید را به حافظه می سپارد، البته می توانید از وی بخواهید که اطلاعات شخصی شما را به حافظه نسپارد.اما اکنون احتمالاً می پرسید که به عنوان یک دستیار شخصی؛ Cortana چه کاری انجام می دهد؟ می توانید از وی بخواهید خبرها، بورس و هواشناسی را دنبال کند. بر روی رویداد خاصی تمرکز کند و تازه ترین جزئیات را در اختیار شما بگذارد. برای شما تایپ کند. یادداشت ها و سررسید ها را ثبت و یادآوری کند. برنامه های سفر، پرواز ها و حمل و نقل را دنبال کند، به سوالات شما با استفاده از جستجوی اینترنتی پاسخ دهد، او یک دستیار شخصی به تمام معنا است، هر چیزی که از او بپرسید، پاسخی برای آن دارد.Action Centerیکی دیگر از قابلیت های ویندوز 10 که از ویندوز فون به این سیستم عامل رسیده؛ Action Center نام دارد. این قابلیت تمامی اعلان ها، هشدار ها و پیام ها را در یک مکان متمرکز می کند و با بکارگیری آن؛ آسان تر از همیشه می توانید رویدادها را مدیریت کنید.اعلان های به نمایش در آمده در Action Center را می توان به آسانی و تنها با کلیک و یا کشیدن آنها به طرفین، مدیریت کرد. برخی از اعلان ها را نیز می توان از طریق Action Center و بدون نیاز به باز کردن، کنترل کرد، چراکه گزینه های قابل انجام همراه با آنها به نمایش در می آیند. البته برای کار می بایست خود برنامه از اعلان های دارای عکس العمل پشتیبانی کند. Action Center نیز از همان جلوه بصری مُدرن ویندوز 10 استفاده می کند، از این رو شاهد تم تیره و پنجره های شفاف با جلوه محو شدگی هستیم.مرورگر تازه نفس Microsoft Edgeسیستم عامل جدید مایکروسافت، مرورگر اینترنت کاملاً جدیدی نیز با خود دارد که نه تنها از موتور جدید، بلکه از رابط کاربری تازه ای نیز برخوردار است. Microsoft Edge جایگزین مرورگر اینرنتت اکسپلورر می شود و هم زمان به رقابت با مرورگرهای امروزی نظیر فایرفاکس و گوگل کروم می پردازد. افزون بر قابلیت های رایج مرورگرهای اینترنت که در Microsoft Edge یافت می شود؛ بزودی پشتیبانی از افزونه نیز به آن اضافه می شود. به لطف بکارگیری موتور جدید، Edge بسیار سریع است و به گفته خود مایکروسافت، با بروزرسانی های آتی؛ بهتر از این هم می شود. تم تیره این مرورگر بخوبی با ظاهر ویندوز 10 همخوانی دارد.رابط کاربری Edge تقریباً همانند دیگر مرورگرهای امروزی است. در قسمت فوقانی بخش آشنای تب ها جای گرفته و در قسمت پایین تر آن دکمه های پیمایش و نوار آدرس قرار گرفته است. در بخش Hub؛ لیست علاقمندی ها، تاریخچه، لیست مطالعه و دانلود ها قرار دارد. افزودن صفحات به لیست مطالعه به سادگی و از طریق نوار آدرس صورت می گیرد که می توانید صفحات را برای مطالعه ذخیره کنید. این قابلیت در اینترنت اکسپلورر 11 با ویندوز 8.1 نیز وجود دارد و چیز جدیدی نیست اما به ویندوز 10 راه یافته است.یکی دیگر از قابلیت های جدید در مرورگر Edge امکان inking یا هایلایت و خط کشیدن بر روی محتوای صفحات وب است. با بکار گیری این قابلیت می توانید بصورت آنی زیر و یا اطراف نوشته ها خط بکشید. این قابلیت بیشتر برای وسائل لمسی کاربرد دارد اما می توان با ماوس و صفحه کلید نیز از آن بهره گرفت.Edge قابلیت تعامل با Cortana را نیز داراست و تجربه ای بهتر و جذاب تر از وبگردی را خلق می کند. Cortana شما را در وبگردی همراهی می کند و اطلاعات مهم را از صفحات استخراج و به شما ارائه می کند.Windows Storeمایکروسافت فروشگاه اینترنتی ویندوز یا store را باز طراحی کرده است و میان دستگاه های مختلف مبتنی بر ویندوز 10، ظاهر یکسانی خواهد داشت که یک گام دیگر برای دست یابی به تجربه ای همسان میان تمامی دستگاه های مبتنی بر ویندوز 10 است. علاوه بر ساده تر شدن استفاده از store؛ رابط کاربری آن میان کامپیوتر، موبایل و تبلت های مبتنی بر ویندوز 10 یکسان است. مایکروسافت از One Store (فروشگاه یکپارچه ویندوز برای تمامی دستگاه ها) به عنوان مکانی برای دست یابی به هرچیزی شامل برنامه ها، بازی ها، فیلم و تلویزیون و موزیک نام برده است.افزون بر ارائه برنامه و بازی، اکنون فروشگاه ویندوز؛ فیلم، نمایش های تلویزیونی و موزیک را نیز در اختیار کاربر می گذارد. برای خرید فیلم ها و آلبوم های موسیقی، نیاز به هیچ برنامه دیگری نیست و همه چیز از طریق خود store صورت می گیرد. مایکروسافت به توسعه دهندگان برنامه این امکان را می دهد تا برنامه های تحت desktop خود را در store قرار دهند. برنامه های desktop دانلود شده؛ به منظور امنیت هرچه بیشتر در محیط ایزوله و تحت ماشین مجازی اجرا می شوند.سفارشی تر از همیشه با Windows Helloاین قابلیت جدید؛ کاربران را شناسایی می کند و برای هر یک از آنها، محیطی امن و شخصی را فراهم می کند تا بیشترین سطح از سفارشی سازی را تجربه کنند. Windows Hello از روش های شناسایی زیست سنجشی شامل اثر انگشت، چهره و حتی عنبیه چشم بهره می گیرد. البته این قابلیت به سخت افزارهای سازگار با آن نیاز دارد که در همه سیستم ها یافت نمی شود. با این حال اگر سیستم شما سخت افزار های جانبی لازم را دارا باشد، شما می توانید بیش از همیشه نسبت به امنیت حریم خصوصی خود اطمینان خاطر داشته باشید.رابط برنامه نویسی DirectX 12ویندوز 10 نه تنها نزد کاربران معمولی بلکه نزد گیمرها نیز از اهمیت بسیار خاصی برخوردار است. مایکروسافت نسخه جدیدی از کتابخانه برنامه نویسی DirectX و رابط برنامه نویسی آن را ویندوز 10 بکار گرفته و هم گیمرها و هم توسعه دهندگان بازی های ویدئویی را به جهشی عظیم در کارایی پردازشی گرافیکی امیدوار کرده است. از این رو گیمرها با هیجان بسیار خاصی به ویندوز 10 چشم دوخته اند. DirectX 12 به توسعه دهندگان بازی ها این امکان را می بخشد که تا بطور بسیار بهینه تری منابع سخت افزاری را مورد استفاده قرار دهند. مایکروسافت خود وعده تا 50% کاهش بار پردازشی پردازنده مرکزی و تا 20% افزایش کارایی پردازنده گرافیکی را با پردازنده گرافیکی فعلی داده است. بنابراین DirectX 12 یک ارتقای رایگان برای سخت افزاری های فعلی و پتانسیلی برای سخت افزار های آتی خواهد بود. DirectX 12 امکان تعامل در سطح نزدیک تری (پایین تر) با سخت افزار را ممکن می کند و بازی های مبتنی بر آن، به طرز چشمگیری کمتر از پردازنده مرکزی استفاده می کنند و با همان پردازنده می توان تعداد فرامین ترسیم بیشتری را نسبت به DirectX 11 اجرا کرد. از این رو نیاز به پردازنده های قدرتمند برای اجرای بازی ها کاهش می یابد.DirectX 12 جدیدترین رابط برنامه نویسی مایکروسافت خواهد بود و به منظور بهبود بکارگیری منابع سخت افزاری در پلتفرم های مختلف طراحی شده است. این نگارش جدید از کنسول ها، تبلت ها و حتی تلفن های همراه مجهز به ویندوز 10 نیز پشتیبانی می کند. اولین چیزی که نسبت به DirectX 12 می دانیم؛ خلق آن به منظور کاهش بار پردازشی فرامین ترسیم گرافیکی از دوش پردازنده مرکزی یا CPU است که در بسیاری مواقع ترکیب یک پردازنده مرکزی ضعیف با پردازنده گرافیکی قوی به ایجاد گلوگاه برای کارت گرافیک منجر می شود. از این رو با DirectX 12 می توان تمامی پتانسیل ممکن پردازنده مرکزی را مورد استفاده قرار داد. از دیگر قابلیت های مهم DirectX 12 می توان به امکان دسترسی در سطح پایین به منابع سخت افزاری اشاره کرد که توسعه دهندگان را در تولید کدهایی به مراتب سریعتر و بهینه تر یاری خواهد کرد، چرا که کنترل بسیاری خوبی بر روی منابع سخت افزاری خواهند داشت.افزون بر این قابلیت ها بهبود های مهم، ویندوز 10 صدها بهبود دیگر با خود دارد که در استفاده روزانه و به مرور متوجه آنها خواهید شد. برای نمونه ویندوز 10 بصورت پیش فرض تم تیره ساده ای را انتخاب می کند اما چندین تم زیباتر نیز وجود دارند. این سبک بصری تیره در دیگر برنامه ها و بخش ویندوز 10 نظیر مرورگر Edge نیز بکار گرفته شده است که البته قادر به تغییر آن خواهید بود، پس در ویندوز 10 به ماجراجویی دست بزنید!دیگر تغییراتهم زمان ویندوز 10 دارای منوی های جدیدی در بخش های مختلف برای حس مُدرنتری است، برای نمونه می توانید بر روی برنامه هایی که در نوار وظیفه جای گرفته اند؛ کلیک کنید تا پیش نمایش آنها بدون نیاز به اجرا کردن، نمایش داده شود. ویندوز 10 مجموعه کاملاً جدیدی از آیکون ها را باخود دارد و افزون بر حس تازگی، تجربه ای مدرن تر را نیز فراهم می کند. با این حال در بیلدهای آزمایشی برخی کاربران نسبت به آیکون های پیش فرض ناراضی بودند که مایکروسافت چندین بار ناچار به تغییر آنها شد و می توان گفت که آیکون های فعلی، بهترین ها هستند. با رابط کاربری ویندوز 10، شما در انجام تقریباً هر کاری شاهد جلوه های بصری زیبا و چشم نوازی خواهید بود. هم زمان حاشیه پنجره ها در بخش نوار نام کمتر شده است.شاید بتوان گفت که همواره یکی از ناکارآمدترین برنامه های پیش فرض سیستم عامل ویندوز؛ مدیا پلیر بوده است که عملاً هیچ گاه بهبود قابل توجی نداشته است. متاسفانه با ویندوز 10 نیز این رویه تغییری نکرده است. با این حال اکنون پشتیبانی از فرمت های MKV و FLAC بصورت پیش فرض به آن افزوده شده است.مایکروسافت رسماً در نظر دارد تا Control Panel را از این سیستم عامل کنار بگذارد. البته هنوز هم در ویندوز 10 کنترل پنل وجود دارد اما بعدها و با بروزرسانی های عمده، کنار گذاشته می شود. از این رو جایگزین کردن Settings بجای کنترل پنل آغاز شده و برای تغییر بسیاری از تنظیمات، کاربر به Settings هدایت می شود. با اینکه هم اکنون هر دو کنترل پنل و Settings در ویندوز 10 در دسترس هستند، اما برخی تنظیمات تنها از طریق Settings قابل دسترسی است، پس باید استفاده از آن را پیش بگیریم و برای حذف آن در آینده، آماده باشیم.سخن پایانیمایکروسافت در ساخت ویندوز 10 واقعاً عملکرد تحسین برانگیزی داشته است و عوامل زیادی را برای خلق بهترین سیستم عامل ممکن در نظر گرفته است. ویندوز 10 تلفیقی از بهترین قابلیت های ویندوز 7 و ویندوز 8.1 است و اگر پیوند ویندوز 7.1 با ویندوز 8.1 را متصور شویم؛ مطمئناً فرزند آنها ویندوز 10 خواهد بود. مایکروسافت به وضوح از اشتباهات خود در گذشته با ویندوز 8.1 درس گرفته و در ویندوز 10 بسیاری از اشتباهات بزرگ خود را جبران کرده است که مهترین آنها، آشتی دوباره با کاربرانی است که از صفحه کلید و ماوس استفاده می کنند. از آنجایی که ویندوز 10 در آینده بروزرسانی می شود و قابلیت ها و بهبود های جدیدی به خود می بیند، مطمئناً می تواند بهتر از این هم باشد.در پایان به شما(کسانی که هنوز وین 7،8 یا 8.1 دارید) پیشنهاد می کنیم که جدیدترین دست آورد مایکروسافت را تجربه کنید و به جستجوی تازه ها بپردازید...</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Thu, 08 Apr 2021 12:14:59 +0430</pubDate>
            </item>
                    <item>
                <title>طراحی وبسایت با پایتون (۵ مرحله اصلی)</title>
                <link>https://virgool.io/pythoniha/%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DB%B5-%D9%85%D8%B1%D8%AD%D9%84%D9%87-%D8%A7%D8%B5%D9%84%DB%8C-qysgvpejnoqg</link>
                <description>سلام دوستان بعداز دو مقاله قبلیم امروز تصمیم گرفتم به مبانی طراحی وبسایت با پایتون بپردازملایک و کامنت یادتون نره.من رو فالو هم بکنید تا نوشته های بعدیمو از دست ندین.پایتون در چند سال گذشته، محبوبیت زیادی پیدا کرد. زبان برنامه ریزی در جاوا بیش از بقیه محبوبیت پیدا کرده است اما برای خیلی از افراد این موضوع اصلا جای تعجب ندارد. با افزایش یادگیری در مورد دستگاه ها ، آنالیز دیتا، و اپلیکیشن وب، بسیاری از توسعه دهندگان از پایتون برای مجموعه برنامه های قدرتمند و فراوانی استفاده می کنند، که هماهنگی قسمت های مختلف و جابجایی در آن راحت است. بدون شک اکنون زمان خوبی برای توسعه دهندگان پایتون است. امروز یاد می گیرید که پایتون چگونه برای ساخت وب سایت مورد استفاده قرار می گیرد.در این مقاله موضوعات زیر را پوشش می دهیم:توسعه وبسایت چیست؟چه چیزی پایتون را برای ساخت وبسایت مناسب کرده است؟چارچوب های وبسایت پایتونمجموع برنامه های پایتون برای ساخت وبیک نقشه راه برای توسعه دهندگان وبسایت با پایتونچگونگی ایجاد اولین اپلیکیشن وب در پایتونتبدیل شدن به توسعه دهنده وب پایتونتوسعه وب سایت چیست؟برای افرادی که در کار برنامه نویسی تازه کار هستند، شاید معنی دقیق توسعه وبسایت برایشان عجیب و ناشناخته باشد. البته که شرح معنی دقیق آن تقریبا غیر ممکن است، توسعه وب تقریبا یک نوع ساخت، ایجاد، و پشتیبانی کردن از وبسایت هاست. معمولا توسعه وب یک فروت اند (Frontend)، هرچیزی که با مشتری تعامل داشته باشد و یک بک اند(backend) ، چیزی که شامل منطق بیزینس می شود و با دیتابیسس تعامل برقرار می کند را شامل می گردد.چه چیزی پایتون را به یک گزینه مناسب برای توسعه وب تبدیل کرده است؟مزایای اپلیکیشن های وب در پایتونیادگیری آسان: پایتون محبوب ترین زبان برای یادگیرندگان است و آن هم یک دلیل دارد. زبان آن روی عبارارت رایج و فضای سفید تمرکز می کند که باعث می شود شما کدهای کمتری را نسبت به دیگر زبان ها مثل جاوا یا C++ بنویسید. نه تنها این، بلکه موانع کمتری برای داخل شدن دارد، زیرا شباهت بیشتری نسبت به زبان مورد استفاده شما دارد، بنابراین کدها را راحت تر می فهمید.کارخانه ها و اکوسیستم های غنی. پایتون طیف وسیعی از ابزارهای کارخانه و پکیج ها را پیشنهاد می شود که به شما اجازه می دهد به کدهای از پیش نوشته شده بیشتری دسترسی داشته باشید و زمان توسعه اپلیکیشن خود را کمتر کنید. مثلا شما به نامپی و پانداس برای آنالیز محاسباتی، به pygal برای نموداربندی، و SLQALchemy برای ایجاد سوالات دسترسی دارید. پایتون همچنین فریم ورک های اعجاب انگیزی را مانند فلاسک و جنگو را پیشنهاد می کند که بعدا در این مقاله به آن خواهیم پرداخت.طرح اولیه سریع: از آنجایی که پایتون زمان کمتری را برای ساخت پروژه در مقایسه با دیگر زبان های برنامه نویسی می گیرد، در نتیجه ایده های شما سریع تر اجرایی می شوند و به شما اجازه می دهد که بازخورد بگیرید و سریع تر کار را تکرار کنید. این زمان توسعه سریع باعث می شود که پایتون به یک برنامه عالی برای استارتاپ های مارکت تبدیل شود که می خواهند سریع تر وارد عرصه رقابتی شوند.مجبوبیت وسیع تر: پایتون یکی از محبوب ترین زبان ها در دنیا و جوامع در سراسر جهان است. بخاطر میزان محبوبیت این زبان، پایتون به طور مداوم ویژگی ها و کارخانه های جدید را آپدیت می کند، در حالی که اجتماع و اسناد را ساپورت می کند. پایتون مخصوصا برای توسعه دهندگان تازه کار، ساپورت گسترده و چارچوبی را برای افرادی که می خواهند این مسیر را در پیش بگیرند، فراهم می کند.چارچوب های وب پایتونچارچوب های وب چیست، و چرا مهم هستند؟در مورد جعبه ابزار فکر کنید. یک فریم ورک وب، مجموعه ای از پکیج ها و مدل های از پیش نوشته شده، کد استاندارد شده است که ساخت اپلیکیشن های وب را ایجاد می کند و باعث می شود که توسعه سایت سریع تر و آسان تر پیش برود و برنامه های شما قابل اعتمادتر و با مقیاس بندی همراه باشند. به عبارت دیگر، چارچوب ها اجزای درونی دارند که پروژه شما را “تنظیم می کنند”، بنابراین در میانه راه کمتر با مشکل مواجه می شوید.فریم ورک های وب پایتون فقط در تکنولوژی کناری سرور در بک اند قرار گرفته اند، و به روت در URL کمک می کنند، درخواست ها و پاسخ های HTTP را ایجاد می کنند و به دیتابیس دسترسی دارند و باعث امنیت وبسایت می گردند. در حالیکه به استفاده از چارچوب وب نیاز نیست، اما آن را به شدت پیشنهاد می کنیم، زیرا به شما کمک می کند اپلیکیشن های پیچیده را در مدت زمان کمتر توسعه دهید.فریم ورک های محبوب وب پایتون کدام ها هستند؟جنگو و فلاسک از طریق حاشیه پهن، جزء مجبوب ترین فریم ورک های توسعه وب پایتون است.جنگو یک چارچوب پایتون است که یک منبع باز را پیشنهاد می دهد که یک چارچوب با سطح بالا است که “توسعه سریع و تمیز و با طراحی برنامه ریزی شده را ایجاد می کند.” این چارچوب سریع، امن و مقیاس پذیر است. جنگو حمایت امنیتی قوی همراه با اسناد مربوط به جزئیات را به همراه دارد.جنگو به شدت انعطاف پذیر است که در آن می توانید با MVP ها برای کمپانی های بزرگتر کار کنید. از دیدگاه بعضی ها، بعضی از بزرگ ترین کمپانی هایی که از جنگو استفاده می کنند، اینستاگرام، دراپ باکس، پینترست و اسپاتیفای هستند.فلاسک یک چارچوب میکرو است که یک چارچوب مینیمالیستی محسوب می گردد و کمتر “شامل باتری” می شود و به معنای کمبود عملکردها و ویژگی ها است و مانند جنگو ویژگی های کامل را مثل موتور طرح وب، حساب رسی و سندیت را ارائه نمی دهد.فلاسک یک برنامه مینیمالیستی و سبک است، به معنای اینکه ویژگی ها و مجموع برنامه هایی را ارائه می دهد که بدون استفاده از چارچوب یا فریم ورک آن، می توانید به آنها کد بدهید. فلسفه پشت فلاسک، این است که اجزایی را به شما می دهد که نیاز دارید برای یک اپلیکیشن بسازید، بنابراین شما به اندازه کافی انعطاف پذیری و کنترل دارید. فلاسک همچنین یک چارچوب وب قدرتمند و رایج است که برای کمپانی های بزرگ مانند نتفلیکس، لینکدین و Ubar استفاده می شود.کدام را باید استفاده کنید؟بنابراین ممکن است از خودتان بپرسید: کدام فریم ورک یا چارچوب را باید انتخاب کنم؟ پاسخ شما این است که بستگی دارد. سطح مهارت خود را به عنوان یک ارتقادهنده وب در نظر بگیرید. اگر به اندازه کافی تجربه دارید، در مورد توسعه برنامه با چیزی فراتر از “حداقل ها” فکر کنید. اگر به عنوان یک دانشجو در این زمینه کار می کنید، ممکن است بهتر باشد که از یک چارچوبی استفاده کنید که ساپورت بیشتری را ایجاد می کند، مثل جنگو.همچنین از خودتان بپرسید که آیا یک پایه کد “اساسی” را برای ساخت ترجیح می دهید یا می خواهید برای ساخت بک بن یا backbone پایه کد انعطاف پذیری داشته باشید؟ اگر گزینه اول را ترجیح می دهید، از جنگو استفاده کنید: اگر گزینه دوم را ترجیح می دهید، از فلاسک استفاده کنید. در انتهای روز، هردو می توانند عملکرد یکسانی را ارائه دهند. و مهم تر این است که از کدبندی شروع کنید تا اینکه مدام درگیر این باشید که کدام چارچوب بهتر است.کتابخانه ها یا مجموع برنامه های پایتون برای توسعه وببعضی از کارخانه های کاربردی پایتون برای توسعه وب که باید آنها را به یاد داشته باشید:اگر به یک وب کرالر (برنامه ای که وب سایت ها را با جستجو بازبینی می کند) برای استخراج اطلاعات از اپلیکیشن هایتان نیاز دارید، scrapy یک ابزار عالی است. از این برنامه به صورت گسترده از کتابخانه برای زدودن، نظم دیتا، تست اتوماتیک و … استفاده کنید.Zappa یک کتابخانه قدرتمند برای توسعه یک اپلیکیشن روی AWS Lambda است.Requests یک کتایخانه است که به شما اجازه می دهد که درخواست های HTTP را به راحتی ارسال کنید که برای ارتباط با اپلیکیشن استفاده می شود و مثلا به شما اجازه می دهد که دیتا یا صفحات HTML را بگیرید.یکی دیگر از کارخانه های کاربردی Dash است که به اپلیکیشن های توسعه وب که برای رصد دیتا هستند، کمک می کند. این برنامه روی فلاسک کار می کند، ویژگی هایی را مانند چارت ها، نمودارها، داشبوردها و … ارائه می دهد.نقشه راه برای توسعه وب با پایتونمرحله ۱: HTML + CSSزمانی که شروع به توسعه وب می کنید، بسیار مهم است که اول HTML و CSS را یاد بگیرید که جزء موارد پایه ای برای یادگیری این هستند که چگونه وبسایت بسازیم. اگر یاد گرفتید که چگونه ساختار صفحات ایستا را ایجاد کنید تا در مسیر توسعه وب قرار بگیرید، در واقع در بهترین حالت هستید. همچنین یاد گرفتن مفاهیمی مثل اینترنت، HTTP، مرورگرها، DNS، میزبان و … هم به شما کمک می کند.همچنین می توانید یک چارچوب CSS را مانند Materialize و Bootstrap را یاد بگیرید که سرعت توسعه وب را به طرز چشمگیری بالا می برد اما همیشه هم نیاز نیست.مرحله ۲: جاوا اسکریپتمرحله بعدی یادگیری وانیلا جاوا اسکریپت است. باید مفاهیم پایه مانند انواع دیتا، متغیرها، قراردادهای عمومی، سلسله مهارت ها، محاسبات و اوپراتورها، کنترل عبارات، لوپ ها و … را یاد بگیرید. یاد گرفتن موارد پایه جاوا اسکریپت، کار را برای اعمال روی کد مشتری جاوا اسکریپت آسان می کند.مرحله ۳: DOM و jQueryبعد از اینکه موارد پایه جاوا اسکریپت را یاد گرفتید، باید یاد بگیرید که چگونه DOM و jQuery را به کار بگیرید که یک کتابخانه جاوا اسکریپت است و باعث به کارگیری راحت تر DOM می شود. اکنون می دانید که چگونه صفحات داینامیک را ایجاد کنید.چارچوب پیشین (انتخابی)شاید نیاز نباشد که چارچوب پیشین را مانند اپلیکیشن کامل وب را برای ساخت یاد بگیرید، اما یادگیری آن را پیشنهاد می کنیم. این کار نه تنها به شما کمک می کند که SPA های زیبا بسازید، اما اغلب برای توسعه دهنده های کامل یا پیشین به کار گرفته می شود.مرحله ۴: پایتوناکنون در بک اند، باید موارد پایه پایتون را دقیقا مانند دوره های قبل در جاوا اسکریپت قبل از یادگیری DOM به کار بگیرید. یادگیری موارد پایه شما را برای جنگو اماده می کند، بنابراین احتمالا درگیری خیلی زیادی نخواهید داشت. یادگیری مقدمات پایتون، خیلی هم اعجاب انگیز نیست، و مفاهیم آن شبیه به جاوا اسکریپت است.مرحله ۵: جنگو + دیتابیسبا جنگو، قادر خواهید بود که محیط پشت صحنه را را آماده کنید و منطق بیزینس را توسعه دهید. همچنین می توانید در مورد دیتابیس ها مانند ، SQLite، چگونگی طرح سوال و عملکرد CRUD چیزهایی را یاد بگیرید. با این روش می توانید یک اپلیکیشن کامل داشته باشید!چگونه اولین اپلیکیشن وب را در پایتون ایجاد کنیم؟اول یک اپلیکیشن فلاسک “hello world” به عنوان مقدمه ای برای چارچوب های وب پایتون بسازیدنصب فلاسکاولین کاری که نیاز دارید، نصب فلاسک است. بسته به نوع نسخه ای از پایتون که استفاده می کنید، باید از pip یا pip3 استفاده کنید.اپلیکیشن فلاسکدر مرحله بعد، یک فایل به نام hello.py با کد زیر بسازید.from flask import Flaskapp = Flask(__name__)@app.route(“/”)def hello():return “Hello World!”if __name__ == “__main__”:app.run()خط ۱ فلاسک را وارد عمل می کند.خط ۲ فلاسک را با متغیر app با استفاده از –name—معرفی می کند.خط ۴ یک کانال / برای فهرست شما یا پیش زمینه، صفحه تنظیم می کند. زمانی که کاربر وارد locahost:5000/ می شود، می توانید کد خاصی را تنظیم کنید.خط ۵ یک عملکرد به نام hello را ایجاد می کند.خط ۶ hello world! را به کاربر برمی گرداند.خط ۸ تست می کند تا مطمئن شود که اسکریپت به طور صحیح اجرا شده است.خط ۹ اپلیکیشن را از متغیر app که حین آغاز کار استفاده کرده بودیم، اجرا می کند که کاربر بتواند اپلیکیشن وب را از طریق localhost بازدید کند.تبدیل شدن به یک توسعه دهنده وب پایتونتبریک! اکنون شما در مسیر متخصص شدن در توسعه وب با پایتون هستید. باید یک دیدگاه کلی از چگونگی اجرای پایتون در داخل توسعه دهنده های وب و کاربردهایش داشته باشید. با این مفهوم، مسیرهای زیادی دارید که می توانید یادگیری پایتون را در آن دنبال کنید.</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Thu, 14 Jan 2021 00:00:47 +0330</pubDate>
            </item>
                    <item>
                <title>چرا باید پایتون یاد بگیریم؟ (۱۰ دلیل تکنیکی و شغلی)</title>
                <link>https://virgool.io/pythoniha/%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-%DB%B1%DB%B0-%D8%AF%D9%84%DB%8C%D9%84-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9%DB%8C-%D9%88-%D8%B4%D8%BA%D9%84%DB%8C-prxuv7atqmc3</link>
                <description>زبانهای برنامه‌نویسی خیلی وقت است که وجود دارند و هر دهه شاهد رونمایی از یک زبان جدید هستیم که توسعه‌دهندگان دیوانه‌وار عاشقشان می‌شوند. پایتون یکی از محبوب‌ترین و پرطرفدارترین زبانهای برنامه‌نویسی است. نظرسنجی اخیر Stack Overflow نشان می‌دهد که پایتون از زبانهایی مثل جاوا، C، C++ پیشی گرفته و از جایگاه خوبی برخوردار است. همین دلیل باعث می‌شود گواهینامه پایتون تبدیل به یکی از پرطرفدارترین گواهینامه‌های برنامه نویسی شود. با این مقاله قصد دارم به ۱۰ علت اصلی یادگیری پایتون بپردازم.سلام دوستانبعد از اینکه مقاله اولم را درباره کاربرد های امروزی پایتون نوشتم (این لینک) و با نظرات خوب شما عزیزان مواجه شدم انگیزه زیادی در من ایجاد شدآماده ای؟پس بزن بریم!زبانهای برنامه‌نویسی خیلی وقت است که وجود دارند و هر دهه شاهد رونمایی از یک زبان جدید هستیم که توسعه‌دهندگان دیوانه‌وار عاشقشان می‌شوند. پایتون یکی از محبوب‌ترین و پرطرفدارترین زبانهای برنامه‌نویسی است. نظرسنجی اخیر Stack Overflow نشان می‌دهد که پایتون از زبانهایی مثل جاوا، C، C++ پیشی گرفته و از جایگاه خوبی برخوردار است. همین دلیل باعث می‌شود گواهینامه پایتون تبدیل به یکی از پرطرفدارترین گواهینامه‌های برنامه نویسی شود. با این مقاله قصد دارم به ۱۰ علت اصلی یادگیری پایتون بپردازم.ویژگی‌ها و کاربردهای اصلی پایتون که باعث شده افراد آن را به عنوان اولین زبان برنامه‌نویسی‌شان انتخاب کنند، عبارتند از:۱-حقوق بالا و محبوبیت پایتون۲-کاربرد پایتون در علوم داده۳-اتوماسیون و اسکریپ‌نویسی پایتون۴-پشتیبانی پایتون از کلان داده‌ها۵- قابلیت تست شدن پایتون۶-استفاده در گرافیکهای کامپیوتری۷-کاربرد در هوش مصنوعی۸-توسعه وب با پایتون۹-قابلیت انتقال و توسعه پایتون۱۰-یادگیری آسان و ساده پایتوناگر قصد دارید حرفه شغلی‌تان را با پایتون شروع کنید و مایلید مهارتهای مرتبط با آن را بدانید، حالا که این فناوری در حال رشد است، زمان خوبی برای دست به کار شدن است.حالا اجازه بدهید ویژگی‌های ذکر شده را با جزئیات توضیح دهم.پایتون در چه مواردی استفاده می شود؟ (کاربردهای امروزی)۱۰-یادگیری آسان و ساده پایتونیادگیری پایتون بسیار ساده و راحت است. این زبان بسیار قدرتمند است و شباهت زیادی به زبان انگلیسی دارد، از این ساده‌تر؟ پایتون همچنین:منبع باز و رایگان است.سطح بالایی دارد.قابل تفسیر است.از جامعه بزرگی برخوردار است.علاوه بر اینها، در پایتون با سینتسکهای پیچیده سرو کار ندارید. مثلا تصویر زیر را در نظر بگیرید:اگر بخواهید “Hello world” را چاپ کنید، باید در زبان جاوا سه خط کد بنویسید در صورتیکه در پایتون با یک خط برنامه اجرا می‌شود. به همین سادگی!بنابراین سادگی کد در این زبان، کار مبتدی‌ها را راحت‌تر می‌کند.۹-قابل انتقال و قابل توسعهتوسعه‌پذیری و قابل انتقال بودن پایتون به شما اجازه می‌دهد تا عملیات چند زبانه را به صورت یکپارچه انجام دهید. پایتون توسط اکثر سیستم عاملهای موجود از ویندوز و لینوکس گرفته تا مکینتاش، سولاریس، پلی استیشن و غیره پشتیبانی می‌شود.قابلیت توسعه‌پذیری پایتون به شما این امکان را می‌دهد تا آن را با جاوا و مولفه‌های .NET ادغام کنید. همچنین می‌توانید کتابخانه‌های C‌ و C++ را فراخوانی کنید.۸-امکان توسعه وبپایتون دارای مجموعه‌ای از فریم‌ورکها برای توسعه وبسایتهاست. فریم‌ورکهای پرطرفدار Django، Flask، Pylons و … هستند. این فریم‌ورکها به زبان پایتون نوشته شده‌اند و همین می‌تواند علت اصلی سرعت و ثبات بیشتر کدها باشد.شما می‌توانید با وب اسکرپینگ جزئیات هر سایتی را استخراج کنید. همچنین سایتهای بسیاری مثل Instagram، Bit bucket، Pinterest فقط بر اساس این فریم‌ورکها ساخته شده‌اند.۷-کاربرد در هوش مصنوعیهوش مصنوعی دستاورد بزرگی در دنیای فناوری است. شما می‌توانید عملا یک ماشین بسازید که از مغز انسان که قدرت تفکر، آنالیز و تصمیم‌گیری دارد، تقلید کند.علاوه بر این کتابخانه‌هایی مثل Kerasو TensorFlow قابلیت یادگیری ماشین را هم فراهم می‌کنند.همچنین کتابخانه‌هایی مثل openCv‌ داریم که به بینایی کامپیوتر یا تشخیص تصویر کمک می‌کند.۶-کاربرد در گرافیکهای کامپیوتریپایتون تا حد زیادی برای پروژه‌های آفلاین یا آنلاین کوچک و بزرگ استفاده می‌شود. این زبان در ساخت GUI‌ و برنامه‌های دسکتاپ کاربرد دارد. از کتابخانه Tkinter برای ایجاد روشی سریع و آسان در ساخت برنامه‌ها، مورد استفاده قرار می‌گیرد.همچنین در بازی‌سازی مورد استفاده قرار می‌گیرد طوریکه می‌توانید منطق استفاده از یک ماژول پای‌گیم (Pygame) که روی دستگاههای اندرویدی قابل اجراست را به صورت کد در بیاورید.بنا به پیشنهاد کاربران کتابخانه های kivy و pyqt را معرفی میکنم:کیوی:یک کتابخانه رایگان و متن بازهباهاش میتونید محیط گرافیکی برای برنامتون بسازیدبرنامه هایی بسازید که هم بر روی اندروید و هم بر روی IOS و device های قابل نصب هستپای کیوت:پای کیوت یا همان PyQt اتصالی پایتون و  چند سکویی میباشد که از جمله جایگزینهای پیشنهادی برای برنامه نویسی رابط  گرافیکی کاربر در پایتون است و به جای تی کی اینتر که با پایتون همراه است،  استفاده می-شود. PyQt  نیز مانند Qt نرم افزاری آزاد بوده و یک افزونه  پایتون محسوب میشود. گفتنی است که توسعه PyQt بر عهده شرکت کامپیوتری ریور  بانک بریتانیا میباشد.پای کیوت در واقع ابزاری برای استفاده از کیوت در برنامه می باشد. برای درک این عبارت بهتر است ابتدا با مفهوم کیوت آشنا شوید!کیوت چهارچوب نرم افزاری برای خلق رابط  گرافیکی می باشد که به منظور استفاده در محصولات نرم افزاری شامل نرم  افزارهای رایانه ای و گوشیهای هوشمند، توسط شرکت نوکیا پشتیبانی میگردد.۵-وجود فریم‌ورکهای آزمایشیپایتون جهت اعتبارسنجی ایده‌ها یا محصولات برای شرکتهای تازه تاسیس عالی است. پایتون فریم‌ورکهای آزمایشی داخلی بسیاری دارد که امکان عیب‌یابی و روند کار بسیار سریعتری را فراهم می‌کند. ابزارها و ماژولهای زیادی مثل Selenium و Splinter وجود دارند که کارها را راحت‌تر می‌کنند.این زبان از قابلیت تست روی چند پلتفرم و مرورگر در کنار فریم‌ورکهایی مثل PyTest وRobot Framework برخوردار است. تست کردن کاری خسته‌کننده است و پایتون نقش یک تقویت‌کننده را در این عمل ایفا می‌کند، در نتیجه هر آزمایش‌ کننده‌ای قطعا باید دنبال آن برود!۴-سازگار با کلان داده‌هاپایتون با داده‌های بسیار زیادی کار می‌کند. این زبان از محاسبات موازی پشتیبانی می‌کند طوریکه می‌توانید از آن برای فریم‌ورک Hadoop هم استفاده کنید. در پایتون کتابخانه‌ای به نام Pydoop دارید و می‌توانید یک برنامه MapReduce در آن بنویسید و داده‌های موجود در گروه HDFS را پردازش کنید.کتابخانه‌های دیگری مثل Dask و Pyspark برای پردازشهای بزرگ وجود دارند. بنابراین پایتون عمدتا برای کلان داده‌ها استفاده می‌شود که می‌توانید به راحتی آنها را پردازش کنید!۳-اتوماسیون و اسکریپ‌نویسیبسیاری از افراد فقط می‌دانند پایتون یک زبان برنامه‌نویسی است اما این زبان می‌تواند به عنوان زبان اسکریپت‌نویسی هم استفاده شود. در اسکریپت‌نویسی:کد نوشته به صورت اسکریپت نوشته شده و اجرا می‌شود.ماشین کد را می‌خواند و تفسیر می‌کند.بررسی خطا حین زمان اجرا انجام می‌شود.وقتی کد بررسی شد، امکان استفاده چندباره از آن وجود دارد. بنابراین با اتوماسیون می‌توانید وظایف مشخصی در برنامه را به صورت خودکار در بیاورید.۲-کابرد آن در علوم دادهپایتون زبان اصلی بسیار از دانشمندان علوم داده است. برای سالهای متمادی، پژوهشگران دانشگاهی و محققان خصوصی از زبان MATLAB برای تحقیقات علمی استفاده می‌کردند اما با انتشار موتورهای عددی پایتون مثل Numpy‌ و Pandas، همه چیز تغییر کرد.پایتون با داده‌های جدولی، ماتریکسی و همینطور داده‌های‌ آماری سر و کار دارد و حتی آنها را در کتابخانه‌های مشهوری مثل Matplotlib‌ و Seaborn نمایان می‌کند.۱-حقوق بالا و محبوبیت پایتونمهندسان پایتون بالاترین دستمزد را در این صنعت دارند. متوسط حقوق یک توسعه‌دهنده پایتون در ایالات متحده آمریکا چیزی حدود ۱۱۶٫۰۲۸ دلار است.محبوبیت پایتون در یک سال گذشته بسیار زیاد بوده است. به اسکرین‌شات زیر که از Google Trends گرفته شده، دقت کنید.</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Tue, 12 Jan 2021 20:23:35 +0330</pubDate>
            </item>
                    <item>
                <title>پایتون در چه مواردی استفاده می شود؟ (کاربردهای امروزی)</title>
                <link>https://virgool.io/pythoniha/%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AF%D8%B1-%DA%86%D9%87-%D9%85%D9%88%D8%A7%D8%B1%D8%AF%DB%8C-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%D9%87%D8%A7%DB%8C-%D8%A7%D9%85%D8%B1%D9%88%D8%B2%DB%8C-ycbx9qwkolbj</link>
                <description>گوگل، یوتیوب، اینستاگرام، ردیت و اسپاتیفای گذشته از اینکه برخی از محبوب ترین سرویس های نرم افزاری جهان هستند، چه اشتراک دیگری با هم دارند؟ درست است: همه آن ها از پایتون استفاده می کنند.با سلام خدمت دوستان عزیزببخشید اگه پستم یکم خرابه چون اولین پستمهلایک و کامنت هم یادتون نرهگوگل، یوتیوب، اینستاگرام، ردیت و اسپاتیفای گذشته از اینکه برخی از محبوب ترین سرویس های نرم افزاری جهان هستند، چه اشتراک دیگری با هم دارند؟ درست است: همه آن ها از پایتون استفاده می کنند.پایتون در همه جا است. حتی نمی توانید تصور کنید که چقدر گسترده است. مهمتر از همه، پایتون برای یادگیری آسان، برای خواندن واضح و برای نوشتن ساده است. همچنین سرعت توسعه بالایی دارد بدون از بین بردن قابلیت اطمینان یا مقیاس پذیری.به لطف تقاضای زیاد برای پایتون، از آن پشتیبانی خوبی می شود و محبوبیت زیادی دارد.اما دقیقاً از پایتون برای چه چیزی استفاده می شود؟ پایتون بیشترین بهره را از کدام فناوری یا تجارت دارد؟ اگر می خواهید به هر یک از زمینه های زیر وارد شوید، فکر کنید که آیا می خواهید پایتون را برای توسعه فناوری خود انتخاب کنید یا نه.پایتون برای توسعه وبدر بازار فعلی ممکن است یک تجارت بدون وب سایت نیز وجود داشته باشد. علاوه بر این، این روند به دنبال برنامه های وب بیشتر و چشمگیر تر است که شامل موارد زیر می شود:نسخه های بی نقص تلفن همراه و دسک تاپطرح بندی نامتقارنبرنامه های وب پیش روندهانیمیشن های یکپارچهچت بات های MLمزایای استفاده از پایتون برای توسعه وب۱- پایتون تقریباً در مورد هر چیزی، مجموعه بزرگی از کتابخانه های از پیش ساخته شده را دارد. مثلا کتابخانه های مخصوص محاسبات علمی، پردازش تصویر، پردازش داده ها، یادگیری ماشین، یادگیری عمیق و ..۲- کد پایتون به دلیل نحو ساده و واضح، زمان کمتری برای نوشتن می برد. به همین دلیل، کدی که در پایتون نوشته شده، خیلی خوب و سریع می تواند نمونه های اولیه ای ایجاد کند.۳- پایتون ROI پروژه های تجاری را تسریع می کند. دلیل این امر شبیه به نکته قبلی است: شما می توانید کد خود را سریع تر بنویسید و ارسال کنید. این امر به ویژه برای استارتاپ ها مهم است.۴- پایتون یک فریم ورک داخلی برای آزمایش واحد دارد. این به شما کمک می کند تا کد عاری از اشکال را ارسال کنید. علاوه بر ویژگی های استاندارد پایتون، یکی از مهمترین نقاط قوت آن در توسعه وب، تنوع فریم ورک های وب ارائه شده است.با انتخاب گسترده ای از فریم ورک های خوب پشتیبانی شده، می توانید نقطه شروع مناسبی را برای هر پروژه پیدا کنید. پایتون ابزارهایی را برای شما فراهم می کند که کار را با اطمینان انجام دهید:راه حل های اجرای سریع و خارج از جعبهراه حل هایی که به همکاری بسیاری از خدمات تخصصی میکرو نیاز دارندبرنامه ای که عملکرد آن بسیار مهم استفریم ورک های برتر وب پایتونجنگو (Django): گسترده ترین فریم ورک وب پایتون – حداقل تا همین اواخر. علامت تجاری جنگو کامل بودن آن است، زیرا هدف آن ارائه تمام ابزارهای لازم برای ساخت یک برنامه وب در یک پکیج واحد است. اگر برنامه شما نسبتاً استاندارد باشد این گزینه مناسب است، زیرا به شما امکان می دهد بیشتر مراحل ابتدایی را جست و جو کنید و سریع تر یک راه حل کارآمد پیدا کنید.فلسک (Flask): فلسک بسیار بیشتر به خدمات جزئی نگاه می کند که ممکن است دلیل محبوبیت شماره ۱ جدید آن بر اساس JetBrains باشد. برخلاف جنگو که همه در یک پکیج هستند، فلسک بیشتر مانند چسب کار می کند که به شما امکان می دهد کتابخانه ها را با یکدیگر ترکیب کنید. فلسک خود را به خوبی به یک رویکرد تکرار شونده برای اضافه کردن ویژگی ها و خدمات جدید “یک بار در هر زمان” می اندازد.Bottle: Bottle فریم ورک دیگری است که ترجیح می دهد از این مسئله غافل شود که کاربر را با هر چیز دیگری که ممکن است لازم داشته باشد تحت الشعاع قرار دهد. این فریم ورک سبک وزن است و هیچ وابستگی خارجی به غیر از کتابخانه استاندارد پایتون (stdlib) ندارد. برای نمونه سازی، به عنوان یک ابزار یادگیری یا برای ساخت و اجرای برنامه های وب شخصی ساده، بسیار عالی کار می کند.Pyramid: کمال Pyramid از میراث دو فریم ورک قبلی ناشی می شود: Pylons و repoze.bfg.Now که اکنون در Pyramid ادغام شدند. Pylons یکی از فریم ورک های برتر پایتون به حساب می آمد. مهمترین مزیت Pyramid نسبت به جنگو این است که سفارشی سازی در آن بسیار ساده است، در حالی که جنگو بیشتر “مورد تفکر” است. این امر باعث می شود Pyramid برای پروژه های غیر استاندارد که می توانند پیچیده تر باشند، یک انتخاب عالی باشد.پایتون برای اینترنت اشیا (IOT)بسته به دیدگاه شما، اینترنت اشیاء را می توان متفاوت درک کرد. به خاطر این توضیحات، فرض کنید در مورد اشیاء فیزیکی که در یک سیستم تعبیه قرار دارند صحبت می کنیم که سیستم آن ها را به اینترنت وصل می کند.این “اشیا” اکنون آدرس IP خود را دارند و می توانند با استفاده از شبکه با “اشیا دیگر” از راه دور یا محلی ارتباط برقرار کنند. IoT اغلب در پروژه هایی که شامل شبکه های حسگر بی سیم، آنالیز داده ها، سیستم های فیزیکی سایبر، داده های بزرگ و یادگیری ماشین است، نقش دارد. علاوه بر این ، پروژه های IoT اغلب شامل تجزیه و تحلیل و فرآیندهای در زمان واقعی هستند.در حالت ایده آل، زبان برنامه نویسی شما برای یک پروژه IoT از قبل باید انتخاب قدرتمندی برای زمینه های فوق باشد، در عین حال سبک و مقیاس پذیر باشد. پایتون خیلی خوب با این معیارها مطابقت دارد.مزایای استفاده از پایتون برای IoT۱- محبوبیت پایتون یک دارایی قابل توجه است.۲- پایتون قابل حمل ، قابل توسعه و تعبیه شده است.۳- پایتون برای مدیریت و سازماندهی داده های پیچیده بسیار عالی عمل می کند.۴- یادگیری پایتون بدون مجبور کردن شما برای آشنایی با بسیاری از استانداردهای قالب بندی و تدوین گزینه ها، آسان است.۵- کد پایتون به لطف نحو تمیز آن جمع و جور و به راحتی قابل خواندن است.۶- ارتباط نزدیک پایتون با محاسبات علمی باعث شده است تا بتواند در توسعه IoT زمینه ساز شود.۷- پایتون زبان انتخابی Raspberry Pi است.۸- پایتون ابزارهایی را ارائه می دهد که فرایند توسعه IoT را ساده می کند، مانند webrepl.۹- از آنجا که پایتون یک زبان تفسیری است، می توانید به راحتی راه حل خود را بدون کامپایل کردن کد یا چشمک زدن دستگاه تست کنید.۱۰- AWS، Python SDK را برای AWS IoT ارائه می دهد. به آن به عنوان گیلاسی در بالای یک کیک در حال حاضر خوشمزه فکر کنید.چه ابزارهایی برای پایتون در IoT موجود است؟Raspberry Piآیا تاکنون پروژه جالب IoT را در وب مشاهده کرده اید؟ اگر چنین باشد، احتمالاً Raspberry Pi را دیده اید.Raspberry Pi:کوچک است (۸۵ میلی متر × ۵۶ میلی متر برای Raspberry Pi 3).انرژی بسیار کمی مصرف می کند.مجهز به درگاه های USB، پورت HDMI، پورت Ethernet و پشتیبانی Micro SD است.مهمتر از همه، این نرم افزار دارای لینوکس روی برد است، بدین معنی که از پایتون نیز استفاده می کند و کدگذاری Raspberry Pi را ساده و قابل انتقال می کند. Raspberry Pi یک دستگاه فوق العاده همه کاره است که می توانید برای ساختن هر چیزی از آن استفاده کنید: مرکز رسانه ای، دستگاه بازی یکپارچه سازی با سیستم عامل، دوربین با گذشت زمان، ربات کنترل کننده، ایستگاه رادیویی FM ، سرور وب، سیستم امنیتی با ضبط حرکت، ربات توییتر، رایانه رومیزی کوچک. همچنین یکی از محبوب ترین ابزار ها برای آموزش برنامه نویسی است.Raspberry Pi یک دستگاه فوق العاده همه کاره است که می توانید برای ساخت هر چیزی از آن استفاده کنید:مرکز رسانه ای ،ماشین بازی یکپارچه سازی با سیستم عامل ،دوربین با گذشت زمان ،ربات کنترل کننده ،ایستگاه رادیویی FM ،سرور وب ،سیستم امنیتی با ضبط حرکت ،ربات توییتر ،کامپیوتر کوچک رومیزی.همچنین یکی از محبوب ترین ابزار ها برای آموزش برنامه نویسی است.MicroPythonوقتی صحبت از راه حل های پایتون برای IoT می شود، کوچکتر از MicroPython نیست: یک میکروکنترلر کوچک برای اجرای پایتون روی صفحه ای که اندازه آن تنها چند اینچ مربع است.این مجموعه شامل یک بسته نرم افزاری است، بنابراین اگر تازه IoT را با پایتون شروع کرده اید، دیگر لازم نیست چیزهای بیشتری را جستجو کنید.یکی از ویژگی های MicroPython که جذابیت زیادی دارد WebREPL (حلقه خواندن-ارزیابی-چاپ) است که شبیه به خط فرمان است و از طریق یک صفحه وب قابل دسترسی است. با استفاده از WebREPL ، می توانید با استفاده از یک ترمینال ساده در مرورگر خود، کد پایتون را بر روی دستگاه IoT اجرا کنید بدون نیاز به سریال اتصال.برای شیرین تر کردن این معامله، نیازی به اتصال برد به WiFi نیست، زیرا می تواند شبکه خود را ایجاد کند.ZerynthZerynth به عنوان “واسطه IoT و Industry 4.0” مورد استقبال قرار می گیرد.این برنامه یک اکوسیستم کامل ابزار از جمله IDE، ابزاری برای توسعه، RTOS چند منظوره (سیستم عامل real time)، مدیر دستگاه و برنامه مناسب برای موبایل را برای نظارت و کنترل دستگاه های دارای Zerynth در اختیار توسعه دهندگان قرار می دهد.Zerynth با اجازه دادن به شما برای نوشتن مقاله در پایتون یا ترکیبی از C و Python، پیشرفت IoT را سرعت می بخشد.می توانید از Zerynth برای برنامه ریزی محبوب ترین میکروکنترلرهای ۳۲ بیتی استفاده کنید، آن ها را به زیرساخت های Cloud متصل کنید و دستگاه های خود را با آخرین نسخه های Firmware Over-the-Air اجرا کنید. همچنین کاملاً فشرده است و فقط ۶۰-۸۰ کیلوبایت از فلش و ۵-۵ کیلوبایت رم نیاز دارد.Home AssistantHome Assistant یک پروژه پایتون منبع باز برای اتوماسیون هوشمند خانه است. می توانید آن را بر روی رایانه شخصی یا Raspberry Pi نصب کنید.Home Assistant اتو ماتیک کار می کند؛ به عنوان مثال، می تواند چراغ های موجود در خانه شما را کنترل کرده و دمای هر اتاق را اندازه گیری کند.از این گذشته ، Home Assistant با انواع درایورها و سنسورها سازگار است.پایتون برای یادگیری ماشین (ML)یادگیری ماشین جدیدترین فیلد در دنیای توسعه نرم افزار است. به دلیل امکانات ظاهراً بی حد و حصر آن، به طور مرتب و به درستی در محبوبیت رو به افزایش است. این ایده که رایانه ها می توانند بجای کار کردن مطابق با قوانین مدون، به طور فعال یاد بگیرند، بسیار هیجان انگیز است. این یک رویکرد کاملاً جدید برای حل مسئله ارائه می دهد.پایتون در خط مقدم یادگیری ماشین قرار دارد. مطالعات متعدد به طور واضح از پایتون به عنوان محبوب ترین زبان برای یادگیری ماشین و علم داده استقبال می کند. اما چرا اینطور است؟ راز پایتون چیست؟مزایای استفاده از پایتون برای MLدلایل مختلفی وجود دارد که پایتون مناسب ترین روش برای یادگیری ماشین است:نحو (syntax) پایتون کارآمد و دقیق است؛پایتون یک نقطه ورود کم دارد.پایتون به خوبی با سایر زبان های برنامه نویسی ادغام می شود.اما در اینجا استدلال دیگری وجود دارد که برای پایتون مطرح می شود، که در مورد یادگیری ماشین بیشتر از سایرین است: پشتیبانی گسترده از کتابخانه منبع باز.کتابخانه های برتر پایتون برای یادگیری ماشینپایتون به دلیل داشتن کتابخانه های زیاد، به ویژه برای علوم داده مشهور است. این دلیل اصلی پایتون به عنوان راه حلی برای یادگیری ماشین محسوب می شود. در اینجا برخی از محبوب ترین کتابخانه های پایتون برای یادگیری ماشین ارائه شده است.scikit-learnScikit-Learn بهترین کتابخانه شناخته شده پایتون است که برای یادگیری ماشین استفاده می شود. scikit-Learn با استفاده از SciPy و NumPy ساخته و برای تعامل با آن ها طراحی شده است. منبع متن باز، در دسترس همه و قابل استفاده مجدد در تعدادی از زمینه ها است.این کتابخانه از الگوریتم های متنوعی برخوردار است: طبقه بندی (classification)، رگرسیون(regression)، خوشه بندی(clustering)، کاهش ابعاد (dimensionality reduction) ، انتخاب مدل(model selection) و پیش پردازش(preprocessing). این الگوریتم ها عبارتند از: ماشین های بردار پشتیبان(SVM) ، جنگل های تصادفی(random forests) ، gradient boosting ، K-means و DBSCAN.scikit-Learn گزینه هایی را فراهم می کند، ابزار های داده کاوی و تجزیه و تحلیل داده ارائه شده ساده و کارآمد هستند.TensorFlowTensorFlow در ابتدا توسط مهندسین و محققان گوگل ساخته شد تا نیازهای آن ها را برای سیستمی که بتواند شبکه های عصبی را برای یافتن روابط و الگوها کشف و آموزش دهد، برطرف کند. این فرایند به همان روشی طراحی شده است که انسان ها در آن استدلال و یاد می گیرند.معماری انعطاف پذیر و با کارایی بالا در کتابخانه منبع باز باعث می شود محاسبات عددی در چند سیستم عامل و همچنین از دسک تاپ گرفته تا خوشه های سرور تا دستگاه های تلفن همراه آسان شود.TensorFlow توسط کمپانی هایی مانند Uber ، Dropbox ، eBay ، Snapchat یا Coca Cola استفاده می شود.nilearnNilearn یک کتابخانه پایتون سطح بالا برای یادگیری آسان و سریع آماری در مورد داده های تصویربرداری عصبی است. این کتابخانه از scikit-learn به دلیل داشتن تکنیک های پیشرفته یادگیری ماشین، از جمله تشخیص الگو یا آمار چند متغیره یاد می گیرد. کاربردهایش شامل مدل سازی پیش بینی و تجزیه و تحلیل اتصال است.ساخت مهندسی ویژگی های خاص دامنه، بالاترین ارزش nilearn را برای متخصصان یادگیری ماشین در اختیار دارد. این به معنای شکل دادن به داده های تصویربرداری عصبی به ماتریسی از ویژگی های مناسب برای یادگیری آماری یا روش دیگر است.mlpyMlpy یک کتابخانه پایتون با کارایی بالا برای مدل سازی پیش بینی است که در بالای SciPy ، NumPy و GNU Scientific Libraries ساخته شده است. چندرسانه ای و منبع باز است. mlpy با هدف ارائه راه حل هایی برای مسئله های تحت نظارت و بدون نظارت، طیف گسترده ای از روش های پیشگام را ارائه می دهد.پیدا کردن یک سازش معقول بین کارآمدی (efficiency) ، پیمانگی(modularity)، قابلیت تولید مجدد(reproducibility)، قابلیت اطمینان(maintainability) و قابلیت استفاده(usability) هدف اصلی mlpy است.پایتون برای یادگیری نظارت شدهیادگیری ماشین نظارت شده یکی از کاربردهای هوش مصنوعی است. در یادگیری نظارت شده، یک الگوریتم از یک مجموعه داده دارای برچسب یاد می گیرد که خروجی آن از قبل شناخته شده است. دو روش اصلی در این گروه، طبقه بندی و رگرسیون هستند.Classification برای طبقه بندی داده ها به کلاس های دلخواه و مجزا و پیش بینی مقدار گسسته استفاده می شود که می تواند به ارزیابی اعتبار و یا کمک به تشخیص پزشکی کمک کند.رگرسیون در مسائلی استفاده می شود که شامل اعداد پیوسته، از جمله تقاضا و پیش بینی مالی و همچنین برآورد قیمت ملک است. نتیجه پیش بینی شده در اینجا تخمین مقدار عددی است.مشکلات طبقه بندی و رگرسیون به لطف تعداد زیادی از کتابخانه های پایتون، از جمله:scikit-Learn (ماشین های بردار پشتیبان، تجزیه و تحلیل تبعیض آمیز خطی و درجه چهار، الگوریتم های نزدیک ترین همسایه، طبقه بندی کننده ساده بیز، درخت تصمیم گیری ، روش های ensemble و موارد دیگر)؛TensorFlow؛Keras ؛PyTorch؛Caffe2 (یادگیری عمیق)؛XGBoost؛CatBoost؛LightGBM (تقویت شیب).پایتون برای یادگیری تقویتیدر یادگیری ماشین بدون نظارت، این الگوریتم به توانایی خود در حل مشکلات پس از دستیابی به مجموعه داده های بدون برچسب و بدون دستورالعمل آموزش و نتیجه شناخته شده متکی است.خوشه بندی و فاکتور سازی ماتریس(matrix factorization) دو روش معمول یادگیری بدون نظارت ماشین هستند. هر دو روش اغلب در سیستم های دسته بندی مشتریان و توصیه کننده استفاده می شوند، بر اساس شباهت بین ویژگی های شیء، از هر دو روش برای گروه بندی عناصر استفاده می شود.برخی از محبوب ترین کتابخانه های مورد استفاده در موتورهای سیستم های خوشه بندی و توصیه ای عبارتند از:Surprise (روش های همسایه محور، SVD ،PMF ، SVD ++ ، NMF)LightFM (توصیف نمایندگی پنهان ترکیبی با فاکتورسازی ماتریس)Spotlight (برای ساخت مدل های پیشنهادی از PyTorch استفاده می کند)پایتون برای یادگیری تقویتیالگوریتم های یادگیری تقویتی یاد می گیرند که رفتار خود را اصلاح کنند تا پس از دریافت بازخورد تصمیم های صحیحی بگیرند. آن ها در راه حل های خودآموز، از جمله بازی های ویدئویی و سیستم های کنترل چراغ راهنمایی مورد آزمایش قرار گرفته اند.مشکلات ناشی از یادگیری تقویتی اغلب خاص هستند و یافتن راه حل برای آن ها ممکن است کاملاً چالش برانگیز باشد. این کتابخانه های پایتون می توانند به شما کمک کنند:Keras-RL (یادگیری تقویتی عمیق برای کراس)TensorForce (کتابخانه TensorFlow برای یادگیری تقویتی کاربردی)(Coach (NAF ، DQN ، DFP و موارد دیگرپایتون برای Fintechدر حالی که شاید پایتون یک فناوری جدید نباشد، افزایش محبوبیت آن در بین صندوق پرچین و صنایع بانکی سرمایه گذاری از پیشرفت های اخیر برخوردار است. اما این واقعیت که پایتون سریعترین زبان در امور مالی است نباید جای تعجب داشته باشد.اگر شرکت شما قصد دارید وارد دنیای fintech شوید، به یک زبان برنامه نویسی نیاز دارید که دارای کارایی بالا، مقیاس پذیری آسان و بالغ باشد. پشته فنی که شما انتخاب می کنید همچنین باید از راه حل های آماده و کتابخانه های زیادی برخوردار باشد تا دوباره به آن برگردد. این امر باعث می شود که پایتون و fintech رابطه خوبی برقرار کنند.مزایای استفاده از پایتون برای fintechصندوق پرچین و صنایع بانکی سرمایه گذاری به مدت طولانی تصمیم گرفته اند که پایتون یک انتخاب ایده آل برای fintech است زیرا این زبان بسیاری از نیازهای بسیار خاص آن ها را برطرف می کند:ایجاد بسترهای مدیریت ریسک و تجارت؛حل مسئله کمی نرخ؛تنظیم اطلاعات، انطباق و تجزیه و تحلیل داده ها با استفاده از وفور کتابخانه های پایتون.چرا باید پایتون را برای محصول نرم افزاری fintech انتخاب کنید؟Fintech به دلایل مختلف به پایتون تعلق دارد:نحو تمیز: فهم کد پایتون بسیار آسان است، زیرا شبیه انگلیسی واقعی است. این اجازه می دهد تا توسعه دهندگان آن را به سرعت یاد بگیرند و در مدت زمان کوتاهی به آن مسلط شوند.سریع برای بازار: پایتون یک نوع زبان پویا است و پیشرفت در آن سریع تر از زبان های استاتیک مانند جاوا است. هنگام نوشتن در پایتون، به کد کمتری نیاز دارید که به نوبه خود امکان استقرار سریع تر را فراهم می کند.کتابخانه های مفید: پایتون با مجموعه گسترده ای از کتابخانه ها به تعداد زیادی اهداف می پردازد. بسیاری از این موارد برای fintech و امور مالی عالی هستند.آیا به کتابخانه تجارت الگوریتمی نیاز دارید؟ pyalgotrade را امتحان کنید. کتابخانه ای برای محاسبات علمی و فنی؟ SciPy وجود دارد. در مورد اقتصاد کمی چطور؟ quantecon.py را بررسی کنید. هر سوالی داشته باشید، در پایتون جواب دارد.حرف آخربرنامه های پایتون بی شمار هستند و مزایای زیادی دارند. برای بسیاری از موارد دیگر مانند توسعه وب، اینترنت اشیاء، یادگیری ماشین، استارتاپ ها و fintech ها عالی است. ما مفصل بحث کرده ایم که چرا پایتون برای همه این اهداف مناسب است. با این حال، یک recap سریع می گوییم:پایتون به دلیل خوانایی زیاد و سهولت استفاده، به شما امکان می دهد تا با نوشتن کد سریع تر، منابع توسعه خود را بهینه کنید.پایتون دارای نحوی واضح و ساده است که به شما امکان می دهد کدهای خود را به راحتی مرور کنید.پایتون به جای این که کل موارد مورد نیاز را از ابتدا بسازید، فریم ورک ها و کتابخانه های آماده و آزمایش شده را به شما می دهد ؛پایتون پشتیبانی گسترده ای از انواع آموزش ها و راهنماها و همچنین یک جامعه قوی و پررونق از علاقه مندان ارائه می دهد.پایتون توسط غول های فنی مانند Google ، YouTube یا Reddit استفاده می شود، بنابراین اگر آن ها به زبان پایتون اعتماد کردند، هیچ دلیلی وجود ندارد که شما نباید اعتماد کنید.</description>
                <category>ادیب شمیل زاده</category>
                <author>ادیب شمیل زاده</author>
                <pubDate>Mon, 11 Jan 2021 23:33:54 +0330</pubDate>
            </item>
            </channel>
</rss>