Create an account


Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 20,194
» Latest member: mskdmsk
» Forum threads: 22,122
» Forum posts: 23,009

Full Statistics

Online Users
There are currently 660 online users.
» 0 Member(s) | 655 Guest(s)
Applebot, Baidu, Bing, Google, Yandex

 
  Buildbox Review And Plan Pricing Changes
Posted by: xSicKxBot - 03-03-2020, 05:45 AM - Forum: Game Development - No Replies

Buildbox Review And Plan Pricing Changes

Buildbox is a “no code” 2D/3D game engine for Windows and Mac, capable of targeting those platforms plus Steam and mobile.  Nearing the end of 2019 Buildbox announced a free edition with the release of BuildBox 3.

Since that update they have also announced that the Plus tier of pricing is back and cheaper than before.  Details of that announcement:

This new Buildbox Plus plan will also feature easy export to iOS, Android, and Windows. Plus, AdMob and ironSource SDK integration. Although there are no in-app purchase or custom ads options, it’s a huge upgrade from Buildbox Free, without breaking the bank. You’ll be able to make professional-looking 2D and 3D games for only $9.99 per month or $75.99 per year. All of our subscriptions are set at a 1-year commitment, which you’ll be able to later choose to opt-out of or renew.

Buildbox Plus

Buildbox Plus Plan ($9.99 per month or $75.99 per year)

  • Customizable Splash Screen
  • 5 World Limit
  • Unlimited Scenes
  • Export (iOS, Android, Windows)
  • Easy Monetization AdMob and ironSource SDKs

If you’ve been wanting to upgrade from Free, but not quite ready for Pro, this plan is a great option. With Buildbox Plus, you’ll have access to the latest version of our software, Buildbox 3, which includes all of our no-code and low-code game building features from smart assets to nodes. You can create up to five different immersive 2D and 3D worlds to challenge players. There’s also 100+ preloaded assets in Buildbox 3 to help you quickly build out the levels or scenes in your game. And of course, there’s an option to drag and drop your own assets into the software to use as well.

If you are interested in learning more about BuildBox, check out our hands-on review in the video below.

[embedded content]

GameDev News


<!–

–>



https://www.sickgaming.net/blog/2020/03/...g-changes/

Print this item

  ASP.NET Core Apps Observability
Posted by: xSicKxBot - 03-03-2020, 05:45 AM - Forum: C#, Visual Basic, & .Net Frameworks - No Replies

ASP.NET Core Apps Observability

Francisco Beltrao

Francisco

Thank you Sergey Kanzhelev for the support and review of this ASP.NET Core Apps Observability article.

Modern software development practices value quick and continuous updates, following processes that minimize the impact of software failures. As important as identifying bugs early, finding out if changes are improving business value are equally important. These practices can only work when a monitoring solution is in place. This article explores options for adding observability to .NET Core apps. They have been collected based on interactions with customers using .NET Core in different environments. We will be looking into OpenTelemetry and Application Insights SDKs to add observability to a sample distributed application.

Identifying software error and business impact require a monitoring solution with the ability to observe and report how the system and users behave. The collected data must provide the required information to analyze and identify a bad update. Answering questions such as:

  • Are we observing more errors than before?
  • Were there new error types?
  • Did the request duration unexpectedly increase compared to previous versions?
  • Has the throughput (req/sec) decreased?
  • Has the CPU and/or Memory usage increased?
  • Were there changes in our KPIs?
  • Is it selling less than before?
  • Did our visitor count decrease?

The impact of a bad system update can be minimized by combining the monitoring information with progressive deployment strategies. Such as canary, mirroring, rings, blue/green, etc.

Observability is Built on 3 Pillars:


  • Logging: collects information about events happening in the system. Helping the team analyze unexpected application behavior. Searching through the logs of suspect services can provide the necessary hint to identify the problem root cause. Such as: service throwing out of memory exceptions and app configuration not reflecting expected values. As well as calls to external service with incorrect address, calls to external service returns with unexpected results, and incoming requests with unexpected input.

  • Tracing: collects information to create an end-to-end view of how transactions are executed in a distributed system. A trace is like a stack trace spanning multiple applications. Once a problem has been recognized, traces are a good starting point in identifying the source in distributed operations. Like calls from service A to B are taking longer than normal, service payment calls are failing, etc.

  • Metrics: provide a real-time indication of how the system is running. It can be leveraged to build alerts, allowing proactive reactance to unexpected values. As opposed to logs and traces, the amount of data collected using metrics remains constant as the system load increases. Application problems are often first detected through abnormal metric values. Such as CPU usage being higher than before, payment error count spiking, and queued item count keeps growing.

Adding Observability to a .NET Core Application


There are many ways to add observability aspects to an application. Dapr for example, is a runtime to build distributed applications, transparently adding distribute tracing. Another example is through the usage of service meshes in Kubernetes (Istio, Linkerd).

Built-in and transparent tracing are typically covering basic scenarios and answering generic questions, such as observed request duration or CPU trends. Other questions, such as custom KPIs or user behavior, require adding instrumentation to your code.

To illustrate how observability can be added to a .NET Core application we will be using the following asynchronous distributed transaction example:

Sample Observability Application Overview

  1. Main Api receives a request from a “source”.
  2. Main Api enriches the request body with current day, obtained from Time Api.
  3. Main Api enqueues enriched request to a RabbitMQ queue for asynchronous processing.
  4. RabbitMQProcessor dequeues request.
  5. RabbitMQProcessor, as part of the request processing, calls Time Api to get dbtime.
  6. Time Api calls SQL Server to get current time.

To run the sample application locally (including dependencies and observability tools), follow this guide. The article will walkthrough adding each observability pillar (logging, tracing, metrics) into the sample asynchronous distributed transaction.

Note: for information on bootstrapping OpenTelemetry or Application Insights SDK please refer to the documentation: OpenTelemetry and Application Insights.

