3G Services on Indian Mobile

Today Indian Mobile phone subscriber has access to internet via GPRS or similar service from operator. Government has set platform for 3G services. Within one year 3G services will be started in India. (BSNL plans to lunch it by December 2008). Meaning of 3G services for not technical user is simply high speed internet & video services on mobile.

3G Services Hurdle

I think 3G services in India will be available to all but only high-end user will use it like blackberry user. It will not be popular to in common man at least in first 2 years. There are few reasons that I think is following.

  1. Less popular GPRS or internet on mobile.
  2. Less localized application & content.
  3. Higher cost of services.

I think this is the time for government & companies to promote internet on mobile otherwise it will be late & may affect popularity & acceptance of 3G services.

Continue reading

Advertisements

Zend Framework Bootstrap

Bootstrap is a setup process of different framework component to make easily accessible/available in application. It is very important to setup all require component of framework, so whenever it can be used effectively without any hassle. Bootstrap file is very important file for project using Zend Framework. Bootstrap file or bootstrap process is not a standard in Zend Framework, but to create bootstrap file but it is good practice. Many people use it many way.

It is important to know what are the component of Zend Framework is require. Following is good example of bootstrap.php


require_once 'Zend/Loader.php';

class Bootstrap
{

    public static $frontController = null;

    public static $root = '';

    public static $registry = null;

    //Primary function will be called first from index.php, it will call rest of functions to boot
	public static function run()
    {
        self::prepare();
        $response = self::$frontController->dispatch();
        self::sendResponse($response);
    }

    /*It is used to prepare from macro view.
	It gives macro view idea about preparation.
	Sequence of each call is important.
	*/
	public static function prepare()
    {
        self::setupPath();
    	self::setupErrorReporting();

		//To load all classes automatically, without include or require statement
        Zend_Loader::registerAutoload();

        self::setupRegistry();
        self::setupConfiguration();
        self::setupFrontController();
        self::setupView();
		self::setupLogger();
        self::setupDatabase();
		self::setupSession();
    }

    //Error reporting setting
	public static function setupErrorReporting()
    {
    	error_reporting(E_ALL|E_STRICT);
    	ini_set('display_errors', true);
    }

    //Path settings will be done using this
	public static function setupPath()
    {
        $root = dirname(dirname(__FILE__));
		set_include_path(
		    $root . '/library' . PATH_SEPARATOR .
			$root . '/application' . PATH_SEPARATOR .
			$root . '/application/models' . PATH_SEPARATOR .
			 get_include_path()
		);
        self::$root = dirname(dirname(__FILE__));
    }

	//Date time setting will be done here
	public static function setupDateTime()
	{
		date_default_timezone_set('Europe/London');
	}

