Lanyon A Simple Blogger template

Free tutorials, courses, generative tools, and projects built with Javascript, PHP, Python, ML, AI,.Net, C#, Microsoft, Youtube, Github Code Download and more.

October 2022

Archive for October 2022

Slaying Zombie ‘No Repro’ Crashes with Infer#

You slide into your office chair, cup of coffee in hand, and check your email. Another high severity ticket – your servers have crashed, and you have by tomorrow morning to figure out why. Heaving a heavy sigh, you soon find yourself sifting through tens of thousands of lines of code and logs. Morning soon passes to afternoon, fading into dusk. Finally, you find it, push the fix, and reboot the application. Minutes pass. Crash. Your night of the living dead has begun – no matter how many times you try to put this bug down, it just keeps coming back to life.

We’ve all suffered from “zombie bugs” before. There are many static analysis tools on the marketplace today to help you detect bugs, many of which work by searching for a series of syntactic patterns in code. Unfortunately, due to the huge variation and complexity of coding constructs and conventions in different projects, this approach often leads to the high false positive and false negative rates for which static analysis tools are notorious.

In today’s post, we’re going to show you how Infer# can help you put down these zombie bugs, once and for all. Microsoft open-sourced Infer# in 2020, which leverages Meta’s Infer. Infer# takes a different approach from other tools you’ve heard of – it derives summaries of each method’s semantics and reasons over the program’s behavior. It uses incorrectness separation logic, one of the latest advancements in program analysis research, to mathematically prove the presence of bugs in code. Infer# performs cross-assembly analysis to find issues like null pointer dereferences, resource leaks, and thread safety violations, in addition to security vulnerabilities like SQL injections and DLL injections.

Getting started with Infer

With Infer# v1.4 you can identify security and performance issues with a single click, all in VS2022 and VSCode. First, make sure that Windows Subsystem for Linux (WSL) is properly installed. Then, download and install the InferSharp extension from the Visual Studio or Visual Studio Code marketplaces. In this article, we’ll show the VS experience, which is mimicked in VS Code. You can also use Infer# directly in WSL and Docker.

The extension adds an Infer# Analysis menu item to the Tools menu. The first time it’s selected, it will complete setup by downloading and installing the Infer# custom WSL distro from Github.

vs_menu_button

Analyze your code

After waiting for setup to complete, selecting the Infer# Analysis menu item again will prompt you to provide a directory tree (defaulting to the solution directory, if it exists) containing the DLLs and PDBs you want to analyze. Your selection is automatically saved for future runs in the .infersharpconfig file created in your project directory. The analysis will then run, displaying the warnings in the Error List pane. Additionally, information about the analysis steps is shown in a pane on the right side of the editor, with clickable links to the relevant lines of code.

analysis_steps

Issue or not?

Now that we’ve seen how to use Infer#, let’s look at a couple of examples that demonstrate how Infer# works under the hood. Suppose we created the following IDisposable class OwnsStreamReader:

public class OwnsStreamReader : IDisposable
{
    public StreamReader reader;

    public OwnsStreamReader(StreamReader input)
    {
        reader = input;
    }

    public void Dispose()
    {
        reader?.Dispose();
    }

Does the following method contain a resource leak or not?

    public static void LeakOrNot()
    {
        var fileStream = new FileStream("test.txt", FileMode.Create, FileAccess.Write);
        var reader = new StreamReader(fileStream);
        using (var myClass = new OwnsStreamReader(reader))
        {
            myClass.reader.Read();
        }
    }

The answer is no. Infer# determines this by producing method summaries that represent the semantics of OwnsStreamReader’s constructor and Dispose(). It determines that the Dispose() method takes care of the StreamReader, whose Dispose() in turn takes care of the FileStream object. The using statement ensures that the Dispose() function is invoked.

Let’s look at another example:

    public class OwnsResources : IDisposable
    {
        private Socket socket;

        private FileStream stream { get; set; } = new FileStream("test", FileMode.Create);

        public OwnsResources(SocketInformation info)
        {
            socket = new Socket(info);
            stream = new FileStream("test", FileMode.Create);
        }

        public void Dispose()
        {
            stream?.Dispose();
            socket?.Dispose();
        }

Is there a resource leak in the following method?

