Showing posts with label helloworld. Show all posts
Showing posts with label helloworld. Show all posts

16 January 2015

Write Juju charm

In the last tutorial(tutorial1) we discuss what is juju and what are the capabilities in juju. In juju all the concepts based on juju charms.Basically individual component is called juju charm. Developers can build their charms and publish in to juju charm store(https://demo.jujucharms.com/).This image shows how to add mysql charm and wordpress charm and add relations between them.



Why use juju ??

Juju is a framework which support deploy applications to any cloud or Ubuntu based environment simple and more flexibility.

What is juju charm ??

Charm is individual component which used to manage service. If  we get simple service  "mysql database" or "wordpress".If you need to deploy these service in to your cloud environment you need to just drag and drop these charms and connect them through GUI.

Write Hello world charm.

When you write charm you may use python or bash script as programming languages.In here i will create "Helloworld" charm and then deploy in LXC container. 

First need to install charm tools.

sudo apt-get install charm-tools
Then create Helloworld charm

charm create hello_world

Then it look like this one.It contains hooks folder and config.yaml and metadata.yaml
Then inside hooks folder   there are several scripts files.These are "install" , "config-changed","start","stop","upgrade-charm" and other relation changed and relation joined scripts.

Charm life cycle 

In this flow diagram show how scripts inside hooks folder runs.


First it runs "install" hook which used to install all the dependencies to the charm.For example if your charm need java or python need to install before start application in your environment you have to mention these dependencies in install hook.

Then It runs "config-changed" hook.It is responsible for act  when changing configuration in charms.And then "start" hook runs.It is responsible for start the application.It may be server or service.

And there are other three hooks which are related to changed or add relations to charms.As example if mysql charm need to connect to wordpress charm we have to add relation between mysql and wordpress.

And Last Step it runs "stop" hook.Which is responsible for shutdown all services provided in charm.

21 October 2014

Java card Helloworld Applet

This article I will describe how to create java card hello world applet.You have to have
   1.Contact or contact reader
   2.Java card
   3.Eclipse with java card development kit.


First you have to knowledge about how the APDU commands are working in java card.This is the Apdu standard format.




In my example I used CLA value as 80 and INS value as 00 and P1 and P2 are 00,00.The requested format is 80000000.


import javacard.framework.APDU;

import javacard.framework.Applet;

import javacard.framework.ISO7816;

import javacard.framework.ISOException;

import javacard.framework.Util;

public class HelloworldApplet extends Applet {

private static final byte[] helloWorld = { (byte) 'H', (byte) 'e',

(byte) 'l', (byte) 'l', (byte) 'o', (byte) ' ', (byte) 'W',

(byte) 'o', (byte) 'r', (byte) 'l', (byte) 'd', };

private static final byte HW_CLA = (byte) 0x80;

private static final byte HW_INS = (byte) 0x00;

public static void install(byte[] bArray, short bOffset, byte bLength) {

        new HelloworldApplet().register(bArray, (short) (bOffset + 1),

        bArray[bOffset]);

}
public void process(APDU apdu) {

     if (selectingApplet()) {

       return;

}

  byte[] buffer = apdu.getBuffer();

  byte CLA = (byte) (buffer[ISO7816.OFFSET_CLA] & 0xFF);

  byte INS = (byte) (buffer[ISO7816.OFFSET_INS] & 0xFF);

if (CLA != HW_CLA) {

    ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);

}

switch (INS) {

  case HW_INS:

   getHelloWorld(apdu);

   break;

  default:

   ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);

  }
             }

private void getHelloWorld(APDU apdu) {

      byte[] buffer = apdu.getBuffer();

      short length = (short) helloWorld.length;

     Util.arrayCopyNonAtomic(helloWorld, (short) 0, buffer, (short) 0,

     (short) length);

     apdu.setOutgoingAndSend((short) 0, length);

       }

}