Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon

Tech News - Programming

573 Articles
article-image-exploring%e2%80%afforms-in-angular-types-benefits-and-differences%e2%80%af%e2%80%af%e2%80%af-%e2%80%af
Expert Network
21 Jul 2021
11 min read
Save for later

Exploring Forms in Angular – types, benefits and differences     

Expert Network
21 Jul 2021
11 min read
While developing a web application, or setting dynamic pages and meta tags we need to deal with multiple input elements and value types, such limitations could seriously hinder our work – in terms of either data flow control, data validation, or user experience.    This article is an excerpt from the book, ASP.NET Core 5 and Angular, Fourth Edition by Valerio De Sanctis – A revised edition of a bestseller that includes coverage of the Angular routing module, expanded discussion on the Angular CLI, and detailed instructions for deploying apps on Azure, as well as both Windows and Linux.   Sure, we could easily work around most of the issues by implementing some custom methods within our form-based components; we could throw some errors such as isValid(), isNumber(), and so on here and there, and then hook them up to our template syntax and show/hide the validation messages with the help of structural directives such as *ngIf, *ngFor, and the like. However, it would be a horrible way to address our problem; we didn't choose a feature-rich client-side framework such as Angular to work that way.   Luckily enough, we have no reason to do that since Angular provides us with a couple of alternative strategies to deal with these common form-related scenarios:   Template-Driven Forms   Model-Driven Forms, also known as Reactive Forms   Both are highly coupled with the framework and thus extremely viable; they both belong to the @angular/forms library and share a common set of form control classes. However, they also have their own specific sets of features, along with their pros and cons, which could ultimately lead to us choosing one of them.   Let's try to quickly summarize these differences.   Template-Driven Forms   If you've come from AngularJS, there's a high chance that the Template-Driven approach will ring a bell or two. As the name implies, Template-Driven Forms host most of the logic in the template code; working with a Template-Driven Form means:   Building the form in the .html template file   Binding data to the various input fields using ngModel instance   Using a dedicated ngForm object related to the whole form and containing all the inputs, with each being accessible through their name.   These things need to be done to perform the required validity checks. To understand this, here's what a Template-Driven Form looks like:   <form novalidate autocomplete="off" #form="ngForm" (ngSubmit)="onSubmit(form)">  <input type="text" name="name" value="" required   placeholder="Insert the city name..."    [(ngModel)]="city.Name" #title="ngModel"   />  <span *ngIf="(name.touched || name.dirty) &&       name.errors?.required">           Name is a required field: please enter a valid city name.   </span>   <button type="submit" name="btnSubmit"          [disabled]="form.invalid">         Submit   </button>   </form>     Here, we can access any element, including the form itself, with some convenient aliases – the attributes with the # sign – and check for their current states to create our own validation workflow.   These states are provided by the framework and will change in real-time, depending on various things: touched, for example, becomes True when the control has been visited at least once; dirty, which is the opposite of pristine, means that the control value has changed, and so on. We used both touched and dirty in the preceding example because we want our validation message to only be shown if the user moves their focus to the <input name="name"> and then goes away, leaving it blank by either deleting its value or not setting it.   These are Template-Driven Forms in a nutshell; now that we've had an overall look at them, let's try to summarize the pros and cons of this approach. Here are the main advantages of Template-Driven Forms: Template-Driven Forms are very easy to write. We can recycle most of our HTML knowledge (assuming that we have any). On top of that, if we come from AngularJS, we already know how well we can make them work once we've mastered the technique.   They are rather easy to read and understand, at least from an HTML point of view; we have a plain, understandable HTML structure containing all the input fields and validators, one after another. Each element will have a name, a two-way binding with the underlying ngModel, and (possibly) Template-Driven logic built upon aliases that have been hooked to other elements that we can also see, or to the form itself.   Here are their weaknesses:   Template-Driven Forms require a lot of HTML code, which can be rather difficult to maintain and is generally more error-prone than pure TypeScript.   For the same reason, these forms cannot be unit tested. We have no way to test their validators or to ensure that the logic we implemented will work, other than running an end-to-end test with our browser, which is hardly ideal for complex forms.   Their readability will quickly drop as we add more and more validators and input tags. Keeping all their logic within the template might be fine for small forms, but it does not scale well when dealing with complex data items. Ultimately, we can say that Template-Driven Forms might be the way to go when we need to build small forms with simple data validation rules, where we can benefit more from their simplicity. On top of that, they are quite like the typical HTML code we're already used to (assuming that we do have a plain HTML development background); we just need to learn how to decorate the standard <form> and <input> elements with aliases and throw in some validators handled by structural directives such as the ones we've already seen, and we'll be set in (almost) no time.   For additional information on Template-Driven Forms, we highly recommend that you read the official Angular documentation at: https://angular.io/guide/forms   That being said; the lack of unit testing, the HTML code bloat that they will eventually produce, and the scaling difficulties will eventually lead us toward an alternative approach for any non-trivial form. Model-Driven/Reactive Forms   The Model-Driven approach was specifically added in Angular 2+ to address the known limitations of Template-Driven Forms. The forms that are implemented with this alternative method are known as Model-Driven Forms or Reactive Forms, which are the exact same thing.   The main difference here is that (almost) nothing happens in the template, which acts as a mere reference to a more complex TypeScript object that gets defined, instantiated, and configured programmatically within the component class: the form model.   To understand the overall concept, let's try to rewrite the previous form in a Model-Driven/Reactive way (the relevant parts are highlighted). The outcome of doing this is as follows:  <form [formGroup]="form" (ngSubmit)="onSubmit()">  <input formControlName="name" required />   <span *ngIf="(form.get('name').touched || form.get('name').dirty)            && form.get('name').errors?.required">           Name is a required field: please enter a valid city name.   </span>  <button type="submit" name="btnSubmit"           [disabled]="form.invalid">  Submit  </button>     </form>  As we can see, the amount of required code is much lower.  Here's the underlying form model that we will define in the component class file (the relevant parts are highlighted in the following code):   import { FormGroup, FormControl } from '@angular/forms';   class ModelFormComponent implements OnInit {   form: FormGroup;         ngOnInit() {       this.form = new FormGroup({          title: new FormControl()       });     }   }   Let's try to understand what's happening here:   The form property is an instance of FormGroup and represents the form itself.   FormGroup, as the name suggests, is a container of form controls sharing the same purpose. As we can see, the form itself acts as a FormGroup, which means that we can nest FormGroup objects inside other FormGroup objects (we didn't do that in our sample, though).   Each data input element in the form template – in the preceding code, name – is represented by an instance of FormControl.   Each FormControl instance encapsulates the related control's current state, such as valid, invalid, touched, and dirty, including its actual value.   Each FormGroup instance encapsulates the state of each child control, meaning that it will only be valid if/when all its children are also valid.   Also, note that we have no way of accessing the FormControls directly like we were doing in Template-Driven Forms; we have to retrieve them using the .get() method of the main FormGroup, which is the form itself.   At first glance, the Model-Driven template doesn't seem too different from the Template-Driven one; we still have a <form> element, an <input> element hooked to a <span> validator, and a submit button; on top of that, checking the state of the input elements takes a bigger amount of source code since they have no aliases we can use. What's the real deal, then?  To help us visualize the difference, let's look at the following diagrams: here's a schema depicting how Template-Driven Forms work:   [caption id="attachment_72453" align="alignnone" width="690"] Fig 1: Template-Driven Forms schematic[/caption] By looking at the arrows, we can easily see that, in Template-Driven Forms, everything happens in the template; the HTML form elements are directly bound to the DataModel component represented by a property filled with an asynchronous HTML request to the Web Server, much like we did with our cities and country table.   That DataModel will be updated as soon as the user changes something, that is, unless a validator prevents them from doing that. If we think about it, we can easily understand how there isn't a single part of the whole workflow that happens to be under our control; Angular handles everything by itself using the information in the data bindings defined within our template.   This is what Template-Driven actually means: the template is calling the shots.  Now, let's take a look at the Model-Driven Forms (or Reactive Forms) approach:   [caption id="attachment_72454" align="alignnone" width="676"] Fig 2: Model-Driven/Reactive Forms schematic[/caption] As we can see, the arrows depicting the Model-Driven Forms workflow tell a whole different story. They show how the data flows between the DataModel component – which we get from the Web Server – and a UI-oriented form model that retains the states and the values of the HTML form (and its children input elements) that are presented to the user. This means that we'll be able to get in-between the data and the form control objects and perform a number of tasks firsthand: push and pull data, detect and react to user changes, implement our own validation logic, perform unit tests, and so on.  Instead of being superseded by a template that's not under our control, we can track and influence the workflow programmatically, since the form model that calls the shots is also a TypeScript class; that's what Model-Driven Forms are about. This also explains why they are also called Reactive Forms – an explicit reference to the Reactive programming style that favors explicit data handling and change management throughout the workflow.   Summary    In this article, we focused on the Angular framework and the two form design models it offers: the Template-Driven approach, mostly inherited from AngularJS, and the Model-Driven or Reactive alternative. We took some valuable time to analyze the pros and cons provided by both, and then we made a detailed comparison of the underlying logic and workflow. At the end of the day, we chose the Reactive way, as it gives the developer more control and enforces a more consistent separation of duties between the Data Model and the Form Model.   About the author   Valerio De Sanctis is a skilled IT professional with 20 years of experience in lead programming, web-based development, and project management using ASP.NET, PHP, Java, and JavaScript-based frameworks. He held senior positions at a range of financial and insurance companies, most recently serving as Chief Technology and Security Officer at a leading IT service provider for top-tier insurance groups. He is an active member of the Stack Exchange Network, providing advice and tips on the Stack Overflow, ServerFault, and SuperUser communities; he is also a Microsoft Most Valuable Professional (MVP) for Developer Technologies. He's the founder and owner of Ryadel and the author of many best-selling books on back-end and front-end web development.      
Read more
  • 0
  • 0
  • 10884

