Logging levels - meanings and use

All the popular logging frameworks follow the similar convention and naming for log levels. There are five priority levels in use.

Order ( high priority to low):
  • FATAL ERROR WARN INFO DEBUG TRACE
Meaning and Use:
  1. debug to write debugging messages which should not be printed when the application is in production.
  2. info for messages similar to the "verbose" mode of many applications.
  3. warn for warning messages which are logged to some log but the application is able to carry on without a problem.
  4. error for application error messages which are also logged to some log but, still, the application can hobble along. Such as when some administrator-supplied configuration parameter is incorrect and you fall back to using some hard-coded default value.
  5. fatal for critical messages, after logging of which the application quits abnormally.
 Additionally, there are two other levels. They have the obvious meanings.
  1. ALL
  2. OFF

grails detecting environment - groovy & gsp code

Grails/Groovy working code snippet to detect the current environment (development, test, production, or your  custom). Custom environment are defined in config.groovy file.

Detecting Environment in GSP code :

Following checks if current environment is other than production.
    <g:if test="${env != "production"}">
        //your logic 

    </g:if>

Detecting environment in Groovy Code ( in Controller, Service, etc..), using switch-case comparison

        switch(Environment.current.getName()){
            case "development":
                //do your stuff 1
                break;
            case "test":
                //do your stuff 2
                break;
            case "production":
                //do your stuff 3
                break;
            case "my_environment":  // for custom environment : my_environment
                //todo:
                break;
        }

Simple comparison in groovy

if(Environment.current.getName()=="development") {
    //do your stuff
}

Grails - auto login in spring security

Consider a typical web application where you have multiple user roles (like SUPER_ADMIN, OPERATOR, VISITOR etc ) and you need to do login and switch between them frequently. It certainly consumes a lot of time if you do this manually. One simple solution would be to use the browser's password remember feature. But this would not be useful if you need to switch between different role.

Here, I am going to do show how we can setup this mechanism in Grails applications which uses Spring Security plugin.

If you are using Spring Security plugin then, by default you will have following names for html textbox for username and password : j_username and j_password. and you have login request url as http://localhost:8080/YOUR_APP/j_spring_security_check .

The required login script :

Groovy Grails - Dynamic Method n Variable name and invoking them

Groovy allows to use dynamic method name and variable name and invoke/use them.

Dynamic Variable Names

Groovy allows to use variable name dynamically. To test this lets introduce a variable  "dogname" to Dog class

class Dog {
def dogname
...
}

//Testing dynamic variable name
        def aDog= new Dog()
aDog.name="Hachi"
def prop="dogname"

println aDog."$prop" // prints Hachi

git- saving username password - credential.helper cache - how to

Isn't is interesting if there is an option in GIT to save your credentials for short time so that you don't enter your username/password repeatedly each time when you do pull/push? Yes! there is an option introduced in GIT since 1.7.9 (released on January 2012). This method is more secure than permanently saving your username/password in   .git  file of your git clone directory.

So, run the following command at the GIT console (git bash) :
git config --global credential.helper cache
This caches the credentials for 15 minutes ( 900 seconds) by default. If you want a longer timeout period (say3600 seconds), you can do the following :
git config --global credential.helper 'cache --timeout=3600'

Grails - beginners video tutorial


From the Grails site: "Grails aims to bring the 'coding by convention' paradigm to Groovy. It's an open-source web application framework that leverages the Groovy language and complements Java Web development. You can use Grails as a standalone development environment that hides all configuration details or integrate your Java business logic. Grails aims to make development as simple as possible and hence should appeal to a wide range of developers not just those from the Java community."

grails- add jar to lib folder - not working - solution

In grails application you can add jar dependencies by just pasting the .jar file to lib folder. If your code doesn't find the jar dependency at runtime then you can do following :

Run the following grail command (s):
  • clean
  • compile --refresh-dependencies 
In eclipse you can open the Grails Command Prompt by :
Right Click on project -> Grail Tools -> Open Grails Command Prompt

Hope this helps.

nepali english date conversion logic - working java code


My friend Manoj has written about Nepali-English date conversion in this post. Take a look :

http://forjavaprogrammers.blogspot.com/2012/06/how-to-convert-english-date-to-nepali.html

He has explained the algorithm in detail about how to convert English dates into Nepali dates with java code.

android media player - play file http rtsp streams

MediaPlayer class (android.media.MediaPlayer ) can be used to control playback of audio/video files and streams.  

Code:

String url = "http://........"; // your media URL here
//String url = "rtsp://........"; 
//String url = "file:///sdcard/intro.3gp"; //local file

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url); //Sets the data source (file-path or http/rtsp URL) to use

To play audio file, you can simply call mediaPlayer.start();

mediaPlayer.prepare()
mediaPlayer.start();

For the Audio Stream (http, rtsp)

After setting the datasource and the display surface, you need to either call prepare() or prepareAsync().
For streams, you should call prepareAsync(), which returns immediately, rather than blocking until enough data has been buffered.

A MediaPlayer object must first enter the Prepared state before playback can be started. MediaPlayer.OnPreparedListener defines Interfaces  for a callback to be invoked when the media source is ready for playback.


mediaPlayer.prepareAsync();
//You can show progress dialog here untill it prepared to play

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            //Called when the media file is ready for playback.
            mp.start();
        }
    });
    mediaPlayer.setOnErrorListener(new OnErrorListener() {
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            return false;
        }
    });


java spring - read properties file variable from xml -PropertyPlaceholderConfigurer

Java springframework xml configuration file - how to read properties file variables from spring xml :
We have to use PropertyPlaceholderConfigurer bean for this.

1).properties file location -

  • src/main/resource @ maven managed project
  • OR at classpath

2)The xml code to initialize/read properties file, 

hibernate annotation inheritance mappedsuperclass - common columns in super class

When you are using annotations for hibernate object relational mapping, there might be the case that we need to abstract out some common columns that goes into all table definitions. These columns might be ID, DFlag, LastModifiedDate etc..
In such case we can take advantage of @MappedSuperclass annotation to achieve inheritance in hibernate annotation.

Example :

Super class BaseTable that contains common column definitions:

@MappedSuperclass
public abstract class BaseTable {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "dflag")
    private int dFlag;

    @Column(name = "lastmodifieddate")
    private Date lastModifiedDate;
    
    //other required columns
....
}

Extending it to use in other tables :


@Entity
@Table(name = "LoginUser")
public class LoginUser extends BaseTable  implements Serializable{

    private static final long serialVersionUID = -1920053571118011085L;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "invalidCount")
    private int invalidCount;
    
    //other required tables
   ...
}


It works !

mysql hibernate unicode support - character set, collate

I just did following configurations to achieve Unicode support in my Java+Hibernate+MySQL project.

Configuring MySQL to support Unicode - set Character Set and Collate as :
CREATE TABLE YOUR_DB_NAME
 CHARACTER SET "UTF8"
 COLLATE "utf8_general_ci";

NOTE : You Need to do "ALTER TABLE" instead of "CREATE TABLE", 
      if you are going to modify existing DB.

Hibernate JDBC connection string :
jdbc.url=jdbc:mysql://localhost:3306/YOUR_DB_NAME?useUnicode=true&characterEncoding=UTF-8

Hibernate Configuration:
<hibernate-configuration>
<session-factory>
    ...
    <property name="hibernate.connection.charSet">UTF-8</property>
    <property name="hibernate.connection.characterEncoding">UTF-8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    ...
</session-factory>
</hibernate-configuration>

Java code to find public IP address (servlet and client side code)


Java code to find public IP address :

URL url= new URL("http://gt-tests.appspot.com/ip");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String ip = in.readLine();
System.out.println("IP : "+ip);

I created a simple servlet app on google app engine  and posted at http://gt-tests.appspot.com/ip .

The servlet code returns the public address of client, it looks like :

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
  PrintWriter out = resp.getWriter();
  // Get client's IP address
  String addr = req.getRemoteAddr();
  out.println(addr);
  ...

Java Script code that disables right click and prevents selecting the text on web page.

Java Script code that disables right click and selecting the text on web page.
Put the following code in your <body>........</body> tag.
<script>
function disableselect(e){return false;}
function reEnable(){return true;}
document.onselectstart=new Function (){return false;}
if (window.sidebar){
    document.onmousedown=disableselect;
    document.onclick=reEnable;
}
</script>

<script>
document.oncontextmenu = function(){return false;}
if(document.layers) {
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown = function(e){
        if(e.target==document)
        return false;
    }
}else {
    document.onmousedown = function(){return false;}
}

For Blogger template,

  • Search for </body> in the template code
  • paste the above script just before </body> tage.
Enjoy !
You are now safe from website article thief.

facebook security bug - change password of a active user - without knowing original password

change password of a active user -without knowing original password - security bug - Facebook allows to change password in active login without entering current password

