افزودن یک ستون به DataGridView (به صورت هوشمند)

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

اضافه کردن یک سطر :
DataGridView_Name.Rows.Add();
اضافه کردن یک ستون :
DataGridView_Name.Columns.Add("Column_Name", "Header_Name");


حالا اگر بخواهیم وقتی که کاربر یکی از سلول های های ستون آخر را پر کرد یک ستون به DataGridView اضافه شود می توانیم از یک Event به نام CellBeginEdit استفاده کنیم. برای این کار باید یک Event در قسمت Form Designer پروژه به DataGridView خود اضافه کنید و یک تابع برای اضافه کردن ستون ایجاد کنید. در زیر مثالی از هر دو آورده شده است :

تعریف Event :

this.dataGridView_Name.CellBeginEdit += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.AutoAddColumn);


تعریف تابع AutoAddColumn :

private void AutoAddColumn(object sender, EventArgs e)
{
   // add a column to datagrid
   if (dataGridView_Name.CurrentCell.ColumnIndex == dataGridView_Name.ColumnCount - 1)
   {
      DataGridView_Name.Columns.Add("Column_Name", "Header_Name");
   }
}

با استفاده از CellBeginEdit ، هنگامی که یک سلول ویرایش می شود تابع AutoAddColumn اجرا می شود و اگر این سلول جزء سلول های آخرین ستون DataGridView باشد، با استفاده از تابع Add یک ستون به ستون های موجود آن اضافه می شود.   

فعال سازی TRIM در ویندوز 7


دستور یا قابلیت TRIM به طور پیشفرض در ویندوز سون فعال است ولی اگر می خواهید از فعال بودن آن مطمئن شوید و یا آن را غیر فعال کنید میتوانید از دستور زیر در Command Prompt ویندوز استفاده کنید. قبل از آن بدانید، TRIM یک نرم افزار یا پروسه در حال اجرا در کامپیوتر نیست و تنها یک دستور است که سیستم عامل برای پاکسازی هوشمند SSD از آن استفاده می کند. اگر سیستم عامل و فریمویر SSD از این قابلیت پشتیبانی کند، پس از این قابلیت استفاده می شود.

در Command Prompt ویندوز دستور زیر را تایپ کنید :

فعال سازی :
fsutil behavior query disabledeletenotify 0
غیر فعال سازی :
fsutil behavior query disabledeletenotify 1


علاوه بر این میتوانید در برنامه هایی مانند CrystalDiskInfo  ببینید که SSD شما از TRIM استفاده می کند یا خیر.

TRIM چیست ؟

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

دستور TRIM پس از اینکه SSD ها رواج یافتند، معرفی شد. دستور TRIM طراحی شده است تا سیستم عامل بتواند SSD را از صفحات اطلاعاتی که در حال حاضر به دلیل خذف شدنشان توسط کاربر یا سیستم عامل، نامعتبر هستند، آگاه کند. در طول عملیات delete ، سیستم عامل نه تنها سکتور ها را به عنوان "آزاد" برچسب گذاری می کند، بلکه یک دستور TRIM همراه با آدرس بلوک های مربوطه را نیز به SSD می فرستد. پس از آن دیگر SSD می داند که دیگر اطلاعات این آدرس ها را در طول "زباله رویی" (Garbage Collection) جابه جا نکند؛ و این باعث کاهش دستور های "نوشتن"، کاهش گستردگی نوشتن و افزایش عمر SSD می شود. SSD های مختلف با دستور TRIM ممکن است رفتار مختلفی داشته باشند و درنتیجه عملکرد نهایی میتواند در SSD ها، مختلف باشد. نسخه های مختلفی از سیستم عامل ها از دستور TRIM پشتیبانی می کنند برای مثال ویندوز 7 ماکروسافت یکی از این سیستم عامل ها می باشد.  

Jessica Chastain


خانم زیبایی که در تصیر بالا می بینید، "جسیکا جستین" (Jessica Chastain) بازیگر آمریکایی هستند که فیلم هایی مانند the Help ، Zero Dark Thirty ، Lawless و The Tree of Life بازی کردند. علاوه بر سینما، هنرنمایی در تلویزیون و تئاتر رو هم در کارنامه دارند و جالب اینکه در سال 2011 در هفت فیلم حظور داشته اند و به تنهایی برای بازی در فیلم the Help (به فارسی ترجمه شده : "خدمتکاران") نامزد بهترین بازیگر مکمل در اسکار، گلدن گلوب، بفتا و جایزه انجمن بازیگران شدند. سال 2011 از بین این فیلم ها، تنها فیلم "درخت زندگی" رو دیدم که اتفاقا از فیلم های موردعلاقه من هم بود و در این فیلم بود که با این بازیگر آشنا شدم. امسال هم نقش ایشون در فیلم Zero Dark Thirty به کارگردانی خانم "کاترین بیگلو" جایزه ی "بهترین بازیگر زن" در جوایز گلدن گلوب و نامزدی "بهترین بازیگر زن" در اسکار رو براشون به همراه داشته.    

(ویژگی های USB3 ) - تغییرات USB3 نسبت به USB2

 
USB3 یکی از تغییرات مهم در چند سال اخیر در حوزه ی کامپیوتر بوده است؛ در زیر خلاصه ی تغیرات و تفاوت های این تکنولوژی نسبت به نسخه ی دوم آن را می ببنید.

- SuperSpeed : نرخ جدید 5 Gbps انتقال اطلاعات که معادل 625 مگابایت بر ثانیه است.
- معماری گذرگاه دوگانه (Dual-Bus) : شامل Low-Speed ، Full-Speed ، High-Speed و SuperSpeed .
- جریان ترافیک غیر همزمان به جای جریان انتخابی.
- جریان دوطرفه همزمان Dual-Simplex برای سرعت SuperSpeed به جای جریان یک طرفه half-duplex .
- پشتیبانی از Streaming .
- تکنولوژی همگام سازی N-Go سریع.
- پشتیبانی از توان (برق) بالاتر.
- مدیریت توان بهتر.

برخی از اططلاحات بالا به شدت تخصصی هستند و من هم اطلاعاتی در مورد آنها ندارم ولی آنهایی که می توانم را در ادامه توضیح می دهم :
 Low-Speed ، Full-Speed ، High-Speed و SuperSpeed ، چهار نرخ انتقال متفاوت و مجزا هستند که نباید به عنوان چهار مشخصات استاندارد usb در نظر گرفته شوند. هر استاندراد کلی usb یک نرخ انتقال متفوت را معرفی کرده است در زیر این نرخ های انتقال را مشاهده می کنید. 

usb 1.0 : Low-Speed و Full-Speed
usb 1.1 : Low-Speed و Full-Speed
usb 2.0 : Low-Speed و Full-Speed و High-Speed
usb 3.0 : Low-Speed و Full-Speed و High-Speed و SuperSpeed

سرعت انتقال اطلاعات در هر از آنها به صورت زیر است :

Low-Speed : .1875 MB/s
Full-Speed : 1.5 MB/s
High-Speed : 60 MB/s
SuperSpeed : 625 MB/s

Streaming به معنی انتقال دائم و پیوسته اطلاعات از سوی یک ارائه کننده به کاربر نهایی است که بیشتر در حوزه ی چندرسانه ای یا multimedia مطرح است و احتمالا تا به حال با آن سر و کار داشته اید. برای مثال دیدن یک فیلم یا کلیپ در اینترنت نوعی از Streaming یا بخش "جریانی" به حساب می آید.

فناوری allway sync N-go یک فناوری برای همگام سازی (synchronization) اطلاعات وسایل جانبی در کامپیوتر های ویندوزی است، که از خود دستگاه جانبی اجرا می شود و نیازی به نصب ندارد.

Open AL چیست ؟


Open AL مخفف عبارت Open Audio Library به معنی "کتابخانه ی صوتی باز" به مجموعه ای از رابط های برنامه ی نویسی صوتی مولتی پلتفرم گفته میشود که برای رندرینگ موثر صدا در محیط سه بعدی طراحی شده است. سبک رابط های برنامه نویسی Open AL مشابه رابط های Open GL است که به احتمال زیاد بیشتر نامش را شنیده اید. نسخه های اولیه این نرم افزار متن باز بودند ولی نسخه های اخیر اختصاصی هستند و به وسیله ی شرکت Creative Technology توسعه داده می شوند. استفاده از Open AL باعث طبیعی شدن صدا در محیط های سع بعدی مانند بازی های رایانه ای میشود، برای مثال کاربر در حین حرکت در فضای سه بعدی (مجازی) می تواند رفتار طبیعی صوت را احساس کند. 
  

آیا SSD ها نیاز به Defragmentation دارند ؟

 
در هارد دیسک های معمولی Defragmentation یا "یکپارچه سازی" هارد باعث افزایش سرعت هارد می شود و بد نیست هر چند وقت یکبار اگر حال داریم(!) از این قابلیت استفاده کنیم ولی آیا SSD های جدید نیز نیازی به Defragmentation دارند یا خیر ؟
جواب این سوال، خیر است. در SSD ها قطعه ی مکانیکی وجود ندارد و در نتیجه زمان دستیابی صفر است و SSD برای دسترسی به اطلاعات مجبور نیست زحمت زیادی متحمل شود، پس Defragmentation در SSD مزیتی برای شما ندارد و تنها باعث کهولت SSD شما و کاهش عمر آن می شود. در یک کلام سرعت خواندن اطلاعاتی که یک قسمت SSD باشد و اطلاعاتی که در کل آن پراکنده باشد یکسان است. پس نیازی نیست به خود زحمت دهید SSD خود را Defragment کنید. یک بار دیگر تاکید می کنم نیازی نیست وقت خود و عمر SSD را به خاطر Defragmentation هدر دهید.

پرشین گیگ، سایتی که نه تنها شایستگی آن را داریم، بلکه به آن نیاز داریم.

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

برنامه محاسبه دترمینان ماتریس n*n

در این پست برنامه محاسبه دترمینان یک ماتریس مربعی دلخواه را برای شما گذاشته ام که خودم با زبان سی شارپ نوشته ام ولی نمیتوانم بگویم که کاملا بدون ایراد است ! 
اگر نمی دانید که دترمینان یک ماتریس n*n چگونه محاسبه میشود یا مانند من یادتان رفته است، می توانید به سایت الگوریتمستان (algorithmha.ir) مراجعه کنید که در آن به طور کامل طریقه ی محاسبه دترمینان توضیح داده شده است. 
واضح است که مهمترین بخش نوشتن این برنامه محاسبه ی دترمینان ماتریس است که با بسط ماتریس روی یک سطر یا ستون این کار صورت می گیرد. و برای این کار باید از یک تابع بازگشتی استفاده کنید. البته این تابع می تواند شکل های مختلفی داشته باشد. در ادامه روشی که برای نوشتن این تابع استفاده کرده ام را توضیح می دهم. برای این کار به یک تابع دیگر نیز احتیاج دارید که "ماتریس کهاد" ماتریس اولیه را محاسبه کند. نوشتن این تابع ساده است و تنها کافی است سطر و ستون گفته شده را از ماتریس حذف کنیم و مابقی درایه ها را به ماتریس حاصل انتقال دهیم.
می دانید که ماتریس را به صورت یک آرایه ی دو بعدی در نظر می گیریم. یک بار دیگر در نظر داشته باشید که برای نوشتن این برنامه باید ابتدا به طور کامل با مقدمات ریاضی آن اشنا باشید تا بتوانید آنها را در زبان بررنامه نویسی پیاده کنید. کد زیر را نگاه کنید. این کد من برای تعیین دترمینان ماتریس مربعی n*n است.



private float Determinant(float[,] matrix)
{
float determinant = 0;
int Size = sqrt(matrix.Length);
if (Size == 1)
{
   return matrix[0, 0];
}
else if (Size == 2)
{
   return (matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]);
}
else
{
   for (int i = 0; i < Size; i++)
   determinant += power(-1, (i+1)+1) * matrix[0,i] * Determinant(Kehad(matrix, 0, i));
}
return determinant;
}


تابع بالا کمی احمقانه به نظر می رسد، دلیلش هم تازه کار بودن من است ولی کاری که میخواهیم انجام دهیم را انجام می دهد. به طور خلاصه در تابع بالا اینقدر ماتریس را کوچک می کنیم تا به یک ماتریس دو در دو (2*2) برسیم و وقتی به آن رسیدیم هم که دترمینان از از "تفاضل حاصلضرب درایه های قطر اصلی از حاصلضرب قطر فرعی" به دست می آید و همه هم آن را می دانیم. این روش "بسط لاپلاس" نامیده می شود و در سایت الگوریتمستان کاملا توضیح داده شده است. 

نکات دیگری که در تابع بالا باید توضیح دهم یکی متغیر Size است که از جذر طول آرایه به دست می آید و همان تعداد سطر یا ستون ماتریس است. چون ماتریس "مربعی" است با محاسبه جذر طول آن (تعداد درایه های آن)، تعداد ستون ها یا سطر هایش مشخص می شود. (شاید روش بهتری هم برای اینکار باشد) اما بهر حال. در مورد تابع Kehad هم که گفتم که تابعی است که ماتریس "کهاد" یا mirror ماتریس اولیه را محاسبه می کند. تنها نکته ی اساسی تابع Determinant شاید "بازگشتی" بودن آن باشد که بدون استفاده از این شیوه شاید نتوان دترمینان ماتریس را محاسبه کرد. تابع Determinant خود را فراخوانی می کند ولی با هر بار فراخوانی، ماتریس کهاد کاتریس دور قبل به ان ارسال میشود و این چنین است که دترمینان یک ماتریس n*n محسابه می شود. در بالا ماتریس بر روی سطر اول (i == 0) بسط داده می شود. (پارامتر های دوم و سوم تابع کهاد، سطر و ستونی هستند که قرار است از ماتریس حذف شوند).
برنامه زیر که در آن از همین تابع استفاده شده است را می توانید برای محاسبه ی دترمینان ماتریس ها استفاده کنید ولی یادتان باشد که برای استفاده از آن باید .Net Framework روی کامپیوترتان نصب باشد. اگر به سورس برنامه احتیاج داشتید کافی است در قسمت نظرات مطرح کنید تا آن را برای شما قرار دهم. اگر برنامه مشکل دارد در بخش نظرات مطرح کنید تا بنده هم از آن مطلع شوم.

 لینک 1

لینک 2

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

تفاوت بین TextBox و Rich TextBox

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

Rich Textbox ها به شما امکان می دهند تا متن را فرمت بندی کنید. برای مثال رنگ یا فونت متن را تغییر دهید، یا URL ها را تشخیص دهید. به علاوه میتوانید متن انتخاب شده را تشخیص و تغییر دهید، در متن، تصویر درج کنید. البته در تکست باکس های معمولی نیز می توانید فونت و رنگ متن را تغییر دهید ولی تنها می توانید یک فونت برای کل متن داشته باشید؛ همچنین میتوانید انتخاب کنید که کل متن به حالت Bold یا UnderLine یا ... در آید ولی این انتخاب به کل متن تحمیل می شود ولی در RTB ها شما میتوانید مانند WordPad ویندوز عمل کنید و بسته به نیازتان قسمت های مختلف متن را ویرایش کنید. همچنین RTB ها قابلیت نمایش جدول را دارند و می توانید با انها فایل های RTF را باز یا ذخیره کنید. 

برنامه های Notepad (مشابه Textbox) و Wordpad (مشابه Rich Textbox) در ویندوز مثال خوبی برای این دو ابزار برنامه نویسی هستند. اگر با این دو برنامه کار کرده باشید میتوانید تفاوت های TB و RTB را متوجه شوید.