article-image-introducing-net-live-tv-daily-developer-live-streams-from-net-blog
Matthew Emerick
15 Oct 2020
4 min read
Save for later

Introducing .NET Live TV – Daily Developer Live Streams from .NET Blog

Matthew Emerick
15 Oct 2020
4 min read
Today, we are launching .NET Live TV, your one stop shop for all .NET and Visual Studio live streams across Twitch and YouTube. We are always looking for new ways to bring great content to the developer community and innovate in ways to interact with you in real-time. Live streaming gives us the opportunity to deliver more content where everyone can ask questions and interact with the product teams. We started our journey several years ago with the .NET Community Standup series. It’s a weekly “behind the scenes” live stream that shows you what goes into building the runtimes, languages, frameworks, and tools we all love. As it grew, so did our dreams of delivering even more awesome .NET live stream content. .NET Live TV takes things to a whole new level with the introduction of new shows and a new website. It is a single place to bookmark so you can stay up to date with live streams across several Twitch and YouTube channels and with a single click can join in the conversation. Here are some of the new shows that recently launched that you could look forward to: Expanded .NET Community Standups What started as the ASP.NET Community Standup has grown into 7 unique shows throughout the month! Here is a quick guide to the schedule of the shows that all start at 10:00 AM Pacific: Tuesday: ASP.NET hosted by Jon Galloway with a monthly Blazor focus hosted by Safia Abdalla kicking off Nov 17! Wednesday: Rotating – Entity Framework hosted by Jeremy Likness & Machine Learning hosted by Bri Achtman 1st Thursday: Xamarin hosted by Maddy Leger 2nd Thursday: Languages & Runtime hosted by Immo Landwerth 3rd Thursday: .NET Tooling hosted by Kendra Havens 4th Thursday: .NET Desktop hosted by Olia Gavrysh Packed Week of .NET Shows! DayTime (PT) Show Description Monday 6:00 AM Join Jeff Fritz (csharpfritz) in this start from the beginning series to learn C# in this talk-show format that answers viewers questions and provides interactive samples with every episode. Monday 9:00 AM Join David Pine, Scott Addie, Cam Soper, and more from the Developer Relations team at Microsoft each week as they highlight the amazing community members in the .NET community. Monday 11:00 AM A weekly show dedicated to the topic of working from home. Mads Kristensen from the Visual Studio team invites guests onto the show for conversations about anything and everything related to Visual Studio and working from home. Tuesday 10:00 AM Join members from the ASP.NET teams for our community standup covering great community contributions for ASP.NET, ASP.NET Core, and more. Tuesday 12:00 PM Join Instafluff (Raphael) each week live on Twitch as he works on fun C# game related projects from his C# corner. Wednesday 10:00 AM Join the Entity Framework and the Machine learning teams for their community standups covering great community contributions. Thursday 10:00 AM Join the Xamarin, Languages & Runtime, .NET Tooling, and .NET Desktop teams covering great community contributions for each subject. Thursday 2:00 PM Join Cecil Phillip as he hosts and interviews amazing .NET contributors from the .NET teams and the community. Friday 2:00 PM Join Mads Kristensen from the Visual Studio team each week as he builds extensions for Visual Studio live! More to come! Be sure to bookmark live.dot.net as we are living streaming 5 days a week and adding even more shows soon! If you are looking for even more great developer video content be sure to check out Microsoft Learn TV where in addition to some of the shows from .NET Live TV you will find 24 hour a day streaming content of all topics. The post Introducing .NET Live TV – Daily Developer Live Streams appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 4138

article-image-how-to-use-java-generics-to-avoid-classcastexceptions-from-infoworld-java
Matthew Emerick
15 Oct 2020
1 min read
Save for later

