ضمنا باز هم مسیر C:\Program Files (x86)\Microsoft SDKs\Windows را برای یافتن al.exe جستجو کنید. اگر موجود است، مسیر یاد شده را دستی درست کرده و فایل al.exe و کانفیگاش را در آنجا کپی کنید.
اطلاعات بیشتر
var connection = new SqliteConnection("Data Source=:memory:"); connection.Open(); var createCommand = connection.CreateCommand(); createCommand.CommandText = @" CREATE TABLE persian_letter ( value TEXT ); INSERT INTO persian_letter VALUES ('ا'),('ب'),('پ'),('ت'),('ث'),('ج'),('چ'),('ح'),('خ'),('د'),('ذ'),('ر'),('ز'),('ژ'),('س'),('ش'), ('ص'),('ض'),('ط'),('ظ'),('ع'),('غ'),('ف'),('ق'),('ک'),('گ'),('ل'),('م'),('ن'),('و'),('ه'),('ی'); "; createCommand.ExecuteNonQuery();
var queryCommand = connection.CreateCommand(); queryCommand.CommandText = @" SELECT value FROM persian_letter order by value "; var reader = queryCommand.ExecuteReader(); var sortedDbItems = new List<string>(); while (reader.Read()) { sortedDbItems.Add($"{reader["value"]}"); }
connection.CreateCollation("PersianCollationNoCase", (x, y) => string.Compare(x, y, ignoreCase: true));
SELECT value FROM persian_letter order by value COLLATE PersianCollationNoCase
connection.CreateCollation("PersianCollationNoCaseYekeInsensitive", (x, y) => string.Compare(x.ApplyCorrectYeKe(), y.ApplyCorrectYeKe(), ignoreCase: true));
CREATE TABLE persian_letter ( value TEXT ); INSERT INTO persian_letter VALUES ('ی'),('ک');
SELECT count() FROM persian_letter WHERE value = 'ی' COLLATE PersianCollationNoCaseYekeInsensitive
/// <summary>
/// آیا فایل مورد نظر با فرمت یونیکد دارای امضا ذخیره شده است؟
/// </summary>
/// <param name="filePath">فایل ورودی</param>
/// <returns>بله یا خیر</returns>
public static bool IsUTF8(string filePath)
{
using (FileStream file = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read))
{
if (file.CanSeek)
{
byte[] bom = new byte[4]; // Get the byte-order mark, if there is one
file.Read(bom, 0, 4);
if ((bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf)) // utf-8
{
return true;
}
else
{
return false;
}
}
else
{
//احتمالا فایل بایناری است
return false;
}
}
}
/// <summary>
/// تبدیل یک فایل انسی عربی به یونیکد دارای امضاء
/// </summary>
/// <param name="path">مسیر ورودی</param>
public static void FixWindows1256(string path)
{
try
{
//باز کردن فایل با فرمت انسی عربی و تبدیل به یونیکد
string data = File.ReadAllText(path, Encoding.GetEncoding("windows-1256"));
//نوشتن حاصل یونیکد در جای قبلی با فرمت مربوطه
File.WriteAllText(path, data, Encoding.UTF8);
}
catch (Exception ex)
{
//دسترسی وجود ندارد یا امثال آن
Console.WriteLine(ex.ToString());
}
}
public interface IEfExceptionsLogger { void LogException<TResult>(DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext); } using System.Data.Common; using System.Data.Entity.Infrastructure.Interception; namespace ElmahEFLogger { public class EfExceptionsInterceptor : IDbCommandInterceptor { private readonly IEfExceptionsLogger _efExceptionsLogger; public EfExceptionsInterceptor(IEfExceptionsLogger efExceptionsLogger) { _efExceptionsLogger = efExceptionsLogger; } public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { _efExceptionsLogger.LogException(command, interceptionContext); } } }
using System; using System.Data.Common; using System.Data.Entity.Infrastructure.Interception; using Elmah; namespace ElmahEFLogger.CustomElmahLogger { public class ElmahEfExceptionsLogger : IEfExceptionsLogger { /// <summary> /// Manually log errors using ELMAH /// </summary> public void LogException<TResult>(DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext) { var ex = interceptionContext.OriginalException; if (ex == null) return; var sqlData = CommandDumper.LogSqlAndParameters(command, interceptionContext); var contextualMessage = string.Format("{0}{1}OriginalException:{1}{2} {1}", sqlData, Environment.NewLine, ex); if (!string.IsNullOrWhiteSpace(contextualMessage)) { ex = new Exception(contextualMessage, new ElmahEfInterceptorException(ex.Message)); } try { ErrorSignal.FromCurrentContext().Raise(ex); } catch { ErrorLog.GetDefault(null).Log(new Error(ex)); } } } }
public class ElmahEfInterceptor : EfExceptionsInterceptor { public ElmahEfInterceptor() : base(new ElmahEfExceptionsLogger()) { } }
DbInterception.Add(new ElmahEfInterceptor());
@helper IncludeGoogleAnalytics(WebViewPage page) { var controller = page.ViewContext.Controller; var controllerHasAuthorizeAttribute = controller.GetType().GetCustomAttributes(typeof(AuthorizeAttribute), true).Any(); var currentActionName = page.ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString(); var actionHasAuthorizeAttribute = controller.GetType().GetMethods() .Where(x => x.Name == currentActionName && x.GetCustomAttributes(typeof(AuthorizeAttribute), true).Any()) .Any(); if (!controllerHasAuthorizeAttribute && !actionHasAuthorizeAttribute) { string trackingId = ConfigurationManager.AppSettings["GoogleAnalyticsID"]; <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '@trackingId']); _gaq.push(['_trackPageview']); (function () { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> }
@HtmlUtils.IncludeGoogleAnalytics(this)
ng serve --aot
"projects": { "app-name": { "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", }, "test": { "builder": "@angular-devkit/build-angular:karma", }, "lint": { "builder": "@angular-devkit/build-angular:tslint", }, "e2e": { "builder": "@angular-devkit/build-angular:protractor", } } } }
پروتکلهای قبل از HTTP/3 از پروتکلTCP برای انتقال اطلاعات و از لایه امنیتی TLS "بر روی آن" برای تامین امنیت استفاده میکردند
ولی HTTP/3 از پروتکل QUIC (مخفف Quick UDP Internet Connections) برای انتقال اطلاعات و از TLS 1.3 "به صورت تو کار" استفاده میکند.
پروتکل QUIC یک Transport Layer Network Protocol (پروتکل انتقال اطلاعات در شبکه - مثلا مشابه TCP یا UDP است) که در ابتدا توسط گوگل توسعه داده شده و بعدها توسط IETF (کارگروه مهندسی اینترنت) به عنوان یک استاندارد به ثبت رسیده.
این پروتکل نسبت به TCP سریعتر و قابل اطمینانتر است، latency (تاخیر) کمتری دارد و ایمنتر است.
حالا ماکروسافت پیاده سازی خود از این پروتکل رو به نام MsQuic به صورت متن باز منتشر کرده.
از طرفی قراره توی دات نت 5 به صورت آزمایشی از HTTP/3 پشتیبانی بشه و داخل Kestrel و HttpClient ازش بهره برده بشه. تیم دات نت برای پیاده سازی این این قابلیت از MsQuic استفاده میکنه
uploader.bind('FileUploaded', function(up, file, info) { var obj = JSON.parse(info.response); $('form#quoteRequest').append('<input type="hidden" name="file_name" value="' + obj.result.cleanFileName + '" />'); //note obj.result.cleanFileName instead obj.cleanFileName });