        public static void LeakOrNot()
        {
            using (var myClass = new OwnsResources(new SocketInformation()))
            {
                myClass.stream.Flush();
            }
        }

The answer is yes. Let’s see what Infer# found:

leak_or_not

It reports “Resource dynamically allocated by constructor System.IO.FileStream(…)is not closed after the last access at…” The problem lies in the construction of the OwnsResources class itself. The stream field gets initialized twice: once in its field initialization and again in the constructor. This is clear if we look at the bytecode, which is what Infer# uses to produce its analysis*:

bytecode *You might notice that the first created object is stored into the stream field, whereas the second one is followed by an invocation of stream’s setter method. A naïve approach might not realize that these both have the ultimate effect of storing the object into the field. Infer#’s semantic analysis of stream’s setter method determines this equivalence.

Removing one of the assignments and rerunning Infer# confirms that the issue is fixed:

fixed

Finding critical security issues in your code

Those of you building ASP.NET web apps might be familiar with issues like SQL injections or using unsafe deserializers like BinaryFormatter, which all involve the flow of information from an untrustworthy source into a sensitive location within the app. We’re excited to announce the initial release of Infer#’s ability to detect security vulnerabilities via taint analysis. For example, suppose we have a project with the following method:

namespace subproj
{
    public class WeatherForecast
    {
        public static void runSqlCommandBad(string input)
        {
            var command = new SqlCommand()
            {
                CommandText = "SELECT ProductId FROM Products WHERE ProductName = '" + input + "'",
                CommandType = CommandType.Text
            };
            var reader = command.ExecuteReader();
        }

On its own, this method doesn’t pose a SQL injection issue, as it is only an issue if it gets invoked with a string input that comes from a user-controlled source. An example of this would be the invocation of this method with input coming as the parameter of a method with an HttpPost annotation. Infer# can detect this issue despite its trace spanning across multiple assemblies:

taint

Behind the scenes, Infer#’ starts tracking tainted information when it passes through certain methods, known as “pulse-taint-sources,” specified in the ~/infersharp/.inferconfig file in Infer#’s WSL distro. This JSON specifies parameters to the analysis and is invoked by the extension by default. Infer# alerts when it detects that the tainted information reaches certain methods, known as “pulse-taint-sinks.” Putting it together, just specify the sources and sinks of the taint flow you want to track under “pulse-taint-policies.” Here’s what that looks like for the case above:

config

You can easily specify more flows of your own, reusing sources and sinks as needed:

more_flows

Try it today!

By using a framework whose analysis stretches across all input assemblies, Infer# can detect issues that wouldn’t be easy for a human to spot. We’re excited to continue sharing with you the capabilities of the latest semantic analysis technologies. Become a zombie bug slayer today!

The post Slaying Zombie ‘No Repro’ Crashes with Infer# appeared first on .NET Blog.



Learn Kotlin Programming – Full Course for Beginners


Curriculum for the course Learn Kotlin Programming – Full Course for Beginners

Learn the Kotlin programming language in this full course for beginners. Kotlin is the most popular programming language for building Android apps and it can also be can be used for any kind of development. ✏️ Alexandru Cristian developed this course. 🔗 Alexandru on Instagram: https://www.instagram.com/alexdobinca/ Other courses from Alenxadru: 🎥 Python: https://www.udemy.com/course/python-complete-course-learn-python-from-zero/?referralCode=C5CFAB487FBFEE00E12C 🎥 Kotlin: https://www.udemy.com/course/kotlin-masterclass-learn-kotlin-from-zero-to-advanced/?referralCode=EAB498FC62AF9500D30A ⭐️ Contents ⭐️ ⌨️ (0:00:00) Introduction ⌨️ (0:01:06) Install Intellij IDEA ⌨️ (0:06:23) Hello World ⌨️ (0:25:41) Variables ⌨️ (0:41:18) Window ⌨️ (0:42:24) Integer Type ⌨️ (0:53:08) DataType: Byte, Short and Long ⌨️ (1:04:42) Float and Double ⌨️ (1:16:16) Char and Boolean ⌨️ (1:25:55) Operators ⌨️ (1:49:47) Comments ⌨️ (1:51:43) IfThenElse: Statement-Expression ⌨️ (2:02:25) Less Than or Equal To Operator ⌨️ (2:10:33) logical AND operator ⌨️ (2:14:52) logical OR operator ⌨️ (2:29:48) When Statement-Expression ⌨️ (2:44:16) Null ⌨️ (2:59:59) Functions ⌨️ (3:15:46) Function: return and expressions ⌨️ (3:27:43) Functions Overloading ⌨️ (3:33:57) Functions Default Values ⌨️ (3:44:09) Functions vararg keyword ⌨️ (3:55:17) loops: FOR loop ⌨️ (4:05:18) loops: WHILE and DO WHILE loop, Labels and continue and break ⌨️ (4:28:26) loops Challenge ⌨️ (4:43:14) Arrays ⌨️ (4:59:56) Arrays Challenge ⌨️ (5:18:41) OOP: Classes ⌨️ (5:37:01) OOP: Primary Constructor ⌨️ (5:51:25) OOP: Initializer Blocks ⌨️ (6:07:03) OOP: Secondary Constructors ⌨️ (6:23:56) OOP: Constructor Parameters Default Values ⌨️ (6:31:08) OOP: Getters and Setters ⌨️ (6:48:00) OOP: lateinit keyword ⌨️ (6:57:52) OOP: Companion Object ⌨️ (7:07:47) OOP: Singleton ⌨️ (7:19:08) OOP: Lazy Initialization ⌨️ (7:25:02) OOP: Enum Classes ⌨️ (7:39:27) OOP: Inner Classes ⌨️ (7:44:19) OOP Challenge ⌨️ (8:00:16) OOP: Inheritance 1 ⌨️ (8:20:37) OOP: Inheritance 2 ⌨️ (8:35:31) OOP: Sealed Class ⌨️ (8:48:57) OOP: Abstract Classes ⌨️ (8:56:29) OOP: Data Class ⌨️ (9:23:53) OOP: Interfaces 1 ⌨️ (9:35:37) OOP: Interfaces 2 ⌨️ (9:49:03) OOP: Object Expression ⌨️ (9:58:09) OOP: Delegation ⌨️ (10:05:37) Lambda Functions and Lambda Expressions ⌨️ (10:24:15) it parameter in lambda ⌨️ (10:28:03) List, Set, Map ⌨️ (10:44:52) Mapping ⌨️ (10:56:37) Zipping ⌨️ (11:12:00) Flatten ⌨️ (11:21:43) String Representation ⌨️ (11:32:46) Filtering ⌨️ (11:51:19) Test predicates: any(), none(), all() ⌨️ (11:53:56) Plus and Minus Operators ⌨️ (11:57:10) Grouping ⌨️ (12:02:07) Retrieve Collection parts ⌨️ (12:22:26) Retrieve Single Elements ⌨️ (12:26:54) Aggregate Operations: sum(), count(), average(), minOrNull(), maxOrNull() ⌨️ (12:31:49) Comparable and Comparator ⌨️ (12:59:09) Binary Search ⌨️ (13:13:31) Generics: Type Paramenters and Casting ⌨️ (13:29:54) Generics: Upper Bounds 🎉 Thanks to our Champion and Sponsor supporters: 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Erdeniz Unvan 👾 Justin Hual 👾 Agustín Kussrow 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Learn Kotlin Programming – Full Course for Beginners


Click Here to watch on Youtube: Learn Kotlin Programming – Full Course for Beginners


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Learn Kotlin Programming – Full Course for Beginners courses free download, Plurasight Learn Kotlin Programming – Full Course for Beginners courses free download, Linda Learn Kotlin Programming – Full Course for Beginners courses free download, Coursera Learn Kotlin Programming – Full Course for Beginners course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Graph Algorithms Crash Course (with Java)


Curriculum for the course Graph Algorithms Crash Course (with Java)

Learn how to use the graph data structures in this full tutorial for beginners. A Graph data structures is a non-linear data structure consisting of vertices and edges. They are used to solve many real-word problems and are commonly needed to solve coding challenges. The course uses Java. Coding Cleverly teaches this course. Check out his channel: https://www.youtube.com/c/CodingCleverly 💻 Source Code: https://github.com/codingcleverly/graphs_freeCodeCamp ⭐️ Course Contents ⭐️ ⌨️ (0:00:00) Introduction to Graphs ⌨️ (0:01:35) Graphical Explanation ⌨️ (0:03:21) Code Implementation ⌨️ (0:06:41) Vertex class ⌨️ (0:09:33) Edge class ⌨️ (0:17:46) Graph class ⌨️ (0:28:06) main method ⌨️ (0:31:31) compile and run ⌨️ (0:32:55) Introduction to Graph Traversals ⌨️ (0:34:49) Traversal Orders ⌨️ (0:35:35) DFS Traversal (Graphical Explanation) ⌨️ (0:41:56) Code Implementation of DFS ⌨️ (0:51:39) BFS Traversal (Graphical Explanation) ⌨️ (0:54:23) Code Implementation of BFS ⌨️ (1:01:09) Compile and Run ⌨️ (1:01:55) Introduction to Dijkstra's Algorithm ⌨️ (1:02:25) Graphical Explanation ⌨️ (1:08:56) Code Implementation ⌨️ (1:12:22) Priority Queue ⌨️ (1:16:31) Iterating through the vertices ⌨️ (1:19:48) while loop ⌨️ (1:28:17) helper method ⌨️ (1:29:56) compile and run ⌨️ (1:30:21) problem occurred ⌨️ (1:30:31) shortestPathBetween() ⌨️ (1:37:27) fix to the problem ⌨️ (1:38:36) Successful Compile and Run 🎉 Thanks to our Champion and Sponsor supporters: 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Erdeniz Unvan 👾 Justin Hual 👾 Agustín Kussrow 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Graph Algorithms Crash Course (with Java)


Click Here to watch on Youtube: Graph Algorithms Crash Course (with Java)


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Graph Algorithms Crash Course (with Java) courses free download, Plurasight Graph Algorithms Crash Course (with Java) courses free download, Linda Graph Algorithms Crash Course (with Java) courses free download, Coursera Graph Algorithms Crash Course (with Java) course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

.NET Framework October 2022 Cumulative Update Preview

Today, we are releasing the October 2022 Cumulative Update Preview for .NET Framework.

Quality and Reliability

This release contains the following quality and reliability improvements.

WPF1
  • Addresses an issue where a FailFast crash could occur when using WebBrowser.NavigateToString.
  • Addresses an ArgumentOutOfRangeException that can arise when calling ListBox.ScrollIntoView while there are pending changes to the visual tree that will change or clear the underlying ItemsCollection.
  • Addresses an ArgumentException “Width and Height must be non-negative” that can arise in an ItemsControl with grouping enabled, custom margins on the GroupItems, collapse/expand of GroupItems enabled, and run in high-DPI.
  • Addresses an issue where the opt-out switch Switch.System.Windows.Controls.ToolTip.OptOutOfWCAG21ToolTipBehavior didn’t quite restore the 4.8 behavior, in particular the way it honors Switch.UseLegacyToolTipDisplay (which controls whether keyboard tooltip behavior is enabled).
.NET Runtime
  • Address crashes that could occur if ilasm.exe failed to establish temporary PDB file alongside the output file.

1 Windows Presentation Foundation (WPF)

Getting the Update

The Cumulative Update Preview is available via Windows Update and Microsoft Update Catalog.

Note: Customers that rely on Windows Update 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 2019+ versions.

Product Version Cumulative Update
Windows 11, version 21H2 5018859
.NET Framework 3.5, 4.8 Catalog 5018330
.NET Framework 3.5, 4.8.1 Catalog 5018334
Microsoft server operating system, version 22H2 5018855
.NET Framework 3.5, 4.8 Catalog 5018331
Microsoft server operating system version 21H2 5018860
.NET Framework 3.5, 4.8 Catalog 5018331
.NET Framework 3.5, 4.8.1 Catalog 5018335
Windows 10 version 22H2 5018858
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 version 21H2 5018858
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 version 21H1 5018857
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 Version 20H2 5018856
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332

Previous Monthly Rollups

The last few .NET Framework Monthly updates are listed below for your convenience:

The post .NET Framework October 2022 Cumulative Update Preview appeared first on .NET Blog.



.NET Framework October 2022 Cumulative Update Preview

Today, we are releasing the October 2022 Cumulative Update Preview for .NET Framework.

Quality and Reliability

This release contains the following quality and reliability improvements.

WPF1
  • Addresses an issue where a FailFast crash could occur when using WebBrowser.NavigateToString.
  • Addresses an ArgumentOutOfRangeException that can arise when calling ListBox.ScrollIntoView while there are pending changes to the visual tree that will change or clear the underlying ItemsCollection.
  • Addresses an ArgumentException “Width and Height must be non-negative” that can arise in an ItemsControl with grouping enabled, custom margins on the GroupItems, collapse/expand of GroupItems enabled, and run in high-DPI.
  • Addresses an issue where the opt-out switch Switch.System.Windows.Controls.ToolTip.OptOutOfWCAG21ToolTipBehavior didn’t quite restore the 4.8 behavior, in particular the way it honors Switch.UseLegacyToolTipDisplay (which controls whether keyboard tooltip behavior is enabled).
.NET Runtime
  • Address crashes that could occur if ilasm.exe failed to establish temporary PDB file alongside the output file.

1 Windows Presentation Foundation (WPF)

Getting the Update

The Cumulative Update Preview is available via Windows Update and Microsoft Update Catalog.

Note: Customers that rely on Windows Update 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 2019+ versions.

Product Version Cumulative Update
Windows 11, version 21H2 5018859
.NET Framework 3.5, 4.8 Catalog 5018330
.NET Framework 3.5, 4.8.1 Catalog 5018334
Microsoft server operating system, version 22H2 5018855
.NET Framework 3.5, 4.8 Catalog 5018331
Microsoft server operating system version 21H2 5018860
.NET Framework 3.5, 4.8 Catalog 5018331
.NET Framework 3.5, 4.8.1 Catalog 5018335
Windows 10 version 22H2 5018858
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 version 21H2 5018858
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 version 21H1 5018857
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332
Windows 10 Version 20H2 5018856
.NET Framework 3.5, 4.8 Catalog 5018329
.NET Framework 3.5, 4.8.1 Catalog 5018332

Previous Monthly Rollups

The last few .NET Framework Monthly updates are listed below for your convenience:

The post .NET Framework October 2022 Cumulative Update Preview appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/dotnet-framework-october-2022-cumulative-update-preview/

How to Make Money From Your Website Using Microtransactions


Curriculum for the course How to Make Money From Your Website Using Microtransactions

Learn how to make money from your website without having to reply on third party advertisers or selling your users data by using the Interledger Protocol and microtransactions. ✏️ Ania Kubów developed this course. Check out her channel: https://www.youtube.com/c/AniaKub%C3%B3w 🔗 Sign up for Uphold: https://wallet.uphold.com/signup 🔗 Coil Chrome extension: https://chrome.google.com/webstore/detail/coil/locbifcbeldmnphbgkdigjmkbfkhbnca?hl=en 🔗 Sign up for Coil: https://coil.com/auth/signup 🏗 Grant for the Web provided a grant to make this course possible. Grant for the Web is an Interledger Foundation program to boost open, fair, and inclusive standards and innovation in Web Monetization. 🎉 Thanks to our Champion and Sponsor supporters: 👾 Raymond Odero 👾 Agustín Kussrow 👾 aldo ferretti 👾 Otis Morgan 👾 DeezMaster -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: How to Make Money From Your Website Using Microtransactions


Click Here to watch on Youtube: How to Make Money From Your Website Using Microtransactions


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy How to Make Money From Your Website Using Microtransactions courses free download, Plurasight How to Make Money From Your Website Using Microtransactions courses free download, Linda How to Make Money From Your Website Using Microtransactions courses free download, Coursera How to Make Money From Your Website Using Microtransactions course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Harvard CS50 – Full Computer Science University Course


Curriculum for the course Harvard CS50 – Full Computer Science University Course

Learn the basics of computer science from Harvard University. This is CS50, an introduction to the intellectual enterprises of computer science and the art of programming. 💻 Slides, source code, and more at https://cs50.harvard.edu/x. ⭐️ Course Contents ⭐️ ⌨️ (00:00:00) Lecture 0 - Scratch ⌨️ (01:45:08) Lecture 1 - C ⌨️ (04:13:23) Lecture 2 - Arrays ⌨️ (06:20:43) Lecture 3 - Algorithms ⌨️ (08:37:55) Lecture 4 - Memory ⌨️ (11:03:17) Lecture 5 - Data Structures ⌨️ (13:15:36) Lecture 6 - Python ⌨️ (15:39:25) Lecture 7 - SQL ⌨️ (18:00:55) Lecture 8 - HTML, CSS, JavaScript ⌨️ (20:23:38) Lecture 9 - Flask ⌨️ (22:39:01) Lecture 10 - Emoji ⌨️ (24:02:50) Cybersecurity Recorded in 2021. --- HOW TO JOIN CS50 COMMUNITIES Discord: https://discord.gg/cs50 Ed: https://cs50.harvard.edu/x/ed Facebook Group: https://www.facebook.com/groups/cs50/ Faceboook Page: https://www.facebook.com/cs50/ GitHub: https://github.com/cs50 Gitter: https://gitter.im/cs50/x Instagram: https://instagram.com/cs50 LinkedIn Group: https://www.linkedin.com/groups/7437240/ LinkedIn Page: https://www.linkedin.com/school/cs50/ Medium: https://cs50.medium.com/ Quora: https://www.quora.com/topic/CS50 Reddit: https://www.reddit.com/r/cs50/ Slack: https://cs50.edx.org/slack Snapchat: https://www.snapchat.com/add/cs50 SoundCloud: https://soundcloud.com/cs50 Stack Exchange: https://cs50.stackexchange.com/ TikTok: https://www.tiktok.com/@cs50 Twitter: https://twitter.com/cs50 YouTube: https://www.youtube.com/cs50 HOW TO FOLLOW DAVID J. MALAN Facebook: https://www.facebook.com/dmalan GitHub: https://github.com/dmalan Instagram: https://www.instagram.com/davidjmalan/ LinkedIn: https://www.linkedin.com/in/malan/ TikTok: https://www.tiktok.com/@davidjmalan Twitter: https://twitter.com/davidjmalan LICENSE CC BY-NC-SA 4.0 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License https://creativecommons.org/licenses/by-nc-sa/4.0/ 🎉 Thanks to our Champion and Sponsor supporters: 👾 Raymond Odero 👾 Agustín Kussrow 👾 aldo ferretti 👾 Otis Morgan 👾 DeezMaster -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Harvard CS50 – Full Computer Science University Course


Click Here to watch on Youtube: Harvard CS50 – Full Computer Science University Course


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Harvard CS50 – Full Computer Science University Course courses free download, Plurasight Harvard CS50 – Full Computer Science University Course courses free download, Linda Harvard CS50 – Full Computer Science University Course courses free download, Coursera Harvard CS50 – Full Computer Science University Course course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Announcing .NET MAUI support for .NET 7 Release Candidate 2

.NET Multi-platform App UI (MAUI) with .NET 7 Release Candidate 2 is now available in Visual Studio 17.4 Preview 4 on both Windows and Mac. The primary themes of RC2 are quality and .NET support for Xcode 14 with iOS 16. This release is covered by a go-live support license for use in production.

In related news, new libraries have also shipped for MSAL.NET and App Center (Preview). These are both key libraries that .NET MAUI developers have been asking for. MSAL.NET is essential when using Azure Active Directory and the Microsoft identity platform for authentication. App Center provides services for app diagnostics and analytics.

Visual Studio installed on Windows

Getting Started

Install or upgrade to the latest preview of Visual Studio 2022:

  • Visual Studio 2022 for Mac – 17.4 Preview 4 Download
  • Visual Studio 2022 for Windows – 17.4 Preview 4 Download

If targeting iOS, you can now build directly to your iOS device on Windows, or if you use a Mac (or Mac build host) by installing Xcode 14.0.x from the Apple Developer website. Note Apple’s minimum requirement for Xcode 14 is macOS Monterey 12.5 which is higher than Xcode 13.4 required.

.NET MAUI Learning Resources

Whether you’re just now jumping into developing native client apps with .NET MAUI, or you’ve been at it for a while, there are a lot of resources available to help you. Don’t see what you’re looking for below? Please open an issue on GitHub and we’ll see what we can do to help.

How do I
.NET Multi-platform App UI documentation
.NET MAUI Samples
Enterprise application patterns using .NET MAUI

Beginner Training
Learn Path – Build mobile and desktop apps with .NET MAUI
.NET MAUI for beginners video series

Release Notes
.NET for Android
.NET for iOS
.NET MAUI

Community Collections
Javier’s Awesome .NET MAUI list
Vladislav’s list
Egvijay’s list
Matt’s list
Gerald Versluis’ YouTube
James Montemagno’s YouTube
Javier Suarez’s YouTube

Keeping Up-to-date
.NET MAUI podcast
* .NET MAUI blogs

Feedback

Please let us know about your experience using .NET MAUI by opening issues on GitHub, and these latest versions of Visual Studio 2022 via the feedback button (Mac | Windows).

The post Announcing .NET MAUI support for .NET 7 Release Candidate 2 appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/dotnet-maui-rc2/

Learn Svelte – Full Course for Beginners


Curriculum for the course Learn Svelte – Full Course for Beginners

Learn Svelte in this full course for beginners! Svelte is a front-end JavaScript framework for making interactive webpages. ✏️ Li Hau Tan developed this course. Li is a core maintainer of Svelte. Check out his channel: https://www.youtube.com/lihautan 💻 Code links in top comment (because of YouTube's description character limit) ⭐️ Course Contents ⭐️ ⌨️ (0:00:23) Introduction ⌨️ (0:00:31) Writing your 1st Svelte component ⌨️ (0:06:25) Style your Svelte component ⌨️ (0:18:48) Adding data to Svelte component ⌨️ (0:23:22) Reactivity in Svelte ⌨️ (0:37:41) Attaching events in Svelte ⌨️ (0:48:07) Reactive Declarations and Statements ⌨️ (1:06:19) tick() ⌨️ (1:19:06) Component and props ⌨️ (1:29:09) Component events ⌨️ (1:44:35) Forwarding component events ⌨️ (1:56:17) class: directive ⌨️ (2:02:31) Binding ⌨️ (2:13:04) bind:group ⌨️ (2:24:18) bind:this ⌨️ (2:35:28) Component Lifecycle ⌨️ (2:45:55) onMount ⌨️ (2:55:27) {#if} block ⌨️ (3:04:38) {#each} block ⌨️ (3:22:46) keyed {#each} block ⌨️ (3:46:33) keyed {#each} visualized ⌨️ (4:06:58) {#await} block ⌨️ (4:27:01) {#key} block ⌨️ (4:40:10) Context ⌨️ (4:56:21) Communicating through Context ⌨️ (5:16:06) Intro to Svelte store ⌨️ (5:29:07) Writable store ⌨️ (5:32:11) Readable store ⌨️ (5:40:25) Svelte store contract ⌨️ (5:53:34) Redux store as Svelte store ⌨️ (6:06:01) Valtio state as Svelte store ⌨️ (6:18:55) XState as Svelte store ⌨️ (6:25:34) DOM events as Svelte store ⌨️ (6:42:50) Immer for immutable Svelte store ⌨️ (7:12:07) derived() Svelte store ⌨️ (7:28:08) tweened() Svelte store ⌨️ (7:54:58) tweened() and spring() ⌨️ (8:15:42) Higher Order Store ⌨️ (8:44:41) RxJS as Svelte store ⌨️ (8:55:39) Reactive class property using stores ⌨️ (9:21:33) Undo / Redo with Svelte store ⌨️ (10:22:02) Reactive Context ⌨️ (10:27:56) 3 tips to manage complex store ⌨️ (10:59:51) get() Svelte store value ⌨️ (11:06:29) Store vs Context ⌨️ (11:24:18) Intro to Svelte action ⌨️ (11:30:16) Dynamic parameter in Svelte action ⌨️ (11:34:08) What if Svelte action does not exists? ⌨️ (11:58:58) Integrating UI library with Svelte action ⌨️ (12:11:27) Reusing event listeners with Svelte action ⌨️ (12:39:10) Creating events with Svelte action ⌨️ (12:50:21) The order of Svelte action ⌨️ (12:56:53) use:clickOutside ⌨️ (13:02:51) use:tooltip ⌨️ (13:37:09) use:viewport ⌨️ (13:49:14) use:popper with Popper ⌨️ (14:09:31) use:lazyImage ⌨️ (14:19:04) Ensemble Actions ⌨️ (14:51:43) slot ⌨️ (15:04:35) Passing data across slot ⌨️ (15:13:48) Slot forwarding ⌨️ (15:30:32) $$slots ⌨️ (15:39:41) Infinite List ⌨️ (16:06:40) Tabs ⌨️ (16:40:46) $$props and $$restProps ⌨️ (17:06:19) Lazy Component ⌨️ (17:40:37) svelte:component ⌨️ (17:49:27) svelte:self ⌨️ (17:55:25) svelte:window ⌨️ (18:03:28) svelte:body ⌨️ (18:07:14) svelte:head ⌨️ (18:16:30) svelte:options ⌨️ (18:45:27) Passing CSS Custom Properties to Component ⌨️ (19:13:10) {@html} ⌨️ (19:35:02) {@debug} ⌨️ (19:40:39) script context="module" ⌨️ (20:00:04) Intro to Svelte transitions ⌨️ (20:03:07) Coordinating transitions ⌨️ (20:06:53) Transition Events ⌨️ (20:10:49) Easing ⌨️ (20:13:56) Accessible transitions ⌨️ (20:23:01) Solid color swipe transition ⌨️ (20:38:04) Flipboard transition ⌨️ (20:54:28) Client-side component API ⌨️ (21:20:03) SSR component API ⌨️ (21:39:57) Svelte compiler API ⌨️ (22:08:14) Svelte preprocess API ⌨️ (22:25:52) Hydrating Svelte component ⌨️ (22:57:06) svelte/register ⌨️ (23:09:31) Conclusion Links: Twitter: https://twitter.com/lihautan YouTube: https://youtube.com/c/lihautan Website: https://lihautan.com/ Supporting https://www.buymeacoffee.com/lihautan --- Svelte https://svelte.dev/ Svelte REPL https://svelte.dev/repl Svelte Discord https://svelte.dev/chat Svelte Twitter https://twitter.com/sveltejs Svelte Society https://sveltesociety.dev/ Svelte Society Twitter https://twitter.com/SvelteSociety 🎉 Thanks to our Champion and Sponsor supporters: 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Erdeniz Unvan 👾 Justin Hual 👾 Agustín Kussrow 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Learn Svelte – Full Course for Beginners


Click Here to watch on Youtube: Learn Svelte – Full Course for Beginners


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Learn Svelte – Full Course for Beginners courses free download, Plurasight Learn Svelte – Full Course for Beginners courses free download, Linda Learn Svelte – Full Course for Beginners courses free download, Coursera Learn Svelte – Full Course for Beginners course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

What’s new in System.Text.Json in .NET 7

In .NET 7, our focus for System.Text.Json has been to substantially improve extensibility of the library, adding new performance-oriented features and addressing high impact reliability and consistency issues. More specifically, .NET 7 sees the release of contract customization, which gives you more control over how types are serialized or deserialized, polymorphic serialization for user-defined type hierarchies, required member support, and much more.

Getting the latest bits

You can try out the new features by using the latest build of System.Text.Json NuGet package or the latest SDK for .NET 7, which is currently RC.

Contract Customization

System.Text.Json determines how a given .NET type is meant to be serialized and deserialized by constructing a JSON contract for that type. The contract is derived from the type’s shape — such as its available constructors, properties and fields, and whether it implements IEnumerable or IDictionary — either at runtime using reflection or at compile time using the source generator. In previous releases, users were able to make limited adjustments to the derived contract using System.Text.Json attribute annotations, assuming they are able to modify the type declaration.

The contract metadata for a given type T is represented using JsonTypeInfo<T>, which in previous versions served as an opaque token used exclusively in source generator APIs. Starting in .NET 7, most facets of the JsonTypeInfo contract metadata have been exposed and made user-modifiable. Contract customization allows users to write their own JSON contract resolution logic using implementations of the IJsonTypeInfoResolver interface:

public interface IJsonTypeInfoResolver
{
    JsonTypeInfo? GetTypeInfo(Type type, JsonSerializerOptions options);
}

A contract resolver returns a configured JsonTypeInfo instance for the given Type and JsonSerializerOptions combination. It can return null if the resolver does not support metadata for the specified input type.

Contract resolution performed by the default, reflection-based serializer is now exposed via the DefaultJsonTypeInfoResolver class, which implements IJsonTypeInfoResolver. This class lets users extend the default reflection-based resolution with custom modifications or combine it with other resolvers (such as source-generated resolvers).

Starting from .NET 7 the JsonSerializerContext class used in source generation also implements IJsonTypeInfoResolver. To learn more about the source generator, see How to use source generation in System.Text.Json.

A JsonSerializerOptions instance can be configured with a custom resolver using the new TypeInfoResolver property:

// configure to use reflection contracts
var reflectionOptions = new JsonSerializerOptions 
{ 
    TypeInfoResolver = new DefaultJsonTypeInfoResolver()
};

// configure to use source generated contracts
var sourceGenOptions = new JsonSerializerOptions 
{ 
    TypeInfoResolver = EntryContext.Default 
};

[JsonSerializable(typeof(MyPoco))]
public partial class EntryContext : JsonSerializerContext { }

Modifying JSON contracts

The DefaultJsonTypeInfoResolver class is designed with contract customization in mind and can be extended in a couple of ways:

