<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های یاسمین آشوری</title>
        <link>https://virgool.io/feed/@yasaminashoori</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 13:14:58</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/51228/avatar/VDVrBP.jpg?height=120&amp;width=120</url>
            <title>یاسمین آشوری</title>
            <link>https://virgool.io/@yasaminashoori</link>
        </image>

                    <item>
                <title>EDD: رقصی هنرمندانه میان Domain Expert و Developer</title>
                <link>https://virgool.io/@yasaminashoori/edd-%D8%B1%D9%82%D8%B5%DB%8C-%D9%87%D9%86%D8%B1%D9%85%D9%86%D8%AF%D8%A7%D9%86%D9%87-%D9%85%DB%8C%D8%A7%D9%86-domain-expert-%D9%88-developer-ggauqrbrycea</link>
                <description>3خلاصه: توی این پست می‌خوام در مورد تجربه‌ام از ورکشاپ EDD  که توسط مسعود بهرامی برگزار شد بنویسم.  اگه با دامین‌های پیچیده مالی مثل حسابداری و حقوق و دستمزد سر و کار دارین و نمی دونید از کجا شروع کنید و پروداکت منیجر، Domain Expert و دولوپر هستین این پست برای شماست. اگه میخواین درمورد EDD بیشتر بدونید قبل از این مطلب می‌تونید به این لینک ها مراجعه کنید: https://masoudbahrami.substack.com/p/exploratory-domain-discovery-eddhttps://masoudbahrami.substack.com/p/the-heart-of-exploratory-domain-discoveryhttps://www.youtube.com/watch?v=7vPq5qjI21s&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;t=1519s منم این نوشته رو به مریم میرزاخانی تقدیم می‌کنم.جمعه 7 دی ورکشاپی به اسم Exploratory Domain Discovery توسط مسعود بهرامی برگزار شد، ورکشاپ EDD یک رویکرد Modeling Collaborative یا به اختصار CoMo است. در اصل CoMo شبیه  مانیفست است (یکسری principle) و رویکردهایی/کارگاهایی که این اصول را در هسته‌ خودشون دارند را  به عنوان یکی از روش ها، رویکردها، ابزار و کارگاه های رسیدن به  modeling collaborative and designing به حساب میاریم. EDD رویکردی هست که از نقطه آغاز به کمک Collaborative Modeling انجام میشه، کار گروهی خیلی اهمیت برجسته‌ای تو این مدل طراحی داره و ورکشاپ هم به این روش پیش رفت.پرده اول اولین کاری که انجام دادیم این بود که به دو گروه تقسیم شدیم، و یه برگه بزرگ سفید جلوی ما گذاشتن و ازمون خواستن که بدون اینکه دستمون رو برداریم یه طرحی رو بکشیم و خودکار رو به نفر بعدی بدیم، تیم‌ها شروع کردن به طراحی، هر کس یه شکلی رو انتخاب می‌کرد و سعی می‌کرد به شکلی اون رو تموم کنه که نفر بعدی بتونه شکل رو ادامه بده، به همین دلیل طرح‌های خلاقانه و بامزه‌ای ایجاد شد. این تمرین  یه abstraction خیلی ساده و واقعی از اتفاقی هست که تو تیم‌های نرم‌افزاری می‌افته، موقعی که شروع به تعریف داستان بیزینس می‌کنن و موقعی که پروژه استارت میخوره همه ما چیزی رو تحویل می‌گیریم و ادامه اون رو می‌بریم جلو، این وسط فیلتر‌های زیادی وجود داره، چالش‌ها و استراتژی‌های مختلفی هم وجود دارن که همه در نهایت روی طرح نهایی تاثیرگذار هستن.پرده دوم فاز بعدی، پیدا کردن main point بود از روی داستانی که تعریف می‌شد، یه داستان ساده از اتفاقات روزمره و پیدا کردن هدف اصلی اون.داستان ما این بود: شهین در یک آپارتمان قدیمی زندگی می‌کرد که حیاط پشتی کوچکی داشت این حیاط سال‌ها بود که به حال خود رها شده بود پر از علف‌های هرز و زباله. شهین که عاشق گل و گیاه بود تصمیم گرفت این وضعیت را تغییر دهد او با صرف وقت و انرژی زیاد علف‌های هرز را کند زباله‌ها را جمع‌آوری کرد و خاک را آماده کرد سپس با خرید چند گلدان گل و گیاهان مختلف باغچه کوچکی را در آنجا ایجاد کرد، او حتی یک نیمکت کوچکی هم در آنجا قرار داد سپس همسایگان به این باغچه زیبا جذب شدند و شروع به کمک کردند آن‌ها گل‌های جدید کاشتند، به گیاهان آب دادند و حتی ساعاتی را در آنجا به استراحت و گفتگو می‌پرداختند حیاط پشتی آپارتمان که زمانی مکانی متروکه بود حالا به ‌مکانی دل‌نشین  و گردهمایی همسایگان تبدیل شده بود.نکته اصلی این داستان به نظر شما چی بود؟ تو کامنت بهم بگین. بعد از گفتگو با اعضای تیم هر کسی نظر خودش  رو گفت : حل مسئله، تبدیل تهدید به فرصت، رسیدن به حال خوب پس از تحمل سختی، دغدغه‌مند، نیازمندی و هدف، مسئولیت‌پذیری و ... و در نهایت کلمات کلیدی صحبت های همه رو در قالب یک جمله بیان کردیم.بخش بعدی این بود که یه جمله نوشته شده بود و باید برای اون جمله یه داستان تعریف می کردیم: Leave the world a little bit kinder than ya found it.اشتراکاتی که بین این داستان‌ها وجود داره این هست که میخوایم یه point  رو به کسی برسونیم و اون نکته رو در قالب یک story و یک context  سعی می‌کنیم منتقل کنیم به این هدف که اون point  درست منتقل بشه، گاهی اوقات اون point رو داریم و سعی می‌کنیم از اول جملاتی رو طوری بچینیم که درست مفهوم رو منتقل کنه. 99% هر داستانی context هست! تو کتاب clean code هم به این quote بالا اشاره شده، سعی می کنیم کد رو طوری refactor کنیم که جای بهبود برای بعدا هم داشته باشه. Rolesنکته: نقش هایی که تو این ورکشاپ بیان شده در واقع نقش هایی هستند که برای ورکشاپ EDD نیاز داریم و این نقش‌ها ارتباط مستقیمی با خود CoMo ندارند و همینطور برعکس، بخشی از رویکردهای CoMo هم ممکن هست بعضی از این نقش‌هایی که در کارگاه معرفی میشه رو داشته باشن یا نداشته باشن.نقش‌هایی که در EDD وجود داره این‌ها هستن: 1. Facilitatorپیشنهاد موکد میشه که تمام تمرکز یک فرد روی همین نقش باشه و در زمان برگزاری جلسه این فرد کارش facilitate کردن جلسه هست و  از Practitionerها که در ادامه می‌گیم باید جدا باشه و  همینطور خود این فرد  باید قبلا تجربه شرکت کردن در کارگاه EDD رو داشته باشه خروجی جلسه رو بدونه و درک کنه که اعضای تیم به چه هدفی دور هم جمع شدن چون هدف جلسه بر گزاری EDD نیست. هدف رسیدن به تصویر بزرگ‌تر و main point هست این فرد می‌دونه که artifact و خروجی اون کاری که قرار هست انجام بشه چی هست و باید اون Practice که انجام میشه رو به اصطلاح روش سوار باشه و بدونه چطور انجام میشه و از اون مهم تر خیلی مهم تر این هست که دنبال چی هستیم  و اگر فکر کرد رویکرد و سازوکار EDD به هر دلیلی به درد جلسه نمی‌خوره بهتره رویکرد دیگری رو اتخاذ کنه. 2. Practitioner در اصل بازیکنان اصلی بازی توی EDD هستند و  کسایی هستن که اون داستان رو تعریف می‌کنن تو دنیای software وجود دو تا آدم خیلی مهم هست آدم هایی که سوال خوب می تونن بپرسن که کسایی هستن که میخوان یه کاری رو  انجام بدن و آدم‌هایی که جواب سوالات رو دارن و فقط کسایی نیستند که نرم‌افزار رو تعریف می‌کنند بلکه همه کسایی که توی جلسه هستند یا همه ذینفعان پروژه باید پرکتیشنر باشند مثلا متخصص دامنه، UI, UX, QA و ...3. Scribeمیرزا بنویس یا Scribe کسی هست که اون نکته ها رو می نویسه طی جلسه، توی Event Storming نقش مهمی هست و  نقش جداگانه ای نیست که فقط یک نفر اون رو بر عهده بگیره. دلیلش هم اینه که توی  Event Storming همه دارن به صورت فعالانه مشارکت می‌کنن  و نکات رو روی sticky note  می‌نویسن  ولی توی Domain Story Telling یک نفر این کار رو انجام می‌ده.4. Time Tracker نقش  Time Trackerبیشتر از این جهت مهم است که ما معمولا یک تایم2 الی 3 ساعته برای همچین جلساتی داریم. آدمهایی که دعوت میشن همیشه در دسترس نیستن، پس بهتره برای هر راند EDD یک تایم مشخص داشته باشیم. این تایم باکس بودن کمک می‌کنه که روی موضوعاتی که بحث برانگیز هستند ولی ممکن هست که مهم نباشند و جزئی باشن، خیلی توقف نکنیم. اونها رو روی کارتهای قرمز رنگ می‌نویسیم و رد می‌شیم. هدف این نیست که صد در صد درمورد همه چیز به اجماع نظر برسیم. مهمترین چیزی که اگر بهش برسیم می‌تونیم بگیم اون هدف رو  زدیم حرکت از unknown به known هاست. این knownها می‌تونه سوالاتی باشه که جوابشون رو نمی‌دونیم. ولی توی ماتریس آیزنهاور ما از unknown رسیدیم به known، پس حتی می‌تونیم بگیم هورا :)مقدمه ای بر EDDیکی از toolهای  CoMo رویکرد EDD هست.1. Specification by exampleآوردن example توی همه (تقریبا) راندهای فایت کردن توی EDD ضروری است. بخاطر همین یکی از کارتهای استیکی نوت، یعنی یکی از بیلدینگ بلاک‌های اصلی توی EDD اختصاص داده شده به همین exampleها هست. برای مثال به جای این که یک feature  رو به صورت مستقیم توضیح بدیم میشه اون ها رو به صورت کلی گفت و example اجرا (run) کرد تا اون چیزهایی که باید درمورد اون فیچرها گفت رو بگیم و برای اینکه مطئن بشیم که همه متوجه موضوع شدن سعی می کنیم example اجرا کنیم چون این مثال ها to the point, concrete هستن و خیلی راحت تر می‌تونیم متوجه بشیم که نکته رو فهمیدن همه یا اینکه منظور ما رو اشتباه متوجه شدن و تو هر مرحله ای که داریم explore انجام می‌دیم اون example رو اجرا می‌کنیم.تولید و توسعه نرم‌افزار یک فرایند یادگیری هست.2. Merge people, not split them!تیم اسکرام و اعضای تیم توسعه همه توی یک زمین بازی می‌کنیم، به جای جدا کردن تیم از همدیگه تیم ادغام بشه و سیستم نرم افزاری شکسته بشه3. Multi-Layer Domainفضای مسئله یک فضای multi layer هست و گاهی اوقات تو دامین های پیچیده ای مثل Payroll (حقوق و دستمزد) و حسابداری ما ممکن هست تبدیل به متخصص اون دامین بشیم تا بتونیم نرم افزاری رو توسعه بدیم، در دامین هایی که  با Customer درگیر می‌شیم به نوعی مشتری هم جزء اون سیستم هست یعنی  B2C و اگه دولوپر نباشیم باز هم متوجه اون سیستم می شیم مثل خرید اینترنتی و ...4. Forget about the depth-first approach!رویکردی که به صورت طبیعی مغز داره به این شکل هست که دوست داره به صورت عمیق تمام ارتباط‌ها و دانش های پنهان شده درمورد یه موضوع رو بدونه و Deep بشه ولی برای حل مسئله این رویکرد خوبی نیست. یه جمله ای هست که میگه اگه میخواین یک چیزی رو به کسی نگین دو حالت داره یا مستقیم بگین که نمی گین یا اینکه اونقدر اطلاعات بدین که کسی متوجه نشه آخرش چی شد و یه دریایی از اطلاعاتی رو بدین برای ما که تو software هستیم هم این اتفاق می‌افته و نمی‌دونیم اصلا اصل مسئله چی بوده و از کجا باید شروع کنیم.توی رویکرد EDD ما سعی می‌کنیم برعکس این مسیر رو بریم و سعی می‌کنیم توی اون مسئه ای که داریم explore می‌کنیم Breadth First Exploration هست، توی این رویکرد سعی می کنیم تو اون فضایی که داریم explore می‌کنیم Abstraction رو تو اون level حفظ کنیم و هر جایی که نیاز بود وارد جزئیات می‌شیم و هر جایی هم که نیاز نبود وارد جزئیات نمی‌شیم.5. Start from the end: focus on the desired goal.سوالی که اول از همه از خودمون می پرسیم این هست: تهش که چی؟ یکی از فلسفه‌های متمایز کننده‌ای که توی EDD داریم این مورد است که ما با یک end desired goal یا end desired point توی محصول شروع می‌کنیم، این به ما کمک می کنه که point اصلی رو شناسایی کنیم و سعی کنیم ادامه مراحل و context رو بر اساس اون point بچینیم، هم کسی که کار توسعه انجام میده هم کسی که کار محصول انجام میده.  بعد شروع می‌کنیم عقب عقب برمی‌گردیم و داستان رو جوری می‌چینیم که بتونیم به این end desired goal برسیم. احتمالا این جمله رو از استیو جابز شنیده باشین:You can&#x27;t connect the dots looking forward, you can only connect them looking backwardsبرداشت‌های مختلف می تونه طراحی رو عوض کنه، اگه فرمول اصل موضوع payroll باشه همه چیز براساس اون جلو میره ولی اگه به این نتیجه برسیم که فرمول اصل موضوع این سیستم نیست و یک context برای چیز دیگه هست، طراحی عوض میشه یا اگه تو سیستم حسابداری متوجه بشیم که Account tree اصل موضوع نیست دوباره طراحی عوض میشه.6. Keep the abstraction at the level of explorationوقتی هنوز روال کلی چگونگی انجام یه کاری رو خبر نداریم ولی روی یه موضوعی سریعا  deep می‌شیم و بعدا که بریم جلو باید برگردیم عقب دائما تا مرور کنیم و اطلاعات زیادی سر وقت ما میاد و باید این ها رو متوجه شیم نکته اینجاست که deep شدن بد نیست ولی باید در تایم مناسبی اتفاق بیافته. یه مسئله واقعی:Practicing EDD in Accountingبراساس داستانی که Domain Expert برای ما تعریف می‎‌کنه باید main point  و اجزای اصلی سیستم رو پیدا کنیم: به یه بخشی نیاز دارم که بتونم انواع حساب رو اونجا تعریف کنم مثل حساب های دارایی و دریافتنی و پرداختنی. میخوام سلسله مراتب داشته باشه و انواع حساب ها رو دسته بندی کنم.میخوام روی سندها تاریخ بزنم و از تراکنش ها اکسپورت بگیرم. می خوام مغایرت های بانکی رو داشته باشم و سند اصلاحی بزنم.گروه حساب داشته باشم یعنی گروه حساب معین و کل و بتونه اون حساب ها رو به تفصیلی ها وصل کنم.گزارش بگیرم مثل گزارش سود و زیان و Balance sheet.دوره مالی میخوام تعریف کنم که یه آغاز و پایان داره.بتونم opening balance  تعریف کنم.همینطور Journal entry های سند‌ها رو به دفتر کل بفرستم. سند بزنم و اون شامل اطلاعات سند مثل شماره و مبلغ و هدر و توضیحات هست. 7. Basic information پیدا کردن نقطه شروع تو این مکالمه می تونه سخت باشه، به نوعی مسئله مرغ و تخم مرغ هست و میزان اطلاعات عظیمی سمت ما میاد. کاری که انجام میدیم این هست که با اطلاعات پایه شروع می کنیم و sequentially به مسئله نگاه می‌کنیم و خلاصه اون این هست که تا وقتی که نتونم حساب گروهی  تعریف کنم نمی‌تونم حساب کل تعریف کنم و تا حساب کل تعریف نکنم نمی‌تونم حساب معین تعریف کنم و الی آخر.  جلوتر که می‌ریم شروع به تعریف سند می‌کنیم ولی نهایت چیزی که تیم متوجه میشه mechanical هست! ما  می‌تونیم فضای مسئله رو کنترل کنیم: مثلا تو این مرحله شماره یونیک بودن حساب ها اهمیتی نداره من اول باید بفهمم نقطه کانونی چی هست و چی تو حسابداری مهم هست.اگه حسابداری هم یه story باشه پس احتمالا یه main point  داره و  بقیه context هستن سوال اینجا هست که اون نکته اصلی چی میتونه باشه: معمولا پوینت اصلی اینجا سند میشه که به حساب وصل میشه و معمولا هم حساب معین میشه.8. Circular pattern تو این مرحله دنبال pattern هستیم که داره تکرار میشه و اگه مسئله رو برای اون حل کنیم احتمالا برای کل دامین مسئله حل میشه و معمولا توی این پترن، زمان نقش مهمی رو داره و دائما تکرار میشه مثلا : سال، روز و ... توی سیستم حسابداری هم یه سری چیزها هست که به ما سرنخ میده مثل Financial Year  که مشخصا داره درمورد سال صحبت می‌کنه و زمان خیلی اینجا دخیل هست. توی این سال مالی یه شروع و پایان هست. این سرنخ هایی که پیدا کردیم رو شروع می کنیم visualize می کنیم و می گیم یه محور زمان داریم  و طبق صحبت ها می تونیم بگیم دوره مالی و میایم درمورد یه دوره مالی خاص صحبت می کنیم مثلا دوره مالی 1402 و  scope رو کوچک تر می‌کنیم، و یه سری حالت های exceptional رخ میده که درمورد این ها نباید توی این لایه اول از abstraction صحبت کنیم این که افتتاحیه دوره مالی اولیه با بقیه متفاوت هست رو بعدا درمودش صحبت می کنیم شاید جلو برم بخوام یه مدل دیگه این رو طراحی کنم. و هر دوره مالی به یه ژورنال وصل میشه و  توی هر ژورنال لیستی از تراکش داریم و هر تراکنش شامل یه سری entry هستن (article)  که هر کدوم این ها به یک حساب معین وصل می‌شن و اگه این تصویر درست بود بعد سراغ capture کردن اتفاقاتی می‌ریم که توی این دامین افتاده و ممکن هست جزئیاتی مثل Debit Credit و اینکه تراکنش حداقل دو تا حساب داره هم مطرح بشه ولی تو این مرحله این‌ها اصلا برای ما اهمیت نداره چون این‌ها Business rule هایی هستن که اگه بخوام  فردا پیاده سازی‌اش بکنم، میرم سمتش. و تو این مرحله سراغ main point  میریم که از کجا وارد این دامین بشیم دنبال اون سرنخ ها هستیم.آخر این مسئله این هست که یک journal وجود داره و هیچ جزئیاتی ازش نمی دونم و به این میگم Domain Concept. مرحله بعد تو این journal سندها میان اینجا پست میشن پس یه سری Transaction اینجا داریم و این تراکنش ها خودش یه سری حساب معین داره subledger و ارتباط بین این ها رو اخر به اول مشخص می‌کنیم: پس journal در واقع میشه: ثبت کردن تراکنش های حسابداری.تر اکنش: هر کدوم از این تراکنش ها  حداقل دو حساب معین رو درگیر می‌کنه و بعد از اون پراپرتی های این ها رو اضافه می‌کنیم: این جورنال شامل یه سری صفحه، تاریخ و یه سری سند میشه. تراکنش شامل: تاریخ، entry,  مجموع Debit Credit میشه  و تمام جزئیات این سند هم لازم نیست بنویسیم. حساب معین هم معمولا شامل یه کد و یه Title هست. توی این لول از abstraction وقتی داریم داستان رو تعریف می کنیم باید make sense کنه و کنار این جزئیات یه سری example هم می‌نویسیم و معمولا  Domain Expert اینجا می تونه راهنمایی کنه.ژورنال به سال 1402 وصل میشه و صفحات اون ژورنال و تاریخ‌شون رو می‌نویسیم پس سندهایی که تو این ژورنال هستن و مربوط به سند 1 هستن تو صفحه 1 هستن و به همین ترتیب، داخل سند هم Debit, Credit هستن. درمورد تراکنش هم یه شماره سند براش میخوره شماره سند 1 مثلا و یه تاریخ صدور براش می‌خوره  با جزئیاتی مثل حقوق کارمندان و یه حساب دیگه هم داریم حساب بانکی که منظور ما میشه مثلا 2 میلیارد میشه پول کارمندان که از حساب بانکی پرداخت میشه. نکات کلی اینجا ممکن هست سوال‌های زیادی داشته باشیم ولی باید سوال‌مون رو نگه داریم تا بریم جلو و مسئله برای ما واضح تر بشه.ممکن هست Business rule هایی اینجا باشه که اون هارو اینجا capture می‌کنیم مثل هر سند حداقل دو سند دارد. اینجا ممکن هست تفصیلی هم پیش بیاد که حداقل دو تا معین رو درگیر می‌کنه ولی یه مرحله پایین تر میشه و فعلا وارد این موضوع نمی‌شم و تو لایه abstraction بعدی می‌ریم سراغش.تو این مرحله منظور از هر کدام از این مفاهیم رو متوجه شدیم و معنی هر کدوم رو کنارشون یادداشت می‌کنیم  و یه زبانی رو استفاده می‌کنیم و unified می‌کنیم که همه جا این رعایت بشه، توی توسعه، داکیومنت، دامین و فیگما و API هم همین زبان باشه. Recap یه پترن رو پیدا کردیم به اسم دوره مالی و اتفاقاتی که اونجا افتاده بود رو پیدا کردیم و ارتباط بین اون ها رو پیدا کردیم و جزئیات شون رو یادداشت کردیم و یه بار باید این داستان خونده بشه و اگه چیزی از قلم افتاده که مهم هست اضافه بشه تا اینجا این رو داریم: یه ژورنال داریم توی هر دوره مالی، ژورنال یه سری تراکنش داره و هر تراکنشی هم حداقل دو تا حساب معین رو درگیر می‌کنه. تا اینجا مرحله اول رو رفتیم جلو ولی چطور بریم سراغ مرحله دوم و  روی کدوم از این‌ها عمیق بشیم؟ جواب این سوال خیلی مهم هست چون اگه روی همه اینها عمیق بشم دارم دوباره از abstraction خارج میشم و نمیخوام دوباره از دوره مالی شروع کنم دوباره این اتفاق می‌افته، توی مرحله دوم باید سرنخی رو پیدا کرد که به ما کمک کنه روی دامین درستی عمیق بشیم. Value Streamکل ارزشی که تو اون سیستم هست حول چه چیزی می چرخه؟ توی حسابداری یه value stream مبتنی بر زمان داریم که باید از اول تا آخر انجام بشه که بگیم مسئله حسابداری انجام شده.Good questions بیشترین فعالت تکرار‌شونده تو این دامین چی هست؟  ثبت سند Walking skeleton metaphor یک metaphor  داریم از Alistair Cockburn که میگه: توی sprint که اجایلی‌ها ست می‌کنن به عنوان sprint zero بورد رو ستاپ می‌کنن و آدم ها رو جمع می‌کنن، و ما قرار هست یک محصولی رو توسعه بدیم می‌تونیم فکر کنیم یک آدمی هست که قرار هست توسعه بدیم و اون  آدم رو شبیه اسکلتی بهش نگاه می‌کنیم که می‌تونه راه بره فقط در مرحله اول، یک بار چیزی که قرار هست دولوپ کنیم رو تصور می‌کنیم و اگه کلیات کار اوکی بود اون رو توسعه می‌دیم.تو این مرحله ما یه سیستم پیچیده رو به حالت ساده شکوندیم و main point رو پیدا کردیم، تو این مرحله ما اصلا کاربر رو وارد بازی نکردیم و سیستم رو بررسی کردیم.بخش اول تموم شد تو بخش دوم تجربه خودم رو در استفاده از این رویکرد می‌گم. خوشحال میشم نظرات تون رو بدونم، مرسی که خوندید.</description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Fri, 03 Jan 2025 03:15:26 +0330</pubDate>
            </item>
                    <item>
                <title>قسمت1- دیتابیس : دلیل اهمیت Graph Database و کاربرد آن</title>
                <link>https://virgool.io/@yasaminashoori/%D9%82%D8%B3%D9%85%D8%AA1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D9%84%DB%8C%D9%84-%D8%A7%D9%87%D9%85%DB%8C%D8%AA-graph-database-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D8%A2%D9%86-kvehd1enlmd2</link>
                <description>Kraken :) این پست قرار هست ویرایش بشه و تغییرات زیادی روش اعمال بشه تا راحت تر خونده بشه و پست آموزشی بهتری بشه   :) با تشکر از نظرات خواننده های عزیز ❤️تو این پست میخوام اول از همه شما رو با طرز کاری آشنا کنم که پایه و اساس خیلی از سیستم های خفن و شرکت های غول امروزی هست. اگه اهل تکنولوژی باشین و تو دنیای فرمال متد و دیتابیس چرخیده باشین اسمش به گوشتون خورده :)گراف ها همه جا هستن همه جا!گراف ها همه جا هستند و برای درک طیف گسترده ای از datasets در زمینه هایی مانند علم، دولت و تجارت بسیار مفید هستند. دنیای واقعی - بر خلاف مدل forms-based در پایگاه داده های relational - غنی و به هم مرتبط است: در بخش هایی یکنواخت و محدود به قوانین، در سایر موارد استثنایی و نامنظم است. هنگامی که نمودارها را درک می کنیم، شروع به دیدن آنها در انواع مکان ها می کنیم. به عنوان مثال، گارتنر پنج نمودار را در دنیای تجارت شناسایی می کند -social, intent, consumption, interest, mobile - و می گوید که توانایی استفاده از این نمودارها &quot;مزیت رقابتی پایدار&quot; را فراهم می کند.گراف چیست؟ یک گراف فقط مجموعه ای از رئوس و یال ها است - یا به زبانی کمتر ترسناک، مجموعه ای از گره ها و روابطی که آنها را به هم متصل می کند. گراف ها موجودیت ها را به عنوان گره ها و راه هایی را نشان می دهند که آن موجودیت ها با جهان به عنوان روابط مرتبط می شوند. این ساختار رسا و همه منظوره به ما اجازه می دهد تا انواع سناریوها را مدل سازی کنیم.ساخت یک موشک فضایی،  سیستمی از جاده‌ها، و از زنجیره تامین یا منشأ مواد غذایی، تا تاریخچه پزشکی برای جمعیت‌ها و فراتر از آن. به عنوان مثال، داده های توییتر به راحتی به عنوان یک نمودار نمایش داده می شوند. در شکل 1-1 شبکه کوچکی از فالوورها را می بینیم. روابط در اینجا در ایجاد زمینه معنایی کلیدی هستند: یعنی اینکه بیلی از هری پیروی می کند و هری نیز به نوبه خود از بیلی پیروی می کند. روت و هری نیز به همین ترتیب یکدیگر را دنبال می کنند، اما متأسفانه، در حالی که روث به دنبال بیلی می آید، بیلی (هنوز) پاسخی به این کار نداده است. شکل 1-1. یک نمودار اجتماعی کوچک البته، نمودار واقعی توییتر صدها میلیون بار بزرگتر از مثال در شکل 1-1 است، اما دقیقاً بر اساس همان اصول کار می کند. در شکل 1-2، نمودار را به گونه‌ای گسترش داده‌ایم که پیام‌های منتشر شده توسط روث را شامل شود. البته، نمودار واقعی توییتر صدها میلیون بار بزرگتر از مثال در شکل 1-1 است، اما دقیقاً بر اساس همان اصول کار می کند. در شکل 1-2، نمودار را به گونه‌ای گسترش داده‌ایم که پیام‌های منتشر شده توسط روث را شامل شود:گراف پایگاه داده یعنی چی؟ &quot;دیتابیس‌های گرافی یکی از بزرگ‌ترین trend های کسب و کار امروز را شکل می‌دهند: بهره‌گیری از روابط پیچیده و پویای داده‌های پیوندی برای تولید بینش و مزیت رقابتی. چه بخواهیم روابط بین مشتریان، عناصر در شبکه تلفن یا دیتاسنتر، تولیدکنندگان و مصرف‌کنندگان سرگرمی، یا ژن‌ها و پروتئین‌ها را درک کنیم، توانایی درک و تجزیه و تحلیل گراف‌های بزرگ داده‌های پیوندی از اهمیت بالایی برای تعیین اینکه کدام شرکت‌ها در دهه آینده پیشتاز رقبا خواهند بود.استفاده از روابط پیچیده و پویا در داده‌های بسیار مرتبط برای ایجاد بینش و مزیت رقابتی. چه بخواهیم روابط بین مشتریان، عناصر موجود در یک شبکه تلفن یا datacenter network، تولیدکنندگان و مصرف کنندگان حوزه entertainment، یا ژن ها و پروتئین ها را درک کنیم، توانایی درک و تجزیه و تحلیل نمودارهای گسترده از داده های بسیار مرتبط در تعیین اینکه کدام شرکت ها از رقبای خود بهتر عمل می کنند، مزیت رقابتی و نکته اصلی خواهد بود.برای داده‌هایی با حجم یا ارزش معنادار، دیتابیس‌های گرافی بهترین راه برای نمایش و پرس و جوی داده‌های پیوندی هستند. Connected data داده‌هایی هستند که برای تفسیر و ارزش دهی به آنها، نیاز است که ابتدا روش‌هایی که عناصر تشکیل‌دهنده آنها به هم مرتبط هستند را درک کنیم. بیشتر از هر چیز، برای تولید این درک،نیاز داریم که ارتباطات بین چیزها را نامگذاری کنیم.هرچند شرکت‌های بزرگ این مسئله را مدتی پیش درک کرده و فناوری‌های پردازش گرافی اختصاصی خود را ایجاد کرده‌اند، اما اکنون در دورانی هستیم که این فناوری به سرعت دموکراتیزه شده است. امروزه دیتابیس‌های گراف همه منظوره (general-purpose) واقعیت دارند، که به کاربران عمومی این امکان را می‌دهند تا از مزایای داده‌های پیوندی، بدون نیاز به سرمایه‌گذاری در ساخت زیرساخت گراف خود لذت ببرند.یک نکته قابل توجه درباره این بازگشت داده‌ها و تفکر گرافی این است که نظریه گراف به تازگی مطرح نشده است. این نظریه توسط اویلر در قرن ۱۸ مطرح شد و توسط ریاضی‌دان‌ها، جامعه‌شناسان، انسان‌شناسان و دیگران مورد تحقیق و بهبود قرار گرفته است. با این حال، تنها در چند سال اخیر است که نظریه گراف و تفکر گراف در مدیریت اطلاعات به کار گرفته شده است. در آن زمان، پایگاه‌های اطلاعاتی گراف به حل مشکلات مهم در زمینه‌های social networks, master data management, location, suggestions و موارد دیگر کمک کرده‌اند. این افزایش تمرکز بر روی نمودار توسط دو نیروی دوگانه مهم هدایت می‌شود: موفقیت‌های تجاری عظیم شرکت‌هایی مانند فیس‌بوک، گوگل و توییتر، که همگی مدل‌های تجاری خود را متمرکز  در فن آوری های گراف اختصاصی خود کرده اند. و  مورد دوم معرفی پایگاه های داده گراف با هدف عمومی در چشم انداز فناوری.دقیق تر: گراف دیتابیس  چیست؟یک سیستم مدیریت پایگاه داده گراف (از این پس، یک پایگاه داده گراف) یک سیستم مدیریت پایگاه داده آنلاین با روش های ایجاد، خواندن، به روز رسانی و حذف است که یک مدل داده گراف را نشان می دهد. پایگاه داده های گراف عموماً برای استفاده با سیستم های تراکنش (OLTP) ساخته شده اند. بر این اساس، آنها معمولاً برای عملکرد تراکنش بهینه شده و با در نظر گرفتن یکپارچگی تراکنش و در دسترس بودن عملیاتی مهندسی می شوند. دو ویژگی از پایگاه داده های گراف وجود دارد که باید هنگام بررسی فناوری های پایگاه داده گراف در نظر بگیرید:  2. he underlying storage برخی از پایگاه های داده گراف از ذخیره سازی گراف بومی استفاده می کنند که برای ذخیره و مدیریت گراف ها بهینه شده و طراحی شده است. با این حال، همه فناوری های پایگاه داده گراف از ذخیره سازی گراف بومی استفاده نمی کنند. برخی داده‌های گراف را در یک پایگاه داده رابطه‌ای، یک پایگاه داده شی‌گرا یا برخی دیگر از ذخیره‌سازی داده‌های همه منظوره سریال می‌کنند. 2.The processing engine برخی از تعاریف مستلزم آن است که پایگاه داده گراف از مجاورت بدون شاخص استفاده کند، به این معنی که گره های متصل به طور فیزیکی به یکدیگر در پایگاه داده اشاره می کنند. یعنی یک مدل داده گراف را از طریق عملیات CRUD در معرض دید قرار می دهد، به عنوان یک پایگاه داده گراف واجد شرایط می شود. با این حال، ما مزایای عملکردی قابل توجه مجاورت بدون فهرست را تصدیق می‌کنیم، و بنابراین از اصطلاح پردازش گراف بومی برای توصیف پایگاه‌های اطلاعاتی گراف استفاده می‌کنیم که از مجاورت بدون فهرست استفاده می‌کنند.نقاط  قوت  پایگاه‌های داده گراف :علی‌رغم این واقعیت که تقریباً هر چیزی را می‌توان به عنوان نمودار مدل‌سازی کرد، ما در دنیایی عمل‌گرایانه از بودجه‌ها، جدول زمانی پروژه‌ها، ستانداردهای شرکتی و commoditized skill-sets زندگی می‌کنیم. اینکه یک پایگاه داده گراف، یک تکنیک مدل‌سازی داده قدرتمند اما جدید ارائه می‌کند، به خودی خود توجیه کافی برای جایگزینی یک پلت‌فرم داده شناخته‌شده و شناخته شده ارائه نمی‌کند. همچنین باید یک مزیت عملی و بسیار مهم وجود داشته باشد. در مورد پایگاه‌های اطلاعاتی گراف، این انگیزه به‌صورت مجموعه‌ای از موارد استفاده و الگوهای داده وجود دارد که عملکرد آن‌ها هنگام پیاده‌سازی در یک نمودار به میزان یک یا چند مرتبه بهبود می‌یابد و تأخیر آن در مقایسه با پردازش دسته‌ای بسیار کمتر است.خلاصه: در این قسمت ما داده های متصل را تعریف کرده و مدل ویژگی گراف را بررسی کرده ایم، ابزاری ساده اما گویا برای نمایش داده های متصل. Property graphs دامنه‌های پیچیده را به شیوه‌ای رسا و انعطاف‌پذیر می‌گیرند، در حالی که پایگاه‌های داده گراف توسعه برنامه‌هایی را که مدل‌های گراف ما را دستکاری می‌کنند آسان می‌کنند. در قسمت بعدی با جزئیات بیشتری به چگونگی برخورد چندین فناوری مختلف با چالش داده‌های متصل می‌پردازیم، از پایگاه‌های داده رابطه‌ای شروع می‌کنیم، به فروشگاه‌های NOSQL انبوه می‌رویم و به پایگاه‌های داده گراف میرسیم. در طول بحث، خواهیم دید که چرا نمودارها و پایگاه های داده گراف بهترین ابزار را برای مدل سازی، ذخیره سازی و جستجوی داده های متصل ارائه می دهند...منبع :  کتاب Graph Databases از انتشارات O&#x27;Reilly </description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Tue, 24 Oct 2023 20:51:27 +0330</pubDate>
            </item>
                    <item>
                <title>ریاضیات برای الگوریتم‌ها- قسمت اول</title>
                <link>https://virgool.io/@yasaminashoori/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1-%D9%85%D9%86%D8%B7%D9%82-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-n9rmmehei7ei</link>
                <description>Logic of Computer (Midjourney)امروز جلسه اول LevelUp Math  کوئرا برگزار شد و فکر کردم فرصت خوبیه که این چندروز، روی این موضوع تمرکز کنم تا بعدا که خواستم وارد مباحث الگوریتم و ساختمان داده بشم یه پایه اولیه داشته باشم. تو این پست به یه سری از مباحث پایه ای ریاضیات می‌پردازیم که درک اون به نوشتن کد های بهتر و به کار بردن الگوریتم های درست کمک میکنه. می تونید از طریق این لینک گیتهاب به ریپوی تمرین ها و نکات بیشتر مراجعه کنید. عناوین :استدلال چیست ؟ و انواع استدلالگزاره ها و ترکیب کردنگزاره‌ نما و سورهاکامپیوتر چطور کار می‌کندچرا به استدلال نیاز داریم؟چرا به روش های استدلال کردن به عنوان برنامه نویس نیاز داریم؟  تفاوت  کسی که با استدلال و منطق  کار خودش رو انجام میده و تفاوت کسی که بدون استفاده از منطق خاصی برنامه اش رو می‌نویسه، چیه؟ تمام برنامه‌های کامپیوتری با منطق کار می‌کنن، پس اگه یادبگیریم که راه‌حل‌های منطقی ارائه بدیم، تبدیل این راه‌حل‌ها به کد برای ما خیلی راحت‌تر می‌شه.به نظرتون بی‌منطق بودن به چه معناست؟ اهمیت اینکه یه نفر بدونه چطور یک گزاره رو اثبات منطقی کنه چیه ؟وقتی یه نفر الگوریتم درست رو  ارائه میده یعنی داره یه راه حل درست ارائه می‌ده و میتونه راه حل خودش رو تحلیل کنه. روش استدلال استقرایی :  با استفاده از تکرار کردن یک کار، درستی یا نادرستی گزاره رو نتیجه می‌گیرن : مثلا یک اپ داریم که یک میلیون کاربر ازش استفاده کردن و خطایی رخ نداده پس نتیجه می‌گیریم که اپ درست کار میکنه. این موضوعی که درموردش صحبت کردیم، پایه استدلال در همه علوم هست . و مدل بدتر اون هم این هست که هیچ روش علمی ای وجود نداشته باشه مثلا یه مشکلی توی کد وجود داره و روی یه مثالی خطا میده  وقتی که این مشکل رو اطلاع می‌دیم  ممکنه بپرسیم کجا مشکل داره؟ و خود این ایراد هست دیگه نمیشه پرسید کجای اون ایراد داره. یعنی سوال رو با سوال جواب دادن! استدلال منطقی به صورت عمومی به چه معناست ؟Logical reasoning is a type of problem-solving that involves working through a set of rules that govern a scenario. This set of rules or steps is referred to as an algorithm. Logical reasoning involves testing different sets of steps - or algorithms - to determine which sequence of rules leads to the correct solution.استدلال استنتاجی: استدلال مدنظر ما به عنوان استدلال منطقی، استدلال استنتاجی هست. یعنی از روش های موجود در منطق استفاده می‌کنیم و گزاره ها رو نتیجه می‌گیریم. مثال:  همه برنامه نویسان کوئرا رو می‌شناسن، امین برنامه نویس هست، پس امین کوئرا رو می‌شناسه . به صورت خلاصه یعنی یه استدلال منطقی داریم که درسته و میخوایم از اون گزاره به درستی بقیه هم برسیم .گزاره چیست؟  جمله ای خبری، که میتونیم ارزش درست یا نادرست بهش نسبت بدیم. و باید خبری باشه و همینطور به صورت کاملا شفاف، مشخص باشه که درست یا نادرست هست.همه‌ی اعداد اول، فرد هستند. هر عدد صحیح بزرگ‌تر از ۱ را می‌توان به‌صورت ضرب تعدادی عدد اول نوشت.برنامه‌ی کامپیوتری می‌توان نوشت که از ذهن باهوش‌ترین انسان‌ها هم قوی‌تر باشد.این گزاره غلط است.سلام.شاید حق با تو باشه.جمله های اول تا سوم گزاره هستن و بقیه جملات گزاره نیستن. اما دلیل؟ همه اعداد اول فرد هستن : جمله خبری هست / ارزش این جمله نادرست هست که کاری باهاش نداریم فعلا ولی اصل شفافیت و درست یا نادرست بودن رو رعایت کرده، پس گزاره هست. هر عدد صحیح بزرگ‌تر از ۱ را می‌توان به‌صورت ضرب تعدادی عدد اول نوشت: به دلایل بالا، این هم گزاره هست.برنامه‌ی کامپیوتری می‌توان نوشت که از ذهن باهوش‌ترین انسان‌ها هم قوی‌تر باشد: جمله خبری هست / درسته که ما دقیقا نمیدونیم منظور از برنامه و باهوش ترین چیه اما به هرحال در هر صورت ارزش اون یا درست هست یا نادرست پس می‌تونیم گزاره به حساب بیاریمش.این گزاره غلط است : جمله خبری هست / اما دو تا ارزش درست و غلط رو داره. برای اینکه دقیق تر متوجه بشیم یعنی فرض کنید ارزش جمله این گزاره غلط هست، درست بشه یعنی اینو بپذیرید ولی حرف خودش میگه این جمله غلط هست پس غلط میشه و الان دو تا ارزش درست و نادرست رو داریم پس گزاره نیست.سلام : گزاره نیست چون جمله خبری نیست.شاید حق با تو باشه : گزاره نیست چون شفافیت لازم برای درست یا نادرست بودن رو نداره.گزاره‌هاگزاره های ساده : ساده‌ترین شکل گزاره‌ها که دیگر نمی‌توانیم (نمی‌خواهیم) آن‌ها را به گزاره‌های کوچک‌تر تقسیم کنیم. به این گزاره‌ها اتم می‌گویند. گزاره های مستقل و ساده را گزاره های اتم میگوییمما به هر کدوم از این گزاره های ساده یک ارزش رو نسبت می‌دیم و با استفاده از اون ها، گزاره های مرکب رو ارزش گذاری می‌کنیم و با استفاده از رابط ها گزاره های مرکب را می‌سازیم.رابط گزاره های ساده نقیضنقیض : نقیض اینکه «علی پولدار است.» معادل «علی پولدار نیست.»هر وقت یکی از گزاره ها، غلط بود اون یکی درست هست و برعکس.نکته: گزاره باید تحت همه شرایط نقیض باشه و به صورت دقیق نقیض بشه . و (And) Andوقتی ارزش p یا q درست یا غلط باشه، چهار حالت درست میشه و ارزش گزارهای های  p و q مشخص میشه.   اگه همین چهارحالت رو بگیرن p , q پس ارزش گزاره های مرکب هم به صورت یکتا بدست میاد و همین چهار حالت کافیه که بدونیم چطور ارزشAnd  اون ها رو بدست بیاریم.یا (OR)Orاگه حداقل یکی از اون ها درست باشه، نتیجه نهایی T  میشه.ناسازگاری با شهود: علی به سینما رفته یا به کلاس رفته این در فارسی وقتی درست هست که یکی درست باشه و اینجا هر دو تا با هم نمیتونه اتفاق بیافته اینجا از XOR استفاده میشه، در حالی که طبق جدول Or  میتونن همزمان با هم وجود داشته باشن.شرط (IF)Ifشهود ناسازگار: دو مورد اولی مشخص هستن، مثلا برای مورد دوم : اگر نمره ات بیست شه برات دوچرخه میخرم. که گزاره اول درست بوده اما گزاره دوم غلط پس نتیجه هم غلط شده. اما سطر سوم رو دقت کنید : اگر p غلط باشه q درست باشه،   p آنگاه q درست میشه، یعنی اگه فرض غلط باشه مهم نیست چه نتیجه ای داری میگیری. اون فرض غلط هست پس نتیجه درست میشه و اصطلاحا می‌گیم گزاره به انتفای مقدم درست هست یعنی هیچ وقت اون فرص درست نمیشه که بخوام درمورد نتبجه بگم.  سطر چهارم هم مثل بالایی، وقتی اولی غلط باشه میتونیم نتیجه بگیریم که بعدی ها درست هستن.اگر و تنها گر دوشرط (IFF)IFF زمانی درست هستن که هر دو هم ارزش باشن اگر هم ارزش باشن درسته و در غیر این صورت غلط میشه. دقیقا کار مساوی رو داره انجام میده.گزاره ها رو میشه به چشم نماد و رشته در نظر گرفت و این ها رو به چشم رشته هایی نگاه کنید که مرکب های پیچیده رو میسازن و میشه بهشون ارزش های درست و نادرست داد و موارد پیچیده تر رو اثبات کرد، که با این شیوه می‌تونیم ختی گزاره ها رو به شکل گراف مدل کنیم که از فرض به حکم برسیم.  این روش در هوش مصنوعی کاربرد زیادی داره.گزاره نما و سورها بعضی اوقات، گزاره ها به تنهایی خودشون گزاره نیستن  و گزاره نما هستن یعنی یکسری متغیر داره تا اون ها مقدارشون معلوم نباشه نمیشه ارزش گزاره رو مشخص کرد. مثلا  n عددی اول هست .به این گزاره ها، سورهای عمومی هم میگن.سور عمومیبرای هر، برای همه: اگه به ازای تمام x ها، شرط برقرار باشه پس درست هست و اگه به ازای یکی هم برقرار نباشه پس درست نیست.این جمله گزاره هست.مثال) همه‌ی اعداد اول، فرد هستند: چون مقدار x مشخص شده.سور وجودی عدد اولی وجود داره که فرد نباشه. اگه فقط یک حالت درست وجود داشته باشدر، برقرار هست.سور صفر وجود ندارد، یعنی نقیض سور وجودی هست.سور وجود یکتاوجود دارد به صورت یکتا : هم اون مقدار وجود داره هم دقیقا یکدونه از اون وجود داره. و کاربرد اون در وارون جمع و وارون ضرب هست.تمرین : گزاره های زیر را اثبات کنید.گزاره های معادل هم، خیلی پرکاربرد هستن و در مباحث or, and  استفاده میشن و همچنین در طراحی مدارهای الکتریکی.مثال کاربردی در برنامه‌نویسی: الگوریتم Merge Sort Merge sortفرض کنید، میخوایم دو تا آرایه رو ادغام کنیم یه متغیر x در یک سمت آرایه اول و یک متغیر y در آرایه دوم دارم.برای اینکه بتونم برنامه ای بنویسم که گشتن داخل این آرایه ها رو ادامه بده از یه حلقه While استفاده می‌کنم که الگوریتم مربوط به Merge رو داخلش داره. اینجا نیاز به منطقی دارم که بتونه تا وقتی x به آخر آرایه n و y به آخر آرایه m نرسیده، الگوریتم داخل حلقه رو اجرا کنه. پس طبق مطالب بالا، باید نقیض حالتی که متوقف میشه رو بنویسیم.استفاده از منطق ریاضی این کمک رو به ما می‌کنه که برای حل سوالات برنامه نویسی تا حد امکان از آزمون و خطا استفاده نکنیم. و اولین مرحله یعنی  قبل اینکه دست به کد بشیم، سعی کنیم الگوریتم سوال رو روی کاغذ بیاریم و خوب درموردش فکر کنیم و مرحله بعدی کدشو بزنیم. دلیل این روش اینه که موقع کدنویسی برای تست کردن راه حل، ذهن ما درگیر سینتکس و قوائد اون زبان برنامه نویسی میشه و حل مسئله که موضوع اصلی هست، خوب انجام نمیشه.پس تا الان باید متوجه اهمیت مفاهیم بالا شده باشید. ما نیاز داریم به فهیمدن منطق، چون نه تنها تو کامپیوتر وجود داره، بلکه کامپیوتر چیزی به جز منطق نیست.خود فرایندی که یه کامپیوتر طی میکنه چیزی جز این منطق ها نیست. چون پردازش رو با پروسسور انجام میده و اون خودش یه تعداد زیادی ترانزیستور رو شامل میشه و ترانزیستور ها هم یه تعداد زیادی گیت And و ... هستن.چند مثال برای تمرین نقیض : کامپیوتر چطور کار می‌کندهر گیت منطقی مثل یه عملگر منطقی، چند ورودی دریافت می‌کنه و یک خروجی می‌ده.گیت NOTNOگیت ANDANDگیت ORORگیت XORXORاگه تعداد 1 ها فرد باشه، جواب نهایی 1 میشه . میشه گفت نقیض اگر و فقط اگر هست.گیت NANDNANDهمه گیت های دیگه رو با NAND میشه ساخت و با ساختن or  میشه همه گیت های دیگه رو ساخت.تو قسمت بعدی درمورد تبدیل گیت ها و تبدیل مبناها صحبت خواهیم کرد.</description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Fri, 14 Apr 2023 18:22:00 +0330</pubDate>
            </item>
                    <item>
                <title>مینی‌مالیسم : در راستای حل مسئله در برنامه نویسی</title>
                <link>https://virgool.io/Rocket/%D9%85%DB%8C%D9%86%DB%8C-%D9%85%D8%A7%D9%84%DB%8C%D8%B3%D9%85-%D8%AF%D8%B1-%D8%B1%D8%A7%D8%B3%D8%AA%D8%A7%DB%8C-%D8%AD%D9%84-%D9%85%D8%B3%D8%A6%D9%84%D9%87-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-aqd9pf1ljszj</link>
                <description>تولید شده توسط هوش مصنوعی  Midjourney  تو این پست قراره نگاهی به منابع و رویکرد های  حل مسئله در برنامه نویسی داشته باشیم. بازگشت به ریپوهای قدیمیشروع مسیر من تو برنامه نویسی با ناامیدی زیادی همراه بود. اوایل که شروع میکنی ممکنه حس درجا زدن داشته باشی، حس کنی که هیچ پیشرفتی وجود نداره اما وقتی که به خودت زمان بدی و راه درست رو پیدا کنی این احساسات محو می‌شن.1.ما انسان های عجولی هستیم . نمیدونم دقیقا بشر از چه زمانی شروع کرد به سریع تر و سریع تر، خواستن و رسیدن. شاید از وقتی که متوجه شد چقدر این دنیا بزرگه و چقدر چیزهای زیادی وجود داره که هیچوقت نمیتونه همه شون رو داشته باشه. این تشنگی و عطش برای خواستن داره نابود مون میکنه. من تو این مسیر بود که یادگرفتم هرچیز خوبی زمان می‌بره و باید مدت خوبی براش تمرکز کنی ، بهش انرژی و توجه بدی و امیدوار باشی که به نتیجه برسی. عجله دشمن یادگیری هست، تمرکز رو از بین می‌بره و ما رو از مسیر  اصلی مون دور میکنه . عادت کردن به اینکه تو هر مسیری زود نتیجه بگیریم، فکر نکنم اصلا تو برنامه نویسی جواب بده! به جاش باید از مسیر لذت برد و تو checkpoint های معینی، نتایج رو بررسی کرد. 2. مشورت کن! ولی بعد اینکه تمام تلاشتو کردی.تصمیم گرفتم این پست رو بنویسم چون به شکل های مختلف تفاوت نگاه آدمی که حل مسئله بلده و آدمی که بلد نیست رو دیدم. بعد از چند ماه به ریپوی قدیمی ام برگشتم و این بار سعی کردم دوباره یادبگیرم. به طرز عجیبی دیگه مثل قبل ناامید نشدم، گیج نشدم و نحوه رسیدن به layout مناسب خیلی کمتر زمان برد، ذهن من  یادگرفت سلسله مراتبی به مشکلی که روبروش هست نگاه کنه. یادمه قبلا چقدر با ساده ترین سوالات مشکل داشتم، دائم میخواستم حل بشه هرطوری که هست، از بقیه بپرسم ، سرچ کنم یا حتی یه مدت بیخیالش بشم. ولی الان بعد چندماه که یادگیری  # C رو شروع کردم، دیگه دنبال جواب سریع و آماده نیستم، هر چیزی رو سرچ می‌کنم حتی بیخود ترین سوالات ممکن رو و به عنوان آخرین و تنها ترین راه حل اگه نتونم هیچ جوابی پیدا کنم سراغ Stack Overflow میرم.پنج تا از بهترین دوستان شما اینهاست :  بپرسید چه چیز، چرا، چه جا، چه وقت و چگونه و هنگامی که نیاز به اندرز دارید از هیچکس دیگر چیزی نپرسید.3. ساده فکر کنید :   هر چی کمتر بهترLESS IS MORE !   میخوام باهاتون یکی از مهم ترین اکتشافات اخیرم رو در میون بذارم :)  اینکه  خیلی از اطرافیانم و خودم، به جای اینکه به ساده ترین راه حل ممکنی که الان برای مشکل وجود داره فکر کنیم، دنبال سخت ترین، دور از دسترس ترین و غیر ممکن ترین راه حل می‌گردیم و امید داریم اینطوری به نتیجه هم برسیم. واقعا چرا اولین راه حل ساده ای که روبرو مون هست رو نمی‌بینیم و دنبال پیچیده کردن همه چی هستیم ؟ مشکل مینی‌مالیست بودن چیه؟  :D   تو این مدت که چالش صد روز کد رو شروع کردم، متوجه این موضوع شدم، که همیشه دارم برای حل کردن سوالم دنبال راه سختش میرم وقتی تمرکز کردم روی این چالش، خیلی از جزئیات ریز و مهمی که ازش بی خبر بودم پیداشون شد، صحبت کردن با آدم های حرفه ای باعث شد حتی بیشتر توجه ام به این نکته جلب بشه . چند وقت پیش یه متنی رو خوندم و اینجا هم خلاصه اش رو گذاشتم، با آقای  آخی در این مورد صحبت میکردیم که  این نوع از خطاهای کامپیوتری که موقع گرد کردن و کار با اعداد تو محدوده خاصی اتفاق می‌افته محدود به کامپیوتر ها نمیشه و از زمانی که اینترنت رشد پیدا کرد به شیوه های جدیدی برای ذخیره سازی اعداد نیاز داشتیم، اما بدلیل استفاده از ابزارهای سطح بالا و نزدیک به زبان انسان این موضوع رو متوجه نمی‌شیم و حتی شارژر های موبایل هم از این قائده مستثنی نیستن :خیلی پیش پا افتاده‌تر فکر کن .همین اپل و اندروید اتحادیه اروپا اپل رو مجبور کرد که اون هم بیاد از تایپ‌سی استفاده کنه که توی اندروید وجود داره. اپل اومده یه شارژر تایپ سی طراحی کرده که به تمام گوشی‌های تایپ سی دنیا می‌خوره اما هیچ شارژر تایپ سی دیگه‌ای روی اپل کار نمی‌کنه??‍♂️?حل مسئلهمراحل حل مسئلهDivide and Conquer: make it to small pieces.یه ویدئو از یوتیوب  چند وقت پیش می‌دیدم، درمورد این که چطور سوالات Leetcode رو حل کنیم، نکته ای گفت که خیلی مهم بود : همه تازه کار ها وقتی با یه سوال جدید روبرو میشن، سریع دست به کار میشن و شروع به نوشتن کد میکنن، امتحان میکنن و سعی میکنن از طریق تغیر دادن و تست کردن به جواب برسن.   من همیشه همین کار رو انجام می‌دادم و خیلی وقت ها طول میکشید که به جواب برسم ولی حرفه ای ها، چند دقیقه اول رو فقط صرف فکر کردن به سوال میکنن، درک سوال و فهمیدن اینکه چه چیزی ازمون میخواد نصف بیشتر مسیر هست .                                                                                                                                      تازه مرحله دوم هم کد زدن نیست. حل کردن سوال بدون نوشتن کد هست، وقتی سوال رو متوجه شدی پس الان حتما یه راه حل براش تو ذهنت داری، و باید بتونی این مراحل رو برای خودت واضح کنی تا جایی که به حل سوال برسی.                                                                                                                                               مرحله آخر میشه عملی کردن راه حلی که تو ذهن مون داریم به شکل کد.                                                         به عبارت دیگه یه کار رو اون قدر به مراحل کوچیک تقسیم کن که راحت بتونی انجامش بدی. کاری که من انجام میدادم این بود که سعی داشتم یه مسئله سخت رو بدون داشتن قدم های کوچیک حل کنم. این شکستن مسئله به اجزا کوچیک تر و انجام دادن هر بخش کوچیک، مفهوم اصلی یکی از مهم ترین الگوریتم ها یعنی Divide and Conquer  هست . دوست خوبم مهدیس دانشجوی کارشناسی ریاضی شهید بهشتی، کتاب چگونه مسئله را حل کنیم نوشته جورج پولیا رو بهم معرفی کرده بود.  قسمت هایی از کتاب رو در راستای مراحل حل سوال براتون میذارم :فهمیدن مسئله : اول باید مسئله را بفهمیدمجهول چیست ؟ داده ها کدام است ؟ شرط چیست ؟ شکلی رسم کنید. علامت های مناسب رو به کار ببرید.طرح نقشه : ارتباط میان داده ها و مجهول را پیدا کنید. ممکنه در صورت پیدا نکردن ارتباط مستقیم بین داده ها و مجهول، مسئله های کمکی در نظر بگیرید. باید سرانجام یک نقشه برای مسئله طرح کنید.آیا آن را پیشتر دیده بودید ؟ آیا همین مسئله را به صورت دیگر دیده اید ؟ ( وصل کردن اطلاعات گذشته به وضعیت فعلی باعث تحریک نورون ها و یادگیری بهتر میشه ). به مجهول نگاه کنید! و بکوشید تا درباره مسئله ای بیاندیشید که همین مجهول یا شبیه آن را داشته باشد. در این جا مسئله ای وابسته به مسئله شما وجود دارد که پیشتر حل شده است، آیا می‌توانید آن را به کار ببرید ؟ آیا می‌توانید روش آن را به کار ببرید؟  آیا باید یک عنصر کمکی را وارد کنید تا به کار بردن آن را ممکن سازد ؟ آیا می‌توانید صورت مسئله را دوباره بیان کنید ؟ آیا می‌توانید آن را به صورتی دیگر بیان کنید ؟ به تعریف ها رجوع کنید. اگر نمی‌توانید مسئله طرح شده را حل کنید، نخست به حل کردن مسئله ای وابسته به آن بپردازید. آیا می‌توانید مسئله وابسته ای را که بیشتر در دسترس باشد تخیل کنید ؟ سوم : اجرای نقشه در ضمن اجرای نقشه حل مسئله، هر گام را که برمی‌دارید وارسی و امتحان کنید . آیا می‌توانید آشکارا ببینید که گام برداشته شده درست بوده است ؟ آیا می‌توانید درست بودن آن را ثابت کنید ؟ چهارم : امتحان کردن جوابی که به دست آمده، یعنی به عقب نگاه کردن .آیا می‌توانید نتیجه را بررسی کنید ؟ آیا میتوانید نتیجه را از راهی دیگر بدست آورید ؟  آیا می‌توانید نتیجه یا روش را در مسئله ای دیگر به کار ببرید ؟ حل کردن مسائل، همچون مثلا شناوری، یک مهارت تمرینی و عملی است. هر مهارت عملی را از راه تقلید و تمرین بدست می‌آوریم. برای آموختن شنا از کاری که دیگران با دست و پای خود انجام می‌دهند تا سر خود را بالای آب نگاه دارند، تقلید می‌کنید و سرانجام با تمرین کافی شایستگی شنا کردن بهره شما می‌شود. برای آموختن فن حل مسائل باید به ملاحظه و مشاهده آنچه دیگران برای حل مسئله می‌کنند و تقلید از ایشان بپردازید و سرانجام خود می‌آموزید که چگونه در ساختن مسائل توفیق حاصل کنید.گشتن در پیرامون یک مانع، همان کاری است که ما در حل هرگونه مسئله انجام می‌دهیم.مثال   با یه سوال ساده از بحثLINQ های  #C شروع کنیم .فرض کنید، اطلاعات دانش آموز ها رو به این شکل داخل فایل StudentDatabase.cs ذخیره کردیم : public static IQueryable&lt;Student&gt; GetStudentsFromDb()
{
return new[] {
new Student() {StudentId = 1, StudentName = &amp;quotJohn Bross&amp;quot, Score = 82, StudentCity = &amp;quotNYC&amp;quot, StudentActvity = true},
new Student() {StudentId = 2, StudentName = &amp;quotJasmine Curly&amp;quot, Score = 84, StudentCity = &amp;quotNYC&amp;quot, StudentActvity = false},
new Student() {StudentId = 4, StudentName = &amp;quotBen Wild&amp;quot, Score = 65, StudentCity = &amp;quotCA&amp;quot, StudentActvity = true},
new Student() {StudentId = 6, StudentName = &amp;quotSara Ride&amp;quot, Score = 81, StudentCity = &amp;quotCA&amp;quot, StudentActvity = true},
new Student() {StudentId = 7, StudentName = &amp;quotBonnie Brooklyn&amp;quot, Score = 80, StudentCity = &amp;quotLA&amp;quot, StudentActvity = false},
new Student() {StudentId = 8, StudentName = &amp;quotLoren Gibson&amp;quot, Score = 88, StudentCity = &amp;quotCA&amp;quot, StudentActvity = false},
}.AsQueryable();
}حالا می‌خوایم اسم دانش آموزانی رو داشته باشیم که score بالای 80 دارن. چطور انجامش می‌دین ؟ var studentsList = GetStudentsList();
studentsScoreMoreThan80 = studentsList.Where(x =&gt; x.Score &gt; 80).Select(x =&gt; x.StudentName);
foreach (var item in studentsScoreMoreThan80)
{ 
Console.WriteLine(item);
}حالا اگه همین سوال رو یه کم سخت تر کنیم، با توجه به مراحلی که گفتیم باید بتونید با توجه به سوال قبلی، مقایسه کردن، سرچ کردن و بررسی کد تون، حلش کنید.این بار اسم دانش آموزهایی که فعال  score بالای 80  و شهر نیویورک هستن رو پیدا کنید.با توجه به سوال قبلی، باید مطمئن بشیم که Lambda Expressions و مباحث دیگه رو بلد هستیم، پس اگه یادتون رفته مثلا این عبارت #Lambda Expressions in C رو سرچ کنید تا چند نمونه و توضیح ببینید.//Access to the class metho
 var studentList = StudentDatabase.GetStudentsFromDb();
