Tuesday 29 November 2016

View GWT emulated Long in browser developer tools

Problem:

I would like to see the long value of a GWT emulated Long in my browser's developer tools.

I already know how to pause and debug my web app, but when I inspect a Long value, it looks similar to {h:0, m:544, l:54210}.

Solution:

Imagine that we have an emulated Long value: myLongVal={h:1, m:234, l:567}

To translate this to a human-readable Long (in most, but not all cases), type the following in the developer tools console:

myLongVal.h*Math.pow(2,44) + myLongVal.m*Math.pow(2,22) + myLongVal.l

(See screenshot)

Notes:

This was verified to work in GWT 2.7. Your mileage may vary for other versions.

The above method should work for Long values that are low enough. However, overflow may occur for larger emulated Long values as the cast to a Javascript double does not cover as many bits as a long integer.

Note that if you have a browser that actually supports 64-bit integers or larger, you might be able to use the following:

(myLongVal.h << 44) + (myLongVal.m << 22) + myLongVal.l

References:

Sunday 27 November 2016

Chrome CPU throttling

Problem:

I would like to slow down, or throttle Chrome to test my web app's responsiveness. My computer is too fast to represent devices in the real world.

Solution:

Enable CPU throttling in Chrome Developer Tools:

  • F12 to open developer tools in Chrome
  • click on the "Timeline" tab
  • click the CPU throttling drop-down (beside the trash can/garbage collect icon) (see image below)
  • select your desired throttle speed

Notes:

This was verified to work in Chrome version 54. Your mileage my vary with different versions and on different machines.

Also note that while this may help simulate and uncover some performance issues for scripts during development, it may not completely simulate issues experienced on slower devices. Using a virtual machine, or a real test machine would generally be preferred for more comprehensive testing.

Nonetheless, a big "thank you" to the Chrome developers for including such a useful feature :)

References:

Package-level javadoc comments

Problem:

How can I add package-level javadoc comments to my Java project?

Solution:

  • In your package's directory, add a file named "package-info.java"
  • In this file, include the package-level javadoc comment, as well as the package declaration

Example:

myprojectroot/mypackage/package-info.java:

/**
 * Provides an example package-level javadoc comment.
 * 
 * @since 1.0
 */
package myprojectroot.mypackage;

Additional hints:

  • in Eclipse, you can create this file by adding a "new file" to the package (instead of a new Java class, etc.)

References:

Copy local scope variables in Chrome developer tools

Problem:

I would like to use Chrome developer tools to access local scoped variables when debugging Javascript applications.

I am already familiar with debugging with using developer tools, including setting breakpoints and pausing code execution.

How to reminder:

  • set break point to pause execution within the desired scope
  • to access the local scope variable, type it in the console while script execution is still paused in the desired scope (see image below)

Notes:

This was verified to work in Chrome version 54. Your mileage may vary using other versions.

Sunday 20 November 2016

Clear icon cache in windows 7/8/10

Problem:

I want to clear the Windows icon cache because a Windows shortcut is currently displaying an old, incorrect icon.

Solution:

  • press [Windows Key]+R (to get the run dialog)
  • in windows 7/8, run the command: ie4uinit.exe -ClearIconCache
  • in windows 10, run the command: ie4uinit.exe -show

Additional notes:

This was verified to work in Windows 7 and Windows 10 without requiring a restart. Your mileage may vary.

References: