<code>
element. uilang's logic relies on manipulating classes on HTML elements and using these classes in CSS to show, hide, animate and transform elements when a click occurs. This simple logic lets designers create most of the typical user interface behaviours: tabs, popovers, overlays, sliding menus, etc. Demo معرفی نگارش بعدی ASP.NET
ASP.NET MVC and Web API have been unified into a single programming model
No-compile developer experience
Dependency injection out of the box
Side by side - deploy the runtime and framework with your application
NuGet everything - even the runtime itself
All Open Source via the .NET Foundation and takes contributions
همچنین پشتیبانی رسمی از Mono توسط مایکروسافت:
C# 8.0 - Async Streams
‘AsyncEnumerableReader’ reached the configured maximum size of the buffer when enumerating a value of type ‘<type>’. This limit is in place to prevent infinite streams of ‘IAsyncEnumerable<>’ from continuing indefinitely. If this is not a programming mistake, consider ways to reduce the collection size, or consider manually converting ‘<type>’ into a list rather than increasing the limit.
برای تنظیم یا تغییر آن میتوان از خاصیت MvcOptions.MaxIAsyncEnumerableBufferLimit در برنامههای ASP.NET Core استفاده کرد.
- اصل Interface Segregation چیست؟ | www.dotnetdev.info
- چند نکته در مورد فیلد Identity در SQL | vsblogger.blogfa.com
- گوگل سالانه 300 میلیون دلار به موزیلا پرداخت می کند | www.winbeta.net
- وزیر ارتباطات : دسترسی به اینترنت ممکن است حذف شود | www.winbeta.net
- FIXED – 64-bit Adobe PDF Previewer | www.sharepointjohn.com
- LINQ Extensions Library | linqlib.codeplex.com
- Reactive Extensions (Rx) v1.0.10621 SP1 | www.microsoft.com
- Return-Oriented Programming | cseweb.ucsd.edu
- 11 کاری که هر برنامه نویس بهتر است در سال 2012 انجام دهد | michaelcrump.net
- Max & Min in LINQ to XML | rmanimaran.wordpress.com
- سه پروژه آغازین با Roslyn | www.codeproject.com
- مروری بر مباحث امنیتی سیلورلایت 5 | blogs.msdn.com
- free - List of freely available programming books - Stack Overflow | stackoverflow.com
- افزونه گوگل پلاس کروم | chrome.google.com
- آمار سورس فورج در مورد تعداد کاربران از سیستم عاملهای مختلف | sourceforge.net
- انتشار SQL Server 2012 RC | blogs.technet.com
- بدنبال دلیل برای ادامه کار با NHibernate | www.linkedin.com
- دسکتاپ ویندوز 7 خود را بهتر مدیریت کنید | www.hanselman.com
- ساخت یک RSS Reader با دات نت میکرو فریم ورک | channel9.msdn.com
- فسلفهی وجودی IL چیست؟ چرا کدهای دات نت از همان ابتدا مستقیما به زبان ماشین ترجمه نمیشوند؟ | blogs.msdn.com
- کدهای CSS را در ویژوال استودیو سریعتر تایپ کنید | madskristensen.net
خواندنیهای 12 مرداد
الگوهای طراحی برنامه نویسی شیءگرا
توسعه وب
دات نت فریم ورک
دبلیو پی اف و سیلور لایت
سی و مشتقات
کتابهای رایگان
متفرقه
محیطهای مجتمع توسعه
مرورگرها
پی اچ پی
تصادف برای یک راننده حتی در صورت داشتن بیمه نامهای معتبر، گران تمام خواهد شد (از لحاظ جانی/مادی/...). بنابراین صرف نظر از اینکه شرکت بیمه کننده چه میزان از خسارت راننده را جبران خواهد کرد، باید تا حد ممکن از تصادفات بر حذر بود (defensive driving).
در برنامه نویسی، استثناءها (Exceptions) مانند تصادفات هستند و مدیریت استثناءها (exception handling)، همانند بیمه خودرو میباشند. هر چند مدیریت استثناءها جهت بازگردان برنامه شما به ادامه مسیر مهم هستند، اما جایگزین خوبی برای Defensive programming به شمار نمیروند. استثناءها و مدیریت آنها برای برنامه گران تمام میشوند (خصوصا از لحاظ میزان مصرف منابع سیستمی و سربارهای مربوطه). بنابراین در برنامه باید توجه خاصی را به این موضوع معطوف داشت که چه زمانی، چگونه و در کجا ممکن است استثنائی رخ دهد و علاج واقعه را پیش از وقوع آن نمود.
اصل اول Defensive programming : همیشه ورودی دریافتی را تعیین اعتبار کنید
به مثال زیر دقت بفرمائید:
public void LogEntry(string msg)
{
string path = GetPathToLog();
using (StreamWriter writer = File.AppendText(path))
{
writer.WriteLine(DateTime.Now.ToString(CultureInfo.InstalledUICulture));
writer.WriteLine("Entry: {0}", msg);
writer.WriteLine("--------------------");
}
}
قرار هست رخدادهای برنامه را توسط این متد، لاگ کنیم. اکنون لحظهای دقت نمائید که این تابع در چه مواقعی ممکن است دچار مشکل شود:
path میتواند یک رشته خالی باشد.
path میتواند نال باشد.
path میتواند حاوی کاراکترهای غیرمجازی باشد.
path میتواند فرمت نادرستی داشته باشد.
path میتواند به محلی ناصحیح اشاره نماید.
path میتواند اصلا وجود نداشته باشد.
فایل مورد نظر ممکن است readonly باشد.
برنامه ممکن است دسترسی لازم را برای نوشتن در مسیر ذکر شده، نداشته باشد.
فایل مورد نظر ممکن است توسط پروسهای دیگر قفل شده باشد.
ممکن است در لحظه نوشتن یا خواندن بر روی فایل، هارد دیسک دچار مشکل گردد.
و ...
رخ دادن هر کدام از موارد ذکر شد منجر به بروز یک استثناء خواهد شد.
چگونه این وضعیت را بهبود بخشیم؟
فرض کنید متد GetPathToLog قرار است مسیر ذخیره سازی لاگها را از کاربر در یک برنامه ASP.Net دریافت کند. برای این منظور باید حداقل دو مورد را منظور کرد.
<asp:TextBox ID="txtPath" runat="server" MaxLength="248" />
<asp:RequiredFieldValidator ID="reqval_txtPath" runat="server" ControlToValidate="txtPath" ErrorMessage="Path is required." />
<asp:RegularExpressionValidator ID="regex_txtPath" runat="server" ControlToValidate="txtPath" ErrorMessage="Path is invalid." ValidationExpression='^([a-zA-Z]\:)(\\{1}|((\\{1})[^\\]([^/:*?<>”|]*(?<![ ])))+)$' />
برای تکست باکس ارائه شده، ابتدا یک RequiredFieldValidator در نظر گرفته شده تا مطمئن شویم که کاربر حتما مقداری را وارد خواهد کرد. اما این کافی نیست. سپس با استفاده از عبارات باقاعده و RegularExpressionValidator بررسی خواهیم کرد که آیا فرمت ورودی صحیح است یا خیر.
تا اینجا 4 مورد اول مشکلاتی که ممکن است رخ دهند (موارد ذکر شده فوق)، کنترل میشوند بدون اینکه احتمال رخ دادن این استثناءها در برنامه وجود داشته باشد. Defensive programming به این معنا است که طراحی برنامه باید به گونهای باشد که در اثر استفادهی غیر قابل پیش بینی از آن، در عملکرد برنامه اختلالی رخ ندهد.
بررسی وضعیت فعلی پروژه Roslyn
- فرض کنید میخواهید کارهایی را که Resharper در مورد آنالیز کدها انجام میدهد، مثلا تشخیص کد مرده در یک متد را خودتان پیاده سازی کنید. اینکار بدون دسترسی به زیر ساختهای یک کامپایلر واقعی غیرممکن است و تیم Resharper تا الان مهمترین کاری که انجام دادند، تهیه این زیرساخت قابل دسترسی با کدهای دات نت بوده.
- انجام کارهای AOP در دات نت سادهتر خواهد شد. یکی از مواردی که بحث هست در مورد آینده زبانهای دات نتی، meta programming هست. Roslyn زیرساخت افزودن این امکانات خواهد بود در آینده.
- الان دنیایی از اطلاعات و امکانات داخل کامپایلر native سیشارپ دفن شده که کسی به آن دسترسی ندارد و حداکثر این است که مسیر یک سری فایل cs را به آن بدهید و یک خروجی کامپایل شده از آن بگیرید. حیف این امکانات نیست؟! پروژه Roslyn، امکان دسترسی به تمام اجزای یک کامپایلر واقعی را توسط یک سری API عمومی، برای برنامه نویسهای دات نت میسر میکند.
آزمون اطلاعات عمومی JavaScript
JS Is Weird
JavaScript is a great programming language, but thanks to the fact that its initial release was built in only ten days back in 1995, coupled with the fact that JS is backward-compatible, it's also a bit weird. It doesn't always behave the way you might think. In this quiz, you'll be shown 25 quirky expressions and will have to guess the output. Even if you're a JS developer, most of this syntax is probably, and hopefully, not something you use in your daily life.
بررسی تغییرات Blazor در دات نت 8
What's New in Blazor for .NET 8
Come find out about the future of Blazor in .NET 8! We'll explore all the upcoming features and improvements, including our effort to create a unified full stack web UI programming model that combines the strengths of client and server. We hope to see you there!
You will learn:
How Blazor is becoming the best option for full stack web development
How Blazor in .NET 8 will provide full flexibility to build web apps however works best for you
How to try out the latest Blazor features in .NET 8