teleren/devto huggingface dataset:
Web Monetization - What it is, What it ain't
Tags: webmonetization, gftwhackathon
Published: 2020-05-15 01:20:35

###**Web Monetization (WM) is not for shopping carts!**

WM is **not** for traditional e-commerce checkout methods. For shopping carts there is a completely different spec called Payment Request/Payment Handler.

The Web Monetization spec seems very preliminary, like a early work in progress. Yet I am grateful to get such an early look at what it might become. It holds a vast amount of promise. There are many, many open questions that I will get to as I learn more. I have to take it as it is. Final analysis will come later.

The current design of Web Monetization is easy to implement. However, as currently implemented, it seems to lack the ability to control what is happening in the back ground. The monetization experience is almost invisible. Probably a primary design goal. Laudable. But also frustrating for control freaks not to see and control the payment stream. For example, there doesn't seem to be a way to specify an amount to send to a web site. I suspect there are a bunch of things going on under the covers and I just don't see them yet. Coil (my monetization provider) seems to be controlling what the web site gets from me and at what rate.

Anyway, I see two primary use cases for Web Monetization, as proposed.

1) Adjust user experience according to the user's desire and ability to pay.

As a web site owner, you will want to detect and respond to the user's payment stream. If user is streaming payments to you then you better do something, otherwise why would they pay you? Shut down ads for paying customers. Provide paywalls for premium content. This is all basic user interface design in the monetization world. All web site owners will need to make basic considerations for monetized users.

2) Charge for Streaming content.

Streaming content is where this Web Monetization spec holds the most interest for me. Streaming videos, movies, group chats. The frustrating part of this is that I don't see how to control all the details yet.  

Also, I should break it down this way.

A) If you have your own web site then you have control over the monetization policies. You have the `monetizationprogress` event as a place to enforce your policies. That's good. But if your policies get complex then there will be a lot of code to write.

B) If you are a content creator and you can't afford your own web site and custom programming to set up your own monetization policies then you are going to be stuck with whatever your platform provider policies are.

It is all about policies and control. Basically, for the consumer, its my wallet, my money. I want control over my wallet.

For content creators, they want control over their content and to set those policies for content delivery.

In other words, Web Monetization as currently implemented, is not the ideal peer-to-peer electronic cash system.

Its going to get interesting as we work through this. All thoughts and opinions are subject to change.
Tips Tingkatkan Skill dalam Bermain AduQ
Tags: untungqq, bandarq, domino99, aduq
Published: 2020-05-15 01:09:22

<p>Jika anda ingin menang dan sukses dalam permainan aduq dan juga yang lainnya. Nah jika anda memang ingin meningkatkan skill anda dalam bermain, maka anda harus tahu apa saja sebetulnya yang harus anda lakukan. Dengan mengetahui itu semua, maka akan sangat bagus dan juga akan sangat disarankan sekali untuk anda bisa memahami tentang apa yang paling bisa dijadikan untuk apa yang paling bisa diandalkan.</p>
<p>Sebaiknya anda baca beberapa tips tertentu yang akan memungkinkan anda bisa melakukan beberapa pertimbangan lain agar bisa lebih sukses lagi dalam apa yang mungkin kiranya bisa akan sangat membantu sekali untuk anda bisa sukses di situs <a href="http://untung-qq.net/">UntungQQ</a>. </p>
## Trik Mudah Jadi Player Aduq yang Expert
<p>Anda akan mengerti dan paham betul dengan apa yang harus dilakukan sampai anda bisa mendapatkan skill anda meningkat dari apa yang sebelumnya.  Nah dalam hal ini, anda harus bisa mengerti dan mengetahui dengan pasti beberapa tips yang dimaksud tersebut. beberapa diantaranya adalah sebagaimana yang dijelaskan dalam beberapa poin dibawah ini:</p>
### Perbanyak Bermain di UntungQQ
<p>Agar anda bisa memiliki skill yang mumpuni, maka cara yang paling baik dan paling utama yang bisa anda lakukan adalah dengan menambah jam terbang. Semakin lama jam terbang anda, maka akan semakin bagus juga hasil yang bisa anda dapatkan lagi nantinya. Ya, semakin lama dan sering anda bermain, maka akan semakin bagus juga nanti hasil yang bisa anda dapatkan dari semuanya itu. </p>
### Baca Banyak Informasi
<p>Cara lain yang juga bisa anda lakukan adalah dimana anda sebaiknya bisa membaca banyak sumber informasi yang ada.  ada banyak sumber penting yang bisa anda perhatikan dengan baik dari banyak sumber itu yakni yang berhubungan erat dengan banyak pedoman dan banyak yang lainnya. </p>
### Pelajari Banyak Tutorial
<p>Nah hal yang paling bagus sesuai dengan apa yang harus anda lakukan adalah dengan mencoba banyak hal yang baru lewat tutorial. Terkadang di Youtibe juga anda bisa menemukan banyak sekali tutorial tertentu yang akan memungkinkan anda bisa mendapatkan semua informasi dengan baik dan benar.</p>
<p>Nah jika anda bisa melakukan semua itu dengan baik, maka ini akan bisa sangat menguntungkan dan bisa juga akan sangat membanggakan dalam main aduq dibanding dengan yang lainnya.</p>
What’s your alternative solution? Challenge #44
Tags: challenge, javascript, codenewbie, learntocode
Published: 2020-05-15 01:02:55

