۱۳۸۹/۰۲/۰۹

سري فيبوناچي و دات نت 4 !


سري معروف فيبوناچي كه معرف حضور شما هست. سري از اعداد است كه هر عدد آن مساوي حاصل جمع دو عدد ماقبل آن است. دو عدد اول اين سري هم 0 و 1 هستند.
اگر بخواهيم اين الگوريتم را به صورت يك متد بازگشتي نمايش دهيم به صورت زير خواهد بود:

public static int Fibonacci(int x)
{
if (x <= 1)
return 1;
return Fibonacci(x - 1) + Fibonacci(x - 2);
}

اين الگوريتم چند مشكل دارد:
الف) براي اعداد بزرگ حتي با بكارگيري Int64 و يا double و امثال آن هم باز به جواب نخواهيم رسيد (براي مثال 1500 را بررسي كنيد).
ب) بسيار كند است.

در دات نت 4 براي كار با اعداد بزرگ، فضاي نام System.Numerics معرفي شده است كه حاوي نوع جديدي از اعداد به نام BigInteger است.
اكنون اگر الگوريتم سري فيبوناچي را بر اساس اين نوع داده جديد بازنويسي كنيم خواهيم داشت:

using System;
using System.Collections.Generic;
using System.Numerics; //needs a ref. to this assembly

namespace Fibonaci
{
public class CFibonacci
{
public static int Fibonacci(int x)
{
if (x <= 1)
return 1;
return Fibonacci(x - 1) + Fibonacci(x - 2);
}

public static IEnumerable<BigInteger> BigFib(Int64 toNumber)
{
BigInteger previous = 0;
BigInteger current = 1;

for (Int64 y = 1; y <= toNumber; y++)
{
var auxiliar = current;
current += previous;
previous = auxiliar;
yield return current;
}
}
}
}
و مثالي در مورد نحوه استفاده از آن:

using System;
using System.Linq;