As of May 2012, Facebook has over 900 million active users. Security and privacy should be the number one concern of Facebook Inc. But I just found one BUG in Facebook security system.

This might (not) be a security bug in Facebook. And probably be fixed by Facebook when you tried to do the same, because I am going to report this to Facebook.

All the steps below that I am going to share - deals with changing someone else’s password without entering their previous/current password. I have never seen or write code for “login preference change” that allows to change password without entering previous password or other information.  I was shocked to know that Facebook allows it. I was just playing with Security option in Facebook’s Account setting https://www.facebook.com/settings. And found that.

Steps that I followed :

eclipse proguard maven project configuration - java obfuscate

I am going to describe how can can configure proguard and maven to obfuscate a java project. If you need help on how to configure maven project in eclipse see my earlier post.

A)Project configs
    <!-- Project configs -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gt</groupId>
    <artifactId>maven-proguard-test</artifactId>
    <packaging>jar</packaging>
    <version>-ver.01</version>
    <name>maven-proguard-test-application</name>

    <properties>
        <project.build.mainClass>com.gt.App</project.build.mainClass>
    </properties>

Speech Recognition Java Code - HMM VQ MFCC ( Hidden markov model, Vector Quantization and Mel Filter Cepstral Coefficient)

Hi everyone,
I have shared speech recognition code in google code :
http://code.google.com/p/speech-recognition-java-hidden-markov-model-vq-mfcc/

You can find complete source code for speech recognition using  HMM, VQ, MFCC ( Hidden markov model, Vector Quantization and Mel Filter Cepstral Coefficient). Feel free to use and modify this code.

The project report that accompanies this code is here.
http://ganeshtiwaridotcomdotnp.blogspot.com/2011/06/final-report-text-prompted-remote.html

Introduction to the project :
http://ganeshtiwaridotcomdotnp.blogspot.com/2010/12/text-prompted-remote-speaker.html

colored object tracking in java- javacv code

Code for this demo video - Color Based Image Segmentation to Track Path of Moving Object


Working Source Code :
import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_8U;
import static com.googlecode.javacv.cpp.opencv_core.cvCreateImage;
import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
import static com.googlecode.javacv.cpp.opencv_core.cvGetSize;
import static com.googlecode.javacv.cpp.opencv_core.cvInRangeS;
import static com.googlecode.javacv.cpp.opencv_core.cvScalar;
import static com.googlecode.javacv.cpp.opencv_imgproc.CV_BGR2GRAY;
import static com.googlecode.javacv.cpp.opencv_imgproc.CV_MEDIAN;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvCvtColor;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvEqualizeHist;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvGetCentralMoment;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvGetSpatialMoment;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvMoments;
import static com.googlecode.javacv.cpp.opencv_imgproc.cvSmooth;
import static com.googlecode.javacv.cpp.opencv_highgui.*;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.CvScalar;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import com.googlecode.javacv.cpp.opencv_imgproc.CvMoments;

