Search This Blog

Sunday, April 15, 2018

Why NOT to Use var and Instead Use let or const in JavaScript

Consider the following example code:

You can note that the value of var a has changed due to the assignment within the block scope of the if statement, while the value of let b & const c value have remained unaffected.

So, the way let & const works is the way most programming languages work.

var is kind of weird, it’s one of the things a lot of people didn’t like about JavaScript. It causes security risk and confusion and hence it’s better to avoid it.

Friday, April 6, 2018

Why You Shouldn't Be Using mysqli_fetch_array()?

While researching as to why not to use mysqli_fetch_array(), and instead use mysqli_fetch_row() or mysqli_fetch_assoc(), I ran into this old post, which well explains the reason. The test results for each of these functions may not be as per contemporary test case, but it will still give you a good idea as to why mysqli_fetch_array() shouldn't be used

Benchmark on a table with 38567 rows:

MYSQL_BOTH: 6.01940000057 secs
MYSQL_NUM: 3.22173595428 secs
MYSQL_ASSOC: 3.92950594425 secs

mysql_fetch_row: 2.35096800327 secs
mysql_fetch_assoc: 2.92349803448 secs

As you can see, it's twice as efficient to fetch either an array or a hash, rather than getting both.  It's even faster to use fetch_row rather than passing fetch_array MYSQL_NUM, or fetch_assoc rather than fetch_array MYSQL_ASSOC.

Don't fetch BOTH unless you really need them, and most of the time you don't.


Saturday, March 17, 2018

[SOLVED] - Could not open input file: bin/magento in localhost and Magento 2x

If you are getting this error 'Could not open input file: bin/magento' while trying to run certain magento commands in your terminal in localhost, then you can try this solution which worked for me.

I ran into this issue, because I'd accessed the root directory of my Magento installation from my terminal. Everything was working fine until now. I then deleted my Magento installation, created a new folder with the same name as the deleted folder. Now remaining in the same terminal window, without changing path or closing the terminal, I was trying to run the magento shell commands. This was the reason I was running into the above error.

To solve this issue, I simply closed my terminal, opened it again, checked into the root directory of my magento installation, and now the commands were running fine.

Also check, while at the Terminal, you are inside the Root Directory of your Magento Installation, else you will get this ERROR again.

[Solved] - Install PHP 7.0, PHP 7.1 or PHP 7.2 in Ubuntu 14.04

After trying a couple of packages, settings and configuration, the solution below is finally what worked for me:

1. Update your PPA repository with the  PHP 7x package sources:

 sudo add-apt-repository ppa:ondrej/php
Press enter to confirm. If you come across any error then you will need to install the python-software-properties first as shown below:

NOTE: The above PPA is a co-installable one, meaning you can install PHP 5.5, PHP 5.6 or PHP 7.0 as per your requirement, and both your old and new versions of PHP can co-exist without you having to remove the old version.
 sudo apt-get update  
 sudo apt-get install python-software-properties  

2. Update

Once again update your packages:
 sudo apt-get update  

3. Install PHP 7.x and its relevant mods:

For PHP7.0: sudo apt-get install php7.0 php7.1-mbstring php7.0-mcrypt php7.0-mysql php7.0-xml php7.0-curl php7.0-intl php7.0-soap php7.0-zip php7.0-gd
For PHP7.1: sudo apt-get install php7.1
For PHP7.2: sudo apt-get install php7.2

4. Disable PHP 5.5 or 5.6:

Now this step is very important else you won't be able to use PHP 5.6. Even when you check your PHP version, it will still display as PHP 5.5. Follow the step below to disable PHP 5.5.

 sudo a2dismod php5
sudo a2dismod php5.6

5. Enable PHP 7.x:

Note: Replace x with 0, 1 or 2, depending upon the version you want to install
 sudo a2enmod php7.x  

6. Restart Apache web server:

 sudo service apache2 restart  

Note: New location of php.ini file in PHP 5.6:

The location of php.ini fie is changed from PHP 5.6 onwards, unlike PHP 5.5 where it used to be located at '/etc/php5/apache2/php.ini'; the new location is at '/etc/php/7.x/apache2'

Tuesday, March 13, 2018

[SOLVED]-Remove AppImage Desktop Integration

To remove the desktop integration for your AppImage, follow the instruction below:

Since an AppImage is not "installed", you don't need to "uninstall" it. Just delete the AppImage file and the application is gone. Additionally you may want to remove menu entry by deleting the desktop file from $HOME/.local/share/applications/.

  1. How can I uninstall an AppImage?
  2. How To Use AppImage in Linux [Complete Guide]
  3. AppImage Website

Monday, February 12, 2018

[SOLVED] - Flush/DNS Cache in Ubuntu 14.04, 15.04 & Others

I tried various solutions and fixes available to clean my system's DNS cache but nothing worked for me, due to which I was unable to access a particular website. But at the same time, when I turned on my VPN and tired to access that website, I was able to do so. This clearly meant that there was a problem with my DNS cache. Eventually I tried this simple fix and then was able to access that website. So here's the solution:

1. First you need to find the IP address of your website. To do that open your terminal by pressing CTRL+ALT+T and enter the following command:


You should be getting the following result, as shown in the image below:

Make note of the value that I have underlined and circled using the color red; that's your website's IP address. In my case I pinged and got the IP as

2. Now enter the following command in your terminal.

 sudo gedit /etc/hosts  

This will open your system's host file. In this file, look for an entry with the IP as or or something similar to that, but make sure the IP is starting with 127. Now, just below this entry, enter the IP address you got after pinging your website. In my case since I'd pinged I will enter the value in my host file as:  

Finally save the file and close it. And now you should be able to access your website. Finally after a period of 12 or 24 hours do not forget to remove the above entry from your host file, as it will no longer be required.

[SOLVED] - Remove Background Music/Noise Using Audacity

I tried various solutions available in YouTube to remove the background music in my audio file, but none of the solutions quite worked for me. So, after some trial and error, I have arrived at this solution which has worked for me. You can give it a try.

Tuesday, February 6, 2018

List of all Thunkable Apps in Google Play Store

If you would like to view the list of all the apps made using Thunkable in Google Play Store, please check the following link:

Monday, February 5, 2018

[SOLVED]-Restrict Access to BuddyPress & bbPress Pages Without Using Any Plugins

If you would like to restrict access to specific page(s) of your Buddypress/bbPress site such as Groups, Forum or Member page from non-logged-in/guest users without using any plugins then use the solution below.

First, I recommend, you make use of this wonderful plugin called Code Snippets. Please read the description provided in its plugin page to know about its numerous benefit compared to pasting codes in your theme's 'function.php' file or 'bp-custom.php' file.

>> Solution 1: Restrict Access to all BuddyPress & bbPress pages

