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