public class ColoredObjectTrack implements Runnable {
    final int INTERVAL = 1000;// 1sec
    final int CAMERA_NUM = 0; // Default camera for this time

Mouse Gesture Recognition Using Hidden Markov Model - Java Source Code

Hi everyone, I have uploaded the codes for my project - "Mouse Gesture Recognition with Hidden Markov Model - Java".

You can find it @ google code : https://code.google.com/p/mouse-gesture-recognition-java-hidden-markov-model/.

This svn repository @ google code contains eclipse source code (VQ and HMM codes from OCVolume Project.) , trained hmm models and codebook, captured data for few gestures.

Similar codes for Speech Recognition System using HMM/VQ + MFCC will be uploaded SOON.

DEMO VIDEO: http://www.youtube.com/watch?v=0CNJ2fCj4xQ


maven install jar to repository locally

Run the following command to install the "MyJar-x.x.x.jar" into Local maven repository. The underlined  values vary in your case.
mvn install:install-file -Dfile=PathOFJar_MyJar-x.x.x.jar -DgroupId=com.mycompany -DartifactId=myJar -Dversion=x.x.x -Dpackaging=jar

After installing, Add the dependency into Pom.xml :
        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>myJar</artifactId>
            <version>x.x.x</version>
        </dependency>

As an alternative, you can directly refer to a jar file in your file system. This eliminates the hassle that every team member and build server to run the mvn:install command every time someone adds some local jar in pom.xml.

Take a look at following blog post for the details.
http://ganeshtiwaridotcomdotnp.blogspot.com/2016/12/maven-use-local-jar-without-installing.html


Java grey image from RGB image convert full source code

The java code below is for making grey image from a image
public static void main(String[] args) {
        BufferedImage org = getImage("test.jpg");
        BufferedImage greyImage = getGrayScaleAvg(org);
        new ImageFrame(org, "Original");
        new ImageFrame(greyImage, "After GrayScale");
    }

Full working source code : averages the pixels to obtain grey image
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class tempgrey {
    public static void main(String[] args) {
        BufferedImage org = getImage("test.jpg");//valid input image
        BufferedImage greyImage = getGrayScaleAvg(org);
        new ImageFrame(org, "Original");
        new ImageFrame(greyImage, "After GrayScale");
    }

    public static BufferedImage getImage(String imageName) {
        try {
            File input = new File(imageName);
            BufferedImage image = ImageIO.read(input);
            return image;

Job Interview Question Answer Frequently Asked - programmer


Some Common and most asked job interview question ( for programmer) and their answers. In Nepali Context.

These questions are the most common questions ( in my job haunt experience) that will be asked to you in your interview.

1. Tell me about yourself:
After finishing computer engineering from ABC campus last year, i worked as java developer. I have good command of Java related technologies. I also have interest in ABC. I find myself as a hard worker and quick learner. And I think i am a good candidate for the position.

2. Last Jobs:
My first job was at ABC as N months contract. Our responsibilites were bug fixing and upgrading an existing ABC system. It was a web app. I mainly worked in feature enhancement like : ABC and some business modules like report generations.
After finishing the contract, i joined ABC as java developer. There too i worked  in a business application for healthcare related dataprocessing/reporting application . I mainly write code for ABC , ABC etc.

3. Why did you leave your last job?
In fact it was a good time working for ABC but i couldnot find any learning opportunity there, I always wanted a challanging job where i can contribute myself and learn something. I worked there for N months and decided to quit the job.

What did you did in this free time :
After i quit the job - besides job haunting, i did a freelancing project- it was ABC,..,
Meanwhile, i learned android framework and teach java in an institute for about 1 month.


6. How do you know about this position?
I knew about this org from the job vacancy notice posted in ABC.com.

7. What do you know about this organization?
ABC is a 10 year old software company located in ABC. it mainly works on ABC. Its major clients are ABC. Major products are ABC.

11. What kind of salary do you need?
As i have few experience and skills, and this might be somehow different job from my previous ... ummm...well ... NN000 NRS/Mo will be fine.

13. How long would you expect to work for us if hired?
I would work as long as you and i both enjoy working me in ABC. I am certain that, I will enjoy the job at ABC##??

25. What are you looking for in a job?
Where i can contribute more and learn new things in the process . not only technically but also the detail of business domain on which i am working at.

50. Do you have any questions for me?
Well ... yes i think i  have one.

>> what will be the next possible step in selection process.
>> what type of responsibilities
>>

Correct way of connecting ADSL splitter and router

REMEMBER : If you need extensions, connect it after splitter only. 
Right way of connecting adsl splitter and router in telephone line
Wrong way of connecting adsl router, splitter in telephone line

correct adsl connection diagram, router, computer, splitter, telephone line

NTC ADSL Configuration Working Way

To configure ADSL setting in a ADSL Router, you need to enter the following informations .


The (generic) easy steps :


1) Open 192.168.1.1 (in most routers) in router,
        use admin for username and admin for password (If it doesnot work, refer to the manual of router, the login information can be found on back of router)

2) Search for the ADSL settings page in the router config -
For Routing Mode (where router automatically dials the connection), You need to provide/choose the following minimum settings there

>Choose PPPOE LLC for Connection type or encapsulation
>Enter correct username and password given by NTC
>Choose authentication AUTO
>provide 8 for VPI, and 81 for VCI

3) Save the connection settings and restart the router.
4) Make sure all the LEDS including internet is ON.

tips - learn programming faster and effectively

How to learn programming effectively- tips for developing programming skills


Tip1 : Have detail knowledge of following and practice them in your favorite programming language
  • Design Patterns / Anti Patterns
  • UML
  • OOAD

Career suggestion for nepali computer engineers programmers student

Career Suggestions/guidelines to Computer Engineering BE, BCA, BTech, BSc-CS, BIT students 
  • Self Study
  • Internet is your library - Search, search and search more
  • Try to understand the concept of programming not language
  • Algorithms and Data Structures are everything
  • Do you know Design Patterns ?
  • Projects are portfolio for your first job interview

teacher student - problems nepali collages university

Problems with teacher and student in Nepali collages/universities

