Duplicate Drives in Windows 10 File Explorer

In File Explorer within Windows 10, your local drives twice in the Navigation Pane. Once under Desktop, and once Under This PC

ExplorerDupDrives-1-before

You can fix this by removing the following keys from the Windows Registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders\{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders\{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}

As a result, the drives under Desktop are removed …

ExplorerDupDrives-2-after

If you removed this registry key, but it it re-appeared, then Windows Update KB3097617 is probably to blame. This update restores some default Registry Keys for Windows Explorer. Just run the steps again, and you should be fine.

Adding click handler for RecyclerView List Entries

If you’re migrating from the ListView to RecyclerView in API Level 21 support library (i.e. Android 5.0 / Lollipop), you may be wondering how to add a click listener for entries in the list. With the ListView you would provide a single listener for all list entries using the ListView.setOnItemClickListener() method, which takes an implementation of the AdapterView.OnItemClickListener interface as its parameter. In your implementation of this interface you would override the onItemClick() method where you are given the ListView instance, the View for the entry in the list, its position, and ID as method parameters.

The stumbling block with the RecyclerView is that it does not have this setOnItemClickListener() method. The solution is actually quite simple, you can use the standard setOnClickListener() method provided by the View object. You can do this for the View objects corresponding to each list entry.

You would typically inflate the required View object from the respective resource definition in your override of the RecyclerView.Adapter.onCreateViewHolder() method. You would also construct your version of the RecyclerView.ViewHolder class there and pass the inflated View object as a constructor parameter.

The View.setOnClickListener() accepts a View.OnClickListener implementation as its parameter, and your ViewHolder is a good place to implement this. This is because the ViewHolder class has access to the list entry View object, its parent, position, and ID which are exactly the same as the parameters you were provided in the old ListView onItemClick() method.

Your ViewHolder class could look something like the following:

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
    protected ViewHolder(View v)
    {
        super(v);
        
        // Inflate all your UI elements for the list entry ..
        
        // and ...
        v.setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        int pos = this.getPosition();
        long id = this.getItemId();
        ViewParent parent = v.getParent();
    }
}

And that’s really it! The code above should provide a good start for your ViewHolder class. Hopefully this has been helpful.

Window Manager missing after Upgrading Ubuntu

When I upgraded Ubuntu from 14.04 (Trusty Tahr) to 14.10 (Utopic Unicorn), the computer booted up fine after the restart. But after logging in, the Window Manager didn’t start up!

TL;DR … To fix this, delete the ~/.config/dconf/user file (or rename it), and then restart the computer.

When I logged in, the desktop was there with all the icons on it, but the top menu bar, and the side-bar were missing. When I opened up a window by clicking on a folder icon in the desktop, it would open, but it would be missing the title bar. So, basically seemed like the Window Manager was missing. After deleting the above mentioned file and restarting, it was all good again!

Apache Web Server – Require all granted

Just upgraded my web server to the current version of ubuntu and got caught out by a change in apache httpd. (Note to self: RTF-release-notes next time.)

It resulted with a 403 / Forbidden error, with the browser showing You don’t have permission to access / on this server, and a client denied by server configuration entry in the log.

The issue was the addition of mod_authz. It needs a new entry in the Directory section of your web site config:

Require all granted

It is equivalent to the old allow from all. Check the Apache mod_authz_core page for more details.

Luckyily this time it was a fairly easy fix, and mod_authz seems to have some fairly interesting features to explore. In any case, if your web sites stop working after an upgrade in your ubuntu server, this is probably the issue.

Fixing the Ubuntu bind9 named process 99% cpu usage issue

If you find the named process on your Ubuntu/Linux based server taking up a high amount of (e.g. 99%) CPU time, then check if the /var/cache/bind directory has the correct permissions.

If you run ll -d /var/cache/bind and find that only the root user has write permissions to the directory, i.e. it looks like the following:

drwxr-xr-x 2 root root 4.0K Apr 14 15:29 /var/cache/bind

Switch to the root user and change the group to bind, and give it write permissions, by running the following:

chown root:bind /var/cache/bind
chmod g+w /var/cache/bind

Then you will just need to restart bind9 by running the following:

service bind9 restart

Now it should be behaving better.

Apple publishes iphone-5 blueprints

For the first time Apple released the external blueprints of one of their devices to the public. Usually this is made available to accessory manufacturers. Now they’ve published it in their developer site.

Samsung can now start making its next phone. (I keeeed! I keeeed! 😀)

Source: developer.apple.com

Android Platform Version Share – September 2012

Google just published the monthly Android platform distribution. It shows that Android version 4.0 (ICS) has been growing at the same pace as last month, and version 4.1 (Jelly Bean) is just about getting a foothold in the market.

Version August September Change
# API
Jelly Bean 0.8% 1.2% +0.4%
v4.1 16
Ice Cream Sandwich 15.9% 20.9% +5.0%
v4.0 14 – 15
Honeycomb 2.3% 2.1% -0.2%
v3.x 12 – 13
Gingerbread 60.6% 57.5% -3.1%
v2.3 9 – 10
Frozen Yoghurt 15.5% 14.0% -1.5%
v2.2 8
Eclair 4.2% 3.7% -0.5%
v2.1 7
Donut 0.5% 0.4% -0.1%
v1.6 4
Cupcake 0.2% 0.2% 0%
v1.5 3

ICS usage share got a bit of a boost from the upgrades as well as some of the new phones. In next months statistics, we should see some of this boost shift to Jelly Bean if the most popular phone right now e.g. the Samsung Galaxy S3 gets upgraded. Along with other phones due for release this may put Jelly Bean at nearly 10%. or at least I hope! Otherwise the Jelly Bean share should hover around 2% while the ICS share rises to the mid-20%.

We’re unlikely to see the Gingerbread usage share decrease any quicker then the current rate as the phones still on this version are bound to stay on it. This will just get diluted as new phones come to market, and old phones are discarded.

Upgrading your Xoom to Android 4.0.3 (Ice Cream Sandwich)

Motorola Mobility is currently in the process of a limited rollout of Android 4.0 – Ice Cream Sandwich (Version 4.0.3/Package IML77 to be precise). Instead of waiting for the wider release you can manually upgrade your Xoom to ICS.

Your will need

  • A USB host cable, and
  • A USB thumbdrive, or an sd-card on a single card reader also works. Not too sure about those N-in-1 card readers – I’d stay away from those. Also, it doesn’t work from the micro-sd drive in the Xoom.

I use an SD-Card connected to the Xoom via micro-USB host cable and a USB-2.0 SD-Card reader. My Xoom is the Wifi model running the latest US Honecomb 3.2 (i.e. HTK75D).

Instructions:

  1. Download the zip file from Google and save it into the root folder of your USB drive.
  2. Connect the USB drive to the Xoom using a Host cable.
  3. Shut down your Xoom.
  4. Switch it on and press the Volume Down button as soon as the red Motorola logo appears.
  5. It should say Android Recovery in the top left. If it doesn’t keep pressing Volume Down until you see it.
  6. Press Volume Up to select the option.
  7. When the Green Android with the Exclamation Point appears, hold the Power button and press Volume Up.
  8. Select Update from USB drive.
  9. Pick the downloaded zip file.
  10. Enjoy your Ice Cream Sandwich! 🙂

Source: XDA Forums / Bauxite