JavaScript ES6+: Which do you use var, let, or const?

Perhaps the most important thing you can learn to be a better coder is to keep things simple. In the context of identifiers, that means that a single identifier should only be used to represent a single concept.

`const` is a signal that the identifier won’t be reassigned.

`let`, is a signal that the variable may be reassigned, such as a counter in a loop, or a value swap in an algorithm. It also signals that the variable will be used only in the block it’s defined in, which is not always the entire containing function.

`var` is now the weakest signal available when you define a variable in JavaScript. The variable may or may not be reassigned, and the variable may or may not be used for an entire function, or just for the purpose of a block or loop.

Warning:

With `let` and `const` in ES6, it’s no longer safe to check for an identifier’s existence using `typeof`:

function foo () {
typeof bar;
let bar = ‘baz’;
}
foo(); // ReferenceError: can't access lexical declaration
// `bar' before initialization

Installing Dnsmasq for wildcard local domains on Debian

Install

sudo apt-get install dnsmasq

Configure

sudo vim /etc/dnsmasq.conf

Add this:

address=/example.com/127.0.0.1
listen-address=127.0.0.1

This maps *.example.com to 127.0.0.1 – replace with the domain you want to use. It also makes dnsmasq only respond to local requests for security – this is optional.

Restart to load the new configuration:

sudo /etc/init.d/dnsmasq restart

Test it:

nslookup abc.example.com 127.0.0.1

It should say something like:

Server: 127.0.0.1
Address: 127.0.0.1#53

Name: abc.example.com
Address: 127.0.0.1

Override the nameserver to use for lookups

sudo vim /etc/dhcp/dhclient.conf

Add:

prepend domain-name-servers 127.0.0.1;

Restart the network:

sudo ifdown eth0; sudo ifup eth0

Adjust as necessary if your interface is not named eth0. Run ifconfig to get the interface name if you’re not sure.

Check that it worked:

cat /etc/resolv.conf

It should say something like:

domain home
search home
nameserver 127.0.0.1
nameserver 192.168.32.254

Note that 127.0.0.1 is the first nameserver.

Test:

nslookup abc.example.com

It should say the same thing as it did above.

 

The original post is here.

Setting server for first time to deploy PHP application to cloud

Apache

  • sudo apt-get update
  • sudo apt-get install apache2

Click Here for more details.

MySql

  • sudo apt-get update
  • sudo apt-get install mysql-server
  • mysql_secure_installation

Click Here for more details.

Composer

  • sudo apt-get update
  • sudo apt-get install composer

Click Here for more details.

PHP

  • sudo add-apt-repository ppa:ondrej/php
  • sudo apt-get update
  • sudo apt-get install php7.1 php7.1-common
  • sudo apt-get install php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mysql php7.1-mbstring

Click Here for more details.

Upgrade from PHP 7.0 to PHP 7.1

Add Ondrejs PPA Repo

PPA’s or Personal Package Archive, is a collection of software not included in Ubuntu by default. Typically these repositories focus on a single program, but they can include more depending on the person maintaining them. Ondřej Surý has created this PPA which has the latest versions of PHP in it. Lets add it to your system, and update to get a list of all the software we can install.

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update

Install PHP 7.1

Lets stop our server first, then install PHP 7.1.

$ service apache2 stop
$ sudo apt-get install php7.1 php7.1-common

We’ll also install some extra packages for our PHP installation – these are needed for Laravel and Composer!

$ sudo apt-get install php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mysql php7.1-mbstring php7.1-mysql

Once that is done, lets check PHP is updated on the CLI

$ php -v

If the first row looks like this, we’ve done good so far! PHP 7.1.11-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Oct 27 2017 13:49:56) ( NTS )

Remove PHP 7.0

Now we have PHP7.1, lets get rid of PHP7.0

$ sudo apt-get purge php7.0 php7.0-common

Once this has been done, I usually restart the server.

$ sudo shutdown -r now

Make PHP7.1 used by Apache

Finally, we need to tell Apache to use PHP7.1 now PHP 7.0 is not being used. Lets enable the PHP mod!

$ a2enmod php7.1
$ service apache2 restart

Thats it – PHP should now be using PHP 7.1 – enjoy your amazing new features such as function return types and multiple error catch’s! If you are having issues, feel free to prod me on Twitter at @bhaktaraz

Detect OnePlus5 in Ubuntu in MTP mode

So if you have connected OnePlus 5 to Ubuntu, you will notice that you can only see “OnePlus Drivers” as mounted but you cannot access the internal memory using MTP, although ptp works!

So here is what you need to do to make it possible

1. Enable Developer options in Settings
2. Enable ADB ( this needs to be enabled else, mtp doesnt work )
3. Open a terminal window and follow this :
– we will edit 2 files and add some lines in them. My preferred editor is vim. you may use nano / emacs etc.

COMMAND :

sudo vim /lib/udev/rules.d/69-mtp.rules

ADD LINE :

ATTR{idVendor}==”2a70″, ATTR{idProduct}==”9011″, SYMLINK+=”libmtp-%k”, ENV{ID_MTP_DEVICE}=”1″, ENV{ID_MEDIA_PLAYER}=”1″

save and exit

COMMAND :

sudo vim /etc/udev/rules.d/51-android.rules

ADD LINE : 

ATTR{idVendor}==”2a70″, ATTR{idProduct}==”9011″, MODE=”0666″

save and exit

COMMAND :

sudo service udev restart

Now disconnect and reconnect your phone, you will have “Android Device” as the mtp device.

If you still cannot see, reboot and try to see if the device is now visible!

Thankyou!

PHP – Predefined Variables

PHP provides a large number of predefined variables to any script which it runs. PHP provides an additional set of predefined arrays containing variables from the web server the environment, and user input. These new arrays are called superglobals −

All the following variables are automatically available in every scope.

PHP Superglobals

Sr.No Variable & Description
1 $GLOBALS

Contains a reference to every variable which is currently available within the global scope of the script. The keys of this array are the names of the global variables.

2 $_SERVER

This is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these. See next section for a complete list of all the SERVER variables.

3 $_GET

An associative array of variables passed to the current script via the HTTP GET method.

4 $_POST

An associative array of variables passed to the current script via the HTTP POST method.

5 $_FILES

An associative array of items uploaded to the current script via the HTTP POST method.

6 $_REQUEST

An associative array consisting of the contents of $_GET, $_POST, and $_COOKIE.

7 $_COOKIE

An associative array of variables passed to the current script via HTTP cookies.

8 $_SESSION

An associative array containing session variables available to the current script.

9 $_PHP_SELF

A string containing PHP script file name in which it is called.

10 $php_errormsg

$php_errormsg is a variable containing the text of the last error message generated by PHP.

Server variables: $_SERVER

$_SERVER is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these.

Sr.No Variable & Description
1 $_SERVER[‘PHP_SELF’]

The filename of the currently executing script, relative to the document root

2 $_SERVER[‘argv’]

Array of arguments passed to the script. When the script is run on the command line, this gives C-style access to the command line parameters. When called via the GET method, this will contain the query string.

3 $_SERVER[‘argc’]

Contains the number of command line parameters passed to the script if run on the command line.

4 $_SERVER[‘GATEWAY_INTERFACE’]

What revision of the CGI specification the server is using; i.e. ‘CGI/1.1’.

5 $_SERVER[‘SERVER_ADDR’]

The IP address of the server under which the current script is executing.

6 $_SERVER[‘SERVER_NAME’]

The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host.

7 $_SERVER[‘SERVER_SOFTWARE’]

Server identification string, given in the headers when responding to requests.

8 $_SERVER[‘SERVER_PROTOCOL’]

Name and revision of the information protocol via which the page was requested; i.e. ‘HTTP/1.0’;

9 $_SERVER[‘REQUEST_METHOD’]

Which request method was used to access the page; i.e. ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’.

10 $_SERVER[‘REQUEST_TIME’]

The timestamp of the start of the request. Available since PHP 5.1.0.

11 $_SERVER[‘QUERY_STRING’]

The query string, if any, via which the page was accessed.

12 $_SERVER[‘DOCUMENT_ROOT’]

The document root directory under which the current script is executing, as defined in the server’s configuration file.

13 $_SERVER[‘HTTP_ACCEPT’]

Contents of the Accept: header from the current request, if there is one.

14 $_SERVER[‘HTTP_ACCEPT_CHARSET’]

Contents of the Accept-Charset: header from the current request, if there is one. Example: ‘iso-8859-1,*,utf-8’.

15 $_SERVER[‘HTTP_ACCEPT_ENCODING’]

Contents of the Accept-Encoding: header from the current request, if there is one. Example: ‘gzip’.

16 $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]

Contents of the Accept-Language: header from the current request, if there is one. Example: ‘en’.

17 $_SERVER[‘HTTP_CONNECTION’]

Contents of the Connection: header from the current request, if there is one. Example: ‘Keep-Alive’.

18 $_SERVER[‘HTTP_HOST’]

Contents of the Host: header from the current request, if there is one.

19 $_SERVER[‘HTTP_REFERER’]

The address of the page (if any) which referred the user agent to the current page.

20 $_SERVER[‘HTTP_USER_AGENT’]

This is a string denoting the user agent being which is accessing the page. A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586).

21 $_SERVER[‘HTTPS’]

Set to a non-empty value if the script was queried through the HTTPS protocol.

22 $_SERVER[‘REMOTE_ADDR’]

The IP address from which the user is viewing the current page.

23 $_SERVER[‘REMOTE_HOST’]

The Host name from which the user is viewing the current page. The reverse dns lookup is based off the REMOTE_ADDR of the user.

24 $_SERVER[‘REMOTE_PORT’]

The port being used on the user’s machine to communicate with the web server.

25 $_SERVER[‘SCRIPT_FILENAME’]

The absolute pathname of the currently executing script.

26 $_SERVER[‘SERVER_ADMIN’]

The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file.

27 $_SERVER[‘SERVER_PORT’]

The port on the server machine being used by the web server for communication. For default setups, this will be ’80’.

28 $_SERVER[‘SERVER_SIGNATURE’]

String containing the server version and virtual host name which are added to server-generated pages, if enabled.

29 $_SERVER[‘PATH_TRANSLATED’]

Filesystem based path to the current script.

30 $_SERVER[‘SCRIPT_NAME’]

Contains the current script’s path. This is useful for pages which need to point to themselves.

31 $_SERVER[‘REQUEST_URI’]

The URI which was given in order to access this page; for instance, ‘/index.html’.

32 $_SERVER[‘PHP_AUTH_DIGEST’]

When running under Apache as module doing Digest HTTP authentication this variable is set to the ‘Authorization’ header sent by the client.

33 $_SERVER[‘PHP_AUTH_USER’]

When running under Apache or IIS (ISAPI on PHP 5) as module doing HTTP authentication this variable is set to the username provided by the user.

34 $_SERVER[‘PHP_AUTH_PW’]

When running under Apache or IIS (ISAPI on PHP 5) as module doing HTTP authentication this variable is set to the password provided by the user.

35 $_SERVER[‘AUTH_TYPE’]

When running under Apache as module doing HTTP authenticated this variable is set to the authentication type.

Web Enthusiastic, Nature Lover