Friday, April 3, 2015

Configure Apache ActiveMQ 5.10 and WSO2 CEP 3.1.0

Copy appropriate activemq jars to $CEP_HOME/repository/components/lib 


If you are using activemq-5.9.1, above 5.8.x you cannot find activemq-core-x.x.jar now it has been split into two jars activemq-broker-5.x and activemq-client-5.x. In order to configure you only need these 3 jars to copied inside lib.

1. activemq-client-5.x.jar

2. activemq-broker-5.x.jar

3. geronimo-j2ee-management.x.x.jar

To test the communication run [WSO2 CEP Sample 0002]

Monday, March 30, 2015

Send email from linux terminal

This is very use full for raspberry pi projects.Email temperature information, notify things when you not there.And the best thing is its really easy to configure.I'll go through step by step.

  1. First thing is to install ssmtp.
    • sudo apt-get install ssmtp
  2. Edit and add new configurations to ssmtp.conf file. 
    • nano /etc/ssmtp/ssmtp.conf [add new line or change current lines ]
      • root=your.email@gmail.com
      • mailhub=smtp.gmail.com:587
      • rewriteDomain=gmail.com
      • hostname=localhost
      • UseTLS=Yes
      • AuthUser=your.email
      • AuthPass=your.password
      • UseSTARTTLS=Yes
      • FromLineOverride=YES
    • ctrl+O [nano save]
    • ctrl+X [nano exit]
  3. Install mailutils to send emails from terminal.
    • sudo apt-get install mailutils
    • Sending a test mail
      • echo "Email Body [Happy Coding]" | mail -s "Email Subject [Finally Done]" your.email@gmail.com
  4. Possible errors and how to fix them.
    • mail: cannot send message: Process exited with a non-zero status
      • check the error log >> cat /var/log/mail.err or cat /var/log/mail.log
      • If its Authorization failed (xxxxxxxxxxxxxxxxxxxxxxxxxx)
    • sSMTP[1564]: Cannot open smtp.gmail.com:587
      • To fix this change port 587 to -> port 465 in mailhub attribute in ssmtp.conf 
        • mailhub=smtp.gmail.com:465

Sunday, February 8, 2015

Setting up an OpenGL C++ with eclipse IDE on Ubuntu/Linux OS

I'm currently using Linux 3.13.0-24-generic x86_64 kernel version of linux mint with OpenGL version of 2.1 Mesa 10.1.0 follow this link to check OpenGL version [link]

You need to go through only three steps
  1. Download OpenGL C++ libraries.
  2. Setup and install eclipse CDT bundle.
  3. Configure the eclipse libraries [simple].
  4. Test OpenGL application.

Download OpenGL C++ dependencies
  • In terminal use sudo apt-get install libglu1-mesa-dev freeglut3-dev m

Setup and install eclipse CDT bundle

  • In eclipse Help > Install New Software
  • Add new cdt installation path http://download.eclipse.org/tools/cdt/releases/8.5
  • Tick CDT Main Features hit next and finish the process and restart the eclipse

Configure the eclipse libraries [simple]

  • In eclipse choose New > C++ Project


  • Right click the project > Properties
  • Select C/C++ Build > Settings > GCC C++ Linker > Libraries > +
  • Add glut, GL, GLU libraries
  • Time to test a OpenGL app

Test OpenGL application

  • Download this sample source code [link] 
  • Right click on project New > File create new c or cpp file and paste the code
  • Its best practice to always clean and build the cpp project to do that right click Clean Project, right click Build Project / ctrl+B
  • Right click on project Run As > Local C/C++ program
  • It should show a red 3d cube like this
  • Fun [HACK] make the cube rotate 
    • Replace this code snippet inside void display(void) function
    •  while (true) {  
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
            drawBox();  
            glutSwapBuffers();  
            glRotatef(1.0f, 1.0f, 1.0f, 1.0f);  
       }  

Friday, December 5, 2014

Unity3D C# and JavaScript Communication

        Hmm.. problem is you have a code written in javascript and most of your codes written in c# and you really want to use javascript with your c# script or other way around. Is there way to do that. Of course you can. Unity3d has this special topic in their documentation [Special Folders and Script Compilation Order].

Simplified note
  • If you want to use javascript on your c# script javascript need to compile before the c# script.
  • There are some special folders to do that (compilation folder order)
    1. Standard Assets
    2. Pro Standard Assets
    3. Plugins
    4. Editor
    5. Other folders will compile last
  • Lets see a simple cube moving example for this c# and javascript communication.
Setting up the environment
  1. Add a cube game object
  2. Add a empty game object called JavaScriptComponent (This is for attach js)
  3. Add a folder name called Script (to put our calling scripts)
  4. Add a folder name called Standard Assets or Plugins (Any one of the special folder)