How to use Java generics to avoid ClassCastExceptions from InfoWorld Java

Matthew Emerick
15 Oct 2020
1 min read
Java 5 brought generics to the Java language. In this article, I introduce you to generics and discuss generic types, generic methods, generics and type inference, generics controversy, and generics and heap pollution. download Get the code Download the source code for examples in this Java 101 tutorial. Created by Jeff Friesen for JavaWorld. What are generics? Generics are a collection of related language features that allow types or methods to operate on objects of various types while providing compile-time type safety. Generics features address the problem of java.lang.ClassCastExceptions being thrown at runtime, which are the result of code that is not type safe (i.e., casting objects from their current types to incompatible types). To read this article in full, please click here
Read more
  • 0
  • 0
  • 3849

article-image-mikroorm-4-1-lets-talk-about-performance-from-dailyjs-medium
Matthew Emerick
15 Oct 2020
3 min read
Save for later

MikroORM 4.1: Let’s talk about performance from DailyJS - Medium

Matthew Emerick
15 Oct 2020
3 min read
I just shipped version 4.1 of MikroORM, the TypeScript ORM for Node.js, and I feel like this particular release deserves a bit more attention than a regular feature release. In case you don’t know… If you never heard of MikroORM, it’s a TypeScript data-mapper ORM with Unit of Work and Identity Map. It supports MongoDB, MySQL, PostgreSQL and SQLite drivers currently. Key features of the ORM are: Implicit transactions ChangeSet based persistence Identity map You can read the full introductory article here or browse through the docs. So what changed? This release had only one clear goal in mind — the performance. It all started with an issue pointing out that flushing 10k entities in a single unit of work is very slow. While this kind of use case was never a target for me, I started to see all the possibilities the Unit of Work pattern offers. Batch inserts, updates and deletes The biggest performance killer was the amount of queries — even if the query is as simple and optimised as possible, firing 10k of those will be always quite slow. For inserts and deletes, it was quite trivial to group all the queries. A bit more challenging were the updates — to batch those, MikroORM now uses case statements. As a result, when you now flush changes made to one entity type, only one query per given operation (create/update/delete) will be executed. This brings significant difference, as we are now executing fixed number of queries (in fact the changes are batched in chunks of 300 items). https://medium.com/media/3df9aaa8c2f0cf018855bf66ecf3d065/href JIT compilation Second important change in 4.1 is JIT compilation. Under the hood, MikroORM now first generates simple functions for comparing and hydrating entities, that are tailored to their metadata definition. The main difference is that those generated functions are accessing the object properties directly (e.g. o.name), instead of dynamically (e.g. o[prop.name]), as all the information from metadata are inlined there. This allows V8 to better understand the code so it is able to run it faster. Results Here are the results for a simple 10k entities benchmark: In average, inserting 10k entities takes around 70ms with sqlite, updates are a tiny bit slower. You can see results for other drivers here: https://github.com/mikro-orm/benchmark. Acknowledgement Kudos to Marc J. Schmidt, the author of the initial issue, as without his help this would probably never happen, or at least not in near future. Thanks a lot! Like MikroORM? ⭐️ Star it on GitHub and share this article with your friends. If you want to support the project financially, you can do so via GitHub Sponsors. MikroORM 4.1: Let’s talk about performance was originally published in DailyJS on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 3631

article-image-net-framework-republishing-of-july-2020-security-only-updates-from-net-blog
Matthew Emerick
13 Oct 2020
3 min read
Save for later

.NET Framework republishing of July 2020 Security Only Updates from .NET Blog

Matthew Emerick
13 Oct 2020
3 min read
Today, we are republishing the July 2020 Security Only Updates for .NET Framework to resolve a known issue that affected the original release.  You should install this version (V2) of the update as part of your normal security routine. Security CVE-2020-1147– .NET Framework Remote Code Execution Vulnerability A remote code execution vulnerability exists in .NET Framework when the software fails to check the source markup of XML file input. An attacker who successfully exploited the vulnerability could run arbitrary code in the context of the process responsible for deserialization of the XML content. To exploit this vulnerability, an attacker could upload a specially crafted document to a server utilizing an affected product to process content. The security update addresses the vulnerability by correcting how .NET Framework validates the source markup of XML content. This security update affects how .NET Framework’s System.Data.DataTable and System.Data.DataSet types read XML-serialized data. Most .NET Framework applications will not experience any behavioral change after the update is installed. For more information on how the update affects .NET Framework, including examples of scenarios which may be affected, please see the DataTable and DataSet security guidance document. To learn more about the vulnerabilities, go to the following Common Vulnerabilities and Exposures (CVE). CVE-2020-1147 Known Issues This release resolves the known issue below. Symptoms: After you apply this update, some applications experience a TypeInitializationException exception when they try to deserialize System.Data.DataSet or System.Data.DataTable instances from the XML within a SQL CLR stored procedure. The stack trace for this exception appears as follows: System.TypeInitializationException: The type initializer for ‘Scope’ threw an exception. —> System.IO.FileNotFoundException: Could not load file or assembly ‘System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified. at System.Data.TypeLimiter.Scope.IsTypeUnconditionallyAllowed(Type type) at System.Data.TypeLimiter.Scope.IsAllowedType(Type type) at System.Data.TypeLimiter.EnsureTypeIsAllowed(Type type, TypeLimiter capturedLimiter) Resolution: Install the latest version of this update that was released on October 13th, 2020. Getting the Update The Security and Quality Rollup is available via Windows Update, Windows Server Update Services, and Microsoft Update Catalog. Microsoft Update Catalog You can get the update via the Microsoft Update Catalog. For Windows 10, NET Framework 4.8 updates are available via Windows Update, Windows Server Update Services, Microsoft Update Catalog. Updates for other versions of .NET Framework are part of the Windows 10 Monthly Cumulative Update. **Note**: Customers that rely on Windows Update and Windows Server Update Services will automatically receive the .NET Framework version-specific updates. Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply. The following table is for earlier Windows and Windows Server versions. Product Version Security Only Update Windows 8.1, Windows RT 8.1 and Windows Server 2012 R2 4566468 .NET Framework 3.5 Catalog 4565580 .NET Framework 4.5.2 Catalog 4565581 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4565585 .NET Framework 4.8 Catalog 4565588 Windows Server 2012 4566467 .NET Framework 3.5 Catalog 4565577 .NET Framework 4.5.2 Catalog 4565582 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4565584 .NET Framework 4.8 Catalog 4565587 Windows 7 SP1 and Windows Server 2008 R2 SP1 4566466 .NET Framework 3.5.1 Catalog 4565579 .NET Framework 4.5.2 Catalog 4565583 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4565586 .NET Framework 4.8 Catalog 4565589 Windows Server 2008 4566469 .NET Framework 2.0, 3.0 Catalog 4565578 .NET Framework 4.5.2 Catalog 4565583 .NET Framework 4.6 Catalog 4565586   The post .NET Framework republishing of July 2020 Security Only Updates appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1844