  1. Inheriting from the class, overriding the GetTypeInfo method, or
  2. Using the Modifiers property to subscribe delegates that modify the default JsonTypeInfo results.

Here’s how you could define a custom contract resolver that uses uppercase JSON properties, first using inheritance:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new UpperCasePropertyContractResolver()
};

JsonSerializer.Serialize(new { value = 42 }, options); // {"VALUE":42}

public class UpperCasePropertyContractResolver : DefaultJsonTypeInfoResolver
{
    public override JsonTypeInfo GetTypeInfo(Type type, JsonSerializerOptions options)
    {
        JsonTypeInfo typeInfo = base.GetTypeInfo(type, options);

        if (typeInfo.Kind == JsonTypeInfoKind.Object)
        {
            foreach (JsonPropertyInfo property in typeInfo.Properties)
            {
                property.Name = property.Name.ToUpperInvariant();
            }
        }

        return typeInfo;
    }
}

and the same implementation using the Modifiers property:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers = { UseUppercasePropertyNames }
    }
};

JsonSerializer.Serialize(new { value = 42 }, options); // {"VALUE":42}

static void UseUppercasePropertyNames(JsonTypeInfo jsonTypeInfo)
{
    if (typeInfo.Kind != JsonTypeInfoKind.Object)
        return;

    foreach (JsonPropertyInfo property in typeInfo.Properties)
    {
        property.Name = property.Name.ToUpperInvariant();
    }
}

Each DefaultJsonTypeInfoResolver can register multiple modifier delegates, which it runs sequentially on metadata resolved for each type:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers = { Modifier1, Modifier2, Modifier3 }
    }
};

