پاسخ به بازخورد‌های پروژه‌ها
طراحی قسمت سطوح دسترسی
ممنون از راهنما
ولی وقتی داشتم دانلود می‌کردم انتظار راهنمای کامل‌تری داشتم. راهنمایی مخصوص برنامه نویس ها.
حداقل مدل ساختار بانک رو می‌ذاشتین.
در هر صورت بازم تشکر. مفید بود 
نظرات نظرسنجی‌ها
چه عواملی باعث میشود که شما از ادامه یا تکمیل پروژه دلسرد شوید؟
دو مورد از این گزینه‌ها برای من پیش آمده است که یکیش عدم پرداخت به موقع مبالغ پروژه بود و دیگری  نبود دانش فنی و ناتوانی پیمانکار  ، زمانی که برنامه نویس مدت طولانی را صرف یک پروژه (بدون تحلیل) بکند و هیچ مبلغی به آن پرداخت نشود واقعا از آن پروژه دلسرد می‌شود.
نظرات مطالب
پیاده سازی اسکرام با شیرپوینت
نه آنچنان. پایه کار همان است. برنامه نویسی شیرپوینت بیشتر مبتنی است بر ASP.NET Webforms و Work flow foundation و نگارش جدید آن WCF هم دارد.
و در کل شرکتی که می‌خواهد از SharePoint درست استفاده کند باید متخصص‌هایی با این توانایی‌ها داشته باشد:
- توانایی راه اندازی دومین ویندوز سرور
- توانایی راه اندازی Exchange server
- توانایی راه اندازی SQL Server
- آشنایی کامل با IIS
- تسلط کامل به برنامه نویسی ASP.NET و وب پارت نویسی.
- آشنایی با برنامه نویسی Workflow foundation

به نظر من مایکروسافت بسیاری از کتابخانه‌هایی را که به دات نت فریم ورک اضافه کرده فقط و فقط به خاطر SharePoint بوده نمونه‌اش همین Workflow foundation . من کمتر دیدم از این مورد خارج از SharePoint استفاده شود. یا اگر دقت کرده باشید ASP.NET 2.0 وب پارت هم دارد ولی باز هم ... کاربردش جای دیگری است.
یا در SQL Server 2008 یک سری از قابلیت‌های file stream ایی که اضافه شده فقط به خاطر مدیریت ساده‌تر و بهینه‌تر حجم بالای دیتابیس شیرپوینت در نگارش 2010 آن بوده که همه چیز داخل آن ذخیره می‌شود.
مطالب
مروری بر کاربردهای Action و Func - قسمت دوم
در قسمت قبل از  Func و Actionها برای ساده سازی طراحی‌های مبتنی بر اینترفیس‌هایی با یک متد استفاده کردیم. این مورد خصوصا در حالت‌هایی که قصد داریم به کاربر اجازه‌ی فرمول نویسی بر روی اطلاعات موجود را بدهیم، بسیار مفید است.

مثال دوم) به استفاده کننده از API کتابخانه خود، اجازه فرمول نویسی بدهید

برای نمونه مثال ساده زیر را درنظر بگیرید که در آن قرار است یک سری عدد که از منبع داده‌ای دریافت شده‌اند، بر روی صفحه نمایش داده شوند:
public static void PrintNumbers()
{
    var numbers = new[] { 1,2,3,5,7,90 }; // from a data source
    foreach(var item in numbers)
    {
        Console.WriteLine(item);
    }    
}
قصد داریم به برنامه نویس استفاده کننده از کتابخانه گزارش‌سازی خود، این اجازه را بدهیم که پیش از نمایش نهایی اطلاعات، بتواند توسط فرمولی که مشخص می‌کند، فرمت اعداد نمایش داده شده را تعیین کند.
روال کار اکثر ابزارهای گزارش‌سازی موجود، ارائه یک زبان اسکریپتی جدید برای حل این نوع مسایل است. اما با استفاده از Func و ... روش‌های Code first (بجای روش‌های Wizard first)، خیلی از این رنج و دردها را می‌توان ساده‌تر و بدون نیاز به اختراع و یا آموزش زبان جدیدی حل کرد:
public static void PrintNumbers(Func<int,string> formula)
{
    var numbers = new[] { 1,2,3,5,7,90 };  // from a data source
    foreach(var item in numbers)
    {
        var data = formula(item);
        Console.WriteLine(data);
    }    
}
اینبار با استفاده از Func، امکان فرمول نویسی را به کاربر استفاده کننده از API ساده گزارش ساز فرضی خود داده‌ایم. Func تعریف شده در اینجا یک عدد int را در اختیار استفاده کننده قرار می‌دهد. در این بین، برنامه نویس می‌تواند هر نوع تغییر یا هر نوع فرمولی را که مایل است بر روی این عدد به کمک دستور زبان جاری مورد استفاده، اعمال کند و در آخر تنها باید نتیجه این عملیات را به صورت یک string بازگشت دهد. برای مثال:
 PrintNumbers(number => string.Format("{0:n0}",number));
