نظرات اشتراک‌ها
مقایسه Syntax ها در C sharp و java
البته این بیشتر مقایسه c# 2.0 هست با جاوا. از نگارش سه بعد خیلی از مباحث موجود در سی‌شارپ معادلی در جاوا ندارند.
نظرات مطالب
معرفی System.Text.Json در NET Core 3.0.
نمایش رسمی null در جاوا اسکریپت به این صورت است:
{ "Value": null }
بنابراین اگر چنین اطلاعاتی به سمت سرور ارسال شود، به درستی پردازش خواهد شد؛ اگرنه باید از تبدیلگر زیر استفاده کنید:
    public class StringJsonConverter : JsonConverter<byte?>
    {
        public override byte? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            return reader.TokenType switch
            {
                JsonTokenType.Number => reader.GetByte(),
                JsonTokenType.Null => null,
                JsonTokenType.String =>
                    byte.TryParse(reader.GetString(), NumberStyles.Number, CultureInfo.InvariantCulture, out var parsed) ? parsed : (byte?)null,
                _ => throw new ArgumentOutOfRangeException(nameof(reader), reader.TokenType, "Cannot parse unexpected JSON token type.")
            };
        }

        public override void Write(Utf8JsonWriter writer, byte? value, JsonSerializerOptions options)
        {
            if (value.HasValue)
            {
                writer.WriteNumberValue(value.Value);
            }
            else
            {
                writer.WriteNullValue();
            }
        }
    }
نظرات مطالب
شروع کار با Apache Cordova در ویژوال استودیو #2
سلام.
کندی این فریمورک مربوط میشود به طبیعت خود تکنولوژی که در آن استفاده شده است.استفاده از  WebView به جای مرورگر هم باعث کاهش سرعت اجرای کد‌های جاوا اسکریپت خواهد شد. ولی حاد هم نیست  ،الان اگر این سایت  را مشاده کنید، بیشتر برنامه‌های چت و بازی، با استفاده از این فریمورک ساخته میشود. در مقابل شما لازم نیست لزوما با زبان بومی پلتفرم مورد نظر خود درگیر باشید. میتوانید از فریمورک‌های CSS , JS که الآن هم روز به روز بهینه‌تر و محبوبتر میشود ، استفاده کنید. اگر کارایی این فریمورک برای ساخت بازی‌ها کافی باشد  چرا باید برای ساخت اپلیکیشن‌های مورد نیاز ما بهینه نباشند.توجه کنید که این فریمورک ،وب اپلیکیشن ما را به زبان‌های بومی هر پلتفرم تبدیل نمی‌کند. زمانی که شما نیاز دارید به API‌های بومی سیستم عامل مورد نظری که دسترسی داشته باشید که برای آن امکان ساخت پلاگین وجود ندارد (در حال حاضر برای Calendar) در این صورت اگر برنامه شما نیاز به همچین امکانی دارد لذا نباید Cordova را انتخاب کنید.
بنده تا حالا سمت Android Studio نرفتم اصلا و صرفا به دلیل اینکه Cordova با فیلد من(وب) نزدیکی زیادی داشت سمت آن رفتم(یکی از مزایای آن)
در مقاله بعد در مورد این مبحث بیشتر تمرکز خواهیم کرد.
نظرات مطالب
حذف فضاهای خالی در خروجی صفحات ASP.NET MVC
با تشکر. من چندبار سعی کردم از روش حذف فواصل خالی استفاده کنم ولی هربار از خیرش گذشتم به این دلایل:
- در مرورگرهای قدیمی گاها باعث کرش و بسته شدن آنی برنامه می‌شد.
- کدهای جاوا اسکریپت یا CSS اگر داخل صفحه قرار داشتند، مشکل پیدا می‌کردند.
- گاهی از همین فضاهای خالی برای اندکی ایجاد فاصله بین عناصر ممکن است استفاده شود. این‌ها با حذف فواصل خالی به هم می‌ریزند.
- بعضی مرورگرها علاقمند هستند که doctype ابتدای یک فایل HTML، حتما در یک سطر مجزا ذکر شود.
- زمانیکه شما code‌ایی در صفحه تعریف می‌کنید، برای پردازش صحیح تگ PRE توسط مرورگر، مهم است که سطر جدیدی وجود داشته باشد، یا فاصله بین عناصر حفظ شود. در غیراینصورت کد نمایش داده شده به هم می‌ریزد.
- الگوریتم‌های فشرده سازی اطلاعات مانند GZIP یا Deflate، حداقل کاری را که به خوبی انجام می‌دهند، فشرده سازی فواصل خالی است.
نظرات مطالب
متدی برای بررسی صحت کد ملی وارد شده
اینم برای تشخیص صحت کد ملی اشخاص حقوقی با استفاده از جاوا اسکریپت
function checkCodeMeli(code)
{
  
  var L=code.length;
  
  if(L<11 || parseInt(code,10)==0) return false;
  
  if(parseInt(code.substr(3,6),10)==0) return false;
  var c=parseInt(code.substr(10,1),10);
  var d=parseInt(code.substr(9,1),10)+2;
  var z=new Array(29,27,23,19,17);
  var s=0;
  for(var i=0;i<10;i++)
    s+=(d+parseInt(code.substr(i,1),10))*z[i%5];
  s=s%11;if(s==10) s=0;
  return (c==s);

}