JsonTypeInfo typeInfo = options.GetTypeInfo(typeof(string)); // Prints messages in sequence

static void Modifier1(JsonTypeInfo typeInfo) { Console.WriteLine("Runs first"); }
static void Modifier2(JsonTypeInfo typeInfo) { Console.WriteLine("Runs second"); }
static void Modifier3(JsonTypeInfo typeInfo) { Console.WriteLine("Runs third"); }

Modifier syntax affords a more concise and compositional API compared to inheritance. As such, subsequent examples will focus on that approach.

Notes on authoring contract modifiers

The DefaultJsonTypeInfoResolver.Modifiers property allows developers to specify a series of handlers to update the metadata contract for all types in the serialization type closure. Modifiers are consulted in the order that they were specified in the DefaultJsonTypeInfoResolver.Modifiers list. This makes it possible for modifiers to make changes that conflict with each other, possibly resulting in unintended serialization contracts.

For example, consider how the UseUppercasePropertyNames modifier above would interact with a modifier that filters out properties that are only used in a hypothetical “v0” version of a serialization schema:


JsonSerializerOptions options0 = new()
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    { 
        Modifiers = { ExcludeV0Members, UseUppercasePropertyNames } 
    }
};
JsonSerializerOptions options1 = new()
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver 
    {
        Modifiers = { UseUppercasePropertyNames, ExcludeV0Members }
    }
};

Employee employee = FetchEmployee();
JsonSerializer.Serialize(employee, options0); // {"NAME":"Jane Doe","ROLE":"Contractor"}
JsonSerializer.Serialize(employee, options1); // {"NAME":"Jane Doe","ROLE":"Contractor","ROLE_V0":"Temp"}

static void ExcludeV0Members(JsonTypeInfo jsonTypeInfo)
{
    if (typeInfo.Kind != JsonTypeInfoKind.Object)
        return;

    foreach (JsonPropertyInfo property in typeInfo.Properties)
    {
        if (property.Name.EndsWith("_v0"))
        {
            property.ShouldSerialize = false;
        }
    }
}

class Employee
{
    public string Name { get; set; }
    public Role Role { get; set; }
    public string Role_v0 => { get; set; }
}

Even though not always possible, it is a good idea to design modifiers with composability in mind. One way to do this is by ensuring that any modifications to the contract are append-only, rather than replacing or removing work done by previous modifiers. Consider the following example, where we define a modifier that appends a property with diagnostic information for every object. Such a modifier might want to confirm that a “Data” property does not already exist on a given type:

static void AddDiagnosticDataProperty(JsonTypeInfo typeInfo)
{
    if (typeInfo.Kind == JsonTypeInfoKind.Object && 
        typeInfo.Properties.All(prop => prop.Name != "Data"))
    {
        JsonPropertyInfo propertyInfo = typeInfo.CreateJsonPropertyInfo(string, "Data");
        propertyInfo.Get = obj => GetDiagnosticData(obj);
        typeInfo.Properties.Add(propertyInfo);
    }
}

Example: Custom Attribute Support

Contract customization makes it possible to add support for attributes that are not inbox to System.Text.Json. Here is an example implementing support for DataContractSerializer‘s IgnoreDataMemberAttribute:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers = { DetectIgnoreDataMemberAttribute }
    }
};

JsonSerializer.Serialize(new MyPoco(), options); // {"Value":3}

static void DetectIgnoreDataMemberAttribute(JsonTypeInfo typeInfo)
{
    if (typeInfo.Kind != JsonTypeInfoKind.Object)
        return;

    foreach (JsonPropertyInfo propertyInfo in typeInfo.Properties)
    {
        if (propertyInfo.AttributeProvider is ICustomAttributeProvider provider &&
            provider.IsDefined(typeof(IgnoreDataMemberAttribute), inherit: true))
        {
            // Disable both serialization and deserialization 
            // by unsetting getter and setter delegates
            propertyInfo.Get = null;
            propertyInfo.Set = null;
        }
    }
}

public class MyPoco
{
    [JsonIgnore]
    public int JsonIgnoreValue { get; } = 1;

    [IgnoreDataMember]
    public int IgnoreDataMemberValue { get; } = 2;

    public int Value { get; } = 3;
}

Example: Conditional Serialization

You can use the JsonPropertyInfo.ShouldSerialize delegate to determine dynamically whether a given property value should be serialized:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers = { IgnoreNegativeValues }
    }
};

JsonSerializer.Serialize(new MyPoco { IgnoreNegativeValues = false, Value = -1 }, options); // {"Value":-1}
JsonSerializer.Serialize(new MyPoco { IgnoreNegativeValues = true, Value = -1 }, options); // {}

static void IgnoreNegativeValues(JsonTypeInfo typeInfo)
{
    if (typeInfo.Type != typeof(MyPoco))
        return;

    foreach (JsonPropertyInfo propertyInfo in typeInfo.Properties)
    {
        if (propertyInfo.PropertyType == typeof(int))
        {
            propertyInfo.ShouldSerialize = static (obj, value) => 
                (int)value! >= 0 || !((MyPoco)obj).IgnoreNegativeValues;
        }
    }
}

public class MyPoco
{
    [JsonIgnore]
    public bool IgnoreNegativeValues { get; set; }

    public int Value { get; set; }
}

Example: Serializing private fields

System.Text.Json does not support private field serialization, as doing that is generally not recommended. However, if really necessary it’s possible to write a contract resolver that only serializes the fields of a given type:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers = { SerializeObjectFields }
    }
};

JsonSerializer.Serialize(new { value = 42 }, options); // {"\u003Cvalue\u003Ei__Field":42}

static void SerializeObjectFields(JsonTypeInfo typeInfo)
{
    if (typeInfo.Kind != JsonTypeInfoKind.Object)
        return;

    // Remove any properties included by the default resolver
    typeInfo.Properties.Clear();

    const BindingFlags Flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
    foreach (FieldInfo fieldInfo in typeInfo.Type.GetFields(Flags))
    {
        JsonPropertyInfo propertyInfo = typeInfo.CreateJsonPropertyInfo(fieldInfo.FieldType, fieldInfo.Name);
        propertyInfo.Get = obj => fieldInfo.GetValue(obj);
        propertyInfo.Set = (obj, value) => fieldInfo.SetValue(obj, value);

        typeInfo.Properties.Add(propertyInfo);
    }
}

Although as the serialized output would suggest, serializing private fields can be very brittle and error prone. This example has been shared for illustrative purposes only and is not recommended for most real-word applications.

Combining resolvers

It is possible to combine contracts from multiple sources using the JsonTypeInfoResolver.Combine method. This is commonly applicable to source generated JsonSerializerContext instances that can only generate contracts for a restricted subset of types:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = JsonTypeInfoResolver.Combine(ContextA.Default, ContextB.Default)
};

// Successfully handles serialization for both types
JsonSerializer.Serialize(new PocoA(), options);
JsonSerializer.Serialize(new PocoB(), options);

// Types from Library A
[JsonSerializable(typeof(PocoA))]
public partial class ContextA : JsonSerializerContext { }
public class PocoA { }

// Types from Library B
[JsonSerializable(typeof(PocoB))]
public partial class ContextB : JsonSerializerContext { }
public class PocoB { }

The Combine method produces a contract resolver that sequentially queries each of its constituent resolvers in order of definition, returning the first result that is not null. The method supports chaining arbitrarily many resolvers, including DefaultJsonTypeInfoResolver:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = JsonTypeInfoResolver.Combine(
        ContextA.Default, 
        ContextB.Default, 
        new DefaultJsonTypeInfoResolver())
};

// Uses reflection for the outer class, source gen for the property types
JsonSerializer.Serialize(new { A = new PocoA(), B = new PocoB() } , options);

Metadata Kinds

JsonTypeInfo metadata should be thought of as configuration objects for System.Text.Json’s built-in converters. As such, what metadata is configurable on each type is largely dependent on the underlying converter being used for the type: types using the built-in converter for objects can configure property metadata, whereas types using custom user-defined converters cannot be configured at all. What can be configured is determined by the value of the JsonTypeInfo.Kind property. There are currently four kinds of metadata available to the user:

  • Object – type is serialized as a JSON object using JsonPropertyInfo metadata; used for most class or struct types by default.
  • Enumerable – type is serialized as a JSON array; used for most types implementing IEnumerable.
  • Dictionary – type is serialized as a JSON object; used for most dictionary types or collections of key/value pairs.
  • None – type uses a converter not configurable by metadata; typically applies to primitive types, object, string or types using custom user-defined converters.