Logging was redesigned in .NET Core, bringing an integrated and extensible API. Built-in and external logging providers allow the collection of logs in multiple formats and targets. When deciding a logging platform, consider the following features:

  • Centralized: allowing the collection/storage of all system logs in a central location.
  • Structured logging: allows you to add searchable metadata to logs.
  • Searchable: allows searching by multiple criteria (app version, date, category, level, text, metadata, etc.)
  • Configurable: allows changing verbosity without code changes (based on log level and/or scope).
  • Integrated: integrated into tracing, facilitating analysis of traces and logs in the same tool.

The sample application uses the ILogger interface for logging. The snippet below demonstrates an example of structure logging. Which captures events using message template and generates information that is human and machine readable.

var result = await repository.GetTimeFromSqlAsync();
logger.LogInformation("{operation} result is {result}", nameof(repository.GetTimeFromSqlAsync), result);

When using a logging backend that understands structured logs, such as Application Insights, search instances of the example log items where “operation” is equal to “GetTimeForSqlAsync”:

Observability Application Insights structured log search

Tracing collects required information to enable the observation of a transaction as it “walks” through the system. It must be implemented in every service taking part of the transaction to be effective.

.NET Core defines a common way in which traces can be defined through the System.Diagnostics.Activity class. Through the usage of this class, dependency implementations (i.e. HTTP, SQL, Azure, EF Core, StackExchange.Redis, etc.) can create traces in a neutral way, independent of the monitoring tool used.

It is important to notice that those activities will not be available automatically in a monitoring system. Publishing them is responsibility of the monitoring SDK used. Typically, SDKs have built-in collectors to common activities, transferring them to the destination platform automatically.

In the last quarter of 2019 OpenTelemetry was announced, promising to standardize telemetry instrumentation and collection across languages and tools. Before OpenTelemetry (or its predecessors OpenCensus and OpenTracing), adding observability would often mean adding proprietary SDKs (in)directly to the code base.

The OpenTelemetry .NET SDK is currently in alpha. The Azure Monitor Application Insights team is investing in OpenTelemetry as a next step of Azure Monitor SDKs evolution.

Quick Intro on Tracing with OpenTelemetry


In a nutshell, OpenTelemetry collects traces using spans. A span delimits an operation (HTTP request processing, dependency call). It contains start and end time (among other properties). It has a unique identifier (SpanId, 16 characters, 8 bytes) and a trace identifier (TraceId, 32 characters, 16 bytes). The trace identifier is used to correlate all spans for a given transaction. A span can contain children spans (as calls in a stack trace). If you are familiar with Azure Application Insights, the following table might be helpful to understand OpenTelemetry terms:

Application Insights OpenTelemetry
Request, PageView Span with span.kind = server
Dependency Span with span.kind = client
Id of Request and Dependency SpanId
Operation_Id TraceId
Operation_ParentId ParentId

Adding Tracing to a .NET Core Application


As mentioned previously, an SDK is needed in order to collect and publish distributed tracing in a .NET Core application. Application Insights SDK sends traces to its centralized database while OpenTelemetry supports multiple exporters (including Application Insights). When configured to use OpenTelemetry, the sample application sends traces to a Jaeger instance.

In the asynchronous distributed transaction scenario, track the following operations:

HTTP Requests between microservices


HTTP correlation propagation is part of both SDKs. With the only requirement of setting activity id format to W3C at application start:

public static void Main(string[] args)
{ Activity.DefaultIdFormat = ActivityIdFormat.W3C; Activity.ForceDefaultIdFormat = true; // rest is omitted
}

Dependency calls (SQL, RabbitMQ)


Unlike Application Insights SDK, OpenTelemetry (in early alpha) does not yet have support for SQL Server trace collection. A simple way to track dependencies with OpenTelemetry is to wrap the call like the following example:

var span = this.tracer.StartSpan("My external dependency", SpanKind.Client);
try
{ return CallToMyDependency();
}
catch (Exception ex)
{ span.Status = Status.Internal.WithDescription(ex.ToString()); throw;
}
finally
{ span.End();
}

Asynchronous Processing / Queued Items


There is no built-in trace correlation between publishing and processing a RabbitMQ message. Custom code is required, creating the publishing activity (optional) and referencing the parent trace during the item dequeuing.

We covered previously creating traces by wrapping the dependency call. This option allows expressing additional semantic information such as links between spans for batching and other fan-in patterns. Another option is to use System.Diagnostics.Activity, which is a SDK independent way to create traces. This option has limited set of features, however, is built-in into .NET.

These two options work well with each other and .NET team is working on making .NET Activity and OpenTelemetry spans integration better.

Creating an Operation Trace


The snippet below demonstrates how the publish operation trace can be created. It adds the trace information to the enqueued message header, which will later be used to link both operations.

Activity activity = null;
if (diagnosticSource.IsEnabled("Sample.RabbitMQ"))
{ // Generates the Publishing to RabbitMQ trace // Only generated if there is an actual listener activity = new Activity("Publish to RabbitMQ"); diagnosticSource.StartActivity(activity, null);
} // Add current activity identifier to the RabbitMQ message
basicProperties.Headers.Add("traceparent", Activity.Current.Id); channel.BasicPublish(...) if (activity != null)
{ // Signal the end of the activity diagnosticSource.StopActivity(activity, null);
}

A collector, which subscribes to target activities, is required to publish the trace to a backend. Implementing a collector is not a straightforward task and is intended to be used by SDK implementors. The snippet below is taken from the sample application, where a simplified and not production-ready, RabbitMQ collector for OpenTelemetry was implemented:

public class RabbitMQListener : ListenerHandler
{ public override void OnStartActivity(Activity activity, object payload) { var span = this.Tracer.StartSpanFromActivity(activity.OperationName, activity); foreach (var kv in activity.Tags) span.SetAttribute(kv.Key, kv.Value); } public override void OnStopActivity(Activity activity, object payload) { var span = this.Tracer.CurrentSpan; span.End(); if (span is IDisposable disposableSpan) { disposableSpan.Dispose(); } }
} var subscriber = new DiagnosticSourceSubscriber(new RabbitMQListener("Sample.RabbitMQ", tracer), DefaultFilter);
subscriber.Subscribe();

For more information on how to build collectors, please refer to OpenTelemetry/Application Insights built-in collectors as well as this user guide.

Activity


As mentioned, HTTP requests in ASP.NET have built-in activity correlation injected by the framework. That is not the case for the RabbitMQ consumer. In order to continue the distributed transaction, we must create the span referencing the parent trace. This was injected into the message by the publisher. The snippet below uses an extension method to build the activity:

public static Activity ExtractActivity(this BasicDeliverEventArgs source, string name)
{ var activity = new Activity(name ?? Constants.RabbitMQMessageActivityName); if (source.BasicProperties.Headers.TryGetValue("traceparent", out var rawTraceParent) && rawTraceParent is byte[] binRawTraceParent) { activity.SetParentId(Encoding.UTF8.GetString(binRawTraceParent)); } return activity;
}

The activity is then used to create the concrete trace. In OpenTelemetry the code looks like this:

// Note: OpenTelemetry requires the activity to be started
activity.Start();
tracer.StartActiveSpanFromActivity(activity.OperationName, activity, SpanKind.Consumer, out span);

The snippet below creates the telemetry using Application Insights SDK:

// Note: Application Insights will start the activity
var operation = telemetryClient.StartOperation<Dependencytelemetry>(activity);

The usage of activities gives flexibility in terms of SDK used, as it is a neutral way to create traces. Once instrumented the distributed end-to-end transaction in Jaeger looks like this:

Distributed Trace in Jaeger

The same transaction in Application Insights looks like this:

Distributed Trace in Application Insights

When using single monitoring solution for traces and logs, such as Application Insights, the logs become part of the end-to-end transaction:

Observability Application Insights: traces and logs

Metrics


There are common metrics applicable to most applications, like CPU usage, allocated memory, and request time. As well as business specific like visitors, page views, sold items, and sent items. Exposing business metrics in a .NET Core application typically requires using an SDK.

Collection metrics in .NET Core happens through 3rd-party SDKs which aggregate values locally, before sending to a backend. Most libraries have built-in collection for common application metrics. However, business specific metrics need to be built in the application logic, since they are created based on events that occur in the application domain.

In the sample application we are using metric counters for: enqueued items, successfully processed items and unsuccessfully processed items. The implementation in both SDKs is similar, requiring setting up a metric, dimensions and finally, tracking the counter values.

OpenTelemetry supports multiple exporters and we will be using Prometheus exporter. Prometheus combined with Grafana, for visualization and alerting, is a popular choice for open source monitoring. Application Insights supports metrics as any other instrumentation type, requiring no additional SDK or tool.

Defining a metric and tracking values using OpenTelemetry looks like this:

// Create counter
var simpleProcessor = new UngroupedBatcher(exporter, TimeSpan.FromSeconds(5));
var meterFactory = MeterFactory.Create(simpleProcessor);
var meter = meterFactory.GetMeter("Sample App");
var enqueuedCounter = meter.CreateInt64Counter("Enqueued Item"); // Incrementing counter for specific source
var labelSet = new Dictionary<string, string>() { { "Source", source } }; enqueuedCounter.Add(context, 1L, this.meter.GetLabelSet(labelSet));

The visualization with Grafana is illustrated in the image below:

Metrics with Grafana/Prometheus

The snippet below demonstrates how to define a metric and track its values using the Application Insights SDK:

// create counter
var enqueuedCounter = telemetryClient.GetMetric(new MetricIdentifier("Sample App", "Enqueued Item", "Source")); // Incrementing counter for specific source
enqueuedCounter.TrackValue(metricValue, source);

The visualization in Application Insights is illustrated below:

Observability Application Insights custom metrics

Troubleshooting


Now that we have added the 3 observability pillars to a sample application, let’s use them to troubleshoot a scenario where the application is experiencing problems.

The first signals of an application problems are usually detected by anomalies in metrics. The snapshot below illustrates such a scenario, where the number of failed processed items spikes (red line).

Metrics indicating failure

A possible next step is to look for hints in distributed traces. This should help us identify where the problem is happening. In Jaeger, searching with the tag “error=true” filters the results, listing transaction where at least one error happened.

Jaeger traces with error

In Application Insights, we can search for errors in end-to-end transactions by looking in the Failures/Dependencies or Failures/Exceptions.

Search traces with error in Application Insights

Application Insights error details in trace

The problem seems to be related to the Sample.RabbitMQProcessor service. Logs of this service can help us identify the problem. When using Application Insights logging provider, log and traces are correlated, being displayed in the same view:

Observability Application Insights errors and logs

Looking at the details, we discover that the exception InvalidEventNameException is being raised. Since we are logging the message payload, details of the failed message are available in the monitoring tool. It appears the message being processed has the eventName value of “error”, which is causing the exception to be raised.

When introducing observability into a .NET Core application, two decisions need to be taken:

  • The backend(s) where collected data will be stored and analyzed.
  • How instrumentation will be added to the application code.

Depending on your organization, the monitoring tool might already be selected. However, if you do have the chance to make this decision, consider the following:

  • Centralized: having all data in a single place makes it simple to correlate information. For example, logs, distribute traces and CPU usage. If they are split, more effort is required.
  • Manageability: how simple is to manage the monitoring tool? Is it hosted in the same machines/VMs where your application is running? In that case, shared infrastructure unavailability might leave you in the dark. When monitoring is not working, alerts won’t be triggered and metrics won’t be collected.
  • Vendor Locking: if you need to run the same application in different environments (i.e. on premises and cloud), choosing a solution that can run everywhere might be favored.
  • Application Dependencies: parts of your infrastructure or tooling that might require you to use a specific monitoring vendor. For example, Kubernetes scaling and/or progressive deployment based on Prometheus metrics.

Once the monitoring tool has been defined, choosing an SDK is limited to two options. Using the one provided by the monitoring vendor or a library capable of integrating to multiple backends.

Vendor SDKs typically yield little/no surprises regarding stability and functionality. That is the case with Application Insights, for example. It is stable with a rich feature set, including live stream, which is a feature-specific to this specific monitoring system.

OpenTelemetry


