۱۳۸۸ فروردین ۷, جمعه

آپدیت با استفاده از TimeStamp

یکی از راههای جلوگیری از concurrency استفاده از مقایسه تمامی فیلدها در قسمت Where است . یعنی اینکه تمام فیلدهای جدول رو در قسمت Where قرار دهیم تا اینجوری اگر کسی از جای دیگه آپدیت کرده بود به مشکل برنخوریم.
یکی دیگه از راههای این کار استفاده از یک فیلد TimeStamp در جدول است. وقتی که یه سطر از جدول به روز رسانی میشود و یا اضافه میشود SQL Server بطور اتوماتیک این فیلد را تغییر میدهد. خوب ما میتوانیم از این کار برای جلوگیری از همزمانی استفاده کنیم:
برای این کار یک پارامتر از نوع Parameter تعریف کنید که از نوع باینری باشد(داده Timestamp مقادیر باینری را در خود نگه میدارد) باشه:


daUpdateCommand.Parameters.Add(new SqlParameter("@pTimeStamp", SqlDbType.Binary));


daUpdateCommand.Parameters["@pTimeStamp"].SourceVersion = DataRowVersion.Original;


daUpdateCommand.Parameters["@pTimeStamp"].SourceColumn = "TimeStampCol";



SourceVersion: در SqlDataAdapter.UpdateCommand استفاده میشود و مشخص میکند طی بروز رسانی از مقدار فعلی پارامتر استفاده شود یا از مقدار اصلی و اولیه.
DataRowVersion: نسخه DataRow را مشخص میکند. DataRowVersion یک مجموعه است که 4 مقدار Original ، Current ، Proposed و Default را در خود دارد. در کد بالا به دلیل اینکه میخواهیم از مقدار اصلی موجود در جدول استفاده کنیم از Original استفاده میکنیم
SourceColumn : هم ستونی را که باید این پارامتر از آن مقدار بگیرد را مشخص میکند.

۱۳۸۸ فروردین ۴, سه‌شنبه

Inherited Control

سلام
گاهی پیش میاد که میخوایم یه سری از کنترلهای ما (مثلا 10 تا تکست باکس داریم) ظاهرشون یه طور خاصی باشه یا اینکه همشون یه خصوصیت خاصی داشته باشن. یکی از کارهای ساده ای که میشه انجام داد اینه که از Inherited Control استفاده کنیم. برای این من منظور یه کلاس ایجاد کنید و اون رو از کنترل مورد نظر ارث بری کنین.
بیاین یه مثال رو بررسی کنیم:
فرض کنین میخوایم وقتی که اگر بیشتر از 70 درصد MaxLength هر تکست باکسی تو پروژه پر شد رنگش صورتی بشه و اگر بیشتر از 85 درصد پر شد رنگ نوشته ها قرمز بشه. ابتدا برای این کار یه کلاس به پروژه اضافه کنین. بعد کلاس رو باز کنین و اونو از کنترل TextBox ارث بری کنین:


class HDITextBox : System.Windows.Forms.TextBox


بسیار خوب حالا برای اینکه ممکنه این عدد 70 و 85 تغییر کنه دو تا خصوصیت برای کلاسمون در نظر میگیریم:



private double _WarnLevelMaxing =.85;


public double WarnLevelMaxing


{


get { return _WarnLevelMaxing; }


set


{


_WarnLevelMaxing = value;


}


}


private double _WarnLevelRisky=.70;


public double WarnLevelRisky


{


get { return _WarnLevelRisky; }


set


{


_WarnLevelRisky = value;


}


}


تنها کاری که مونده اینه که متد OnTextChanged رو override کنیم تا کاری که ما میخوایم رو انجام بده:



protected override void OnTextChanged(System.EventArgs e)


{


if (this.MaxLength > 0)


{


double currentLevel = Convert.ToDouble( this.Text.Trim().Length) / Convert.ToDouble(this.MaxLength);


if (currentLevel > _WarnLevelMaxing)


{


this.ForeColor = System.Drawing.Color.Red;


return;


}



if (currentLevel > _WarnLevelRisky)


{


this.ForeColor = System.Drawing.Color.Plum;


return;


}


if (currentLevel <= _WarnLevelRisky)


{


this.ForeColor = System.Drawing.Color.Black;


return;


}



}


base.OnTextChanged(e);


}