var studentsName1 = studentList.Where(x =&gt; x.StudentActvity &amp;&amp; x.Score &gt; 80 &amp;&amp; x.StudentCity == &amp;quotNYC&amp;quot).Select(x =&gt; x.StudentName);
foreach (var item1 in studentsName1)
{
Console.WriteLine($&amp;quotStudents with true activity, score &gt; 80 and NY city : {item1}&amp;quot);
}
می‌تونید این کد رو بهتر کنید ؟ اگه راه حل کوتاه تر و بهتری دارین پس سعی کنید اونا رو هم امتحان کنید مثلا من پرانتز های اضافی و &amp;&amp; های اضافی رو حذف کردم. و همچنین میتونید ریپوزیتوری این برنامه رو از اینجا ببینید.پایانهمونطور که جورج پولیا گفته : حل کردن مسائل یکی از فعالیت های بنیادی انسان است. بعضی از اشخاص در رسیدن به هدف های خود که حل کردن مسائل است کامیابی بیشتری دارند و بعضی کمتر. باید میل به حل کردن مسئله در ما وجود داشته باشد. بدون داشتن میلی شدید به حل مسئله دشوار، بخت در رسیدن به جواب آن یار ما نخواهد شد.هر نظر، پبشنهاد و انتقادی دارین خوشحال میشم بدونم :) ممنونم که خوندین  ^_^</description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Wed, 29 Mar 2023 17:23:11 +0330</pubDate>
            </item>
                    <item>
                <title>float or double dilemma - 100DaysOfCode</title>
                <link>https://virgool.io/@yasaminashoori/float-or-double-dilemma-vryx5cvqpoad</link>
                <description> این نوشته ، چکیده و ترجمه مقاله ای با همین نام در مدیوم هست .حتما براتون سوال شده که چرا تو زبان هایی مثل سی شارپ موقع نوشتن اعداد اعشاری float، آخر متغیر یه f اضافه می‌کنیم . تو این مقاله  درمورد دلیل استفاده از انواع متغیر ها صحبت می‌کنیم و بررسی اینکه در سخت افزار دقیقا چه اتفاقاتی می‌افته وقتی داریم با این اعداد کار می‌کنیم .تو زبان های سطح بالایی مثل پایتون و جاوا اسکریپت اعداد اعشاری خیلی راحت نوشته میشن، یعنی عدد به علاوه علامت اعشار. اما تو زبان هایی مثل  C یا #C قضیه یه کم متفاوته. تو زبان C خیلی راحت می‌تونیم با عوض کردن کلمه کلیدی جلوی متغیر موقع declaration، به انواع تایپ ها بریم مثل float ,double, short و long ولی در زبان سی شارپ فقط به یه f نیاز داریم .اما دلیلش چیه ؟کامپیوترها واقعا دقیق نیستند…راستش کامپیوتر ها خیلی هم دقیق نیستن، ممکنه فکر کنید محاسبات رو با دقت بالا انجام میدن و هیچوقت دچار خطا نمیشن و اگه مشکلی هم هست تقصیر برنامه نویس هست که به درستی از ابزارهای دیباگینگ و ... استفاده نکرده . اما نوع هایی از ارور هستن که هیچ ربطی به استفاده اشتباه از نوع متغیر یا استفاده از یه الگوریتم بد ندارن. بلکه مربوط به محدودیت های سخت افزار میشه و روشی که کامیپوتر اعداد رو ارائه می‌کنه .به این نوع از ارور ها می‌گیم Floating point arithmetics errorکه مبحث خیلی گسترده ای هست و زیر مجموعه  علوم کامپیوتر و ریاضیات محسوب میشه و در تلاش برای پیدا کردن راهی هستیم که بتونیم هم اعداد خیلی کوچیک  و هم خیلی بزرگ رو به کار ببریم بدون اینکه دچار ارور بشیم.اما چرا ؟ این برمیگرده به روش ذخیره سازی اعداد  توی کامپیوتر .  قطعا از سال ۱۹۶۰ تا الان برای  ذخیره سازی اعداد تو کامپیوتر روشی پیدا شده ولی بحثی که ما اینجا داریم برای اعداد معمولی نیست بلکه اعداد خیلی بزرگ یا خیلی کوچیک هستن که مشکل ساز میشن.یه مثال واقعی  سال ۱۹۹۱ وقتی آمریکا میخواست موشک بفرسته تا بتونه موشک اسکاد عراقی رو ردگیری کنه ، موشک آمریکایی از مسیرش منحرف میشه و مکان اشتباهی پرتاب میشه. فقط به خاطر یه خطای گرد کردن .تو جایی از برنامه باید زمان رو در دهم ثانیه بگیریم و در 0.1 ضرب کنیم تا مقدار عدد رو ثانیه بدست بیاریم ولی سیستم قادر نبود این تعداد از اعشار رو مدیریت کنه و بعد انجام عملیات نتیجه رو در حد خیلی کمی تغییر میداد وقتی میگم خیلی کم منظورم اینه در حد : 0.000000095و بعد از  تکرار این عملیات ها  و سرعت بالای اون باعث شد که موشک  نیم کیلومتر از هدف خودش منحرف بشه.دلیل ؟  از یه جایی به بعد کامپیوتر فرقی بین اعداد قرار نمیده و اونارو یکسان می‌بینه. مثلا یه کامپیوتر خیلی کوچیک که توانایی ذخیره بیشتر از هشت رقم اعشار نداره این دوتا عدد رو یکسان می‌دونه : 0.0000123410.000012344راه حل ها : خب ممکنه بگین که می‌تونیم تا حد ممکن اعشار اضافه کنیم و امیدوار باشیم که نتیجه بده  اما هیچ چیز رایگان نیست و هزینه ای داره ! افزایش دقت، نیاز به حافظه بیشتر برای اجرا داره و محاسبات رو کاهش میده اما نکته اینجاست که  باید یه تعادل بین دقت ، مصرف حافظه و زمان اجرا پیدا کنید .در ادامه شرایط مخلتفی که به این دقت نیاز نداریم رو مثال می‌زنیم ... بازی های ویدیویی به ندرت یا هرگز به مقدار دقیق نیاز پیدا می‌کنیم.  به همین دلیل هست که از float موقع برنامه نویسی با  Unity  سی شارپ استفاده می‌کنیم ، فقط باید مطمئن بشیم که کد با حداکثر سرعت ممکن برنامه اجرا بشه. مثلا جایگزینی اشتباه آواتار شخصیت در حد یک صدم هزارم واحد، برای چشم انسان غیرقابل توجه هست. درمورد این همه انواع داده چطور  ؟درمورد این همه انواع داده ای که داریم باید بگم در واقع روش هایی هستن که به کامپیوتر بگیم از حافظه کم یا زیاد برای ذخیره متغیر استفاده کنه و بتونیم خطای گرد کردن رو کنترل کنیم همچنین نحوه نمایش رو بهینه کنیم با این روش که به کامپیوتر بگیم چه محدود عددی رو انتظار داریم .مثلا  int که خیلی ساده تر از float  هست رو داریم که در حالت معمول (البته بستگی به سیستم عامل داره) ولی شونزده  بیت حافظه اشغال می‌کنه : یعنی  16^2.و اگه بخوایم بیشتر از این محدوده استفاده کنیم دچار overflow می‌شیم که دوتا گزینه داریم :یا تعداد بیت ها رو زیاد می‌کنیم مثلا ۳۲ بیت تا محدوده بزرگتر بشه . مثل نوع longو روش بعدی روی محدوده خاصی تمرکز می‌کنیم با استفاده از نوع unsigned ، مثل uint که اینم اعداد صحیح هست ولی فقط اعداد صحیح مثبت رو شامل میشه ولی این بار تو دامنه بزرگتر .اما  problematic types  ها اینجا float هستن علاوه‌ بر قسمت صحیح یه قسمت اعشار و قسمت علامت اعشار هم دارن که باعث ایجاد خطای گرد کردن میشه . برای کار با اعداد بزرگ می‌تونیم از double استفاده کنیم اما مسئله به این سادگی نیست و در حال حاضر استانداردی هست که با پیروی کردن از اون ها تا حدی این خطا ها کنترل میشه : مشکلات گرد کردن و سر ریز و تقسیم بر صفر .نتیجه :در پایان فقط باید یه f اضافه کنیم که کامپایلر سر ما فریاد نزنه ولی وقتی که به جای float ، double استفاده می‌کنید اتفاقات زیادی داخل سخت افزار شما میافته. پس یادتون باشه، کجا و از چه نوع داده ای دارین استفاده می‌کنید!</description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Sun, 19 Mar 2023 14:03:19 +0330</pubDate>
            </item>
                    <item>
                <title>چالش OOA&amp;D - 100DaysOfCode</title>
                <link>https://virgool.io/@yasaminashoori/100daysofcode-ooad-dsip2ppbzny3</link>
                <description>oop is your friendچالش صد روز کد که خیلی ها احتمالا اسمشو شنیدن ، یه چالش محبوب هست که کمک تون می‌کنه عادت برنامه نویسی و یادگیری رو همراه با بقیه ایجاد کنید. میتونید از  وبسایت  رسمی اش دیدن کنید و همین الان به این چالش بپیوندین .  ممنونم از مهدی آخی عزیز که این چالش رو شروع کرد ، راهنمایی مون کرد و تجربیاتش در این مسیر رو در اختیار مون قرار داد و ممنونم از همه  عزیزانی که باعث انگیزه و ادامه مسیر شدن. اگه خواستین به این چالش بپیوندین اینجا رو چک کنید . ali mir ferdos, majidTaherkhani, Dutchman , Mohammadmahdi Mirzaei  and other genius and inspiring people. بریم سر اصل مطلب ! میخوام باهاتون درمورد مطلبی که  تو دومین روز چالش مطالعه کردم صحبت کنم درمورد کلمه ای چهار حرفی و اونقدر مهم که تا ابد باید یادتون بمونه و اگه قرار باشه به عنوان برنامه نویس ، برنامه های flexible  و user-friendly بنویسید یکی از مهم ترین مفاهیمی که باید یادبگیرین Object Oriented Analysis and Desgin  هست .OOA&amp;D دانلود پس مطالعه رو با  کتاب Head first OOA&amp;D شروع کردم ، روش کتاب اینطوری هست که ذهن خسته نمیشه ، با شکل و فونت های مختلف به ذهن سپردن مطالب رو راحت تر می‌کنه و مطالعه رو تبدیل به یه تجربه لذت بخش می‌کنه. خیلی خلاصه در حدی که با فصل اول این کتاب آشنا بشین و علاقمند بشین برای مطالعه و یه سرنخ اولیه بدست بیارین درمورد موضوعاتی که امروز خوندم اینجا توضیح میدم امیدوارم برای حتی یه نفر بتونه مفید باشه ❤خونه اول :  یه مثال واقعی کتاب از اسم Rick استفاده کرده من میگم اصغر :) خب بگذریم ، فکر کنید که اصغر صاحب یه سوپری خیلی خوب توی محله اس ، اصغر موفق شده با تخفیف های روزانه ای که به مشتریاش میده و تنوع بالای محصولاتش مشتریای قدیمی و محلی خودشو حفظ کنه، حتی باوجود سوپرمارکت های زنجیره ای که اون اطراف وجود داره !  اما اصغر تصمیم گرفته حالا که کارش رونق گرفته و مشتریاش زیاد شدن و خیلی از این مشتریا هم خریداشون رو با تلفن زدن سفارش میدن ، همه اجناس توی مغازه اش رو تو یه سیستم کامپیوتری نگهداری کنه و هر وقت که یه مشتری زنگ میزنه تا سفارش بده سریع توی  سیستم چک کنه که ببینه محصول مورد نظر رو داره یا نه و حتی یه لیست از کالاهای محبوب مشتریاش داشته باشه . سعی کنین خودتون خیلی ساده با هر مفهومی که تا الان از OO یادگرفتین یه کلاس دیاگرام ساده (فقط برای قسمت اول برنامه یعنی کالا ها و نه سرچ کردن ) طراحی کنید بعد به شکل پایین نگاه کنید : کلاس دیاگرام سعی کردیم تو ساده ترین حالت ممکن فقط یه کلاس درست کنیم با سه تا field  و سه تا  متد access modifier برای فیلد ها . خیلی از جزئیات رو اینجا نیاوردیم و اگه بخوایم برنامه واقعی اش رو بنویسیم نیاز به جزئیات بیشتری داریم مثلا constructor داشته باشه یا نه ؟ خروجی متد ها چی باشه ؟ و خیلی چیزای دیگه . ولی از کجا بدونیم که چطور برنامه رو طراحی کنیم ؟ اصلا  از کجا شروع کنیم ؟ نرم افزار عالی به چه معناست و چطور مطمئن بشم نرم افزار دقیقا همون کاری رو انجام میده که اصغر انتظارش رو داره ؟ حالا که قدم اول رو انجام دادیم ، یه مرحله نزدیک تر شدیم به اولین سوالی که این کتاب مطرح کرده : How do you  write great  software,  every time ?موضوع اینه که هر کس به این سوال جواب متفاوتی میده یه نفر میگه اصول کد تمیز و OOP  رعایت شده باشه ، یه نفر دیگه اهمیتی به کد نمیده وفقط کارکرد براش مهمه و اینکه مشتری راضی باشه. نکته اینجاست همه اون ها میتونه درست باشه چون نرم افزار چیزی بیشتر از یه دیدگاه هست . ولی به طور کلی کتاب سه تا اصل مهم مطرح کرده که باید برای رسیدن به نرم افزار خوب انجام بدین :1. Make sure your  software does what the  customer wants it to do.اول باید با  توجه به نیازمندی ها و پرسش و  پاسخ ها مطمئن بشیم که چیزی که اصغر میخواد رو فهمیدیم . Make sure the app does what it’s  supposed to do FIRSTاین اولین قدم و مهم ترین قدم هست ، تا زمانی که ندونیم مشتری دقیقا چه نیاز هایی داره نمیتونیم نرم افزاری بسازیم که نیازمندی هاش رو رفع کنه و وسط راه ممکنه دچار کلی خطا بشیم و باید از اول  desgin رو شروع کنیم .ولی قدم بعدی چیه ؟ 2. Apply basic  OO principles to  add flexibilityقبل از اینکه مفهومی به اسم OO بوجود بیاد برنامه هامون رو با روش رویه ای میساختیم تصور کنید به جای اینکه مسئله بزرگ به کلاس های مختلف تقسیم بشن و هر ویژگی متمایز یک شئ براش ایجاد بشه ، ما برنامه نویسی رویه ای رو داشتیم که کل برنامه به شکل فراخوانی تعداد خیلی زیادی از رویه های پشت سر هم اجرا میشد به اصطلاح کد اسپاگتی تولید میشد و اشکال زدایی برنامه خیلی سخت میشد ، هیچ کپسوله سازی ای وجود نداشت و در نتیجه اطلاعات حیاتی به صورت مستقیم قابل دسترس بودن . اما با شئ گرایی خیلی از مشکلاتی که روش های قبلی وجود داشت رو حل کردیم و تونستیم نرم افزارهای پیچیده طراحی کنیم . spaghetti codeبه همین دلیل هست که دومین قدم مهم اطمینان از اینه که برنامه شما از قوانین شئ گرایی پیروی کنه .3. Strive for a  maintainable,  reusable designما درمورد این صحبت کردیم که در مرحله اول ، کد باید خوب کار کنه طوری که نیاز مشتری تامین بشه ولی سومین بخش مربوط به ما میشه،  برنامه نویس ها . ما نیاز داریم کدی که نوشتیم علاوه بر اینکه functionality مناسب رو داره برای برنامه نویس ها هم  قابلیت نگهداشت پذیری و طراحی خوبی داشته باشه. ممکنه بخوایم تو برنامه های دیگه هم از این کد استفاده کنیم پس بایدمطمئن بشیم قابلیت های بالا رو داره . حالا چند قدم به نوشتن بهترین نرم افزار نزدیک شدیم . در ادامه بخشی از لغات خیلی مهمی که تو پروسه نرم افزار زیاد بهش اشاره شده رو میارم  : Flexibility بدون من، شما هرگز مشتری رو راضی نخواهید دید. مهم نیست چقدر برنامه شما به خوبی طراحی شده است، من چیزی هستم که لبخند را بر لبان مشتری می نشانم : )Encapsulationمن تماماً در مورد استفاده مجدد هستم و مطمئن شوم که شما در حال تلاش  برای حل مشکلی که شخص دیگری قبلاً آن را کشف کرده است نیستید .Functionalityشما از من برای نگهداری کردن بخش هایی از کد خود استفاده می کنید که بدون تغیر میمانند میمانند  جدا کردن  آن ها از کد هایی که تغییر میکنند، آنگاه ایجاد تغییرات در کد شما بسیار آسان است بدون اینکه نیاز به شکستن همه چیز باشد.Design Patternاز من استفاده کنید تا نرم افزار شما تغییر کند و رشد کند. بدون دوباره کاری مداوم من نرم افزار شما را از شکننده بودن حفظ میکنم . ( به طراحی ای  که شکننده نیست میگیم robust design  یعنی عدم حساسیت محصول یا فرآیند به تغییرات)این اولین خلاصه مطالعه من از این کتاب بود و در روز های بعدی حتما پروسه نوشتن از این چالش رو ادامه میدم . امیدوارم که لذت برده باشین هر انتقادی دارین با کمال میل میپذیرم تا بتونم مطالب بهتر و تخصصی تری بنویسم  . </description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Wed, 15 Mar 2023 12:31:28 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی کتاب تو این فکرم که تمومش کنم نوشته ايان ريد</title>
                <link>https://virgool.io/@yasaminashoori/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%AA%D8%A7%D8%A8-%D8%AA%D9%88-%D8%A7%DB%8C%D9%86-%D9%81%DA%A9%D8%B1%D9%85-%DA%A9%D9%87-%D8%AA%D9%85%D9%88%D9%85%D8%B4-%DA%A9%D9%86%D9%85-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%A7%D9%8A%D8%A7%D9%86-%D8%B1%D9%8A%D8%AF-f8e313fx3gjd</link>
                <description>تو این فکرم که تمومش کنم نوشته ایان رید تو این فکرم که تمومش کنم نوشته ایان رید با ترجمه کوروش سلیم زاده _ بدون اسپويلمعمولا سبک رئال میخونم و در کل به سبک نویسنده های آسیایی مثل موراکامی ، اورهان پاموک و  خالد حسینی علاقه دارم  ولی این بار تصمیم داشتم از سلیقه خواهرم کمک بگیرم ( متضاد من ، و معمولا کتاب هایی اجتماعی و زندگینامه مثل آثار فردریک بکمن و فالاچی  و رولینگ رو مطالعه میکنه )‌ با خودم گفتم از روش همیشگی ام دست بکشم و برای یه بارم که شده به تجربه های جدید روی خوش نشون بدم .  پس برام اینو انتخاب کرد ، منم براش کلارا و خورشید نوشته کازوئو ایشی گورو  رو انتخاب کردم . یه نگاهی به عنون کتاب انداختم مثل همیشه  و خلاصه کتاب رو از پشتش خوندم  : «میخوای دل به دریا بزنی و دست به کار شی یا اون قدر دست روی دست میذاری تا تبدیل به پیرمرد پشیمونی بشی که منتظره توی تنهایی بمیره !»  این جمله از فیلم تلقین کریستوفر نولان بهترین توصیف برای این کتابه این رمان بیش از هر چیز داستانی است درمورد حسرت حرف های نزده ، کارهای نکرده ، شجاعت های به خرج نداده ، دوستت دارم های نگفته یا کم گفته ،‌قدم های برنداشته و البته رنج زندگی با عواقب شان .  نبوغ ایان در این است که چنین موضوعی را در قالب تریلری روان شناسانه  و هیچکاکی به تحریر درآورده . به سختی می توان این کتاب را به ژانر خاصی محدود کرد ابتدا به نظر می رسد  با داستانی کمدی _رمانتیک طرف هستیم ولی به تدریج جنبه های سوررئالی  وارد داستان داستان می شود که از توضیح شان عاجزیم . یک سوم پایانی داستان هم به تریلری ترسناک بدل می شود به طوری که این لحن عوض کردن ها نه تنها لطمه ای به داستان نمی زند بلکه به نقطه قوت آن بدل می شود  . نتفیلیکس در سال 2020 ازاین رمان به همین نام فیلمی به کارگردانی چارلی کافمن برنده اسکار بهترین فیلم نامه برای درخشش ابدی یک ذهن پاک  و با بازی جسی باکلی و جس پلمنز ساخته است .وقتی عنوان کتابو میخونی احتمالا از خودت بپرسی چی رو تمومش کنی ؟ جالبه که تموم کردن  چیزی توی این کتاب چندین بار به نوع های مختلف به تصویر کشیده شده .حسرت کلمه ای بود که با دقت انتخاب شده بود منم به همین دلیل تصمیم گرفتم این کتابو بخونم ، از ترسی صحبت کرد که هر انسانی دست کم یه بار تو زندگی دچارش شده ، ترس از دست دادن فرصت . جذاب ترین نکته درمورد کتاب همینه کل کتاب جزئیات زیادی رو تو خودش جا داده و سوالات خیلی زیادی رو می پرسه و بحث های خیلی جالبی بین شخصیت های اصلی شکل می گیره ولی همه این ها در قالب حسرت مطرح میشه (‌بیشتر توضیح نمیدم که اسپویل نشه )به جرئت میتونم بگم این کتاب  بهترین و فوق العاده ترین ریسک من بود. تو مقطعی بودم  که سوالای خیلی زیادی داشتم واگه میخواستم بهشون فکر کنم و جدی شون بگیرم باید از همه چی میزدم تا به این سوال ها جواب بدم ، ولی جالبه که خوندن یه کتاب 200 صفحه ای بتونه  انقدر خوب ذهن منو به چالش بکشه درمورد معنی و هسته روابط ، تنهایی ، خانواده و زندگی . وقتی شروع به خوندن میکنی از همون ابتدا تصور میکنی کنار شخصیت ها هستی و داری به بحث های جالب شون با دقت گوش میدی درست مثل یه فیلم بود تصویر سازی و شخصیت ها فوق العاده بودن اگه بخوام همین الان بعد یه هفته به عقب برگردم هنوز میتونم خیلی خوب اون فضا رو تصور کنم و یه صفحه درمورد هر شخصیت بنویسم  . تم کلی داستان حالت کمدی و رمانتیک  ،‌کمی فلسفی و در قسمت های پایانی ترسناک و دلهره آور درست مثل سبک فیلم های هیچکاک .( من  psycho  رو تا حالا از هیچکاک دیدم و مدل ترسناک بودن این کتاب هم دقیقا هیچکاکی طوره)موضوع  : داستان حول جیک و دوست دخترش (که نمیدونیم اسمش چیه ) میگذره ،  که به تازگی با هم آشنا شدن و راوی کتاب دختر هست .  روابط معمولا  پیچیده هستن ، فراز و نشیب های زیادی دارن و خیلی وقت ها آدما بین دوراهی های زیادی گیر میکنن توی روابط شون که نمیدونن چه جوابی باید داشته باشن تو هر سطح از رابطه مثل همکارها ، خانواده ها  و  دوست ها  ،  ما کشمکش های زیادی رو در روابط تجربه می کنیم ، خاطرات خوبی می سازیم‌ ، گاهی موجب رشد مون میشه و گاهی هم اونطور که فکر می کردیم پیش نمیره ... باید تصمیم گرفت و تکلیف مون رو با خودمون روشن کنیم ،‌روابط مزایا و معایب خودشونو دارن من ترجیح میدم تنها باشم یا میتونم مزاحمت های بی وقفه دوستامو تحمل کنم در ازای حس خوبی که باهاشون دارم ؟ نقطه تعادل یه رابطه کجاست ؟ برای انسان مدرن که با شبکه های اجتماعی احاطه شده ، روابط چه معنی ای دارن ؟ به طور طبیعی با بالا رفتن سن پیر می شیم و ضعیف ، ولی همچنان آدمایی هستن که تصمیم گرفتن این روند رو به تاخیر بندازن ، انتخاب شما چیه ازش فرار میکنید یا ... ؟‌ نظرتون درمورد اعتماد چیه چطور می تونیم به هم اعتماد کنیم از کجا معلوم آدمی که کنارت هست رو همونطور که فکر میکردی می‌شناسی ؟سكانسي از همين فيلم جیک و پارتنرش سوال و جواب های زیادی دارن دغدغه های مشابهی دارن و عاشق گپ و گفت درمورد این مسائل هستن شخصیت هاشون از بعضی جنبه ها شبیه و در بعضی جزئیات کاملا متضاد هست . کتاب پر شده از داستان های مختلف که در عین سادگی میتونن پیچیده باشن کی میتونه جواب بهتری به این سوال ها بده  ، جز خود شما ، به همین دلیل این کتاب بدون اینکه بخواد باعث یه خودشناسی در خواننده اش میشه .  کتاب از جمله های قلمبه سلمبه فلسفی استفاده نکرده فقط یه گپ و گفت ساده و دوستانه بین دو نفره که حقیقتا سرگرم کننده و جذابه . ریتم کتاب تنده و به هیچ وجه حوصله سربر نیست ، طولانی نیست میشه تو چهار ساعت یا کمتر تمومش کرد .  در آخر همونطور که نویسنده کتاب گفته هدفش نوشتن یه داستان پیچیده نبوده و سعی کرده با ترکیب سبک ها تجربه فراموش نشدنی برای مخاطبش بسازه و ذهن ها رو با مفاهیمی که تودنیای امروز خیلی همه رو درگیر کرده به چالش بکشه تا در نهایت به یه پاسخ کلی برسید .ايان ريدمعرفی ایان رید : اول از همه بگم که ایشون خیلی تودار تشریف دارن و واقعا  اطلاعات خیلی کمی درموردش پیدا میشد و فعالیت زیادی هم تو شبکه های اجتماعی اش  نداره ، یه خانواده چهار نفره و خواهری به اسم الیزا که بانوی اول و همسر رئیس جمهور ایسلند هست . ایان متولد 1981 هست ، اصالتا کانادایی و ساکن شهر کینگستون در غرب اونتاروی کانادا هست  ، فارغ التحصیل دانشگاه کینگستون و بعد از فارغ التحصیلی با انتشار مقاله هاش به تدریج کار خودش رو در مجله معتبر  نیویورکر آغاز میکنه اولین کتابی که منتشر میکنه سال 2010 در قالب خاطرات اش هست از زندگی در روستاهای کانادا با عنوان انتخاب یک پرنده داستان یه جوان بیست و چند ساله تحصیل کرده و دست کم گرفته شده ای که به خانه پدری باز میگرده و سه سال بعد دومین کتابش به نام حقیقت درباره شانس : چیزهایی که از سفر با مادربزرگم آموختم به چاپ رسید و این کتاب رو هم در سال 2016 منتشر کرد و ایده اش حدود ده سال تو ذهنش بود به علاوه از روی این کتاب توسط نتفلیکس با همین عنوان فیلمی ساخته شده به کارگردانی چارلی کافمن . رمان بعدی ایان به اسم دشمن در سال 2018 منتشر شد و حقوق سینمایی آن به کمپانی آنانیموس کانتنت فروخته شد . به گفته خودش میخواسته بعد از انتشار دو تا رمان اول که داستان های دلگرم کننده  با خاطرات آدم های واقعی بودن و این کتاب سبک متفاوت و چالش برانگیزی داره که با دو کتاب قبلی فرق میکنه.تصور کتاب یه چیزی شبیه اینه موقع خوندن  :)هم فیلمش هم کتابش حالت تئاتری داره و مدل دیالوگ ها و جمله های روشنفکرانه ای که داره کتابو شبیه یه تئاتر واقعی کرده . البته فیلمش به خوبی کتابش نبود و حتما اول کتابو بخونید چون با هم در بعضی قسمت ها خیلی فرق دارن و به گفته کارگردان یک سوم آخر کتاب رو نمیشد به فیلم تبدیل کرد پس خودش تغیراتی داده . فیلم سبک موزیکال داره در قسمت آخر و سکانس ها سریع هستن .ديالوگي از كتاب :&quot;معنای وجود من در پرسشی است که زندگی برایم مطرح کرده است یا برعکس من خود پرسشی هستم که برای دنیا مطرح شده ام و باید پاسخم را با جهان در میان بگذارم در غیر این صورت به پاسخ دنیا وابسته خواهم بود.&quot; </description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Tue, 17 Aug 2021 14:55:22 +0430</pubDate>
            </item>
                    <item>
                <title>سفر در زمان همراه با کرونا :)</title>
                <link>https://virgool.io/Rocket/%D8%B3%D9%81%D8%B1-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%A7-%DA%A9%D8%B1%D9%88%D9%86%D8%A7-hservjc05etq</link>
                <description>سلام :) جاسمین هستم  باسلامجاسمینهستم:)درخدمتتونمدرایامکرونا:))))) ۱_بخونیم یا نه ؟!سلام  :) امروز ۲۵ خرداد سال ۹۹ ساعت ۱۱:۱۰ هست   دلیلی ندارم برای اینکه بتونم قانعتون کنم که پست کرونایی منو بخونید . اگه بخونید ممنونم و سپاسگزارم اگر هم نخونید احتمالا فقط یه نوشته تراژدی و کمدی سیاه و مسخره رو از دست دادین ، که چه بهتر !۲_شروع کرونای جهنمی ^_______________^از کجا شروع کنم این داستانو ؟ بزارین از رک و راست بودن شروعش کنم . رک و راست بگم داستانمو بهتوناولین روز ترم دوم بود دقیقا ۲۸ بهمن ۱۳۹۸ و همونطور که از وجناتش پیداس هنوز تتمهٔ چیزی به اسم زندگی جریان داشت :)) . با دو تا از دوستام نشسته بودم تو راهروی اصلی و داشتیم اخبار ناچیز کروناییمون رو که چندان موثق هم نبود با هم به اشتراک میزاشتیم . من : انگار تو این وضعیت هم هنوز هواپیمایی ها دست برنمیدارن.  مهدیه : آره پروازا انجام میشه کاملا  من : جدی ؟!!! یعنی به نظرت کرونا ایران اومده ؟ سندس : میگن آره !اینا همش در حد حرف بود . هیچ کدوممون باور نمی‌کردیم که واقعا این موضوع به این جا ختم بشه . این بحثم گذشت و من فقط تونستم دو روز از کلاسهای ترم دوم رو شرکت کنم :) البته به صورت حضوری :))) منظورمه !  بقیش مجازی بود ^_^ خیلیم عالیییی  :/دقیقا روز ۳۰ بهمن بود :))))))داشتم میگفتم اون روز بود . همون روز :) آخرین روز!داشتم درس مدار منطقی از ترم قبلمو دوره میکردم که برای هفته بعد برای شروع درس جدید آماده باشم . که رفتم اینستامو چک کردم و با خبر وارد شدن کرونا تو شهر قم روبرو شدم . رفتم خبرگزاری های فارس  و پارسینه و چندتا دیگه رو هم چک کردم . همونطور که انتظار می‌رفت یه سری از خبرگزاری ها لاپوشونی کردن اولش و همه چیز رو عادی جلوه دادن یکی دوتا هم واقعیتو منتقل کردن . این خبر ترسناک بود . خیلی ترسناک . یه جورایی شبیه ترکیدن یه بمب بغل گوشت  یا حتی بدتر .۳_جنگ جهانی سوم در خانه ی مادربزرگ ?فکر نمی‌کردم واقعیت داشته باشه ویروس مرگباری که  معلوم نیست به چه روشی منتشر و ساخته شده داره تو دنیا پرسه میزنه :) حس میکردم دنیا دیگه مثل قبلش نمیشه . آره دنیا دیگه نمیتونه مثل قبل اومدن کرونا بشه . واقعا هم نشد :)ولی اومد ! و شیوع پیدا کرد . و حالا  وارد یه مرحله جدید از مشکلات شده بودیم . گیج و گمراه بودم و خیلی نگران . اول نگران خودم بودم . خودخواه !!! نکنه بمیرم؟! بعد نگران خانوادم شدم میگن افراد با سن های بالاتر ایمنی شون ضعیف تره ! اگه مادر و پدرم مریض شن چی ؟ اگه مادربزرگم اتفاقی براش بیافته ؟  درسام چی میشه ؟و تا یه ماه سردرگم بودم . اینستاگرام رو که باز میکردم تمامش پر بود از  جک  کرونا،دروغ و یه مشت پست شوآف :)یاد تایتانیک افتادم :)  انگار جک داشت می‌گفت رز کشتی داره غرق میشه همه میمیریم . قایق کافی نیست ... :) اول تو برو من یه راهی پیدا میکنم :) حسش شبیه غرق شدن تو کشتی شکسته ای بود که هیچ راه نجاتی ازش  وجود نداشت . ولی الان مشکل یه کوه یخ مزخرف نبود که از اشتباه یه نفر به مسافرای بخت برگشته تحمیل شده باشه .  بلکه در پس این  کرونای غول پیکرو سبز رنگ (هالک سبز) یه مشت دروغ و احتمالا یه قدرت مزخرف با دلایل توجیه نکننده مزخرف تر وجود داشت . :) این کرونا تمام کشتی رو گرفته بود و قایقی هم وجود نداشت چون افراد درجه یک کشتی با قایقا به جزیره های خصوصی شون پناه برده بودن و واکسن مخفیشون قرار بود تا چند وقت دیگه ساخته بشه .‌..با اینکه تو اون کشتی هیچ  جکی نبود :) که منو نجات بده هیچ قهرمانی نبود که نجاتمون بده .... هنوز یه سری آدم خاص بودن که گناهشون مسئولیت و عشقشون بود !جک این دوران  اول از همه خانوادم بود ! اونا سریع خودشونو جمع و جور کردن دقایقی بعد از خوندن خبر توسط پدرم ! تصمیم گرفتیم دو بار در هفته و بعضی وقت ها یکبار در هفته ، پدرم بیرون بره ! فقططط .چون نباید زحمت شستن وسایل ( اعم از همه چیز !_ لباس دست ، و بعدش حمام !) زیادتر میشد به علاوهٔ این حقیقت متعفن که ممکن بود من هیچ اتفاقی برام نیفته ولی خانوادمو آلوده کنم ! اونارو به کشتن بدم ! پس هیچ کس بیرون نرفت هیچ کس جز پدرم . ما از اسنپ یا هر چیز دیگه ای هم سفارش نمیدادیم  خودمون میشتیم . من که نه ! خانوادم ! نمیزاشتن کمکشون کنم ! اونا تنها بودن و من مجبور بودم فقط نگاهشون کنم و سعی کنم حرف بیجا یا حرکت بیحایی انجام ندم که این وضعیت افتضاحو تشدید کنه . ظرف شستن یا هر چیزی که باعث بشه کمک کنم بدون اینکه دستم به وسایل خرید و لباس ها بخوره . گرچه این آخرا باعث شرمندگی شدم . غرغر کردم...حتما براتون سواله که چرا خریدای چندماهو یا حداقل یه ماهو انجام ندادیم تا هی بیرون نریم و زحمات بیشتر نشه !؟ باید بگم برای خودمم سؤاله ! این مدله پدرمه .عقیدشه و هیچ کس نمیتونه مجبورش کنه کاریو که نمی‌خواد انجام بده . یدفعه زیاد خرید کردن جزو برنامه و سبک زندگیش نیست از طرفی این یه واقعیته که نمی‌خواد با زیاد خرید کردن و جا دادنش تو انباری خونه باعث بشه که کسی که واقعا تو شرایط سختیه ، پیره ، مریضه و حال بدی داره حالا تو کرونا بیاد کلی راه بره تا بالاخره به یه فروشگاهی که مردم خالیش نکردن برسه ! مردم ترسیدن و حقم دارن ولی بی انصافیه اگه به ضعیف تر از خودت رحم نکنی . این عقیدشه  .پس ما حدود ده دوازده تا جنس  بعضی روزا حدود بیست جنس ، هفته ای دو بار یا یه بار تهیه میکردیم و از همون دم در ، پدرم خریدارو در حالی که با مراقبت ها و تذکرات مادرم حواسش بود که به در و دیوار نخوره میزاشتش تو حموم و همزمان مادرم هم حواسش بود کسی دستش با گوشه لباسش به خریدا نخوره و سمت حموم نره به عبارتی ما در اتاقامونو میبستیم و تا وقتی که اون خرید ها دونه دونه با الکل پد ضدعفونی کننده و مایع صابون با آب گرم ،کامل و دوبار شسته نمی‌شدن و بعد از شسته شدن حتی جلد وسایل کنده میشد و توی سطل زباله مخصوص که برا کرونا جداش کرده بودیم میزاشتیم و خود وسایل هم با دستکش خارج میشد و وسایل رو توی کیسه پلاستیکی میزاشتیم .... تا وقتی این پروسه تکمیل نمیشد ما از اتاقمون تا حد ممکن (به جز بعضی موارد:) مثل سرویس بهداشتی که شما فکر کن اونم در مواقع ضروری :)  )  بیرون نمیومدیم . با خودتون می‌زارم تصور این شرایط رو تو خونه مون :)۴_ جوج با طعم کرونا ، سیاست پشت این حرفا؟ما هرگز بیرون نرفتیم ولی بوسیله اخبار، از بیرون این چاردیواری کوچیکمون خبر داشتیم :)  . خوبم خبر داشتیم . مسافرت رفتن دوستام و آشناهام و همسایه هامون .... اهمیت ندادن مردم به این شرایط وخیم...من اینستاگراممو تو کرونا دقیقا با اولین خبر کرونا حذفش کردم . نمی‌تونستم پست هارو تحمل کنم خبر فوت یکی از همکارای پزشکایی که فالوشون میکردم ، شوخی های کرونایی که نمی‌دونستم گریه کنم یا بخندم و بزنم تو سر خودم با اونا ، از طرفی  بدترین قسمتش استوری دوستای دانشگام و پروفایل هاشون بود که تو سفر بودن و جوج میزدن بر بدن :) نوش جونتون ولی اگه یه درصد ناقل بودین و باعث شدین این بیماری مزخرف بیشتر شیوع پیدا کنه اگه باعث شدین با کم تحمل کردنتون نه بخاطر این که مجبورین بخاطر اینکه شما شاغلین و اخراج میشین چشم یه خانواده به دستای شماست .... نه !!!! اگه بخاطر تفریحتون ! کشتی درحال غرق شدنو رها کردین و سوار قایقاتون شدین و در رفتین ‌تا بقیه بمیرن... نمی‌دونم باید بعد از این چی بگم ! بگم اشتباه کردین ؟! نصیحت کنم ؟! توبیخ کنم ؟! مگه من کیم !!!! من فقط یه بنده خداییم که چهارماهه تو قرنطینه اس و هر روز شاهد اینه که پوست دستای مادرش کنده شده خشک شده و ترک برداشته و ترمیم شده و. دوباره و دوباره ...و باید هر روز تماشا کنه تا ببینه چی میشه . بعد در حالی که شبکه خبر داره با افراد مسافرت رفته حرف میزنه و توبیخشون می‌کنه  بشینه نگاه کنه هدف و سیاست پشت حرف این آدما چیه ؟ شما چی گیرتون میاد از درست کردن این گزارشا ؟دارم آدمای مسافرت رفته با قیافه های خندون و خوشحال و گهگاهی خجالت زدشون رو نگاه میکنم :) به زیرنویسا و سیاستهای پشت کارهاشون که تو مخیله ام نمیگنجه نگاه میکنم. :) بعدش میزنم محکم تو سر خودم و برای کلاس آنلاین آماده میشم . ولی استاد نیومده هنوز :)))))) شاید خوابش برده . پس هنوز وقت برای بیکاری دارم ....درحالی که دارم سعی میکنم به دستای پوست پوست شده مادرم و اعصاب داغون خودم از  اینکه نمی‌دونم چه گلی تو سرم بریزم فکر نکنم ... ناگهان .... تصمیم مزخرفی میگیرم. ! :)))۵_ چالش یا چاله ؟ :)چالش یا چاله ؟! :) می‌دونم اسم مزخرفی رو برای این قسمت انتخاب کردم . ولی واقعا کدومش ؟              من خانواده فوق العاده ای دارم ! یه جورایی عجیب و خاص و به شدت دوست داشتنی . اولویت زندگیم همیشه اونا بودن . ولی کرونا برای من برای خانواده ما و احتمالا برای خانواده های شما فقط یه چالش بیرونی نبود یه مریضی ترسناک نبود ! حتی مشکل قرنطینه ام نبود ! مشکل شدت پیدا کردن وسواس بود ! مشکل ترس و نگرانی بود. مشکل جو حاکم بر خونه مون بود  این استرس هنوزم هست این وسواس هنوزم هست ما الان دقیقا از ۳۰ خرداد سال ۹۸ هست تا به امروز ۲۵ خرداد که قرنطینه ایم . کاملا قرنطینه ایم :) حتی یه روز !!!! هم نبود که ازش کم شه . من مشکلی با قرنطینه ندارم ! اولش سخت بود خیلی سخت بود که آخر هفته ها که معمولا بیرون می‌رفتیم و یه حالی تازه میکردیم ازمون دریغ شه ! مدرسه و درس و دانشگاه تعطیل شه ! چون با اینکه سخت بود ولی خوب بود ! پس سخت بود که این آزادی هارو ازم بگیره کرونا ، ولی مشکل اینم نبود !!!! مشکل الان ما چالش یا چاله جدید ما  این بود : استرس و وسواس.          مهم نبود چه قدر حرف بزنیم چقدر مطلب و خبر از گوگل بخونیم کافی نبود ! مادرم معتقد بود کرونا از کولر از لباس از هر چیزی که به بیرون مربوطه منتقل میشه !  دستمون به لباسای بیرون نباید بخوره ! تا توی آب و وایتکس تمیز شن ! هر هفته دوبار ! باید حتی به پنجره هم نزدیک نشیم ! چالش ها وسواس حاکم بر خونه مون بود . این  استرس جدید ..‌.  و نگرانی بابت مادر و پدرم . مواد شوینده و بهداشتی اگه زیاد از حد استفاده بشن میتونن ایمنی بدنت رو و ریه هات رو از بین ببرن !   چجوری باید راضیشون میکردم که این کار بیش از حده ؟ دستای مادرمو چیکار میکردم ؟ چرا اون دستا باید بخاطر وسواس بیش از حدش به این روز بیفته ؟ نکنه ریه هاشون اذیت شه؟   چالش ها اینا بود . دوراهی های بزرگ اینا بود . باید چیکار کنم تا به حرفم کمی گوش بدن ؟ میترسم خودشونو از بین ببرن با این وسواس من چیکار میتونم کنم ؟ پس سعی کردم باهاشون منطقی حرف بزنم و دلیل و مدرکامو رو کنم ! ولی فایده ای نداشت . این استرس و فشار قوی تر از تلاش های من بود این باور و ترس و عشق و فداکاری قوی تر از من بود . پس من همون‌طور که حدس میزنین قهرمان نشدم . نتونستم کاری کنم و فقط نشستم  و نگاه کردم تو این چهار ماه خانواده ما چقدر ضربه خورد . پس چالش نبود یه چاله بود و ما بعد از چهار ماه هنوزم تو این مخمصه گیر کردیم :)گفتم شاید بهتر باشه  قبل اینکه بخوام از تصمیم بزرگم حرف بزنم حرفهای بالارو هم بگم ...                     اینطور شد که شکست خوردم . پس نشستم و نگاه کردم ! آسیب دیدن خانواده عزیزم رو تماشا کردم .فایده نداشت . باید یه جوری این زمان گرفتار شده رو آزاد میکردم . زمانم دست خودم نبود . انگار زمان یه گاو وحشی بود که هیچ کنترلی روش نداشتم شبیه کارتونای بچگی :) ازین گاوای ترسناک گنده  و عصبانی :)  ! زمان یه همچین شکلی داشت . تصمیم گرفتم بالاخره به خودم بیام حدودای فروردین بود که حالم بهتر شد و به این کرونای لعنتی به چشم یه چالش نگاه کردم و قبولش کردم . یکی از مهارتهایی که خیلی لازمش داشتم ولی توش ضعف داشتم رو به صورت رایگان و آنلاین روش کار کردم و به لطف اون روش یادگیریم ، دیدگاهم نسبت به اون درس کاملاااااااا عوض شد . برگشتم به گذشته ها ! به دوران ابتدایی ! و روشامو بازبینی و اصلاح کردم . به یه سری کشفیات در مورد خودم رسیدم که نمیدونستم ! خودشناسی واقعا مهمه ! از یوتیوب بهترین مربی های ورزش رو پیدا کردم و حدودا تونستم یه ماه ورزش رو تو قرنطینه انجام بدم در حالی که قبل اون از ورزش فراری بودم ! تونستم دیدگاهاه های جدید و بهتر بدست بیارم و همشونو یادداشت کردم دونه به دونه تغیراتمو تو این مدت نوشتم تا یادم نره ! روی درسم بیشتر فوکوس کردم و کاملا یه نقشه راه برای خودم ایجاد کردم . به زندگیم بیشتر نظم دادم و آدم دیگه ای شدم . این تغیرات سخت بود خیلی سخت بود ! این زندگی تو قرنطینه ای که هنوز ادامه داره خیلی سخت بود ! و سخت هست . ولی امشب یه اتفاقی افتاد که باعث شد سکوت چند ماهه امو بشکنم و از احساساتم در زمان کرونایی صحبت کنم . امشب یه جنگ بزرگ شروع شد بین دوراهی همیشگی مون تو قرنطینه ! باعث شد که بنویسم اینو .که بهتون کمک کنه حرفام حتی کم . که به خودتون افتخار کنین اگه زحمت کادر درمان و هموطنتونو کمتر کردید و یه تفکری کنیم اگه بی مسئولیتی مون باعث شد مدت زمان قرنطینه و استرس و اضطراب خانواده هامون طولانی تر بشه و  اوضاع دستای مادرم وخیم تر ! اگه بعضی هامون یشتر مسئولیت پذیر بودیم ، کرونا کمتر شیوع پیدا میکرد ؟ ممکن بود وسواس مادرم کمتر شه و دیگه دستاشو اونجوری نبینم ؟ اگه بعضی ها طرف حق بودن ممکن بود این همه آدم نمیرن ؟ اگه من بیشتر تلاش می‌کردم تا قانعشون کنم ، ممکن بود پدر و مادرم کمتر سختی بکشن ؟ اگه زودتر اینو منتشر میکردم ممکن بود یه نفر زندگیش راحت تر بشه ؟ اگه ماسک و وسایل ضروری رو غارت نمی‌کردم یا گرون نمی‌کردم چی ؟ اینا فقط چندتا از این اگه های بزرگ این دوران کروناس :) شک ندارم به همتون ده برابر من بیش تر سخت گذشته ، می‌دونم و میفهمم .خودمم یکی از همین غارنشینا هستماااا  :)یه لحظه فکر کنید تصمیماتمون چقدر این زندگی رو میتونست تغییر بده ؟ :)تو کرونا چیزای زیادی رو از دست دادیم ولی فکر میکنم چیزای زیادی هم بدست آوردیم ! فکر میکنم مردم آگاه تر شدن .تو قرنطینه زیاد به موزیک گوش میکنم . بیشتر از قبل مخصوصا کلاسیک :) اینجور آهنگا جون میده برای فکر کردن اونقدر میتونی فکر کنی و اونقدر غرق بشی که خوابت ببره ! :) یکی از کارهایی که این نوع موزیک و این سبک زندگی کرونایی یادم داد مثبت اندیشی بود . در حال حاضر وضعیتمون به این صورته که تا وقتی واکسن بیاد تو خونه می‌مونیم ! و مادرم به این روش ادامه میده و من نمیتونم کمکش کنم ! فقط میتونم مثبت باشم و سعی کنم پیشرفت کنم ! همون طور که پیشرفت هم کردم ! تو کرونا از وقت های دیگه بیشتر پیشرفت کردم !! دارم سعی میکنم نقطه ضعف هامو که تا حالا ندید می‌گرفتم رو ارتقاء بدم . همزمان سعی میکنم دیگه مثل امشب غر نزنم که بار مسئولیت ها بیشتر بشه . سعی میکنم جسور تر و سختکوش تر بشم . پس اومدم که اعلام کنم الان چه اوضاعی داریم :) از تاریخ ۳۰ بهمن هس که پامونو بیرون نزاشتیم . برای مادربزرگم نگرانم ولی نمی‌تونستم بهش سر بزنم فقط با تماس تصویری برای اولین بار تو زندگیم تونستم باهاش در ارتباط باشم در واقع اولین بارم بود از تماس تصویری استفاده میکردم  :/ که کلییییی هم گریه کرد و دلش تنگ شده بود ... :)و اومدم بگم وضعیت اینجوریه ... و نمی‌دونم تا کی ادامه داره ولی برعکس هفتاد درصد جامعه من نمیتونم تا وقتی واکسن یا همچین چیزی میاد ،بیرون برم !!!!؟؟! حتی یه بار !!!! و اومدم آماده باش بگم به خودم تو یه پست عمومی !! که قراره حالاحالاهااااا تو این خونه بمونی ! و قراره سخت هم تلاش کنی ! اومدم به خودم هشدار و قوت قلب بدم ‌ . که میتونم و ادامه میدم . این شرایط بد رو که هیچ آینده ای رو براش پیش بینی نمیکنم ادامه میدم ! چاره دیگه ای نیست . اونا خانوادمن نمیتونم تو این شرایط ولشون کنم و رو حرفشون حرف بزنم . تحمل میکنم و صبوری و گاهی اینجا غر میزنم  :) بلکه آروم شم و بتونم بیش تر از چهار ماه به این قرنطینه ادامه بدم :)امیدوارم روزی برسه که بتونم تو آینه به خودم نگاه کنم و بگم : متأسفم که متأسف نیستم :)روزی که اشتباهی نباشه که منو متأسف کنه . روزی که بتونم به خودم افتخار کنم . روزی که ذره ای بتونم به خودم کمک کنم از راه درست میتونم اون روز به بقیه هم کمک کنم و شاید فقط اون روز باشه که پشیمون نباشم از این زندگی کوچیکی که روی سیاره کوچیک داشتم. :) بعد مرگم چیزی ازم نمی‌مونه حتی باقی مونده بدنم هم از بین میره :) ولی فکر کن چی باعث میشه یه نفر بعد مرگ زنده بمونه ؟ تاثیرش ! می‌خوام اول تاثیر خوبی و راضی کننده ای توی زندگی خودم داشته باشم بلکه یه روز خدمتی کنم که مردم بتونن منو با اون به یاد بیارن . به امید اون روز ...خانواده مهربونم که کلی اذیتشون کردم منو ببخشین از مادر و پدر عزیزم ممنونم و متأسفم که بخاطر عشق زیادتون به ما به این روز افتادین !  دوستون دارم . دستاتونو می‌بوسمهمچنین مخطبایی که چرت و پرتایی که در اثر قرنطینه چهارماهه ام و کپک زدن مخم رو خوندن مرسیییییی ازتوننن و متأسفم که متاسف نیستم که همچین نوشته چرتی رو نوشتم :)و اون دوستای عزیزی که جوج زدین تو سفر :)  نوش جونتون ??در آخر از خودم تشکر میکنم که تسلیم نشد . و از ساعت ۱۱:۱۰ تا ۴:۵۹ صبح داره اینو می‌نویسه :/دمت گرم پهلوانسلامت باشین و حواس جمع . حواستون به جک های توی زندگیتون باشه ?جاسمین ۲۵ خرداد</description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Mon, 15 Jun 2020 05:36:49 +0430</pubDate>
            </item>
                    <item>
                <title>کتاب هنر ظریف بیخیالی</title>
                <link>https://virgool.io/@yasaminashoori/%DA%A9%D8%AA%D8%A7%D8%A8-zfbtxv0jn89e</link>
                <description> یکی از کتاب های خودیاری ولی یه کم متفاوت تر از بقیه کتاب های این سبکی هست. تو این کتاب درمورد تجربیات خود مارک صحبت میشه و درمورد خیلی از عوامل حواس پرتی زندگی روزمره صحبت می‌کنه ، اینکه چطور اولویت بندی کنیم و از بین این همه کار و شبکه های اجتماعی با پست های جذاب، وقت با ارزش مون رو صرف کاری کنیم که واقعا اهمیت داره. درمورد بعضی از پایه های مهم روانشناسی و فلسفه مثل هدف زندگی، رسالت، عادات مثبت و ... صحبت می‌کنه . </description>
                <category>یاسمین آشوری</category>
                <author>یاسمین آشوری</author>
                <pubDate>Thu, 12 Mar 2020 23:05:43 +0330</pubDate>
            </item>
            </channel>
</rss>