Skip to main content

Posts

Java 8 streams performance on mathematical calculations

Java 8 Streams API supports many parallel operations to process the data, it abstracts low level multithreading logic. To test performance did following simple test to calculate factorial of first X number starting with N.

Following program calculates factorial of first 1000 numbers.

package com.java.examples; import java.math.BigInteger; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.List; publicclassMathCalculation { publicstaticvoid main(String[] args) { List<Runnable> runnables = generateRunnables(1, 1000); Instant start= Instant.now(); // Comment one of the lines below to test parallel or sequential streams runnables.parallelStream().forEach(r -> r.run()); // runnables.stream().forEach(r -> r.run()); Instant end = Instant.now(); System.out.println("Calculated in "+ Duration.between(start, end)); } privatestaticvoid factorial(int number) { int i; BigInteger fact = BigInteger.valueOf(1); for (i =1; i <= numb…
Recent posts

Mobile Testing

Mobile application testing falls into broadly two types:

Hardware Testing This includes testing internal hardware, screen size, resolution, space, camera, Bluetooth, WIFI etc.
Software or Application Testing This includes testing the application that are running on device. Because of types of apps this can be divided into following categories: Native appsMobile web appsHybrid apps There are some key things to be considered when testing mobile apps: Native apps have single platformNative apps are written in platforms like SDKs while Mobile web are written in html, cssNative/Hybrid apps may or may not require internet connectionMobile web apps require internet connectionNative/Hybrid apps are downloaded from playstoreMobile web apps are accessible from internet Mobile Testing complexity in comparison web applications Different range of mobile devices, screen sizes etc.Various manufactures customizationsOS types iOS, Android, Windows etc.Different versions of OS e.g. Android 4.x, 5.x, 6.x, 7.x…

Java keytool to create keypair

Use following command to create a public/private keypair using java keytool command.

keytool -genkey -keyalg RSA -alias mykeystore -keystore keystore.jks -validity 30 -keysize 2048

Once you run the command follow the steps to complete generation of keypair, make sure you remember the password that you provide during generation.

Windows to Mac cheatsheet

For any user who moves from windows to Mac here are some frequently used shortcuts that we commonly use on windows

Task Manager
Command+Option+Esc

Screenshot
Shift+Command+4

Eclipse Preferences
Unlike Windows where they are under Window -> preferences, on mac they are under eclipse -> preferences

Gulp command not found on Mac OSX

Was getting following error after installing gulp on mac.

Sachins-MBP:MyApp sachin$ gulp
-bash: gulp: command not found
After fighting for hours and searching on internet, tuned out to be a very simple fix. While installing gulp missed the parameter to install globally.

Sachins-MBP:MyApp sachin$ npm install -g gulp

Yay !!!! Its working, thought to write to save time for somebody else.

MQTT - Eclipse Paho integration for Android

For MQTT integration, recently explored Paho Android project, very simple to use, here are the steps:

Intialize a client, set required options and connect.

    MqttAndroidClient mqttClient = new MqttAndroidClient(BaseApplication.getAppContext(), broker, MQTT_CLIENT_ID);
    //Set call back class
    mqttClient.setCallback(new MqttCallbackHandler(BaseApplication.getAppContext()));
    MqttConnectOptions connOpts = new MqttConnectOptions();
    IMqttToken token = mqttClient.connect(connOpts);


Subscribe to a topic.

    token.setActionCallback(new IMqttActionListener() {
      @Override
      public void onSuccess(IMqttToken arg0) {
           mqttClient.subscribe("TOPIC_NAME" + userId, 2, null, new IMqttActionListener() {
                @Override
                public void onSuccess(IMqttToken asyncActionToken) {
                    Log.d(LOG_TAG, "Successfully subscribed to topic.");
                }

                @Override
                public void onFailure…

Parsing mailing address in Java

Recently came across a problem to parse postal address String using Java, did some research here are some findings.

Given
String s = "60 Strawberry Hill Ave Stamford CT 06901" Required Result
Street = Strawberry Hill Ave
City = Stamford
Number = 60
zip = 06901
state = CT You can use JGeocoder

public static void main(String[] args) {
Map<AddressComponent, String> parsedAddr  =     AddressParser.parseAddress("Google Inc, 1600 Amphitheatre Parkway, Mountain View, CA 94043");
System.out.println(parsedAddr);

Map<AddressComponent, String> normalizedAddr  = AddressStandardizer.normalizeParsedAddress(parsedAddr);
        System.out.println(normalizedAddr);
} Output will be:

{street=Amphitheatre, city=Mountain View, number=1600, zip=94043, state=CA, name=Google Inc, type=Parkway}
{street=AMPHITHEATRE, city=MOUNTAIN VIEW, number=1600, zip=94043, state=CA, name=GOOGLE INC, type=PKWY}

There is another library International Address Parser , it provides a trial version. It s…