The code below will redirect all non-logged-in/guest users to your site's Registration page whenever they try to access a Buddypress/bbPress page such as Group, Forum, Member Page, Profile page etc

 * Redirect buddypress and bbpress pages to registration page
 function bp_redirect_pages()
   //if not logged in and on a bp page except registration or activation
   if( !is_user_logged_in() &&
     ( ( !bp_is_blog_page() && !bp_is_activation_page() && !bp_is_register_page() ) || is_bbpress() ) 
     wp_redirect( home_url( '/register/' ) );
 add_action( 'template_redirect', 'bp_redirect_pages' );

What the code above does is, it first checks whether a user trying to access a bp-page is logged in or not AND whether that bp-page is a BuddyPress blog page or a BuddyPress activation page, Profile page etc or NOT (! represents NOT in PHP), and if it is not any of the aforementioned BuddyPress pages, it will then redirect the guest user to your site's registration page.

You can replace 'register' with the slug of any page you would like the user to be redirected to. Suppose, you would like a non-logged-in/guest user to be redirected to your login page then replace 'register' with 'login'.

>> Solution 2: Restrict Access to Only Member's Directory & profile page

This was the solution I required for my site and sharing the same with you all below.

 * Redirect non-logged-in/guest user to registration page while trying to access Member's directory or BP-Profile page  
 function bp_redirect_pages()  
  // Gets the URL for the page the user is trying to access
  $url = $_SERVER['REQUEST_URI'];
  // Breaks down the above URL into its parts and "news"
  $explode_url = explode("/", $url);
  //if not logged in and on a bp page except registration or activation
  if( !is_user_logged_in() &&
       ( bp_is_members_component() || bp_is_user() || in_array("members", $explode_url) )
      wp_redirect( home_url( '/register/' ) );
 add_action( 'template_redirect', 'bp_redirect_pages' );

In the above code, what we’re saying is that:

 - If a user is not logged in;
 - && (equivalent to AND) one of a number of types of pages are being loaded viz. 'bp_is_members_component()', 'bp_is_user()' etc
- Then redirect to the registration page

The three things to note in the Solution 2 are:

1. $url defines a variable that saves the url the user is trying to access;

2. $explode_url is an array variable that contains a break down of the above url parts, so “” would be broken down into “” and “news”;

3. And in the last portion, where I use in_array() I set some new criteria for what pages to block.

Here are the basics to this argument so you can decide what will work for you:
in_array("members", $explode_url) checks for “members” in $explode_url. So, let’s say I’m accessing a site and want to view Because “members” is in the URL, the function will block access to this page for non-logged-in users and redirect them to the registration page.

In short, whatever is between the first set of quotation marks in the in_array("xxxx", $explode_url) argument will be tested against $explode_url, and if found the page will be blocked. In the second, I’m preventing non-logged in users accessing pages that include “members”. You can check your own site and see what terms would work best. Also, a variation of this method can be used to restrict access to categories of pages. Look at in_category( array( xx, xx ) ) argument.

Please go through the following two articles that I referred to while building the above solutions. You can come up with more solutions as per your requirement from them:

Tuesday, January 30, 2018

[SOLVED]-Access Wordpress Backend/Admin Login Page Even If Restricted by Custom Code

If you would like to access your Backend/Admin Login page, in spite of creating a redirection with some custom code/snippets, you can use the URL below to do that:  

Friday, January 26, 2018

[SOLVED] - Remove/Fix Broken tlp-rdw Packages

While trying to Update/Upgrade your Ubuntu system, if you have been running into errors as below:

 Preparing to unpack .../tlp-rdw_1.1-1~trusty_all.deb ...  
 dpkg-maintscript-helper: error: last version is missing  
 dpkg: error processing archive /var/cache/apt/archives/tlp-rdw_1.1-1~trusty_all.deb (--unpack):  
  subprocess new pre-installation script returned error exit status 1  
 dpkg-maintscript-helper: error: last version is missing  
 dpkg: error while cleaning up:  
  subprocess new post-removal script returned error exit status 1  
 Errors were encountered while processing:  
 E: Sub-process /usr/bin/dpkg returned an error code (1)  

And would like to remove the broken tlp-rdw packages, you can try the solution below. First open your terminal (CTRL+ALT+T) and enter the following command:

 sudo dpkg --remove --force-remove-reinstreq tlp tlp-rdw  

After running the above command you might get a warning message suggesting you run the purge command. To run purge enter the command below:

 sudo apt-get purge tlp tlp-rdw  

Please visit this link if you would like to know about TLP in detail:

Sunday, January 7, 2018

[Solved] - Unbrick Lenovo A7700 & Other MTK Based Phones

>> Download Links:
If you have bricked your Lenovo A7700 phone or any other MTK based Android phone then follow the tutorial below to unbrick it.

There are two types of bricked condition:
  • Soft bricked
  • Hard bricked
Soft brick occurs due to certain software errors and should usually be fixed by just performing a factory reset.

Hard brick occurs due to hardware malfunction. Actually, a hard brick device is the real "bricked/dead" and cannot be unbricked. In this case the phone doesn't turn on at all and is equal to a brick, rendering it useless.

Not sure what I should call my bricked phone. No matter what techniques I tried it wouldn't start at all. Applying the fix below worked for me.

Step 1: Open SP Flash tool. If you do not know how to use it and would like to learn, please check the following link:

Click on image to enlarge
 Step 2: As shown in the image above, select 'Format all+Download.'

Step 3:  Press Volume Down button or if Volume Down doesn't work try Volume up and connect your phone to your computer using a USB data cable. Now your Unbricking process should start, as shown in the video below.

N.B: This will result in deletion of your IMEI number(s). But nothing to worry about; later on you can easily set the IMEI number. You can follow this tutorial for resetting your IMEI number.

Saturday, January 6, 2018

Install & Use SP Flash Tool in Linux/Ubuntu Systems

>> Download Links:

 You can also follow the tutorial here:, and I strongly recommend you to follow the steps there. Below, I will point out the main step you have to note, from the above tutorial, for a successful installation, and that step is Step 4 which reads as follows:

"Now we come to the interesting part, which cost me 2 weeks of (futile) research and frustration. Finally I found Sergio Riveros tutorial on mibqyyo. Thanks to him again and again and again for this priceless piece of information.

"The 'modemmanager' package integrated by default within Linux Ubuntu 14.04 and later is not compatible with the MTK Flash Tool for Linux."

To put it in different words: The modem manager controls port /dev/ttyACM0 and disables the Flash Tool. So we blacklist it for the two MTK vendor IDs the flash tool uses:
 sudo gedit /etc/udev/rules.d/20-mm-blacklist-mtk.rules  
You insert these two lines:
 ATTRS{idVendor}=="0e8d", ENV{ID_MM_DEVICE_IGNORE}="1"  
 ATTRS{idVendor}=="6000", ENV{ID_MM_DEVICE_IGNORE}="1"  
Save the file, exit and restart udev:
 sudo service udev restart  
Switch your phone on (fastboot mode will suffice) and off again."

 >> Watch the video below to learn how to use the SP Flash Tool in Linux:

For list of SP Flash Tool - Errors, their meanings and how to resolve them, you may check the following link:

[SOLVED] - Flash Lenovo A7700 Stock ROM & Other MTK Phones Using SP Flash Tool

Recently my Lenovo A7700 mobile phone started crashing and giving various problems. Often, it would prompt messages such as "Google Service Framework has stopped working" or "Unfortunately, Google Play services has stopped" and lots of other errors, which eventually would cause the phone to crash. The only solution that would make the mobile functional again was to remove the battery and start the phone.

Then I tried flashing my phone with Stock ROMS & Custom ROMS hoping to resolve my problem. In the process I came across some interesting tools like SP Flash Tool, SN Write Tool etc. The tutorial below explains the working steps to successfully operate the SP flash tool.

Using SP Flash Tool, I have successfully flashed my phone in both Windows and Linux. In this post I will explain how to flash your Lenovo A7700 in Linux/Ubuntu. This same method can be used for flashing various other MTK based Android phones. Also find below the download links for SP Flash Tool, SN Write Tool & stock firmware for Lenovo A7700.

>> Download Links:

>> To install SP Flash tool in Linux, and to learn how to use it, please check this link:

Please refer to the video above to get an overview of the overall flashing procedure, and use the steps below for crosschecking your steps, and as further reference.

Step 1: Open your SP flash Tool as shown in the video above.

Step 2: Load your 'scatter.txt' file.

Step 3: Select 'Download Only' and then click on Download.

Step 4: Now turn off your phone and don't remove the battery if your are trying to flash the Lenovo A7700. In others you might have to, you can do trial and error and confirm.

Step 5: Now press the Volume Down button and connect your USB data cable to your phone and your computer.

Step 6: The flashing process should start now as shown in the video above.

For a list of SP Flash Tool - Errors, their meanings and how to resolve them, you may check the following link:

Top Magento Hosting:

Top 5 Posts (Weekly)