Pages

Friday, October 25, 2019

Encode or decode date in 3 characters

I have developed a new way to encode/decode dates within 3 characters by using base-36 format.

What is a base 36 format?
Base 36 or hexatridecimal is a positional numeral system using 36 as the radix. The choice of 36 is convenient in that the digits can be represented using the Arabic numerals 0-9 and the Latin letters A-Z.

In simple language, base-36 format refers to series of 0-9 followed by A-Z characters, i.e., 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ; where each character refers to the position index in series.

The concept can also be represents as shown in the below table

Series
Character
Series
Character
Series
Character
Series
Character
0
0
10
A
20
K
30
U
1
1
11
B
21
L
31
V
2
2
12
C
22
M
32
W
3
3
13
D
23
N
33
X
4
4
14
E
24
O
34
Y
5
5
15
F
25
P
35
Z
6
6
16
G
26
Q


7
7
17
H
27
R


8
8
18
I
28
S


9
9
19
J
29
T



e.g., 12 → C, 19 → J, 34 → Y

Now here is a way to use the same logic for date, so to do that let us take a date and encode it as

25-Oct-2019 → 25-10-2019 → 25.10.19 → P.A.J → paj

Similarly, decode it back as

paj → P.A.J → 25.10.19 → 2019-10-25 → 25-Oct-2019

Note, here P.A.J is converted to lowercase as paj to make it more compact.


Friday, October 18, 2019

How to create mirrored repositories and keep it synced?


To mirror the existing git repository (i.e, src-repo) into another git repository (i.e., dest-repo), follow the steps given below:
  1. Create a bash file and name it as mirror-sync-repo.sh
  2. Copy the below code and paste it in your bash file

  3. #!/usr/bin/bash
    SourceRepositoryURL=http://src-repo.gitserver1.domain
    DestinationRepositoryURL=http://dest-repo.gitserver2.domain
    SourceRepositoryDir=src-repo.git
    if [ ! -d $SourceRepositoryDir ] 
    then
    	git clone --mirror $SourceRepositoryURL
    	cd $SourceRepositoryDir
    	git remote add --mirror=fetch secondary $DestinationRepositoryURL
    	cd ..
    fi
    cd $SourceRepositoryDir
    git fetch origin
    git push secondary --all
    

  4. Modify the code by replacing pseudocode with the actual repository names and links
  5. Save the bash file
  6. Open the Terminal app and go to that folder where this bash file is present
  7. Execute the bash file on Terminal using sh mirror-sync-repo.sh command, you'll be asked to enter the username and password for both the repositories; just enter that and let it proceed
  8. One the execution is finished, both the repositories are mirrored and synced

Monday, September 16, 2019

How to located the installed & cache directory path for Deno?


Recently, I had installed the Deno v0.18.0 using brew on macOS. Then tried couple of samples given there. I was amazed to see, how closely it behaves like Golang. When we run the script for the first time, Deno downloads all the dependencies provided in the import statement that is required to run the script. When I ran the same script next time then it doesn't download any dependency. So that means it caches all those dependencies and uses the same next time.

Now I was eager to see the cache, but can't find it at the usual locations but after some time with the help of Google, I was able to find the correct location. So I thought it would be pretty useful to put it in blog for ready reckoner.

So here is the sample path on all major platforms

Platform / Location
Binary
Cache
Windows
C:\Users\me\AppData\Roaming\deno\
C:\Users\me\AppData\Local\deno\
macOS
/Users/me/.local/bin/
/Users/me/Library/Caches/deno/
Linux
/home/me/.local/bin/
/home/me/.cache/deno/

Here is the same path using the bat / bash syntax

Platform / Location
Binary
Cache
Windows
%appdata%\deno\
%localappdata%\deno\
macOS
$HOME/.local/bin/
$HOME/Library/Caches/deno/
Linux
$HOME/.local/bin/
${XDG_CACHE_HOME-$HOME/.cache}/deno/

That's it!