Code Monkey home page Code Monkey logo

shortcode's Introduction

ShortCode

Simple url short code library, like known from youtube video ids, but generates short codes that are prepended with a date (also in short code format).

Documentation

A short code generated by this library looks like this: AlwJy_uNAs

Note that the short codes generated are case-sensitive.

The first 3 symbols (Alw) are the Base64UrlSafe encoded date, with any equal-signs removed. Base64UrlSafe encoding simply means that '+' is replaced by '-' and '/' is replaced by '_'.

A date in format MM-dd-yyyy wouldn't be representable in just 3 characters, so it's not a full DateTime object, but only dates from year 0-99 are supported (the library assumes that 0 is 2000).

In order to represent the date by 3 base64UrlSafe encoded characters, the year, month and day portion of the date is packed into two bytes in the following way.

Alw in this example represent the date 2001/2/28.

[--Year 7bits--|--Month 4bits--|--Day 5bits--]

The characters following the first 3 date representing characters, are random bytes generated with the System.Random (not so great random generator). These bytes are also passed through the same Base64UrlSafe encoding, and concatenated with the date portion of the short code. The length of the random part is variable by using the NewShortCodeByDateAndLength(d : DateTime, len: int) method. When using NewShortCode() it is set to 5.

shortcode's People

Contributors

sjkp avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.