article-image-net-framework-october-2020-security-and-quality-rollup-updates-from-net-blog
Matthew Emerick
13 Oct 2020
5 min read
Save for later

.NET Framework October 2020 Security and Quality Rollup Updates from .NET Blog

Matthew Emerick
13 Oct 2020
5 min read
Today, we are releasing the October 2020 Security and Quality Rollup Updates for .NET Framework. Security CVE-2020-16937– .NET Framework Information Disclosure Vulnerability An information disclosure vulnerability exists when the .NET Framework improperly handles objects in memory. An attacker who successfully exploited the vulnerability could disclose contents of an affected system’s memory. To exploit the vulnerability, an authenticated attacker would need to run a specially crafted application. The update addresses the vulnerability by correcting how the .NET Framework handles objects in memory. To learn more about the vulnerabilities, go to the following Common Vulnerabilities and Exposures (CVE). CVE-2020-16937 Quality and Reliability This release contains the following quality and reliability improvements. ASP.NET Disabled resuse of AppPathModifier in ASP.Net control output. HttpCookie objects in the ASP.Net request context will be created with configured defaults for cookie flags instead of .NET-style primitive defaults to match the behavior of `new HttpCookie(name)`. CLR1 Added a CLR config variable Thread_AssignCpuGroups (1 by default) that can be set to 0 to disable automatic CPU group assignment done by the CLR for new threads created by Thread.Start() and thread pool threads, such that an app may do its own thread-spreading. Addressed a rare data corruption that can occur when using new API’s such as Unsafe.ByteOffset which are often used with the new Span types. The corruption could occur when a GC operation is performed while a thread is calling Unsafe.ByteOffset from inside of a loop. SQL Addressed a failure that sometimes occured when a user connects to one Azure SQL database, performed an enclave based operation, and then connected to another database under the same server that has the same Attestation URL and performed an enclave operation on the second server. Windows Forms Addressed a regression introduced in .NET Framework 4.8, where Control.AccessibleName, Control.AccessibleRole, and Control.AccessibleDescription properties stopped working for the following controls:Label, GroupBox, ToolStrip, ToolStripItems, StatusStrip, StatusStripItems, PropertyGrid, ProgressBar, ComboBox, MenuStrip, MenuItems, DataGridView. Addressed a regression in accessible name for combo box items for data bound combo boxes. .NET Framework 4.8 started using type name instead of the value of the DisplayMember property as an accessible name, this improvement uses the DisplayMember again. WCF2 Addressed an issue with WCF services sometimes failing to start when starting multiple services concurrently. 1 Common Language Runtime (CLR) 2 Windows Communication Foundation (WCF) Getting the Update The Security and Quality Rollup is available via Windows Update, Windows Server Update Services, and Microsoft Update Catalog. The Security Only Update is available via Windows Server Update Services and Microsoft Update Catalog. Microsoft Update Catalog You can get the update via the Microsoft Update Catalog. For Windows 10, NET Framework 4.8 updates are available via Windows Update, Windows Server Update Services, Microsoft Update Catalog. Updates for other versions of .NET Framework are part of the Windows 10 Monthly Cumulative Update. **Note**: Customers that rely on Windows Update and Windows Server Update Services will automatically receive the .NET Framework version-specific updates. Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply. The following table is for Windows 10 and Windows Server 2016+ versions. Product Version Cumulative Update Windows 10 Version Next and Windows Server, Version Next .NET Framework 3.5, 4.8 Catalog 4578967 Windows 10, version 20H2 and Windows Server, version 20H2 .NET Framework 3.5, 4.8 Catalog 4578968 Windows 10 2004 and Windows Server, version 2004 .NET Framework 3.5, 4.8 Catalog 4578968 Windows 10 1909 and Windows Server, version 1909 .NET Framework 3.5, 4.8 Catalog 4578974 Windows 10 1903 and Windows Server, version 1903 .NET Framework 3.5, 4.8 Catalog 4578974 Windows 10 1809 (October 2018 Update) and Windows Server 2019 4579976 .NET Framework 3.5, 4.7.2 Catalog 4578966 .NET Framework 3.5, 4.8 Catalog 4578973 Windows 10 1803 (April 2018 Update) .NET Framework 3.5, 4.7.2 Catalog 4580330 .NET Framework 4.8 Catalog 4578972 Windows 10 1709 (Fall Creators Update) .NET Framework 3.5, 4.7.1, 4.7.2 Catalog 4580328 .NET Framework 4.8 Catalog 4578971 Windows 10 1703 (Creators Update) .NET Framework 3.5, 4.7, 4.7.1, 4.7.2 Catalog 4580370 .NET Framework 4.8 Catalog 4578970 Windows 10 1607 (Anniversary Update) and Windows Server 2016 .NET Framework 3.5, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4580346 .NET Framework 4.8 Catalog 4578969 Windows 10 1507 .NET Framework 3.5, 4.6, 4.6.1, 4.6.2 Catalog 4580327 The following table is for earlier Windows and Windows Server versions. Product Version Security and Quality Rollup Security Only Update Windows 8.1, Windows RT 8.1 and Windows Server 2012 R2 4579979 4580469 .NET Framework 3.5 Catalog 4578953 Catalog 4578981 .NET Framework 4.5.2 Catalog 4578956 Catalog 4578984 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4578962 Catalog 4578986 .NET Framework 4.8 Catalog 4578976 Catalog 4578989 Windows Server 2012 4579978 4580468 .NET Framework 3.5 Catalog 4578950 Catalog 4578978 .NET Framework 4.5.2 Catalog 4578954 Catalog 4578982 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4578961 Catalog 4578985 .NET Framework 4.8 Catalog 4578975 Catalog 4578988 Windows 7 SP1 and Windows Server 2008 R2 SP1 4579977 4580467 .NET Framework 3.5.1 Catalog 4578952 Catalog 4578980 .NET Framework 4.5.2 Catalog 4578955 Catalog 4578983 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 Catalog 4578963 Catalog 4578987 .NET Framework 4.8 Catalog 4578977 Catalog 4578990 Windows Server 2008 4579980 4580470 .NET Framework 2.0, 3.0 Catalog 4578951 Catalog 4578979 .NET Framework 4.5.2 Catalog 4578955 Catalog 4578983 .NET Framework 4.6 Catalog 4578963 Catalog 4578987   Previous Monthly Rollups The last few .NET Framework Monthly updates are listed below for your convenience: .NET Framework October 1, 2020 Cumulative Update Preview Update for Windows 10, version 2004 and Windows Server, version 2004 .NET Framework September 2020 Cumulative Update Preview Update .NET Framework September 2020 Security and Quality Rollup Updates The post .NET Framework October 2020 Security and Quality Rollup Updates appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1938
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
article-image-net-core-october-2020-updates-2-1-23-and-3-1-9-from-net-blog
Matthew Emerick
13 Oct 2020
2 min read
Save for later

