Thursday, December 26, 2013

Fix: SoapUI - 4.6.3 Test case

If you have installed newer version of soapUI chances are it wont work with mac
  • Installation problems




If your installed SoapUI instance on a Mac is not responsive, try the following steps to resolve the issue:
  1. In soapui-settings.xml file add or update the following line:
    true
  2. If that doesn't work, start SoapUI Pro with the following parameter added to the command line:
    -Dsoapui.jxbrowser.disable=true
  3. Alternatively, you can navigate to SoapUI*.app and do "Show Package Info" ( from popup menu ).
    Then you should see Contents directory. Open Info.plist file for editing where you can add:
    soapui.jxbrowser.disable
    true
  4. We have also seen some issues with SoapUI installs in Mac when GateKeeper is active. So to rule out that possible conflict, deactivate GateKeeper and try starting SoapUI

Also if you want to change the look and feel of SoapUI or SoapUI Pro to look more like a Mac application, change the following settings:
  1. Go to File > Preferences > UI Settings tab
  2. Check "Use native look & feel"
  3. Restart SoapUI Pro

Installing soapui

Once you've downloaded the installer the installation is pretty strait forward. Start it by just double-clicking on it. After preparing the installation which takes only a few seconds you'll see the starting screen:
mac-setup-start

Just click Next to continue. You'll be asked to accept our license agreement

mac-setup-soapui-lic-agreement

After accepting and clicking Next you'll be able to select the destination folder which by default is set to /Applications but can be changed.
mac-dest-install-folder

Next step gives you opportunity to optionally include, as additional components, soapUI source files and Hermes installation.

mac-install-components

In case of installing soapUI Pro JDBC drivers jars can be included as additional option (and of course no source is available).

mac-setup-wizard-select-comp-pro
After that a window appears where you'll be asked to select if desktop icon should be created and if jxbrowser should be disabled. Starting from version soapUI 3.6-beta2 JxBrowser is working on mac, but there is still a issue left with  browser being always displayed on top if opened.
mac-select-additional
Finally, by clicking Next, the installation starts
mac-setup-installing
If you have chosen to install Hermes the installation will be triggered next, with it's own info and license agreement
mac-start-hermes-installation
mac-hermes-info
mac-hermes-lic-agreement
and choosing the destination
mac-hermes-destination
mac-hermes-pacs
mac-hermes-listed
mac-hermes-install
mac-hermes-done

After couple of minutes most the installation should be finished and you should see the next screen:
mac-setup-wizard-finished
Now you are ready to use it. Good luck!

Wednesday, August 28, 2013

Match Making Algorithm

My friend is interviewing for Cerner Corporation and one of the questions asked was how will you design a match making algo for hospitals and students where

Hospitals rank students as per their preference
Students ranks hospitals as per their preference
Number of positions in hospitals and number of students are equal so student will end up going in hospital.


Given :

Student1 ->  Hospital1 - 1(pref) , Hospital2(pref)
Student 2 -> Hospital1 -1(pref) ,  Hospital2 (pref)

Hospital1 -> Student2 - 1(pref), Student1 - 2(Pref)
Hospital2 -> Student 1 - (pref) , Student 2 - 2 (pref)


We need a list of hospitals in rank stating with super awesome to lower

for each student
                   check preference in acceding order
                                  if hospital has space accommodate student
                                   else
                                   check the internal ranking for hospital and see if current student has higher preference
                                              if so kick a student with lowest rank as per hospital list who still has got admission to his next best preference

                                                        if the second college is filled do that for same as above college
                     end the student loop

The algo will be very well written recursively

Tracing given example

Hospital one = empty , Hospital 2 =  empty both having capacity of accommodating 1 Student each

----Student1 wants in Hospital 1 -> go for it

----Student 2 wants in Hospital 1 but Hospital 1 can only accommodate one student so checking internal list -> Student2 is more preferred so Student 1 has to go to Hospital 2

Final Solution

Hospital1 will have Student2
Hospital2 will have Student1


Algorithm is more biased to students as Students preferred list is first checked.

Complexity of Algorithm would be O(n!) which is quite high probably someone can do it better.

Please Comment will love to hear more about it.
                                                          

Tuesday, March 5, 2013

Carrer cup - 4th edition

4.1
Add arithmetic operators (plus, minus, times, divide) to make the following expression true: 3 1 3 6 = 8. You can use any parentheses you’d like. 

 Answer: +3 -1 +(-3+6) = 8


