‫۷ سال و ۱۱ ماه قبل، دوشنبه ۳ آبان ۱۳۹۵، ساعت ۱۳:۳۲
نکته‌ای در مورد رفع مشکل «typings ERR! caused by connect ECONNREFUSED 10.10.34.36:443» پس از نصب TypeScript 2.0

پس از ارائه‌ی TypeScript 2.0، مایکروسافت کار مدیریت مخزن Typings را به عهده گرفته‌است و کار آن توزیع مخزن DefinitelyTyped به npm است و دیگر نیازی به استفاده از ابزارهای  typings و یا tsd نیست. برای مثال اینبار بجای اینکه دستور ذیل را صادر کنیم:
typings install lodash --ambient --save
که با خطای یاد شده متوقف می‌شود، می‌توان نوشت:
npm install --save @types/lodash
یعنی همه چیز مانند حالت نصب معمولی lodash است (npm install --save lodash)؛ اما یک types@ را در ابتدای آن بیشتر دارد. در این حالت فایل‌های d.ts. را در پوشه‌ی types@ ذیل node_modules خواهید یافت:

‫۷ سال و ۱۱ ماه قبل، یکشنبه ۲ آبان ۱۳۹۵، ساعت ۱۴:۲۳
- «نحوه استفاده صحیح از لوسین در ASP.NET»
+ برای رفع فایل lock باید به این صورت عمل کنید:
private static FSDirectory _directoryTemp;

private static FSDirectory _directory
{
            get
            {
                if (_directoryTemp == null)
                    _directoryTemp = FSDirectory.Open(new DirectoryInfo(_luceneDir));
                if (IndexWriter.IsLocked(_directoryTemp))
                    IndexWriter.Unlock(_directoryTemp);
                string lockFilePath = Path.Combine(_luceneDir, "write.lock");
                if (File.Exists(lockFilePath))
                    File.Delete(lockFilePath);
                return _directoryTemp;
            }
}
یک مثال
‫۷ سال و ۱۱ ماه قبل، شنبه ۱ آبان ۱۳۹۵، ساعت ۲۱:۴۶
این مورد مشکلی است که قالب پیش فرض ایجاد این پروژه‌ها دارند که به همراه دو بسته‌ی نیوگت اضافی هستند. این‌ها را باید حذف کنید (نیازی به آن‌ها نیست و تاثیری در کار برنامه ندارند):
PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
سپس اگر در فایل csproj برنامه، تعاریف ذیل موجود هستند، آن‌ها را حذف کنید:
<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
و در آخر اگر در فایل web.config برنامه هم این تنظیمات را مشاهده می‌کنید، آن‌ها را هم حذف کنید:
<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"></compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"></compiler>
    </compilers>
</system>
‫۷ سال و ۱۱ ماه قبل، پنجشنبه ۲۹ مهر ۱۳۹۵، ساعت ۲۳:۲۶
یک مثال دیگر متداول آن، استفاده‌ی از آن در EF Code first است:
public class ProjectsContext : DbContext 
{
  //the static constructor runs a single time with the first instance of a class 
   static ProjectsContext() 
   {
     Database.SetInitializer(new CreateDatabaseIfNotExists<ProjectsContext>); 
   } 
}
در اینجا تنظیمات مهاجرت‌ها در داخل یک سازنده‌ی استاتیک قرار گرفته‌است. به این ترتیب این تنظیم در اولین باری که قرار است اولین وهله‌ی این کلاس ساخته شود، انجام خواهد شد و دیگر تکرار نمی‌شود.
‫۷ سال و ۱۱ ماه قبل، پنجشنبه ۲۹ مهر ۱۳۹۵، ساعت ۲۳:۲۱
یک مثال جالب آن، کش کردن مقدار خواصی است که قرار است از فایل‌های کانفیگ خوانده شوند:
public interface ICheckoutConfig
{
    bool UseGeolocation { get; } 
}

public class CheckoutConfig : ICheckoutConfig 
{ 
    static CheckoutConfig() 
    { 
        bool.TryParse(ConfigurationManager.AppSettings["UseGeolocation"], out _useGeolocation); 
    }
 
    private static bool _useGeolocation; 
    public bool UseGeolocation 
    { 
        get { return _useGeolocation; } 
    } 
}
در اینجا هم سازنده‌ی کلاس استاتیک تعریف شده‌است و هم مقداری را که قرار است تنظیم کند. به این ترتیب خواندن از فایل کانفیگ فقط یکبار در طول عمر برنامه صورت خواهد گرفت.
‫۷ سال و ۱۱ ماه قبل، چهارشنبه ۲۸ مهر ۱۳۹۵، ساعت ۱۸:۰۳
یک نکته‌ی تکمیلی: برای Highlight کردن لینک صفحه جاری در بوت استرپ 3
$(document).ready(function () {
    $('ul.nav.navbar-nav, ul.list-group, ul.nav.nav-tabs').find('a[href="' + location.pathname + '"]')
                          .closest('li')
                          .addClass('active');
});
‫۷ سال و ۱۱ ماه قبل، چهارشنبه ۲۸ مهر ۱۳۹۵، ساعت ۱۶:۰۰
- مطلب جاری برای حالت «AutomaticMigrationsEnabled = true» است که در آن نیازی به اعمال دستی مهاجرت‌ها نیست (در این حالت متد Up و Down ایی وجود ندارد) و همه چیز پس از آن توسط MigrateDatabaseToLatestVersion خودکار است. اگر از مهاجرت‌های «دستی» استفاده می‌کنید، نیازی به این مطلب ندارید. هر زمانیکه دستور Update-Database اجرا می‌شود (یعنی حالت مهاجرت «دستی»)، اجرای متد Seed هم جزئی از آن است.
- اگر رشته‌ی اتصالی به صورت دستی تنظیم می‌شود، MigrateDatabaseToLatestVersion نیاز به اصلاح دارد: « استفاده از چندین بانک اطلاعاتی به صورت همزمان در EF Code First »