Teacher
  •     Theory focus
  •     No senior lecturers available (almost all of them left country for higher education)
  •     Weak at practical implementation of the course
  •     Teach to earn mindset
  •     Can teach anything.. any subject to any faculty (ridiculous)
  •     Knows everything in theory
  •     Lack of subject domain expertise

Student
  •     Theory Focus
  •     Lack of seriousness in course study
  •     Lack of knowledge about scope of course
  •     Lack of practical application of theory
  •     Takes projects as burden
  •     Exam centric study
  •     No interest in self learning
  •     Stressed of unnecessary subjects (irrelevant ones)
  •     No idea of Collaborative Development
  •     No Interest in professional latest happenings

    This list reflects those who do a irresponsible teaching and the students who loose their interest in study in the middle of the course. Writing these as an outsider – there came these points needed to be managed during college life. These scenario needs to be changed. We need to inherit the sharing, caring and collaborating culture from the history of world’s technical developments.

Nepali Computer Engineer Programmer Career Options in Nepal

Career options for Nepali Computer Engineer/ Programmer

Most of the Computer Engineering graduate are working in one of the following positions in Kathmandu. 
  • Programmer (Software Engineer) ~ 85 %
    • Desktop Applications Developer
    • Web Applications Developer
    • Mobile Applications Developer
  • Network Admin ~5 %
  • Sys Admin
  • DBA (Database Administrator)
  • Web/UI Designer
  • Q/A  (Quality Assurance)
  • 3D Animator / Modeler
  • System/Project Management
  • Information Architecture (System Designer)
We are being taught C/C++ for basic programming/ software development concepts but professionally “PHP, Javascript, JAVA, C#, Python” are of the popular programming languages used in Nepal. Recently, mobile application development for iPhone and Android phones (Objective-C and Android frameworks) are also being popular among Nepali developers

Nepal Telecom - useful service dial codes

I have listed important number/codes to dial to access useful NTC services.

1,2 : GPRS Activation/Settings : 

view previous blog : http://ganeshtiwaridotcomdotnp.blogspot.com/2013/02/ntc-nepal-telecom-gprs-setting-via-sms.html

3.GSM/CDMA Post paid Balance Inquiry:

Type CB (in your Message Box) & Send it to 1400(For GSM) or 1401(for CDMA), which informs u the due balance.
Type VB<space>6904 (in your Message Box) & Send it to 1400(For GSM) or 1401(for CDMA)
Note: Upper given 6904 is the example of concerned month and year, u can put number as per ur necessety
which is used to find out monthly bill.

4.CDMA Call Divert Cancel

Dial *703 from your CDMA mobile Set.

5. PUK no Inquiry (for both GSM and CDMA User)

Dial 1607 (follow the instruction)
(type 19 no. of pin code available at backside of your SIM)

6. International Call Bypass complain Registration

(if National Tel. Number appear while receiving International Call)
Dial 188 (follow the instruction), which is free of cost.

7. Telephone Maintenance (both for Land Line and ADSL)

Dial 198 (follow the instruction)

8. Budget Call (for international call)

Dial 1424<country code> <number>
http://www.ntc.net.np/tariff/intlSIPtariff.php
(this link provides you the economic tariff details for various country)

9. GSM inquiry

Dial 1498-free of cost ( For any complain or any query about ur GSM Prepaid )

10. CDMA enquiry

Dial 191- free of cost ( For any complain or any query about ur CDMA, sky ruim )

11. Balance Inquiry (for prepaid)

GSM : Dial *400# or 1414
CDMA : Dial 1415

12. BUZZ Service (Connect)

Type SUB (in your Message Box) & Send it to 5000

13. BUZZ Service (Disconnect)

Type UNSUB (in your Message Box) & Send it to 5000

14. PSTN Bill Inquiry

Dial…1606(related no)

15. PSTN, ADSL, POSTPAID GSM Bill payment through recharge card

Dial 1413 and follow instructions
Note : ADSL Bill payment through recharge card is Halted due to some problems, and will be restart soon.

16. Telephone no Inquiry (to know the contact no of different offices)

Dial… 197

17. Upgrade your postpaid/ prepaid GSM to 3G

Type <3G> in your msg box and send it to 1400 (It’s Free)

HTML5 tutorial with examples

Wouldn't it be nice to read about all the cool things about HTML 5 and view its live demo in a single article?
Yeah... Of course.
My friend Yadab Raj Ojha has listed all the features of HTML5 along with its examples in the following article. Take a look: