عیدی

رگرسیون خطی – مفهوم و محاسبات به زبان ساده

۲۷ تیر ۱۳۹۷


تعداد بازدید ها:
۳۵

استفاده از داده‌ها به منظور کشف رابطه بین آن‌ها اساس داده‌کاوی است. یکی از ابزار سنجش رابطه و مدل‌سازی استفاده از ابزار آماری رگرسیون است. امروزه به منظور تحلیل و کشف مدل روی «مه داده» (کلان‌داده | Big Data)، روش‌های مختلف رگرسیون توسعه یافته است. استفاده از تحلیل گرسیونی در علوم مختلف داده‌کاوی، بخصوص مبحث «آموزش ماشین» (Machine Learning)، فیزیک، شیمی و علوم زیستی کاربرد بسیاری دارد.

مفهوم رگرسیون

در آمار، رگرسیون خطی یک روریکرد مدل خطی بین متغیر «پاسخ» (Response) با یک یا چند متغیر «توصیفی» (Explanatory) است. اغلب برای کشف مدل رابطه‌ی خطی بین متغیرها از رگرسیون (Regression) استفاده می‌شود. در این حالت فرض بر این است که یک یا چند متغیر توصیفی که مقدار آن‌ها مستقل از بقیه متغیرها یا تحت کنترل محقق است، می‌تواند در پیش‌بینی متغیر پاسخ که مقدارش وابسته به متغیرهای توصیفی و تحت کنترل محقق نیست، موثر باشد. هدف از انجام تحلیل رگرسیون شناسایی مدل خطی این رابطه‌ است.

در ادامه از  متغیر وابسته به جای متغیر پاسخ و متغیر مستقل به جای متغیر توصیفی استفاده می‌کنیم.

از آنجایی که ممکن است علاوه بر متغیرهای مستقل، عوامل زیاد و ناشناخته‌ دیگری نیز در تعیین مقدار متغیر وابسته نقش داشته باشند، مدل رگرسیونی را با مناسب‌ترین تعداد متغیر مستقل در نظر گرفته و میزان خطا را به عنوان نماینده عوامل تصادفی دیگری که قابل شناسایی نبودند در نظر می‌گیریم که انتظار است کمتر در تغییرات متغیر وابسته نقش داشته باشند.

ضریب همبستگی

برای سنجش شدت رابطه بین متغیر وابسته و مستقل می‌توان از ضریب همبستگی استفاده کرد. هر چه ضریب همبستگی به ۱ یا ۱- نزدیکتر باشد،‌ شدت رابطه خطی بین متغیرهای مستقل و وابسته شدیدتر است. البته اگر ضریب همبستگی نزدیک به ۱ باشد جهت تغییرات هر دو متغیر یکسان است که به آن رابطه مستقیم می‌گوییم و اگر ضریب همبستگی به ۱- نزدیک باشد، جهت تغییرات متغیرها معکوس یکدیگر خواهد بود و به آن رابطه عکس می‌گوییم. ولی در هر دو حالت امکان پیش‌بینی مقدار متغیر وابسته برحسب متغیر مستقل وجود دارد.

هرچند ضریب همبستگی راهی برای نشان دادن رابطه بین دو متغیر مستقل و وابسته است ولی مدل رابطه بین این دو متغیر را نشان نمی‌دهد. با رگرسیون می‌توان قانونی که بین داده‌ها وجود دارد را کشف و به کار بست. بسیاری از رابطه‌های فیزیک یا شیمی به کمک رگرسیون بدست آمده است. برای مثال مقدار ثابت گازها در فیزیک کلاسیک از طریق رگرسیون قابل محاسبه است.

نمایش رابطه‌ی خطی بین دو متغیر مستقل و وابسته معمولا توسط «نمودار نقطه‌ای» (Scatter Plot) انجام می‌شود. برای آشنایی با شیوه ترسیم نمودار نقطه‌ای می‌توانید به مطلب نمایش و رسم نمودار برای داده‌ها — معرفی و کاربردها مراجعه کنید.

simple-regression

رابطه‌ بین متغیر مستقل وابسته با خط رگرسیون

با توجه به تصویر بالا مشخص است که محور افقی مقدارهای متغیر مستقل و محور عمودی مقدارهای متغیر وابسته را نشان می‌دهد و رابطه‌ی بین دو متغیر مستقیم است. ولی در تصویر زیر رابطه شدید ولی در جهت عکس بین دو متغیر مستفل و وابسته دیده می‌شود.

تاریخچه رگرسیون

واژه رگرسیون برای اولین بار در مقاله‌ معروف فرانسیس گالتون دیده شد که در مورد قد فرزندان و والدینشان بود. این واژه به معنی بازگشت است. او در مقاله خود در سال ۱۸۷۷ اشاره می‌کند که قد فرزندان قد بلند به میانگین قد جامعه میل می‌کند. او این رابطه را «بازگشت» (Regress) نامید.

هر چند واژه رگرسیون در شاخه علوم زیستی معرفی شد ولی آنچه امروزه به نام رگرسیون می‌شناسیم،‌ روشی است که توسط «گاوس» (Gauss) در سال ۱۸۰۹ معرفی شد تا به کمک آن پارامترهای مجهول رابطه بین مدار سیاره‌های منظومه شمسی را برآورد کند.

بعدها روش گاوس توسط پیرسون (Pearson) توسعه یافت و با مفاهیم آماری آمیخته شد. همچنین پیرسون توزیع توام متغیر وابسته و مستقل را توزیع گاوسی در نظر گرفت. بعدها «فیشر» (R. A. Fisher) توزیع متغیر وابسته به شرط متغیر مستقل را توزیع گاوسی محسوب کرد.

مدل رگرسیون خطی ساده

اگر برای شناسایی و پیش‌بینی متغیر وابسته فقط از یک متغیر مستقل استفاده شود، مدل را «رگرسیون خطی ساده» (Simple Linear Regression) می‌گویند. فرم مدل رگرسیون خطی ساده به صورت زیر است:

$$Y=beta_0+beta_1X+epsilon$$

همانطور که دیده می‌شود این رابطه، معادله یک خط است که جمله خطا یا همان $epsilon$‌ به آن اضافه شده. پارامترهای این مدل خطی عرض از مبدا ($beta_0$) و شیب خط ($beta_1$) است. شیب خط در حالت رگرسیون خطی ساده، نشان می‌دهد که میزان حساسیت متغیر وابسته به متغیر مستقل چقدر است. به این معنی که با افزایش یک واحد به مقدار متغیر مستقل چه میزان متغیر وابسته تغییر خواهد کرد. عرض از مبدا نیز بیانگر مقداری از متغیر وابسته است که به ازاء مقدار متغیر مستقل برابر با صفر محاسبه می‌شود. به شکل دیگر می‌توان مقدار ثابت یا عرض از مبدا را مقدار متوسط متغیر وابسته به ازاء حذف متغیر مستقل در نظر گرفت.

برای مثال فرض کنید کارخانه‌ای می‌خواهد میزان هزینه‌هایش را براساس ساعت کار برآورد کند. شیب خط حاصل از برآورد نشان می‌دهد به ازای یک ساعت افزایش ساعت کاری چه میزان بر هزینه‌هایش افزوده خواهد شد. از طرفی عرض از مبدا خط رگرسیون نیز هزینه ثابت کارخانه حتی زمانی که ساعت کاری نیست نشان می‌دهد. این هزینه را می‌توان هزینه‌های ثابت مانند دستمزد نگهبانان و هزینه روشنایی فضای کارخانه فرض کرد.

گاهی مدل رگرسیونی را بدون عرض از مبدا در نظر می‌گیرند و  $beta_0=0$ محسوب می‌کنند. این کار به این معنی است که با صفر شدن مقدار متغیر مستقل، مقدار متغیر وابسته نیز باید صفر در نظر گرفته شود. زمانی که محقق مطمئن باشد که که خط رگرسیون باید از مبدا مختصات عبور کند، این گونه مدل در نظر گرفته می‌شود. فرم مدل رگرسیونی در این حالت به صورت زیر است:

$$Y=beta_1X+epsilon$$

از آنجایی که پیش‌بینی رابطه بین متغیر وابسته و مستقل به شکل دقیق نیست، جمله خطا را یک «متغیر تصادفی» (Random Variable) با میانگین صفر در نظر می‌گیرند تا این رابطه دارای اریبی نباشد.

باید توجه داشت که منظور از رابطه خطی در مدل رگرسیون، وجود رابطه خطی بین ضرایب است نه بین متغیرهای مستقل. برای مثال این مدل $y=beta_0+beta_1x^2+epsilon$ را نیز می‌توان مدل خطی در نظر گرفت در حالیکه مدل $y=beta_0x^{beta_1}+epsilon$ دیگر خطی نیست و به مدل نمایی شهرت دارد.

همچنین در فرضیات این مدل، خطا یک جمله تصادفی است و تغییرات آن مستقل از متغیر X‌ است. به این ترتیب مقدار خطا وابسته به مقدار متغیر مستقل نیست.

در رگرسیون خطی سعی می‌شود، به کمک معادله خطی که توسط روش رگرسیون معرفی می‌شود، برآورد مقدار متغیر وابسته به ازای مقدارهای مختلف متغیر مستقل توسط خط رگرسیون بدست آید. به منظور برآورد پارامترهای مناسب برای مدل، کوشش می‌شود براساس داده‌های موجود، مدلی انتخاب می‌شود که کمترین خطا را داشته باشد.

روش‌های مختلفی برای تعریف خطا و حداقل کردن آن وجود دارد. معیاری که در مدل رگرسیون خطی ساده به کار می‌رود، کمینه کردن مجموع مربعات خطا است. از آنجایی که میانگین مقدارهای خطا صفر در نظر گرفته شده است، می‌دانیم زمانی مجموع مربعات خطا، حداقل ممکن را خواهد داشت که توزیع داده‌ها نرمال باشند. در نتیجه، نرمال بودن داده‌های متغییر وابسته یا باقی‌مانده‌ها یکی از فرضیات مهم برای مدل رگرسیونی خطی ساده است.

شکل زیر به منظور توضیح نرمال بودن مقدار خطا ترسیم شده است. در هر مقدار از متغیر مستقل ممکن است بیش از یک مقدار برای متغیر وابسته مشاهده شود. مقدار پیش‌بینی شده برای هر یک از این مقدارها ثابت است که توسط معادله خط رگرسیون برآورد می‌شود.

برای مثال تعدادی مقدار برای متغیر وابسته براساس مقدار x=65 وجود دارد که شکل توزیع فراوانی آن‌ها به صورت نرمال با میانگین $beta_0+beta_1times 65$ است. همچنین برای نقطه ۹۰ نیز مقدار پیش‌بینی یا برآورد برای متغیر وابسته به صورت $beta_0+beta_1times 90$ خواهد بود. در هر دو حالت واریانس خطا یا واریانس مقدارهای پیش‌بینی‌شده (پهنای منحنی زنگی شکل)  ثابت است.

