Strategy

Space Jam | Max Böck


The iconic 1996 “Space Jam” website was recently relaunched to promote the new movie. Thankfully, the developers still kept the old site around to preserve its intergalactic legacy.

It’s not often that a website stays up mostly unchanged for 25 years. So out of curiosity, I ran a quick check on both sites.

Unsurprisingly, the new site is a lot heavier than the original: with 4.673KB vs. 120KB, the new site is about 39 times the size of the old one. That’s because the new site has a trailer video, high-res images and a lot more Javascript:

byte size comparison of the 1996 and 2021 space jam websites
The new site has gained some weight

This is keeping with the general trend of websites growing heavier every year, with the average site weighing in at around 1.900KB now.

But since our connection speeds and device capabilities are significantly better now – that’s fine. Everything is way faster now than it was back in the days of Michael Jordan’s first Looney Tunes adventure.

Is it though? Let’s find out.

# Party like it’s 1996

1996 was a different time. The Spice Girl’s “Wannabe” was in anti-shock discmans everywhere, and the most common network connection was 56k dial-up modems. So of course the original developers had a smaller performance budget to work with, and the site is much lighter. Fair enough – so how long did it take to load the original Space Jam site back then?

I ran a webpagetest with a simulated ’96 connection: dial-up on an average desktop computer. Dial-up had a maximum speed of 56 kbit/s, but in reality it came in at something around 40-50 kbit/s.

Here’s how that looked (fire up the dial-up noise in another tab for the full experience):

Test Summary | Film Strip View

We can see the first content (the “press box shuttle” menu item) after 4 seconds. The other menu items -all separate GIF images- come in slowly after that. Since the HTML renders as soon as it is parsed, you could theoretically already click on the items before the rest of the page has finished though. The whole site is done after 28.1 seconds in this test.

# Back to the Future: 2021

Now let’s look at the current, futuristic state of the web. Luckily we don’t use dial-up anymore. The most common connection these days is a mobile 3G network, and the most common device is an Android phone (a Moto G4 in this test). A typical 3G connection comes in at around 1.5 Mbp/s, so it is roughly 30 times faster than dial-up. This shouldn’t take long:

Test Summary | Film Strip View

Funnily enough, the first meaningful paint also shows up after about 4 seconds. It’s not actual content though, it’s the loading screen, informing us that we’ve now loaded 0% of the site.

We reach 100% at 12 seconds, but the first real piece of content is not rendered until 21.5 seconds: it’s a youtube video in a modal window. The site is finally ready after 26.8 seconds, although actually playing the video would take some more loading time.

# Results

Right. So after 25 years of technological progress, after bringing 4.7 billion people in the world online, after we just landed a fifth robot on Mars, visiting the Space Jam website is now 1.3 seconds faster. That seems… underwhelming.

__

I know that this is just a movie promo site. And of course the requirements for a website are different now, but I think this speaks to a larger point:

Although connection speeds and devices keep getting better and better, the web is actually getting slower. We see the increasing bandwidth as an invitation to use more and more stuff in our websites. More images, more videos, more JavaScript.

We just keep filling the available space, jamming up the pipes in the process so nothing actually gets faster. Well, at least the dial-up sound is gone now.



Source link

How To Optimize Ration Card System for Social Nutrition
Strategy

How To Optimize Ration Card System for Social Nutrition


Introduction

Recently, our team received a request to create a prototype system for issuing tickets. It has been done in 40 hours, including discussion of Functional specifications and even some reworks, which was incredibly fast. We created this mini-system and thought that such a simple application can be very useful for a wide audience. Аs a result, we brought some magic to IONDV. Framework added a social purpose to the app and most importantly, we tested IONDV. Studio and invite you to do the same. 

Meet IONDV. Tickets, a register-type open-source application for issuing social nutrition tickets for recipients receiving aid. The application is based on IONDV. Framework technology and created in the IDE – IONDV. Studio. As always, demo and video are available, and the app is published on GitHub under the `Apache 2.0` open license. In this article, we want to share with you the process of creating an application, shall we say, from an idea to a prototype.  

Idea

And the idea is very simple; keep in mind that although we’ve already been full of inspiration, we only slightly outplayed the details. The purpose of the system is to keep records of issuing and cashing tickets (or cards) for social nutrition for preferential categories of recipients receiving aid to optimize the process of social services or non-profit social organizations. So, the users of the system should have the possibilities to:

  1. Create the recipient card with such data as name, date of birth, sex, etc.
  2. Create the ticket card with such data as date of issue, issued by, expiration date, status, etc.
  3. Stage the ticket’s statuses according to established workflow.
  4. Log in as the user with the correct role and right—operator, cashier, admin, moderator.

Also, additional functionality: check-boxes with categories, scans of documents, printed form of tickets, integration with some portal. 

Let’s Model the Situation 

An individual comes to social security for social nutrition tickets. An employee of the social services (and for us, the Operator of the system) creates the user card, determines the category, and creates 4 tickets for him for a month and gives all 4 tickets at once. The individual must use tickets within a month in the store/canteen/issuing point tick as preferred

