teleren/devto huggingface dataset:
Understanding Software Testing Services, Automation, and Testing Types
Software Testing Services
Published: 2020-01-17 14:36:25

Best software testing services will make all the difference between successful and unsuccessful SaaS products. A program with features very similar to other people can be a success given it functions nicely without problems and makes the user feel happy using it. Your testing procedure can make or break the program; make sure that this aspect is cared for by a team of expert persons.

Whether you're doing QA for your SaaS application on your own company or give it to a renowned [software testing services](https://www.testingxperts.com/), there's some vital kind of tests that needs to be carried out. They're enlisted below:

**A map of the several kinds of testing**

**Functional**

This is the most elementary type of testing, in which the application gets categorized into different parts, and then each is checked separately. For instance, let's take the case of a vehicle tracking application. The app will be divided into all the different modules, like reports, geographical location, driver details, hunt, etc..

**Integration**

Here you assess whether different elements of the system, when integrated together, function correctly. From the monitoring application, we'll test whether the customer receives a message once the payment is due (integration with SMS gateway and email server), be in a position to perform the payment within the program, can fetch information from third-party sources using API's, etc..

**System**

Here you assess how the whole application works. That is exactly what the end-user will face, which you'll know about. Even if operational and integration test cases were passed, you are going to have to make sure it works together as expected, in the system.

**Regression**

This one checks whether the system can take a growing load of several users. Your automobile tracking application might be working correctly when there's one truck to be monitored. What when there are 100? The system may crash if regression testing isn't done. This kind of testing does, it creates many virtual users and then assesses whether the machine can take care of all of them without impacting the program speed.

**Security**

Alright, your application met each of the checkpoints. Imagine if a couple of months following the launch, a hacker stole all of the passwords and sensitive information? This actually happens because expecting a hacker not to steal your data since you didn't harm, is like expecting a tiger not to attack you because you're a vegan. There are numerous things like cross-site scripting, SQL injection, database layouts, etc. which developers usually don't take of when making the program. For data-sensitive applications, it's highly suggested to find safety testing completed.

**Automation**

It is suggested to automate this procedure by using tools like Rational AppScan or even Apache JMeter, which will create scripts and then you are able to conduct the tests. It saves a lot of effort and time in the long run.
Modelling M:N Relationship: User-Device
Tags: database, modelling
Published: 2020-01-17 14:28:45

서비스 설계할 때 가장 처음에 만들었던 테이블들은 user, device였다. 타이핑의 압박감으로 철자를 줄여서 user -> usr, device -> dvc 등으로 사용하곤 하였다. 사용자와 단말의 관계는 기획자와 개발자의 반복된 회의 도중에 도출되는 경우가 많다. 회의 내용을 엿들어보자.

* 우리 서비스는 가입자가 1억은 될 거예요.
* 요즘 사용자 1명이 여러 단말을 가지는 경우는 흔하잖아요. 스마트폰, 태블릿, PC, TV, ... 그래서 multi-device 지원이 반드시 고려되어야 해요.
* 반대의 경우도 있어요. 예를 들어 태블릿의 경우 한 가족 구성이 공용으로 사용하잖아요. 그리고 소규모 머천트에서도 직원들끼리 공유하는 경우가 많아요. 그래서 1 단말 당 복수 유저의 경우가 고려되어야 해요.

그래서 사용자:단말은 M:N 관계가 되고 데이터베이스에 표현하려면 각각 1:N 관계인 usr, usr-dvc, dvc 테이블들을 만들게 된다.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/wpby38fi3v9lwpmo4emp.png)

개념적 모델에서는 user:device=M:N의 관계이고, 사용자는 반드시 단말을 갖고 있고, 단말은 반드시 소유자가 있다고 가정한다.
M:N 관계는 개념상 존재하는 엔터티 사이의 관계이고 실제 물리적인 DB에 표현하려면, usr, dvc 테이블 사이에 관계테이블 usr_dvc을 새로 추가해서 1:N,M:1이 되도록 만들어야 한다. 이렇게 되면 usr는 하나 또는 복수의 usr_dvc를 가지게 되고 반대로 usr_dvc는 단 하나의 usr만 가지게 된다.
Melatonin Busting Glasses
Tags: inventing, electronics, light, engineering
Published: 2020-01-17 14:20:16