در تصویر زیر چهار نقطه از مشاهدات (x,y) به همراه خط رگرسیون دیده می‌شوند که در آن خط رگرسیون با رنگ آبی، نقطه‌های مربوط به مشاهدات با رنگ قرمز و فاصله هر نقطه از خط رگرسیون (خطای برآورد) با رنگ سبز نشان داده شده است.

 

Linear_least_squares

نمودار نقطه‌ای متغیر مستقل و وابسته،‌ میزان خطا و خط رگرسیون

برای برآورد کردن پارامترهای مدل رگرسیونی باید معادله خطی یافت شود که از بین همه خطوط دیگر دارای کمترین مجموع توان دوم خطا باشد. یعنی $sumepsilon^2$ برای آن از بقیه خطوط کمتر باشد.

points_for_linear_regression

خطوط مناسب برای بیان رابطه بین متغیر مستقل و وابسته

به نظر شما در تصویر بالا،‌ کدام خط دارای مجموع مربعات خطای کمتری است؟ امکان تشخیص بهترین خط بدون استفاده از ابزارهای محاسباتی امکان‌پذیر نیست.

برآورد پارامترهای رگرسیون خطی ساده

به منظور برآورد پارامترهای رگرسیون خطی ساده، کافی است تابع مجموع مربعات خطا را کمینه کرد. برای این کار مراحل زیر باید طی شوند:

  • محاسبه مجموع توان دوم خطا

$$sum(y_i-(widehat{beta}_0+ widehat{beta}_1x_i))^2$$

  • مشتق مجموع مربعات خطا برحسب پارامتر $widehatbeta_0$

$$sum(-y_i+widehat{beta}_0+widehat{beta}_1x_i)$$

  • برابر قرار دادن مشتق با صفر به منظور پیدا کردن نقاط کمینه

$$sum(-y_i+widehat{beta}_0+widehat{beta}_1x_i)=0$$

  • پیدا کردن ریشه برای معادله حاصل برحسب $widehat{beta}_0$

$$widehat{beta}_0=bar{y}-widehat{beta}_1bar{x}$$

  • مشتق مجموع مربعات خطا بر حسب پارامتر  $widehatbeta_1$

$$ sum(-2x_iy_i+2widehat{beta}_0x_i+2widehat{beta}_1 x_i^2)$$

  • جایگذاری $widehatbeta_0$ و پیدا کردن ریشه برای معادله حاصل برحسب $widehat{beta}_1$

$$-sum(x_iy_i+(bar{y}-widehat{beta}_1bar{x})sum x_i+widehat{beta}_1sum x_i^2)=0$$

$$widehat{beta_1}=frac{sum(x_i-bar{x})(y_i-bar{y})}{sum(x_i-bar{x})^2}$$

به این ترتیب برآورد پارامترهای مدل خطی به صورت زیر خواهند بود.

$$widehat{beta_1}=frac{sum(x_i-bar{x})(y_i-bar{y})}{sum(x_i-bar{x})^2}$$

$$widehat{beta_0}=bar{y}-widehat{beta_1}bar{x}$$

که در آن $bar{x}$  و $bar{y}$ میانگین $x$ و $y$ هستند.

برای راحتی محاسبات، می‌توان برآورد $beta_1$ را به فرم دیگری نیز نوشت:

$$widehat{beta_1}=frac{n(overline{xy}-bar{x}bar{y}))}{(n-1)sigma_x^2}$$

که منظور از $overline{xy}$ میانگین حاصلضرب x و y بوده و $sigma_x^2$ نیز بیانگر واریانس مقدارهای x است.

اگر $widehat{y}$ مقدار برآورد برای متغیر وابسته باشد، می‌توانیم آن را میانگین مشاهدات برای متغیر وابسته به ازای مقدار ثابت متغیر مستقل در نظر گرفت. پس با فرض اینکه میانگین جمله خطا نیز صفر است، خواهیم داشت:

$$widehat{y}=E(Y|X=x)= widehat{beta_0}+widehat{beta_1}x$$

که در آن $E(Y|X=x)$ نشان‌دهنده امید ریاضی (متوسط) شرطی است و همچنین  $widehat{beta_0}$ و $widehatbeta_1$ برآوردهای مربوط به هر یک از پارامترها هستند.

نکته: به راحتی دیده می‌شود که میانگین مربوط به متغیر مستقل و وابسته روی خط رگرسیون قرار دارند. یعنی این نقطه در معادله خط رگرسیون صدق می‌کند. زیرا با توجه به محاسبه $beta_0$ داریم:

$$widehat{beta_0}=bar{y}-widehat{beta_1}bar{x}rightarrow overline{Y}=widehatbeta_0+widehatbeta_1 overline{X}$$

مثال

اطلاعات مربوط به ۵۰ خانه شامل قیمت (به میلیون ریال) و متراژ (متر مربع) در شهر تهران جمع‌آوری شده است. این اطلاعات را می‌توانید با قالب اکسل از اینجا دریافت کنید.

با توجه به ضریب همبستگی بین این دو متغیر که برابر با ۰.۹۸۹۱ است،‌ مشخص است که رابطه خطی شدیدی بینشان برقرار است. اگر فرض کنیم قیمت خانه متغیری وابسته به متراژ است، محاسبات اولیه برای برآورد پارامترهای مدل رگرسیونی در جدول زیر قرار گرفته.

$overline{X}$ $overline{Y}$ $overline{XY}$ $sigma_X^2$
۸۴.۹ ۴۵۱.۱۳۶ ۴۰۳۵۰.۶ ۴۱۱.۷۲۴

بر این اساس برآورد پارامترهای مدل خطی به صورت $widehatbeta_0=19.965$ و $widehatbeta_1=5.078$  خواهد بود. در نتیجه می‌توان معادله مربوط برآورد مقدار متغیر وابسته را به صورت زیر نوشت:

$$widehat{y_i}=19.965+5.078 x_i$$

پس اگر لازم باشد که ارزش خانه‌ای با متراژ ۶۱ متر محاسبه شود، کافی است در معادله بالا برای $x_i$‌ مقدار ۶۱ را جایگزین کرده،‌ مقدار $widehat{y}_i$ را بدست آوریم که برابر با ۳۲۹.۷۵۸ میلیون ریال است. در تصویر زیر نمودار مربوط به داده‌ها و خط رگرسیون دیده می‌شود.

$$widehat{y_i}=19.965+5.078 (61)=329.758$$

آزمون مربوط به مدل و پارامترهای آن

بعد از انجام مراحل رگرسیون، با استفاده از جدول «تحلیل واریانس» (Analysis of Variance) می‌توان صحت مدل ایجاد شده و کارایی آن را سنجید. اساس کار در تحلیل واریانس، تجزیه واریانس متغیر وابسته به دو بخش است، بخشی از تغییرات یا پراکندگی که توسط مدل رگرسیونی قابل نمایش است و بخشی که توسط جمله خطا تعیین می‌شود. پس می‌توان رابطه زیر را بر این اساس نوشت.

SST= SSR+SSE

که هر کدام به صورت زیر تعریف شده‌اند:

$$SST=sum(y_i-overline{y})^2$$

مقدار SST را می‌توان مجموع مربعات تفاضل مشاهدات متغیر وابسته با میانگینشان در نظر گرفت که در حقیقت صورت کسر واریانس متغیر وابسته است. این کمیت می‌تواند به دو بخش زیر تفکیک شود.

$$SSE=sum(y_i-widehat{y}_i)^2$$

شایان ذکر است به مقدار SSE مجموع مربعات خطا نیز گفته می‌شود که در مدل رگرسیون با توجه به کمینه کردن آن پارامترهای مدل بدست آمد. همچنین بخش بعدی با SSR‌ نشان داده می‌شود:

$$SSR=sum(widehat{y}_i-overline{y})^2$$

که می‌تواند به عنوان مجموع مربعات تفاضل مقدارهای پیش‌بینی‌شده از میانگینشان نام‌گذاری شود.

در صورتی که مدل رگرسیون مناسب باشد،‌ انتظار داریم سهم SSR از SST زیاد باشد، بطوری که بیشتر تغییرات متغیر وابسته توسط مدل رگرسیون توصیف شود. برای محاسبه واریانس از روی هر یک از مجموع مربعات کافی است حاصل را بر تعداد اعضایشان تقسیم کنیم. به این ترتیب مقدارهای جدیدی به نام «میانگین مربعات خطا» (MSE)،‌ «میانگین مربعات رگرسیون» (MSR) بوجود می‌آیند. به جدول زیر که به جدول تحلیل واریانس معروف است، توجه کنید.

منشاء تغییرات درجه آزادی مجموع مربعات  میانگین مربعات آماره F
رگرسیون k-۱ SSR $MSR=dfrac{SSE}{k-1}$ $F=dfrac{MSR}{MSE}$
خطا n-k SSE $MSE=dfrac{SSR}{n-k}$
کل n-k SST

درجه آزادی برای رگرسیون که با k-۱ نشان داده شده است، یکی کمتر از تعداد پارامترهای مدل (k) است که در رگرسیون خطی ساده برابر با ۱-۲=۱ خواهد بود زیرا پارامترهای مدل در این حالت $beta_0$ و $beta_1$ هستند. تعداد مشاهدات نیز با n نشان داده شده است.

اگر محاسبات مربوط به جدول تحلیل واریانس را برای مثال ذکر شده، انجام دهیم نتیجه مطابق جدول زیر خواهد بود.

منشاء تغییرات درجه آزادی مجموع مربعات  میانگین مربعات آماره F
رگرسیون ۱ ۵۲۰۳۳۸.۱۷۵۵ ۵۲۰۳۳۸.۱۷۵۵ $F=dfrac{MSR}{MSE}=dfrac{520338.1755}{239.91}=2168.89$
خطا ۴۸ ۱۱۵۱۵.۷۱۸۷ ۲۳۹.۹۱
کل ۴۹ ۵۳۱۸۵۳.۸۹۴۲

از آنجایی که نسبت میانگین مربعات دارای توزیع آماری F است با مراجعه به جدول این توزیع متوجه می‌شویم که مقدار محاسبه شده برای F بزرگتر از مقدار جدول توزیع F با $k-1$‌ و $n-k$ درجه آزادی است، پس مدل رگرسیون توانسته است بیشتر تغییرات متغیر وابسته را در خود جای دهد در نتیجه مدل مناسبی توسط روش رگرسیونی ارائه شده.

گاهی از «ضریب تعیین» (Coefficient of Determination) برای نمایش درصدی از تغییرات که توسط مدل رگرسیونی بیان شده، استفاده می‌شود. ضریب تعیین را با علامت $R^2$ نشان می‌دهند. هر چه ضریب تعیین بزرگتر باشد، نشان‌دهنده موفقیت مدل در پیش‌بینی متغیر وابسته است. در رگرسیون خطی ساده مربع ضریب همبستگی خطی همان ضریب تعیین خواهد بود.

در مثال قبل ضریب تعیین برای مدل رگرسیونی برابر با ۰.۹۷۸۳‌ است. بنابراین به نظر می‌رسد که مدل رگرسیونی در پیش‌بینی ارزش خانه برحسب متراژ موفق عمل کرده.

نکاتی در مورد رگرسیون خطی ساده

