teleren/devto huggingface dataset:
Dotvpn -  Free Unlimited
Tags: dotvpn
Published: 2020-03-06 10:53:59

Dotvpn - Free Unlimited 

Dot Free Vpn Unlimited Free VpnDot application offers you unlimited bandwidth and access to many virtual locations that a user can get benefit of. The dotvpn better than VPN application can make it easy for user to access thousands of restricted websites easily just by pressing a single button. To make it more secure than a typical proxy server VPN location changer application encrypts your internet connectivity in order to keep the user away from the reach of third party sources that can track all the user’s online activity.

Over the past few years the internet has evolved greatly, you can now access a vast variety of infinite connections in order to extract all the important data that you need in daily life. A user is only required to have a stable internet connection and a smart phone to get himself in touch with thousands of people around the globe. However user needs to learn to keep up with the developments to make sure that they are on safe edge as we are using different internet tools in daily life to send and receive sensitive confidential information.






You might be willing to know about how a user can stay safe and keep himself out of the reach of any credit card fraud, identity theft and many other crimes that are committed anonymously by the hackers. The tool Dot Free VPN (Virtual Private Network) can be used for safe browsing, protected web surfing etc.

free dotvpn in android offer’s one of the most eye-catching and decorative user interfaces that are easy to understand and easy to use for a typical user with no relevant knowledge. Just a matter of pressing a single button and the user will be able to access thousands of highly restricted websites with 100% safety.





The key features of dotvpn Unlimited Free are:-

⦁ Access to all restricted websites around the globe.

⦁ No credit card needed

⦁ Strict no-log policy.

⦁ Large number of free servers and virtual locations.

⦁ High speed bandwidth allocation.

⦁ Easy to connect to Dot Changer VPN

⦁ dotvpn DNS Changer VPN Free

⦁ No in app purchase requirements

⦁ No registration needed

⦁ No login or password required

⦁ Well-designed user interfaces.

⦁ No time and usage limitations.

⦁ No additional permissions required.

⦁ High speed and full encrypted network connectivity.

So what are you waiting for go to google play-store, download Dot Free Vpn Unlimited Free VpnDot and enjoy access to millions of restricted sites from different virtual locations.
DEV Community is amazing!
Published: 2020-03-06 10:34:37

So I had started blogging a few months back about some of the programming related topics. I did not know that dev.to had this feature of followers, but I recently saw the number of followers that I have. In such a short span of time, I have managed to amass 800+ followers. So all I want to say is thank you to all of you. And I promise there will be a lot more posts coming soon. I won't be stopping blogging anytime soon now😁.
Updating npm packages versions in package.json
Published: 2023-06-15 14:29:21

---
title: Updating npm packages versions in package.json
published: true
date: 2020-03-06 10:13:01 UTC
tags: 
canonical_url: https://nicolas-hoizey.com/articles/2020/03/06/updating-npm-packages-versions-in-package-json/
---