How to call a javascript from c# script

  • The JavaScript
  1. Go to Input.GetAxis documentation sample and grab the JS version of the code.
  2. Make the rotation & translation variables global.
  3. Add 2 public functions call getRotation(), getTranslation() that returns rotation & translation
  4. Save the script inside Standard Assets
  5. Attach this script to JavaScriptComponent empty gameobject
  6. Find the code snippet of the MoveScript.js
      //[code snippet from http://docs.unity3d.com/ScriptReference/Input.GetAxis.html]
 // A very simplistic car driving on the x-z plane.
 var speed : float = 10.0;
 var rotationSpeed : float = 100.0;
 
 
 private var translation : float;
 private var rotation : float;
 
 function Update () {
  // Get the horizontal and vertical axis.
  // By default they are mapped to the arrow keys.
  // The value is in the range -1 to 1
  translation = Input.GetAxis ("Vertical") * speed;
  rotation = Input.GetAxis ("Horizontal") * rotationSpeed;
  
  // Make it move 10 meters per second instead of 10 meters per frame...
  translation *= Time.deltaTime;
  rotation *= Time.deltaTime;
 }
 
 //We are going to access these 2 methods from csharp script
 public function getRotation(){
  return rotation;
 }
 
 public function getTranslation(){
  return translation;
}
  • The CSharp Script
  1. So now we know which game object holds our javascript.
  2. Use GameObject.Find ("JavaScriptComponent").GetComponent<MoveScriptJs>();  this code to get the js script reference.
  3. Attach the script to the Cube game object
  4. Find the Player.cs code snippet.
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

 private MoveScriptJs javaScript;

 // Use this for initialization
 void Start () {
  javaScript = GameObject.Find ("JavaScriptComponent").GetComponent<MoveScriptJs>();
 }
 
 // Update is called once per frame
 void Update () {
  // Move translation along the object's z-axis
  transform.Translate (0, 0, javaScript.getTranslation());
  // Rotate around our y-axis
  transform.Rotate (0, javaScript.getRotation(), 0);
 }
}


Now you can run the scene and see cube can be rotate and move, Most part of the code is done by javascript. Only rotation and transform floating point values are applying to this game object vectors by using c# script.How cool is that. Yes I know, this is a stupid way to move a game object but I wanted to show a kinda complex example and in next tutorial I want to show how to use the unity standard asset mobile joystick with c# script. The problem is unity ships this joystick assets with only javascript so how do we use this for mobile game that programmed using c# ? I know if you had follow this tutorial properly you can do it alone :) #happyCoding

Download the unity3d project [link]

Sunday, July 20, 2014

Apache TCPMon Axis2 [How To]


  1. Download the TCPMon-bin zip and extract 
  2. Go to tcpmon-1.0-bin/build path
  3. There you see tcpmon.sh and tcpmon.bin files to run tcpmon-1.0.jar easily
  4. If you are using Linux version first make it as executable file sudo chmod +x tcpmon.sh
  5. Run the jar file using sudo ./tcpmon.sh 
  6. Go to Admin panel in TCPMon app 

    • Change the Listen port to anything eg: 8081 instead of your default listen port 8080
    • Change the Target port to 8080
    • And click Add button it will create a new tab
  7. Now the TCPMon will listen to 8081 port and handle the communication with the default port 8080
  8. Start the apache tomcat server and make sure instead of using localhost:8080 use TCPMon Listen port localhost:8081
  9. Simply navigate to the service or run the client application and explorer the result

Saturday, January 18, 2014

Unity3D and Webcam using WebCamDevice, WebCamTexture with C#, JavaScript

C# solution

using UnityEngine;
using System.Collections;
public class WebCam: MonoBehaviour {
 void Start() {
  WebCamDevice[] devices = WebCamTexture.devices;
  if (devices.Length > 0) {
   WebCamTexture webcamTexture = new WebCamTexture(devices[0].name, 320, 240, 10);
   renderer.material.mainTexture = webcamTexture;
   webcamTexture.Play();
  }
 }
}

JavaScript solution
function Start() {
 var devices: WebCamDevice[] = WebCamTexture.devices;
 if (devices.length > 0) {
  var webcamTexture: WebCamTexture = WebCamTexture(320, 240, 10);
  renderer.material.mainTexture = webcamTexture;
  webcamTexture.Play();
 }
}

Saturday, April 13, 2013

Visual c++ Converting String ^ to std::string (basic string)

private: string toString(String ^ s) {
    string n;
    using namespace Runtime::InteropServices;
    const char * chars = (const char * )(Marshal::StringToHGlobalAnsi(s)).ToPointer();
    n = chars;
    Marshal::FreeHGlobal(IntPtr((void * ) chars));
    return n;
}