Using OpenTelemetry SDK gives you more flexibility, offering integration with multiple monitoring backends. You can even mesh them: a centralized monitoring solution for all collected data, while having a subset sent to Prometheus to fulfill a requirement. If you are unsure whether OpenTelemetry is a good fit for your project, consider the following:

  • When is your project going to production? The SDK is currently in alpha, meaning breaking changes and non-production-ready is expected.
  • Are you using vendor specific features not yet available through the OpenTelemetry SDK (specific collectors, etc.)?
  • Is your monitoring backend supported by the SDK?
  • Are you replacing a vendor SDK with OpenTelemetry? Plan some time to compare both SDKs, OpenTelemetry exporters might have differences compared to how the vendor SDK collects data.

Source code with the sample application can be found in this GitHub Repository.

Francisco Beltrao



https://www.sickgaming.net/blog/2020/02/...rvability/

Print this item

  AppleInsider - Mario Kart Tour for iOS to gain multiplayer mode on March 8
Posted by: xSicKxBot - 03-03-2020, 05:45 AM - Forum: Apples Mac and OS X - No Replies

Mario Kart Tour for iOS to gain multiplayer mode on March 8

 

Following a months-long closed beta period, Nintendo on Monday announced a long-awaited multiplayer mode will be added to popular iOS racing game Mario Kart Tour on Sunday.

According to a tweet posted to Nintendo’s official Mario Kart Tour account, the upcoming mode supports up to eight simultaneous players including “in-game friends, nearby, or around the world.”

Nintendo breaks down three multiplayer game options in a separate tweet. Players can challenge friends or other nearby players to games with custom rules. A second option, called “Standard Races,” pits players against other other gamers around the world in races with two sets of rules that change daily. Finally, “Gold Races” are restricted to Mario Kart Tour Gold Pass subscribers and allow users to compete in races with four sets of rules that change daily. Rank, or “grades,” are applied to Standard and Gold Races based on performance.

Testing of the multiplayer system commenced in a closed beta round in December and was followed by public testing in January.

Multiplayer competition has been a defining feature of the Mario Kart franchise since its launch on the Super Nintendo Entertainment System in 1992 and its absence on mobile was viewed by some as a hindrance to adoption. Currently, players are limited to racing against AI bots, with in-game incentives like character unlocks and parts pushing users to continue play.

The feature is due to go live on March 8 at 8 p.m. Pacific.

Mario Kart Tour launched in September after multiple delays, with first week performance estimated at 90 million downloads. Android accounted for some 53.5 million downloads, while Apple’s iOS notched 36.5 million downloads, according to Sensor Tower.



https://www.sickgaming.net/blog/2020/03/...n-march-8/

Print this item

  Microsoft - Microsoft Power Automate to add robotic process automation in April
Posted by: xSicKxBot - 03-03-2020, 05:45 AM - Forum: Windows - No Replies

Microsoft Power Automate to add robotic process automation in April

Woman sits at desk using laptop and second monitor.

In case you missed our announcement at Ignite 2019, we launched the preview of UI flows, the new robotic process automation (RPA) capability in Microsoft Power Automate.

Today we’re announcing that UI flows will be generally available worldwide on April 2.

Power Automate already helps hundreds of thousands of organizations automate millions of processes every day. With the addition of RPA, Power Automate will help these organizations to also automate their legacy apps and manual processes through UI-based automation. The key Power Automate capabilities we are announcing today include RPA general availability for attended and unattended scenarios, along with a flexible business model to support any business scenario.

Automate legacy and modern apps on one platform


Power Automate—the most comprehensive cloud-based automation platform—unlocks analog data with AI, automates UI with RPA, and automates cloud applications and databases with built-in connectors. This comprehensive set of capabilities represents the next generation of automation and will be accessible to everyone in an organization including coders and non-coders alike through a low code development environment and uniquely affordable licensing.

With Power Automate, we’re putting automation into the hands of all workers so that everyone can automate repetitive tasks across legacy and modern applications, and simplify how they work in a scalable, more secure way.

Example of dropdown menu for inputs in Power Automate.

Completing the low-code automation portfolio with robotic process automation


Across the software industry, numerous technology solutions help people do their job. But the widespread adoption of technology also means that businesses can end up with disconnected solutions that require them to patch together processes across siloed applications. In the past, joining disparate systems together was difficult or too costly because it required professional developers, especially when some of the data could still be on paper or locked in decades-old Windows or web applications.

Power Automate provides a single solution for end-to-end automation that spans on-premises systems and the cloud. This approach addresses three primary areas:

  • Intelligent understanding of data: Structured and unstructured data from paper-based invoices to images can be easily understood and integrated with other critical business applications. With AI-driven capabilities like forms processing in AI Builder, end users can parse data from analog sources.
  • Connecting to over 300 modern apps and services: It is easy to work with information stored in the cloud or on-premises apps and databases. We offer native connectivity to common apps or a company’s APIs with over 300 connectors out-of-the-box and a no-code way to connect to any internal services.
  • RPA connects to enterprise applications without APIs: Some applications are too old or expensive to support API connectivity. With UI flows, end users can automate their work in these applications by recording manual tasks such as mouse clicks, keyboard inputs, and data entry, and then automate the replay of these steps to integrate with more complex process automations.

The ability to use AI, API connectors, and RPA make Power Automate the most comprehensive automation platform available in the cloud today.

Ingram Micro, one of the world’s largest distributors and IT leaders in technology products, is using Power Automate to improve and automate workflows spanning multiple systems and functions such as new account creation and onboarding, management of customer credit lines, transportation optimization, event management, and integration of external partner data into their internal processes and workflows.

“With Power Automate, we’ve been able to improve the customer and internal associate experience, and at a much faster rate than before, with 75% of Power Automate projects completed in less than 30 days. We are excited to see that Microsoft is investing and delivering in the area of RPA as Power Automate has been an important factor in modernizing our business and we look forward to exploring opportunities with the new RPA capabilities coming this spring.” – Jim Annes, Vice President of US Business Operations and Transformation, Ingram Micro

Democratizing automation for all organizations with attended and unattended RPA