The amount specified in the ticket depends on the number of assigned categories. When he cashes his tickets, the employee (with the role of “Cashier”) finds the number of his ticket in the list and, if it’s valid (not highlighted in red and the completion date is greater than the current one), closes the ticket and the ticket is no longer valid.

Our Fantasies (Or Additional Functionality)

We would like to make it possible to apply for tickets online by configuring integration with some portal. We imagine it like this: an individual fills in the application form on the e-government portal and sends an application. The form will be displayed in the “online applications” item or in the dashboard widget “New online applications”. The employee of social services will see a new application from the portal. The operator processes the application to either reject with a reason or accept it to issue the tickets. 

An additional advantage would be the printed form of tickets in Docx format. When editing the recipient’s card the operator can send tickets to print and give them to the recipient, or send a Docx or Pdf version to the recipient’s email.

The Basics: Technical Details

The application is based on IONDV. Framework technology. This is an open-source framework on node.js to create high-level web applications based on metadata, which does not require serious programming skills.  The framework is based on an independent data model, core APIs, functional modules, and view templates. We use the DBMS MongoDb to store application settings, metadata, and the data itself. The framework runs in the Node.js environment.  Altogether it provides a cross-platform framework.

The combination of IONDV. Studio + IONDV. Framework + IONDV. Apps (application builder from the repository) is a rapid prototyping system Framework + IONDV. Apps. You can develop a web-app to test business logic and data structures, security and a ready REST API — and edit the front with your favorite AgularJS or React.js. Also, there is a SOAP to work out the integration.

Creation Process

We wrote down our actions of creating an application IONDV. Tickets in the IONDV. Studio step by step. Look for full instructions in the Studio repository, where you can repeat the process in detail. 

Stages

  1. Create classes
  2. Create navigation
  3. Create views
  4. Create work-flow

Classes

So, first of all, just simple action—creating the application starts with a button “+ Create your first app”. In the pop-up window fill in 2 lines about the future application—name and description. And let’s move on to creating classes. The base classes of the application are “Tickets”, “Person”, “Recipient”, “Documents”. Create classes and their attributes. After that, move to fine-tuning of specific properties. 

For the “Recipient” class, configure the inheritance. It will inherit the attribute composition of the “Person” class, i.e. the “Recipient” class has all the attributes of the “Person” class + its own. Also, for the “Recipient” class, configure a connection of the “Collection” type for the “Tickets” attribute. Specify the “Tickets” class as a reference one. The collection is made for the collection of “Tickets” objects could be displayed in the form of the class object. Repeat the configuration of connections for other classes and in the end, we should get a diagram of the application of the following type:

Diagram of the application

Next, configure the important details according to the instruction:

  1. Formula to calculate the number of recipients receiving aid
  2. Formula to calculate the maximum ticket value
  3. Formula to calculate the ticket expiration date
  4. Restriction on creating objects in the collection

Navigation

Create a navigation section and a navigation item. Section—groups the menu items on any basis. To create a navigation section, go to the “Navigation” section and click the “+ Section” button. We have grouped all menu items into one section on the basis of the application theme—”Nutrition Tickets”. 

After creating the navigation section, the button to create a navigation item becomes available. In this case, each created navigation item is a page of the class; name them as classes respectively.

Views

The view form allows you to specify an arbitrary attributive composition for different views of class attributes in the system.  There are three view forms: create form, list form, edit form. Select the “Classes” section, and then the “View” action on the work panel. In the list, select the type of view form and drag and drop the attribute blocks.

On the view form, you can set additional properties—a mask for the phone number attribute and styles for displaying objects in the list. For example, highlight the expired coupons in red.

Highlight the expired coupons in red

Workflow

For the “Tickets” class, a workflow consists of 3 statuses: “Issued by”, “Acknowledged”, “Expired”. Go to the “Workflows” section and select the “+ Workflows” action and select the  “+ State” action to create the state of the workflow.

Create the state of the workflow

About IONDVStudio

IONDVStudio is an IONDV. Framework specialized IDE that helps accelerate the development of applications on the framework. It is used to develop or edit metadata (for example class, navigation, view, workflow, portal interfaces) that can be deployed as an IONDV application. Framework is not necessary. It also may be used as a standalone node.js application or Desktop application. The advantage of using a standalone application is that the database and in IONDV. Framework is not necessary.

See here for info on how to start an application.

How To Get the Application and What To Do With It

Under Linux, you can install the application in one line (if git, node.js, and MongoDB are installed locally) using the iondv-app installer. The script will install the environment, clone all the necessary framework repositories, modules, and apps from GitHub. Then it will collect, initiates, and launches the application:

Where instead of localhost:27017 you need to specify the MongoDB address.    

You can also run the following Docker container:

At startup, open the http://localhost:8888. For the back office with admin rights: login—demo, password—ion-demo. Other users with limited operator rights: login—operator, passwordiondemo. Test the [demo-app]. Logindemo, passwordiondemo.

Let’s Try

If you want to repeat our experience, we have written a detailed instruction How to create a Tickets app in IONDV. Studio. It’s full of screenshots so you can see that develop in the Studio = create. It would be cool if this app inspired you to create your own accounting system. Our goal is to show how easy and quick the idea is transformed into a real prototype. 

If you find errors, write in the comments or in the Issues application repository on GitHub. Share your ideas, where else would you apply such a system? What would you change?



Source link

r/graphic_design - time to change the folder for medical records
Strategy

time to change the folder for medical records : graphic_desi…


Hello!

I am a doctor, we give this kind of folders to the patients to keep their medical records

r/graphic_design - time to change the folder for medical records

folder for documents

We think it is time to change them to update some informations and to improve the graphics. Can you help with suggestions?

I think thare are definitely too much words, logos and photos

Can you also suggest me a program (free 😅) for this kind of work?

I have been using GIMP for a while, but I would rather to use something easier and more specific



Source link

Web Browser Market Share and Monthly Trends
Strategy

Chromium vs Chrome: What’s the Difference?


Introduction

We all know about Chrome; it’s undisputedly the leader of the browser market. But have you heard about Chromium? Did you know both Chrome and Chromium are related to each other? While Chrome is the supreme leader of web browsers, Chromium is the one that holds a major chunk of the browser universe together. It is an open-source project which forms the foundation for several different browsers, including the new Microsoft Edge. Though they both share a similar name, they are also different in several ways. In this blog, we will highlight the difference between Chromium and Chrome.

Let’s get to it, shall we?

What Do The Stats Say?

Chrome is a well-known browser globally, with around 63.5% of the market share. In short, more than 6 out of every 10 internet users in the globe use Chrome to browse the net. Although Safari, Edge, and Firefox are next on the list, their fame pales in contrast with that of Chrome. Their joint market shares make up less than 1/3rd of Chrome. And thanks to W3Counter’s Browser Share statistics for October 2020, you can easily see which browsers are presently the most popular:

Web Browser Market Share and Monthly Trends

Now that you understand the kind of monopoly Chrome enjoys in the browser market, it is time to dive deeper into the Chromium vs Chrome topic. In the later sections, we will also discuss how the difference between Chrome and Chromium is relevant to cross-browser testing.

What Is Chromium?

Chromium is an open-source and free web browser that is managed by the Chromium Project. Open-source and free means that software developers are allowed to change the source code. But, only the Chromium Project development community’s trusted members are permitted to do this. Chrome, on the flip side, is based on Chromium—developers further included their proprietary code to the source code of Chromium. In other words, Google Chrome has numerous features that are absent in Chromium; for example, it installs updates automatically and supports additional video formats.

Downloading Chromium—Easiest Way

The simplest and safest method to download Chromium is to do so from the download page of Chromium. As soon as you open the page, it will automatically recognize your device’s OS and provide the latest compatible edition of Chromium. If that’s not the case, you can also choose it from the list of Operating Systems.

Suppose you are a Linux or Windows user and would like to download an older version of Chromium. In that case, you can simply go to Last Known Good Revision towards the bottom to recover older Chromium editions. For Linux, you can install it straight from the Linux distro’s software repositories.

Pros & Cons

Pros

  • Doesn’t track browsing data
  • Open-source
  • More frequent updates

Cons

  • Updates need to be downloaded & installed manually
  • No built-in support for Media codecs or Flash

As a free platform, Chromium is better for web developers as well as highly-advanced users. There are also no restrictions on what sorts of browser extensions can be included additionally. As Chromium is accumulated from the Chromium Projects source code, it modifies continuously. On the other hand, Chrome has quite a lot of release channels. However, the bleeding edge Canary channel updates not as much repeatedly as Chromium. Routine upgrades are posted on the Chromium Projects site.

While the Chromium browser is more frequently updated than Chrome, such updates must be manually downloaded and installed. This is the major difference between Chrome and Chromium, as there is no system of automatic updates. Chromium does not provide a built-in hold-up for Flash. While Adobe Flash is not as prevalent as it once was, some websites do not function perfectly without it. As Flash is not open-source, the Chromium browser doesn’t have built-in support for this. If you wish to use Flash in Chromium, you will have to add or write the necessary code to support it.

Chromium does not support licensed media codecs such as MP3, AAC, and H.264. Without such codecs, you can’t play media in Chromium. If you wish to stream video from websites like YouTube and Netflix, either install these codecs manually or use Chrome. At last, Chromium does not by default have the enabled security sandbox. Both Chromium and Chrome have a security sandbox mode, but in some cases, Chromium has it turned off by default.

This summarizes Chromium’s side of the Chromium vs Chrome story. Now, let’s look into Chrome and the difference between Chrome and Chromium from Chrome’s perspective.

What Is Chrome?

Developed and managed by Google, Chrome is a proprietary browser. It was released in 2008. Chromium and Chrome browser are tied to each other because Google’s Chrome borrows Chromium’s source code. However, the one major difference between Chrome and Chromium is that the code in Chrome can’t be reversed, decompiled, or anchored to create other similar projects.

Downloading Chrome—Easiest Way

This is a straightforward process of simply visiting the Chrome website and downloading the browser. The website will choose a compatible downloadable version (for macOS or Windows), and it will be installed within minutes.

Pros & Cons