قبل از اتمام کار با مدل رگرسیون نکاتی باید در نظر گرفته شوند. با توجه به تعریف فیشر برای رگرسیون، جمله‌ خطا باید یک متغیر تصادفی با توزیع نرمال باشد. از آنجایی که در انجام محاسبات این فرضیه چک نشده است، باید بعد از محاسبات مربوط به مدل رگرسیون خطی، مقدارهای خطا محاسبه شده و تصادفی بودن و وجود توزیع نرمال برای آن‌ها چک شود.

تصادفی بودن باقی‌مانده‌ها

یک راه ساده، برای چک کردن تصادفی بودن مقدارهای خطا می‌تواند رسم آن‌ها و مقدار پیش‌بینی شده $widehat{y}$ روی یک نمودار باشد، بطوری که مقدارهای پیش‌بینی در محور افقی و مقدارهای خطا در محور عمودی ظاهر شوند. اگر در این نمودار، الگوی خاصی مشاهده نشود می‌توان رای به تصادفی بودن باقی‌مانده داد. منظور از الگوی غیرتصادفی، افزایش یا کاهش مقدار خطا با افزایش یا کاهش مقدارهای پیش‌بینی‌ شده است.

در تصویر زیر این نمودار برای مثال قبلی ترسیم شده است. محور افقی در این نمودار مقدار قیمت خانه و محور عمودی نیز باقی‌مانده‌ها است. همانطور که دیده می‌شود، الگوی خاصی وجود ندارد.

randomness

نمودار نقطه‌ای برای نمایش رابطه بین مقدارهای پیش‌بینی شده و باقی‌مانده‌ها

نرمال بودن باقی‌مانده‌ها

به منظور سنجش نرمال بودن باقی‌مانده‌ها، ترسیم بافت‌نگار می‌تواند ساده‌ترین راه باشد. در تصویر زیر بافت‌نگار مربوط به باقی‌مانده‌های مثال قبل ترسیم شده است. شکل بدست آمده شبیه توزیع نرمال است و به صورت زنگی شکل درآمده.

residuals and normal

البته روش‌ دقیق‌تر، ترسیم نمودار «چندک-چندک» (Q-Q Plot) برای باقی‌مانده‌ها یا مشاهدات y و داده‌های توزیع نرمال است. در زیر نمودار چندک-چندک برای داده‌های مربوط به مثال قبل ترسیم شده است.

qq-plot

نمودار چندک-چندک Q-Q Plot

انتظار داریم در این نمودار، اگر داده‌های مربوط به متغیر وابسته دارای توزیع نرمال باشند، صدک‌های مربوط به آن با صدک‌های تولید شده از توزیع نرمال تقریبا یکسان باشند. اگر این اتفاق بیافتد باید نقاط روی نمودار که نشان‌دهنده زوج‌ صدک‌های تولید شده هستند، روی یک خط راست قرار گیرند. این کار را با مقدارهای خطا نیز می‌توان انجام داد زیرا متغیر وابسته با مقدارهای خطا رابطه خطی دارد. به این منظور چندک‌های توزیع نرمال را با چندک‌های توزیع تجربی باقی‌مانده‌ها مقایسه می‌کنیم. انتظار داریم که نمودار، نشان دهنده یک رابطه مستقیم خطی باشد. در نتیجه می‌توان فرض کرد که باقی‌مانده‌ها دارای توزیع نرمال هستند.

ثابت بودن واریانس

از طرفی واریانس جمله‌ خطا نیز طبق فرضیه‌های اولیه برای مدل رگرسیونی، باید ثابت و برابر با $sigma^2$ باشد. برآورد واریانس برای جمله‌های خطا نیز به صورت زیر است:

$$sigma^2=dfrac{sum(y_i-widehat{y}_i)^2}{n-2}$$

مشخص است که مقدار $y_i$ بیانگر مقدار مشاهده شده و $widehat{y}_i$ مقدار پیش‌بینی برای مشاهده iام است. از آنجایی که در برآورد واریانس احتیاج به دو پارامتر مدل رگرسیونی است، دو درجه آزادی از تعداد مشاهدات کم شده است و در مخرج کسر n-2‌ قرار گرفته است.

برای آنکه نشان دهیم واریانس نیز ثابت است از نمودار نقطه‌ای استفاده می‌کنیم که در محور افقی مقدارهای پیش‌بینی‌شده و در محور عمودی نیز مقدار باقی‌مانده‌ها قرار دارد. این نمودار نباید به صورت الگوی افزایشی یا کاهشی باشد. قبلا از این نمودار به منظور چک کردن تصادفی بودن باقی‌مانده‌ها بهره بردیم.

تصویر زیر حالتی را نشان می‌دهد که واریانس باقی‌مانده‌ها نسبت به مقدار پیش‌بینی حالت افزایشی دارد و ثابت نیست.

unequal-residual-variance

افزایشی بودن واریانس باقی‌مانده‌ها

همچنین کاهشی بودن واریانس باقی‌مانده‌ها نسبت به مقدار پیش‌بینی در تصویر زیر دیده می‌شود.

not-equal-variance-type2

نزولی بودن واریانس باقی‌مانده با افزایش مقدار پیش‌بینی

اگر در مدل رگرسیونی باقی‌مانده‌ها نسبت به مقدار پیش‌بینی به طور تصادفی حول نقطه صفر تغییر کند، ثابت بودن واریانس قابل شناسایی است. این حالت در تصویر زیر دیده می‌شود.

equal-variance

ثابت بودن واریانس باقی‌مانده‌ها

اگر مطلب بالا برای شما مفید بوده است، احتمالاً آموزش‌هایی که در ادامه آمده‌اند نیز برایتان کاربردی خواهند بود.

^^

آیا این مطلب برای شما مفید بود؟

دانلود آهنگ حمید عسکری بارون

۲۷ تیر ۱۳۹۷

این مطلب از وب سایت دانلود آهنگ جدید • آپ موزیک به صورت رپ انتشار گردید است.

دانلود آهنگ حمید عسکری بارون

همین الان می توانید گوش دهید به ترانه بارون با صدای حمید عسکری از آلبوم کما 1

Exclusive Song: Hamid Askari – “Baroon” With Text And Direct Links In UpMusic

fh دانلود آهنگ حمید عسکری بارون

───┤ ♩♬♫♪♭ ├───

قسمتی از متن ترانه : 

آخه تو عزیز قصه‌هامی

♬♫
آخه تو شعر روی لبامی

♬♫
آخه جون تو بسته به جونم

UpMusicTag دانلود آهنگ حمید عسکری بارون
اگه بری دیگه نمی تونم

♬♫
آخه اسم تو رو که میارم

♬♫
میشی همه‌ی دار و ندارم

───┤ ♩♬♫♪♭ ├───

حمید عسکری بارون

دانلود آهنگ حمید عسکری بارون

تابع‌های لامبدا (Lambda) در پایتون – یک راهنمای مقدماتی

۲۷ تیر ۱۳۹۷


تعداد بازدید ها:
۱۶

لامبداها در پایتون یکی از مفیدترین، مهم‌ترین و جالب‌ترین ویژگی‌هایی هستند که می‌توان آموخت. متأسفانه اغلب افراد در مورد این توابع دچار سوءبرداشت شده و مسیر اشتباهی را طی می‌کنند. در این نوشته می‌خواهیم هر چیزی که لازم است در مورد این توابع اسرارآمیز، شیوه استفاده از آن‌ها و میزان مفید بودنشان بدانید را توضیح دهیم.

پیش از آن‌که وارد مثال‌های عملی بشویم می‌بایست محیط مجازی پایتون را نصب کرده باشید. البته اگر نخواهید این محیط را نصب کنید هم می‌توانید از پوسته‌های تعاملی آنلاینی مانند pythonanywhere و pythonfiddle استفاده کنید.

لامبدا در پایتون چیست؟

لامبدا یک روش ساده برای تعریف تابع در پایتون است. این توابع غالباً به نام «عملگرهای لامبدا» یا «تابع‌های لامبدا» نامیده می‌شوند.

اگر قبلاً از پایتون استفاده کرده باشید، احتمالاً توابع خود را با استفاده از کلیدواژه def تعریف می‌کنید و این روش نیز تاکنون برای شما به خوبی جواب داده است. پس چرا باید از روش دیگری برای تعریف تابع‌ها استفاده کنیم؟

دلیل این مسئله آن است که تابع‌های لامبدا ناشناس هستند. بدین معنی که این‌ها توابعی هستند که لازم نیست نامی برایشان تعیین کنید. این روش برای تعریف تابع‌های کوچک یک‌بار مصرف در مواردی که تابع اصلی بسیار بزرگ و حجیم است، استفاده می‌شود.

لامبداها یک شیء تابع بازمی‌گردانند که می‌تواند به یک متغیر انتساب یابد. لامبداها می‌توانند هر تعداد آرگومان ‌که لازم باشد داشته باشند؛ اما تنها یک عبارت دارند. نمی‌توان توابع دیگر را درون یک لامبدا فراخوانی کرد.

رایج‌ترین استفاده از تابع‌های لامبدا در کدهایی است که نیازمند توابع یک‌خطی ساده‌ای هستند و نوشتن یک تابع معمولی کامل، زیاده کاری محسوب می‌شود. این مسئله در ادامه در بخش «نگاشت، فیلتر و کاهش» بیشتر توضیح داده شده است.

چگونه از لامبداها در پایتون استفاده کنیم؟

پیش از آن‌که تابع‌های لامبدا را بررسی کنیم، می‌بایست به یک تابع بسیار مقدماتی که به روش سنتی تعریف شده است، نگاهی داشته باشیم:


این تابع کاملاً ابتدایی است؛ اما به منظور نمایش کارکرد لامبداها ارائه شده است. تابعی که شما استفاده می‌کنید، ممکن است بسیار پیچیده‌تر از این باشد. این تابع به هر عددی که از طریق پارامتر number به آن ارسال می‌شود، ۵ واحد اضافه می‌کند.

تابع لامبدای معادل آن چنین است:


در این جا به جای استفاده از def از کلمه lambda استفاده شده است. نیازی به کروشه نیست؛ اما کلمات پس از کلیدواژه lambda به عنوان پارامتر ایجاد می‌شوند. از علامت دونقطه (:) برای جدا کردن پارامترها و عبارت استفاده می‌شود. در این مورد عبارت به صورت number + 5 است.

نیازی به استفاده از کلیدواژه return نیست؛ چون لامبدا به طور خودکار این کار را برای شما انجام می‌دهد.

در ادامه شیوه ایجاد یک لامبدا با دو آرگومان را می‌بینید:


اگر هنوز در مورد مزیت استفاده از لامبدا دچار شک و تردید هستید، در بخش بعدی آن را عمیق‌تر بررسی کرده و کارکرد آن را روشن‌تر می‌کنیم.

لامبداهای پایتون به همراه نگاشت، فیلتر و کاهش

کتابخانه اصلی پایتون سه متد به نام‌های نگاشت (map)، کاهش (reduce) و فیلتر (filter) دارد. این متدها احتمالاً بهترین دلیل استفاده از تابع‌های لامبدا هستند.