namespace Fibonaci
{
class Program
{
static void Main()
{
foreach (var i in CFibonacci.BigFib(10))
{
Console.WriteLine("{0}", i);
}

var num = 12000;
var fib = CFibonacci.BigFib(num).Last();
Console.WriteLine("fib({0})={1}", num, fib);

Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
}

براي نمونه با عدد 12000 خروجي برنامه در كسري از ثانيه (و نه چند دقيقه يا ساعت) به شرح زير خواهد بود:

fib(12000)=514263424911336592579396579289954520826834443526829600435873863248622
65414020714013892551476261070010099275571144059579167356039437242089427136323689
02207956221569622791450891447905907668251232675988098246382902426783148546665404
47372384043164600945249911273857878346679362876357499204290285069442042444471200
52292329349103672302428662317285015525888210397583707071480178840772972692357054
71823998861896761687119434646250991702691100894769561810834542099577336821493905
41651658937860506067011215222435859797671748514023462634575877112541265857011723
31453990415231608729534781720381122965899871018532003735284559342372552627132300
63895825396012087948050855095233633638445668687440232926253620457459973889510838
23542785159371236389909470974738599166720611351903568781845409425624666559791912
02212289710838873334773835118391287956725504426150461421914844191810523257658770
99885492757927034409234340065928400769741802132203888929463702342324148343605275
28928280472094493359682662519127203581813404104542972181231076224891404730611459
03321942693225066038987483163709402601230467054944349111055850348779989058517069
96087626795709205215727843443054577680024507650678240240742421270422674907476927
22422733945450760323640619100021663675080870429299040891840880753646474330069332
72320218334582268219906763463261387161318500503970491314781100556494361063341371
43577787961183154125538371204296752028496084633103476783071177779604042581017888
28257784920659671082363171157289668904381254080676855815524987553372657063695970
39668109161449140707240711279859427919912443872405284305891366802954763421905970
15206311458187449420118838775707435857999310870199585760807680179258273461000460
97527064929564528474349547038178370043823628944670926601955537657427194815893365
88494863101667547896798728140224921584809355334379707156342620570496834086358692
30946467203330676206265047960072392991634456381998479411463182171816379650120684
35082399788137090460167819041845511951296934273988759169877839532492294430334328
46972905198131530224288922834125154211248159843609629469051889033085360540770480
25633451201705370447586177546577777759300410144166197439355903631773088812515215
09638377918595294747887970034209028019490210394392422302403687059119407005858379
52137098994457236290005745735420803758853723206992134642997705010940581386168427
47382973672816710014652632509888958851675894223117421829434728942878605569971512
65291783384910157203679779458354245579846973830472593370160977523707902575129803
072039857524154149354311250529579592001

۱۳۸۹/۰۲/۰۸

كداميك از محصولات مهم تجاري 2010 مايكروسافت از ASP.Net MVC استفاده مي‌كنند؟


پاسخ : هيچكدام!
براي نمونه دو مورد از محصولات مهم تجاري و پر درآمد مايكروسافت در مقياس سازماني SharePoint و Exchange server هستند (البته اينجا منظور برنامه web access مربوط به Exchange server است). جالب اينجا است كه هر دو محصول، مبتني بر دات نت فريم ورك سه و نيم بوده و از ASP.Net WebForms استفاده مي‌كنند. تفاوت مهم آن‌ها با نگارش سال 2007 هر كدام، استفاده از ASP.Net Ajax مايكروسافت در اين محصولات است و همچنين استفاده‌ي وسيع از توانمندي‌هاي پاورشل 2 خصوصا امكان مديريت از راه دور پاور شل 2 كه براي مثال در برنامه web access مربوط به exchange server 2010 ، امكان مديريت خود exchange server را نيز فراهم آورده است يا در SharePoint 2010 جايگزين stsadm شده است (هر چند stsadm هنوز موجود است اما منسوخ شده در نظر گرفته مي‌شود).
به علاوه هر دو محصول فقط با ويندوزهاي سرور 2008 به بعد، آن هم نسخه‌ي 64 بيتي كار مي‌كنند. (البته از آنجائيكه هسته‌ي ويندوز 7 با هسته‌ي ويندوز سرور 2008 نگارش R2 يكي است (يا حداقل بر مبناي يك code base هستند)، SharePoint 2010 را بر روي ويندوز 7 شصت و چهار بيتي هم مي‌توان جهت آزمايش و توسعه نصب كرد)
يك دوره‌ي مديريتي SharePoint 2010 را مي‌توانيد در آدرس زير مشاهده نمائيد:
Microsoft SharePoint 2010 Administration

جهت اثبات اين مدعا (استفاده از WebForms و نه MVC) دو تصوير ذيل به اندازه‌ي كافي گويا هستند:

شيرپوينت 2010



Web Access در Exchange server 2010




۱۳۸۹/۰۲/۰۷

به روز رساني‌هايي جهت VS2010


تعدادي از ابزارهايي كه من از آن‌ها در VS.Net 2008 استفاده مي‌كنم اخيرا جهت VS2010 نيز به روز رساني شده‌اند كه ليست آن‌ها در ادامه ذكر خواهد شد:

الف) افزونه‌اي براي مرتب سازي كدهاي نوشته شده:
Regionerate : + و +

ب) افزونه‌اي جهت كار با SVN به كمك امكانات TortoiseSVN
VisualSvn : + و +

ج) افزونه‌اي كه بدون آن جدا كد نويسي در VS.Net لطفي ندارد!
Resharper : + و +

د) تم‌هاي مشكي جديد VS.Net 2010 جهت دوام آوردن بيشتر در تعداد ساعات بالاي كاري با اين محصول و خستگي كمتر چشم
New adapted themes

ه) ابزاري جهت code obfuscation
Eazfuscator : + و +

۱۳۸۹/۰۲/۰۴

آشنايي با الگوي M-V-VM‌ - قسمت پنجم


در اين قسمت قصد داريم از امكانات جديد اعتبار سنجي تعريف شده در فضاي نام استاندارد System.ComponentModel.DataAnnotations استفاده نمائيم. از سيلورلايت سه به بعد امكان استفاده از اين فضاي نام به سادگي در برنامه‌هاي سيلورلايت ميسر است (همچنين در برنامه‌هاي ASP.Net MVC)؛ اما براي كار با آن در WPF نياز به تعدادي متد كمكي مي‌باشد...

فهرست مطالب:
فصل 5- تعيين اعتبار ورودي كاربر و الگوي MVVM
  • مقدمه
  • معرفي برنامه فصل
  • مدل برنامه‌ي فصل
  • ViewModel برنامه فصل
  • View برنامه فصل


دريافت قسمت پنجم
دريافت مثال قسمت پنجم


تعدادي از منابع و مآخذ مورد استفاده در اين سري:

1. Model-View-ViewModel (MVVM) Explained
2. Model View ViewModel
3. DataModel-View-ViewModel pattern
4. 5 Minute Overview of MVVM in Silverlight
5. A Field Guide to WPF Presentation Patterns
6. An attempt at simple MVVM with WPF
7. WPF: If Heineken did MVVM Frameworks Part 1 of n
8. Modal dialogs with MVVM and Silverlight 4
9. How do I do… With the Model-View-ViewModel pattern
10. Intro to WPF MVVM
11. Introduction to MVVM pattern in WPF
12. Learning WPF M-V-VM
13. Binding Combo Boxes in WPF with MVVM
14. Model-View-ViewModel Pattern
15. Unit Testable WCF Web Services in MVVM and Silverlight 4
16. MVVM Part 1: Overview
17. Which came first, the View or the Model?
18. Stackoverflow's questions tagged with MVVM
19. WPF: MVVM (Model View View-Model) Simplified
20. WPF and MVVM tutorial 01, Introduction
21. WPF patterns : MVC, MVP or MVVM or…?
22. Silverlight, MVVM and Validation Part III
23. DotNetKicks.com - Stories recently tagged with 'MVVM'
24. DotNetShoutout - Stories tagged with MVVM
25. MVVM Light Toolkit
26. MVVM screen casts
27. What’s new in MVVM Light V3
28. Using RelayCommands in Silverlight 3 and WPF
29. WPF Apps With The Model-View-ViewModel Design Pattern
30. WPF MVVM and Showing Dialogs


آشنايي با الگوي M-V-VM‌ - قسمت چهارم


در اين قسمت، MVVM Light Toolkit مورد بررسي قرار گرفته است (دريافت، نصب، به همراه ارائه 4 مثال جهت معرفي توانمند‌ي‌هاي آن)

فهرست مطالب:
فصل 4- آشنايي با MVVM Light Toolkit
  • ساير كتابخانه‌ها و Framework هاي موجود MVVM
  • نصب قالب‌هاي MVVM Light Toolkit مخصوص VS.Net 2008
  • نصب قالب‌هاي MVVM Light Toolkit مخصوص VS.Net 2010
  • نصب Code Snippets مجموعه MVVM Light Toolkit در VS.Net 2008/2010
  • نصب فايل‌هاي بايناري كتابخانه‌ي MVVM Light Toolkit
  • نصب قالب‌هاي MVVM Light Toolkit مخصوص Expression Blend
  • بررسي صحت نصب كتابخانه‌ي MVVM Light Toolkit
  • استفاده از Code Snippets نصب شده
  • مثال اول - بررسي RelayCommand
  • مثال دوم - بررسي Messenger
  • مثال سوم - بررسي Blendability
  • مثال چهارم - بررسي EventToCommand


دريافت قسمت چهارم
دريافت مثال‌هاي قسمت چهارم

۱۳۸۹/۰۲/۰۳

آشنايي با الگوي M-V-VM‌ - قسمت سوم


در اين قسمت، WPF MVVM Toolkit مايكروسافت به صورت كامل بررسي شده است (دريافت، نصب، ارائه يك مثال به همراه توضيحات و ايجاد آزمون‌هاي واحد).

فهرست مطالب:
فصل 3- آشنايي با WPF MVVM Toolkit
  • مقدمه
  • نصب WPF Model-View-ViewModel Toolkit
  • معرفي برنامه‌ي فصل
  • داده‌هاي برنامه
  • مدل برنامه
  • ViewModel برنامه
  • View برنامه
  • افزودن Command به برنامه
  • ايجاد آزمون‌هاي واحد

دريافت قسمت سوم
دريافت مثال قسمت سوم

۱۳۸۹/۰۲/۰۲

آشنايي با الگوي M-V-VM‌ - قسمت دوم


در اين قسمت، يك مثال ساده، بدون استفاده از فريم ورك‌هاي متداول M-V-VM بررسي شده است. در قسمت‌هاي بعدي با يك سري از فريم ورك‌هاي موجود آشنا خواهيم شد.

فهرست مطالب:
فصل 2- معرفي مثالي مقدماتي از پياده سازي الگوي M-V-VM در WPF
  • مقدمه
  • ساختار پوشه‌هاي يك برنامه‌ي MVVM
  • معرفي برنامه‌ي فصل
  • مدل برنامه
  • View برنامه
  • ViewModel برنامه

دريافت قسمت دوم
دريافت مثال قسمت دوم


۱۳۸۹/۰۲/۰۱

آشنايي با الگوي M-V-VM‌- قسمت اول


