اشتراک‌ها
Husky.Net v0.0.2 منتشر شد.

ابزاری ایست که به جرات میتونم بگم تمام شرکت‌ها و پروژه‌های Open-Source و تیم‌های متوسط تا بزرگ بهش نیاز دارند. برنامه نویس‌ها JavaScript و بیشتر وب, پکیج هایی با نام husky و lint-staged دارند که به صورت گستره روی بیشتر پروژه‌های خوبی که دیدم داره ازش استفاده میشه ولی پیش نیازهایی داره که برای دات نت کارها زیاد شاید جالب نباشه. مثل نصب node و yarn و .... 

این ابزار امکانات اون پکیج هارو دراختیار برنامه نویسان دات نت میگذاره. (البته فیچر هایی بیشتری هم داره)

تولید داخل هم هست حمایت فراموش نشه D:

اگر نیاز بود در مورد اینکه چرا گفتم تمام شرکت‌ها نیاز دارند بهش  نظر بدید سعی میکنم یک مقاله کوچک آماده کنم در این مورد.


Husky.Net v0.0.2 منتشر شد.
نظرات مطالب
نمایش حجم ViewState برنامه‌های ASP.NET WebForms
سلام،
- بستگی دارد. اگر شبکه داخلی است. کلا بحث اندازه گیری آن‌را فراموش کنید. چون سرعت دریافت بالا است. اگر برای اینترنت برنامه می‌نویسید مهم است و بالای 30 کیلوبایت به ازای هر صفحه را باید زیاد دانست.
- همان لینک داده شده در ابتدای مقاله را دنبال کنید. یک سری لینک در کامنت‌های آن برای فشرده سازی هست به همراه پیاده سازی کامل.
- هم...،‌ باید منتظر نگارش بعدی ASP.NET بود یعنی نگارش 5 . اگر در نگارش 5 هم تغییرات آنچنانی حاصل نشده بود (مثل نگارش 4 فعلی که فقط یک سری موارد جزئی در آن تغییر کرده، مثلا فشرده سازی سشن، مشخص کردن ID سمت کلاینت و از این نوع بحث‌هایی که خیلی وقت است خود برنامه نویس‌ها برای آن راه حل پیدا کرده‌اند و ... به نظر من جدید نیستند)، آنگاه ... MVC تنها راه حل "زنده" و در حال پیگیری از طرف مایکروسافت تلقی خواهد شد.
نظرات مطالب
مقدمه‌ای بر یادگیری ماشین در #C با استفاده از ML.NET
سلام به شما و همه
ممنونم از اظهار لطف شما. در رابطه با موارد مطرح شده چند نکته رو عرض می‌کنم خدمتتون:
۱- استفاده از دیتاست‌ها و شبکه‌های عصبی مصنوعی پیش‌آموزش‌دیده یا اصطلاحاً Pretrained بسیار کمک کننده است چون بار محاسباتی بسیار بزرگی رو از پیش پای شما بر‌می‌داره. یعنی نیاز نیست که یک سیستم قدرتمند با GPU قوی و حافظه‌ی بالا رو داشته باشید و به کار بگیرید. علاوه بر این نیاز به صرف زمان بالا برای آموزش شبکه هم وجود نداره.
۲- به جز استفاده از مورد ذکر شده در بالا برای پیشبرد هدف، چون مقصود ما تشخیص حروف و اعداد هست (وارد بحث کپچاهای تصویری نمی‌شم چون مسیری متفاوت برای تشحیص و ارتباط دادن با لیبل هر شئ یا موضوع داره) یک مشکل دیگه باید از پیش رو برداشته بشه. در OCR کلاسیک، ما با شدت نویز کم‌تری روبرو هستیم. یعنی مواردی مانند اعوجاج در تصویر، رنگ‌های متفاوت، خطوط مزاحم و همچنین بزرگی و کوچکی و Rotationها و ... باید رفع بشن. بنابراین با بحث Cleaning و رفع نویز هم درگیر خواهیم شد.
یک نمونه‌ی ساده از تلاش‌های انجام گرفته با توضیحات خوب از دانشگاه استنفورد