Currently, the Object kind offers the most configurability, and we plan to add more functionality for Enumerable and Dictionary kinds in future releases.

Type Hierarchies

System.Text.Json now supports polymorphic serialization and deserialization of user-defined type hierarchies. This can be enabled by decorating the base class of a type hierarchy with the new JsonDerivedTypeAttribute:

[JsonDerivedType(typeof(Derived))]
public class Base
{
    public int X { get; set; }
}

public class Derived : Base
{
    public int Y { get; set; }
}

This configuration enables polymorphic serialization for Base, specifically when the run-time type is Derived:

Base value = new Derived();
JsonSerializer.Serialize<Base>(value); // { "X" : 0, "Y" : 0 }

Note that this does not enable polymorphic deserialization since the payload would be round tripped as Base:

Base value = JsonSerializer.Deserialize<Base>(@"{ ""X"" : 0, ""Y"" : 0 }");
value is Derived; // false

Using Type Discriminators

To enable polymorphic deserialization, you need to specify a type discriminator for the derived class:

[JsonDerivedType(typeof(Base), typeDiscriminator: "base")]
[JsonDerivedType(typeof(Derived), typeDiscriminator: "derived")]
public class Base
{
    public int X { get; set; }
}

public class Derived : Base
{
    public int Y { get; set; }
}

Now, type discriminator metadata is emitted in the JSON:

Base value = new Derived();
JsonSerializer.Serialize<Base>(value); // { "$type" : "derived", "X" : 0, "Y" : 0 }

The presence of the metadata enables the value to be polymorphically deserialized:

Base value = JsonSerializer.Deserialize<Base>(@"{ ""$type"" : ""derived"", ""X"" : 0, ""Y"" : 0 }");
value is Derived; // true

Type discriminator identifiers can also be integers, so the following form is valid:

[JsonDerivedType(typeof(Derived1), 0)]
[JsonDerivedType(typeof(Derived2), 1)]
[JsonDerivedType(typeof(Derived3), 2)]
public class Base { }

JsonSerializer.Serialize<Base>(new Derived2()); // { "$type" : 1, ... }

Configuring Polymorphism

You can tweak aspects of how polymorphic serialization works using the JsonPolymorphicAttribute. The following example changes the property name of the type discriminator:

[JsonPolymorphic(TypeDiscriminatorPropertyName = "$case")]
[JsonDerivedType(typeof(Derived), "derived")]
public class Base { }

JsonSerializer.Serialize<Base>(new Derived2()); // { "$case" : "derived", ... }

The JsonPolymorphicAttribute exposes a number of configuration parameters, including properties controlling how undeclared runtime types or type discriminators should be handled on serialization and deserialization, respectively.

Polymorphism using Contract Customization

The JsonTypeInfo contract model exposes the PolymorphismOptions property that can be used to programmatically control all configuration of a given type hierarchy:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers =
        {
            static typeInfo =>
            {
                if (typeInfo.Type != typeof(Base))
                    return;

                typeInfo.PolymorphismOptions = new()
                {
                    TypeDiscriminatorPropertyName = "__type",
                    DerivedTypes =
                    {
                        new JsonDerivedType(typeof(Derived), "__derived")
                    }
                };
            }
        }
    }
};

JsonSerializer.Serialize<Base>(new Derived(), options); // {"__type":"__derived", ... }

Required Members

C# 11 adds support for required members, a language feature that lets class authors specify properties or fields that must be populated on instantiation. Starting in .NET 7, the reflection serializer in System.Text.Json includes support for required members: if the member of a deserialized type is marked required and cannot bind to any property from the JSON payload, deserialization will fail with an exception:

using System.Text.Json;

JsonSerializer.Deserialize<Person>("""{"Age": 42}"""); // throws JsonException

public class Person
{
    public required string Name { get; set; }
    public int Age { get; set; }
}

It should be noted that required properties are currently not supported by the source generator. If you’re using the source generator, an earlier C# version, a different .NET language like F# or Visual Basic, or simply need to avoid the required keyword, you can alternatively use the JsonRequiredAttribute to achieve the same effect.

using System.Text.Json;

JsonSerializer.Deserialize("""{"Age": 42}""", MyContext.Default.Person); // throws JsonException

[JsonSerializable(typeof(Person))]
public partial class MyContext : JsonSerializerContext { }

public class Person
{
    [JsonRequired]
    public string Name { get; set; }
    public int Age { get; set; }
}

It is also possible to control whether a property is required via the contract model using the JsonPropertyInfo.IsRequired property:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver
    {
        Modifiers =
        {
            static typeInfo =>
            {
                if (typeInfo.Kind != JsonTypeInfoKind.Object)
                    return;

                foreach (JsonPropertyInfo propertyInfo in typeInfo.Properties)
                {
                    // strip IsRequired constraint from every property
                    propertyInfo.IsRequired = false;
                }
            }
        }
    }
};

JsonSerializer.Deserialize<Person>("""{"Age": 42}""", options); // serialization now succeeds

JsonSerializerOptions.Default

System.Text.Json maintains a default instance of JsonSerializerOptions to be used in cases where no JsonSerializerOptions argument has been passed by the user. This (read-only) instance can now be accessed by users via the JsonSerializerOptions.Default static property. It can be useful in cases where users need to query the default JsonTypeInfo or JsonConverter for a given type:

public class MyCustomConverter : JsonConverter<int>
{
    private readonly static JsonConverter<int> s_defaultConverter = 
        (JsonConverter<int>)JsonSerializerOptions.Default.GetConverter(typeof(int));

    // custom serialization logic
    public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
    {
        return writer.WriteStringValue(value.ToString());
    }

    // fall back to default deserialization logic
    public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        return s_defaultConverter.Read(ref reader, typeToConvert, options);
    }
}

Or in cases where obtaining a JsonSerializerOptions is required:

class MyClass
{
    private readonly JsonSerializerOptions _options;

    public MyClass(JsonSerializerOptions? options = null) => _options = options ?? JsonSerializerOptions.Default;
}

Utf8JsonReader.CopyString

Until today, Utf8JsonReader.GetString() has been the only way users could consume decoded JSON strings. This will always allocate a new string, which might be unsuitable for certain performance-sensitive applications. The newly included CopyString methods allow copying the unescaped UTF-8 or UTF-16 strings to a buffer owned by the user:

int valueLength = reader.HasReadOnlySequence 
    ? checked((int)ValueSequence.Length) 
    : ValueSpan.Length;

char[] buffer = ArrayPool<char>.Shared.Rent(valueLength);
int charsRead = reader.CopyString(buffer);
ReadOnlySpan<char> source = buffer.Slice(0, charsRead);

ParseUnescapedString(source); // handle the unescaped JSON string
ArrayPool<char>.Shared.Return(buffer);

Or if handling UTF-8 is preferable:

ReadOnlySpan<byte> source = stackalloc byte[0];
if (!reader.HasReadOnlySequence && !reader.ValueIsEscaped)
{
    // No need to copy to an intermediate buffer if value is span without escape sequences
    source = reader.ValueSpan;
}
else
{
    int valueLength = reader.HasReadOnlySequence 
        ? checked((int)ValueSequence.Length) 
        : ValueSpan.Length;

    Span<byte> buffer = valueLength <= 256 ? stackalloc byte[256] : new byte[valueLength];
    int bytesRead = reader.CopyString(buffer);
    source = buffer.Slice(0, bytesRead);
}

ParseUnescapedBytes(source);

Source generation improvements

The System.Text.Json source generator now adds built-in support for the following types:

The following example now works as expected:

Stream stdout = Console.OpenStandardOutput();
MyPoco value = new MyPoco();
await JsonSerializer.SerializeAsync(stdout, value, MyContext.Default.MyPoco);

[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MyPoco))]
public partial class MyContext : JsonSerializerContext
{
}

public class MyPoco
{
    public IAsyncEnumerable<DateOnly> Dates => GetDatesAsync();

    private async IAsyncEnumerable<DateOnly> GetDatesAsync()
    {
        DateOnly date = DateOnly.Parse("2022-09-01", CultureInfo.InvariantCulture);
        for (int i = 0; i < 10; i++)
        {
            await Task.Delay(1000);
            yield return date.AddDays(i);
        }
    }
}

Performance improvements

.NET 7 sees the release of the fastest System.Text.Json yet. We have invested in a number of performance-oriented improvements concerning both the internal implementation and user-facing APIs. For a detailed write-up of System.Text.Json performance improvements in .NET 7, please refer to the relevant section in Stephen Toub’s Performance Improvements in .NET 7 article.

Breaking changes

As part of our efforts to make System.Text.Json more reliable and consistent, the .NET 7 release includes a number of necessary breaking changes. These typically concern rectifying inconsistencies of components shipped in earlier releases of the library. We have documented each of the breaking changes, including potential workarounds should these impact migration of your apps to .NET 7:

Closing

