<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-983233472140726193</id><updated>2011-08-02T05:13:47.770+04:30</updated><category term='LINQ'/><category term='Trick'/><category term='Download'/><category term='SQL Server 2008'/><category term='TFS'/><category term='SharePoint'/><category term='Windows Server 2008'/><category term='Build'/><category term='Kernel'/><category term='MonoDevelop'/><category term='Microsoft Surface'/><category term='Preprocessor Directives'/><category term='MAC OS'/><category term='Team Foundation Server 2008'/><category term='dotNet 4.0'/><category term='C#'/><category term='Visual Studio Team System Web Access 2008'/><category term='iPhone'/><category term='Microsoft Visual Studio Team System'/><category term='IE'/><category term='Operating System'/><category term='Entity Framework'/><category term='Silverlight'/><category term='Compile'/><category term='C# 4.0'/><category term='WebAccess'/><title type='text'>M.A. Engineer Group</title><subtitle type='html'>تجربیات و گفتنی های مفید در رابطه با تولید و توسعه نرم افزار</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5567201312675103162</id><published>2010-07-28T15:52:00.001+04:30</published><updated>2010-07-28T15:52:26.492+04:30</updated><title type='text'>مروری بر خانواده (Windows Embedded) شرکت مایکروسافت</title><content type='html'>&lt;p&gt;اگه دقت کرده باشید ما توی این وبلاگ در رابطه با مطالبی که منابع آنها به صورت زبان اصلی موجود می باشند توضیحات زیادی نمیدیم چون بهتر میدونیم که کسانی که به این نوع اطلاعات احتیاج دارند به سراغ منابع اصلی بروند به جای آنکه ما نقش یک مترجم را بازی کنیم. اما در رابطه با این مطلب به دلیل اینکه خودم به دنبل یک منبع فارسی می گشتم تا به صورت واضح توضیح داده باشه تا این مطالب را به شخص دیگری انتقال دهم بعد از جستجو های فراوان متوجه شدم که همچین منبعی وجود نداره به همین دلیل خودم دست به کار شدم تا این مطالب رو به زبان فارسی جمع کردم حالا که این مطالب آماده شده و جای خالی این مطالب به زبان فارسی حس میشه گفتم بد نیست که برای بقیه هم قابل استفاده باشه :&lt;/p&gt;  &lt;p&gt;مایکروسافت رسما در ماه نوامبر سال 1996 با انتشار ویندوز Embedded CE 1.0 وارد بازار این سیستم های عامل شد. از آن به بعد ، مایکروسافت تبدیل به یک خط کامل از گسترش و تولید این نسهخل از سیستم عامل شده است ، این شرکت باعث شده تا توسعه دهندگان و سازندگان دستگاه های مبتنی بر این سیستم های عامل قادر به ساخت نسل بعدی دستگاه های 32 بیتی شوند و به بعد از ساخت نسل جدید این دستگاه ها ساخت و تولید طیف وسیعی از محصولات و ابزار های این دستگاه ها.&lt;/p&gt;  &lt;p&gt;اولین نسخه ها از سیتم عامل های Embedded را در سیستم های (&lt;a href="#_ftn1_2221" name="_ftnref1_2221"&gt;[1]&lt;/a&gt;&lt;b&gt;POS&lt;/b&gt;) می توان جستجو کرد و بعد از آن با ورود نسخه NT از این سیستم عامل ها این سیستم عامل ها را با نام &lt;b&gt;Xpembedded (XP Embedded)&lt;/b&gt;&lt;b&gt; &lt;/b&gt;صدا می زدند.&lt;/p&gt;  &lt;p&gt;در زیر به تعدادی از ورژن های سیستم عامل های Embedded که توسط شرکت مایکروسافت در حال حاضر تولید می گردد اشاره می شود:&lt;/p&gt;  &lt;h4&gt;· Windows Embedded CE (Windows Embedded Compact)&lt;/h4&gt;  &lt;p&gt;یک سیستم عامل (Real Time ) &lt;a href="#_ftn2_2221" name="_ftnref2_2221"&gt;[2]&lt;/a&gt;برای ارائه تجربیات مهارت ها و قابلیت های کار آزموده به طیف وسیعی از کاربران مبتدی با سطح دانش و توانایی های پایین و همچنین کاربران حرفه ای و انواع دستگاه هایی که برپایه این گونه سیستم های عامل طراحی شده اند. از نسخه برای استفاده در کامپیوتر های بسیار کوچک و کارگذاشته شده (لوازم الکترونیکی ، تجهیزات الکترونیکی ، کنسول های بازی) استفاده می شود. این سیتم عامل از معماری پردازنده های &lt;b&gt;ARM , MIPS , SuperH , x86&lt;/b&gt; پشتیبانی می کند. برای مثال می توان به نسخه بسیار مخصوص این سیستم عامل که همان &lt;b&gt;Windows Mobile&lt;/b&gt;&lt;b&gt; &lt;/b&gt;می باشد می توان اشاره کرد که هم اکنون در بسیاری از تلفن های همراه استفاده می شود.&lt;/p&gt;  &lt;h4&gt;· Windows Embedded Standard&lt;/h4&gt;  &lt;p&gt;این نسخه از سیستم عامل های &lt;b&gt;Embedded&lt;/b&gt; همان نسخه بروز شده &lt;b&gt;Windows XP Embedded&lt;/b&gt; و جانشین موفق &lt;b&gt;Windows NT 4.0 Embedded&lt;/b&gt;می باشد که می توان گفت از تمامی کامپوننت های &lt;b&gt;Windows XP Professional&lt;/b&gt; به همراه تمامی توابع &lt;b&gt;API&lt;/b&gt; ، &lt;b&gt;Win32&lt;/b&gt; در آن استفاده شده است. در این سیستم عامل معماری های x86 و x64 پشتیبانی می شود و می توان از نرم افزار های زیر استفاده کرد :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Silverlight"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/.NET_Framework#.NET_Framework_3.5"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer_7"&gt;Internet Explorer 7&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Windows_Media_Player_11"&gt;Windows Media Player 11&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Remote_Desktop_Protocol"&gt;RDP 6.1&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Network_Access_Protection"&gt;Network Access Protection&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Baseline_Security_Analyzer"&gt;Microsoft Baseline Security Analyze&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;· Windows Embedded Automotive&lt;/h4&gt;  &lt;p&gt;این نسخه در دستگاه ها و سخت افزار هایی در خودرو ها و یا وسایل نقلیه مورد استفاده قرار می گیرد . در این سیستم عامل نرم افزار های استانداردی برای سرگرمی ، ارتباطات ، یکپارچگی ، آزمایشات و سرویس های متفاوتی که در وسایل نقلیه و خودرو ها مورد نیاز می باشد به همراه صد ها کامپوننت موجود در سیستم عمل &lt;b&gt;Windows Embedded CE R3 6.0&lt;/b&gt; جاسازی شده است. این ویندوز باعث شده تا شرکت های خودرو سازی سبک جدیدی از زندگی را به مشتریان خود ارائه دهند.&lt;/p&gt;  &lt;h4&gt;· Windows Embedded POSReady&lt;/h4&gt;  &lt;p&gt;Next generation of Windows Embedded Point of Service&lt;/p&gt;  &lt;p&gt;این سیستم عامل با قابلیت اتصال به ابزار های صنعت خرده فروشی برای بهینه سازی و منعطف کردن این صنعت تولید شده است. سیستم عامل &lt;b&gt;Windows Embedded Point of service&lt;/b&gt;&lt;b&gt; &lt;/b&gt;یک نسخه مخصوص از سیستم عامل &lt;b&gt;Windows&lt;/b&gt; &lt;b&gt;XP&lt;/b&gt; &lt;b&gt;Embedded&lt;/b&gt; می باشد که برای تمرکز بر بازار دستگاه های (&lt;b&gt;POS&lt;/b&gt;) که در بالا به آن اشاره شد در تاریخ &lt;b&gt;25&lt;/b&gt; &lt;b&gt;می&lt;/b&gt; &lt;b&gt;سال&lt;/b&gt; &lt;b&gt;2005&lt;/b&gt; توسط شرکت مایکروسافت تولید شد ( مانند دستگاه های پمپاژ سوخت ، ایستگاه های وارسی و دستگاه های ثبت دریافت پول نقد در فروشگاه ها )&lt;/p&gt;  &lt;h4&gt;· Windows Embedded HandHeld&lt;/h4&gt;  &lt;p&gt;این سیستم عامل بر اساس پلت فرم سیستم عامل &lt;b&gt;Windows Mobile 6.5&lt;/b&gt;&lt;b&gt; &lt;/b&gt;و برای نزدیک کردن دنیای موبایل با دنیای تجارت از جمله خرده فروشی ، صنایع وابسته به حرکت ، حمل و نقل و تدارکات و بهداشت طراحی و پیاده سازی شده است این سیستم عامل قابلیت های اتصال ، انعطاف پذیری برنامه و توانایی را به شرکت و ارگان استفاده کننده برای امنیت و قابلیت اداره مورد نیاز هدیه می کند. در کل این سیستم عامل برای جمع آوری و یکپارچگی اطلاعاتی که توسط کاربران در مکان های متفاوت و در حال حرکت ساخته شده است.&lt;/p&gt;  &lt;h4&gt;· Windows Embedded Enterprise&lt;/h4&gt;  &lt;p&gt;این نسخه از سیستم عامل ها شامل نسخه های کاملا کاربردی از ویندوز های شرکت مایکروسافت می باشد . این نسخه از سیستم عامل اختصاص داده شده است به قدرت دستگاه مورد استفاده تا به وسیله آن مشخص شود که دستگاه مورد نظر به چه نسخه ای از سیستم عامل ها احتیاج دارد و با چه نسخه از سیستم عامل ها سازگار می باشد و این که با کدام نسخه دارای انعطاف پذیری بیشتری خواهد بود . هنگامی که اندازه دستگاه ها یک مسئله مهم به شمار نمی آید ، توسعه دهندگان استفاده از این نسخه از ویندوز را توصیه می کنند تا کاربر متصدی آن دارای یک رابط بصری و گرافیکی متمایز بوده به همراه ، قابلیت اتصال ، قابلیت اطمینان در ساخت برنامه های امن. برنامه های کاربردی موفقیت آمیز که کاربر می تواند تصدی هایی شامل کیوسک ، سیستم های عابر بانک ، دستگاه های اعتباری ، کیوسک ، مجتمع کنترل اتوماسیون صنعتی ، مجتمع دستگاههای پزشکی ، و دستگاه های بازی را دارا باشد.&lt;/p&gt;  &lt;h4&gt;· Windows Embedded NAVReady&lt;/h4&gt;  &lt;p&gt;در این نسخه از ویندوز &lt;b&gt;Embedded&lt;/b&gt; که به نام NavReady می باشد مجموعه ای از ابزار های توسعه موجود می باشد که به شما اجازه می دهد تا به سادگی از دستگاه های دستی قابل حمل (&lt;b&gt;PNDs&lt;/b&gt;) استفاده کنید و به شما اجازه می دهد تا از امکاناتی مانند اتصال به خدمات آنلاین ، بلوتوث (برای قادر بودن در اتصال به تلفن های همراه) و رایانه های شخصی و اینترنت می باشد.&amp;#160; پایه و اساس این نسخه بر روی &lt;b&gt;Windows&lt;/b&gt; &lt;b&gt;Embedded&lt;/b&gt; &lt;b&gt;CE&lt;/b&gt; بنا شده است .&lt;/p&gt;  &lt;h4&gt;· Windows Embedded Server&lt;/h4&gt;  &lt;p&gt;و اما در نهایت نسخه سرور این ویندوز ها که یک نسخه کاملا کاربردی از سری سیستم عامل های سرور مایکروسافت که دارای مزایای امنیت ، قابلیت اطمینان می باشد و همچنین دارای امکانات در دسترس برای استفاده در راه حل های (&lt;b&gt;Embedded&lt;/b&gt;) شده که متشکل از سخت افزار به منظور ساخت نرم افزار و برنامه در نظر گرفته شده است. ویندوز سرور (&lt;b&gt;Embedded&lt;/b&gt;) شده است مورد استفاده برای ایجاد طیف گسترده ای از راه حل های سرور از جمله تصویربرداری پزشکی ، امنیتی و نظارتی ، اتوماسیون صنعتی و ارتباطات از راه دور می باشد.&lt;/p&gt;  &lt;hr align="left" size="1" width="33%" /&gt;  &lt;p&gt;&lt;a href="#_ftnref1_2221" name="_ftn1_2221"&gt;&lt;b&gt;[1]&lt;/b&gt;&lt;/a&gt; Point Of Sale مکان هایی که در آن ها تراکنش های مالی (خرید ، فروش) صورت می گیرد و تلاش می شود برای مدیریت این تراکنش ها از سخت افرا و نرم افزار ها کمک گرفت&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref2_2221" name="_ftn2_2221"&gt;&lt;b&gt;[2]&lt;/b&gt;&lt;/a&gt; سیستم عامل های بی درنگ سیستم عامل هایی هستند که برای نرم افزارهای بی درنگ مورد استفاده قرار می گیرند به این صورت که نیاز نرم افزار ها در لحظه داده می شود و بلا درنگ.(&lt;a href="http://en.wikipedia.org/wiki/Real-time_operating_system"&gt;مقصد&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5567201312675103162?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5567201312675103162/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/07/windows-embedded.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5567201312675103162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5567201312675103162'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/07/windows-embedded.html' title='مروری بر خانواده (Windows Embedded) شرکت مایکروسافت'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5281736803563990394</id><published>2010-07-28T15:50:00.001+04:30</published><updated>2010-07-28T15:50:24.599+04:30</updated><title type='text'></title><content type='html'>  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5281736803563990394?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5281736803563990394/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/07/blog-post.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5281736803563990394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5281736803563990394'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/07/blog-post.html' title=''/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5411509385120376736</id><published>2010-04-16T17:43:00.001+04:30</published><updated>2010-04-17T00:31:39.251+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C# 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='dotNet 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# 4 is not .Net 4</title><content type='html'>&lt;p align="justify"&gt;خوشبختانه بر خلاف انتظاری که داشتیم. برنامه هایی که با نسخه 4 از زبان #C نوشته می شوند، می توانند به صورتی نوشته و کامپایل شوند که برای اجرا مستلزم وجود همین نسخه از &lt;span dir="ltr"&gt;.Net Framework&lt;/span&gt; نباشند. برای مثال یک برنامه با C# 4.0 نوشته شود که بر روی &lt;span dir="ltr"&gt;.Net 3.5&lt;/span&gt; اجرا شود.&lt;/p&gt;  &lt;p dir="rtl" align="justify"&gt;وقتی در &lt;span dir="ltr"&gt;C# 4.0&lt;/span&gt; از ویژگی های Named and Optional Parameters که به تازگی در نسخه 4 آمده است، استفاده شود، مثلا وقتی یک متد به این صورت تعریف شود: &lt;/p&gt;  &lt;div dir="ltr" align="left"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: blue"&gt;public static void &lt;/span&gt;Test(&lt;span style="color: blue"&gt;int &lt;/span&gt;a, &lt;span style="color: blue"&gt;int &lt;/span&gt;b = 2, &lt;span style="color: blue"&gt;int &lt;/span&gt;c = 5)&lt;/font&gt; &lt;/div&gt;  &lt;p align="justify"&gt;در حالی که Traget Framework روی &lt;span dir="ltr"&gt;.Net 3.5&lt;/span&gt; تنظیم شده باشد، خروجی برنامه بر روی &lt;span dir="ltr"&gt;.Net 3.5&lt;/span&gt; بدون هیچ مشکلی و بدون نیاز به نصب &lt;span dir="ltr"&gt;.Net 4.0&lt;/span&gt; اجرا می شود. بنابر این با خیال آسوده از ویژگی Named and Optional Parameters در &lt;span dir="ltr"&gt;C# 4.0&lt;/span&gt; استفاده کنید و لذت ببرید. &lt;/p&gt;  &lt;p align="justify"&gt;البته در مورد &lt;font color="#0000ff" face="Courier New"&gt;dynamic&lt;/font&gt; اوضاع به همین ترتیب نیست، برای استفاده از آن &lt;strong&gt;باید&lt;/strong&gt; از اسمبلی &lt;font face="Courier New"&gt;Microsoft.CSharp&lt;/font&gt; نسخه 4.0 استفاده کرد. و همینطور در مورد &lt;font face="Courier New"&gt;Covariant&lt;/font&gt; و &lt;font face="Courier New"&gt;Contravariant&lt;/font&gt; نیز به همین منوال است.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 1:&lt;/font&gt; با توجه به اینکه ویژگی Optional Parameter در &lt;span dir="ltr"&gt;C/C++&lt;/span&gt; وجود داشت و جای خالی آن از ابتدا در #C حس می شد، می توان به طراحان این زبان خرده گرفت که اگر قرار بود این ویژگی اضافه شود چرا از ابتدا اضافه نشد؟ که البته دو حالت بیشتر وجود ندارد؛ 1. شیطنت های سیاسی و اقتصادی 2. اشتباه انسانی. در هر حال همین الان هم دیر نیست، دستشان درد نکند. &lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 2:&lt;/font&gt; هر چند، در کل! چون &lt;span dir="ltr"&gt;.Net 4.0&lt;/span&gt; حجمی در حدود 45 مگا بایت دارد، مطمئناً استفاده از همین Framework خیلی بهتر و آبرومندتر است.&lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 3:&lt;/font&gt; این پست بعد از تعدادی آزمایش برای نوع dynamic و covariant و contravariant به کلی ویرایش شده است.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5411509385120376736?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5411509385120376736/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/04/c-4-is-not-net-4_5268.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5411509385120376736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5411509385120376736'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/04/c-4-is-not-net-4_5268.html' title='C# 4 is not .Net 4'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-8765490876278012222</id><published>2010-04-08T01:00:00.001+04:30</published><updated>2010-04-08T22:22:11.550+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dotNet 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework'/><title type='text'>Entity Framework (مقدمه)</title><content type='html'>&lt;p align="justify"&gt;در زمانی که با Linq to SQL آشنا شدیم نام Entity Framework را نیز شنیدیم. اما بعد از بررسی متوجه شدیم که (نسخه آن زمان) Entity Framework در ظاهر مانند Linq to SQL است و تنها حسنی که دارد امکان برقراری ارتباط با بانکهای اطلاعاتی مختلف مانند Oracle، MySQL و … است ولی در باطن Entity Framework از بعضی از توابع مهم که در Linq to SQL پشتیبانی می شد، پشتیبانی نمی کرد. مانند Conatins یا Any که کاربرد بسیاری در نوشتن Query های جستجو دارد.&lt;/p&gt;  &lt;p align="justify"&gt;البته در آن زمان به این ویژگی مهم Entity Framework پی نبردیم که قابلیت پوشانیدن جزئیات بانک اطلاعات و ارائه یک مدل کاملا Conceptual را دارد. به عنوان مثال ما برای پیاده کردن یک ارتباط Many to Many در بانک اطلاعات از یک جدول سوم استفاده می کنیم که کلید های دو جدول دیگر را در خود نگهداری میکند. وقتی همین جداول توسط Entity Framework نگاشته (Map) می شود، فقط دو Entity با ارتباط Many to many به یکدیگر را خواهیم داشت که این شروع دید Conceptual است؛ درگیری با جزئیات کم و کمتر می شود و در عوض جای خود را به تفکر بر روی طراحی می دهد.&lt;/p&gt;  &lt;p align="justify"&gt;مفاهیم بسیار عمیق شی گرایی، در Entity Framework کاملا و واقعا قابل استفاده است! و این بزرگترین ویژگی آن به حساب می آید. برای مثال ارثبری می تواند یک مورد بسیار پر کاربرد باشد که دنیای ارتباط با بانک های اطلاعاتی رابطه ای (Relational یا RDBMS) را تغییر داده. و متاسفانه یا خوشبختانه باعث شده که شرکت های بزرگ نرم افزاری، فکر ایجاد بانک اطلاعاتی شی گرا (ODBMS) را بیشتر از خود دور کنند.&lt;/p&gt;  &lt;p align="justify"&gt;در 23 فروردین نسخه نهایی &lt;span dir="ltr"&gt;.Net Framework 4.0&lt;/span&gt; به همراه Visual Studio 2010 ارائه می شود که Entity Framework 4.0 نیز یکی از معجزه های ارائه شده در این محصول است. (مدتی است که نسخه RC قابل &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a&amp;amp;displaylang=en"&gt;دریافت&lt;/a&gt; است) و به گفته بسیاری، مایکروسافت با شنیدن و سنجیدن نظرات و پیشنهادات توسعه دهندگان نرم افزار های Model-Driven و Data-Driven ویژگی های Entity Framework را کامل کرده و در حال روانه کردن آن به بازار است.&lt;/p&gt;  &lt;p align="justify"&gt;مانند همیشه، ابزارها به سمتی می روند که تفکرِ بیشتر جای کار عملیِ (کد زدن و…) بیشتر را بگیرد. وقتی ما برای اولین بار به صورت واقعی از مفاهیم شی گرا در EF 4.0 استفاده کردیم. چند ده برابر اینکه روی موشواره (Mouse) کلیک کنیم یا بر روی صفحه کلید (Keyboard) تایپ کنیم، تفکر کردیم و با سرعت بیشتری به هدفی که مورد نظرمان بود رسیدیم.&lt;/p&gt;  &lt;p align="justify"&gt;به زودی یک یا دو پست در مورد EF با مثال کاربردی و عملی خواهیم داشت؛ چون برای اولین بار با نسخه غیر رسمی (RC یا Beta) یک نرم افزار (&lt;span dir="ltr"&gt;.Net 4.0&lt;/span&gt; و EF 4.0 و VS 2010 و …) مشغول ایجاد یک پروژه تجاری واقعی هستیم و طبق برنامه ریزی که کرده بودیم تا قبل از اتمام پروژه، نسخه نهایی (Release) از &lt;span dir="ltr"&gt;.Net 4.0&lt;/span&gt; به بازار خواهد آمد.&lt;/p&gt;  &lt;p align="justify"&gt;این یک ریسک بزرگ ولی با ارزش است!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-8765490876278012222?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/8765490876278012222/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/04/entity-framework.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/8765490876278012222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/8765490876278012222'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/04/entity-framework.html' title='Entity Framework (مقدمه)'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-441409469582509845</id><published>2010-03-17T14:50:00.022+03:30</published><updated>2010-03-17T20:10:12.640+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compile'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Preprocessor Directives'/><title type='text'>C# Preprocessor Directives  </title><content type='html'>&lt;p&gt;شاید تا به حال برایتان پیش آمده باشد که در یک پروژه بعد از پیاده سازی احتیاج پیدا کنید نسخه های متفاوتی از آن نرم افزار داشته باشید البته منظور از نسخه  این است که در یک نسخه تعدادی از خطوط (Compile) شوند و در نسخه دیگر نشوند ، راهی که می خواهم معرفی کنم کمک زیادی برای حل این مشکل است (حد اقل برای ما که همینطور بود) .&lt;/p&gt;&lt;p&gt;شاید تا الان برای این کار کد های خودتان را (Commnet) می کردید و بعد از ساختن نسخه مورد نظر برای ساخت نسخه های دیگر کد های (Commnet) شده را (UnCommnet) می کردید و نسخه های بعدی …این کار هم غیر استاندارد است و هم دارای درصد خطای بسیار بالا و بسیاری از ایراد های دیگر  و برای عبور از همه ی این موانع ما به شما استفاده از (Preprocessor Directives) را توصیه می کنیم و از این به بعد به جای (Preprocessor Directives) از (PD) استفاده می کنیم .&lt;/p&gt;&lt;p&gt;“دستورالعمل های پیش پردازنده” شاید این متن ترجمه مناسبی نباشد اما منظور را میرساند . این دستورالعمل ها باعث می شوند که روند (Compile) خطوط برنامه را بر اساس یک سری شرط تنظیم کنید .&lt;/p&gt;&lt;p&gt;حالا وقتشه که با لیست این (Preprocessor Directives) ها در #C آشنا شوید :&lt;/p&gt;&lt;span style="color:#ff00ff;"&gt;&lt;ul&gt;&lt;li&gt;#if &lt;/li&gt;&lt;li&gt;#else &lt;/li&gt;&lt;li&gt;#elif &lt;/li&gt;&lt;li&gt;#endif &lt;/li&gt;&lt;li&gt;#define &lt;/li&gt;&lt;li&gt;#undef &lt;/li&gt;&lt;li&gt;#warning &lt;/li&gt;&lt;li&gt;#error &lt;/li&gt;&lt;li&gt;#line &lt;/li&gt;&lt;li&gt;#region &lt;/li&gt;&lt;li&gt;#endregion &lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;p&gt;خوب از اول لیست شروع می کنیم :&lt;/p&gt;&lt;p dir="rtl"&gt;&lt;span style="color:#ff00ff;"&gt;if# , #else , #endif , #elif&lt;/span&gt; :&lt;/p&gt;&lt;p dir="rtl"&gt;همان کاری را انجام می دهد که همیشه انجام می داده . خطوطی که ما بین&lt;/p&gt;&lt;p dir="rtl"&gt;(if#) و (endif#) قرار میگیرد در صورت نیاز شما توسط (Compiler) محسابه می شود و در غیر این صورت محسابه نمی شود . (elif#) همان (else if) خودمان است .&lt;/p&gt;&lt;p dir="rtl"&gt;&lt;span style="color:#ff00ff;"&gt;define#&lt;/span&gt; :&lt;/p&gt;&lt;p dir="rtl"&gt;این (PD) تقریباً اصل مطلب حساب می شود چون زمانیکه شما با بقیه (PD) ها تنظیمات دلخواه خود را انجام داده اید با مشخص کردن (define#) تنظیمات شما مورد توجه (Compiler) قرار میگیرد و کد مورد نظر شما (Compile) میشود و در صورت نبودن (define#) کدهای شما توسط (Compiler) محسابه نمی شوند .&lt;/p&gt;&lt;p dir="rtl"&gt;*نکته :&lt;/p&gt;&lt;p dir="rtl"&gt;(define#)  باید بالای تمام (using) های استفاده شده در فایل باشد.&lt;/p&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;// preprocessor_if.cs &lt;br /&gt;#define DEBUG #define VC_V7 &lt;br /&gt;using System; &lt;br /&gt;public class MyClass &lt;br /&gt;{   &lt;br /&gt;    public static void Main()&lt;br /&gt;    {&lt;br /&gt;        #if (DEBUG &amp;amp;&amp;amp; !VC_V7)&lt;br /&gt;        Console.WriteLine("DEBUG is defined");&lt;br /&gt;        #elif (!DEBUG &amp;amp;&amp;amp; VC_V7&lt;br /&gt;        Console.WriteLine("VC_V7 is defined");&lt;br /&gt;        #elif (DEBUG &amp;amp;&amp;amp; VC_V7)&lt;br /&gt;        Console.WriteLine("DEBUG and VC_V7 are defined");&lt;br /&gt;        #else&lt;br /&gt;        Console.WriteLine("DEBUG and VC_V7 are not defined");&lt;br /&gt;        #endif&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Output :&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;DEBUG and VC_V7 are defined&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;همانطور که در بالا میبینید بعد از (define#) یک نام نیز برای آن مشخص می کنیم که بهتر است با حروف بزرگ مشخص شود مانند (DEBUG) و سپس در قسمت مورد نیاز که همان دستورات شرطی می باشد از آن استفاد می کنیم .&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff00ff;"&gt;undef#&lt;/span&gt; :&lt;/p&gt;&lt;p&gt;کاری که (define#) انجام میدهد یعنی باعث می شود کد شما مورد توجه (Compiler) قرار بگیرد دقیقاً برعکس کنید ، وظیفه (undef#) یعنی کد شما مورد توجه (Compiler) قرار نمیگیرد و به محسابه نمی شود .&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff00ff;"&gt;warning# , #error&lt;/span&gt; :&lt;/p&gt;&lt;p&gt;با این دو (PD) کد می توانید کاری کنید که در یکی از( Tool Windows) ها به اسم (Error List) که وظیفه نمایش (Error) ها ، (Warning) ها و (Message) ها را دارد پیغام شما را به صورت یک (Warning) یا (Error) بنا بر اینکه شما از کدام یک استفاده کرده باشید نمایش بدهد تا بعد ها بتوانید به راحتی قسمت کد مورد نظرتان را بعد از (Build) کردن پروژه پیدا کنید .&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;// preprocessor_if.cs&lt;br /&gt;#define DEBUG&lt;br /&gt;using System;&lt;br /&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;    public static void Main()&lt;br /&gt;    {&lt;br /&gt;        #warning Custom Warning&lt;br /&gt;        #error Custom Warning&lt;br /&gt;        Console.WriteLine("DEBUG and VC_V7 are not defined");&lt;br /&gt;        #endif&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color:#0080ff;"&gt;line#&lt;/span&gt; :&lt;br /&gt;&lt;p&gt;به شما اجازه می دهد تا (Compiler) را در هنگام (Compile) کردن به خطی که مورد نظر شما ست برود و بعد از گذشتن از آن خط دوباره به روال عادی خود بازگردد که در این مورد برای بازگشت به روال قبل استفاده از (line default#) این امکان را ایجاد می کند .&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;#line 20&lt;br /&gt;#line default&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;(line# default) مشخص می کند که Compiler بعد از رفتن به خط (20) به کجا بازگردد .&lt;/p&gt;&lt;p&gt;یک استفاده دیگر هم میتوان از آن کرد که به صورت زیر می باشد :&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;Console.WriteLine("Hidden line.");&lt;br /&gt;#line default&lt;br /&gt;Console.WriteLine("Normal line #2.");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;بعد از قرار دادن (BreakPoint) بر روی خطی که متن (“Hidden line”) را در خروجی درج می کند متوجه می شوید که با زدن (F10) هیچگاه به آن نمی رسید . خاصیت این  (PD) همین است.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#0080ff;"&gt;&lt;br /&gt;region# , #endregion :&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;فکر کنم با این (PD) بیشتر از بقیه آشنا هستید . همانطور که بهتر از من میدانید میتوانید با نوشتن (region#) در ابتدای کد هایتان و  در انتها هم با نوشتن (endregion#) به کد های خود خوانایی بیشتری ببخشید و آن قسمت از کدها که با این (PD) مشخص کردید رآ تبدیل به یک بلوک از کد کنید و با (Expand) کردن بلوک را باز کنید و سپس بلوک را ببندید و بعد از بستن بلوک تنها تیتر آن مشاهده می شود .&lt;br /&gt;&lt;div style="text-align: left;" dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;// preprocessor_if.cs&lt;br /&gt;#region MyClass definition&lt;br /&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;    public static void Main()&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;#endregion&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;حالا شاید پیش خودتون بگید که برای ساختن نسخه های دلخواه خودتون باید بالای هر فایلی که داخل اون از (PD) استفاده کردین مدام (define#) بنویسید و پاک کنید ?! ولی نه خیلی بهتر از این حرفاست :&lt;p&gt;روی Solution Configuration کلیک کنید .&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RisR4Pcir1I/S6DJ9lzwtjI/AAAAAAAAADE/9m3JzIEWh08/s1600-h/SolutionConfiguration.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 115px; height: 26px;" src="http://1.bp.blogspot.com/_RisR4Pcir1I/S6DJ9lzwtjI/AAAAAAAAADE/9m3JzIEWh08/s320/SolutionConfiguration.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5449577609076717106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;بعد از باز شدن زیر منوها گزینه Configuration Manager رو انتخاب کنید .&lt;div&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RisR4Pcir1I/S6DM1nj7JII/AAAAAAAAADM/mlrENAeAcAc/s1600-h/ConfigurationManager.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 199px;" src="http://4.bp.blogspot.com/_RisR4Pcir1I/S6DM1nj7JII/AAAAAAAAADM/mlrENAeAcAc/s320/ConfigurationManager.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5449580770643092610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;همونطور که توی عکس نشون داده شده رو ComboBox زیر Active Solution Configuration کلیک کنید و از منوی باز شده گزینه New رو انتخاب کنید .&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RisR4Pcir1I/S6DOtqzdDeI/AAAAAAAAADU/sBOkrqURvoI/s1600-h/NewSolutionConfiguration.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_RisR4Pcir1I/S6DOtqzdDeI/AAAAAAAAADU/sBOkrqURvoI/s320/NewSolutionConfiguration.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5449582833097838050" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;حالا کافیه در این قسمت نام هایی رو که فکر می کردین باید بالای هر فایلتون (define#) کنید رو اینجا بسازید تا بهتون اجازه بده به ازای هر اسمی که می سازید یک Setting جدا برای Compile شدن پروژه هاتون داشته باشید.&lt;/p&gt;&lt;p&gt;فقط یه نکته دیگه  باقی میمونه و اون هم اینه که شما به (VS)  بفهمونید که زمانیکه (Configuration) را ، شما روی هر حالت که قرار میدید کدام یک از (PD) هایی که شما در آن پروژه قرار داده اید فعال گردد برای این کار روی پروژه هایی که می خواید روی مد دلخواه شما Compile بشه چپ کلیک کنید و وارد Properties اون پروژه بشید :&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RisR4Pcir1I/S6DPMDJ_lUI/AAAAAAAAADc/gYAbfrePzUU/s1600-h/ProjectProperties.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 160px;" src="http://2.bp.blogspot.com/_RisR4Pcir1I/S6DPMDJ_lUI/AAAAAAAAADc/gYAbfrePzUU/s320/ProjectProperties.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5449583355030902082" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;سپس در گزینه (Conditional Compilation Symbols) نام (Solution Configuration) ی که نمونه اون رو در بالا ساختیم بنویسید به همین ترتیب برای پروژه های دیگه هم همین کار رو انجام بدید تا مشخص بشه هر پروژه بنا به (Active Solution Configuration) از چه تنظیماتی برای Compile شدن پیروی کند.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-441409469582509845?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/441409469582509845/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/03/compile.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/441409469582509845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/441409469582509845'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/03/compile.html' title='C# Preprocessor Directives  '/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RisR4Pcir1I/S6DJ9lzwtjI/AAAAAAAAADE/9m3JzIEWh08/s72-c/SolutionConfiguration.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5606886686965095912</id><published>2010-02-14T18:40:00.001+03:30</published><updated>2010-02-25T23:53:27.448+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='MonoDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='MAC OS'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>From MAC OS X 10.5 to iPad to Prohibition</title><content type='html'>&lt;p&gt;از زمانی که خبر تولید &lt;a href="http://www.apple.com/ipad/"&gt;iPad&lt;/a&gt; پخش شد ما هم کنجکاو شدیم ببینیم اصلا این پلتفرم های Apple چگونه اند! آیا واقعا همانند Unix هستند یا خیر!؟&lt;/p&gt;  &lt;p align="justify"&gt;برای شروع برنامه سازی برای iPad خواستیم برای iPhone برنامه بسازیم و مطلع شدیم که بهترین زبان در این مورد زبان &lt;a href="http://en.wikipedia.org/wiki/Objective-C"&gt;Objective-C&lt;/a&gt; می باشد که بسیار هم زبان چموشی به نظر می رسد. من به شخصه این زبان را نمی پسندم و احساس می کنم که به زور خواستند یک سری Extension را به خورد &lt;span dir="ltr"&gt;C/C++&lt;/span&gt; بدهند.&lt;/p&gt;  &lt;p align="justify"&gt;چند وقتی است که Novell یک محصول به نام &lt;a href="http://www.monotouch.net/"&gt;MonoTouch&lt;/a&gt; را معرفی کرده. با استفاده از آن می توان برنامه هایی Native برای iPhone نوشت، اما، به زبان &lt;span dir="ltr"&gt;C#&lt;/span&gt; و با استفاده از امکانات محدودتر شده از کتابخانه &lt;span dir="ltr"&gt;.Net&lt;/span&gt; به اضافه امکان استفاده از تمامی API های iPhone و از همه مهمتر با حظور Garbage Collector! البته این محصول مجانی نیست. مهمترین نکته در مورد آن این است که برنامه تولید شده توسط این ابزار Native است و بدون نیاز به نصب هیچ افزونه ای اجرا می شود. و با توجه به اینکه حتی خود Apple هم امکان GC را برای iPhone قرار نداده، وجود GC در این ابزار بسیار قابل توجه است. شاید تنها نقطه ضعف آن این است که حجم یک برنامه Hello Word که به وسیله MonoTouch ایجاد شده حدود 4MB خواهد بود. که این موضوع هم به دلایل بسیاری می تواند قابل چشم پوشی باشد (البته بسته به کاربرد).&lt;/p&gt;  &lt;p align="justify"&gt;وقتی فهمیدیم که MonoTouch به خوبی iPad را هم پشتیبانی می کند دیگر قانع شدیم که کلید برنامه نویسی راحت و تمیز برای iPad در دست MonoTouch است. برای آزمایش MonoTouch نسخه ی Trial آن وجود دارد. اما نصب و راه اندازی آن، کم پیش نیاز ندارد!&lt;/p&gt;  &lt;p align="justify"&gt;پیش نیاز ها به ترتیب عبارتند از:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;سیستم عامل MAC OS X&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;iPhone SDK&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Mono Framework&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;MonoDevelop&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;نصب MAC OS X بر وری VMWare خودش داستانی است که شاید یک پست دیگر می طلبد، خود ما هم از &lt;a href="http://bobhood.wordpress.com/2009/06/12/installing-ideneb-1-4-under-vmware-6-5-2/"&gt;اینجا&lt;/a&gt; کمک گرفتیم. بارها صفحه بالا آمدن MAC با آن سیب گاز زده را دیدیم ولی حتی محیط نصب هم بالا نیامد!&lt;/p&gt;  &lt;p align="justify"&gt;اما در آخر موفق شدیم.&lt;/p&gt;  &lt;p align="justify"&gt;در مورد iPhone SDK ظاهرا Apple هم در مورد ایران حساس است و نمی گذارد iPhone SDK را دانلود کنیم. به هر حال Torrent آنرا پیدا کرده و به همراه بقیه پیش نیاز ها نصب کردیم.&lt;/p&gt;  &lt;p align="justify"&gt;MonoDevelop به خوبی کار کرد و برنامه نوسی به زبان &lt;span dir="ltr"&gt;C#&lt;/span&gt; بر روی MAC OS امکانپذیر شد اما فقط برای برنامه های غیر iPhone ی. امکان ایجاد یک پروژه iPhone ی وجود داشت ولی هنگامی که می خواستیم فایل UI این پروژه را ویرایش کنیم به مشکل بر خوردیم.&lt;/p&gt;  &lt;p align="justify"&gt; Interface Builder نتوانست فایل xip (که در ایجاد UI کاربرد دارد) را باز کند و مشکل از نا هماهنگی نسخه ی iPhone SDK بود. ای کاش تحریم نبودیم و مجبور نبودیم یک فایل 2GB ی را دانلود کنیم و دست آخر متوجه شویم که اشتباه دانلود کردیم و ای کاش می شد هر چیزی را از مرجع آن دریافت کرد.&lt;/p&gt;  &lt;p align="justify"&gt;واقعا متاسفام که این تحریم به راحتی اثرات مشهودی بر کار ما می گذارد. خدا میداند! شاید همین تحریم باعث شد، چیزی شبیه iPad ساختیم و سپس SDK ی آنرا تولید کرده و بعد یک برنامه ساختیم مانند MonoTouch که بایت کد های CLI را به ساختار Native قابل اجرا برای آن دستگاه تبدیل کند! یا حتی از اول دستگاهی ساختیم که قابلیت اجرای بایت کد های CLI را داشته باشد. یا اصلا چرا این کارها! شاید اصلا خودمان Byte Code خودمان را تولید کردیم از نوع ملی و محلی و …!&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 1: &lt;/font&gt;&lt;font color="#000000"&gt;این شرکت هایی که نمی گذارند ایران از آنها سرویس بگیرد معمولا گناهی ندارند و فقط قانون را اجرا می کنند.        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 2: &lt;/font&gt;خوشبختانه &lt;span dir="ltr"&gt;C#&lt;/span&gt; و CLI هر دو &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa569283.aspx"&gt;استاندارد&lt;/a&gt; هستند و ما می توانیم از آنها استفاده کنیم و یا (اگر بتوانیم) پیاده سازی خودمان را داشته باشیم؛ بدون هیچ محدودیتی.      &lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#808080"&gt;پی نوشت 3: &lt;/font&gt;&lt;font color="#000000"&gt;این پست شامل چند ScreenShot از MAC OS X و MonoDevelop اجرا شده تحت آن بود اما متاسفانه (احتمالا باز هم بخاطر تحریم) پست با تصویر را نمی توان به راحتی از طریق نرم افزار Windows Live Writer ارسال کرد. البته پی گیری این امر از حوصله و وقت ما خارج بود.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5606886686965095912?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5606886686965095912/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/02/from-mac-os-x-105-to-ipad-to-tahrim.html#comment-form' title='8 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5606886686965095912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5606886686965095912'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2010/02/from-mac-os-x-105-to-ipad-to-tahrim.html' title='From MAC OS X 10.5 to iPad to Prohibition'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5814211346524347608</id><published>2009-12-25T00:22:00.001+03:30</published><updated>2009-12-26T13:29:13.276+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>تکان</title><content type='html'>&lt;p align="justify"&gt;متاسفانه وقتی مردم ما به یک تکنولوژی خو می گیرند به سختی می توان آنها را متقاعد کرد که دست کم در این مورد، به طور حتم آینده بهتر از گذشته خواهد بود.&lt;/p&gt;  &lt;p align="justify"&gt;مصداق بارز این موضوع در استفاده از IE 6.0 است. با وجود اینکه IE 7.0 و 8.0 کاملا رایگان هستند باز هم در بیشتر ادارات هنوز از IE 6.0 استفاده می شود (البته شاید اگر رایگان نبودند بیشتر مورد توجه قرار می گرفتند). IE 6.0 حتی قادر نیست فایل های تصویری PNG را به صورت Transparent نمایش دهد و اگر بتوان گفت که استاندارد است، با استاندارد های قدیمی سازگار است. وجود IE 6.0 باعث می شود که طراح سایت یا برنامه نویس بعضی از ویژگی های جدید را از دست بدهد تا سازگاری را بدست آورد.&lt;/p&gt;  &lt;p align="justify"&gt;گاهی اوقات کارفرما تصور می کند این که توسعه دهنده می گوید IE 6.0 را پشتیبانی نمی کنم بخاطر تنبلی اوست!&lt;/p&gt;  &lt;p align="justify"&gt;اما باید برای آن دسته از کارفرمایان یا مدیران گفت که خوشبختانه یا متاسفانه حتی خود مایکروسافت نیز در SharePoint 2010 دیگر از IE 6.0 پشتیبانی نمی کند!&lt;/p&gt;  &lt;p align="justify"&gt;امید است که ادرات ما تکانی به خود بدهند.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5814211346524347608?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5814211346524347608/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/12/blog-post.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5814211346524347608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5814211346524347608'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/12/blog-post.html' title='تکان'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-8316592796598292089</id><published>2009-10-02T15:05:00.001+03:30</published><updated>2009-10-02T15:18:51.654+03:30</updated><title type='text'>چگونگی آموزش #C به یک فرد کاملا مبتدی</title><content type='html'>&lt;p align="justify"&gt;این سوال همیشه در ذهنم بوده که اگر یک شخص&amp;#160; کاملا بی تجربه (به شرط داشتن حداقل هوش، استعداد و علاقه ی لازم)، در ابتدای دهه ی سوم از زندگی خود و در سال 2009 تصمیم به یادگیری برنامه نویسی داشته باشد باید از کجا شروع کند؟ ما در اواخر دهه ی 70 خورشیدی از انواع Basic یعنی GWBasic و QBasic و غیره شروع کردیم و به صورت رویه ای برنامه نوشتیم بعد به زبان های حرفه ای تر _اما همچنان رویه ای_ مانند Pascal و سپس C رجوع کردیم و به مرور زمان به زبان های شی گرا مانند ++C و در حال حاظر به #C رسیدیم و در این مسیر گاهی اوقات بدون اینکه بدانیم، Reverse Engineering کردیم! کسی هم در آن زمان نمی توانست بگوید مسیر غلطی پیمودیم.&lt;/p&gt;  &lt;p align="justify"&gt;تجربه ی ما چیزی در حدود 9 سال زمان برده و اگر شخصی که اکنون تصمیم به یادگیری گرفته تصور کند که چنین زمانی لازم دارد تا یک برنامه نویس حرفه ای شود احتمالا از تصمیم خود بر خواهد گشت (مخصوصا اگر هم سن و سال ما باشد).&lt;/p&gt;  &lt;p align="justify"&gt;بهترین کتابی که در تمام عمرم در مورد آموزش توسعه ی نرم افزار و تفکر در این مورد دیدم کتاب &lt;a href="http://www.amazon.com/Object-Oriented-Programming-4th-Robert-Lafore/dp/0672323087"&gt;آموزش برنامه نویسی شی گرا با ++C نوشته آقای رابرت لی فور&lt;/a&gt; (Robert Lafore) بوده. &lt;font color="#bf0035"&gt;“در این کتاب فرض شده خواننده حتی با زبان C هم آشنایی ندارد… شاید این اشتباه باشد که برنامه نویس ابتدا زبان های رویه ای را بیاموزد و سپس به سمت شی گرایی برود. برنامه نویس باید از ابتدا به صورت شی گرا تفکر کند و برنامه های خود را از پایه به صورت شی گرا بنویسد”&lt;/font&gt;. به شخصه هرچه زودتر با این کتاب آشنا می شدم کمتر وقتم را هدر میدادم. اما اکنون که برنامه نویسان نوپا مایل به برنامه نویسی در زبان های سطح بالاتر و جدیدتر مانند #C هستند جای چنین کتابی برای این چنین زبان هایی خالی به نظر می رسد!&lt;/p&gt;  &lt;p align="justify"&gt;کتابهایی مثل &lt;a href="http://www.amazon.com/Microsoft-Programming-Absolute-Beginner/dp/1931841160"&gt;این&lt;/a&gt; دارای تیتر های جالبی هستند ولی واقعا نمی دانیم آیا چیزی که فکر میکنیم هستند!؟ و آیا &lt;strong&gt;طریقه ی تفکر برنامه نویس&lt;/strong&gt; را قبل از هر چیز آموزش می دهند؟ معمولا مشکل اینجاست که در تکنولوژی های نو، اگر در طی زمان از چیزی سر در آوریم معمولا نمی توانیم توصیف کنیم که چگونه از آن سر در آوردیم! یا حداقل نمی توانیم مسیر کوتاهتری را نشان دهیم که درک درستی به فرد مورد آموزش بدهد. این امر معمولا ناشی از نبود استاندارد در آموزش است. به همین دلیل توسعه دهندگان نرم افزار در ایران (و شاید در جاهای دیگر) هر یک باید به تنهایی مسیر خود را پیدا کنند بدون اینکه از ابتدا بداند چه مسیری را خواهند پیمود.&lt;/p&gt;  &lt;p align="justify"&gt;اما من فکر میکنم با وجود مفید بودن این چند سال طولانی که به شخصه صرف یاد گیری توسعه نرم افزار کردم، یک فرد بدون تجربه، با هوش خوب می تواند در عرض یک سال یک برنامه نویس نسبتا حرفه ای _در یک زمینه کاری_ شود البته اگر مسیر درست را طی کند و راهنما یا استاد خوبی داشته باشد. حتی اگر درآمد برایش مهم باشد می تواند تا حدودی به آن دست پیدا کند. به عبارت دیگر از زبان های جدید و قویی مانند #C به عنوان یک زبان آموزشی استفاده کرده و نتیجه بگیرد.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font color="#009325"&gt;شاید موارد زیر برای کسانی که تازه می خواهند وارد دنیای برنامه نویسی شوند کاربرد داشته باشد:&lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;اگر بخواهم جمع بندی کنم به نظر من برای برنامه نویس شدن در کوتاهترین زمان و بهترین یادگیری، جدا از علاقه و سماجت و …، باید موارد زیر را هم در نظر بگیریم:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;1. اول کاربرد، بعد یادگیری (اول سوال بعد جواب)&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;نیاز مادر اختراع است (حداقل تا قبل از حوالی سال 2000 اینطور بوده)! درابتدا اول باید نیاز پیدا کنیم و بعد یادبگیرم که چطور نیازمان را برطرف کنیم وگرنه یادگیری به دردمان نخواهد خورد و به زودی فراموش می شود. مثلا اول باید در سر خود آرزوی ساختن یک ویروس کامپیوتری را داشته باشیم سپس شروع به یادگیری کنیم تا یک ویروس نویس و یا یک برنامه نویس امنیتی شویم، و یا به تجربه خودم و همکارم مثلا در شی گرایی اول بدانیم دسترسی protected کجا کاربرد دارد و بعد استفاده Syntax ی از آن را یاد بگیریم. (در واقع یعنی اول هدف را پیدا کنیم بعد حرکت کردن را یاد بگیریم در این صورت در هنگام حرکت، خود به خود با چیزهای جدیدتر هم آشنا خواهیم شد)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;2. هرچیزی که می بینیم باید بتوانیم بسازیم یا حداقل بدانیم چطور بسازیم&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;مثلا حتی وقتی یک بازی رایانه ای پیچیده در PS3 را می بینیم باید فکر کنیم که چطور می شود این بازی را ساخت. ممکن است خیلی پیچیده باشد اما از چیزهای کوچک شروع کنیم و بعد به موارد بزرگ برسیم. در نهایت فقط همین کافیست که بدانیم برای رسیدن به هدف (ساختن آن چیزی که دیدیم) چه باید بکنیم و مطمئن باشیم که راه حل پیشنهادیمان عملی است. &lt;font color="#aa0d2d"&gt;بعدها که حرفه ای تر شدیم باید بتوانیم چیز هایی که وجود ندارند را بسازیم!&lt;/font&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;3. از چیزهایی که نمی دانیم ترس نداشته باشیم در عین حال سعی کنیم به مرور &lt;strong&gt;از پشت صحنه ی هر اتفاق سر در بیاوریم&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;مثلا وقتی می بینیم یک Object از نوع Form در #C این همه متد و خصیصه دارد نگران نشویم و تمام وقت خود را صرف یادگیری همه آنها نکنیم چون به مرور زمان و حتی ناخواسته با بیشتر آنها آشنا خواهیم شد. و از طرف دیگر در موارد ساده تر مثلا وقتی با #C از دستور &lt;span dir="ltr"&gt;Console.Write(“test”)&lt;/span&gt; استفاده می کنیم سعی کنیم بدانیم که چه اتفاقاتی می افتد تا کلمه test روی مانیتور نمایش داده می شود. البته در این مورد باید از زیاده روی جلوگیری کرد و این کار به مرور انجام شود، وگرنه ممکن است از راه اصلی دور شویم. (اما وقتی که حرفه ای تر شدیم باید همه چیز را بدانیم تا یک توسعه گر موفق باشیم و در همه جا جایی داشته باشیم)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;4. جمله معروف “از یک چیز همه چیز و از همه چیز یک چیز”&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;به مرور زمان خواهیم فهمید که به یک زبان برنامه نویسی یا یک پلتفرم خاص و … علاقه داریم. از این به بعد تخصص خودمان را روی آن (ها) قراردهیم و هر چیزی که در مورد آن وجود دارد را یاد بگیریم و از مسائل تاریخی و سیاسی حتی فلسفله وجودیش گرفته تا مسائل تکنیکی آن سر در بیاوریم. در عین حال و موازی با یادگیری موردی که تخصص ماست، از زبان های برنامه نویسی دیگر، پلتفرم ها، سیستم عامل ها، سخت افزار ها و حتی علوم دیگر و در کل هر چیز دیگری حداقل یک چیز (هر چند کوچک) بدانیم.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-8316592796598292089?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/8316592796598292089/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/10/c.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/8316592796598292089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/8316592796598292089'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/10/c.html' title='چگونگی آموزش #C به یک فرد کاملا مبتدی'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-6750010603789871383</id><published>2009-09-21T22:56:00.001+04:30</published><updated>2009-09-21T22:56:21.770+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>حیله ی وصله ی دانلود</title><content type='html'>&lt;p align="justify"&gt;چند روز پیش استفاده از &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;VS2010&lt;/a&gt; به ذهنمان خطور کرد. از یکی از دوستان که از پهنای باند و سرعت خوب اینترنت برخوردار بود و منزلش هم بسیار نزدیک بود خواستم تا VS2010 را دانلود کند.&lt;/p&gt;  &lt;p align="justify"&gt;اگر نخواهم سر کسی به درد آید، به طور خلاصه یکی از فایل های دانلود شده مشکل داشت. چیزی در حدود 60MB انتهایی آن دانلود نشده بود. شدیدا علاقه داشتم که با VS2010 کار کنم و دوستی که در بالا اشاره شد نیز در دسترس نبود!&lt;/p&gt;  &lt;p align="justify"&gt;نمی دانم چرا حدس زدم شاید این حیله عملی باشد: با Firefox فایل مورد نظر که حدود 700MB بود را برای دانلود انتخاب کردم و به محض شروع دانلود آنرا Stop کردم، سپس به انتهای فایل ناقصی که از دوستم گرفته بودم پسوند &lt;span dir="ltr"&gt;&lt;strong&gt;.part&lt;/strong&gt;&lt;/span&gt; اضافه کردم و به جای فایلی که Firefox ایجاد کرده بود Replace کردم و بعد دکمه Resume از Firefox Downloads را زدم! دانلود شروع شد اما از حدود 640MB به بعد. بعد از اتمام دانلود فایل به درستی اجرا شد!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-6750010603789871383?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/6750010603789871383/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/blog-post.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6750010603789871383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6750010603789871383'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/blog-post.html' title='حیله ی وصله ی دانلود'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-6487882614151365212</id><published>2009-09-16T11:29:00.003+04:30</published><updated>2009-09-16T11:38:23.123+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Surface'/><title type='text'>Microsoft Surface</title><content type='html'>&lt;p&gt;Microsoft Surface یک کامپیوتر Multi-Touch انقلابی است که به حرکات طبیعی دست و اشیاء واقعی جهان پاسخ می دهد و به افرادی که با آن کار می کنند کمک می کند تا با یک ابزار دیجیتال ساده و قابل درک با یک User Interface افقی بزرگ در یک مکان و در یک زمان به همراه چند نفر بتوانند با یکدیگر بر روی یک سری اطلاعات مشخص کار کنند.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_RisR4Pcir1I/SrCM_shVbAI/AAAAAAAAABU/hBKk_pbXfwc/s1600-h/Microsoft%20Surface%5B2%5D.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px" title="Microsoft Surface" border="0" alt="Microsoft Surface" src="http://lh4.ggpht.com/_RisR4Pcir1I/SrCNBPFLdXI/AAAAAAAAABc/Ah6QIIFtDCA/Microsoft%20Surface_thumb.png?imgmax=800" width="244" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;این تعبیر تعبیریست که شرکت ماکروسافت در توضیح این میز بیان کرده که پر بی راه هم نگفته.&lt;/p&gt;&lt;p&gt;و حالا تعبیر ما ، به بیان ساده تر یک میز به ابعاد (82.5cm:ارتفاع،124.5cm:طول،86cm:عرض) که صفحه روی این میز یک LCD با قابلیت Multi-Touch و با ابعاد (82.5cm:ارتفاع،124.5cm:طول،86cm:عرض) با بدنه فلزی حدود (82kg) که فقط در آمریکا و کانادا عرضه می شود و با با بدنه Acrylic که وزن آن به (90kg) میرسد.&lt;/p&gt;&lt;p&gt;اما مشخصات فنی این میز هوشمند که عبارت است از :&lt;/p&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;Network Protocols and Standards&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Network adapter: Intel Gb LAN &lt;/li&gt;&lt;li&gt;Wireless LAN connectivity supported: Yes &lt;/li&gt;&lt;li&gt;Networking and Data Protocols: IEEE802.11b,IEEE802.11g, Bluetooth 2.0, Gigabit Ethernet &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;I/O Connections&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;2 headphone jacks &lt;/li&gt;&lt;li&gt;6 USB 2.0 ports &lt;/li&gt;&lt;li&gt;RGB component video &lt;/li&gt;&lt;li&gt;S-VGA video (DB15 external VGA connector) &lt;/li&gt;&lt;li&gt;Component audio &lt;/li&gt;&lt;li&gt;Ethernet port (Gigabit Ethernet card [10/100/1000]) &lt;/li&gt;&lt;li&gt;External monitor port &lt;/li&gt;&lt;li&gt;Bays for routing cables &lt;/li&gt;&lt;li&gt;On/Standby power button &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;AC Input Ratings&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;AC input: 100-240 VAC, 50/60Hz, 10A, 650W &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;Display&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Type: 30-inch XGA DLP® projector&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ATI X1650 graphics card with 256 MB of memory&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Maximum resolution: 1024 x 768&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lamp mean-life expectancy: 6,000+ hours&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Maximum pressure on the display: 50 pounds per&lt;br /&gt;square inch/3.5 kg per cm&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Maximum load: 200 pounds &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;Input Devices&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Camera-based vision system with LED infrared&lt;br /&gt;direct illumination &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;Computing System&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;2.13-GHz Intel® CoreTM 2 Duo processor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Memory: 2 GB dual-channel DDR2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Storage: Minimum 250 GB SATA hard-disk drive &lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;&lt;span style="color:#ff80ff;"&gt;Audio&lt;/span&gt;&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Output type: Stereo fl at panel built-in speakers &lt;/li&gt;&lt;li&gt;Output compliant standards: Stereo &lt;/li&gt;&lt;li&gt;Input: None &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;این میز هم از یک میز بیشتره و هم از یک کامپیوتر . میشه گفت این میز یک حر کت به جلو در دنیای دیجیتال به حساب میاد که قرار است دنیای میزگرد ها جلسه های پرزنت و جلسه های آموزشی و … رو متحول کنه و شما رو وادار می کنه تا از دست خودتون بیشتر لذت ببرید.&lt;/p&gt;&lt;p&gt;همان گونه که در بالا گفته شد مهمترین نکات این میز Digital قابلیت Multi-Touch بودن و هم کاری همزمان چند کاربر بر روی یکسری اطلاعات است به این گونه که سه یا چهار نفر در یک آن واحد می توانند بر روی یک موضوع واحد بر روی این میز شروع به کار کنند این میز توانایی شناسایی و مشاهده وسیله ای که آن را لمس می کند را داراست و برای این کار از تعدادی دوربین و تکنولوژی Infrared استفاده می کند.&lt;/p&gt;&lt;p&gt;پایه و بنای سیستم عامل این میز قدرتمن دیجیتال همان Windows Vista SP1 است که بسیار ساده و اختصاصی برای مدیریت ، پشتیبانی و توسعه آن ساخته شده و اسم آن را Microsoft Surface 1.0 Service Pack 1 گذاشته اند و علاوه بر آن یک واسط گرافیکی بسیار قدرتمند به مالکان این میز کمک میکند تا به نحو احسنت از این میز استفاده کنند.&lt;/p&gt;&lt;p&gt;و اما اصل مطلب یعنی چگونه می شود برای این Plat Form نرم افزار تولید کرد ؟&lt;/p&gt;&lt;p&gt;برای این کار احتیاج به Microsoft Surface SDK 1.0 SP1 دارید و البته یه Microsoft Surface برای تست پروژه هاتون.&lt;/p&gt;&lt;p&gt;ماکروسافت برای وسیع کردن دامنه برنامه نویسان این ابزار جدید آن را سازگار با خانواده ای از ابزار های توسعه مانند :&lt;/p&gt;&lt;li&gt;Microsoft® Windows Presentation Foundation (WPF) &lt;/li&gt;&lt;li&gt;Microsoft® XNA™ &lt;/li&gt;&lt;li&gt;Microsoft® Visual C#® 2008 Express Edition &lt;/li&gt;&lt;li&gt;Microsoft® Visual Studio® 2008 SP1 &lt;/li&gt;&lt;li&gt;Microsoft® Expression® Studio 2 &lt;/li&gt;&lt;li&gt;Microsoft® Expression Blend™ 2 &lt;p&gt;ساخته است.&lt;/p&gt;&lt;p&gt;فکر کنم تا همین جا کافیست برای بدست آورن بقیه مطالب و بیشتر تحت تاثیر قرار گرفتن میتوانید به لینک زیر مراجعه کنید :&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.surface.com/" target="_blank"&gt;Microsoft Surface&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#c0c0c0;"&gt;پاورقی:&lt;/span&gt; این پست با نرم افزار &lt;/span&gt;&lt;a href="http://windowslivewriter.spaces.live.com/"&gt;&lt;span style="font-size:78%;"&gt;Windows Live Writer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt; ارسال شده.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-6487882614151365212?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/6487882614151365212/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/microsoft-surface.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6487882614151365212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6487882614151365212'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/microsoft-surface.html' title='Microsoft Surface'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_RisR4Pcir1I/SrCNBPFLdXI/AAAAAAAAABc/Ah6QIIFtDCA/s72-c/Microsoft%20Surface_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-658235466208927351</id><published>2009-09-12T14:53:00.001+04:30</published><updated>2009-09-17T00:32:05.008+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Operating System'/><category scheme='http://www.blogger.com/atom/ns#' term='Kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Singularity OS</title><content type='html'>&lt;p align="justify"&gt;قبلا در مورد هسته هایی که با #C ساخته شده اند (&lt;a href="http://m-a-engineergroup.blogspot.com/2009/04/c.html"&gt;C# Kernels&lt;/a&gt;) یک پست ارسال کرده بودم. از بین چند Kernel توسعه داده شده Singularity از دیگران کاملتر است.&lt;/p&gt;  &lt;p align="justify"&gt;این روزها بیشتر روی این سیستم عامل تحقیقاتی وقت سرف کردم. مخصوصا وقتی فهمیدم مایکروسافت به توسعه یک سیستم عامل Managed Code به نام &lt;a href="http://en.wikipedia.org/wiki/Midori_(operating_system)"&gt;Midori&lt;/a&gt; مشغول است که تقریبا نسخه تجاری Singularity به حساب می آید و بعضی اعلام می کنند که جایگزین Windows خواهد بود. به همین دلیل صرف وقت روی Singularity شاید شبیه وقت گذاشتن روی Source سیستم عامل Unix در سالهای ابتدایی اختراع آن باشد.&lt;/p&gt;  &lt;p align="justify"&gt;مهمترین دلیل ساخت این سیستم عامل این است که طراحی سیستم عامل های کنونی ما به 40 سال قبل بر میگردد! از آن زمان تا کنون ما روی چند سیستم عامل اصلی پا فشاری کردیم مانند، Unix، Linux، Mac و Windows. که همگی دارای معماری قدیمی هستند. البته بخشی از این موضوع اجتناب ناپذیر است.&lt;/p&gt;  &lt;p align="justify"&gt;مهمترین ویژگی Singularity این است که از ابتدا طراحی شده! این سیستم از نوع Language-Based است و سعی شده از خطای انسانی تا حد امکان جلوگیری شود. و برای پیاده سازی آن یک زبان به نام &lt;span dir="ltr"&gt;Sing#&lt;/span&gt; ساخته شده که از &lt;span dir="ltr"&gt;Spec#&lt;/span&gt; مشتق شده، و خود &lt;span dir="ltr"&gt;Spec#&lt;/span&gt; هم از C&lt;span dir="ltr"&gt;#&lt;/span&gt; .&lt;/p&gt;  &lt;p align="justify"&gt;همان طور که گفته شد این سیستم عامل تحقیقاتیست، یعنی طراحی و پیاده سازی شده تا مشخص شود نتیجه چه خواهد بود. و ظاهرا نتیجه خوبی داشته!&lt;/p&gt;  &lt;p align="justify"&gt;در جدول زیر مقایسه ای بین سیستم عامل های معروف و Singularity صورت گرفته که بسیار جالب است. به عدد ها و رقم ها دقت کنید و خودتان مقایسه کنید.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_CSyJKV_qqBE/Sqt2WIvhbUI/AAAAAAAAABU/XPCvlETRjAI/s1600-h/Capture1%5B13%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Capture1" border="0" alt="Capture1" src="http://lh6.ggpht.com/_CSyJKV_qqBE/Sqt2XFw6WfI/AAAAAAAAABc/G8bw_xgCYnE/Capture1_thumb%5B11%5D.jpg?imgmax=800" width="365" height="165" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;هر پردازه (Process) در قالب یک &lt;span dir="ltr"&gt;SIP (Software-Isolated Processe)&lt;/span&gt; اجرا می شود که بر خلاف سیستم عامل های کنونی که همیشه پردازه ها به صورت سخت افزاری Isolate می شدند، در اینجا به صورت نرم افزاری Isolate خواهند شد. اندازه فایل های اجرایی با فایل های تولید شده توسط ++C/C قابل مقایسه است.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_CSyJKV_qqBE/Sqt4rxYePII/AAAAAAAAABk/PA5If2kAzEw/s1600-h/image%5B17%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_CSyJKV_qqBE/Sqt4thCBJyI/AAAAAAAAABo/CmLWy4JSmpU/image_thumb%5B13%5D.png?imgmax=800" width="400" height="105" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;کل سیستم عامل Singularity در یک فضای آدرس فیزیکی (Physical Address Space) اجرا می شود و مدیریت حافظه به صورت نرم افزاری صورت می گیرد (بر خلاف سیستم عامل های قبلی). حافظه مورد استفاده برنامه ها نیز قابل مقایسه با دیگر زبانهاست.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_CSyJKV_qqBE/Sqt4u21MegI/AAAAAAAAABs/d2q8d8rdp44/s1600-h/image%5B23%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_CSyJKV_qqBE/Sqt4wiGEP2I/AAAAAAAAABw/3tVX2U2Erpc/image_thumb%5B17%5D.png?imgmax=800" width="350" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;ارتباط بین پردازه ها (Processes) فقط توسط کانال ها (Channels) صورت می گیرد. به این ترتیب که یک پردازه شروع کننده ارتباط خواهد بود و طرف دیگر ارتباط را قبول میکند (مانند ارتباطات شبکه). در صورتی که حجم تبادلی داده زیاد باشد باز هم از حافظه اشتراکی (Shared Memory) استفاده نمی شود اما این انتقال به شکل کپی یا Pipe صورت نمی گیرد و در کمترین زمان ممکن اتفاق می افتد. یعنی سیستم عامل Singularity برای انتقال حجم زیاد داده بین پردازه ها تدابیر خوبی دیده و Performance در نظر گرفته شده. جدول زیر را مطالعه کنید.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_CSyJKV_qqBE/Sqt2ZELX-iI/AAAAAAAAAB0/1W90P4zWADg/s1600-h/Capture3%5B8%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Capture3" border="0" alt="Capture3" src="http://lh6.ggpht.com/_CSyJKV_qqBE/Sqt2bVzlgSI/AAAAAAAAAB8/g8uRXXIG8zw/Capture3_thumb%5B6%5D.jpg?imgmax=800" width="350" height="185" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;در Singularity هر فایل اجرایی یک Manifest دارد. هیچ فایل اجرایی بدون Manifest اجرا نخواهد شد. به این برنامه ها Manifest-Based گفته می شود. Manifest برنامه، اطلاعاتی در مورد برنامه، مثلا اینکه به چه منابعی نیاز دارد در اختیار می گذارد.&lt;/p&gt;  &lt;p align="justify"&gt;برای دیدن مقایسه Performance خواند و نوشتن روی دیسک بین Singularity و دیگر سیستم عامل ها، روی تصویر زیر Click کنید.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_CSyJKV_qqBE/SqvwuD0S5qI/AAAAAAAAACs/sQnUfl_N1pY/s1600-h/Capture%5B6%5D.jpg" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Capture" border="0" alt="Capture" src="http://lh3.ggpht.com/_CSyJKV_qqBE/Sqvwu1RYv0I/AAAAAAAAAC0/9XxgslLdP_U/Capture_thumb%5B4%5D.jpg?imgmax=800" width="355" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p align="justify"&gt;من توانستم 2.0 Singularity را روی VirtualPC بالا بیاورم، به سرویس شبکه آن IP بدهم و WebServer داخلی آنرا اجرا کنم و از روی سیستم Host خودم از Singularity سرویس HTTP دریافت کنم.&lt;/p&gt;  &lt;p align="justify"&gt;اکنون مدتی از ارائه ی ویرایش دوم این سیستم عامل می گذرد و توسعه ی آن همچنان ادامه دارد.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-658235466208927351?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/658235466208927351/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/singularity-os.html#comment-form' title='2 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/658235466208927351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/658235466208927351'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/09/singularity-os.html' title='Singularity OS'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_CSyJKV_qqBE/Sqt2XFw6WfI/AAAAAAAAABc/G8bw_xgCYnE/s72-c/Capture1_thumb%5B11%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-3096322359014087253</id><published>2009-08-30T13:53:00.006+04:30</published><updated>2009-08-30T15:45:47.609+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Visual Studio Team System'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio Team System Web Access 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='WebAccess'/><title type='text'>Visual Studio Team System Web Access 2008</title><content type='html'>این هم یک پست بسیار مفید برای مدیران شرکت های نرم افزاری و یا کسانی که گروه های برنامه نویسی را مدیریت می کنند که البته به قول ما در قله تکنولوژی به سر می برند و از نرم افزار Microsoft Visual Studio Team System برای مدیریت پروژه ها و برنامه نویسان خود استفاده می کنند.&lt;br /&gt;شاید از اسم آن مشخص باشد که در مورد چه چیزی می خواهیم صحبت کنیم . به قول یکی از دوستان در دورانی از دنیای تجارت شرکت های تجاری بعد از تولید محصول خود و گرفتن Feed Back ها از مشتریان متوجه می شدند که مشتریان آنها و مردم به چه چیزهایی نیاز دارند تا آن قابلییت ها را در محصولات خود قرار دهند و در نتیجه دارای فروش خوب و سود خوبی باشند . اما هم اکنون وضع تغییر کرده و دنیای رقابت به هیچ شرکتی مجال نمی دهد تا چنین وقتی برای پیشرفت محصولات خود را صرف کند در نتیجه خود شرکت ها باید آستین را بالازده و به فکر بیفتند که چه چیزهایی برای مردم مورد نیاز است که خود مردم هم خبر ندارند تا آنها را در محصولات خود قرار دهند تا با فروش بالا و محبوبیت محصول خود مواجه شوند.&lt;br /&gt;زمانیکه ما با این نرم افزار که یکی از Accessories های VSTS است بر خورد کردیم به خود گفتیم چه جالب ما و مدیرهای دیگری که تعدادی پروژه و برنامه نویس در زیر دست خود دارند و نیاز به مدیریت همه جانبه آنها دارند چقدر به این نرم افزار نیاز داشتیم و خود خبر نداشتیم و این همان نکته ای است که در بالا در مورد آن صحبت کردیم.&lt;br /&gt;حالا برسیم به ( &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=c568fba9-3a62-4781-83c6-fdfe79750207&amp;amp;displaylang=en#QuickInfoContainer"&gt;Web Access &lt;/a&gt;) که با کلیک بر روی آن می تونید آن را دریافت کنید.&lt;br /&gt;کسانی که برای مدیریت پروژها و برنامه نویسان خود از نرم افزار Microsoft Visual Studio Team System استفاده می کنند&lt;br /&gt;یکی از مشکلاتشان برای مدیریت زمانیست که از شرکت خود خارج می شوند و نمی توانند به راحتی به سرور خود دسترسی پیدا کنند مگر اینکه تنظیماتی را برای سرور خود قرار دهند که خود ریسک های امنیتی خاص خود را دارد اما اینجاست که ابزار Web Access خود را نشان می دهد.&lt;br /&gt;بعد از دانلود کردن فایل TeamSystemWebAccess.msi را بر روی سرور خود اجرا کنید و آن را نصب کنید . به صورت پیش فرض این نرم افزار بر روی Port : 8090 نصب می شود که ما هم پیشنهاد می کنیم آن را تغییر ندهید مگر اینکه شما بر روی این Port نرم افزار دیگری را در حال اجرا دارید.&lt;br /&gt;بعد از نصب تنها با در دست داشتن اینترنت با باز کردن یک مرور گر و وارد کردن آدرس &lt;a href="http://servername:8090/"&gt;http://servername:8090/&lt;/a&gt; و وارد کردن نام کاربری و کلمه عبور خود می توانید از تمامی قابلیت های VSTS برای مدیریت پروژه ها و برنامه نویس های خود که در داخل شرکت استفاده می کردید با امنیت بسیار بالا استفاده کنید :&lt;br /&gt;1. نمایش تمامی پروژه های در دسترس شما.&lt;br /&gt;2. بروز کردن تمام اطلاعات پروژه های در دسترس.&lt;br /&gt;3. اضافه کردن انواع Work Item برای پروژه های در دسترس.&lt;br /&gt;4. ساخت ، به اشتراک گذاشتن و اجرا کردن انواع Work Item Queries .&lt;br /&gt;5. دسترسی به Process Guidance.&lt;br /&gt;6. دسترسی بسیار آسان و دم دست و UI زیبا و به تمام معنا User Friendly .&lt;br /&gt;&lt;br /&gt;خیلی لذت بخش است که یک شرکت تمام نیاز های ما را شناخته و با ساخت و تولید نرم افزار های مورد نیاز ، نیاز ما را بر طرف می کند امیدوارم بعد از خواندن این پست نیاز شما هم بر طرف شده باشد.&lt;br /&gt;و در آخر هم باید اضافه کنم که SP1 این نرم افزار هم توسط شرکت ماکروسافت ارائه شده که پیدا کردن و نصب آن را به خود شما محول می کنم.&lt;br /&gt;البته مد نظر داشته باشید که برای این پست ما مبنا را بر این قرار دادیم که شما با محیط VSTS آشنا هستید و در صورتیکه شما همچنان با محیط VSTS آشنایی ندارید توصیه ما به شما این است که بعد از خواندن این پست تمام فعالیت های خود را کنسل کرده و به دنبال بدست آوردن این تکنولوژی برای خود باشید و بعد از بدست آوردن و استفاده نظر خود را در رابطه با این نرم افزار برای ما ارسال کنید.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-3096322359014087253?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/3096322359014087253/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/visual-studio-team-system-web-access.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3096322359014087253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3096322359014087253'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/visual-studio-team-system-web-access.html' title='Visual Studio Team System Web Access 2008'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-3424948756334912221</id><published>2009-08-13T16:22:00.001+04:30</published><updated>2009-08-14T14:08:05.402+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>نصب TFS 2008 بر روی Windows Server 2008 و SQL Server 2008</title><content type='html'>&lt;p&gt;حرکت بر نوک لبه ی تکنولوژی این دردسر ها را هم دارد!&lt;/p&gt;  &lt;p&gt;اولین مشکل پیدا کردن یک Activation درست برای Windows Server 2008 است. که به طور کلی سه مدل Activation برای ما وجود دارد.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;مدل اول که وقتی روی My Computer راست کلیک میکنید همیشه یک پیغام در مورد Active کردن Windows میبینید ولی نباید به آن اهمیت بدهید و همه چیز درست کار میکند حتی بعد از 60 روز. &lt;/li&gt;    &lt;li&gt;مدل دوم که پیغام گفته شده در بالا را نمی بینید ولی در عوض Windows Server 2008 تبدیل به یک Windows Vista Ultimate می شود و شما ویژگی های Server را از دست می دهید (ما این کار را کردیم، در ابتدا همه چیز رو به راه بود تا اینکه TFS را نصب کردیم و دیگر هیچ چیز رو به راه نبود). &lt;/li&gt;    &lt;li&gt;مدل سوم خرید یک Activation تقریبا سه میلیون تومانی است. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;البته روش آخر از همه بهتر است ولی فقط روش اول برای ما مقدور بود و کار کرد.&lt;/p&gt;  &lt;p align="justify"&gt;دومین مساله اینکه برای نصب TFS 2008 بر روی SQL Server 2008 باید با دستان خود یک Pack جدید نصبی TFS 2008 SP1 ایجاد کنید. که خرجش 100MB دانلود SP1 و مقداری دستورات Commad ی است. به عبارت دیگر شما باید SP1 را جداگانه دانلود کرده و با استفاده از &lt;strong&gt;msiexec.exe&lt;/strong&gt; آنرا را به خورد TFS 2008 ی که بدون SP1 است بدهید که به آن TFS 2008 and SP1 می گویند، و آنرا نصب نمایید. یا اینکه به بازار بروید و آخرین نسخه TFS 2008 به همراه سرویس پک را خریداری نمایید.&lt;/p&gt;  &lt;p&gt;در هنگام نصب اگر مراحل را درست دنبال کنید هیچ مشکلی مشاهده نمی کنید تا اینکه سیستم به درستی بالا می آید و همه چیز ظاهرا مرتب است به جز 2 مورد اصلی:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;اول اینکه بعد از نصب Team Explorer و ساخت یک Team Project جدید، وقتی در VS پروژه تیمی را باز میکنید یک ضرب در قرمز در کنار Reports مشاهده می کنید. البته این مورد با نصب VS 2008 SP1 رفع میشود. &lt;/li&gt;    &lt;li&gt;دوم اینکه هیچ گزارشی از TFS نمی توانید بگیرید. قسمت گزارش TFS کار نمی کند. برای این مشکل یک راه در اینجا ارائه شده &lt;a title="http://blogs.microsoft.co.il/blogs/shair/archive/2009/06/25/cannot-open-database-quot-tfswarehouse-quot-requested-by-the-login.aspx" href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/06/25/cannot-open-database-quot-tfswarehouse-quot-requested-by-the-login.aspx"&gt;http://blogs.microsoft.co.il/blogs/shair/archive/2009/06/25/cannot-open-database-quot-tfswarehouse-quot-requested-by-the-login.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;اما مشکل دوم با راه حلی که ارئه شده حل نشد. فقط یک مورد کم داشت که به شرح زیر است:&lt;/p&gt;  &lt;p dir="ltr" align="left"&gt;Connecting to Analysis services &amp;gt;&amp;#160; database &amp;gt; tfswarehouse &amp;gt; roles &amp;gt; set the tfswarehousedatareader role permissions to full control process database!&lt;/p&gt;  &lt;p&gt;ما عذاب بسیاری کشیدیم تا بالاخره توانستیم از آخرین تکنولوژی استفاده کنیم. امیدوارم بقیه این عذاب را نکشند.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-3424948756334912221?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/3424948756334912221/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/tfs-2008-windows-server-2008-sql-server.html#comment-form' title='20 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3424948756334912221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3424948756334912221'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/tfs-2008-windows-server-2008-sql-server.html' title='نصب TFS 2008 بر روی Windows Server 2008 و SQL Server 2008'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-6346928362357012772</id><published>2009-08-06T12:23:00.001+04:30</published><updated>2009-08-06T12:26:23.004+04:30</updated><title type='text'>مساله مشاغل</title><content type='html'>&lt;p align="justify"&gt;بعضی از مردم که کارشان به نحوی با اینترنت گره خورده در چند روز حوالی انتخابات اخیر ریاست جمهوری به علت قطعی های اینترنت به مشکلات زیادی برخوردند. اما خدا را شکر که در حال حاظر مشکل قابل مشاهده ای وجود ندارد.&lt;/p&gt;  &lt;p align="justify"&gt;این احوال ما بود که از اینترنت صرفا به عنوان یک بستر برای انجام کارهای خود استفاده می کردیم و البته کسانی که از &lt;a href="http://en.wikipedia.org/wiki/Team_Foundation_Server"&gt;Team Foundation Server&lt;/a&gt; استفاده می کردند.&lt;/p&gt;  &lt;p align="justify"&gt;عده دیگری هستند که درآمدشان به طور مستقیم از اینترنت منشاء می گیرد مانند اشخاصی که با تکنولوژی VoIP سرو کار دارند. ظاهرا 114 شرکت در این زمینه در کشور فعال بودند که مخابرات از ادامه فعالیت آنها (به صورت فنی) جلوگیری کرده و تنها 3 شرکت امکان استفاده از این تکنولوژی را در کشور دارا هستند (که ظاهرا دو تای آنها هنوز فعالیت خود را آغاز نکردند).&lt;/p&gt;  &lt;p align="justify"&gt;تفاسیر زیادی پیرامون این موضوع وجود دارد مثلا یک مقاله در &lt;a href="http://www.itiran.com/?type=news&amp;amp;id=10799"&gt;اینجا&lt;/a&gt; و یکی دیگر در &lt;a href="http://www.telna.ir/News/3843/Default.aspx"&gt;اینجا&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;نکته ای که به ما مربوط می شود و منجر به نوشتن این پست شد این است که چند روزی بود در مورد درآمد های خوب کار VoIP شنیده بودم و چون چند وقتی است از نظر مالی اوضاع، چندان جالب نیست، کمی نا امید بودم. با خواندن این اخبار کمی دلگرم شدم که حداقل در کار ما اینقدر پیچیدگی سیاسی وجود ندارد. یا حداقل اش این است که در بدترین وضعیت ما به عنوان برنامه نویس فقط و فقط نان زحمت مغز و دستانمان را می خوریم (بدون Business). این هم یک تجربه است!&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;font color="#c0c0c0"&gt;پاورقی:&lt;/font&gt; این پست با نرم افزار &lt;/font&gt;&lt;a href="http://windowslivewriter.spaces.live.com/"&gt;&lt;font size="1"&gt;Windows Live Writer&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; ارسال شده (امتحان کنید بسیار عالیست).&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-6346928362357012772?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/6346928362357012772/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/blog-post.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6346928362357012772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/6346928362357012772'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/08/blog-post.html' title='مساله مشاغل'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5145610678632062573</id><published>2009-05-20T21:12:00.000+04:30</published><updated>2009-05-21T00:59:37.266+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C# 4.0'/><title type='text'>The C# Programming Language Version 4.0</title><content type='html'>&lt;div dir="rtl"&gt;&lt;br /&gt;نسخه بتاي Visual Studio 2010 و .Net Framework 4.0 از تاريخ 20 May به همراه قابليت هاي جديد و بسيار عالي که ميتواند تمام علاقه مندان خود را هيجان زده کند براي دانلود آماده شده است.(&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;)&lt;br /&gt;اما شايد براي علاقه مندان به #C خبر جالب تر اين باشد که به همراه اين دو نرم افزار نسخه جديدي از #C که نسخه 4.0 اين زبان برنامه نويسي است نيز وجود دارد.در اين پست قصد داريم که با هم يک نگاه کلي به گذشته #C داشته باشيم و بعد به اين موضوع بپردازيم که آقاي Anders Hejlsberg و تيم #C در نسخه جديد براي ما چه چيزهايي رو آماده کرده اند:&lt;br /&gt;&lt;br /&gt;در سال 1998 پرژه #C با هدف رسيدن به زبان برنامه نويسي آسان ، مدرن ،شيع گرا و Type-Safety که تحت پلت فرم Net. عمل کند شروع به کار کرد. شرکت مایکروسافت پلت فرم Net. را به همراه زبان برنامه نويسي #C در تابستان سال 2000 در اختيار عموم برنامه نويسان قرار داد و روز بعد از آن #C داراي محبوبيت و معروفيت بسياري در بين برنامه نويسان شد.با وجود استقبال بسيار عالي و چشمگيري که از اين زبان برنامه نويسي جديد صورت گرفت ، تا رسيدن به هدف اصلي که شرکت مایکروسافت براي خود مشخص کرده بود راه طولاني در پيش داشت.بعد از مدت کوتاهي نسخه 2.0 تعدادي از نواقص و کمبودها را برطرف کرد که تعدادي از آنها عبارتد از :&lt;br /&gt;&lt;li&gt;Generics.&lt;/li&gt;&lt;li&gt;Anonymous Methods.&lt;/li&gt;&lt;li&gt;Iterators.&lt;/li&gt;&lt;li&gt;Partial Types.&lt;/li&gt;&lt;li&gt;Nullable Types.&lt;br /&gt;در هنگام طراحي ورژن سوم زبان برنامه نويسي #C تاکيد اصلي برروي فعال کردن (LINQ(Language Integrated Query بود که براي اين کار احتياج به موارد زير بود :&lt;/li&gt;&lt;li&gt;Implictly Typed Local Variables.&lt;/li&gt;&lt;li&gt;Extension Methods.&lt;/li&gt;&lt;li&gt;Lambda Expressions.&lt;/li&gt;&lt;li&gt;Object and Collection Initializers.&lt;/li&gt;&lt;li&gt;Annonymous types.&lt;/li&gt;&lt;li&gt;Implicitly Typed Arrays.&lt;/li&gt;&lt;li&gt;Query Expressions and Expression Trees.&lt;br /&gt;براي طراحي نسخه 4.0 زبان برنامه نويسي #C تيم #C از الحام گرفتن از زبان هاي برنامه نويسي Dynamic مانند Perl, Python, and Ruby استفاده کردند.واقعيت اين&lt;br /&gt;است که زبان هاي برنامه نويسي Dynamic و Static داراي مزايا و معايب به خصوص خود هستند و مهم اين&lt;br /&gt;است که بتوان تواناييهاي هر دو را در يکجا جمع کرد.البته قابل به ذکر است که تغييرات و نو آوري هايي که در الگوهاي جديد #C انجام شده به صورت همزمان برروي الگوهاي Net FrameWork. نيز تاثير گذار بوده و باعث تغييراتي بر روي آن بوده است که به اين تغييرات در پست هاي بعدي خواهيم پرداخت.&lt;br /&gt;تعدادي از مهمترين نو آوري ها و ابداعات نسخه جديد #C به همراه مثال در پايين آورده شده است :&lt;br /&gt;-------------------------------&lt;br /&gt;Dynamically Typed Objects.&lt;br /&gt;&lt;br /&gt;زمانيکه نوع کلاس Calculator از نوع Static باشد و ما بخواهيم از متد Add اين کلاس استفاده کنيم که مشخص است پارامتر هاي ورودي و مقدار خروجي آن از چه نوعي است اکنون به صورت زير است :&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;Calculator calc = GetCalculator();&lt;br /&gt;int sum = calc.Add(10, 20);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;اما زمانيکه نوع کلاس Calculator از نوع Dynamic باشد و ما بخواهيم از متد Add اين کلاس استفاده کنيم که نوع آن را نميدانيم کد ما به شکل زير ميشود :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;object calc = GetCalculator();&lt;br /&gt;Type type = calc.GetType();&lt;br /&gt;object result = type.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 });&lt;br /&gt;int sum = Convert.ToInt32(result);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;حالا در نسخه 4.0 #C کد بالا به اين شکل مي شود :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;dynamic calc = GetCalculator();&lt;br /&gt;int result = calc.Add(10, 20);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;Optional and Named Parameters.&lt;br /&gt;&lt;br /&gt;زمانيکه شما قصد داشته باشيد در نسخه های موجد متدي داشته باشيد که در موقيت هاي خاصي پارامترهاي ورودي متفاوتي داشته باشه مجبور هستيد به گونه زير عمل کنيد :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize) { }&lt;br /&gt;public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding) { }&lt;br /&gt;public StreamReader OpenTextFile( string path, Encoding encoding) { }&lt;br /&gt;public StreamReader OpenTextFile( string path) { }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;اما در نسخه 4.0 زبان #C کد بالا به صورت زير مي شود :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;public StreamReader OpenTextFile( string path, Encoding encoding = null, bool detectEncoding = false, int bufferSize = 1024) { }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;به زبان بهتر شما مجاز شده ايد که براي پارامترهاي ورودي متد هاي خود مقادير پيش فرض قرار دهيد.&lt;br /&gt;-------------------------------&lt;br /&gt;Improved COM Interoperability.&lt;br /&gt;&lt;br /&gt;اگر شما بخواهید که کدی بنویسید که در آن از قبلیت های COM استفاده کنید احتمالاً کد شما چیزی شبیه به کد زیر خواهد بود :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;object filename = "test.docx";&lt;br /&gt;object missing = System.Reflection.Missing.Value;&lt;br /&gt;doc.SaveAs(ref filename,&lt;br /&gt;ref missing, ref missing, ref missing,&lt;br /&gt;ref missing, ref missing, ref missing,&lt;br /&gt;ref missing, ref missing, ref missing,&lt;br /&gt;ref missing, ref missing, ref missing,&lt;br /&gt;ref missing, ref missing, ref missing);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;اما حال با استفاده از نسخه 4.0 ، #C تمامی خطوط بالا به یک خط به شکل زیر تغییر می کند :&lt;br /&gt;&lt;br /&gt;&lt;span dir="ltr" align="left"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;doc.SaveAs("foo.txt");&lt;/pre&gt;------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div dir="rtl"&gt;&lt;span dir="ltr" align="left"&gt;&lt;span style="font-family:Courier New;"&gt;منبع : &lt;a href="http://software.intel.com/en-us/blogs/2009/03/30/the-c-programming-language-version-40/"&gt;The C# Programming Language Version 4.0&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5145610678632062573?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5145610678632062573/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/05/c-programming-language-version-40.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5145610678632062573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5145610678632062573'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/05/c-programming-language-version-40.html' title='The C# Programming Language Version 4.0'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-1208887597746310078</id><published>2009-05-20T15:46:00.009+04:30</published><updated>2009-05-20T23:26:34.025+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_CSyJKV_qqBE/ShPoEVQZfUI/AAAAAAAAAAM/xC4HE2VNJuo/s1600-h/Microsoft_Silverlight_stack.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 243px; FLOAT: left; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5337865144487214402" border="0" alt="" src="http://4.bp.blogspot.com/_CSyJKV_qqBE/ShPoEVQZfUI/AAAAAAAAAAM/xC4HE2VNJuo/s320/Microsoft_Silverlight_stack.png" /&gt;&lt;/a&gt; &lt;div&gt;در اواخر سال 2006 مایکروسافت با معرفی Silverlight وارد رقابتی جالب با شرکت Adobe شد. رقابتی بر سر نرم افزاری شبیه Flash. توسعه دهندگان چند رسانه ای که از Flash استفاده میکردند معمولا گرافیست بودند یا در کارهای گرافیکی تبحر داشتند و اکثرا برنامه نویس حرفه ای نبودند. با اینکه Flash مجهز به &lt;a href="http://en.wikipedia.org/wiki/Action_Script"&gt;زبان برنامه نویسی&lt;/a&gt; کاملی است ولی برنامه نویسان حرفه ای علاقه چندانی به این زبان ندارند و همین باعث شد که برنامه های کاربری زیادی با Flash ایجاد نشود.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;و اکنون مایکروسافت گام در این عرصه هم نهاد. Silverlight در یک جمله یک پلتفرم جهت نمایش انیمیشن، تصاویر بُرداری (Vector Graphics) و پخش کلیپ های صوتی و تصویری ست. از نظر من که یک برنامه نویس هستم، پشتیبانی کامل از dotNet Framework ، بزرگترین تفاوت آن با Flash است. تصور کنید امکانات گرافیکی کافی در کنار زبان #C یا VB یا هر زبان dotNet ی دیگر در اختیار شماست. مطمئنا کارهای جالبی خلق خواهید کرد.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;در مورد مقایسه Silverligh و Flash و شاید بقیه، آنقدر مقایسه وجود دارد که لازم نیست حتی به آن فکر کنم! مثلا &lt;a href="http://bubblemark.com/"&gt;این شخص&lt;/a&gt; مقایسه کامل و واقعی را بین Silverligh، Flash، Java و دیگران برگزار کرده که البته بیشتر Performance مد نظر بوده. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;باید اضافه کنم که Moonlight نسخه متن باز این محصول است که توسط Novell و در کنار Mono رهبری میشود. بازی ها و برنامه های جالبی برای Silverlight خلق شده، مثلا &lt;a href="http://dobbschallenge2.com/"&gt;این بازی&lt;/a&gt; فوق العاده که حتی متن کامل کد آن هم در دسترس می باشد. البته مشخص است که این بازی جهت معرفی بیشتر Silverlight ارائه شده. شما می توانید با ساختن مراحلی برای این بازی در صورت برنده شدن به عنوان بهترین تفويض ماه، برنده 500 دلار شوید. و یا اگر خیلی حرفه ای هستید، با دریافت کد برنامه و توسعه بازی به سلیقه خود و ارائه یک بازی کامل Silverlight ی، برنده 9 هزار دلار شوید.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;اکنون ویرایش دوم Silverlight کاملا جا افتاده و از March 18, 2009 نسخه 3Beta نیز عرضه شده.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-1208887597746310078?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/1208887597746310078/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/05/silverlight.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/1208887597746310078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/1208887597746310078'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/05/silverlight.html' title='Silverlight'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CSyJKV_qqBE/ShPoEVQZfUI/AAAAAAAAAAM/xC4HE2VNJuo/s72-c/Microsoft_Silverlight_stack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-5902214144108459111</id><published>2009-04-08T01:11:00.017+04:30</published><updated>2009-05-20T21:20:04.859+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Search query with LINQ</title><content type='html'>مخصوصا در برنامه های کاربردی تحت وب نوشتن یک فرم جستجوی طویل مرتبط با بانک اطلاعات ارتباطی (Relational) کار لذت بخشی نیست. دست و پنجه نرم کردن با SQL برای بعضی برنامه نویسان اصلا جالب نیست. برای خیلی ها با LINQ این کار لذت بخش تر شده.&lt;br /&gt;یکی از ساده ترین امکانات لذت بخش لینک می تواند چیزی باشد که خواهم گفت.&lt;br /&gt;فرض کنید یک فایل dbml را به درستی به یک Database که دارای جدول دانشجویان است متصل کردیم. حالا یک CheckboxList داریم که شامل سال های 1360 تا 1370 بوده که مربوط به سال تولد دانشجویان است. حالا کاربر چند تا از آیتم ها را انتخاب میکند و دکمه جستجو را میزند.&lt;br /&gt;اگر فرض کنیم کاربر 1360 و 1362 و 1364 را انتخاب کرده باشد. در روش سنتی بهترین روش یافتن نتایج، ارسال چنین Queryی به بانک اطلاعات بود:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;&lt;br /&gt; SELECT * FROM Students WHERE BirthYear IN (1360, 1362, 1364)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;از این بگذریم که این Query را چطور اجرا میکردیم.&lt;br /&gt;&lt;br /&gt;و حالا در LINQ این کار را خواهیم کرد:&lt;br /&gt;&lt;br /&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;pre class="brush:csharp"&gt;&lt;br /&gt;int[] selectedValues = { 1360, 1362, 1364 };&lt;br /&gt;using (MyDataContext dc = new MyDataContext())&lt;br /&gt;{&lt;br /&gt; dc.Students.Where(s =&gt; selectedValues.Contains(s.BirthYear));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;این دقیقا Query سنتی که در بالا دیدید را می سازد. بدون کم و کاست.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-5902214144108459111?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/5902214144108459111/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/search-query-with-linq.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5902214144108459111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/5902214144108459111'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/search-query-with-linq.html' title='Search query with LINQ'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-3125766626379314656</id><published>2009-04-07T01:26:00.000+04:30</published><updated>2009-04-07T01:34:28.794+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Operating System'/><category scheme='http://www.blogger.com/atom/ns#' term='Kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# Kernel</title><content type='html'>&lt;p&gt;برای علاقه مندان به زبان #C همیشه جالب است که بتوانند هر گونه برنامه ای را با این زبان بنویسند. در حالی که اجرای برنامه های نوشته شده با &lt;a href="http://www.thinstall.com/solutions/net_virtual.php"&gt;#C بدون نصب dotNet Framework&lt;/a&gt; گاهی اوقات بسیار پیچیده است، شاید نوشتن یک سیستم عامل با این زبان واقعا یک رویا به حساب آید. ولی حقیقت دارد. البته شاید این موضوع از تمایل برنامه نویسان به ترجمه مستقیم (قبل از اجرا /AHead-Of-Time) زبان MSIL به Assembly یا شبیه آن ناشی شده.فعلا سه سیستم عامل یا پوسته با #C پیاده شده.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Singularity_(operating_system)"&gt;Singularity&lt;/a&gt; از Microsoft &lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/SharpOS"&gt;SharpOS&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gocosmos.org/"&gt;Cosmos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;به نظر میرسد Singularity از بقیه کاملتر باشد. البته قبلا هم شبیه این کار با Java انجام شده. روش کار همه اینها به این صورت است که زبان #C تبدیل به کد CPU شده و با لینک شدن به قطعه کد های لازم برای Boot کردن سیستم یک Core ساده به وجود می آورد. Cosmos دارای یک کیت توسعه برای Visual Studio است که شما میتوانید پوسته ی خود را نوشته و بعد از فشردن کلید F5 پوسته ی خود را بر روی Virtual PC و... اجرا و مشاهده کنید.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-3125766626379314656?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/3125766626379314656/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/c.html#comment-form' title='0 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3125766626379314656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/3125766626379314656'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/c.html' title='C# Kernel'/><author><name>A</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-983233472140726193.post-245653362909798462</id><published>2009-04-07T01:10:00.001+04:30</published><updated>2009-05-21T20:44:39.406+04:30</updated><title type='text'>شروع</title><content type='html'>&lt;p align="center"&gt;به نام خدا&lt;/p&gt;&lt;p align="right"&gt;M-A-EngineerGroup نام گروهیست متشکل از دو توسعه دهنده نرم افزار که از مرداد ماه سال 1387 فعالیت خود را آغاز کرده. به طور متوسط سابقه هر یک از این افراد در زمینه توسعه نرم افزار به حدود 6 سال می رسد.&lt;br /&gt;با توجه به این امر که در زمینه ساخت و توسعه نرم افزار بدست آوردن هر تجربه بسیار پر هزینه و با ارزش می باشد تصمیم گرفتیم که تجربیات مختصر خود، که قبل و بعد از تشکیل این گروه در طی انجام پرژه های نرم افزاری بدست آمده را با دیگران شریک شویم.&lt;/p&gt;&lt;div dir="rtl" align="right"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/983233472140726193-245653362909798462?l=m-a-engineergroup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m-a-engineergroup.blogspot.com/feeds/245653362909798462/comments/default' title='نظرات پيام'/><link rel='replies' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/blog-post.html#comment-form' title='1 نظر'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/245653362909798462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/983233472140726193/posts/default/245653362909798462'/><link rel='alternate' type='text/html' href='http://m-a-engineergroup.blogspot.com/2009/04/blog-post.html' title='شروع'/><author><name>M</name><uri>http://www.blogger.com/profile/17606435011852870099</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