.NET Core October 2020 Updates – 2.1.23 and 3.1.9 from .NET Blog

Matthew Emerick
13 Oct 2020
2 min read
Today, we are releasing the .NET Core October 2020 Update. These updates contains reliability and other non-security fixes. See the individual release notes for details on updated packages. Getting the Update .NET Core 3.1.9 and .NET Core SDK ( Download | Release Notes ) .NET Core 2.1.23 and .NET Core SDK ( Download | Release Notes ) See the .NET Core release notes for details on the release, including issues fixed and affected packages.  The latest .NET Core updates are available on the .NET Core download page.   Lifecycle Updates Ubuntu 20.10 and Fedora 33 have been added as a supported OS with this update of .NET Core. Docker Images .NET Docker images have been updated for today’s release. The following repos have been updated. dotnet/core/sdk: .NET Core SDK dotnet/core/aspnet: ASP.NET Core Runtime dotnet/core/runtime: .NET Core Runtime dotnet/core/runtime-deps: .NET Core Runtime Dependencies dotnet/core/samples: .NET Core Samples Note: You must pull updated .NET Core container images to get this update, with either docker pull or docker build --pull. Visual Studio This update will be included in a future update of Visual Studio. Each version of Visual studio is only supported with a given version of the .NET Core SDK. Visual Studio version information is included in the .NET Core SDK download pages and release notes.If you are not using Visual Studio, we recommend using the latest SDK release.   The post .NET Core October 2020 Updates – 2.1.23 and 3.1.9 appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1843

article-image-announcing-entity-framework-core-ef-core-5-rc2-from-net-blog
Matthew Emerick
13 Oct 2020
5 min read
Save for later

Announcing Entity Framework Core (EF Core) 5 RC2 from .NET Blog

Matthew Emerick
13 Oct 2020
5 min read
Today, the Entity Framework Core team announces the second release candidate (RC2) of EF Core 5.0. This is a feature complete release candidate of EF Core 5.0 and ships with a "go live" license. You are supported using it in production. This is a great opportunity to start using EF Core 5.0 early while there is still time to fix remaining issues. We're looking for reports of any remaining critical bugs that should be fixed before the final release. Prerequisites EF Core 5.0 will not run on .NET Standard 2.0 platforms, including .NET Framework. The release candidates of EF Core 5.0 require .NET Standard 2.1. This means that EF Core 5.0 will run on .NET Core 3.1 and does not require .NET 5. To summarize: EF Core 5.0 runs on platforms that support .NET Standard 2.1. How to get EF Core 5.0 Release Candidate 2 EF Core is distributed exclusively as a set of NuGet packages. For example, to add the SQL Server provider to your project, you can use the following command using the dotnet tool: dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 5.0.0-rc.2.20475.6 This following table links to the RC2 versions of the EF Core packages and describes what they are used for. Package Purpose Microsoft.EntityFrameworkCore The main EF Core package that is independent of specific database providers Microsoft.EntityFrameworkCore.SqlServer Database provider for Microsoft SQL Server and SQL Azure Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite SQL Server support for spatial types Microsoft.EntityFrameworkCore.Sqlite Database provider for SQLite that includes the native binary for the database engine Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite SQLite support for spatial types Microsoft.EntityFrameworkCore.Cosmos Database provider for Azure Cosmos DB Microsoft.EntityFrameworkCore.InMemory The in-memory database provider Microsoft.EntityFrameworkCore.Tools EF Core PowerShell commands for the Visual Studio Package Manager Console; use this to integrate tools like scaffolding and migrations with Visual Studio Microsoft.EntityFrameworkCore.Design Shared design-time components for EF Core tools Microsoft.EntityFrameworkCore.Proxies Lazy-loading and change-tracking proxies Microsoft.EntityFrameworkCore.Abstractions Decoupled EF Core abstractions; use this for features like extended data annotations defined by EF Core Microsoft.EntityFrameworkCore.Relational Shared EF Core components for relational database providers Microsoft.EntityFrameworkCore.Analyzers C# analyzers for EF Core Installing the EF Core Command Line Interface (CLI) As with EF Core 3.0 and 3.1, the EF Core CLI is no longer included in the .NET Core SDK. Before you can execute EF Core migration or scaffolding commands, you'll have to install this package as either a global or local tool. To install the RC2 tool globally the first time, use: dotnet tool install --global dotnet-ef --version 5.0.0-rc.2.20475.6 If you already have the tool installed, update it with: dotnet tool update --global dotnet-ef --version 5.0.0-rc.2.20475.6 It’s possible to use this new version of the EF Core CLI with projects that use older versions of the EF Core runtime. What's New in EF Core 5 RC2 We maintain documentation covering new features introduced into each release. This release included several bug fixes. Daily builds EF Core previews and release candidates are aligned with the .NET 5 release cycle. These releases tend to lag behind the latest work on EF Core. Consider using the daily builds instead to get the most up-to-date EF Core features and bug fixes. As with the previews, the daily builds do not require .NET 5; they can be used with GA/RTM release of .NET Core 3.1. Daily builds are considered stable. Contribute to .NET 5 The .NET documentation team is reorganizing .NET content to better match the workloads you build with .NET. This includes a new .NET Data landing page that will link out to data-related topics ranging from EF Core to APIs, Big Data, and Machine learning. The planning and execution will be done completely in the open on GitHub. This is your opportunity to help shape the hierarchy and content to best fit your needs as a .NET developer. We look forward to your contributions! The EF Core Community Standup The EF Core team is now live streaming every other Wednesday at 10am Pacific Time, 1pm Eastern Time, or 17:00 UTC. Join the stream to ask questions about the EF Core topic of your choice, including the latest release candidate. Visit the .NET Community Standup page to preview upcoming shows and view recordings from past shows. Documentation and Feedback The starting point for all EF Core documentation is docs.microsoft.com/ef/. Please file issues found and any other feedback on the dotnet/efcore GitHub repo. Helpful Short Links The following short links are provided for easy reference and access. Main documentation: https://aka.ms/efdocs Issues and feature requests for EF Core: https://aka.ms/efcorefeedback Entity Framework Roadmap: https://aka.ms/efroadmap What's new in EF Core 5.x? https://aka.ms/efcore5 Thank you from the team A big thank you from the EF team to everyone who has used EF over the years! Arthur Vickers Andriy Svyryd Brice Lambson Jeremy Likness Maurycy Markowski Shay Rojansky Smit Patel   Thank you to our contributors! A huge "thanks" to all the community members who have already contributed code or documentation to the EF Core 5 release! The post Announcing Entity Framework Core (EF Core) 5 RC2 appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 2116

article-image-announcing-net-5-0-rc-2-from-net-blog
Matthew Emerick
13 Oct 2020
12 min read
Save for later