Our focus for System.Text.Json this year has been to make the library more extensible and improve its consistency and reliability, while also committing to continually improving performance year-on-year. We’d like you to try the new features and give us feedback on how it improves your applications, and any usability issues or bugs that you might encounter.

Community contributions are always welcome. If you’d like to contribute to System.Text.Json, check out our list of help wanted issues on GitHub.

The post What’s new in System.Text.Json in .NET 7 appeared first on .NET Blog.



.NET October 2022 Updates – .NET 6.0.10 and .NET Core 3.1.30

Today, we are releasing the .NET October 2022 Updates. These updates contain security and non-security improvements. Your app may be vulnerable if you have not deployed a recent .NET update.

You can download 6.0.10 and 3.1.30 versions for Windows, macOS, and Linux, for x86, x64, Arm32, and Arm64.

Improvements

Security

CVE 2022-41032: .NET Elevation of Privilege Vulnerability

Microsoft is releasing this security advisory to provide information about a vulnerability in .NET 7.0.0-rc, .NET 6.0, .NET Core 3.1, and NuGet (NuGet.exe, NuGet.Commands, NuGet.CommandLine, NuGet.Protocol). This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.

A vulnerability exists in .NET 7.0.0-rc.1, .NET 6.0, .NET Core 3.1, and NuGet clients (NuGet.exe, NuGet.Commands, NuGet.CommandLine, NuGet.Protocol) where a malicious actor could cause a user to execute arbitrary code.

Visual Studio

See release notes for Visual Studio compatibility for .NET 6.0 and .NET Core 3.1.

.NET Core 3.1 End of life

.NET Core 3.1 will reach end of life on December 13, 2022, as described in .NET Releases and per .NET Release Policies. After that time, .NET Core 3.1 patch updates will no longer be provided. We recommend that you move any .NET Core 3.1 applications and environments to .NET 6.0. It’ll be an easy upgrade in most cases. The .NET Releases page is the best place to look for release lifecycle information. Knowing key dates helps you make informed decisions about when to upgrade or make other changes to your software and computing environment.

The post .NET October 2022 Updates – .NET 6.0.10 and .NET Core 3.1.30 appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/october-2022-updates/

Authentication for .NET MAUI Apps with MSAL.NET

We are pleased to announce official .NET MAUI support in Microsoft.Identity.Client 4.47.0 to easily add authentication into your apps. In this blog we will take a look at how to perform authentication in .NET MAUI apps to acquire the desired token.

Commonly authentication is done in three ways:

  • Basic – This is used when authentication is done for both personal and corporate accounts without using a broker (or Authenticator). For clarity, personal account mean Microsoft personal account such as Outlook, Hotmail etc.
  • With Broker – This is intended for corporate accounts where an extra layer of security is added by using Authenticator/Broker. This is useful for MFA and is required to comply with other security policies such as conditional access.
  • B2C – This is used when the end user is allowed to login using OAuth2 credentials such as Google, Facebook etc. This does not support broker.

    We provided one sample for each type Samples.

    All the samples use the standard Acquire Token Silent (ATS) + Acquire Token Interactive (ATI) flow i.e. app attempts to acquire token silently and if that fails, it invokes UI to acquire it interactively. The token is then used to retrieve data from the backend.

    The apps have a wrapper PCAWrapper(B2C) for MSAL client. The wrapper implements singleton pattern. When PCAWrapper is instantiated, it builds PublicClientApplication using the preconfigured values. It also provides logging support. It separates the UI code cleanly from UI by wrapping MSAL related error handling, constants, and other parameters.

    Platform specific code and configuration is in the corresponding subfolders inside Platforms folder. These sample apps can run as they are on iOS, Android, and Windows platforms. When you create your own App, you need to configure it in the Azure portal and replace the values. The instructions to register your App are How to register.

Authentication overview

Basic

The Basic App demonstrates the use of authentication for both personal and corporate accounts. This app shows the use of both embedded and system browsers. We strongly recommend using System browser as it stores the usernames and passwords for the user.
You can run the app as it is or create your own app and register as mentioned above. When user clicks the SignIn button, it will set the flag to use system or embedded browser in the PCAWrapper and call AcquireTokenSilentAsync.
PCAWrapper will attempt to acquire token silently for the first account and return the result. If UI is required, MSAL.NET throws MsalUiRequiredException.
If app gets the result, it is used to obtain information from MSGraph service.
App catches the exception and invokes AcquireTokenInteractiveAsync method of PCAWrapper. PCAWrapper will use the embedded flag and the parent window set by platform specific code to display the Ux. User can securely enter the username and the password. These are transparent to the app and go directly to the backend. Upon completion, it will return the authentication result to the app.

Broker

This app is very similar to the Basic app with the following changes:

  • The interactive UI is invoked exclusively using broker
  • It does not support embedded view functionality.

In case you are wondering why does AcquireTokenInteractive still calls WithParentActivityOrWindow if it is using broker, it is used as a backup mechanism if user has not installed the broker.

B2C

B2C app needs to be registered in the Azure portal in a different way. Registration is explained in this Tutorial.

The UI flow and the structure of the App is same as other apps with the following differences:

  • The app retrieves the claims from the ClaimsPrinciplal instead of calling the backend API.
  • The wrapper must pass the B2CAuthority during creation and while acquiring token silently.

MSAL.NET in Action

Want to learn more about MSAL.NET and .NET MAUI? Checkout my session from the recent .NET Conf: Focus on MAUI event:

Summary

Here are resources to get you started.

If you have any questions or concerns, please raise issues on the GitHub.

The post Authentication for .NET MAUI Apps with MSAL.NET appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/authentication-in-dotnet-maui-apps-msal/

Share this post

Search This Blog

What's New

