Skip to main content

Posts

Showing posts from 2020

Cheatsheet: Docker

  version check          docker version Create a container — setup File System Snapshot to be used docker create <image-name> Start a container — Executes startup command        -a - will show you all the logs/info coming out of the container  docker start -a <container-ID> run a docker container from image — Create + Start docker run <image-name> Default command override docker run <image-name> <override-command> Eg: "docker run busybox ls” List all running containers docker ps List all containers ever created docker ps --all Remove stopped containers      — have to redownload images  docker system prune   Logs from container docker logs <container-ID> Stop a container  — A hardware signal “SIGTERM" is sent to process, this gives time for program to clean-up and shut down — If container doesn’t stop in 10 secs after issuing SIGTERM, then do...

Cheatsheet: Kafka

       Start Zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties Start Kafka: bin/kafka-server-start.sh config/server.properties Create topic: kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic <--topic-name--> --create --partitions 2 --replication-factor 1 list topics: kafka-topics.sh --zookeeper 127.0.0.1:2181 --list describe topic: kafka-topics.sh --zookeeper 127.0.0.1:2181 -describe --topic <--topic-name--> delete topic: kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic <--topic-name--> --delete produce message to topic: kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 -topic <--topic-name--> consume messages from topic: kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 -topic <--topic-name--> --from-beginning Happy Coding  👨‍💻

Settings.xml for Maven, JFrog

For development and deployment of applications we always use an artifactory in real-time world to host artifacts needed for your build and also as a target to deploy artifacts generated in the build process. For Maven, to communicate with artifactory we need a settings.xml file which is usually located at "/User/rake/.m2/settings.xml" this file consists of how to authenticate to the artifactory servers and authorizations to read/ write to different locations like release, snapshots e.t.c... Settings.xml can be generated using the artifactory you're using which in my case is JFrog , but here's a sample settings file for your reference incase you're feeling lazy☺ <?xml version="1.0" encoding="UTF-8"?> <settings xsi:schemaLocation= "http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns= "http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi= "http://www.w3.org/2001/XM...

Find classes that use certain annotation - Java, Spring

Code to read classes that use a certain annotation: import org.springframework.beans.factory.config.BeanDefinition ; import org.springframework.context.ApplicationContext ; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider ; import org.springframework.core.type.filter.AnnotationTypeFilter ; ClassPathScanningCandidateComponentProvider classPathScanningCandidateComponentProvider = new ClassPathScanningCandidateComponentProvider ( false ); classPathScanningCandidateComponentProvider . addIncludeFilter ( new AnnotationTypeFilter ( CustomAnnotation . class )); Set < BeanDefinition > beanDefinitions = classPathScanningCandidateComponentProvider . findCandidateComponents ( "com.rake.demo.beans" ); for ( BeanDefinition beanDefinition: beanDefinitions ) { System . out . println ( beanDefinition . getBeanClassName ()); } Annotation: import java.lang.annotation.ElementType ; import java.lang.annotation.Reten...

Go #6 - REST Api with Go using net/http

net/http: This is available out of the box in Go language. Package "net/http"  provides HTTP client and server implementations which can be used to make common HTTP requests like GET, POST, PUT, DELETE e.t.c.. While building REST Api's with Go using net/http , here are few methods and interfaces we should understand: type Handler   type Handler interface { ServeHTTP(ResponseWriter, * Request) } - A Handler is responsible for responding to HTTP requests. This interface has only one method ServeHTTP(ResponserWriter, *Request) - You can define your own struct as a Handler which implements  ServeHTTP  method with ResponseWriter and pointer to Request as arguments  package main import ( "net/http" ) type server struct {} func (s * server) ServeHTTP(writer http.ResponseWriter, req * http.Request) { writer.Header().Set( "Content-Type" , "application/json" ) writer.WriteHeader(http.StatusOK) writer...

Go #5 - Receiver Functions in Go

Receiver Functions: Function Receiver sets a method on variables we create. syntax: func (t type ) functionName() {} code: employee.go package employee import "fmt" // Employee struct type employee struct { name string age int salary int } // constructor func NewEmployee(name string , age int , salary int ) * employee { return & employee{ name: name, age: age, salary: salary, } } // print employee func (e employee) ToString() { fmt.Printf( "%s is %d years old with salary %d \n" , e.name, e.age, e.salary) } - Notice the ToString() method in employee.go , it is the receiver's function for employee type - So any new variable of type employee will have access to the ' ToString() ' method main.go package main import "trygo/employee" func main() { rake := employee.NewEmployee( "Rake" , 13 , 4566 ) rake.ToString() } - Calling receiver's function for t...

