Menu bars

Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Sunday, 31 March 2019

Hapi(Y) action plan

Following are resources for my Nodejs + Hapi learning,

Getting started

1) https://hapijs.com/tutorials/getting-started?lang=en_US - Official tutorial ? It is a gem


My React Plan

Following are my react action plan for get started with Reactjs & Redux

Get your basics right

1) https://www.robinwieruch.de/learn-react-js/  :Get an idea about what are you getting to. Generally talks about why react and provides plan to learn it step by step.

2) https://scrimba.com/g/glearnreact - Very good interactive tutorial for starters

3) https://www.taniarascia.com/getting-started-with-react/ - Another very good tutorial for bootstrapping react

4) https://reactjs.org/docs/hello-world.html & https://reactjs.org/tutorial/tutorial.html - It is worth looking at react docs itself

5) https://www.youtube.com/watch?v=Ke90Tje7VS0&t=2406s - He is good at explaining basics too.

What about few capstone projects ?  

1) https://scotch.io/tutorials/build-a-mini-netflix-with-react-in-10-minutes

State ? That is lame ! Welcome to Redux

1) https://www.youtube.com/watch?v=kJeXr1K3nyg&list=PLLDNgndR69WeeHFoEg3-WG-mohPDXqZ2f - This playlist is very good for beginners and explains nicely. must watch for beginners. 

Wednesday, 19 September 2018

System design : design an appstore like google playstore

First of all we need to figure out the features that we need for our appstore. Lets list them one by one.

Login
- User page
   - Basic details
   - Mobile OS
- view already submitted apps
- apps detail page
- Install feature 
   - Check for the compatility of OS
   - Download
- Publisher page
   - Upload feature
   - Permission required
   - How do we store these binaries ?
- App search
- Roll out updates

Ok ! we are almost done with the requirements. Main points to be taken care for this application should be ..

- How do we upload files ? What are the different protocols ?

Lets go in detail and find out how does the file transfer works internally. Main protocols that are used for file transfer are,

FTP - FTPS(secure) &  HTTP - HTTPS(secure) 
SSL is used to secure the protocols for file transfer where it will encrypt the contents before sending. 

Understanding the basics
If you want to dive deep into the actual implementation of the FTP or HTTP , then we need to start from the basic OSI layers. Different layers of the OSI work together to transmit data from one host to another remote host.

Good understanding and explanation of the OSI layers can be found here. Basic network concepts and terminologies are found out here as well. TC/IP details can be found out in this link.

Read more about how FTP works here.

The question was whether we should use FTP or http. ftp is a clear winner in case of transfer speed, but properly tuned http can counter that by parallel processing of chunks. ftp's security i still a concern as most of the firewalls will stop it. nowadays ftps are becoming obsolete. the large file transfers can be done with http. So n network application http is a better option for large file transfer.Since our use case of app binary files will be smaller in size , we will sure surely use http based file transferring.

Some of the techniques that can be used for transferring large files are chunking, file streams etc. Here is a good article on large file transfer over http.

- How does we store all the binary files ?

We can store these files in a file server for mostly active files and web can move it storage servers once it having less activities.

File server is used for sharing/distributing large-sized files amongst a large group of users across multiple locations. These have high-speed connectivity & high amount of bandwidth.
File storage server is used to host synced or backed-up files from PCs and smartphones. These are not used to share files and typically have large amount of storage and low-to medium speed connectivity with high bandwidth.
- Make it highly available




API design
Data modelling



Spring important links to check out

If you want to read about Spring life cycle, how to add actions in between the spring life cycle methods or how to use *aware interfaces like ApplicationContextAware interfaces -  Read this link

Do you want to understand how dependency injection works ? Or want to know about the types of DI ? Or even why one should not use @autowired ? See this link

Want to look at different annotation available ? here it is

Java Thread : Brush up links

Threads are most important topics for any java interviews. Knowing thread deeper will give you extra impression on the interviewer as threads are relatively untouched & difficult section of java for most of the java developers. I am listing the basic thread related links that i have came across and hopefully this will help you to prepare for your next java interview.

First of all we need to get hold on the basics of the thread concepts in java including creation, race conditions, locks etc. You can refer this article for basics. Before that if you want to learn how OS deals with threads and what are the different types of concurrency available then this article will give you an excellent write up about the back ground. The blog callicoder has listed all the major topics very clearly with examples with Java 8. Please check all the blog series in the left panel. It talks about executor service, callable, synchronization and locks. Atomic variables are thread safe option as well. So we need to understand how atomic variables take of thread safety. You can find the article here.

Java 1.5 has introduced a number of concurrent collections and it is very important to know about these utilities during interviews.

ThreadLocal - In Details
BlockingQueue
Counting Semaphore




This article will help you write your own thread pool from scratch. It's worth reading.



Wednesday, 16 May 2018

Natural Language Processing Notes

Natural language processing is one of widely used area with a lot of real word applications. This is my notes related to NLP. Mostly i will be noting down the links that are needed for detailed analysis of the same.

Lets get into the basics

First thing first !! if you want to get to know the very basics of the here is the best starting point with hands on course : See the links.

Oh wait !! how do we create features ? bag of words ? look into this blog for details on how can we extract features.

Okey. Now i understand that the need of knowing the grammar of  english language. Here is some basic concept needed for grammars. See the link

But i need to get some strong basic concepts of NLP. Lets learn from the Stanford guys:
1) http://web.stanford.edu/class/cs224u/
2) Search for CS224N and CS224D

This particular link provides some good learning links - https://www.quora.com/How-do-I-learn-Natural-Language-Processing

Some general Reading about NLP - https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3168328/


Examples of NLP based Sentiment Analysis

http://www.vikparuchuri.com/blog/natural-language-processing-tutorial/
https://www.kaggle.com/c/word2vec-nlp-tutorial/details/part-1-for-beginners-bag-of-words
http://streamhacker.com/2010/05/10/text-classification-sentiment-analysis-naive-bayes-classifier/
https://github.com/cjhutto/vaderSentiment




grammer : 
http://www.ps.uni-saarland.de/~niehren/oz-natural-language-script.html/vorlesung/node49.html

Important Nodejs packages

I wanted to note down important nodejs packages that i am using daily which will solve many of the common issues that we face frequently.


Moment

Date manipulation is a headache in every programming language and nodejs is no different from its peers. Moment will be helping you out for all your date format issues, difference between dates kind of problems. Certainly this is a package that you need to have.

Tutorial - Moment.js

Mongoose

Want to use mongodb ? It is always advised to use a ORM for that which will reduce your work and make your life easier. Mongoose is the best option for mongodb ORM.

Check these links for details : kompulsa.com and scotch.io

Child Process

This is one of the most important package in the nodejs where it is responsible for creating another process from the nodejs code so that it wont block the single thread of the nodejs.

Check the details : krasimirtsonev.com