    //Registry setting will be done here.
	public static function setupRegistry()
    {
        self::$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS);
        Zend_Registry::setInstance(self::$registry);
    }

    //Configuration file reading & setting up configuration will be done using following.
	public static function setupConfiguration()
    {
        $config = new Zend_Config_Ini(
            self::$root . '/application/config/config.ini',
            'general'
        );
        self::$registry->configuration = $config;
    }

    //Important: Setting of front controller will done here.
	public static function setupFrontController()
    {
        self::$frontController = Zend_Controller_Front::getInstance();
        self::$frontController->throwExceptions(true);
        self::$frontController->returnResponse(true);
        self::$frontController->setControllerDirectory(
            array(
                'default' => self::$root . '/application/controllers',
				'admin' => self::$root . '/application/admin/controllers'
            )
        );
        self::$frontController->setParam('registry', self::$registry);
    }

    /*View setup will be done here.
	Setup view encoding, layout setup also done here
	*/
	public static function setupView()
    {
        $view = new Zend_View;
        $view->setEncoding('UTF-8');
        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        Zend_Layout::startMvc(
            array(
                'layoutPath' => self::$root . '/application/views/layouts',
                'layout' => 'common',
                'pluginClass' => 'ZFBlog_Layout_Controller_Plugin_Layout'
            )
        );
    }

    /*DB setup done here.
	Read configuration, create db instance & set in registry to use in other part of application.*/
	public static function setupDatabase()
    {
        $config = self::$registry->configuration;
        $db = Zend_Db::factory($config->db->adapter, $config->db->toArray());
        $db->query("SET NAMES 'utf8'");
        self::$registry->database = $db;
        Zend_Db_Table::setDefaultAdapter($db);
    }

    //Response will be sent from following function, also set header for response.
	public static function sendResponse(Zend_Controller_Response_Http $response)
    {
        $response->setHeader('Content-Type', 'text/html; charset=UTF-8', true);
    	$response->sendResponse();
    }

	//Logger setup will can be done using following
	public static function setupLogger()
	{
		/**
		* Create a log formatter
		*/
		$format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
		$formatter = new Zend_Log_Formatter_Simple($format);

		/**
		* Create a file logger
		*/
		$stream = @fopen(APP_DIR . "tmp/logs/" . date("Y-m-d") . ".php", 'a', false);
		if (!$stream)
		{
			throw new Exception('Failed to open stream');
		}
		try
		{
			$fileWriter = new Zend_Log_Writer_Stream($stream);
			$fileWriter->setFormatter($formatter);
			$fileLogger = new Zend_Log($fileWriter);
			Zend_Registry::set("fileLogger", $fileLogger);
		}
		catch (Zend_Log_Exception $e)
		{
			echo "Error: " . $e->getMessage();
		}
		catch (Zend_Exception $e)
		{
			echo "Error: " . $e->getMessage();
		}
	}

	/*
	Zend session setting done here.
	*/
	public static function setupSession()
	{
		try
		{
			Zend_Session::setOptions(array(
				'save_path' => APP_DIR . "/tmp/sessions",
				'remember_me_seconds' => 7200,
		));
		Zend_Session::start();
		}
		catch (Zend_Session_Exception $e)
		{
			$dbLogger->log('Error: ' . $e->getMessage(), 1);
			$fileLogger->log($e->getMessage(), 1);
		}
		$defaultNs = new Zend_Session_Namespace('default');

		Zend_Registry::set("defaultNs", $defaultNs);

		if($config->log_level == 2)
		{
			$fileLogger->info("Sessions setup finished!");
		}
	}

}

To run this bootstrap file we just need to add following code to index.php

require '../application/Bootstrap.php';
Bootstrap::run();

There are many Zend Framework component that is used in normal/regular/usual project but I have not placed it in above code listing. Please suggest.

Please feel free to provide your feedback.

Master Piece of Imagination : Nokia 6639 Mobile Phone + Computer + DSLR Camera

One morning I have received one email from my friend with subject “Nokia 6639 Cell Phone + Computer + Camera”. In the description he wrote “Master piece from nokia don’t miss it”. He has also given pictures with detail specification about it. At first look liked it very much. To get about some more detail I tried search on google. I found that information for this product is not available on nokia site. Then I given attention to detail specification about it. It was as following: Pictures are at the end of the post.

NOKIA 6639 Specification

Frequency: GSM/GPRS/EDGE network, CDMA, WCDMA, TD-SCDMA, CDMA2000.
Israel set arbitrary color options :
Size
: 109 48 quenching
Weight
: 100 grams
Battery
: Lithium Ion Battery BM12P, Convergence 9800
Standby time
: 100 hours
16 million color TFT color screen parameters
: ;1024 768 pixels, 3.2 inches;
* For the system
: Symbian 12.0 v16.6z simplified Chinese version
Processor
: Pentium M-Dothan binuclear 2.0GHMz
Memory
: Dual Channel DDR2 512M, the biggest can be expanded to 2GB
Display
: nVIDIA Geforce Go 7800GT
WAP support fly along
:
Nowhere 256 Chord
:
Embedded speakers
: 7.1-channel surround sound output
Photo identification of the caller calls Animation
:
160 GB internal hard disk
:
Support memory expansion
: Mixed-CF, Microdrive miniature hard disk compatibility, RS-MMC, miniSD , maximum support 160 GB
Adapter Type
: USB2.0/IEEE1394
: Support WAV music format, MP3, conjecture, Ogg Vorbis, RAW, VOX, CCIUT u-Law, PCM, MPC (MPEG plus/MusePack), MP2 (MPEG 1 Layer 2), ADPCM, CCUIT A-LAW, AIFC, DSP, GSM, CCUIT G721, CCUIT G723, G726 format CCUIT
Video Format
: All support
20 EQ sound effects sound effect modes : Mode
: DAB radios can receive digital broadcasting / FM stereo radio broadcasting group memory ;DAB/FM 50;
: 12.8 million effective pixel sensor, the APS size CCD, with Fangdou, ultrasonic dust removal function.
Scene
: the main revolutionary cell phone cards mouth open, compatible CNMOP lens LEICA Lycra AF24-180mm/F2.8 receptors produced in Germany in support of a full-time manual focusing.
Deputy
: German production Zeiss lens coating 50mm/F1.0 nematic Chase.
Autofocus mode
: 11/7 zone TTL focusing, AF-1 to +19EV working environment :
Shutter speed
: electromagnetic control longitudinal curtain shutter doors B, 30-1/10000 seconds
Lianpai
: 12 / sec, which can be taken 90 or 50 RAW format photos in JPEG format photographs
Photometry
: 3D matrix photometric II, the central focus point photometric and photometric (3mm yen, about 2% of the area)
Exposure modes : automatic, procedural exposure aperture priority, shutter priority, manual, users set up
Photo
: RAW format, JPEG
Exposure compensation
: +5EV half class, third-class or 1.0 grade
Sensitivity range
: ISO 50-3200 (third stall incremental), and 6400 can be expanded to 25
White Balance
: Automatic, Manual, pre –
White balance preset
: flash and shadow, overcast sky, sunlight, fluorescent lamps and incandescent lamps
Embedded camera flash
:
Effective flash range
: 20 m
Flash modes
: 1005-pixel RGB TTL flash control sensor ;i-TTL balance filled with flash flash flash or standard i-TTL
Video
: audio video film shooting, 720 480-definition DVD RMVB compression, support for real-time optical zoom.
Video broadcast : Windows Media Player, H.263 /MPEG4, WITH AMR-NB, AMR-NB audio decoders, decoder
Other additional functions
:
First, Swiss Plug procedures remotely Train (with the public wireless transmission protocol), sparking Zippo;
Second, the LED beam, severe chemical devices, thermometer, filter and needle guide function for wild camping.
Third, the exclusive beer and bottled champagne opening device adapter, the adapter can be connected to a dedicated electric razor (compatible with Brown shaving support);
Fourth, Micro Electric Drier (external hard drives need 12V power supply)
5, welcoming everyone to keep abreast added

Then I realized it is a fake product. I concluded to this decision based on following.

  1. Symbian has not released version 12. Latest version of Symbian OS is 9.5.
  2. No manufacturer has produce small/tiny parts (HDD, RAM, Processor, Graphics card etc…) that can feet in mobile as specified. You can check the minimum size of component used in this device with respective leading component manufacturer like intel, nVIDIA etc…
  3. Other point come in my mind if nokia is going to build such device why they think to assemble all parts from leading manufacturer. Nokia has expertise to build such device based on own capability or own hardware component. If they build why they they advertise like it.

I think above points are enough to believe its not a real product. If we try we can find more points to prove it as a fake product. Few days back I was reading about next generation devices & I found about Mobile Internet Device (Intel). These devices are in between mobile phone & laptop. These are the device with screen size around 6-8 inch. Normal laptop screen size is around 14-15 inch. Usual high-end smart phone screen around 2.4 inch to 3.5 inch.

Nowadays device manufacturer companies are thinking to build mobile Internet device (MID). There is confusion about standard of hardware/architecture for such type of devices. Computer is based on standard of IBM PC or 32 bit & 64 bit architecture, but in mobile phone there is no unique standard that is followed by  major or leading mobile manufacturer. May be there are some technical design problem with particular standard/architecture. Mobile & Laptop are 2 different class of device. May be MID manufacturer will try to address problem & put good feature of both type of device in next generation MID. Above specification can be good idea for new generation device.

When I seen this specification first time I tried to criticize original email sender. But now I think it is a good imagination. Many people try to call it as swiss knife as it has features of Mobile phone, Digital SLR Camera, Laptop etc… I tried to search about on internet with term “nokia 6639”, I found that many people like such device in real world. Its natural everybody wants such good gadget. Now I also think if such device available in reality then I would like to call it Master Piece till the time it is Master Piece of Imagination.