<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سید عباس ظهیری</title>
        <link>https://virgool.io/feed/@m_38928790</link>
        <description>منم بازی... sabzahiri.ir</description>
        <language>fa</language>
        <pubDate>2026-06-17 02:57:50</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/590697/avatar/FmAjKZ.jpeg?height=120&amp;width=120</url>
            <title>سید عباس ظهیری</title>
            <link>https://virgool.io/@m_38928790</link>
        </image>

                    <item>
                <title>پایگاه‌داده گراف (2)  – پایگاه‌داده گراف چیست؟</title>
                <link>https://virgool.io/@m_38928790/%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%DA%AF%D8%B1%D8%A7%D9%81-2-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%DA%AF%D8%B1%D8%A7%D9%81-%DA%86%DB%8C%D8%B3%D8%AA-aakjv53z6pcd</link>
                <description>مطالب قبل:پایگاه‌داده گراف – مقدمهپایگاه‌داده گراف (1)  – گراف و دیتابیسپایگاه‌داده گراف چیست؟ احتمالاً حدس زده‌اید که یک پایگاه‌داده گراف از الگوی گراف برای ذخیره داده استفاده می‌کند؛این نوع دیتابیس در ذخیره‌سازی و بازیابی داده‌های مرتبط بسیارقوی عمل می‌کند و حتی اگر روابط زیادی بین داده‌ها در مقیاس میلیون‌ها گره نیز وجود داشته باشد، در هنگام بازیابی اطلاعات بسیار کارآمد خواهد بود. به همین دلیل معمولاً محصولاتی که از گراف دیتابیس‌ها به‌منظور ذخیره‌سازی داده‌ها استفاده می‌کنند به‌دلیل اینکه از نگاشت کلید ثابت برای گره‌ها استفاده نمی‌کنند، منعطف هستند. این بدان معناست که شما می‌توانید گره‌ها، رابطه‌ها و ویژگی آنها را اضافه یا حذف کنید بدون اینکه روی گره‌های ذخیره شده قبلی تأثیری داشته باشد.به همین دلیل، یک پایگاه‌داده گراف در یک پروژه‌ چابک که تغییرات محصول بسیار رایج است به‌خوبی جواب می‌دهد. تمام پایگاه‌داده های گراف ویژگی‌های گراف را پیاده‌سازی و طبیعتا همه آنها از یک یا چند زبان کوئری برای بازیابی و ذخیره داده پشتیبانی می‌کند.در مقاله قبلی دیدیم یک مدل گراف شامل گره‌ها و روابط است. علاوه بر این دو، یک گراف دیتابیس می‌تواند حاوی پراپرتی نیز باشند. این پراپرتی‌ها می‌تواند هم برای نود و هم برای رابطه اختصاص پیدا کند.گراف توییتر به طور مثال در شکل بالا گره نشان‌دهنده کاربر علی می‌تواند شامل یک ویژگی به‌عنوان سن و با مقدار مشخص، یک لوکیشن شامل شهر و غیره باشد. از طرفی گره‌های آبی که نمایانگر توییت‌ها است می‌تواند خصوصیات دیگری مثل متن و زمان با تایپ‌های متفاوت باشد. رابطه توییت و کاربر هم خود می‌تواند دارای مقادیر و ویژگی‌های مثل تاریخ شروع رابطه باشد که با هم مرتبط هستند.</description>
                <category>سید عباس ظهیری</category>
                <author>سید عباس ظهیری</author>
                <pubDate>Tue, 25 May 2021 16:55:48 +0430</pubDate>
            </item>
                    <item>
                <title>پایگاه‌داده گراف (1)  – گراف و دیتابیس</title>
                <link>https://virgool.io/@m_38928790/%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%DA%AF%D8%B1%D8%A7%D9%81-1-%DA%AF%D8%B1%D8%A7%D9%81-%D9%88-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-kehmszwdmclk</link>
                <description>مطلب قبل: پایگاه‌داده گراف - مقدمهسریع بریم سراغ اصل مطلب ...گراف چیست؟ گراف یک نمودار شامل گره‌هایی است که توسط روابط جهت‌دار به هم متصل می‌شوند.حالا اگه بخواهیم گراف رو با مفاهیم پایگاه داده‌های رابطه نظیر بدیم درواقع می‌توان گفت گره معرف موجودیت‌هاست. یک موجودیت یا entity معمولاً مواردی در دنیای واقعی هستند که می‌توانند فعل‌وانفعال و مشخصه داشته باشند. اگر فروشگاه رو به‌عنوان فضای مسئله در نظر بگیریم به مشتری، سفارش، فروشنده و... موجودیت میگیم.خب همانطور که گفتم مجموعه‌ای از گره‌ها و روابط گره‌ها باهم را گراف می‌نامیم. بگذارید یک مثال واقعی و نزدیک به فضای کاربرد بزنم. یکی از پرکاربردترین مواقعی که از گراف استفاده می‌کنیم شبکه‌های اجتماعی و روابط کاربران اون‌هاست. به‌طور مثال گراف زیر رو به‌عنوان گراف روابط 4 کاربر توییتر در نظر بگیرید: اجزا گراف دو نوع اصلی را شامل میشه: گره:در شکل کاربران(آدمک ها)، توییت ها(آیکون آبی) و دیوایس‌ها(آیکون موبایل) نودها هستند. نودهای مثل امیر، علی و مریم نمایانگر کاربران توییتر هستند و موجودیت توییت ها و دستگاه های ورودی هم هرکدام نودهای جداگانه هستند.رابطه : فالو ، پست و لایک کردن که نودها(کاربران، توییت‌ها و... )را باهم ارتباط می‌دهد رابطه‌های این گراف هستند. به طور مثال وقتی امیر یک توییت پست می کنه، برای امیر و توییت دو نود  جداگانه در نظر گرفته می‌شود که رابطه بین آنها از نوع پست کردن هست و وقتی احسان همان پست رو لایک می‌کنه نود احسان با اون پست دارای رابطه لایک میشه.همین‌طور که می‌بینید یک گراف به‌سهولت قابل اکستند، اضافه‌شدن و گسترش است، از این مهم‌تر اتفاقی که در گراف‌ها می‌افته شبیه همان مکانیسمی است که در مغز انسان رخ میده و مغز این نوع رابطه رو کاملاً درک و پشتیبانی می کنه. به همین دلیل شناخت مفاهیم گراف راحت و نزدیک به ذهن انسان است.</description>
                <category>سید عباس ظهیری</category>
                <author>سید عباس ظهیری</author>
                <pubDate>Tue, 25 May 2021 15:15:07 +0430</pubDate>
            </item>
                    <item>
                <title>پایگاه داده گراف - مقدمه</title>
                <link>https://virgool.io/@m_38928790/%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%DA%AF%D8%B1%D8%A7%D9%81-%D9%85%D9%82%D8%AF%D9%85%D9%87-fakf6zgz4d72</link>
                <description>سلام و درود...استفاده از پایگاه‌داده‌های گراف برای کار با داده‌هایی که حجم گسترده‌ی اتصال دارند می‌تواند در کاربرد و عملکرد فوق‌العاده باشد. اولین قدم در مهاجرت به این سمت قطعاً آشنایی با مفاهیم و کانسپت موضوع است. با توجه به حجم کم محتوای فارسی دراین خصوص بد ندیدم چند کلمه‌ای در مجموعه مقالاتی با عنوان پایگاه داده گراف نگارش کنم تا هم دانش (هرچند کمم) رو به اشتراک بزارم و هم شاید در کاربرد به برخی دوستان بتونم کمک کنم.به عنوان یک برنامه نویس یا مهندس نرم افزار در هر نقشی و هر سابقه کاری باشید حدس می‌زنم با مدل‌های پایگاه داده رابطه‌ای روبرو شده باشید. در این پایگاه داده‌ها کوئری زدن و نمایش اطلاعات یک موجودیت آسان است، اما اگر تمام جزئیات اون موجودیت و روابطش رو بخواهیم چی؟ در این جور مواقع مجبور هستیم یک کوئری طولانی، و قطعاً بسیار کند بنویسیم. می‌دونید چرا؟ چون به قول یکی از اساتید این حوزه، روابط در پایگاه داده relational به نوعی شهروندان درجه یک محسوب نمی‌شوند.حالا اگر دیتابیسی وجود داشته باشد که از گراف پشتیبانی کنه که در اون روابط جز اجزای اصلی سیستم محسوب می‌شوند قطعا فرایند متفاوتی رو تجربه خواهیم کرد. در واقع پایگاه داده های گراف در مسائل که روابط نقش تعیین کننده ای دارند در مقایسه با سایر فناوری های ذخیره داده بسیار کاربرپسند هستند.اگر با SQL قبلا کار کردید ( که قطعا برای درک مطالب دیتابیس های گراف باید با پایگاه داده های عمومی و پایگاه های رابطه ای آشنا باشید) neo4j  قطعا براتون جالب خواهد بود و پس از کار با اون بدون شک به علاقه مندی هاتون اضافه خواهد شد. به شخصه از آشنایی با این فناوری هیجان زده ام و امیدوارم شما هم در انتها هم‌چین حسی داشته باشید.من سعی می‌کنم در این سلسله مقالات مفاهیم و کلیات پایگاه داده‌های گراف از جمله Neo4j مرور کلی داشته باشم در واقع این مقالات بیشتر مباحث آشنایی بر پایگاه داده های گراف Neo4j ، و همچنین زبان  Cypher  و موضوعات مرتبط را شامل خواهد شد.</description>
                <category>سید عباس ظهیری</category>
                <author>سید عباس ظهیری</author>
                <pubDate>Tue, 25 May 2021 11:29:04 +0430</pubDate>
            </item>
                    <item>
                <title>توسعه با طعم شی‌ گرایی (0) - شی گرایی یا رویه ای (1)</title>
                <link>https://virgool.io/javacup/%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%A8%D8%A7-%D8%B7%D8%B9%D9%85-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-0-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%DB%8C%D8%A7-%D8%B1%D9%88%DB%8C%D9%87-%D8%A7%DB%8C-1-ei8ijwgg3jqs</link>
                <description>سلام دوستان. ببخشید دیر شد، خودم سعی دارم یک روز درمیان مقالات را آماده کنم، اما نمیدونم چرا انقدر زمان سریع میگذره و زود دیر میشه!.... خب بریم سراغ ادامه مقدمه و شروع بحث.در حال حاضر تقریبا همه زبان های برنامه نویسی محبوب از شی گرایی پشتیبانی میکنند ، اما قطعا این تنها راه توسعه نرم‌افزار نیست. معمولا در اولین مراحل توسعه پروژه‌های سیستم های نرم افزاری و وقتی نوبت به انتخاب تکنولوژی مناسب برای نوشتن کد می رسد ، رنگ و بوی بحث ها وجه فلسفی بخود میگیره و همیشه یکی از اولین مباحث این است که کدام پارادایم برنامه نویسی را باید دنبال کرد. پس باید نگاه دقیق تری به آنها داشته باشیم.متون زیر ترجمه ویرایش شده از مقاله Differences between Procedural and Object Oriented Programming است. البته برنامه نویسی رویه ای تقریبا در پروژه ای حرفه ای و لارج اسکیل انجام نمیشه اما مرور و مقایسه اش خارج از لطف نیست.برنامه نویسی رویه ای Procedural  برنامه نویسی رویه ای را می توان به عنوان یک مدل برنامه نویسی تعریف کرد که برگرفته از مفهوم فراخوانی رویه ای است که در آن عملیات یکی پس از دیگری و به ترتیب اجرا می شوند .رویه هایی که به عنوان روال ، زیرروال یا عملکرد ( routines- subroutines – functions) نیز شناخته می شوند، شامل یک سری مراحل محاسباتی هستند. در حین اجرای یک برنامه ، هر رویه خاص برحسب نیاز ممکن است در هر نقطه فراخوانی شود، این فراخوانی میتواند از سمت خودش باشد یا رویه های دیگر. از زبان های مطرح رویه ای میتوان به سی، فورترن، کوبول، بیسیک و پاسگال اشاره کرد.برنامه نویسی رویه ای Procedural   برنامه نویسی شی گرا  Object Oriented برنامه نویسی شی گرا را می توان به عنوان یک مدل برنامه نویسی تعریف کرد که مبتنی بر مفهوم اشیا است. اشیا حاوی مشخصات / داده ها به صورت ویژگی و کد/ رفتارها به صورت متد هستند. در واقع در این پارادیم، نرم‌افزار ها با استفاده از مفهوم اشیایی که با دنیای واقعی تعامل دارند طراحی می شوند. زبان های برنامه نویسی شی گرا کلاس پایه هستند ، به این معنی که اشیا نمونه هایی از کلاس ها هستند. زبان های جاوا، سی پلاس پلاس ، سی شارپ ، رابی، پایتون، پرل، آبجکیتیو-سی، سوییفت، دارت و... زبانهای مطرح شی گرا هستند.برنامه نویسی شی گرا  Object Oriented  تفاوت بین برنامه نویسی رویه ای و برنامه نویسیآبجکت-اورینتد یا همون شی گرادر برنامه نویسی شی گرا ، برنامه به قسمتهای کوچکی تقسیم می شود که اشیا نامیده می شوند .برنامه نویسی شی گرا از رویکرد پایین به بالا پیروی می کند . bottom up approachبرنامه نویسی شی گرا دارای مشخص کننده های دسترسی مانند خصوصی ، عمومی ، محافظت شده و غیره است.(private, public, protected)افزودن داده و عملکرد جدید آسان است.برنامه نویسی شی گرا مخفی کردن داده ها را فراهم می کند بنابراین امنیت بیشتری دارد .در برنامه نویسی شی گرا Overloading امکان پذیر است.در برنامه نویسی شی گرا ، داده از اهمیت بیشتری برخوردار است..برنامه نویسی شی گرا بر اساس دنیای واقعی است .پروسیجر اورینتد یا رویه ایدر برنامه نویسی رویه ای ، برنامه به قسمتهای کوچکی تقسیم می شود که توابع نامیده می شوندبرنامه نویسی رویه ای از رویکرد بالا به پایین پیروی می کند .(top down approach)در برنامه نویسی رویه ای مشخص کننده دسترسی وجود ندارد.افزودن داده و عملکرد جدید آسان نیستبرنامه نویسی رویه ای روش مناسبی برای پنهان کردن داده ها ندارد بنابراین از امنیت کمتری برخوردار است در برنامه نویسی رویه ای ،Overloading  امکان پذیر نیست..در برنامه نویسی رویه ای ، عملکرد مهمتر از داده است..برنامه نویسی رویه ای مبتنی بر دنیای غیر واقعی استدر ادامه به مثال هایی در این رابطه و مقایسه شی گرایی با برنامه نویسی فانکشنال خواهیم پرداخت. </description>
                <category>سید عباس ظهیری</category>
                <author>سید عباس ظهیری</author>
                <pubDate>Fri, 05 Feb 2021 18:13:49 +0330</pubDate>
            </item>
                    <item>
                <title>توسعه با طعم شی‌ گرایی - مقدمه</title>
                <link>https://virgool.io/CodeLovers/%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%A8%D8%A7-%D8%B7%D8%B9%D9%85-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%85%D9%82%D8%AF%D9%85%D9%87-zw5tonz7ligl</link>
                <description>تسلط به زبان برنامه‌نویسی جاوا باعث باز شدن درب‌های جدیدی در حرفه و مهارت برنامه نویسان و مهندسی نرم‌افزار می‌شود. بشخصه تا ده سال پیش هرگز در رؤیا و خواب هم نمی‌دیدم بتونم در خصوص برنامه‌های تلفن همراه، حوزه IOT حتی هوش مصنوعی و .... به‌عنوان برنامه‌نویس و مشاور وارد شوم. اگر بخواهم تاریخچه‌ای از خودم بگم بعد از حدود 4-5 سال کار با php، تقریباً از 8 سال پیش جاوا رو شروع کردم تقریباً پنج سال طول کشید تا درک درستی از آن پیدا کنم. چیزهایی که معمولاً در کتاب‌ها می‌خواندم و از اساتید دانشگاه و دوره‌ها می‌شنیدم، هیچ کمکی نمی‌کرد. وقتی اولین توسعه‌ام را شروع کردم ، احساس می‌کردم به قول مرد هزارچهره یک فرد اشتباهی درجایی اشتباه هستم. هرروز گیج‌ترمی شدم، من واقعاً نمی‌دانستم چه‌کار می‌کنم از اینکه که خیلی از همکارانم می‌فهمند و من نمی‌فهمیدم...تا این‌که فهمیدم مشکل ریشه دانش برنامه‌نویسم هست، ابتدای باید خوب مفاهیم شیءگرایی رو می‌فهمیدم.معمولاً برنامه‌نویس‌ها عاشق کد نویسی هستند. به‌عنوان کسی که خودش هم بیشتر کد نویس بوده معمولاً به‌محض اینکه ایده جدیدی برای یک مسئله پیدا می‌کردم، سریع به سمت برنامه‌نویسی می‌پریدم. اما از وقتی‌که به‌عنوان مدیر پروژه‌‌ها و تیم‌های توسعه نرم‌افزار را فهمیدم وسواسم بیشتر شد و فهمیدم کدنویسی آخرین کاری است که شما باید انجام دهید. سیستم نرم‌افزاری خوب با معماری شروع می‌شود. با برنامه‌ریزی، طراحی مناسب می‌توانید از اتلاف وقت در مسیر اشتباه جلوگیری کنید. نکته در مورد برنامه‌نویسی این است که نوشتن کد صرف اسپاگتی، آسان است، اما برای نوشتن کد تمیز و استفاده واقعی از ویژگی‌های شی‌گرا ، باید یک گام بزرگ برداشت.در مجموعه محتواهایی که با عنوان &quot;اصول برنامه‌نویسی شی‌ءگرا ان‌شاالله منتشر خواهم کردم، با مفاهیم تجزیه‌وتحلیل و طراحی برای برنامه‌ریزی توسعه برنامه‌ها قبل از نوشتن یک خط کد آشنا خواهیم شد.تأکید بر شیءگرایی به این دلیل است که زبان‌های برنامه‌نویسی شی‌گرا به استانداردی برای همه نوع توسعه‌ای از وب تا موبایل و ... تبدیل‌شده‌اند درواقع همه مهندسین نرم‌افزار نیاز هست با شیءگرایی آشنا باشند حتی اگر می‌خواهند به سمت فانکشنال پروگرمینگ بروند.با طراحی مناسب ، شما قادرید برنامه‌هایی توسعه دهید که انعطاف‌پذیر، قابل نگهداری و توسعه هستند. در این مجموعه محتواهای آموزشی ما با مفاهیم بنیادی شروع خواهیم کرد و اصطلاحات که نیاز به بحث در مورد توسعه شی‌گرا را توضیح خواهیم داد. درواقع فرایندی را دنبال خواهیم کرد تا چیزی که می‌خواهید به‌صورت یک اسپاگتی بنویسید، را ابتدا طراحی کنید که در نهایت چگونه آن را از هم جدا کنید و به قطعات مناسب تبدیل کنید تا بدانید دقیقاً چه کدی را می‌خواهید بنویسید.تا اونجا که بشه در این مجموعه کد نمی‌نویسیم زیرا در طی فرایند طراحی ، نیازی به آن نداریم. در عوض ، ما از مؤلفه‌های اساسی UML برای نمودار کردن مدل‌های شی گرا استفاده خواهیم کرد. و حتی در صورت نیاز در خصوص طراحی مبتنی بر DDD  صحبت خواهیم کرد.(البته هدف اصلی ما در این مجموعه آموزش مفاهیم بنیادی است.) با قدرتمندترین ویژگی‌های برنامه‌نویسی شی‌گرا ،وراثت ، چندشکلی،کپسول سازی و ... و در صورت نیاز با JUnit و مفاهیم تست آشنا می‌شویم. درنهایت با پایان این دوره شما شاهد افزایش اعتمادبه‌نفس خود در حوزه معماری و افزایش مهارت برای  توسعه سیستم‌های مهندسی‌شده راحت‌تر از آن چیزی که فکر می‌کنیدخواهید بود.پس اگر آماده‌اید شروع کنیم...مقاله بعدی : متوسعه با طعم شی‌ گرایی (1) - شی گرایی یا رویه ای (1)</description>
                <category>سید عباس ظهیری</category>
                <author>سید عباس ظهیری</author>
                <pubDate>Wed, 27 Jan 2021 06:49:06 +0330</pubDate>
            </item>
            </channel>
</rss>