Mommy look.. Upgrading jQuery breaks live :(

If you have upgraded jQuery to 1.9 then you would have dreaded Uncaught TypeError: undefined is not a function would be barking at you on your javascript console.

The fix
According to the jQuery site, you would need to replace live with on

Say if you have:

$('.selector-class-name').live('click', function(){console.log('
Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far the Universe is winning.
Rick Cook
')});

Then you would have to change this to the new version using on as follows.
*The current on will be passed the event owner as a parameter so, we have to have a way to know the parent of the event owner, in this case the object with class selector-class-name.
If we don’t know the parent we can implement body tag

$('parent-of-object').on('click', '.selector-class-name', function(){
Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far the Universe is winning.
Rick Cook
});

This shall take care of the problem.

, , , , , , , , ,

Leave a comment

View the raw sql created by Doctrine

For debugging you might want to see the final native query constructed by doctrine

$raw_sql = $query->getSQL();

the raw_sql variable would contain the sql constructed from entity objecs.

, , , , , , ,

Leave a comment

JSF App slow with JPA connection

If you are working on Java Persistence API JPA on tomcat or any other web server this would be happening if you have multiple threads going off for connections.

The rule of thumb shall be to have one EntityManagerFactory and get EntityManagers out of it. Hence we would have one factory but multiple products that would take care of closing and managing them selves.

What are the signs:

1. Do you instantiate Persistence.createEntityManagerFactory(“name”) from multiple places?
2. What do you see on Process when you run

ps -aux | grep tomcat

Do you see multiple instances

If either or both of the above have yes, then here is the solution.

The first thing have single instance of ManagerFactory


package com.enderase.persistence;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
* Singlton implementation for EntityManagerFactory
*
* @author Kaleb Woldearegay<kaleb@gullele.com>
*/
public class HibernateUtil {
private static final EntityManagerFactory entityManagerFactory;

static {
try {
entityManagerFactory = Persistence.createEntityManagerFactory("jpa");
} catch (Throwable exception) {
//log your error here
throw new ExceptionInInitializerError(exception);
}
}

public static EntityManagerFactory getEntityManager() {
return entityManagerFactory;
}
}

Then make sure you are taking care of the instances of the EntityManagers that are created from the factory using

EntityManagerFactory entityManagerFactory = HibernateUtil.getEntityManager();
EntityManager em = entityManagerFactory.createEntityManager();

Make sure to close them appropriately after using them

This should pretty much take care of the problem

 

, , , , , ,

Leave a comment

Check if there are three numbers a, b, c giving a total T from array A

I got this question while helping a friend on the course work. It is relatively simple question. But the way how it is approached can make a difference on efficiency.

The question is, given an array of numbers, you are to find if there are three numbers that would total the given number T.

If done in a very naive way, it can soar to o(n^3) like having three loops and checking the sum inside the third loop.. well.. this is a no no..

I have approached it in a log n ( for sorting) and n for (searching) approach..

public int threeNumbersTotal(int[] nums, int totVal){
 Arrays.sort(nums);
 int minIndex = 0;
 int maxIndex = nums.length-1;
 int currentCounter = minIndex+1;
 while(minIndex != maxIndex) {
   if (nums[minIndex] + nums[maxIndex] >= totVal) {
     maxIndex -= 1;
   } else if (nums[minIndex] + nums[maxIndex] < totVal){
     int sum = nums[minIndex] + nums[maxIndex] + nums[currentCounter];
     if (sum == totVal) {
       return 1;
     }
     else if (sum < totVal){
       currentCounter++;
     } else {
       minIndex++;
       currentCounter = minIndex + 1;
     }
   }
  }
  return -1;
}


Leave a comment

PDO not throwing any exceptions

If you want pdo to thow exception so that you can see what is going on kinda thing.. you can add the following parameter when you instantiate PDO just next to the password part of the pdo

array(PDO::ATTR_EMULATE_PREPARES => false, 
                                                                                                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)

**Note: This is not the best way to handle exception by any means!!

, , , , ,

Leave a comment

Removing a decorator from Zend Form

Zend will ship its elements with tags of dd dt
But if you want to get only the element with out decorator being around it.
you can do:

        $this->addElement('text', 'you_element', array(
                ....
                'decorators' => array('viewHelper'),
                ....
        ));

But if you want to display errors along with the HTML format,
add errors in the decorators array

This should give you only the element that you can implement your own decorator around it

, , , , , , ,

Leave a comment

Accessing one bean in another without using annotation

I would say we have to use annotations and Injection to get the bean inside another bean.
But in case you are interested to get it without using annotation you can use the following in the action/actionListener

TheBean theBean = (TheBean)FacesContext.getCurrentInstance() .getExternalContext().getRequestMap().get("theBean");

Where theBean is one we are interested to get it from being in the other bean.

That is it!

, ,

Leave a comment

Follow

Get every new post delivered to your Inbox.