Announcing .NET 5.0 RC 2 from .NET Blog

Matthew Emerick
13 Oct 2020
12 min read
Today, we are shipping .NET 5.0 Release Candidate 2 (RC2). It is a near-final release of .NET 5.0, and the last of two RCs before the official release in November. RC2 is a “go live” release; you are supported using it in production. At this point, we’re looking for reports of any remaining critical bugs that should be fixed before the final release. We also released new versions of ASP.NET Core and EF Core today. You can download .NET 5.0, for Windows, macOS, and Linux: Installers and binaries Container images Snap installer Release notes Known issues GitHub issue tracker You need the latest preview version of Visual Studio (including Visual Studio for Mac) to use .NET 5.0. .NET 5.0 includes many improvements, notably single file applications, smaller container images, more capable JsonSerializer APIs, a complete set of nullable reference type annotations, new target framework names, and support for Windows ARM64. Performance has been greatly improved, in the NET libraries, in the GC, and the JIT. ARM64 was a key focus for performance investment, resulting in much better throughput and smaller binaries. .NET 5.0 includes new language versions, C# 9 and F# 5.0. Check out some .NET 5.0 examples so you can try these features out for yourself. Today is an auspicious day because we’re kicking off the 2020 .NET@Microsoft internal conference. There will be many speakers from the .NET team, but also developers and architects from services teams that rely on .NET to power the Microsoft cloud, sharing their victories and also their challenges. I’m presenting (unsurprisingly) “What’s new in .NET 5.0”. My talk will be easy; I’ll just read the .NET 5.0 blog posts, preview by preview! It will be a great talk. More seriously, the conference is our opportunity to make the case why Microsoft teams should adopt .NET 5.0 soon after it is available. At least one large team I know of is running on RC1 in production. The official .NET Microsoft site has been running on .NET 5.0 since Preview 1. It is now running RC2. The case we’ll make to Microsoft teams this week is very similar to the case that I’ve intended to make to you across all of these .NET 5.0 blog posts. .NET 5.0 is a great release and will improve the fundamentals of your app. Speaking of conferences, please save the date for .NET Conf 2020. This year, .NET 5.0 will launch at .NET Conf 2020! Come celebrate and learn about the new release. We’re also celebrating our 10th anniversary and we’re working on a few more surprises. You won’t want to miss this one. Just like I did for .NET 5.0 Preview 8 and .NET 5.0 RC1, I’ve chosen a selection of features to look at in more depth and to give you a sense of how you’ll use them in real-world usage. This post is dedicated to C# 9 pattern matching, Windows ARM64, and ClickOnce. C# 9 Pattern Matching Pattern matching is a language feature was first added in C# 7.0. It’s best to let Mads reintroduce the concept. This is what he had to say when he originally introduced the feature. C# 7.0 introduces the notion of patterns, which, abstractly speaking, are syntactic elements that can test that a value has a certain “shape”, and extract information from the value when it does. That’s a really great description, perfectly worded. The C# team has added new patterns in each of the C# 7, C# 8, and C# 9 versions. In this post, you’ll see patterns from each of those language versions, but we’ll focus on the new patterns in C# 9. The three new patterns in C# 9 are: Relational patterns, using relational operators such as < and >=. Logical patterns, using the keywords and, or, and not. The poster child example is foo is not null. This type of pattern is most useful when you want to compare multiple things in one pattern. Simple type patterns, using solely a type and no other syntax for matching. I’m a big fan of the BBC Sherlock series. I’ve written a small app that determines if a given character should have access to a given piece of content within that series. Easy enough. The app is written with two constraints: stay true to the show timeline and characters, and be a great demonstration of patterns. If anything, I suspect I’ve failed most on the second constraint. You’ll find a broader set of patterns and styles than one would expect in a given app (particularly such a small one). When I’m using patterns, I sometimes want to do something subtly different than a pattern I’m familiar with achieves and am not sure how to extend that pattern to satisfy my goal. Given this sample, I’m hoping you’ll discover more approaches than perhaps you were aware of before, and can extend your repertoire of familiar patterns. There are two switch expressions within the app. Let’s start with the smaller of the two. public static bool IsAccessOKAskMycroft(Person person) => person switch { // Type pattern OpenCaseFile f when f.Name == "Jim Moriarty" => true, // Simple type pattern Mycroft => true, _ => false, }; The first two patterns are type patterns. The first pattern is supported with C# 8. The second one — Mycroft — is an example of the new simple type pattern. With C# 8, this pattern would require an identifier, much like the first pattern, or at the very least a discard such as Mycroft _. In C# 9, the identifier is no longer needed. Yes, Mycroft is a type in the app. Let’s keep to simple a little longer, before I show you the other switch expression. The following if statement demonstrates a logical pattern, preceded by two instances of a type pattern using is. if (user is Mycroft m && m.CaresAbout is not object) { Console.WriteLine("Mycroft dissapoints us again."); } The type isn’t known, so the user variable is tested for the Mycroft type and is then assigned to m if that test passes. A property on the Mycroft object is tested to be not an object. A test for null would have also worked, but wouldn’t have demonstrated a logical pattern. The other switch expression is a lot more expansive. public static bool IsAccessOkOfficial(Person user, Content content, int season) => (user, content, season) switch { // Tuple + property patterns ({Type: Child}, {Type: ChildsPlay}, _) => true, ({Type: Child}, _, _) => false, (_ , {Type: Public}, _) => true, ({Type: Monarch}, {Type: ForHerEyesOnly}, _) => true, // Tuple + type patterns (OpenCaseFile f, {Type: ChildsPlay}, 4) when f.Name == "Sherlock Holmes" => true, // Property and type patterns {Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}} when type == PoorlyDefined && name.Contains("Sherrinford") && season >= 3 => true, // Tuple and type patterns (OpenCaseFile, var c, 4) when c.Name.Contains("Sherrinford") => true, // Tuple, Type, Property and logical patterns (OpenCaseFile {RiskLevel: >50 and <100 }, {Type: StateSecret}, 3) => true, _ => false, }; The only really interesting pattern is the very last one (before the discard: -), which tests for a Risklevel that is >50 and <100. There are many times I’ve wanted to write an if statement with that form of logical pattern syntax without needing to repeat a variable name. This logical pattern could also have been written in the following way instead and would have more closely matched the syntax demonstrated in the C# 9 blog post. They are equivalent. (OpenCaseFile {RiskLevel: var riskLevel}, {Type: StateSecret}, 3) when riskLevel switch { >50 and <100 => true, _ => false } => true, I’m far from a language expert. Jared Parsons and Andy Gocke gave me a lot of help with this section of the post. Thanks! The key stumbling block I had was with a switch on a tuple. At times, the positional pattern is inconvenient, and you only want to address one part of the tuple. That’s where the property pattern comes in, as you can see in the following code. {Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}} when type == PoorlyDefined && name.Contains("Sherrinford") && season >= 3 => true, There is a fair bit going on there. The key point is that the tuple properties are being tested, as opposed to matching a tuple positionally. That approaches provides a lot more flexibility. You are free to intermix these approaches within a given switch expression. Hopefully that helps someone. It helped me. If you are curious about what the app does, I’ve saved the output of the program in the app gist. You can also run the app for yourself. I believe it requires .NET 5.0 RC2 to run. If there has been a pattern with the last three C# (major) versions, it has been patterns. I certainly hope the C# team matches that pattern going forward. I imagine it is the shape of things, and there are certainly more values to extract. ClickOnce ClickOnce has been a popular .NET deployment option for many years. It’s now supported for .NET Core 3.1 and .NET 5.0 Windows apps. We knew that many people would want to use ClickOnce for application deployment when we added Windows Forms and WPF support to .NET Core 3.0. In the past year, the .NET and Visual Studio teams worked together to enable ClickOnce publishing, both at the command line and in Visual Studio. We had two goals from the start of the project: Enable a familiar experience for ClickOnce in Visual Studio. Enable a modern CI/CD for ClickOnce publishing with command-line flows, with either MSBuild or the Mage tool. It’s easiest to show you the experience in pictures. Let’s start with the Visual Studio experience, which is centered around project publishing. You need to publish to a Folder target. The primary deployment model we’re currently supporting is framework dependent apps. It is easy to take a dependency on the .NET Desktop Runtime (that’s the one that contains WPF and Windows Forms). Your ClickOnce installer will install the .NET runtime on user machines if it is needed. We also intend to support self-contained and single file apps.   You might wonder if you can still be able to take advantage of ClickOnce offline and updating features. Yes, you can. The same install locations and manifest signing features are included. If you have strict signing requirements, you will be covered with this new experience. Now, let’s switch to the command line Mage experience. The big change with Mage is that it is now a .NET tool, distributed on NuGet. That means you don’t need to install anything special on your machine. You just need the .NET 5.0 SDK and then you can install Mage as a .NET tool. You can use it to publish .NET Framework apps as well, however, SHA1 signing and partial trust support have been removed. The Mage installation command follows: dotnet tool install -g Microsoft.DotNet.Mage The following commands configure and publish a sample application. The next command launches the ClickOnce application. And then the familiar ClickOnce installation dialog appears. After installing the application, the app will be launched. After re-building and re-publishing the application, users will see an update dialog. And from there, the updated app will be launched. Note: The name of the Mage .NET tool will change from mage.net to dotnet-mage for the final release. The NuGet package name will remain the same. This quick lap around ClickOnce publishing and installation should give you a good idea of how you might use ClickOnce. Our intention has been to enable a parity experience with the existing ClickOnce support for .NET Framework. If you find that we haven’t lived up to that goal, please tell us. ClickOnce browser integration is the same as with .NET Framework, supported in Edge and Internet Explorer. Please tell us how important it is to support the other browsers for your users. Windows Arm64 MSI installers are now available for Windows Arm64, as you can see in the following image of the .NET 5.0 SDK installer. To further prove the point, I ran the dotnet-runtimeinfo tool on my Arm64 machine to demonstrate the configuration. C:Usersrich>dotnet tool install -g dotnet-runtimeinfo You can invoke the tool using the following command: dotnet-runtimeinfo Tool 'dotnet-runtimeinfo' (version '1.0.2') was successfully installed. C:Usersrich>dotnet-runtimeinfo **.NET information Version: 5.0.0 FrameworkDescription: .NET 5.0.0-rc.2.20475.5 Libraries version: 5.0.0-rc.2.20475.5 Libraries hash: c5a3f49c88d3d907a56ec8d18f783426de5144e9 **Environment information OSDescription: Microsoft Windows 10.0.18362 OSVersion: Microsoft Windows NT 10.0.18362.0 OSArchitecture: Arm64 ProcessorCount: 8 The .NET 5.0 SDK does not currently contain the Windows Desktop components — Windows Forms and WPF — on Windows Arm64. This late change was initially shared in the .NET 5.0 Preview 8 post. We are hoping to add the Windows desktop pack for Windows Arm64 in a 5.0 servicing update. We don’t currently have a date to share. For now, the SDK, console and ASP.NET Core applications are supported on Windows Arm64. Closing We’re now so close to finishing off this release, and sending it out for broad production use. We believe it is ready. The production use that it is already getting at Microsoft brings us a lot of confidence. We’re looking forward to you getting the chance to really take advantage of .NET 5.0 in your own environment. It’s been a long time since we’ve shared our social media pages. If you are on social media, check out the dotnet pages we maintain: Twitter Facebook The post Announcing .NET 5.0 RC 2 appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 2071

article-image-mlops-devops-for-machine-learning-from-net-blog
Matthew Emerick
13 Oct 2020
1 min read
Save for later

MLOps: DevOps for Machine Learning from .NET Blog

Matthew Emerick
13 Oct 2020
1 min read
Machine Learning Operations (MLOps) is like DevOps for the machine learning lifecycle. This includes things like model deployment & management and data tracking, which help with productionizing machine learning models. Through the survey below, we’d love to get feedback on your current DevOps practices as well as your prospective usage of MLOps in .NET. We’ll use your feedback to drive the direction of MLOps support in .NET. Take the survey The post MLOps: DevOps for Machine Learning appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1346
article-image-r-4-0-3-now-available-from-revolutions
Matthew Emerick
12 Oct 2020
1 min read
Save for later

R 4.0.3 now available from Revolutions

Matthew Emerick
12 Oct 2020
1 min read
The R Core Team has released R 4.0.3 (codename: "Bunny-Wunnies Freak Out"), the latest update to the R statistical computing system. This is a minor update to the R 4.0.x series, and so should not require any changes to existing R 4.0 scripts or packages. It is available for download for Windows, Mac and Linux systems from your local CRAN mirror.  This release includes minor improvements and bug fixes including improved timezone support on MacOS, improved labels on dot charts, better handling of large tables for Fisher's Exact Test and Chi-Square tests, and control over timeouts for internet connections.  For complete details on the R 4.0.3, check out the announcement linked below. R-announce mailing list: R 4.0.3 is released  
Read more
  • 0
  • 0
  • 1694

article-image-tools-projects-and-examples-for-feathersjs-developers-in-2020-from-dailyjs-medium
Matthew Emerick
12 Oct 2020
4 min read
Save for later

Tools, projects, and examples for FeathersJS developers in 2020 from DailyJS - Medium

