<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سعیده توحیدی</title>
        <link>https://virgool.io/feed/@info418</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 07:57:09</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1951926/avatar/TFbC1w.jpg?height=120&amp;width=120</url>
            <title>سعیده توحیدی</title>
            <link>https://virgool.io/@info418</link>
        </image>

                    <item>
                <title>مفهوم linting چیه و چه کاربردی توی برنامه‌نویسی داره؟</title>
                <link>https://virgool.io/coffeecodecamp/%D9%85%D9%81%D9%87%D9%88%D9%85-linting-%DA%86%DB%8C%D9%87-%D9%88-%DA%86%D9%87-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%AA%D9%88%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87-gakf1r3pawfv</link>
                <description>مفهوم lintingبرنامه lint یا linter ابزاری برای برنامه نویسی هستش که کارش بررسی کدها هستش تا خطاهای اون رو آنالیز و و به هشدار بده. به زبون ساده‌تر لینترها مثل ابزاری هستن که غلط های املایی و گرامری ما رو توی نوشته‌هامون نشون میدن. اکثر linter ها به صورت رایگان قابل استفاده هستن. خیلی از text editor ها و یا IDE ها به صورت خودکار این کار رو برای ما انجام میدن و بعضی از خطاها رو به ما هشدار میدن ولی ما الان میخوایم دقیقا بدونیم که linting چیکار میکنه و چند موردش رو معرفی کنیم.اهمیت linting توی زبان برنامه‌نویسی پایتونسال ۲۰۰۱، مقاله‌ای برای pep8 نوشته شد که مشخص میکنه یه کد تمیز پایتونی چه خصوصیاتی باید داشته باشه. یه کدی که ظاهر تمیز و فاصله‌های استاندارد داشته باشه و بدون غلط سینتکسی باشه. هرچند که رعایت اصول pep8 خیلی مهمه، ولی این که همیشه حواسمون باشه که اونها رو رعایت کنیم واقعا سخته و معمولا بعضی چیزها فراموش میشن. همین جاست که linter ها به کمک ما میان تا خطاهایی که توی کدمون هست رو برطرف کنیم.مزیت استفاده از linting هاخوانایی: با استفاده از لینترها، کدهای ما خواناتر میشن.دیباگ کردن: امکان دیباگ کردن کد بدون اجرای کد.یکسان بودن ظاهر کدها: وقتی تعداد دولوپرهای یه پروژه از یک نفر بیشتر میشن، با کمک لینتر میشه ظاهر همه ی کدها رو به یک صورت درآورد.معرفی چند لایبرری برای lintingلایبرری‌ها زیادی برای linting وجود داره که میتونید ازشون استفاده کنید مثل pylint، flake8 و ... .  اگر میخواید با این لایبرری ها و نحوه نصب و استفاده‌اشون بیشتر آشنا بشید، میتونید از مینی دوره‌ی آشنایی با linting که سایت کافی کد کمپ آماده کرده، استفاده کنید. توی این دوره با مفهوم linting مفصل‌تر آشنا میشین. با لایبرری و ماژول‌های pep8، pylint، flake8 و blak آشنا میشین. فقط کافیه پایتون رو تا سطح مقدماتی بلد باشید. بهتون توصیه میکنیم که این دوره رو حتما نگاه کنید. لینک این دوره رو همین جا براتون میذاریم. دوره‌ی: آشنایی با linting  ها </description>
                <category>سعیده توحیدی</category>
                <author>سعیده توحیدی</author>
                <pubDate>Sat, 14 Jan 2023 23:05:28 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با ORM</title>
                <link>https://virgool.io/coffeecodecamp/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-orm-gsk6n1dxd0nu</link>
                <description>مفهوم ORM چیه؟اصطلاح ORM مخفف عبارت Object Relational Mapping هستش. معنای لغوی این عبارت به فارسی خیلی خوب و دقیق نیست ولی میشه، رابطه‌ی نقشه برداری به شی.  در واقع راهی هست که با استفاده از زبان برنامه نویسی و با کمک گرفتن از پارادایم شی گرایی جدول‌ها و ستون‌های مربوط به دیتابیس رو بتونیم توسعه بدیم.به زبون ساده‌تر بخوایم توضیح بدیم ORM یعنی ابزاری که به برنامه نویسی کمک میکنه و دیگه برنامه نویس قرار نیست کوئری مخصوص به هر نوع دیتابیسی رو بلد باشه و بنویسه. میگه تو کاریت نباشه به queryها و فقط کافیه object رو با استفاده از زبان برنامه نویسی که میخوای، درست کنی و من برات داخل دیتابیس درستش میکنم و query مورد نظرت رو هم تولید میکنم. مزایای استفاده از ORMهاعدم تکرار کد: کدهای ما یکبار نوشته میشه و از این به بعد هر جا که بهشون نیاز داشته باشیم و بخوایم از دیتابیس استفاده کنیم از کلاس‌های ساخته شده توی همون ORM استفاده میکنیم.آتومیت بودن اکثر عملیات‌هاعدم نیاز به نوشتن کدهای SQL: خیلی از جاها نیاز نیست که کدهای اختصاصی sql بنویسیم و همین کلاس‌ها که توی ORM هستن نیاز ما رو برطرف میکنن.استفاده‌ی راحت از ترنزاکشن‌هااتصال راحت به دیتابیس‌های مختلف بدون نیاز به تغییر زیاد توی مدل‌هااستفاده از ارث‌بری توی مدل‌ها برای فیلدهای مشترک بین مدل‌هامعایب استفاده از ORMهر دیتابیس لایبرری اختصاصی خودش رو داره و نیاز داره که شما این لایبرری و سینتکسش رو یاد بگیرید.پرفورمنس ORM ها برای  کوئری‌های ساده عالیه ولی کوئری‌های بزرگ و پیچیده این پرفورمنس رو پایین میاره و کسی که تخصصی sql کار  میکنه میدونه که کوئری‌های خود اون دیتابیس، پرفورمنس بهتر و سریع‌تری دارن.اگر به خود اون دیتابیس آشنایی نداشته باشید ممکنه که کوئری‌هایی بزنید که پرفورمنس کار رو بدتر کنن.در پایانهر فریمورک برای خودش یه ORM هم طراحی کرده برای مثال فریمورک جنگو خودش Django_ORM رو داره که از طریق اون راحت با انواع دیتابیس میتونید کار کنید.برای آشنایی بیشتر یه مینی دوره خوب هم سایت کافی کد کمپ در مورد ORM ها  منتشر کرده که میتونید ببینید تا بهتر با ORM و نحوه‌ی کار کردن و ... آشنا بشید. پیشنهاد میکنیم که حتما این دوره رو ببینید تا همراه با کد زدن با PRMها بیشتر آشنا بشید. این دوره سه تا سرفصل اصلی داره و حدودن یک ساعت و نیم زمان این دوره هستش. در ضمن این دوره رایگانه. لینکش رو هم براتون همینجا میزاریم. حتما سر بزنید. مینی دوره‌ی ORM چیه و چرا باید از اون استفاده کرد؟</description>
                <category>سعیده توحیدی</category>
                <author>سعیده توحیدی</author>
                <pubDate>Mon, 09 Jan 2023 17:38:03 +0330</pubDate>
            </item>
                    <item>
                <title>الگوهای طراحی (Design Patterns)</title>
                <link>https://virgool.io/coffeecodecamp/%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-design-patterns-tc6ah4fq4cu2</link>
                <description>در مهندسی نرم‌افزار، الگوهای طراحی یک راه حل عمومی تکرارشونده برای یک سری از مشکلات رایج در طراحی نرم‌افزار هستش. الگوی طراحی یک طرح به پایان رسیده نیست که بتونه مستقیماً به کد تبدیل بشه و کارش تموم بشه. در واقع توضیح یا الگویی برای نحوه‌ی حل یک مشکل خاص هستش که میتونه توی موقعیت‌های مختلف بارها استفاده بشه.کاربرد الگوهای طراحیالگوهای طراحی میتونن با ارائه نمونه‌های توسعه یافته، آزمایش شده و اثبات شده، روند توسعه رو سریع‌تر کنن. طراحی نرم‌افزاری تاثیرگذار، مستلزم در نظر گرفتن مسائلی هستش که ممکنه در بخش پیاده‌سازی قابل مشاهده نباشن. استفاده‌ی چندباره از الگوهای طراحی، از پیش اومدن مسائل ظریفی که میتونن باعث مشکلات عمده بشن  جلوگیری میکنه و خوانایی کد رو برای کدنویس‌ها و برنامه نویس‌ها بهتر میکنه.معمولا افراد فکر میکنن که میتونن از تکنیک‌های طراحی نرم‌افزاری خاص، برای مشکلات خاص استفاده کنن. ولی کاربرد همچین تکنیک‌هایی برای طیف وسیع‌تری از مشکلات سخت هستن. توی چنین مواقعی الگوهای طراحی راه‌حل‌های کلی ارائه میدن. اونها توی قالبی قرار گرفتن که به جزئیات مرتبط با هر مشکل خاص، نیاز ندارن.علاوه بر این، این الگوها به توسعه‌دهنده‌ها اجازه میدن تا با استفاده از نام‌های شناخته شده و قابل اعتماد برای تعاملات نرم‌افزاری ارتباط بیشتری برقرار کنن. الگوهای طراحی متداول رو میشه در طول زمان بهبود داد، و همین موضوع اونها رو قوی‌تر از طرح‌های ad-hoc میکنه. الگوهای طراحی به سه گروه اصلی تقسیم‌بندی میشن:الگوهای طراحی خلاقانهاین الگوهای طراحی بیشتر در مورد نمونه‌سازی کلاس‌ها هستن. این الگوها رو میتونید بیشتر به الگوهای ایجاد کلاس و الگوهای ایجاد اشیا تقسیم کرد. در حالی که الگوهای ایجاد کلاس از وراثت به طور مؤثر توی فرآیند نمونه‌سازی استفاده می‌کنن، الگوهای ایجاد شی به طور مؤثر از نمایندگی اختیار برای انجام کار استفاده می‌کنن. الگوی Abstract Factory نمونه‌ای از چندین خانواده از کلاس‌ها رو ایجاد میکنن.الگوی Builderساخت شی رو از نمایش اون جدا میکنن.الگوی Factory نمونه‌ای از چندین کلاس مشتق شده ایجاد میکنن.الگوی Object Poolبا بازیابی اشیایی که دیگر مورد استفاده قرار نمیگرن، از آزادسازی منابع و دسترسی پرهزینه جلوگیری میکنه.الگوی Prototypeیک نمونه کاملاً اولیه که باید کپی یا کلون بشه.الگوی Singletonکلاسی که فقط یک نمونه از اون میتونه وجود داشته باشه.الگوهای طراحی ساختاریاین الگوهای طراحی ترکیبی از کلاس و شی رو دربر میگیرن. الگوهای طراحی ساختاری، از وراثت برای ایجاد رابط‌ها استفاده میکنن. الگوهای ساختاری اشیا راه‌‌هایی رو برای ترکیب اونها و به دست آوردن عملکرد جدید تعریف میکنن.الگوی Adapterرابط‌های کلاس‌های مختلف رو مطابقت میده.الگوی Bridgeرابط یک شی رو از پیاده‌ساز اون جدا میکنه.الگوی Compositساختار درختی از اشیاء ساده و مرکب هستش.الگوی Decoratorمسئولیت‌ها رو به صورت پویا به اشیا اضافه میکنه.الگوی Facadeیک کلاس واحد که یک زیر سیستم کامل رو نشون میده.الگوی Flyweightیک نمونه با جزییات کوچیک برای اشتراک‌گذاری کارآمده.الگوی Private Class Dataدسترسی Accessor/mutator رو محدود میکنه.الگوی Proxyشیئی که نمایانگر یه شی دیگه هستش.الگوهای طراحی رفتاریاین الگوهای طراحی، ارتباطات اشیاء کلاس رو بررسی میکنه. الگوهای رفتاری اون دسته از الگوهایی هستن که به طور خاص به ارتباط بین اشیا مربوط میشن.الگوی Chain of responsibilityراهی برای ارسال درخواست بین زنجیره‌ای از اشیاء هستش.الگوی Commandکپسوله کردن درخواست فرمان به عنوان یک شی.الگوی Interpreterراهی برای گنجوندن عناصر زبان در یک برنامه.الگوی Iteratorدسترسی به صورت متوالی به عناصر یک مجموعه.الگوی Mediatorتعریف ارتباط ساده بین کلاس‌هاالگوی Mementoگرفتن و بازیابی حالت داخلی یک شیالگوی Null Objectطراحی شده تا به عنوان مقدار پیش‌فرض یک شی عمل کنه.الگوی  Observerراهی برای اطلاع‌رسانی تغییر به تعدادی از کلاس‌هاالگوی Stateوقتی یک شیء تغییر میکنه، رفتار اون تغییر کنهالگوی Strategyکپسوله کردن الگوریتم درون یک کلاس کپسولهالگوی  Templateموکول کردن مراحل دقیق یک الگوریتم به یک زیر کلاسالگوی Visitorتعریف یک عملیات جدید برای یک کلاس بدون تغییر
ایرادات الگوهای طراحیمفهوم الگوهای طراحی توسط برخی توی حوزه علوم کامپیوتر مورد انتقاد قرار گرفته از جمله اینکه:مشکل اشتباه را هدف قرار میدهدنیاز به الگوها ناشی از استفاده از زبان‌های کامپیوتری یا تکنیک‌هایی با توانایی ناکافی جداسازی، هستش. به خاطر فاکتورسازی ایده‌آل، یک مفهوم نباید کپی بشه، بلکه صرفاً باید ارجاع داده بشن. اما اگر به جای کپی به چیزی ارجاع داده بشه، «الگویی» برای برچسب زدن و فهرست‌بندی وجود نداره. پل گراهام در مقاله Revenge of the Nerds در این باره حرف میزنه.پیتر نورویگ هم استدلال مشابهی رو ارائه میده. اون نشون میده که 16 الگو از 23 الگوی کتاب الگوهای طراحی (که عمدتاً روی C++ متمرکزه) در Lisp یا Dylan ساده یا حذف شدن (از طریق پشتیبانی مستقیم زبان).فاقد بنیادهای رسمیمطالعه الگوهای طراحی بیش از حد موردی شدن و بعضی‌‌‌ها به همین دلیل استدلال کردن که این مفهوم به شدت نیاز به قرار گرفتن توی بستر رسمی‌تری داره. در OOPSLA 1999، گروه Gang of Four (با همکاری کامل اونها) در معرض یک محاکمه نمایشی قرار گرفتن، که توی اون به جنایات متعدد علیه علوم رایانه متهم شدن. اونها توسط ⅔ از هیئت منصفه که در دادگاه شرکت کرده بودن محکوم شدن.منجر به راه حل‌های ناکارآمد میشهایده‌ی الگوی طراحی، تلاشی برای استانداردسازی بهترین شیوه‌های پذیرفته شده قبلی هستن. در اصل استفاده از اونها ممکنه که مفید به نظر برسه، اما در عمل بیشتر اوقات منجر به تکرار غیر ضروری کد میشه. تقریباً همیشه راه حل کارآمدتری برای استفاده از کدها با فاکتور مناسب به جای یک الگوی طراحی (فقط به اندازه کافی خوب) وجود داره.تفاوت قابل توجهی با سایر جداسازی‌ها ندارهبعضی از نویسنده‌ها ادعا می کنن که الگوهای طراحی، تفاوت قابل توجهی با سایر شکل‌های جداسازی ندارن و استفاده از اصطلاحات جدید (که از جامعه معماری گرفته شده) برای توصیف پدیده‌های موجود در زمینه برنامه‌نویسی، غیر ضروری هستش. پارادایم Model-View-Controller به عنوان نمونه‌ای از یک الگو معرفی میشه که چندین سال قبل از مفهوم الگوهای طراحی به رسمیت شناخته شده بود. به‌علاوه بعضی استدلال می‌کنن که مشارکت اولیه جامعه الگوهای طراحی (و کتاب Gang of Four) استفاده از زبان الگوی الکساندر به عنوان شکلی از مستندات بوده. عملی که اکثرا توی پیشینه موضوع نادیده گرفته میشه.</description>
                <category>سعیده توحیدی</category>
                <author>سعیده توحیدی</author>
                <pubDate>Thu, 15 Dec 2022 10:49:02 +0330</pubDate>
            </item>
            </channel>
</rss>