حالا پروژه رو Rebuild کنین و باید توی ToolBox یه کنترل جدید اضافه شده باشه. این کنترل دقیقا مثل یه تکست باکس معمولی هست فقط اون قابلیتی که شما میخواین رو هم داره.

۱۳۸۷ اسفند ۳۰, جمعه

یه روز قبل از عید تو کوه

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

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


از راست به چپ:خودم
حامد:میخواد دکترا بخونه در رشته مکانیک که امیدوارم موفق بشه
بهمن و امیر

آموزش SQL Server 2005

سلام
این هم فصل دوم کتاب آموزش SQL Server .عیده همتون مبارک .عیده منم مبارک .
فصل 2

۱۳۸۷ اسفند ۲۹, پنجشنبه

Delegate

سلام
در طی چند مقاله میخوام به Delegate ، ایونت و ارتباط بین این دو صحبت کنم.

Delegate قسمت اول:
Delegate ها را میتوان به عنوان یک جانگهدار هوشمند که رفرنسهایی را به چند متد نگه میدارد در نظر گرفت.اگر متدی بخواهد از طریق نمونه ای از یک Delegate فراخوانی شود باید در آن نمونه رجیستر شود. وقتی که رجیستر شد یک رفرنس به آن متد در مجموعه داخلی رفنسهای Delegate اضافه میشود که به آن Invocation List گفته میشود. Delegate ها میتوانند این مجموعه را بصورت همزمان یا غیر همزمان فراخوانی کنند. وقتی که یک Delegate فراخوانی شد همه متدهایی که در آن رفرنس دارند نیز اجرا میشوند.
Delegate ها نمیتوانند به هر متدی رفرنس داشته باشند بلکه باید signature متد با signature آن Delegate دقیقا یکی باشد.(signature به زبان ساده یعنی آرگومانها از نظر نوع و تعدا و همچنین مقدار برگشتی متد دقیقا یکسان باشد)
نحوه تعریف یک Delegate :





public delegate void MyDelegate(string myString);


از این Delegate متوجه میشویم که Delegate فقط میتواند به متدهایی که یک آرگومان از نوع string میگیرند و همچنین هیچ مقدار بازگشتی ندارند رفرنس داشته باشد.مثال: Delegate میتواند از متد زیر رفرنس داشته باشد:
مثال: Delegate میتواند از متد زیر رفرنس داشته باشد

1 private void MyMethod(string someString)


2 {


3 // method body here.


4 }


اما نمیتواند از متدهای زیر رفرنس داشته باشد:




private string MyOtherMethod(string someString)


{


// method body here.


}



private void YetAnotherMethod(string someString, int someInt)


{


// method body here.


}



با استفاده از کده زیر میتوانیم از یک Delegate نمونه بگیریم و یک متد را به Invocation List آن اضافه کنیم:


MyDelegate del = new MyDelegate(MyMethod);


del += new MyDelegate(MyOtherMethod);


برای فراخوانی آن متد (و کل Invocation List ) کافیست بنویسیم:

del("my string value");


اما شاید این سوال در ذهن شما نقش ببندد که چرا Delegate استفاده میکنیم؟ میتوان جوای این سوال را اینگونه داد:
1) Delegate به عنوان یک جانگهدار: در اغلب موارد ما میدانیم چه متدی باید اجرا شود و چه کدی باید در یک زمان اجرا شود. یکی از مواردی که میتوان به آن اشاره کرد این است که آنها راه دیگری را برای اجرای کد شما توسط کامپوننتهای دات نت فراهم میکنند بدون اینکه چیزی جز signature متد را بدانند. به عنوان مثال کامپوننت تایمر برای ایونت Tick خود نیاز به یک متد دارد. کامپوننت تایمر در حقیقت نمیداند شما چه کدی را برای این ایونت بنویسید فقط signature آنرا میداند. بنابراین وقتی که این ایونت را نوشتید این ایونت به invocation list مربوط به Delegate ایونت Tick اضافه میشود و هنگام رخداد ایونت Tick آن Delegate فراخوانی میشود. بنابراین Delegate ما را قدر میسازد که کدهایی را بنویسیم که بعدا به آنها متد یا متدهایی اضافه شود.