Pros

  • Easier to use and more stable
  • Automatically Updates
  • Built-in support for media codes and Adobe Flash

Cons

  • Tracks browsing data and history
  • Zero support for extensions not found at its Web Store

For regular users, Google Chrome is perhaps a great choice. Chrome is stable and offers a safe browsing experience, owed to the automatic error reports and updates. Unlike its open-source counterpart, it also offers built-in support for media codecs like MP3, H.264, and AAC, as well as Adobe Flash. Besides, Google Chrome’s limitations likely are not visible if you are not a more experienced user. For instance, unlike Chromium, this web browser tracks cookies, history, browsing habits, and other data. However, you can always use the Incognito Mode to remove that data at the end of an online session.

By default, this browser on Mac and Windows only allows you to install extensions that are already downloaded from its Web Store. This distinguishes it from other browsers that enable outside extensions. An open-source platform demands more significant inspection and scrutiny from the user; external extensions are often malicious or untested. If you wish to have the freedom to install extensions from outside the Chrome store, you can use the developer mode. That is all about the difference between Chrome and Chromium.

Missing Chrome Attributes In Chromium

Apart from the significant difference between Chrome and Chromium we listed above, there are many more Chrome attributes that are missing out on Chromium. The following traits of Google Chrome are not featured in Chromium:

  • PDF viewer (Built-in)
  • Print preview
  • Google Auto-update system for the browser
  • Integrated Flash player
  • Media codecs to support MP3, H.264, and AAC formats

Other dissimilarities comprise a choice for crash reports, usage stats to be automatically sent to Google servers, and rare advertising from Google, like for the Chromebook. Even with such traits, this web browser still follows the minimalist browser style that promotes a simple-to-view, lighter interface.

Overall Findings

Chrome and Chromium are built on the same framework. Chromium is open-source, while Google Chrome is proprietary software. The main distinction is the special features that Google adds to Chrome, such as the capability to log in to the Google account at the browser level. However, on the other hand, Chromium is a comparatively lightweight and clean browser, while Chrome comprises several additional features such as automatic support and updates for additional video formats.

COMPARISON CHROMIUM CHROME

License Support

Just offers support for basic, free codecs: Theora, Opus, WAV, VP8, VP9, and Vorbis 

Free under Terms of Use of Google Chrome. Comprises support for licensed media codecs – H.264, MP3, and AAC. Provides access to extra media content, particularly websites using HTML5 video for streaming H.264 videos. Plus, comprises basic, free codecs: Theora, Opus, WAV, VP8, VP9, and Vorbis 

Developer

The Chromium Project

Open source contributors to Chromium and Google Inc. 

Website

www.chromium.org

www.google.com/chrome

Flash player

Not built-in; needs a plugin

The Plugin is built-in; could be easily disabled

Media codecs supported

WebM, Theora, Vorbis, 

Theora, WebM, Vorbis, H.264, MP3, AAC,

PDF viewer

Not built-in; needs a plugin

The Plugin is built-in; be easily disabled

Print preview

No

Yes 

Auto-update

No. It lacks the feature of automatic updates. You will need to update manually. But as it comes straight from the source code of Chromium Project, updates are made accessible highly frequently & the browser continuously modifies.

Yes. This feature is available. When you download this browser on Windows and macOS, you obtain an extra background app that automatically updates the browser. While on Linux, an update is completed utilizing standard software management tools. 

Features

Doesn’t offer any additional functionality

Offers extra features like built-in support for several technologies, update mechanism, and DRM (digital rights management) elements to play copyrighted content

Related software

Chromium Operating System

Chrome Operating System

Stability

Chromium is more prone to crashes as compared to the most common Chrome versions. 

More stable than Chromium.

Privacy

Does not gather and transfer much information. Can’t transfer info like crash reports & usage stats.

Gathers information and automatically transfers it to Google. This info can differ from device OS, crash reports, usage statistics, and more.  

Security

It is as secure as Google’s Chrome. However, the lack of an automatic update mechanism depicts that security patches will need to be downloaded manually and installed by the end-user.  

As Chrome is built on Chromium, the safety mechanisms are the same. However, all security patches to the source code are automatically updated on this web browser.

Logo

It has a blue logo.

Chrome has a colorful logo.

Automatic Updates

The automatic update feature is not bundled in this browser.

It automatically updates to the advanced version based on Google Upgrade on Windows computers. 

Usage tracking and crash reporting

In this web browser, the choice of usage tracking and crash reporting isn’t possible.

It facilitates the usage statistics options and also has a crash reporting option. It can transfer all its valid information to the Google servers. The info sent to Google servers by this web browser adds universal data, such as the sites you found to have malware, the instruction-related to your Operating System and device needed, and deficiency Chrome settings, search queries, etc. Such instructions enable Google to offer you well by giving suggestions, outcomes, and ads that are incredibly relevant and helpful to you.

Web Store

Web store service isn’t feasible in Chromium.

It has a Web store with an array of web tools and apps. Users can make use of it in the browser and can quickly add together Chrome extensions. 

Media-Codec support

Chromium supports the media in HTML5 video or audio codec accessible in WebM, Vorbis, VP9, Theora, etc.