# About this series

This is series of daily JavaScript coding challenges... for both beginners and advanced users.

Each day I’m gone present you a very simple coding challenge, together with the solution. The solution is intentionally written in a didactic way using classic JavaScript syntax in order to be accessible to coders of all levels.

Solutions are designed with increase level of complexity.

## Today’s coding challenge

```
Implement the Caesar cypher

```

(scroll down for solution)

## Code newbies

If you are a code newbie, try to work on the solution on your own. After you finish it, or if you need help, please consult the provided solution.

## Advanced developers

Please provide alternative solutions in the comments below. 

You can solve it using functional concepts or solve it using a different algorithm... or just solve it using the latest ES innovations.

By providing a new solution you can show code newbies different ways to solve the same problem.

## Solution

```javascript
// Solution for challenge39

var text = "I LOVE JAVASCRIPT";
var textEnc = encrypt(text, 13);
var textDec = decrypt(textEnc, 13);

println(text);
println(textEnc);
println(textDec);

// Decrypt a message by using the same encrypt function
// ... but using the inverse of the key (e.g. rotate in the other direction)
function decrypt(msg, key)
{
    return encrypt(msg, key * -1);
}

// Function will implement Caesar Cipher to
// encrypt / decrypt the msg by shifting the letters
// of the message acording to the key
function encrypt(msg, key)
{
    var encMsg = "";

    for(var i = 0; i < msg.length; i++)
    {
        var code = msg.charCodeAt(i);

        // Encrypt only letters in 'A' ... 'Z' interval
        if (code >= 65 && code <= 65 + 26 - 1)
        {
            code -= 65;
            code = mod(code + key, 26);
            code += 65;
        }

        encMsg += String.fromCharCode(code);
    }

    return encMsg;
}

// Modulo function: n mod p
function mod(n, p)
{
    if ( n < 0 )
        n = p - Math.abs(n) % p;

    return n % p;
}

```