Power Automate offers both attended and unattended RPA. This means you can record and playback actions with or without human interaction (attended and unattended, respectively). And, just as we democratized access to app development with Microsoft Power Apps, and BI with Microsoft Power BI, we are democratizing RPA with Power Automate.

RPA capabilities will be licensed as part of two new Power Automate offers that provide organizations with the flexibility to address a range of attended and unattended scenarios. UI flow authoring and bot orchestration and management are included in both offers, with no add-ons required.*

Attended RPA

The per user with attended RPA plan provides the ability for users to run an attended RPA bot on their workstation. Priced at $40 per user/month, the plan is optimized to span legacy and modern applications by enabling users to combine UI and API-based automation. Additionally, attended RPA includes access to several AI Builder capabilities like forms processing, object detection, prediction, text classification and recognition, and more.

Unattended RPA

An unattended RPA add-on will be available for the new per-user plan with attended RPA, as well as the existing per-flow plan. Each unattended RPA bot is priced at $150 per month, and organizations can choose to scale the number of bots running autonomously as needed.

Both the Power Automate per-user plan with attended RPA and the Power Automate unattended RPA add-on will be available early April. Visit our pricing page to learn more.

Get started now!


Watch an overview of RPA in Power Automate and visit the UI flows web page to learn more about getting started with the RPA preview by clicking ‘Try preview‘. Be sure to stay tuned to the blog for updates like these and future updates to Power Automate and the Power Platform.

*All pricing information provided is intended solely to be a non-binding estimate as of the date this guidance is provided. It does not constitute an offer by Microsoft. The actual pricing will be reflected on the EA Price List, when this offering becomes available. 



https://www.sickgaming.net/blog/2020/03/...-in-april/

Print this item

  Fedora - Demonstrating PERL with Tic-Tac-Toe, Part 2
Posted by: xSicKxBot - 03-03-2020, 05:45 AM - Forum: Linux, FreeBSD, and Unix types - No Replies

Demonstrating PERL with Tic-Tac-Toe, Part 2

The astute observer may have noticed that PERL is misspelled. In a March 1, 1999 interview with Linux Journal, Larry Wall explained that he originally intended to include the letter “A” from the word “And” in the title “Practical Extraction And Report Language” such that the acronym would correctly spell the word PEARL. However, before he released PERL, Larry heard that another programming language had already taken that name. To resolve the name collision, he dropped the “A”. The acronym is still valid because title case and acronyms allow articles, short prepositions and conjunctions to be omitted (compare for example the acronym LASER).

Name collisions happen when distinct commands or variables with the same name are merged into a single namespace. Because Unix commands share a common namespace, two commands cannot have the same name.

The same problem exists for the names of global variables and subroutines within programs written in languages like PERL. This is an especially significant problem when programmers try to collaborate on large software projects or otherwise incorporate code written by other programmers into their own code base.

Starting with version 5, PERL supports packages. Packages allow PERL code to be modularized with unique namespaces so that the global variables and functions of the modularized code will not collide with the variables and functions of another script or module.

Shortly after its release, PERL5 software developers all over the world began writing software modules to extend PERL’s core functionality. Because many of those developers (currently about 15,000) have made their work freely available on the Comprehensive Perl Archive Network (CPAN), you can easily extend the functionality of PERL on your PC so that you can perform very advanced and complex tasks with just a few commands.

The remainder of this article builds on the previous article in this series by demonstrating how to install, use and create PERL modules on Fedora Linux.

An example PERL program


See the example program from the previous article below, with a few lines of code added to import and use some modules named chip1, chip2 and chip3. It is written in such a way that the program should work even if the chip modules cannot be found. Future articles in this series will build on the below script by adding the additional modules named chip2 and chip3.

You should be able to copy and paste the below code into a plain text file and use the same one-liner that was provided in the previous article to strip the leading numbers.

00 #!/usr/bin/perl
01 02 use strict;
03 use warnings;
04 05 use feature 'state';
06 07 use constant MARKS=>[ 'X', 'O' ];
08 use constant HAL9K=>'O';
09 use constant BOARD=>'
10 ┌───┬───┬───┐
11 │ 1 │ 2 │ 3 │
12 ├───┼───┼───┤
13 │ 4 │ 5 │ 6 │
14 ├───┼───┼───┤
15 │ 7 │ 8 │ 9 │
16 └───┴───┴───┘
17 ';
18 19 use lib 'hal';
20 use if -e 'hal/chip1.pm', 'chip1';
21 use if -e 'hal/chip2.pm', 'chip2';
22 use if -e 'hal/chip3.pm', 'chip3';
23 24 sub get_mark {
25 my $game = shift;
26 my @nums = $game =~ /[1-9]/g;
27 my $indx = (@nums+1) % 2;
28 29 return MARKS->[$indx];
30 }
31 32 sub put_mark {
33 my $game = shift;
34 my $mark = shift;
35 my $move = shift;
36 37 $game =~ s/$move/$mark/;
38 39 return $game;
40 }
41 42 sub get_move {
43 return (<> =~ /^[1-9]$/) ? $& : '0';
44 }
45 46 PROMPT: {
47 no strict;
48 no warnings;
49 50 state $game = BOARD;
51 52 my $mark;
53 my $move;
54 55 print $game;
56 57 if (defined &get_victor) {
58 my $victor = get_victor $game, MARKS;
59 if (defined $victor) {
60 print "$victor wins!\n";
61 complain if ($victor ne HAL9K);
62 last PROMPT;
63 }
64 }
65 66 last PROMPT if ($game !~ /[1-9]/);
67 68 $mark = get_mark $game;
69 print "$mark\'s move?: ";
70 71 if ($mark eq HAL9K and defined &hal_move) {
72 $move = hal_move $game, $mark, MARKS;
73 print "$move\n";
74 } else {
75 $move = get_move;
76 }
77 $game = put_mark $game, $mark, $move;
78 79 redo PROMPT;
80 }

Once you have the above code downloaded and working, create a subdirectory named hal under the same directory that you put the above program. Then copy and paste the below code into a plain text file and use the same procedure to strip the leading numbers. Name the version without the line numbers chip1.pm and move it into the hal subdirectory.

