<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های پرستو هدایتی</title>
        <link>https://virgool.io/feed/@parastoohedayati1122</link>
        <description>یک برنامه نویس که دوست داره بیشتر یاد بگیره 📚</description>
        <language>fa</language>
        <pubDate>2026-06-16 09:51:42</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>پرستو هدایتی</title>
            <link>https://virgool.io/@parastoohedayati1122</link>
        </image>

                    <item>
                <title>نسخه جدید از کتاب DDIA منتشر شده در سال 2026</title>
                <link>https://virgool.io/@parastoohedayati1122/%D9%86%D8%B3%D8%AE%D9%87-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%A7%D8%B2-%DA%A9%D8%AA%D8%A7%D8%A8-ddia-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-2026-djdjnjub8cxp</link>
                <description>سلام به همگیتو پست قبلی باهم در مورد فصل اول از کتاب Designing Data Intensive Applications ، صحبت کردیم.امیدوارم که براتون مفید بوده باشه.قصد داشتم فصل دوم رو اضافه کنم، اما به تازگی نسخه جدیدی از همین کتاب توسط مارتین کلپمن با همکاری کریس ریکومینی (خالق Apache Samza) منتشر شده که تنها یک سری آپدیت های جزئی نیست، بلکه بازنویسی کامل مفاهیم زیرساخت داده برای عصر Cloud و AI هست.بنابراین تصمیم گرفتم در این پست مختصرا در مورد تغییرات کلی این نسخه صحبت کنم و در ادامه مسیر توضیحات نسخه آخر کتاب رو باهم جلو بریم.چه تغییراتی تو ورژن جدید کتاب داشتیم؟خداحافظی رسمی با MapReduce: این فناوری دیگه داره میمیره! تمرکز نسخه جدید کاملاً بر روی معماری‌های Cloud-Native، Object Storage (مثل S3) و فریم‌ورک‌های مدرنی چون Spark، Flink و Kafka هست.ورود مقتدرانه به عصر AI: اضافه شدن مباحثی مثل DataFrame ها و Vector Embeddings تا نشون بده مدل‌ های داده برای تغذیه پایپ‌ لاین‌ های ML چطور باید طراحی بشه.اعتبارسنجی سیستم‌ها (System Validation): نقطه ضعف نسخه اول جبران شد! یک فصل کاملاً جدید و هیجان‌انگیز که یاد میده چطور با روش‌های رسمی (Formal Methods)، مهندسی آشوب (Chaos Engineering) و شبیه‌سازی ریاضی، درستی سیستم distributed خودتون رو تحت فشار بالا اثبات کنید.نگاه عمیق‌تر به Stream Processing: با حضور ریکومینی، مفاهیم پردازش جریانی، معماری‌های Lambda و Kappa و ادغام Batch و Stream با استانداردهای ۲۰۲۶ به‌روز شدند.چرا باید این کتاب رو بخونیم؟ما در کار روزمره مدام با Spark یا Kafka کار می‌کنیم، اما آیا میدونیم دقیقاً پشت صحنه آن‌ها چی میگذره؟چرا دیتابیس‌های مدرن مثل TiDB از LSM-Tree استفاده می‌کنن در حالی که PostgreSQL هنوز روی B-Tree مونده؟ما میخوایم به جای اینکه تنها استفاده کننده از ابزار ها باشیم به یک معمار نرم افزار تبدیل بشیم، بتونیم بین trade-off ها تحلیل و تصمیم گیری کنیم.از زبان جی کِرپس (خالق کافکا) :«این کتاب پلی است بین تئوری سیستم‌های توزیع‌شده و مهندسی عملی. ای کاش ده سال پیش وجود داشت تا مجبور نبودم اشتباهات را خودم تجربه کنم.»به زودی در ادامه سری پست های مربوط به این کتاب، با نسخه جدید جلو میریم و آپدیت ترین مفاهیم رو باهم یاد میگیریم.لینک دانلود این نسخه جدید رو در کامنت های همین پست براتون قرار میدم.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sat, 16 May 2026 12:10:32 +0330</pubDate>
            </item>
                    <item>
                <title>کتاب Designing Data-Intensive Applications - فصل اول</title>
                <link>https://virgool.io/@parastoohedayati1122/%DA%A9%D8%AA%D8%A7%D8%A8-designing-data-intensive-applications-%D9%81%D8%B5%D9%84-%D8%A7%D9%88%D9%84-xknsp9gzve6v</link>
                <description>تصمیم دارم تو چند تا پست خلاصه های از کتاب Designing Data-Intensive Applications نوشته‌ی Martin Kleppmann رو براتون بنویسم تا اگه زمان کافی برای خوندن این کتاب ندارید بتونید از مطالبش بهره ببرید.تو اولین پست میریم سراغ فصل اول کتاب : Reliable, Scalable, and Maintainable Applicationsوقتی سیستم‌ها بزرگ می‌شن، مشکلات هم بالغ می‌شنفصل اول کتاب Designing Data-Intensive Applications در واقع مقدمه‌ی فنی نیست؛ مقدمه‌ی فکریه.نویسنده هنوز وارد دیتابیس، ایندکس، replication یا distributed system نمی‌شه.اول می‌گه: قبل از اینکه درباره‌ی راه‌حل حرف بزنیم، باید بفهمیم مسئله چیه.و مسئله‌ی اصلی اینه:سیستم‌های نرم‌افزاری دیر یا زود خراب می‌شن.نه به این دلیل که مهندس‌ها بد کدنویسی می‌کنن،بلکه چون دنیای واقعی پر از failure هستش:دیسک‌ها می‌سوزنشبکه‌ها ناپایدارنسرورها از دسترس خارج می‌شنو انسان‌ها (که خطرناک‌ترین component سیستم هستن) اشتباه می‌کننپس سؤال مهم این نیست که «خرابی پیش میاد یا نه»، سؤال اینه که وقتی پیش اومد، سیستم چه واکنشی نشون می‌ده؟Data-Intensive Application یعنی چی؟Kleppmann از همون اول یه تمایز مهم قائل می‌شه.بعضی سیستم‌ها compute-intensive هستن:مثل بازی‌هایا شبیه‌ سازی‌ های علمیولی سیستم‌هایی که این کتاب قراره در موردشون صحبت کنه، data-intensive هستن:داده‌ی زیادسرعت بالای read و writeتعداد کاربر بالاو مهم‌تر از همه: پیچیدگی مدیریت دادهمثل:شبکه‌های اجتماعیسیستم‌های پرداختفروشگاه‌های آنلاینسیستم‌های لاگ و آنالیتیکساینجا مسئله فقط performance نیست، مسئله اینه که داده‌ها:درست ذخیره بشندرست بازیابی بشنو در شرایط خرابی هم درست باقی بموننسه معیار اصلی یک سیستم خوبKleppmann می‌گه برای قضاوت درباره‌ی طراحی یک سیستم data-intensive، باید به سه معیار نگاه کنیم که ابزار های فکری هستن:ReliabilityScalabilityMaintainabilityReliability — سیستم باید قابل اعتماد باشهReliability یعنی:سیستم حتی وقتی بخشی ازش خراب می‌شه، هنوز رفتار قابل پیش‌بینی داشته باشه.اینجا Kleppmann یه تفکیک خیلی مهم انجام می‌ده:Fault یعنی یک جزء خراب شدهFailure یعنی کاربر نتیجه‌ی اشتباه می‌بینهFault اجتناب‌ناپذیره. Failure چیزیه که باید جلوش رو گرفت.سیستم reliable سیستمیه که:fault رو تحمل کنهبدون اینکه failure بده بیرونبرای همین مفاهیمی مثل اینها از همین‌جا معنی پیدا می‌کنن :replicationredundancyisolationgraceful degradationScalability — وقتی سیستم بزرگ می‌شه، له نشهScalability یعنی:سیستم بتونه رشد کنه بدون اینکه مجبور بشیم از نو بسازیمش.نکته‌ی مهمی که Kleppmann تأکید می‌کنه اینه که: Scalability یعنی تعریف دقیق مسئله.باید بدونیم:چی داره زیاد می‌شه؟ کاربران؟ داده؟ درخواست؟bottleneck کجاست؟با چه متریکی اندازه می‌گیریم؟(throughput، latency، resource usage)و اینجا یکی از مفاهیم کلیدی فصل اول مطرح می‌شه: Tail Latencyمیانگین مهم نیست. اون ۱٪ درخواست خیلی کند مهمه.مثال آمازون:وقتی یه درخواست کاربر وابسته به چند سرویس مختلفه، کندی هر کدوم می‌تونه کل تجربه رو خراب کنه. اگر ۹۹٪ درخواست‌ها سریع باشن ولی ۱٪ خیلی کند، کاربر همون ۱٪ رو یادش می‌مونه.اینجاست که جمله‌ی معروف میاد:Your bottleneck is dominated by a small number of extreme cases.یعنی گلوگاه سیستم رو همون درخواست‌های نادر ولی خیلی کند تعیین می‌کنن.Maintainability — سیستم باید قابل زندگی کردن باشهشاید انسانی‌ترین بخش فصل اول همین‌جاست.Kleppmann می‌گه سیستم قراره:سال‌ها زنده بمونهآدم‌های مختلف روش کار کننتغییر کنه، گسترش پیدا کنه، refactor بشهپس Maintainability فقط درباره‌ی «کد تمیز» نیست.برای همین اون رو به سه معیار مشخص می‌شکنه:Operability — سیستم باید قابل اداره باشهOperability یعنی:تیم عملیاتی بتونه سیستم رو بفهمه، مانیتور کنه و در شرایط بحرانی نجاتش بده.سیستم operateable سیستمیه که:deploy کردنش ساده‌ستلاگ و متریک معنادار دارهfailureها قابل تشخیص و recovery هستنکارها وابسته به یک آدم خاص نیستسیستمی که فقط «نابغه‌ی تیم» بلده درستش کنه، یه سیستم خطرناکه.Simplicity — جنگ با پیچیدگی، نه با امکاناتSimplicity به‌معنای ساده‌لوحی نیست. به‌معنای حذف پیچیدگی غیرضروریه.Kleppmann دشمن‌ها رو اسم می‌بره:tight coupling of modelstangled dependenciesspecial case های زیادexplosion of the state spaceاین‌ها سیستم رو شکننده می‌کنن، جوری که یه تغییر کوچیک، ده تا جای دیگه رو می‌ترکونه.Simplicity یعنی:اجزا مستقل‌تر باشنرفتار سیستم قابل پیش‌بینی باشهمدل ذهنی سیستم ساده باشه، نه الزاماً implementation نرم افزارEvolvability — سیستم باید بتونه تغییر کنهEvolvability یعنی:تغییر دادن سیستم هزینه‌ی غیرمنطقی نداشته باشه.چون واقعیت اینه:نیازها عوض می‌شنبیزنس رشد می‌کنهمقیاس تغییر می‌کنهو هیچ طراحی‌ای ابدی نیستسیستمی که هر تغییر کوچیکش نیاز به بازنویسی کامل داره، در بلندمدت شکست می‌خوره.جمله محبوب من و یکی از جملات کلیدی این فصل :There is no such thing as a generic solution.هیچ دیتابیس، معماری یا ابزار «همه‌چیزتمامی» وجود نداره.هر تصمیم مهندسی یه trade-off محسوب میشه:consistency در برابر availabilitylatency در برابر throughputsimplicity در برابر flexibilityاین کتاب نمی‌گه «این بهترین راهه»، می‌گه: بفهم داری چی رو قربانی می‌کنی.جمع‌بندی فصل اولفصل اول بیشتر از اینکه فنی باشه، ذهنیت می‌سازه.می‌گه:خرابی طبیعیهپیچیدگی خطرناکهو طراحی خوب یعنی آمادگی برای تغییراگر بخوایم کل فصل رو تو یه جمله خلاصه کنیم: سیستم خوب سیستمی نیست که هیچ‌وقت خراب نشه، بلکه سیستمیه که وقتی خراب شد، آبرومندانه دوام بیاره.خیلی خوبه اگه زمان و حوصله‌اش رو داشتید به خود کتاب سر بزنید، جزییات و مثال های بسیار جالبی داره.ممنونم از زمانی که گذاشتید و امیدوارم این مطلب براتون مفید بوده باشه.خوشحال میشم نظراتتون رو بخونم تا هم ازتون یاد بگیرم و هم بتونم محتوای بهتری بنویسم.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Wed, 21 Jan 2026 14:43:10 +0330</pubDate>
            </item>
                    <item>
                <title>شی گرایی و اصول SOLID</title>
                <link>https://virgool.io/@parastoohedayati1122/%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%88-%D8%A7%D8%B5%D9%88%D9%84-solid-t4gs0wfyme8k</link>
                <description>برخی معتقدند شی گرایی نوعی برنامه نویسی منسوخ شده ست اما در مقابل گروهی مخالف این نظر هستند و همچنان بر این عقیده جلو میرن که حتما شی گرا کد بزنن.در این مقاله ما اصلا نمیگیم شی گرایی خوبه یا منسوخ شده صرفا قرار هست باهاش آشنا بشیم و بدونیم چجوری کد شی گرا تمیز تری داشته باشیم. اگر مثل من فکر میکنید شی گرایی ممکنه بعضی مواقع بهمون خیلی کمک کنه ادامه مطلب رو با من همراه باشید.به طور کلی زیرساخت زبان پایتون براساس شی گرایی نوشته شده و متود هایی که استفاده میکنیم نوعی کلاس هستند.شی گرایی در اصل به معنای ساختن اشیایی هست که خصوصیات خاصی را از هم به ارث میبرند.فرض کنیم در یک شرکت اگر افراد را شی در نظر بگیریم ، تمامی کارمند ها انسان هستند و خصوصیات انسان را به ارث می برند. مثلا تمامی انسانها آنها دارای نام و نام خانوادگی و سن و شماره تماس هستند.حال می توان کلاس کارمند بودن را برای آنها تعریف کرد که خواص انسان بودن را ارث میبرند و برای مثال حقوق هم برای آنها تعریف می شود.از بین کارمندان تعدادی حسابدار ، برنامه نویس ، منشی و ... افراد هستند که خواص انسان بودن و کارمند بودن را به ارث میبرند و همینطور خواص متفاوتی نیز باهم دارند.در برخی موارد مانند مثال بالا نیاز است با شی گرایی آشنا باشیم تا برنامه ی منظم تری بنویسیم و از شلوغی کد ها جلوگیری کنیم.حالا اگر بخوایم کد تمیز و شی گرا داشته باشیم باید تا حد ممکن از قواعد SOLID پیروی کنیم. این قواعد مثل ۵ ستون کد های شی گرا عمل میکنن : 1 - SRP ( Single responsibility principle)   اصل تک مسئولیتی : هر کلاس باید فقط یک وظیفه داشته باشه !کاملا هم منطقیه ، فکرشو کنید به عنوان حسابدار در جایی استخدام شدید ، شما وظیفتون حسابداری و انجام کار های مالی هستش و هیچوقت مسئولیت های واحد دیجیتال مارکتینگ رو به شما واگذار نمیکنن چون شما فقط یک وظیفه مشخص دارید که باید به همون رسیدگی کنین. 2 - OCP ( open / closed principle )  اصل باز - بسته : کد های پروژه باید برای توسعه داده شدن باز و نسبت به تغییر دادن بسته باشن. پیچیده شد؟ نگران نباشید ! بیاید اول راجع به کلاس باز صحبت کنیم : کلاس باز یعنی کلاسی که بشه ازش extend کرد و توسعه اش داد. یعنی بشه تو متود ها و ویژگی های کلاس تغییراتی ایجاد کرد.کلاس بسته : کلاسی که کامل تست شده باشه و بشه برای توسعه بقیه کلاس ها ازش استفاده کرد ، پایدار باشه و در آینده تغییر نکنه.حالا تو اصلا ocp میگه اگه بخوایم تو کلاسی که داریم متود جدید اضافه کنیم نباید نیاز به تغییر تو بخش های دیگه کد ( مثلا کلاسی که ازش extend کردیم ) باشه.3 - LSP ( Lis kov substitution principle ) اصل جایگزینی لیسکوف : فرض کنید کلاس B یک زیر کلاس از A باشه، آبجکت های نوع A باید بتونن بدون تغییر دادن کد برنامه با آبجکت های نوع B جایگزین بشن. کلاس های فرزند نباید رفتار و ویژگی های کلاس والد رو تغییر بدن.ساده تر بگم. وقتی کلاسمون از یک کلاس دیگه EXTEND میکنه ، نباید طوری کد بزنیم که ویژگی های کلاس والدمون over write بشه. 4 - ISP ( Interface segregation principle ) اصل جداسازی اینترفیس ها :  کلاس ها نباید مجبور باشن متود هایی که بهشون نیاز ندارن رو پیاده سازی کنن. ** نکته : در زبان پایتون ما مفهومی به نام اینترفیس نداریم اما یجورایی abstract class هارو میشه به عنوان interface در نظر گرفت کارش شبیه به همونه. اصلا کارش چیه؟ یه جور قانون گذار محسوب میشه. در واقع کلاسیه که یه سری فانکشن تعریف میکنه که هر کلاسی ازش extend کنه حتما باید اون توابع رو پیاده سازی کنه. یعنی چی؟ مثلا من یک کلاس تعریف میکنم محاسبه حقوق که یکی از توابعش محاسبه کارکرد کارمند و تابع دیگه ای داره به اسم محاسبه کسری کار ، اما تو این توابع هیچ کدی نوشته نشده هر واحدی که از این کلاس استفاده میکنه باید با توجه به نیاز خودشون پیاده سازی کنن. اینجا این اصل داره میگه من به عنوان قانون گذار نباید قاعده ای تعریف کنم ، که کسی که نیازی بهش نداره مجبور به پیاده سازیش باشه. مثلا واحد فروش یک شرکت نیاز به یک تابع برای پیگیری مشتری ها داره ، ولی بخش فنی نیازی به استفاده از این تابع نداره اگه من این قاعده رو بزارم مجبور میشن در عین حال که بهش نیاز ندارن پیاده سازیش کنن. و این باعث میشه این اصل نقض بشه.5 - DIP ( dependency inversion principle  ) اصل وارونگی وابستگی : بین کلاس ها در شی گرایی ممکنه پیش بیاد که ارتباطی وجود داشته باشه. اما این باید طوری نوشته بشه که بین ماژول ها و آبجکت های سطح بالا و سطح پایین نباید وابستگی وجود داشته باشه. برای تغییر کلاس های سطح بالا نباید کلاس های سطح پایین دچار تغییر بشن.گرد آورنده : پرستو کشاورز هدایتی استاد : دکتر مریم حاجی اسمعیلی ، دکترای علوم کامپیوتر از دانشگاه کینگستون لندنDr.Maryam HajiesmaeiliPhD of computer science from Kingston university of LondonLinkedin</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sat, 18 Jun 2022 15:52:58 +0430</pubDate>
            </item>
                    <item>
                <title>Semantic Versioning</title>
                <link>https://virgool.io/CE-SHAHED-publication/semantic-versioning-sjld0hytjatm</link>
                <description>تا حالا وقتی اپلیکیشن رو گوشیاتون نصب کردید ، به ورژن هاش دقت کردین؟قدیم تر ها قبل از اینکه گوگل پلی و ... بین مردم مرسوم بشه ، برای نصب کردن بازی ها و برنامه هایی که نیاز داشتیم ، از یک سری فایل با پسوند apk استفاده می‌کردیم.  همیشه کنار اسم پکیج یک سری اعداد به صورت    &#x27; 1.1.5 &#x27; و یا مثلا &#x27; v1.6.2 &#x27; بود که دقیقا نشون میداد داریم از چه نسخه استفاده می‌کنیم.اگر تا الان فکر میکردید که این اعداد دلبخواهی و یا رندوم بوده ، حتما با من همراه باشید تا بفهمیم این اعداد دقیقا از کجا میاد.هر دولوپری زمانی که پروژه اش به یک مرحله ثابت یا همون stable میرسه ، با استفاده از گیت میاد روی پروژه تگ ورژن میزنه و به کاربر ارائه میده برای استفاده ، حالا از این نقطه به بعد هر آپدیت جدیدی تو برنامش تو نسخه بعدی بعد از گذروندن تست های مختلف ارائه میشه.اینجوری کاربر هر بار بعد از گرفتن آپدیت جدید میتونه متوجه بشه که کجا دقیقا چه تغییراتی انجام شده.میرسیم به این بخش که اصلا چی میشه که برنامه ها نیاز به آپدیت پیدا میکنن؟؟اساسا تغییرات به چند دسته تقسیم میشن :1 - زمانی که باگی از سمت کاربر گزارش بشه و یا اصولا برنامه به باگ یا مشکل بخوره. خب باگ یا مشکل تو برنامه بخاطر اتفاقات خیلی مختلفی میتونه به وجود بیاد مثلا مشکل از سمت سرور یا تغییرات تو سورسی که استفاده میکنیم ازش و یا ... در هر صورت دولوپر باید بره سراغ کد و باگ ها رو برطرف کنه و نسخه بدون باگ جدید ارائه بده.2 - خیلی وقتها ممکنه یه کدی بنویسیم که درست باشه و کار کنه و خروجی درست تحویل بده. ولی بعد از مدتی که درخواست ها زیاد میشه پرمورمنس پروژه بیاد پایین ، در اون صورت مجبوریم برای بالاتر بردن بهره وری ساختار بخش هایی از کد رو تغییر بدیم یا در واقع بهینه سازی انجام بدیم بدون اینکه تغییری در ورودی و خروجی داشته باشیم.3 - نوع دیگه ای از تغییرات زمانی اتفاق میوفتن که که بخواهیم قابلیت های جدید که قبلا در اپلیکیشنمون وجود نداشتن رو اضافه کنیم. مثل تلگرام که بعد از مدتی قابلیتی مثل پاک کردن پیام ، لایک کردن پیام ها، تماس صوتی و ... رو اضافه کرد.برای تگ زدن روی پروژه ها ، اعداد بسته به نوع تغییری که انجام دادیم و تغییرات در ورودی و خروجی نهایی ، تغییر میکنن.عدد اول یا همون X  ماژور ورژن نام داره. این عدد زمانی عوض میشه و افزایش داره که تغییرات دولوپر ، باید عوض شدن  و تغییر کردن ورودی و خروجی نسخه قبلی باشه. یعنی با نسخه قبلی کانفلیکت داشته باشه و ساختار ها متفاوت باشه. مثلا تلگرام رو در نظر بگیرید. فرض کنید تلگرام قرار باشه تو نسخه بعدی کلا قابلیت چت گروهی رو حذف بکنه و فقط یک سری کانال باشه که کاربر مطلب بخونه. قطعا ساختار کد نسخه جدید  با نسخه قبلی سازگار نیست چون دیگه از سمت کاربر نمیتونیم درخواست ساختن گروه جدید داشته باشیم. پس  عدد اول از سمت چپ یا همون ماژور ورژن تنها زمانی تغییر میکنه که نسخه جدید با نسخه قبلی سازگار نباشه.عدد دوم یا Y مینور ورژن ، زمانی بزرگتر و دچار تغییر میشه ،‌که ساختار بخشی از برنامه تغییر کرده باشه اما باعث تغییر در ورودی و خروجی نداشته باشه در واقع با ساختار قبلی سازگار باشه. مثل اضافه کردم قابلیت تماس تصویری در تلگرام که بخش های قبلی دچار تغییر نشدن و مشکلی ندارن فقط یک بخش و قابلیت جدید اضافه شده.عدد سوم یا patch version ، تنها وقتی تغییر میکنه که برنامه به باگ خورده باشه و دولوپر فقط باگ رو برطرف کرده و نسخه جدید بدون باگ رو ارائه داده.با این اوصاف حالا دیگه میدونیم وقتی اولین نسخه از برناممون رو بخوایم ارائه بدیم باید چه چه تگ ورژنی براش باید بزنیم.  مثلا باید از &quot; 1.0.0 &quot; و یا &quot; v1.0.0 &quot; استفاده کنیم.راجع به v که اول اعداد گاهی میزارن باید بگم که یکجور لیبل محسوب میشه و مرسوم تر هست که ازش استفاده بشه.یک نوع لیبل دیگه که احتمالا دیگه باشین مثلا &quot; v1.5.2-beta &quot; در واقع بخش آخر یک لیبل برای نشون دادن این هست که نسخه ارائه شده یک نسخه بتا ست و نسخه نهایی نیست. گردآورنده مقاله : پرستو کشاورز هدایتی استاد : دکتر مریم حاجی اسمعیلی ، دکترای علوم کامپیوتر از دانشگاه کینگستون لندنDr.Maryam HajiesmaeiliPhD of computer science from Kingston university of LondonLinkedin </description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sun, 13 Mar 2022 16:15:31 +0330</pubDate>
            </item>
                    <item>
                <title>تاثیر مدرک تحصیلی بر دانش کاری</title>
                <link>https://virgool.io/@parastoohedayati1122/%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1-%D9%85%D8%AF%D8%B1%DA%A9-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%D8%A8%D8%B1-%D8%AF%D8%A7%D9%86%D8%B4-%DA%A9%D8%A7%D8%B1%DB%8C-iszvefj2wblf</link>
                <description>سلام دوستانتازگی ها میبینم که در محیط های کاری یا جلسات مختلف آدم هارو قبل اینکه از تخصصشون آگاه باشن بر اساس مدرک تحصیلی و دانشگاهی که درس خوندن قضاوت میکنن.قبل از اینکه شروع کنم باید بگم من شخصا اصلا مخالف درس خوندن و دانشگاه رفتن نیستم و اتفاقا بنظرم تاثیر زیاد و چشم گیری در دیدگاه ها داره.اما فکر میکنم قیاس شدن بر اساس اسم دانشگاه اصلا  معیار درستی نیست.کسی زحمت بیشتری میکشه و دانشگاه دولتی قبول میشه و به سختی درس میخونه و در برابر سختگیری اساتید صبوری میکنه و مدرک میگیره.شخصی هست که به هردلیلی وارد دانشگاه آزاد میشه و درس میخونه و فشار هزینه ها و سختیگیری هارو تحمل میکنه و مدرک میگیره.به عقیده‌ی من هر دو این افراد ارزشمند و تلاشگر هستن و نتیجه زحماتشون رو میگیرند.اما همونطور که میدونیم دانشجو ها فقط به این دو دسته تقسیم نمیشن.الان تو سال  1400 تقریبا همه افراد میتونن وارد دانشگاه بشن و تحصیل کنن.حتی افراد میتونن هزینه‌ی بیشتری کنن و تو پردیس دانشگاه های دولتی درس بخونن و مدرکشون رو به اسم اون دانشگاه دولتی بگیرن.خیلی ها دوری از شهر زندگی رو انتخاب میکنن و وارد دانشگاه های دیگه در شهر های اطراف میشن.و .... انتخاب های زیادی برای ورود به دانشگاه ها هست. خودمونی بگم چه درس خون باشی چه نباشی بالاخره اگه بخوای میتونی دانشجو بشی.مسئله اینه که آیا مطالعه داری؟ آیا تلاش برای یادگیری بیشتر و جدا از دانشگاه داری؟آیا اینکه فقط درسهات رو پاس بکنی و هیچی ازشون بلد نباشی مهمه؟ یا اینکه علاوه بر قبولی درک خوبی ازشون داشته باشی؟اصلا یه سوالی؟ همیشه از ما پرسیدن علم بهتر است یا ثروتاما سوال من اینه : سطح بهتره یا عمق؟ ترجیح میدی سطح بیشتری در اختیار داشته باشی یا عمق بیشتر؟به نظر من اگر علاقه به تخصصی داری ، زمانی در اون تخصص به مهارت میرسی که توش عمیق تر باشی! مثال بهتری میزنم : منِ سال اولیِ دانشگاه ، دانشجوی رشته &quot;پیاز شناسی&quot; در دانشگاه &quot;هاگوارتز &quot; ( به این دلیل که اهانت و جسارت به هیچ رشته و دانشگاهی نباشه این رشته و دانشگاه توسط نویسنده انتخاب شده ) که به شدت علاقمند به رشتم هستم!بعد از گذروندن تعدادی از درس ها و واحد ها بیشتر تصمیم میگیرم از این به بعد بیشتر خوش بگذرونم و شب امتحانی درس بخونم. و با همین روش درسهام رو پاس میکنم و با مدرک کارشناسی از دانشگاه خارج میشم. حالا اگر بخوام وارد محیط کار بشم تقریبا میشه گفت هیچ دانشی ندارم و در واقع مدرکم به هیچ دردم نمیخوره!! حالا در نظر بگیرید من همون دانشجوام اما روشم فرق میکنه ، با خودم میگم مطالب دانشگاه خیلی تئوریه بخاطر همین سعی میکنم یکم دنبال مقالات علمی بگردم و کنار درسم درک بهتری از رشتم برای خودم ایجاد کنم. حالا من با مدرک کارشناسی از دانشگاه خارج میشم ، طبیعیه که حرفه ای و متخصص نیستم اما مهارت بهتری نسبت به آدم قبلی دارم ، برای یادگیری مطالب جدید مشتاق تر و علاقه مند ترم و میشه گفت برای پیدا کردن کار مستعد تر.میخوام بگم درس خوندن و دانشگاه رفتن خوبه و واقعا کمک خیلی بزرگی به هرکسی در رفتار و شخصیت اجتماعی و دیدگاه بازتر و بهتری در مورد کار و رشته و علاقه‌ی هرکسی براش ایجاد میکنه.اما مسئله اینه که معیار اصلی نیست ، بنظرم معیار اصلی برای قیاس کردن تخصص افراد ، مهارتشون در کار ، علاقه به یادگیری ، قدرت حل مسئلشون و در آخر مدرک تحصیلیه.جا نندازم ، خیلی ها هستند که به هر دلیلی نتونستن وارد دانشگاه بشن و خودشون به صورت شخصی مطالعات زیادی دارن و به صورت خود خوان جلو رفتن . خیلی سطح سواد و درک بهتری دارن. گاها میشه گفت مهارتشون از افرادی که مدرک دارن بهتره. و این آدمها هم ارزشمند و تلاشگر هستن و به هم لایق.همینطور کسایی که در یک رشته تحصیل میکنن و مدرک میگیرن اما بعد خودشون تخصص دیگری رو پیش میگیرن و جلو میرن و موفق میشن.و خیلی راه های دیگه  که آدمها انتخاب میکنن و حتما دورمون زیاد دیدیم.میخوام بگم آدم ها رو در درجه اول بر اساس درک ذهنیشون و استعداد و مهارتشون قضاوت کنیم.نظر شما چیه؟ لطفا برام بنویسید.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Tue, 07 Dec 2021 22:34:27 +0330</pubDate>
            </item>
                    <item>
                <title>شبنگ یا همون shebang تو لینوکس دقیقا چیه؟</title>
                <link>https://virgool.io/@parastoohedayati1122/shebang-x2jocfrshy7t</link>
                <description>اگر لینوکسی باشید یحتمل بخش زیادی از کار هاتون رو داخل ترمینال انجام میدید.ممکنه فایل های مختلفی با فرمت های متفاوت داشته باشید مثل فایل های پایتون ، جاوا اسکریپت و یا ... و یا حتی اسکریپتی برای لینوکستون نوشته باشید با پسوند sh. ، برای اجرا کردن هرکدوم از این فایل ها نیاز هستش که اول مجموعه ای که قراره این فایل رو اجرا کنه رو بخونید و بعد اسم فایل رو بهش بدید مثلا :برای اجرا کردن فایل hi.sh که یک اسکریپت برای سیستم عاملمون هستش رو میخوایم اجرا کنیم:فایل اسکریپت ما فقط قراره یک جمله ای رو به کاربر نشون بده. همونطور که تو خط پایین میبینید فایل ما دسترسی اجرایی شدن یا همون execute شدن رو نداره. دسترسی های فایل ها به این صورت هست که ( کاراکتر اول رو کنار میزاریم چون برای نشون دادن نوع فایل هستش ) به  ترتیب ۳ تای اول برای صاحب فایل ، ۳ تای دوم برای همگروهی های صاحب فایل و در آخر ۳ تای سوم برای بقیه یوزهاست که میبینید هیچکدوم x ندارن. پس اول باید با یکی از دستورات زیر x رو اضافه کنیم:chmod  755  hi.sh