در مورد الگوي MVVM پيشتر دو مطلب در اين سايت منتشر شده‌اند : + و +
مشكل عمده‌اي هم كه در مورد اين الگو وجود دارد كمبود منابع آموزشي آن به زبان ساده است. هر چند اين الگو از طرف خود مايكروسافت ارائه شده اما همانند ASP.Net MVC به آن پر و بال ندادند و شاهد چند ده كتاب منتشر شده در مورد آن نيستيم.
به همين جهت خلاصه‌اي چند قسمتي را در اين مورد تهيه كرده‌ام كه در طي روزهاي آتي ارائه خواهند شد.

فهرست قسمت اول:
  • M-V-VM چيست؟
  • آشنايي با اجزاي مختلف الگوي M-V-VM
  • مزاياي استفاده از الگوي M-V-VM
  • اصول كاري و بايدها و نبايدهاي الگوي M-V-VM
  • بايدها و نبايدهاي يك View
  • بايدها و نبايدهاي ViewModel
  • بايدها و نبايدهاي Model
  • مروري بر معايب الگوي M-V-VM



۱۳۸۹/۰۱/۲۵

انتشار VS2010


يكي دو روزي هست كه VS2010 منتشر شده و در اين مطلب خلاصه‌اي از لينك‌هاي مفيد مرتبط را جمع آوري كرده‌ام كه در ادامه ملاحظه خواهيد كرد:

دريافت فايل ISO اصلي
اين فايل ISO منتشر شده، نسخه‌ي نهايي است و تنها تفاوت آن با نگارش اصلي منتشر شده براي دارندگان اكانت‌هاي MSDN ، عدم درج سريال اصلي در فايل setup.sdb آن است (سريال درج شده در آن داراي تاريخ مصرف است و مدت دار مي‌باشد). تصاوير زير متعلق است به دارندگان اكانت‌هاي MSDN و همانطور كه مشاهده مي‌كنيد، محل وارد كردن سريالي اصلي كه يافته‌ايد، در فايل setup.sdb است. پس از آن نگارش Trial به صورت كامل نصب خواهد شد.








خلاصه‌اي از تازه‌ها و موارد مرتبط با VS2010 و دات نت 4

راستي! ReSharper 5.0 هم در همين زمان منتشر شده است.

۱۳۸۹/۰۱/۲۰

با كمك link blog ها در زمان خود صرفه جويي كنيد


اين مطلب در حقيقت خلاصه و چكيده‌ي RSS‌ خواني‌هاي دو سال اخير بنده است.
برخلاف فوروم‌هاي ايراني كه سعي مي‌كنند نقش تمام رسانه‌ها را به صورت يكجا بازي كنند، براي مشاهده مقالات جديد يا اخبار به روز فناوري‌هاي مرتبط، راهي بجر وبلاگ خواندن وجود ندارد (يك استثناء اينجا وجود دارد و آن‌هم مباحث وارز است. در اين يك مورد هم بيشتر فوروم‌هاي خارجي فعال هستند تا وبلاگ‌هاي آن‌ها).
خوب، در ابتدا هر سايتي كه به نظر با كيفيت است به ليست RSS reader ما اضافه مي‌شود و همينطور هر روز اين ليست بيشتر و بيشتر خواهد شد. ابتدا روزي نيم ساعت RSS خواني خواهيد داشت بعد مي‌شود روزي 2 ساعت و بعد از يك مدتي هم از كنترل خارج مي‌شود.
در لابلاي تمام اين سايت‌هايي كه من الان جمع آوري كرده‌ام و تعدادشان به چند هزار(!) مي‌رسد، چند سايت (حدود 30 سايت) هستند كه اصطلاحا link blog نام دارند و به صورتي پيوسته، خلاصه‌ي مفيد وبلاگ‌هاي روز را ارائه مي‌دهند (كه پشتكار آن‌ها قابل ستايش است).
اكنون كار من بجاي روزي چند ساعت زير و رو كردن مطالب RSS feed وبلاگ‌هايي كه ثبت كرده‌ام، صرفا به مرور سريع اين link blog ها خلاصه مي‌شود و انصافا گنجينه‌اي با ارزش هستند (خصوصا از اين جهت كه كار دست بوده و خودكار تهيه نمي‌شوند).
براي import ساده‌ي اين ليست، فايل opml آن‌ها ‌را از آدرس زير مي‌توانيد دريافت كنيد.


اين مجموعه براي راه اندازي يك سايت خبري كفايت مي‌كند ...

۱۳۸۹/۰۱/۱۳

ويديوهاي آموزشي MVVM


يك سري ويديوي رايگان آموزشي MVVM از مايكروسافت و همچنين شركت Infragistics در دسترس هستند كه جهت سهولت، ليست آن‌ها را ادامه مي‌توانيد مشاهده نمائيد: