diff --git a/README.md b/README.md index d629e9c..73305aa 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Feel free to take a look. You might learn new things. They have been designed to - [C](languages/C.txt) - [C#](languages/C%23.txt) - [PHP](languages/php.php) +- [JAVA](languages/java.md) #### Functional @@ -98,6 +99,7 @@ Feel free to take a look. You might learn new things. They have been designed to #### Development - [cURL](tools/curl.sh) +- [Drush](tools/drush.sh) - [Elasticsearch](tools/elasticsearch.js) - [Emmet](tools/emmet.md) - [Git](tools/git.sh) diff --git a/databases/mysql.sh b/databases/mysql.sh index f1bf016..8b54bb3 100644 --- a/databases/mysql.sh +++ b/databases/mysql.sh @@ -7,4 +7,20 @@ mysql -u username -p database_name < file.sql # Import d SHOW PROCESSLIST; # Show you any queries that are currently running or in the queue to run -GRANT ALL ON mydb.* TO 'myuser'@'locahost'; # Grant **all** privileges on database +# ***************************************************************************** +# Users and Privileges +# ***************************************************************************** + +# Replace 'host' with '%' to indicate any host + +CREATE USER 'user'@'host'; # Create user +DROP USER 'user'@'host'; # Remove user. + +GRANT ALL PRIVILEGES ON base.* TO 'user'@'host' IDENTIFIED BY 'password'; # Grant access to database using password +GRANT SELECT, INSERT, DELETE ON base.* TO 'user'@'host' IDENTIFIED BY 'password'; # Grant specific privileges to database using password +GRANT ALL PRIVILEGES ON base.* TO 'user'@'host' WITH GRANT OPTION; # Grant **all** privileges on database + +REVOKE ALL PRIVILEGES ON base.* FROM 'user'@'host'; # Remove privileges on database +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'host'; # Remove **all** privileges on database + +FLUSH PRIVILEGES; # Use **only** if you modify grant tables directly using statements like INSERT, UPDATE or DELETE. diff --git a/frontend/html5.html b/frontend/html5.html index c9a0154..bd1eaf4 100644 --- a/frontend/html5.html +++ b/frontend/html5.html @@ -45,6 +45,11 @@
+ + + + + @@ -176,6 +181,11 @@ width="" + + + + + diff --git a/languages/bash.sh b/languages/bash.sh index d77d54c..d864fb5 100644 --- a/languages/bash.sh +++ b/languages/bash.sh @@ -95,6 +95,8 @@ genscript # converts plain text files into postscript for pr dvips # prints .dvi files (i.e. files produced by LaTeX) grep # looks for the string in the files grep -r # search recursively for pattern in directory +head -n file_name | tail +n # Print nth line from file. +head -y lines.txt | tail +x # want to display all the lines from x to y. This includes the xth and yth lines. ############################################################################## @@ -111,7 +113,7 @@ cd .. # changes to the parent directory cd # changes directory cp -r # copy into including sub-directories pwd # tells you where you currently are - +cd ~ # changes to home. ############################################################################## # SSH, SYSTEM INFO & NETWORK COMMANDS diff --git a/languages/java.md b/languages/java.md new file mode 100644 index 0000000..8ee028e --- /dev/null +++ b/languages/java.md @@ -0,0 +1,619 @@ +### HELLO WORLD :ghost: + +```java +//Text file name HelloWorld.java +public class HelloWorld { + // main() is the method + public static void main (String[] arfs) + //Prints "Hello World" in the terminal window. + System.out.pritn("Hello World"); +} +``` + +### COMPILATION & EXECUTING JAVA CODE + +* Goto your program directory in terminal (Assumed JAVA Path is set) +* After for compile your code + +> **javac HelloWorld.java (your program file name)** + +* For run program + +> **java HelloWorld (main class name)** + + +### DATA TYPES + +| Type | Set of values | Values | Operators | +|:-------:|:-----------------------:|:----------------------------:|:---------:| +| int | integers | between -2^31 and + (2^31)-1 | + - * / % | +| double | floating-point numbers | real numbers | + - * / | +| boolean | boolean values | true or false | && \|\| ! | +| char | characters | | | +| String | sequences of characters | | | + + +### DECLARATION AND ASSIGNMENT STATEMENTS + +```java +//Declaration statement +int a,b; + +//Assignment statement +a = 13212; //a is the variable name; 13212 is the literal which is assign to the variable a + +//Initialization statement +int c = a + b; +``` + +### COMPARISON OPERATORS + +| Operation | Meaning | +|:---------:|:---------------------:| +| == | equal | +| != | not equal | +| < | less than | +| > | greater than | +| <= | less than or equal | +| >= | greater than or equal | + + +### PRINTING +```java + String s = "Happy Coding Folks!!" + void System.out.print(String s) //print s + void System.out.println(String s) //print s, followed by a newline + void System.out.println() //print a newline +``` + +### PARSING COMMAND-LINE ARGUMENTS +```java + String s = "Java is the best!!" + int Integer.parseInt(String s) //convert s to an int value + double Double.parseDouble(String) //convert s to a double value + long Long.parseLong(String s) // convert s to a long value +```` + +### MATH LIBRARY +```java + Public Class Math{ + double abs(double a) // absolute value of a + double max(double a, double b) //maximum of a and b + double min(double a, dobule a) //minimum of a and b + double sin(double theta) //sine of theta + double cos(double theta) //cosine of theta + double tan(double theta) //tangent of theta + double toRadians(double degrees) // convert angle from degrees to radians + double toDegreestouble radians) // convert angle from radians to degrees + double exp(doube a) // exponential (e^a) + double pow(double a, double p) //raise a to the bth power (a^b) + double random() //random in [0,1) + double sqrt(double a) //square root of a + } +``` + +### EXAMPLES OF TYPE CONVERSION + + | Expression | Expression type | Expression value | +|:---------------------:|:---------------:|:----------------:| +| (1 + 2 + 3 + 4) / 4.0 | double | 2.5 | +| Math.sqrt(4) | double | 2.0 | +| "123343" + 99 | String | "12334399" | +| 11 * 0.25 | double | 2.75 | +| (int) 11 * 0.25 | double | 2.75 | +| 11 * (int) 0.25 | int | 0 | +| (int) (11 * 0.25) | int | 2 | + +### CONDITIONAL & LOOP STATEMENT +#### ANATOMY OF CONDITIONAL STATEMENT +> IF Statement +```java + if (x>y) { // x > y is the boolean expression + //Sequence of statements + x = y; + } +``` + +> IF-ELSE STATEMENT +```java + if (BOOLEAN EXPRESSION) { + //Sequence of statements + } else { + //Sequence of statements + } +``` + +> NESTED IF STATEMENT +```java + if (BOOLEAN EXPRESSION) { + //Sequence of statements + } else if { + //Sequence of statements + } + . + . + . + else { + //Sequence of statements + } +``` + +>SWITCH STATEMENT +```java + switch (VARIABLE TO EVALUATE ITS VALUE) { + case value: Statement; break; + ... + ... + ... + default: Statement; break; + } +``` +**Example:** +```java + int month = 8; + String monthString; + switch (month) { + case 1: monthString = "January"; + break; + case 2: monthString = "February"; + break; + case 3: monthString = "March"; + break; + case 4: monthString = "April"; + break; + case 5: monthString = "May"; + break; + case 6: monthString = "June"; + break; + case 7: monthString = "July"; + break; + case 8: monthString = "August"; + break; + case 9: monthString = "September"; + break; + case 10: monthString = "October"; + break; + case 11: monthString = "November"; + break; + case 12: monthString = "December"; + break; + default: monthString = "Invalid month"; + break; + } +``` + +#### ANATOMY OF A LOOP STATEMENT +>FOR LOOP STATEMENT +```java + for (declare and initialize a loop control variable; loop-continuation condition/s; increment or decrement of the variable of control) + { + //Statement + } +``` +**Example:** +```java + for (int i = 0; i <= n; i++) { + System.out.println(i); + } +``` +> WHILE LOOP STATEMENT +```java + while(condition){ //till condition will be true. + //code to be executed + } +``` +**Example:** +```java + //Initialization is a separate statement + int power = 1; + + while ( power <= 10/2 ) // power <= n/2 is an example of the loop-continuation condition + { + System.out.println(power); + } +``` + +> DO-WHILE LOOP STATEMENT + +```java + do{ //always run one time even if condition would be false + //Statement + } while(loop-continuation condition); +``` + +**Example:** +```java + int i=1; + do{ + System.out.println(i); + i++; + }while(i<=10); +``` + +### ARRAY +> ARRAY DECLARATION + +```java + int[] ai; // array of int + short[][] as; // array of array of short + short s, // scalar short + aas[][]; // array of array of short + Object[] ao; // array of Object + Collection[] ca; // array of Collection of unknown type +``` + +> DECLARATION OF ARRAY VARIABLE + +```java + Exception ae[] = new Exception[3]; + Object aao[][] = new Exception[2][3]; + int[] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 }; + char ac[] = { 'n', 'o', 't', ' ', 'a', ' ', + 'S', 't', 'r', 'i', 'n', 'g' }; + String[] aas = { "array", "of", "String", }; +``` + +### ACCESS MODIFIERS + +1. defualt(No keyword required) +2. private +3. public +4. protected + +### NON ACCESS MODIFIERS + +1. static +2. final +3. transient +4. abstract +5. synchronized +6. volatile + +## Object Oriented Programming (OOPs) Concept :clipboard: + +### OBJECT + +```java + //Declare a variable, object name + String s; + + //Invoke a contructor to create an object + s = new String ("Hello World"); + + //Invoke an instance method that operates on the object's value + char c = s.chartAt(4); +``` +> INSTANCE VARIABLES + +```java + public class Charge { + //Instance variable declarations + private final double rx, ry; + private final double q; + } +``` + +### METHODS + +```java + public static double sum (int a, int b) { //double is the return type, sum is the method's name, a and b are two arguments of type int; + int result; //local variable + result = a + b; + return result;//return statement; + } +``` + +### CLASS DECLARATION +```java +class MyClass { + // field, constructor, and + // method declarations +} +``` +**Example:** + +```java + public class Bicycle { + // the Bicycle class has + // three fields + public int cadence; + public int gear; + public int speed; + // the Bicycle class has + // one constructor + public Bicycle(int startCadence, int startSpeed, int startGear) { + gear = startGear; + cadence = startCadence; + speed = startSpeed; + } + // the Bicycle class has + // four methods + public void setCadence(int newValue) { + cadence = newValue; + } + public void setGear(int newValue) { + gear = newValue; + } + public void applyBrake(int decrement) { + speed -= decrement; + } + public void speedUp(int increment) { + speed += increment; + } +} +``` +>DECLARING CLASSESS IMPLEMENTATING AN INTERFACE AND EXTENDING PARENT CLASS +```java +class MyClass extends MySuperClass implements YourInterface { + // field, constructor, and + // method declarations +} +``` +* MyClass is a subclass of MySuperClass and that it implements the YourInterface interface. + +> CONSTRUCTORS +* A class contains constructors that are invoked to create objects from the class blueprint. +* Constructor declarations look like method declarations—except that they use the name of the class and have no return type +* Each and every class has defualt No-args constructor. + + +```java + public class Bicycle{ + + private int gear; + private int cadence; + private int speed; + + public Bicycle(int startCadence, int startSpeed, int startGear) { //args-constructor + gear = startGear; + cadence = startCadence; + speed = startSpeed; + } + + public Bicycle(){//No-args constructor + super(); + } + } +``` + +### POLYMORPHISM +* Polymorphism is the concept where an object behaves differently in different situations. +* There are two types of polymorphism + 1. compile time polymorphism + 2. runtime polymorphism. + +#### 1. Compile Time Polymorphism +* Compile-time polymorphism is achieved by method overloading. +* method overloading is creating multiple method with methods name is same and arguments are different. +```java + public class Circle { + + public void draw(){ + System.out.println("Drwaing circle with default color Black and diameter 1 cm."); + } + + public void draw(int diameter){ //method draw() overloaded. + System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm."); + } + + public void draw(int diameter, String color){ //method draw() overloaded. + System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm."); + } + } +``` +#### 2. Run Time Polymorphism +* Run-time polymorphism is achieved by method overriding. +* Runtime polymorphism is implemented when we have an **“IS-A”** relationship between objects. +* method overriding is the subclass has to override the superclass method. +```java + public interface Shape { + + public void draw(); + } +``` +```java + public class Circle implements Shape{ + + @Override + public void draw(){ + System.out.println("Drwaing circle"); + } + + } +``` +```java + public class Square implements Shape { + + @Override + public void draw() { + System.out.println("Drawing Square"); + } + + } +``` +* `Shape` is the superclass and there are two subclasses `Circle` and `Square` +* Below is an example of runtime polymorphism. +```java + Shape sh = new Circle(); + sh.draw(); + + Shape sh1 = getShape(); //some third party logic to determine shape + sh1.draw(); +``` + +### INHERITANCE + +* Inheritance is the mechanism of code reuse. +* The object that is getting inherited is called the superclass and the object that inherits the superclass is called a subclass. +* We use `extends` keyword in java to implement inheritance from class. +* We use `implements` keyword in java to implement inheritance from interface. + +```java + public class Superclass{ + // methods and fields + } +``` +```java + public interface Superinterface{ + // methods and fields + } +``` +```java + public class Subclass extends Superclass implements Superinterface{ + // methods and fields + } +``` + +### Abstraction + +* Abstraction is the concept of hiding the internal details and describing things in simple terms. +* Abstraction can be achieved by two ways. + 1. Abstract Class + 2. Interface + +#### 1. Abstract Class +* An abstract class must be declared with an `abstract` keyword. +* It can have abstract and non-abstract methods. +* It cannot be instantiated. +* It can have constructors and static methods also. +* It can have final methods which will force the subclass not to change the body of the method. + +```java + abstract class Flower{ + abstract String Smell(); //abstract method. + String Oil(){ // non-abstract method. + System.out.println("Flower Oil is good."); + } + } + + public class Lily extends Flower{ + private String Smell(){ // implementation of abstarct method. + System.out.println("Lily smell's lovender."); + } + } +``` + +#### 2. Interface +* Interface is a blueprint of a **class**. +* It can have only abstract methods. [Except Java 8 and next versions.] +* Since Java 8, we can have **default and static** methods in an interface. + + +```java + interface print{ + void printPaper(); + } + public class A4 implements print{ + public void printPaper(){ + System.out.println("A4 Page Printed. "); + } + } +``` + +### Encapsulation + +* Encapsulation is used for access restriction to class members and methods. +* Encapsulation is the technique used to implement abstraction in OOP. +* As in encapsulation, the data in a class is hidden from other classes, so it is also known as **data-hiding**. +* Encapsulation can be achieved by Declaring all the variables in the class as private and writing public methods in the class to set and get the values of variables. +* Best example of Encapsulation is POJO (Plain-Java-Object-Class). + + ```java + public class User { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } + ``` + + +## ADVANCE DATA TYPE +* **STACK DATA TYPE** + +```java + public class Stack implements Iterable + + Stack() //create an empty stack + boolean isEmpty() //return if the stack empty + void push(Item item) // push an item onto the stack + Item pop() //return and remove the item that was inserted most recently + int size() //number of item on stack +``` + +* **QUEUE DATA TYPE** + +```java + public class Queue implements Iterable + + Queue() //create an emptyh queue + boolean isEmpthy() //return if the queue empthy + void enqueue(Item item) // insert an item onto queue + Item dequeue() //return and remove the item that was inserted least recently + int size() //number of item on queue +``` + +* **ITERABLE** + +```java +//import Iterator +import java.util.Iterator; + +public class Queue implements Iterable { + +//FIFO queue + private Node first; + private Node last; + private class Node { + Item item; + Node next; + } + + public void enqueue (Item item) + ... + + public Item dequeue() + ... + +} +``` + +* **SYMBOL TABLE DATA TYPE** + +```java + public class ST, Value> + + ST() //create and empty symbol table + void put(Key key, Value val) //associate val with key + Value get(Key key) //value associated with key + void remove(Key key) //remove key (and its associated value) + boolean contains (Key key) //return if there is a value associated with key + int size() //number of key-value pairs + Iterable keys() // all keys in the symbol table +``` + +* **SET DATA TYPE** + +```java + public class SET> implements Iterable + SET() //create an empthy set + boolean isEmpthy() //return if the set is empthy + void add (Key key) //add key to the set + void remove(Key key) //remove key from set + boolean contains(Key key) //return if the key is in the set + int size() //number of elements in set +``` diff --git a/languages/php.php b/languages/php.php index e1d9054..876550e 100644 --- a/languages/php.php +++ b/languages/php.php @@ -366,3 +366,106 @@ class ClassWithLogger */ use LoggerAwareTrait; } + + +/** + * PHP Regex. + */ + +// Meta Characters. + +^ Start of subject (or line in multiline mode) +$ End of subject (or line in multiline mode) +[ Start character class definition +] End character class definition +| Alternates, eg (a|b) matches a or b +( Start subpattern +) End subpattern +\ Escape character + +// Pattern Modifiers. + +i Caseless - ignore case +m Multiline mode - ^ and $ match start and end of lines +s Dotall - . class includes newline +x Extended- comments & whitespace +e preg_replace only - enables evaluation of replacement as PHP code +S Extra analysis of pattern +U Pattern is ungreedy +u Pattern is treated as UTF-8 + +// Subpattern Modifiers & Assertions. +(?:) Non capturing subpattern ((?:foo|fu)bar) matches foobar or fubar without foo or fu appearing as a captured subpattern +(?=) Positive look ahead assertion foo(?=bar) matches foo when followed by bar +(?!) Negative look ahead assertion foo(?!bar) matches foo when not followed by bar +(?<=) Positive look behind assertion (?<=foo)bar matches bar when preceded by foo +(?) Once-only subpatterns (?>\d+)bar Performance enhancing when bar not present +(?(x)) Conditional subpatterns (?(3)foo|fu)bar Matches foo if 3rd subpattern has matched, fu if not +(?#) Comment (?# Pattern does x y or z) + +// Base Character Classes +\w Any "word" character (a-z 0-9 _) +\W Any non "word" character +\s Whitespace (space, tab CRLF) +\S Any non whitepsace character +\d Digits (0-9) +\D Any non digit character +. (Period) - Any character except newline + +// Multiplicity. +n* Zero or more of n +n+ One or more of n +n? Zero or one occurrences of n +{n} n occurrences exactly +{n,} At least n occurrences +{,m} At most m occurrences +{n,m} Between n and m occurrences (inclusive) + + +// PHP Regular Expression Functions. + +Function Description +preg_match() The preg_match() function searches string for pattern, returning true if pattern exists, and false otherwise. +preg_match_all() The preg_match_all() function matches all occurrences of pattern in string. Useful for search and replace. +preg_replace() The preg_replace() function operates just like ereg_replace(), except that regular expressions can be used in the pattern and replacement input parameters. +preg_split() Preg Split (preg_split()) operates exactly like the split() function, except that regular expressions are accepted as input parameters. +preg_grep() The preg_grep() function searches all elements of input_array, returning all elements matching the regex pattern within a string. +preg_ quote() Quote regular expression characters + +// Code Snippets. + +//A better solution for validate email syntax is using filter_var. +if (filter_var('test+email@fexample.com', FILTER_VALIDATE_EMAIL)) { + echo "Your email is ok."; +} else { + echo "Wrong email address format."; +} + +//Validate username, consist of alpha-numeric (a-z, A-Z, 0-9), underscores, and has minimum 5 character and maximum 20 character. +//You could change the minimum character and maximum character to any number you like. +$username = "user_name12"; +if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) { + echo "Your username is ok."; +} else { + echo "Wrong username format."; +} + +//Validate domain +$url = "http://domain-name.com/"; +if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)) { + echo "Your url is ok."; +} else { + echo "Wrong url."; +} + +//Extract domain name from certain URL +$url = "http://domain-name.com/index.html"; +preg_match('@^(?:http://)?([^/]+)@i', $url, $matches); +$host = $matches[1]; +echo $host; // domain-name.com + +//Highlight a word in the content +$text = "A regular expression (shortened as regex) is a sequence of characters that define a search pattern. Usually such patterns are used by string-searching algorithms for 'find' or 'find and replace' operations on strings, or for input validation."; +$text = preg_replace("/\b(regex)\b/i", 'replaced content', $text); +echo $text; /*A regular expression (shortened as replaced content) is a sequence of characters that define a search pattern. Usually such patterns are used by string-searching algorithms for 'find' or 'find and replace' operations on strings, or for input validation.*/ diff --git a/tools/drush.sh b/tools/drush.sh new file mode 100644 index 0000000..2bf8c07 --- /dev/null +++ b/tools/drush.sh @@ -0,0 +1,66 @@ +############################################################################## +# DRUSH +# Install: https://www.drush.org/install/ +# Usage: https://www.drush.org/usage/ +############################################################################## + + +cache clear (cc) # Clear all caches. + +cron # Run all cron hooks. + +disable (dis) # Disable one or more modules. + +download (dl) # Download core Drupal and projects like CCK, Zen, etc. + +enable (en) # Enable one or more modules. + +eval # Evaluate arbitrary php code after bootstrapping Drupal. + +help # Print this help message. Use --filter to limit command list to one command file (e.g. --filter=pm) + +info # Release information for a project + +installcore (ic) # Install Drupal core via the specified install profile. Note that updating core with Drush is not yet available. See http://drupal.org/node/434944. + +refresh (rf) # Refresh update status information script Runs the given php script(s) after a full Drupal bootstrap. NOTE: you can't supply absolute paths to the script e.g. ~/Desktop/script.php won't work Desktop/script.php will + +sql cli (sqlc) # Open a SQL command-line interface using Drupal?s credentials. + +sql conf # Print database connection details. + +sql connect # A string for connecting to the DB. + +sql dump # Exports the Drupal DB as SQL using mysqldump. + +sql load # Copy source database to target database. + +sql query (sqlq) # Execute a query against the site database. + +status (st) # Provides a birds-eye view of the current Drupal installation, if any. + +statusmodules (sm) # Show module enabled/disabled status + +sync # Rsync the Drupal tree to/from another server using ssh. + +test clean # Delete leftover tables and files from prior test runs. + +test mail # Run all tests and mail the results to your team. + +uninstall # Uninstall one or more modules. + +update (up) # Update your project code and apply any database updates required (update.php) + +updatecode (upc) # Update your project code. Moves existing project files to the backup directory specified in the config. + +updatedb (updb) # Execute the update.php process from the command line. + +variable delete (vdel) # Delete a variable. + +variable get (vget) # Get a list of some or all site variables and values. + +variable set (vset) # Set a variable. + +watchdog delete (wd) # Delete all messages or only those of a specified type. + +watchdog show (ws) # Shows recent watchdog log messages. Optionally filter for a specific type. diff --git a/tools/git.sh b/tools/git.sh index c2f3da5..c0154f0 100644 --- a/tools/git.sh +++ b/tools/git.sh @@ -1,28 +1,55 @@ git init # initiates git in the current directory git clone
# creates a git repo from given address (get the address from your git-server) +git clone
-b # clones a git repo from the address into the given directory and checkout's the given branch +git clone
-b --single-branch # Clones a single branch git add file.txt # adds(stages) file.txt to the git git add * # adds(stages) all new modifications, deletions, creations to the git git reset file.txt # Removes file.txt from the stage +git reset --hard # Throws away all your uncommitted changes, hard reset files to HEAD git rm file.txt # removes file.txt both from git and file system +git rm --cached file.txt # only removes file.txt both from git index git status # shows the modifications and stuff that are not staged yet git branch # shows all the branches (current branch is shown with a star) git branch my-branch # creates my-branch git branch -d my-branch # deletes my-branch -git checkout my-bracnch # switches to my-branch +git checkout my-branch # switches to my-branch git merge my-branch # merges my-branch to current branch git push origin --delete my-branch # delete remote branch +git branch -m # rename the branch +git checkout --orphan # checkout a branch with no commit history +git branch -vv # list all branches and their upstreams, as well as last commit on branch +git branch -a # List all local and remote branches -git cherry-pick # merge the specified commit +git cherry-pick # merge the specified commit +git cherry-pick ^.. # pick the entire range of commits where A is older than B ( the ^ is for including A as well ) git remote # shows the remotes git remote -v # shows the remote for pull and push git remote add my-remote
# creates a remote (get the address from your git-server) +git remote rm my-remote # Remove a remote git log # shows the log of commits +git log --oneline # shows the log of commits, each commit in a single line +git log -p # change over time for a specific file +git log ^ # lists commit(s) in branch1 that are not in branch2 +git log -n # lists the last x commits +git log -n --oneline # lists the last x commits, each commit in single line +git grep --heading --line-number '' # Find lines matching the pattern in tracked files +git log --grep='' # Search Commit log + git commit -m "msg" # commit changes with a msg +git commit --amend # combine staged changes with the previous commit, or edit the previous commit message without changing its snapshot +git commit --amend --no-edit # amends a commit without changing its commit message +git commit --amend --author='Author Name ' # Amend the author of a commit git push my-remote my-branch # pushes the commits to the my-remote in my-branch (does not push the tags) +git revert # Undo a commit by creating a new commit + +git show # shows one or more objects (blobs, trees, tags and commits). +git diff # show changes between commits, commit and working tree +git diff --color # show colored diff +git diff --staged # Shows changes staged for commit git tag # shows all the tags git tag -a v1.0 -m "msg" # creates an annotated tag @@ -39,7 +66,7 @@ git stash -u # stash everything including new untracked git stash save "msg" # stash with a msg git stash list # list all stashes git stash pop # delete the recent stash and applies it -git stash stach@{2} # delete the {2} stash and applies it +git stash pop stash@{2} # delete the {2} stash and applies it git stash show # shows the description of stash git stash apply # keep the stash and applies it to the git git stash branch my-branch stash@{1} # creates a branch from your stash @@ -55,6 +82,11 @@ git clean -f -d/git clean -fd # To remove directories permanently git clean -f -X/git clean -fX # To remove ignored files permanently git clean -f -x/git clean -fx # To remove ignored and non-ignored files permanently +git config --global --list # lists the git configuration for all repos +git config --global --edit # opens an editor to edit the git config file +git config --global alias. # add git aliases to speed up workflow , eg. if handle is st and command is status then running git st would execute git status + + .gitignore # is a file including names of stuff that you don"t want to be staged or tracked. # You usually keep your local files like database, media, and etc here. @@ -64,4 +96,3 @@ git clean -f -x/git clean -fx # To remove ignored and non-ignored files perm # is a hidden directory in repo directory including git files. It is created after "git init". - diff --git a/tools/heroku.sh b/tools/heroku.sh index d6c1c00..d828852 100644 --- a/tools/heroku.sh +++ b/tools/heroku.sh @@ -100,6 +100,8 @@ git config --global --remove-section url.ssh://git@heroku.com/ # To remove ### Managing and deploying applications on Heroku (Using Docker) ################################### ##################################################################################################### +# Setting stack of your app to a Container +heroku stack:set container heroku container:login # Login to the container resistry git clone https://github.com/heroku/alpinehelloworld.git # Get sample code by cloning into the following repository diff --git a/tools/nginx.sh b/tools/nginx.sh index ed545e5..bd1c857 100644 --- a/tools/nginx.sh +++ b/tools/nginx.sh @@ -4,6 +4,212 @@ ############################################################################## sudo nginx -t # Check syntax +sudo systemctl status nginx # nginx current status sudo systemctl reload nginx # Reload nginx -sudo service nginx restart # Restart nginx +sudo systemctl restart nginx # Restart nginx sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ # Link website + +# ***************************************************************************** +# General Settings +# ***************************************************************************** + +# Ports + +server { + # Use HTTP protocol + listen 80; + + # Use HTTPS protocol + listen 443 ssl; + + # Listen on port 80 using IPv6 + listen [::]:80; + + # Listen on port 80 using **only** IPv6 + listen [::]:80 ipv6only=on; +} + +# Domain name (server_name) + +server { + # Listen to example.com + server_name example.com; + + # Listen to multiple domains + server_name example.com www.example.com; + + # Listen to all sub-domains + server_name *.example.com; + + # Listen to all top-level domains + server_name example.*; + + # Listen to unspecified hostnames (listens to IP address itself) + server_name ""; +} + +# ***************************************************************************** +# Serving Files +# ***************************************************************************** + +# Static assets (traditional web server) + +server { + listen 80; + server_name example.com; + + root /path/to/website; + # root /www/data/ for example + + # If there's no 'root' inside, it will look for /www/data/index.html + location / { + } + + # If there's no 'root' inside, it will look for /www/data/images/index.html + location /images/ { + } + + # Since there's 'root' inside, it will look for /www/media/videos/index.html + location /videos/ { + root /www/media; + } +} + +# ***************************************************************************** +# Redirects +# ***************************************************************************** + +# 301 Permanent + +server { + # Redirect www.example.com to example.com + listen 80; + server_name www.example.com; + return 301 http://example.com$request_uri; +} + +server { + # Redirect http to https + listen 80; + server_name example.com; + return 301 https://example.com$request_uri; +} + +# 302 Temporary + +server { + listen 80; + server_name yourdomain.com; + return 302 http://otherdomain.com; +} + +# ***************************************************************************** +# Reverse proxy +# ***************************************************************************** + +# Useful for Node.js, Streamlit, Jupyter, etc + +# Basic + +server { + listen 80; + server_name example.com; + + location / { + proxy_pass http://0.0.0.0:3000; + # where 0.0.0.0:3000 is your Node.js Server bound on 0.0.0.0 listing on port 3000 + } +} + +# Basic + (upstream) + +upstream node_js { + server 0.0.0.0:3000; + # where 0.0.0.0:3000 is your Node.js Server bound on 0.0.0.0 listing on port 3000 +} + +server { + listen 80; + server_name example.com; + + location / { + proxy_pass http://node_js; + } +} + +# Upgraded Connection (useful for applications with support for WebSockets) + +upstream node_js { + server 0.0.0.0:3000; +} + +server { + listen 80; + server_name example.com; + + location / { + proxy_pass http://node_js; + proxy_redirect off; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + + } +} + +# ***************************************************************************** +# HTTPS Protocol +# ***************************************************************************** + +# The majority of SSL options depend on what your application does or needs + +server { + listen 443 ssl; + server_name example.com; + + ssl on; + + ssl_certificate /path/to/cert.pem; + ssl_certificate_key /path/to/privkey.pem; + + ssl_stapling on; + ssl_stapling_verify on; + ssl_trusted_certificate /path/to/fullchain.pem; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_session_timeout 1d; + ssl_session_cache shared:SSL:50m; + add_header Strict-Transport-Security max-age=15768000; +} + +# Permanent redirect to HTTPS secured domain + +server { + listen 80; + server_name yourdomain.com; + return 301 https://$host$request_uri; +} + +# You can easily secure you website/app using Let's Encrypt. +# Go https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx.html for more information + +# ***************************************************************************** +# Load Balancing +# ***************************************************************************** + +# Useful for large applications running in multiple instances. Below example is for reverse proxy +upstream node_js { + server 0.0.0.0:3000; + server 0.0.0.0:4000; + server 127.155.142.421; +} + +server { + listen 80; + server_name example.com; + + location / { + proxy_pass http://node_js; + } +} \ No newline at end of file diff --git a/tools/vim.txt b/tools/vim.txt index 2a55240..682e0c7 100644 --- a/tools/vim.txt +++ b/tools/vim.txt @@ -87,6 +87,7 @@ J join line below to the current one cc change (replace) an entire line cw change (replace) to the end of word C change (replace) to the end of line +ct' change (replace) until the ' character (can change ' for any character) s delete character at cursor and substitute text S delete line at cursor and substitute text (same as cc) xp transpose two letters (delete and paste, technically) @@ -118,6 +119,7 @@ x delete current character X delete previous character dw delete the current word dd delete (cut) a line +dt' delete until the next ' character on the line (replace ' by any character) D delete from cursor to end of line :[range]d delete [range] lines @@ -279,6 +281,7 @@ CTRL-w < increase window width CTRL-w > decrease window width CTRL-w = equal window CTRL-w o close other windows +zz Centers the window to the current line ############################################################################## diff --git a/tools/vscode.md b/tools/vscode.md index d68a786..b46d3eb 100644 --- a/tools/vscode.md +++ b/tools/vscode.md @@ -4,89 +4,89 @@ ### HTML & CSS -- `CSScomb`: Coding style formatter for CSS, Less, SCSS and Saas. +- [`CSScomb`](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-csscomb): Coding style formatter for CSS, Less, SCSS and Saas. -- `Puglint`: Linter and style checker for pug. +- [`Puglint`](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-puglint): Linter and style checker for pug. -- `Sass`: Indented Sass syntax highlighting, autocomplete & snippets. +- [`Sass`](https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented): Indented Sass syntax highlighting, autocomplete & snippets. -- `SCSS IntelliSense`: Advanced autocompletion and refactoring support for SCSS. +- [`SCSS IntelliSense`](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-scss): Advanced autocompletion and refactoring support for SCSS. -- `XML Format`: Format XML documents. +- [`XML Format`](https://marketplace.visualstudio.com/items?itemName=mikeburgh.xml-format): Format XML documents. ### JavaScript, Node & NPM -- `Import Cost`: This extension will display inline in the editor the size of the imported package. +- [`Import Cost`](https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost): This extension will display inline in the editor the size of the imported package. -- `ESLint`: Integrates ESLint into VS Code +- [`ESLint`](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint): Integrates ESLint into VS Code -- `NPM`: NPM support for VS Code. +- [`NPM`](https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script): NPM support for VS Code. -- `NPM Intellisense`: Visual Studio Code plugin that autocompletes NPM modules in import statements. +- [`NPM Intellisense`](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense): Visual Studio Code plugin that autocompletes NPM modules in import statements. -- `Version Lens`: Shows the latest version for each package using code lens. +- [`Version Lens`](https://marketplace.visualstudio.com/items?itemName=pflannery.vscode-versionlens): Shows the latest version for each package using code lens. -- `Vetur`: Vue tooling for VS Code. +- [`Vetur`](https://marketplace.visualstudio.com/items?itemName=octref.vetur): Vue tooling for VS Code. ### PHP -- `Better PHPUnit`: A better PHPUnit test runner. +- [`Better PHPUnit`](https://marketplace.visualstudio.com/items?itemName=calebporzio.better-phpunit): A better PHPUnit test runner. -- `Laravel Artisan`: Laravel Artisan commands within Visual Studio Code. +- [`Laravel Artisan`](https://marketplace.visualstudio.com/items?itemName=ryannaddy.laravel-artisan): Laravel Artisan commands within Visual Studio Code. -- `PHP CS Fixer`: PHP CS Fixer extension for VS Code, php formatter, php code beautify tool. +- [`PHP CS Fixer`](https://marketplace.visualstudio.com/items?itemName=junstyle.php-cs-fixer): PHP CS Fixer extension for VS Code, php formatter, php code beautify tool. -- `PHP Doc Comment VSCode Plugin`: Add phpdoc @param and @return tag for selected function signatures. +- [`PHP Doc Comment VSCode Plugin`](https://marketplace.visualstudio.com/items?itemName=rexshi.phpdoc-comment-vscode-plugin): Add phpdoc @param and @return tag for selected function signatures. -- `PHP IntelliSense`: Advanced Autocompletion and Refactoring support for PHP. +- [`PHP IntelliSense`](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense): Advanced Autocompletion and Refactoring support for PHP. ### Git -- `Git History`: View git log, file history, compare branches or commits. +- [`Git History`](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory): View git log, file history, compare branches or commits. -- `Gitignore`: A extension for Visual Studio Code that assists you in working with .gitignore files. +- [`Gitignore`](https://marketplace.visualstudio.com/items?itemName=codezombiech.gitignore): A extension for Visual Studio Code that assists you in working with .gitignore files. ### Themes -- `Material Icon Theme`: Material Design Icons for Visual Studio Code. +- [`Material Icon Theme`](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme): Material Design Icons for Visual Studio Code. -- `Palenight Theme`: An elegant and juicy material-like theme for Visual Studio Code. +- [`Palenight Theme`](https://marketplace.visualstudio.com/items?itemName=whizkydee.material-palenight-theme): An elegant and juicy material-like theme for Visual Studio Code. ### Handy -- `Better comments`: Improve your code commenting by annotating with alert, informational, TODOs, and more! +- [`Better comments`](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments): Improve your code commenting by annotating with alert, informational, TODOs, and more! -- `Debugger for Chrome`: Debug your JavaScript code in the Chrome browser. +- [`Debugger for Chrome`](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome): Debug your JavaScript code in the Chrome browser. -- `EditorConfig for VS Code`: EditorConfig Support for Visual Studio Code. +- [`EditorConfig for VS Code`](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig): EditorConfig Support for Visual Studio Code. -- `File Utils`: A convenient way of creating, duplicating, moving, renaming and deleting files and directories. +- [`File Utils`](https://marketplace.visualstudio.com/items?itemName=sleistner.vscode-fileutils): A convenient way of creating, duplicating, moving, renaming and deleting files and directories. -- `Final-Newline`: Inserts a final newline when saving the document. +- [`Final-Newline`](https://marketplace.visualstudio.com/items?itemName=samverschueren.final-newline): Inserts a final newline when saving the document. -- `Formatting Toggle`: A VS Code extension that allows you to toggle the formatter (Prettier, Beautify, …) ON and OFF with a simple click. +- [`Formatting Toggle`](https://marketplace.visualstudio.com/items?itemName=tombonnike.vscode-status-bar-format-toggle): A VS Code extension that allows you to toggle the formatter (Prettier, Beautify, …) ON and OFF with a simple click. -- `Open in Github/Bitbucket...`: Jump to a source code line in Github / Bitbucket, Gitlab, VisualStudio.com +- [`Open in Github/Bitbucket...`](https://marketplace.visualstudio.com/items?itemName=ziyasal.vscode-open-in-github): Jump to a source code line in Github / Bitbucket, Gitlab, VisualStudio.com -- `OpenChrome`: Open file with Chrome. +- [`OpenChrome`](https://marketplace.visualstudio.com/items?itemName=huazaierli.openchrome&ssr=false#overview): Open file with Chrome. -- `Output Colorizer`: Syntax Highlighting for log files. +- [`Output Colorizer`](https://marketplace.visualstudio.com/items?itemName=IBM.output-colorizer): Syntax Highlighting for log files. -- `Prettier - Code formatter`: VS Code plugin for prettier/prettier. +- [`Prettier - Code formatter`](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode): VS Code plugin for prettier/prettier. -- `Project Manager`: Easily switch between projects. +- [`Project Manager`](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager): Easily switch between projects. -- `REST Client`: REST Client for Visual Studio Code. +- [`REST Client`](https://marketplace.visualstudio.com/items?itemName=humao.rest-client): REST Client for Visual Studio Code. -- `SVG Viewer`: SVG Viewer for Visual Studio Code. +- [`SVG Viewer`](https://marketplace.visualstudio.com/items?itemName=cssho.vscode-svgviewer): SVG Viewer for Visual Studio Code. -- `Terminal`: Terminal for Visual Studio Code. +- [`Terminal`](https://marketplace.visualstudio.com/items?itemName=formulahendry.terminal): Terminal for Visual Studio Code. -- `Vue Peek`: Allows peek and goto definition for Vue single-file components. +- [`Vue Peek`](https://marketplace.visualstudio.com/items?itemName=dariofuzinato.vue-peek): Allows peek and goto definition for Vue single-file components. -- `VS Live Share`: Real-time collaborative development from the comfort of your favorite tools. +- [`VS Live Share`](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare): Real-time collaborative development from the comfort of your favorite tools. -- `Wrap Console Log`: Wrap to console.log by word or selection. +- [`Wrap Console Log`](https://marketplace.visualstudio.com/items?itemName=midnightsyntax.vscode-wrap-console-log): Wrap to console.log by word or selection. ## My Settings