Matthew Emerick
12 Oct 2020
4 min read
As any JavaScript framework community grows, it becomes difficult to navigate which avenues developers have to look for solutions to problems they have encountered. FeathersJS has continually been at the forefront of JavaScript discussions since its inception, as illustrated in the annual State of JS survey. We created FeathersJS Resources as a hub, or rather a starting point, to assist people in the Feathers community find what they may be searching for. There are many resource lists available, however, we noticed a lacking of curated examples. Our goal with this list is to provide an up-to-date account of which libraries are maintained, projects are active, and examples of FeathersJS in the wild. Our general rules for curation are as follows: projects on npm must have been published in the past two years; projects on GitHub must have been updated in the past two years; projects should be well documented; articles and tutorials should be topical to the FeathersJS community; examples should use FeathersJS as a part of their stack; support channels should be qualified by the FeathersJS core team. Not to overestimate our abilities to keep track of all projects in the ecosystem, we have a channel for people to submit projects for review, which can be added to the Feathers Resources site. With the above criteria, we have broken the list into several categories which will certainly be expanded as time goes on. A few notable examples from each category are: Articles and Tutorials How we debug Feathers APIs using Postman Author Juan Orozco details a general process, conventions, and steps on how Aquil.io uses Postman to develop and debug APIs with Feathers. A few gotchas are elaborated and patterns on how Aquil.io rapidly develops APIs are explained. Read article Build a CRUD App Using React, Redux and FeathersJS Author Michael Wanyoike takes readers through getting a contact manager application set up with Feathers, Create React App, and MongoDB. The benefits of following conventions in REST and a bit of Feathers background is explained with a concrete example. Read article Tools feathers-hooks-common feathers-hooks-common is a suite of hooks allowing developers to architect common processes in a composable fashion. Readable hook flows are created such as: iff(isProvider('external'), disallow()). Learn more feathers-sync feathers-sync allows for scaling Feathers APIs and keeping socket events in sync through an intermediary data source, such as Redis. With this project, a modifying request, such as a POST, may ping a single server while the {service}::created event will be relayed to all other servers in the cluster and their corresponding subscribers. Learn more Support Feathers Slack channel The official channel for FeathersJS discussions. Open to the public and staffed by the core team. The core maintainer and author, David Luecke, is typically available to answer in depth questions regarding the usage of Feathers. Slack channel Office hours Members of the FeathersJS core team and experts at Aquil.io are available for questions that may require a call or a screen share to debug or discuss issues the community is facing. Developers at Aquil.io have been power users of Feathers since 2014 and have experience in many of the nuances in real-world settings. Visit aquil.io Our hope is this list provides a bit of direction, if you are new to the community, and a place to quickly find support if you need it. The above is a sample, but be sure to read the full list at feathersresources.dev. If you want to check out what I’m working on or have web development needs, visit Aquil.io. Originally published at https://aquil.io on September 28, 2020. Tools, projects, and examples for FeathersJS developers in 2020 was originally published in DailyJS on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 2121

article-image-jdk-16-whats-coming-in-java-16-from-infoworld-java
Matthew Emerick
08 Oct 2020
1 min read
Save for later

JDK 16: What’s coming in Java 16 from InfoWorld Java

Matthew Emerick
08 Oct 2020
1 min read
Although not due to arrive until March 2021, Java Development Kit (JDK) 16 has begun to take shape, with proposed features including concurrent thread-stack processing for garbage collection, support for C++ 14 language features, and an “elastic metaspace” capability to more quickly return unused class metadata memory to the OS. JDK 16 will be the reference implementation of the version of standard Java set to follow JDK 15, which arrived September 15. The six-month release cadence for standard Java would have JDK 16 arriving next March. [ Also on InfoWorld: JDK 15: The new features in Java 15 ] As of October 8, eight proposals officially target JDK 16. The new capabilities coming to Java 16 include: To read this article in full, please click here
Read more
  • 0
  • 0
  • 2075
article-image-kotlin-queues-up-new-compiler-webassembly-back-end-from-infoworld-java
Matthew Emerick
08 Oct 2020
1 min read
Save for later

Kotlin queues up new compiler, WebAssembly back end from InfoWorld Java

Matthew Emerick
08 Oct 2020
1 min read
Kotlin, the JetBrains-developed, statically typed language for JVM, Android, and web development, is due for a compiler rewrite, multiplatform mobile improvements, and a Kotlin-to-WebAssembly compiler back end, according to a public roadmap for the platform. Unveiled October 5, the roadmap covers priorities for the language, which received a strategic boost in 2017 when Google backed it for building Android mobile apps, alongside Java and C++. To read this article in full, please click here
Read more
  • 0
  • 0
  • 1486

article-image-giving-material-angular-io-a-refresh-from-angular-blog-medium
Matthew Emerick
07 Oct 2020
3 min read
Save for later

Giving material.angular.io a refresh from Angular Blog - Medium

Matthew Emerick
07 Oct 2020
3 min read
Hi everyone, I’m Annie and I recently joined the Angular Components team after finishing up my rotations as an Engineering Resident here at Google. During the first rotation of my residency I worked on the Closure Compiler and implemented some new ES2020 features including nullish coalesce and optional chaining. After that, my second rotation project was with the Angular Components where I took on giving material.angular.io a long awaited face lift. If you have recently visited the Angular Materials documentation site you will have noticed some new visual updates. We’ve included new vibrant images on the components page, updates to the homepage, a guides page revamp and so much more! Today I would like to highlight how we generated these fun colorful images. We were inspired by the illustrations on the Material Design components page which had aesthetic abstract designs that represented each component. We wanted to adapt the idea for material.angular.io but had some constraints and requirements to consider. First of all, we didn’t have a dedicated illustrator or designer for the project because of the tight deadline of my residency. Second of all, we wanted the images to be compact but clearly showcase each component and its usage. Finally, we wanted to be able to update these images easily when a component’s appearance changed. For the team the choice became clear: we’re going to need to build something ourselves to solve for these requirements. While weighing our design options, we decided that we preferred a more realistic view of the components instead of abstract representations. This is where we came up with the idea of creating “scenes” for each component and capturing them as they would appear in use. We needed a way to efficiently capture these components. We turned to a technique called screenshot testing. Screenshot testing is a technique that captures an image of the page of the provided url and compares it to an expected image. Using this technique we were able to generate the scenes for all 35 components. Here’s how we did it: Set up a route for each component that contains a “scene” using the actual material component Create an end-to-end testing environment and take screenshots of each route with protractor Save the screenshots instead of comparing them to an expected image Load the screenshots from the site One of the benefits of our approach is that whenever we update a component, we can just take new screenshots. This process saves incredible amounts of time and effort. To create each of the scenes we held a mini hackathon to come up with fun ideas! For example, for the button component (top) we wanted to showcase all the different types and styles of buttons available (icon, FAB, raised, etc.). For the button toggle component (bottom) we wanted to show the toggle in both states in a realistic scenario where someone might use a button toggle. Conclusion It was really exciting to see the new site go live with all the changes we made and we hope you enjoy them too! Be sure to check out the site and let us know what your favorite part is! Happy coding, friends! Giving material.angular.io a refresh was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 3970