00 # basic operations chip
01 02 package chip1;
03 04 use strict;
05 use warnings;
06 07 use constant MAGIC=>'
08 ┌───┬───┬───┐
09 │ 2 │ 9 │ 4 │
10 ├───┼───┼───┤
11 │ 7 │ 5 │ 3 │
12 ├───┼───┼───┤
13 │ 6 │ 1 │ 8 │
14 └───┴───┴───┘
15 ';
16 17 use List::Util 'sum';
18 use Algorithm::Combinatorics 'combinations';
19 20 sub get_moves {
21 my $game = shift;
22 my $mark = shift;
23 my @nums;
24 25 while ($game =~ /$mark/g) {
26 push @nums, substr(MAGIC, $-[0], 1);
27 }
28 29 return @nums;
30 }
31 32 sub get_victor {
33 my $game = shift;
34 my $marks = shift;
35 my $victor;
36 37 TEST: for (@$marks) {
38 my $mark = $_;
39 my @nums = get_moves $game, $mark;
40 41 next unless @nums >= 3;
42 for (combinations(\@nums, 3)) {
43 my @comb = @$_;
44 if (sum(@comb) == 15) {
45 $victor = $mark;
46 last TEST;
47 }
48 }
49 }
50 51 return $victor;
52 }
53 54 sub hal_move {
55 my $game = shift;
56 my @nums = $game =~ /[1-9]/g;
57 my $rand = int rand @nums;
58 59 return $nums[$rand];
60 }
61 62 sub complain {
63 print "Daisy, Daisy, give me your answer do.\n";
64 }
65 66 sub import {
67 no strict;
68 no warnings;
69 70 my $p = __PACKAGE__;
71 my $c = caller;
72 73 *{ $c . '::get_victor' } = \&{ $p . '::get_victor' };
74 *{ $c . '::hal_move' } = \&{ $p . '::hal_move' };
75 *{ $c . '::complain' } = \&{ $p . '::complain' };
76 }
77 78 1;

The first thing that you will probably notice when you try to run the program with chip1.pm in place is an error message like the following (emphasis added):

$ Can't locate Algorithm/Combinatorics.pm in @INC (you may need to install the Algorithm::Combinatorics module) (@INC contains: hal /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at hal/chip1.pm line 17.
BEGIN failed--compilation aborted at hal/chip1.pm line 17.
Compilation failed in require at /usr/share/perl5/if.pm line 15.
BEGIN failed--compilation aborted at game line 18.

When you see an error like the one above, just use the dnf command to search Fedora’s package repository for the name of the system package that provides the needed PERL module as shown below. Note that the module name and path from the above error message have been prefixed with */ and then surrounded with single quotes.

$ dnf provides '*/Algorithm/Combinatorics.pm'
...
perl-Algorithm-Combinatorics-0.27-17.fc31.x86_64 : Efficient generation of combinatorial sequences
Repo : fedora
Matched from:
Filename : /usr/lib64/perl5/vendor_perl/Algorithm/Combinatorics.pm

Hopefully it will find the needed package which you can then install:

$ sudo dnf install perl-Algorithm-Combinatorics

Once you have all the needed modules installed, the program should work.

How it works


This example is admittedly quite contrived. Nothing about Tic-Tac-Toe is complex enough to need a CPAN module. To demonstrate installing and using a non-standard module, the above program uses the combinations library routine from the Algorithm::Combinatorics module to generate a list of the possible combinations of three numbers from the provided set. Because the board numbers have been mapped to a 3×3 magic square, any set of three numbers that sum to 15 will be aligned on a column, row or diagonal and will therefore be a winning combination.

Modules are imported into a program with the use and require commands. The only difference between them is that the use command automatically calls the import subroutine (if one exists) in the module being imported. The require command does not automatically call any subroutines.

Modules are just files with a .pm extension that contain PERL subroutines and variables. They begin with the package command and end with 1;. But otherwise, they look like any other PERL script. The file name should match the package name. Package and file names are case sensitive.

Beware that when you are reading online documentation about PERL modules, the documentation often veers off into topics about classes. Classes are built on modules, but a simple module does not have to adhere to all the restrictions that apply to classes. When you start seeing words like method, inheritance and polymorphism, you are reading about classes, not modules.

There are two subroutine names that are reserved for special use in modules. They are import and unimport and they are called by the use and no directives respectively.

The purpose of the import and unimport subroutines is typically to alias and unalias the module’s subroutines in and out of the calling namespace respectively. For example, line 17 of chip1.pm shows the sum subroutine being imported from the List::Util module.

The constant module, as used on lines 07 of chip1.pm, is also altering the caller’s namespace (chip1), but rather than importing a predefined subroutine, it is creating a special type of variable.

All the identifiers immediately following the use keywords in the above examples are modules. On my system, many of them can be found under the /usr/share/perl5 directory.

Notice that the above error message states “@INC contains:” followed by a list of directories. INC is a special PERL variable that lists, in order, the directories from which modules should be loaded. The first file found with a matching name will be used.

As demonstrated on line 19 of the Tic-Tac-Toe game, the lib module can be used to update the list of directories in the INC variable.

The chip1 module above provides an example of a very simple import subroutine. In most cases you will want to use the import subroutine that is provided by the Exporter module rather than implementing your own. A custom import subroutine is used in the above example to demonstrate the basics of what it does. Also, the custom implementation makes it easy to override the subroutine definitions in later examples.

The import subroutine shown above reveals some of the hidden magic that makes packages work. All variables that are both globally scoped (that is, created outside of any pair of curly brackets) and dynamically scoped (that is, not prefixed with the keywords my or state) and all global subroutines are automatically prefixed with a package name. The default package name if no package command has been issued is main.

By default, the current package is assumed when an unqualified variable or subroutine is used. When get_move is called from the PROMPT block in the above example, main::get_move is assumed because the PROMPT block exists in the main package. Likewise, when get_moves is called from the get_victor subroutine, chip1::get_moves is assumed because get_victor exists in the chip1 package.

If you want to access a variable or subroutine that exists in a different package, you either have to use its fully qualified name or create a local alias that refers to the desired subroutine.

The import subroutine shown above demonstrates how to create subroutine aliases that refer to subroutines in other packages. On lines 73-75, the fully qualified names for the subroutines are being constructed and then the symbol table name for the subroutine in the calling namespace (the package in which the use statement is being executed) is being assigned the reference of the subroutine in the local package (the package in which the import subroutine is defined).

Notice that subroutines, like variables, have sigils. The sigil for subroutines is the ampersand symbol (&). In most contexts, the sigil for subroutines is optional. When working with references (as shown on lines 73-75 of the import subroutine) and when checking if a subroutine is defined (as shown on lines 57 and 71 of the PROMPT block), the sigil for subroutines is required.

The import subroutine shown above is just a bare minimum example. There is a lot that it doesn’t do. In particular, a proper import subroutine would not automatically import any subroutines or variables. Normally, the user would be expected to provide a list of the routines to be imported on the use line and that list is available to the import subroutine in the @_ array.

Final notes


Lines 25-27 of chip1.pm provide a good example of PERL’s dense notation problem. With just a couple of lines code, the board numbers on which a given mark has been placed can be determined. But does the statement within the conditional clause of the while loop perform the search from the beginning of the game variable on each iteration? Or does it continue from where it left off each time? PERL correctly guesses that I want it to provide the position ($-[0]) of the next mark, if any exits, on each iteration. But exactly what it will do can be very difficult to determine just by looking at the code.

The last things of note in the above examples are the strict and warnings directives. They enable extra compile-time and runtime debugging messages respectively. Many PERL programmers recommend always including these directives so that programming errors are more likely to be spotted. The downside of having them enabled is that some complex code will sometimes cause the debugger to erroneously generate unwanted output. Consequently, the strict and/or warnings directives may need to be disabled in some code blocks to get your program to run correctly as demonstrated on lines 67 and 68 of the example chip1 module. The strict and warnings directives have nothing to do with the program and they can be omitted. Their only purpose is to provide feedback to the program developer.



https://www.sickgaming.net/blog/2020/03/...oe-part-2/

Print this item

  News - Japan Picks Its Favourite Final Fantasy Game And Character
Posted by: xSicKxBot - 03-03-2020, 05:44 AM - Forum: Nintendo Discussion - No Replies

Japan Picks Its Favourite Final Fantasy Game And Character

Despite the usual amalgam if inspirations in its universe, FFX seems like the arguably most “Japanese” among the flagships (particularly Yuna whose summoner days seem to be very miko-inspired), so this may well factor in. Personally, I enjoyed the game on par with VII but neither was ever among my top FF favourites. What’s truly odd to see, though, is the first Dissidia higher up than 012, considering that the latter was a rare followup practically rendering the original obsolete – on top of the numerous buildups and improvements, it was a prequel story and featured the entire first game storyline unlockable upon completion and merged with the newly introduced overworld.

@TheWingedAvenger the first FF to make summons more or less playable, an extensive skill/growth system, the franchise’s most substantial and complex mini-game to date, and all of that “a visual novel” (implying those aren’t officially video games in their own right – tell that to all the PC text adventures of the 80s).

And here I thought “FFXIII being full of annoying stereotypes” would win the section’s most hilarious comment.

PS. “Final Fantasy Legend” games have nothing to do with Final Fantasy (outside the first two being made by Akitoshi Kawazu and inheriting certain FFII mechanics), and never bore the title outside the US release. They’re all SaGa franchise.



https://www.sickgaming.net/blog/2020/03/...character/

Print this item

  News - Guide: Upcoming Nintendo Switch Games And Accessories For March And April 2020
Posted by: xSicKxBot - 03-03-2020, 05:44 AM - Forum: Nintendo Discussion - No Replies

Guide: Upcoming Nintendo Switch Games And Accessories For March And April 2020

Animal Crossing: New Horizons

We’re well into 2020 now and the buds of spring are starting to appear on the gaming calendar. After the onslaught of last holiday season, we’ve been through a leaner couple of months with fewer big name games launching during the winter. Hopefully your backlog is in good order, because that’s all about to change with the launch of Nintendo’s biggest (announced) game of the calendar year.

Yes, it seems like Animal Crossing: New Horizons has been a distant dot on the horizon for months now, but the vessel is cruising into view this month in all its glory. Cancel the rest of the year, fellas – we’ve got a Nook Getaway booked and we won’t be back for a while.

But what if – shock! horror! – you’re not an Animal Crossing aficionado? Worry not, for there are plenty of other Switch games incoming and vying for your attention in March, April and beyond. Let’s have a look at the biggest games coming to Switch in the next couple of months, shall we?

Please note that some links on this page are affiliate links, which means if you click them and make a purchase we may receive a small percentage of the sale. Please read our FTC Disclosure for more information.

A surprise announcement during the January Pokémon Direct, this remake of the GBA / DS game(s) will be with us very shortly and promises to give the classic dungeon-crawling spin-offs a lick of HD paint and a dusting of mod-cons. It certainly looks lovely from what we’ve seen so far and we’re gagging to see how the games hold up in the harsh light of 2020.

Ah, the big one. Only the Doomslayer himself has the courage to go up against the mighty Animal Crossing: New Horizons on launch day, and even he decided it was best to delay the Switch version so as to avoid any embarrassment. Oh Panic Button may talk about ‘refinements’ to DOOM Eternal, but we all know the real reason for the game’s delay: Doom Guy scarpered after reaching the final boss to find Tom ‘Blofeld’ Nook rotate in his chair while stroking Rover purring on his lap.

You’ve probably got this one pre-ordered at multiple outlets already, but here are some of the options if you want to make doubly and triply sure to get started on your island getaway by catching yourself a Day One perch.

After rumour upon rumour, it was finally confirmed at the start of February that Saints Row IV would be returning. Including an eye-watering 25 DLC packs as standard, it’s like a manic Grand Theft Auto with added stupid, and we’re always game for a game that doesn’t take itself too less seriously.

