https://NationalPensionScheme.GitHub.io/
National Pension Scheme
India
Jai Hind
make menu hidden, based on 3 lines, upon click show full page popup, give text based options to navigate instead of icons
give a sub heading to give the context of the page loaded
remove one call of client meta
modify json of push notification
remove the page refresh time, or make it more
NAV Timeline - Graphs Visualization
NPS : National Pension Scheme
NAV : Net Asset Value
FY : Financial Year
ID : Identifier
MCA : Ministry of Corporate Affairs
ROC : Registrar of Companies
CIN : Company Identification Number
PFM : Pension Fund Manager
GOI : Government of India
PLC : Public Limited Company
PTC : Private Limited Company
SCHEME E : Equity and related instruments
SCHEME C : Corporate Dept and related instruments
SCHEME G : Government Bonds and related instruments
SCHEME A : Alternate Investment Funds including instruments like CMBS, MBS, REITS, AIFs, Invlts etc.
NSDL - NPS CRA (Central Record Keeping Agency)
Type in appropriate value for DDMMYYYY
in the link below
https://npscra.nsdl.co.in/download/NAV_File_DDMMYYYY.zip
Format
https://www.thecompanycheck.com/company/x/<COMPANY_IDENTIFACTION_NUMBER>
Example
https://www.thecompanycheck.com/company/x/U66000MH2009PLC191350
Aditya Birla Sun Life - Calculator
ICICI Prudential - Historical Excel
- IDFC Schemes
https://xdoc.pl/pention-sch.html
https://www.scribd.com/doc/77047570/pention-sch
https://www.igecorner.com/government-employees-pension-fund-%E2%80%93-nav-as-on-2nd-july-2010/
http://centgovtempnews.blogspot.com/2010/07/government-employees-pension-fund-nav.html
- NAV Data Pages
https://www.livemint.com/market/market-stats/national-pension-scheme
https://www.livemint.com/market/market-stats/national-pension-scheme/xyz-{SchemeNumber}
Type in a relevant SchemeNumber
between 1 till 106 in the above URL, following are missing: 36 - 42, 81 - 82, 98 - 99
https://www.livemint.com/market/market-stats/national-pension-scheme/xyz-1
https://www.livemint.com/market/market-stats/national-pension-scheme/xyz-53
https://www.livemint.com/market/market-stats/national-pension-scheme/xyz-106
- NAV JSON
Type in a relevant SchemeNumber
between 1 till 106 in the above URL, following are missing: 36 - 42, 81 - 82, 98 - 99
Also type in relevant YearCount
between 1 till 25
- SBI Graphical Representations
https://baali.github.io/nps-d/sbi.html
- ICICI Prudential
https://baali.github.io/nps-d/icici.html
When the above link is opened, press .
on the keyboard, to open up your online workspace
- HTTPs
git clone https://github.com/NationalPensionScheme/NationalPensionScheme.GitHub.io.git
- SSH
git clone [email protected]:NationalPensionScheme/NationalPensionScheme.GitHub.io.git
- GitHub CLI
gh repo clone NationalPensionScheme/NationalPensionScheme.GitHub.io
add custom javascript css alert, suggesting to press F11 for best experience in full-screen, upon opening of website
page 2 nav options: financial years growth %, financial quarters growth %, beginning till date growth %, user specific custom dates growth %
logic for generating json files of yearly and quarterly analysis, from microservice
use json files to populate % growth data in page 1 table, using javascript
in page 2, show combined google chart below each scheme, having all the fund managers represented by different coloured line, showing financial year on x-axis, and percentage growth on y-axis; a relevant kind of chart can also be chosen, instead of line chart, if required
manually fetch historical NAV data for Reliance Capital, and DSP BlackRock
finally sort the consolidated file
show NAV values on the right hand side as well
add zoom in + button, and zoom out - buttons, for better experience
reset note tooltip functionality, which reloads the chart for that schemeId
single consolidated visualization of all schemes category wise; graph compararison of NPS NAV values (daily); and percentage growth: positive or negative (daily / financial year-ly / financial quarter-ly / calendar year-ly);
variations of growth daily timelines : calculated for each day 1 month 3 months / 1 quarter 12 months / 1 year 2 year 3 year 5 year 7 year 10 years 15 years
modify javascript code to load the json files, and csv files, at the time of loading of the website, and cache the data
Add push notiftication to self in notification-box
whenever someone visits the website
Make Contact page, which has contacts moved from README.md file to index.html
Add section in Contact page for the user to send a quick message, and fill in name, email, contact number; use this data to send a push notification to self in notification-box
fix the colour code for each fund manager in the consolidated charts
assign uuid to user
send push notification event, on window close
send push notification event, on page refresh
send push notification event, on F12 key press
send push notification event, if network tools already open
send push notification event, on click of any page / scheme / category button
explore free API integration for Aadhar OTP Authentication, to authorize only Indian user, for viewing the website
fix the categorize shell script, to skip the already existing dates in the output category files
show alert to user for Privacy Policy, upon page load, with Accept / Reject buttons upon Reject close the page
- Data Downloader
Located in directory code
Edit the main Shell Script execute.sh
the variable year
in configuration and Run / Execute it
cd code
sh execute.sh
cd ..
git status
Assign a relevant year value to yyyy
below
Write output to a file
prefer this
cd code
sh execute.sh &> logs/output-2024.log
cd ..
git status
If executing again / re-executing for the same year
cd code
sh execute.sh &>> logs/output-2024.log
cd ..
git status
Commit
git add *
git commit -m "[data] adding latest NPS NAV data of year 2024"
git status
All the logs can be found in directory code/logs/
The CSV data is written by the script can be found in the directory nav-data
filename nps-funds-performance-nav-data.csv
- Remove Carriage Return if any
cd nav-data
cat nps-funds-performance-nav-data.csv | sed 's/\r$//' > nps-funds-performance-nav-data-x.csv
rm nps-funds-performance-nav-data.csv
mv nps-funds-performance-nav-data-x.csv nps-funds-performance-nav-data.csv
cd ..
git status
Commit
git add *
git commit -m "[data] removing carriage return from consolidated data file"
git status
- Validate Data Manually
Check the csv data for quotes
cd nav-data
cat nps-funds-performance-nav-data.csv | grep "\""
cd ..
git status
Verify the csv in any software like LibreOffice Calc
or Microsoft Excel
, the columns count must be 6
Verify the data in date column, as per original MM/DD/YYYY
format
Verify the data in the other columns, using filter
option
Verify the output daily files, located in the directory nav-data/daily/
, if they follow the naming convention YYYY-MM-DD.csv
, else correct as required and append to consolidated data file nps-funds-performance-nav-data.csv
- Validate Data Programatically
Check in the output if any number is greater than 12, which means it is incorrect record, as month cannot be greater than 12
cd nav-data
cat nps-funds-performance-nav-data.csv | cut -d/ -f1 | sort | uniq
cd ..
git status
Check in the output if any number is greater than 31, which means it is incorrect record, as date cannot be greater than 31
cd nav-data
cat nps-funds-performance-nav-data.csv | cut -d/ -f2 | sort | uniq
cd ..
git status
Check in the output if any number is less than 2008 or greater than the current running Calendar Year, which means it is incorrect record, as year cannot be less than the starting year and greater than the current running Calendar Year
cd nav-data
cat nps-funds-performance-nav-data.csv | cut -d/ -f3 | cut -d, -f1 | sort | uniq
cd ..
git status
- Watch Duplicates in the Consolidated / Combined CSV
Check duplicate entries for date + schemeId combo
cd nav-data
awk -F, 'dup[$1,$4]++' nps-funds-performance-nav-data.csv
cd ..
git status
Extract non-duplicate entries
cd nav-data
awk -F, '!dup[$1,$4]++' nps-funds-performance-nav-data.csv > nps-funds-performance-nav-data-unique.csv
rm nps-funds-performance-nav-data.csv
mv nps-funds-performance-nav-data-unique.csv nps-funds-performance-nav-data.csv
cd ..
git status
Commit
git add *
git commit -m "[data] removing duplicates from the combined csv"
git status
- Sorting the consolidated data
cd nav-data
sort -n -t"," -k1.7,1.10 -k1.1,1.2 -k1.4,1.5 nps-funds-performance-nav-data.csv > nps-funds-performance-nav-data-sorted.csv
rm nps-funds-performance-nav-data.csv
mv nps-funds-performance-nav-data-sorted.csv nps-funds-performance-nav-data.csv
cd ..
git status
Commit
git add *
git commit -m "[data] sorting combined csv in ascending order, based on the date field by year month day"
git status
- Trimming the Leading Spaces in Columns
cd nav-data
cat nps-funds-performance-nav-data.csv | awk 'BEGIN{ FS=", *"; OFS="," } {$1=$1; print $0}' > nps-funds-performance-nav-data-trimmed.csv
rm nps-funds-performance-nav-data.csv
mv nps-funds-performance-nav-data-trimmed.csv nps-funds-performance-nav-data.csv
cd ..
git status
Commit
git add *
git commit -m "[data] removing leading spaces"
git status
- Trimming the Trailing Spaces in Columns
cd nav-data
cat nps-funds-performance-nav-data.csv | awk 'BEGIN{ FS=" *,"; OFS="," } {$1=$1; print $0}' > nps-funds-performance-nav-data-trimmed.csv
rm nps-funds-performance-nav-data.csv
mv nps-funds-performance-nav-data-trimmed.csv nps-funds-performance-nav-data.csv
cd ..
git status
Commit
git add *
git commit -m "[data] removing trailing spaces"
git status
- Extracting Meta Data
Fund Managers
cat nav-data/nps-funds-performance-nav-data.csv | cut -d, -f2,3 | sort | uniq > meta-data/unique-fund-managers.csv
git status
Fund Manager Ids
cat meta-data/unique-fund-managers.csv | cut -d, -f1 | grep "PFM" | uniq > meta-data/unique-fund-managers-ids.csv
git status
Schemes
cat nav-data/nps-funds-performance-nav-data.csv | cut -d, -f4,5 | sort | uniq > meta-data/unique-schemes.csv
git status
Scheme Ids
cat meta-data/unique-schemes.csv | cut -d, -f1 | grep "SM" | uniq > meta-data/unique-schemes-ids.csv
git status
TODO : "[meta] adding new fund manager / schemes related changes"
Commit
git add *
git commit -m "[meta] adding latest generated meta-data"
git status
- Split the consolidated data into various Pension Fund Schemes
cd code
sh split.sh &> logs/split.log
cd ..
git status
Commit
git add *
git commit -m "[split] updating the content of scheme wise csv files and scheme min csv files"
git status
Every individual Scheme CSV data files will be generated in directory nav-data/scheme/
, which will follow the naming convention SCHEME_ID.csv
Verify the count of all lines combined from the scheme files, minus 131 ; must be equal to
; count of lines in consolidated file, minus 1
Calculations done based on the csv heading line, which is common in all the CSV files; and since there are 131 schemes, which can be referred from meta-data/unique-schemes-ids.csv
cd nav-data
cat nps-funds-performance-nav-data.csv | wc -l
cd scheme
cat * | wc -l
cd ..
cd ..
git status
View the number of lines in each file, sorted in ascending order, based on file name
cd nav-data/scheme
wc -l `ls`
cd ..
cd ..
git status
View the number of lines in each file, sorted in ascending order, based on line count
cd nav-data/scheme
wc -l `ls` | sort -n
cd ..
cd ..
git status
- Merge the min files for Categorization (DEPRECATED, use the API instead)
cd code
sh categorize.sh &> logs/categorize.log
cd ..
git status
- GitHub Pages Website
Located in the root as index.html
Its dependent resources are in directory website
- Search Engine Optimization (SEO)
Check if your website is indexed by Google, by typing in and searching on Google.com
site:http://your-url.com
SEO done via Google using Email Id [email protected]
Google Search
site:https://NationalPensionScheme.GitHub.io/
Located in the root as google64a202ed0c67cfe9.html
- Microservice
Made in java, dependency management is using maven
Located in directory microservice
Build the project
cd microservice
mvn -Dmaven.artifact.threads=25 clean eclipse:eclipse -DdownloadSources=true dependency:go-offline dependency:resolve-plugins install
cd ..
git status
Deploy the application, make it up
cd microservice
java -jar target/National-Pension-Scheme-0.0.1.jar --logging.file=./logs/National-Pension-Scheme.log &
cd ..
Meaningful APIs
GET
/national-pension-fund/schemes
GET
/data/load
GET
/generate/scheme/categories
GET
/data/scheme/{schemeId}
GET
/generate-analysis-report/yearly-average
Hit the API, only when new schemes have been added in the source data, and thereafter in Java enums
cd meta-data
curl -X GET "http://127.0.0.1:7777/national-pension-fund/schemes" -H "accept: */*" -o pension-fund-schemes-v-beta.json
cd ..
Hit the API, to load and populate the schemes data
curl -X GET "http://127.0.0.1:7777/data/load" -H "accept: */*"
Hit the API, to generate the category scheme csv data files
curl -X GET "http://127.0.0.1:7777/data/generate/scheme/categories" -H "accept: */*"
Hit the API, to generate the yearly growth performance percentage data
cd nav-data
cd growth
curl -X GET "http://127.0.0.1:7777/generate-analysis-report/yearly-average" -H "accept: */*" -o yearly-average.json
cd ..
cd ..
Hit the API, to generate the yearly growth performance ranking data
cd nav-data
cd growth
curl -X GET "http://127.0.0.1:7777/generate-analysis-report/yearly-average-ranking" -H "accept: */*" -o yearly-average-ranking.json
cd ..
cd ..
Hit the API, to generate the investment report for when to invest
curl -X GET "http://127.0.0.1:7777/generate-analysis-report/daily-basis-annual-growth" -H "accept: */*"
Make the application down
kill -9 `lsof -t -i:7777`
git status
sudo kill -9 `sudo lsof -t -i:7777`
git status
Commit
git add *
git commit -m "[microservice] executing the APIs and adding the response"
git status
- Combining and Consolidating the Investment Files (In-Progress)
cd code
sh consolidate.sh &> logs/consolidate_scheme_date_invest.log
cd ..
- Last Updated Attribute
Manually update the dates in sitemap and html pages
from every scheme file, at the following path {PROJECT_URL}/nav-data/scheme-invest/{SCHEME_ID}.csv
for indiviual Correct the logic calculation of average calculation, don't consider the future dates of current year as well in counting
to consolidate, pick only the first two date columns (mm & dd), and its last column (the average across all years), it would become the scheme column
consolidated should look like
Date (MM), Date (DD), SM011008, SM011007, ... 10, 19, 2.715041, 3.81951, ...
or it can be
Date (MM/DD), SM012001, SM012002, ... 10/19, 7.5077415, 3.6406846, ...
Swagger
http://localhost:7777/webjars/swagger-ui/index.html?url=http://localhost:7777/v3/api-docs
http://127.0.0.1:7777/webjars/swagger-ui/index.html?url=http://127.0.0.1:7777/v3/api-docs
http://localhost:7777/swagger-ui.html#/
http://127.0.0.1:7777/swagger-ui.html#/
http://localhost:7777/webjars/swagger-ui/index.html?url=/v3/api-docs&validatorUrl=#/
OpenAPI JSON Schema
http://localhost:7777/v3/api-docs
http://127.0.0.1:7777/v3/api-docs
Hit the following GET APIs using Postman or cURL; or copy paste the URLs in the browser
http://127.0.0.1:7777/data/load
Loads the data
http://127.0.0.1:7777/generate-analysis-report/yearly-average
Generates the yearly day wise average growth percentage
http://127.0.0.1:7777/data/scheme/{schemeId}
type in actual schemeId
http://127.0.0.1:7777/data/scheme/SM001001
Verifies if the data is loaded correctly
http://127.0.0.1:7777/generate-analysis-report/yearly
http://127.0.0.1:7777/generate-analysis-report/quarterly
Generates the yearly and quarterly growth analysis data in separate files
JSON Structure is supposed to be as follows :
// analysis object
{
"startDate": "1 April 2014",
"endDate": "31 March 2015",
"openingDate": "", // actual date from which the NAV is picked
"openingNAV": , // float value
"closingDate": "", // actual date from which the NAV is picked
"closingNAV": , // float value
"growthPercentage": , // float value
}
// financial year object
{
"meta": {
"pensionFundManager": "",
"pensionScheme": ""
},
"<financialYear-14-15>": {
// analysis object data
},
"<financialYear-15-16>": {
// analysis object data
},
...
}
// financial year quarters object
{
"meta": {
"pensionFundManager": "",
"pensionScheme": ""
},
"<financialYear-14-15-quarter-q1>": {
// analysis object data
},
"<financialYear-14-15-quarter-q2>": {
// analysis object data
},
...
}
// final consolidate yearly json
{
"<schemeId-SM001001>": , // financial year object
"<schemeId-SM001002>": , // financial year object
...
}
// final consolidate quarterly json
{
"<schemeId-SM001001>": , // financial year quarters object
"<schemeId-SM001002>": , // financial year quarters object
...
}
- Fund Manager Historical Data
Located in directory nav-data/historical/
Go inside any Fund Manager, say PFM010_Aditya_Birla_Sun_Life
or PFM008_HDFC
Go inside the output
directory
Recursive listing of files
ls -lashR
Listing based on Sorted Size Descending
ls -laS
Word count of all the content of files
wc -l `ls discrepancy/* history/* investigation/*`
Swap csv columns
awk -F, '{ print $2 "," $1 }' sampleData.csv
Remove csv lines with no last column data
cat schemeId.csv | grep -v ",$" > scheme-id.csv
Replace month words with numbers
cat schemeId.csv | sed 's/Jan/01/g' | sed 's/Feb/02/g' | sed 's/Mar/03/g' | sed 's/Apr/04/g' | sed 's/May/05/g' | sed 's/Jun/06/g' | sed 's/Jul/07/g' | sed 's/Aug/08/g' | sed 's/Sep/09/g' | sed 's/Oct/10/g' | sed 's/Nov/11/g' | sed 's/Dec/12/g' > scheme-id.csv
Replace 2 digit year with 4 digit year
cat csv/schemeId.csv | sed 's/-08,/-2008,/g' | sed 's/-09,/-2009,/g' | sed 's/-10,/-2010,/g' | sed 's/-11,/-2011,/g' | sed 's/-12,/-2012,/g' | sed 's/-13,/-2013,/g' | sed 's/-14,/-2014,/g' | sed 's/-15,/-2015,/g' | sed 's/-16,/-2016,/g' | sed 's/-17,/-2017,/g' | sed 's/-18,/-2018,/g' | sed 's/-19,/-2019,/g' | sed 's/-20,/-2020,/g' | sed 's/-21,/-2021,/g' > csv-normalized/schemeId.csv
Replace the starting of line 1 digit day to 2 digit day dd in date
cat schemeId.csv | sed "s/^1-/01-/" | sed "s/^2-/02-/" | sed "s/^3-/03-/" | sed "s/^4-/04-/" | sed "s/^5-/05-/" | sed "s/^6-/06-/" | sed "s/^7-/07-/" | sed "s/^8-/08-/" | sed "s/^9-/09-/" > scheme-id.csv
Remove carriage return from end of all lines
cat schemeId.csv | sed 's/\r$//' > scheme-id.csv
- Header (Mandatory)
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7600374410956303" crossorigin="anonymous"></script>
- Display Ad
<!-- Display Ad -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="auto"
data-full-width-responsive="true"
data-ad-slot="1694074948"></ins>
- Multiplex Ad
<!-- Multiplex Ad -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="autorelaxed"
data-ad-slot="2540252752"></ins>
- In-Article Ad
<!-- In-Article Ad -->
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout="in-article"
data-ad-slot="8233247344"></ins>
- In-Feed Ad (Image on the Left Side)
<!-- In-Feed Ad (Image on the Left Side) -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout-key="-fg+5x+3m-c0+8k"
data-ad-slot="5179838472"></ins>
- In-Feed Ad (Image on the Right Side)
<!-- In-Feed Ad (Image on the Right Side) -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout-key="-fg+5x+3m-c0+8k"
data-ad-slot="4247515279"></ins>
- In-Feed Ad (Image Above)
<!-- In-Feed Ad (Image Above) -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout-key="-6t+ed+2h-1m-4u"
data-ad-slot="9719333800"></ins>
- In-Feed Ad (Title Above)
<!-- In-Feed Ad (Title Above) -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout-key="-ek+6j-34-9c+so"
data-ad-slot="2032415472"></ins>
- In-Feed Ad (Text only)
<!-- In-Feed Ad (Text only) -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-7600374410956303"
data-ad-format="fluid"
data-ad-layout-key="-hh-7+2h-1m-4u"
data-ad-slot="4658578817"></ins>
- Footer / Above Footer (Mandatory)
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
- Header (Mandatory)
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7600374410956303" crossorigin="anonymous"></script>
- Display Ad
<!-- Display Ad -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="auto" data-full-width-responsive="true" data-ad-slot="1694074948"></ins>
- Multiplex Ad
<!-- Multiplex Ad -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="autorelaxed" data-ad-slot="2540252752"></ins>
- In-Article Ad
<!-- In-Article Ad -->
<ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout="in-article" data-ad-slot="8233247344"></ins>
- In-Feed Ad (Image on the Left Side)
<!-- In-Feed Ad (Image on the Left Side) -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout-key="-fg+5x+3m-c0+8k" data-ad-slot="5179838472"></ins>
- In-Feed Ad (Image on the Right Side)
<!-- In-Feed Ad (Image on the Right Side) -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout-key="-fg+5x+3m-c0+8k" data-ad-slot="4247515279"></ins>
- In-Feed Ad (Image Above)
<!-- In-Feed Ad (Image Above) -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2h-1m-4u" data-ad-slot="9719333800"></ins>
- In-Feed Ad (Title Above)
<!-- In-Feed Ad (Title Above) -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout-key="-ek+6j-34-9c+so" data-ad-slot="2032415472"></ins>
- In-Feed Ad (Text only)
<!-- In-Feed Ad (Text only) -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7600374410956303" data-ad-format="fluid" data-ad-layout-key="-hh-7+2h-1m-4u" data-ad-slot="4658578817"></ins>
- Footer / Above Footer (Mandatory)
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
-
Data Tables
https://datatables.net/manual/installation
-
Color Strategy
https://www.google.com/search?q=royal+blue+colors+hex
https://www.htmlcsscolor.com/hex/69E141
https://www.google.com/search?q=hex+calculator
https://www.calculator.net/hex-calculator.html?number1=ff&c2op=-&number2=2F&calctype=op&x=71&y=18
https://www.google.com/search?q=plot+colors
http://math.loyola.edu/~loberbro/matlab/html/colorsInMatlab.html
-
Search Engine Optimization
https://www.google.com/search?q=github+pages+seo
https://www.quora.com/Are-GitHub-pages-domains-listed-on-Google
https://www.google.com/search?q=site%3Ahttps%3A%2F%2FNationalPensionScheme.GitHub.io%2F
https://search.google.com/search-console/welcome?utm_source=about-page
-
My Ad Sense Page
-
Google Ad Sense
https://www.google.com/adsense/new/u/0/pub-7600374410956303/onboarding/overview
-
Google Ad (Desktop Experience Report)
-
Google Ad (Mobile Experience Report)
-
Google Ad (Abusive Experience Report)
-
Google Ad (Abusive Notifications)
-
SiteMap Submission Request
https://www.google.com/ping?sitemap=https://nationalpensionscheme.github.io/sitemap.xml
-
Google Search Console
http://www.google.com/webmasters/tools/
https://search.google.com/search-console?resource_id=https://NationalPensionScheme.GitHub.io/
https://developers.google.com/search/docs/advanced/crawling/ask-google-to-recrawl
-
SEO Docs Q/A
https://support.google.com/webmasters/answer/6258314?hl=en&ref_topic=10265228
https://support.google.com/webmasters/answer/9012289
https://developers.google.com/search/docs/beginner/how-search-works
https://developers.google.com/search/docs/advanced/guidelines/get-started-developers
-
SEO Sitemap
https://www.google.com/ping?sitemap=https://NationalPensionScheme.GitHub.io/sitemap.xml
https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap
https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls
https://www.sitemaps.org/index.html
https://www.sitemaps.org/protocol.html
https://www.sitemaps.org/faq.html
https://support.google.com/webmasters/answer/7451001#errors
https://developers.google.com/search/docs/advanced/sitemaps/large-sitemaps
-
SSH Keys for GIT
https://www.google.com/search?q=how+to+generate+ssh+key+for+git
https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key
-
PDF Parser
Click on "Get Text and Metadata"
https://products.groupdocs.app/parser/pdf
https://products.aspose.app/pdf/parser
https://www.google.com/search?q=pdf+parser&oq=pdf+parser
-
PDF to HTML
-
API Integration - Get Client IP / Client Details
https://api.ipify.org/?format=json
https://stackoverflow.com/questions/391979/how-to-get-clients-ip-address-using-javascript
https://www.google.com/search?q=javascript+how+to+get+the+client+ip+address
-
Linux Find Duplicates in CSV based on Key Columns
-
Linux Replace String
https://www.cyberciti.biz/faq/how-to-use-sed-to-find-and-replace-text-in-files-in-linux-unix-shell/
https://www.google.com/search?q=linux+replace+string+in+file
-
Linux Swap CSV Columns
https://unix.stackexchange.com/questions/460890/swap-first-and-second-columns-in-a-csv-file
-
Linux Mathematical Operations
https://vitux.com/how-to-do-basic-math-in-linux-command-line/
-
Linux Variable Operators
https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash
https://www.linuxtechi.com/compare-numbers-strings-files-in-bash-script/
-
Linux Grep with Variable
https://www.cyberciti.biz/faq/how-to-assign-a-grep-command-value-to-a-variable-in-linuxunix/
-
Linux If Else If
-
Linux Cat No Such File
https://stackoverflow.com/questions/18310744/unix-cat-no-such-file-or-directory-error
-
Linux Grep End of Line
https://unix.stackexchange.com/questions/124462/detecting-pattern-at-the-end-of-a-line-with-grep
-
Linux Grep Not
-
Linux remove extra WhiteSpaces
-
Linux Compare two Strings for equality
https://linuxize.com/post/how-to-compare-strings-in-bash/
https://www.google.com/search?q=linux+if+string+equals
https://www.google.com/search?q=linux+compare+two+strings+if+equal
-
Linux remove Carriage Return from file using Sed
https://www.cyberciti.biz/faq/how-to-remove-carriage-return-in-linux-or-unix/
https://www.google.com/search?q=sed+to+remove+carriage+return
-
Linux Clean Cache
https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/
https://www.google.com/search?q=linux+text+editor+clean+cache
-
Linux Extract last X letters from String
https://www.google.com/search?q=linux+get+last+two+characters+from+line
-
Linux Parse Number from String
https://linuxconfig.org/how-to-extract-number-from-a-string-using-bash-example
https://www.google.com/search?q=linux+parse+number+from+string
-
Linux Shell $ WildCards
https://superuser.com/questions/247127/what-is-and-in-linux
https://www.google.com/search?q=linux+%24%23
http://linuxsig.org/files/bash_scripting.html
https://unix.stackexchange.com/questions/291570/what-is-in-bash
-
Linux Shell Command Language
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set
-
Linux Multi Line Comments
https://stackoverflow.com/questions/43158140/way-to-create-multiline-comments-in-bash
-
Linux For Loop
-
Linux Arrays
-
cURL Save output to file
https://stackoverflow.com/questions/13735051/how-to-capture-curl-output-to-a-file
-
Unicode Decode
https://www.google.com/search?q=deocde+unicode
https://www.online-toolz.com/tools/text-unicode-entities-convertor.php
-
URL Decode
-
HTML Formatter
https://www.google.com/search?q=html+formatter
-
Base 64 Encode
-
Base 64 Decode
-
Java Microservice
https://stackoverflow.com/questions/4871051/how-to-get-the-current-working-directory-in-java
-
Cut Columns CSV
-
Sort CSV
https://www.google.com/search?q=sort+a+csv+file+in+linux+based+on+a+date+column
https://www.unix.com/unix-for-dummies-questions-and-answers/131166-sort-field-date-mm-dd-yyyy.html
https://www.unix.com/shell-programming-and-scripting/174218-sorting-date-field-sort-k.html
https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html
https://www.google.com/search?q=sort+a+csv+file+in+linux+based+on+a+column
https://stackoverflow.com/questions/26249209/sort-csv-file-based-on-first-column
-
Symbols
-
Font Awesome Cheatsheet
-
Font Awesome
https://www.fontawesomecheatsheet.com/
https://www.w3schools.com/icons/fontawesome_icons_chart.asp
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-address-book-o
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-address-card-o
-
Font Awesome Icons
https://www.w3schools.com/icons/fontawesome_icons_webapp.asp
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-institution
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-compass
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-diamond
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-universal-access
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-vcard-o
-
Colors
http://www.javascripter.net/faq/rgbtohex.htm
https://www.google.com/search?q=rgb+to+hex
-
Unique Colous
-
Scrollbar
https://www.encodedna.com/css-tutorials/how-to-create-custom-scrollbar-using-css.htm
https://www.encodedna.com/javascript/practice-ground/default.htm?pg=custom_scrollbar_using_css
https://stackoverflow.com/questions/43738245/change-y-axis-horizontal-scrollbar-styles
-
Screen Window Dimensions
https://www.tutorialrepublic.com/faq/how-to-detect-screen-resolution-with-javascript.php
https://www.tutorialrepublic.com/javascript-tutorial/javascript-window-screen.php
https://www.google.com/search?q=javascript+how+to+get+the+display+size
-
HTML Footer at the Bottom using CSS
https://www.google.com/search?q=html+how+to+place+footer+at+the+bottom+of+the+page
-
CSS Text Decoration Underline Overline
https://www.w3schools.com/cssref/pr_text_text-decoration.asp
https://www.w3schools.com/cssref/tryit.asp?filename=trycss_text-decoration
-
CSS Active Input Remove Outline
https://www.google.com/search?q=css+input%3Afocus+border
-
CSS Text Selection Colour
https://www.google.com/search?q=html+text+selection+color
https://www.w3schools.com/howto/howto_css_text_selection.asp
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_text_selection
-
JavaScript Truncate / Round off Number to Some Decimal Places
https://www.google.com/search?q=javascript+round+to+4+decimal+places
https://www.w3schools.com/jsref/jsref_tofixed.asp
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_tofixed
-
JavaScript Object Keys
https://www.google.com/search?q=javascript+keys+in+object
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
-
JavaScript POST Request
https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest
-
JavaScript get HTML Element by ClassName
https://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_getelementsbyclassname
-
JavaScript Split Number into individual Digits
https://stackoverflow.com/questions/7784620/javascript-number-split-into-individual-digits
-
JavaScript For Loop
https://www.w3schools.com/js/js_loop_for.asp
https://www.w3schools.com/js/tryit.asp?filename=tryjs_loop_for
-
JavaScript get Id of HTML Element
https://www.w3schools.com/jsref/prop_html_id.asp
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_id
-
JavaScript replace a String from a String
https://www.w3schools.com/jsref/jsref_replace.asp
https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace
-
Sitemap
-
HTML Tooltip Title
https://stackoverflow.com/questions/2238239/tooltips-for-button-elements
-
Website
https://www.w3schools.com/html/html_layout.asp
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_layout_float
https://www.w3schools.com/jsref/prop_button_value.asp
https://stackoverflow.com/questions/32842967/get-value-of-the-clicked-button/32843035
https://stackoverflow.com/questions/2460100/remove-the-complete-styling-of-an-html-button-submit
https://www.w3schools.com/cssref/css3_pr_border-radius.asp
https://www.w3schools.com/tags/tag_font.asp
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_font_face_css
https://www.w3schools.com/css/css_align.asp
https://www.toptal.com/designers/htmlarrows/arrows/
https://flaviocopes.com/dom-ready/
https://www.w3schools.com/w3css/w3css_icons.asp
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-table
https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-line-chart
https://www.geeksforgeeks.org/hide-or-show-elements-in-html-using-display-property/
https://www.w3schools.com/howto/howto_js_remove_class.asp
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_remove_class
https://material.io/design/color/dark-theme.html#ui-application
https://stackoverflow.com/questions/7431268/how-to-read-data-from-csv-file-using-javascript
https://stackoverflow.com/questions/36975619/how-to-call-a-rest-web-service-api-from-javascript
https://www.w3schools.com/js/js_arrays.asp
https://www.w3schools.com/jsref/jsref_push.asp
https://www.w3schools.com/jsref/jsref_parseint.asp
https://gomakethings.com/converting-strings-to-numbers-with-vanilla-javascript/
https://stackoverflow.com/questions/43738245/change-y-axis-horizontal-scrollbar-styles
-
Navigation Menu Tree
https://www.w3schools.com/howto/howto_js_treeview.asp
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_treeview
-
Google Charts
https://developers.google.com/chart
https://developers.google.com/chart/interactive/docs
https://developers.google.com/chart/interactive/docs/reference
https://developers.google.com/chart/interactive/docs/quick_start
https://developers.google.com/chart/interactive/docs/gallery
https://developers-dot-devsite-v2-prod.appspot.com/chart/interactive/docs/gallery
https://developers.google.com/chart/interactive/docs/drawing_charts
https://developers.google.com/chart/interactive/docs/basic_interactivity
https://developers.google.com/chart/interactive/docs/spreadsheets
https://developers.google.com/chart/interactive/docs/customizing_charts
https://developers.google.com/chart/interactive/docs/customizing_axes
https://developers.google.com/chart/interactive/docs/points
https://developers.google.com/chart/interactive/docs/crosshairs
https://developers.google.com/chart/interactive/docs/customizing_tooltip_content
https://developers.google.com/chart/interactive/docs/general_dev_tools
https://developers.google.com/chart/interactive/docs/dev
https://developers.google.com/chart/interactive/docs/queries
https://developers.google.com/chart/interactive/docs/datesandtimes
https://developers.google.com/chart/interactive/docs/dev/implementing_data_source
https://developers.google.com/chart/interactive/docs/datatables_dataviews
https://developers.google.com/chart/interactive/docs/lines
https://stackoverflow.com/questions/10916998/google-chart-setting-gridline-color/10917366
https://stackoverflow.com/questions/8808100/google-chart-background-color
https://stackoverflow.com/questions/20764157/zoom-google-line-chart
https://stackoverflow.com/questions/47205647/remove-zoom-buttons-from-google-annotation-chart
https://blog.programster.org/google-line-chart
https://groups.google.com/g/google-visualization-api/c/rO3T0-9aH6M
https://developers.google.com/chart/interactive/docs/gallery/controls
-
Google Charts Examples
https://developers.google.com/chart/interactive/docs/basic_multiple_charts
https://developers.google.com/chart/interactive/docs/gallery/annotationchart
https://developers.google.com/chart/interactive/docs/gallery/candlestickchart
https://developers.google.com/chart/interactive/docs/gallery/linechart
https://developers.google.com/chart/interactive/docs/gallery/steppedareachart
https://developers.google.com/chart/interactive/docs/gallery/trendlines
https://developers.google.com/chart/interactive/docs/gallery/timeline
https://developers.google.com/chart/interactive/docs/gallery/orgchart
https://developers.google.com/chart/interactive/docs/gallery/combochart
https://developers.google.com/chart/interactive/docs/gallery/diffchart
-
Google Chart - Zoom Buttons
https://stackoverflow.com/questions/50126940/google-chart-how-to-add-zoom-buttons-on-area-chart
-
Google Line Chart - Fill Missing / Null Values
https://stackoverflow.com/questions/30682093/draw-google-line-chart-with-multiple-missing-values
https://www.google.com/search?q=google+line+chart+null+values
-
Google Line Chart - Configuration Options
https://developers.google.com/chart/interactive/docs/gallery/linechart?csw=1#configuration-options
-
Google Charts - Saving Image as PNG
https://developers.google.com/chart/interactive/docs/printing
-
Google Charts Gridlines
https://gist.github.com/DNTech/716b6b2aa5992750b003d23caf592f0c
-
Google Charts Baselines Color
https://stackoverflow.com/questions/19420867/google-charts-y-axis-color
-
Plotty Charts
-
Charts.js
-
Canvas JS Charts
-
JS Charting
https://www.freecodecamp.org/news/how-to-make-your-first-javascript-chart/
-
D3 Graph
-
JSX Graph
-
Other JavaScript Chart Compilation References
https://www.sitepoint.com/best-javascript-charting-libraries/
https://blog.logrocket.com/top-picks-javascript-chart-libraries/
-
CSV to JSON using JavaScript
https://stackoverflow.com/questions/27979002/convert-csv-data-into-json-format-using-javascript
-
GitHub Pages Setup
-
GitHub Pages Examples
-
GitHub Pages Learn
https://docs.github.com/en/pages
https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages
Data source is NPS website as well as individual Fund Managers' Websites, and is published here as is; with some correction of text / transformation of data, except modifying the significance of the Net Asset Values
This website and the repository, are meant for insightful purposes only
Copying or distributing this repository or anything within this repository, is not allowed for any commercial activity / benefit / purpose; without the explicit consent and written permission from the owner of this repository
All rights reserved
Feel free to drop an email