2) فراخوانی همزمان و غیر همزمان: همه Delegate ها را میتوان همزمان و غیر همزمان فراخوانی کرد. فراخوانی غیر همزمان را میشود با استفاده از BeginInvoke و EndInvoke و فراخوانی همزمان را میتوان با Invoke انجام داد.

3) کاربرد Delegate در ایونتها: اگر خدا بخواد در ادامه در مورد ایونتها بحث خواهیم کرد در آنجا خواهید دید که Delegate ها پایه ایونتها هستند. در حقیقت Delegate ها به عنوان یک لایه بین منتشر کننده ایونت(Publisher) و گیرنده ایونت(Subscriber) خواهد بود. به این معنی که گیرندگان ایونت میتوانند به Invocation List آن Delegate اضافه شوند بدون اینکه منتشر کننده چیزی راجع به آنها بداند. به این ترتیب Publisher لازم نیست چیزی راجع به Subscriber ها بداند.

4) دیگر استفاده های Delegate که فعلا آنها را بررسی نمیکنیم

۱۳۸۷ اسفند ۲۷, سه‌شنبه

کتاب آموزش SQL Server 2005

سلام دوستان
در چند روزه آینده کتاب آموزش برنامه نویسی با SQL Server 2005 رو براتون میذارم.یادتون نره من رو دعا کنیدا...ببینین مرامنامه اینه که اگه خوندین و چیزی یاد گرفتیم نیما رو تو دعاهاتون فراموش نکنین

فصل 1: اصول RDBMS

اصول RDBMS


۱۳۸۷ اسفند ۲۳, جمعه

آکورد آهنگ Sway از Dean Martin

سلام
امروز داشتم یه آهنگ بسیار زیبا از Dean Martin گوش میدادم. خیلی این آهنگ رو دوست دارم. دلم میخواست با گیتار بزنم. البته اینم بگم که گیتار رو مدت خیلی کمیه شروع کردم ولی خوب آرزو بر جوانان عیب نیست.کلا دو سه تا ریتم بلدم میخوام همه آهنگای دنیا رو با این سه تا بزنم . رفتم آکوردشو پیدا کردم ولی خوب چشمتون روزه بد نبینه فکر کنم عمرا نمیشه این آهنگ رو با این آکوردهایی که نوشته با گیتار زد.تو یه کلمه باید سه بار آکورد عوض کرد .
اینم لینکه آکورد آهنگ Sway از Dean Martin اگه کسی اینو میتونه با گیتار بزنه که خیلی خیلی کار درسته.

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

۱۳۸۷ اسفند ۲۲, پنجشنبه

216 Web Safe Color Chart

در اینجا کد رنگهای مناسب برای وب رو گذاشتن

216 Web Safe Color Chart

Readable Regular Expressions

یکی از ابزارهای مفید برای کار با عبارات با قاعده استفاده از اسمبلی زیر است. این اسمبلی Pattern را بصوزت کاملا قابل خواندن میسازد طوری که میتوان به سادگی آنرا درک کرد. برای شرح کار آن به مثالهای زیر توجه کنید. فرض کنید میخواهید شماره ملی هر فرد(در امریکا) را جهت اعتبار سنجی چک کنید.کد معمول آن بصورت زیر است:





static readonly Regex socialSecurityNumberCheck = new Regex(@"^\d{3}-?\d{2}-?\d{4}$");


این کد معادل آن است که بنویسیم :


static readonly Regex socialSecurityNumberCheck = new Regex(Pattern.With.AtBeginning


.Digit.Repeat.Exactly(3)


.Literal("-").Repeat.Optional


.Digit.Repeat.Exactly(2)


.Literal("-").Repeat.Optional


.Digit.Repeat.Exactly(4)


.AtEnd);



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

۱۳۸۷ اسفند ۲۱, چهارشنبه

Regular Expressions