9.2   The Game of Master Mind is played as follows:
- The computer has four slots containing balls that are red (R), yellow (Y), green (G) or blue (B). For example, the computer might have RGGB (eg, Slot #1 is red, Slots #2 and #3 are green, #4 is blue).

- You, the user, are trying to guess the solution. You might, for example, guess YRGB.

- When you guess right color for the right slot, you get a “hit”. If you guess a color that exists but is in the wrong slot, you get a “psuedo-hit”. For example, the guess YRGB has 2 hits and one pseudo-hit.

For each guess, you are told the number of hits and pseudo hits. Write a method that, given a guess and a solution, returns the number of hits and pseudo hits.

public class carrercup_9_2 {

    void printHitsPseudohits(String solution, String guess)
    {
        int hits =0, psudohits = 0;
      
        int position = 0;
      
        for (int i=0;i        {
          
            position = solution.indexOf(guess.substring(i, i+1));
          
            if(position == i) //guess at same position as that of solution
            {
                hits++;
            }
          
            else if(position != -1) // guess charecter is there in solution somewhere
            {
                psudohits ++;
            }
          
            position = 0;//resetting position
        }
      
        System.out.println("For solution = "+solution +" and guess = "+guess +" hits = "+hits+" psudohits = "+psudohits);
    }
}
 

Monday, February 25, 2013

DB2 to SQL Server conversion

I have been working lately on converting native queries in Java project from DB2 to SQL.

Apart from the date conversion one of the more tricky conversion was NEXTVALUE()  which had no equivalent in sql server 2008.


So here is how I did it.

Essentially we will create a table which wil have auto generated Ids that will supply us next value.


 Create table tableName ( [id] [int] IDENTITY(1,1) NOT NULL ON [PRIMARY]); 


In order not to save ids in table created above we need to have stored procedure which will get id and roll back the transaction.


CREATE procedure spName

 as

 begin     

declare @id int     

set NOCOUNT ON     

insert into tableName default values     

set @id = scope_identity()     

delete from tableName WITH (READPAST)



select @id as id



end


Additional links


If you are using an identity column on your SQL Server tables, you can set the next insert value to whatever value you want. An example is if you wanted to start numbering your ID column at 1000 instead of 1.
It would be wise to first check what the current identify value is. We can use this command to do so:


DBCC CHECKIDENT (‘tablename’, NORESEED)
For instance, if I wanted to check the next ID value of my orders table, I could use this command:


DBCC CHECKIDENT (orders, NORESEED)
To set the value of the next ID to be 1000, I can use this command:


DBCC CHECKIDENT (orders, RESEED, 999)
Note that the next value will be whatever you reseed with + 1, so in this case I set it to 999 so that the next value will be 1000.
Another thing to note is that you may need to enclose the table name in single quotes or square brackets if you are referencing by a full path, or if your table name has spaces in it. (which it really shouldn’t)


DBCC CHECKIDENT ( ‘databasename.dbo.orders’,RESEED, 999)

Also calling stored procedure Seam project (Java) was a big task and has been accoplished in Entity class like code below:

Declaration in Model/Entity class:


import javax.persistence.NamedNativeQueries;

import javax.persistence.NamedNativeQuery;

import javax.persistence.SqlResultSetMapping;

import javax.persistence.Table;





@Entity



@SqlResultSetMapping(name="mappingName", columns=@ColumnResult(name="id")) 

@NamedNativeQueries({

          @NamedNativeQuery(name = NativeQueries.spName, 

                          query = NativeQueries.spName, 

                          hints={ @QueryHint(name = "org.hibernate.callable",value = "true"), @QueryHint(name = "org.hibernate.readOnly",value = "true")}, 

                          resultSetMapping = "mappingName")

          })


Calling a Stored Procedure:



  if(entityManager == null) {

            entityManager = (EntityManager)Component.getInstance("entityManager");

            if(entityManager == null) {

                log.fatal("entityManager is not available in seam context!");

            }

        }

        Query query = entityManager.createNamedQuery(spName);

        NEXTNUMBER (Integer) query.getSingleResult();     



                         




Thursday, January 10, 2013

Recovering Windows key

Have you ever wondered how much pain is it when u loose you product key. Windows 8 have 90 days free support where they can remotely access your computer and try to fix it.

Well I was trying to install .net 3.5 for running  downward compatible programs but oh my got it was just in a loop.  I cant get key because I downloaded from my Academic institute and they just wont give me access.

Well not deviating from my topic how to find product key here is how it worked for me

Belarc Advisor: http://www.belarc.com/free_download.html
(It does a good job of providing a wealth of information.)
Also: http://www.magicaljellybean.com/keyfinder.shtml
and: http://www.nirsoft.net/utils/product_cd_key_viewer.html
and RockXP: http://www.majorgeeks.com/download4138.html which has additional features

are the four utilities listed on (source: http://answers.microsoft.com/en-us/windows/forum/windows_8-windows_install/where-do-i-find-the-windows-8-product-key-when-it/d4c5c0c1-825d-47f2-9bed-d9625c7e68ff)

Belarc Advisor didnt worked for me. :(

But  http://www.magicaljellybean.com/keyfinder.shtml actually worked.

Now I am gonna try my OS registry files and see but ya best of luck. :)

Monday, January 7, 2013

Changing WAR or adding time stamp to your war name for maven supported project

Changing names for a maven project can be done in one to the two ways.

Easy fix:

The war name is same as artifact ID

    <groupId>com</groupId>
    <artifactId>ABC</artifactId>
    <version>0.0.1-SNAPSHOT    </version>
    <packaging>war</packaging>


will generate ABC.WAR in target specified folder


Other way:

So in this senario I also want to attach dynamically generated timestamp to my war

We will need to install plugin to generate time stamp as we want
 
           <build>
                <finalName>
                        ${project.artifactId}-${project.version}-${timestamp}
                </finalName>
                <plugins>
                    <plugin>
                        <groupId>
                            com.keyboardsamurais.maven
                        </groupId>
                        <artifactId>
                            maven-timestamp-plugin
                        </artifactId>
                        <version>
                            1.0
                        </version>
                        <configuration>
                            <propertyName>
                                timestamp
                            </propertyName>
                            <timestampPattern>
                                    dd.MM.yyyy HH.mm
                            </timestampPattern>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>
                                        create
                                    </goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

Should output: ABC-0.0.1-SNAPSHOT-07.01.2013 11.54.war