For decades, passwords have been the common backbone (headache) of authentication and are well known to lack in security while being frustrating and difficult to use. As we continue to see daily data breaches, the reality of moving away from weak static credentials and killing the password is upon us. Join this session to learn how FIDO2 and WebAuthn open authentication standards, in conjunction with YubiKeys, are solving the elimination of passwords at scale. Hear how organizations like Microsoft have implemented these standards for a true passwordless experience and find out how your organization can follow suit. You'll gain a greater understanding of how to achieve a modern and flexible security architecture through the use of FIDO open standards and hardware authenticators.
Not many are familiar with this awesome feature of dotnet core. Aspnet
team is actively maintaining a project named JavascriptServices
; Along with other packages, it includes the NodeServices
package. Using this package, one can easily create an instance of node
and execute JavaScript code (function) in the backend. If you think of it right now, you can see that it actually opens up a wide variety of development opportunities. By opportunities, I mean; the ASP.NET core project is trying hard to make its package eco-system (NuGet) rich but while doing it, why not get advantages of other package eco-system as well, right? When I talk about other than nuget package manager, the first name that comes to my mind is Npm
(node package manager). Npm
is the largest package manager out there on this very day and its growing rapidly. By using NodeServices
package, we can now use (not all of the npm
packages but) most of the npm
packages in our backend development. So, let me show you how to configure NodeServices
in your aspnet core project and use it to execute JavaScript code on the backend.
LINQPad is a powerful testing tool for all .NET developers that can help them deliver solutions in less time. In Getting the Most from LINQPad Succinctly, returning Succinctly series author José Roberto Olivas Mendoza lays out different ways to extend the functionality built into LINQPad. In this ebook, you’ll learn how to use LINQPad to query Entity Framework models in Visual Studio, how to work with the LINQPad command-line utility, how to write your own extensions and visualizers, and how to write custom data context drivers.
-
A Quick Tour of LINQPad
-
LINQPad and Entity Framework
-
LINQPad Scripting
-
LINQPad Extensibility
-
Custom Data Context Drivers
Custom languages provide many benefits, but many people fear the complexity that comes with trying to deploy them. Author Vassili Kaplan sweeps away the obstacles and shows how custom languages are a tool within reach of any developer. With Implementing a Custom Language Succinctly, readers will discover just how much they can accomplish with the skills they already have.
- Introduction
- The Split-and-Merge Algorithm
- Basic Control Flow Statements
- Functions, Functions, Functions
- Exceptions and Custom Functions
- Operators, Arrays, and Dictionaries
- Localization
- Testing and Advanced Topics
This article dives into the mock questions I would ask, along with responses that are my personal best guess to the answers. Could my answers not reflect actual opinions shared by the team at Microsoft? Sure, but I'm hoping folks from the .NET team can jump in to correct me if I am way off base.
This is a rather interesting time for .NET – what's being done shapes the future of .NET for the next decade. Let's ask the honest questions and hopefully all of us will understand the new .NET ecosystem a little better.
کتابخانه Philter
Philter is a jQuery plugin giving you the power to control CSS filters with HTML attributes. Demo
Here's a list of filters that you can use and their limitations in Philter.
- blur
- grayscale
- hue-rotate
- saturate
- sepia
- contrast
- invert
- opacity
- brightness
- drop-shadow - Supports only black color. Requires 4 values. The 4th value instead of color is opacity 0 to 100%.
- svg - Custom SVG filter. Requires 1 value - filter ID.
- color - Requires 2 values. Color and opacity. Doesn't support transitions.
- vintage - Requires an integer from 1 to 6. Doesn't support transitions or opacity.
IIS 10.0 Express منتشر شد
Internet Information Services (IIS) 10.0 Express is a free, simple and
self-contained version of IIS that is optimized for developers. IIS 10.0
Express makes it easy to use the most current version of IIS to develop
and test websites. IIS 10.0 Express has all the core capabilities of
IIS 10.0 and additional features to ease website development.
The benefits of using IIS 10.0 Express include:
- The same web server that runs on your production server is now available on your development computer.
- Most tasks can be done without the need for administrative privileges.
- IIS Express runs on Windows 7 Service Pack 1 and all later versions of Windows.
- Many users can work independently on the same computer.
حین نصب بستههای npm، پوشهی node_modules آن حاوی هزاران فایل خواهد شد. به همین جهت این پوشه بر روی کارآیی هر نوع ادیتوری تاثیر منفی میگذارد. روش ندید گرفتن آن در VSCode به صورت زیر است:
به منوی File -> Preferences -> Settings مراجعه کرده و تنظیمات ذیل را به آن اضافه کنید:
"files.exclude": { "**/.git": true, // this is a default value "**/.svn": true, // this is a default value "**/.hg": true, // this is a default value "**/CVS": true, // this is a default value "**/.DS_Store": true, // this is a default value "**/node_modules": true, "**/bower_components": true }
متود IsIn
/// <summary> /// (Syntactic Sugar) Checks if the given value is among a list of values or not. /// </summary> /// <remarks> /// This method is for syntactic sugar. What it actually does is to allow developers to wrtie a code like this /// <code> /// xVariable.IsIn(MyEnum.Value1,MyEnum.Value2) /// </code> /// Instead of these codes: /// <code> /// new []{ MyEnum.Value1, MyEnum.Value2 }.Contains(xVariable); /// </code> /// Or more commonly: /// <code> /// xVariable == MyEnum.Value1 || xVariable == MyEnum.Value2 /// </code> /// </remarks> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <param name="list"></param> /// <returns></returns> public static bool IsIn<T>(this T source, params T[] list) { Func<T, T, bool> compare = (v1, v2) => EqualityComparer<T>.Default.Equals(v1, v2); return list.Any(item => compare(item, source)); }
پیشنیاز : «تکرار خودکار سرستونهای یک جدول در صفحات مختلف، توسط iTextSharp»
همانطور که در مطلب پیشنیاز عنوان شده ذکر گردید، iTextSharp امکان درج خودکار header و footer به علاوه محاسبه خودکار تعداد ردیفهای یک جدول در یک صفحه را بر اساس طول و اندازه محتوای هر ردیف، دارد. برای مثال یک صفحه ممکن است 2 ردیف شود و یک صفحه 20 ردیف. تمام اینها را به صورت خودکار محاسبه میکند و بسیار عالی است. (این امکان مهمی است که خیلی از ابزارهای گزارشگیری موجود هنوز با آن مشکل دارند)
اما اگر فرض را بر این بگذاریم که اندازه سلولها و در نتیجه طول هر ردیف ثابت است و مثلا تمام صفحات نهایتا از یک تعداد ردیف مشخص تشکیل خواهند شد، خاصیتی را به نام number of rows یا rows count و امثال آنرا ندارد که مثلا به آن گفت، من در هر صفحه فقط 5 ردیف را میخواهم نمایش دهم و نه 20 ردیف را.
روش حل این مساله را در ادامه ملاحظه خواهید کرد و یک نکتهی خیلی ساده و مستند نشده دارد!
using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace RowsCountSample
{
class Program
{
static void Main(string[] args)
{
using (var pdfDoc = new Document(PageSize.A4))
{
var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));
pdfDoc.Open();
var table1 = new PdfPTable(3);
table1.HeaderRows = 2;
table1.FooterRows = 1;
//header row
var headerCell = new PdfPCell(new Phrase("header"));
headerCell.Colspan = 3;
headerCell.HorizontalAlignment = Element.ALIGN_CENTER;
table1.AddCell(headerCell);
//footer row
var footerCell = new PdfPCell(new Phrase("footer"));
footerCell.Colspan = 3;
footerCell.HorizontalAlignment = Element.ALIGN_CENTER;
table1.AddCell(footerCell);
//adding some rows
for (int i = 0; i < 70; i++)
{
//adds a new row
table1.AddCell(new Phrase("Cell[0], Row[" + i + "]"));
table1.AddCell(new Phrase("Cell[1], Row[" + i + "]"));
table1.AddCell(new Phrase("Cell[2], Row[" + i + "]"));
//sets the number of rows per page
if (i > 0 && table1.Rows.Count % 7 == 0)
{
pdfDoc.Add(table1);
table1.DeleteBodyRows();
pdfDoc.NewPage();
}
}
pdfDoc.Add(table1);
}
//open the final file with adobe reader for instance.
Process.Start("Test.pdf");
}
}
}
نکته جدید این مثال، قسمت زیر است:
if (i > 0 && table1.Rows.Count % 7 == 0)
{
pdfDoc.Add(table1);
table1.DeleteBodyRows();
pdfDoc.NewPage();
}
هر زمان که table1 به صفحه اضافه شود، header و footer هم اضافه خواهند شد، اما اگر BodyRows آن حذف نشود، دفعهی دومی که این table به صفحه اضافه میشود، شامل ردیفهای مثلا یک تا 10 خواهد بود بجای 6 تا 10 .