It additionally supports H.264, AAC, and MP3 while supporting the media in HTML5 video or audio codec accessible in WebM, Vorbis, VP9, Theora, etc.

Sandbox support

In this browser, some Linux distributions encompass the Sandbox trait disabled.

In Chrome, Sandbox is forever enabled.

Adobe Flash Plugin

The plugin doesn’t support this web browser. Chromium additionally doesn’t support Flash natively. However, you can obtain the PPAPI (Pepper API) Flash plugin from Google’s Chrome and install it on this browser.

This browser easily supports the Adobe Flash Plugin. Chrome manages the PPAPI (Pepper API) version of Adobe Flash that is generally upgraded with Chrome updates.

Extension Restrictions

It allows anyone to upload an extension to the web browser.

It only enables extensions that are mainly hosted in its Web Store. (But you can upload extensions with this browser using Developer Mode.)

Stable vs. Beta Versions

With Chromium, one can download the browser’s beta versions that count bugs and other problems. If you want to use this browser yet want an extra stable browser, several other browsers are assembled based on Chromium’s code (comprising Opera, Brave, and  Microsoft Edge).

When you download this web browser, you get what is referred to as “stable release.” Whatever the version you download has undergone beta tests & has been fixed whenever users found errors. 

Profile is kept in

~/.config/chromium

~/.config/google-chrome

Cache is kept in

~/.cache/chromium

~/.cache/google-chrome

New releases testing

New release tests mainly rely on distribution. 

New releases are well-tested prior to being sent to users

Chromium Vs Chrome and Cross Browser Testing

Chromium and Google Chrome are accessible not just from desktops and laptops but also from Android/iOS smartphones and tablets. Chrome has now turned into the default browser for Android smartphones. And it’s accessible for non-RT Windows 8 devices both as a “metro” app and a traditional app. Also, the Chrome version is obtainable for iOS.

Accessibility on such a surplus of devices allows Google to provide some functionality with Chrome that is not obtainable on Chromium, particularly syncing through “Sign in with Chrome.” Users can seamlessly access their open tabs on one gadget when they shift to a different gadget using the same Google account on both gadgets (as long as they are signed in to Chrome, not merely to Google.com). On the flip side, Chromium also runs on different mobile devices with its accessibility for Maemo 5 mobile OS for Nokia, Android, and MeeGo’s netbook version.

Cross Browser Testing With Google Chrome

The sheer variety of devices that use Chrome comprises a major chunk of the smart user market. If people are using laptops or smartphones, they are more likely to use Chrome than other browsers. This makes it even more difficult for a website and web page to render error-free on a user device. If your website is not performing well on a particular device using the Chrome browser, you are more likely to lose that customer to a competitor with a mobile-friendly website.

Which One Is Better?

It is tricky hard to decide between the feature-rich Chrome and open-source Chromium. For Windows, it is good to use Chrome as Chromium doesn’t come with a steady release, which applies to macOS as well. In Linux’s case, known for its love for open source and free software, Chromium may be the best choice. However, you will need to live with the fact that it does not automatically update, lacks media codecs and Adobe Flash plugin. But, several Linux distributions may provide a modified Chromium, which comes bundled with numerous missing attributes.

Chromium is now being considered the default browser in several Linux distros instead of browsers like Firefox. Chrome is also accessible for Linux. If you wish to use free software and try to escape any closed-source alternative, then Chromium is an excellent choice for you.

So, Chromium or Chrome? The response depends on what you necessitate in a browser. Chrome is, of course, the better option for most users; however, Chromium can be the right choice for advanced users and for those who place a great value on coding and privacy. But if you require a browser that does not require any special configuration, then Chrome is just for you. Use all the information above and make the right choice!

Happy cross-browser testing!



Source link

value of the pointer flow chart
Strategy

Getting Deep Into C++ Pointers


Introduction

C++ being built on top of C language has readily inherited many core features, which include Pointers. Pointers were proven to be handy when it comes to working with data at memory level Statically or Dynamically. Many Programming Languages use Pointers in some or the other way.

Why Bother Learning Pointers?

Yes, it is so true that the same task could be accomplished without the use of pointers, but we must acknowledge that the proper use of pointers can make code more short, compact, and efficient at the same time.

C++ Pointers in Brief

Pointers were mainly introduced to peek and poke the data from memory effectively. Pointers were made to hold the memory addresses (i.e physical address/memory location) so that one could refer to the data at that memory location through pointers.

So What Is a Pointer?

Programmatically, a Pointer is a variable that can hold the address of other variables as its value and can indirectly refer to the contents of that memory address.

Pointer as a Variable

Yes, a pointer is a variable, which means that at some given time it can point to a variable (i.e hold the address of that variable) and next time it can point to some other variable of the same type (datatype).

Pointer as a constant

We can make a pointer constant which means it cannot point to other memory addresses with the use of const qualifier which we will see in the later parts. Before Moving into the Pointers Jargons, consider the following declaration:

int val = 100;

The above statement commands the compiler to

  • Reserve memory space to hold an integer value.
  • Associate name value to it.
  • Assign value 100 to it.

Memory Map for the above statement are as follow:

value of the pointer flow chartAs we can see, the compiler has chosen the memory location 65545 (Machine specific) to store the value 100. We can print this memory address as:

cout << &val; //prints the memory address of variable called val

We can store this address into a variable and refer to the value indirectly through that variable and here comes pointers into the limelight.

Pointers Syntax

Had the pointers been the same as ordinary variables, there wouldn’t have been any need to grasp them separately, so for sure pointers are not ordinary variables. Let’s take a look into the syntax of a pointer.

data_type* variable_name;

Here data_type refers to the data type of the variable whose address is going to be stored in the pointer variable. Alternatively, we can say that pointer is gonna point to a variable whose value is of type data_type.

Some valid examples of pointer declarations are as follows: 

Note that the space isn’t necessary but the *(asterisk) should be in between data_type and variable_name.

Pointers Jargon

Consider the following pointer assignment statement:

Now we have successfully stored the address of val into ptr thus we can refer to val through ptr as:

Two Key Operators

Working of Pointers

Now since we have the address of val variable in ptr, we can now access and manipulate the data stored at the memory address contained in ptr.

Below is the implementation of a simple program using pointer:

Thus not only we can access val with *ptr but also can change the data (or reassign) to any value of the same data type.

ptr pointer flow chart

Pointers Extended

Since a pointer is a variable, it does occupy a space in memory and we can even store this address into another pointer variable, which would be called pointer to pointer. This way we can create a pointer to pointer to pointer to pointer and so on. For now, we would stick to a pointer to a pointer.

The declarative syntax of pointer to a pointer is given below:

We can refer to the ptr contents as 

cout << *d_ptr << ptr << &val; //eg 65545 65545 65545 i.e address of val

Since *d_ptr value is an address (address of val) thus we can access the actual data of val through the following statement.

To manipulate the content of val through d_ptr we can write as **d_ptr = 2000;

d_ptr = 2000 pointer

Function Returning More Than One Value

We are aware that normally a function can return at most one value at a time. What if we need to return more than one value from a function? The Naive approach would be to make that many functions return different values. The other handy option is to use pointers making code more efficient

Without Pointers

With Pointers

Types of Pointers

The types of pointers which should be known to a programmer are:

Null pointer

When a pointer doesn’t point to any valid memory location we should make to point it to null (i.e absence of value). int *ptr = NULL;

Constant pointer

When a pointer needs to point to only one memory location throughout its lifetime i.e it should be changed, then we can declare the pointer as constant.

Void pointer

When we are not sure what the pointer is gonna point to .i.e would it point to an int or float or char? In such a situation, we should declare the pointer as a void pointer and explicitly make it point to a variable of any data type as desirable.

Dangling pointer

When a pointer is trying to point to a memory location that is not available or inaccessible or freed (using a free function). Then the pointer is called a dangling pointer.

Pointers Arithmetic

An awesome feature of pointers is that they can move in memory to and fro. They jump forward or backward with each step equal to the memory size they are pointing to. For eg.

Advantages of Pointers

The major advantages of pointers are:

  • Makes the function return more than one variable at the same time.
  • Makes code way shorter, compact resulting in increased speed of execution.
  • Dynamic memory allocation and deallocation are possible only with the use of pointers.
  • To implement various data structures (eg. Linked Lists, Trees, et)

Conclusion

Thus we can sum up by saying that a pointer is a construct that can point to a memory location and indirectly access and modify the contents inside it. From making function return multiple values to dynamic memory allocation pointers have shown their superpowers. Thus if a solution could be approached with the use of pointers, it should be solved with the use of pointers making code more efficient.



Source link

What testing approaches do you use?
Strategy

10 Popular Software Testing Tools for 2021


Introduction

How many trusted testing tools does your QA team use in their projects? Our quality assurance team at Forte Group has already put together a curated list of 11 frameworks we utilize every single day, and these tools help us deliver in a fast and effective manner. Below, we will provide you with a comprehensive guide for testing tools that can be utilized for multiple tasks, whether that is load testing, exploratory testing, or test automation.

Moreover, at the end of this article, you will find the list of additional tools to maximize your testing game.

An extensive global survey conducted by Tricentis depicts the overall state of open source and provides several essential insights on the testing trends. The testing tendencies show that teams prefer to use functional testing, understandably, yet manual testing is here to stay, too.

What testing approaches do you use?

Criteria for choosing one framework over the others were the following:

  • relatively fast and easy setup (or out-of-box solutions)
  • a supportive community or the developers themselves offer support for their framework
  • clear and comprehensive documentation
  • a number of integrations with other tools
  • cool features like code reusability to test against multiple platforms and environments, etc.

Selenium (Functional)

Created in 2004, the Selenium test automation tool gradually became a testing staple for QA engineers for a good reason. With almost 20K stars on Github, Selenium is one of the most popular functional testing tools on the market.

Generally, Selenium consists of several tools united by one ecosystem: Selenium WebDriver, Selenium IDE, and Selenium Grid.