تابع نگاشت دو آرگومان می‌گیرد که یک تابع و یک لیست است. این تابع از تابع ورودی استفاده کرده و آن را روی لیست اجرا می‌کند و لیست اصلاح شده را به صورت یک شیء نگاشت (map) باز می‌گرداند. تابع list برای تبدیل مجدد شیء نگاشتِ حاصل به یک لیست، مورد استفاده قرار می‌گیرد.

در ادامه روش استفاده از نگاشت بدون لامبدا را بررسی کرده‌ایم:


این تابع نگاشت بسیار کارآمد است؛ اما می‌تواند بهتر باشد. تابع add_five به صورت یک آرگومان ارسال می‌شود؛ اما چه می‌شد اگر مجبور نبودید هر بار که از نگاشت استفاده می‌کنید، یک تابع جدید ایجاد نمایید؟ پاسخ این است که به جای آن می‌توانید از لامبدا استفاده کنید.

وقتی بخواهیم از لامبدا استفاده کنیم، کد فوق به صورت زیر در می‌آید:


همان طور که می‌بینید کل تابع add_five دیگر مورد نیاز نیست؛ به جای آن تابع لامبدا برای انجام همان کارها استفاده می‌شود.

با استفاده از تابع filter این فرایند همان طور باقی می‌ماند. Filter یک تابع را می‌گیرد و آن را بر روی همه عناصر یک فهرست اعمال می‌کند و لیست جدیدی با تنها چند عنصر ایجاد می‌کند که باعث می‌شود تابع، مقدار صحیح (True) بازگرداند.

نخست بدون لامبدا:


فایده عملی لامبدا

در این کد هیچ چیز اشتباهی وجود ندارد؛ اما طولانی است. در ادامه با استفاده از لامبدا می‌بینیم که چندین خط حذف شده‌اند:


تابع لامبدا به طور کلی نیاز به greater_than_ten_func را رفع کرده است. و کل کد با تنها ۵ کلمه ساده نوشته شده است. به همین دلیل است که لامبدا قدرت زیادی دارد، چون در مورد انجام وظایف ساده حجم کد را بسیار کاهش می‌دهد.

در نهایت نگاهی به تابع reduce خواهیم داشت. این تابع یکی از توابع جالب پایتون است. Reduce یک محاسبه چرخشی بر روی همه عناصر یک لیست انجام می‌دهد. از این تابع برای محاسبه مجموع کل یا ضرب کردن همه اعداد با هم می‌توان استفاده کرد:


در این مثال باید reduce را از ماژول functools ایمپورت کنیم؛ اما جای نگرانی نیست چون ماژول functools بخشی از کتابخانه اصلی پایتون است.

روند کار تقریباً به طور کامل مشابه لامبدا است و نیازی به استفاده از تابع وجود ندارد:


مسائلی که هنگام استفاده از لامبدا باید در نظر داشت

نمونه‌هایی که در این مقاله ارائه کردیم، نشان می‌دهند که تابع‌های لامبدا تا چه حد ساده هستند و آن‌ها را می‌توان به همراه توابع map، filter و reduce از کتابخانه اصلی پایتون مورد استفاده قرار داد. با این حال مواردی نیز وجود دارند که استفاده از لامبدا کمکی به ما نمی‌کند.

اگر مشغول کار بر روی یک تابع غیر ساده باشید یا بخواهید در تابع خود متدهای دیگری را فراخوانی کنید، بهتر است از تابع معمولی استفاده کنید. لامبداها برای تابع‌های یک‌بار مصرف ناشناس مناسب هستند؛ اما باید تنها یک عبارت داشته باشند. اگر لامبدا با چیزی شبیه یک عبارت regular آغاز شود، در این صورت احتمالاً زمان بازنویسی آن به صورت یک متد اختصاصی فرارسیده است.

اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد می‌کنیم موارد زیر را نیز ملاحظه نمایید:

==

آیا این مطلب برای شما مفید بود؟

۱۰ نکته برای نوشتن کد بهتر و ساده‌تر – یک راهنمای جامع در خصوص کدنویسی مرتب

۲۷ تیر ۱۳۹۷


تعداد بازدید ها:
۲۳

بی‌شک برنامه‌نویسی کاری دشوار است. باید زبان‌های مختلف را بیاموزید و الگوریتم‌ها را مطالعه نمایید؛ اما این که سعی کنید کدهای یک برنامه پیچیده را طوری بنویسید که هنگام مطالعه، شخص را به زحمت نیندازد، امری جداگانه است.

نوشتن کد تمیز و مرتب چیزی است مانند طراحی، آشپزی یا عکاسی. گرچه در نگاه اول ممکن است ساده به نظر بیاید؛ اما به هیچ وجه ساده نیست. شاید از خود بپرسید، اصلاً چرا باید خود را اذیت کنیم؟ دلیل ارزشمند بودن تلاش برای کدنویسی مرتب موارد زیر هستند:

  • حل مشکلات آسان‌تر می‌شود. زمانی که به کدهای مرتب نگاه می‌کنید، روش حل مسئله شما نیز تغییر می‌یابد. به جای این که کورکورانه به دنبال راه‌حل باشید، الگوریتم‌ها و طراحی نرم‌افزار ظریف‌تر و آگاهانه‌تر می‌شود.
  • زمان کمتری صرف نگهداری کد می‌شود. کد مرتب، خوانایی و ادراک آسان‌تری دارد. از این رو زمان کمتری صرف درک بخش‌های مختلف کد می‌شود و این زمان می‌تواند صرف اصلاح، بازبینی و گسترش کد شود.
  • ایده‌ها به راحتی انتقال می‌یابند. اگر مشغول همکاری با برنامه‌نویس‌های دیگر باشید، کدنویسی مرتب باعث می‌شود که احتمال سوءبرداشت بین شما و دیگران کاهش یابد و در بلندمدت تعداد باگ‌ها را کاهش می‌دهد.

در ادامه برخی گام‌های آغاز کدنویسی مرتب را معرفی کرده‌ایم:

۱. استفاده از نام‌های گویا

متغیرها، کلاس‌ها و تابع‌ها چه هستند؟ روش‌های زیادی برای پاسخ به این سؤال وجود دارد؛ اما وقتی عمیق‌تر فکر کنید، این‌ها چیزی به جز رابط بین یک برنامه‌نویس و منطق نهان برنامه نیستند.

بنابراین وقتی از نام‌های غیر مشخص و غیر توصیفی برای متغیرها، کلاس‌ها و توابع استفاده می‌کنید، در واقع منطق برنامه را در چشم هر برنامه‌نویسی که کد را می‌خواند، مبهم‌تر می‌سازید. این برنامه‌نویس حتی ممکن است خود شما باشید.

من یک برنامه‌نویس عالی نیستم؛ من تنها یک برنامه‌نویس خوب با عادت‌های عالی هستم.

– Kent Beck

متغیری به نام dxy به چه معنی می‌تواند باشد؟ هیچ کس نمی‌داند. احتمالاً باید کل آن قطعه کد را بخوانید و با استفاده از مهندسی معکوس، معنای آن را کشف کنید. از سوی دیگر معنی متغیری به نام distancebetweenXY تقریباً بلادرنگ قبل تشخیص است.

همین نکته در مورد نام کلاس‌ها و توابع نیز صدق می‌کند. سعی کنید از مواردی مانند ()CalcTan کمتر استفاده کنید و به جای آن از ()CalculateTangent و یا ()CalcTangentAngle استفاده نمایید.

۲. هر کلاس/تابع باید یک هدف خاص داشته باشد

آیا تاکنون با تابعی مواجه شده‌اید که در صدها یا حتی هزاران خط نوشته شده باشد؟ اگر چنین بوده است، در این صورت احتمالاً می‌دانید که گشتن درون چنین تابعی و درک و ویرایش آن تا چه حد رنج‌آور است. توضیحات درون تابع می‌توانند کمک کنند؛ اما این کمک کاملاً محدود است.

برنامه‌نویسی عبارت است از تجزیه یک کار ناشدنی به چند کار ممکن کوچک‌تر.

– Jazzwant

کد مرتب را می‌توان به قطعه کدهای منفرد تقسیم کرد. هر تابع باید با هدف انجام یک کار منفرد و هر کلاس با هدف نمایش یک مفهوم خاص نوشته شود. این همان ساده‌سازی امور است و هر جا که تردید داشتید، بدانید که کد شما هر چه ساده‌تر باشد، مرتب‌تر است.

در عمل یک محاسبه پیچیده مانند GetCreditScore() (یعنی محاسبه رتبه اعتباری) را می‌توان به چند تابع کمکی (helper) مانند ()GetCreditReports (دریافت گزارش‌های اعتبار)، ()ApplyCreditHistoryAge (به‌کارگیری سابقه اعتباری) و ()FilterOutstandingMarks (حذف نشانگرهای پراکنده) تقسیم نمود.

۳. حذف کدهای غیرضروری

استفاده از کدهای غیرضروری عادت بدی است که برخی از برنامه‌نویسان نمی‌توانند رهایش کنند. برای توضیح بیشتر به این سناریو توجه کنید: فرض کنید می‌خواهید یک قطعه کد را بهینه‌سازی کنید، بنابراین آن را کامنت می‌کنید و درست زیر همان کد نسخه بهینه را بازنویسی می‌کنید و با این که کد جدید کار می‌کند؛ کد قدیمی را نیز نگه می‌دارید، چون ممکن است یک جایی به کار بیاید یا در مواقع بروز خطا بتوانید دوباره به کد قبلی بازگردید.

منظور از این که نرم‌افزار شبیه هیچ چیز دیگر نیست، این است که هر برنامه‌ای به منظور دور انداخته شدن خلق می‌شود. نکته اصلی این عبارت آن است که نرم‌افزار همواره باید به صورت یک حباب با عمر کوتاه نگریسته شود.

– Alan J. Perlis

چنین برنامه‌نویس‌هایی در طی زمان با مقادیر بالایی از کدهای کامنت شده مواجه می‌شوند که نیازی به آن‌ها ندارند، و صرفاً باعث شلوغی و سردرگمی در کد می‌شود. نکته جالب اینجاست که در اغلب موارد کدهای اصلاح شده آن قدر تکامل پیدا می‌کنند که کد کامنت شده‌ی اولیه، اصلاً امکان بازیابی هم نخواهد داشت.

نکته اینجاست که این کدهای پشتیبان کامنت شده با استفاده از نرم‌افزارهای کنترل سورس منسوخ می‌شوند. اگر هنوز از چیزی مانند گیت (Git) یا Mercurial استفاده نمی‌کنید، همین امروز باید شروع به استفاده از یک نرم‌افزار کنترل سورس بکنید. بدین ترتیب می‌توانید کدهای مرتب‌تری بنویسید.

۴. خوانایی > هوشمندی

بسیاری از برنامه‌نویس‌ها «کد مرتب» را با «کد هوشمند» اشتباه می‌گیرند، به طوری که فکر می‌کنند تبدیل کردن ده خط کد به یک خط باعث مرتب‌تر شدن آن می‌شود. مسلم است که چنین کدی فضای کمتری در صفحه اشغال می‌کند؛ اما آیا درک آن نیز آسان‌تر می‌شود؟ گاهی اوقات ممکن است چنین باشد؛ اما در اغلب موارد چنین حالتی وجود ندارد.