نظرات مطالب
AngularJS #2
احساس می‌کنم، کمی از صحبت‌های من اشتباه برداشت شده است. قالب باید HTML باشد، اما مهم نیست که این قالب توسط چه کسی تولید شده است. برای مثال من در پروژه‌ی خودم یک کنترلر تعریف کرده ام که درآن همه‌ی action‌ها فقط partialview بر می‌گردانند. حال قبل از اینکه این فایل‌های cshtml تبدیل به html شوند و به کلاینت برگردانده شوند، من با razor عملیات دلخواه خود را انجام می‌دهم.
  
برای اینکه تاریخ‌ها را شمسی کرده و از این قبیل چیدمان داده ها، قبل از اینکه تبدیل به json شده و به کلاینت پاس داده شوند، باید در یک حلقه داده‌های مورد نظر را به فرمت مورد نظر درآورده و در نهایت تبدیل به json کرده و به کلاینت بگرداند.

 برای حل مشکل T4MVC  می توان در همان ابتدای کار تمام آدرس‌های مورد نظر را در یک شی جاوا اسکریپت global تعریف کرد و در سراسر برنامه از آن استفاده کرد.

شاید دلایل شما برای این مثال کوچک منطقی به نظر آید، اما هدف angular حل مشکلات برنامه‌های بزرگ و حرفه ای است.
برای مثال نوشتن یک filemanager با استفاده از angular فوق العاده لذت بخش است و به راحتی می‌توان یک فایل منیجیر حرفه ای را با آن نوشت. برای آنهم برنامه دارم ، اما اگر وقت شود...
نظرات مطالب
بررسی تصویر امنیتی (Captcha) سایت - قسمت دوم
ممنون از نظرتون،
موضوع  مورد نطر، قسمتی است که متن تصویر برای این کپچا در آن نگهداری میشود،
1.  در صورتی که بخواهیم از توانایی‌های سمت سرور کمک گرفت: بنظرم برای اعتبار سنجی میتوان برای کابران در بانک یک کد یونیک به ازای اولین هیت کاربر در سایت ایجاد کرد و این کد را بصورت رمزنگاری شده در کلاینت(کوکی) نگهداشت و مواردی از این دست را با این کد اعتبارسنجی کرد.
2. در صورتی که بخواهیم در سمت کلاینت همه چیز هندل شود : مطمئنا بهتر است که این فیلد مخفی در کنار باکس ورودی قرار داده نشود و برای نگهداری این فیلد از جاوا اسکریپت یا کوکی و از هردو کمک گرفت به این صورت که این مقدار کد شده بصورت مقداری غیر از این و با نامی بدون ربط در متغیری که از سمت سرور مقدار دهی میشود و فقط در سرور خوانده میشود تعویض کرد.
نظرات مطالب
خلاصه‌ای کوتاه در مورد WinRT
خیر. به WinRT یا Windows run time جدید به چشم Silverlight run time نگاه کنید. لایه‌ای است بالاتر از Win32 API که برفراز آن‌ می‌شود برنامه توسعه داد (WPF فقط یک روش طراحی رابط کاربری جدید است، run time نیست). WinRT شبیه به همان مدل امنیتی بسته سیلورلایت را به ارث برده. همان لایه نمایش XAML را به ارث برده. با این تفاوت که این run time جدید آن علاوه بر XAML ، امکان کار با HTML5 و جاوا اسکریپت را هم می‌دهد و محدود به XAML نیست. برخلاف سیلورلایت، این run time فقط محدود به دات نت هم نیست و با CPP و Native کد هم می‌شود با آن کار کرد. به این نتیجه رسیدند که طراحی خوبی انجام دادن، خوب چرا فقط دات نت استفاده کند؟
ضمنا این محدودیت‌های امنیتی ذکر شده برای آن قطعا برای خیلی از برنامه نویس‌ها خوشایند نخواهد بود. برای دسترسی بیشتر، مجبور خواهند شد به سیستم‌های دسکتاپ سابق رجوع کنند.
نظرات مطالب
پایان پروژه ASP.NET Ajax Control Toolkit !
@farbod
برای کلا جاوا اسکریپت هم کتابخانه‌های Unit test وجود دارد تا از این دلچرکین بودن خارج شوید:
QUnit

