نظرات مطالب
اعمال تزریق وابستگی‌ها به مثال رسمی ASP.NET Identity
سلام
من از متد OnValidateIdentity برای بررسی آخرین وضعیت کاربر و .. در بازه زمانی X استفاده می‌کنم. مشکلی که من با این متد دارم تغییرات claim‌ها رو به کوکی response اعمال می‌کنه (مثلا تغییر نام کاربر) و تغییرات تا درخواست بعدی کاربر قابل استفاده نیست یعنی CurrentPrincipal تا درخواست بعدی آپدیت نمیشه. در هنگام لاگین این موضوع به چشم نمی‌آید چون با ریدایرکت کردن صفحه request جدیدی که حاوی کوکی آپدیت شده است ایجاد میشه به دنبال اون CurrentPrincipal بروز شده است.
نظرات مطالب
بررسی امکانات Bootstrap 4
خیلی ممنون از لینک مفیدتون. این نکته رو در ادامه مطلب شما بگم خوبه که Twitter وقتی از نسخه 2 به نسخه 3 بوت استرپ مهاجرت کرد، بعد از چند مدت ساپورتشو از Bootstrap 2 قطع کرد و دیگه ادامه نداد. اما در هنگام انتشار نسخه Bootstrap 4 alpha اعلام کرده که همچنان از Bootstrap 3 حمایت خواهد کرد. و این عمل هم ممکنه به دلیل محبوبیت نسخه 3 باشه که به نظر من شاید 70 درصد سایت‌هایی که در این چند سال در دنیا طراحی شده بر پایه Bootstrap بوده و واقعا نمیشه از این آمار بی‌شمار چشم پوشید. البته در Bootstrp 4 اتفاقاتی افتاده که شاید برای مهاجرت از 3 به 4 یک rework اساسی را متحمل شد، اما ارزشش را داره.
نظرات مطالب
Url Routing در ASP.Net WebForms
با سلام؛ جدولی دارم که لیست دانلود‌ها رو نشون میده. وقتی روی یک لینک از جدول کلیک میکنی، میخام چنین آدرسی رو نشون بده:
آشنایی با قوانین کار/ ReDownload/1127/
حالا برای اینکه لیست دانلود‌ها که یکسری مقاله هست، توی جستجوی گوگل بیشتر به چشم بخوره، اومدم آدرس بالا رو تبدیل به این آدرس کردم:
docx. اشنایی با قوانین کار/ ReDownload/1127/
ولی متاسفانه وقتی روی لینک کلیک میکنی http error 404 -not found
حالا سوال اصلی اینه، کلا روش من غلطه یا باید تنظیمات خاصی رو اعمال کنم؟
نظرات مطالب
در مورد ادامه ...
سلام آقای نصیری عزیز
واقعــــــــــــا جای تشکر داره این همه زحمته بدون چشم داشت
خسته نباشید.
دو نظر داشتم راجب سیستم جدید:
1- چه خوب میشه اگه جز این قسمت نظرات که ما میتونیم باهاتون ارتباط برقرار کنیم، یه فرم ارتباطی هم بزارید که مطمئن باشیم در اسرع وقت پیاممون بهتون میرسه ( البته شما همیشه اینقدر لطف دارید که نظرات رو هم زود به زود چک میکنید)
2- امکان گرفتن خروجی PDF که توی سیستم‌های مدیریت محتوا هست رو اگه بشه اینجا پیاده کنید خیلی مفید میشه.
3- خیلی ماهید :)
بازم ممنون
نظرات مطالب
EF Code First #6
یکی از مهم‌ترین اهداف EF Code first این است که با زیرساخت‌های یک ORM آشنا شوید. نیاید سؤال بپرسید database first که مسایل همزمانی رو اعمال می‌کنه؛ ولی اطلاع نداشته باشید که پشت صحنه آن در تنظیمات خواص یک فیلد یا جدول، چه امکاناتی وجود دارد و چه مسایلی از چشم شما دور مانده است. این فرق کسی است که اول کد می‌نویسد و طراحی می‌کند (code first)، با کسی که فقط وابسته است به یک سری ابزار که سازوکار درونی آن‌ها را نمی‌داند (database first).
بنابراین سؤال اینجا است که آیا وظیفه‌ی یک ORM‌است که برای شما کدنویسی لایه‌های مختلف را انجام دهد؟ یا اینکه اومدید اینجا یک سطح بالاتر رو تجربه کنید؟
البته ابزار هم وجود دارد مانند MVC Scaffolding که بر مبنای EF code first کار می‌کند و یک Code generator است برای ASP.NET MVC . ولی هدف از این مباحث چیز دیگری است.
نظرات مطالب
بررسی علت CPU Usage بالای برنامه در حال اجرا
استفاده از تاریخ میلادی در دیتابیس خوبه. مثلا آمارگیری از تاریخ تا تاریخ یا اعمال بسیاری از امکانات توکار بانک‌های اطلاعاتی. اما یکجا مشکل ساز می‌شود و آن هم گروه بندی بر اساس ماه‌های شمسی است. مثلا گزارش جمع حقوق کارکنان را بر اساس ماه‌های شمسی یک سال تهیه کنید. این گزارش 12 سطر دارد (به ازای هر ماه) و 2 ستون (نام ماه و جمع حقوق پرداختی). اینجا است که کوئری SQL آن اصلا شکل قشنگی پیدا نمی‌کند که هیچ (چون ماه‌های تاریخ میلادی تطابقی با ماه‌های شمسی ندارد)،‌ بسیار هم غیربهینه می‌شود. به همین جهت یکی از سربارهایی که می‌شود از آن چشم پوشی کرد، نگهداری تاریخ شمسی و میلادی با هم است.
نظرات مطالب
انجمن سایت LLBLGEN سورس باز شد
سلام،
تقریبا بله!
- طول عمر آن از EF بیشتر است.
- رابط گرافیکی تولید نگاشت‌های آن از EF و نمونه‌ی موجود در VS.NET بسیار بهتر و پایدارتر است.
- پشتیبانی بهتری از انواع بانک‌های اطلاعاتی دارد.
- code generator دارد.
- پشتیبانی کاملی از LINQ دارد.
و ...

ولی باز هم من ترجیح می‌دم سراغ راه‌حل‌های تجاری غیرمایکروسافتی نروم. حداقل می‌دونم مایکروسافت تا 10 سال دیگر هست. چندتا کتاب در مورد هر کدام از فریم ورک‌هاش موجود است، انواع و اقسام بلاگ‌ها، فوروم‌ها و غیره برای آن هست که قابل چشم پوشی نیست.

برای مطالعه بیشتر :
(+),(+)
نظرات مطالب
مشکل ی و ک فارسی و عربی در یک دیتابیس اس کیوال سرور
بعضی نسخه‌های kbdfa.dll بر اساس استاندارد ۲۹۰۱ هستند. استاندارد ۲۹۰۱ توسط استاندارد جدیدتر ۹۱۴۷ باطل اعلام گردید. البته اختلاف این دو تا استاندارد خیلی توی چشم نمی‌زند.
یک درایور خوب هم برای استاندارد ۹۱۴۷ وجود دارد که من در ویندوز ویستا و چندین ویندوز ایکس پی از آن استفاده می‌کنم بدون این که مشکلی برایم به وجود آمده باشد.

آدرس درایور: http://prdownloads.sourceforge.net/farsitools/persiankeyboard.zip?download

مطالعه استاندارد: http://fa.farsiweb.ir/mediawiki-fa/images/a/a9/Isiri-9147.pdf

لینک استاندارد در سایت سازمان استاندارد: http://www.isiri.org/asp/account/checklog.asp?ID=9147.pdf


بیاید از زبان فارسی حمایت کنیم.
مطالب
به روز رسانی‌هایی جهت VS2010

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

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

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

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

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

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

مطالب
آشنایی با مفاهیم شیء گرایی در جاوا اسکریپت #2
از آنجا که برای کار با جاوا اسکریپت نیاز به درک کاملی درباره‌ی مفهوم حوزه کارکرد متغیرها (Scope) می‌باشد و نحوه فراخوانی توابع نیز نقش اساسی در این مورد بازی می‌کند، در این قسمت با این موارد آشنا خواهیم شد:
جاوا اسکریپت از مفهومی به نام functional scope برای تعیین حوزه متغیرها استفاده می‌کند و به این معنی است که با تعریف توابع، حوزه عملکرد متغیر مشخص می‌شود. در واقع هر متغیری که در یک تابع تعریف می‌شود در کلیه قسمتهای آن تابع، از قبیل If statement – for loops و حتی nested function نیز در دسترس میباشد.
اجازه دهید با مثالی این موضوع را بررسی نماییم.
function testScope() {
var myTest = true;
if (true) {
var myTest = "I am changed!"
}
alert(myTest);
}
testScope(); // will alert "I am changed!"
همانگونه که میبینیم با اینکه در داخل بلاک if یک متغیر جدید تعریف شده، ولی در خارج از این بلاک نیز این متغیر قابل دسترسی میباشد. البته در مثال بالا اگر بخواهیم به متغیر myTest در خارج از function دسترسی داشته باشیم، با خطای undefined مواجه خواهیم شد. یعنی برای مثال در کد زیر:
function testScope() {
var myTest = true;
if (true) {
var myTest = "I am changed!"
}
alert(myTest);
}
testScope(); // will alert "I am changed!"
alert(myTest); // will throw a reference error, because it doesn't exist outside of the function
 برای حل این مشکل دو راه وجود دارد: 
1 – متغیر myTest را در بیرون بلاک testScope() تعریف کنیم
2 – هنگام تعریف متغیر myTest، کلمه کلیدی var را حذف کنیم که این موضوع باعث میشود این متغیر در کل window قابل دسترس باشد و یا به عبارتی متغیر global میشود.
قبل از پرداختن به ادامه بحث خواندن مقاله مربوط به Closure در جاوااسکریپت توصیه میگردد .
در پایان بحث Scope‌ها با یک مثال نسبتا جامع اکثر این حالات به همراه خروجی را نشان میدهیم :
<script type="text/javascript">
          // a globally-scoped variable
        var a = 1;
        // global scope
        function one()
        {
            alert(a);
        }
        // local scope
        function two(a)
        {
            alert(a);
        }
        // local scope again
        function three()
        {
            var a = 3;
            alert(a);
        }
        // Intermediate: no such thing as block scope in javascript
        function four()
        {
            if (true)
            {
                var a = 4;
            }
            alert(a); // alerts '4', not the global value of '1'
        }
        // Intermediate: object properties
        function Five()
        {
            this.a = 5;
        }
        // Advanced: closure
        var six = function ()
        {
            var foo = 6;
            return function ()
            {
                // javascript "closure" means I have access to foo in here, 
                // because it is defined in the function in which I was defined.
                alert(foo);
            }
        }()
        // Advanced: prototype-based scope resolution
        function Seven()
        {
            this.a = 7;
        }
        // [object].prototype.property loses to [object].property in the lookup chain
        Seven.prototype.a = -1; // won't get reached, because 'a' is set in the constructor above.
        Seven.prototype.b = 8; // Will get reached, even though 'b' is NOT set in the constructor.
        // These will print 1-8
        one();
        two(2);
        three();
        four();
        alert(new Five().a);
        six();
        alert(new Seven().a);
        alert(new Seven().b);
</Script>
برای مطالعه بیشتر به اینجا  مراجعه نمایید.

Function Invocation Patterns In JavaScript :
از آنجا که توابع در جاوااسکریپت به منظور 1 – ساخت اشیاء  و 2 – حوزه دسترسی متغیرها(Scope)  نقش اساسی ایفا می‌کنند بهتر است کمی درباره استفاده و نحوه فراخوانی آنها  (Function Invocation Patterns) در جاوااسکریپت بحث نماییم.
در جاوااسکریپت 4 مدل فراخوانی تابع داریم که به نامهای زیر مطرح هستند:
1. Method Invocation
2. Function Invocation
3. Constructor Invocation
4. Apply And Call Invocation
 در فراخوانی توابع به هر یک از روشهای بالا باید به این نکته توجه داشت که حوزه دسترسی متغیرها در جاوااسکریپت ابتدا و انتهای توابع هستند و اگر به عنوان مثال از توابع تو در تو استفاده کردیم ،حوزه شی this برای توابع داخلی تغییر خواهد کرد .این موضوع را در طی مثالهایی نشان خواهیم داد.
Method Invocation :
وقتی یک تابع قسمتی از یک شی باشد به آن متد میگوییم به عنوان مثال :
var obj = {
    value: 0,
    increment: function() {
        this.value+=1;
    }
};
obj.increment(); //Method invocation
در اینحالت this به شی (Object) اشاره میکند که متد در آن فراخوانی شده است و در زمان اجرا نیز به عناصر شی Bind میشود ،در مثال بالا حوزه  this شی obj خواهد شد و به همین منظور به متغیر value دسترسی داریم.
Function Invocation:
در اینحالت که از () برای فراخوانی تابع استفاده میگردد ،This به شی سراسری (global object ) اشاره می‌کند؛ منظور اینکه this به اجزای تابعی که فراخوانی آن انجام شده اشاره نمی‌کند. اجازه دهید با مثالی این موضوع را روشن کنیم
<script type="text/javascript">
var value = 500; //Global variable
var obj = {
    value: 0,
    increment: function() {
        this.value++;
        var innerFunction = function() {
            alert(this.value);
        }
        innerFunction(); //Function invocation pattern
    }
}
obj.increment(); //Method invocation pattern
<script type="text/javascript">
Result : 500
از آنجا که  () innerFunction به شکل  Function invocation pattern فراخوانی شده است به متغیر value در داخل تابع increment دسترسی نداریم و حوزه دسترسی global میشود و اگر در حوزه global نیز این متغیر تعریف نشده بود به خطای undefined میرسیدیم .
برای حل این گونه مشکلات ساختار کد نویسی ما بایستی به شکل زیر باشد :
<script type="text/javascript">
var value = 500; //Global variable
var obj = {
    value: 0,
    increment: function() {
        var that = this;
        that.value++;
        var innerFunction = function() {
            alert(that.value);
        }
        innerFunction(); //Function invocation pattern
    }
}
obj.increment();
<script type="text/javascript">
Result : 1
در واقع با تعریف یک متغیر با نام مثلا that و انتساب شی  this به آن میتوان در توابع بعدی که به شکل   Function invocation pattern فراخوانی میگردند به این متغیر دسترسی داشت .
Constructor Invocation :
در این روش برای فراخوانی تابع از کلمه new استفاده میکنیم. در این حالت یک شیء مجزا ایجاد شده و به متغیر دلخواه ما اختصاص پیدا می‌کند. به عنوان مثال داریم :
 var Dog = function(name) {   
  //this == brand new object ({});    
    this.name = name;    
    this.age = (Math.random() * 5) + 1;
};
var myDog = new Dog('Spike');
//myDog.name == 'Spike'
//myDog.age == 2
var yourDog = new Dog('Spot');
//yourDog.name == 'Spot'
//yourDog.age == 4
در این مورد با استفاده از New باعث میشویم همه خواص و متدهای تابع function برای هر نمونه از آن که ساخته میشود ( از طریق مفهوم Prototype که قبلا درباره آن بحث شد) بطور مجزا اختصاص یابد. در مثال بالا شی mydog چون حاوی یک نمونه از تابع dog بصورت  Constructor Invocation میباشد، در نتیجه به خواص تابع dog از قبیل name  و age دسترسی داریم. در اینجا اگر کلمه new استفاده نشود به این خواص دسترسی نداریم؛ در واقع با اینکار، this به mydog اختصاص پیدا میکند.
اگر از new استفاده نشود متغیر myDog ،undefined میشود.
یک مثال دیگر :
var createCallBack = function(init) { //First function
    return new function() { //Second function by Constructor Invocation
        var that = this;
        this.message = init;
        return function() { //Third function
            alert(that.message);
        }
    }
}
window.addEventListener('load', createCallBack("First Message"));
window.addEventListener('load', createCallBack("Second Message"));
در مثال بالا از مفهوم closure  نیز در مثالمان استفاده کرده ایم .
Apply And Call Invocation:
تمامی توابع جاوااسکریپت دارای دو متد توکار apply() و call() هستند که توسط این متدها میتوان این توابع را با context دلخواه فراخوانی کرد.
نحوه فراخوانی به شکل مقابل است :
myFunction.apply(thisContext, arrArgs);
myFunction.call(thisContext, arg1, arg2, arg3, ..., argN);
که thisContext به حوزه اجرایی (execution context) تابع اشاره میکند. تفاوت دو متد apply() و call() در نحوه فرستادن آرگومانها به تابع میباشد که در اولی توسط آرایه اینکار انجام میشود و در دومی همه آرگومانها را بطور صریح نوشته و با کاما از هم جدا میکنیم .
مثال :
var contextObject = {
testContext: 10
}
var otherContextObject = {
testContext: "Hello World!"
}
var testContext = 15; // Global variable
function testFunction() {
alert(this.testContext);
}
testFunction(); // This will alert 15
testFunction.call(contextObject); // Will alert 10
testFunction.apply(otherContextObject); // Will alert "Hello World”
در این مثال دو شی متفاوت با خواص همنام تعریف کرده و یک متغیر global نیز تعریف میکنیم. در انتها یک تابع تعریف میکنیم که مقدار this.testContext را نمایش میدهد. در ابتدا حوزه اجرایی تابع (this) کل window جاری میباشد و وقتی testFunction() اجرا شود مقدار متغیر global نمایش داده میشود. در اجرای دوم this به contextObject اشاره کرده و حوزه اجرایی عوض میشود و در نتیجه مقدار testContext مربوطه که در این حالت 10 میباشد نمایش داده میشود و برای فراخوانی سوم نیز به همین شکل .
یک مثال کاملتر :
var o = {
  i : 0,
  F : function() {
    var a = function() { this.i = 42; };
    a();
    document.write(this.i);
  }
};
o.F();
Result :0
خط o.f() تابع f را به شکل Method invocation اجرا میکند. در داخل تابع f یک تابع دیگر به شکل function invocation اجرا میشود که در اینحال this به global object اشاره میکند و باعث میشود مقدار i در خروجی 0 چاپ شود .
برای حل این مشکل 2 راه وجود دارد  
راه اول :
var p = {
  i : 0,
  F : function() {
    var a = function() { this.i = 42; };
    a.apply(this);
    document.write(this.i);
  }
};
 p.F();
Result :42
با اینکار this را موقع اجرای تابع درونی برایش فرستاده تا حوزه اجرای تابع عوض شود و به i دسترسی پیدا کنیم .
یا اینکه همانند مثالهای قبلی :
var q = {
  i: 0,
  F: function F() {
    var that = this;
    var a = function () {
      that.i = 42;
    }
    a();
    document.write(this.i);
  }
}
 q.F();

منابع :
Javascript programmer,s refrence