For some people, Koei Tecmo’s Musou games are at their best in the regular crossovers with other franchises, and the One Piece series feels particularly at home when paired with the trademark Dynasty Warriors brand of manic hack-and-slash. The upcoming instalment looks tasty and we were fans of the third game, so we’ve got high hopes One Piece: Pirate Warriors 4.

Trials of Mana, a fantastic Japan-only Super Famicom RPG known as Seiken Densetsu 3, only recently received an official localisation and release in the west as part of the excellent Collection of Mana Switch release. As a sequel to Secret of Mana, it was always likely to be good, but such was the quality of the game and the localisation that we’re gagging to play it again in its remade, reimagined form.

New Switch Hardware Options


If you are in the market for picking up a new Nintendo Switch console, we have the charming Animal Crossing: New Horizons Edition in March with exclusive Animal Crossing themed Joy-Con and dock. April 3rd brings us the coral Nintendo Switch Lite, which is definitely coral and NOT pink!

More Awesome Nintendo Switch Games


Aside from the highlighted games above, there are lots more Switch retail games which might take your fancy in March and beyond.

Awesome Accessories For Your Switch


And finally here are a selection of the finest Switch accessories coming up in March and beyond, for your consideration.


So that’s it for March and April – did we miss anything? Let us know with a comment and also tell us if you’ve pre-ordered any of these goodies!



https://www.sickgaming.net/blog/2020/03/...pril-2020/

Print this item

  News - The Division 2 Patch Notes Are Here For The New Warlords Expansion
Posted by: xSicKxBot - 03-03-2020, 05:44 AM - Forum: Lounge - No Replies

The Division 2 Patch Notes Are Here For The New Warlords Expansion

The Division 2's newest DLC expansion, Warlords of New York, arrived earlier than expected on PC, PlayStation 4, Stadia, and Xbox One. With the sudden launch of the looter-shooter's first major piece of DLC, Ubisoft has shared a long list of changes coming to all platforms. You can check out the full patch notes below.

Of course, the main draw of the Warlords of New York expansion is the return trip to the Big Apple. Warlords of New York opens up several locations within the city for you to explore, including Battery Park and the Financial District. As you're combing these added areas, you can take on some new main missions that task you with hunting down rogue Division agent and first wave responder Aaron Keener. There are also new side missions to undertake, a level cap increase from 30 to 40, an additional base of operations, and more.

The new locale and mission objectives aren't the only additions in Warlords of New York. The new update also reworks all weapons in what Ubisoft is calling "gear 2.0." There are only a handful of attributes now, with all brand bonuses, talents, mods, gear sets, exotics, and skills being overhauled. Also, loot drops have been reduced and will now scale "more strongly with difficulty," according to the patch notes.

Continue Reading at GameSpot

https://www.gamespot.com/articles/the-di...01-10abi2f

Print this item

  (Indie Deal) ?ARK: Survival Evolved Crackerjack Deal
Posted by: xSicKxBot - 03-03-2020, 12:13 AM - Forum: Deals or Specials - No Replies

?ARK: Survival Evolved Crackerjack Deal

ARK: Survival Evolved at 73% OFF
[www.indiegala.com]
Crackerjack, uh, finds a way to give you a NEW ?T-rrific discount to an unforgettable dinosaur-themed experience.
https://youtu.be/5fIAPcVdZO8
Use your cunning and resources to kill or tame & breed the leviathan dinosaurs and other primeval creatures roaming the land, and team up with or prey on hundreds of other players to survive, dominate... and escape! Want to evolve your ARK-perience? Behold: more Wild deals![www.indiegala.com]
ARK: Aberration - Expansion Pack[www.indiegala.com] $6.99 | €6.99 | £5.24 | 65%
ARK: Extinction - Expansion Pack[www.indiegala.com] $9.99 | €8.39 | £7.74 | 50%
ARK: Scorched Earth - Expansion Pack[www.indiegala.com] $6.99 | €6.99 | £5.24 | 65%
PixARK[www.indiegala.com] $19.99 | €16.99 | £15.49 | 50%

Day 2/7 from the GalaQuiz Redux Week
Today's theme: Disney Villains Redux[www.indiegala.com]

Happy Hour
Today's Happy Hour is LIVE for Fight for Sanity Bundle[www.indiegala.com]!

Check out IndieGala on Twitter, YouTube & Facebook[www.facebook.com]


https://steamcommunity.com/groups/indieg...6966535140

Print this item

  (Free Game Key) InnerSpace - Epic Games
Posted by: xSicKxBot - 03-03-2020, 12:13 AM - Forum: Deals or Specials - No Replies

InnerSpace - Epic Games

Visit the giveaway page:

InnerSpace

https://store.epicgames.com/GRABFREEGAMES/innerspace

Create an account or log in an already existing one and permanently add the games on your account. Alternatively you can redeem them from the Epic Launcher on the games' giveaway page.

?GrabFreeGames.com ?Twitter ?Steam Curator ?Facebook[fb.me]?Discord[discord.gg]
❤️Support us: ✔️HumbleBundle Partner[www.humblebundle.com] Epic Tag: GrabFreeGames


https://steamcommunity.com/groups/GrabFr...0981923372

Print this item

 
Latest Threads
(Indie Deal) FREE Brocco,...
Last Post: xSicKxBot
3 hours ago
(Free Game Key) Epic Game...
Last Post: xSicKxBot
3 hours ago
News - The New PlayStatio...
Last Post: xSicKxBot
3 hours ago
{Latest } "90% off"Temu D...
Last Post: juhujbj
3 hours ago
{Latest } "70% off"Temu D...
Last Post: juhujbj
3 hours ago
{Latest } "30% off"Temu D...
Last Post: juhujbj
3 hours ago
{Latest } "50% off"Temu D...
Last Post: juhujbj
3 hours ago
{Latest } "$100 off"Temu ...
Last Post: juhujbj
3 hours ago
{Latest } "40% off"Temu C...
Last Post: juhujbj
3 hours ago
[BiGeSt] Temu Coupon Cod...
Last Post: juhujbj
3 hours ago

Forum software by © MyBB Theme © iAndrew 2016