_Originally posted on July 19th, 2019_ ([more info](https://dev.to/adamkdean/migrating-to-dev-to-190))

Yesterday morning I read about Amazon's pricing mistake, where folks were ordering thousands of dollars worth of photography equipment for about 90 dollars per item. I checked the UK's Amazon site but the prime day was over, but something caught my eye. Scrolling down, there was a man wearing a futuristic looking band around his brow, emitting blue lights. This was Amazon Launchpad. But, as I searched for the item within Amazon Launchpad, I couldn't find it.

I decided to enlist the help of Yugesh, the most excitable Amazon representative I've ever spoken with. He decided to do some research with me, and discovered the device was a pair of Light Therapy Glasses. Not very exciting, I thought, and especially not for £260+.

As I looked into it, I discovered that blue light, especially around 460nm, stimulates intrinsically photosensitive retinal ganglion cells (ipRGCs) within our eyes, which suppress melatonin production, leading to enhanced wakefulness and reduced tiredness. It makes sense really. They say not to use your phone an hour before bed. To use the feature that reduces blue light, what I think of as the Lux effect.

But what if we want to feel awake?

So I decided to design and build some melatonin busting glasses, for a fraction of the price. I purchased some Lithium coin batteries, some disposable glasses, and dug out my electronics chest to do some inventing. One of the first things I had to do was construct some blue LEDs that wouldn't blind me. I needed diffused light but all I had was some _ultrabright LEDs_. So, I took some plastic from bags of zener diodes I had bought from CPC years and years ago, stretched it over the LEDs, and then secured it with some heatshrink tubing.

![custom LEDs](https://i.imgur.com/MLzSARQ.png)

Great, then, I had to construct the power cells. I used two sets of 2 x 3.2v Lithium coin batteries, which I sealed with hot glue and electrical tape. I wasn't too keen on heating the batteries in order to solder the leads onto them directly, what with being in an apartment and not a lab. I did try, but it was a half-attempt, I already knew the solder wouldn't stick.

After this, I mounted some LED mounts onto the glasses, a small switch, the power cells at each side, so the weight is distributed, and then went ahead and wired it up. The result? Melatonin Busting Glasses. A little bit rough around the edges but I always think of it like the poetic-license equivalent of engineering. Prototypic-license.

![Finished prototype](https://i.imgur.com/lgh678Q.png)

Four gloriously diffused but bright blue LEDs shining into the periphery of your eyesight.

![Melatonin-be-gone](https://i.imgur.com/3z6I3LB.png)

Disclaimer: I have about as much proof that these work as the producers of these types of glasses on Amazon have. I've now given these prototypes to a test subject who will try them out for a while and report back any noted effects. Please be careful shining lights into your eyes.
Meet The New dbForge Azure DevOps Plugin
Tags: azure, sql, database, devops
Published: 2020-01-17 14:19:30

---
title: Meet The New dbForge Azure DevOps Plugin
published: true
description: Devart extended dbForge DevOps Automation solution with Azure DevOps plugin. Now users can benefit from continuous integration in Azure DevOps.
tags: Azure, SQL, database, DevOps
---
*Devart extended dbForge DevOps Automation solution with Azure DevOps plugin. Now users can benefit from continuous integration in Azure DevOps.*

![dbForge DevOps Automation Azure DevOps Plugin](https://blog.devart.com/wp-content/uploads/2020/01/devops_azureazure-1.png)

Devart, a recognized vendor of professional database management software for developers and DBAs, extended the range of supported CI systems with Azure DevOps. 

The new plugin for [dbForge DevOps Automation](https://www.devart.com/dbforge/sql/database-devops/) allows configuring the CI process quickly and easily by narrowing it down to the predefined steps from the extension in any sequence. The steps represent basic elements of the workflow design and use a set of [dbForge SQL Tools](https://www.devart.com/dbforge/sql/sql-tools/) for the workflow execution.

**dbForge DevOps Automation Azure DevOps Plugin** helps implement the best DevOps practices in every phase of the database development lifecycle. The extension is aimed at maximizing productivity by enabling teams to organize database delivery in a reliable and compliant way.

Learn more about the recent release by visiting Devart’s blog article https://blog.devart.com/benefit-from-continuous-integration-in-azure-devops-with-the-new-dbforge-plugin.html

**About Devart**

Devart is one of the leading developers of database tools and administration software, ALM solutions, data providers for various database servers, data integration and backup solutions. The company also implements Web and Mobile development projects.
For additional information about Devart, visit https://www.devart.com/
The Antipattern Antipattern
Tags: antipatterns, architecture, programming
Published: 2020-01-17 14:07:32

---
title: The Antipattern Antipattern
published: true
description: When is an antipattern an antipattern?
tags: antipatterns, architecture, #programming
---

One common antipattern in software engineering is the Antipattern Antipattern:

Thinking that the term "antipattern" means "never use this pattern."

<blockquote>
"An antipattern is just like a pattern, except that instead of a solution it gives something that looks superficially like a solution, but isn't one."
<div><br><small>Andrew Koenig, Journal of Object-Oriented Programming, April 1995</small></div>
</blockquote>



**Antipatterns are disguised as good solutions.** The danger is when the pattern is applied without evaluating the alternatives. Antipatterns become antipatterns when:

The patterns results in unintended and undesired outcomes **and** another pattern exists that is a repeatable and effective solution.

That means that **antipatterns are context-dependent**. Antipatterns can be the best solution when other patterns *do not* exist or are *not* effective solutions. The context of the problem you want to solve *and* the system you are working in can change an antipattern into a pattern.

So, what's the fix to the Antipattern Antipattern?

Understanding that more often than not the antipattern will *not* be the solution you want. But *if* the evaluated alternatives are *not* effective, the antipattern can be used with the knowledge of the potential desired and undesired outcomes.
There is a bug on your server (user said)
Tags: career, beginners, java, math
Published: 2020-01-17 13:51:21

_Hopefully I'll compile in future a list of **"most annoying things beginners do"** (and perhaps even later the same about "seniors do") - but for now here is one recent._

So my side-project is a small site with programming problems and simple checker for users' answers - and yesterday I got [the post](https://www.codeabbey.com/index/forum_topic/351fcadb37047faffbe71d9d397f7de6) in the forum saying

**It strictly seems me that there is a BUG ON YOUR SERVER**

Moreover, this dear fellow posted this to several past threads about the same problem. I initially thought something was completely broken! (no)

### Now what it was about?

One of the first task is like this - we are given integer number and are asked to multiply or add something several times, then at last take modulo and print result, e.g.

```
input data:
5
+ 3
* 7
+ 10
* 2
* 3
+ 1
% 11

answer:
1
```

This fellow had written the code, tested it on small example, executed on larger example given by the site, sent the answer. And it was **WRONG**.

It's not exactly the same as "Works on my machine" problem. It works on either machine with small numbers and don't work with large numbers.

Fellow even suspected there could be problem with value overflow and used `double` values (this won't help, server generates example which is large enough).

I tried to answer, to explain - but I'm not sure it could be helped...

**Most irritating is that:**

- problem statement asks to read carefully dedicated article on modular arithmetic
- it was solved by 4000+ users already (with no "bug on server")
- there are multiple posts on this task in the forum and search box to find them

### Conclusion

Well, what I want to say. One of the important things to become a good developer (and have fat salary) - learn to be more **logically self-critical**. When we are paid for work, we can't just complain to boss that "there is bug in compiler / server / linux / everything-but-not-me" (unless we nail it down).
TwitCode: Un microblog para desarrolladores
Tags: productivity, twitcode
Published: 2020-01-17 13:47:42

<center><hr>Post disponible en [inglés](https://dev.to/aicoutos/twitcode-a-microblog-for-developers-2909), [español] (https://dev.to/aicoutos/twitcode-un-microblog-para-desarrolladores-53k4) y [portugués] (https://dev.to/aicoutos/twitcode-microblog-para-desenvolvedores-24bi)<hr></center>Los desarrolladores saben que las redes sociales tradicionales son una gran distracción, especialmente debido al contenido que se escapa de nuestra área.

## Nace TwitCode
[![Texto alternativo](https://thepracticaldev.s3.amazonaws.com/i/95uniksxx0k2sul71izg.png)](https://twitcode.com)[TwitCode] (https://twitcode.com) es un sistema microblogging creado específicamente para desarrolladores. Algunas de sus características incluyen:
- Mensajes de hasta 270 caracteres (como en Twitter)
- Mensajes con syntax highlighting (27 idiomas)
- Chat (entre usuarios que se siguen)
- Issues (soporte de hashtag con ID de mensaje)
- Forks (similar al retweet de Twitter)
- Stars (similar a las estrellas Github)
- Interfaz traducida (español, inglés y portugués)

Se pueden hacer críticas y sugerencias aquí. Puede acceder a TwitCode en https://twitcode.com.
TwitCode - A microblog for developers
Tags: productivity, twitcode
Published: 2020-01-17 13:45:00

<center><hr>Post available in [english] (https://dev.to/aicoutos/twitcode-a-microblog-for-developers-2909), [spanish] (https://dev.to/aicoutos/twitcode-un-microblog-para-desarrolladores-53k4) and [portuguese] (https://dev.to/aicoutos/twitcode-microblog-para-desenvolvedores-24bi)<hr></center>Developers know that traditional social networks are a huge distraction especially because of the content that runs away from our area.

## TwitCode was born
[![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/95uniksxx0k2sul71izg.png)](https://twitcode.com)[TwitCode](https://twitcode.com) is a system microblogging created specifically for developers. Some of its features include:
- Messages up to 270 characters (as on Twitter)
- Messages with syntax highlighting (27 languages)
- Chat (between users that follow each other)
- Issues (hashtag support with message id)
- Forks (similar to Twitter retweet)
- Stars (similar to Github stars)
- Translated interface (Spanish, English and Portuguese)

Criticism and suggestions can be made here. You can access TwitCode at https://twitcode.com.
Designing GraphQL Schemas: Mutations
Tags: graphql, webdev
Published: 2020-01-17 13:40:58

As part of my [learning in public](https://www.swyx.io/writing/learn-in-public/) drive for the new year, I thought I'd write down some notes as I take in [Nik Graf's](https://twitter.com/nikgraf) egghead.io course on [Designing GraphQL Schemas](https://egghead.io/courses/designing-graphql-schemas-99db).

This will be a series of short posts based on my notes. I'm continuing here with some notes on mutations.

## Naming

It is a good convention to begin the mutation's name with a verb to describe the change it makes, e.g. `deleteRecords`, `createPage`, `updateItem`. Use camel case.

## Input

It is best to provide a single, non-nullable input object to a mutation. This makes it easier to add arguments. 

The convention for an input is it should follow the name of the mutation  but with the postfix `Input`. So the input for a `createPage` mutation would be `CreatePageInput`. Use Pascal case because they define an input type.

For example:

```graphql
input CreatePageInput {
 id: ID!
}
```

## Payload

A mutation should also return a single, non-nullable payload object. A payload can then return any data relevant to the enacted mutation.

The convention for a payload is it should again follow the name of the mutation but with the postfix `Payload`. So the payload for a `createPage` mutation would be `CreatePagePayload`. Use Pascal case because they define a type.

For example:

```graphql
type CreatePagePayload {
 page: Page
}
```

## Usage

Here is how we would put all those parts together in our schema:

```graphql
type Mutation {
 createPage(input: CreatePageInput!): CreatePagePayload!
}
```

And here is how we would use the mutation:

```graphql
mutation CreatePageMutation($input:CreatePageInput!) {
  createPage(input: $input) {
    page {
      title
    }
  }
}
```
Full Stack Machine learning on AWS: Reading Text from an Image with AWS Amplify & Amazon Rekognition
Tags: aws, machinelearning, react, javascript
Published: 2020-01-17 13:34:59

---
title: Full Stack Machine learning on AWS: Reading Text from an Image with AWS Amplify & Amazon Rekognition
published: true
description: In this video, we'll create a new React app, initialize a new AWS Amplify project, and add image recognition to read text from images using Amazon Rekognition and Amazon Textract.
tags: aws, machine learning, react, javascript
---

In this video you'll learn how to use AWS Amplify, Amazon Rekognition, and Amazon Textract to add machine learning capabilities to your next React application.

The application we'll build will allow users to upload an image to read text from the image. The app will then send the image to the Rekognition or Textract API and return the response back to the client. The React app will then render the response to the UI in the form of text.
Angular - A Complete Guide
Tags: angular
Published: 2020-01-17 13:32:54

Angular is an open-source, front end framework developed by Google and maintained by its team of developers. It is the oldest framework available. It was released as AngularJS in 2010 when there was no other framework even in the closest distance.

Because of this, it gained a lot of popularity but it had many problems with it like laggy software, poor optimization, slow speed, and high power consumption.

To resolve this, Angular 2 was launched in 2016 which brought in new changes with it but its laggy nature didn't go away.

All these problems were addressed by the previous version of Angular, Angular 8. It removed the problems by using Ivy, a new compiler for Angular. The latest version is Angular 9 that was launched in November last year. 

<a href="https://angular.io/">Angular</a> works on TypeScript rather than Javascript which most modern-day use. When compared with other frameworks, Angular can be pretty difficult for beginners.

<img src="https://codersera.com/blog/wp-content/uploads/2020/01/Angular-Developer-USA.png">

Advantages of Angular

1. It has large community support due to Google's backing.
2. It is easy for those who have knowledge of TypeScript.
3. Angular contains built-in functionalities because of which it doesn't depend on third-party libraries.
4. It contains a large number of tools to perform operations.
5. It allows for the reuse of components.
6. Developers of Angular are well paid.

Disadvantages of Angular

1. It has a steep learning curve i.e. it requires a good amount of study before you start coding on it.
2. You must know TypeScript to do programming on it.
3. It has a large bundle size of 500KB, making it the heaviest of the lot.

Some of the frameworks giving competition to Angular are React and Vue. You can do a <a href="https://codersera.com/blog/angular-vs-react-vs-vue">comparison</a> between them to find which one is suitable for you.
Designing Graphql Schemas: Queries
Tags: graphql
Published: 2020-01-17 12:29:09

As part of my [learning in public](https://www.swyx.io/writing/learn-in-public/) drive for the new year, I thought I'd write down some notes as I take in [Nik Graf's](https://twitter.com/nikgraf) egghead.io course on [Designing GraphQL Schemas](https://egghead.io/courses/designing-graphql-schemas-99db). 

This will be a series of short posts based on my notes. Starting, in this post, with some good practice for queries and naming fields.

## Naming

Managing the fields in a big GraphQL schema comes down to maintaining good naming conventions that make modification and evolution easy.

### 1. Be specific

Fields should have specific names. For example, if we name a field image and its value is the url of the image of type String:

```graphql 
type Product {
 image: String
}
```

We might run into problems if we then want to add more fields relating to the image such as a text alternative or description. If we want to change the image field to an Image type with several fields it would cause a breaking change for our clients.

Being specific from the beginning makes the change a lot easier:

```graphql
type Product {
 imageUrl: String
}
```

Now we can more easily make the change we want without the risk of angry clients wondering why their api broke:

```graphql
type Image {
 url: String!
 altText: String
}

type Product {
 imageUrl: String @deprecated( reason: "Use 'image { url }'" )
 image: Image
}
```

### 2. Optional Arguments

In a query, optional arguments can cause issues.

For example, you might want to query a page by id or by slug. To do this, we could make both arguments optional:

```graphql
type Query {
 page(id: ID, slug: String): Page
}
```

We want to return a page based on either the id or the slug but what happens if we get neither or both? By making these values optional either of these cases is possible.

An alternative is to name multiple queries that take different arguments. Based on our page example:

```graphql
type Query {
 page(id: ID!): Page
 pageBySlug(slug: String!): Page
}
```

This prevents those problematic cases and makes it clearer to the client what arguments the query expects.
How does Windows detect my external monitor position?
Tags: discuss
Published: 2020-01-17 13:08:01

At home my external monitor is above my laptop. At the office it is to the right (well, to be fair, it's Ayja's monitor, but she is having a blast in San Antonio, soooo …). Who can fill me in on the technical bits where Windows knows the difference and remembers their positions? This is a rabbit hole I am willing to jump down!
Service mesh architecture with Istio
Tags: istio, kubernetes, microservices, devops
Published: 2020-01-17 13:00:25

---
title: Service mesh architecture with Istio
published: true
description: Service mesh is an infrastructure design in which all of a system’s services are accompanied by proxies and logic management components. Often used with microservice orchestrators like kubernetes,  if you want to learn more about kubernetes go check out this article.

tags: Istio, Kubernetes, microservices, DevOps
---

Service mesh offers granular control over your infrastructure network, allowing for smoother deployments, extra security, and observability on all your traffic. These features are useful for fast development rate in agile environment and allow developers to focus on the feature of their application.

Service mesh allows for teams to quickly understand an infrastructure due to standardization of policies. Allowing big infrastructure to easily manage turnover and lose of knowledge.  

A couple of service mesh implementation exist like Isitio, Linkerd, Consul, and Kong. We will focus today on Istio which was introduced by Google and IBM in 2017 and is the most featureful service mesh.

Istio is a service mesh that is made up of two planes: the data plane and the control plane. 


To find out more about these planes go checkout the rest of the article here : https://www.padok.fr/en/blog/service-mesh-architecture-istio