chmod  +x  hi.shرنگ فایل ما تغییر کرده و به یک فایل اجرایی تبدیل شده اما هنوز تبدیل نشده به چیزی که میخوایم!گفتیم برای اجرا کردن فایل ها باید مجموعه ای که وظیفه اجرا کردن فایل هارو به عهده دارن رو هم فراخوانی کنیم.یعنی الان برای اجرا کردن این اسکریپت هر بار باید بنویسیم:/bin/bash   hi.shدر اصل بش که وظیفه اجرا کردن اسکریپ هارو داره رو صدا زدیم و بهش اسم فایل رو دادیم. حالا مسئله اینه که چجوری به لینوکس بفهمونیم که فایلمون مربوط به کدوم بخش اجرایی هستش؟اینجاست که از shebang استفاده میکنیم. شبنگ یک خط کد هستش که ما به اول کد یا فایلمون اضافه میکنیم. و لینوکس با خوندن اون خط متوجه میشه که برای اجرا کردن این فایل باید سراغ کدوم مجموعه بره.برای فایل hi.sh به این صورت میشه :#!/bin/bashدر بعضی از زبان ها # نشونه ی کامنت هستش اما ترکیب  !#   برای لینوکس نشون دهنده ی شبنگ ( shebang ) هستش. بعد از این علامت آدرس مجموعه اجرا کننده رو میدیم و سیو میکنیم.حالا هربار که این فایل قراره اجرا بشه کافیه فقط آدرس فایل رو به ترمینال بگیم :./hi.shبا دستور بالا به ترمینال میگم که تو همین دایرکتوری که هستم فایل hi.sh رو اجرا کن. خود لینوکس با خوندن شبنگ اول کد متوجه میشه که باید با کدوم مجموعه اجراش کنه.دو شبنگ کاربردی رو براتون قرار میدم اما اگر با فایلی کار میکردید و شبنگ مورد نظرتون اینجا نبود کافیه سرچ کنید شبنگ و اسم زبان مورد نظرتون تو سایت های مختلف مثل استک اورفلو حتما میتونید پیداش کنید.اسکریپت های لینوکس :#! /bin/bashاسکریپت های پایتون :#! /usr/bin/python
#! /usr/bin/python3گاهی ممکنه که این آدرس ها در سیستم شما کار نکنن دلیلش اینه که مثلا پایتون شما تو آدرس دیگه ای نصب شده باشه. این مورد خیلی کم ممکنه پیش بیاد اگر که شما خودتون فایل هارو دستکاری کرده باشید و جا به جا کرده باشین.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sat, 07 Aug 2021 16:21:48 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با کتابخونه Numpy</title>
                <link>https://virgool.io/digimaster/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D9%88%D9%86%D9%87-numpy-rkwxbgbveiaq</link>
                <description>اینجا میخوایم با یکی از کتابخونه های قدرتمند در زمینه ریاضیات آشنا بشیم.کتابخونه نامپای Numpy دارای ابزار ها و متود های توانمند در ریاضیات هستش . در زبان های پایتون ، R و حتی در سی پلاس پلاس نیز استفاده میشه. البته ما اینجا فعلا در خصوص نامپای در پایتون حرف میزنیم.از نامپای حتی در برنامه هایی که به ریاضی مربوط نیست هم میشه استفاده کرد. علتش جنس یا نوع داده هاست. کاربرد های نامپای و نحوه ی نصباین کتابخونه قدرتمند در حوزه های مختلفی مثل یادگیری ماشین و تحلیل داده ها مورد استفاده قرار میگیره.برای نصب نامپای در لینوکس در زیر را در ترمینال و در ویندوز دستور زیر را در صفحه cmd وارد میکنید :pip install numpy نوع داده ها یا همون تایپ داده هایی که با استفاده از نامپای تعریف میشن از نوع array یا آرایه ها هستن. اگر برنامه نویس پایتون باشید حتما در مورد لیست ها شنیدید. لیست ها در پایتون با براکت یا [   ] مشخص میشن. و آرایه ها با (   [    ]   ) array تعریف میشن. حالا چرا از لیست ها اسم بردیم چون از لحاظ ظاهری شبیه به هم هستن با هم قیاس میشن اما خوبی استفاده از آرایه ها در داده های با حجم بالا و کلان داده ها مشخص میشه. مزیت نامپای در متود هایی هستش که در اختیار ما قرار میده.تفاوت آرایه ها با لیست ها چند نکته مهم که نباید فراموش کنیم.در آرایه ها تایپ همه ی عناصر باید یکسان باشه یعنی اگر به یک آرایه هم عدد بدیم و هم یک کلمه ، نامپای به صورت خودکار تایپ تمام داده ها رو string در نظر میگیره و در این صورت عملیات ریاضی روی اون آرایه ناکارآمد میشه. اما در لیست ها میتونیم عنصر هایی با تایپ های مختلف قرار بدیم. در نامپای  طیف گسترده ای از متود و روش های سریع و کارآمد تر برای ایجاد آرایه و دستکاری داده های عددی و عملیات ریاضی ، وجود داره.در کل آٰرایه های نامپی بسیار سریع تر و فشرده تر از لیست ها هستن. حافظه کمتری مصرف میکنن و استفاده از آنها راحت تر است. سرعت کار را بالا میبره. مکانیسم تعیین انواع داده را فراهم میکنه که در نهایت باعث بهینه تر شدن برنامه میشه. به مثال زیر نگاه کنید. ما یک لیست به اسم L و یک آرایه به نام a ساختیم که هر دو دارای مقادیر یکسان 0 تا 5 هستن.میبینید که در لیست ها متودی که بتونیم مجموع مقادیر رو بدست بیاریم وجود نداره و برای این کار باید یک حلقه بنویسیم که برای هر عنصر داخل لیست بیاد مقدار رو با قبلی جمع کنه. اگر برنامه ی طولانی و بزرگی داشته باشیم این کار کاملا بیهوده ست. در کلان داده ها با این روش برنامه به شدت کند خواهد شد.تو تصویر بالا میبینید ، a یک آرایه با مقادیر صفر تا 5 هست که با استفاده از نامپای ساخته شده، خود نامپای این قابلیت رو برامون تعریف میکنه که با استفاده از متود sum که در واقع یک function هستش مجموع مقادیر رو پیدا کنیم. البته باید اضافه کنم که داخل خود پایتون یک متود sum وجود داره که سینتکس اون به صورت sum ( L ) هست که میتونیم لیستمون رو بهش بدیم تا مجموع مقادیر رو به ما برگردونه. اما اینجا بحث در مورد متود هایی هست که اختصاصی برای لیست ها و آرایه هاست. و تابع مجموع فقط یک مثال برای نشون دادن تفاوت بین متود های این دو تاست.متود های دیگری هم برای میانگین ، ماکزیمم ، مینیمم وجود داره با اسامی min ، max ، mean که همگی فانکشن هستن. در لیست ها برای پیدا کردن هر کدوم از مقادیر بالا باید یک حلقه بنویسیم که همونطور که بالاتر گفتم کلی از زمان و سرعت کار ما کم میکنه.با استفاده از نامپای ما میتونیم آرایه های چند بعدی تعریف کنیم :به عکس نگاه کنید ، ما دو آرایه با اسامی array1 و array2 تعریف کردیم که عناصر هر دو باهم یکسان و از 0 تا 99 هستش. آیا این دو آٰرایه باهم برابرند؟ خیراگر با دقت به array1 نگاه کنید متوجه تفاوت ابعاد خواهید شد که این آٰرایه دارای ابعاد 10 در 10 است اما array2 آٰرایه یک بعدی است.این قابلیت به ما کمک میکنه تا داده هامون رو مرتب کنیم و اگر نیاز بود به ماتریس تبدیل کنیم. متود های قدرتمندی برای ماتریس ها در نامپای وجود داره. محاسبه دترمینان ، ماتریس معکوس ، مجموع قطری ماتریس و حتی حل معادلات ماتریس خطی یا اسکالر خطی و .... نمونه هایی از توانایی نامپای در ماتریس هاست.آرایه هایی که با استفاده از نامپای میسازیم رو میتونیم به حالت های مختلف دستکاری کنیم و تغییر بدیم حتی به چند زیر آرایه تبدیل کنیم یا برعکس چند آرایه رو بهم بچسبونیم.کلی کار های خفن دیگه میتونیم با نامپای انجام بدیم مثل حل انواع معادلات اعم از مثلثاتی و .... ، رسم نمودار های مختلف مثل هیستوگرام و ... برای یادگیری این کتابخونه خفن کلی ویدیو و داکیومنت های مختلف وجود داره که اگر از سورس های انگلیسی استفاده میکنید، یکی از تمیز ترین داکیومنت های موجود داکیومنت خود سایت نامپای هست :Numpy documentation اگه شما هم منبع خوبی برای یادگیری مشناسید حتما معرفی کنید.موفق باشید.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Mon, 02 Aug 2021 13:00:06 +0430</pubDate>
            </item>
                    <item>
                <title>اهمیت دونستن الگوریتم و فلوچارت ها</title>
                <link>https://virgool.io/digimaster/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D8%AF%D9%88%D9%86%D8%B3%D8%AA%D9%86-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%88-%D9%81%D9%84%D9%88%DA%86%D8%A7%D8%B1%D8%AA-%D9%87%D8%A7-s07pamf0cv74</link>
                <description>اگر رشته‌ی درسیتون علوم کامپیوتر و یا مهندسی کامپیوتر باشه حتما اسم الگوریتم و فلوچارت به گوشتون خورده. اگر نمیدونید اینها چه هستن و چه کاربردی دارن با من این مقاله رو پیش بیاید.در واقع الگوریتم مسیر حل مسئله و فلوچارت نحوه‌ی اجرای هر مرحله رو نشون میده. تو زندگی روزمره ما هر روز به دفعات زیاد از الگوریتم ها استفاده میکنیم. به فرض چای دم کردن ، همیشه اول کتری رو پر از آب میکنیم و میزاریم آب به دمای جوش برسه. و میدونیم مسیر بعدی ریختن چای خشک داخل قوری و اضافه کردن آب جوش ، در آخر هم میزاریم چای دم بکشه.هیچوقت اول چای و آب نمیزاریم بعد تازه بزاریم جوش بیاد! در واقع ما تو پاراگراف بالا الگوریتم چای دم کردن رو باهم گفتیم. ما این الگوریتم رو حفظیم و یجورایی تو ذهن ما حسابی جا گرفته دیگه به تک تک مراحل فکر نمیکنیم. به روزمره زندگیتون فکر کنید؟ چه کارهایی رو روزانه طبق یک مراحل مشخص انجام میدین؟ممکنه خیلی چیزها به ذهنتون رسیده باشه. اما قطعا سوال پیش میاد که تو برنامه نویسی به چه کارمون میاد؟برنامه‌ ای رو تصور کنید که از بخش مختلفی ساخته شده.مثلا بازی سنگ کاغذ قیچی !  تمامی برنامه نویس ها از مبتدی تا حرفه ای قبل از نوشتن سورس کد ، به صورت خود آگاه و یا ناخود آگاه مسیری که قراره کد ها طی بکنن رو ذهنشون مرور میکنن ، حتما خود شما هم بار ها این کارو بدون اینکه بدونید انجام دادید اما هیچوقت به اهمیت این کار فکر کردین؟بیاید باهم الگوریتم بازی سنگ کاغذ قیچی رو بنویسیم :۱. اول از همه باید دو کاربر تعریف کنیم که بازی کنن.۲. بعد باید برای هرکدوم از بازیکن ها یک شمارنده یا counter تعریف کنیم که امتیاز هارو برای ما بشمره. ۳.تو مرحله سوم باید برای کامپیوتر بگیم که بازیکنها چند دور قراره بازی کنن مثلا ۳ یا ۵ دور. ۴. در مرحله چهارم باید برای برنامه تعریف کنیم که امتیاز ها به چه صورت تعریف میشن ، مثلا اگر بازیکن اول سنگ آورد و بازیکن بعدی قیچی امتیاز برای بازیکن اول محاسبه میشه و شمارنده بازیکن اول رو بعلاوه یک میکنیم. پس اینجا باید تک تک احتمالات بررسی کنیم که در هر حالت به کدوم بازیکن امتیاز بده. و همینطور اگر هردو مقدار یکسان وارد کرده بودن به هیچکدوم امتیازی اضافه نکنه.۵. حالا میایم به تعداد دور هایی که تعریف کردیم ، از بازیکن ها وروری میگیریم و به کامپیوتر میگیم بره به مرحله چهارم و بررسی کنه تو هر دور امتیاز برای کدوم بازیکن محاسبه میشه.۶ . بعد از پایان همه ی دور ها برنامه ما باید شمارنده هارو بررسی کنه ، باهم مقایسه کنه و شمارنده بزرگتر رو پیدا کنه.۷. امتیاز هر بازیکنی بیشتر بود برای ما چاپ کنه که اون بازیکن برنده شده.۸ . اگر در پایان دور ها امتیاز هر دو مساوی بود، چاپ میکنیم مساوی شدید و بعد میریم مرحله سوم تا دوباره بازی کنن که بتونیم برنده مشخص کنیم.ما مراحل نوشتن بازی سنگ کاغذ قیچی رو مشخص کردیم، میبینید که کاملا ساده و بدون کدنویسی اینکار انجام میشه. حالا کمکی که میکنه چیه؟ ما اومدیم بخش بخش برناممون رو مشخص کردیم و میدونیم تو هر مرحله باید دنبال چه سورس کدی بگردیم و چی بنویسیم.یجورایی یک زیرساخت برای کدمون آماده کردیم. اگه برای هر برنامه ای که مینویسیم از این روش استفاده کنیم دیگه از اسم پروژه های بزرگ نمیترسیم چون هر برنامه ای که از ما بخوان، اونو به صورت زیر برنامه های کوچکتر در میاریم و تیکه تیکه بخش های مختلف رو مینویسیم و در آخر به هم وصلشون میکنیم.مزایای الگوریتم نویسی برای برنامه ها همینه که اولا مراحل مرتب و منظم جلو میرن و در نهایت ما یک برنامه و کد تمیز خواهیم داشت. ممکنه پروژه ای بهمون پیشنهاد بشه که ما تا حالا مشابهش رو انجام ندادیم اما مطمئنا بخش های کوچیکی از کد رو تو تمرینهامون انجام دادیم ،‌اگر الگوریتم پروژه رو بنویسیم پیدا میکنیم که دقیقا کدوم بخش ها کد نویسی برامون ساده تر و تو کدوم بخش ها ممکنه به مشکل بخوریم.با این راه حل در عین اینکه کد تمیزی خواهیم داشت ، سرعت کارمون هم بالا میره و این برای پروژه های فوری و مهم خیلی عالیه!بریم سراغ فلوچارت یا روند نما یا نمودار جریا کار !نمونه بالا رو نگاه کنید ، باید با استفاده از الگوریتمی که داریم میتونیم نموداری مشابه بالا رسم کنیم که روند کار رو کامل نشون میده.همونطور که مشخصه شروع و پایان برنامه با شکل دایره نمایش داده میشه ، دایره‌‌ی start شروع برنامه ی ماست.با استفاده از شکل متوازی الاضلاع گرفتن ورودی را نمایش می‌دهیم. حالا روی ورودی هایی که گرفتیم یک سری عملیات هایی انجام میدیم و دستور یا همون Query وارد میکنیم. این بخش با شکل مستطیل نمایش داده شده. بعد نتیجه ی دستورات رو داخل یک دستور شرطی فرستادیم ( دستور شرطی با لوزی نمایش داده میشه ) به این صورت که اگر شرط برقرار بود خروجی رو چاپ کنه و برنامه رو به پایان برسونه و اگر شرط برقرار نبود برگرده و دوباره ورودی بگیره و دوباره دستورات رو اجرا کنه تا دوباره به مرحله شرطی برسه.برای نمایش دادن خروجی در فلوچارت از چهارضلعی منحنی استفاده میکنیم و در آخر برای پایان برنامه همونطور که گفتم از دایره استفاده میکنیم که در نمونه بالا دایره‌ی End نشان دهنده  پایان برنامه ست.الگوریتم ها و فلوچارت ها یک مسئله آکادمیک و ساده ست. باید بگم بیشتر کاربردشون برمیگرده به زمان ارائه نهایی پروژه . حتما میدونید که میگن کامنت مناسب نوشتن در کد ها یک نشونه ی کد خوب محسوب میشه.اگر فریلنسر هستید ، پروژه ای برای شخص یا یک شرکت انجام میدید حتما باید بتونید توضیح بدید که بخش بخش برنامه‌‌ی شما دقیقا چه کاری انجام میده که با استفاده از الگوریتم و فلوچارت این کار به صورت ساده ای قابل انجام هستش ، باعث میشه برنامه ی بهینه تر و دقیق تری داشته باشید. در واقع توانایی ارائه دادن پروژه از مهارت های یک برنامه نویس خوب به شمار میاد.اول صحبتمون گفتم که روزمره استفاده زیادی از الگوریتم ها در زندگی میکنیم یعنی اگر برنامه نویس هم نباشید حتما برای ارائه پروژه ، پایان نامه ، و دیگر کار هایی که انجام میدید از فلوچارت و الگوریتم بسیار میتونید استفاده کنید.اطلاعات آکادمیک بخش کوچکی از تجربیات و یادگیری شماست، چیزی که شما در حین کار کردن یاد میگیرد خیلی فرا تر از تحصیلات آکادمیک هستش ، اما دونستن این اطلاعات برای ساختن زیرساخت قوی بسیار بسیار مفید و کاربردی هستش.امیدوارم از حرفامون استفاده خوبی کرده باشید.روزتون خوش.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Wed, 28 Jul 2021 12:37:24 +0430</pubDate>
            </item>
                    <item>
                <title>استک اورفلو (stack overflow) در یادگیری برنامه نویسی</title>
                <link>https://virgool.io/digimaster/%D8%A7%D8%B3%D8%AA%DA%A9-%D8%A7%D9%88%D8%B1%D9%81%D9%84%D9%88-stack-overflow-%D8%AF%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-suiax0xhzwoi</link>
                <description>فرقی نمیکنه اگه در مسیر یادگیری برنامه نویسی باشید یا یک برنامه نویس با تجربه ، در هر دو حالت استک اورفلو میتونه یکی از بهترین همراهان شما باشه. باهم بررسی میکنیم که چرا !استک اورفلو یک سایت پرسش و پاسخ در سراسر دنیاست. با هر زبانی که کار میکنید مثل سی پلاس پلاس ، پایتون ، جاوا ، جاوا اسکریپت و یا ... فرقی نداره شما بازهم ممکنه نیاز پیدا کنید به stack overflow !در حین برنامه نویسی ( تاکید میکنم در هر سطحی که هستید ) ممکنه گاهی به باگ هایی برسید که چیزی ازش نمیدونید. راه های متعددی وجود داره برای پیدا کردن جواب ، مثلا میتونید از یک نفر بپرسید یا تو سایت های مختلف ایرانی و خارجی بگردید و یا از استادتون سوال کنید و به سورس آموزشیتون سر بزنید.اما اگر کسی در دسترسمون نباشه چی؟ گشتن سایت های مختلف زمان بیشتری ازمون میگیره و گاها سوالمونو بین تبلیغات ها گم میکنیم.اینجور مواقع میتونیم بریم سراغ استک اورفلو !ما هر سوالی که داشته باشید میتونیم اونجا بنویسیم ، همینطور میتونیم بخشی از کدمون که باگ داره رو اضافه کنیم . به عکس زیر دقت کنید: شخصی در مورد تبدیل فایل جوپیتر به پایتون سوال کرده و همونطور که مشخصه برای این سوال ۱۳ جواب از اشخاص مختلف وجود داره.حالا شخصی که سوال داشته میتونه چند راه حل مختلف رو تست کنه تا بهترین نتیجه رو پیدا کنه.یعنی هر بار که سوالی داریم باید بریم ثبت کنیم و منتظر جوابها باشیم؟ خیر !باگ ها تکرار میشن! یعنی وقتی به مشکل میرسید احتمال خیلی زیاد قبل از شما یک نفر بهش رسیده و جواب رو پیدا کرده پس با سرچ کردن میتونیم از بین سوالات قبلی راه حلی که میخوایم رو پیدا کنیم:میبیند که من سوالم رو سرچ کردم و قبل از من ۳۱۱ نفر این سوال رو پرسیده بودن و من میتونم با یه گشتن کوتاه جوابمو پیدا کنم.استک اورفلو دیگه چه کمکی میتونه به من بکنه؟این سایت به صورت لحظه ای آپدیت میشه و سوالات جدید وارد سایت میشن ، میتونیم اگر جوابی رو بلدیم برای بقیه به اشتراک بزاریم. با هر بار جواب دادن stack overflow برای ما یک امتیازی تعیین میکنه. با توجه به جوابمون اگر دقیق تر و درست تر باشه امتیاز ها فرق میکنند.به یوزر زیر نگاه کنید :با توجه به فعالیت ها و پرسش و پاسخ هایی که انجام داده تعدادی امتیاز جمع کرده که بر اساس اونها سایت براش یک سری مدال تعریف کرده که نشون میده چه تعداد از جوابهاش عالی ، خوب و ... بودند. و یا کدوم جوابها و سوالها بازخورد بهتری از بقیه کاربر ها داشتند.نتیجه ی این امتیاز ها کجاست؟ بر اساس امتیاز ها ، به کاربر پیشنهاد کار میشه!تو سراسر دنیا شرکت های مختلف از کوچیک تا بزرگ آگهی استخدام تو stack overflow قرار میدن که وقتی درخواست میزنین مسئولین استخدام اون شرکت میتونن امتیاز های شما رو معیار قرار بدن برای انتخاب.آگهی های استخدام داخل و خارج ایران فعال هستند. حتی میتونید تو ساعت های خالی و آزادتون گشت و گذاری تو سایت داشته باشید ، سوال و جواب های بقیه رو بخونید و مطالب جدید و تازه ای یاد بگیرید.برنامه نویسی دنیای بزرگ و گسترده ای داره ، برای هر الگوریتمی که دارید روش های متفاوتی از کد نویسی هست که بسته به نیازتون میتونید بهترینشونو انتخاب کنید.برای عضویت تو stack overflow میتونید به راحتی از ایمیلتون استفاده کنید و ثبت نام خیلی ساده ای داره. چه بهتر که برنامه نویس ها از کل دنیا بتونن از تجربیات هم استفاده کنن و محدودیتی تو یادگیری وجود نداشته باشه. اینجوری قطعا میتونیم اطلاعات بیشتری داشته باشیم و تو دنیای بزرگ برنامه نویسی رشد کنیم.موفق باشید.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sat, 24 Jul 2021 16:41:38 +0430</pubDate>
            </item>
                    <item>
                <title>گپی در مورد تحلیل داده ها</title>
                <link>https://virgool.io/@parastoohedayati1122/%DA%AF%D9%BE%DB%8C-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-gyvhpvjsulie</link>
                <description>دوستان سلام  امروز میخوام راجع به موضوعی صحبت کنم که تا به حال کمتر ازش شنیده باشین ،  &quot; تحلیل داده ها &quot; .تحلیل داده  به فرآیند جمع آوری و تجزیه و تحلیل داده ها، مدلسازی و بهینه سازی هستش که برای پیدا کردن اطلاعات سودمند و مفید برای تصمیم گیری درست ، گفته میشه. و اهمیت بسیار زیادی داره. امروزه در علوم مختلفی مثل اقتصاد ، علوم پزشکی ، بازاریابی و ... استفاده میشه.در حقیقت کار به صورت جمع آوری داده ها و مدلسازی برای اونهاست. باهم یک مثال کوچیک از یکی از کاربرد های تحلیل داده در کسب و کار ها میزنیم تا با فرآيند کار آشنا بشید.یک فروشگاه اینترنتی در نظر بگیرید که تازه شروع به کار کرده و تعدادی محصول برای فروش داخل سایت قرار داده. حالا به دنبال پرفروش ترین و محبوب ترین کالاها برای کاربرهای اینترنت میگرده تا محصولات جدیدی که قراره به لیست فروشش اضافه بشه ، سود خوبی برای کارش داشته باشه.اینترنت بسیار فضای گسترده و بزرگیه و هرچقدر جلو تر میریم تعداد کاربر ها هرروز بیشتر از قبل میشه، پس اگر بخوایم به صورت دستی در اینترنت و فروشگاه ها بچرخیم تا پیدا کنیم چه محصولی با چه برندی میتونه محصول محبوب فروشگاه بشه ، تقریبا روز ها و ماه ها و ساعتها از ما زمان میگیره. درصد خطا بالاست و در تمام مدتی که مشغول جمع کردن اطلاعات هستیم تغییرات زیادی تو داده های قبلی اتفاق افتاده باشه.راه حل چیه؟استفاده از ابزار های تحلیل داده ، به این صورت که برنامه ی ما اول در سطح اینترنت اطلاعات رو جمع آوری میکنه. در مراحل بعدی داده های جمع آوری شده پاکسازی، ساماندهی شده و آماده برای تحلیل و بهینه سازی هستن.پاکسازی داده ها یعنی بیایم اطلاعاتی که با توجه به هدفمون جمع کردیم رو از اطلاعاتی که ممکنه به کارمون نیاد و بدردمون نخوره رو پاک کنیم. مثلا یک لیستی از افراد جمع کردیم که شامل اسم و فامیلی و سن و شماره تماس و شغل و حقوق ، محل زندگی ، تعداد خواهر و برادر ها ، تعداد فرزندان و ... هستش و ما میخوایم نموداری بسازیم از افراد که نشون بده درآمد هر شغل در ماه و سال چقدره و باهم مقایسه کنیم.میبینید که یک سری اطلاعات داریم  که به درد ما نمیخوره مثل تعداد خواهر و برادر ها و یا تعداد فرزند ها پس میایم این بخش هارو از دیتامون پاک میکنیم. در واقع داده ای که داریم رو پاکسازی میکنیم.ساماندهی شدن داده ها هم یعنی مرتب کردن و لیست کردن داده ها در یک فرمت مشخص. برگردیم سر مثال اصلیمون! حالا داده ی ما آمادست! باید نشون بدیم که در اینترنت برای هر نوع کالا با هر برندی چقدر فروش داشتیم، چند نفر راضی و چند نفر ناراضی بودند ، محبوب ترین، پر فروش ترین، گرون ترین ، ارزون ترین کالا در فروشگاه های اینترنتی رو روی یک نمودار مصور سازی میکنیم.حالا کسی که مسئول یا رئیس فروشگاهمون بود ، با دیدن نمودار و نتای مدل ساخته شده متوجه میشه که با فروش کدوم محصول میتونه سود بهتری داشته باشه.متوجه مسیر کارمون شدین؟ مرحله اول :  &quot;انتخاب هدف&quot; یعنی مشخص کنیم که دقیقا کجا به دنبال چه چیزی هستیم. مرحله دوم : &quot;جمع آوری داده ها &quot; مرحله سوم : &quot;ساماندهی داده ها&quot; مرحله چهارم :  &quot;پاکسازی داده ها&quot;مرحله پنجم : &quot; تجزیه و تحلیل&quot; برای درک کردن داده هاست و با اعمالی مثل مصور سازی گرافیکی یا رسم نمودار انجام میشه.مرحله ششم‌ : &quot; مدلسازی &quot; برای داده ها مدلی ساخته می شه تا بهینه ترین حالت ممکن رو مشخص کنه.مرحله هفتم : &quot; مشخص کردن و اعلام نتایج مدلسازی &quot;ما باهم یک مثال خیلی ساده و کوچیک بررسی کردیم. اما تحلیل داده کاربرد های بیشتر و بزرگتری در یادگیری ماشین و هوش مصنوعی داره.اگر مطلب رو دوست داشتید علاقه داشتید بیشتر در مورد خود تحلیل داده و ماشین لرنینگ و نحوه یادگیریشون صحبت کنیم برام توی نظرات بنویسید.خیلی خوشحال میشم از اینکه نظراتتونو درباره ی این موضوع بدونم. پس حتما برام به اشتراک بزارید.روزتون بخیر رفقا خوش باشین.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Wed, 21 Jul 2021 23:40:51 +0430</pubDate>
            </item>
                    <item>
                <title>پایتون و virtual environment ها</title>
                <link>https://virgool.io/@parastoohedayati1122/%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%88-virtual-environment-%D9%87%D8%A7-z4ked27tpbfs</link>
                <description>یکی از دلایل محبوبیت زبان پایتون در بین کاربر ها دارا بودن کتابخونه های متعدد برای کاربرد های مختلف هستش.هر برنامه ای که مینویسیم از کتابخونه های مختلف استفاده میکنیم که با توجه به سیستم ما و البته نیازمون ممکنه ورژن های متفاوتی از هر ابزار و کتابخونه رو انتخاب کنیم.آیا برنامه‌ی ما فقط قراره روی سرور و سیستم خودمون اجرا بشه؟ و آیا روی سرور ما فقط قراره یک برنامه اجرا بشه؟  اگر بخواهیم از چند نسخه مختلف یک کتابخونه برای چند برنامه استفاده کنیم که همه ی برنامه ها قراره روی یک سرور اجرا بشن ، باید دقیقا چیکار کنیم؟جواب استفاده از virtual environment هاست. حالا اصلا چی هست؟ ماشین مجازی و یا virtualenv ها، فضایی رو در اختیار ما قرار میده که بتونیم یک پکیج از برنامه ای نوشتیم و کتابخونه های مورد نیاز درستش کنیم. و در نهایت اون پکیج روی سرور اجرا بشه.فرض کنید یک برنامه قراره با یکی از نسخه های جنگو و برنامه ی دیگه ای قراره با نسخه دیگه ای از جنگو اجرا بشه. تکلیف سرور چیه؟ باید کدوم نسخه جنگو نصب بشه؟خب برنامه اول رو در نظر میگیریم که نیاز به جنگو نسخه ۲ داره. باید براش یک ماشین مجازی بسازیم.تو این ماشین مجازی دقیقا چه چیز هایی قرار میگیره؟ بریم سراغ پروژمون تا جوابو پیدا کنیم! یک کد پایتون داریم که از جنگو ۲ استفاده میکنه. یک دایرکتوری یا فولدر درست میکنیم و فایل برناممونو داخلش قرار میدیم.بعد با استفاده از دستور زیر در ترمینال یک ماشین مجازی برای پروژمون ایجاد میکنیم.اول باید وارد دایرکتوری ای بشیم که فایل پروژمون اونجاست بعد دستور زیر رو وارد میکنیم :virtualenv  &lt; virtual_name &gt;اگر خروجی دستور به صورت بالا باشه یعنی ماشین مجازی ما ایجاد شده که داخلش یک سری فولدر جدید ایجاد شده که تنظیمات پایتون و کتابخونه ها داخل اون قرار میگیره. حالا باید واردش بشیم تا ابزار هایی که میخوایم نصب کنیم:source  &lt; virtual_name &gt;/bin/activateحالا وارد ماشین مجازی شدیم و باید کتابخونه هایی که نیاز داریم رو نصب کنیم، وقتی ماشین مجازی درست میکنیم pip به صورت پیشفرض داخلش وجود داره. اگر هم نبود نگران نباشید به راحتی میتونیم نصبش کنیم.sudo apt install python-pipبا دستور pip کتابخونه هایی که میخوایم رو نصب میکنیم:pip install &lt; library_name &gt;
pip install  django == 2 
که اینجا دقیقا نسخه ۲ جنگو  رو میخواستیم و نصب کردیم.بعد از اینکه کار نصب کتابخونه ها تموم شد میتونیم با دستور pip freeze ببینیم چه کتابخونه هایی و با چه ورژن هایی در ماشین مجازیمون داریم. و همینطور میتونیم خروجی رو داخل یک تکست فایل قرار بدیم تا وقتی ماشین مجازی رو در اختیار کسی قرار دادیم به راحتی بتونه کتابخونه های مورد نیاز رو ببینه.pip freeze &gt; libraries.txtبعد از پایان کارهامون با دستور deactivate میتونیم ماشین مجازیمونو ببندیم و ازش خارج بشیم.deactivateدر نهایت میتونیم از این دایرکتوری یک فایل فشرده ( زیپ فایل یا ... فرقی نداره ) درست کنیم و در اختیار مدیر سرور قرار بدیم که میتونه پکیج مارو اجرا کنه بدون اینکه ورژن کتابخونه های رو سیستمش رو تغییر بده.حتی میتونیم چند برنامه که برای خودمون داریم روی چند ماشین مجازی قرار بدیم که بتونیم هرکدوم رو تک تک اجرا کنیم.اگر بخواهیم یک برنامه رو داخل ماشین مجازی اجرا کنیم اول مثل بالا وارد ماشینمون میشیم و بعد کوئری زیر رو وارد میکنیم. خود ماشین کتابخونه های نصب شده روی ماشین رو چک میکنه و برنامه رو اجرا میکنه:python  myproject.pyدر کل virtual environment ها مبحث بسیار ساده و بسیار بسیار ساده ای هستش که حتما بلد بودنش به کارتون میاد.خوش باشید.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Tue, 20 Jul 2021 16:07:44 +0430</pubDate>
            </item>
                    <item>
                <title>گیت چیه و کجا به کارمون میاد؟</title>
                <link>https://virgool.io/javacup/%DA%AF%DB%8C%D8%AA-%DA%86%DB%8C%D9%87-%D9%88-%DA%A9%D8%AC%D8%A7-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1%D9%85%D9%88%D9%86-%D9%85%DB%8C%D8%A7%D8%AF-frbn1ylu1fy2</link>
                <description>فرض کنید شما مدیر یک پروژه هستید و تعدادی برنامه نویس تحت نظارت شما همزمان روی یک پروژه کار میکنن. یک هفته از شروع کار گذشته و میخواین کد هایی که برنامه نویس ها نوشتن رو باهم merge کنید. چه مشکلاتی ممکنه داشته باشید؟ حجم کد ها بالا باشه و برای ترکیب کردن اونها به صورت دستی زمان زیادی نیاز باشه که البته احتمال خطا نیز وجو داره ،و یا بخش های مختلفی از چند کد نوشته شده توسط برنامه نویس ها باهم تطابق نداشته باشن و مسائلی از این قبیل...گیت نرم افزار و سیستم کنترل ورژنی هستش که مشکلاتتون رو حل میکنه. در واقع وقتی یک پروژه رو شروع میکنید به گیت دستور میدید که این پروژه رو تحت نظارت خودش قرار بده . بهتون این امکان رو میده که چند شاخه یا به اصطلاح fork برای پروژه تعیین کنید که هر شخص رو شاخه خودش مشغول کد زدن باشه. و هروقت نیاز بود مدیر پروژه با کمک گیت میاد شاخه های مختلف رو باهم merge میکنه.تا اینجا همه چیز معمولیه پس کاربرد اصلیه گیت کجاست؟هر کامیتی (commit) که داخل گیت انجام بشه داخل تاریخچه یا بهتر بگم git log ‌ به صورت اتوماتیک ذخیره میشه ، اونوقت اگر جایی از کد ها تطابق نداشته باشه باهم و یا تغییری تو برنامه ایجاد شده باشه میتونیم بریم سراغ تاریحچه و چک کنیم این تغییر کی و توسط کی انجام شده که اگر مشکلی بود حل کنیم.گیت عمل merge کردن کد ها و یا همون شاخه هارو با دستور git merge به صورت خودکار انجام میده و زمانی به ما ارور نشون میده که ببینه حداقل دو نفر دو تغییر متفاوت در یک خط از کد ایجاد کردن و چون نمیدونه کدوم تغییر باید ثبت بشه به ما ارور نشون میده که بتونیم تغییر نهایی رو براش تعریف کنیم.یکی از جالب ترین ویژگی های گیت به نظرم قابلیت ورژن گذاشتن روی برنامه ست. یک پروژه ای آماده شده و در حال حاضر دارن ازش استفاده میکنن حالا اگر بعد از مدتی بخوایم یک نسخه جدید از برنامه رو آماده کنیم چیکار کنیم که نسخه قبلی از دسترس خارج نشه؟با استفاده از گیت شما میتونین تو هر مرحله ای که میخواین برای برنامتون یک برچسب بزارید فرضا بگید این نسخه ۱.۱.۱ از برنامه ی منه که میخوام رو سرور اجرا بشه. بعد از این برچسب گذاری اگر تغییری در کدتون ایجاد کردید، باز هم به سرور بگید نسخه ۱.۱.۱ رو اجرا کن. گیت میاد کد برنامه رو تا جایی که شما با برچسب زدن براش تعیین کرده بودین رو حفظ میکنه و همون برنامه ی قدیمی رو اجرا میکنه تا زمانی که بهش بگین این تغییرات جدید نسخه ۱.۱.۲ برنامه منه. نکته اینه حتی اگه به طور ناگهانی مشکلی تو نسخه جدیدتون پیش بیاد میتونید به گیت بگید نسخه قبلی رو اجرا کن و اینطوری نسخه ۱.۱.۱ رو سرور اجرا میشه تا وقتی مشکل نسخه جدید حل بشه.شاید براتون سوال پیش بیاد که آیا گیت فقط برای پروژه های بزرگ و کار های تیمی لازمه؟ نه !گیت امکانات خوبی برای منظم و مرتب کردن کد های شما داره و شما میتونید از گیت برای پروژه های شخصیتون هم استفاده کنید. نکته مهم دیگه اینکه گیت فقط برای برنامه نویسی نیست شما میتونید از اون برای پروژه خودتون مثلا نوشتن مقاله ها استفاده کنید. بعد از مدتی پیشرفت پروژتون رو با گیت بررسی کنید.بخاطر تشابه اسمی که وجود داره بعضا پیش میاد که افراد گیت و گیت هاب رو اشتباه میگیرن ، اما گیت هاب تنها یک هاست هستش که برای اشتراک گذاری پروژه ها استفاده میشه و البته که از گیت استفاده میکنه اما دقیقا خود گیت نیست.در حال حاضر بلد بودن گیت نکته مثبتی تو رزومه‌ی کاری شماست.آموزش های متعددی هم براش وجود داره حتی میتونید از داکیومنت های خودش هم استفاده کنید برای یادگیری چون بسیار ساده ست و البته کاربردی.امیدوارم این مقاله کمکی بهتون کرده باشه.روزتون خوش.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Mon, 19 Jul 2021 10:51:33 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی نیاز به ریاضی داره؟</title>
                <link>https://virgool.io/fboard/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87-p6w9wxeincrz</link>
                <description>جواب این سوال بله یا خیر نیست.بنظرم تصویری که ما از ریاضی داریم کاملا متفاوت از واقعیته ، بیشتر دبنال کاربرد انتگرال ها و معادلات در زندگی روزمره می‌گردیم.اما اصولا ریاضیات کمک کردن به ذهن و آماده کردن مغز برای حل مسائل و تحلیل مشکلاته. برنامه نویسی هم دقیقا برای همین کاره.برای برنامه نویس شدن نیاز نیست نابغه‌ی ریاضی باشید ولی مهمه که ذهنتون آماده باشه که بتونید تحلیل کنید و کد هایی که مینویسید مفید تر باشن.یعنی لازم نیست قبل از اینکه بریم سراغ برنامه نویسی اول بشینیم مسائل ریاضی کتابمونو حل بکنیم فقط کافیه درک خوبی از منطق ریاضیات داشته باشیم.البته با توجه به حوزه کاری که انتخاب می‌کنید فرمول های ریاضی مختلفی هستن که فقط باید درکشون کنید! چون اگر درست بفهمیدشون کامپیوتر خودش براتون حلش میکنه و جوابو براتون نمایش میده.منظور از درک کردن ، فهمیدن روند کار کردن اون فرموله. به فرض اگه شما ندونید نمودار هیستوگرام چه کاری انجام میده و دقیقا چه کاربردی داره ، ممکنه ده ها نمودار هیستوگرام رسم بکنید که به کارتون نیاد چون تحلیل و توضیحی در موردش ندارید و عملا نمیدونید باید کجا به کامپیوتر دستور رسم هیستوگرام رو بدید!!!!در نهایت باید بگیم برای برنامه نویس شدن نیاز نیست کلاس ریاضی برید و یا نمره ریاضیتون حتما ۲۰ باشه!لازمه که آشنایی خوب با کاربرد ها و درک خوب از مسائل داشته باشید. حتی اگر هم اینطوری نباشه وقتی برنامه نویسی رو شروع میکنید ، تو مسیر با فرمول های عجیب و غریب و جدید برمیخورید و سرچ  میکنید و کاربرد هارو یاد میگیرید و باهاشون آشنا میشید،  رفته رفته ریاضی و فرمولهاش عادی و فان میشه براتون. نترسید و فقط شروع کنید!امیدوارم مفید بوده باشه براتون.شاد و خوشحال باشید.</description>
                <category>پرستو هدایتی</category>
                <author>پرستو هدایتی</author>
                <pubDate>Sun, 18 Jul 2021 11:16:28 +0430</pubDate>
            </item>
            </channel>
</rss>