To quickly verify this solution, copy the code above in this coding [editor](https://codeguppy.com/code.html) and press "Run".

> Note: The solution was originally designed for [codeguppy.com](https://codeguppy.com) environment, and therefore is making use of `println`. This is the almost equivalent of `console.log` in other environments. Please feel free to use your preferred coding playground / environment when implementing your solution.
What Exactly Do CyberSecurity Professionals Do 🤔?
Tags: security
Published: 2020-05-15 00:57:35

---
title: What Exactly Do CyberSecurity Professionals Do 🤔?
published: true
description: In this blog post I will go through the different roles in cybersecurity
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/io53wzdpzoh9942yofl3.png
tags: security
---

We've heard about them but we know little of what they do.They are often assumed to be the James Bond' of the internet, fighting the bad guys.

![James Bond](https://media.giphy.com/media/zFVvRICqVAJri/giphy.gif)

In this blog post we'll go through some of the different roles typical to a cybersecurity organisation.

- **Chief Information Security Officer(CISO)** : A CISO is the head of Information Security Division and they drive the security strategy of the organisation. 
- **Information Security Architect** : They have a deeper understanding of different layers of the system, security policies to put in place.Their role is very crucial during the early stages of security life cycle.
- **Information Security Analyst** : Performs information security assessments, analyses events, alerts and any information that could be useful to identify threats.At the end of the assessment a threat mitigation documentation is created.
- **Information Security Auditor** : Their role is to enforce security compliance, reduce risk, and manage potential security threats.
- **Security Software Engineer** : They create security software applications and they have extensive knowledge of programming languages and computer networks.
- **Penetration Tester/Ethical Hacker** : They simulate cyber attacks on already established security systems and identify vulnerabilities before hackers can exploit them.

We'll leave it at that for now 😊!!


![](https://dev-to-uploads.s3.amazonaws.com/i/ooq5ht8pln65ovuv384i.gif)
Help: I am looking for some online tool for retrospectives 
Tags: Question, help
Published: 2020-05-15 00:56:48

Hi,

I am the Agility Master for our Kanban Team and in our Retrospectives, we would like to follow some basic approach, where we collect, group and vote on topics to the classic „What went well“, etc.

Now the first part is easy. There are tons  of tools, that help you here. 

Coming to the hard part: We also would like to do root cause analysis for two to three voted groups and I am unable to find any tool, which has it all.

We are helping ourselves currently with MS Whiteboard, which works for us, but it could be better.

Any suggestions?
Criando atalho para comandos Linux – ‘alias’
Tags: linux, ubuntu, alias
Published: 2020-05-15 00:42:12

Essa é uma dica bem simples mas que ajuda muito no desenvolvimento em ambiente linux, como criar atalhos para comandos na linha de comando do linux.

Por exemplo, criei um comando para acessar minha pasta de desenvolvimento local, adicionando o seguinte no arquivo ~/.bash_aliases (caso não exista, você deve criar com o comando ` touch ~/.bash_aliases `):

` alias localdev='cd /var/www/local.dev/public_html/' `

Onde:

**alias** é o comando usado para criar o atalho;
**localdev** é o nome do atalho que eu criei;
**‘entre aspas’** esse é o comando que você quer encurtar, criar o atalho.

Com isso, sempre que abro meu terminal e quero acessar a pasta com meus projetos em desenvolvimento, basta digitar *localdev* e pressionar *enter*.

Originalmente publicado no meu blog [everaldo.dev](https://everaldo.dev/)
Recoil - an experimental state management library for React apps open-sourced by Facebook
Tags: react, javascript, reactnative
Published: 2020-05-15 00:31:08

Recoil lets you create a data-flow graph that flows from atoms (shared state) through selectors (pure functions) and down into your React components. Atoms are units of state that components can subscribe to. Selectors transform this state either synchronously or asynchronously.

Here is the [repo](https://github.com/facebookexperimental/Recoil) and if you want to jump straight to the [Getting Started](https://recoiljs.org/docs/introduction/getting-started/) to see how it compares to other state management options.

And here's an awesome video from the library author explaining a bit more about Recoil from today's React Europe livestream.

{% youtube fb3cOMFkEzs %}

The docs are incomplete yet, but this looks very promising and easy to use.
Five Things you Should Know (by Heart) about var, let, and const in JavaScript
Tags: javascript
Published: 2020-05-15 00:30:17

Today, I want to refresh our memory with some basic notions about `var`, `let`, and `const`; the keywords we use almost every day when we are coding our software in JavaScript.

## -1- They are all used to create bindings, aka variables

Do you remember those things that help us catch and hold values? We use these three words for that purpose, but they don't all mean the same thing.
* `var` (short for "variable"): old-fashioned, this is the way we used to do in pre-2015 JavaScript
* `const` (short for "constant"): the modern way of creating bindings. 
* `let`: modern way too

```javascript
var name = "Sarah";
const greeting = "Hello";
console.log(greeting + name);
// Hello Sarah

let age = 1;
console.log("You're " + age);
// You're 1

```

## -2- Only `var` is global scope
Just to recall you, the visibility and lifetime of a given variable is determined by its scope. As such, a variable is not visible/accessible outside the scope in which it is declared.

A variable has global scope if it is declared outside a function, block... scope. It can be accessed from everywhere in your program.

```javascript
userScore = 4;
var userScore;
```

## -3- They are all function scope
This means that you cannot access them outside the function.

Let's try to access var out of the function `doSomething()`...

```js
function doSomething() {
    var someVar = "Something";
}

console.log(someVar)
```
... if you run this code, you'll get a `ReferenceError` saying that `someVar is not defined`.

You'll get the same thing if you try to replace `var` by `let` or `const`.

## -4- Only `const` and `let` are block scope

The block scope is defined with curly braces (`{}`).

```js
function listFruits () {
    if(true) {
        const fruit1 = "orange"; //it exists in block scope
        let fruit2 = "avocado"; //it exists in block scope
        var fruit3 = "banana"; // it exists in function scope
    }

    console.log(fruit1);
    console.log(fruit2);
    console.log(fruit3);
}

listFruits();
//===result:
//error: fruit1 is not defined
//error: fruit2 is not defined
// banana
```
As you can see in the code above, only `fruit3` is accessed; because `var` does not have block scope.   

## -5- `let` and `var` can be reassigned but `const`

`const` is still unique as long as the program lives. `var` and `let` can be reassigned as much as needed.


```javascript
var name = "Sarah";
const greeting = "Hello";
console.log(greeting + name);
// Hello Sarah

const greeting = "Hi"; // if we try to set again greeting, we get an error
// Uncaught SyntaxError: Identifier 'greeting' has already been declared
var name = "Patience";
console.log(greeting + name)
// Hello Patience

let age = 1;
console.log("You're " + age);
// You're 1

let age = 5; // we reset the age but no error
console.log("You're " + age);
// You're 5
```
Basics of RabbitMQ
Tags: rabbitmq, messagingqueue, queues, exchange
Published: 2020-05-14 18:00:09

<h2>Introduction to RabbitMQ</h2>
<b>What is RabbitMQ?</b>
<a href="https://onlinetutorials.tech/basics-of-rabbitmq/" target="_blank">RabbitMQ</a> is an Advanced Message Queuing Protocol(AMQP) and it is one of the most popular cross-platform messaging broker and it is really open source.
<a href="https://onlinetutorials.tech/basics-of-rabbitmq/" target="_blank">RabbitMQ</a> is also one of the easiest way of transmitting data between different programming languages (Example C# front-end can interact with Java application.)
The RabbitMQ is internally built on Erlang which is used for internal memory management of <a href="https://onlinetutorials.tech/basics-of-rabbitmq/" target="_blank">RabbitMQ</a>.

<b>What is AMQP?</b>
The Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented application.
Some Defined Features of AMQP:
1.Message orientation
2.Queuing
3.Routing (including point-to-point and publish-and-subscribe)
4.Reliability and security

Let's learn <a href="https://onlinetutorials.tech/basics-of-rabbitmq/" target="_blank">RabbitMQ</a> in detail step by step:
1.<a href="https://onlinetutorials.tech/basics-of-rabbitmq/" target="_blank">Basics of RabbitMQ</a>
2.<a href="https://onlinetutorials.tech/rabbitmq-exchange-in-details/" target="_blank">RabbitMQ Exchanges</a>
3.<a href="https://onlinetutorials.tech/how-to-create-exchange-in-rabbitmq/" target="_blank">How to create RabbitMQ Exchange</a>
4.<a href="https://onlinetutorials.tech/rabbitmq-queues-in-detail/" target="_blank">RabbitMQ Queues in Detail</a>
5.<a href="https://onlinetutorials.tech/how-to-bind-rabbitmq-queue-to-exchange/" target="_blank">How to bind RabbitMQ Queue to Exchange</a>
5.<a href="https://onlinetutorials.tech/how-to-create-users-in-rabbitmq/" target="_blank">How to create users in RabbitMQ</a>

Visit us for more tutorials:
<a href="https://onlinetutorials.tech/category/java-tutorials-online-tutorials/" target="_blank" rel="dofollow">Java Tutorial</a> 
<a href="https://onlinetutorials.tech/category/python-tutorials-from-onlinetutorials-tech/" target="_blank" rel="dofollow">Python Tutorial</a> 
<a href="https://onlinetutorials.tech/category/rabbitmq-tutorial/" target="_blank" rel="dofollow">RabbitMQ Tutorial</a> 
<a href="https://onlinetutorials.tech/category/spring-boot/" target="_blank" rel="dofollow">Spring boot Tutorial</a>
Understanding Semantic Versioning
Tags: beginners, webdev, node
Published: 2020-05-15 00:19:40

Semantic Versioning (or Semver) is a methodology for releasing software with a universal versioning system. You have probably seen semantic versioning in many places, such as in node package files or Github tags and releases. So how does it work?

---

## The Basics

Semantic versioning consists of 3 numbers, each separated by a decimal. An example of a semantic version would be `3.6.4`, or `4.12.11`.

- The first digit is a MAJOR version which should be incremented when there are incompatible API changes
- The second digit is a MINOR version that is incremented when new functionality it added in a backwards compatible manner
- The third digit is a PATCH version used for backwards compatible bug fixes.

To visualize this, semantic versioning follows the pattern `MAJOR.MINOR.PATCH`

Sometimes, you may also see a pre-release tag appended to the version with a dash, such as `1.0.0-alpha` or `1.0.0-beta.12`, which are both valid semantic versions.

---

## Version Updates

In your package files, a majority of the dependencies will have a special character at the beginning of it, such as `~` or `^`. These are special characters that are used to signify how a package should be updated.

- `~` tells us that the package can updated to the latest PATCH update, but has a fixed MAJOR and MINOR version. `~4.5.6` means all releases from `4.5.6` up to, but not including `4.6.0` can be used.
- `^` is similar to `~` but also allows updates to the MINOR version, so `^1.2.3` can be updated all the way to, but not including, `2.0.0`. However, below `1.0.0`, it will act the same as `~` in that it will only update the PATCH version, the MINOR version will be fixed. 

> For anything below `0.1.0`, all versions prefixed with `^` will not update, even to the next PATCH.

---

## Version Ranges

Other than specifying a version with a special character, there are also ways to write ranges of versions:

- `>` and `>=` will signify any version greater than, or greater than or equal to, the specified version, including MAJOR versions, such as `>=2.0.0`. `<` and `<=` work the same but with less than.
- Putting two versions next to each other will specify a range, such as `1.0.0 - 1.5.0` (equivalent to `>=1.0.0 <1.5.0`)
- An `x` can be placed in any version number as a wildcard, it just means any version is acceptable, such as `2.x` or `1.2.x`

---
Here are some examples of valid semantic versions:

```
1.2.3
0.0.1-alpha.2
1.0.0-beta
0.9.0-b.89.z
^1.4.5
~1.9.1
>2.0.0
>=19.4.3
5.x
<4.0.0
<=4.0.0
1.2.3 - 1.2.6
>5.0.0 <=2.1.0
>=10.1.8 <11.0.0-beta.9
```

I hope this brief explanation can help you understand your package files, and also help you in releasing your own projects! There is much more to learn more about semantic versioning, and you can check out the [official site](https://semver.org/) which goes into way more detail about each requirement for naming your versions.
Passwords Sent Over the Wire Considered Harmful
Tags: security, passwordreuse
Published: 2020-05-15 00:08:13



Passwords sent over the wire are a well known source security problems on the net, and arguably the biggest one of them all. With webCrypto we can use public key cryptography to completely get rid of passwords sent over the wire -- and most especially their reuse -- for a large number of use cases. 

I was motivated to revisit this problem after documenting the problem in RFC 7486 and prototyping code back in 2012 -- well before webCrypto and webAuthn. I had hoped that webAuthn would solve for use case but was disappointed to find out that it is bolted at the hip with hardware crypto dongles, where local credentials store were given short shrift. 

I have documented and released my cleaned up prototype code to show how webCrypto can provide a simple solution for sites that do not require the additional security that crypto dongles provide. You can check out the running code at https://out.mtcc.com/hoba-bis and on github at https://github.com/shirikodama/hoba-bis
Big day of firsts
Tags: python, blog, automation
Published: 2020-05-15 00:04:36

I've been a lurker of dev.to for a while wanting to post something but haven't had anything awfully interesting happen. I recently had an idea for something I'd like to automate that takes a few minutes out of my day. After creating the tool I realised it might be applicable for everyone else so also published it publicly on GitHub, my first public repo! 

Little bit of a background on me, I'm primarily a C#/JS developer working for a small startup specialising in wearable technology. I've been working as a full-time software developer for almost a year now and have been loving nearly every moment. 

#Now, back to business.
This was my first python project created with self direction. I've done a small snippet or two for uni assignments back in the day but nothing within the last few years. Each day I spend around about a minute writing happy birthday posts on my friends walls on facebook, an idea came to automate this process and write a script that automatically wishes my friends a happy birthday each day! I do realise that there are people on my friends list that I haven't talked to for years or don't really like anymore but what harm could a happy birthday post do.

I've posted the [GitHub repo here.](https://github.com/Jack-TechExec/BdayPy)

Essentially this tool will login under your account, navigate to calendar view of birthdays today and post a random birthday greeting from birthday.cfg to each persons wall. Feel free to customise the birthday greetings, can also use $name which should just be their first name to personalise each message if you'd like.

It doesn't use proper waiting at the moment for each page to load before continuing and just uses fixed delays, I might try implement that later if possible. Saw some potential issues with selenium and ajax pages so figured I'd take a shortcut or two.

I'm currently scheduling it to run every morning using windows task scheduler and a little batch file. So far we're two days in and it's worked fine on both days :)

Hoping to do a lot more little projects like this as it was quite fun figuring out how a lot of this stuff works and the possibilities of web automation.