I chose to use [`npm-check-updates`](https://github.com/tjunnone/npm-check-updates) to check for available updates of packages in my `package.json` files, and it always works without issues, so I guess I can recommend it.

I'm also using this as a reminder for my own use… 😁

Here are the steps:

## Install `npm-check-updates`

`npm-check-updates` is a `npm` package:

```
npm install -g npm-check-updates
```

## Check for available updates

Run `ncu` (as in **n** pm- **c** heck- **u** pdate) to list updatable packages:

```
ncu
```

## Automate update for all packages

If everything looks fine, update all package versions in your `package.json` file at once:

```
ncu -u
```

If you have doubts about at least one of the package versions, update your `package.json` file manually to test the results progressively.

## Don't forget to actually update the installed packages

`npm-check-updates` "only" updates the version numbers in your `package.json` file.

You now have to really install them.

Make sure current version of your `package-lock.json` file [is versioned](https://stackoverflow.com/a/44210813/717195) (for any rollback need), then run:

```
npm install
```

## What about `salita`?

There is also [`salita`](https://github.com/tbranyen/salita), which has [a few differences](https://github.com/tjunnone/npm-check-updates/wiki/npm-check-updates-vs-salita).

I prefer `npm-check-update` because its default behavior prevents accidental modification of the `package.json` file.
Should I keep focusing on Front-End of shift to Back-End?
Tags: career, discuss
Published: 2020-03-06 10:02:59

**Background story:** Recently I got a promotion (yay! 🥳), vouched by the VP, and one Director of Engineering praising me as the most knowledgeable, as well as the go-to dev, for anything related to React in our company.

**Now, the question:** if you were in that same spot, would you go all-in Front-End, or use that edge to invest time and energy to brush up the Back-End?
Auto-growing inputs
Tags: webdev, css
Published: 2020-03-12 12:41:26

---
title: Auto-growing inputs
published: true
date: 2020-03-06 10:00:00 UTC
tags: webdev, css
canonical_url: https://remysharp.com/2020/03/06/auto-growing-inputs
---

I was tinkering with an electron app I wanted to make for screencasting and it needed some input elements that were positioned in a very tight spot. As powerful as HTML and CSS is, one weird thing about the `input` elements is that they don't (typically) size to their content.

Then I found a post by [Ariel Flesler](https://github.com/flesler) from 2013 and with a little tweaking, all of a sudden input elements can size themselves to their content. What's cool (to me), is that I knew Ariel from back in the jQuery hey days (/waves).

## The effect

As I mentioned, I had a very small amount of space but also I wanted the text in this particualr example to visually close to the next input. The effect can be seen below:

![Demo of autogrowing inputs](https://remysharp.com/images/input-grow.gif)

## Prior art

I've come across this problem in the past too. I posted two blog posts some 14 years ago! The first was [a full JavaScript solution](https://remysharp.com/2006/11/27/delicious-like-text-grow-jquery-plugin-2) to create the effect, more elegantly was the [so called bug in IE](https://remysharp.com/2006/11/27/auto-input-grow-with-css-but-is-it-a-bug-2), and IE only, using the following CSS would allow the `input` elements to grow to fix their contents:

```
input { overflow: visible; }

```

How smart is that? Except it didn't work in any other browser, and it doesn't work today and thus it was quietly snuffed out.

What I really like about Ariel's solution though is that it requires no JavaScript at all and relies entirely on native features of HTML and CSS.

## Ariel's auto-grow

Based on Ariel's [CodePen demo](https://codepen.io/flesler/pen/AEIFc) which original intends to add placeholder support for contenteditable elemenent, I can adjust the code to use a `span` (instead of a `div`) and add a little CSS to improve upon his work (the CSS came from someone else via StackOverflow and comment on the CodePen demo IIRC).

The actual technique is frustrating obvious (but only once you know how), it uses `contenteditable`. Ariel's demo also shows how to include a placeholder and there's additional CSS that means that new lines are ignored (or more specifically: hidden).

```
[contenteditable="true"]:empty:before {
  content: "0";
  color: gray;
}

/* prevents the user from being able to make a (visible) newline */
[contenteditable="true"] br {
  display: none;
}

```

The element itself is a `span`, so it appears inline and now it's automatically focusable through the keyboard.

In the demo animation above, I'm binding the keypress event handler to cycle a number up or down within limits I've defined in `data-*` attributes, but that's out of scope.

Like I said, suprisingly obvious once you know it's done using `contenteditable`.

_Originally published on [Remy Sharp's b:log](https://remysharp.com/2020/03/06/auto-growing-inputs)_
How to handle an initial schema on database that had previously no migration scripts?
Tags: help, database, migrations
Published: 2020-03-06 09:46:04

On our existing project our database had previously no migration scripts, therefore the following approach has been proposed:

1. Consider the schema as is and from now on any change will be via a migration script.
2. An initial migration with a hardcoded time prior to the ones created on (1.) will be developed, and run on non-production environment in order to initialize the database. This initial migration will be developed in a later time than the migrations developed on (1.).

The migration will be on a Laravel project as we migrate from codeigniter. 

So I wonder if a similar situation had happened to you as well and how you handled it. The problem is once we develop the initial migration on (2.) what complication may have with existing ones using laravel migration mechanism?

For me is uknown waters so I want your opinion in this approach.
2 small gems
Tags: ruby, rails, webdev
Published: 2020-03-06 09:34:58

I come to present to you 2 small gems, quite simple that I realized recently.

The first which allows you to check an email via different methods:


```
address = RailsEmailChecker.address('test@gmail.com') # or RailsEmailChecker::Address.new('test@gmail.com')
address.formatted? # => true
address.sub_addressed? # => false
address.recorded? # => true
address.whitelisted? # => false
address.blacklisted? # => false
```

You can also check the email via a validates

```
class User < ActiveRecord::Base
  validates :email, email: { no_sub_addressed: true, recorded: true, blacklisted: true }
end
```

You can see it here: 
https://github.com/OpenGems/rails_email_checker

The other gems allows you to generate dynamic "scopes" according to your columns.

```
class User < ApplicationRecord
  include RailsScopy
end


User.not_admin
User.first_name_contains('Test')
```

List of scopes:

| SQL type | Scope method | Description |
| ------------- | ------------- | ------------- |
| All | `#{column}_eq(value)` | equal |
| All | `#{column}_not_eq(value)` | not equal |
| All | `#{column}_null` | is null |
| All | `#{column}_not_null` | is not null |
| All | `#{column}_present` | not null and not empty |
| All | `#{column}_blank` | null or empty |
| All | `ascend_by_#{column}` | ascending order |
| All | `descend_by_#{column}` | descending order |
| boolean | `#{column}` | true |
| boolean | `not_#{column}` | false |
| json | `#{column}_has_key(value)` | key present in json  |
| json | `not_#{column}_has_not_key(value)` | key doesn't present in json |
| boolean | `#{column}` | true |
| boolean | `not_#{column}` | false |
| date, datetime, time | `#{column}_to(value)` | <= to  |
| date, datetime, time | `#{column}_from(value)` | from >= |
| date, datetime, time | `#{column}_after(value)` | after > |
| date, datetime, time | `#{column}_before(value)` | < before |
| date, datetime, time | `#{column}_between(value)` | from >= <= to |
| string, text | `#{column}_contains(value)` | contains |
| string, text | `#{column}_not_contains(value)` | doesn't contains |
| string, text | `#{column}_starts_with(value)` | start with |
| string, text | `#{column}_not_starts_with(value)` | doesn't start with |
| string, text | `#{column}_ends_with(value)` | end with |
| string, text | `#{column}_not_ends_with(value)` | doesn't end with |
| string, text | `#{column}_length(value)` | length eql |
| string, text | `#{column}_between_length(value)` | from >= <= to (length) |
| integer, float | `#{column}_to(value)` | <= to  |
| integer, float | `#{column}_from(value)` | from >= |
| integer, float | `#{column}_above(value)` | above > |
| integer, float | `#{column}_below(value)` | < below |
| integer, float | `#{column}_between(value)` | from >= <= to |
| float | `#{column}_scale(value)` | scale eql (Number of decimal digits) |


You can see it here: 
https://github.com/OpenGems/rails_scopy


Thanks !
Returning an object using reduce()
Tags: javascript, challenge
Published: 2020-03-06 09:33:12

Hi good people! I need help with some JavaScript challenge:

QUESTION: Write a function called getSongCountByArtist which takes in an array of songs and returns an object. The keys in the object should be artist names, and the values should be the number of songs by that artist in the original array.

My code Solution:

 function getSongCountByArtist(arr){

    return arr.reduce(function(acc,val){
        let artistSong = val.name;
        let songNo = artistSong.length;

        return acc[val.artist] + songNo;

    }, {})
}

getSongCountByArtist(songs); //NaN

data source https://github.com/PJMantoss/iterators2/blob/master/data.js

PROBLEM EXPLANATION: The function is supposed to return an object with `artist` names as keys and number of songs by the artist as values. But On running getSongCountByArtist(songs) it returns `NaN`. How can I refactor my code to work? Thank you
Algorithm 101: 3 Ways to Find Hamming Distance
Tags: algorithms, javascript, string, distance
Published: 2020-03-06 09:28:17

According to [Wikipedia](https://en.wikipedia.org/wiki/Hamming_distance), the Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different. In other words, it measures the minimum number of substitutions required to change one string into the other, or the minimum number of errors that could have transformed one string into the other.

```javascript

hammingDistance("part", "path"); // 2

hammingDistance("ebere", "samson"); // 'unequal word lengths'

```

In how many ways can you check for the hamming distance of two given strings of equal length? When was the last time you used ``do...while...loop`` and ``while...loop``?

This article presents us with 3 ways to check for hamming distance. Let's get to it.

### Prerequisite
This article assumes that you have basic understanding of javascript's string and array methods.

### Let's determine the hamming distance of two given strings using:

* for...loop, if...statement and toLowerCase()

```javascript
      function hammingDistance(word, matchingWord) {
        let count = 0;

        if (word.length === matchingWord.length) {
          for (let i = 0; i <= word.length; i++) {
            if (word.toLowerCase()[i] !== matchingWord.toLowerCase()[i]) {
              count++;
            }
          }

          return count;
        }
        return "unequal word lengths";
      }
```

* while...loop, if...statement and toLowerCase()

```javascript
      function hammingDistance(word, matchingWord) {
        let count = 0;
        let i = 0;

        if (word.length === matchingWord.length) {
          while (i <= word.length) {
            if (word.toLowerCase()[i] !== matchingWord.toLowerCase()[i]) {
              count++;
            }
            i++;
          }

          return count;
        }
        return "unequal word lengths";
      }
```

* do...while...loop if...statement and toLowerCase()

```javascript
      function hammingDistance(word, matchingWord) {
        let count = 0;
        let i = 0;

        if (word.length === matchingWord.length) {
          do {
            if (word.toLowerCase()[i] !== matchingWord.toLowerCase()[i]) {
              count++;
            }
            i++;
          } while (i <= word.length);

          return count;
        }
        return "unequal word lengths";
      }
```

### Conclusion
There are many ways to solve problems programmatically. You are only limited by your imagination. I will love to know other ways you solved yours in the comment section.

If you have questions, comments or suggestions, please drop them in the comment section.

> Up Next: [Algorithm 101: 6 Ways to Find the Longest Word in a Sentence](https://dev.to/ebereplenty/algorithm-101-6-ways-to-find-the-longest-word-in-a-sentence-3d89)

You can also follow and message me on social media platforms. 

**[Twitter](https://twitter.com/eberetwit) | [LinkedIn](https://www.linkedin.com/in/samson-ebere-njoku-profile/) | [Github](https://github.com/EBEREGIT)**

Thank You For Your Time.
CODÆRT
Tags: java, art, code
Published: 2020-03-06 09:24:21

Code that is not art, Art that is not code. What it can be?

Java:


```

public class Oblac{String $ = $ = $ = $ = $ =

  "8OABABAWADMRWHWHBHBOB#BMBDW@AOADB6ABABA" +
  "WADMRWHWHBHBOWBMAM0A@WMBQB0ANMNMOMHANB#" +
  "WMM$MM88B#                    B@WDAHA@B" +
  "AAQAQA$                         A@M0WOW" +
  "OBOBH                             BMB#B" +
  "@WDAH                             A@BAA" +
  "QAQA$       A@M0WOWOBOBHB         MB#B@" +
  "WDAHA       @BAAQAQA$0QDW         OAWHB" +
  "HBAM#       MDW#BQWWMOWAM         QM$M@" +
  "MBM$W       HB8M#BOW$BMWH         B0WBM" +
  "RW8MD       ABMMWMB@WHBQW         WMWWM" +
  "8NBDW       @AOADWMMRABWB         MNAHW" +
  "HBOW8       W#W6BMW#B6AOW         0WWMM" +
  "ABWWW       MAAB6A$W@WHWM         WBMMO" +
  "B060Q                             BAAQA" +
  "QA$A@                             M0WOW" +
  "OBOBHBM                         B#B@WDA" +
  "HA@BAAQAQA$                   A@M0WOWOB" +
  "OBHBMB#B@WDAHA@BAAQAQA$A@M0WOWOBOBHBM8N" +
  ""+""+""+""+""+""+""+""+""+""+""+""+""+"" ;


  String $$ = "WMODBA806QRN#$@H"; String $$$=
  "https://oblac.rs"; byte[]o; int dev,coder;
  public void oblac() { if(o == null) {o = $.
  getBytes ();} if(dev >=$.length()){return;}


  https://oblac.rs


  while(o[dev]==0x20) dev++;int c= $$.indexOf
  (o[dev++])*16;while(o[dev] == 32) dev++;c+=
  $$.indexOf(o[dev++]); c^=$$$.charAt(coder);
  if($$$.length()==++coder){ coder =0;}System
  .out.print( (char)c);oblac();}public static
  void main(String[]a){new Oblac().oblac();}}

```

Now, save it and:


```sh

> javac Oblac.java
> java Oblac
```
VScode
Published: 2020-03-06 09:13:39

[VScode]將 windows terminal 改成 bash

首先打開 VScode的 terminal : `ctrl + ``
perference 設定 : `ctrl + shift + p`
打入 `select default shell`
有安裝git的話就會有git bash的選擇
重新啟動 VScode 大功告成
Nevertheless, Shilpa Coded
Tags: wecoded, career, webdev
Published: 2020-03-06 08:58:56

---
title: Nevertheless, Shilpa Coded 
published: true
tags: shecoded, career, webdev
---
## My journey as a woman in tech so far...

Two years ago, I started my coding journey as an HTML developer. It was quite an exhilarating start for me. Later, I learned HTML, CSS and Javascript as well.
After months of converting PSDs to HTML designs, I realised I wanted to do more, to learn more. I wanted to pick up new skills that I could apply to my work. While I was looking for more to learn, UI/UX attracted my interest the most, so that's what I decided to delve deeper into.

I've learned a lot since then, and now, I'm one of the go-to UX people in my firm. For the interfaces I design, my approach is simple: I want the user to achieve what they're trying to through the medium *while having a joyful experience*. That's an important belief of mine. Good design not only works, it also makes the user happy. My current work gives me a chance to experiment with a lot of different UIX designs and see what ultimately works best for the users. It's exciting and it gives me a sense of purpose. 

I think I can summarize my feelings for my work with a great quote I read in a Medium article a while back:

***"A very unique nature salt has is, its presence is never felt but its absence makes all things tasteless."***

I feel the same about design. Bad design also gives a dull experience to users just like food without salt. 

I am very happy to have progressed so much as a UIX designer in a short amount of time. For this year, my main goal is to delve deeper into the same discipline and gain even more expertise in it.

## My advice for allies to support self-identifying women and non-binary folks who code is...

1. Act as an advocate and for them and their work. Include them in important meetings and plans. Helping them develop a healthy network is also a good idea.

2. Help them develop a strong sense of purpose by supporting them in what they do and trusting them to do it well. Provide them with constructive criticism so they can improve their skills, and vocally appreciate them in front of their peers when they do a good job.

---

I am grateful to my team for being super supportive of me in my journey and helping me grow into my role as a UIX expert. I'm excited for what the future holds for me!
Binary Tools
Tags: devtools, webdev
Published: 2020-03-06 16:44:18

---
title: Binary Tools
published: true
date: 2020-03-06 00:00:00 UTC
tags: devtools, webdev
canonical_url: https://remysharp.com/2020/03/02/binary-tools
---

I've been tinkering on a 6502 project during the evenings spread over the last 3 months (via the excellent [Ben Eater](https://www.youtube.com/watch?v=LnzuMJLZRdU&list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH) series) and in doing so I've started to build up a series of tools I use with binary.

_(This post is probably only useful for future Remy)_

I should add that I'm not sure how much of this will work on different systems and availability of tools, but I'll link where possible.

## hexdump

[hexdump](https://www.mankier.com/1/hexdump) - usually with `hexdump -C file.bin` to view hex and ascii output. Also compresses repeating patterns seen below where the line is simply `*`.

Really simple to use tool for viewing source hex on the command line.

```
hexdump -C rom.bin
00000000 a9 ff 8d 02 60 a9 55 8d 00 60 a9 aa 8d 00 60 4c |....`.U..`....`L|
00000010 05 80 ea ea ea ea ea ea ea ea ea ea ea ea ea ea |................|
00000020 ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea |................|
*
00007ff0 ea ea ea ea ea ea ea ea ea ea ea ea 00 80 ea ea |................|
00008000

```

## xxd

[xxd](https://www.mankier.com/1/xxd) can dump hex from binary, but also convert hex to binary.

This is used for dumping the _entire_ hex content out. It also has a _revert_ feature that lets me generate binary files from strings of hex. I've been doing a bit of work around unpacking old file formats, and generating snippet of binary data is useful.

Below you can see my generating a binary snippet for a ZX Spectrum+ .bas file header. The first column needs to be the offset (`0` in this case).

```
echo "0 504c 5553 3344 4f53 1a01 00e7 0000 00" | xxd -r | hexdump -C
00000000 50 4c 55 53 33 44 4f 53 1a 01 00 e7 00 00 00 |PLUS3DOS.......|
0000000f

```

I could capture this output using `… | xxd -r > out.bin` and then process the binary elsewhere.

## diffing binary / diffing hex

Using `xxd` above, I can combine diff tools to identify changes between binary (typically where I've got a typo and generated a slightly different file).

```
$ diff -u <(xxd -c 32 a.bin) <(xxd -c 32 b.bin) | diff-so-fancy

```

I'm adding [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy/) into the mix to clearly highlight the changes in the file (the `diff -u` flag is needed to make this work properly).

![Visual hex diff](https://remysharp.com/images/hex-diff.png)

In the diff above I can clearly see that the first block starts to match, but the does not.

## Honourable mentions

- [od](https://www.mankier.com/1/od) - very similar to `hexdump` and the tool I _used_ to use to [debug text files for rogue characters](https://remysharp.com/2018/10/29/shell-debugging-vanishing-text#debugging-invisible-characters)
- [strings](https://www.mankier.com/1/strings) - a great little _goto_ when I'm looking for text inside binary files

_Originally published on [Remy Sharp's b:log](https://remysharp.com/2020/03/02/binary-tools)_