ESS - 3.Tools and Technologies involved in modern search architecture - Part II

This discussion is continuation of Tools and Technologies involved in modern search architecture . Please use the  link  to access the part-I for a quick recap as the topics mentioned there may be referred here. In Search implementation once you're done with the challenges of Crawling the content and building an Inverted Index to quickly access the matched documents two more challenges are up for you: Relevant results to the user - Relevance Score Deliver results to the user - SERP Relevance Score: Relevance scoring is used by search engines to identify the order in which the documents should appear. Here's a documented definition: Relevance scoring uses the Boolean model to find matching documents and a formula called the practical scoring function to calculate relevance. This formula borrows concepts from TF-IDF (term frequency/inverse document frequency) and the vector space model but adds more modern features like a coordination factor, field length no...

Go #4 - Only loop in Go is For

For: for is the only looping construct in Go. Here are few example of for loops: func main() { //for loop with single condition i := 1 for i <= 10 { fmt.Println(i) i ++ } //for loop with initialization/condition/after for i := 1 ; i <= 10 ; i ++ { fmt.Println(i) } // for loop with break/return -- for without condition will loop // repeatedly until you break or return k := 5 for { if k == 2 { return } fmt.Println(k) k -- } } Happy Coding 🤖

Go #3 - Data Types, Variables and Type Inference

DataTypes: 1. Numeric Types: int8, int16, int32, int64, int uint8, uint16, uint32, uint64, uint float32, float64 complex64, complex128 byte rune 2. bool 3. string Declaration & Initialization: var name string = "GoBot" var salary int = 1000 var zipcode int var trueVal = true Type Inference: If you pass an initial value, Go will automatically be able to infer the type of the variable using initial value as in examples below: var name = "GoBot" var salary = 1000 city := "San Francisco" var a, b int = 5 , 7 var x, y = "Hello" , 2 fmt.Println(name, salary, city, a, b, x, y) Notice the ' := ' syntax in line 4 which is shorthand for declaring and initializing variable which is similar to writing ' var city string = "San Francisco" ' *- shorthand notation requires initial values for all variables on the left-hand side of the assignment *- shorthand notation can o...

Go #2 - Classic 'Hello World' program in Go

Code: 1 2 3 4 5 6 7 package main import "fmt" func main() { fmt.Println( "Hello World!" ) } - Every go file must start with ' package name ' - ' main() ' function should always exist in main package - import "fmt" is used to import required packages - ' fmt.Println("Hello World!")' here we are calling the Println function in fmt package so to call a function in Go we use the syntax  package.function() Happy Coding 🤖

Go #1 - Running a go program

Go Install go install - When you run the above command, Go will compile the program and installs a binary in the bin location. For mac it is created at '/usr/local/go/bin/trygo' by default. Steps: - Move to your project folder using "cd projects/go/src/trygo" - Run 'go install' - You can execute the binary using '~ / projects / go / bin/trygo' Possible issues: - Ran into the following issue when i ran the above command go install trygo: open / usr / local / go / bin / trygo: permission denied - I fixed it by changing the 'GOBIN' path in bashrc export GOBIN=~ / projects / go / bin export PATH=$PATH:$GOBIN Go Build go build - 'go build' is similar to 'go install' the only difference is it creates the binary inside the location you ran 'go build' - To run the program you can just say 'trygo/trygo' (The first trygo is the location for the binary and trygo is the binary file g...

JSX = XMLised Javascript

JSX stands for Javascript XML. React works without using JSX but it is advised to use it to write more elegant code. Let us find out what JSX is and the pros of using it: What is JSX? JSX is syntactic sugar to React.createElement(component, props, ...children) function. In short it basically allows you to write HTML in react code. Why JSX? React embraces the fact that rendering logic is inherently coupled with other UI logic like handling events, how data is prepared for display e.t.c.. so instead of separating markup and logic into different files. It is easier to have it along side your ReactJS code. Also, it's type-safe which helps you to catch most of the errors during compilation. JSX and it's React code: JSX const element = ( <h1 className="greeting" > Hello, React! </h1> ); Above JSX will get compiled to the following code without JSX: var element = React.createElement( "h1", { className: ...