How to build your own learning path using Open Source with Kunal Kushwaha [Podcast #200]

Image
Curriculum for the course How to build your own learning path using Open Source with Kunal Kushwaha [Podcast #200] Today Quincy Larson interviews Kunal Kushwaha. He's a software engineer and prolific computer science teacher on YouTube. He failed the JEE, the Indian Engineering Entrance Exam, TWICE. But he persevered. He did 4 years of university but attended ZERO lectures. Instead he built his own learning path by contributed to open source projects and using free learning resources including freeCodeCamp. He moved from Delhi to London on a UK Global Talent Visa. He works at Cast AI and is the founder of the WeMakeDevs community. We'll talk about: - How he teaches himself new skills, then teaches those skills through his YouTube channel - His day-to-day working remotely at startups - His role in building out cloud regions as a field CTO at Civo, a cloud native service provider - The Indian higher education system Support for this podcast is provided by a grant from Algo...

Labels

Programming Video Tutorials Coursera Video Tutorials Plurasight Programming Tutorials Udemy Tutorial C# Microsoft .Net Dot Net Udemy Tutorial, Plurasight Programming Tutorials, Coursera Video Tutorials, Programming Video Tutorials Asp.Net Core Asp.Net Programming AWS Azure GCP How To WordPress Migration C sharp AWS Project Git Commands FREE AWS Tutorial OldNewThings Git Tutorial Azure vs AWS vs GCP New in .Net javascript AI Google I/O 2025 Wordpress jquery Generative Video Git Git Squash Google Flow AI PHP SQL Veo 3 squash commit CSS Cloud Services React Tutorial With Live Project Source Code git rebase CPR Nummer Dropdown Reset Javascript Figma Figma Beginner Tutorial Geolocation Non-Programmer Content Python Free Course Think Simply Awesome Tutorial UI UX Live Project UI/UX Full Course Wireframing dotnet core runtime error html API Gateway AWS EKS vs Azure AKS All in one WP stuck C++ C++ Coroutines CPR Denmark ChatGPT Cloud Database Cloud DevOps Cloud Security Cloud Storage Contact Form 7 Dropdown Unselect Javascript E commerce Free AWS Terraform Project Training Git Commit Google Drive Files Google Drive Tips Http Error 500.30 Http Error 500.31 Interview Questions Learn Courutines C++ Microservices for Live Streaming PII Denmark Pub Sub SQL Server SSIS Terraform Course Free Terraform Tutorial Free USA E commerce strategies UpdraftPlus UpdraftPlus Manual Restore Website Optimization Strategies dropdown javascript select drop down javascript smarttube apk error 403 smarttube next 403 Error 413 Error 503 504 524 AI & ML AI Assistants AI Course CS50 AI in daily life AWS API Gateway AWS EBS AWS EC2 vs Azure VMs vs GCP Compute Engine AWS EFS AWS IAM AWS Lamda AWS RDS vs Azure SQL AWS Redshift AWS S3 AZ-104 AZ-104 Free Course AZ-104 Full Course AZ-104 Pass the exam Abstract Class C# Abstract Method Ajax Calender Control Ajax Control Toolkit All In One Extension Compatibility All In One WP Freeze All In One WP Migration All in one WP All-in-One WP Migration Android 15 Android TV Applying Theme html Asp.net core runtime Error Audio Auto Complete Azure AD Azure APIM Azure Administrator Certification Azure Blob Storage Azure Data Lake Azure Files Azure Function Azure Managed Disk Azure Synapse Base Class Child Class Best Grocery Price Big Data BigBasket vs Grofers Bing Homepage Quiz Blogger Import Blogger Post Import Blogger XML Import Bluetooth Connectivity Browser Detail Building Real-Time Web Applications Bulk Insert CI/CD CPR Address Update CPR Generator CPR Generator Denmark CS50 AI Course CS50 AI Python Course CS50 Artificial Intelligence Full Course CVR Centrale Virksomhedsregister Change Workspace TFS ChatGPT Essay Guide ChatGPT Usage ChatGPT vs Humans Cloud API Management Cloud CDN Cloud Computing Cloud Data Warehouse Cloud Event Streaming Cloud IAM Cloud Messaging Queue Cloud Monitoring and Logging Cloud Networking CloudFront Cloudflare Cloudwatch Compute Services Connect a Bluetooth Device to my PC site:microsoft.com Containers ControlService FAILED 1062 Corona Lockdown MP CosmosDB Covid19 Covid19 Bhopal Covid19 Home Delivery MP Covid19 Indore Covid19 Susner Covid19 Ujjain Cypress Javascript Cypress Javascript framework Cypress Javascript testing Cypress Javascript tutorial Cypress Javascript vs typescript DNS Danish CVR Data Analytics Data Analytics Course Free Data Engineering Data Structure Full Course Data Visualization Database Database Diagram Visualizer Davek Na Dodano Vrednost Dbdiagram export seeder Deep Learning Course Denmark Numbers Det Centrale Personregister Det Centrale Virksomhedsregister DevOps Device Compatibility Dictionary Dictionary in C# Digital Economy Disaster Recovery for Web Applications Disaster-Proof Infrastructure Dmart Frenchise Dmart Home Delibery Dmart Mumbai Address Dmart Pickup Points Doodle Jump Drive Images On Blog Drive Images On Website Driver Problems DropDown Dropbox Dropdown jquery DynamoDB ETL ETL Package Ecommerce Store using AWS & React Embed Drive Images Escape Sequences in c#.Net Event Hub Explicit Join Extract Facebook App Fake CVR Denmark Fake DDV Slovenia Fake VAT Number Fake Virk Number Faker Feature Toggle Find CPR Information Find a Word on Website Firestore Flappy Bird Game Form Selectors using jQuery Free React Portfolio Template FreeCodeCamp Frontend Best Practices for Millions of Users Full Text Index View G Drive Hosting GAN certification course GCP Cloud Data Lake GCP Filestore GCP Functions GCP IAM GCP Persistent Disk Gemini Git Checkout Google Adsense Setting Google Beam Google BigQuery Google Conversion Tracking Google Docs Advanced Tutorial Google Drive Clone Google Drive Clone Bot Google Drive Clone HTML CSS Google Drive Clone PHP Google Drive Clone React Google Drive Clone Tutorial Google Drive Clone VueJS Google Drive File Sharing Google Drive Images Google Drive Sharing Permissions Grocery Price Compare Online Grocery in Corona Grocery in Covid19 Grofers vs DMart vs Big basket HAXM installation HTML Storage HTML to PDF Javascript HTML2Canvas HTML5 HTML5 Append Data HTML5 Audio HTML5 Data Storage HTML5 Storage HTML5 Video Harvard University AI Course Header Sent Height Jquery High Availability in Live Streaming Platforms High-Concurrency Frontend Design High-Concurrency Web Applications How to Search for a Word on Mac Html2Canvas Black Background issue Http Error 413 Http Error 500.35 IIS INNER Join Image Gallery Blogger Image Gallery Blogger Picasa Image Gallery Blogger Template Image Gallery Blogger Template Free Implicit Join Indexing in SQL Instagram Clone React Instagram Clone Script Install NodeJS Ubuntu Internet Infrastructure Interview IoT IoT Core IoT Hub JS Game Tutorial Java Feature Toggle Javascript game tutorial JioCinema Case Study Keep Me Login Key Management Kinesis Learn Scrappy with a live project List Live Streaming Data Delivery Live Streaming Performance Optimization Load Load Balancer Looping Dictionary MTech First Semester Syllabus MTech Syllabus MVC Mac Mac Finder Shortcut Media Controller Media Group Attribute Microservices Architecture for Scalability Missing MySQL Extension Mobile Optimization Multiple Audio Sync Multiple Video Sync Mumbai Dmart List MySQL MySQL ERD Generator Next.js Beginner Tutorial Ngnix NodeJS NodeJS Ubuntu Commands Numpy OOPS Concepts OOPS in C# Object Oriented Programming Object Storage Outer Join PHP Installation Error PHP WordPress Installation Error Pandas Personligt identifikations nummer Pipedrive Pipedrive Quickbooks Integration Portfolio Website using React Project Astra PyTorch Quickbooks Quote Generator RGPV Syllabus Download Random SSN Generator ReCaptcha Dumbass React Feature Toggle Real-Time Video Processing Architecture Real-Time Video Processing Backend RegExp Regular Expression Reinstall Bluetooth Drivers Remember Me Remove NodeJS Ubuntu Renew DHCP Lease Reset IP Address Linux Reset IP Address Mac Reset IP Address Windows Reset Remote Connection Reset Remote Connection Failure Resize Textarea Restore Errors Restore Failed UpdraftPlus Route 53 SOS Phone SQL Indexed Tables SQL Joins SQL Seed generator SQS SSIS Package SSIS Tutorial SSN Generator for Paypal SSN Number SSN Number Generator SSN Validator Safari 8 Safari Video Delay SageMaker Scalable Backend for High Concurrency Scalable Cloud Infrastructure for Live Streaming Scalable Frontend Architectures Scalable Live Streaming Architecture Scrapy course for beginners Search A word Search for a Word in Google Docs Secret Management Serverless Service Bus Slovenian VAT Generator SmartTube Software Architect Interview Questions Software Architect Mock Interview Sparse Checkout Spotlight Mac Shortcut Stored Procedure Subtree Merge T-Mobile IMEI Check TFS TMobile IMEI check unlock Team Foundation Server Terraform Associate Certification Training Free Text Search Text color Textarea Resize Jquery Theme Top WordPress Plugins Transform Trim javascript Troubleshooting TypeScript Beginner Tutorial Ubuntu Unleash Feature Toggle Update Computer Name UpdraftPlus 500 UpdraftPlus Backup Restore UpdraftPlus Error 500 UpdraftPlus Error 504 UpdraftPlus Error 524 UpdraftPlus HTTP Error UpdraftPlus New Domain UpdraftPlus Restore Not Working UpdraftPlus Troubleshooting Upstream Reset Error Use Google Drive Images VAT Number Generator Verizon imei check Verizon imei check paid off Verizon imei check unlock Verizon imei check\ Version Control Vertex AI Video View Indexing SQL Views in SQL Virksomhedsregister Virtual friends Visual Studio 2013 WHERE Clause WHPX expo Web Security Web scraping full course with project Web3 What is Feature Toggle WordPress Backup Troubleshooting WordPress Backup UpdraftPlus WordPress Database Backup WordPress Error 503 WordPress Installation Error WordPress Migration UpdraftPlus Wordpress Restore Workspaces Commands Your ip has been banned Zero Click angle between two points bing homepage quiz answers bing homepage quiz answers today bing homepage quiz not working bing homepage quiz reddit bing homepage quiz today byod Verizon imei check chatgpt essay example chatgpt essay writer chatgpt essay writing check tmobile imei contact form 7 captcha contact form 7 captcha plugin contact form 7 recaptcha v3 cpr-nummer engelsk cpr-nummer liste cpr-nummer register cpr-nummer tjek dbdiagram dom load in javascript dotnet core hosting bundle dotnet failed to load dotnet runtime error get url in php how to search for a word on a page how to search for a word on a page windows ipconfig release is cypress javascript istio transport failure jQuery AutoComplete jQuery Input Selector jQuery Menu jQuery Options joins in mySql jquery selector jquery selectors jsPDF jsPDF images missing key key-value keypress event in jQuery kubernetes upstream error localStorage metro by t-mobile imei check nemid cpr-nummer react native expo setup react native on Windows react native setup recaptcha v3 contact form 7 recaptcha wordpress contact form 7 reset connection failure resize control jQuery response code 403 smarttube round number in javascript select sessionStorage smarttube 403 エラー smarttube apk smarttube beta smarttube download smarttube reddit smarttube unknown source error 403 smartube sos iphone top right sos on iphone 13 sos only iphone substr substr in javascript tmobile imei tmobile imei check paid off tmobile imei number total by Verizon imei check trim trim jquery turn off sos iphone turn off sos on iphone 11 unknown source error 403 unknown source error response code 403 smarttube upstream connect error url in php view hidden files mac finder zuegQmMdy8M ошибка 403 smarttube
  • ()
  • ()
Show more
an "open and free" initiative. Powered by Blogger.