نظرات مطالب
EF Code First #7
با تشکر از پاسخ دهی شما به سوالات؛ موقع Create درست اعمال می‌شود، اما هنگام Edit جدول واسط به روز نمی‌گردد.
مثلا برای دو جدول Role , User که نقش‌های یک کاربر بوسیله یک string[] به اکشن Edit پاس داده شده
کد مربوطه به صورت زیر می‌باشد
[HttpPost]
        public ActionResult Edit(User user, string[] tags)
        {
            if (ModelState.IsValid)
            {
                List<Role> roles = new List<Role>();
                foreach (var item in tags)
                {
                    Role role = db.Roles.Find(long.Parse(item));
                    roles.Add(role);
                }
                user.Roles = roles;
                
                db.Entry(user).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(user);
        }
اما جدول واسط در این قسمت به روز نمی‌شود . متاسفانه چیز خاصی در این رابطه پیدا نکردم و مجددا مزاحم شما شدم .

با تشکر
نظرات مطالب
آشنایی با نسخه بندی و چرخه انتشار نرم افزارها
rtm هست در تصویر اول. به معنای release to manufacturing است. مثلا مایکروسافت اول ویندوز 8 رو در اختیار لپ تاپ سازها قرار می‌ده تا نصب کنند. بعد همون نگارش چند وقت بعد برای عموم توزیع میشه. اگر این RTM برای برنامه نویس‌ها باشه، یعنی نگارش نهایی که مثلا به دارندگان اکانت‌های MSDN اول ارائه شده. بعد از چند وقت همون توزیع‌ها با سریال آزمایشی در اختیار عموم قرار می‌گیرند. rtm به معنای کیفیتی از کار است که قابل ارائه است به عموم در سطح وسیع.
نظرات مطالب
Microbenchmark
مطلب جالبی هست از یکی از اعضای تیم کامپایلر سی شارپ :(^)
بحث محاسبه کارآیی در دات نت شامل زمان صرف شده برای JIT اولیه کدها هم هست. به همین جهت اجرای اولیه اندکی بیشتر زمان می‌بره. همچنین GC هم در اینجا در ترد دیگری به موازات کار شما مشغول به کار است و اگر در یک اجرا زمان خوبی بدست آوردید به این معنا نیست که الزاما در اجرای بعدی هم همان زمان را بدست می‌آورید چون GC موکول شده به بعد. ضمن اینکه این نوع محاسبات چون به صورت ایزوله انجام می‌شود عموما بیانگر شرایط دنیای واقعی که پارامترهای زیادی در آن‌ها دخیل هستند، نیست.
و ... اینکه برای خیلی از برنامه نویس‌ها این نوع مقایسه‌ها بیشتر جذاب هستند:
Head-to-head benchmark: C++ vs .NET

مطالب
برنامه‌ی ++ Notepad و syntax highlighting فایل‌های دات نتی

برنامه‌ی ++ Notepad به عنوان یک ادیتور رایگان، سبک و بسیار سریع به همراه ارائه‌ی syntax highlighting عالی، یکی از ویرایشگرهای محبوب برنامه نویس‌ها (در هر گرایش و صنفی) به شمار می‌رود. اکثر فایل‌های مرتبط با دات نت فریم ورک هم منهای فایل‌های سورس‌ها با پسوند cs و vb و امثال آن، دقیقا از نوع XML هستند؛ برای مثال: xaml, config, edmx, csproj و بسیاری موارد دیگر. این پسوندها به صورت پیش فرض در برنامه‌ی ++ Notepad جهت اعمال syntax highlighting تعریف نشده‌اند و برای اضافه کردن آن‌ها کافی است به صورت زیر عمل کرد:
به منوی Settings گزینه‌ی Style configurator مراجعه کنید. سپس در قالبی که آن‌را انتخاب کرده‌اید، زبان XML را انتخاب کرده و فیلد User ext را تکمیل کنید (شکل زیر):



مطالب
تقویم فارسی و سیلورلایت؛ لطفا رای بدهید!

سیلورلایت 4 با پشتیبانی رسمی از زبان‌های راست به چپ و همچنین ارائه‌ی کوهی از قابلیت‌های جدید، کاندید مناسبی برای توسعه‌ی نرم افزارهای تحت وب (و همچنین برنامه‌های Desktop چند سکویی) می‌باشد. اما باید درنظر داشت که تیم آن برای کوچک نگه داشتن حجم افزونه‌ی آن تمامی کلاس‌های موجود در دات نت فریم ورک را به آن اضافه نکرده‌اند و تقویم فارسی نیز از این دست است.
مایکروسافت مدتی است که قسمتی را جهت دریافت بازخورد برنامه نویس‌ها و دریافت نظرات و پیشنهادات آن‌ها در این مورد ایجاد کرده است:


در همین زمینه لطفا به آدرس ذیل مراجعه کرده و برای اضافه شدن تقویم فارسی به صورت رسمی به آن رای بدهید؛ با تشکر!



مطالب
ساخت بسته‌های نیوگت مخصوص NET Core.
فایل‌های nuspec مخصوص سایر نگارش‌های دات نت، در NET Core. ندید گرفته شده و پردازش نمی‌شوند. در اینجا نیز تمام تنظیمات تولید بسته‌های نیوگت، در فایل project.json درج می‌شوند که در ادامه آن‌ها را بررسی خواهیم کرد.


فعالسازی تولید خودکار بسته‌های نیوگت در پروژه‌های NET Core.

پس از تهیه‌ی یک کتابخانه‌ی مبتنی بر NET Core.، تنها کاری که در جهت تولید خودکار بسته‌های نیوگت باید انجام شود، افزودن مدخل postcompile ذیل به فایل project.json است:
    "scripts": {
        "postcompile": [
            "dotnet pack --no-build --configuration %compile:Configuration%"
        ]
    }
پس از آن هربار که پروژه کامپایل شود، به صورت خودکار فایل nupkg نهایی در پوشه‌ی bin\Release تشکیل می‌شود.
در این‌حالت اگر فایل nupkg تولیدی را توسط برنامه‌های zip باز کنید، مشاهده خواهید کرد که فایل nuspec خودکاری نیز در آن درج شده‌است؛ اما ... مشخصات ثبت شده‌ی در آن ناقص هستند و شامل مواردی مانند نام پروژه، نام نویسنده، مجوز استفاده‌ی از پروژه، آدرس پروژه و امثال آن‌ها نیستند. در نگارش‌های دیگر دات نت، این مشخصات از فایل nuspec تهیه شده‌ی توسط ما جمع آوری و درج می‌شود. اما در اینجا خیر.


تکمیل فایل project.json برای درج مشخصات پروژه و تکمیل اطلاعات فایل nuspec

هرچند به ظاهر دیگر فایل nuspec دستی تهیه شده در اینجا پردازش نمی‌شود، اما تمام اطلاعات آن‌را در فایل project.json نیز می‌توان درج کرد:
{
    "version": "1.1.1.0",
    "authors": [ "Vahid Nasiri" ],
    "packOptions": {
        "owners": [ "Vahid Nasiri" ],
        "tags": [ "PdfReport", "Excel", "Export", "iTextSharp", "PDF", "Report", "Reporting", "Persian", ".NET Core" ],
        "licenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html",
        "projectUrl": "https://github.com/VahidN/iTextSharp.LGPLv2.Core"
    },
    "description": " iTextSharp.LGPLv2.Core  is an unofficial port of the last LGPL version of the iTextSharp (V4.1.6) to .NET Core.",

    "scripts": {
        "postcompile": [
            "dotnet pack --no-build --configuration %compile:Configuration%"
        ]
    }
}
در اینجا یک نمونه از مشخصات فایل project.json ایی را مشاهده می‌کنید که در آن مواردی مانند نویسندگان، برچسب‌هایی که در سایت نیوگت لیست خواهند شد، آدرس مجوز پروژه، آدرس مخزن کد پروژه و توضیحات آن، تکمیل شده‌اند. قسمت postcompile، دقیقا همین اطلاعات را جهت تولید فایل خودکار nuspec نهایی، استفاده می‌کند.


تکمیل تنظیمات Build پروژه

بهتر است کتابخانه‌های خود را در حالت release و همچنین بهینه سازی شده، توزیع کنید. به همین منظور نیاز است مدخل ذیل را نیز به فایل project.json اضافه کرد:
    "configurations": {
        "Release": {
            "buildOptions": {
                "optimize": true,
                "platform": "anycpu"
            }
        }
    },


افزودن مستندات XML ایی کتابخانه

به احتمال زیاد XML-Docهای هر متد (کامنت‌های مخصوص دات نتی هر متد یا خاصیت عمومی) را نیز به کدهای خود افزوده‌اید. برای اینکه فایل XML نهایی آن به صورت خودکار تولید شده و همچنین در بسته‌ی نیوگت نهایی درج شود، نیاز است مدخل xmlDoc را به buildOptions اضافه کنید:
    "buildOptions": {
        "xmlDoc": true
    },
در این حالت هر عنصری با سطح دسترسی public، باید دارای کامنت باشد. اگر می‌خواهید مجبور به انجام اینکار نشوید و کامپایلر اخطار صادر نکند، می‌توانید از اخطار شماره‌ی 1591 صرفنظر کنید:
    "buildOptions": {
        "xmlDoc": true,
        "nowarn": [ "1591" ] // 1591: missing xml comment for publicly visible type or member
    },


برای مطالعه‌ی بیشتر
project.json reference
نظرات مطالب
انجام کارهای زمانبندی شده در برنامه‌های ASP.NET توسط DNT Scheduler
اون قسمت فقط برنامه‌ای رو که توسط IIS خاتمه یافته، مجددا از صفر بارگذاری می‌کنه. اما اگر این وظیفه‌ی مخصوص Ping رو اضافه کنید، کار به خاتمه یافتن برنامه نمی‌رسه.