Selenium core features:

  • Cross-browser and cross-platform testing
  • Multiple testing languages (Python, Java, C# to name a few)
  • Highly adjustable open-source code
  • Parallel test execution

Selenium power feature:

Latest updates:

Ranorex (Functional)

Ranorex is an end-to-end functional testing tool with automatic timeout handling, dynamic web elements identification, and a built-in page object mapping.

Ranorex core features:

  • Cross-browser and cross-platform testing
  • Regression, data-driven, keyword-driven testing options
  • Extended and detailed reporting
  • Automated tests both for real iOS and Android devices as well as emulators

Ranorex power feature:

Latest updates:

  • Intelligent self-healing for failed tests

PractiTest (Exploratory)

PractiTest is positioned as an all-in-one application lifecycle management solution, meaning that the tool provides both manual and test automation management options. However, the most interesting part is the exploratory testing feature.

PractiTest core features:

  • Test case management
  • Issue status management
  • Customizable dashboards with detailed reporting
  • Reusable tests
  • Data structuring 
  • Advanced direct-from-the-run bug reporting
  • Integrations: Jira (Cloud, DataCenter, Server)

PractiTest power feature:

Latest updates:

  • Demo data projects
  • Importing and exporting traceability

LoadNinja (Load)

Load Ninja is a performance and load testing framework, which is used for diagnosing the API and UI performance issues. LoadNinja has a built-in TrueLoad technology, which allows testing end-user experience by 60% faster than traditional performance testing by protocol.

LoadNinja core features:

  • The usage of thousands of real browsers
  • Test scripts recording as well as playback
  • Real-time diagnostics of issues

LoadNinja power feature:

Latest updates:

  • Downloadable CSV reports of manually stopped tests
  • Comparison of recorded pages and pages seen during playback

Optimizely (UI/UX)

Optimizely is a robust UI/UX testing tool, which helps test hypotheses on redesigning or implementing new features in sites or applications. This tool is designed to validate any changes before rollouts, diminishing potential fail risks.

Optimizely core features:

  • A/B tests build and run
  • Sequential testing of new features
  • FDR error control
  • Easy integration into the code with the help of snippets

Optimizely power feature:

  • The use of API to control the experiments, as well as monitor the statistics and experiments’ results at any time

Latest updates:

  • Optimizely Agent to deploy the framework to the infrastructure provider of choice

SonarQube (Security)

SonarQube is a security testing tool that provides codebase vulnerabilities detection and assistance during code reviews.

SonarQube core features:

  • A multi-language coverage (19 programming languages and counting)
  • Suspicious code snippet detection
  • Integration with GitHub, GitLab, Azure DevOps, Bitbucket

 SonarQube power feature:

  • Detailed vulnerabilities descriptions for the code hotfixes

Latest updates:

  • JavaScript SAST analysis & Azure DevOps Server onboarding
  • Enhanced C++ support

Cucumber (Acceptance)

Cucumber is a Behavior-Driven Development testing tool for end-user experience enhancement. Cucumber is now an umbrella name for several clusters: Cucumber Open (executable specifications validation), CucumberStudio (collaboration platform for BDD), and Cucumber School (training and tutorials).

Cucumber core features:

  • Integrates with the source control system
  • A perfectly suitable framework for those who aren’t into coding
  • An easy-syntax Gherkin language understandable for customers
  • Vast and business-oriented documentation
  • Compatible with a variety of languages, including Java and Python

Cucumber power feature:

  • The use of Behavior Driven Development

Latest updates:

  • CucumberStudio: a collaboration platform for BDD

SoapUI (Functional for API)

A headless functional testing tool with a data-driven approach and enhanced coverage. 

SoapUI core features:

  • API security testing for safe testing of public or third-party APIs
  • Scripted test creation
  • API performance testing with the «Test Virtual Users» tool 
  • Detailed and comprehensive reporting

SoapUI power feature:

  • Mocking for virtualization and pre-release API testing

Latest updates:

  • API Explorer – an instant debugger for API responses

TestNG (Unit)

TestNG is a Java-based unit testing tool, which was inspired by the popular tools NUnit and JUnit. Compared with the ancestors, TestNG has an amplified functionality, making it a multi-tool for integration and end-to-end testing. However, it is mostly suitable for unit testing.

TestNG core features:

  • Multithreaded test execution
  • Data-driven testing support
  • Logging and runtime by the means of JDK
  • Flexibly executed with the help of IDE plugin or by Apache Ant using build.xml

TestNG power feature: 

  • Concurrent testing: big thread pools with various methods and policies available

Latest updates:

  • Support of test retries via callbacks
  • Possibility to disable mandatory listeners loaded via SPIs

MantisBT (Manual)

MantisBT is an open-source bug tracker designed for QA engineers and testers specifically. It provides local and hosted environment installation and supports all the platforms that run PHP (Windows, Linux, Mac). 

MantisBT core features:

  • Built-in reporting option
  • Various integrations from time-tracking tools to chats
  • Suitable for desktop and mobile devices
  • Compatible with plugins of your choice
  • Multi-DBMS and multi-language library support

MantisBT power feature:

  • Roadmap tool with trackable progress for release planning

Latest updates:

  • Full PHP 8.0 compatibility

What Additional Tools Can QA Engineers Use To Ensure the Successful Outcome of Their Work?

Jenkins

A leading CI tool that can be successfully utilized for testing codebase changes in real-time. It is a great tool to incorporate into the testing process and automate some essential routines.

GitHub

GitHub is a version control repository used by millions of developers. Many QA tools can be linked to GitHub accounts so that reported defects are automatically recorded. For example, you might run manual tests on another testing tool while using GitHub for bug tracking.

Text Shortcode

Tmux is a popular virtual terminal multiplexer that lets you quickly change from several programs on the same terminal. You can separate them from one terminal and attach them to another one and use the command line interface without having to dump them out of one session to start another. It’s similar to GNU Screen but differs in that it’s licensed under Berkeley Software Distribution (BSD).

Conclusion

New frameworks are emerging every single month, the existing frameworks are improving and evolving. We hope that our list would make the task of picking the right testing tool more insight-driven. Feel free to suggest which tools turned out to be a great match for your projects!



Source link

r/web_design - Struggeling with designing larger forms
Strategy

Struggeling with designing larger forms : web_design


Hello everyone,

I am working as an fullstack dev at a small company where we don’t have web or UX designers, so I don’t have much experience in this area. I am currently working on a personal side project (a pwa where you can manage your recipes) where I want to focus on a clean layout and design throughout the whole application. My biggest problem are forms which have a good amount of inputs, like the one below. My first feeling is that

  1. The dialog itself feels “boring” and does not motivate the user to fill out the inputs.

  2. The actions are somewhat all over the place (image upload is in the upper part, image scanning is in the lower part and action buttons in the bottom)

  3. On smaller devices this dialog will be rendered in fullscreen and due to that you will only have the form without images or something. So it looks very neutral.

How can I work on this? Do you have certain sources for me to check out about this specific topic? Or maybe some points you can point out?

Thanks in advance!

r/web_design - Struggeling with designing larger forms



Source link

Simple Quarkus Example With CORS
Strategy

Simple Quarkus Example With CORS


In this article, we will discuss how we can enable the CORS filter with Quarkus. This is very well described at Quarkus Documentation. As per the documentation:

Quarkus comes with a CORS filter which implements the javax.servlet.Filter interface and intercepts all incoming HTTP requests. It can be enabled in the Quarkus configuration file, src/main/resources/application.properties:

Once we enable this, all requests will be allowed to reach Quarkus service endpoint. I will just demonstrate this with an example which is available at my GitHub repository.

Here, two folders are important.

1. corsRequest/src: HTML (index.html) and JavaScript (app.js): This is a simple HTML which accesses the Quarkus endpoint via app.js.

2. quarkusCorsRestEasy: Quarkus simple resteasy endpoint. One can also create this application from https://code.quarkus.io/ – there is no need to select any extension. This is a basic example.

Let’s now execute the example:

1. Run Quarkus Service. Here, we have set “quarkus.http.cors=true” in application.properties.

2. In app.js, we just invoke the backend Quarkus service.

3. Open the browser to view index.html within corsRequest/src.

4. In the browser, we will find the text “Hello RESTEasy quarkus example”. This matches GreetingResource.java, so all is well – the request from the browser is able to access Quarkus service.

5. Now, let’s set “quarkus.http.cors=false” in application.properties. Start the Quarkus service again.

6. If we open index.html again from browser, we will find text “script execution” as response in Page. In the Console tab of browser’s developer tool we will find errors like.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/hello-resteasy. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

That’s it. I hope this POC will help you to test out CORS with Quarkus quickly. Also, setting “quarkus.http.cors=true” may not meet your requirement as it enables all requests to go through. Thus, you would need more quarkus CORS headers as described in the Quarkus Documentation to even have more control of request from which domains should access endpoint.



Source link

Post image
Strategy

GameStop Rebrand Concept – Follow-up JUST FOR FUN : graphic_…


Ima just keep making this shit until Ryan hires me, or sends a cease & desist.

DISCLAIMER: This is unsolicited, conceptual fan artwork done by a designer who loves no two things more than design and video games!

So, after my last post, it took me a solid 4 days to get through all the comments and dms you apes sent me (thank you all so much) so I figured with all the drama today people might want to take a break from the charts to look at more imaginary visions of the future GameStop.

Previous post in the sub that shall not be named:
https://www.reddit.com/r/GME/comments/mglr2a/i_design_brands_for_a_living_heres_what_id_do/?utm_source=share&utm_medium=web2x&context=3

Now some new stuff!

This is JUST FOR FUN, so please don’t rage at me if you hate it. Last time a couple people reacted like I burned down the store where their dead mom bought them their first pokemon card. This is all pretend and was put together with a bunch of stock imagery and photoshop for the purpose of generating some discussion and new ideas around the company.

Also, most people reaching out either wanted to sell my shit through their website or were asking me for a job at my company. The polite answer to any/all of these requests is thanks but no thanks.

Post image

Flagship Retail Exterior – I like the stop.

Post image

Flagship Retail Interior – It’s cool but I’d only use the drive-thru so…

Oh and if they wanna sell a few million shares to raise money for some big bold swings, I’ll buy some more 😉



Source link