عبارات منظم (Regular Expressions) وسیله ای را برای برنامه نویسان فراهم می کنند که بتوان به کمک آنها عبارات ، کلمه ها و الگوها ی مورد نظر را در یک رشته متنی (String) پیدا کرد. در اغلب موتور های جستجوی پیشرفته مانند Google یا Live Search از این روش استفاده می کنند و می توانند سرتاسر پایگاه داده را به طور کامل و در کمترین زمان جستجو کنند.




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




Regular Expressions محدود به یک زبان خاص نیست و اکثر زبانهای برنامه نویسی این امکان را درون خود قرار داده اند . عبارات منظم توسط یک پردازنده که درون زبان برنامه نویسی وجود دارد تفسیر(interpret) می شوند .عبارات منظم استفاده های زیادی در برنامه های کاربردی مختلف دارد . توسط بسیاری از ادیتورها (Text Editor) برای انجام اعمال مختلف بر روی رشته ها مورد استفاده قرار می گیرد . همچنین در بعضی از زبانهای برنامه نویسی نیز از موتور Regular Expressions استفاده می شود نظیر Perl, Ruby, TCL.




اصل Regular Expressions بر روی نظریه ماشینها و نظریه زبانهای صوری تکیه دارد که به طور خلاصه به چند مورد اشاره می کنیم:




: این علامت نشان دهنده or است . به عنوان مثال grayوgrey هر دو معنای خاکستری را می دهند. می توان نوشت : graygrey و یا به صورت gr(ae)y








? : این علامت نشان دهنده آن است که کاراکتری که قبل از آن قرار گرفته است می تواند وجود داشته باشد یا نداشته باشد. به عنوان مثال : colou?r متواند به دو صورت "color" و "colour". بیاید.








* : بعد از هر کاراکتری که قرار بگیر آن کاراکتر می تواند از صفر تا بینهایت بار تکرار شود . به عنوان مثال : ab*c را می توان نوشت : "ac", "abc", "abbc", "abbbc"و به همین صورت ادامه خواهد داشت.




+ : بعد از هر کاراکتری قرار گیرید آن کاراکتر حتما باید حداقل یک بار تکرار شود. به عنوان مثال : ab+c به صورت "abc", "abbc", "abbbc" ایجاد می شود . ایجاد "ac". اشتباه خواهد بود .




[] : نشان دهنده یک محدوده است . به عنوان مثال برای نشان دادن تمام حروف انگلیسی می نویسیم : [a-z] یا برای نشان دادن تمام حروف بزرگ و کوچک و اعداد می نویسم : [0-9A-Za-z]




() : برای گروه بندی استفاده می شودو به همین ترتیب .جدول زیر نمونه ای از سینتکس های Regular Expressions می باشد .





يك مثال ساده از Regular expression كه چك مي كند آيا رشته ورودي تماما عدد است يا تماما حرف:




10 using System.Text.RegularExpressions;


11 ...


12 const string ALL_NUMERIC_PATTERN = "[a-zA-Z]";


13 static readonly Regex All_Numeric_Regex =


14 new Regex (ALL_NUMERIC_PATTERN);


15 static bool AllNumeric ( string inputString )


16 {


17 if (All_Numeric_Regex.IsMatch ( inputString ))


18 {


19 return false;


20 }


21 return true;



}

Agent Johnson

سلام
امروز لینک دانلود یکی از Plug-in های مفید دات نت رو به نام Agent Johnson رو میذارم که داخل کد اشیای از نوع Disposable رو مشخص میکنه .با این کار میتونیم از using به نحو مفید استفاده کنیم. مطالب بیشتر رو میتونین از وبلاگ آقای نصیری در این آدرس بخونین.
موفق باشید

۱۳۸۷ اسفند ۲۰, سه‌شنبه

استفاده از یک HTTP Handler برای ترکیب فایلهای جاوا اسکریپتی و CSS

به نام خدا


استفاده از یک HTTP Handler برای ترکیب فایلهای جاوا اسکریپتی و CSS :

(دوستان عزیز نوشتن تو این ادیتور واقعا به درد نخوره خیلی اذیت میکنه مقاله ها رو با فرمت doc یا pdf میذارم که راحت باشین)

لینکه مقاله در دات نت سورس:
موفق باشید.

معرفی

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