همه می‌دانند که دیباگ کردن، دو برابر دشوارتر از نوشتن کد در وهله اول است. بنابراین اگر در زمان نوشتن کد هر چقدر بتوانید هوشمندانه عمل کنید، چگونه خواهید توانست کد خود را دیباگ کنید؟

– Brian W. Kernighan

اغلب برنامه‌نویس‌ها کد هوشمند را دوست دارند، زیرا حسی شبیه حل یک معما دارد. آن‌ها روش منحصر به فرد و خاصی برای پیاده‌سازی یک کار خاص پیدا می‌کنند که می‌توان آن را یک «میانبر» نامید و به آن به عنوان یک مقیاس برای اعتبارسنجی مهارت‌های برنامه‌نویسی نگاه می‌کنند.

اما برای نوشتن کد مرتب، می‌بایست این نوع غرورها را پشت در جا بگذارید. همواره سعی کنید کد خود را طوری بنویسید که همه چیز برای فرد بعدی که آن را می‌خواند بهینه باشد، زیرا همیشه این احتمال هست که این برنامه‌نویس بعدی به شما مراجعه کند و هیچ چیزی شرم‌آورتر از این نیست که خودتان نتوانید کد هوشمندانه‌ای که نوشته‌اید را بخوانید یا درک کنید.

۵. از سبک کدنویسی یکنواختی استفاده کنید

در مورد رویه‌های برنامه‌نویسی صحیح، بسیار گفته شده است؛ اما یکی از معایب آن این است که افراد مبتدی طیف گسترده‌ای از عادت‌های بعضاً متناقض می‌یابند که به طور خاص برای حفظ سبک کدنویسی به کار می‌گیرند.

در این نوشته قصد نداریم بیان کنیم که کدام سبک کدنویسی بهتر از دیگری است. شما می‌توانید هر نوع سبکی که دوست دارید را ادامه دهید. اگر ترجیح می‌دهید قبل از فراخوانی‌های متد اسپیس بزنید مشکلی نیست. اما اگر Tab را به اسپیس ترجیح می‌دهید، نباید اجازه دهید دیگران شما را برخلاف آن متقاعد کنند.

هر کاری که می‌کنید بکنید؛ اما رویه یکنواختی داشته باشید.

زیبا بهتر از زشت است

صریح بهتر از ضمنی است.

ساده بهتر از پیچیده است

پیچیده بهتر از درهم است.

مسطح بهتر از تودرتو است

پراکنده بهتر از فشرده است

خوانایی مهم است

– تیم پترز، کتاب ذن در پایتون

اگر می‌خواهید از camelCaseNaming (نام‌گذاری شتری: در این روش اسامی مختلف به صوت چسبیده به هم نوشته می‌شوند و حرف ابتدای هر کلمه به صورت بزرگ استفاده می‌شود) برای متغیرها استفاده کنید، آن را با underscore_naming (نام‌گذاری با استفاده از زیرخط: در این روش کلمات مختلف با علامت _ از هم جدا می‌شوند.) مخلوط نکنید. اگر در یک جا از ()GetThisObject استفاده می‌کنید، در جای دیگر از ()FetchThatObject استفاده نکنید. همچنین تلاش کنید هرگز اسپیس و Tab را با هم مخلوط نکنید، چون در این صورت شایسته است که شما را از استفاده از کیبورد محروم کنند.

در مورد کاری که می‌خواهید انجام دهید از ابتدایی‌ترین مراحل تصمیم‌گیری کنید و گام به گام حرکت کنید. برخی زبان‌ها مانند پایتون و #C راهنماهای سبک کدنویسی خاصی در سطح زبان دارند که بهتر است از آن‌ها پیروی کنید.

۶. معماری صحیح را انتخاب کنید

پارادایم‌ها و معماری‌های مختلفی وجود دارند که می‌توانید برای ایجاد پروژه‌های خود از آن استفاده کنید. توجه کنید که چگونه می‌توانید یک معماری مناسب خود و نه لزوماً بهترین نوع موجود را انتخاب کنید، چون در این خصوص بهترین نوع وجود ندارد.

برنامه‌نویسی بدون قواعد الزامی و سبک طراحی، هنر افزودن باگ به یک فایل متنی خالی است.

– Louis Srygley

برای نمونه، الگوی مدل-چشم‌انداز-کنترلر (MVC) اینک در توسعه وب بسیار متداول است، زیرا به سازمان‌یافتگی کد کمک می‌کند و تلاش‌های نگه‌داری کد را به کمترین مقدار می‌رساند.

به طور مشابه الگوی نهاد-مولفه-سیستم (ECS) نیز در توسعه بازی هم اینک بسیار رایج است، زیرا به ماژول سازی داده‌ها و منطق بازی به طریقی که نگهداری آن آسان‌تر باشد کمک می‌کند و کدی که بدین نحو تولید می‌شود، خوانایی بالاتری دارد.

۷. یادگیری اصطلاح‌های خاص هر زبان

یکی از دشواری‌های کسب مهارت در یک زبان برنامه‌نویسی جدید، یادگیری تفاوت‌های ظریفی است که آن را از دیگر زبان‌ها متمایز می‌سازد. این تفاوت‌ها می‌توانند اختلاف بین کد زشت و درهم پیچیده با کد زیبا و با نگهداری آسان باشند.

برای مثال پایتون، جاوا و جاوا اسکریپت را در نظر بگیرید. همه این زبان‌ها از همدیگر متفاوت هستند تا حدی که بسته به این که از چه زبانی استفاده می‌کنید، روش اندیشیدن شما نیز متفاوت خواهد بود.

زبانی که روش اندیشیدن شما در مورد برنامه‌نویسی را تغییر ندهد، ارزش یادگیری را ندارد.

– Alan J. Perlis

گرچه پایتون به طور کامل از روش کدنویسی فشرده و تایپ دهی اردکی (Duck Typing) بهره می‌گیرد؛ اما جاوا بیشتر از توضیحات طولانی و عبارت‌های صریح استفاده می‌کند. هر زبانی اصطلاح‌هایی دارد (مانند list comprehensions در پایتون) که روش خاصی از کدنویسی را تشویق می‌کند. بهتر است این موارد را نیز بیاموزید.

همچنین ضد الگوهایی نیز وجود دارند که باید از آن‌ها پرهیز کنید. این موارد در واقع الگوهای طراحی غیر بهینه هستند که موجب تولید کدهای ناکارآمد، غیر قابل اعتماد و یا بد می‌شود. سعی کنید همه ضد الگوهای مرتبط با زبان انتخابی خودتان را مطالعه کرده و از یادگیری آن‌ها خودداری کنید.

۸. کد اساتید برنامه‌نویسی را مطالعه کنید

اگر می‌خواهید کد مرتب بنویسید، بهترین کار آن است که با روش کدنویسی مرتب اساتید این حوزه آشنا شوید تا چرایی این روش کدنویسی را درک کنید. برای انجام این کار روشی بهتر از مطالعه فایل‌های سورس استادان هر زبان وجود ندارد.

بدیهی است که نمی‌توانید به شرکت مایکروسافت وارد شده و به پروژه‌های آن‌ها نگاه کنید؛ اما می‌توانید همواره بهترین پروژه‌های متن-باز را جستجو کنید. اگر نمی‌دانید از کجا شروع کنید، می‌توانید به گیت‌هاب مراجعه کنید و برخی از سورس های مشهور که در زبان انتخابی شما نوشته شده‌اند را مطالعه نمایید.

هر احمقی می‌تواند کدی بنویسد که رایانه درک کند. برنامه‌نویسان خوب کدی می‌نویسند که انسان‌ها درک کنند.

– مارتین فاولر، بازنویسی: بهبود طراحی کد موجود

در نهایت یکی از دلایل وجود پروژه‌های متن-باز همین است که افراد مختلف بتوانند از آن چیزهایی بیاموزند. اگر قصد داشته باشید تا در چنین پروژه‌ای مشارکت کنید، این امر موجب تسریع فرایند یادگیری شما می‌شود.

اکثر برنامه‌نویسان مبتدی بدین ترتیب با شیوه صحیح کدنویسی آشنا می‌شوند. در مواردی برخی از برنامه‌نویسان تازه‌کار حتی ممکن است از مشاهده سبک برنامه‌نویسی متفاوت این پروژه‌های بزرگ ناامید شوند؛ اما در نهایت با پشتکار فراوان می‌توانند چیزهای زیادی از پروژه‌های اوپن‌سورس بیاموزند.

۹. نوشتن توضیحات خوب

نوشتن توضیحات مناسب، قدیمی‌ترین توصیه در دنیای برنامه‌نویسی است. در واقع به محض این که مفهوم درج توضیح برای کد به برنامه‌نویسان مبتدی آموزش داده می‌شود، آن‌ها کاملاً تشویق می‌شوند تا جایی که می‌توانند از توضیحات بیشتری در کد خود استفاده نمایند.

اما در مواردی نیز این تأکید زیاد، اثر معکوسی دارد. برخی برنامه‌نویس‌های تازه‌کار به طور خاص گرایش به توضیح بسیار در مورد مسائلی دارند که نیازی به توضیح ندارند و معنی یک توضیح خوب را به درستی متوجه نشده‌اند.

همواره طوری کد بزنید که گویا فردی که می‌خواهد کد شما را بازبینی کند، یک بیمار خطرناک روانی است که محل زندگی شما را می‌شناسد.

– John Woods

قاعده سرراست برای یک توضیح مناسب چنین است: دلیل وجودی توضیحات این است که بیان کند چرا یک کد نوشته شده است و نه این که چه کاری انجام می‌دهد. اگر کد به قدر کافی مرتب نوشته شده باشد، به اندازه‌ای خود توصیف خواهد بود که بتوان حس زد چه کاری انجام می‌دهد. توضیح برای این درون کد درج می‌شود که نیت ناپیدای چرایی نگارش کد را بیان کند.

استفاده از توضیحات برای هشدار نیز مناسب است (مثلاً «حذف این کد باعث می‌شود بخش‌های الف، ب و ج از کار بیفتند»؛ اما وظیفه اصلی آن مشخص ساختن چیزهایی است که به تنهایی از مطالعه‌ی گذرای کد نمی‌توان درک کرد (برای مثال «از این پارامتر استفاده کنید چون …»).

۱۰. بازسازی، بازسازی، بازسازی

بازسازی کد (Refactor) همانند ویرایش، بخشی از فرایند نوشتن کد است. بیزاری برخی افراد از بازسازی کد در نهایت خیلی زود منجر به تولید کدی می‌شود که غیر قابل نگهداری است، بنابراین از هر جنبه که نگاه کنید، بازسازی یکی از مهم‌ترین جنبه‌های کدنویسی است.

به طور خلاصه بازسازی کد تنها یک اصطلاح جذاب در مورد پاک‌سازی کد بدون تأثیر بر رفتار واقعی آن است.

هر زمان ‌که مجبور هستم بیندیشم یک کد چه کاری انجام می‌دهد، از خود می‌پرسم آیا می‌توانم کد را بازسازی کنم تا فرایند این ادراک سریع‌تر صورت بگیرد.

– مارتین فاولر، بازسازی: بهبود طراحی کد موجود

یکی از بهترین توصیه‌هایی که می‌توان کرد این است که «برای کد بد توضیح ننویسید؛ بلکه آن را بازسازی کنید.» همان طور که فاولر در نقل قول فوق توضیح داده است، اگر کدی به آن حد پیچیده بود که حس کردید به توضیح نیاز دارد، شاید در واقع بهتر باشد که آن را بازسازی کنید.

به علاوه همچنان که بخش‌های مختلف کد را ویرایش می‌کنید، به طور مداوم تلاش کنید کدی که پس از بازبینی بر جای می‌ماند بهتر از کدی باشد که در ابتدا با آن مواجه شدید. شاید این کار نیازمند ایجاد تفاوت‌های خیلی ظریفی باشد؛ اما در بلندمدت نتایج بسیار شگرفی ایجاد می‌کند و حتی می‌تواند از فرسودگی ذهنی نیز جلوگیری کند.

همواره چیز جدیدی برای آموختن وجود دارد

برنامه‌نویسی که به خوبی آموخته است چگونه کد مرتب بنویسد، بسیار شبیه نوآموزی است که در حال یادگیری نگارش صحیح است. یگانه روش مشخصی برای انجام صحیح این کار وجود ندارد؛ اما بسیاری راه‌های نادرست وجود دارد که شاید سال‌ها طول بکشید تا فرد در این مسیر مهارت کسب کند.

برخی افراد مهارت‌های مورد نیاز برای کدنویسی خوب را ندارند و در نهایت برنامه‌نویسی را ترک می‌کنند. اشکالی در این قضیه وجود ندارد، زیرا بسیاری از شغل‌های دیگر در حوزه فناوری وجود دارند که نیازی به کدنویسی ندارند.

اما برای افرادی که می‌خواهند مسیر برنامه‌نویسی را ادامه دهند، کدنویسی مرتب چیزی است که می‌بایست نهایت تلاش خود را برای آن بکنند، هر چند که این تلاش به مدت همه عمرشان تداوم داشته باشد.

اگر این نوشته مورد توجه قرار گرفته است، پیشنهاد می‌کنیم موارد زیر را نیز مطالعه نمایید:

==


بر اساس رای ۱ نفر

آیا این مطلب برای شما مفید بود؟

دانلود آهنگ جدید سامان جلیلی خوشبختی

۲۷ تیر ۱۳۹۷

این مطلب از وب سایت دانلود آهنگ جدید • آپ موزیک به صورت رپ انتشار گردید است.

دانلود آهنگ سامان جلیلی خوشبختی

موزیک جدید وشیندنی سامان جلیلی بنام خوشبخت همینک از آپ موزیک

تیتراژ برنامه وقتشه از شبکه نسیم

Exclusive Song: Saman Jalili – “Khosh Bakhti” With Text And Direct Links In UpMusic

saman jalili دانلود آهنگ جدید سامان جلیلی خوشبختی

متن آهنگ خوشبختی با صدای سامان جلیلی

بیشترو بیشتر میشی عزیز با تو میمونم تا آخر…

●♪♫

کمترو کمتر فاصله داریم

●♪♫

جا واسه قصه نمیذاریم جونمی دنیامی!

●♪♫

دوست دارم امروز و فردامی دوست دارم

●♪♫

تو خوده رویامی دوست دارم تورو تورو

●♪♫

این حسی که داریم

●♪♫

ماله خودمونه خدا داره

●♪♫

میگه که عاشقمونه

●♪♫

دل با کسی جز تو کاری نداره

●♪♫

دوست داره این حسی که داریم

●♪♫

این حسی که داریم…

سامان جلیلی خوشبختی

دانلود آهنگ جدید سامان جلیلی خوشبختی

داستان موفقیت عیدیی‌ها: فربد هادی از افزایش درآمد خود به کمک آموزش‌های ویدئویی می‌گوید

۲۷ تیر ۱۳۹۷


تعداد بازدید ها:
۷

این روزها اهمیت آموختن مهارت‌های کاربردی برای کسب فرصت‌های شغلی مناسب بر کسی پوشیده نیست. مباحث علوم و مهندسی کامپیوتر، مهندسی برق، مکانیک، عمران و نقشه‌برداری، صنایع، طراحی و گرافیک کامپیوتری تنها برخی از زمینه‌هایی هستند که افراد صرفا با داشتن دانش تئوری و دانشگاهی و بدون فراگیری هرگونه مهارت کاربردی، نمی‌توانند به عنوان شغل و حرفه آن‌ها را دنبال کنند.

از این رو، استفاده از روش‌های آموزشی گوناگون برای یادگیری مهارت‌های کاربردی دغدغه بسیاری از افراد است. نکته جالب توجه این است که با ظهور وب جهان گستر و البته شبکه‌های اجتماعی، گرایش به آموزش نیز از سبک سنتی (دانشگاهی و آموزشگاهی) به سمت آموزش‌های ویدئویی و آنلاین تغییر مسیر داد.

«فربد هادی» یکی از افرادی است که با استفاده از آموزش‌های عیدی به یادگیری برنامه‌نویسی و برخی دیگر از مباحث پرداخته است. هادی باور دارد که استفاده از آموزش‌های عیدی در زندگی حرفه‌ای او تاثیرگذار بوده و آن را دستخوش تغییرات مثبتی کرده است. از همین‌رو، طی گفت‌و‌گویی، شنونده تجربیات ایشان پیرامون آموزش‌های ویدئویی بوده‌ایم. آنچه در ادامه آمده، مشروح این گفت‌و‌گو است. در صورتی که تمایل به فراگیری مهارت با استفاده از روش‌های یادگیری نو دارید و به ویژه علاقمند به یادگیری برنامه‌نویسی هستید، خواندن این گفت‌و‌گو به شما توصیه می‌شود.

۱. لطفا خودتان را معرفی بفرمایید.

فربد هادی، ۲۴ ساله و ساکن کرج هستم. تحصیلات بنده کارشناسی برق گرایش الکترونیک از دانشگاه شریف است و در حال حاضر در تهران مشغول به کار هستم.

۲. اولین بار کی و چگونه با عیدی آشنا شدید؟

در سال ۱۳۹۲ جشنواره‌ای برگزار شد که عیدی در آنجا غرفه داشت و این اولین آشنایی بنده با عیدی بود. من در آن زمان دانشجوی دانشگاه شریف بودم. آن هنگام آموزش‌های موجود در عیدی به اندازه امروز متنوع و متعدد نبود. پس از آن و در سال ۹۵، به دلیل نیازی که جهت کار با نقشه‌های شماتیک مکانیک برای من ایجاد شده بود، دوره اتوکد را از وب‌سایت عیدی تهیه کردم.

۳. از تجربه خود در رابطه با اولین آموزشی که از عیدی تهیه کرده‌اید بگویید.

نیاز من به اتوکد محدود به خواندن و درک نقشه‌های مشخصی بود و دوره آموزشی که تهیه کردم به خوبی پاسخگوی نیازم بود.

۴. آیا بعد از آن نیز دوره دیگری را تهیه کردید؟

کار اصلی من سیستم‌های اتوماسیون و برق صنعتی است و از این رو زمان زیادی را به برنامه‌نویسی اختصاص می‌دهم. بنابراین در برهه‌ای دیگر از کارم نیاز به فراگیری برنامه‌نویسی داشتم و آموزش‌های جاوا را از عیدی تهیه کردم.

۵. ضمن استفاده از آموزش‌های عیدی، چه میزان زمان را به آن‌ها اختصاص دادید؟

بنده در اغلب موارد هنگامی به سراغ یادگیری مبحثی می‌روم که نیازی به آن داشته باشم و به عنوان مثال پروژه تعریف شده‌ای وجود داشته باشد. بنابراین هنگامی که آموزش‌های ویدئویی عیدی را تهیه کردم، ساعت‌ها و هفته‌ها وقت به یادگیری اختصاص دادم و در کنار دیدن آموزش‌ها تمرین و استفاده عملی کردم.

۶. آیا برای یادگیری از روش‌های سنتی‌تر مانند دانشگاه‌ها و آموزشگاه‌ها استفاده کرده بودید؟

برای بحث برنامه‌نویسی خیر. در کلاس‌های آموزشگاهی سیلابس‌های تدریس به نوعی تدوین می‌شود که برای کلیه حاضران در کلاس مناسب باشد و بنابراین ممکن بود یک مطلب برای شخصی بسیار ابتدایی و برای دیگری بسیار پیچیده باشد. لذا برای یادگیری مهارت‌هایی مانند برنامه‌نویسی آموزش‌های ویدئویی مناسب‌تر است.

۷. با توجه به صحبت بالا، برای یادگیری مهارت مورد نظرتان از چه روش‌هایی بهره می‌بردید؟

بنده به طور معمول برای فراگیری اغلب مباحث از منابع به زبان انگلیسی مانند ویدئوهای آموزشی یودمی و لیندا استفاده می‌کردم. اما یادگیری به زبان انگلیسی زحمت مضاعفی دارد. پس از آشنایی با عیدی برای یادگیری مباحث به آن رجوع می‌کردم زیرا در حال حاضر عیدی چالش موجود در بحث زبان را برای مخاطبان فارسی‌زبان برطرف کرده است.

۸. چرا تصمیم گرفتید که از دوره‌های آموزش آنلاین استفاده کنید؟

منابع گوناگونی برای یادگیری وجود دارد، ولی منابع ویدئویی به دلیل تصویری بودن و قابل مشاهده بودن فرآیند در حال انجام، برای بنده موثرتر واقع می‌شوند.

۹. دوره‌هایی از عیدی که استفاده کردید چه میزان در مهارت آموزی برای بازار کار مفید بود؟

مشخصا در بحث برنامه‌نویسی، به نظر بنده بیست درصد به آموزش و یادگیری و هشتاد درصد به حل مساله اختصاص دارد. دوره‌های عیدی، فرد را در مسیر یادگیری قرار می‌دهند تا بتواند قدم به قدم در این مسیر به پیش رود. فراگیر به خوبی می‌آموزد که با چه ابزاری، چه کاری را چگونه انجام دهد. ولیکن برای موفقیت بیشتر در مسیر یادگیری، قطعا نیاز به استفاده از مفاهیم آموخته شده به صورت کاربردی در پروژه‌های عملی دارد.

۱۰. نقش آموزش‌های دانشگاهی، موسسات آموزش عالی و آموزشگاه‌ها را در مقایسه با آموزش‌های ویدئویی و آنلاین مانند عیدی در راستای مهارت‌آموزی را چگونه ارزیابی می‌کنید؟

آموزش‌هایی که در دانشگاه‌ها ارائه می‌شوند بیشتر به مفاهیم و نه کاربردها می‌پردازند؛ زیرا هدف اغلب دانشگاه‌ها پژوهشگر ساختن است. اما آموزش‌هایی که در عیدی ارائه می‌شوند با توجه به اینکه از مثال‌های عملی و پروژه‌های متعدد استفاده می‌کنند به دانشجو دید بهتری از کاربرد مبحث ارائه شده می‌دهند و این می‌تواند منجر به افزایش انگیزه فراگیر شود.

۱۱. لطفا درباره فعالیت حرفه‌ای خود و پروژه‌هایی که با فراگیری مهارت از عیدی انجام داده‌اید توضیح دهید.

بنده سال ۹۴ در یک شرکت فنی و مهندسی مشغول به کار بودم و آنچه موجب شد از آموزش‌های عیدی به صورت جدی‌تر استفاده کنم و جایگاه فعلی خودم در محل کار را به دست بیاورم پروژه‌ای بود که نیاز به یادگیری زبان جاوا داشت. از آن زمان تاکنون با مهارت برنامه‌نویسی که فراگرفتم به عنوان برنامه‌نویس مشغول به کار هستم.

۱۲. لطفا مقایسه‌ای بین عیدی و دیگر نمونه‌های خارجی مانند لیندا و یودمی انجام دهید.

تفاوت قابل توجه عیدی با نمونه‌های خارجی، قیمت بسیار مناسب آموزش‌ها و فارسی بودن زبان آن‌ها است. کیفیت آموزش‌ها به لحاظ صدا و تصویر خوب است و البته همچنان جای رشد بسیاری دارد. در عین حال در میان نمونه‌های ایرانی، کامل‌ترین است. البته برخی موارد در آموزش‌ها بسیار مورد تاکید قرار گرفته و تکرار می‌شوند. ویژگی‌های مثبتی نیز در گزینه‌های خارجی وجود دارد، مانند وجود انجمن گفت‌و‌گو که در آن فراگیران یک دوره می‌توانند در حضور استاد به بحث و رفع اشکال بپردازند. امیدوارم عیدی نیز به این سمت و پروژه‌محور بودن گام بردارد.

۱۳. در مجموع نقش و جایگاه مراکزی مانند عیدی در مهارت‌آموزی افراد را چگونه ارزیابی می‌کنید؟

پیش از اینکه پاسخ این پرسش را بدهم یک مثال می‌زنم. لینکدین که متمرکز بر تخصص‌گرایی است وب‌سایت لیندا را خریداری کرد. در وب‌سایت لیندا به فردی که یک دوره را گذرانده و در آزمون آن نمره قبولی کسب کرده باشد یک «بج» اختصاص داده می‌شود. این بج در پروفایل لینکدین فرد نمایش داده شده و رتبه او را افزایش می‌دهد. این امر به خوبی نشانگر اهمیت آموزش‌های ویدئویی برای مهارت‌آموزی و پرورش نیروی کار است. عیدی برای همه فارسی‌زبانان جهان به دلیل قیمت مناسب و تنوع سرفصل‌ها منبع ارزشمندی است. در ایران، به نظر من عیدی با توجه به تعداد و تنوع مطالب موجود، کامل‌ترین منبع آموزش‌های ویدئویی است. آموزش‌های عیدی در دسترس همه قرار دارند و بنابراین افراد زیادی از آن‌ها استفاده کرده و می‌کنند. این در حالیست که بسیاری از دیگر انواع آموزش‌ها بدین شکل در دسترس همگان نیستند و فقط گروه خاصی از آن‌ها استفاده می‌کنند.

۱۴. صحبت آخر خود را بفرمایید.

به نظر بنده افراد هر زمان که تصمیم بگیرند وارد حوزه برنامه‌نویسی بشوند تصمیم خوبی است. برای یادگیری این مبحث نیاز به مدرک تحصیلی خاصی نیست و البته فراگیری آن به طور جدی، نیازمند تمرین و انجام پروژه‌های عملی است. افراد نباید با انگیزه مالی به سراغ فراگیری برنامه‌نویسی بروند، بلکه باید برنامه‌نویسی کنند تا برنامه‌نویس خوبی باشند. بدین صورت است که هم مهارت‌آموزی کرده و هم می‌توانند جایگاه شغلی خوبی کسب کنند.

برنامه‌نویس بیش از کار با صفحه کلید و تایپ کردن کد، نیازمند مهارت حل مساله است. این در حالیست که یاد گرفتن یک زبان جدید، مثل هر مهارت دیگری، مسیر یادگیری خاص خود را دارد. برای یادگیری هر مبحثی باید دانست که قدم به قدم یادگیری آن چیست. در دوره‌های آموزش ویدئویی به دلیل اینکه اغلب، مدرس خود مسیر یادگیری آن زبان را طی کرده به خوبی می‌داند که چه گام‌هایی را به فراگیر معرفی کند و آموزش دهد. بنابراین مرحله به مرحله از مقدماتی به سمت و سوی پیشرفته حرکت می‌کند. روش‌های یادگیری دیگری هم وجود دارند و هر کس ممکن است از روش خاصی استفاده کند. ولی معمولا به دلیل وجود حجم زیاد متن و کدهای پیچیده در بسیاری از مستندات آموزشی، ممکن است فرد در ابتدای راه سردرگم یا دلسرد شود. اما آموزش‌های ویدئویی چنین مشکلاتی را نداشته و در عین حال به دلیل بصری بودن به یادگیری هرچه بهتر کمک می‌کنند.

آیا این مطلب برای شما مفید بود؟

دانلود آهنگ آرمین زارعی بارون

۲۷ تیر ۱۳۹۷

این مطلب از وب سایت دانلود آهنگ جدید • آپ موزیک به صورت رپ انتشار گردید است.

دانلود آهنگ آرمین زارعی بارون

امروز برای شما کاربران عزیز ترانه بارون با صدای آرمین زارعی را آماده کرده ایم

Exclusive Song: Armin Zarei – “Baroon” With Text And Direct Links In UpMusic

sdf 4 دانلود آهنگ آرمین زارعی بارون

───┤ ♩♬♫♪♭ ├───

قسمتی از متن ترانه : 

چته اينقدر چرا تو خودتي چرا هستي دپرس
امشبه رو بيخيال دنيا شو بيخال استرس
کنار منو تو ميسازيم يه زندگي آروم

UpMusicTag دانلود آهنگ آرمین زارعی بارون
آسمونم که خوش رنگ تر شده چون داره مياد بارون
بارون ميباره آروم به هم وصليم ما دوتامون

───┤ ♩♬♫♪♭ ├───

آرمین زارعی بارون

دانلود آهنگ آرمین زارعی بارون

آموزک تهیه فایل Image از دیسک های فشرده (ویدئوی آموزشی)

۲۷ تیر ۱۳۹۷



آموزک تهیه فایل Image از دیسک های فشرده (ویدئوی آموزشی)

























آموزش‌های ویدئویی عیدی

همراه شوید

آدرس: تهران، خیابان کریم خان زند، نرسیده به میدان هفت تیر، بین خردمند جنوبی و عارف ادیب، پلاک ۶۲، ساختمان اداری تجاری کریم خان، برج B، طبقه پنجم، واحد ۵۲

تلفن: ۵۷۹۱۶۰۰۰

چگونه با مصرف غذای کمتر احساس سیری بیشتری داشته باشیم؟

۲۷ تیر ۱۳۹۷

مقاله در یک نگاه

وقتی همیشه احساس گرسنگی دارید، تناسب اندام و کاهش وزن آنقدرها هم آسان نیست. پرخوری نه تنها وزن شما را به خطر می اندازد، بلکه موجب عدم تعادل هورمونی و بیماری ها در می شود. آب رسانی به بدن، مصرف دسرهای سالم، خواب کافی، خام خواری و استفاده از کالری شمار از جمله کارهاییست که موجب می شود با مصرف غذای کمتر سیری بیشتری را احساس کنید.

یکی از روش های کاهش وزن این است که با مصرف غذای کمتر احساس سیری بیشتری کنید. پس چه کنیم تا این احساس سیری را در بدن افزایش دهیم؟ اگر می خواهید لاغر شوید، اما احساس گرسنگی به شما این اجازه را نمی دهد، این مقاله را از دست ندهید.

آب رسانی به بدن

مصرف غذای کمتر- تغذیه- عیدی

از خود بپرسید که آیا واقعا گرسنه ام، یا تنها این تشنگیست که به من فشار می آورد؟ هیپوتالاموس، هم مسئول تنظیم گرسنگی و هم تشنگی در مغز است. کم آبی موجب اختلال در این سیگنال ها می شود. گاهی فقط تشنه اید، اما مغز شما به اشتباه سیگنال گرسنگی دریافت می کند. در طول روز، در میان وعده ها، مخصوصا وقتی هوس شیرینی جات کردید، زیاد آب بنوشید. به جای ۸ لیوان آب در روز، نیمی از وزن بدن خود را به اونس تبدیل کنید و به همان میزان آب بنوشید.

دسرهای سالم

مصرف غذای کمتر- تغذیه- عیدی

وقتی بیرون از خانه غذا می خورید، امکان انتخاب غذاهای ناسالم بسیار زیاد است. اگر می خواهید با مصرف غذای کمتر سیر شوید؛ وقتی به رستوران می روید، تا آماده شدن وعده ی اصلی یک کاسه سوپ یا سالاد سبزیجات سفارش دهید. فقط سوپ های چرب یا پر خامه سفارش ندهید. سبزیجات، کالری بسیار کم اما فیبر زیادی دارند و شما را تا مدت ها سیر نگه می دارند.

خواب کافی

مصرف غذای کمتر- تغذیه- عیدی

آیا تا به حال شنیده اید، کم خوابی موجب افزایش وزن شود؟ بله کاملا درست است. افرادی که کمتر از ۵ ساعت در شبانه روز می خوابند، لیپید های بیشتری در بدنشان تولید می شود. این لیپیدها اندوکانبایوئید نام دارند و مسئول غذا خوردن از روی سرخوشی هستند. این اندوکانبایوئیدها بسیار شبیه به شاهدانه هستند و به همان گیرنده هایی می چسبند که به مواد فعال موجود در ماریجوانا می چسبند. به همین دلیل است که کم خوابی موجب پرخوری می شود.

اگر خوابتان نمی برد، دلیل آن را به صورت ریشه ای جست و جو کنید. آیا نزدیک به زمان خواب غذا خورده اید؟ آیا دچار استرس شده اید؟ آیا زیاد کافئین مصرف کرده اید؟ دلیل آن هر چه باشد، باید برطرف شود، چرا که در غیر این صورت برنامه ی کاهش وزن شما را مختل خواهد کرد.

پیشنهاد عیدی: راه هایی برای لذت بردن از یک خواب آرام

خام خواری

مصرف غذای کمتر- تغذیه- عیدی

گاهی هوس چیپس و پفک می کنیم، دلیل آن هم بیشتر استرس، عصبانیت و حالات روحی است. اگر تنها دوست دارید چیزی بجوید، به جای چیپس و پفک به سراغ سبزیجات خام بروید. آنها هم همین احساس را به شما می دهند. به سراغ هویج، سیب و خیار بروید و آنها را با صدا بجوید تا این احساس جویدن ارضا شود.

انتخاب های سالم

مصرف غذای کمتر- تغذیه- عیدی

گاهی ما کابینت ها را برای فرزندان و میهمانان خود پر از جانک فودها و غذاهای ناسالم می کنیم، غافل از اینکه خودمان نیز برای خوردن آنها وسوسه خواهیم شد. کابینت ها را از این مواد مضر خالی کنید و گزینه های سالمتری را جایگزین کنید. هر گونه غذای حاوی مواد مصنوعی، شیمیایی، روغن های نباتی فرآوری شده و مواد قندی را از لیست خود حذف کنید.

صبحانه ی پروتئینی

مصرف غذای کمتر- تغذیه- عیدی

مصرف غذای کمتر به معنای مصرف صبحانه های پر کربوهیدرات مثل غلات شیرین نیست. این مواد قندی موجب افزایش ناگهانی قند خون و انسولین در ساعات ابتدایی روز می شود. پس از این افزایش ناگهانی، همیشه یک افت رخ می دهد. این افت موجب برانگیختگی و تمایل بیشتر به پرخوری می شود. شروع روز با یک صبحانه ی سرشار از پروتئین مثل تخم مرغ یا ماست شما را از خوردن غذاهای پرچرب و شیرین در ادامه ی روز باز می دارد.

کالری شمار

مصرف غذای کمتر- تغذیه- عیدی

برای مصرف غذای کمتر، از کالری شمار نیز می توانید استفاده کنید. بسیاری از ما نمی دانیم چه مقدار کالری در روز مصرف کنیم. اگر مصرف کالری های شما بیش از کالری مورد نیاز بدنتان باشد، دچار اضافه وزن خواهید شد. استفاده از یک کالری شمار، حتی برای یک مدت کوتاه چشم شما را به واقعیت ها باز خواهد کرد. شمارش کالری غذاها، میان وعده ها و نوشیدنی ها به شما میزان درست مصرف آنها را نشان خواهد داد. با کالری شمار خود رو راست باشید و کالری خوراکی های خود را حساب کنید.

غذا خوردن آگاهانه

مصرف غذای کمتر- تغذیه- عیدی

پرخوری نا آگاهانه بسیار شایع است و اغلب زمانی رخ می دهد که دچار استرس، خستگی و  اضطراب هستید. اگر به این مشکل دچار هستید، مراقب غذا خوردن خود باشید. می توانید یک کتاب خوب مطالعه کنید، با یک مربی ورزشی مشورت کنید و یا تنها آگاهانه تر غذا بخورید. اگر گرسنه نیستید اما دلتان هله هوله می خواهد، دست ها را روی شکم بگذارید و ده بار نفس عمیق بکشید. نفس عمیق اکسیژن را به مغز می رساند و سیستم عصبی را آرام می کند. در نتیجه موجب می شود انتخاب های سالم تری انجام دهید.

کاری از گروه محتوای عیدی

ویندوز ۱۰ و مروری بر قابلیت های ابزار جدید تهیه اسکرین شات در آن

۲۷ تیر ۱۳۹۷


تعداد بازدید ها:
۲۰

در بروزرسانی رد استون ۵ ویندوز ۱۰ که هم اکنون به صورت «Insider Preview» (نسخه‌ی آزمایشی) در دسترس است، ابزار جدیدی به آن اضافه شده است که امکان تهیه‌ی اسکرین شات با امکانات مدرن و جدید را به کاربر می‌دهد. یک کلید میانبر جدید نیز به ویندوز اضافه شده است که می‌توانید به کمک آن از بخشی از تصویر خود اسکرین شات تهیه کرده و در آن حاشیه‌نویسی کنید.

این ویژگی در حال حاضر تنها در «Insider Preview» در دسترس است و در بروزرسانی پاییزه‌ی ویندوز به آن اضافه خواهد شد.

تفاوت این ابزار با سایر ابزارهای تهیه‌ی اسکرین شات در ویندوز چیست؟

راه‌های زیادی برای تهیه اسکرین شات در ویندوز ۱۰ وجود دارد. یکی از راه‌ها استفاده از کلید ترکیبی «Windows + Print Screen» است تا اسکرین شات با پسوند PNG در پوشه‌ی «PicturesScreenshots» ذخیره شود، یا با زدن کلید «Print Screen» به صورت تنها، کل تصویر در کلیپ بورد شما کپی می‌شود، همچنین با استفاده از کلید ترکیبی «Alt + Print Screen» تنها تصویر پنجره‌ای که در حال حاضر فعال است گرفته خواهد شد (توجه داشته باشید که دکمه‌ی «Print Screen» در برخی از کیبوردها به نام «PrtScn» یا «Print» یا اسامی مشابه نوشته شده است). امکان استفاده از ابزار «Snipping Tool» نیز وجود دارد که اجازه‌ی دریافت اسکرین شات از بخش مورد نظر را به ما می‌دهد.

در رد استون ۵، یک کلید میانبر به کیبورد اضافه خواهد شد که ابزار اسکرین شات جدید ویندوز را باز خواهد کرد تا بتوانید از بخش مورد نظر یا کل صفحه به انتخاب خود اسکرین شات گرفته و به کلیپ بورد خود اضافه نمایید. همچنین یک اپلیکیشن به نام «Screen Sketch» نیز در آن اضافه می‌شود که به شما اجازه‌ی حاشیه‌نویسی در این اسکرین شات‌ها را می‌دهد.

چگونه از ابزار برش جدید ویندوز استفاده کنیم؟

برای استفاده از ابزار برش تصویر جدید در ویندوز، کلید‌های «Windows + Shift + S» را فشار دهید. در نسخه‌های قبلی ویندوز ۱۰، این کلید ترکیبی یک رابطی را برای شما باز می‌کند که اجازه‌ی کپی کردن بخش خاصی از صفحه به حافظه‌ی کلیپ بورد را می‌دهد. ولی در رد استون ۵، یک نوار اسکرین شات جدید نیز در بالای صفحه اضافه خواهد شد.

این نوار شامل چهار دکمه می‌شود. این دکمه‌ها از چپ به راست به ترتیب امکان تهیه‌ی تصویر مستطیلی، تصویر با شکل آزاد، تصویر تمام صفحه و بستن ابزار را به ما می‌دهند.

Screenshot tool

برای گرفتن تصویری مستطیلی از صفحه‌ی خود، گزینه‌ی اول از چپ را بزنید و سپس ماوس خود را در بخش مورد نظر از صفحه بکشید.

برش مستطیلی تصویر

برای تهیه‌ی اسکرین‌شات از بخشی که مستطیلی نیست، گزینه‌ی دوم از سمت چپ را زده و ماوس خود را دور محیطی که قصد تهیه‌ی تصویر از آن را دارید، بکشید.

برش آزاد

برای گرفتن اسکرین شات از کل تصویر، گزینه‌ی سوم را بزنید. اگر کلا قصد اسکرین شات گرفتن را ندارید، گزینه‌ی آخر را زده یا از کلید «ESC» استفاده کنید تا این ابزار بسته شود.

اسکرین شاتی که از این طریق تهیه می‌کنید، به کلیپ بورد شما اضافه خواهد شد و در جایی ذخیره نمی‌شود. در هر نرم‌افزاری که از تصاویر پشتیبانی کنند، می‌توانید با استفاده از کلیدهای «Ctrl + V» یا انتخاب گزینه‌ی «Paste» تصویر خود را در آن وارد کنید.

اگر کلیپ بورد جدید ویندوز ۱۰ را در رد استون ۵ فعال کرده باشید، می‌توانید با استفاده از کلیدهای «Windows + V» به تاریخچه‌ی اسکرین شات‌هایی که گرفته‌اید یا هر چیزی که کپی کرده‌اید دسترسی پیدا کنید.

حافظه‌ی کلیپ بورد جدید ویندوز 10

همچنین می‌توانید ویندوز را به گونه‌ای تنظیم کنید که با فشار دادن کلید «Print Screen» ابزار اسکرین شات جدید ویندوز نمایان شود. برای این کار به «Settings» رفته و از طریق بخش «Ease of Access» وارد گزینه‌ی «Keyboard» شوید. در اینجا گزینه‌ی «Use the Print Screen key to launch screen snipping» را فعال نمایید.

این کلید میانبر به طور پیشفرض خاموش است، ولی پس از عرضه‌ی رد استون ۵ قادر خواهید بود به جای آن از کلید ترکیبی «Windows + Shift + S» استفاده کنید.

استفاده از کلید Print Screen

چگونه از ابزار جدید Screen Sketch استفاده کنیم؟

پس از تهیه‌ی یک اسکرین شات پیغامی به شما نمایش داده خواهد شد. برای باز کردن اسکرین شات جدید خود در «Screen Sketch» تنها کافی است بر روی این اعلان کلیک کنید. همچنین می‌توانید «Screen Sketch» را از طریق منوی استارت خود همانند هر اپلیکیشن دیگری اجرا نمایید.

اعلان اسکرین شات جدید

«Screen Sketch» تعدادی ابزار ابتدایی برای کار کردن بر روی اسکرین شات‌ها را در اختیارتان قرار می‌دهد. ابزارهایی نظیر خودکار، مداد، هایلایتر، پاک کن، خط کش و گزینه‌های مربوط به بریدن تصویر برای حاشیه‌نویسی و ویرایش اسکرین شات‌ها در دسترستان قرار دارد. همچنین گزینه‌های «Undo» و «Redo» را نیز مشاهده می‌کنید.

با کلیک کردن بر روی گزینه‌ی «New Snipping» در سمت چپ نوار ابزار قادر به تهیه‌ی اسکرین شات‌های بیشتر خواهید بود. با کلیک کردن بر روی گزینه‌ی «Open File» می‌توانید هر تصویری را در این ابزار باز کنید. پس از اتمام کار، بر روی گزینه‌ی «Save As» کلیک کنید تا تصویرتان ذخیره شود یا گزینه‌ی «Copy» را بزنید تا تصویر در کلیپ بورد شما قرار بگیرد تا به سادگی بتوانید در اپلیکیشن مورد نظر آن را «Paste» کنید. گزینه‌ی «Share» نیز وجود دارد تا به راحتی بتوانید تصویر را در هر اپلیکیشنی به اشتراک بگذارید.

همچنین از آنجایی که این اپلیکیشن از «Sets» در ویندوز ۱۰ پشتیبانی می‌کند، می‌توانید در یک پنجره بر روی چندین اسکرین شات به طور همزمان کار کنید.

sets در ویندوز 10

این نرم‌افزار در واقع بر اساس «Screen Sketch» ساخته شده است که در اصل برای محیط کاری «Windows Ink» در ویندوز قرار گرفته بود تا کاربران بتوانند با قلم در داخل آن کار کنند. البته اگر قلم هم نداشته باشید و از ماوس یا صفحه‌ی لمسی هم استفاده کنید باز این ابزار می‌تواند امکانات خوبی را در اختیارتان بگذارد.

اگر این مطلب برای شما مفید بوده است، مطالب زیر نیز می‌توانند برایتان کاربردی باشند:

^^

آیا این مطلب برای شما مفید بود؟



تمام حقوق قالب و محتوای سایت محفوظ است و هرگونه کپی برداری غیر قانونی و بدون اجازه از سایت پیگرد قانونی دارد