البته سطر فوق ساده شده فراخوانی زیر است:
 PrintNumbers((number) =>{ return string.Format("{0:n0}",number); });
به این ترتیب اعداد نهایی با جدا کننده سه رقمی نمایش داده خواهند شد.
از این نوع طراحی، در ابزارها و کتابخانه‌های جدید گزارش سازی مخصوص ASP.NET MVC زیاد مشاهده می‌شوند.


مثال سوم) حذف کدهای تکراری برنامه

فرض کنید قصد دارید در برنامه وب خود مباحث caching را پیاده سازی کنید:
using System;
using System.Web;
using System.Web.Caching;
using System.Collections.Generic;

namespace WebToolkit
{
    public static class CacheManager
    {
        public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes)
        {
            if (data == null) return;
            httpContext.Cache.Add(
                key,
                data,
                null,
                DateTime.Now.AddMinutes(durationMinutes),
                TimeSpan.Zero,
                CacheItemPriority.AboveNormal,
                null);
        }
    }
}
در هر قسمتی از برنامه که قصد داشته باشیم اطلاعاتی را در کش ذخیره کنیم، الگوی تکراری زیر باید طی شود:
var item = httpContext.Cache[key];
if (item == null)
{
    item = ReadDataFromDataSource();
    if (item == null)
          return null;

    CacheInsert(httpContext, key, item, durationMinutes);
}
ابتدا باید وضعیت کش جاری بررسی شود؛ اگر اطلاعاتی در آن موجود نبود، ابتدا از منبع داده‌ای مورد نظر خوانده شده و سپس در کش درج شود.
می‌توان در این الگوی تکراری، خواندن اطلاعات را از منبع داده، به یک Func واگذار کرد و به این صورت کدهای ما به نحو زیر بازسازی خواهند شد:
using System;
using System.Web;
using System.Web.Caching;
using System.Collections.Generic;

namespace WebToolkit
{
    public static class CacheManager
    {
        public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes)
        {
            if (data == null) return;
            httpContext.Cache.Add(
                key,
                data,
                null,
                DateTime.Now.AddMinutes(durationMinutes),
                TimeSpan.Zero,
                CacheItemPriority.AboveNormal,
                null);
        }

        public static T CacheRead<T>(this HttpContextBase httpContext, string key, int durationMinutes, Func<T> ifNullRetrievalMethod)
        {
            var item = httpContext.Cache[key];
            if (item == null)
            {
                item = ifNullRetrievalMethod();
                if (item == null)
                    return default(T);

                CacheInsert(httpContext, key, item, durationMinutes);
            }
            return (T)item;
        }
    }
}
و استفاده از آن نیز به نحو زیر خواهد بود:
var user = HttpContext.CacheRead(
                            "Key1",
                            15,
                            () => _usersService.FindUser(userId));
پارامتر سوم متد CacheRead به صورت خودکار تنها زمانیکه اطلاعات کش متناظری با کلید Key1 وجود نداشته باشند، اجرا شده و نتیجه در کش ثبت می‌گردد. در اینجا دیگر از if و else و کدهای تکراری بررسی وضعیت کش خبری نیست.
 
نظرات اشتراک‌ها
درس خوندن، ارزشش رو داره؟
بنظرم گزینه اول واقعا نسبت به بقیه مهم‌تر هست. ما در روند معمول خیلی چیزها رو به دلایل عدم علاقه و زمان دنبال نمیکنیم و طبیعتا با ندونستن اونها در مواقع نیاز، نمی‌فهمیم که چه چیزی رو از دست دادیم و شاید هیچ وقت هم بعدا نفهمیم. گاهی اوقات دانستن یک مساله‌ی تئوریک حتی در حد خیلی کلی، کمک بسیاری به تصمیم گیری درست میکنه.
مشابه اون رو در عالم برنامه نویسی زیاد داریم. دوست برنامه نویسی داشتم که یک پروژه نسبتا حجیم با تیم چند نفره رو داشتن جلو می‌بردن و هیشکدوم حتی خبر از وجود سیستم asp.net membership برای احراز هویت و امنیت نداشتند! تصور کنید که چه حجم کد و البته پر از باگ رو می‌خواستند خودشون انجام بدن ...
اشتراک‌ها
بهترین پروژه های برنامه نویسی

بهترین روش یادگیری برنامه نویسی انجام پروژه‌های مختلف هست.

وب سایت معرفی شده در لینک بالا اومده کلون clone بیشتر از ۱۰۰ وبسایت بزرگ مثل آمازون، نتفیلیکس، یوتیوب، تیک تاک، سرویس‌های گوگل، پروژه واتساپ و ... را به صورت اوپن سورس به همراه تمام اطلاعات از جمله چه زبان برنامه نویسی و تکنولوژی‌هایی استفاده کردند، لینک دمو و گیت هاب را گذاشته.

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

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

سایت آموزشی ZetCode
نظرات مطالب
اجرای برنامه‌های ASP.NET به کمک وب سرور Apache توسط Mono در Ubuntu
- در آینده‌ای نزدیک: «SQL Server on Linux»
- در هم اکنون: هاست سرور SQL در ویندوز و استفاده از آن در کلاینت‌های لینوکسی با SQL Client
- و یا اگر از یک ORM استفاده می‌کنید (مانند EF یا NH)، چون در این حالت کدهای شما وابستگی به بانک اطلاعاتی مورد استفاده ندارند، سوئیچ کردن به بانک‌های اطلاعاتی دیگر، ساده خواهد بود؛ مگر اینکه از قابلیت‌های ORM استفاده نکرده باشید و مستقیما SQL نویسی ویژه‌ی آن بانک اطلاعاتی خاص را انجام داده باشید. در غیر اینصورت (استفاده از ORM؛ بدون SQL نویسی مستقیم و ویژه)، حداکثر کاری که باید انجام دهید، تغییر پروایدرهای ابتدای برنامه است؛ بدون تغییری در کدهای اصلی برنامه
نظرات مطالب
مدیریت ساده‌تر امور Async (غیر همزمان) در نسخه‌ی بعدی زبان‌های دات نتی
- اتفاقا اخیرا مایکروسافت تمرکز کمتری روی زبان‌ها داشته و تمرکز بیشتر اون بر روی کتابخانه‌ها و افزونه‌های مرتبط با دات نت فریم ورک بوده مثل افزونه‌های برنامه نویسی موازی و بهبودهای زیادی که در زمینه برنامه نویسی چند ریسمانی به دات نت 4 اضافه شده. این مبحث ساده سازی async هم در جهت تکمیل این بحث است.
- هنوز هم با تمام این اضافات، حجم مستندات زبان سی شارپ در حد یک دانشنامه‌ی قطور مثل مستندات زبان CPP در نیامده است.
- اینکه مثلا زبان جاوا در چند سال اخیر درجا زده و مثلا در مورد LINQ یا قابلیت‌های پویای زبان یا همین مبحث ساده سازی Async کاری نکرده آیا به نظر شما دلیل مناسبی است برای کم کاری دیگران؟
مطالب
آموزش سیلورلایت 4 - قسمت‌های 21 تا 27

فصل عنوان فایل مرتبط
21 بررسی کنترل DataForm +
22 برنامه نویسی گرافیکی در Silverlight +
23 آشنایی با پویا نمایی در Silverlight +
24 برنامه نویسی چند ریسمانی در Silverlight +
25 تعامل با کدهای HTML صفحه در Silverlight +
26 استفاده از WCF RIA Services در Silverlight +
27 استفاده از MEF در Silverlight 4 +

منابع و مآخذ +

سورس تمام مثال‌های کتاب +
و یا دریافت تمام قسمت‌ها به صورت یکجا



توضیحی در مورد مثال‌ها:
تمام پوشه‌های مثال‌ها دارای شماره هستند و این شماره‌ها متناظرند با شماره‌ی فضاهای نام مثال‌ها