@محمد امین شریفی
اینبار انتخاب مایکروسافت درست بوده:
1- هزینه توسعه رو کاهش دادند. برای مثال هدف از Ajax Control Toolkit چیزی بوده شبیه به پلاگین‌های jQUery اما با هزینه بیشتر. اینبار شما هزاران پلاگین جی کوئری در اختیارتون هست و نه صرفا مجموعه‌ی Ajax Control Toolkit .
2- موردی رو که در مقاله بالا بهش اشاره شده و دلیل اصلی کنار گذاشتن ASP.NET Ajax بوده پایین بودن کارآیی ASP.NET Ajax است. هم حجم بالایی دارد و هم تبادلات شبکه‌ای حجیمی را به همراه دارد که در هر دو مورد جی کوئری بهینه‌تر است.
و یک سری موارد دیگر که قبلا بهش اشاره کرده بودم: (+)
3- انتخاب اصلی کتابخانه Ajax در ASP.NET MVC الان همین جی‌کوئری است و در مقاله فوق به یک سری افزونه و کتابخانه کمکی برای آن اشاره شده (که در حال توسعه و تکمیل است).
مطالب
ایجاد توابع بی‌نام خود اجرا شونده در جاوا اسکریپت

همان‌طور که می‌دانید توابع نیز در جاوا اسکریپت از نوع اشیا هستند بنابراین تمامی قوانین حاکم بر یک شیئ در مورد آن‌ها نیز صادق است به مثال ساده‌ی زیر توجه کنید:
function showMessage(msg)
{
    alert(msg);
}
مثال فوق تابعی ساده است که پیامی را به عنوان ورودی دریافت و سپس آن را چاپ می‌کند حال ما می‌توانیم به جای نام یک متغیر را به عنوان delegate برای این تابع ایجاد کنیم:
var d=function (msg)
{
    alert(msg);
}
در این حالت می‌توان با استفاده از این متغیر در واقع تابع را فراخوانی نمود:
d("Hessam");
حال همان‌طور که می‌توانیم برای اشیاء از عملگرها استفاده کنیم برای این متغیر نیز می‌توانیم این کار را انجام دهیم:
(d)("Hessam");

حال در صورتی‌که تابع را تنها یک بار نیاز داشته باشیم می‌توانیم بدنه آن‌را مستقیما داخل پرانتز قرار دهیم:
(function (msg)
{
    alert(msg);
})(“Hessam”);
تابع فوق یک تابع بی‌نام خود اجرا شونده است در مقالات بعد کاربرد‌های را برای این نوع توابع شرح خواهم داد